--- /dev/null
+#source: elf-rel28.s
+#as: -n32
+#objdump: -dr
+#name: MIPS ELF reloc 28 (n32)
+
+.*:     file format .*
+
+
+Disassembly of section \.text:
+
+.* <foo>:
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_CALL_HI16    bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_CALL_LO16    bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_CALL16       bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_DISP     bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_PAGE     bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_OFST     bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_HI16     bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_LO16     bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT16        bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GPREL16      bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_16   bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_HIGHEST      bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_HIGHER       bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_SUB  bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_GD       bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_LDM      bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_DTPREL_HI16      bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_DTPREL_LO16      bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_TPREL_HI16       bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_TPREL_LO16       bar
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_GOTTPREL bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_CALL_HI16    bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_CALL_LO16    bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_CALL16       bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_DISP     bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_PAGE     bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_OFST     bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_HI16     bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_LO16     bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT16        bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GPREL16      bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_16   bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_HIGHEST      bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_HIGHER       bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_SUB  bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_GD       bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_LDM      bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_DTPREL_HI16      bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_DTPREL_LO16      bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_TPREL_HI16       bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_TPREL_LO16       bar
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_GOTTPREL bar
+       ...
 
--- /dev/null
+#source: elf-rel28.s
+#as: -64
+#objdump: -dr
+#name: MIPS ELF reloc 28 (n64)
+
+.*:     file format .*
+
+
+Disassembly of section \.text:
+
+.* <foo>:
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_CALL_HI16    bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_CALL_LO16    bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_CALL16       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_DISP     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_PAGE     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_OFST     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_HI16     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_LO16     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT16        bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GPREL16      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_16   bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_HIGHEST      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_HIGHER       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_SUB  bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_GD       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_LDM      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_DTPREL_HI16      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_DTPREL_LO16      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_TPREL_HI16       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_TPREL_LO16       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_TLS_GOTTPREL bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_CALL_HI16    bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_CALL_LO16    bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_CALL16       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_DISP     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_PAGE     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_OFST     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_HI16     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT_LO16     bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GOT16        bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_GPREL16      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_16   bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_HIGHEST      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_HIGHER       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_SUB  bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_GD       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_LDM      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_DTPREL_HI16      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_DTPREL_LO16      bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_TPREL_HI16       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_TPREL_LO16       bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+.*:    fc840000        sd      a0,0\(a0\)
+                       .*: R_MIPS_TLS_GOTTPREL bar
+                       .*: R_MIPS_NONE \*ABS\*
+                       .*: R_MIPS_NONE \*ABS\*
+       \.\.\.
 
--- /dev/null
+       .ent    foo
+foo:
+       # Many of these do not make conceptual sense, but they should
+       # at least assemble.
+       ld      $4,%call_hi(bar)($4)
+       ld      $4,%call_lo(bar)($4)
+       ld      $4,%call16(bar)($4)
+       ld      $4,%got_disp(bar)($4)
+       ld      $4,%got_page(bar)($4)
+       ld      $4,%got_ofst(bar)($4)
+       ld      $4,%got_hi(bar)($4)
+       ld      $4,%got_lo(bar)($4)
+       ld      $4,%got(bar)($4)
+       ld      $4,%gp_rel(bar)($4)
+       ld      $4,%half(bar)($4)
+       ld      $4,%highest(bar)($4)
+       ld      $4,%higher(bar)($4)
+       ld      $4,%neg(bar)($4)
+       ld      $4,%tlsgd(bar)($4)
+       ld      $4,%tlsldm(bar)($4)
+       ld      $4,%dtprel_hi(bar)($4)
+       ld      $4,%dtprel_lo(bar)($4)
+       ld      $4,%tprel_hi(bar)($4)
+       ld      $4,%tprel_lo(bar)($4)
+       ld      $4,%gottprel(bar)($4)
+
+       sd      $4,%call_hi(bar)($4)
+       sd      $4,%call_lo(bar)($4)
+       sd      $4,%call16(bar)($4)
+       sd      $4,%got_disp(bar)($4)
+       sd      $4,%got_page(bar)($4)
+       sd      $4,%got_ofst(bar)($4)
+       sd      $4,%got_hi(bar)($4)
+       sd      $4,%got_lo(bar)($4)
+       sd      $4,%got(bar)($4)
+       sd      $4,%gp_rel(bar)($4)
+       sd      $4,%half(bar)($4)
+       sd      $4,%highest(bar)($4)
+       sd      $4,%higher(bar)($4)
+       sd      $4,%neg(bar)($4)
+       sd      $4,%tlsgd(bar)($4)
+       sd      $4,%tlsldm(bar)($4)
+       sd      $4,%dtprel_hi(bar)($4)
+       sd      $4,%dtprel_lo(bar)($4)
+       sd      $4,%tprel_hi(bar)($4)
+       sd      $4,%tprel_lo(bar)($4)
+       sd      $4,%gottprel(bar)($4)
+       .end    foo