Rainer Orth <[email protected]> writes:
> As suggested by Joseph, the gcc.dg/torture/tls tests should be run with
> -fpic/-fPIC and -fpie/-fPIE if supported.
>
> The patch below implements part of this. Unlike
> gcc.dg/torture/stackalign/stackalign.exp, I'm using the code below to
> add -fpic etc. to the torture options so it shows up in gcc.sum.
>
> Unfortunately, I have no idea how to properly test if -fpie/-fPIE is
> supported. Jakub, do you have a suggestion? Such a test could (and
> probably should) be used in the few tests we currently have for -fpie:
>
> gcc.dg/tls/pie-1.c, gcc.dg/pie-link.c, gcc.target/i386/pr39013-[12].c
>
> Bootstrapped without regression on i386-pc-solaris2.11.
After it has been determined how to check for PIE support, I'm checking
this in.
Rainer
2011-05-28 Rainer Orth <[email protected]>
* gcc.dg/torture/tls/tls.exp: Load torture-options.exp.
Run tests with -fpic/-fPIC, -pie -fpie/-fPIE if supported.
diff --git a/gcc/testsuite/gcc.dg/torture/tls/tls.exp
b/gcc/testsuite/gcc.dg/torture/tls/tls.exp
--- a/gcc/testsuite/gcc.dg/torture/tls/tls.exp
+++ b/gcc/testsuite/gcc.dg/torture/tls/tls.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 2010 Free Software Foundation, Inc.
+# Copyright (C) 2010, 2011 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,6 +18,7 @@
# Load support procs.
load_lib gcc-dg.exp
+load_lib torture-options.exp
# If a testcase doesn't have special options, use these.
global DEFAULT_CFLAGS
@@ -25,12 +26,32 @@ if ![info exists DEFAULT_CFLAGS] then {
set DEFAULT_CFLAGS " -ansi -pedantic-errors"
}
+global DG_TORTURE_OPTIONS LTO_TORTURE_OPTIONS
+set TLS_TORTURE_OPTIONS $DG_TORTURE_OPTIONS
+if { [check_effective_target_fpic] } then {
+ foreach pic {fpic fPIC} {
+ foreach option $DG_TORTURE_OPTIONS {
+ lappend TLS_TORTURE_OPTIONS "$option -$pic"
+ }
+ }
+}
+if { [check_effective_target_pie] } then {
+ foreach pie {fpie fPIE} {
+ foreach option $DG_TORTURE_OPTIONS {
+ lappend TLS_TORTURE_OPTIONS "$option -pie -$pie"
+ }
+ }
+}
+
# Initialize `dg'.
dg-init
+torture-init
+set-torture-options $TLS_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS
# Main loop.
gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
$DEFAULT_CFLAGS
# All done.
+torture-finish
dg-finish
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University