diff -Naur 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 2002-06-08 16:37:15.000000000 +0900 +++ binutils-2.13-pdp11/gas/config/tc-pdp11.c 2013-11-16 19:18:29.000000000 +0900 @@ -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) diff -Naur binutils-2.13/opcodes/pdp11-dis.c binutils-2.13-pdp11/opcodes/pdp11-dis.c --- binutils-2.13/opcodes/pdp11-dis.c 2002-03-05 12:09:53.000000000 +0900 +++ binutils-2.13-pdp11/opcodes/pdp11-dis.c 2013-11-16 19:24:09.000000000 +0900 @@ -84,7 +84,7 @@ FPRINTF (F, "r%d", reg); break; case 6: FPRINTF (F, "sp"); break; case 7: FPRINTF (F, "pc"); break; - default: /* error */ + default: ;/* error */ } }