public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* 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
  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, 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
* [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

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-10 20:13 [PATCH] Fix binary compatibility of bits/types.h Steve Munroe
  -- strict thread matches above, loose matches on Subject: below --
2003-09-10 19:55 Steve Munroe
2003-09-10 20:00 ` Jakub Jelinek
2003-09-10 20:05 ` Ulrich Drepper
2003-09-09 21:28 Steve Munroe
2003-09-09 21:34 ` Ulrich Drepper
2003-09-08 21:44 Jakub Jelinek
2003-09-09  0:08 ` Ulrich Drepper
2003-09-09 19:08 ` Roland McGrath

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).