📄 struct-layout-1_generate.c
字号:
/* Structure layout test generator. Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. Contributed by Jakub Jelinek <jakub@redhat.com>.This file is part of GCC.GCC is free software; you can redistribute it and/or modify it underthe terms of the GNU General Public License as published by the FreeSoftware Foundation; either version 3, or (at your option) any laterversion.GCC is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; without even the implied warranty of MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Licensefor more details.You should have received a copy of the GNU General Public Licensealong with GCC; see the file COPYING3. If not see<http://www.gnu.org/licenses/>. *//* Compile with gcc -o struct-layout-1_generate{,.c} generate_random{,_r}.c *//* N.B. -- This program cannot use libiberty as that will not work when testing an installed compiler. */#include <limits.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stddef.h>/* We use our own pseudo-random number generator, so that it gives the same values on all hosts. */#include "../../gcc.dg/compat/generate-random.h"#if LLONG_MAX != 9223372036854775807LL && __LONG_LONG_MAX__ != 9223372036854775807LL# error Need 64-bit long long#endif#if defined __MSVCRT__ #define COMPAT_PRLL "I64"#else #define COMPAT_PRLL "ll"#endiftypedef unsigned int hashval_t;enum TYPE{ TYPE_INT, TYPE_UINT, TYPE_FLOAT, TYPE_SENUM, TYPE_UENUM, TYPE_PTR, TYPE_FNPTR, TYPE_OTHER};struct types{ const char *name; enum TYPE type; unsigned long long int maxval; char bitfld;};struct types base_types[] = {/* As we don't know whether char will be signed or not, just limit ourselves to unsigned values less than maximum signed char value. */{ "char", TYPE_UINT, 127, 'C' },{ "signed char", TYPE_INT, 127, 'C' },{ "unsigned char", TYPE_UINT, 255, 'C' },{ "short int", TYPE_INT, 32767, 'S' },{ "unsigned short int", TYPE_UINT, 65535, 'S' },{ "int", TYPE_INT, 2147483647, 'I' },{ "unsigned int", TYPE_UINT, 4294967295U, 'I' },{ "long int", TYPE_INT, 9223372036854775807LL, 'L' },{ "unsigned long int", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "long long int", TYPE_INT, 9223372036854775807LL, 'Q' },{ "unsigned long long int", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "bool", TYPE_UINT, 1, 'B' },{ "void *", TYPE_PTR, 0, 0 },{ "char *", TYPE_PTR, 0, 0 },{ "int *", TYPE_PTR, 0, 0 },{ "float", TYPE_FLOAT, 0, 0 },{ "double", TYPE_FLOAT, 0, 0 },{ "long double", TYPE_FLOAT, 0, 0 },#define NTYPES1 18{ "Tchar", TYPE_UINT, 127, 'C' },{ "Tschar", TYPE_INT, 127, 'C' },{ "Tuchar", TYPE_UINT, 255, 'C' },{ "Tshort", TYPE_INT, 32767, 'S' },{ "Tushort", TYPE_UINT, 65535, 'S' },{ "Tint", TYPE_INT, 2147483647, 'I' },{ "Tuint", TYPE_UINT, 4294967295U, 'I' },{ "Tlong", TYPE_INT, 9223372036854775807LL, 'L' },{ "Tulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Tllong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Tullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Tbool", TYPE_UINT, 1, 'B' },{ "size_t", TYPE_UINT, 18446744073709551615ULL, 0 },{ "Tptr", TYPE_PTR, 0, 0 },{ "Tcptr", TYPE_PTR, 0, 0 },{ "Tiptr", TYPE_PTR, 0, 0 },{ "Tfnptr", TYPE_FNPTR, 0, 0 },{ "Tfloat", TYPE_FLOAT, 0, 0 },{ "Tdouble", TYPE_FLOAT, 0, 0 },{ "Tldouble", TYPE_FLOAT, 0, 0 },{ "enum E0", TYPE_UENUM, 0, ' ' },{ "enum E1", TYPE_UENUM, 1, ' ' },{ "enum E2", TYPE_SENUM, 3, ' ' },{ "enum E3", TYPE_SENUM, 127, ' ' },{ "enum E4", TYPE_UENUM, 255, ' ' },{ "enum E5", TYPE_SENUM, 32767, ' ' },{ "enum E6", TYPE_UENUM, 65535, ' ' },{ "enum E7", TYPE_SENUM, 2147483647, ' ' },{ "enum E8", TYPE_UENUM, 4294967295U, ' ' },{ "enum E9", TYPE_SENUM, 1099511627775LL, ' ' },{ "TE0", TYPE_UENUM, 0, ' ' },{ "TE1", TYPE_UENUM, 1, ' ' },{ "TE2", TYPE_SENUM, 3, ' ' },{ "TE3", TYPE_SENUM, 127, ' ' },{ "TE4", TYPE_UENUM, 255, ' ' },{ "TE5", TYPE_SENUM, 32767, ' ' },{ "TE6", TYPE_UENUM, 65535, ' ' },{ "TE7", TYPE_SENUM, 2147483647, ' ' },{ "TE8", TYPE_UENUM, 4294967295U, ' ' },{ "TE9", TYPE_SENUM, 1099511627775LL, ' ' },/* vector-defs.h typedefs */{ "qi", TYPE_INT, 127, 0 },{ "hi", TYPE_INT, 32767, 0 },{ "si", TYPE_INT, 2147483647, 0 },{ "di", TYPE_INT, 9223372036854775807LL, 0 },{ "sf", TYPE_FLOAT, 0, 0 },{ "df", TYPE_FLOAT, 0, 0 }#define NTYPES2 (sizeof (base_types) / sizeof (base_types[0]))};struct types vector_types[] = {/* vector-defs.h typedefs */{ "v8qi", TYPE_OTHER, 0, 0 },{ "v16qi", TYPE_OTHER, 0, 0 },{ "v2hi", TYPE_OTHER, 0, 0 },{ "v4hi", TYPE_OTHER, 0, 0 },{ "v8hi", TYPE_OTHER, 0, 0 },{ "v2si", TYPE_OTHER, 0, 0 },{ "v4si", TYPE_OTHER, 0, 0 },{ "v1di", TYPE_OTHER, 0, 0 },{ "v2di", TYPE_OTHER, 0, 0 },{ "v2sf", TYPE_OTHER, 0, 0 },{ "v4sf", TYPE_OTHER, 0, 0 },{ "v16sf", TYPE_OTHER, 0, 0 },{ "v2df", TYPE_OTHER, 0, 0 },{ "u8qi", TYPE_OTHER, 0, 0 },{ "u16qi", TYPE_OTHER, 0, 0 },{ "u2hi", TYPE_OTHER, 0, 0 },{ "u4hi", TYPE_OTHER, 0, 0 },{ "u8hi", TYPE_OTHER, 0, 0 },{ "u2si", TYPE_OTHER, 0, 0 },{ "u4si", TYPE_OTHER, 0, 0 },{ "u1di", TYPE_OTHER, 0, 0 },{ "u2di", TYPE_OTHER, 0, 0 },{ "u2sf", TYPE_OTHER, 0, 0 },{ "u4sf", TYPE_OTHER, 0, 0 },{ "u16sf", TYPE_OTHER, 0, 0 },{ "u2df", TYPE_OTHER, 0, 0 },{ "__m64", TYPE_OTHER, 0, 0 },{ "__m128", TYPE_OTHER, 0, 0 }#define NVTYPES2 (sizeof (vector_types) / sizeof (vector_types[0]))};struct types attrib_types[] = {{ "Talchar", TYPE_UINT, 127, 'C' },{ "Talschar", TYPE_INT, 127, 'C' },{ "Taluchar", TYPE_UINT, 255, 'C' },{ "Talshort", TYPE_INT, 32767, 'S' },{ "Talushort", TYPE_UINT, 65535, 'S' },{ "Talint", TYPE_INT, 2147483647, 'I' },{ "Taluint", TYPE_UINT, 4294967295U, 'I' },{ "Tallong", TYPE_INT, 9223372036854775807LL, 'L' },{ "Talulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Talllong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Talullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Talbool", TYPE_UINT, 1, 'B' },{ "Talptr", TYPE_PTR, 0, 0 },{ "Talcptr", TYPE_PTR, 0, 0 },{ "Taliptr", TYPE_PTR, 0, 0 },{ "Talfloat", TYPE_FLOAT, 0, 0 },{ "Taldouble", TYPE_FLOAT, 0, 0 },{ "Talldouble", TYPE_FLOAT, 0, 0 },{ "TalE0", TYPE_UENUM, 0, ' ' },{ "TalE1", TYPE_UENUM, 1, ' ' },{ "TalE2", TYPE_SENUM, 3, ' ' },{ "TalE3", TYPE_SENUM, 127, ' ' },{ "TalE4", TYPE_UENUM, 255, ' ' },{ "TalE5", TYPE_SENUM, 32767, ' ' },{ "TalE6", TYPE_UENUM, 65535, ' ' },{ "TalE7", TYPE_SENUM, 2147483647, ' ' },{ "TalE8", TYPE_UENUM, 4294967295U, ' ' },{ "TalE9", TYPE_SENUM, 1099511627775LL, ' ' },{ "Tal1char", TYPE_UINT, 127, 'C' },{ "Tal1schar", TYPE_INT, 127, 'C' },{ "Tal1uchar", TYPE_UINT, 255, 'C' },{ "Tal1short", TYPE_INT, 32767, 'S' },{ "Tal1ushort", TYPE_UINT, 65535, 'S' },{ "Tal1int", TYPE_INT, 2147483647, 'I' },{ "Tal1uint", TYPE_UINT, 4294967295U, 'I' },{ "Tal1long", TYPE_INT, 9223372036854775807LL, 'L' },{ "Tal1ulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Tal1llong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Tal1ullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Tal1bool", TYPE_UINT, 1, 'B' },{ "Tal1ptr", TYPE_PTR, 0, 0 },{ "Tal1cptr", TYPE_PTR, 0, 0 },{ "Tal1iptr", TYPE_PTR, 0, 0 },{ "Tal1float", TYPE_FLOAT, 0, 0 },{ "Tal1double", TYPE_FLOAT, 0, 0 },{ "Tal1ldouble", TYPE_FLOAT, 0, 0 },{ "Tal1E0", TYPE_UENUM, 0, ' ' },{ "Tal1E1", TYPE_UENUM, 1, ' ' },{ "Tal1E2", TYPE_SENUM, 3, ' ' },{ "Tal1E3", TYPE_SENUM, 127, ' ' },{ "Tal1E4", TYPE_UENUM, 255, ' ' },{ "Tal1E5", TYPE_SENUM, 32767, ' ' },{ "Tal1E6", TYPE_UENUM, 65535, ' ' },{ "Tal1E7", TYPE_SENUM, 2147483647, ' ' },{ "Tal1E8", TYPE_UENUM, 4294967295U, ' ' },{ "Tal1E9", TYPE_SENUM, 1099511627775LL, ' ' },{ "Tal2char", TYPE_UINT, 127, 'C' },{ "Tal2schar", TYPE_INT, 127, 'C' },{ "Tal2uchar", TYPE_UINT, 255, 'C' },{ "Tal2short", TYPE_INT, 32767, 'S' },{ "Tal2ushort", TYPE_UINT, 65535, 'S' },{ "Tal2int", TYPE_INT, 2147483647, 'I' },{ "Tal2uint", TYPE_UINT, 4294967295U, 'I' },{ "Tal2long", TYPE_INT, 9223372036854775807LL, 'L' },{ "Tal2ulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Tal2llong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Tal2ullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Tal2bool", TYPE_UINT, 1, 'B' },{ "Tal2ptr", TYPE_PTR, 0, 0 },{ "Tal2cptr", TYPE_PTR, 0, 0 },{ "Tal2iptr", TYPE_PTR, 0, 0 },{ "Tal2float", TYPE_FLOAT, 0, 0 },{ "Tal2double", TYPE_FLOAT, 0, 0 },{ "Tal2ldouble", TYPE_FLOAT, 0, 0 },{ "Tal2E0", TYPE_UENUM, 0, ' ' },{ "Tal2E1", TYPE_UENUM, 1, ' ' },{ "Tal2E2", TYPE_SENUM, 3, ' ' },{ "Tal2E3", TYPE_SENUM, 127, ' ' },{ "Tal2E4", TYPE_UENUM, 255, ' ' },{ "Tal2E5", TYPE_SENUM, 32767, ' ' },{ "Tal2E6", TYPE_UENUM, 65535, ' ' },{ "Tal2E7", TYPE_SENUM, 2147483647, ' ' },{ "Tal2E8", TYPE_UENUM, 4294967295U, ' ' },{ "Tal2E9", TYPE_SENUM, 1099511627775LL, ' ' },{ "Tal4char", TYPE_UINT, 127, 'C' },{ "Tal4schar", TYPE_INT, 127, 'C' },{ "Tal4uchar", TYPE_UINT, 255, 'C' },{ "Tal4short", TYPE_INT, 32767, 'S' },{ "Tal4ushort", TYPE_UINT, 65535, 'S' },{ "Tal4int", TYPE_INT, 2147483647, 'I' },{ "Tal4uint", TYPE_UINT, 4294967295U, 'I' },{ "Tal4long", TYPE_INT, 9223372036854775807LL, 'L' },{ "Tal4ulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Tal4llong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Tal4ullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Tal4bool", TYPE_UINT, 1, 'B' },{ "Tal4ptr", TYPE_PTR, 0, 0 },{ "Tal4cptr", TYPE_PTR, 0, 0 },{ "Tal4iptr", TYPE_PTR, 0, 0 },{ "Tal4float", TYPE_FLOAT, 0, 0 },{ "Tal4double", TYPE_FLOAT, 0, 0 },{ "Tal4ldouble", TYPE_FLOAT, 0, 0 },{ "Tal4E0", TYPE_UENUM, 0, ' ' },{ "Tal4E1", TYPE_UENUM, 1, ' ' },{ "Tal4E2", TYPE_SENUM, 3, ' ' },{ "Tal4E3", TYPE_SENUM, 127, ' ' },{ "Tal4E4", TYPE_UENUM, 255, ' ' },{ "Tal4E5", TYPE_SENUM, 32767, ' ' },{ "Tal4E6", TYPE_UENUM, 65535, ' ' },{ "Tal4E7", TYPE_SENUM, 2147483647, ' ' },{ "Tal4E8", TYPE_UENUM, 4294967295U, ' ' },{ "Tal4E9", TYPE_SENUM, 1099511627775LL, ' ' },{ "Tal8char", TYPE_UINT, 127, 'C' },{ "Tal8schar", TYPE_INT, 127, 'C' },{ "Tal8uchar", TYPE_UINT, 255, 'C' },{ "Tal8short", TYPE_INT, 32767, 'S' },{ "Tal8ushort", TYPE_UINT, 65535, 'S' },{ "Tal8int", TYPE_INT, 2147483647, 'I' },{ "Tal8uint", TYPE_UINT, 4294967295U, 'I' },{ "Tal8long", TYPE_INT, 9223372036854775807LL, 'L' },{ "Tal8ulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Tal8llong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Tal8ullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Tal8bool", TYPE_UINT, 1, 'B' },{ "Tal8ptr", TYPE_PTR, 0, 0 },{ "Tal8cptr", TYPE_PTR, 0, 0 },{ "Tal8iptr", TYPE_PTR, 0, 0 },{ "Tal8float", TYPE_FLOAT, 0, 0 },{ "Tal8double", TYPE_FLOAT, 0, 0 },{ "Tal8ldouble", TYPE_FLOAT, 0, 0 },{ "Tal8E0", TYPE_UENUM, 0, ' ' },{ "Tal8E1", TYPE_UENUM, 1, ' ' },{ "Tal8E2", TYPE_SENUM, 3, ' ' },{ "Tal8E3", TYPE_SENUM, 127, ' ' },{ "Tal8E4", TYPE_UENUM, 255, ' ' },{ "Tal8E5", TYPE_SENUM, 32767, ' ' },{ "Tal8E6", TYPE_UENUM, 65535, ' ' },{ "Tal8E7", TYPE_SENUM, 2147483647, ' ' },{ "Tal8E8", TYPE_UENUM, 4294967295U, ' ' },{ "Tal8E9", TYPE_SENUM, 1099511627775LL, ' ' },{ "Tal16char", TYPE_UINT, 127, 'C' },{ "Tal16schar", TYPE_INT, 127, 'C' },{ "Tal16uchar", TYPE_UINT, 255, 'C' },{ "Tal16short", TYPE_INT, 32767, 'S' },{ "Tal16ushort", TYPE_UINT, 65535, 'S' },{ "Tal16int", TYPE_INT, 2147483647, 'I' },{ "Tal16uint", TYPE_UINT, 4294967295U, 'I' },{ "Tal16long", TYPE_INT, 9223372036854775807LL, 'L' },{ "Tal16ulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Tal16llong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Tal16ullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Tal16bool", TYPE_UINT, 1, 'B' },{ "Tal16ptr", TYPE_PTR, 0, 0 },{ "Tal16cptr", TYPE_PTR, 0, 0 },{ "Tal16iptr", TYPE_PTR, 0, 0 },{ "Tal16float", TYPE_FLOAT, 0, 0 },{ "Tal16double", TYPE_FLOAT, 0, 0 },{ "Tal16ldouble", TYPE_FLOAT, 0, 0 },{ "Tal16E0", TYPE_UENUM, 0, ' ' },{ "Tal16E1", TYPE_UENUM, 1, ' ' },{ "Tal16E2", TYPE_SENUM, 3, ' ' },{ "Tal16E3", TYPE_SENUM, 127, ' ' },{ "Tal16E4", TYPE_UENUM, 255, ' ' },{ "Tal16E5", TYPE_SENUM, 32767, ' ' },{ "Tal16E6", TYPE_UENUM, 65535, ' ' },{ "Tal16E7", TYPE_SENUM, 2147483647, ' ' },{ "Tal16E8", TYPE_UENUM, 4294967295U, ' ' },{ "Tal16E9", TYPE_SENUM, 1099511627775LL, ' ' }#define NATYPES2 (sizeof (attrib_types) / sizeof (attrib_types[0]))};struct types bitfld_types[NTYPES2];int n_bitfld_types;struct types aligned_bitfld_types[NATYPES2];int n_aligned_bitfld_types;const char *attributes[] = {"atal", "atpa", "atal1", "atal2", "atal4", "atal8", "atal16", #define NATTRIBS1 7"atalpa", "atpaal", "atal1pa", "atal2pa", "atal4pa", "atal8pa", "atal16pa", "atpaal1", "atpaal2", "atpaal4", "atpaal8", "atpaal16"#define NATTRIBS2 (sizeof (attributes) / sizeof (attributes[0]))};enum ETYPE{ ETYPE_TYPE, ETYPE_ARRAY, ETYPE_BITFLD, ETYPE_STRUCT, ETYPE_UNION, ETYPE_STRUCT_ARRAY, ETYPE_UNION_ARRAY};struct entry{#ifdef __GNUC__ enum ETYPE etype : 8;#else unsigned char etype;#endif unsigned short len; unsigned char arr_len; struct types *type; const char *attrib; /* Used to chain together entries in the hash table. */ struct entry *next;};struct types attrib_array_types[] = {{ "Talx1char", TYPE_UINT, 127, 'C' },{ "Talx1schar", TYPE_INT, 127, 'C' },{ "Talx1uchar", TYPE_UINT, 255, 'C' },{ "Talx1short", TYPE_INT, 32767, 'S' },{ "Talx1ushort", TYPE_UINT, 65535, 'S' },{ "Talx1int", TYPE_INT, 2147483647, 'I' },{ "Talx1uint", TYPE_UINT, 4294967295U, 'I' },{ "Talx1long", TYPE_INT, 9223372036854775807LL, 'L' },{ "Talx1ulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Talx1llong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Talx1ullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Talx1bool", TYPE_UINT, 1, 'B' },{ "Talx1ptr", TYPE_PTR, 0, 0 },{ "Talx1cptr", TYPE_PTR, 0, 0 },{ "Talx1iptr", TYPE_PTR, 0, 0 },{ "Talx1float", TYPE_FLOAT, 0, 0 },{ "Talx1double", TYPE_FLOAT, 0, 0 },{ "Talx1ldouble", TYPE_FLOAT, 0, 0 },{ "Talx1E0", TYPE_UENUM, 0, ' ' },{ "Talx1E1", TYPE_UENUM, 1, ' ' },{ "Talx1E2", TYPE_SENUM, 3, ' ' },{ "Talx1E3", TYPE_SENUM, 127, ' ' },{ "Talx1E4", TYPE_UENUM, 255, ' ' },{ "Talx1E5", TYPE_SENUM, 32767, ' ' },{ "Talx1E6", TYPE_UENUM, 65535, ' ' },{ "Talx1E7", TYPE_SENUM, 2147483647, ' ' },{ "Talx1E8", TYPE_UENUM, 4294967295U, ' ' },{ "Talx1E9", TYPE_SENUM, 1099511627775LL, ' ' },{ "Talx2short", TYPE_INT, 32767, 'S' },{ "Talx2ushort", TYPE_UINT, 65535, 'S' },{ "Talx2int", TYPE_INT, 2147483647, 'I' },{ "Talx2uint", TYPE_UINT, 4294967295U, 'I' },{ "Talx2long", TYPE_INT, 9223372036854775807LL, 'L' },{ "Talx2ulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Talx2llong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Talx2ullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Talx2ptr", TYPE_PTR, 0, 0 },{ "Talx2cptr", TYPE_PTR, 0, 0 },{ "Talx2iptr", TYPE_PTR, 0, 0 },{ "Talx2float", TYPE_FLOAT, 0, 0 },{ "Talx2double", TYPE_FLOAT, 0, 0 },{ "Talx2ldouble", TYPE_FLOAT, 0, 0 },{ "Talx2E0", TYPE_UENUM, 0, ' ' },{ "Talx2E1", TYPE_UENUM, 1, ' ' },{ "Talx2E2", TYPE_SENUM, 3, ' ' },{ "Talx2E3", TYPE_SENUM, 127, ' ' },{ "Talx2E4", TYPE_UENUM, 255, ' ' },{ "Talx2E5", TYPE_SENUM, 32767, ' ' },{ "Talx2E6", TYPE_UENUM, 65535, ' ' },{ "Talx2E7", TYPE_SENUM, 2147483647, ' ' },{ "Talx2E8", TYPE_UENUM, 4294967295U, ' ' },{ "Talx2E9", TYPE_SENUM, 1099511627775LL, ' ' },{ "Talx4int", TYPE_INT, 2147483647, 'I' },{ "Talx4uint", TYPE_UINT, 4294967295U, 'I' },{ "Talx4long", TYPE_INT, 9223372036854775807LL, 'L' },{ "Talx4ulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Talx4llong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Talx4ullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Talx4ptr", TYPE_PTR, 0, 0 },{ "Talx4cptr", TYPE_PTR, 0, 0 },{ "Talx4iptr", TYPE_PTR, 0, 0 },{ "Talx4float", TYPE_FLOAT, 0, 0 },{ "Talx4double", TYPE_FLOAT, 0, 0 },{ "Talx4ldouble", TYPE_FLOAT, 0, 0 },{ "Talx4E0", TYPE_UENUM, 0, ' ' },{ "Talx4E1", TYPE_UENUM, 1, ' ' },{ "Talx4E2", TYPE_SENUM, 3, ' ' },{ "Talx4E3", TYPE_SENUM, 127, ' ' },{ "Talx4E4", TYPE_UENUM, 255, ' ' },{ "Talx4E5", TYPE_SENUM, 32767, ' ' },{ "Talx4E6", TYPE_UENUM, 65535, ' ' },{ "Talx4E7", TYPE_SENUM, 2147483647, ' ' },{ "Talx4E8", TYPE_UENUM, 4294967295U, ' ' },{ "Talx4E9", TYPE_SENUM, 1099511627775LL, ' ' },{ "Taly8long", TYPE_INT, 9223372036854775807LL, 'L' },{ "Taly8ulong", TYPE_UINT, 18446744073709551615ULL, 'L' },{ "Talx8llong", TYPE_INT, 9223372036854775807LL, 'Q' },{ "Talx8ullong", TYPE_UINT, 18446744073709551615ULL, 'Q' },{ "Taly8ptr", TYPE_PTR, 0, 0 },{ "Taly8cptr", TYPE_PTR, 0, 0 },{ "Taly8iptr", TYPE_PTR, 0, 0 },{ "Talx8double", TYPE_FLOAT, 0, 0 },{ "Talx8ldouble", TYPE_FLOAT, 0, 0 }#define NAATYPES2 (sizeof (attrib_array_types) / sizeof (attrib_array_types[0]))};/* A prime number giving the number of slots in the hash table. */#define HASH_SIZE 32749static struct entry *hash_table[HASH_SIZE];static int idx, limidx, output_one, short_enums;static const char *destdir;static const char *srcdir;FILE *outfile;voidswitchfiles (int fields){ static int filecnt; static char *destbuf, *destptr; ++filecnt; if (outfile) fclose (outfile); if (output_one) { outfile = stdout; return; } if (destbuf == NULL) { size_t len = strlen (destdir); destbuf = malloc (len + 20); if (!destbuf) abort (); memcpy (destbuf, destdir, len); if (!len || destbuf[len - 1] != '/') destbuf[len++] = '/'; destptr = destbuf + len; } sprintf (destptr, "t%03d_main.C", filecnt); outfile = fopen (destbuf, "w"); if (outfile == NULL) { fail: fputs ("failed to create test files\n", stderr); exit (1); } fprintf (outfile, "\/* { dg-options \"-I%s\" } */\n\/* { dg-options \"-I%s -fno-common\" { target hppa*-*-hpux* } } */\n\/* { dg-options \"-I%s -mno-base-addresses\" { target mmix-*-* } } */\n\#include \"struct-layout-1.h\"\n\\n\#define TX(n, type, attrs, fields, ops) extern void test##n (void);\n\#include \"t%03d_test.h\"\n\#undef TX\n\\n\int main (void)\n\{\n\#define TX(n, type, attrs, fields, ops) test##n ();\n\#include \"t%03d_test.h\"\n\#undef TX\n\ if (fails)\n\ {\n\ fflush (stdout);\n\ abort ();\n\ }\n\ exit (0);\n\}\n", srcdir, srcdir, srcdir, filecnt, filecnt); fclose (outfile); sprintf (destptr, "t%03d_x.C", filecnt);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -