/* BFD back-end for Intel 386 COFF files.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2007
+ 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
Free Software Foundation, Inc.
Written by Cygnus Support.
#include "coff/go32exe.h"
#endif
+#ifndef bfd_pe_print_pdata
+#define bfd_pe_print_pdata NULL
+#endif
+
#include "libcoff.h"
static bfd_reloc_status_type coff_i386_reloc
- PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+ (bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **);
static reloc_howto_type *coff_i386_rtype_to_howto
- PARAMS ((bfd *, asection *, struct internal_reloc *,
- struct coff_link_hash_entry *, struct internal_syment *,
- bfd_vma *));
+ (bfd *, asection *, struct internal_reloc *,
+ struct coff_link_hash_entry *, struct internal_syment *,
+ bfd_vma *);
static reloc_howto_type *coff_i386_reloc_type_lookup
- PARAMS ((bfd *, bfd_reloc_code_real_type));
+ (bfd *, bfd_reloc_code_real_type);
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
/* The page size is a guess based on ELF. */
bfd * abfd ATTRIBUTE_UNUSED;
reloc_howto_type *howto;
{
- return ! howto->pc_relative && howto->type != R_IMAGEBASE;
+ return ! howto->pc_relative && howto->type != R_IMAGEBASE
+ && howto->type != R_SECREL32;
}
#endif /* COFF_WITH_PE */
{
reloc_howto_type *howto;
- if (rel->r_type > sizeof (howto_table) / sizeof (howto_table[0]))
+ if (rel->r_type >= sizeof (howto_table) / sizeof (howto_table[0]))
{
bfd_set_error (bfd_error_bad_value);
return NULL;
osect_vma = h->root.u.def.section->output_section->vma;
else
{
- asection *sec;
+ asection *s;
int i;
/* Sigh, the only way to get the section to offset against
is to find it the hard way. */
- for (sec = abfd->sections, i = 1; i < sym->n_scnum; i++)
- sec = sec->next;
+ for (s = abfd->sections, i = 1; i < sym->n_scnum; i++)
+ s = s->next;
- osect_vma = sec->output_section->vma;
+ osect_vma = s->output_section->vma;
}
*addendp -= osect_vma;