/* ARM Mach-O support for BFD.
- Copyright (C) 2015-2017 Free Software Foundation, Inc.
+ Copyright (C) 2015-2020 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
MA 02110-1301, USA. */
#include "sysdep.h"
-#include "mach-o.h"
#include "bfd.h"
#include "libbfd.h"
#include "libiberty.h"
+#include "mach-o.h"
#include "mach-o/arm.h"
#define bfd_mach_o_object_p bfd_mach_o_arm_object_p
bfd_mach_o_reloc_info reloc;
if (!bfd_mach_o_pre_canonicalize_one_reloc (abfd, raw, &reloc, res, syms))
+ {
+fprintf (stderr, "ARm 1\n");
return FALSE;
+ }
if (reloc.r_scattered)
{
case BFD_MACH_O_ARM_RELOC_PAIR:
/* PR 21813: Check for a corrupt PAIR reloc at the start. */
if (res == res_base)
+ {
+ _bfd_error_handler (_("\
+malformed mach-o ARM reloc pair: reloc is first reloc"));
return FALSE;
+ }
if (reloc.r_length == 2)
{
res->howto = &arm_howto_table[7];
res->address = res[-1].address;
return TRUE;
}
+ _bfd_error_handler (_("\
+malformed mach-o ARM reloc pair: invalid length: %d"), reloc.r_length);
return FALSE;
case BFD_MACH_O_ARM_RELOC_SECTDIFF:
res->howto = &arm_howto_table[8];
return TRUE;
}
+ _bfd_error_handler (_("\
+malformed mach-o ARM sectdiff reloc: invalid length: %d"), reloc.r_length);
return FALSE;
case BFD_MACH_O_ARM_RELOC_LOCAL_SECTDIFF:
res->howto = &arm_howto_table[9];
return TRUE;
}
+ _bfd_error_handler (_("\
+malformed mach-o ARM local sectdiff reloc: invalid length: %d"),
+ reloc.r_length);
return FALSE;
case BFD_MACH_O_ARM_RELOC_HALF_SECTDIFF:
res->howto = &arm_howto_table[14];
return TRUE;
}
+ _bfd_error_handler (_("\
+malformed mach-o ARM half sectdiff reloc: invalid length: %d"),
+ reloc.r_length);
return FALSE;
default:
res->howto = &arm_howto_table[3];
return TRUE;
default:
+ _bfd_error_handler (_("\
+malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"),
+ reloc.r_length, reloc.r_pcrel);
return FALSE;
}
break;
}
}
+ _bfd_error_handler (_("\
+malformed mach-o ARM reloc: unknown reloc type: %d"), reloc.r_length);
return FALSE;
}