old-cross-binutils/gdb/testsuite/gdb.dwarf2
Tom Tromey dc294be54c fix PR symtab/15597
This patch fixes gdb PR symtab/15597.

The bug is that the .gnu_debugaltlink section includes the build-id of
the alt file, but gdb does not use it.

This patch fixes the problem by changing gdb to do what it ought to
always have done: verify the build id of the file found using the
filename in .gnu_debugaltlink; and if that does not match, try to find
the correct debug file using the build-id and debug-file-directory.

This patch touches BFD.  Previously, gdb had its own code for parsing
.gnu_debugaltlink; I changed it to use the BFD functions after those
were introduced.  However, the BFD functions are incorrect -- they
assume that .gnu_debugaltlink is formatted like .gnu_debuglink.
However, it it is not.  Instead, it consists of a file name followed
by the build-id -- no alignment, and the build-id is not a CRC.

Fixing this properly is a bit of a pain.  But, because
separate_alt_debug_file_exists just has a FIXME for the build-id case,
I did not fix it properly.  Instead I introduced a hack.  This leaves
BFD working just as well as it did before my patch.

I'm willing to do something better here but I could use some guidance
as to what.  It seems that the build-id code in BFD is largely punted
on.

FWIW gdb is the only user of bfd_get_alt_debug_link_info outside of
BFD itself.

I moved the build-id logic out of elfread.c and into a new file.
This seemed cleanest to me.

Writing a test case was a bit of a pain.  I added a couple new
features to the DWARF assembler to handle this.

Built and regtested on x86-64 Fedora 18.

	* bfd-in2.h: Rebuild.
	* opncls.c (bfd_get_alt_debug_link_info): Add buildid_len
	parameter.  Change type of buildid_out.  Update.
	(get_alt_debug_link_info_shim): New function.
	(bfd_follow_gnu_debuglink): Use it.

	* Makefile.in (SFILES): Add build-id.c.
	(HFILES_NO_SRCDIR): Add build-id.h.
	* build-id.c: New file, largely from elfread.c.  Modified
	most functions.
	* build-id.h: New file.
	* dwarf2read.c (dwarf2_get_dwz_file): Update for change to
	bfd_get_alt_debug_link_info.  Verify dwz file's build-id.
	Search for dwz file using build-id.
	* elfread.c (build_id_bfd_get, build_id_verify)
	(build_id_to_debug_filename, find_separate_debug_file): Remove.

	* gdb.dwarf2/dwzbuildid.exp: New file.
	* lib/dwarf.exp (Dwarf::_section): Add "flags" and "type"
	parameters.
	(Dwarf::_defer_output): Change "section" parameter to
	"section_spec"; update.
	(Dwarf::gnu_debugaltlink, Dwarf::_note, Dwarf::build_id): New
	procs.
