|
|
Message-ID: <20110808070817.GD29562@port70.net>
Date: Mon, 8 Aug 2011 09:08:17 +0200
From: Szabolcs Nagy <nsz@...t70.net>
To: musl@...ts.openwall.com
Subject: Re: Compilation error
* Rich Felker <dalias@...ifal.cx> [2011-08-07 18:00:25 -0400]:
> > (for some reason dynamic linking with musl fails now if i
> > compile musl with pcc imho it used to work..)
>
> Can you find where it fails?
>
it can be a pcc bug
if i compile everything with pcc but link with gcc
then dynamic linking works
the only change to the linker flags is -L/path/to/pcclibs -lpcc
instead of -lgcc, so either pcc does not call ld properly
or there is some issue with -lpcc
pcc -v prints the way it calls the linker:
ld -v -X -shared -o lib/libc.so -e _start -Bsymbolic-functions -soname=libc.so [..src/*/*.lo..] -L/usr/local/lib/pcc/i686-pc-linux-gnu/1.1.0.DEVEL/lib/ -lpcc -g
i printed some variables right before do_single_reloc
(pcc debug info is not always reliable)
(type 8 is R_386_RELATIVE)
running in gdb:
type 8 sym_idex 0 reloc_addr 0xb785c37c *reloc_addr 0x8dc94 base 0xb77d1000 rel[0..2] 0x8b37c 0x8 0x8fdb4
Program received signal SIGSEGV, Segmentation fault.
0xb77ddda8 in do_single_reloc () at src/ldso/dynlink.c:148
148 }
(gdb) bt
#0 0xb77ddda8 in do_single_reloc () at src/ldso/dynlink.c:148
#1 0xb77ddcba in do_relocs (base=0xb77d1000 "\177ELF\001\001\001", start=<error type>, end=<error type>,
base=0xb77d1000 "\177ELF\001\001\001", start=<error type>, end=<error type>) at src/ldso/dynlink.c:146
#2 0xb77e048b in __dynlink () at src/ldso/dynlink.c:538
#3 0xb77e0abc in _start () from ../../lib/libc.so
running in valgrind:
type 8 sym_idex 0 reloc_addr 0x0408b37c *reloc_addr 0x8dc94 base 0x04000000 rel[0..2] 0x8b37c 0x8 0x8fdb4
==2261==
==2261== Process terminating with default action of signal 11 (SIGSEGV)
==2261== Bad permissions for mapped region at address 0x408B37C
==2261== at 0x400CDA8: ??? (src/ldso/dynlink.c:148)
==2261== by 0x400CCB9: ??? (src/ldso/dynlink.c:146)
==2261== by 0x400F48A: __dynlink (src/ldso/dynlink.c:538)
==2261== by 0x400FABB: (within /home/nsz/dev/lang/c/musl/lib/libc.so)
valgrind says it's permission problem so i printed smaps
smaps with pcc:
type 8 sym_idex 0 reloc_addr 0xb78ac1ec *reloc_addr 0x62544 base 0xb7863000 rel[0..2] 0x491ec 0x8 0x63000
...
b7862000-b7863000 r-xp b7862000 00:00 0 [vdso]
Size: 4 kB
Rss: 4 kB
Pss: 0 kB
Shared_Clean: 4 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 4 kB
Swap: 0 kB
b7863000-b78c6000 r-xp 00000000 08:01 1581497 /home/nsz/dev/lang/c/musl/lib/libc.so
Size: 396 kB
Rss: 68 kB
Pss: 68 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 68 kB
Private_Dirty: 0 kB
Referenced: 68 kB
Swap: 0 kB
b78c6000-b78c7000 rwxp 00063000 08:01 1581497 /home/nsz/dev/lang/c/musl/lib/libc.so
Size: 4 kB
Rss: 4 kB
Pss: 4 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 4 kB
Referenced: 4 kB
Swap: 0 kB
...
smaps when linked with gcc (no segfault):
type 8 sym_idex 0 reloc_addr 0xb77c5ea4 *reloc_addr 0xdd40 base 0xb7760000 rel[0..2] 0x65ea4 0x8 0x65ea8
...
b775f000-b7760000 r-xp b775f000 00:00 0 [vdso]
Size: 4 kB
Rss: 4 kB
Pss: 0 kB
Shared_Clean: 4 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 4 kB
Swap: 0 kB
b7760000-b77c5000 r-xp 00000000 08:01 5638271 /home/nsz/dev/lang/c/musl/lib/libc.so
Size: 404 kB
Rss: 72 kB
Pss: 72 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 72 kB
Private_Dirty: 0 kB
Referenced: 72 kB
Swap: 0 kB
b77c5000-b77c7000 rwxp 00064000 08:01 5638271 /home/nsz/dev/lang/c/musl/lib/libc.so
Size: 8 kB
Rss: 8 kB
Pss: 8 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 8 kB
Referenced: 8 kB
Swap: 0 kB
...
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.