This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
(Broken) stdint.h support for FreeBSD
- From: Gerald Pfeifer <gerald at pfeifer dot com>
- To: gcc-patches at gcc dot gnu dot org, "Loren J. Rittle" <ljrittle at acm dot org>, "Joseph S. Myers" <joseph at codesourcery dot com>
- Date: Sat, 30 May 2009 12:42:21 +0200 (CEST)
- Subject: (Broken) stdint.h support for FreeBSD
As I had promised, here is a patch to add stdint.h support for FreeBSD.
The tree has been a bit shaky when I originally developed this, but sadly
even now that everything else is stable, bootstrap still fails for me:
checking for suffix of object files... configure: error: in
`/usr/nabil-files/pfeifer/OBJ-0530-1137/i386-unknown-freebsd7.1/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
gmake[2]: *** [configure-stage1-target-libgcc] Error 1
gmake[2]: Leaving directory `/usr/nabil-files/pfeifer/OBJ-0530-1137'
What happens here is that $OBJDIR/./cc1 segfaults. I have a hunch I
must be missing the obvious. :-( Does any of you see what might be
wrong here?
Gerald
2009-05-17 Gerald Pfeifer <gerald@pfeifer.com>
* config/freebsd-stdint.h: New file.
* config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
Add freebsd-stdint.h to tm_file.
Index: config.gcc
===================================================================
--- config.gcc (revision 148000)
+++ config.gcc (working copy)
@@ -475,7 +475,8 @@
exit 1
;;
esac
- fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h"
+ fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
+ use_gcc_stdint=wrap
;;
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
Index: config/freebsd-stdint.h
===================================================================
--- config/freebsd-stdint.h (revision 0)
+++ config/freebsd-stdint.h (revision 0)
@@ -0,0 +1,56 @@
+/* Definitions for <stdint.h> types for FreeBSD systems.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+ Contributed by Gerald Pfeifer <gerald@pfeifer.com>.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC 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 General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+#define SIG_ATOMIC_TYPE "int"
+
+#define INT8_TYPE "signed char"
+#define INT16_TYPE "short"
+#define INT32_TYPE "int"
+#define INT64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
+#define UINT8_TYPE "unsigned char"
+#define UINT16_TYPE "short unsigned"
+#define UINT32_TYPE "unsigned int"
+#define UINT64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
+
+#define INT_LEAST8_TYPE "signed char"
+#define INT_LEAST16_TYPE "short"
+#define INT_LEAST32_TYPE "int"
+#define INT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
+#define UINT_LEAST8_TYPE "unsigned char"
+#define UINT_LEAST16_TYPE "short unsigned"
+#define UINT_LEAST32_TYPE "unsigned int"
+#define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
+
+#define INT_FAST8_TYPE "int"
+#define INT_FAST16_TYPE "int"
+#define INT_FAST32_TYPE "int"
+#define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
+#define UINT_FAST8_TYPE "unsigned int"
+#define UINT_FAST16_TYPE "unsigned int"
+#define UINT_FAST32_TYPE "unsigned int"
+#define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
+
+#define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
+#define UINTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")