public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Fix binary compatibility of bits/types.h
@ 2003-09-08 21:44 Jakub Jelinek
  2003-09-09  0:08 ` Ulrich Drepper
  2003-09-09 19:08 ` Roland McGrath
  0 siblings, 2 replies; 9+ messages in thread
From: Jakub Jelinek @ 2003-09-08 21:44 UTC (permalink / raw)
  To: Ulrich Drepper, Roland McGrath; +Cc: Glibc hackers

Hi!

The following patch restores bits/types.h to hwo they looked like
on 2002-01-01.
In 2002-07-09 commit s390 -m31 __nlink_t/__ssize_t/__intptr_t were
(probably) unintentionally changed from int to long
and in 2002-10-23 commit lots of types changed from long to long long
on 64-bit arches (similarly with ul -> ull and l* -> ll*).
My scripts were only checking
{alpha,i386,ia64,mips32,powerpc32,powerpc64,s390,s390x,sparc,sparc64,x86_64 -m32,x86_64 -m64}-linux,
are there any other 64-bit ports supported in glibc?
powerpc64-linux port did not exist at that time, so if we wanted to avoid
changes to it now, we could copy the current CVS generic/bits/types.h
to sysdeps/unix/sysv/linux/powerpc/bits/types.h, but I think it will
be better to match other 64-bit arches.

2003-09-08  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/generic/bits/types.h (__quad_t): Make long int if 64-bit.
	(__u_quad_t): Make unsigned long int if 64-bit.
	(__SQUAD_TYPE): Make long int if 64-bit.
	(__UQUAD_TYPE): Make unsigned long int if 64-bit.
	* sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove.
linuxthreads/
	* sysdeps/unix/sysv/linux/s390/bits/typesizes.h: Remove.

--- libc/sysdeps/generic/bits/types.h.jj	2003-08-06 14:36:15.000000000 -0400
+++ libc/sysdeps/generic/bits/types.h	2003-09-08 17:14:40.000000000 -0400
@@ -51,14 +51,13 @@ __extension__ typedef signed long long i
 __extension__ typedef unsigned long long int __uint64_t;
 #endif
 
-/* quad_t is also 64 bits, but is traditionally defined as `long long'
-   even when `long' is also 64 bits.  */
-#ifdef __GLIBC_HAVE_LONG_LONG
-__extension__ typedef long long int __quad_t;
-__extension__ typedef unsigned long long int __u_quad_t;
-#elif __WORDSIZE == 64
+/* quad_t is also 64 bits.  */
+#if __WORDSIZE == 64
 typedef long int __quad_t;
 typedef unsigned long int __u_quad_t;