2013-10-08 19:56:15 +00:00
..
callframecfa.exp
callframecfa.S Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
clztest.c
clztest.exp fix some gdb.dwarf2 tests for parallel safety 2013-08-22 13:39:13 +00:00
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 introduce gdb_remote_download and finish parallel fixes in gdb.dwarf2 2013-08-22 13:44:16 +00:00
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 introduce gdb_remote_download and finish parallel fixes in gdb.dwarf2 2013-08-22 13:44:16 +00:00
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 Update some copyright years. 2013-02-12 18:27:29 +00:00
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 gdb/ 2013-01-17 20:40:44 +00:00
dw2-dos-drive.S gdb/ 2013-01-17 20:40:44 +00:00
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 Update some copyright years. 2013-02-12 18:27:29 +00:00
dw2-entry-value-main.c
dw2-entry-value.exp
dw2-entry-value.S
dw2-error.c Update some copyright years. 2013-02-12 18:27:29 +00:00
dw2-error.exp * gdb.dwarf2/dw2-error.exp: Pass test name to "file" test. 2013-01-23 21:04:45 +00:00
dw2-error.S Update some copyright years. 2013-02-12 18:27:29 +00:00
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 * lib/future.exp (gdb_find_objcopy, gdb_find_readelf): New procs. 2013-09-20 21:47:06 +00:00
dw2-inline-param.S
dw2-intercu.exp introduce gdb_remote_download and finish parallel fixes in gdb.dwarf2 2013-08-22 13:44:16 +00:00
dw2-intercu.S
dw2-intermix.exp introduce gdb_remote_download and finish parallel fixes in gdb.dwarf2 2013-08-22 13:44:16 +00:00
dw2-intermix.S
dw2-linkage-name-trust-main.cc
dw2-linkage-name-trust.exp
dw2-linkage-name-trust.S
dw2-minsym-in-cu.exp fix some gdb.dwarf2 tests for parallel safety 2013-08-22 13:39:13 +00:00
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 gdb/testsuite/ 2013-03-15 01:41:29 +00:00
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 introduce gdb_remote_download and finish parallel fixes in gdb.dwarf2 2013-08-22 13:44:16 +00:00
dw2-producer.S
dw2-ranges.c Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
dw2-ranges.exp gdb/testsuite/ 2013-03-14 13:34:06 +00:00
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-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 http://sourceware.org/ml/gdb-patches/2013-07/msg00059.html 2013-07-04 11:11:25 +00:00
dw2-reg-undefined.exp Print registers not saved in the frame as "<not saved>" instead of "<optimized out>". 2013-10-02 16:15:46 +00:00
dw2-reg-undefined.S http://sourceware.org/ml/gdb-patches/2013-07/msg00059.html 2013-07-04 11:11:25 +00:00
dw2-restore.exp
dw2-restore.S Fix formating in copyright headers. 2013-06-07 14:39:33 +00:00
dw2-restrict.c Update some copyright years. 2013-02-12 18:27:29 +00:00
dw2-restrict.exp Update some copyright years. 2013-02-12 18:27:29 +00:00
dw2-restrict.S Update some copyright years. 2013-02-12 18:27:29 +00:00
dw2-simple-locdesc.exp
dw2-simple-locdesc.S
dw2-skip-prologue.c
dw2-skip-prologue.exp * lib/future.exp (gdb_find_objcopy, gdb_find_readelf): New procs. 2013-09-20 21:47:06 +00:00
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
dwp-symlink.c Support .dwp with the name of symlinked binary file 2013-09-24 14:03:43 +00:00
dwp-symlink.exp Support .dwp with the name of symlinked binary file 2013-09-24 14:03:43 +00:00
dwz.exp fix recursively_compute_inclusions and add dwz test case 2013-08-07 19:57:51 +00:00
dwzbuildid.exp fix PR symtab/15597 2013-10-08 19:56:15 +00:00
file1.txt
fission-base.c
fission-base.exp * lib/dwarf.exp (build_executable_from_fission_assembler): New proc. 2013-09-20 22:43:28 +00:00
fission-base.S * lib/dwarf.exp (build_executable_from_fission_assembler): New proc. 2013-09-20 22:43:28 +00:00
fission-loclists.exp * lib/dwarf.exp (build_executable_from_fission_assembler): New proc. 2013-09-20 22:43:28 +00:00
fission-loclists.S * lib/dwarf.exp (build_executable_from_fission_assembler): New proc. 2013-09-20 22:43:28 +00:00
fission-mix.c PR symtab/15691 2013-08-02 00:33:07 +00:00
fission-mix.exp PR symtab/15691 2013-08-02 00:33:07 +00:00
fission-mix.h PR symtab/15691 2013-08-02 00:33:07 +00:00
fission-mix2.c PR symtab/15691 2013-08-02 00:33:07 +00:00
fission-reread.exp * lib/dwarf.exp (build_executable_from_fission_assembler): New proc. 2013-09-20 22:43:28 +00:00
fission-reread.S * lib/dwarf.exp (build_executable_from_fission_assembler): New proc. 2013-09-20 22:43:28 +00:00
gdb-index.exp * lib/future.exp (gdb_find_objcopy, gdb_find_readelf): New procs. 2013-09-20 21:47:06 +00:00
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 introduce gdb_remote_download and finish parallel fixes in gdb.dwarf2 2013-08-22 13:44:16 +00:00
mac-fileno.S gdb/testsuite/gdb.dwarf2: Replace @ with % for ARM compatability. 2013-07-19 10:01:26 +00:00
main.c
Makefile.in PR symtab/15885 2013-08-26 18:43:40 +00:00
member-ptr-forwardref.exp
member-ptr-forwardref.S gdb/testsuite/gdb.dwarf2: Replace @ with % for ARM compatability. 2013-07-19 10:01:26 +00:00
method-ptr.cc PR c++/14998: 2013-01-31 17:41:09 +00:00
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-optimized-out.c value_fetch_lazy, ensure parent is not lazy and check parent for validity. 2013-07-30 15:05:01 +00:00
pieces-optimized-out.exp Don't raise an error for optimized out sub-fields. 2013-07-30 15:36:18 +00:00
pieces-optimized-out.S value_fetch_lazy, ensure parent is not lazy and check parent for validity. 2013-07-30 15:05:01 +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 gdb/testsuite/gdb.dwarf2: Replace @ with % for ARM compatability. 2013-07-19 10:01:26 +00:00
subrange.exp * lib/dwarf.exp (Dwarf): New variable _abbrev_section. 2013-05-20 22:11:37 +00:00
trace-crash.exp PR c++/14999: 2013-01-18 18:32:35 +00:00
trace-crash.S PR c++/14999: 2013-01-18 18:32:35 +00:00
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-notconst.c
watch-notconst.exp
watch-notconst2.c
watch-notconst2.S