e6a256be3cdf71a3ff800898e9a58c6b3f2f927b
[libffi.git] / patches / fix-huge_struct-on-solaris
1 Index: libffi/ChangeLog.libffi
2 ===================================================================
3 --- libffi.orig/ChangeLog.libffi
4 +++ libffi/ChangeLog.libffi
5 @@ -1,3 +1,9 @@
6 +2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
7 +
8 +       * testsuite/libffi.call/huge_struct.c (test_large_fn): Replace
9 +       format code %p with %#x because %p does not add a leading 0x on
10 +       Solaris.  Also case relevant arguments to unsigned int.
11 +
12  2009-12-26  Andreas Schwab  <schwab@linux-m68k.org>
13  
14         * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
15 Index: libffi/testsuite/libffi.call/huge_struct.c
16 ===================================================================
17 --- libffi.orig/testsuite/libffi.call/huge_struct.c
18 +++ libffi/testsuite/libffi.call/huge_struct.c
19 @@ -131,18 +131,18 @@ test_large_fn(
20                         ui64_4 + 4, si64_4 + 4, f_4 + 4, d_4 + 4, ld_4 + 4, (char*)((intptr_t)p_4 + 4), 
21                 ui8_5 + 5, si8_5 + 5};
22  
23 -       printf("%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
24 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
25 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
26 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p %hhu %hhd: "
27 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
28 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
29 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
30 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p %hhu %hhd\n",
31 -               ui8_1, si8_1, ui16_1, si16_1, ui32_1, si32_1, ui64_1, si64_1, f_1, d_1, ld_1, p_1,
32 -               ui8_2, si8_2, ui16_2, si16_2, ui32_2, si32_2, ui64_2, si64_2, f_2, d_2, ld_2, p_2,
33 -               ui8_3, si8_3, ui16_3, si16_3, ui32_3, si32_3, ui64_3, si64_3, f_3, d_3, ld_3, p_3,
34 -               ui8_4, si8_4, ui16_4, si16_4, ui32_4, si32_4, ui64_4, si64_4, f_4, d_4, ld_4, p_4, ui8_5, si8_5,
35 +       printf("%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
36 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
37 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
38 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x %hhu %hhd: "
39 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
40 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
41 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
42 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x %hhu %hhd\n",
43 +              ui8_1, si8_1, ui16_1, si16_1, ui32_1, si32_1, ui64_1, si64_1, f_1, d_1, ld_1, (unsigned int)p_1,
44 +               ui8_2, si8_2, ui16_2, si16_2, ui32_2, si32_2, ui64_2, si64_2, f_2, d_2, ld_2, (unsigned int)p_2,
45 +               ui8_3, si8_3, ui16_3, si16_3, ui32_3, si32_3, ui64_3, si64_3, f_3, d_3, ld_3, (unsigned int)p_3,
46 +               ui8_4, si8_4, ui16_4, si16_4, ui32_4, si32_4, ui64_4, si64_4, f_4, d_4, ld_4, (unsigned int)p_4, ui8_5, si8_5,
47                 retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f,
48                 retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, retVal.l,
49                 retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r,
50 @@ -298,18 +298,18 @@ main(int argc __UNUSED__, const char** a
51  
52         ffi_call(&cif, FFI_FN(test_large_fn), &retVal, argValues);
53         // { dg-output "1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
54 -       printf("res: %hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
55 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
56 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
57 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p %hhu %hhd\n",
58 +       printf("res: %hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
59 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
60 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
61 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x %hhu %hhd\n",
62                 retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f,
63 -               retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, retVal.l,
64 +              retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned int)retVal.l,
65                 retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r,
66 -               retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, retVal.x,
67 +              retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned int)retVal.x,
68                 retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd,
69 -               retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, retVal.jj,
70 +              retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned int)retVal.jj,
71                 retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp,
72 -               retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, retVal.vv, retVal.ww, retVal.xx);
73 +              retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned int)retVal.vv, retVal.ww, retVal.xx);
74         // { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
75  
76         CHECK(ffi_prep_closure_loc(pcl, &cif, cls_large_fn, NULL, code) == FFI_OK);
77 @@ -326,18 +326,18 @@ main(int argc __UNUSED__, const char** a
78                 ui8, si8, ui16, si16, ui32, si32, ui64, si64, f, d, ld, p,
79                 ui8, si8);
80         // { dg-output "\n1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2 3 4 5 6 7 8 9 10 11 0x12345678 1 2: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
81 -       printf("res: %hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
82 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
83 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p "
84 -               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %p %hhu %hhd\n",
85 +       printf("res: %hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
86 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
87 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x "
88 +               "%hhu %hhd %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#x %hhu %hhd\n",
89                 retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f,
90 -               retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, retVal.l,
91 +              retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned int)retVal.l,
92                 retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r,
93 -               retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, retVal.x,
94 +              retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned int)retVal.x,
95                 retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd,
96 -               retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, retVal.jj,
97 +              retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned int)retVal.jj,
98                 retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp,
99 -               retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, retVal.vv, retVal.ww, retVal.xx);
100 +              retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned int)retVal.vv, retVal.ww, retVal.xx);
101         // { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" }
102  
103      return 0;