Line 1... |
Line 1... |
# This shell script emits a C file. -*- C -*-
|
# This shell script emits a C file. -*- C -*-
|
# Copyright 2003, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
|
# Copyright 2003, 2005, 2007, 2008, 2009, 2010, 2011
|
|
# Free Software Foundation, Inc.
|
#
|
#
|
# This file is part of the GNU Binutils.
|
# This file is part of the GNU Binutils.
|
#
|
#
|
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
Line 174... |
Line 175... |
fi
|
fi
|
|
|
# Define some shell vars to insert bits of code into the standard elf
|
# Define some shell vars to insert bits of code into the standard elf
|
# parse_args and list_options functions.
|
# parse_args and list_options functions.
|
#
|
#
|
PARSE_AND_LIST_PROLOGUE='
|
PARSE_AND_LIST_PROLOGUE=${PARSE_AND_LIST_PROLOGUE}'
|
#define OPTION_NO_TLS_OPT 301
|
#define OPTION_NO_TLS_OPT 321
|
#define OPTION_NO_TLS_GET_ADDR_OPT (OPTION_NO_TLS_OPT + 1)
|
#define OPTION_NO_TLS_GET_ADDR_OPT (OPTION_NO_TLS_OPT + 1)
|
#define OPTION_NEW_PLT (OPTION_NO_TLS_GET_ADDR_OPT + 1)
|
#define OPTION_NEW_PLT (OPTION_NO_TLS_GET_ADDR_OPT + 1)
|
#define OPTION_OLD_PLT (OPTION_NEW_PLT + 1)
|
#define OPTION_OLD_PLT (OPTION_NEW_PLT + 1)
|
#define OPTION_OLD_GOT (OPTION_OLD_PLT + 1)
|
#define OPTION_OLD_GOT (OPTION_OLD_PLT + 1)
|
#define OPTION_STUBSYMS (OPTION_OLD_GOT + 1)
|
#define OPTION_STUBSYMS (OPTION_OLD_GOT + 1)
|
#define OPTION_NO_STUBSYMS (OPTION_STUBSYMS + 1)
|
#define OPTION_NO_STUBSYMS (OPTION_STUBSYMS + 1)
|
'
|
'
|
|
|
PARSE_AND_LIST_LONGOPTS='
|
PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}'
|
{ "emit-stub-syms", no_argument, NULL, OPTION_STUBSYMS },
|
{ "emit-stub-syms", no_argument, NULL, OPTION_STUBSYMS },
|
{ "no-emit-stub-syms", no_argument, NULL, OPTION_NO_STUBSYMS },
|
{ "no-emit-stub-syms", no_argument, NULL, OPTION_NO_STUBSYMS },
|
{ "no-tls-optimize", no_argument, NULL, OPTION_NO_TLS_OPT },
|
{ "no-tls-optimize", no_argument, NULL, OPTION_NO_TLS_OPT },
|
{ "no-tls-get-addr-optimize", no_argument, NULL, OPTION_NO_TLS_GET_ADDR_OPT },
|
{ "no-tls-get-addr-optimize", no_argument, NULL, OPTION_NO_TLS_GET_ADDR_OPT },
|
{ "secure-plt", no_argument, NULL, OPTION_NEW_PLT },
|
{ "secure-plt", no_argument, NULL, OPTION_NEW_PLT },
|
{ "bss-plt", no_argument, NULL, OPTION_OLD_PLT },
|
{ "bss-plt", no_argument, NULL, OPTION_OLD_PLT },
|
{ "sdata-got", no_argument, NULL, OPTION_OLD_GOT },
|
{ "sdata-got", no_argument, NULL, OPTION_OLD_GOT },
|
'
|
'
|
|
|
PARSE_AND_LIST_OPTIONS='
|
PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
|
fprintf (file, _("\
|
fprintf (file, _("\
|
--emit-stub-syms Label linker stubs with a symbol.\n\
|
--emit-stub-syms Label linker stubs with a symbol.\n\
|
--no-emit-stub-syms Don'\''t label linker stubs with a symbol.\n\
|
--no-emit-stub-syms Don'\''t label linker stubs with a symbol.\n\
|
--no-tls-optimize Don'\''t try to optimize TLS accesses.\n\
|
--no-tls-optimize Don'\''t try to optimize TLS accesses.\n\
|
--no-tls-get-addr-optimize Don'\''t use a special __tls_get_addr call.\n\
|
--no-tls-get-addr-optimize Don'\''t use a special __tls_get_addr call.\n\
|
Line 206... |
Line 207... |
--bss-plt Force old-style BSS PLT.\n\
|
--bss-plt Force old-style BSS PLT.\n\
|
--sdata-got Force GOT location just before .sdata.\n"
|
--sdata-got Force GOT location just before .sdata.\n"
|
));
|
));
|
'
|
'
|
|
|
PARSE_AND_LIST_ARGS_CASES='
|
PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}'
|
case OPTION_STUBSYMS:
|
case OPTION_STUBSYMS:
|
emit_stub_syms = 1;
|
emit_stub_syms = 1;
|
break;
|
break;
|
|
|
case OPTION_NO_STUBSYMS:
|
case OPTION_NO_STUBSYMS:
|