[uClibc]Tool chain changes to top of CVS
Simon Rowe
srowe at cambridgebroadband.com
Thu Nov 7 16:36:04 UTC 2002
Platform: Power PC ppc_8xx
Compiler: HardHat 2.0
Something seems to have changed since 0.9.15, trying to build shared
libraries runs into problems unless the library link is run with -fPIC as
well as the compilation.
Below is an example run using a minimal library, the first is using a stock
0.9.15 build of uClibc, the second using the top of the CVS tree generates a
shared library with R_PPC_REL24 entries causing the run-time linker to barf.
They can be eliminated by building the library with '-fPIC -shared' but the
library is still bigger and this causes issues with third-party libraries
e.g. openSSL.
[ Using 0.9.15 ]
bash$ cat lib.c
int
magic_num(void)
{
return 42;
}
bash$ /usr/powerpc-linux-uclibc/bin/powerpc-uclibc-gcc -fPIC -c -o lib.o lib.c
bash$ /usr/powerpc-linux-uclibc/bin/powerpc-uclibc-gcc -shared -o
libmytest.so lib.o
bash$ /usr/powerpc-linux-uclibc/bin/powerpc-uclibc-objdump -R libmytest.so
libmytest.so: file format elf32-powerpc
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
0001051c R_PPC_ADDR32 main
00000000 R_PPC_NONE *ABS*
00010568 R_PPC_JMP_SLOT __uClibc_main
00000014 R_PPC_RELATIVE *ABS*+0x00000424
00000020 R_PPC_RELATIVE *ABS*+0x00000424
000001b8 R_PPC_ADDR32 _start2
0000026c R_PPC_RELATIVE *ABS*+0x00000478
bash$
[ now switch to top of CVS tree ]
bash$ /usr/powerpc-linux-uclibc/bin/powerpc-uclibc-gcc -fPIC -c -o lib.o lib.c
bash$ /usr/powerpc-linux-uclibc/bin/powerpc-uclibc-gcc -shared -o
libmytest.so lib.o
bash$ /usr/powerpc-linux-uclibc/bin/powerpc-uclibc-objdump -R libmytest.so
libmytest.so: file format elf32-powerpc
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
000006fa R_PPC_ADDR16_HA .data+0x00010904
000006fe R_PPC_ADDR16_LO .data+0x00010904
0000070a R_PPC_ADDR16_HA .data+0x00010900
0000070e R_PPC_ADDR16_LO .data+0x00010900
0000071e R_PPC_ADDR16_HA .data+0x00010900
00000722 R_PPC_ADDR16_LO .data+0x00010900
0000072a R_PPC_ADDR16_LO .data+0x00010900
0000073a R_PPC_ADDR16_LO .data+0x00010900
0000074a R_PPC_ADDR16_HA __deregister_frame_info
0000074e R_PPC_ADDR16_LO __deregister_frame_info
0000075a R_PPC_ADDR16_HA .eh_frame+0x00010908
0000075e R_PPC_ADDR16_LO .eh_frame+0x00010908
00000760 R_PPC_REL24 __deregister_frame_info
00000766 R_PPC_ADDR16_HA .data+0x00010904
0000076e R_PPC_ADDR16_LO .data+0x00010904
000007ae R_PPC_ADDR16_HA __register_frame_info
000007b2 R_PPC_ADDR16_LO __register_frame_info
000007be R_PPC_ADDR16_HA .eh_frame+0x00010908
000007c2 R_PPC_ADDR16_HA .bss+0x00010a0c
000007c6 R_PPC_ADDR16_LO .eh_frame+0x00010908
000007ca R_PPC_ADDR16_LO .bss+0x00010a0c
000007cc R_PPC_REL24 __register_frame_info
00000886 R_PPC_ADDR16_HA .ctors+0x0001090c
0000088a R_PPC_ADDR16_LO .ctors+0x0001090c
0000088e R_PPC_ADDR16_LO .ctors+0x0001090c
00000000 R_PPC_NONE *ABS*
00010900 R_PPC_RELATIVE *ABS*+0x00010918
000109b4 R_PPC_ADDR32 main
00010a00 R_PPC_JMP_SLOT __uClibc_main
00000014 R_PPC_RELATIVE *ABS*+0x000007fc
00000020 R_PPC_RELATIVE *ABS*+0x000007fc
000001b8 R_PPC_ADDR32 _start2
0000026c R_PPC_RELATIVE *ABS*+0x00000850
bash$ /usr/powerpc-linux-uclibc/bin/powerpc-uclibc-gcc -fPIC -shared -o
libmytest.so lib.o
bash$ /usr/powerpc-linux-uclibc/bin/powerpc-uclibc-objdump -R libmytest.so
libmytest.so: file format elf32-powerpc
DYNAMIC RELOCATION RECORDS
OFFSET TYPE VALUE
00010880 R_PPC_RELATIVE *ABS*+0x00010898
00000000 R_PPC_NONE *ABS*
00000000 R_PPC_NONE *ABS*
000108ac R_PPC_RELATIVE *ABS*+0x00010884
000108a8 R_PPC_RELATIVE *ABS*+0x00010880
000108b0 R_PPC_RELATIVE *ABS*+0x00010888
000108b4 R_PPC_RELATIVE *ABS*+0x000109b8
000108b8 R_PPC_RELATIVE *ABS*+0x00010890
000108bc R_PPC_GLOB_DAT __deregister_frame_info
000108c0 R_PPC_GLOB_DAT __register_frame_info
00010948 R_PPC_ADDR32 main
00010994 R_PPC_JMP_SLOT __deregister_frame_info
0001099c R_PPC_JMP_SLOT __uClibc_main
000109a4 R_PPC_JMP_SLOT __register_frame_info
00000014 R_PPC_RELATIVE *ABS*+0x0000076c
00000020 R_PPC_RELATIVE *ABS*+0x0000076c
000001b8 R_PPC_ADDR32 _start2
0000026c R_PPC_RELATIVE *ABS*+0x000007c0
bash$
--
Simon Rowe
Cambridge Broadband Ltd
More information about the uClibc
mailing list