mailing list of musl libc
 help / color / mirror / code / Atom feed
* musl built with pcc yields segfaults in dynlink.c
@ 2015-01-06  7:48 Isaac Dunham
  2015-01-06 20:49 ` Rich Felker
  0 siblings, 1 reply; 10+ messages in thread
From: Isaac Dunham @ 2015-01-06  7:48 UTC (permalink / raw)
  To: musl

[-- Attachment #1: Type: text/plain, Size: 1880 bytes --]

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


[-- Attachment #2: hideintern.sed --]
[-- Type: text/plain, Size: 538 bytes --]

#!/bin/sed -f
# Hide functions with leading underscores.
# Used for patching the pcc-libs tree.
# Since we need to patch the line before the one that matches a pattern,
# we must use the hold space.
# Method:
#  hold/delete line one
#  if this line matches, swap for last line, modify pattern space, swap back
#  swap with last line, so we print it and save this line for next
#  at the end, print the prior line, then swap it for the last line
1{h;d}
/^_.*(.*)$/{x;s/^\(.*\)$/__attribute__((__visibility__("hidden"))) \1/;x}
2,$x
${p;x}

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-01-08  3:56 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-06  7:48 musl built with pcc yields segfaults in dynlink.c Isaac Dunham
2015-01-06 20:49 ` Rich Felker
2015-01-06 22:56   ` Isaac Dunham
2015-01-07  0:53     ` Rich Felker
2015-01-07  2:01       ` Isaac Dunham
2015-01-07  5:20         ` stephen Turner
2015-01-07  5:33         ` Rich Felker
2015-01-07  5:48           ` stephen Turner
2015-01-08  2:16             ` Rich Felker
2015-01-08  3:56               ` stephen Turner

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).