[resent via gmane] On Sat, Feb 14, 2015 at 18:00:54 +0000, Anna Fischer wrote:
> > Betreff: Re: [vbox-dev] VBoxRT.so broken TEXTRELs since 4.3.16 > > > > 1) What does the following command print > > > > $ objdump -xdr > > out/linux.amd64/release/obj/VBoxRT/common/ldr/ldrkStuff.o > > | grep -B2 g_kLdrRdrFileOps > > 0000000000001510 g F .text 0000000000000327 .hidden rtldrkLdrOpen > 0000000000000000 *UND* 0000000000000000 RTMemAllocZTag > 0000000000000260 g O .rodata 0000000000000090 .hidden > g_kLdrRdrFileOps > -- > 15b1: c7 00 19 09 61 19 movl $0x19610919,(%rax) > 15b7: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 15be > <rtldrkLdrOpen+0xae> > 15ba: R_X86_64_PC32 g_kLdrRdrFileOps-0x4 As expected, that patch puts the object into wrong section. > > for the build *with* the .rodata patch? This is the file that is > > linked into VBoxRT.so and causes the complaint about the relocation. > > > > For me with stock VBox the symbol is in .data.rel.ro.local and is > > hidden. When VBoxRT.so is linked, the relocation in text is resolved > > to the hidden symbol and the output has no relocation for that symbol. > > > > > > 2) *Without* that patch that adds explicit .rodata, what does > > > > $ objdump -xdr > > out/linux.amd64/release/obj/RuntimeR3/common/ldr/ldrkStuff.o | grep > > g_kLdrRdrFileOps > > 00000000000000c0 g O .data.rel.ro.local 0000000000000090 .hidden > g_kLdrRdrFileOps > 15ba: R_X86_64_PC32 g_kLdrRdrFileOps-0x4 > > > and > > > > nm out/linux.amd64/release-/lib/RuntimeR3.a | grep -i g_kLdrRdrFileOps > > 0000000000000440 R g_kLdrRdrFileOps > > > 00000000000000c0 D g_kLdrRdrFileOps Aha, that's interesting. Without the patch g_kLdrRdrFileOps is in .data.rel.ro.local in your build, so the file must have been compiled PIC. And looking at the full PLD build log linked from https://www.virtualbox.org/ticket/13199#comment:1 I see that out/linux.amd64/release/obj/RuntimeR3/common/ldr/ldrkStuff.o is indeed built with -fPIC. That file, part of RuntimeR3.a, is NOT built as PIC in stock VBox build (RuntimeR3_TEMPLATE = VBoxR3Static). If building it as PIC is not intended, than you should find the bug in your makefiles or makefile patches that causes -fPIC to be added there. If building it as PIC *is* intended - you need to adjust that visibility/mangling check to reflect the new reality. HTH. -uwe _______________________________________________ vbox-dev mailing list [email protected] https://www.virtualbox.org/mailman/listinfo/vbox-dev
