Gentoo Archives: gentoo-commits

From: Magnus Granberg <zorry@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/hardened-gccpatchset:master commit in: upstream/
Date: Tue, 21 Aug 2012 21:27:08
Message-Id: 1345579811.35167b3faba4a431156102e48c2375d3c036a40b.zorry@gentoo
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()