From 65ccb1090e1acfd3bf8af44175c3f7b1b6377906 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 15 Dec 2009 09:41:16 +0000 Subject: [PATCH] 2009-12-15 Tristan Gingold * machoread.c (macho_check_dsym): Read uuid directly from load command instead of from a fake section. --- gdb/ChangeLog | 5 +++++ gdb/machoread.c | 32 ++++++++------------------------ 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 122ead620e0..d73ddd38b0a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2009-12-15 Tristan Gingold + + * machoread.c (macho_check_dsym): Read uuid directly from load command + instead of from a fake section. + 2009-12-15 Tristan Gingold * machoread.c (macho_symtab_read): Add comments. Always set diff --git a/gdb/machoread.c b/gdb/machoread.c index e19e4e58a44..0194ee52162 100644 --- a/gdb/machoread.c +++ b/gdb/machoread.c @@ -519,9 +519,8 @@ macho_check_dsym (struct objfile *objfile) size_t base_len = strlen (base_name); char *dsym_filename = alloca (name_len + dsym_len + base_len + 1); bfd *dsym_bfd; - asection *sect; - bfd_byte main_uuid[16]; - bfd_byte dsym_uuid[16]; + bfd_mach_o_load_command *main_uuid; + bfd_mach_o_load_command *dsym_uuid; strcpy (dsym_filename, objfile->name); strcpy (dsym_filename + name_len, DSYM_SUFFIX); @@ -530,19 +529,12 @@ macho_check_dsym (struct objfile *objfile) if (access (dsym_filename, R_OK) != 0) return NULL; - sect = bfd_get_section_by_name (objfile->obfd, "LC_UUID"); - if (sect == NULL) + if (bfd_mach_o_lookup_command (objfile->obfd, + BFD_MACH_O_LC_UUID, &main_uuid) == 0) { warning (_("can't find UUID in %s"), objfile->name); return NULL; } - if (!bfd_get_section_contents (objfile->obfd, sect, main_uuid, - 0, sizeof (main_uuid))) - { - warning (_("can't read UUID in %s"), objfile->name); - return NULL; - } - dsym_filename = xstrdup (dsym_filename); dsym_bfd = bfd_openr (dsym_filename, gnutarget); if (dsym_bfd == NULL) @@ -560,23 +552,16 @@ macho_check_dsym (struct objfile *objfile) return NULL; } - sect = bfd_get_section_by_name (dsym_bfd, "LC_UUID"); - if (sect == NULL) + if (bfd_mach_o_lookup_command (dsym_bfd, + BFD_MACH_O_LC_UUID, &dsym_uuid) == 0) { warning (_("can't find UUID in %s"), dsym_filename); bfd_close (dsym_bfd); xfree (dsym_filename); return NULL; } - if (!bfd_get_section_contents (dsym_bfd, sect, dsym_uuid, - 0, sizeof (dsym_uuid))) - { - warning (_("can't read UUID in %s"), dsym_filename); - bfd_close (dsym_bfd); - xfree (dsym_filename); - return NULL; - } - if (memcmp (dsym_uuid, main_uuid, sizeof (main_uuid))) + if (memcmp (dsym_uuid->command.uuid.uuid, main_uuid->command.uuid.uuid, + sizeof (main_uuid->command.uuid.uuid))) { warning (_("dsym file UUID doesn't match the one in %s"), objfile->name); bfd_close (dsym_bfd); @@ -584,7 +569,6 @@ macho_check_dsym (struct objfile *objfile) return NULL; } return dsym_bfd; - } static void -- 2.30.2