public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
From: Tom de Vries <vries@sourceware.org>
To: gdb-cvs@sourceware.org
Subject: [binutils-gdb] [gdb/testsuite] Fix gdb.ada/catch_ex_std.exp gnatlink FAIL
Date: Mon, 13 Apr 2020 16:53:17 +0000 (GMT)	[thread overview]
Message-ID: <20200413165317.430E0385DC14@sourceware.org> (raw)

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 == ""} {


                 reply	other threads:[~2020-04-13 16:53 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20200413165317.430E0385DC14@sourceware.org \
    --to=vries@sourceware.org \
    --cc=gdb-cvs@sourceware.org \
    /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).