|
Message-ID: <20150106074849.GA25889@newbook>
Date: Mon, 5 Jan 2015 23:48:50 -0800
From: Isaac Dunham <ibid.ag@...il.com>
To: musl@...ts.openwall.com
Subject: musl built with pcc yields segfaults in dynlink.c
Hello,
I'm trying to get a pcc-built libc.so that works.
With the latest PCC, musl builds (lib/libc.so) and the result will display
the proper messages if run from the command line without arguments.
However, if I try to run a program with it
(even via -Wl,-dynamic-linker,`pwd`/lib/libc.so), I get a segfault
in src/ldso/dynlink.c:
(gdb) where
#0 sysv_hash (s0=0x0, s0=0x0) at src/ldso/dynlink.c:177
#1 0xb7f6f747 in find_sym (dso=0xbffffb18, rel=0xb7ffe1d4 <.L1502>,
rel_size=<unknown type>, stride=<unknown type>, dso=0xbffffb18,
rel=0xb7ffe1d4 <.L1502>, rel_size=<unknown type>, stride=<unknown type>)
at src/ldso/dynlink.c:251
#2 0xb7f6f916 in do_relocs () at src/ldso/dynlink.c:308
Backtrace stopped: frame did not save the PC
I'm using Alpine Linux edge, recently updated, with linux-vanilla.
Compiling pcc:
#from pcc cvs tip
./configure --prefix=/usr --build=i486-alpine-linux-musl \
--target=i486-alpine-linux-musl --enable-tls --enable-native
make
make install
#from pcc-libs cvs tip
cp ../pcc/config.guess ../pcc/config.sub ./
cd libpcc/
for f in cmpdi2.c divdi3.c fixdfdi.c fixsfdi.c fixunsdfdi.c fixunssfdi.c \
floatdidf.c floatdisf.c floatunsdidf.c moddi3.c muldi3.c negdi2.c \
qdivrem.c ucmpdi2.c udivdi3.c umoddi3.c cxmuldiv.c ashldi3.c ashrdi3.c \
lshrdi3.c _alloca.c unwind.c ssp.c
do hideintern.sed -i $f
done
export CFLAGS=-Os -fPIC
./configure --prefix=/usr --build=i486-alpine-linux-musl \
--target=i486-alpine-linux-musl
make
make install
Compiling musl:
#from git tip
CC=pcc ./configure --target=i486 --disable-static
#add -g to CFLAGS, probably enable-debug is better
make
Testing musl:
gcc -Wl,-dynamic-linker,`pwd`/lib/libc.so test.c
./a.out
hideintern.sed is how I'm adding the
__attribute__((__visibility__("hidden")))
stuff to libpcc.a.
What would be most helpful for debugging?
Thanks,
Isaac Dunham
View attachment "hideintern.sed" of type "text/plain" (539 bytes)
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.