* pe-dll.c (generate_reloc): don't output PE relocs for sections

that won't be loaded.
This commit is contained in:
DJ Delorie 1998-11-11 23:11:38 +00:00
parent 847b31bdab
commit b138a74d47
2 changed files with 25 additions and 1 deletions

View File

@ -1,3 +1,8 @@
Wed Nov 11 18:10:15 1998 DJ Delorie <dj@cygnus.com>
* pe-dll.c (generate_reloc): don't output PE relocs for sections
that won't be loaded.
Wed Nov 11 13:44:54 1998 DJ Delorie <dj@cygnus.com>
* pe-dll.c (fill_edata): don't strip underscores

View File

@ -617,6 +617,24 @@ generate_reloc (abfd, info)
asymbol **symbols;
int nsyms, symsize;
/* if it's not loaded, we don't need to relocate it this way */
if (!(s->output_section->flags & SEC_LOAD))
continue;
/* I don't know why there would be a reloc for these, but I've
seen it happen - DJ */
if (s->output_section == &bfd_abs_section)
continue;
if (s->output_section->vma == 0)
{
/* Huh? Shouldn't happen, but punt if it does */
einfo ("DJ: zero vma section reloc detected: `%s' #%d f=%d\n",
s->output_section->name, s->output_section->index,
s->output_section->flags);
continue;
}
symsize = bfd_get_symtab_upper_bound (b);
symbols = (asymbol **) xmalloc (symsize);
nsyms = bfd_canonicalize_symtab (b, symbols);
@ -627,7 +645,8 @@ generate_reloc (abfd, info)
for (i = 0; i < nrelocs; i++)
{
if (!relocs[i]->howto->pc_relative)
if (!relocs[i]->howto->pc_relative
&& relocs[i]->howto->type != R_IMAGEBASE)
{
switch (relocs[i]->howto->bitsize)
{