[BACK]Return to archive64.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / gpl3 / binutils.old / dist / bfd

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/external/gpl3/binutils.old/dist/bfd/archive64.c between version 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2016/01/26 17:25:58 version 1.1.1.2, 2016/10/26 17:02:28
Line 1 
Line 1 
 /* MIPS-specific support for 64-bit ELF  /* Support for 64-bit ELF archives.
    Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007,     Copyright (C) 1996-2015 Free Software Foundation, Inc.
    2010, 2012  Free Software Foundation, Inc.  
    Ian Lance Taylor, Cygnus Support     Ian Lance Taylor, Cygnus Support
    Linker support added by Mark Mitchell, CodeSourcery, LLC.     Linker support added by Mark Mitchell, CodeSourcery, LLC.
    <mark@codesourcery.com>     <mark@codesourcery.com>
Line 47  bfd_elf64_archive_slurp_armap (bfd *abfd
Line 46  bfd_elf64_archive_slurp_armap (bfd *abfd
   struct areltdata *mapdata;    struct areltdata *mapdata;
   bfd_byte int_buf[8];    bfd_byte int_buf[8];
   char *stringbase;    char *stringbase;
     char *stringend;
   bfd_byte *raw_armap = NULL;    bfd_byte *raw_armap = NULL;
   carsym *carsyms;    carsym *carsyms;
   bfd_size_type amt;    bfd_size_type amt;
Line 77  bfd_elf64_archive_slurp_armap (bfd *abfd
Line 77  bfd_elf64_archive_slurp_armap (bfd *abfd
   if (mapdata == NULL)    if (mapdata == NULL)
     return FALSE;      return FALSE;
   parsed_size = mapdata->parsed_size;    parsed_size = mapdata->parsed_size;
   bfd_release (abfd, mapdata);    free (mapdata);
   
   if (bfd_bread (int_buf, 8, abfd) != 8)    if (bfd_bread (int_buf, 8, abfd) != 8)
     {      {
Line 93  bfd_elf64_archive_slurp_armap (bfd *abfd
Line 93  bfd_elf64_archive_slurp_armap (bfd *abfd
   ptrsize = 8 * nsymz;    ptrsize = 8 * nsymz;
   
   amt = carsym_size + stringsize + 1;    amt = carsym_size + stringsize + 1;
     if (carsym_size < nsymz || ptrsize < nsymz || amt < nsymz)
       {
         bfd_set_error (bfd_error_malformed_archive);
         return FALSE;
       }
   ardata->symdefs = (struct carsym *) bfd_zalloc (abfd, amt);    ardata->symdefs = (struct carsym *) bfd_zalloc (abfd, amt);
   if (ardata->symdefs == NULL)    if (ardata->symdefs == NULL)
     return FALSE;      return FALSE;
   carsyms = ardata->symdefs;    carsyms = ardata->symdefs;
   stringbase = ((char *) ardata->symdefs) + carsym_size;    stringbase = ((char *) ardata->symdefs) + carsym_size;
     stringbase[stringsize] = 0;
     stringend = stringbase + stringsize;
   
   raw_armap = (bfd_byte *) bfd_alloc (abfd, ptrsize);    raw_armap = (bfd_byte *) bfd_alloc (abfd, ptrsize);
   if (raw_armap == NULL)    if (raw_armap == NULL)
Line 115  bfd_elf64_archive_slurp_armap (bfd *abfd
Line 122  bfd_elf64_archive_slurp_armap (bfd *abfd
     {      {
       carsyms->file_offset = bfd_getb64 (raw_armap + i * 8);        carsyms->file_offset = bfd_getb64 (raw_armap + i * 8);
       carsyms->name = stringbase;        carsyms->name = stringbase;
       stringbase += strlen (stringbase) + 1;        if (stringbase < stringend)
           stringbase += strlen (stringbase) + 1;
       ++carsyms;        ++carsyms;
     }      }
   *stringbase = '\0';    *stringbase = '\0';
Line 200  bfd_elf64_archive_write_armap (bfd *arch
Line 208  bfd_elf64_archive_write_armap (bfd *arch
        current = current->archive_next)         current = current->archive_next)
     {      {
       /* For each symbol which is used defined in this object, write out        /* For each symbol which is used defined in this object, write out
          the object file's address in the archive */           the object file's address in the archive.  */
   
       for (;        for (;
            count < symbol_count && map[count].u.abfd == current;             count < symbol_count && map[count].u.abfd == current;
Line 210  bfd_elf64_archive_write_armap (bfd *arch
Line 218  bfd_elf64_archive_write_armap (bfd *arch
           if (bfd_bwrite (buf, 8, arch) != 8)            if (bfd_bwrite (buf, 8, arch) != 8)
             return FALSE;              return FALSE;
         }          }
   
       /* Add size of this archive entry */        /* Add size of this archive entry */
       archive_member_file_ptr += (arelt_size (current)        archive_member_file_ptr += sizeof (struct ar_hdr);
                                   + sizeof (struct ar_hdr));        if (! bfd_is_thin_archive (arch))
           archive_member_file_ptr += arelt_size (current);
       /* remember about the even alignment */        /* remember about the even alignment */
       archive_member_file_ptr += archive_member_file_ptr % 2;        archive_member_file_ptr += archive_member_file_ptr % 2;
     }      }

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2

CVSweb <webmaster@jp.NetBSD.org>