public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Fix int64_t/u_int64_t on 64-bit arches with non-GCC compilers
@ 2006-02-28 12:50 Jakub Jelinek
  2006-02-28 19:11 ` Roland McGrath
  0 siblings, 1 reply; 2+ messages in thread
From: Jakub Jelinek @ 2006-02-28 12:50 UTC (permalink / raw)
  To: Ulrich Drepper, Roland McGrath; +Cc: Glibc hackers

Hi!

On 64-bit arches and non-GCC compilers, <sys/types.h> uses long long resp.
unsigned long long types for int64_t/u_int64_t.  But, <stdint.h> uses
there long resp. unsigned long and so does <sys/types.h> for GCC
(it uses DImode int, which mangles as l rather than x).
With those compilers, depending if you include <stdint.h> or <sys/types.h>
first thus affects mangling, the same function can mangle differently
based on the order of the above headers included.

The following patch is an ABI change with those compilers, makes even
non-GCC compilers do the same as GCC (and the same as <stdint.h> already
does).

2006-02-28  Jakub Jelinek  <jakub@redhat.com>

	* posix/sys/types.h [!__GNUC_PREREQ (2, 7)] (int64_t, u_int64_t):
	typedef to long int resp. unsigned long int on 64-bit arches.

--- libc/posix/sys/types.h.jj	2002-10-24 01:48:51.000000000 +0200
+++ libc/posix/sys/types.h	2006-02-28 13:34:44.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,1992,1994,1995,1996,1997,1998,1999,2000,2001,2002
+/* Copyright (C) 1991,1992,1994,1995,1996,1997,1998,1999,2000,2001,2002,2006
    	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -163,7 +163,9 @@ typedef unsigned int uint;
 typedef	char int8_t;
 typedef	short int int16_t;
 typedef	int int32_t;
-#  if __GLIBC_HAVE_LONG_LONG
+#  if __WORDSIZE == 64
+typedef long int int64_t;
+#  elif __GLIBC_HAVE_LONG_LONG
 __extension__ typedef long long int int64_t;
 #  endif
 # endif
@@ -172,7 +174,9 @@ __extension__ typedef long long int int6
 typedef	unsigned char u_int8_t;
 typedef	unsigned short int u_int16_t;
 typedef	unsigned int u_int32_t;
-# if __GLIBC_HAVE_LONG_LONG
+# if __WORDSIZE == 64
+typedef unsigned long int u_int64_t;
+# elif __GLIBC_HAVE_LONG_LONG
 __extension__ typedef unsigned long long int u_int64_t;
 # endif
 

	Jakub

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

* Re: [PATCH] Fix int64_t/u_int64_t on 64-bit arches with non-GCC compilers
  2006-02-28 12:50 [PATCH] Fix int64_t/u_int64_t on 64-bit arches with non-GCC compilers Jakub Jelinek
@ 2006-02-28 19:11 ` Roland McGrath
  0 siblings, 0 replies; 2+ messages in thread
From: Roland McGrath @ 2006-02-28 19:11 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Ulrich Drepper, Glibc hackers

Applied.

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

end of thread, other threads:[~2006-02-28 19:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-02-28 12:50 [PATCH] Fix int64_t/u_int64_t on 64-bit arches with non-GCC compilers Jakub Jelinek
2006-02-28 19:11 ` 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).