aboutsummaryrefslogtreecommitdiff
path: root/bfd/peigen.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/peigen.c')
-rw-r--r--bfd/peigen.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/bfd/peigen.c b/bfd/peigen.c
index 066a601..a3373fc 100644
--- a/bfd/peigen.c
+++ b/bfd/peigen.c
@@ -991,12 +991,19 @@ _bfd_pei_swap_scnhdr_out (abfd, in, out)
(bfd_byte *) scnhdr_ext->s_nreloc);
else
{
- (*_bfd_error_handler) (_("%s: reloc overflow: 0x%lx > 0xffff"),
+ /* PE can deal with large #s of relocs, but not here */
+ bfd_h_put_16 (abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nreloc);
+ scnhdr_int->s_flags |= IMAGE_SCN_LNK_NRELOC_OVFL;
+ bfd_h_put_32(abfd, scnhdr_int->s_flags,
+ (bfd_byte *) scnhdr_ext->s_flags);
+#if 0
+ (*_bfd_error_handler) (_("%s: reloc overflow 1: 0x%lx > 0xffff"),
bfd_get_filename (abfd),
scnhdr_int->s_nreloc);
bfd_set_error (bfd_error_file_truncated);
bfd_h_put_16 (abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nreloc);
ret = 0;
+#endif
}
}
return ret;