Subject: Re: lossage with libc: errlist.c, siglist.c
To: Jason Thorpe <thorpej@nas.nasa.gov>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: current-users
Date: 12/05/1998 21:18:10
>Works on Alpha, too.

Jason,

I've fixed the mips cdefs.h (I just copied it from cgd ages ago, iirc,
and later changes didnt make it to the mips cdefs.h)

But the problem is that the siglist.c and errlist.c get included
*twice*, so the .gnu.warning.* strings get emitted twice.  So even
after I edit the mips warning code to be like the Alpha, if you *do*
pull in the deprecated symbols, the warnings get doubled  at link time.

Here's what I get with _sys_errlist.o and an main() that references
sys_errlist:

	extern sys_errlist;
	main()
	{
		use(sys_errlist);
	}

	use()
	{
	}


Cuisinart# cc -o -o main main.o
main.o: In function `main':
main.c(.text+0x24): warning: reference to compatibility sys_errlist[]; include <errno.h> for correct referencewarning: reference to compatibility sys_errlist[]; include <errno.h> for correct referencewarning: reference to compatibility sys_errlist[]; include <errno.h> for correct reference

Isn't that "broken?"


I dunno. If the linker is concatenating warnings for the same symbol
together, maybe what the mips is doing isn't broken after all?