-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. */
-
-static int
-get_file_crc (bfd *abfd, unsigned long *file_crc_return)
-{
- unsigned long file_crc = 0;
-
- if (bfd_seek (abfd, 0, SEEK_SET) != 0)
- {
- warning (_("Problem reading \"%s\" for CRC: %s"),
- bfd_get_filename (abfd), bfd_errmsg (bfd_get_error ()));
- return 0;
- }
-
- for (;;)
- {
- gdb_byte buffer[8 * 1024];
- bfd_size_type count;
-
- count = bfd_bread (buffer, sizeof (buffer), abfd);
- if (count == (bfd_size_type) -1)
- {
- warning (_("Problem reading \"%s\" for CRC: %s"),
- bfd_get_filename (abfd), bfd_errmsg (bfd_get_error ()));
- return 0;
- }
- if (count == 0)
- break;
- file_crc = gnu_debuglink_crc32 (file_crc, buffer, count);
- }
-
- *file_crc_return = file_crc;
- return 1;
-}
-