This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [testsuite] Run TLS torture tests with -fpic etc.
- From: Rainer Orth <ro at CeBiTec dot Uni-Bielefeld dot DE>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 03 Jun 2011 21:38:31 +0200
- Subject: Re: [testsuite] Run TLS torture tests with -fpic etc.
- References: <yddvcwsrz89.fsf@manam.CeBiTec.Uni-Bielefeld.DE>
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 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
Jakub, any suggestion how to properly test for -fpie/-fPIE support?
Otherwise, I'll remove that part of the patch for now and just commit
the -fpic/-fPIC one.
> 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