aboutsummaryrefslogtreecommitdiff
path: root/binutils/testsuite
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2009-07-14 16:57:18 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2009-07-14 16:57:18 +0000
commit01a8f077edb6f09060c339831a9b3c7e5f45c812 (patch)
tree3fefc13e20780b54fb1e22ba7fd1b4a36e0787b4 /binutils/testsuite
parent140033b39116ffc7d6ca946c43c19880e2e48a0c (diff)
downloadgdb-01a8f077edb6f09060c339831a9b3c7e5f45c812.zip
gdb-01a8f077edb6f09060c339831a9b3c7e5f45c812.tar.gz
gdb-01a8f077edb6f09060c339831a9b3c7e5f45c812.tar.bz2
binutils/
Support unordered .debug_info references to .debug_ranges. * dwarf.c (struct range_entry, range_entry_compar): New. (display_debug_ranges): Remove variables last_offset, first, j, seen_first_offset, use_debug_info and next. New variables range_entries and range_entry_fill. Create the sorted copy range_entries. Remove the FIXME error on detected unordered references. * dwarf.h (debug_info <range_lists>): New comment. binutils/testsuite/ * binutils-all/objcopy.exp (testranges): New test. * binutils-all/testranges.d, binutils-all/testranges.s: New files.
Diffstat (limited to 'binutils/testsuite')
-rw-r--r--binutils/testsuite/ChangeLog5
-rw-r--r--binutils/testsuite/binutils-all/objcopy.exp1
-rw-r--r--binutils/testsuite/binutils-all/testranges.d14
-rw-r--r--binutils/testsuite/binutils-all/testranges.s57
4 files changed, 77 insertions, 0 deletions
diff --git a/binutils/testsuite/ChangeLog b/binutils/testsuite/ChangeLog
index 2c5db0c..cf8d81f 100644
--- a/binutils/testsuite/ChangeLog
+++ b/binutils/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-14 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * binutils-all/objcopy.exp (testranges): New test.
+ * binutils-all/testranges.d, binutils-all/testranges.s: New files.
+
2009-06-25 Christopher Faylor <me+cygwin@cgf.cx>
* binutils-all/objcopy.exp: Move XFAIL from objcopy_test to
diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp
index 5f63bbb..aa1da72 100644
--- a/binutils/testsuite/binutils-all/objcopy.exp
+++ b/binutils/testsuite/binutils-all/objcopy.exp
@@ -874,3 +874,4 @@ if [is_elf_format] {
run_dump_test "localize-hidden-1"
}
run_dump_test "localize-hidden-2"
+run_dump_test "testranges"
diff --git a/binutils/testsuite/binutils-all/testranges.d b/binutils/testsuite/binutils-all/testranges.d
new file mode 100644
index 0000000..5aa7912
--- /dev/null
+++ b/binutils/testsuite/binutils-all/testranges.d
@@ -0,0 +1,14 @@
+#PROG: objcopy
+#source: testranges.s
+#readelf: -wR --wide
+#name: unordered .debug_info references to .debug_ranges
+
+Contents of the .debug_ranges section:
+
+ Offset Begin End
+ 00000000 00000001 00000002
+ 00000000 <End of list>
+ 00000010 00000000 00000002
+ 00000010 <End of list>
+
+#pass
diff --git a/binutils/testsuite/binutils-all/testranges.s b/binutils/testsuite/binutils-all/testranges.s
new file mode 100644
index 0000000..565e1a2
--- /dev/null
+++ b/binutils/testsuite/binutils-all/testranges.s
@@ -0,0 +1,57 @@
+# Test .debug_info can reference .debug_ranges entries without ordering the
+# offsets strictly as increasing.
+
+ .text
+start:
+ .byte 1
+sub:
+ .byte 2
+end:
+
+ .section .debug_ranges,"",@progbits
+range:
+
+range_sub:
+ .long sub, end
+ .long 0, 0 # range terminator
+
+range_cu:
+ .long start, end
+ .long 0, 0 # range terminator
+
+ .section .debug_info,"",@progbits
+ .long debugE - debugS # Length of Compilation Unit Info
+debugS:
+ .value 0x2 # DWARF version number
+ .long abbrev0 # Offset Into Abbrev. Section
+ .byte 0x4 # Pointer Size (in bytes)
+
+ .uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit)
+ .long range_cu - range # DW_AT_ranges
+
+ .uleb128 0x2 # (DIE (0x6d) DW_TAG_subprogram)
+ .ascii "A\0" # DW_AT_name
+ .long range_sub - range # DW_AT_ranges
+debugE:
+
+ .section .debug_abbrev,"",@progbits
+abbrev0:
+ .uleb128 0x1 # (abbrev code)
+ .uleb128 0x11 # (TAG: DW_TAG_compile_unit)
+ .byte 0x0 # DW_children_no
+ .uleb128 0x55 # (DW_AT_ranges)
+ .uleb128 0x6 # (DW_FORM_data4)
+ .byte 0x0
+ .byte 0x0
+
+ .uleb128 0x2 # (abbrev code)
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
+ .byte 0x0 # DW_children_no
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0x8 # (DW_FORM_string)
+ .uleb128 0x55 # (DW_AT_ranges)
+ .uleb128 0x6 # (DW_FORM_data4)
+ .byte 0x0
+ .byte 0x0
+
+ .byte 0x0 # abbrevs terminator