public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] [gdb/testsuite] Fix gdb.ada/catch_ex_std.exp gnatlink FAIL
@ 2020-04-13 16:53 Tom de Vries
  0 siblings, 0 replies; only message in thread
From: Tom de Vries @ 2020-04-13 16:53 UTC (permalink / raw)
  To: gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=dd1cab0694592099854e66467319253954c93764

commit dd1cab0694592099854e66467319253954c93764
Author: Tom de Vries <tdevries@suse.de>
Date:   Mon Apr 13 18:53:14 2020 +0200

    [gdb/testsuite] Fix gdb.ada/catch_ex_std.exp gnatlink FAIL
    
    When running test-case gdb.ada/catch_ex.exp using system gnatmake, gnatmake is
    invoked like this:
    ...
    Executing on host: \
      gnatmake foo.adb -gnata -f -Isrc/gdb/testsuite/gdb.ada/catch_ex -g -lm \
        -o outputs/gdb.ada/catch_ex/foo
    ...
    
    When I try to use a more recent gnatmake, by mocking up a combined build:
    ...
    $ ls -la build/gcc/
    lrwxrwxrwx  gfortran -> /usr/bin/gfortran-10
    lrwxrwxrwx  gnatbind -> /usr/bin/gnatbind-10
    lrwxrwxrwx  gnatlink -> /usr/bin/gnatlink-10
    lrwxrwxrwx  gnatmake -> /usr/bin/gnatmake-10
    lrwxrwxrwx  xg++ -> /usr/bin/g++-10
    lrwxrwxrwx  xgcc -> /usr/bin/gcc-10
    ...
    gnatmake is invoked like this:
    ...
    Executing on host: \
      /data/gdb_versions/devel/build/gcc/gnatmake \
        -I/data/gdb_versions/devel/build/gcc/ada/rts \
        --GCC=/data/gdb_versions/devel/build/gcc/xgcc \
        --GNATBIND=/data/gdb_versions/devel/build/gcc/gnatbind \
        --GNATLINK=/data/gdb_versions/devel/build/gcc/gnatlink \
        -cargs -B/data/gdb_versions/devel/build/gcc \
        -largs --GCC=/data/gdb_versions/devel/build/gcc/xgcc \
        -B/data/gdb_versions/devel/build/gcc \
        -margs foo.adb -gnata -f -Isrc/gdb/testsuite/gdb.ada/catch_ex -g -lm \
        -o outputs/gdb.ada/catch_ex/foo
    ...
    
    This is set up by this bit in find_gnatmake in
    /usr/share/dejagnu/libgloss.exp:
    ...
        if {![is_remote host]} {
            set file [lookfor_file $tool_root_dir gnatmake]
            if { $file == "" } {
                set file [lookfor_file $tool_root_dir gcc/gnatmake]
            }
            if { $file != "" } {
                set root [file dirname $file]
                set CC "$file -I$root/ada/rts --GCC=$root/xgcc \
                  --GNATBIND=$root/gnatbind --GNATLINK=$root/gnatlink \
                  -cargs -B$root \
                  -largs --GCC=$root/xgcc -B$root -margs"
            } else {
    ...
    
    However, when running test-case gdb.ada/catch_ex_std.exp using the mockup
    combined build, we get:
    ...
    Executing on host: \
      /data/gdb_versions/devel/build/gcc/gnatlink foo \
        -Wl,-rpath,\$ORIGIN -Wl,-lsome_package
    
    b~foo.adb:26:79: "SS_Stack" not declared in "Secondary_Stack"^M
    b~foo.adb:26:89: incorrect constraint for this kind of type^M
    b~foo.adb:121:56: "Runtime_Default_Sec_Stack_Size" not declared in "Parameters"^M
    FAIL: gdb.ada/catch_ex_std.exp: gnatlink foo
    ...
    
    The problem is caused by the fact that the test uses gnatlink directly
    rather than using gnatmake.  The invoked gnatlink (which is gnatlink-10) calls
    gcc-7, which are incompatible (see gcc PR86211).  This problem doesn't occur
    with gnatmake because there the gcc to use is passed as an argument to
    gnatlink.
    
    Fix this by adding the -largs bit from find_gnatmake in find_ada_tool, for the
    case that $tool == gnatlink.
    
    Tested on x86_64-linux, with system gcc, and gcc-10.
    
    gdb/testsuite/ChangeLog:
    
    2020-04-13  Tom de Vries  <tdevries@suse.de>
    
            * lib/ada.exp (find_ada_tool): Pass --GCC and -B to gnatlink, similar
            to what find_gnatmake does.

Diff:
---
 gdb/testsuite/ChangeLog   | 5 +++++
 gdb/testsuite/lib/ada.exp | 3 +++
 2 files changed, 8 insertions(+)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 850607c054d..c7f80f7bb3d 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-04-13  Tom de Vries  <tdevries@suse.de>
+
+	* lib/ada.exp (find_ada_tool): Pass --GCC and -B to gnatlink, similar
+	to what find_gnatmake does.
+
 2020-04-10  Tom de Vries  <tdevries@suse.de>
 
 	* gdb.base/style.exp: Expect "Expanding full symbols" message for
diff --git a/gdb/testsuite/lib/ada.exp b/gdb/testsuite/lib/ada.exp
index 6648566ec30..0ffc5957c8d 100644
--- a/gdb/testsuite/lib/ada.exp
+++ b/gdb/testsuite/lib/ada.exp
@@ -133,6 +133,9 @@ proc find_ada_tool {tool} {
 
     if {![is_remote host]} {
         set result [lookfor_file $root $tool]
+	if { $result != "" && $tool == "gnatlink" } {
+	    set result "$result --GCC=$root/xgcc -B$root"
+	}
     }
 
     if {$result == ""} {


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-04-13 16:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-13 16:53 [binutils-gdb] [gdb/testsuite] Fix gdb.ada/catch_ex_std.exp gnatlink FAIL Tom de Vries

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).