public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
To: gcc-patches@gcc.gnu.org
Cc: Jakub Jelinek <jakub@redhat.com>
Subject: [testsuite] Run TLS torture tests with -fpic etc.
Date: Mon, 30 May 2011 17:45:00 -0000	[thread overview]
Message-ID: <yddvcwsrz89.fsf@manam.CeBiTec.Uni-Bielefeld.DE> (raw)

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.

Will install on mainline unless someone objects once the -fpie test has
been fixed.

	Rainer


2011-05-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* lib/target-supports.exp (check_effective_target_fpie): New proc.
	* gcc.dg/torture/tls/tls.exp: Load torture-options.exp.
	Run tests with -fpic/-fPIC, -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_fpie] } then {
+    foreach pie {fpie fPIE} {
+	foreach option $DG_TORTURE_OPTIONS {
+	    lappend TLS_TORTURE_OPTIONS "$option -$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
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -788,6 +788,18 @@ proc check_effective_target_fpic { } {
     return 0
 }
 
+# Return 1 if -fpie and -fPIE are supported, as in no warnings or errors
+# emitted, 0 otherwise.
+
+proc check_effective_target_fpie { } {
+    if [check_no_compiler_messages fpie executable {
+	int main (void) { return 0; }
+    } "-fpie"] {
+	return 1
+    }
+    return 0
+}
+
 # Return true if the target supports -mpaired-single (as used on MIPS).
 
 proc check_effective_target_mpaired_single { } {


-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

             reply	other threads:[~2011-05-30 15:21 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-30 17:45 Rainer Orth [this message]
2011-06-03 19:38 ` Rainer Orth
2011-06-03 19:44   ` Jakub Jelinek
2011-06-06  9:42     ` Rainer Orth
2011-06-07 16:48       ` Rainer Orth
2011-06-07 16:55         ` Jakub Jelinek
2011-06-07 16:57           ` Rainer Orth
2011-06-10 10:14           ` Rainer Orth
2011-06-10 14:13             ` Joseph S. Myers
2011-06-10 14:45               ` Rainer Orth
2011-06-10 15:11 ` Rainer Orth
2011-06-15 16:33   ` Ramana Radhakrishnan
2011-06-15 17:29     ` Mike Stump
2011-06-15 23:07       ` Ramana Radhakrishnan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=yddvcwsrz89.fsf@manam.CeBiTec.Uni-Bielefeld.DE \
    --to=ro@cebitec.uni-bielefeld.de \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).