From a6dbf402de65fe66f4ec99b56527dfd00d077cb6 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 27 May 2020 04:53:54 -0700 Subject: ld: Add --warn-textrel and obsolete --warn-shared-textrel --warn-shared-textrel and -z text apply to both shared object and PIE. Add --warn-textrel and obsolete --warn-shared-textrel. Consolidate --warn-textrel and -z text/notext/textoff implementation. bfd/ PR ld/22909 * elflink.c (bfd_elf_final_link): Use bfd_link_textrel_check. Check bfd_link_dll when issue a DT_TEXTREL warning. * elfxx-x86.c (maybe_set_textrel): Likewise. (_bfd_x86_elf_size_dynamic_sections): Likewise. include/ PR ld/22909 * bfdlink.h (textrel_check_method): New enum. (bfd_link_textrel_check): New. (bfd_link_info): Replace warn_shared_textrel and error_textrel with textrel_check. ld/ PR ld/22909 * NEWS: Mention --warn-textrel. * ld.texi: Update -z text/notext/textoff. Add --warn-textrel. Remove --warn-shared-textrel. * ldlex.h (option_values): Rename OPTION_WARN_SHARED_TEXTREL to OPTION_WARN_TEXTREL. * lexsup.c (ld_options): Add --warn-textrel. Obsolete --warn-shared-textrel. (parse_args): Updated. (elf_shlib_list_options): Check link_info.textrel_check. * emultempl/elf.em: Updated. * testsuite/ld-elf/pr19539.d: Replace -z notext with --warn-textrel. Expect a warning. * testsuite/ld-i386/warn1.d: Update expected warning. --- include/ChangeLog | 8 ++++++++ include/bfdlink.h | 19 ++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) (limited to 'include') diff --git a/include/ChangeLog b/include/ChangeLog index 53f50e5..7d11401 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,11 @@ +2020-05-27 H.J. Lu + + PR ld/22909 + * bfdlink.h (textrel_check_method): New enum. + (bfd_link_textrel_check): New. + (bfd_link_info): Replace warn_shared_textrel and error_textrel + with textrel_check. + 2020-05-25 H.J. Lu * elf/common.h: Update comments for ET_EXEC and ET_DYN. diff --git a/include/bfdlink.h b/include/bfdlink.h index ec97679..34a0d2e 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -273,6 +273,18 @@ enum report_method RM_DIAGNOSE, }; +/* How to handle DT_TEXTREL. */ + +enum textrel_check_method +{ + textrel_check_none, + textrel_check_warning, + textrel_check_error +}; + +#define bfd_link_textrel_check(info) \ + (info->textrel_check != textrel_check_none) + typedef enum {with_flags, without_flags} flag_type; /* A section flag list. */ @@ -410,11 +422,8 @@ struct bfd_link_info should be created. 1 for DWARF2 tables, 2 for compact tables. */ unsigned int eh_frame_hdr_type: 2; - /* TRUE if we should warn when adding a DT_TEXTREL to a shared object. */ - unsigned int warn_shared_textrel: 1; - - /* TRUE if we should error when adding a DT_TEXTREL. */ - unsigned int error_textrel: 1; + /* What to do with DT_TEXTREL in output. */ + ENUM_BITFIELD (textrel_check_method) textrel_check: 2; /* TRUE if .hash section should be created. */ unsigned int emit_hash: 1; -- cgit v1.1