-------- Original Message --------
Subject: Re: VAX Ultrix bootstrap failure with gcc-2.96
Date: Wed, 14 Jun 2000 08:07:51 -0700
From: Bruce Korb <[EMAIL PROTECTED]>
Organization: Santa Cruz Operations
To: John David Anglin <[EMAIL PROTECTED]>
CC: "Kaveh R. Ghazi" <[EMAIL PROTECTED]>, [EMAIL PROTECTED],
[EMAIL PROTECTED], [EMAIL PROTECTED]
References: <[EMAIL PROTECTED]>
John David Anglin wrote:
>
> This shouldn't have been installed. I thought the patch was dead after
> Bruce pointed out that the configure test is done on the build system whereas
> the fix has to be on the target. Thus, this appoach won't work for a
> cross. That's why Bruce didn't install it.
>
> My original patch using an #ifdef bsd4_2 in sys-protos.h does get propagated
> through to unistd.h. However, this also won't work for a cross. Thus,
> I was going to work up an inclhack to fix the problem before fix-header
> does its work. However, since the problem is more general than ultrix,
> maybe there is a better approach?
Add a c_test to fixincl that does the same test that the
configury test program does? If the test passes, then do
appropriate hackery in unistd.h:
/* Thanks to Mike Rendell for this test. */
#include <sys/types.h>
#define NGID 256
#undef MAX
#define MAX(x, y) ((x) > (y) ? (x) : (y))
int
main ()
{
gid_t gidset[NGID];
int i, n;
union { gid_t gval; long lval; } val;
val.lval = -1;
for (i = 0; i < NGID; i++)
gidset[i] = val.gval;
n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
gidset);
/* Exit non-zero if getgroups seems to require an array of ints. This
happens when gid_t is short but getgroups modifies an array of ints. */
exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0);
}
What if we were to *always* insert one of the following two
#define-s into unistd.h:
#define __GETGROUPS_T gid_t
#define __GETGROUPS_T int
and then *always* declare getgroups (altered as required):
extern int getgroups _P(( int, __GETGROUPS_T* ));
Forevermore, users of GCC would be able to know the type of the
second argument. I'm sure our autoconf friends would be happy
to help coordinate a solution. :-)