Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Apr 1995 10:17:14 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        freebsd-hackers@FreeBSD.org, j@uriah.heep.sax.de
Subject:   Re: 90's compilers
Message-ID:  <199504160017.KAA09761@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> As I feel that "protection" for old and braindead compilers at the
>> cost of higher obfuscation is no longer worth it.

>Same opinion for me.  And once i had to tweak that fancy boot code,
>the non-declarations bothered me too much, so i've added them without
>those funny _P()'s.

_P() doesn't bother me at all (if it is correctly spelled and punctuated
as __P(()) :-).  What do you think of the other klupges in <sys/cdefs.h>?
__dead* and __pure* can't be avoided.

>The _P()'s cannot go from the standard header files, however.  They
>are required there for old programs that need to be compiled with
>-traditional (since the `porter' is too lazy to resolve the conflicts
>like ``mktemp("foooXXX")'').

Nope, prototypes work with `gcc -traditional'.  They are there for
other K&R1 compilers.  They don't help much because they are not used
in a few headers.

K&R1 and non-gcc compilers fail to compile most of our sources for
the more fundament reason that <sys/types.h> declares things as having
the bogus type `long long'.  `gcc -pedantic -Werror' fails too.  The
latter problem can be fixed by using __attribute((mode(DI))) as was
done in the 1.1.5 <sys/types.h>.  I have problems parsing this and
so does gcc :-).  gcc dumps core for

	int foo(void) __attribute((mode(DI))) { return 1; }

__attribute(()) seems to work better in typedefs:

	typedef int quad_t __attribute((mode(DI)));
	quad_t foo(void) { return 1; }

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199504160017.KAA09761>