// Copyright 2018 Google Inc. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /* Linux ELF: gcc -gdwarf-2 -m64 -c typedef.c && gcc -gdwarf-2 -m64 -o typedef.elf typedef.o OS X Mach-O: gcc -gdwarf-2 -m64 -c typedef.c -o typedef.macho */ #include typedef volatile int* t_ptr_volatile_int; typedef const char *t_ptr_const_char; typedef long t_long; typedef unsigned short t_ushort; typedef int t_func_int_of_float_double(float, double); typedef int (*t_ptr_func_int_of_float_double)(float, double); typedef int (*t_ptr_func_int_of_float_complex)(float complex); typedef int (*t_ptr_func_int_of_double_complex)(double complex); typedef int (*t_ptr_func_int_of_long_double_complex)(long double complex); typedef int *t_func_ptr_int_of_char_schar_uchar(char, signed char, unsigned char); typedef void t_func_void_of_char(char); typedef void t_func_void_of_void(void); typedef void t_func_void_of_ptr_char_dots(char*, ...); typedef struct my_struct { volatile int vi; char x : 1; int y : 4; int z[0]; long long array[40]; int zz[0]; } t_my_struct; typedef struct my_struct1 { int zz [1]; } t_my_struct1; typedef union my_union { volatile int vi; char x : 1; int y : 4; long long array[40]; } t_my_union; typedef enum my_enum { e1 = 1, e2 = 2, e3 = -5, e4 = 1000000000000000LL, } t_my_enum; typedef struct list t_my_list; struct list { short val; t_my_list *next; }; typedef struct tree { struct tree *left, *right; unsigned long long val; } t_my_tree; t_ptr_volatile_int *a2; t_ptr_const_char **a3a; t_long *a4; t_ushort *a5; t_func_int_of_float_double *a6; t_ptr_func_int_of_float_double *a7; t_func_ptr_int_of_char_schar_uchar *a8; t_func_void_of_char *a9; t_func_void_of_void *a10; t_func_void_of_ptr_char_dots *a11; t_my_struct *a12; t_my_struct1 *a12a; t_my_union *a12b; t_my_enum *a13; t_my_list *a14; t_my_tree *a15; t_ptr_func_int_of_float_complex *a16; t_ptr_func_int_of_double_complex *a17; t_ptr_func_int_of_long_double_complex *a18; int main() { return 0; }