This is the mail archive of the gas2@sourceware.cygnus.com mailing list for the gas2 project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
From: hjl@nynexst.com (H.J. Lu) Date: Sun, 28 Aug 94 20:02:06 EDT > This is a weird problem that `ld' should really detect and prevent > (via a warning message). > > To reproduce: > > $ cat > test.c > main () { printf("this is a test\n"); } > ^D > $ gcc -o test.o test.c (Note the missing "-c") > $ file test.o > test.o: Linux/i386 demand-paged executable (QMAGIC) not stripped > $ gcc -o test test.o > $ file test > test: Linux/i386 demand-paged executable (QMAGIC) not stripped > $ test.o > this is a test > $ test > [ no output ] > > When this snuck up on us for real, it caused lots of problems and took > a bit of debugging to track down a bad Makefile. > > Sometimes, they'll (twice linked binaries) run peacefully, but > sometimes they do bad things: seg. fault (untraceable) and suck up all > virtual memory are the two I've seen. > > Could some better magic detection be put into ld? I don't really see how to do this in a system independent fashion. On some systems there is no simple way to distinguish files which are reasonable linker inputs from files which are not. Of course, I am open to suggestions. Note that if you define a globally visible symbol in the crt0.o file, then you will get a multiple definition error when you attempt to link an already linked file. That should prevent this type of error from occurring. Ian