Index: ELF/Arch/Hexagon.cpp =================================================================== --- ELF/Arch/Hexagon.cpp +++ ELF/Arch/Hexagon.cpp @@ -56,6 +56,7 @@ case R_HEX_B32_PCREL_X: case R_HEX_B22_PCREL_X: case R_HEX_B22_PCREL: + case R_HEX_B15_PCREL: return R_PC; default: return R_ABS; @@ -77,6 +78,9 @@ case R_HEX_B22_PCREL: or32le(Loc, applyMask(0x1ff3ffe, Val >> 2)); break; + case R_HEX_B15_PCREL: + or32le(Loc, applyMask(0x00df20fe, Val >> 2)); + break; default: error(getErrorLocation(Loc) + "unrecognized reloc " + toString(Type)); break; Index: test/ELF/hexagon.s =================================================================== --- test/ELF/hexagon.s +++ test/ELF/hexagon.s @@ -12,3 +12,6 @@ call ##_start # CHECK: immext(#4294967232) # CHECK: call 0x11000 +# R_HEX_B15_PCREL +if (p0) jump:nt #_start +# CHECK: if (p0) jump:nt 0x11000