Add ld_list_options
This patch adds ld_list_options for ELF targets to avoid duplicated outputs from ld --help. * Makefile.am (ELF_CLFAGS): New. (AM_CFLAGS): Add $(ELF_CLFAGS). * configure.ac (elf_list_options): New. AC_SUBST. (elf_shlib_list_options): Likewise. (elf_plt_unwind_list_options): Likewise. * lexsup.c (elf_shlib_list_options): New. (elf_static_list_options): Likewise. (elf_plt_unwind_list_options): Likewise. (ld_list_options): Likewise. (help): Call ld_list_options. * Makefile.in: Regenerated. * configure: Likewise. * emulparams/plt_unwind.sh (PLT_UNWIND): New. (PARSE_AND_LIST_OPTIONS): Removed. * emultempl/elf32.em (gld_list_options): New. (gld${EMULATION_NAME}_list_options): Define only if BNDPLT or PARSE_AND_LIST_OPTIONS is defined. (ld_${EMULATION_NAME}_emulation): Replace gld${EMULATION_NAME}_list_options with ${gld_list_options.
This commit is contained in:
parent
4496bed7f3
commit
c58212eaf9
22
ld/ChangeLog
22
ld/ChangeLog
@ -1,3 +1,25 @@
|
|||||||
|
2015-04-08 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* Makefile.am (ELF_CLFAGS): New.
|
||||||
|
(AM_CFLAGS): Add $(ELF_CLFAGS).
|
||||||
|
* configure.ac (elf_list_options): New. AC_SUBST.
|
||||||
|
(elf_shlib_list_options): Likewise.
|
||||||
|
(elf_plt_unwind_list_options): Likewise.
|
||||||
|
* lexsup.c (elf_shlib_list_options): New.
|
||||||
|
(elf_static_list_options): Likewise.
|
||||||
|
(elf_plt_unwind_list_options): Likewise.
|
||||||
|
(ld_list_options): Likewise.
|
||||||
|
(help): Call ld_list_options.
|
||||||
|
* Makefile.in: Regenerated.
|
||||||
|
* configure: Likewise.
|
||||||
|
* emulparams/plt_unwind.sh (PLT_UNWIND): New.
|
||||||
|
(PARSE_AND_LIST_OPTIONS): Removed.
|
||||||
|
* emultempl/elf32.em (gld_list_options): New.
|
||||||
|
(gld${EMULATION_NAME}_list_options): Define only if BNDPLT or
|
||||||
|
PARSE_AND_LIST_OPTIONS is defined.
|
||||||
|
(ld_${EMULATION_NAME}_emulation): Replace
|
||||||
|
gld${EMULATION_NAME}_list_options with ${gld_list_options.
|
||||||
|
|
||||||
2015-04-07 Alan Modra <amodra@gmail.com>
|
2015-04-07 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR ld/18176
|
PR ld/18176
|
||||||
|
@ -34,9 +34,12 @@ LEX = `if [ -f ../flex/flex ]; then echo ../flex/flex; else echo @LEX@; fi`
|
|||||||
am__skiplex =
|
am__skiplex =
|
||||||
am__skipyacc =
|
am__skipyacc =
|
||||||
|
|
||||||
|
ELF_CLFAGS=-DELF_LIST_OPTIONS=@elf_list_options@ \
|
||||||
|
-DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \
|
||||||
|
-DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@
|
||||||
WARN_CFLAGS = @WARN_CFLAGS@
|
WARN_CFLAGS = @WARN_CFLAGS@
|
||||||
NO_WERROR = @NO_WERROR@
|
NO_WERROR = @NO_WERROR@
|
||||||
AM_CFLAGS = $(WARN_CFLAGS)
|
AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
|
||||||
|
|
||||||
# Conditionally enable the plugin interface.
|
# Conditionally enable the plugin interface.
|
||||||
if ENABLE_PLUGINS
|
if ENABLE_PLUGINS
|
||||||
|
@ -344,6 +344,9 @@ datarootdir = @datarootdir@
|
|||||||
do_compare = @do_compare@
|
do_compare = @do_compare@
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
|
elf_list_options = @elf_list_options@
|
||||||
|
elf_plt_unwind_list_options = @elf_plt_unwind_list_options@
|
||||||
|
elf_shlib_list_options = @elf_shlib_list_options@
|
||||||
enable_initfini_array = @enable_initfini_array@
|
enable_initfini_array = @enable_initfini_array@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
host = @host@
|
host = @host@
|
||||||
@ -391,7 +394,11 @@ tooldir = $(exec_prefix)/$(target_alias)
|
|||||||
# maintainer mode is disabled. Avoid this.
|
# maintainer mode is disabled. Avoid this.
|
||||||
am__skiplex =
|
am__skiplex =
|
||||||
am__skipyacc =
|
am__skipyacc =
|
||||||
AM_CFLAGS = $(WARN_CFLAGS)
|
ELF_CLFAGS = -DELF_LIST_OPTIONS=@elf_list_options@ \
|
||||||
|
-DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \
|
||||||
|
-DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@
|
||||||
|
|
||||||
|
AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
|
||||||
@ENABLE_PLUGINS_FALSE@PLUGIN_C =
|
@ENABLE_PLUGINS_FALSE@PLUGIN_C =
|
||||||
|
|
||||||
# Conditionally enable the plugin interface.
|
# Conditionally enable the plugin interface.
|
||||||
|
28
ld/configure
vendored
28
ld/configure
vendored
@ -608,6 +608,9 @@ LIB_PATH
|
|||||||
EMUL_EXTRA_OFILES
|
EMUL_EXTRA_OFILES
|
||||||
EMULATION_OFILES
|
EMULATION_OFILES
|
||||||
EMUL
|
EMUL
|
||||||
|
elf_plt_unwind_list_options
|
||||||
|
elf_shlib_list_options
|
||||||
|
elf_list_options
|
||||||
STRINGIFY
|
STRINGIFY
|
||||||
enable_initfini_array
|
enable_initfini_array
|
||||||
ENABLE_PLUGINS_FALSE
|
ENABLE_PLUGINS_FALSE
|
||||||
@ -11710,7 +11713,7 @@ else
|
|||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11713 "configure"
|
#line 11716 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
@ -11816,7 +11819,7 @@ else
|
|||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11819 "configure"
|
#line 11822 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
@ -17025,6 +17028,9 @@ _ACEOF
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
elf_list_options=FALSE
|
||||||
|
elf_shlib_list_options=FALSE
|
||||||
|
elf_plt_unwind_list_options=FALSE
|
||||||
for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
|
for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
|
||||||
do
|
do
|
||||||
if test "$targ_alias" = "all"; then
|
if test "$targ_alias" = "all"; then
|
||||||
@ -17055,7 +17061,20 @@ do
|
|||||||
|
|
||||||
for i in $targ_emul $targ_extra_emuls $targ_extra_libpath; do
|
for i in $targ_emul $targ_extra_emuls $targ_extra_libpath; do
|
||||||
case " $all_emuls " in
|
case " $all_emuls " in
|
||||||
*" e${i}.o "*) ;;
|
*" e${i}.o "*)
|
||||||
|
case "${i}" in
|
||||||
|
*elf*)
|
||||||
|
elf_list_options=TRUE
|
||||||
|
. ${srcdir}/emulparams/${i}.sh
|
||||||
|
if test x${GENERATE_SHLIB_SCRIPT} = xyes; then
|
||||||
|
elf_shlib_list_options=TRUE
|
||||||
|
fi
|
||||||
|
if test x${PLT_UNWIND} = xyes; then
|
||||||
|
elf_plt_unwind_list_options=TRUE
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
all_emuls="$all_emuls e${i}.o"
|
all_emuls="$all_emuls e${i}.o"
|
||||||
eval result=\$tdir_$i
|
eval result=\$tdir_$i
|
||||||
@ -17092,6 +17111,9 @@ done
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TDIRS=tdirs
|
TDIRS=tdirs
|
||||||
|
|
||||||
|
|
||||||
|
@ -281,6 +281,9 @@ if test x${want64} = xfalse; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
elf_list_options=FALSE
|
||||||
|
elf_shlib_list_options=FALSE
|
||||||
|
elf_plt_unwind_list_options=FALSE
|
||||||
for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
|
for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
|
||||||
do
|
do
|
||||||
if test "$targ_alias" = "all"; then
|
if test "$targ_alias" = "all"; then
|
||||||
@ -311,7 +314,20 @@ do
|
|||||||
|
|
||||||
for i in $targ_emul $targ_extra_emuls $targ_extra_libpath; do
|
for i in $targ_emul $targ_extra_emuls $targ_extra_libpath; do
|
||||||
case " $all_emuls " in
|
case " $all_emuls " in
|
||||||
*" e${i}.o "*) ;;
|
*" e${i}.o "*)
|
||||||
|
case "${i}" in
|
||||||
|
*elf*)
|
||||||
|
elf_list_options=TRUE
|
||||||
|
. ${srcdir}/emulparams/${i}.sh
|
||||||
|
if test x${GENERATE_SHLIB_SCRIPT} = xyes; then
|
||||||
|
elf_shlib_list_options=TRUE
|
||||||
|
fi
|
||||||
|
if test x${PLT_UNWIND} = xyes; then
|
||||||
|
elf_plt_unwind_list_options=TRUE
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
all_emuls="$all_emuls e${i}.o"
|
all_emuls="$all_emuls e${i}.o"
|
||||||
eval result=\$tdir_$i
|
eval result=\$tdir_$i
|
||||||
@ -346,6 +362,9 @@ do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
AC_SUBST(elf_list_options)
|
||||||
|
AC_SUBST(elf_shlib_list_options)
|
||||||
|
AC_SUBST(elf_plt_unwind_list_options)
|
||||||
AC_SUBST(EMUL)
|
AC_SUBST(EMUL)
|
||||||
|
|
||||||
TDIRS=tdirs
|
TDIRS=tdirs
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
PLT_UNWIND=yes
|
||||||
|
|
||||||
PARSE_AND_LIST_PROLOGUE='
|
PARSE_AND_LIST_PROLOGUE='
|
||||||
#define OPTION_LD_GENERATED_UNWIND_INFO 301
|
#define OPTION_LD_GENERATED_UNWIND_INFO 301
|
||||||
#define OPTION_NO_LD_GENERATED_UNWIND_INFO 302
|
#define OPTION_NO_LD_GENERATED_UNWIND_INFO 302
|
||||||
@ -10,13 +12,6 @@ PARSE_AND_LIST_LONGOPTS='
|
|||||||
OPTION_NO_LD_GENERATED_UNWIND_INFO},
|
OPTION_NO_LD_GENERATED_UNWIND_INFO},
|
||||||
'
|
'
|
||||||
|
|
||||||
PARSE_AND_LIST_OPTIONS='
|
|
||||||
fprintf (file, _("\
|
|
||||||
--ld-generated-unwind-info Generate exception handling info for PLT.\n\
|
|
||||||
--no-ld-generated-unwind-info Don'\''t do so.\n"
|
|
||||||
));
|
|
||||||
'
|
|
||||||
|
|
||||||
PARSE_AND_LIST_ARGS_CASES='
|
PARSE_AND_LIST_ARGS_CASES='
|
||||||
case OPTION_LD_GENERATED_UNWIND_INFO:
|
case OPTION_LD_GENERATED_UNWIND_INFO:
|
||||||
link_info.no_ld_generated_unwind_info = FALSE;
|
link_info.no_ld_generated_unwind_info = FALSE;
|
||||||
|
@ -2366,117 +2366,14 @@ fragment <<EOF
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test x"$LDEMUL_LIST_OPTIONS" != xgld"$EMULATION_NAME"_list_options; then
|
if test x"$LDEMUL_LIST_OPTIONS" != xgld"$EMULATION_NAME"_list_options; then
|
||||||
|
gld_list_options="gld${EMULATION_NAME}_list_options"
|
||||||
|
if test -n "$PARSE_AND_LIST_OPTIONS" || test x"$BNDPLT" = xyes; then
|
||||||
fragment <<EOF
|
fragment <<EOF
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gld${EMULATION_NAME}_list_options (FILE * file)
|
gld${EMULATION_NAME}_list_options (FILE * file)
|
||||||
{
|
{
|
||||||
EOF
|
EOF
|
||||||
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
||||||
fragment <<EOF
|
|
||||||
fprintf (file, _("\
|
|
||||||
--audit=AUDITLIB Specify a library to use for auditing\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-Bgroup Selects group name lookup rules for DSO\n"));
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fragment <<EOF
|
|
||||||
fprintf (file, _("\
|
|
||||||
--build-id[=STYLE] Generate build ID note\n"));
|
|
||||||
EOF
|
|
||||||
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
||||||
fragment <<EOF
|
|
||||||
fprintf (file, _("\
|
|
||||||
-P AUDITLIB, --depaudit=AUDITLIB\n" "\
|
|
||||||
Specify a library to use for auditing dependencies\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
--disable-new-dtags Disable new dynamic tags\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
--enable-new-dtags Enable new dynamic tags\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
--eh-frame-hdr Create .eh_frame_hdr section\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
--exclude-libs=LIBS Make all symbols in LIBS hidden\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
--hash-style=STYLE Set hash style to sysv, gnu or both\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z combreloc Merge dynamic relocs into one section and sort\n"));
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
fragment <<EOF
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z common-page-size=SIZE Set common page size to SIZE\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z defs Report unresolved symbols in object files.\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z execstack Mark executable as requiring executable stack\n"));
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
||||||
fragment <<EOF
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z global Make symbols in DSO available for subsequently\n\
|
|
||||||
loaded objects\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z initfirst Mark DSO to be initialized first at runtime\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z interpose Mark object to interpose all DSOs but executable\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z lazy Mark object lazy runtime binding (default)\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z loadfltr Mark object requiring immediate process\n"));
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
fragment <<EOF
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z max-page-size=SIZE Set maximum page size to SIZE\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z muldefs Allow multiple definitions\n"));
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
||||||
fragment <<EOF
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z nocombreloc Don't merge dynamic relocs into one section\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z nocopyreloc Don't create copy relocs\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z nodefaultlib Mark object not to use default search paths\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z nodelete Mark DSO non-deletable at runtime\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z nodlopen Mark DSO not available to dlopen\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z nodump Mark DSO not available to dldump\n"));
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fragment <<EOF
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z noexecstack Mark executable as not requiring executable stack\n"));
|
|
||||||
EOF
|
|
||||||
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
||||||
fragment <<EOF
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z text Treat DT_TEXTREL in shared object as error\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z notext Don't treat DT_TEXTREL in shared object as error\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z textoff Don't treat DT_TEXTREL in shared object as error\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z norelro Don't create RELRO program header\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z now Mark object non-lazy runtime binding\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z origin Mark object requiring immediate \$ORIGIN\n\
|
|
||||||
processing at runtime\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z relro Create RELRO program header\n"));
|
|
||||||
fprintf (file, _("\
|
|
||||||
-z stacksize=SIZE Set size of stack segment\n"));
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test x"$BNDPLT" = xyes; then
|
if test x"$BNDPLT" = xyes; then
|
||||||
fragment <<EOF
|
fragment <<EOF
|
||||||
@ -2494,6 +2391,9 @@ fi
|
|||||||
fragment <<EOF
|
fragment <<EOF
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
else
|
||||||
|
gld_list_options="NULL"
|
||||||
|
fi
|
||||||
|
|
||||||
if test -n "$PARSE_AND_LIST_EPILOGUE" ; then
|
if test -n "$PARSE_AND_LIST_EPILOGUE" ; then
|
||||||
fragment <<EOF
|
fragment <<EOF
|
||||||
@ -2527,7 +2427,7 @@ struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
|
|||||||
gld${EMULATION_NAME}_add_options,
|
gld${EMULATION_NAME}_add_options,
|
||||||
gld${EMULATION_NAME}_handle_option,
|
gld${EMULATION_NAME}_handle_option,
|
||||||
${LDEMUL_UNRECOGNIZED_FILE-NULL},
|
${LDEMUL_UNRECOGNIZED_FILE-NULL},
|
||||||
${LDEMUL_LIST_OPTIONS-gld${EMULATION_NAME}_list_options},
|
${LDEMUL_LIST_OPTIONS-${gld_list_options}},
|
||||||
${LDEMUL_RECOGNIZED_FILE-gld${EMULATION_NAME}_load_symbols},
|
${LDEMUL_RECOGNIZED_FILE-gld${EMULATION_NAME}_load_symbols},
|
||||||
${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL},
|
${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL},
|
||||||
${LDEMUL_NEW_VERS_PATTERN-NULL},
|
${LDEMUL_NEW_VERS_PATTERN-NULL},
|
||||||
|
108
ld/lexsup.c
108
ld/lexsup.c
@ -1652,6 +1652,112 @@ set_segment_start (const char *section, char *valstr)
|
|||||||
lang_section_start (section, exp_intop (val), seg);
|
lang_section_start (section, exp_intop (val), seg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
elf_shlib_list_options (FILE *file)
|
||||||
|
{
|
||||||
|
fprintf (file, _("\
|
||||||
|
--audit=AUDITLIB Specify a library to use for auditing\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-Bgroup Selects group name lookup rules for DSO\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
--disable-new-dtags Disable new dynamic tags\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
--enable-new-dtags Enable new dynamic tags\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
--eh-frame-hdr Create .eh_frame_hdr section\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
--exclude-libs=LIBS Make all symbols in LIBS hidden\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
--hash-style=STYLE Set hash style to sysv, gnu or both\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-P AUDITLIB, --depaudit=AUDITLIB\n" "\
|
||||||
|
Specify a library to use for auditing dependencies\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z combreloc Merge dynamic relocs into one section and sort\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z nocombreloc Don't merge dynamic relocs into one section\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z global Make symbols in DSO available for subsequently\n\
|
||||||
|
loaded objects\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z initfirst Mark DSO to be initialized first at runtime\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z interpose Mark object to interpose all DSOs but executable\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z lazy Mark object lazy runtime binding (default)\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z loadfltr Mark object requiring immediate process\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z nocopyreloc Don't create copy relocs\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z nodefaultlib Mark object not to use default search paths\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z nodelete Mark DSO non-deletable at runtime\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z nodlopen Mark DSO not available to dlopen\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z nodump Mark DSO not available to dldump\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z now Mark object non-lazy runtime binding\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z origin Mark object requiring immediate $ORIGIN\n\
|
||||||
|
processing at runtime\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z relro Create RELRO program header\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z norelro Don't create RELRO program header\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z stacksize=SIZE Set size of stack segment\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z text Treat DT_TEXTREL in shared object as error\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z notext Don't treat DT_TEXTREL in shared object as error\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z textoff Don't treat DT_TEXTREL in shared object as error\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
elf_static_list_options (FILE *file)
|
||||||
|
{
|
||||||
|
fprintf (file, _("\
|
||||||
|
--build-id[=STYLE] Generate build ID note\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z common-page-size=SIZE Set common page size to SIZE\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z max-page-size=SIZE Set maximum page size to SIZE\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z defs Report unresolved symbols in object files.\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z muldefs Allow multiple definitions\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z execstack Mark executable as requiring executable stack\n"));
|
||||||
|
fprintf (file, _("\
|
||||||
|
-z noexecstack Mark executable as not requiring executable stack\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
elf_plt_unwind_list_options (FILE *file)
|
||||||
|
{
|
||||||
|
fprintf (file, _("\
|
||||||
|
--ld-generated-unwind-info Generate exception handling info for PLT\n\
|
||||||
|
--no-ld-generated-unwind-info\n\
|
||||||
|
Don't generate exception handling info for PLT\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ld_list_options (FILE *file, bfd_boolean elf, bfd_boolean shlib,
|
||||||
|
bfd_boolean plt_unwind)
|
||||||
|
{
|
||||||
|
if (!elf)
|
||||||
|
return;
|
||||||
|
printf (_("ELF emulations:\n"));
|
||||||
|
if (plt_unwind)
|
||||||
|
elf_plt_unwind_list_options (file);
|
||||||
|
elf_static_list_options (file);
|
||||||
|
if (shlib)
|
||||||
|
elf_shlib_list_options (file);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Print help messages for the options. */
|
/* Print help messages for the options. */
|
||||||
|
|
||||||
@ -1764,6 +1870,8 @@ help (void)
|
|||||||
|
|
||||||
/* xgettext:c-format */
|
/* xgettext:c-format */
|
||||||
printf (_("%s: emulation specific options:\n"), program_name);
|
printf (_("%s: emulation specific options:\n"), program_name);
|
||||||
|
ld_list_options (stdout, ELF_LIST_OPTIONS, ELF_SHLIB_LIST_OPTIONS,
|
||||||
|
ELF_PLT_UNWIND_LIST_OPTIONS);
|
||||||
ldemul_list_emulation_options (stdout);
|
ldemul_list_emulation_options (stdout);
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user