From: Sandra Loosemore <sandra@codesourcery.com>
To: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [patch, testsuite] Skip gnu-ifunc tests if building the testcase fails
Date: Thu, 27 Sep 2018 02:20:00 -0000 [thread overview]
Message-ID: <bbbef432-bab0-d928-1c36-7b6aa3e5ac21@codesourcery.com> (raw)
In-Reply-To: <yddmus44gvl.fsf@CeBiTec.Uni-Bielefeld.DE>
[-- Attachment #1: Type: text/plain, Size: 1360 bytes --]
On 09/26/2018 05:50 AM, Rainer Orth wrote:
> Hi Sandra,
>
>> gdb.base/gnu-ifunc.exp doesn't fail gracefully on targets that don't
>> support this feature -- on nios2-linux-gnu I've seen TCL errors from trying
>> to copy the nonexistent shared library that fails to build to the target.
>
> I just tried the patch on Solaris which also doesn't have (and never
> will have) ifunc support: unfortunately, there's still lots of noise in
> gdb.sum:
>
> [snip]
>
> It would be good to further reduce this.
>
> Btw., shouldn't gdb.compile/compile-ifunc.exp get similar treatment?
Yeah, although that test is broken for other reasons in my environment.
>> I see that ld/testsuite/ld-ifunc/ifunc.exp explicitly lists all the targets
>> where IFUNC is expected to work, but it seemed more maintainable to me to
>> tweak these gdb tests to pay attention to the return status from trying to
>> build the test cases. Is this OK to commit?
>
> gcc has gcc/testsuite/lib/target-supports.exp (check_ifunc_available)
> instead, again a compile test instead of a hardcoded list. I wonder,
> though, if it wouldn't be better to run such a check early in the two
> gdb ifunc tests and skip them if that fails, rather than producing lots
> of noise and UNSUPPORTED tests?
Here's a revised patch that adapts the same compile test that gcc uses.
Is this one OK?
-Sandra
[-- Attachment #2: ifunc.patch --]
[-- Type: text/x-patch, Size: 3779 bytes --]
commit 03ae8dd2f9d2812b8d2744e8d78a3f6c4c65ed9b
Author: Sandra Loosemore <sandra@codesourcery.com>
Date: Wed Sep 26 19:14:14 2018 -0700
Skip ifunc tests if no target support.
2018-09-26 Sandra Loosemore <sandra@codesourcery.com>
* lib/gdb.exp (skip_ifunc_tests): New.
* gdb.base/gnu-ifunc.exp: Skip if no ifunc support. Handle
other compile failures.
* gdb.compile/compile-ifunc.exp: Skip if no ifunc support.
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 2b4b097..c30db8f 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2018-09-26 Sandra Loosemore <sandra@codesourcery.com>
+
+ * lib/gdb.exp (skip_ifunc_tests): New.
+ * gdb.base/gnu-ifunc.exp: Skip if no ifunc support. Handle
+ other compile failures.
+ * gdb.compile/compile-ifunc.exp: Skip if no ifunc support.
+
2018-09-26 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.base/large-frame-1.c: New file.
diff --git a/gdb/testsuite/gdb.base/gnu-ifunc.exp b/gdb/testsuite/gdb.base/gnu-ifunc.exp
index d6ec698..322de5a 100644
--- a/gdb/testsuite/gdb.base/gnu-ifunc.exp
+++ b/gdb/testsuite/gdb.base/gnu-ifunc.exp
@@ -17,6 +17,10 @@ if {[skip_shlib_tests]} {
return 0
}
+if {[skip_ifunc_tests]} {
+ return 0
+}
+
standard_testfile .c
set staticexecutable ${testfile}-static
set staticbinfile [standard_output_file ${staticexecutable}]
@@ -365,9 +369,10 @@ proc misc_tests {resolver_attr resolver_debug final_debug} {
foreach_with_prefix resolver_attr {0 1} {
foreach_with_prefix resolver_debug {0 1} {
foreach_with_prefix final_debug {0 1} {
- build $resolver_attr $resolver_debug $final_debug
- misc_tests $resolver_attr $resolver_debug $final_debug
- set-break $resolver_attr $resolver_debug $final_debug
+ if { [build $resolver_attr $resolver_debug $final_debug] != 0 } {
+ misc_tests $resolver_attr $resolver_debug $final_debug
+ set-break $resolver_attr $resolver_debug $final_debug
+ }
}
}
}
diff --git a/gdb/testsuite/gdb.compile/compile-ifunc.exp b/gdb/testsuite/gdb.compile/compile-ifunc.exp
index 979e391..bb3af4d 100644
--- a/gdb/testsuite/gdb.compile/compile-ifunc.exp
+++ b/gdb/testsuite/gdb.compile/compile-ifunc.exp
@@ -13,6 +13,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+if {[skip_ifunc_tests]} {
+ return 0
+}
+
standard_testfile
with_test_prefix "nodebug" {
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index f32abfe..2cdc80a 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -2842,6 +2842,34 @@ gdb_caching_proc has_int128_cxx {
return [gdb_int128_helper c++]
}
+# Return true if the IFUNC feature is unsupported.
+gdb_caching_proc skip_ifunc_tests {
+ # Set up, compile, and execute a test program.
+ # Include the current process ID in the file names to prevent conflicts
+ # with invocations for multiple testsuites.
+ set src [standard_temp_file ifunc[pid].c]
+ set obj [standard_temp_file ifunc[pid].o]
+
+ verbose -log "checking for ifunc support"
+ gdb_produce_source $src {
+ extern void f_ ();
+ typedef void F (void);
+ F* g (void) { return &f_; }
+ void f () __attribute__ ((ifunc ("g")));
+ }
+
+ set lines [gdb_compile $src $obj object {quiet}]
+ file delete $src
+ file delete $obj
+
+ if ![string match "" $lines] then {
+ verbose -log "ifunc testfile compilation failed"
+ return 1
+ }
+ verbose -log "ifunc testfile compilation successful"
+ return 0
+}
+
# Return whether we should skip tests for showing inlined functions in
# backtraces. Requires get_compiler_info and get_debug_format.
next prev parent reply other threads:[~2018-09-27 2:20 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-26 5:08 Sandra Loosemore
2018-09-26 11:50 ` Rainer Orth
2018-09-27 2:20 ` Sandra Loosemore [this message]
2018-09-27 20:31 ` Tom Tromey
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=bbbef432-bab0-d928-1c36-7b6aa3e5ac21@codesourcery.com \
--to=sandra@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=ro@CeBiTec.Uni-Bielefeld.DE \
/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