aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2007-08-29 20:03:43 +0000
committerDaniel Jacobowitz <drow@false.org>2007-08-29 20:03:43 +0000
commit851feff8738f722820d25f7e90fc58babc5421be (patch)
tree0d84c0dbb79f8589ea9b2cbe4748d28a924072bf
parent5cee3fe66dd1a884b87a3b518ab8beaa9cf73d31 (diff)
downloadfsf-binutils-gdb-851feff8738f722820d25f7e90fc58babc5421be.zip
fsf-binutils-gdb-851feff8738f722820d25f7e90fc58babc5421be.tar.gz
fsf-binutils-gdb-851feff8738f722820d25f7e90fc58babc5421be.tar.bz2
* dwarf2dbg.c (dwarf2_directive_loc): Emit duplicate .loc directives.
* gas/lns/lns-duplicate.d, gas/lns/lns-duplicate.s: New. * gas/lns/lns.exp: Run lns-duplicate.
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/dwarf2dbg.c5
-rw-r--r--gas/testsuite/ChangeLog5
-rw-r--r--gas/testsuite/gas/lns/lns-duplicate.d10
-rw-r--r--gas/testsuite/gas/lns/lns-duplicate.s5
-rw-r--r--gas/testsuite/gas/lns/lns.exp2
6 files changed, 31 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 21aaf0d..271643f 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2007-08-29 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * dwarf2dbg.c (dwarf2_directive_loc): Emit duplicate .loc directives.
+
2007-08-28 Daniel Jacobowitz <dan@codesourcery.com>
* doc/c-arc.texi: Fix typo.
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index 93b5f48..39e434c 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -570,6 +570,11 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
{
offsetT filenum, line;
+ /* If we see two .loc directives in a row, force the first one to be
+ output now. */
+ if (loc_directive_seen)
+ dwarf2_emit_insn (0);
+
filenum = get_absolute_expression ();
SKIP_WHITESPACE ();
line = get_absolute_expression ();
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 8127ac8..39c07f0 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-08-29 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * gas/lns/lns-duplicate.d, gas/lns/lns-duplicate.s: New.
+ * gas/lns/lns.exp: Run lns-duplicate.
+
2007-08-29 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/i386.exp: Run x86-64-reg and x86-64-reg-intel.
diff --git a/gas/testsuite/gas/lns/lns-duplicate.d b/gas/testsuite/gas/lns/lns-duplicate.d
new file mode 100644
index 0000000..badf1a2
--- /dev/null
+++ b/gas/testsuite/gas/lns/lns-duplicate.d
@@ -0,0 +1,10 @@
+#readelf: -wl
+#name: lns-duplicate
+Dump of debug contents of section \.debug_line:
+#...
+ Line Number Statements:
+ Extended opcode 2: set Address to .*
+ Copy
+ Set basic block
+ .* by 1 to 2
+#pass
diff --git a/gas/testsuite/gas/lns/lns-duplicate.s b/gas/testsuite/gas/lns/lns-duplicate.s
new file mode 100644
index 0000000..9fea2fe
--- /dev/null
+++ b/gas/testsuite/gas/lns/lns-duplicate.s
@@ -0,0 +1,5 @@
+ .loc_mark_labels 1
+ .file 1 "foo.s"
+ .loc 1 1 0
+ .loc 1 2 0
+.Llabel:
diff --git a/gas/testsuite/gas/lns/lns.exp b/gas/testsuite/gas/lns/lns.exp
index 2373290..a192361 100644
--- a/gas/testsuite/gas/lns/lns.exp
+++ b/gas/testsuite/gas/lns/lns.exp
@@ -4,6 +4,8 @@ if ![is_elf_format] then {
run_list_test "lns-diag-1" ""
+run_dump_test "lns-duplicate"
+
# ??? Won't work on targets that don't have a bare "nop" insn.
# Perhaps we could arrange for an include file or something that
# defined a macro...