/* tc-pdp11.c - pdp11-specific -
- Copyright 2001, 2002, 2004, 2005, 2007, 2009
- Free Software Foundation, Inc.
+ Copyright (C) 2001-2016 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
/* A representation for PDP-11 machine code. */
struct pdp11_code
{
- char *error;
+ const char *error;
int code;
int additional; /* Is there an additional word? */
int word; /* Additional word, if any. */
static struct hash_control *insn_hash = NULL;
\f
static int
-set_option (char *arg)
+set_option (const char *arg)
{
int yes = 1;
}
long
-md_chars_to_number (con, nbytes)
- unsigned char con[]; /* Low order byte 1st. */
- int nbytes; /* Number of bytes in the input. */
+md_chars_to_number (unsigned char *con, int nbytes)
{
/* On a PDP-11, 0x1234 is stored as "\x12\x34", and
0x12345678 is stored as "\x56\x78\x12\x34". It's
/* label, d(rn), -(rn) */
default:
{
- char *old = str;
-
if (strncmp (str, "-(", 2) == 0) /* -(rn) */
{
str = parse_reg (str + 2, operand);
if (*str != '(')
{
- if (operand->reloc.exp.X_op != O_symbol)
- {
- operand->error = _("Label expected");
- return old;
- }
operand->code = 067;
operand->additional = 1;
operand->word = 0;
struct pdp11_code insn, op1, op2;
int error;
int size;
- char *err = NULL;
+ const char *err = NULL;
char *str;
char *p;
char c;
{
case PDP11_OPCODE_NO_OPS:
str = skip_whitespace (str);
- if (*str == 0)
- str = "";
break;
case PDP11_OPCODE_IMM3:
case PDP11_OPCODE_DISPL:
{
- char *new;
- new = parse_expression (str, &op1);
+ char *new_pointer;
+ new_pointer = parse_expression (str, &op1);
op1.code = 0;
op1.reloc.pc_rel = 1;
op1.reloc.type = BFD_RELOC_PDP11_DISP_8_PCREL;
err = _("8-bit displacement out of range");
break;
}
- str = new;
+ str = new_pointer;
insn.code |= op1.code;
insn.reloc = op1.reloc;
}
case PDP11_OPCODE_REG_DISPL:
{
- char *new;
+ char *new_pointer;
str = parse_reg (str, &op2);
if (op2.error)
break;
op1.error = _("Missing ','");
break;
}
- new = parse_expression (str, &op1);
+ new_pointer = parse_expression (str, &op1);
op1.code = 0;
op1.reloc.pc_rel = 1;
op1.reloc.type = BFD_RELOC_PDP11_DISP_6_PCREL;
err = _("6-bit displacement out of range");
break;
}
- str = new;
+ str = new_pointer;
insn.code |= op1.code;
insn.reloc = op1.reloc;
}
}
static int
-set_cpu_model (char *arg)
+set_cpu_model (const char *arg)
{
char buf[4];
char *model = buf;
}
static int
-set_machine_model (char *arg)
+set_machine_model (const char *arg)
{
if (strncmp (arg, "pdp-11/", 7) != 0
&& strncmp (arg, "pdp11/", 6) != 0
See if it's a processor-specific option. */
int
-md_parse_option (int c, char *arg)
+md_parse_option (int c, const char *arg)
{
init_defaults ();
arelent *reloc;
bfd_reloc_code_real_type code;
- reloc = xmalloc (sizeof (* reloc));
+ reloc = XNEW (arelent);
- reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
+ reloc->sym_ptr_ptr = XNEW (asymbol *);
*reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
record_alignment (now_seg, alignment);
}
-char *
+const char *
md_atof (int type, char * litP, int * sizeP)
{
return vax_md_atof (type, litP, sizeP);