> > > 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