mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-22 15:00:55 +08:00
use platform specific types in gnu_type_fix
From-SVN: r35143
This commit is contained in:
parent
038cc6b420
commit
a83b3e4f5d
@ -1,3 +1,12 @@
|
||||
2000-07-20 Bruce Korb <bkorb@gnu.org>
|
||||
|
||||
* fixincl/check.tpl: strip the platform specific types before testing
|
||||
* fixincl/fixfixes.c(gnu_type_fix): use platform specific types
|
||||
* fixincl/fixincl.tpl: use platform specific types
|
||||
* fixincl/fixlib.h: include the platform specific types
|
||||
* fixincl/inclhack.def(gnu_types): don't supply the types
|
||||
* fixincl/fixincl.x: regen
|
||||
|
||||
2000-07-19 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* config/ia64/ia64.h (HARD_REGNO_MODE_OK): Don't allow XFmode in
|
||||
|
@ -110,6 +110,18 @@ exitok=true
|
||||
|
||||
find * -type f -print > ${TESTDIR}/LIST
|
||||
|
||||
# Special hack for sys/types.h: the #define-d types for size_t,
|
||||
# ptrdiff_t and wchar_t are different for each port. Therefore,
|
||||
# strip off the defined-to type so that the test results are the
|
||||
# same for all platforms.
|
||||
#
|
||||
sed 's/\(#define __[A-Z_]*_TYPE__\).*/\1/' sys/types.h > XX
|
||||
mv -f XX sys/types.h
|
||||
|
||||
# The following subshell weirdness is for saving an exit
|
||||
# status from within a while loop that reads input. If you can
|
||||
# think of a cleaner way, suggest away, please...
|
||||
#
|
||||
exitok=`
|
||||
exec < ${TESTDIR}/LIST
|
||||
while read f
|
||||
|
@ -164,19 +164,28 @@ emit_gnu_type ( text, rm )
|
||||
/*
|
||||
* Now print out the reformed typedef
|
||||
*/
|
||||
printf ("\
|
||||
#ifndef __%s_TYPE__\n\
|
||||
#define __%s_TYPE__ %s\n\
|
||||
#endif\n",
|
||||
p_tm->pz_TYPE, p_tm->pz_TYPE, p_tm->pz_gtype );
|
||||
|
||||
printf ("\
|
||||
{
|
||||
tSCC z_fmt[] = "\
|
||||
#ifndef __%s_TYPE__\n#define __%s_TYPE__ %s\n#endif\n\
|
||||
\
|
||||
#if !defined(_GCC_%s_T)%s\n\
|
||||
#define _GCC_%s_T\n\
|
||||
typedef __%s_TYPE__ %s_t;\n\
|
||||
#endif\n",
|
||||
p_tm->pz_TYPE, p_tm->pz_cxx_guard,
|
||||
p_tm->pz_TYPE, p_tm->pz_TYPE, p_tm->pz_type);
|
||||
\
|
||||
#define _GCC_%s_T\ntypedef __%s_TYPE__ %s_t;\n#endif\n";
|
||||
|
||||
const char* pz_guard;
|
||||
|
||||
/*
|
||||
* We magically know that the first entry and only the first
|
||||
* entry needs guarding against __cplusplus (it is "wchar_t").
|
||||
* If others wind up needing similar special treatment, then
|
||||
* go look into inclhack.def. This code, obviously, works closely
|
||||
* with that file :-)
|
||||
*/
|
||||
pz_guard = (p_tm == gnu_type_map) ? " && ! defined(__cplusplus)" : "";
|
||||
printf (z_fmt, p_tm->pz_TYPE, p_tm->pz_TYPE, p_tm->pz_gtype,
|
||||
p_tm->pz_TYPE, pz_guard,
|
||||
p_tm->pz_TYPE, p_tm->pz_TYPE, p_tm->pz_type);
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
|
@ -207,19 +207,18 @@ _FOR fix ",\n" =]
|
||||
#define GNU_TYPE_CT [=_eval type_map _count =]
|
||||
int gnu_type_map_ct = GNU_TYPE_CT;
|
||||
|
||||
tSCC z_cxx_guard[] = " && !defined(__cplusplus)";
|
||||
tSCC z_nil[] = "";
|
||||
|
||||
/*
|
||||
* The following table depends upon XXX_TYPE being #define-d to the
|
||||
* correct string via defines in a header file pointed to by the
|
||||
* generated file "tm.h".
|
||||
*/
|
||||
t_gnu_type_map gnu_type_map[ GNU_TYPE_CT ] = {[=
|
||||
|
||||
_FOR type_map ,
|
||||
|
||||
=]
|
||||
{ [=_EVAL type_name _len=], "[=type_name=]", "[=type_name _up=]", "[=
|
||||
gnu_type=]", [=
|
||||
_IF cxx_type _exist =]z_cxx_guard[=
|
||||
_ELSE =]z_nil[=
|
||||
_ENDIF=] }[=
|
||||
{ [=_EVAL type_map _len=], "[=type_map=]", "[=type_map _up=]", [=
|
||||
type_map _up=]_TYPE }[=
|
||||
|
||||
/type_map=]
|
||||
};
|
||||
|
@ -5799,11 +5799,13 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
|
||||
#define GNU_TYPE_CT 3
|
||||
int gnu_type_map_ct = GNU_TYPE_CT;
|
||||
|
||||
tSCC z_cxx_guard[] = " && !defined(__cplusplus)";
|
||||
tSCC z_nil[] = "";
|
||||
|
||||
/*
|
||||
* The following table depends upon XXX_TYPE being #define-d to the
|
||||
* correct string via defines in a header file pointed to by the
|
||||
* generated file "tm.h".
|
||||
*/
|
||||
t_gnu_type_map gnu_type_map[ GNU_TYPE_CT ] = {
|
||||
{ 7, "ptrdiff", "PTRDIFF", "long int", z_nil },
|
||||
{ 4, "size", "SIZE", "long unsigned int", z_nil },
|
||||
{ 5, "wchar", "WCHAR", "int", z_cxx_guard }
|
||||
{ 5, "wchar", "WCHAR", WCHAR_TYPE },
|
||||
{ 7, "ptrdiff", "PTRDIFF", PTRDIFF_TYPE },
|
||||
{ 4, "size", "SIZE", SIZE_TYPE }
|
||||
};
|
||||
|
@ -33,6 +33,8 @@ Boston, MA 02111-1307, USA. */
|
||||
#include "machname.h"
|
||||
#include "libiberty.h"
|
||||
|
||||
#include "tm.h"
|
||||
|
||||
#ifndef STDIN_FILENO
|
||||
# define STDIN_FILENO 0
|
||||
#endif
|
||||
@ -175,7 +177,6 @@ typedef struct {
|
||||
tCC* pz_type;
|
||||
tCC* pz_TYPE;
|
||||
tCC* pz_gtype;
|
||||
tCC* pz_cxx_guard;
|
||||
} t_gnu_type_map;
|
||||
|
||||
extern int gnu_type_map_ct;
|
||||
|
@ -2520,7 +2520,13 @@ fix = {
|
||||
/*
|
||||
* Fix these files to use the same types that we think they should.
|
||||
* Each type must be present in two places: the select clause
|
||||
* and a "type_map" entry below.
|
||||
* and a "type_map" entry below. The types mapped to are found from
|
||||
* the "tm.h" header, which is a generated file that refers to
|
||||
* a header in the gcc/config/ tree. Keep these in sync!!
|
||||
*
|
||||
* Also, "wchar" is first and known to need guarding against __cplusplus.
|
||||
* Keep *that* in mind, too, when hacking the gnu_type_fix routine
|
||||
* in fixfixes.c.
|
||||
*/
|
||||
fix = {
|
||||
hackname = gnu_types;
|
||||
@ -2539,21 +2545,9 @@ fix = {
|
||||
"typedef ushort_t wchar_t; /* ushort_t */";
|
||||
};
|
||||
|
||||
type_map = {
|
||||
type_name = ptrdiff;
|
||||
gnu_type = "long int";
|
||||
};
|
||||
|
||||
type_map = {
|
||||
type_name = size;
|
||||
gnu_type = "long unsigned int";
|
||||
};
|
||||
|
||||
type_map = {
|
||||
type_name = wchar;
|
||||
gnu_type = int;
|
||||
cxx_type;
|
||||
};
|
||||
type_map = wchar;
|
||||
type_map = ptrdiff;
|
||||
type_map = size;
|
||||
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user