From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12313 invoked by alias); 23 Mar 2009 20:45:24 -0000 Received: (qmail 11207 invoked by uid 48); 23 Mar 2009 20:45:10 -0000 Date: Mon, 23 Mar 2009 20:45:00 -0000 Message-ID: <20090323204510.11206.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug target/38182] stddef.h assumes machinee/ansi.h defines _ANSI_H_ In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "prlw1 at cam dot ac dot uk" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-03/txt/msg01627.txt.bz2 ------- Comment #6 from prlw1 at cam dot ac dot uk 2009-03-23 20:45 ------- (In reply to comment #5) > The patch is obviously wrong (it changes the installed headers for all > targets instead of setting USER_H to adjust the list for the target with > this issue) Care to explain more re USER_H? I tried to addIndex: stddef.h =================================================================== --- stddef.h (revision 145011) +++ stddef.h (working copy) @@ -62,6 +62,20 @@ #include #endif +#if defined(__NetBSD__) +typedef _BSD_PTRDIFF_T_ ptrdiff_t; + +#ifdef _BSD_SIZE_T_ +typedef _BSD_SIZE_T_ size_t; +#undef _BSD_SIZE_T_ +#endif + +#ifdef _BSD_WCHAR_T_ +typedef _BSD_WCHAR_T_ wchar_t; +#undef _BSD_WCHAR_T_ +#endif +#endif /* __NetBSD__ */ + /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are defined if the corresponding type is *not* defined. FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_ */ which allowed me to compile gfortran. libsup++ failed including time.h, which behaved as though _BSD_SIZE_T_ was defined, but empty. Simply put, if I gcc -E gcc/gcc/ginclude/stddef.h, size_t is not defined: # 1 "stddef.h" # 1 "" # 1 "" # 1 "stddef.h" # 58 "stddef.h" # 1 "/usr/include/machine/ansi.h" 1 3 4 # 37 "/usr/include/machine/ansi.h" 3 4 # 1 "/usr/include/sys/cdefs.h" 1 3 4 # 59 "/usr/include/sys/cdefs.h" 3 4 # 1 "/usr/include/machine/cdefs.h" 1 3 4 # 60 "/usr/include/sys/cdefs.h" 2 3 4 # 1 "/usr/include/sys/cdefs_elf.h" 1 3 4 # 62 "/usr/include/sys/cdefs.h" 2 3 4 # 38 "/usr/include/machine/ansi.h" 2 3 4 # 1 "/usr/include/machine/int_types.h" 1 3 4 # 45 "/usr/include/machine/int_types.h" 3 4 typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef short int __int16_t; typedef unsigned short int __uint16_t; typedef int __int32_t; typedef unsigned int __uint32_t; typedef long long int __int64_t; typedef unsigned long long int __uint64_t; typedef int __intptr_t; typedef unsigned int __uintptr_t; # 40 "/usr/include/machine/ansi.h" 2 3 4 # 73 "/usr/include/machine/ansi.h" 3 4 typedef union { __int64_t __mbstateL; char __mbstate8[128]; } __mbstate_t; # 59 "stddef.h" 2 and machine/ansi.h defines _${MACHINE}_ANSI_H_ on NetBSD. If I gcc -E /usr/include/stddef.h, size_t is defined. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38182