Subject: Re: CVS commit: syssrc/sys/arch/powerpc/include
To: None <tsubai@netbsd.org>
From: Matt Thomas <matt@3am-software.com>
List: tech-toolchain
Date: 08/07/2002 01:20:15
At 01:01 AM 8/7/2002, Tsubai Masanari wrote:

>Module Name:    syssrc
>Committed By:   tsubai
>Date:           Wed Aug  7 08:01:58 UTC 2002
>
>Modified Files:
>         syssrc/sys/arch/powerpc/include: ansi.h
>
>Log Message:
>Re-correct previous.  It's intentional.

It may be intention but it's wrong.  It's incompatible with the
GCC 3.* definition of va_list so that if you try to build GCC 3.*
for powerpc, it fails in libgcc building rtl.c.

This is because include/stdarg.h in gcc does a

typedef __builtin_va_list __gnuc_va_list;

followed by a

typedef __gnuc_va_list va_list;

Then libiberty.h defines

extern int vasprintf PARAMS ((char **, const char *, va_list));

where our stdio.h defines

int      vasprintf __P((char ** __restrict, const char * __restrict,
             _BSD_VA_LIST_));

Now if _BSD_VA_LIST (aka __va_list) is defined as

typedef struct {
         __builtin_va_list __va;
} __va_list;

That is incompatible with GCC include/stdarg.h definition.  Which since
we are using GCC we are obligated to use their definition.

BTW, I had Jason Thorpe review my change before committing it.  So please
revert back to my version.

-- 
Matt Thomas               Internet:   matt@3am-software.com
3am Software Foundry      WWW URL:    http://www.3am-software.com/bio/matt/
Cupertino, CA             Disclaimer: I avow all knowledge of this message