+#elif defined __GLIBC_HAVE_LONG_LONG
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
 #else
 typedef struct
 {
@@ -106,9 +105,9 @@ typedef struct
 #define __U32_TYPE		unsigned int
 #define __SLONGWORD_TYPE	long int
 #define __ULONGWORD_TYPE	unsigned long int
+#if __WORDSIZE == 32
 #define	__SQUAD_TYPE		long long int
 #define	__UQUAD_TYPE		unsigned long long int
-#if __WORDSIZE == 32
 # define __SWORD_TYPE		int
 # define __UWORD_TYPE		unsigned int
 # define __SLONG32_TYPE		long int
@@ -116,6 +115,8 @@ typedef struct
 # define __S64_TYPE		__quad_t
 # define __U64_TYPE		__u_quad_t
 #elif __WORDSIZE == 64
+#define	__SQUAD_TYPE		long int
+#define	__UQUAD_TYPE		unsigned long int
 # define __SWORD_TYPE		long int
 # define __UWORD_TYPE		unsigned long int
 # define __SLONG32_TYPE		int
--- libc/sysdeps/unix/sysv/linux/s390/bits/typesizes.h.jj	2003-07-31 15:32:29.000000000 -0400
+++ libc/sysdeps/unix/sysv/linux/s390/bits/typesizes.h	2003-09-08 17:26:51.000000000 -0400
@@ -1,66 +0,0 @@
-/* bits/typesizes.h -- underlying types for *_t.  Linux/s390 version.
-   Copyright (C) 2003 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifndef _BITS_TYPES_H
-# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
-#endif
-
-#ifndef	_BITS_TYPESIZES_H
-#define	_BITS_TYPESIZES_H	1
-
-/* See <bits/types.h> for the meaning of these macros.  This file exists so
-   that <bits/types.h> need not vary across different GNU platforms.  */
-
-#define __DEV_T_TYPE		__UQUAD_TYPE
-#define __UID_T_TYPE		__U32_TYPE
-#define __GID_T_TYPE		__U32_TYPE
-#define __INO_T_TYPE		__ULONGWORD_TYPE
-#define __INO64_T_TYPE		__UQUAD_TYPE
-#define __MODE_T_TYPE		__U32_TYPE
-#define __NLINK_T_TYPE		__UWORD_TYPE
-#define __OFF_T_TYPE		__SLONGWORD_TYPE
-#define __OFF64_T_TYPE		__SQUAD_TYPE
-#define __PID_T_TYPE		__S32_TYPE
-#define __RLIM_T_TYPE		__ULONGWORD_TYPE
-#define __RLIM64_T_TYPE		__UQUAD_TYPE
-#define	__BLKCNT_T_TYPE		__SLONGWORD_TYPE
-#define	__BLKCNT64_T_TYPE	__SQUAD_TYPE
-#define	__FSBLKCNT_T_TYPE	__ULONGWORD_TYPE
-#define	__FSBLKCNT64_T_TYPE	__UQUAD_TYPE
-#define	__FSFILCNT_T_TYPE	__ULONGWORD_TYPE
-#define	__FSFILCNT64_T_TYPE	__UQUAD_TYPE
-#define	__ID_T_TYPE		__U32_TYPE
-#define __CLOCK_T_TYPE		__SLONGWORD_TYPE
-#define __TIME_T_TYPE		__SLONGWORD_TYPE
-#define __USECONDS_T_TYPE	__U32_TYPE
-#define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
-#define __DADDR_T_TYPE		__S32_TYPE
-#define __SWBLK_T_TYPE		__SLONGWORD_TYPE
-#define __KEY_T_TYPE		__S32_TYPE
-#define __CLOCKID_T_TYPE	__S32_TYPE
-#define __TIMER_T_TYPE		void *
-#define __BLKSIZE_T_TYPE	__SLONGWORD_TYPE
-#define __FSID_T_TYPE		struct { int __val[2]; }
-#define __SSIZE_T_TYPE		__SLONGWORD_TYPE
-
-/* Number of descriptors that can fit in an `fd_set'.  */
-#define	__FD_SETSIZE		1024
-
-
-#endif /* bits/typesizes.h */
--- libc/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h.jj	2003-08-01 00:36:20.000000000 -0400
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h	2003-09-08 17:27:13.000000000 -0400
@@ -1,66 +0,0 @@
-/* bits/typesizes.h -- underlying types for *_t.  Linux/s390 version.
-   Copyright (C) 2003 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifndef _BITS_TYPES_H
-# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
-#endif
-
-#ifndef	_BITS_TYPESIZES_H
-#define	_BITS_TYPESIZES_H	1
-
-/* See <bits/types.h> for the meaning of these macros.  This file exists so
-   that <bits/types.h> need not vary across different GNU platforms.  */
-
-#define __DEV_T_TYPE		__UQUAD_TYPE
-#define __UID_T_TYPE		__U32_TYPE
-#define __GID_T_TYPE		__U32_TYPE
-#define __INO_T_TYPE		__ULONGWORD_TYPE
-#define __INO64_T_TYPE		__UQUAD_TYPE
-#define __MODE_T_TYPE		__U32_TYPE
-#define __NLINK_T_TYPE		__UWORD_TYPE
-#define __OFF_T_TYPE		__SLONGWORD_TYPE
-#define __OFF64_T_TYPE		__SQUAD_TYPE
-#define __PID_T_TYPE		__S32_TYPE
-#define __RLIM_T_TYPE		__ULONGWORD_TYPE
-#define __RLIM64_T_TYPE		__UQUAD_TYPE
-#define	__BLKCNT_T_TYPE		__SLONGWORD_TYPE
-#define	__BLKCNT64_T_TYPE	__SQUAD_TYPE
-#define	__FSBLKCNT_T_TYPE	__ULONGWORD_TYPE
-#define	__FSBLKCNT64_T_TYPE	__UQUAD_TYPE
-#define	__FSFILCNT_T_TYPE	__ULONGWORD_TYPE
-#define	__FSFILCNT64_T_TYPE	__UQUAD_TYPE
-#define	__ID_T_TYPE		__U32_TYPE
-#define __CLOCK_T_TYPE		__SLONGWORD_TYPE
-#define __TIME_T_TYPE		__SLONGWORD_TYPE
-#define __USECONDS_T_TYPE	__U32_TYPE
-#define __SUSECONDS_T_TYPE	__SLONGWORD_TYPE
-#define __DADDR_T_TYPE		__S32_TYPE
-#define __SWBLK_T_TYPE		__SLONGWORD_TYPE
-#define __KEY_T_TYPE		__S32_TYPE
-#define __CLOCKID_T_TYPE	__S32_TYPE
-#define __TIMER_T_TYPE		__S32_TYPE
-#define __BLKSIZE_T_TYPE	__SLONGWORD_TYPE
-#define __FSID_T_TYPE		struct { int __val[2]; }
-#define __SSIZE_T_TYPE		__SLONGWORD_TYPE
-
-/* Number of descriptors that can fit in an `fd_set'.  */
-#define	__FD_SETSIZE		1024
-
-
-#endif /* bits/typesizes.h */

	Jakub

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix binary compatibility of bits/types.h
  2003-09-08 21:44 [PATCH] Fix binary compatibility of bits/types.h Jakub Jelinek
@ 2003-09-09  0:08 ` Ulrich Drepper
  2003-09-09 19:08 ` Roland McGrath
  1 sibling, 0 replies; 9+ messages in thread
From: Ulrich Drepper @ 2003-09-09  0:08 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Glibc hackers

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Checked in.  A regression check for the name mangling is added, too.  We
just need base data for the various archs now.

- -- 
- --------------.                        ,-.            444 Castro Street
Ulrich Drepper \    ,-----------------'   \ Mountain View, CA 94041 USA
Red Hat         `--' drepper at redhat.com `---------------------------
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE/XRnQ2ijCOnn/RHQRAq4IAJ4giGveJKSR93XuzKZvb/nqLZhcdwCghG7X
/ekdcFABe4QCBeTp/ZSWpDM=
=mU+j
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix binary compatibility of bits/types.h
  2003-09-08 21:44 [PATCH] Fix binary compatibility of bits/types.h Jakub Jelinek
  2003-09-09  0:08 ` Ulrich Drepper
@ 2003-09-09 19:08 ` Roland McGrath
  1 sibling, 0 replies; 9+ messages in thread
From: Roland McGrath @ 2003-09-09 19:08 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Ulrich Drepper, Glibc hackers

> and in 2002-10-23 commit lots of types changed from long to long long
> on 64-bit arches (similarly with ul -> ull and l* -> ll*).

That was intentional on my part, removing gratuitous source differences
between 32- and 64-bit platforms.  But I was only thinking about C, where
the width of the type is the only thing that matters, not C++ where names
matter.

> My scripts were only checking
> {alpha,i386,ia64,mips32,powerpc32,powerpc64,s390,s390x,sparc,sparc64,x86_64 -m32,x86_64 -m64}-linux,
> are there any other 64-bit ports supported in glibc?

Don't think so.

> powerpc64-linux port did not exist at that time, so if we wanted to avoid
> changes to it now, we could copy the current CVS generic/bits/types.h
> to sysdeps/unix/sysv/linux/powerpc/bits/types.h, but I think it will
> be better to match other 64-bit arches.

I tend to agree, but the PPC32 and PPC64 port maintainers should say something.

Modulo port maintainers' concerns I think your changes are fine.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix binary compatibility of bits/types.h
@ 2003-09-10 20:13 Steve Munroe
  0 siblings, 0 replies; 9+ messages in thread
From: Steve Munroe @ 2003-09-10 20:13 UTC (permalink / raw)
  To: Ulrich Drepper; +Cc: Glibc hackers, Paul Mackerras, Roland McGrath

Ulrich Drepper writes:

> This is changed in the current NPTL sources.

nptl-0.58 comming soon?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix binary compatibility of bits/types.h
  2003-09-10 19:55 Steve Munroe
  2003-09-10 20:00 ` Jakub Jelinek
@ 2003-09-10 20:05 ` Ulrich Drepper
  1 sibling, 0 replies; 9+ messages in thread
From: Ulrich Drepper @ 2003-09-10 20:05 UTC (permalink / raw)
  To: Steve Munroe; +Cc: Glibc hackers, Paul Mackerras, Roland McGrath

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Steve Munroe wrote:

> Perhaps libc/Makefile can
> check scripts/c++-types-$(base-machine)-$(config-os).data and if not found 
> try scripts/c++-types-$(config-machine)-$(config-os).data?

OK, I'll try something like this.

> 
> There also seems to be a problem with pthread_t between linuxthreads and 
> nptl. pthread_t:m is OK for Linuxthreads but nplt needs 
> pthread_t:P16__opaque_pthread.

This is changed in the current NPTL sources.

- -- 
- --------------.                        ,-.            444 Castro Street
Ulrich Drepper \    ,-----------------'   \ Mountain View, CA 94041 USA
Red Hat         `--' drepper at redhat.com `---------------------------
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE/X4Pe2ijCOnn/RHQRAlfrAKCZsHhF8qIQQdyzvXmHoC/UowRd2gCgqriU
ZKnzxGpWJ76yCAXY9LMQlfE=
=M9ma
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix binary compatibility of bits/types.h
  2003-09-10 19:55 Steve Munroe
@ 2003-09-10 20:00 ` Jakub Jelinek
  2003-09-10 20:05 ` Ulrich Drepper
  1 sibling, 0 replies; 9+ messages in thread
From: Jakub Jelinek @ 2003-09-10 20:00 UTC (permalink / raw)
  To: Steve Munroe
  Cc: Ulrich Drepper, Glibc hackers, Paul Mackerras, Roland McGrath

On Wed, Sep 10, 2003 at 02:55:24PM -0500, Steve Munroe wrote:
> There also seems to be a problem with pthread_t between linuxthreads and 
> nptl. pthread_t:m is OK for Linuxthreads but nplt needs 
> pthread_t:P16__opaque_pthread.

Current NPTL has:
typedef unsigned long int pthread_t;

	Jakub

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix binary compatibility of bits/types.h
@ 2003-09-10 19:55 Steve Munroe
  2003-09-10 20:00 ` Jakub Jelinek
  2003-09-10 20:05 ` Ulrich Drepper
  0 siblings, 2 replies; 9+ messages in thread
From: Steve Munroe @ 2003-09-10 19:55 UTC (permalink / raw)
  To: Ulrich Drepper; +Cc: Glibc hackers, Paul Mackerras, Roland McGrath

Ulrich Drepper writes:

> But this is exactly what we are talking about.  Keeping the size alone
> isn't enough.  The mangled name in C++ mustn't change either.

This change does create a problem for powerpc and the new c++-types-check. 
The data file names are only qualified with $base-machine (as in 
c++-types-powerpc-linux-gnu.data) but 64-bit types will require different 
data files between powerpc32 and powerpc64. Perhaps libc/Makefile can 
check scripts/c++-types-$(base-machine)-$(config-os).data and if not found 
try scripts/c++-types-$(config-machine)-$(config-os).data?

There also seems to be a problem with pthread_t between linuxthreads and 
nptl. pthread_t:m is OK for Linuxthreads but nplt needs 
pthread_t:P16__opaque_pthread.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix binary compatibility of bits/types.h
  2003-09-09 21:28 Steve Munroe
@ 2003-09-09 21:34 ` Ulrich Drepper
  0 siblings, 0 replies; 9+ messages in thread
From: Ulrich Drepper @ 2003-09-09 21:34 UTC (permalink / raw)
  To: Steve Munroe; +Cc: Roland McGrath, Glibc hackers, Paul Mackerras

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Steve Munroe wrote:

> PPC64 builds and runs make check without error with this change. Since for 
> 
> PPC64 long and long long are the same size this is what I would expect. If 
> 
> there are problems it will be higher in the foodchain (C++). 


But this is exactly what we are talking about.  Keeping the size alone
isn't enough.  The mangled name in C++ mustn't change either.

- -- 
- --------------.                        ,-.            444 Castro Street
Ulrich Drepper \    ,-----------------'   \ Mountain View, CA 94041 USA
Red Hat         `--' drepper at redhat.com `---------------------------
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE/Xkdb2ijCOnn/RHQRAsGeAJ0fp63sUOhQdCstdbaTWksNeVC/MACcCyIR
HMD4kTPRpW+aZmW43SkNwu4=
=b3by
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix binary compatibility of bits/types.h
@ 2003-09-09 21:28 Steve Munroe
  2003-09-09 21:34 ` Ulrich Drepper
  0 siblings, 1 reply; 9+ messages in thread
From: Steve Munroe @ 2003-09-09 21:28 UTC (permalink / raw)
  To: Roland McGrath; +Cc: Ulrich Drepper, Glibc hackers, Paul Mackerras

Roland McGrath writes:

> > powerpc64-linux port did not exist at that time, so if we wanted to 
avoid
> > changes to it now, we could copy the current CVS generic/bits/types.h
> > to sysdeps/unix/sysv/linux/powerpc/bits/types.h, but I think it will
> > be better to match other 64-bit arches.

> I tend to agree, but the PPC32 and PPC64 port maintainers should say 
> something.

PPC64 builds and runs make check without error with this change. Since for 

PPC64 long and long long are the same size this is what I would expect. If 

there are problems it will be higher in the foodchain (C++). 

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2003-09-10 20:13 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-09-08 21:44 [PATCH] Fix binary compatibility of bits/types.h Jakub Jelinek
2003-09-09  0:08 ` Ulrich Drepper
2003-09-09 19:08 ` Roland McGrath
2003-09-09 21:28 Steve Munroe
2003-09-09 21:34 ` Ulrich Drepper
2003-09-10 19:55 Steve Munroe
2003-09-10 20:00 ` Jakub Jelinek
2003-09-10 20:05 ` Ulrich Drepper
2003-09-10 20:13 Steve Munroe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).