X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fconfig%2Ftc-moxie.c;h=ab2637043659d94238d29168a48f49ff21052ccb;hb=0ba59a29407a9d24559a653ce0401a26d9a37aaa;hp=fa8ace588ba9100a86aa0b39d9127f82dd6a5d52;hpb=e202fa84e706abb043aed457473a764c76672297;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/config/tc-moxie.c b/gas/config/tc-moxie.c index fa8ace588b..ab26370436 100644 --- a/gas/config/tc-moxie.c +++ b/gas/config/tc-moxie.c @@ -1,6 +1,5 @@ /* tc-moxie.c -- Assemble code for moxie - Copyright 2009, 2012 - Free Software Foundation, Inc. + Copyright (C) 2009-2019 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -47,7 +46,6 @@ static valueT md_chars_to_number (char * buf, int n); /* Byte order. */ extern int target_big_endian; -const char *moxie_target_format = DEFAULT_TARGET_FORMAT; void md_operand (expressionS *op __attribute__((unused))) @@ -76,6 +74,8 @@ md_begin (void) for (count = 0, opcode = moxie_form3_opc_info; count++ < 10; opcode++) hash_insert (opcode_hash_control, opcode->name, (char *) opcode); + target_big_endian = TARGET_BYTES_BIG_ENDIAN; + bfd_set_arch_mach (stdoutput, TARGET_ARCH, 0); } @@ -404,7 +404,7 @@ md_assemble (char *str) iword += (a << 4); } break; - case MOXIE_F1_ABi4: + case MOXIE_F1_ABi2: iword = opcode->opcode << 8; while (ISSPACE (*op_end)) op_end++; @@ -426,13 +426,13 @@ md_assemble (char *str) op_end++; op_end = parse_exp_save_ilp (op_end, &arg); - offset = frag_more (4); + offset = frag_more (2); fix_new_exp (frag_now, (offset - frag_now->fr_literal), - 4, + 2, &arg, 0, - BFD_RELOC_32); + BFD_RELOC_16); if (*op_end != '(') { @@ -458,7 +458,7 @@ md_assemble (char *str) iword += (a << 4) + b; } break; - case MOXIE_F1_AiB4: + case MOXIE_F1_AiB2: iword = opcode->opcode << 8; while (ISSPACE (*op_end)) op_end++; @@ -468,13 +468,13 @@ md_assemble (char *str) int a, b; op_end = parse_exp_save_ilp (op_end, &arg); - offset = frag_more (4); + offset = frag_more (2); fix_new_exp (frag_now, (offset - frag_now->fr_literal), - 4, + 2, &arg, 0, - BFD_RELOC_32); + BFD_RELOC_16); if (*op_end != '(') { @@ -535,11 +535,19 @@ md_assemble (char *str) BFD_RELOC_MOXIE_10_PCREL); } break; + case MOXIE_BAD: + iword = 0; + while (ISSPACE (*op_end)) + op_end++; + if (*op_end != 0) + as_warn (_("extra stuff on line ignored")); + break; default: abort (); } md_number_to_chars (p, iword, 2); + dwarf2_emit_insn (2); while (ISSPACE (*op_end)) op_end++; @@ -556,7 +564,7 @@ md_assemble (char *str) of LITTLENUMS emitted is stored in *SIZEP . An error message is returned, or NULL on OK. */ -char * +const char * md_atof (int type, char *litP, int *sizeP) { int prec; @@ -612,19 +620,17 @@ size_t md_longopts_size = sizeof (md_longopts); const char *md_shortopts = ""; int -md_parse_option (int c ATTRIBUTE_UNUSED, char *arg ATTRIBUTE_UNUSED) +md_parse_option (int c ATTRIBUTE_UNUSED, const char *arg ATTRIBUTE_UNUSED) { switch (c) { - case OPTION_EB: - target_big_endian = 1; - moxie_target_format = "elf32-bigmoxie"; + case OPTION_EB: + target_big_endian = 1; break; - case OPTION_EL: + case OPTION_EL: target_big_endian = 0; - moxie_target_format = "elf32-littlemoxie"; break; - default: + default: return 0; } @@ -642,7 +648,7 @@ md_show_usage (FILE *stream ATTRIBUTE_UNUSED) /* Apply a fixup to the object file. */ void -md_apply_fix (fixS *fixP ATTRIBUTE_UNUSED, +md_apply_fix (fixS *fixP ATTRIBUTE_UNUSED, valueT * valP ATTRIBUTE_UNUSED, segT seg ATTRIBUTE_UNUSED) { char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; @@ -773,9 +779,8 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP) return 0; } - relP = xmalloc (sizeof (arelent)); - gas_assert (relP != 0); - relP->sym_ptr_ptr = xmalloc (sizeof (asymbol *)); + relP = XNEW (arelent); + relP->sym_ptr_ptr = XNEW (asymbol *); *relP->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy); relP->address = fixP->fx_frag->fr_address + fixP->fx_where;