From patchwork Wed Jul 13 08:54:00 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kratochvil X-Patchwork-Id: 13770 Received: (qmail 96845 invoked by alias); 13 Jul 2016 08:54:17 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 96832 invoked by uid 89); 13 Jul 2016 08:54:16 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.2 required=5.0 tests=BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 13 Jul 2016 08:54:06 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D73CF3E2A1; Wed, 13 Jul 2016 08:54:04 +0000 (UTC) Received: from host1.jankratochvil.net (ovpn-204-80.brq.redhat.com [10.40.204.80]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u6D8s0vk026888 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 13 Jul 2016 04:54:03 -0400 Date: Wed, 13 Jul 2016 10:54:00 +0200 From: Jan Kratochvil To: Ulrich Weigand Cc: Yao Qi , "gdb-patches@sourceware.org" , Kevin Buettner Subject: [testsuite patchv3] [ppc64] gdb_target_symbol fix for function descriptors [Re: [testsuite patch] [ppc64] +kfail: gdb_target Message-ID: <20160713085400.GA1159@host1.jankratochvil.net> References: <20160712132249.C26FA3BED@oc7340732750.ibm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20160712132249.C26FA3BED@oc7340732750.ibm.com> User-Agent: Mutt/1.6.1 (2016-04-27) X-IsSubscribed: yes On Tue, 12 Jul 2016 15:22:49 +0200, Ulrich Weigand wrote: > See e.g. dw2-unresolved-main.c: > > asm (".globl cu_text_start"); > asm ("cu_text_start:"); I wrote those lines... I just did not want to patch multiple (3) testcases one after another just because one platform (ppc64). Now I see I should not do that because: lib/dwarf.exp: # asm ("func_start: .globl func_start"); # static void func (void) {} # asm ("func_end: .globl func_end"); # # however, this isn't portable, because other compilers, such as clang, # may not guarantee the order of global asms and function. The code # becomes: # # asm ("func_start: .globl func_start"); # asm ("func_end: .globl func_end"); # static void func (void) {} # proc function_range { func src } { commit 876c4df94765ce9409e867ff035ab2203c9f4a3b Author: Yao Qi Date: Fri Nov 14 08:53:08 2014 +0800 DW attribute macro MACRO_AT_func and MACRO_AT_range So I am providing this patch. On Fedora 24 x86_64 and RHEL-7.2 ppc64 it has no regressions for gdb.dwarf2/*.exp. OK for check-in? Kevin, I hope gdb_target_symbol is not needed in this case but I am not sure. Thanks, Jan gdb/testsuite/ChangeLog 2016-07-13 Jan Kratochvil * gdb.dwarf2/atomic-type.exp: Use function_range for low_pc and high_pc. * gdb.dwarf2/atomic.c (f): Rename f_end_lbl to f_label. * gdb.dwarf2/dw2-bad-mips-linkage-name.c (f): Rename f_end_lbl to f_label. (g): Rename g_end_lbl to g_label. * gdb.dwarf2/dw2-bad-mips-linkage-name.exp: Use function_range for low_pc and high_pc. * gdb.dwarf2/dw2-lexical-block-bare.exp: Likewise. diff --git a/gdb/testsuite/gdb.dwarf2/atomic-type.exp b/gdb/testsuite/gdb.dwarf2/atomic-type.exp index 7b35cad..0addefe 100644 --- a/gdb/testsuite/gdb.dwarf2/atomic-type.exp +++ b/gdb/testsuite/gdb.dwarf2/atomic-type.exp @@ -25,6 +25,12 @@ standard_testfile atomic.c atomic-type-dw.S set asm_file [standard_output_file $srcfile2] Dwarf::assemble $asm_file { + global srcdir subdir srcfile + + set f_result [function_range f ${srcdir}/${subdir}/${srcfile}] + set f_start [lindex $f_result 0] + set f_length [lindex $f_result 1] + cu {} { DW_TAG_compile_unit { {DW_AT_language @DW_LANG_C11} @@ -68,8 +74,8 @@ Dwarf::assemble $asm_file { DW_TAG_subprogram { {name f} - {low_pc [gdb_target_symbol f] addr} - {high_pc f_end_lbl addr} + {low_pc $f_start addr} + {high_pc "$f_start + $f_length" addr} {type :$i_l} } { DW_TAG_formal_parameter { diff --git a/gdb/testsuite/gdb.dwarf2/atomic.c b/gdb/testsuite/gdb.dwarf2/atomic.c index 9a2d37b..ecaa56c 100644 --- a/gdb/testsuite/gdb.dwarf2/atomic.c +++ b/gdb/testsuite/gdb.dwarf2/atomic.c @@ -28,7 +28,7 @@ main (void) int f (char *x) { - asm (".global f_end_lbl\nf_end_lbl:"); + asm ("f_label: .globl f_label"); return 0; } diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.c b/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.c index eaf1233..5816324 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.c +++ b/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.c @@ -28,7 +28,7 @@ main (void) int f (char *x) { - asm (".global f_end_lbl\nf_end_lbl:"); + asm ("f_label: .globl f_label"); return 0; } @@ -36,6 +36,6 @@ f (char *x) int g (char *x) { - asm (".global g_end_lbl\ng_end_lbl:"); + asm ("g_label: .globl g_label"); return 0; } diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp b/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp index b1041fa..043c1da 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-bad-mips-linkage-name.exp @@ -26,6 +26,16 @@ standard_testfile dw2-bad-mips-linkage-name.c dw2-bad-mips-linkage-name.S set asm_file [standard_output_file $srcfile2] Dwarf::assemble $asm_file { + global srcdir subdir srcfile + + set f_result [function_range f ${srcdir}/${subdir}/${srcfile}] + set f_start [lindex $f_result 0] + set f_length [lindex $f_result 1] + + set g_result [function_range g ${srcdir}/${subdir}/${srcfile}] + set g_start [lindex $g_result 0] + set g_length [lindex $g_result 1] + cu {} { DW_TAG_compile_unit { {DW_AT_language @DW_LANG_C} @@ -42,15 +52,15 @@ Dwarf::assemble $asm_file { } DW_TAG_subprogram { {name f} - {low_pc [gdb_target_symbol f] addr} - {high_pc f_end_lbl addr} + {low_pc $f_start addr} + {high_pc "$f_start + $f_length" addr} {type :$b_l} {DW_AT_MIPS_linkage_name _Z1fv} } DW_TAG_subprogram { {name g} - {low_pc [gdb_target_symbol g] addr} - {high_pc g_end_lbl addr} + {low_pc $g_start addr} + {high_pc "$g_start + $g_length" addr} {type :$b_l} {DW_AT_MIPS_linkage_name 42 DW_FORM_data1} } diff --git a/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp b/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp index 3f9411e..d09f56b 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-lexical-block-bare.exp @@ -24,10 +24,16 @@ standard_testfile .S main.c # Make some DWARF for the test. set asm_file [standard_output_file $srcfile] Dwarf::assemble $asm_file { + global srcdir subdir srcfile2 + + set main_result [function_range main ${srcdir}/${subdir}/${srcfile2}] + set main_start [lindex $main_result 0] + set main_length [lindex $main_result 1] + cu {} { compile_unit { - {low_pc [gdb_target_symbol main] DW_FORM_addr} - {high_pc [gdb_target_symbol main]+0x10000 DW_FORM_addr} + {low_pc $main_start addr} + {high_pc "$main_start + $main_length" addr} } { declare_labels integer_label @@ -40,8 +46,8 @@ Dwarf::assemble $asm_file { DW_TAG_subprogram { {name main} {DW_AT_external 1 flag} - {low_pc [gdb_target_symbol main] DW_FORM_addr} - {high_pc [gdb_target_symbol main]+0x10000 DW_FORM_addr} + {low_pc $main_start addr} + {high_pc "$main_start + $main_length" addr} } { DW_TAG_lexical_block { } {