Validate symbol file using build-id

Consumer part of the "build-id" attribute.

gdb/ChangeLog
2015-07-15  Aleksandar Ristovski  <aristovski@qnx.com
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	Validate symbol file using build-id.
	* NEWS (Changes since GDB 7.10): Add 'set validate-build-id'
	and 'show validate-build-id'.  Add build-id attribute.
	* solib-darwin.c (_initialize_darwin_solib): Assign validate value.
	* solib-dsbt.c (_initialize_dsbt_solib): Ditto.
	* solib-frv.c (_initialize_frv_solib): Ditto.
	* solib-spu.c (set_spu_solib_ops): Ditto.
	* solib-svr4.c: Include rsp-low.h.
	(NOTE_GNU_BUILD_ID_NAME): New define.
	(svr4_validate): New function.
	(svr4_copy_library_list): Duplicate field build_id.
	(library_list_start_library): Parse 'build-id' attribute.
	(svr4_library_attributes): Add 'build-id' attribute.
	(_initialize_svr4_solib): Assign validate value.
	* solib-target.c (solib.h): Include.
	(_initialize_solib_target): Assign validate value.
	* solib.c (validate_build_id, show_validate_build_id): New.
	(solib_map_sections): Use ops->validate.
	(clear_so): Free build_id.
	(default_solib_validate): New function.
	(_initialize_solib): Add "validate-build-id".
	* solib.h (default_solib_validate): New declaration.
	* solist.h (struct so_list): New fields 'build_idsz' and 'build_id'.
	(target_so_ops): New field 'validate'.

gdb/doc/ChangeLog
2015-07-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdb.texinfo (Files): Add 'set validate-build-id'
	and 'show validate-build-id'.
This commit is contained in:
Jan Kratochvil 2015-07-15 17:37:28 +02:00
parent 700ca40f6f
commit ca5268b6be
13 changed files with 279 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2015-07-15 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.texinfo (Files): Add 'set validate-build-id'
and 'show validate-build-id'.
2015-07-15 Aleksandar Ristovski <aristovski@qnx.com
Jan Kratochvil <jan.kratochvil@redhat.com>

View file

@ -17950,6 +17950,44 @@ libraries that were loaded by explicit user requests are not
discarded.
@end table
@table @code
@kindex set validate-build-id
@cindex override @value{GDBN} build-id check
@item set validate-build-id @var{mode}
Setting to override @value{GDBN} build-id check.
Inferior shared libraries and symbol files may contain unique build-id.
By default @value{GDBN} will ignore symbol files with non-matching build-id
while printing:
@smallexample
warning: Shared object "libfoo.so.1" could not be validated (remote
build ID 2bc1745e does not match local build ID a08f8767) and will be
ignored; or use 'set validate-build-id off'.
@end smallexample
Turning off this setting would load such symbol file while still printing:
@smallexample
warning: Shared object "libfoo.so.1" could not be validated (remote
build ID 2bc1745e does not match local build ID a08f8767) but it is
being loaded due to 'set validate-build-id off'.
@end smallexample
If remote build-id is present but it does not match local build-id (or local
build-id is not present) then this setting enables (@var{mode} is @code{off}) or
disables (@var{mode} is @code{on}) loading of such symbol file. On systems
where build-id is not present in the remote system this setting has no effect.
The default value is @code{on}.
Loading non-matching symbol file may confuse debugging including breakage
of backtrace output.
@kindex show validate-build-id
@item show validate-build-id
Display the current mode of build-id check override.
@end table
Sometimes you may wish that @value{GDBN} stops and gives you control
when any of shared library events happen. The best way to do this is
to use @code{catch load} and @code{catch unload} (@pxref{Set