old-cross-binutils/gdb/testsuite/gdb.dwarf2
Andrew Burgess 28d2bfb9c3 gdb: Handle multiple base address in debug_ranges data.
It is possible to use multiple base addresses within a single address
range series, within the .debug_ranges section.  The following is a
simplified example for 32-bit addresses:

  .section ".debug_ranges"
  .4byte	0xffffffff
  .4byte	BASE_1
  .4byte	START_OFFSET_1
  .4byte	END_OFFSET_1
  .4byte	START_OFFSET_2
  .4byte	END_OFFSET_2
  .4byte	0xffffffff
  .4byte	BASE_2
  .4byte	START_OFFSET_3
  .4byte	END_OFFSET_3
  .4byte	0
  .4byte	0

In this example START/END 1 and 2 are relative to BASE_1, while
START/END 3 are relative to BASE_2.

Currently gdb does not correctly parse this DWARF, resulting in
corrupted address range information.  This commit fixes this issue, and
adds a new test to cover this case.

In order to support testing of this feature extensions were made to the
testsuite dwarf assembler, additional functionality was added to the
.debug_line generation function, and a new function for generating the
.debug_ranges section was added.

gdb/ChangeLog:

	* dwarf2read.c (dwarf2_ranges_read): Unify and fix base address
	reading code.

gdb/testsuite/ChangeLog:

	* gdb.dwarf2/dw2-ranges-base.c: New file.
	* gdb.dwarf2/dw2-ranges-base.exp: New file.
	* lib/dwarf.exp (namespace eval Dwarf): Add new variables to
	support additional line table, and debug ranges generation.
	(Dwarf::ranges): New function, generate .debug_ranges.
	(Dwarf::lines): Support generating simple line table programs.
	(Dwarf::assemble): Initialise new namespace variables.
