From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16167 invoked by alias); 8 Sep 2011 17:44:10 -0000 Received: (qmail 16142 invoked by uid 22791); 8 Sep 2011 17:44:04 -0000 X-SWARE-Spam-Status: No, hits=-5.9 required=5.0 tests=AWL,BAYES_00,FAKE_REPLY_C,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_RB,TW_SV X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 08 Sep 2011 17:43:40 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p88HhbPV015550 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 8 Sep 2011 13:43:37 -0400 Received: from host1.jankratochvil.net (ovpn-116-38.ams2.redhat.com [10.36.116.38]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p88HhZK5007475 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 8 Sep 2011 13:43:36 -0400 Received: from host1.jankratochvil.net (localhost [127.0.0.1]) by host1.jankratochvil.net (8.14.4/8.14.4) with ESMTP id p88HhYtj015877; Thu, 8 Sep 2011 19:43:34 +0200 Received: (from jkratoch@localhost) by host1.jankratochvil.net (8.14.4/8.14.4/Submit) id p88HhWME015870; Thu, 8 Sep 2011 19:43:32 +0200 Date: Thu, 08 Sep 2011 17:47:00 -0000 From: Jan Kratochvil To: Pedro Alves , Mark Kettenis , "H.J. Lu" Cc: gdb-patches@sourceware.org Subject: Re: [patch] testsuite: Fix x32, introduce is_amd64_regs_target Message-ID: <20110908174332.GA15583@host1.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201109081557.p88Fv4Yh010560@glazunov.sibelius.xs4all.nl> <201109081653.34529.pedro@codesourcery.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes 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 X-SW-Source: 2011-09/txt/msg00147.txt.bz2 On Thu, 08 Sep 2011 17:53:34 +0200, Pedro Alves wrote: > I don't believe that triplet was ever accepted. + On Thu, 08 Sep 2011 17:57:04 +0200, Mark Kettenis wrote: > Where? Neither the config.guess/config.sub in the gcc svn repo, nor > the one in the src cvs repo will ever return such a triplet. OK, I Googled some posted patches and assumed it is the reality, I agree there isn't x32 vendor in the FSF repositories. On Thu, 08 Sep 2011 18:01:41 +0200, H.J. Lu wrote: > I am using x86_64-x32-linux* for x32. Instead, I > am using x86_64-*-linux* with sizeof (long) == 4. Updated the comment to: +# Return 1 if target has x86_64 registers - either amd64 or x32. +# x32 target identifies as x86_64-*-linux*, therefore it cannot be determined +# just from the target string. +proc is_amd64_regs_target {} { Checked in. Thanks, Jan http://sourceware.org/ml/gdb-cvs/2011-09/msg00048.html --- src/gdb/testsuite/ChangeLog 2011/09/08 15:38:15 1.2848 +++ src/gdb/testsuite/ChangeLog 2011/09/08 17:40:52 1.2849 @@ -1,5 +1,18 @@ 2011-09-08 Jan Kratochvil + Fix compatibility with x32 arch. + * testsuite/gdb.dwarf2/typeddwarf.exp: Check also is_lp64_target. + * testsuite/gdb.trace/backtrace.exp: Use is_amd64_regs_target and + is_x86_like_target. + * testsuite/gdb.trace/collection.exp: Likewise. + * testsuite/gdb.trace/report.exp: Likewise. + * testsuite/gdb.trace/unavailable.exp: Likewise. + * testsuite/gdb.trace/while-dyn.exp: Likewise. + * testsuite/lib/gdb.exp (is_amd64_regs_target): New function. + (is_x86_like_target): Check also is_amd64_regs_target. + +2011-09-08 Jan Kratochvil + PR breakpoints/12435 * gdb.arch/amd64-prologue-xmm.c: New file. * gdb.arch/amd64-prologue-xmm.exp: New file. --- src/gdb/testsuite/gdb.dwarf2/typeddwarf.exp 2011/07/22 15:31:52 1.3 +++ src/gdb/testsuite/gdb.dwarf2/typeddwarf.exp 2011/09/08 17:40:53 1.4 @@ -22,10 +22,10 @@ return 0 } -# This test can only be run on x86 and amd64 targets. +# This test can only be run on x86 and amd64 targets (and not x32). if { [is_x86_like_target] } { set sfile ${test}.S -} elseif {[istarget "x86_64-*-*"]} { +} elseif {[istarget "x86_64-*-*"] && [is_lp64_target]} { set sfile ${test}-amd64.S } else { return 0 --- src/gdb/testsuite/gdb.trace/backtrace.exp 2011/08/26 09:20:44 1.19 +++ src/gdb/testsuite/gdb.trace/backtrace.exp 2011/09/08 17:40:53 1.20 @@ -150,10 +150,10 @@ "$tdp4" \ "collect \$regs, \$args, \$locs" "^$" -if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then { +if [is_amd64_regs_target] { set fpreg "\$rbp" set spreg "\$rsp" -} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then { +} elseif [is_x86_like_target] { set fpreg "\$ebp" set spreg "\$esp" } else { --- src/gdb/testsuite/gdb.trace/collection.exp 2011/08/26 09:20:44 1.25 +++ src/gdb/testsuite/gdb.trace/collection.exp 2011/09/08 17:40:53 1.26 @@ -45,11 +45,11 @@ set ws "\[\r\n\t \]+" set cr "\[\r\n\]+" -if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then { +if [is_amd64_regs_target] { set fpreg "rbp" set spreg "rsp" set pcreg "rip" -} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then { +} elseif [is_x86_like_target] { set fpreg "ebp" set spreg "esp" set pcreg "eip" --- src/gdb/testsuite/gdb.trace/report.exp 2011/08/26 09:20:44 1.20 +++ src/gdb/testsuite/gdb.trace/report.exp 2011/09/08 17:40:53 1.21 @@ -159,11 +159,11 @@ "$tdp4" \ "collect \$locs" "^$" -if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then { +if [is_amd64_regs_target] { set fpreg "rbp" set spreg "rsp" set pcreg "rip" -} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then { +} elseif [is_x86_like_target] { set fpreg "ebp" set spreg "esp" set pcreg "eip" --- src/gdb/testsuite/gdb.trace/unavailable.exp 2011/08/26 09:20:44 1.10 +++ src/gdb/testsuite/gdb.trace/unavailable.exp 2011/09/08 17:40:54 1.11 @@ -30,11 +30,11 @@ set ws "\[\r\n\t \]+" set cr "\[\r\n\]+" -if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then { +if [is_amd64_regs_target] { set fpreg "rbp" set spreg "rsp" set pcreg "rip" -} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then { +} elseif [is_x86_like_target] { set fpreg "ebp" set spreg "esp" set pcreg "eip" @@ -295,12 +295,12 @@ # Test reading uncollected pseudo-registers. The set of which # depends on target. - if {$pcreg == "rip"} then { + if [is_amd64_regs_target] { # Check the raw register first. test_register_unavailable "\$rax" test_register_unavailable "\$eax" test_register_unavailable "\$ax" - } elseif {$pcreg == "eip"} then { + } elseif [is_x86_like_target] { # Check the raw register first. test_register_unavailable "\$eax" test_register_unavailable "\$ax" --- src/gdb/testsuite/gdb.trace/while-dyn.exp 2011/08/26 09:20:44 1.19 +++ src/gdb/testsuite/gdb.trace/while-dyn.exp 2011/09/08 17:40:54 1.20 @@ -52,9 +52,9 @@ # test while-stepping dynamically (live target) # -if {([istarget "x86_64-*"] || [istarget "i?86-*"]) && [is_lp64_target]} then { +if [is_amd64_regs_target] { set fpreg "\$rbp" -} elseif {[istarget "x86_64-*"] || [istarget "i?86-*"]} then { +} elseif [is_x86_like_target] { set fpreg "\$ebp" } else { set fpreg "\$fp" --- src/gdb/testsuite/lib/gdb.exp 2011/07/15 14:11:22 1.184 +++ src/gdb/testsuite/lib/gdb.exp 2011/09/08 17:40:54 1.185 @@ -1604,6 +1604,49 @@ return [set is_lp64_target_saved($board) 1] } +# Return 1 if target has x86_64 registers - either amd64 or x32. +# x32 target identifies as x86_64-*-linux*, therefore it cannot be determined +# just from the target string. +proc is_amd64_regs_target {} { + global is_amd64_regs_target_saved + + if {![istarget "x86_64-*-*"]} { + return 0 + } + + # Use the cached value, if it exists. Cache value per "board" to handle + # runs with multiple options (e.g. unix/{-m32,-64}) correctly. + set me "is_amd64_regs_target" + set board [target_info name] + if [info exists is_amd64_regs_target_saved($board)] { + verbose "$me: returning saved $is_amd64_regs_target_saved($board)" 2 + return $is_amd64_regs_target_saved($board) + } + + set src reg64[pid].s + set obj reg64[pid].o + + set f [open $src "w"] + foreach reg \ + {rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15} { + puts $f "\tincq %$reg" + } + close $f + + verbose "$me: compiling testfile $src" 2 + set lines [gdb_compile $src $obj object {quiet}] + file delete $src + file delete $obj + + if ![string match "" $lines] then { + verbose "$me: testfile compilation failed, returning 0" 2 + return [set is_amd64_regs_target_saved($board) 0] + } + + verbose "$me: returning 1" 2 + return [set is_amd64_regs_target_saved($board) 1] +} + # Return 1 if this target is an x86 or x86-64 with -m32. proc is_x86_like_target {} { if {[istarget i?86-*]} { @@ -1612,7 +1655,7 @@ if {![istarget "x86_64-*-*"]} { return 0 } - return [is_ilp32_target] + return [expr [is_ilp32_target] && ![is_amd64_regs_target]] } # Return 1 if displaced stepping is supported on target, otherwise, return 0.