[PATCH 2/5] kbuild: allow archs to select build for link dead code/data elimination
Alan Modra
amodra at gmail.com
Tue Aug 9 09:50:16 AEST 2016
On Mon, Aug 08, 2016 at 05:14:27PM +0200, Arnd Bergmann wrote:
> I have reverted that patch now, so ARM uses ".fixup" again like every
> other architecture does, and now "*(.fixup) *(.text .text.*)" works
> correctly, while ""*(.fixup) *(.text .fixup .text.*)" also fails
> the same way that I saw before:
That is really odd. The linker isn't supposed to treat those script
snippets differently. First match for .fixup wins.
$ cat > fixup1.s <<\EOF
.global _start
.text
_start:
.dc.a .L2
.L1:
.section ".fixup","ax",%progbits
.L2:
.dc.a .L1
EOF
$ cat > fixup2.s <<\EOF
.section ".text.xyz","ax",%progbits
.dc.a .L2
.L1:
.section ".fixup","ax",%progbits
.L2:
.dc.a .L1
EOF
$ cat > fixup.lnk <<\EOF
SECTIONS {
.text : { *(.fixup) *(.text .fixup .text.*) }
}
EOF
$ as -o fixup1.o fixup1.s
$ as -o fixup2.o fixup2.s
$ ld -o fixup -T fixup.lnk -Map fixup.map fixup1.o fixup2.o
$ cat fixup.map
Memory Configuration
Name Origin Length Attributes
*default* 0x0000000000000000 0xffffffffffffffff
Linker script and memory map
.text 0x0000000000000000 0x10
*(.fixup)
.fixup 0x0000000000000000 0x4 fixup1.o
.fixup 0x0000000000000004 0x4 fixup2.o
*(.text .fixup .text.*)
.text 0x0000000000000008 0x4 fixup1.o
0x0000000000000008 _start
.text 0x000000000000000c 0x0 fixup2.o
.text.xyz 0x000000000000000c 0x4 fixup2.o
[snip]
--
Alan Modra
Australia Development Lab, IBM
More information about the Linuxppc-dev
mailing list