Date: Sat, 11 Mar 2000 14:30:19 +0100 From: "Marco van de Voort" <marcov@stack.nl> To: freebsd-hackers@FreeBSD.ORG Subject: Re: inner workings of the C compiler Message-ID: <20000311133221.B99A02E804@hermes.tue.nl> In-Reply-To: <20000310184346.B94441@fisicc-ufm.edu> References: <20000311000014.920E62E802@hermes.tue.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
> > > 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 (MarcoV@Stack.nl) <http://www.stack.nl/~marcov/xtdlib.htm> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000311133221.B99A02E804>