2015-12-10 09:53:46 +00:00
..
arr-stride.c
arr-stride.exp
arr-subrange.c
arr-subrange.exp
atomic-type.exp gdb.dwarf2: Define and use gdb_target_symbol for symbol prefixes 2015-11-05 15:22:51 -07:00
atomic.c
bad-regnum.c PR symtab/17391 gdb internal error: assertion fails in regcache.c:178 2015-10-26 16:05:21 -07:00
bad-regnum.exp PR symtab/17391 gdb internal error: assertion fails in regcache.c:178 2015-10-26 16:05:21 -07:00
callframecfa.exp
callframecfa.S
clztest.c
clztest.exp
clztest.S
comp-unit-lang.c Fix language of compilation unit with unknown file extension 2015-08-20 12:30:08 +01:00
comp-unit-lang.exp Fix language of compilation unit with unknown file extension 2015-08-20 12:30:08 +01:00
corrupt.c
corrupt.exp
count.exp
data-loc.c
data-loc.exp gdb.dwarf2: Don't hardcode certain constants in Dwarf::assemble constructs 2015-11-07 11:08:37 -07:00
dup-psym.exp
dup-psym.S
dw2-abs-hi-pc-hello-dbg.S
dw2-abs-hi-pc-hello.c
dw2-abs-hi-pc-world-dbg.S
dw2-abs-hi-pc-world.c
dw2-abs-hi-pc.c
dw2-abs-hi-pc.exp
dw2-ada-ffffffff.exp
dw2-ada-ffffffff.S
dw2-anon-mptr.exp
dw2-anon-mptr.S
dw2-anonymous-func.exp
dw2-anonymous-func.S
dw2-bad-mips-linkage-name.c dwarf2read.c: Check type of string valued attributes prior to decoding. 2015-08-19 11:48:13 -07:00
dw2-bad-mips-linkage-name.exp gdb.dwarf2: Define and use gdb_target_symbol for symbol prefixes 2015-11-05 15:22:51 -07:00
dw2-bad-parameter-type.exp
dw2-bad-parameter-type.S
dw2-bad-unresolved.c default_read_var_value <LOC_UNRESOLVED>: Include minsym kind in error message. 2015-09-18 21:43:38 -07:00
dw2-bad-unresolved.exp default_read_var_value <LOC_UNRESOLVED>: Include minsym kind in error message. 2015-09-18 21:43:38 -07:00
dw2-basic.exp
dw2-basic.S
dw2-canonicalize-type.exp testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-canonicalize-type.S testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-case-insensitive-debug.S
dw2-case-insensitive.c
dw2-case-insensitive.exp
dw2-common-block.exp
dw2-common-block.S
dw2-compdir-oldgcc.exp testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-compdir-oldgcc.S testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-compressed.exp
dw2-compressed.S
dw2-const.exp
dw2-const.S
dw2-cp-infcall-ref-static-main.c
dw2-cp-infcall-ref-static.exp
dw2-cp-infcall-ref-static.S
dw2-cu-size.exp
dw2-cu-size.S
dw2-dir-file-name.c
dw2-dir-file-name.exp
dw2-dos-drive.exp
dw2-dos-drive.S
dw2-double-set-die-type.exp
dw2-double-set-die-type.S
dw2-dummy-cu.exp Fix crash when reading dummy CUs. 2015-07-23 09:25:49 -07:00
dw2-dummy-cu.S Fix crash when reading dummy CUs. 2015-07-23 09:25:49 -07:00
dw2-dup-frame.c
dw2-dup-frame.exp
dw2-dup-frame.S
dw2-empty-namespace.exp
dw2-empty-namespace.S
dw2-empty-pc-range.exp
dw2-empty-pc-range.S
dw2-entry-value-main.c
dw2-entry-value.exp
dw2-entry-value.S
dw2-error.c
dw2-error.exp
dw2-error.S
dw2-filename.exp
dw2-filename.S
dw2-icc-opaque.exp
dw2-icc-opaque.S
dw2-icycle.c
dw2-icycle.exp
dw2-icycle.S
dw2-ifort-parameter.c
dw2-ifort-parameter.exp gdb.dwarf2: Define and use gdb_target_symbol for symbol prefixes 2015-11-05 15:22:51 -07:00
dw2-inheritance.exp
dw2-inheritance.S
dw2-inline-break.exp
dw2-inline-break.S
dw2-inline-param-main.c
dw2-inline-param.exp
dw2-inline-param.S
dw2-intercu.exp
dw2-intercu.S
dw2-intermix.exp
dw2-intermix.S
dw2-linkage-name-trust-main.cc
dw2-linkage-name-trust.exp
dw2-linkage-name-trust.S
dw2-minsym-in-cu.exp testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-minsym-in-cu.S testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-modula2-self-type.exp
dw2-modula2-self-type.S
dw2-namespaceless-anonymous.exp
dw2-namespaceless-anonymous.S
dw2-noloc-main.c
dw2-noloc.exp
dw2-noloc.S
dw2-objfile-overlap-inner.S
dw2-objfile-overlap-outer.S
dw2-objfile-overlap.exp
dw2-op-call.exp Rename dwarf2 to dwarf in "set debug" and maintenance commands. 2015-05-26 16:50:57 -07:00
dw2-op-call.S
dw2-op-out-param.exp
dw2-op-out-param.S
dw2-op-stack-value.exp testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-op-stack-value.S
dw2-param-error-main.c
dw2-param-error.exp
dw2-param-error.S
dw2-producer.exp
dw2-producer.S
dw2-ranges-base.c gdb: Handle multiple base address in debug_ranges data. 2015-12-10 09:53:46 +00:00
dw2-ranges-base.exp gdb: Handle multiple base address in debug_ranges data. 2015-12-10 09:53:46 +00:00
dw2-ranges.c
dw2-ranges.exp
dw2-ranges2.c
dw2-ranges3.c
dw2-ref-missing-frame-func.c
dw2-ref-missing-frame-main.c
dw2-ref-missing-frame.exp
dw2-ref-missing-frame.S
dw2-reg-undefined.c
dw2-reg-undefined.exp
dw2-reg-undefined.S
dw2-regno-invalid.exp gdb.dwarf2: Define and use gdb_target_symbol for symbol prefixes 2015-11-05 15:22:51 -07:00
dw2-restore.exp
dw2-restore.S
dw2-restrict.c
dw2-restrict.exp
dw2-restrict.S
dw2-simple-locdesc.exp
dw2-simple-locdesc.S
dw2-single-line-discriminators.c
dw2-single-line-discriminators.exp
dw2-single-line-discriminators.S
dw2-skip-prologue.c
dw2-skip-prologue.exp
dw2-skip-prologue.S
dw2-stack-boundary.exp
dw2-stack-boundary.S
dw2-strp.exp
dw2-strp.S
dw2-undefined-ret-addr.c
dw2-undefined-ret-addr.exp
dw2-undefined-ret-addr.S
dw2-unresolved-main.c testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-unresolved.exp testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-unresolved.S testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
dw2-var-zero-addr.exp
dw2-var-zero-addr.S
dw4-sig-type-unused.exp
dw4-sig-type-unused.S
dw4-sig-types-b.cc
dw4-sig-types.cc
dw4-sig-types.exp Rename dwarf2 to dwarf in "set debug" and maintenance commands. 2015-05-26 16:50:57 -07:00
dw4-sig-types.h
dwp-symlink.c
dwp-symlink.exp
dwz.exp
dwzbuildid.exp
dynarr-ptr.c
dynarr-ptr.exp gdb.dwarf2: Don't hardcode certain constants in Dwarf::assemble constructs 2015-11-07 11:08:37 -07:00
enum-type.exp
file1.txt
fission-base.c
fission-base.exp
fission-base.S
fission-loclists.exp
fission-loclists.S
fission-mix.c
fission-mix.exp
fission-mix.h
fission-mix2.c
fission-reread.exp testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
fission-reread.S testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
gdb-index.exp
implptr-64bit.exp
implptr-64bit.S
implptr-optimized-out.exp
implptr.c
implptr.exp Rename dwarf2 to dwarf in "set debug" and maintenance commands. 2015-05-26 16:50:57 -07:00
implptr.S
implptrconst.c
implptrconst.exp
implptrpiece.exp
mac-fileno.exp
mac-fileno.S
main.c
Makefile.in
member-ptr-forwardref.exp
member-ptr-forwardref.S
method-ptr.cc
method-ptr.exp
missing-sig-type.exp
nostaticblock.exp
opaque-type-lookup-2.c PR symtab/18258 2015-05-27 11:50:38 -07:00
opaque-type-lookup.c PR symtab/18258 2015-05-27 11:50:38 -07:00
opaque-type-lookup.exp PR symtab/18258 2015-05-27 11:50:38 -07:00
pieces-optimized-out.c
pieces-optimized-out.exp
pieces-optimized-out.S
pieces.c
pieces.exp
pieces.S
pr10770.c
pr10770.exp
pr11465.exp
pr11465.S
pr13961.exp testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
pr13961.S testsuite: Define and use gdb_target_symbol_prefix_flags_asm. 2015-11-07 11:03:49 -07:00
staticvirtual.exp Fix gdb.dwarf2/staticvirtual.exp regexp. 2015-10-02 13:12:56 -07:00
subrange.exp
symtab-producer.exp
trace-crash.exp
trace-crash.S
typeddwarf-amd64.S
typeddwarf.c
typeddwarf.exp
typeddwarf.S
valop.exp
valop.S
watch-notconst.c
watch-notconst.exp
watch-notconst2.c
watch-notconst2.S