binutils-gdb/gdb/testsuite/gdb.dwarf2
Tom Tromey 5bd1ef568c Fix PR symtab/15391
PR symtab/15391 is a failure with the DW_OP_GNU_implicit_pointer
feature.

I tracked it down to a logic error in read_pieced_value.  The code
truncates this_size_bits according to the type size and offset too
early -- it should do it after taking bits_to_skip into account.

This patch fixes the bug.

While testing this, I also tripped across a latent bug because
indirect_pieced_value does not sign-extend where needed.  This patch
fixes this bug as well.

Finally, Pedro pointed out that a previous version implemented sign
extension incorrectly.  This version introduces a new gdb_sign_extend
function for this.  A couple of notes on this function:

* It has the gdb_ prefix to avoid clashes with various libraries that
  felt free to avoid proper namespacing.  There is a "sign_extend"
  function in a Tile GX header, in an SOM-related BFD header (and in
  sh64-tdep.c and as a macro in arm-wince-tdep.c, but those are
  ours...)

* I looked at all the sign extensions in gdb and didn't see ones that
  I felt comfortable converting to use this function; in large part
  because I don't have a good way to test the conversion.

Built and regtested on x86-64 Fedora 18.  New test cases included;
this required a minor addition to the DWARF assembler.  Note that the
DWARF CU made by implptrpiece.exp uses a funny pointer size in order
to show the sign-extension bug on all platforms.

	* dwarf2loc.c (read_pieced_value): Truncate this_size_bits
	after taking bits_to_skip into account.  Sign extend byte_offset.
	* utils.h (gdb_sign_extend): Declare.
	* utils.c (gdb_sign_extend): New function.

	* gdb.dwarf2/implptrpiece.exp: New file.
	* gdb.dwarf2/implptrconst.exp (d): New variable.
	Print d.
	* lib/dwarf2.exp (Dwarf::_location): Handle DW_OP_piece.
2013-06-18 18:11:19 +00:00
..
callframecfa.exp
callframecfa.S Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
clztest.c
clztest.exp
clztest.S
dup-psym.exp
dup-psym.S
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-parameter-type.exp
dw2-bad-parameter-type.S
dw2-basic.exp
dw2-basic.S
dw2-canonicalize-type.exp
dw2-canonicalize-type.S
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
dw2-compdir-oldgcc.S
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 * gdb.dwarf2/dw2-dir-file-name.exp: Don't use brace expansion, 2013-05-21 07:25:51 +00:00
dw2-dos-drive.exp
dw2-dos-drive.S
dw2-double-set-die-type.exp
dw2-double-set-die-type.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-ifort-parameter-debug.S
dw2-ifort-parameter.c
dw2-ifort-parameter.exp
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
dw2-minsym-in-cu.S
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
dw2-op-call.S
dw2-op-out-param.exp
dw2-op-out-param.S
dw2-op-stack-value.exp
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-ranges2.c Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
dw2-ranges3.c Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
dw2-ranges.c Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
dw2-ranges.exp
dw2-ref-missing-frame-func.c
dw2-ref-missing-frame-main.c
dw2-ref-missing-frame.exp
dw2-ref-missing-frame.S
dw2-restore.exp
dw2-restore.S Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
dw2-restrict.c
dw2-restrict.exp
dw2-restrict.S
dw2-simple-locdesc.exp
dw2-simple-locdesc.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-unresolved-main.c
dw2-unresolved.exp
dw2-unresolved.S
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
dw4-sig-types.h
file1.txt
fission-base.c
fission-base.exp
fission-base.S
fission-loclists.exp
fission-loclists.S
fission-reread.exp
fission-reread.S
implptr-64bit.exp
implptr-64bit.S
implptr-optimized-out.exp
implptr-optimized-out.S
implptr.c
implptr.exp
implptr.S
implptrconst.c * dwarf2loc.c (invalid_synthetic_pointer): Move earlier. 2013-05-06 19:44:04 +00:00
implptrconst.exp Fix PR symtab/15391 2013-06-18 18:11:19 +00:00
implptrpiece.exp Fix PR symtab/15391 2013-06-18 18:11:19 +00:00
mac-fileno.exp
mac-fileno.S
main.c
Makefile.in
member-ptr-forwardref.exp
member-ptr-forwardref.S
method-ptr.cc
method-ptr.exp * lib/dwarf.exp (Dwarf): New variable _abbrev_section. 2013-05-20 22:11:37 +00:00
missing-sig-type.exp * lib/dwarf.exp (Dwarf): New variable _abbrev_section. 2013-05-20 22:11:37 +00:00
nostaticblock.exp * lib/dwarf.exp (Dwarf): New variable _abbrev_section. 2013-05-20 22:11:37 +00:00
pieces.c
pieces.exp
pieces.S Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
pr10770.c
pr10770.exp
pr11465.exp
pr11465.S
pr13961.exp
pr13961.S
subrange.exp * lib/dwarf.exp (Dwarf): New variable _abbrev_section. 2013-05-20 22:11:37 +00:00
trace-crash.exp
trace-crash.S
typeddwarf-amd64.S
typeddwarf.c
typeddwarf.exp
typeddwarf.S
valop.exp
valop.S Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
watch-notconst2.c
watch-notconst2.S
watch-notconst.c
watch-notconst.exp