diff options
author | Kazu Hirata <kazu@codesourcery.com> | 2000-11-10 04:28:20 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@codesourcery.com> | 2000-11-10 04:28:20 +0000 |
commit | 69a13986f6797c4e5dce6421d489bfc661065993 (patch) | |
tree | 6851d6dab155e56800caea2b6265c3cf59822c4e /bfd/archive.c | |
parent | 7fc5dd65ab69c3dd52b6bb93fc3f51cf5e06707b (diff) | |
download | gdb-69a13986f6797c4e5dce6421d489bfc661065993.tar.gz |
2000-11-09 Kazu Hirata <kazu@hxi.com>
* archive.c: Fix formatting.
* archures.c: Likewise.
Diffstat (limited to 'bfd/archive.c')
-rw-r--r-- | bfd/archive.c | 190 |
1 files changed, 104 insertions, 86 deletions
diff --git a/bfd/archive.c b/bfd/archive.c index 8807a525bc5..c1a6f81222a 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -152,10 +152,8 @@ extern int errno; the cache when we actually read one. We also don't sort the cache; it's generally short enough to search linearly. Note that the pointers here point to the front of the ar_hdr, not - to the front of the contents! -*/ -struct ar_cache -{ + to the front of the contents! */ +struct ar_cache { file_ptr ptr; bfd *arelt; struct ar_cache *next; @@ -411,7 +409,7 @@ _bfd_generic_read_ar_hdr_mag (abfd, mag) } } /* BSD4.4-style long filename. - Only implemented for reading, so far! */ + Only implemented for reading, so far! */ else if (hdr.ar_name[0] == '#' && hdr.ar_name[1] == '1' && hdr.ar_name[2] == '/' @@ -446,9 +444,9 @@ _bfd_generic_read_ar_hdr_mag (abfd, mag) e = memchr (hdr.ar_name, '\0', ar_maxnamelen (abfd)); if (e == NULL) { - e = memchr (hdr.ar_name, '/', ar_maxnamelen (abfd)); + e = memchr (hdr.ar_name, '/', ar_maxnamelen (abfd)); if (e == NULL) - e = memchr (hdr.ar_name, ' ', ar_maxnamelen (abfd)); + e = memchr (hdr.ar_name, ' ', ar_maxnamelen (abfd)); } if (e != NULL) @@ -526,7 +524,7 @@ _bfd_get_elt_at_filepos (archive, filepos) if (_bfd_add_bfd_to_archive_cache (archive, filepos, n_nfd)) return n_nfd; - /* huh? */ + /* Huh? */ bfd_release (archive, (PTR) n_nfd); bfd_release (archive, (PTR) new_areldata); return NULL; @@ -560,7 +558,6 @@ DESCRIPTION the archive and the previous return value to return a created BFD to the next contained element. NULL is returned when there are no more. - */ bfd * @@ -781,7 +778,7 @@ do_slurp_bsd_armap (abfd) } ardata->first_file_filepos = bfd_tell (abfd); - /* Pad to an even boundary if you have to */ + /* Pad to an even boundary if you have to. */ ardata->first_file_filepos += (ardata->first_file_filepos) % 2; /* FIXME, we should provide some way to free raw_ardata when we are done using the strings from it. For now, it seems @@ -790,7 +787,8 @@ do_slurp_bsd_armap (abfd) return true; } -/* Returns false on error, true otherwise */ +/* Returns false on error, true otherwise. */ + static boolean do_slurp_coff_armap (abfd) bfd *abfd; @@ -835,7 +833,7 @@ do_slurp_coff_armap (abfd) && bfd_get_arch (abfd) == bfd_arch_i960 && bfd_get_flavour (abfd) == bfd_target_coff_flavour) { - /* This looks dangerous, let's do it the other way around */ + /* This looks dangerous, let's do it the other way around. */ nsymz = bfd_getl32 ((PTR) int_buf); stringsize = parsed_size - (4 * nsymz) - 4; swap = bfd_getl32; @@ -866,7 +864,7 @@ do_slurp_coff_armap (abfd) goto release_raw_armap; } - /* OK, build the carsyms */ + /* OK, build the carsyms. */ for (i = 0; i < nsymz; i++) { rawptr = raw_armap + i; @@ -879,13 +877,13 @@ do_slurp_coff_armap (abfd) ardata->symdef_count = nsymz; ardata->first_file_filepos = bfd_tell (abfd); - /* Pad to an even boundary if you have to */ + /* Pad to an even boundary if you have to. */ ardata->first_file_filepos += (ardata->first_file_filepos) % 2; bfd_has_map (abfd) = true; bfd_release (abfd, (PTR) raw_armap); - /* Check for a second archive header (as used by PE) */ + /* Check for a second archive header (as used by PE). */ { struct areltdata *tmp; @@ -972,7 +970,7 @@ bfd_slurp_bsd_armap_f2 (abfd) if (i != 16) return false; - /* The archive has at least 16 bytes in it */ + /* The archive has at least 16 bytes in it. */ if (bfd_seek (abfd, -16L, SEEK_CUR) != 0) return false; @@ -1021,7 +1019,7 @@ bfd_slurp_bsd_armap_f2 (abfd) ardata->cache = 0; stringsize = bfd_h_get_32 (abfd, raw_armap + HPUX_SYMDEF_COUNT_SIZE); - /* skip sym count and string sz */ + /* Skip sym count and string sz. */ stringbase = ((char *) raw_armap + HPUX_SYMDEF_COUNT_SIZE + BSD_STRING_COUNT_SIZE); @@ -1041,7 +1039,7 @@ bfd_slurp_bsd_armap_f2 (abfd) } ardata->first_file_filepos = bfd_tell (abfd); - /* Pad to an even boundary if you have to */ + /* Pad to an even boundary if you have to. */ ardata->first_file_filepos += (ardata->first_file_filepos) % 2; /* FIXME, we should provide some way to free raw_ardata when we are done using the strings from it. For now, it seems @@ -1058,9 +1056,10 @@ bfd_slurp_bsd_armap_f2 (abfd) element (the first in the archive, or second if there is an armap); the name in the ar_hdr is replaced by <space><index into filename element>. Index is the P.R. of an int (decimal). Data General have - extended the format by using the prefix // for the special element */ + extended the format by using the prefix // for the special element. */ + +/* Returns false on error, true otherwise. */ -/* Returns false on error, true otherwise */ boolean _bfd_slurp_extended_name_table (abfd) bfd *abfd; @@ -1114,22 +1113,25 @@ _bfd_slurp_extended_name_table (abfd) { char *temp = bfd_ardata (abfd)->extended_names; char *limit = temp + namedata->parsed_size; - for (; temp < limit; ++temp) { - if (*temp == '\012') - temp[temp[-1] == '/' ? -1 : 0] = '\0'; - if (*temp == '\\') - *temp = '/'; - } + for (; temp < limit; ++temp) + { + if (*temp == '\012') + temp[temp[-1] == '/' ? -1 : 0] = '\0'; + if (*temp == '\\') + *temp = '/'; + } } - /* Pad to an even boundary if you have to */ + /* Pad to an even boundary if you have to. */ bfd_ardata (abfd)->first_file_filepos = bfd_tell (abfd); bfd_ardata (abfd)->first_file_filepos += (bfd_ardata (abfd)->first_file_filepos) % 2; /* FIXME, we can't release namedata here because it was allocated below extended_names on the objalloc... */ - /* bfd_release (abfd, namedata); */ +#if 0 + bfd_release (abfd, namedata); +#endif } return true; } @@ -1137,7 +1139,8 @@ _bfd_slurp_extended_name_table (abfd) #ifdef VMS /* Return a copy of the stuff in the filename between any :]> and a - semicolon */ + semicolon. */ + static const char * normalize (abfd, file) bfd *abfd; @@ -1246,7 +1249,7 @@ _bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen) *tablen = 0; - /* Figure out how long the table should be */ + /* Figure out how long the table should be. */ for (current = abfd->archive_head; current != NULL; current = current->next) { const char *normal; @@ -1329,7 +1332,7 @@ _bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen) cases where you may safely use sprintf). */ sprintf ((hdr->ar_name) + 1, "%-d", (unsigned) (strptr - *tabloc)); /* Kinda Kludgy. We should just use the returned value of - sprintf but not all implementations get this right */ + sprintf but not all implementations get this right. */ { char *temp = hdr->ar_name + 2; for (; temp < hdr->ar_name + maxname; temp++) @@ -1349,6 +1352,7 @@ _bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen) #ifdef HPUX_LARGE_AR_IDS /* Function to encode large UID/GID values according to HP. */ + static void hpux_uid_gid_encode (str, id) char str[6]; @@ -1390,11 +1394,11 @@ bfd_ar_hdr_from_filesystem (abfd, filename, member) if (member && (member->flags & BFD_IN_MEMORY) != 0) { - /* Assume we just "made" the member, and fake it */ + /* Assume we just "made" the member, and fake it. */ struct bfd_in_memory *bim = (struct bfd_in_memory *) member->iostream; - time(&status.st_mtime); - status.st_uid = getuid(); - status.st_gid = getgid(); + time (&status.st_mtime); + status.st_uid = getuid (); + status.st_gid = getgid (); status.st_mode = 0644; status.st_size = bim->size; } @@ -1410,12 +1414,12 @@ bfd_ar_hdr_from_filesystem (abfd, filename, member) return NULL; hdr = (struct ar_hdr *) (((char *) ared) + sizeof (struct areltdata)); - /* ar headers are space padded, not null padded! */ + /* ar headers are space padded, not null padded! */ memset ((PTR) hdr, ' ', sizeof (struct ar_hdr)); strncpy (hdr->ar_fmag, ARFMAG, 2); - /* Goddamned sprintf doesn't permit MAXIMUM field lengths */ + /* Goddamned sprintf doesn't permit MAXIMUM field lengths. */ sprintf ((hdr->ar_date), "%-12ld", (long) status.st_mtime); #ifdef HPUX_LARGE_AR_IDS /* HP has a very "special" way to handle UID/GID's with numeric values @@ -1437,7 +1441,7 @@ bfd_ar_hdr_from_filesystem (abfd, filename, member) sprintf ((hdr->ar_size), "%-10ld", (long) status.st_size); /* Correct for a lossage in sprintf whereby it null-terminates. I cannot understand how these C losers could design such a ramshackle bunch of - IO operations */ + IO operations. */ temp = (char *) hdr; temp1 = temp + sizeof (struct ar_hdr) - 2; for (; temp < temp1; temp++) @@ -1453,9 +1457,9 @@ bfd_ar_hdr_from_filesystem (abfd, filename, member) } /* This is magic required by the "ar" program. Since it's - undocumented, it's undocumented. You may think that it would take - a strong stomach to write this, and it does, but it takes even a - stronger stomach to try to code around such a thing! */ + undocumented, it's undocumented. You may think that it would take + a strong stomach to write this, and it does, but it takes even a + stronger stomach to try to code around such a thing! */ struct ar_hdr *bfd_special_undocumented_glue PARAMS ((bfd *, const char *)); @@ -1470,7 +1474,8 @@ bfd_special_undocumented_glue (abfd, filename) return (struct ar_hdr *) ar_elt->arch_header; } -/* Analogous to stat call */ +/* Analogous to stat call. */ + int bfd_generic_stat_arch_elt (abfd, buf) bfd *abfd; @@ -1487,26 +1492,33 @@ bfd_generic_stat_arch_elt (abfd, buf) hdr = arch_hdr (abfd); -#define foo(arelt, stelt, size) \ - buf->stelt = strtol (hdr->arelt, &aloser, size); \ - if (aloser == hdr->arelt) return -1; +#define foo(arelt, stelt, size) \ + buf->stelt = strtol (hdr->arelt, &aloser, size); \ + if (aloser == hdr->arelt) \ + return -1; + /* Some platforms support special notations for large IDs. */ #ifdef HPUX_LARGE_AR_IDS -# define foo2(arelt, stelt, size) \ - if (hdr->arelt[5] == ' ') { foo (arelt, stelt, size); } \ - else { \ - int cnt; \ - for (buf->stelt = cnt = 0; cnt < 5; ++cnt) \ - { \ - if (hdr->arelt[cnt] < ' ' || hdr->arelt[cnt] > ' ' + 0x3f) \ - return -1; \ - buf->stelt <<= 6; \ - buf->stelt += hdr->arelt[cnt] - ' '; \ - } \ - if (hdr->arelt[5] < '@' || hdr->arelt[5] > '@' + 3) return -1; \ - buf->stelt <<= 2; \ - buf->stelt += hdr->arelt[5] - '@'; \ - } +# define foo2(arelt, stelt, size) \ + if (hdr->arelt[5] == ' ') \ + { \ + foo (arelt, stelt, size); \ + } \ + else \ + { \ + int cnt; \ + for (buf->stelt = cnt = 0; cnt < 5; ++cnt) \ + { \ + if (hdr->arelt[cnt] < ' ' || hdr->arelt[cnt] > ' ' + 0x3f) \ + return -1; \ + buf->stelt <<= 6; \ + buf->stelt += hdr->arelt[cnt] - ' '; \ + } \ + if (hdr->arelt[5] < '@' || hdr->arelt[5] > '@' + 3) \ + return -1; \ + buf->stelt <<= 2; \ + buf->stelt += hdr->arelt[5] - '@'; \ + } #else # define foo2(arelt, stelt, size) foo (arelt, stelt, size) #endif @@ -1658,7 +1670,7 @@ bfd_gnu_truncate_arname (abfd, pathname, arhdr) (hdr->ar_name)[length] = ar_padchar (abfd); } -/* The BFD is open for write and has its format set to bfd_archive */ +/* The BFD is open for write and has its format set to bfd_archive. */ boolean _bfd_write_archive_contents (arch) @@ -1669,7 +1681,7 @@ _bfd_write_archive_contents (arch) bfd_size_type elength = 0; const char *ename = NULL; boolean makemap = bfd_has_map (arch); - boolean hasobjects = false; /* if no .o's, don't bother to make a map */ + boolean hasobjects = false; /* If no .o's, don't bother to make a map. */ bfd_size_type wrote; unsigned int i; int tries; @@ -1696,14 +1708,14 @@ _bfd_write_archive_contents (arch) if (!current->arelt_data) return false; - /* Put in the file name */ + /* Put in the file name. */ BFD_SEND (arch, _bfd_truncate_arname, (arch, current->filename, (char *) arch_hdr (current))); } if (makemap && ! hasobjects) - { /* don't bother if we won't make a map! */ + { /* Don't bother if we won't make a map! */ if ((bfd_check_format (current, bfd_object)) #if 0 /* FIXME -- these are not set correctly */ && ((bfd_get_file_flags (current) & HAS_SYMS)) @@ -1763,7 +1775,7 @@ _bfd_write_archive_contents (arch) unsigned int remaining = arelt_size (current); struct ar_hdr *hdr = arch_hdr (current); - /* write ar header */ + /* Write ar header. */ if (bfd_write ((char *) hdr, 1, sizeof (*hdr), arch) != sizeof (*hdr)) return false; if (bfd_seek (current, (file_ptr) 0, SEEK_SET) != 0) @@ -1813,7 +1825,7 @@ _bfd_write_archive_contents (arch) return true; } -/* Note that the namidx for the first symbol is 0 */ +/* Note that the namidx for the first symbol is 0. */ boolean _bfd_compute_and_write_armap (arch, elength) @@ -1846,13 +1858,12 @@ _bfd_compute_and_write_armap (arch, elength) if (first_name == NULL) goto error_return; - /* Drop all the files called __.SYMDEF, we're going to make our - own */ + /* Drop all the files called __.SYMDEF, we're going to make our own. */ while (arch->archive_head && strcmp (arch->archive_head->filename, "__.SYMDEF") == 0) arch->archive_head = arch->archive_head->next; - /* Map over each element */ + /* Map over each element. */ for (current = arch->archive_head; current != (bfd *) NULL; current = current->next, elt_no++) @@ -1883,7 +1894,8 @@ _bfd_compute_and_write_armap (arch, elength) if (symcount < 0) goto error_return; - /* Now map over all the symbols, picking out the ones we want */ + /* Now map over all the symbols, picking out the ones we + want. */ for (src_count = 0; src_count < symcount; src_count++) { flagword flags = (syms[src_count])->flags; @@ -1898,7 +1910,7 @@ _bfd_compute_and_write_armap (arch, elength) size_t namelen; struct orl *new_map; - /* This symbol will go into the archive header */ + /* This symbol will go into the archive header. */ if (orl_count == orl_max) { orl_max *= 2; @@ -1937,7 +1949,7 @@ _bfd_compute_and_write_armap (arch, elength) } } - /* OK, now we have collected all the data, let's write them out */ + /* OK, now we have collected all the data, let's write them out. */ ret = BFD_SEND (arch, write_armap, (arch, elength, map, orl_count, stridx)); @@ -2029,7 +2041,7 @@ bsd_write_armap (arch, elength, map, orl_count, stridx) return false; } - /* now write the strings themselves */ + /* Now write the strings themselves. */ bfd_h_put_32 (arch, stringsize, temp); if (bfd_write (temp, 1, sizeof (temp), arch) != sizeof (temp)) return false; @@ -2072,10 +2084,13 @@ _bfd_archive_bsd_update_armap_timestamp (arch) if (bfd_stat (arch, &archstat) == -1) { perror (_("Reading archive file mod timestamp")); - return true; /* Can't read mod time for some reason */ + + /* Can't read mod time for some reason. */ + return true; } if (archstat.st_mtime <= bfd_ardata (arch)->armap_timestamp) - return true; /* OK by the linker's rules */ + /* OK by the linker's rules. */ + return true; /* Update the timestamp. */ bfd_ardata (arch)->armap_timestamp = archstat.st_mtime + ARMAP_TIME_OFFSET; @@ -2096,10 +2111,13 @@ _bfd_archive_bsd_update_armap_timestamp (arch) { /* FIXME: bfd can't call perror. */ perror (_("Writing updated armap timestamp")); - return true; /* Some error while writing */ + + /* Some error while writing. */ + return true; } - return false; /* We updated the timestamp successfully. */ + /* We updated the timestamp successfully. */ + return false; } /* A coff armap looks like : @@ -2125,7 +2143,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx) int stridx; { /* The size of the ranlib is the number of exported symbols in the - archive * the number of bytes in a int, + an int for the count */ + archive * the number of bytes in a int, + an int for the count. */ unsigned int ranlibsize = (symbol_count * 4) + 4; unsigned int stringsize = stridx; unsigned int mapsize = stringsize + ranlibsize; @@ -2139,7 +2157,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx) if (padit) mapsize++; - /* work out where the first object file will go in the archive */ + /* Work out where the first object file will go in the archive. */ archive_member_file_ptr = (mapsize + elength + sizeof (struct ar_hdr) @@ -2149,7 +2167,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx) hdr.ar_name[0] = '/'; sprintf (hdr.ar_size, "%-10d", (int) mapsize); sprintf (hdr.ar_date, "%ld", (long) time (NULL)); - /* This, at least, is what Intel coff sets the values to.: */ + /* This, at least, is what Intel coff sets the values to. */ sprintf ((hdr.ar_uid), "%d", 0); sprintf ((hdr.ar_gid), "%d", 0); sprintf ((hdr.ar_mode), "%-7o", (unsigned) 0); @@ -2159,7 +2177,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx) if (((char *) (&hdr))[i] == '\0') (((char *) (&hdr))[i]) = ' '; - /* Write the ar header for this item and the number of symbols */ + /* Write the ar header for this item and the number of symbols. */ if (bfd_write ((PTR) &hdr, 1, sizeof (struct ar_hdr), arch) != sizeof (struct ar_hdr)) @@ -2177,23 +2195,23 @@ coff_write_armap (arch, elength, map, symbol_count, stridx) count = 0; while (current != (bfd *) NULL && count < symbol_count) { - /* For each symbol which is used defined in this object, write out - the object file's address in the archive */ + /* For each symbol which is used defined in this object, write + out the object file's address in the archive. */ while (((bfd *) (map[count]).pos) == current) { bfd_write_bigendian_4byte_int (arch, archive_member_file_ptr); count++; } - /* Add size of this archive entry */ + /* Add size of this archive entry. */ archive_member_file_ptr += (arelt_size (current) + sizeof (struct ar_hdr)); - /* remember aboout the even alignment */ + /* Remember aboout the even alignment. */ archive_member_file_ptr += archive_member_file_ptr % 2; current = current->next; } - /* now write the strings themselves */ + /* Now write the strings themselves. */ for (count = 0; count < symbol_count; count++) { size_t len = strlen (*map[count].name) + 1; |