From: Tom Tromey Date: Thu, 14 Mar 2013 20:11:12 +0000 (+0000) Subject: gdb X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cc0ea93c7531fe59c4d7d2b01b01acb9bbe0b7fd;p=binutils-gdb.git gdb * symfile.c (get_debug_link_info): Remove. (find_separate_debug_file_by_debuglink): Use bfd_get_debug_link_info. bfd * opncls.c (bfd_get_debug_link_info): Rename from get_debug_link_info. Export. Update comment. (find_separate_debug_file): Update. * bfd-in2.h: Rebuild. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 42d6c27dfa7..40bb0a1b8d2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2013-03-14 Tom Tromey + + * opncls.c (bfd_get_debug_link_info): Rename from + get_debug_link_info. Export. Update comment. + (find_separate_debug_file): Update. + * bfd-in2.h: Rebuild. + 2013-03-08 Venkataramanan Kumar * elf64-aarch64.c (elf_backend_can_gc_sections): Enable gc-section diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 524e97e78b0..2f49b1db932 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1049,6 +1049,8 @@ void *bfd_zalloc (bfd *abfd, bfd_size_type wanted); unsigned long bfd_calc_gnu_debuglink_crc32 (unsigned long crc, const unsigned char *buf, bfd_size_type len); +char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out); + char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir); struct bfd_section *bfd_create_gnu_debuglink_section diff --git a/bfd/opncls.c b/bfd/opncls.c index 6d61191a963..1217cea6b64 100644 --- a/bfd/opncls.c +++ b/bfd/opncls.c @@ -1,6 +1,6 @@ /* opncls.c -- open and close a BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Free Software Foundation, Inc. Written by Cygnus Support. @@ -1140,20 +1140,22 @@ bfd_calc_gnu_debuglink_crc32 (unsigned long crc, /* -INTERNAL_FUNCTION - get_debug_link_info +FUNCTION + bfd_get_debug_link_info SYNOPSIS - char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out); + char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out); DESCRIPTION fetch the filename and CRC32 value for any separate debuginfo associated with @var{abfd}. Return NULL if no such info found, - otherwise return filename and update @var{crc32_out}. + otherwise return filename and update @var{crc32_out}. The + returned filename is allocated with @code{malloc}; freeing it + is the responsibility of the caller. */ -static char * -get_debug_link_info (bfd *abfd, unsigned long *crc32_out) +char * +bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out) { asection *sect; unsigned long crc32; @@ -1261,7 +1263,7 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory) return NULL; } - base = get_debug_link_info (abfd, & crc32); + base = bfd_get_debug_link_info (abfd, & crc32); if (base == NULL) return NULL; diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3f1ce0e1369..1404f25576f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2013-03-14 Tom Tromey + + * symfile.c (get_debug_link_info): Remove. + (find_separate_debug_file_by_debuglink): Use + bfd_get_debug_link_info. + 2013-03-14 Tom Tromey * symtab.c (error_in_psymtab_expansion): New function. diff --git a/gdb/symfile.c b/gdb/symfile.c index 5ed25913cb6..925ca7b9c41 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -1304,36 +1304,6 @@ symbol_file_clear (int from_tty) printf_unfiltered (_("No symbol file now.\n")); } -static char * -get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out) -{ - asection *sect; - bfd_size_type debuglink_size; - unsigned long crc32; - char *contents; - int crc_offset; - - sect = bfd_get_section_by_name (objfile->obfd, ".gnu_debuglink"); - - if (sect == NULL) - return NULL; - - debuglink_size = bfd_section_size (objfile->obfd, sect); - - contents = xmalloc (debuglink_size); - bfd_get_section_contents (objfile->obfd, sect, contents, - (file_ptr)0, (bfd_size_type)debuglink_size); - - /* Crc value is stored after the filename, aligned up to 4 bytes. */ - crc_offset = strlen (contents) + 1; - crc_offset = (crc_offset + 3) & ~3; - - crc32 = bfd_get_32 (objfile->obfd, (bfd_byte *) (contents + crc_offset)); - - *crc32_out = crc32; - return contents; -} - /* Return 32-bit CRC for ABFD. If successful store it to *FILE_CRC_RETURN and return 1. Otherwise print a warning and return 0. ABFD seek position is not preserved. */ @@ -1584,7 +1554,7 @@ find_separate_debug_file_by_debuglink (struct objfile *objfile) unsigned long crc32; struct cleanup *cleanups; - debuglink = get_debug_link_info (objfile, &crc32); + debuglink = bfd_get_debug_link_info (objfile->obfd, &crc32); if (debuglink == NULL) {