diff -urN binutils-2.13/gas/config/tc-pdp11.c binutils-2.13-pdp11/gas/config/tc-pdp11.c --- binutils-2.13/gas/config/tc-pdp11.c Sat Nov 2 16:43:23 2002 +++ binutils-2.13-pdp11/gas/config/tc-pdp11.c Sat Nov 2 16:44:13 2002 @@ -279,6 +279,12 @@ return str - 1; } } + else if (strncmp (str, "fp", 2) == 0 || + strncmp (str, "FP", 2) == 0) + { + operand->code = 5; + str += 2; + } else if (strncmp (str, "sp", 2) == 0 || strncmp (str, "SP", 2) == 0) { @@ -488,6 +494,14 @@ if (*str != '(') /* label */ { + if (operand->reloc.exp.X_op == O_constant) { + operand->code = 037; + operand->additional = 1; + operand->word = 0; + operand->reloc.type = BFD_RELOC_16; + operand->reloc.pc_rel = 0; + break; + } if (operand->reloc.exp.X_op != O_symbol) { operand->error = "Label expected"; @@ -521,7 +535,8 @@ { case O_symbol: operand->word = 0; - operand->reloc.pc_rel = 1; + operand->reloc.type = BFD_RELOC_16; + operand->reloc.pc_rel = 0; break; case O_constant: if ((operand->code & 7) == 7)