diff options
author | Nick Clifton <nickc@redhat.com> | 2020-01-08 16:30:20 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-01-08 16:30:20 +0000 |
commit | f1f28025c3ea75d5368ddd3046461648145b89b3 (patch) | |
tree | fb1d76e45031da950adaf8f42cc90c9a43cd749e /gas/config/obj-elf.c | |
parent | 030a2e78acf66c5c12e073ec3887a167da7a7195 (diff) | |
download | fsf-binutils-gdb-f1f28025c3ea75d5368ddd3046461648145b89b3.zip fsf-binutils-gdb-f1f28025c3ea75d5368ddd3046461648145b89b3.tar.gz fsf-binutils-gdb-f1f28025c3ea75d5368ddd3046461648145b89b3.tar.bz2 |
Make the assembler generate an error if there is an attempt to define a section with the same name as an already defined symbol.
PR 14891
* config/obj-elf.c (obj_elf_section): Fail if the section name is
already defined as a different symbol type.
* testsuite/gas/elf/pr14891.s: New test source file.
* testsuite/gas/elf/pr14891.d: New test driver.
* testsuite/gas/elf/pr14891.s: New test expected error output.
* testsuite/gas/elf/elf.exp: Run the new test.
Diffstat (limited to 'gas/config/obj-elf.c')
-rw-r--r-- | gas/config/obj-elf.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index ffc5508..7cf921c 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -1039,6 +1039,18 @@ obj_elf_section (int push) name = obj_elf_section_name (); if (name == NULL) return; + + symbolS * sym; + if ((sym = symbol_find (name)) != NULL + && ! symbol_section_p (sym) + && S_IS_DEFINED (sym) + && ! S_IS_VOLATILE (sym) + && ! S_CAN_BE_REDEFINED (sym)) + { + as_bad (_("section name '%s' already defined as another symbol"), name); + ignore_rest_of_line (); + return; + } type = SHT_NULL; attr = 0; gnu_attr = 0; |