1 |
commit: 35167b3faba4a431156102e48c2375d3c036a40b |
2 |
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Aug 21 20:10:11 2012 +0000 |
4 |
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Aug 21 20:10:11 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-gccpatchset.git;a=commit;h=35167b3f |
7 |
|
8 |
update the testsuite patches |
9 |
|
10 |
--- |
11 |
upstream/testsuite-hardening-format.patch | 87 ++++ |
12 |
upstream/testsuite-hardening-printf-types.patch | 590 +++++++++++++++++++++++ |
13 |
upstream/testsuite.patch | 9 + |
14 |
upstream/testsuite_no_espf.patch | 98 ++++ |
15 |
4 files changed, 784 insertions(+), 0 deletions(-) |
16 |
|
17 |
diff --git a/upstream/testsuite-hardening-format.patch b/upstream/testsuite-hardening-format.patch |
18 |
new file mode 100644 |
19 |
index 0000000..3b9583d |
20 |
--- /dev/null |
21 |
+++ b/upstream/testsuite-hardening-format.patch |
22 |
@@ -0,0 +1,87 @@ |
23 |
+--- a/gcc/testsuite/gcc.dg/charset/builtin2.c |
24 |
++++ b/gcc/testsuite/gcc.dg/charset/builtin2.c |
25 |
+@@ -4,6 +4,7 @@ |
26 |
+ /* { dg-do compile } */ |
27 |
+ /* { dg-require-iconv "IBM1047" } */ |
28 |
+ /* { dg-options "-O2 -fexec-charset=IBM1047" } */ |
29 |
++/* { dg-additional-options "-Wno-format" { target espf } } */ |
30 |
+ /* { dg-final { scan-assembler-not "printf" } } */ |
31 |
+ /* { dg-final { scan-assembler-not "fprintf" } } */ |
32 |
+ /* { dg-final { scan-assembler-not "sprintf" } } */ |
33 |
+--- a/gcc/testsuite/gcc.dg/format/format.exp |
34 |
++++ b/gcc/testsuite/gcc.dg/format/format.exp |
35 |
+@@ -24,9 +24,16 @@ if [is_remote host] { |
36 |
+ |
37 |
+ load_lib gcc-dg.exp |
38 |
+ load_lib torture-options.exp |
39 |
++load_lib target-supports.exp |
40 |
+ |
41 |
+ torture-init |
42 |
+-set-torture-options [list { } { -DWIDE } ] |
43 |
++ |
44 |
++# Disable -Wformat if we use espf. |
45 |
++if [check_effective_target_espf] { |
46 |
++ set-torture-options [list { -Wno-format } { -DWIDE -Wno-format } ] |
47 |
++} else { |
48 |
++ set-torture-options [list { } { -DWIDE } ] |
49 |
++} |
50 |
+ |
51 |
+ dg-init |
52 |
+ gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" |
53 |
+ |
54 |
+--- a/gcc/testsuite/gcc.dg/pr30473.c |
55 |
++++ b/gcc/testsuite/gcc.dg/pr30473.c |
56 |
+@@ -2,6 +2,7 @@ |
57 |
+ /* Make sure this doesn't ICE. */ |
58 |
+ /* { dg-do compile } */ |
59 |
+ /* { dg-options "-O2" } */ |
60 |
++/* { dg-additional-options "Wno-format" { target espf } } */ |
61 |
+ |
62 |
+ extern int sprintf (char *, const char *, ...); |
63 |
+ |
64 |
+--- a/gcc/testsuite/gcc.dg/pr38902.c |
65 |
++++ b/gcc/testsuite/gcc.dg/pr38902.c |
66 |
+@@ -2,6 +2,7 @@ |
67 |
+ /* { dg-do run } */ |
68 |
+ /* { dg-options "-O2 -fstack-protector" } */ |
69 |
+ /* { dg-require-effective-target fstack_protector } */ |
70 |
++/* { dg-additional-options "Wno-format" { target espf } } */ |
71 |
+ |
72 |
+ #ifdef DEBUG |
73 |
+ #include <stdio.h> |
74 |
+--- a/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c 2010-09-10 01:38:23.000000000 +0200 |
75 |
++++b/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c 2012-07-31 14:37:53.238554197 +0200 |
76 |
+@@ -1,5 +1,6 @@ |
77 |
+ /* { dg-do run } */ |
78 |
+ /* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details" } */ |
79 |
++/* { dg-additional-options "-Wno-format" { target espf } } */ |
80 |
+ |
81 |
+ struct bovid |
82 |
+ { |
83 |
+--- a/gcc/testsuite/gcc.dg/torture/tls/tls-test.c 2011-06-22 19:27:07.000000000 +0200 |
84 |
++++ b/gcc/testsuite/gcc.dg/torture/tls/tls-test.c 2012-07-31 14:40:00.411552986 +0200 |
85 |
+@@ -1,7 +1,8 @@ |
86 |
+ /* { dg-require-effective-target tls } */ |
87 |
+ /* { dg-require-effective-target pthread } */ |
88 |
+ /* { dg-options "-pthread" } */ |
89 |
++/* { dg-additional-options "-Wno-format" { target espf } } */ |
90 |
+ |
91 |
+ #include <pthread.h> |
92 |
+ extern int printf (char *,...); |
93 |
+--- a/gcc/testsuite/g++.dg/abi/pragma-pack1.C 2011-06-07 23:54:07.000000000 +0200 |
94 |
++++ b/gcc/testsuite/g++.dg/abi/pragma-pack1.C 2012-08-16 17:49:19.472877085 +0200 |
95 |
+@@ -1,4 +1,5 @@ |
96 |
+ // PR c++/7046 |
97 |
++// { dg-additional-options "-Wno-format" { target espf } } |
98 |
+ |
99 |
+ extern "C" int printf (const char *, ...); |
100 |
+ |
101 |
+--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C 2012-08-16 17:41:19.486862781 +0200 |
102 |
++++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C 2012-08-16 17:38:38.000000000 +0200 |
103 |
+@@ -1,5 +1,6 @@ |
104 |
+ // PR c++/53202 |
105 |
+ // { dg-do run { target c++11 } } |
106 |
++// { dg-additional-options "-Wno-format" { target espf } } |
107 |
+ |
108 |
+ #include <tuple> |
109 |
+ |
110 |
|
111 |
diff --git a/upstream/testsuite-hardening-printf-types.patch b/upstream/testsuite-hardening-printf-types.patch |
112 |
new file mode 100644 |
113 |
index 0000000..4fa6b5d |
114 |
--- /dev/null |
115 |
+++ b/upstream/testsuite-hardening-printf-types.patch |
116 |
@@ -0,0 +1,590 @@ |
117 |
+--- a/gcc/testsuite/g++.dg/ext/align1.C 2002-02-06 17:18:33.000000000 +0100 |
118 |
++++ b/gcc/testsuite/g++.dg/ext/align1.C 2012-08-11 02:14:51.533875779 +0200 |
119 |
+@@ -16,6 +16,5 @@ float f1 __attribute__ ((aligned)); |
120 |
+ int |
121 |
+ main (void) |
122 |
+ { |
123 |
+- printf ("%d %d\n", __alignof (a1), __alignof (f1)); |
124 |
+ return (__alignof (a1) < __alignof (f1)); |
125 |
+ } |
126 |
+ |
127 |
+--- a/gcc/testsuite/g++.old-deja/g++.law/operators28.C |
128 |
++++ b/gcc/testsuite/g++.old-deja/g++.law/operators28.C |
129 |
+@@ -14,7 +14,8 @@ |
130 |
+ { |
131 |
+ void *p; |
132 |
+ |
133 |
+- printf("%d %d %d\n", sz, count, type); |
134 |
++ // ISO C++ does not support format size modifier "z", so use a cast |
135 |
++ printf("%u %d %d\n", (unsigned int)sz, count, type); |
136 |
+ |
137 |
+ p = new char[sz * count]; |
138 |
+ ((new_test *)p)->type = type; |
139 |
+--- a/gcc/testsuite/gcc.dg/torture/matrix-2.c |
140 |
++++ b/gcc/testsuite/gcc.dg/torture/matrix-2.c |
141 |
+@@ -42,7 +42,7 @@ |
142 |
+ } |
143 |
+ for (i = 0; i < ARCHnodes; i++) |
144 |
+ for (j = 0; j < 3; j++) |
145 |
+- printf ("%x\n",vel[i][j]); |
146 |
++ printf ("%p\n",vel[i][j]); |
147 |
+ /*if (i!=1 || j!=1)*/ |
148 |
+ /*if (i==1 && j==1) |
149 |
+ continue; |
150 |
+@@ -83,14 +83,14 @@ |
151 |
+ for (j = 0; j < 3; j++) |
152 |
+ { |
153 |
+ vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int)); |
154 |
+- printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int)); |
155 |
++ printf ("%p %d %d\n",vel[i][j], ARCHnodes1, (int)sizeof (int)); |
156 |
+ } |
157 |
+ } |
158 |
+ for (i = 0; i < ARCHnodes; i++) |
159 |
+ { |
160 |
+ for (j = 0; j < 3; j++) |
161 |
+ { |
162 |
+- printf ("%x\n",vel[i][j]); |
163 |
++ printf ("%p\n",vel[i][j]); |
164 |
+ } |
165 |
+ } |
166 |
+ |
167 |
+@@ -99,7 +99,7 @@ |
168 |
+ { |
169 |
+ for (j = 0; j < 3; j++) |
170 |
+ { |
171 |
+- printf ("%x\n",vel[i][j]); |
172 |
++ printf ("%p\n",vel[i][j]); |
173 |
+ /*for (k = 0; k < ARCHnodes1; k++) |
174 |
+ { |
175 |
+ vel[i][j][k] = d; |
176 |
+--- a/gcc/testsuite/gcc.dg/packed-vla.c |
177 |
++++ b/gcc/testsuite/gcc.dg/packed-vla.c |
178 |
+@@ -17,8 +17,8 @@ |
179 |
+ int b[4]; |
180 |
+ } __attribute__ ((__packed__)) foo; |
181 |
+ |
182 |
+- printf("foo %d\n", sizeof(foo)); |
183 |
+- printf("bar %d\n", sizeof(bar)); |
184 |
++ printf("foo %d\n", (int)sizeof(foo)); |
185 |
++ printf("bar %d\n", (int)sizeof(bar)); |
186 |
+ |
187 |
+ if (sizeof (foo) != sizeof (bar)) |
188 |
+ abort (); |
189 |
+--- a/gcc/testsuite/g++.dg/opt/alias2.C |
190 |
++++ b/gcc/testsuite/g++.dg/opt/alias2.C |
191 |
+@@ -30,14 +30,14 @@ |
192 |
+ |
193 |
+ |
194 |
+ _Deque_base::~_Deque_base() { |
195 |
+- printf ("bb %x %x\n", this, *_M_start._M_node); |
196 |
++ printf ("bb %p %x\n", this, *_M_start._M_node); |
197 |
+ } |
198 |
+ |
199 |
+ void |
200 |
+ _Deque_base::_M_initialize_map() |
201 |
+ { |
202 |
+ yy = 0x123; |
203 |
+- printf ("aa %x %x\n", this, yy); |
204 |
++ printf ("aa %p %x\n", this, yy); |
205 |
+ |
206 |
+ _M_start._M_node = &yy; |
207 |
+ _M_start._M_cur = yy; |
208 |
+--- a/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C |
209 |
++++ b/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C |
210 |
+@@ -33,7 +33,7 @@ |
211 |
+ void Offset () const |
212 |
+ { |
213 |
+ printf ("VBase\n"); |
214 |
+- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); |
215 |
++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); |
216 |
+ } |
217 |
+ }; |
218 |
+ |
219 |
+@@ -55,8 +55,8 @@ |
220 |
+ void Offset () const |
221 |
+ { |
222 |
+ printf ("VDerived\n"); |
223 |
+- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); |
224 |
+- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); |
225 |
++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); |
226 |
++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); |
227 |
+ } |
228 |
+ }; |
229 |
+ struct B : virtual VBase |
230 |
+@@ -65,8 +65,8 @@ |
231 |
+ void Offset () const |
232 |
+ { |
233 |
+ printf ("B\n"); |
234 |
+- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); |
235 |
+- printf (" B::member %d\n", &this->B::member - (int *)this); |
236 |
++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); |
237 |
++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); |
238 |
+ } |
239 |
+ }; |
240 |
+ struct MostDerived : B, virtual VDerived |
241 |
+@@ -75,10 +75,10 @@ |
242 |
+ void Offset () const |
243 |
+ { |
244 |
+ printf ("MostDerived\n"); |
245 |
+- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); |
246 |
+- printf (" B::member %d\n", &this->B::member - (int *)this); |
247 |
+- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); |
248 |
+- printf (" MostDerived::member %d\n", &this->MostDerived::member - (int *)this); |
249 |
++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); |
250 |
++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); |
251 |
++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); |
252 |
++ printf (" MostDerived::member %d\n", (int)(&this->MostDerived::member - (int *)this)); |
253 |
+ } |
254 |
+ }; |
255 |
+ |
256 |
+@@ -95,10 +95,10 @@ |
257 |
+ if (ctorVDerived != &dum.VDerived::member) |
258 |
+ return 24; |
259 |
+ |
260 |
+- printf (" VBase::member %d\n", &dum.VBase::member - this_); |
261 |
+- printf (" B::member %d\n", &dum.B::member - this_); |
262 |
+- printf (" VDerived::member %d\n", &dum.VDerived::member - this_); |
263 |
+- printf (" MostDerived::member %d\n", &dum.MostDerived::member - this_); |
264 |
++ printf (" VBase::member %d\n", (int)(&dum.VBase::member - this_)); |
265 |
++ printf (" B::member %d\n", (int)(&dum.B::member - this_)); |
266 |
++ printf (" VDerived::member %d\n", (int)(&dum.VDerived::member - this_)); |
267 |
++ printf (" MostDerived::member %d\n", (int)(&dum.MostDerived::member - this_)); |
268 |
+ dum.MostDerived::Offset (); |
269 |
+ dum.B::Offset (); |
270 |
+ dum.VDerived::Offset (); |
271 |
+--- a/gcc/testsuite/g++.old-deja/g++.brendan/template8.C |
272 |
++++ b/gcc/testsuite/g++.old-deja/g++.brendan/template8.C |
273 |
+@@ -15,6 +15,6 @@ |
274 |
+ |
275 |
+ Double_alignt<20000> heap; |
276 |
+ |
277 |
+- printf(" &heap.array[0] = %d, &heap.for_alignt = %d\n", &heap.array[0], &heap.for_alignt); |
278 |
++ printf(" &heap.array[0] = %p, &heap.for_alignt = %p\n", (void*)&heap.array[0], (void*)&heap.for_alignt); |
279 |
+ |
280 |
+ } |
281 |
+--- a/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C |
282 |
++++ b/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C |
283 |
+@@ -16,7 +16,7 @@ |
284 |
+ } |
285 |
+ |
286 |
+ catch (E *&e) { |
287 |
+- printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e); |
288 |
++ printf ("address of e is %p\n", (void *)e); |
289 |
+ return !((__SIZE_TYPE__)e != 5 && e->x == 5); |
290 |
+ } |
291 |
+ return 2; |
292 |
+--- a/gcc/testsuite/g++.old-deja/g++.jason/access23.C |
293 |
++++ b/gcc/testsuite/g++.old-deja/g++.jason/access23.C |
294 |
+@@ -42,19 +42,19 @@ |
295 |
+ void DoSomething() { |
296 |
+ PUB_A = 0; |
297 |
+ Foo::A = 0; |
298 |
+- printf("%x\n",pX); |
299 |
++ printf("%p\n",pX); |
300 |
+ Foo::PUB.A = 0; |
301 |
+- printf("%x\n",PUB.pX); |
302 |
++ printf("%p\n",PUB.pX); |
303 |
+ B = 0; |
304 |
+- printf("%x\n",Foo::pY); |
305 |
++ printf("%p\n",Foo::pY); |
306 |
+ PRT_A = 0; |
307 |
+ PRT.B = 0; |
308 |
+- printf("%x\n",Foo::PRT.pY); |
309 |
++ printf("%p\n",Foo::PRT.pY); |
310 |
+ PRV_A = 0; // { dg-error "" } |
311 |
+ Foo::C = 0; // { dg-error "" } |
312 |
+- printf("%x\n",pZ); // { dg-error "" } |
313 |
++ printf("%p\n",pZ); // { dg-error "" } |
314 |
+ Foo::PRV.C = 0; // { dg-error "" } |
315 |
+- printf("%x\n",PRV.pZ); // { dg-error "" } |
316 |
++ printf("%p\n",PRV.pZ); // { dg-error "" } |
317 |
+ } |
318 |
+ }; |
319 |
+ |
320 |
+@@ -64,17 +64,17 @@ |
321 |
+ |
322 |
+ a.PUB_A = 0; |
323 |
+ a.A = 0; |
324 |
+- printf("%x\n",a.pX); |
325 |
++ printf("%p\n",a.pX); |
326 |
+ a.PRT_A = 0; // { dg-error "" } |
327 |
+ a.B = 0; // { dg-error "" } |
328 |
+- printf("%x\n",a.pY); // { dg-error "" } |
329 |
++ printf("%p\n",a.pY); // { dg-error "" } |
330 |
+ a.PRV_A = 0; // { dg-error "" } |
331 |
+ a.C = 0; // { dg-error "" } |
332 |
+- printf("%x\n",a.pZ); // { dg-error "" } |
333 |
++ printf("%p\n",a.pZ); // { dg-error "" } |
334 |
+ a.PUB.A = 0; |
335 |
+- printf("%x\n",a.PUB.pX); |
336 |
++ printf("%p\n",a.PUB.pX); |
337 |
+ a.PRT.B = 0; // { dg-error "" } |
338 |
+- printf("%x\n",a.PRT.pY); // { dg-error "" } |
339 |
++ printf("%p\n",a.PRT.pY); // { dg-error "" } |
340 |
+ a.PRV.C = 0; // { dg-error "" } |
341 |
+- printf("%x\n",a.PRV.pZ); // { dg-error "" } |
342 |
++ printf("%p\n",a.PRV.pZ); // { dg-error "" } |
343 |
+ } |
344 |
+--- a/gcc/testsuite/g++.old-deja/g++.law/cvt8.C |
345 |
++++ b/gcc/testsuite/g++.old-deja/g++.law/cvt8.C |
346 |
+@@ -20,12 +20,12 @@ |
347 |
+ B::operator const A&() const { |
348 |
+ static A a; |
349 |
+ a.i = i; |
350 |
+- printf("convert B to A at %x\n", &a); |
351 |
++ printf("convert B to A at %p\n", (void*)&a); |
352 |
+ return a; |
353 |
+ } |
354 |
+ |
355 |
+ void f(A &a) { // { dg-error "" } in passing argument |
356 |
+- printf("A at %x is %d\n", &a, a.i); |
357 |
++ printf("A at %p is %d\n", (void*)&a, a.i); |
358 |
+ } |
359 |
+ |
360 |
+ int main() { |
361 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/net35.C |
362 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/net35.C |
363 |
+@@ -17,10 +17,10 @@ |
364 |
+ |
365 |
+ int main() { |
366 |
+ C c; |
367 |
+- printf("&c.x = %x\n", &c.x); |
368 |
+- printf("&c.B1::x = %x\n", &c.B1::x); |
369 |
+- printf("&c.B2::x = %x\n", &c.B2::x); |
370 |
+- printf("&c.A::x = %x\n", &c.A::x); |
371 |
++ printf("&c.x = %p\n", (void*)&c.x); |
372 |
++ printf("&c.B1::x = %p\n", (void*)&c.B1::x); |
373 |
++ printf("&c.B2::x = %p\n", (void*)&c.B2::x); |
374 |
++ printf("&c.A::x = %p\n", (void*)&c.A::x); |
375 |
+ if (&c.x != &c.B1::x |
376 |
+ || &c.x != &c.B2::x |
377 |
+ || &c.x != &c.A::x) |
378 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/offset1.C |
379 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/offset1.C |
380 |
+@@ -6,7 +6,7 @@ |
381 |
+ class Foo { |
382 |
+ public: |
383 |
+ virtual void setName() { |
384 |
+- printf("Foo at %x\n", this); |
385 |
++ printf("Foo at %p\n", (void*)this); |
386 |
+ if (vp != (void*)this) |
387 |
+ fail = 1; |
388 |
+ } |
389 |
+@@ -15,7 +15,7 @@ |
390 |
+ class Bar : public Foo { |
391 |
+ public: |
392 |
+ virtual void init(int argc, char **argv) { |
393 |
+- printf("Bar's Foo at %x\n", (Foo*)this); |
394 |
++ printf("Bar's Foo at %p\n", (void*)(Foo*)this); |
395 |
+ vp = (void*)(Foo*)this; |
396 |
+ setName(); |
397 |
+ } |
398 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/p12306.C |
399 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/p12306.C |
400 |
+@@ -18,7 +18,7 @@ |
401 |
+ if (ptr2 != &(*this).slist) |
402 |
+ fail = 6; |
403 |
+ |
404 |
+- if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist); |
405 |
++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)this, (void*)&(*this).slist); |
406 |
+ } |
407 |
+ }; |
408 |
+ |
409 |
+@@ -54,14 +54,14 @@ |
410 |
+ void Sim_Event_Manager::post_event () { |
411 |
+ ptr1 = (RWSlistIterator*)&last_posted_event_position_; |
412 |
+ ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist; |
413 |
+- if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_, |
414 |
+- &((RWSlistIterator*)&last_posted_event_position_)->slist); |
415 |
++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, |
416 |
++ (void*)&((RWSlistIterator*)&last_posted_event_position_)->slist); |
417 |
+ if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) |
418 |
+ fail = 1; |
419 |
+ if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) |
420 |
+ fail = 2; |
421 |
+- if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_, |
422 |
+- &((RWSlistIterator&)last_posted_event_position_).slist); |
423 |
++ if (0) printf("at %p ?%p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, |
424 |
++ (void*)&((RWSlistIterator&)last_posted_event_position_).slist); |
425 |
+ if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) |
426 |
+ fail = 3; |
427 |
+ if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) |
428 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/p3579.C |
429 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/p3579.C |
430 |
+@@ -7,26 +7,26 @@ |
431 |
+ |
432 |
+ class Y { |
433 |
+ public: |
434 |
+- Y () { printf("Y() this: %x\n", this); } |
435 |
+- ~Y () { printf("~Y() this: %x\n", this); } |
436 |
++ Y () { printf("Y() this: %p\n", (void*)this); } |
437 |
++ ~Y () { printf("~Y() this: %p\n", (void*)this); } |
438 |
+ }; |
439 |
+ |
440 |
+ class X { |
441 |
+ public: |
442 |
+ X () { |
443 |
+ ++num_x; |
444 |
+- printf("X() this: %x\n", this); |
445 |
++ printf("X() this: %p\n", (void*)this); |
446 |
+ Y y; |
447 |
+ *this = (X) y; |
448 |
+ } |
449 |
+ |
450 |
+- X (const Y & yy) { printf("X(const Y&) this: %x\n", this); ++num_x; } |
451 |
++ X (const Y & yy) { printf("X(const Y&) this: %p\n", (void*)this); ++num_x; } |
452 |
+ X & operator = (const X & xx) { |
453 |
+- printf("X.op=(X&) this: %x\n", this); |
454 |
++ printf("X.op=(X&) this: %p\n", (void*)this); |
455 |
+ return *this; |
456 |
+ } |
457 |
+ |
458 |
+- ~X () { printf("~X() this: %x\n", this); --num_x; } |
459 |
++ ~X () { printf("~X() this: %p\n", (void*)this); --num_x; } |
460 |
+ }; |
461 |
+ |
462 |
+ int main (int, char **) { |
463 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C |
464 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C |
465 |
+@@ -38,7 +38,7 @@ |
466 |
+ virtual void xx(int doit) { |
467 |
+ --num; |
468 |
+ if (ptr != this) |
469 |
+- printf("FAIL\n%x != %x\n", ptr, this); |
470 |
++ printf("FAIL\n%p != %p\n", ptr, (void*)this); |
471 |
+ printf ("C is destructed.\n"); |
472 |
+ B::xx (0); |
473 |
+ if (doit) A::xx (1); |
474 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C |
475 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C |
476 |
+@@ -48,7 +48,7 @@ |
477 |
+ virtual void xx(int doit) { |
478 |
+ --num; |
479 |
+ if (ptr != this) { |
480 |
+- printf("FAIL\n%x != %x\n", ptr, this); |
481 |
++ printf("FAIL\n%p != %p\n", ptr, (void*)this); |
482 |
+ exit(1); |
483 |
+ } |
484 |
+ printf ("D is destructed.\n"); |
485 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/p3708.C |
486 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/p3708.C |
487 |
+@@ -38,7 +38,7 @@ |
488 |
+ virtual void xx(int doit) { |
489 |
+ --num; |
490 |
+ if (ptr != this) |
491 |
+- printf("FAIL\n%x != %x\n", ptr, this); |
492 |
++ printf("FAIL\n%p != %p\n", ptr, (void*)this); |
493 |
+ printf ("C is destructed.\n"); |
494 |
+ B::xx (0); |
495 |
+ if (doit) A::xx (1); |
496 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/p646.C |
497 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/p646.C |
498 |
+@@ -35,20 +35,20 @@ |
499 |
+ foo::foo () |
500 |
+ { |
501 |
+ si++; |
502 |
+- printf ("new foo @ 0x%x; now %d foos\n", this, si); |
503 |
++ printf ("new foo @ %p; now %d foos\n", (void*)this, si); |
504 |
+ } |
505 |
+ |
506 |
+ foo::foo (const foo &other) |
507 |
+ { |
508 |
+ si++; |
509 |
+- printf ("another foo @ 0x%x; now %d foos\n", this, si); |
510 |
++ printf ("another foo @ %p; now %d foos\n", (void*)this, si); |
511 |
+ *this = other; |
512 |
+ } |
513 |
+ |
514 |
+ foo::~foo () |
515 |
+ { |
516 |
+ si--; |
517 |
+- printf ("deleted foo @ 0x%x; now %d foos\n", this, si); |
518 |
++ printf ("deleted foo @ %p; now %d foos\n", (void*)this, si); |
519 |
+ } |
520 |
+ |
521 |
+ int |
522 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/p710.C |
523 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/p710.C |
524 |
+@@ -30,7 +30,7 @@ |
525 |
+ virtual ~B() {} |
526 |
+ void operator delete(void*,size_t s) |
527 |
+ { |
528 |
+- printf("B::delete() %d\n",s); |
529 |
++ printf("B::delete() %u\n",(unsigned int)s); |
530 |
+ } |
531 |
+ void operator delete(void*){} |
532 |
+ }; |
533 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/p789a.C |
534 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/p789a.C |
535 |
+@@ -13,10 +13,10 @@ |
536 |
+ int x; |
537 |
+ foo () { |
538 |
+ x = count++; |
539 |
+- printf("this %d = %x\n", x, (void *)this); |
540 |
++ printf("this %d = %p\n", x, (void *)this); |
541 |
+ } |
542 |
+ virtual ~foo () { |
543 |
+- printf("this %d = %x\n", x, (void *)this); |
544 |
++ printf("this %d = %p\n", x, (void *)this); |
545 |
+ --count; |
546 |
+ } |
547 |
+ }; |
548 |
+@@ -31,7 +31,7 @@ |
549 |
+ { |
550 |
+ for (int j = 0; j < 3; j++) |
551 |
+ { |
552 |
+- printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]); |
553 |
++ printf("&a[%d][%d] = %p\n", i, j, (void *)&array[i][j]); |
554 |
+ } |
555 |
+ } |
556 |
+ // The count should be nine, if not, fail the test. |
557 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C |
558 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C |
559 |
+@@ -42,7 +42,7 @@ |
560 |
+ bar jar; |
561 |
+ |
562 |
+ int main() { |
563 |
+- printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b); |
564 |
++ printf("ptr to B_table=%p, ptr to A_table=%p\n",(void*)&b,(void*)(A_table*)&b); |
565 |
+ B_table::B_ti_fn z = &B_table::func1; |
566 |
+ int j = 1; |
567 |
+ jar.call_fn_fn1(j,(void *)&z); |
568 |
+--- a/gcc/testsuite/g++.old-deja/g++.mike/temp.C |
569 |
++++ b/gcc/testsuite/g++.old-deja/g++.mike/temp.C |
570 |
+@@ -7,11 +7,11 @@ |
571 |
+ public: |
572 |
+ T() { |
573 |
+ i = 1; |
574 |
+- printf("T() at %x\n", this); |
575 |
++ printf("T() at %p\n", (void*)this); |
576 |
+ } |
577 |
+ T(const T& o) { |
578 |
+ i = o.i; |
579 |
+- printf("T(const T&) at %x <-- %x\n", this, &o); |
580 |
++ printf("T(const T&) at %p <-- %p\n", (void*)this, (void*)&o); |
581 |
+ } |
582 |
+ T operator +(const T& o) { |
583 |
+ T r; |
584 |
+@@ -21,7 +21,7 @@ |
585 |
+ operator int () { |
586 |
+ return i; |
587 |
+ } |
588 |
+- ~T() { printf("~T() at %x\n", this); } |
589 |
++ ~T() { printf("~T() at %p\n", (void*)this); } |
590 |
+ } s, b; |
591 |
+ |
592 |
+ int foo() { return getenv("TEST") == 0; } |
593 |
+--- a/gcc/testsuite/g++.old-deja/g++.other/temporary1.C |
594 |
++++ b/gcc/testsuite/g++.old-deja/g++.other/temporary1.C |
595 |
+@@ -5,16 +5,16 @@ |
596 |
+ class Foo |
597 |
+ { |
598 |
+ public: |
599 |
+- Foo() { printf("Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++c; } |
600 |
+- Foo(Foo const &) { printf("Foo(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } |
601 |
+- ~Foo() { printf("~Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++d; } |
602 |
++ Foo() { printf("Foo() %p\n", (void*)this); ++c; } |
603 |
++ Foo(Foo const &) { printf("Foo(Foo const &) %p\n", (void*)this); } |
604 |
++ ~Foo() { printf("~Foo() %p\n", (void*)this); ++d; } |
605 |
+ }; |
606 |
+ |
607 |
+ // Bar creates constructs a temporary Foo() as a default |
608 |
+ class Bar |
609 |
+ { |
610 |
+ public: |
611 |
+- Bar(Foo const & = Foo()) { printf("Bar(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } |
612 |
++ Bar(Foo const & = Foo()) { printf("Bar(Foo const &) %p\n", (void*)this); } |
613 |
+ }; |
614 |
+ |
615 |
+ void fakeRef(Bar *) |
616 |
+--- a/gcc/testsuite/g++.old-deja/g++.other/virtual8.C |
617 |
++++ b/gcc/testsuite/g++.old-deja/g++.other/virtual8.C |
618 |
+@@ -4,7 +4,7 @@ |
619 |
+ struct A |
620 |
+ { |
621 |
+ virtual void f () { |
622 |
+- printf ("%x\n", this); |
623 |
++ printf ("%p\n", (void*)this); |
624 |
+ } |
625 |
+ }; |
626 |
+ |
627 |
+--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C |
628 |
++++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C |
629 |
+@@ -13,7 +13,7 @@ |
630 |
+ |
631 |
+ template <class U> |
632 |
+ void f(U u) |
633 |
+- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } |
634 |
++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } |
635 |
+ |
636 |
+ int c[16]; |
637 |
+ }; |
638 |
+--- agcc/testsuite/g++.old-deja/g++.pt/memtemp24.C |
639 |
++++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C |
640 |
+@@ -13,7 +13,7 @@ |
641 |
+ |
642 |
+ template <class U> |
643 |
+ void f(U u) |
644 |
+- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } |
645 |
++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } |
646 |
+ |
647 |
+ int c[16]; |
648 |
+ }; |
649 |
+--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C |
650 |
++++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C |
651 |
+@@ -6,7 +6,7 @@ |
652 |
+ struct S |
653 |
+ { |
654 |
+ template <class U> |
655 |
+- void f(U u) { printf ("%d\n", sizeof (U)); } |
656 |
++ void f(U u) { printf ("%d\n", (int)sizeof (U)); } |
657 |
+ |
658 |
+ int i[4]; |
659 |
+ }; |
660 |
+--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C |
661 |
++++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C |
662 |
+@@ -16,7 +16,7 @@ |
663 |
+ template <class U> |
664 |
+ void S<X>::f(U u) |
665 |
+ { |
666 |
+- printf ("%d\n", sizeof (U)); |
667 |
++ printf ("%d\n", (int)sizeof (U)); |
668 |
+ } |
669 |
+ |
670 |
+ |
671 |
+--- a/gcc/testsuite/g++.old-deja/g++.pt/t39.C |
672 |
++++ b/gcc/testsuite/g++.old-deja/g++.pt/t39.C |
673 |
+@@ -10,9 +10,9 @@ |
674 |
+ |
675 |
+ template <class T> |
676 |
+ void frob<T>::print () { |
677 |
+- printf ("this = %08x\n", this); |
678 |
+- printf (" ptr = %08x\n", ptr); |
679 |
+- printf (" values = %x %x %x ...\n", ptr[0], ptr[1], ptr[2]); |
680 |
++ printf ("this = %p\n", (void*)this); |
681 |
++ printf (" ptr = %p\n", (void*)ptr); |
682 |
++ printf (" values = %x %x %x ...\n", (int)ptr[0], (int)ptr[1], (int)ptr[2]); |
683 |
+ } |
684 |
+ |
685 |
+ static int x[10]; |
686 |
+--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C |
687 |
++++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C |
688 |
+@@ -44,15 +44,15 @@ |
689 |
+ A * a = new B; |
690 |
+ B * b = dynamic_cast<B *>(a); |
691 |
+ |
692 |
+- printf("%p\n",b); // (*2*) |
693 |
++ printf("%p\n",(void*)b); // (*2*) |
694 |
+ b->print(); |
695 |
+ |
696 |
+ a = b; |
697 |
+- printf("%p\n",a); |
698 |
++ printf("%p\n",(void*)a); |
699 |
+ a->print(); |
700 |
+ |
701 |
+ a = a->clone(); |
702 |
+- printf("%p\n",a); |
703 |
++ printf("%p\n",(void*)a); |
704 |
+ a->print(); // (*1*) |
705 |
+ |
706 |
+ return 0; |
707 |
|
708 |
diff --git a/upstream/testsuite.patch b/upstream/testsuite.patch |
709 |
index 50d06e5..82456cc 100644 |
710 |
--- a/upstream/testsuite.patch |
711 |
+++ b/upstream/testsuite.patch |
712 |
@@ -15,6 +15,15 @@ |
713 |
# Return 1 if this target supports the -fsplit-stack option, 0 |
714 |
# otherwise. |
715 |
|
716 |
+--- a/gcc/testsuite/gcc.c-torture/execute/memset-1.x 2012-08-18 14:43:31.963694252 +0200 |
717 |
++++ b/gcc/testsuite/gcc.c-torture/execute/memset-1.x 2012-07-27 21:47:01.000000000 +0200 |
718 |
+@@ -0,0 +1,6 @@ |
719 |
++load_lib target-supports.exp |
720 |
++ |
721 |
++if { [check_effective_target_espf] } { |
722 |
++ set additional_flags "-U_FORTIFY_SOURCE" |
723 |
++} |
724 |
++return 0 |
725 |
--- a/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x 2012-07-30 02:31:20.573793905 +0200 |
726 |
+++ b/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x 2012-07-27 21:47:01.574480025 +0200 |
727 |
@@ -0,0 +1,6 @@ |
728 |
|
729 |
diff --git a/upstream/testsuite_no_espf.patch b/upstream/testsuite_no_espf.patch |
730 |
new file mode 100644 |
731 |
index 0000000..8991a69 |
732 |
--- /dev/null |
733 |
+++ b/upstream/testsuite_no_espf.patch |
734 |
@@ -0,0 +1,98 @@ |
735 |
+--- a/gcc/testsuite/gcc.dg/20021014-1.c 2009-10-02 01:08:07.000000000 +0200 |
736 |
++++ b/gcc/testsuite/gcc.dg/20021014-1.c 2012-08-14 23:50:16.724373103 +0200 |
737 |
+@@ -1,6 +1,7 @@ |
738 |
+ /* { dg-do run } */ |
739 |
+ /* { dg-require-profiling "-p" } */ |
740 |
+ /* { dg-options "-O2 -p" } */ |
741 |
++/* { dg-additional-options "-fno-PIE" { target espf } } */ |
742 |
+ /* { dg-options "-O2 -p -static" { target hppa*-*-hpux* } } */ |
743 |
+ /* { dg-error "profiler" "No profiler support" { target xstormy16-*-* } 0 } */ |
744 |
+ /* { dg-message "" "consider using `-pg' instead of `-p' with gprof(1)" { target *-*-freebsd* } 0 } */ |
745 |
+--- a/gcc/testsuite/gcc.dg/nest.c 2007-08-30 07:23:02.000000000 +0200 |
746 |
++++ b/gcc/testsuite/gcc.dg/nest.c 2012-08-14 23:51:44.797375728 +0200 |
747 |
+@@ -3,6 +3,7 @@ |
748 |
+ /* { dg-require-profiling "-pg" } */ |
749 |
+ /* { dg-options "-O2 -pg" } */ |
750 |
+ /* { dg-options "-O2 -pg -static" { target hppa*-*-hpux* } } */ |
751 |
++/* { dg-additional-options "-fno-PIE" { target espf } } */ |
752 |
+ /* { dg-error "profiler" "No profiler support" { target xstormy16-*-* } 0 } */ |
753 |
+ |
754 |
+ extern void abort (void); |
755 |
+--- a/gcc/testsuite/gcc.dg/nested-func-4.c 2007-08-30 07:23:02.000000000 +0200 |
756 |
++++ b/gcc/testsuite/gcc.dg/nested-func-4.c 2012-08-14 23:52:23.337376877 +0200 |
757 |
+@@ -1,6 +1,7 @@ |
758 |
+ /* { dg-do run } */ |
759 |
+ /* { dg-options "-pg" } */ |
760 |
+ /* { dg-options "-pg -static" { target hppa*-*-hpux* } } */ |
761 |
++/* { dg-additional-options "-fno-PIE" { target espf } } */ |
762 |
+ /* { dg-require-profiling "-pg" } */ |
763 |
+ |
764 |
+ extern void abort(void); |
765 |
+--- a/gcc/testsuite/gcc.dg/pr32450.c 2007-08-30 07:23:02.000000000 +0200 |
766 |
++++ b/gcc/testsuite/gcc.dg/pr32450.c 2012-08-14 23:53:38.125379106 +0200 |
767 |
+@@ -5,6 +5,7 @@ |
768 |
+ /* { dg-options "-O2 -pg" } */ |
769 |
+ /* { dg-options "-O2 -pg -mtune=core2" { target { i?86-*-* x86_64-*-* } } } */ |
770 |
+ /* { dg-options "-O2 -pg -static" { target hppa*-*-hpux* } } */ |
771 |
++/* { dg-additional-options "-fno-PIE" { target espf } } */ |
772 |
+ |
773 |
+ extern void abort (void); |
774 |
+ |
775 |
+--- a/gcc/testsuite/gcc.dg/pr43643.c 2010-04-14 18:47:15.000000000 +0200 |
776 |
++++ b/gcc/testsuite/gcc.dg/pr43643.c 2012-08-14 23:54:20.084380356 +0200 |
777 |
+@@ -4,6 +4,7 @@ |
778 |
+ /* { dg-require-profiling "-pg" } */ |
779 |
+ /* { dg-options "-O2 -pg" } */ |
780 |
+ /* { dg-options "-O2 -pg -static" { target hppa*-*-hpux* } } */ |
781 |
++/* { dg-additional-options "-fno-PIE" { target espf } } */ |
782 |
+ |
783 |
+ extern char *strdup (const char *); |
784 |
+ |
785 |
+--- a/gcc.dg/tree-ssa/ssa-store-ccp-3.c 2011-08-07 09:45:57.000000000 +0200 |
786 |
++++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-3.c 2012-08-14 23:59:24.489389427 +0200 |
787 |
+@@ -3,6 +3,7 @@ |
788 |
+ defined for executables as well as shared libraries. */ |
789 |
+ /* { dg-skip-if "" { *-*-darwin* hppa*64*-*-* mips*-*-linux* mips*-*-irix* *-*-mingw* } { "*" } { "" } } */ |
790 |
+ /* { dg-options "-O2 -fno-common -fdump-tree-optimized" } */ |
791 |
++/* { dg-skip-if "" { espf } { "*" } { "" } } */ */ |
792 |
+ |
793 |
+ const int conststaticvariable; |
794 |
+ |
795 |
+--- a/gcc/testsuite/gcc.dg/stack-usage-1.c 2012-02-23 19:10:53.000000000 +0100 |
796 |
++++ b/gcc/testsuite/gcc.dg/stack-usage-1.c 2012-08-14 23:55:37.558382664 +0200 |
797 |
+@@ -1,5 +1,6 @@ |
798 |
+ /* { dg-do compile } */ |
799 |
+ /* { dg-options "-fstack-usage" } */ |
800 |
++/* { dg-additional-options "-fno-stack-protector" { target espf } } */ |
801 |
+ |
802 |
+ /* This is aimed at testing basic support for -fstack-usage in the back-ends. |
803 |
+ See the SPARC back-end for example (grep flag_stack_usage_info in sparc.c). |
804 |
+--- a/gcc/testsuite/gcc.dg/superblock.c 2012-08-15 00:28:32.995441532 +0200 |
805 |
++++ b/gcc/testsuite/gcc.dg/superblock.c 2012-08-14 23:56:30.159384232 +0200 |
806 |
+@@ -1,5 +1,6 @@ |
807 |
+ /* { dg-do compile } */ |
808 |
+ /* { dg-options "-O2 -fno-asynchronous-unwind-tables -fsched2-use-superblocks -fdump-rtl-sched2 -fdump-rtl-bbro" } */ |
809 |
++/* { dg-additional-options "-fno-stack-protector" { target espf } } */ |
810 |
+ |
811 |
+ typedef int aligned __attribute__ ((aligned (64))); |
812 |
+ extern void abort (void); |
813 |
+--- a/gcc/testsuite/g++.dg/other/anon5.C 2012-08-16 17:33:08.842848160 +0200 |
814 |
++++ b/gcc/testsuite/g++.dg/other/anon5.C 2012-08-16 17:33:35.913848967 +0200 |
815 |
+@@ -1,6 +1,7 @@ |
816 |
+ // PR c++/34094 |
817 |
+ // { dg-do link { target { ! { *-*-darwin* *-*-hpux* *-*-solaris2.* alpha*-dec-osf* mips-sgi-irix* } } } } |
818 |
+ // { dg-options "-g" } |
819 |
++// { dg-additional-options "-fno-PIE" { target espf } } |
820 |
+ |
821 |
+ namespace { |
822 |
+ struct c |
823 |
+--- a/gcc/testsuite/g++.old-deja/g++.law/profile1.C 2007-08-30 07:23:02.000000000 +0200 |
824 |
++++ b/gcc/testsuite/g++.old-deja/g++.law/profile1.C 2012-08-21 20:48:15.463070406 +0200 |
825 |
+@@ -2,6 +2,7 @@ |
826 |
+ // { dg-require-profiling "-pg" } |
827 |
+ // { dg-options "-pg" } |
828 |
+ // { dg-options "-pg -static" { target hppa*-*-hpux* } } |
829 |
++// { dg-additional-options "-fno-PIE" { target espf } } |
830 |
+ // GROUPS passed profiling |
831 |
+ #include <stdio.h> |
832 |
+ main() |