gas: error for section type, attr, or entsize change
* config/obj-elf.c (obj_elf_change_section): Error for section type, attr or entsize changes in assembly. * testsuite/gas/elf/elf.exp: Pass -Z to gas for section5 test. * testsuite/gas/elf/section5.l: Update.
This commit is contained in:
parent
821948744f
commit
33176d912a
|
@ -1,3 +1,10 @@
|
|||
2020-02-10 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* config/obj-elf.c (obj_elf_change_section): Error for section
|
||||
type, attr or entsize changes in assembly.
|
||||
* testsuite/gas/elf/elf.exp: Pass -Z to gas for section5 test.
|
||||
* testsuite/gas/elf/section5.l: Update.
|
||||
|
||||
2020-02-10 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* output-file.c (output_file_close): Do a normal close when
|
||||
|
|
|
@ -767,7 +767,17 @@ obj_elf_change_section (const char *name,
|
|||
{
|
||||
if (type != SHT_NULL
|
||||
&& (unsigned) type != elf_section_type (old_sec))
|
||||
as_warn (_("ignoring changed section type for %s"), name);
|
||||
{
|
||||
if (ssect != NULL)
|
||||
/* This is a special section with known type. User
|
||||
assembly might get the section type wrong; Even high
|
||||
profile projects like glibc have done so in the past.
|
||||
So don't error in this case. */
|
||||
as_warn (_("ignoring changed section type for %s"), name);
|
||||
else
|
||||
/* Do error when assembly isn't self-consistent. */
|
||||
as_bad (_("changed section type for %s"), name);
|
||||
}
|
||||
|
||||
if (attr != 0)
|
||||
{
|
||||
|
@ -779,14 +789,19 @@ obj_elf_change_section (const char *name,
|
|||
| SEC_EXCLUDE | SEC_SORT_ENTRIES | SEC_MERGE | SEC_STRINGS
|
||||
| SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD
|
||||
| SEC_THREAD_LOCAL)))
|
||||
as_warn (_("ignoring changed section attributes for %s"), name);
|
||||
{
|
||||
if (ssect != NULL)
|
||||
as_warn (_("ignoring changed section attributes for %s"), name);
|
||||
else
|
||||
as_bad (_("changed section attributes for %s"), name);
|
||||
}
|
||||
else
|
||||
/* FIXME: Maybe we should consider removing a previously set
|
||||
processor or application specific attribute as suspicious ? */
|
||||
elf_section_flags (sec) = attr;
|
||||
|
||||
if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize)
|
||||
as_warn (_("ignoring changed section entity size for %s"), name);
|
||||
as_bad (_("changed section entity size for %s"), name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -202,7 +202,7 @@ if { [is_elf_format] } then {
|
|||
# new sections created without atrributes.
|
||||
# The RX port does not complain about changing the attributes of the
|
||||
# .data and .bss sections since it does not use those names.
|
||||
run_elf_list_test "section5" "" "-al" "-SW" "| grep \" \\\\.test\\\[0-9\\\]\""
|
||||
run_elf_list_test "section5" "" "-al -Z" "-SW" "| grep \" \\\\.test\\\[0-9\\\]\""
|
||||
}
|
||||
run_dump_test "struct"
|
||||
if { ![istarget "alpha*-*-*"] } then {
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
.*: Assembler messages:
|
||||
.*:7: Warning: .*
|
||||
.*:7: Warning: .*
|
||||
.*:10: Warning: .*
|
||||
.*:16: Warning: .*
|
||||
.*:7: Error: .*
|
||||
.*:7: Error: .*
|
||||
.*:10: Error: .*
|
||||
.*:16: Error: .*
|
||||
.*:18: Warning: .*
|
||||
.*:20: Warning: .*
|
||||
.*:22: Warning: .*
|
||||
.*:24: Warning: .*
|
||||
4 errors, 4 warnings, generating bad object file
|
||||
.*GAS.*
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue