binutils-gdb/ld/testsuite/ld-elf/group9.s
Jan Beulich f2d4ba38f5 gas/ELF: don't accumulate .type settings
Recently a patch was submitted for a Xen Project test harness binary to
override the compiler specified @object to @func (see [1]). In a reply I
suggested we shouldn't make ourselves dependent on currently unspecified
behavior of gas here: It accumulates all requests, and then
bfd/elf.c:swap_out_syms(), in an apparently ad hoc manner, prioritizes
certain flags over others.

Make the behavior predictable: Generally the last .type is what counts.
Exceptions are directives which set multiple bits (TLS, IFUNC, and
UNIQUE): Subsequent directives requesting just the more generic bit
(i.e. FUNC following IFUNC) won't clear the more specific one.  Warn
about incompatible changes, except from/to STT_NOTYPE.

Also add a new target hook, which hppa wants to use right away afaict.

In the course of adding the warning I ran into two ld testsuite
failures.  I can only assume that it was a copy-and-paste mistake that
lead to the same symbol having its type set twice.

[1] https://lists.xenproject.org/archives/html/xen-devel/2019-05/msg01980.html
2019-07-04 10:35:47 +02:00

16 lines
302 B
ArmAsm

.section .text.foo,"axG",%progbits,foo,comdat
.globl foo
.type foo,%function
foo:
.byte 0
.section .data.foo,"axG",%progbits,foo,comdat
.globl foo.data
.type foo.data,%object
foo.data:
.byte 0
.section .text.bar,"axG",%progbits,bar,comdat
.globl bar
.type bar,%function
bar:
.long foo.data