Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Yao Qi <yao@codesourcery.com>
To: <gdb-patches@sourceware.org>
Subject: [PATCH 3/6] Get start and end address of main in dwz.exp
Date: Sat, 25 Oct 2014 00:18:00 -0000	[thread overview]
Message-ID: <1414195968-3333-4-git-send-email-yao@codesourcery.com> (raw)
In-Reply-To: <1414195968-3333-1-git-send-email-yao@codesourcery.com>

On arm-none-eabi target thumb mode, I see the following fail,

p the_int^M
$2 = 99^M
(gdb) FAIL: gdb.dwarf2/dwz.exp: p the_int

and on powerpc64 target, we even can't get function main from object
file,

disassemble main^M
No function contains specified address.^M
(gdb) FAIL: gdb.dwarf2/dwz.exp: disassemble main

This patch is to use MACRO_AT_func attribute to get the main's start
address and end address correctly, and also remove some code dwz.exp
getting main's length.  This patch fixes fails on both thumb mode and
powerpc64 target.

PASS: gdb.dwarf2/dwz.exp: p other_int
PASS: gdb.dwarf2/dwz.exp: p the_int

gdb/testsuite:

2014-10-24  Yao Qi  <yao@codesourcery.com>

	* gdb.dwarf2/dwz.exp: Remove the code to compile main.c to
	object and get function length.
	(Dwarf::assemble): Replace name, low_pc and high_pc attributes
	with MACRO_AT_func.
	(top-level): Replace gdb_compile and clean_restart with
	prepare_for_testing.
	* gdb.dwarf2/main.c (main): Add label main_label.
---
 gdb/testsuite/gdb.dwarf2/dwz.exp | 60 ++--------------------------------------
 gdb/testsuite/gdb.dwarf2/main.c  |  1 +
 2 files changed, 4 insertions(+), 57 deletions(-)

diff --git a/gdb/testsuite/gdb.dwarf2/dwz.exp b/gdb/testsuite/gdb.dwarf2/dwz.exp
index 9175f9e..c7ecc2b 100644
--- a/gdb/testsuite/gdb.dwarf2/dwz.exp
+++ b/gdb/testsuite/gdb.dwarf2/dwz.exp
@@ -22,65 +22,18 @@ if {![dwarf2_support]} {
 
 standard_testfile main.c dwz.S
 
-if  {[gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile}1.o \
-	  object {nodebug}] != ""} {
-    return -1
-}
-
-# Start GDB and load object file, compute the function length which is
-# needed in the Dwarf Assembler below.
-clean_restart ${testfile}1.o
-
-set main_length ""
-set test "disassemble main"
-gdb_test_multiple $test $test {
-    -re ".*$hex <\\+($decimal)>:\[^\r\n\]+\r\nEnd of assembler dump\.\r\n$gdb_prompt $" {
-	set main_length $expect_out(1,string)
-	pass $test
-    }
-}
-
-if { $main_length == "" } {
-    # Bail out here, because we can't do the following tests if
-    # $main_length is unknown.
-    return -1
-}
-
-# Compute the size of the last instruction.
-
-set test "x/2i main+$main_length"
-gdb_test_multiple $test $test {
-    -re ".*($hex) <main\\+$main_length>:\[^\r\n\]+\r\n\[ \]+($hex).*\.\r\n$gdb_prompt $" {
-	set start $expect_out(1,string)
-	set end $expect_out(2,string)
-
-	set main_length [expr $main_length + $end - $start]
-	pass $test
-    }
-}
-
-if { $main_length == "" } {
-    # Bail out here, because we can't do the following tests if
-    # $main_length is unknown.
-    return -1
-}
-
-gdb_exit
-
 # Create the DWARF.
 set asm_file [standard_output_file $srcfile2]
 Dwarf::assemble $asm_file {
     declare_labels partial_label int_label int_label2
-    global main_length
+    global srcdir subdir srcfile
 
     extern main
 
     cu {} {
 	partial_label: partial_unit {} {
 	    subprogram {
-		{name main}
-		{low_pc main addr}
-		{high_pc "main + $main_length" addr}
+ 		{MACRO_AT_func { main ${srcdir}/${subdir}/${srcfile} }}
 	    }
 	}
     }
@@ -128,17 +81,10 @@ Dwarf::assemble $asm_file {
     }
 }
 
-if  {[gdb_compile $asm_file ${binfile}2.o object {nodebug}] != ""} {
+if [prepare_for_testing ${testfile}.exp $testfile "${asm_file} ${srcfile}" {}] {
     return -1
 }
 
-if  {[gdb_compile [list ${binfile}1.o ${binfile}2.o] \
-	  "${binfile}" executable {}] != ""} {
-    return -1
-}
-
-clean_restart ${testfile}
-
 if ![runto_main] {
     return -1
 }
diff --git a/gdb/testsuite/gdb.dwarf2/main.c b/gdb/testsuite/gdb.dwarf2/main.c
index 3ddd194..e6d4715 100644
--- a/gdb/testsuite/gdb.dwarf2/main.c
+++ b/gdb/testsuite/gdb.dwarf2/main.c
@@ -20,5 +20,6 @@
 int
 main()
 {
+  asm ("main_label: .globl main_label");
   return 0;
 }
-- 
1.9.3


  parent reply	other threads:[~2014-10-25  0:18 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-25  0:17 [PATCH 0/6] Use correct function address in dwarf assembler Yao Qi
2014-10-25  0:18 ` [PATCH 2/6] DW attribute macro MACRO_AT_func and MACRO_AT_range Yao Qi
2014-11-04 22:50   ` Doug Evans
2014-11-05  1:54     ` Yao Qi
2014-11-07 16:54       ` Doug Evans
2014-11-10  2:04         ` Yao Qi
2014-11-10 19:44           ` Doug Evans
2014-11-11  2:05             ` Yao Qi
2014-11-12  7:01               ` Doug Evans
2014-11-14  1:00                 ` Yao Qi
2014-11-04 22:59   ` Doug Evans
2014-10-25  0:18 ` [PATCH 4/6] Use Dwarf::assemble in implptr-optimized-out.exp Yao Qi
2014-11-04 22:53   ` Doug Evans
2014-10-25  0:18 ` [PATCH 6/6] Fix dw2-ifort-parameter.exp fail with clang Yao Qi
2014-11-04 22:54   ` Doug Evans
2014-10-25  0:18 ` [PATCH 5/6] Fix implptr-optimized-out.exp fail Yao Qi
2014-11-04 22:53   ` Doug Evans
2014-10-25  0:18 ` [PATCH 1/6] New proc _handle_attribute Yao Qi
2014-11-04 22:48   ` Doug Evans
2014-10-25  0:18 ` Yao Qi [this message]
2014-11-04 22:51   ` [PATCH 3/6] Get start and end address of main in dwz.exp Doug Evans
2014-11-04 23:01 ` [PATCH 0/6] Use correct function address in dwarf assembler Doug Evans

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=1414195968-3333-4-git-send-email-yao@codesourcery.com \
    --to=yao@codesourcery.com \
    --cc=gdb-patches@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