/* ldcref.c -- output a cross reference table
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 97, 98, 99, 2000 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>
This file is part of GLD, the Gnu Linker.
/* We keep an instance of this structure for each reference to a
symbol from a given object. */
-struct cref_ref
-{
+struct cref_ref {
/* The next reference. */
struct cref_ref *next;
/* The object. */
/* We keep a hash table of symbols. Each entry looks like this. */
-struct cref_hash_entry
-{
+struct cref_hash_entry {
struct bfd_hash_entry root;
/* The demangled name. */
char *demangled;
/* This is what the hash table looks like. */
-struct cref_hash_table
-{
+struct cref_hash_table {
struct bfd_hash_table root;
};
/* Add a symbol to the cref hash table. This is called for every
symbol that is seen during the link. */
-/*ARGSUSED*/
void
add_cref (name, abfd, section, value)
const char *name;
bfd *abfd;
asection *section;
- bfd_vma value;
+ bfd_vma value ATTRIBUTE_UNUSED;
{
struct cref_hash_entry *h;
struct cref_ref *r;
if (! cref_initialized)
{
if (! bfd_hash_table_init (&cref_table.root, cref_hash_newfunc))
- einfo ("%X%P: bfd_hash_table_init of cref table failed: %E\n");
+ einfo (_("%X%P: bfd_hash_table_init of cref table failed: %E\n"));
cref_initialized = true;
}
h = cref_hash_lookup (&cref_table, name, true, false);
if (h == NULL)
- einfo ("%X%P: cref_hash_lookup failed: %E\n");
+ einfo (_("%X%P: cref_hash_lookup failed: %E\n"));
for (r = h->refs; r != NULL; r = r->next)
if (r->abfd == abfd)
{
int len;
struct cref_hash_entry **csyms, **csym_fill, **csym, **csym_end;
+ const char *msg;
- fprintf (fp, "\nCross Reference Table\n\n");
- fprintf (fp, "Symbol");
- len = sizeof "Symbol" - 1;
+ fprintf (fp, _("\nCross Reference Table\n\n"));
+ msg = _("Symbol");
+ fprintf (fp, "%s", msg);
+ len = strlen (msg);
while (len < FILECOL)
{
- putc (' ' , fp);
+ putc (' ', fp);
++len;
}
- fprintf (fp, "File\n");
+ fprintf (fp, _("File\n"));
if (! cref_initialized)
{
- fprintf (fp, "No symbols\n");
+ fprintf (fp, _("No symbols\n"));
return;
}
csym_fill = csyms;
cref_hash_traverse (&cref_table, cref_fill_array, &csym_fill);
- ASSERT (csym_fill - csyms == cref_symcount);
+ ASSERT ((size_t) (csym_fill - csyms) == cref_symcount);
qsort (csyms, cref_symcount, sizeof (*csyms), cref_sort_array);
putc (' ', fp);
++len;
}
- finfo (fp, "%B\n", r->abfd);
+ lfinfo (fp, "%B\n", r->abfd);
len = 0;
}
}
putc (' ', fp);
++len;
}
- finfo (fp, "%B\n", r->abfd);
+ lfinfo (fp, "%B\n", r->abfd);
len = 0;
}
}
/* Check one symbol to see if it is a prohibited cross reference. */
-/*ARGSUSED*/
static boolean
check_nocrossref (h, ignore)
struct cref_hash_entry *h;
- PTR ignore;
+ PTR ignore ATTRIBUTE_UNUSED;
{
struct bfd_link_hash_entry *hl;
asection *defsec;
false, true);
if (hl == NULL)
{
- einfo ("%P: symbol `%T' missing from main hash table\n",
+ einfo (_("%P: symbol `%T' missing from main hash table\n"),
h->root.string);
return true;
}
/* The struct is used to pass information from check_refs to
check_reloc_refs through bfd_map_over_sections. */
-struct check_refs_info
-{
+struct check_refs_info {
struct cref_hash_entry *h;
asection *defsec;
struct lang_nocrossrefs *ncrs;
symsize = bfd_get_symtab_upper_bound (ref->abfd);
if (symsize < 0)
- einfo ("%B%F: could not read symbols; %E\n", ref->abfd);
+ einfo (_("%B%F: could not read symbols; %E\n"), ref->abfd);
asymbols = (asymbol **) xmalloc (symsize);
symbol_count = bfd_canonicalize_symtab (ref->abfd, asymbols);
if (symbol_count < 0)
- einfo ("%B%F: could not read symbols: %E\n", ref->abfd);
+ einfo (_("%B%F: could not read symbols: %E\n"), ref->abfd);
if (li != NULL)
{
li->asymbols = asymbols;
relsize = bfd_get_reloc_upper_bound (abfd, sec);
if (relsize < 0)
- einfo ("%B%F: could not read relocs: %E\n", abfd);
+ einfo (_("%B%F: could not read relocs: %E\n"), abfd);
if (relsize == 0)
return;
relpp = (arelent **) xmalloc (relsize);
relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols);
if (relcount < 0)
- einfo ("%B%F: could not read relocs: %E\n", abfd);
+ einfo (_("%B%F: could not read relocs: %E\n"), abfd);
p = relpp;
pend = p + relcount;
&& *q->sym_ptr_ptr != NULL
&& (strcmp (bfd_asymbol_name (*q->sym_ptr_ptr), symname) == 0
|| (info->same
- && *q->sym_ptr_ptr == info->defsec->symbol)))
+ && bfd_get_section (*q->sym_ptr_ptr) == info->defsec)))
{
/* We found a reloc for the symbol. The symbol is defined
in OUTSECNAME. This reloc is from a section which is
mapped into a section from which references to OUTSECNAME
are prohibited. We must report an error. */
- einfo ("%X%C: prohibited cross reference from %s to `%T' in %s\n",
+ einfo (_("%X%C: prohibited cross reference from %s to `%T' in %s\n"),
abfd, sec, q->address, outsecname,
bfd_asymbol_name (*q->sym_ptr_ptr), outdefsecname);
}