> > > to try things out i create a static binary and coerce it to use my
> > > C library instead of the system's one.
> > > 
> > > this is how i compile my program:
> > > 
> > > cc -g -DYP -DFreeBSD -Wall -pedantic -ansi -c -I../../libc/include nss-test.c 
> > > cc -g -nostdlib -static -L../../libc -o nss-test nss-test.o \
> > >   ../../csu/i386-elf/crt1.o ../../csu/i386-elf/crti.o -lc
> > 
> > I'm no expert, but I tried something like this a few weeks back(to totally link 
>without 
> > libc), and I was wondering, aren't you missing crtbegin and crtend ?
> >  
> 
> YES! that took care of the double calling of the first function of the
> first file... 
> 
> I still get the bus error at the end of my program in the atexit() call.
> this is because _fini is invalid.
> 
> do you know the exact order in which I should link the objects? 

prt1 first,    and crtbegin ownmodule crtend I believe, I added the others to
the end, and that worked. (But I didn't link libc or any other lib)

So

crt1 crtbegin myobject crtend crti crtn.


P.s. Could you sent me a minimal C program linking to libc, and the 
commandline to compile it with -nostdlib ?

I could throw all these experiences with non standard linking in a little tex doc.
( --nostdlib with and without libc, pure assembler instead of c (no gcc), some
small chapter about syscall conventions etc)
Marco van de Voort ([EMAIL PROTECTED])
<http://www.stack.nl/~marcov/xtdlib.htm>



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to