/* Intel i386 Mach-O support for BFD.
- Copyright (C) 2009-2015 Free Software Foundation, Inc.
+ Copyright (C) 2009-2017 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
};
static bfd_boolean
-bfd_mach_o_i386_swap_reloc_in (arelent *res, bfd_mach_o_reloc_info *reloc)
+bfd_mach_o_i386_canonicalize_one_reloc (bfd *abfd,
+ struct mach_o_reloc_info_external *raw,
+ arelent *res, asymbol **syms)
{
- if (reloc->r_scattered)
+ bfd_mach_o_reloc_info reloc;
+
+ if (!bfd_mach_o_pre_canonicalize_one_reloc (abfd, raw, &reloc, res, syms))
+ return FALSE;
+
+ if (reloc.r_scattered)
{
- switch (reloc->r_type)
+ switch (reloc.r_type)
{
case BFD_MACH_O_GENERIC_RELOC_PAIR:
- if (reloc->r_length == 2)
+ if (reloc.r_length == 2)
{
res->howto = &i386_howto_table[7];
res->address = res[-1].address;
return TRUE;
}
- else if (reloc->r_length == 1)
+ else if (reloc.r_length == 1)
{
res->howto = &i386_howto_table[10];
res->address = res[-1].address;
}
return FALSE;
case BFD_MACH_O_GENERIC_RELOC_SECTDIFF:
- if (reloc->r_length == 2)
+ if (reloc.r_length == 2)
{
res->howto = &i386_howto_table[5];
return TRUE;
}
- else if (reloc->r_length == 1)
+ else if (reloc.r_length == 1)
{
res->howto = &i386_howto_table[8];
return TRUE;
}
return FALSE;
case BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF:
- if (reloc->r_length == 2)
+ if (reloc.r_length == 2)
{
res->howto = &i386_howto_table[6];
return TRUE;
}
- else if (reloc->r_length == 1)
+ else if (reloc.r_length == 1)
{
res->howto = &i386_howto_table[9];
return TRUE;
}
else
{
- switch (reloc->r_type)
+ switch (reloc.r_type)
{
case BFD_MACH_O_GENERIC_RELOC_VANILLA:
- switch ((reloc->r_length << 1) | reloc->r_pcrel)
+ switch ((reloc.r_length << 1) | reloc.r_pcrel)
{
case 0: /* len = 0, pcrel = 0 */
res->howto = &i386_howto_table[2];
{ NULL, NULL }
};
-#define bfd_mach_o_swap_reloc_in bfd_mach_o_i386_swap_reloc_in
+#define bfd_mach_o_canonicalize_one_reloc bfd_mach_o_i386_canonicalize_one_reloc
#define bfd_mach_o_swap_reloc_out bfd_mach_o_i386_swap_reloc_out
#define bfd_mach_o_print_thread bfd_mach_o_i386_print_thread