From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id IA2KEaGFzl/TTwAAWB0awg (envelope-from ) for ; Mon, 07 Dec 2020 14:42:25 -0500 Received: by simark.ca (Postfix, from userid 112) id 45B1F1F071; Mon, 7 Dec 2020 14:42:25 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=MAILING_LIST_MULTI,RDNS_NONE, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (unknown [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id C4E3F1EF4B for ; Mon, 7 Dec 2020 14:42:24 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3827F389680B; Mon, 7 Dec 2020 19:42:24 +0000 (GMT) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by sourceware.org (Postfix) with ESMTPS id 7728A3851C07 for ; Mon, 7 Dec 2020 19:42:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7728A3851C07 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tdevries@suse.de X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 614FFAC6A; Mon, 7 Dec 2020 19:42:20 +0000 (UTC) Subject: Re: [PATCH][gdb/testsuite] Avoid gnatbind/gnatlink in gdb.ada/catch_ex_std.exp From: Tom de Vries To: gdb-patches@sourceware.org References: <20201207121918.GA14252@delia> Message-ID: <548f6ace-2ee1-c682-fab4-c23ed33d1c4c@suse.de> Date: Mon, 7 Dec 2020 20:42:19 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <20201207121918.GA14252@delia> Content-Type: multipart/mixed; boundary="------------17F75FC2345DE520DBD053DD" Content-Language: en-US X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tom Tromey Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" This is a multi-part message in MIME format. --------------17F75FC2345DE520DBD053DD Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 12/7/20 1:19 PM, Tom de Vries wrote: > Hi, > > There's a single test-case in the testsuite that explicitly calls gnatbind and > gnatlink: gdb.ada/catch_ex_std.exp. > > Instead, use gnatmake and pass specific gnatbind and gnatlink options using > gnatmake passthrough options -bargs and -largs. > > Tested on x86_64-linux. > > Any comments? > Oops, forgot the additional_flags= prefix. Fixed in this version, such that we indeed have a dependency on libgnat-7.so due to -bargs -shared -margs: ... $ ldd foo linux-vdso.so.1 (0x00007ffec0179000) libsome_package.so => ./libsome_package.so (0x00007fe548526000) libgnat-7.so => /usr/lib64/libgnat-7.so (0x00007fe547f9b000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fe547d82000) libc.so.6 => /lib64/libc.so.6 (0x00007fe5479c7000) libm.so.6 => /lib64/libm.so.6 (0x00007fe54768f000) /lib64/ld-linux-x86-64.so.2 (0x00007fe548728000) ... Thanks, - Tom --------------17F75FC2345DE520DBD053DD Content-Type: text/x-patch; charset=UTF-8; name="0005-gdb-testsuite-Avoid-gnatbind-gnatlink-in-gdb.ada-catch_ex_std.exp.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename*0="0005-gdb-testsuite-Avoid-gnatbind-gnatlink-in-gdb.ada-catch_"; filename*1="ex_std.exp.patch" [gdb/testsuite] Avoid gnatbind/gnatlink in gdb.ada/catch_ex_std.exp There's a single test-case in the testsuite that explicitly calls gnatbind and gnatlink: gdb.ada/catch_ex_std.exp. Instead, use gnatmake and pass specific gnatbind and gnatlink options using gnatmake passthrough options -bargs and -largs. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-12-07 Tom de Vries * gdb.ada/catch_ex_std.exp: Use gnatmake -bargs and -largs instead of calling gnatbind and gnatlink. --- gdb/testsuite/gdb.ada/catch_ex_std.exp | 71 +++++++++++----------------------- 1 file changed, 23 insertions(+), 48 deletions(-) diff --git a/gdb/testsuite/gdb.ada/catch_ex_std.exp b/gdb/testsuite/gdb.ada/catch_ex_std.exp index c3339c3492..d91f88312b 100644 --- a/gdb/testsuite/gdb.ada/catch_ex_std.exp +++ b/gdb/testsuite/gdb.ada/catch_ex_std.exp @@ -23,8 +23,6 @@ if { [skip_ada_tests] } { return -1 } standard_ada_testfile foo -set ofile ${binfile}.o - set srcfile2 [file join [file dirname $srcfile] some_package.adb] set ofile2 [standard_output_file some_package.o] set sofile [standard_output_file libsome_package.so] @@ -51,56 +49,33 @@ if {[gdb_compile_shlib $ofile2 $sofile \ return -1 } -# Now we can compile the main program to an object file; but again, we -# can't compile directly using gnatmake. -if {[target_compile_ada_from_dir $outdir $srcfile $ofile object debug] != ""} { - return -1 +# Set linkarg such that the executable can find the shared library. +if {[istarget "*-*-mingw*"] + || [istarget *-*-cygwin*] + || [istarget *-*-pe*] + || [istarget arm*-*-symbianelf*]} { + # Do not need anything. + set linkarg "" +} elseif {[istarget *-*-freebsd*] || [istarget *-*-openbsd*]} { + set linkarg "-Wl,-rpath,$outdir" +} else { + set linkarg "-Wl,-rpath,\\\$ORIGIN" } -set gnatbind [find_ada_tool gnatbind] -set gnatlink [find_ada_tool gnatlink] +# Make sure we link against the shared GNAT run time. +set gnatbind_options [list -bargs -shared -margs] -with_cwd $outdir { - # Test if gnatbind is supported - set status [remote_exec host "$gnatbind --version"] - if {[lindex $status 0] == -1} { - unsupported "gnatbind foo" - return -1 - } - # Bind. - set status [remote_exec host "$gnatbind -shared foo"] - if {[lindex $status 0] == 0} { - pass "gnatbind foo" - } else { - fail "gnatbind foo" - return -1 - } +# Link against the shared library. +set gnatlink_options [list -largs $linkarg -Wl,-lsome_package -margs] - # Test if gnatlink is supported - set status [remote_exec host "$gnatlink --version"] - if {[lindex $status 0] == -1} { - unsupported "gnatlink foo" - return -1 - } - # Finally, link. - if {[istarget "*-*-mingw*"] - || [istarget *-*-cygwin*] - || [istarget *-*-pe*] - || [istarget arm*-*-symbianelf*]} { - # Do not need anything. - set linkarg "" - } elseif {[istarget *-*-freebsd*] || [istarget *-*-openbsd*]} { - set linkarg "-Wl,-rpath,$outdir" - } else { - set linkarg "-Wl,-rpath,\\\$ORIGIN" - } - set status [remote_exec host "$gnatlink foo $linkarg -Wl,-lsome_package"] - if {[lindex $status 0] == 0} { - pass "gnatlink foo" - } else { - fail "gnatlink foo" - return -1 - } +set options [list debug] +foreach option [concat $gnatbind_options $gnatlink_options] { + lappend options [concat "additional_flags=" $option] +} + +# Create executable. +if {[gdb_compile_ada $srcfile $binfile executable $options] != ""} { + return -1 } clean_restart ${testfile} --------------17F75FC2345DE520DBD053DD--