diff options
author | Hans-Peter Nilsson <hp@bitrange.com> | 2014-10-17 13:10:18 +0200 |
---|---|---|
committer | Hans-Peter Nilsson <hp@bitrange.com> | 2014-10-17 13:11:42 +0200 |
commit | 3f7308212cefe5cd958b29e0b9e92d92c4dbe941 (patch) | |
tree | dc100e5c5f17f5abcf8f260148e6b49dc8d9adf6 /ld/testsuite/ld-scripts | |
parent | c1e29d6622533257267e6dd136a34f9785edfb28 (diff) | |
download | gdb-3f7308212cefe5cd958b29e0b9e92d92c4dbe941.zip gdb-3f7308212cefe5cd958b29e0b9e92d92c4dbe941.tar.gz gdb-3f7308212cefe5cd958b29e0b9e92d92c4dbe941.tar.bz2 |
Fix ld tests with sysroot=/ and --enable-targets=all and test --print-sysroot
* ld-scripts/sysroot-prefix.exp: Log $ld_sysroot. Handle sysroot
== "/" as a separate sysroot-configuration with separable
test-types.
(sysroot_prefix_tests): Include all existing sysroot tests in
sysroot == "/" tests except exclude those where a --sysroot option
is not specified.
* lib/ld-lib.exp (check_sysroot_available): Rewrite to use
--print-sysroot instead of relying on error code from using
--sysroot=... Also, set $ld_sysroot.
The reason we exclude not just the failing "full-path =-prefixed
without" but also the passing "plain =-prefixed without but -Lpath"
for sysroot == "/" is that for the latter to succeed, we have to make
assumptions about the system not having a /sysroot directory or
assumptions about its contents etc.
When passing --enable-targets=all --enable-64-bit-bfd (the
latter not required for a "64-bit-host" of course) the ld --help
output got too much to handle for poor tcl (or maybe dejagnu is
to blame) and remote_exec exited with an error, so the
configuration being tested was mishandled as being a
sysroot-less configuration. Using --version instead of --help
would work too, but the new --print-sysroot option calls for
nominal coverage, so why not use that instead.
Diffstat (limited to 'ld/testsuite/ld-scripts')
-rw-r--r-- | ld/testsuite/ld-scripts/sysroot-prefix.exp | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/ld/testsuite/ld-scripts/sysroot-prefix.exp b/ld/testsuite/ld-scripts/sysroot-prefix.exp index cf434df..65c9f70 100644 --- a/ld/testsuite/ld-scripts/sysroot-prefix.exp +++ b/ld/testsuite/ld-scripts/sysroot-prefix.exp @@ -27,14 +27,21 @@ # present or not, with different arguments. # Find out if the linker supports sysroot; if it was configured -# "--with-sysroot X". We ignore that X can actually be set to -# interfere with the tests, as that's unlikely to be useful, and -# assume that the build-directory (aka. $base_dir) does not contain X. +# "--with-sysroot X" where X is a non-empty string. set with_sysroot [check_sysroot_available] -verbose -log "Has (non-empty) sysroot support: $with_sysroot" +verbose -log "Has (non-empty) sysroot support: $with_sysroot; \"$ld_sysroot\"" + +# We also need to know if the sysroot is "/" (a common use) as some of +# the tests prepend sysroot to the current directory and on most +# common systems "//dir/path" is handled as "/dir/path". +if {$ld_sysroot == "/"} { + # Use a modified test-subset for testing. + set with_sysroot 3 +} # Entries in the array-tables: -# 0: Testtype (1: only non-sysroot, 2: only sysroot, 3: either). +# 0: Testtype; an inclusive bitmask indicating that the test should run on a +# build configured for: 1: non-sysroot, 2: sysroot != "/", 4: sysroot == "/". # 1: Description, forming part of the dejagnu test-name. # 2: Replacement for @p@. # 3: Option to pass to linker (usually something with --sysroot). @@ -47,16 +54,16 @@ verbose -log "Has (non-empty) sysroot support: $with_sysroot" # description contains @cwd@, that will be replaced by "<CWD>". set sysroot_prefix_tests { - {3 "plain -Lpath" "sysroot/" {} ""} - {3 "root-anchored but -Lpath" "/sysroot/" {} "cannot find"} - {3 "full-path" "@cwd@/sysroot/" {} ""} - {3 "root-anchored =-prefixed -Lpath" "=/sysroot/" {} "cannot find"} - {3 "full-path =-prefixed with empty" "=@cwd@/sysroot/" "--sysroot=" ""} - {3 "plain =-prefixed with empty" "=sysroot/" "--sysroot=" ""} - {2 "root-anchored but script outside sysroot" "/" "--sysroot=@cwd@/sysroot" "cannot find"} - {2 "root-anchored and script inside sysroot" "/sysroot/" "--sysroot=@cwd@" ""} - {2 "root-anchored =-prefixed script outside" "=/" "--sysroot=@cwd@/sysroot" ""} - {2 "root-anchored =-prefixed script inside" "=/sysroot/" "--sysroot=@cwd@" ""} + {7 "plain -Lpath" "sysroot/" {} ""} + {7 "root-anchored but -Lpath" "/sysroot/" {} "cannot find"} + {7 "full-path" "@cwd@/sysroot/" {} ""} + {7 "root-anchored =-prefixed -Lpath" "=/sysroot/" {} "cannot find"} + {7 "full-path =-prefixed with empty" "=@cwd@/sysroot/" "--sysroot=" ""} + {7 "plain =-prefixed with empty" "=sysroot/" "--sysroot=" ""} + {6 "root-anchored but script outside sysroot" "/" "--sysroot=@cwd@/sysroot" "cannot find"} + {6 "root-anchored and script inside sysroot" "/sysroot/" "--sysroot=@cwd@" ""} + {6 "root-anchored =-prefixed script outside" "=/" "--sysroot=@cwd@/sysroot" ""} + {6 "root-anchored =-prefixed script inside" "=/sysroot/" "--sysroot=@cwd@" ""} {2 "plain =-prefixed without but -Lpath" "=sysroot/" {} "cannot find"} {2 "full-path =-prefixed without" "=@cwd@/sysroot/" {} "cannot find"} {1 "plain =-prefixed -Lpath" "=sysroot/" {} ""} |