From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 96167 invoked by alias); 13 Sep 2019 19:47:08 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 96157 invoked by uid 89); 13 Sep 2019 19:47:08 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 spammy=UD:en.wikipedia.org, en.wikipedia.org, sk:enwiki, UD:wikipedia.org X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 13 Sep 2019 19:47:06 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 4D306AEEC; Fri, 13 Sep 2019 19:47:04 +0000 (UTC) Subject: [PING^4][PATCH][gdb/testsuite] Fix ada tests with -fPIE/-pie From: Tom de Vries To: Tom Tromey Cc: gdb-patches@sourceware.org, Joel Brobecker References: <20190807110713.GA23000@delia> <87v9v96oul.fsf@tromey.com> <7eb7d7c6-7b32-846d-369f-9bd6a466850d@suse.de> <12cc8627-17db-d52d-73cc-d352b011791c@suse.de> <9e32d5f8-20c9-e83c-e606-73011d97ea43@suse.de> Openpgp: preference=signencrypt Message-ID: Date: Fri, 13 Sep 2019 19:47:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <9e32d5f8-20c9-e83c-e606-73011d97ea43@suse.de> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg00239.txt.bz2 On 04-09-19 10:17, Tom de Vries wrote: > On 28-08-19 09:18, Tom de Vries wrote: >> On 21-08-19 09:15, Tom de Vries wrote: >>> On 08-08-19 12:15, Tom de Vries wrote: >>>> On 07-08-19 17:27, Tom de Vries wrote: >>>>> On 07-08-19 16:18, Tom Tromey wrote: >>>>>>>>>>> "Tom" == Tom de Vries writes: >>>>>> Tom> When running the gdb testsuite with target board unix/-fPIE/-pie, the >>>>>> Tom> resulting ada executables are not PIE executables, because gnatmake doesn't >>>>>> Tom> recognize -pie, and consequently doesn't pass it to gnatlink. >>>>>> >>>>>> Tom> Fix this by replacing "-pie" with "-largs -pie -margs" for ada test-cases in >>>>>> Tom> gdb_default_target_compile, and doing the same for -no-pie. >>>>>> >>>>>> I think this is a good idea overall. >>>>>> >>>>>> However, is gdb_default_target_compile still used? And if so, by what >>>>>> path? >>>>> I'm using dejagnu 1.6.1, and that one does not have find_go_linker. So, >>>>> use_gdb_compile is set to 1 and we get: >>>>> ... >>>>> if {$use_gdb_compile} { >>>>> catch {rename default_target_compile {}} >>>>> rename gdb_default_target_compile default_target_compile >>>>> } >>>>> ... >>>>> >>>>>> My understanding is that with a "new enough" dejagnu, it won't be >>>>>> used -- so some users might still see the old behavior. >>>>>> >>>>> AFAIU, yes. Hmm, that's not good. >>>>> >>>>>> Basically gdb_default_target_compile is all a big monkeypatching hack >>>>> /me reads https://en.wikipedia.org/wiki/Monkey_patch >>>>> >>>>>> and it would be way better to have some kind of more principled approach >>>>>> upstream. >>>>> Agreed. >>>>> >>>>>> I don't know what that would look like. And of course to get >>>>>> there we'd probably need even more monkeypatching. >>>>> The following uses the approach taken in lib/cell.exp. >>>>> >>>>> Is this any better? >>>>> >>>> Updated rationale and ChangeLog entry. >>>> >>>> OK for trunk? >>>> >>> >> > Hi, Ping^4. Thanks, - Tom >>>> 0001-gdb-testsuite-Fix-ada-tests-with-fPIE-pie.patch >>>> >>>> [gdb/testsuite] Fix ada tests with -fPIE/-pie >>>> >>>> When running the gdb testsuite with target board unix/-fPIE/-pie, the >>>> resulting ada executables are not PIE executables, because gnatmake doesn't >>>> recognize -pie, and consequently doesn't pass it to gnatlink. >>>> >>>> Fix this by replacing "-pie" with "-largs -pie -margs" in >>>> target_compile_ada_from_dir, and doing the same for -no-pie. >>>> >>>> Tested on x86_64-linux. >>>> >>>> gdb/testsuite/ChangeLog: >>>> >>>> 2019-08-08 Tom de Vries >>>> >>>> PR testsuite/24888 >>>> * lib/ada.exp (target_compile_ada_from_dir): Route -pie/-no-pie to >>>> gnatlink. >>>> >>>> --- >>>> gdb/testsuite/lib/ada.exp | 25 +++++++++++++++++++++++++ >>>> 1 file changed, 25 insertions(+) >>>> >>>> diff --git a/gdb/testsuite/lib/ada.exp b/gdb/testsuite/lib/ada.exp >>>> index 1345c747c5..6a3fd33240 100644 >>>> --- a/gdb/testsuite/lib/ada.exp >>>> +++ b/gdb/testsuite/lib/ada.exp >>>> @@ -19,11 +19,36 @@ >>>> >>>> proc target_compile_ada_from_dir {builddir source dest type options} { >>>> set saved_cwd [pwd] >>>> + >>>> + global board >>>> + set board [target_info name] >>>> + set save_multilib_flag [board_info $board multilib_flags] >>>> + set multilib_flag "" >>>> + foreach op $save_multilib_flag { >>>> + if { $op == "-pie" || $op == "-no-pie" } { >>>> + # Pretend gnatmake supports -pie/-no-pie, route it to >>>> + # linker. >>>> + append multilib_flag " -largs $op -margs" >>>> + } else { >>>> + append multilib_flag " $op" >>>> + } >>>> + } >>>> + if { $multilib_flag != "" } { >>>> + unset_board_info "multilib_flags" >>>> + set_board_info multilib_flags "$multilib_flag" >>>> + } >>>> + >>>> catch { >>>> cd $builddir >>>> return [target_compile $source $dest $type $options] >>>> } result options >>>> cd $saved_cwd >>>> + >>>> + if { $save_multilib_flag != "" } { >>>> + unset_board_info "multilib_flags" >>>> + set_board_info multilib_flags $save_multilib_flag >>>> + } >>>> + >>>> return -options $options $result >>>> } >>>> >>>>