mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-18 14:53:32 +08:00
f2d4ba38f5
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
16 lines
302 B
ArmAsm
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
|