diff options
author | Nick Clifton <nickc@redhat.com> | 2018-04-26 15:12:42 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2018-04-26 15:12:42 +0100 |
commit | 0df8ad28f0f727fab3a696d6c98b9a8a77ee1024 (patch) | |
tree | 1c4194b04e789a81a0a82af590a12105209fd05b /gas/as.c | |
parent | aa684341294a9125c528041f81d17c488bed5552 (diff) | |
download | gdb-0df8ad28f0f727fab3a696d6c98b9a8a77ee1024.zip gdb-0df8ad28f0f727fab3a696d6c98b9a8a77ee1024.tar.gz gdb-0df8ad28f0f727fab3a696d6c98b9a8a77ee1024.tar.bz2 |
Extend the assembler so that it can automatically generate GNU Build attribute notes if none are present in the input files.
gas * as.c (flag_generate_build_notes): New variable.
(show_usage): Add entry for --generate-missing-build-notes.
(parse_args): Parse --generate-missing-build-notes.
* as.h: Export flag_generate_build_notes.
* symbols.c (save_symbol_name): Ensure that the name parameter is
not NULL.
* write.c (create_obj_attrs_section): Reformat.
(create_note_reloc): New function - creates a relocation for a
field in a GNU Build attribute note.
(maybe_generate_build_notes): New function - created GNU Build
attribute notes if none are present in the output file.
(write_object_file): Call maybe_generate_build_notes.
* configure.ac (--enable-generate-build-notes): New option.
* NEWS: Announce the new feature.
* doc/as.textinfo: Document the new option.
* config.in: Regenerate.
* configure: Regenerate.
binutils* readelf.c (is_32bit_abs_reloc): Support R_PARISC_DIR32 as a
32-bit absolute reloc for the HPPA target.
* testsuite/binutils-all/note-5.d: New test.
* testsuite/binutils-all/note-5.s: Source file for new test.
* testsuite/binutils-all/objcopy.exp: Run new test.
Diffstat (limited to 'gas/as.c')
-rw-r--r-- | gas/as.c | 28 |
1 files changed, 27 insertions, 1 deletions
@@ -97,6 +97,7 @@ int verbose = 0; #if defined OBJ_ELF || defined OBJ_MAYBE_ELF int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON; +bfd_boolean flag_generate_build_notes = DEFAULT_GENERATE_BUILD_NOTES; #endif /* Keep the output file. */ @@ -304,8 +305,19 @@ Options:\n\ generate ELF common symbols with STT_COMMON type\n")); fprintf (stream, _("\ --sectname-subst enable section name substitution sequences\n")); + + fprintf (stream, _("\ + --generate-missing-build-notes=[no|yes] ")); +#if DEFAULT_GENERATE_BUILD_NOTES + fprintf (stream, _("(default: yes)\n")); +#else + fprintf (stream, _("(default: no)\n")); #endif fprintf (stream, _("\ + generate GNU Build notes if none are present in the input\n")); +#endif /* OBJ_ELF */ + + fprintf (stream, _("\ -f skip whitespace and comment preprocessing\n")); fprintf (stream, _("\ -g --gen-debug generate debugging information\n")); @@ -470,6 +482,7 @@ parse_args (int * pargc, char *** pargv) OPTION_NOEXECSTACK, OPTION_SIZE_CHECK, OPTION_ELF_STT_COMMON, + OPTION_ELF_BUILD_NOTES, OPTION_SECTNAME_SUBST, OPTION_ALTERNATE, OPTION_AL, @@ -508,6 +521,7 @@ parse_args (int * pargc, char *** pargv) ,{"size-check", required_argument, NULL, OPTION_SIZE_CHECK} ,{"elf-stt-common", required_argument, NULL, OPTION_ELF_STT_COMMON} ,{"sectname-subst", no_argument, NULL, OPTION_SECTNAME_SUBST} + ,{"generate-missing-build-notes", required_argument, NULL, OPTION_ELF_BUILD_NOTES} #endif ,{"fatal-warnings", no_argument, NULL, OPTION_WARN_FATAL} ,{"gdwarf-2", no_argument, NULL, OPTION_GDWARF2} @@ -900,7 +914,19 @@ This program has absolutely no warranty.\n")); case OPTION_SECTNAME_SUBST: flag_sectname_subst = 1; break; -#endif + + case OPTION_ELF_BUILD_NOTES: + if (strcasecmp (optarg, "no") == 0) + flag_generate_build_notes = FALSE; + else if (strcasecmp (optarg, "yes") == 0) + flag_generate_build_notes = TRUE; + else + as_fatal (_("Invalid --generate-missing-build-notes option: `%s'"), + optarg); + break; + +#endif /* OBJ_ELF */ + case 'Z': flag_always_generate_output = 1; break; |