ld: Add --enable-textrel-check=[no|yes|warning|error]
Add a configure option, --enable-textrel-check=[no|yes|warning|error], to decide what ELF linker should do by default with DT_TEXTREL in an executable or shared library. PR ld/20824 * NEWS: Mention --enable-textrel-check=[no|yes|warning|error]. * configure.ac: Add --enable-textrel-check=[no|yes|warning|error]. (DEFAULT_LD_TEXTREL_CHECK): New AC_DEFINE_UNQUOTED. (DEFAULT_LD_TEXTREL_CHECK_WARNING): Likewise. * ldmain.c (main): Initialize link_info.textrel_check to DEFAULT_LD_TEXTREL_CHECK. * lexsup.c (ld_options): Check DEFAULT_LD_TEXTREL_CHECK_WARNING. * config.in: Regenerated. * configure: Likewise.
This commit is contained in:
parent
151f5de4a6
commit
b32632c499
13
ld/ChangeLog
13
ld/ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2020-05-28 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/20824
|
||||
* NEWS: Mention --enable-textrel-check=[no|yes|warning|error].
|
||||
* configure.ac: Add --enable-textrel-check=[no|yes|warning|error].
|
||||
(DEFAULT_LD_TEXTREL_CHECK): New AC_DEFINE_UNQUOTED.
|
||||
(DEFAULT_LD_TEXTREL_CHECK_WARNING): Likewise.
|
||||
* ldmain.c (main): Initialize link_info.textrel_check to
|
||||
DEFAULT_LD_TEXTREL_CHECK.
|
||||
* lexsup.c (ld_options): Check DEFAULT_LD_TEXTREL_CHECK_WARNING.
|
||||
* config.in: Regenerated.
|
||||
* configure: Likewise.
|
||||
|
||||
2020-05-28 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* lexsup.c (parse_args): Generate an error if a name is not
|
||||
|
|
4
ld/NEWS
4
ld/NEWS
|
@ -1,5 +1,9 @@
|
|||
-*- text -*-
|
||||
|
||||
* Add a configure option, --enable-textrel-check=[no|yes|warning|error],
|
||||
to decide what ELF linker should do by default with DT_TEXTREL in an
|
||||
executable or shared library.
|
||||
|
||||
* The -Map=<filename> command line option has been extended so that if
|
||||
<filename> is a directory then <filename>/<output-filename>.map will be
|
||||
created.
|
||||
|
|
|
@ -16,6 +16,12 @@
|
|||
/* Define if you want compressed debug sections by default. */
|
||||
#undef DEFAULT_FLAG_COMPRESS_DEBUG
|
||||
|
||||
/* The default method for DT_TEXTREL check in ELF linker. */
|
||||
#undef DEFAULT_LD_TEXTREL_CHECK
|
||||
|
||||
/* Define to 1 if DT_TEXTREL check is warning in ELF linker by default. */
|
||||
#undef DEFAULT_LD_TEXTREL_CHECK_WARNING
|
||||
|
||||
/* Define to 1 if you want to enable -z relro in ELF linker by default. */
|
||||
#undef DEFAULT_LD_Z_RELRO
|
||||
|
||||
|
|
|
@ -831,6 +831,7 @@ enable_got
|
|||
enable_compressed_debug_sections
|
||||
enable_new_dtags
|
||||
enable_relro
|
||||
enable_textrel_check
|
||||
enable_separate_code
|
||||
enable_default_hash_style
|
||||
enable_werror
|
||||
|
@ -1498,6 +1499,8 @@ Optional Features:
|
|||
compress debug sections by default]
|
||||
--enable-new-dtags set DT_RUNPATH instead of DT_RPATH by default]
|
||||
--enable-relro enable -z relro in ELF linker by default
|
||||
--enable-textrel-check=[yes|no|warning|error]
|
||||
enable DT_TEXTREL check in ELF linker
|
||||
--enable-separate-code enable -z separate-code in ELF linker by default
|
||||
--enable-default-hash-style={sysv,gnu,both}
|
||||
use this default hash style
|
||||
|
@ -12032,7 +12035,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 12035 "configure"
|
||||
#line 12038 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
@ -12138,7 +12141,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 12141 "configure"
|
||||
#line 12144 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
@ -15876,6 +15879,16 @@ if test "${enable_relro+set}" = set; then :
|
|||
esac
|
||||
fi
|
||||
|
||||
# Decide if DT_TEXTREL check should be enabled in ELF linker.
|
||||
ac_default_ld_textrel_check=unset
|
||||
# Check whether --enable-textrel-check was given.
|
||||
if test "${enable_textrel_check+set}" = set; then :
|
||||
enableval=$enable_textrel_check; case "${enableval}" in
|
||||
yes|no|warning|error) ac_default_ld_textrel_check=${enableval} ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
||||
# Decide if -z separate-code should be enabled in ELF linker by default.
|
||||
ac_default_ld_z_separate_code=unset
|
||||
# Check whether --enable-separate-code was given.
|
||||
|
@ -17618,6 +17631,30 @@ cat >>confdefs.h <<_ACEOF
|
|||
_ACEOF
|
||||
|
||||
|
||||
ac_default_ld_textrel_check_warning=0
|
||||
case "${ac_default_ld_textrel_check}" in
|
||||
unset|no)
|
||||
ac_default_ld_textrel_check=textrel_check_none
|
||||
;;
|
||||
yes|warning)
|
||||
ac_default_ld_textrel_check=textrel_check_warning
|
||||
ac_default_ld_textrel_check_warning=1
|
||||
;;
|
||||
error)
|
||||
ac_default_ld_textrel_check=textrel_check_error
|
||||
;;
|
||||
esac
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define DEFAULT_LD_TEXTREL_CHECK $ac_default_ld_textrel_check
|
||||
_ACEOF
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define DEFAULT_LD_TEXTREL_CHECK_WARNING $ac_default_ld_textrel_check_warning
|
||||
_ACEOF
|
||||
|
||||
|
||||
if test "${ac_default_ld_z_separate_code}" = unset; then
|
||||
ac_default_ld_z_separate_code=0
|
||||
fi
|
||||
|
|
|
@ -176,6 +176,15 @@ AC_ARG_ENABLE(relro,
|
|||
no) ac_default_ld_z_relro=0 ;;
|
||||
esac])dnl
|
||||
|
||||
# Decide if DT_TEXTREL check should be enabled in ELF linker.
|
||||
ac_default_ld_textrel_check=unset
|
||||
AC_ARG_ENABLE([textrel-check],
|
||||
AC_HELP_STRING([--enable-textrel-check=@<:@yes|no|warning|error@:>@],
|
||||
[enable DT_TEXTREL check in ELF linker]),
|
||||
[case "${enableval}" in
|
||||
yes|no|warning|error) ac_default_ld_textrel_check=${enableval} ;;
|
||||
esac])
|
||||
|
||||
# Decide if -z separate-code should be enabled in ELF linker by default.
|
||||
ac_default_ld_z_separate_code=unset
|
||||
AC_ARG_ENABLE(separate-code,
|
||||
|
@ -447,6 +456,26 @@ AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO,
|
|||
$ac_default_ld_z_relro,
|
||||
[Define to 1 if you want to enable -z relro in ELF linker by default.])
|
||||
|
||||
ac_default_ld_textrel_check_warning=0
|
||||
case "${ac_default_ld_textrel_check}" in
|
||||
unset|no)
|
||||
ac_default_ld_textrel_check=textrel_check_none
|
||||
;;
|
||||
yes|warning)
|
||||
ac_default_ld_textrel_check=textrel_check_warning
|
||||
ac_default_ld_textrel_check_warning=1
|
||||
;;
|
||||
error)
|
||||
ac_default_ld_textrel_check=textrel_check_error
|
||||
;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED(DEFAULT_LD_TEXTREL_CHECK,
|
||||
$ac_default_ld_textrel_check,
|
||||
[The default method for DT_TEXTREL check in ELF linker.])
|
||||
AC_DEFINE_UNQUOTED(DEFAULT_LD_TEXTREL_CHECK_WARNING,
|
||||
$ac_default_ld_textrel_check_warning,
|
||||
[Define to 1 if DT_TEXTREL check is warning in ELF linker by default.])
|
||||
|
||||
if test "${ac_default_ld_z_separate_code}" = unset; then
|
||||
ac_default_ld_z_separate_code=0
|
||||
fi
|
||||
|
|
|
@ -286,6 +286,7 @@ main (int argc, char **argv)
|
|||
link_info.combreloc = TRUE;
|
||||
link_info.strip_discarded = TRUE;
|
||||
link_info.prohibit_multiple_definition_absolute = FALSE;
|
||||
link_info.textrel_check = DEFAULT_LD_TEXTREL_CHECK;
|
||||
link_info.emit_hash = DEFAULT_EMIT_SYSV_HASH;
|
||||
link_info.emit_gnu_hash = DEFAULT_EMIT_GNU_HASH;
|
||||
link_info.callbacks = &link_callbacks;
|
||||
|
|
|
@ -517,7 +517,12 @@ static const struct ld_option ld_options[] =
|
|||
'\0', NULL, N_("Warn if start of section changes due to alignment"),
|
||||
TWO_DASHES },
|
||||
{ {"warn-textrel", no_argument, NULL, OPTION_WARN_TEXTREL},
|
||||
'\0', NULL, N_("Warn if outpout has DT_TEXTREL"),
|
||||
'\0', NULL,
|
||||
#if DEFAULT_LD_TEXTREL_CHECK_WARNING
|
||||
N_("Warn if outpout has DT_TEXTREL (default)"),
|
||||
#else
|
||||
N_("Warn if outpout has DT_TEXTREL"),
|
||||
#endif
|
||||
TWO_DASHES },
|
||||
{ {"warn-shared-textrel", no_argument, NULL, OPTION_WARN_TEXTREL},
|
||||
'\0', NULL, NULL, NO_HELP },
|
||||
|
|
Loading…
Reference in New Issue