parameters.c revision 51d85d99f3ed74c01109b1040499c3a01f68361c
1b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink/* Ltrace Test : parameters.c. 2b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink Objectives : Verify that Ltrace can handle all the different 3b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink parameter types 4b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink 5b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink This file was written by Steve Fink <sphink@gmail.com>. */ 6b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink 7b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink#include <stdio.h> 8b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink#include <unistd.h> 9b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink#include <sys/syscall.h> 10b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink#include <sys/stat.h> 11b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink#include <errno.h> 12b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink#include <string.h> 13b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink#include <stdlib.h> 14b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink 15b2c254573fbf30189293be6b7f2ef307c499704cSteve Finkvoid func_intptr(int *i); 16b2c254573fbf30189293be6b7f2ef307c499704cSteve Finkvoid func_intptr_ret(int *i); 17b2c254573fbf30189293be6b7f2ef307c499704cSteve Finkint func_strlen(char*); 18b2c254573fbf30189293be6b7f2ef307c499704cSteve Finkvoid func_strfixed(char*); 19b2c254573fbf30189293be6b7f2ef307c499704cSteve Finkvoid func_ppp(int***); 20b2c254573fbf30189293be6b7f2ef307c499704cSteve Finkvoid func_stringp(char**); 216fa27c330f9e07c5be553614b9c6e2f08461780fSteve Finkvoid func_short(short, short); 226fa27c330f9e07c5be553614b9c6e2f08461780fSteve Finkvoid func_ushort(unsigned short, unsigned short); 231607793a00298f9d5a857dac73de2dd6a6510725Petr Machatafloat func_float(float, float); 241607793a00298f9d5a857dac73de2dd6a6510725Petr Machatadouble func_double(double, double); 251150bc4b812f0150e832607b8724b023d6d7d575Steve Finkvoid func_arrayi(int*, int); 261150bc4b812f0150e832607b8724b023d6d7d575Steve Finkvoid func_arrayf(float*, int); 27e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Finkvoid func_struct(void*); 28b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink 296a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Finktypedef enum { 306a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink RED, 316a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink GREEN, 326a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink BLUE, 336a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink CHARTREUSE, 346a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink PETUNIA 356a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink} color_t; 366a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Finkvoid func_enum(color_t); 37e22411dd33d2d55fd5c6510390954f13fd502d3aSteve Finkvoid func_typedef(color_t); 386a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink 391bcd05943ebff28c1537d61d584c7f874d963d27Petr Machatavoid func_work(char *x); 401bcd05943ebff28c1537d61d584c7f874d963d27Petr Machatavoid func_call(char *x, char *y, void (*cb)(char *)); 41280f829ca87ff6b6c3a242a97fcef01d4488d2c8Petr Machata 421bcd05943ebff28c1537d61d584c7f874d963d27Petr Machatavoid 431bcd05943ebff28c1537d61d584c7f874d963d27Petr Machatacall_func_work (char *x) 441bcd05943ebff28c1537d61d584c7f874d963d27Petr Machata{ 451bcd05943ebff28c1537d61d584c7f874d963d27Petr Machata func_work(x); 461bcd05943ebff28c1537d61d584c7f874d963d27Petr Machata} 471bcd05943ebff28c1537d61d584c7f874d963d27Petr Machata 481bcd05943ebff28c1537d61d584c7f874d963d27Petr Machataint 49b2c254573fbf30189293be6b7f2ef307c499704cSteve Finkmain () 50b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink{ 51b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink int x = 17; 52b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink int *xP, **xPP; 53b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink char buf[200]; 54b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink char *s; 551150bc4b812f0150e832607b8724b023d6d7d575Steve Fink int *ai; 561150bc4b812f0150e832607b8724b023d6d7d575Steve Fink float *af; 576a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink 58b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink func_intptr(&x); 596a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink 60b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink func_intptr_ret(&x); 616a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink 62b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata func_string("zero\0xxxxxxxxxxxxxx"); 63b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink func_strlen(buf); 64b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink printf("%s\n", buf); 656a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink 66b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink func_strfixed(buf); 67b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink printf("%s\n", buf); 686a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink 69b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink x = 80; 70b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink xP = &x; 71b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink xPP = &xP; 72b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink func_ppp(&xPP); 736a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink 74b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink s = (char*) malloc(100); 75b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink strcpy(s, "Dude"); 76b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink func_stringp(&s); 776a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink 786a3e24dc1709530e59dd6ae3e91ced1c221fe1b9Steve Fink func_enum(BLUE); 796fa27c330f9e07c5be553614b9c6e2f08461780fSteve Fink 806fa27c330f9e07c5be553614b9c6e2f08461780fSteve Fink func_short(-8, -9); 816fa27c330f9e07c5be553614b9c6e2f08461780fSteve Fink func_ushort(33, 34); 821607793a00298f9d5a857dac73de2dd6a6510725Petr Machata float f = func_float(3.4, -3.4); 831607793a00298f9d5a857dac73de2dd6a6510725Petr Machata double d = func_double(3.4, -3.4); 846fa27c330f9e07c5be553614b9c6e2f08461780fSteve Fink 85e22411dd33d2d55fd5c6510390954f13fd502d3aSteve Fink func_typedef(BLUE); 86e22411dd33d2d55fd5c6510390954f13fd502d3aSteve Fink 871150bc4b812f0150e832607b8724b023d6d7d575Steve Fink ai = (int*) calloc(sizeof(int), 8); 881150bc4b812f0150e832607b8724b023d6d7d575Steve Fink for (x = 0; x < 8; x++) 891150bc4b812f0150e832607b8724b023d6d7d575Steve Fink ai[x] = 10 + x; 901150bc4b812f0150e832607b8724b023d6d7d575Steve Fink func_arrayi(ai, 8); 911150bc4b812f0150e832607b8724b023d6d7d575Steve Fink func_arrayi(ai, 2); 921150bc4b812f0150e832607b8724b023d6d7d575Steve Fink 931150bc4b812f0150e832607b8724b023d6d7d575Steve Fink af = (float*) calloc(sizeof(float), 8); 941150bc4b812f0150e832607b8724b023d6d7d575Steve Fink for (x = 0; x < 8; x++) 951150bc4b812f0150e832607b8724b023d6d7d575Steve Fink af[x] = 10.1 + x; 961150bc4b812f0150e832607b8724b023d6d7d575Steve Fink func_arrayf(af, 8); 971150bc4b812f0150e832607b8724b023d6d7d575Steve Fink func_arrayf(af, 2); 981150bc4b812f0150e832607b8724b023d6d7d575Steve Fink 99e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink { 100e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink struct { 101e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink int simple; 102e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink int alen; 103e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink int slen; 104e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink struct { int a; int b; }* array; 105e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink struct { int a; int b; } seq[3]; 106e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink char* str; 107e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink } x; 108e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink 109e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.simple = 89; 110e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink 111e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.alen = 2; 112e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.array = malloc(800); 113e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.array[0].a = 1; 114e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.array[0].b = 10; 115e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.array[1].a = 3; 116e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.array[1].b = 30; 117e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink 118e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.seq[0].a = 4; 119e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.seq[0].b = 40; 120e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.seq[1].a = 5; 121e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.seq[1].b = 50; 122e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.seq[2].a = 6; 123e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.seq[2].b = 60; 124e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink 125e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.slen = 3; 126e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink x.str = "123junk"; 127e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink 128e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink func_struct(&x); 129e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink } 130e4b3263fb2b32eb5ee0f693fc223ed8c363fbd69Steve Fink 131280f829ca87ff6b6c3a242a97fcef01d4488d2c8Petr Machata { 132280f829ca87ff6b6c3a242a97fcef01d4488d2c8Petr Machata char x[10] = {}; 133280f829ca87ff6b6c3a242a97fcef01d4488d2c8Petr Machata char y[10] = {}; 1341bcd05943ebff28c1537d61d584c7f874d963d27Petr Machata func_call(x, y, call_func_work); 135280f829ca87ff6b6c3a242a97fcef01d4488d2c8Petr Machata } 136280f829ca87ff6b6c3a242a97fcef01d4488d2c8Petr Machata 137b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata struct S2 { 138b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata float f; 139b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata char a; 140b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata char b; 141b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata }; 142b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata struct S3 { 143b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata char a[6]; 144b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata float f; 145b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata }; 146b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata struct S2 func_struct_2(int, struct S3 s3, double d); 147b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata func_struct_2(17, (struct S3){ "ABCDE", 0.25 }, 0.5); 148b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 149b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata struct S4 { 150b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata long a; 151b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata long b; 152b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata long c; 153b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata long d; 154b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata }; 155b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata struct S4 func_struct_large(struct S4 a, struct S4 b); 156b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata func_struct_large((struct S4){ 1, 2, 3, 4 }, (struct S4){ 5, 6, 7, 8 }); 157b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 158b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata struct S5 { 159b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata char a; 160b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata char b; 161b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata long c; 162b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata long d; 163b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata }; 164b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata struct S5 func_struct_large2(struct S5 a, struct S5 b); 165b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata func_struct_large2((struct S5){ '0', '1', 3, 4 }, (struct S5){ '2', '3', 7, 8 }); 166b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 167b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata struct S6 { 168b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata long a; 169b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata long b; 170b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata char c; 171b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata char d; 172b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata }; 173b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata struct S6 func_struct_large3(struct S6 a, struct S6 b); 174b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata func_struct_large3((struct S6){ 3, 4, '0', '1' }, (struct S6){ 7, 8 ,'2', '3' }); 175b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 176b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata void func_many_args(int a, int b, long c, double d, char e, int f, float g, 177b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata char h, int i, double j, int k, double l, char m, int n, 178b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata short o, int p, char q, float r, float s, double t, 179b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata long u, float v, float w, float x, float y); 180b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata func_many_args(1, 2, 3, 4.0, '5', 6, 7.0, 181b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata '8', 9, 10.0, 11, 12.0, 'A', 14, 182b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 15, 16, 'B', 18.0, 19.0, 20.0, 183b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 21, 22.0, 23.0, 24.0, 25.0); 184b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 185b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata printf("sotnuh %d %ld %g %c\n", 5, 6L, 1.5, 'X'); 186b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata printf("sotnuh1 %d %ld %hd\n", 5, 6L, (short)7); 187b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata printf("sotnuh2 %s %10s %10s\n", "a string", "a trimmed string", "short"); 188b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata printf("many_args" 189b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata "%d %d %ld %g %c %d %g " 190b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata "%c %d %g %d %g %c %d " 191b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata "%hd %d %c %g %g %g " 192b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata "%ld %g %g %g %g", 19351d85d99f3ed74c01109b1040499c3a01f68361cEdgar E. Iglesias 1, 2, 3L, 4.0, '5', 6, 7.0, 194b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata '8', 9, 10.0, 11, 12.0, 'A', 14, 195b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata (short)15, 16, 'B', 18.0, 19.0, 20.0, 196b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 21L, 22.0, 23.0, 24.0, 25.0); 197b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 198b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata printf("sotnuh3 %*s\n", 4, "a trimmed string"); 199b77f778eda200e0dc1c481e2f7dc5ff322147bd7Petr Machata 200ce034981e2880eecb8a196c78182dfb4ae67850fPetr Machata void func_lens(int, long, short, long); 201ce034981e2880eecb8a196c78182dfb4ae67850fPetr Machata func_lens(22, 23, 24, 25); 202ce034981e2880eecb8a196c78182dfb4ae67850fPetr Machata 203e3f4a984db115979e09414b7281da98399dd8949Petr Machata int func_bool(int a, int b); 204e3f4a984db115979e09414b7281da98399dd8949Petr Machata func_bool(1, 10); 205e3f4a984db115979e09414b7281da98399dd8949Petr Machata func_bool(2, 0); 206e3f4a984db115979e09414b7281da98399dd8949Petr Machata 207e3f4a984db115979e09414b7281da98399dd8949Petr Machata void func_hide(int a, int b, int c, int d, int e, int f); 208e3f4a984db115979e09414b7281da98399dd8949Petr Machata func_hide(1, 2, 3, 4, 5, 6); 209e3f4a984db115979e09414b7281da98399dd8949Petr Machata 210c07a26a8d0f86bc4137eb7b7fea8bbf9021275f1Petr Machata enum ab { A, B }; 211c07a26a8d0f86bc4137eb7b7fea8bbf9021275f1Petr Machata long *func_short_enums(short abs[]); 212c07a26a8d0f86bc4137eb7b7fea8bbf9021275f1Petr Machata func_short_enums((short[]){ A, B, A, A }); 213c07a26a8d0f86bc4137eb7b7fea8bbf9021275f1Petr Machata 214c07a26a8d0f86bc4137eb7b7fea8bbf9021275f1Petr Machata long func_negative_enum(short a, unsigned short b, int c, unsigned d, 215c07a26a8d0f86bc4137eb7b7fea8bbf9021275f1Petr Machata long e, unsigned long f); 216c07a26a8d0f86bc4137eb7b7fea8bbf9021275f1Petr Machata func_negative_enum(-1, -1, -1, -1, -1, -1); 217c07a26a8d0f86bc4137eb7b7fea8bbf9021275f1Petr Machata 218e3f4a984db115979e09414b7281da98399dd8949Petr Machata void func_charp_string(char *p); 219e3f4a984db115979e09414b7281da98399dd8949Petr Machata func_charp_string("null-terminated string"); 220e3f4a984db115979e09414b7281da98399dd8949Petr Machata 221df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct dbl_eqv1 { double d; }; 222df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct dbl_eqv2 { struct dbl_eqv1 d; }; 223df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct dbl_eqv3 { struct dbl_eqv2 d; }; 224df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct dbl_eqv4 { struct dbl_eqv3 d; }; 225df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata 226df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct flt_eqv1 { float d; }; 227df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct flt_eqv2 { struct flt_eqv1 d; }; 228df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct flt_eqv3 { struct flt_eqv2 d; }; 229df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct flt_eqv4 { struct flt_eqv3 d; }; 230df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata 231df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct dbl_eqv1 func_dbl_eqv(struct dbl_eqv1 a, struct dbl_eqv2 b, 232df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct dbl_eqv3 c, struct dbl_eqv4 d); 233df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata func_dbl_eqv((struct dbl_eqv1){ 2.5 }, 234df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata (struct dbl_eqv2){ { 1.5 } }, 235df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata (struct dbl_eqv3){ { { 0.5 } } }, 236df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata (struct dbl_eqv4){ { { { -0.5 } } } }); 237df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata 238df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct flt_eqv1 func_flt_eqv(struct flt_eqv1 a, struct flt_eqv2 b, 239df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata struct flt_eqv3 c, struct flt_eqv4 d); 240df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata func_flt_eqv((struct flt_eqv1){ 2.5 }, 241df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata (struct flt_eqv2){ { 1.5 } }, 242df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata (struct flt_eqv3){ { { 0.5 } } }, 243df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata (struct flt_eqv4){ { { { -0.5 } } } }); 244df3e3ce40c5dd3459bb365b684b78d8b1b94c1ecPetr Machata 245a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_empty {}; 246a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_empty func_struct_empty(struct struct_empty e); 247a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata func_struct_empty((struct struct_empty) {}); 248a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata 249a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_size1 { char a; }; 250a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_size1 func_struct_size1(struct struct_size1 e); 251a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata func_struct_size1((struct struct_size1){ '5' }); 252a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata 253a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_size2 { short a; }; 254a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_size2 func_struct_size2(struct struct_size2 e); 255a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata func_struct_size2((struct struct_size2){ 5 }); 256a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata 257a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_size4 { int a; }; 258a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_size4 func_struct_size4(struct struct_size4 e); 259a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata func_struct_size4((struct struct_size4){ 5 }); 260a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata 261a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_size8 { int a; int b; }; 262a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata struct struct_size8 func_struct_size8(struct struct_size8 e); 263a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata func_struct_size8((struct struct_size8){ 5, 6 }); 264a81af7c2f7691c1eeb801b7756b13899b79d7568Petr Machata 265248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata /* Test Itanium Homogeneous Floating-point Aggregates. */ 266248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 267248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f2 { float a; struct flt_eqv1 b; }; 268248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f2 func_hfa_f2(struct struct_hfa_f2 e); 269248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f2((struct struct_hfa_f2){ 1, { 2 } }); 270248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 271248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f3 { float a; struct struct_hfa_f2 b; }; 272248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f3 func_hfa_f3(struct struct_hfa_f3 e); 273248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f3((struct struct_hfa_f3){ 3, { 1, { 2 } } }); 274248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 275248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f4 { float a; struct struct_hfa_f3 b; }; 276248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f4 func_hfa_f4(struct struct_hfa_f4 e); 277248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f4((struct struct_hfa_f4){ 4, { 3, { 1, { 2 } } } }); 278248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 279248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f5 { float a; struct struct_hfa_f4 b; }; 280248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f5 func_hfa_f5(struct struct_hfa_f5 e); 281248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f5((struct struct_hfa_f5){ 5, { 4, { 3, { 1, { 2 } } } } }); 282248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 283248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f6 { float a; struct struct_hfa_f5 b; }; 284248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f6 func_hfa_f6(struct struct_hfa_f6 e); 285248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f6((struct struct_hfa_f6){ 6, { 5, { 4, { 3, { 1, { 2 } } } } } }); 286248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 287248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f7 { float a; struct struct_hfa_f6 b; }; 288248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f7 func_hfa_f7(struct struct_hfa_f7 e); 289248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f7((struct struct_hfa_f7){ 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } }); 290248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 291248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f8 { float a; struct struct_hfa_f7 b; }; 292248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f8 func_hfa_f8(struct struct_hfa_f8 e); 293248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f8((struct struct_hfa_f8){ 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } }); 294248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 295248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f9 { float a; struct struct_hfa_f8 b; }; 296248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f9 func_hfa_f9(struct struct_hfa_f9 e); 297248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f9((struct struct_hfa_f9){ 9, { 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } } }); 298248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 299248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f10 { float a; struct struct_hfa_f9 b; }; 300248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f10 func_hfa_f10(struct struct_hfa_f10 e); 301248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f10((struct struct_hfa_f10){ 10, { 9, { 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } } } }); 302248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 303248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f11 { float a; struct struct_hfa_f10 b; }; 304248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f11 func_hfa_f11(struct struct_hfa_f11 e); 305248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f11((struct struct_hfa_f11){ 11, { 10, { 9, { 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } } } } }); 306248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 307248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f12 { float a; struct struct_hfa_f11 b; }; 308248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_f12 func_hfa_f12(struct struct_hfa_f12 e); 309248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_f12((struct struct_hfa_f12){ 12, { 11, { 10, { 9, { 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } } } } } }); 310248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 311248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 312248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d2 { double a; struct dbl_eqv1 b; }; 313248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d2 func_hfa_d2(struct struct_hfa_d2 e); 314248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d2((struct struct_hfa_d2){ 1, { 2 } }); 315248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 316248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d3 { double a; struct struct_hfa_d2 b; }; 317248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d3 func_hfa_d3(struct struct_hfa_d3 e); 318248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d3((struct struct_hfa_d3){ 3, { 1, { 2 } } }); 319248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 320248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d4 { double a; struct struct_hfa_d3 b; }; 321248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d4 func_hfa_d4(struct struct_hfa_d4 e); 322248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d4((struct struct_hfa_d4){ 4, { 3, { 1, { 2 } } } }); 323248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 324248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d5 { double a; struct struct_hfa_d4 b; }; 325248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d5 func_hfa_d5(struct struct_hfa_d5 e); 326248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d5((struct struct_hfa_d5){ 5, { 4, { 3, { 1, { 2 } } } } }); 327248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 328248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d6 { double a; struct struct_hfa_d5 b; }; 329248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d6 func_hfa_d6(struct struct_hfa_d6 e); 330248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d6((struct struct_hfa_d6){ 6, { 5, { 4, { 3, { 1, { 2 } } } } } }); 331248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 332248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d7 { double a; struct struct_hfa_d6 b; }; 333248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d7 func_hfa_d7(struct struct_hfa_d7 e); 334248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d7((struct struct_hfa_d7){ 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } }); 335248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 336248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d8 { double a; struct struct_hfa_d7 b; }; 337248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d8 func_hfa_d8(struct struct_hfa_d8 e); 338248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d8((struct struct_hfa_d8){ 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } }); 339248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 340248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d9 { double a; struct struct_hfa_d8 b; }; 341248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d9 func_hfa_d9(struct struct_hfa_d9 e); 342248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d9((struct struct_hfa_d9){ 9, { 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } } }); 343248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 344248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d10 { double a; struct struct_hfa_d9 b; }; 345248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d10 func_hfa_d10(struct struct_hfa_d10 e); 346248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d10((struct struct_hfa_d10){ 10, { 9, { 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } } } }); 347248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 348248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d11 { double a; struct struct_hfa_d10 b; }; 349248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d11 func_hfa_d11(struct struct_hfa_d11 e); 350248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d11((struct struct_hfa_d11){ 11, { 10, { 9, { 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } } } } }); 351248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 352248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d12 { double a; struct struct_hfa_d11 b; }; 353248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata struct struct_hfa_d12 func_hfa_d12(struct struct_hfa_d12 e); 354248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata func_hfa_d12((struct struct_hfa_d12){ 12, { 11, { 10, { 9, { 8, { 7, { 6, { 5, { 4, { 3, { 1, { 2 } } } } } } } } } } } }); 355248db7bc5d3e095da23b64f9afb0643ca64977efPetr Machata 3566fa27c330f9e07c5be553614b9c6e2f08461780fSteve Fink return 0; 357b2c254573fbf30189293be6b7f2ef307c499704cSteve Fink} 358