+2016-05-20 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * elf32-arm.c (enum elf32_arm_stub_type): Remove
+ arm_stub_a8_veneer_lwm enumerator.
+ (arm_stub_a8_veneer_lwm): New global constant.
+ (elf32_arm_size_stubs): Break if stub was only updated.
+
2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
* elf32-arm.c (elf32_arm_get_stub_entry): Assert that we don't access
{
arm_stub_none,
DEF_STUBS
- max_stub_type,
- /* Note the first a8_veneer type. */
- arm_stub_a8_veneer_lwm = arm_stub_a8_veneer_b_cond,
+ max_stub_type
};
#undef DEF_STUB
+/* Note the first a8_veneer type. */
+const unsigned arm_stub_a8_veneer_lwm = arm_stub_a8_veneer_b_cond;
+
typedef struct
{
const insn_sequence* template_sequence;
branch_type, &new_stub);
created_stub = stub_entry != NULL;
- if (!created_stub || !new_stub)
- {
- if (!created_stub)
- goto error_ret_free_internal;
- }
+ if (!created_stub)
+ goto error_ret_free_internal;
+ else if (!new_stub)
+ break;
else
stub_changed = TRUE;
}
+2016-05-20 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * NEWS: Document support for ARMv8-M and its DSP and Security
+ Extensions.
+
2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
* config/tc-arm.c (arm_adjust_symtab): Use ARM_SET_SYM_BRANCH_TYPE to
-*- text -*-
+* Support for the ARMv8-M architecture has been added to the ARM port. Support
+ for the ARMv8-M Security and DSP Extensions has also been added to the ARM
+ port.
* Add a configure option --enable-x86-relax-relocations to decide whether
x86 assembler should generate relax relocations by default. Default to
+2016-05-20 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm-tdep.c (arm_elf_make_msymbol_special): A newline after variable
+ declaration.
+
2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
* arm-tdep.c (arm_elf_make_msymbol_special): Use
arm_elf_make_msymbol_special(asymbol *sym, struct minimal_symbol *msym)
{
elf_symbol_type *elfsym = (elf_symbol_type *) sym;
+
if (ARM_GET_SYM_BRANCH_TYPE (elfsym->internal_elf_sym.st_target_internal)
== ST_BRANCH_TO_THUMB)
MSYMBOL_SET_SPECIAL (msym);
+2016-05-20 Thomas Preud'homme <thomas.preudhomme@arm.com>
+
+ * arm.h (enum arm_st_branch_type): Add ST_BRANCH_ENUM_SIZE enumerator.
+ (NUM_ENUM_ARM_ST_BRANCH_TYPE_BITS): Define macro.
+ (ENUM_ARM_ST_BRANCH_TYPE_BITMASK): Likewise.
+ (ARM_GET_SYM_BRANCH_TYPE): Use above variable to mask the bits for
+ branch type.
+ (ARM_SET_SYM_BRANCH_TYPE): Add a version with asserts used when
+ BFD_ASSERT is defined.
+
2016-03-29 Thomas Preud'homme <thomas.preudhomme@arm.com>
* arm.h (ARM_GET_SYM_CMSE_SPCL): Define macro.
ST_BRANCH_TO_ARM,
ST_BRANCH_TO_THUMB,
ST_BRANCH_LONG,
- ST_BRANCH_UNKNOWN
+ ST_BRANCH_UNKNOWN,
+ ST_BRANCH_ENUM_SIZE
};
-#define ARM_GET_SYM_BRANCH_TYPE(SYM_TARGET_INTERNAL) \
- ((enum arm_st_branch_type) ((SYM_TARGET_INTERNAL) & 3))
-#define ARM_SET_SYM_BRANCH_TYPE(SYM_TARGET_INTERNAL,TYPE) \
- ((SYM_TARGET_INTERNAL) = ((SYM_TARGET_INTERNAL) & ~3) | ((TYPE) & 3))
+#define NUM_ENUM_ARM_ST_BRANCH_TYPE_BITS 2
+#define ENUM_ARM_ST_BRANCH_TYPE_BITMASK \
+ ((1 << NUM_ENUM_ARM_ST_BRANCH_TYPE_BITS) - 1)
+
+#define ARM_GET_SYM_BRANCH_TYPE(STI) \
+ ((enum arm_st_branch_type) ((STI) & ENUM_ARM_ST_BRANCH_TYPE_BITMASK))
+#ifdef BFD_ASSERT
+#define ARM_SET_SYM_BRANCH_TYPE(STI, TYPE) \
+ do { \
+ BFD_ASSERT (TYPE <= ST_BRANCH_ENUM_SIZE); \
+ BFD_ASSERT ((1 << NUM_ENUM_ARM_ST_BRANCH_TYPE_BITS) \
+ >= ST_BRANCH_ENUM_SIZE); \
+ (STI) = (((STI) & ~ENUM_ARM_ST_BRANCH_TYPE_BITMASK) \
+ | ((TYPE) & ENUM_ARM_ST_BRANCH_TYPE_BITMASK)); \
+ } while (0)
+#else
+#define ARM_SET_SYM_BRANCH_TYPE(STI, TYPE) \
+ (STI) = (((STI) & ~ENUM_ARM_ST_BRANCH_TYPE_BITMASK) \
+ | ((TYPE) & ENUM_ARM_ST_BRANCH_TYPE_BITMASK))
+#endif
/* Get or set whether a symbol is a special symbol of an entry function of CMSE
secure code. */