* bfdlink.h (struct bfd_link_info): Delete emit_note_gnu_build_id.
bfd/
	* configure.in: Bump version to 2.23.52.
	* elf-bfd.h (struct elf_build_id_info): New.
	(struct elf_obj_tdata): Delete after_write_object_contents,
	after_write_object_contents_info and build_id_size.  Make build_id
	a pointer to struct elf_build_id_info.
	* elf.c (_bfd_elf_write_object_contents): Style.  Update
	after_write_ibject_contents invocation.
	(elfobj_grok_gnu_build_id): Update for new build_id struct.  Don't
	allow zero size notes.
	* configure: Regenerate.
gdb/
	* elfread.c (struct build_id): Delete.  Use struct elf_build_id
	throughout file instead.
	(build_id_bfd_get): Update to use new elf_tdata build_id field.
	Don't xmalloc return value.
	(build_id_verify): Similarly.  Don't xfree.
	(build_id_to_debug_filename): Update.
	(find_separate_debug_file_by_buildid): Update, don't xfree.
ld/
	* emultempl/elf32.em (emit_note_gnu_build_id): New static var.
	Replace all info->emit_note_gnu_build_id refs.
	(id_note_section_size): Rename from
	gld${EMULATION_NAME}_id_note_section_size.
	(struct build_id_info): Delete.
	(write_build_id): Rename from
	gld${EMULATION_NAME}_write_build_id_section.
	Update elf_tdata usage.  Style, formatting.
	(setup_build_id): New function.
	(gld${EMULATION_NAME}_after_open): Use setup_build_id.
This commit is contained in:
Alan Modra 2013-02-18 23:50:32 +00:00
parent 273e4eecfe
commit 30e8ee25e3
11 changed files with 179 additions and 139 deletions

View file

@ -1,3 +1,13 @@
2013-02-19 Alan Modra <amodra@gmail.com>
* elfread.c (struct build_id): Delete. Use struct elf_build_id
throughout file instead.
(build_id_bfd_get): Update to use new elf_tdata build_id field.
Don't xmalloc return value.
(build_id_verify): Similarly. Don't xfree.
(build_id_to_debug_filename): Update.
(find_separate_debug_file_by_buildid): Update, don't xfree.
2013-02-18 Tom Tromey <tromey@redhat.com>
PR gdb/15102:
@ -1151,7 +1161,7 @@
2013-01-24 Tiago Stürmer Daitx  <tdaitx@linux.vnet.ibm.com>
* MAINTAINERS (Write After Approval): Add myself to the list.
* MAINTAINERS (Write After Approval): Add myself to the list.
2013-01-24 Tom Tromey <tromey@redhat.com>

View file

@ -1074,38 +1074,27 @@ elf_gnu_ifunc_resolver_return_stop (struct breakpoint *b)
update_breakpoint_locations (b, sals, sals_end);
}
struct build_id
{
size_t size;
gdb_byte data[1];
};
/* Locate NT_GNU_BUILD_ID from ABFD and return its content. */
static struct build_id *
static struct elf_build_id *
build_id_bfd_get (bfd *abfd)
{
struct build_id *retval;
if (!bfd_check_format (abfd, bfd_object)
|| bfd_get_flavour (abfd) != bfd_target_elf_flavour
|| elf_tdata (abfd)->build_id == NULL)
|| elf_tdata (abfd)->build_id == NULL
|| elf_tdata (abfd)->build_id->u.i.size == 0)
return NULL;
retval = xmalloc (sizeof *retval - 1 + elf_tdata (abfd)->build_id_size);
retval->size = elf_tdata (abfd)->build_id_size;
memcpy (retval->data, elf_tdata (abfd)->build_id, retval->size);
return retval;
return &elf_tdata (abfd)->build_id->u.i;
}
/* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */
static int
build_id_verify (const char *filename, struct build_id *check)
build_id_verify (const char *filename, struct elf_build_id *check)
{
bfd *abfd;
struct build_id *found = NULL;
struct elf_build_id *found;
int retval = 0;
/* We expect to be silent on the non-existing files. */
@ -1126,13 +1115,11 @@ build_id_verify (const char *filename, struct build_id *check)
gdb_bfd_unref (abfd);
xfree (found);
return retval;
}
static char *
build_id_to_debug_filename (struct build_id *build_id)
build_id_to_debug_filename (struct elf_build_id *build_id)
{
char *link, *debugdir, *retval = NULL;
VEC (char_ptr) *debugdir_vec;
@ -1191,7 +1178,7 @@ build_id_to_debug_filename (struct build_id *build_id)
static char *
find_separate_debug_file_by_buildid (struct objfile *objfile)
{
struct build_id *build_id;
struct elf_build_id *build_id;
build_id = build_id_bfd_get (objfile->obfd);
if (build_id != NULL)
@ -1199,7 +1186,6 @@ find_separate_debug_file_by_buildid (struct objfile *objfile)
char *build_id_name;
build_id_name = build_id_to_debug_filename (build_id);
xfree (build_id);
/* Prevent looping on a stripped .debug file. */
if (build_id_name != NULL
&& filename_cmp (build_id_name, objfile->name) == 0)