* emultempl/pe.em(make_import_fixup): change signature to
        take asection as well as arelec; we need this for proper
        error reporting.  Only call pe_create_import_fixup() if
        there is no attempt to add a constant addend to the reloc;
        otherwise, report error condition.
        * pe-dll.c(pe_walk_relocs_of_symbol): change signature,
        since final argument is a pointer to make_import_fixup().
        Change call to cb() to match make_import_fixup() signature.
        (make_import_fixup_mark): make buffer_len unsigned.
        * pe-dll.h: change signature of pe_walk_relocs_of_symbol.
2001-09-12  Charles Wilson  <cwilson@ece.gatech.edu>
        * ld.texinfo: add verbose documentation for auto-import
        direct-addressing workaround, to compliment the terse
        error message.
This commit is contained in:
Charles Wilson
2001-09-12 15:58:10 +00:00
parent cedacdc05a
commit 0d888aac30
5 changed files with 143 additions and 14 deletions

View File

@@ -982,10 +982,10 @@ void
pe_walk_relocs_of_symbol (info, name, cb)
struct bfd_link_info *info;
CONST char *name;
int (*cb) (arelent *);
int (*cb) (arelent *, asection *);
{
bfd *b;
struct sec *s;
asection *s;
for (b = info->input_bfds; b; b = b->link_next)
{
@@ -1003,7 +1003,7 @@ pe_walk_relocs_of_symbol (info, name, cb)
&& s->output_section == bfd_abs_section_ptr)
continue;
current_sec=s;
current_sec = s;
symsize = bfd_get_symtab_upper_bound (b);
symbols = (asymbol **) xmalloc (symsize);
@@ -1016,7 +1016,7 @@ pe_walk_relocs_of_symbol (info, name, cb)
for (i = 0; i < nrelocs; i++)
{
struct symbol_cache_entry *sym = *relocs[i]->sym_ptr_ptr;
if (!strcmp(name,sym->name)) cb(relocs[i]);
if (!strcmp(name,sym->name)) cb(relocs[i], s);
}
free (relocs);
/* Warning: the allocated symbols are remembered in BFD and reused
@@ -1908,7 +1908,7 @@ make_import_fixup_mark (rel)
/* we convert reloc to symbol, for later reference */
static int counter;
static char *fixup_name = NULL;
static int buffer_len = 0;
static unsigned int buffer_len = 0;
struct symbol_cache_entry *sym = *rel->sym_ptr_ptr;