Index: ELF/Arch/Hexagon.cpp =================================================================== --- ELF/Arch/Hexagon.cpp +++ ELF/Arch/Hexagon.cpp @@ -55,6 +55,7 @@ switch (Type) { case R_HEX_B9_PCREL: case R_HEX_B9_PCREL_X: + case R_HEX_B13_PCREL: case R_HEX_B15_PCREL: case R_HEX_B15_PCREL_X: case R_HEX_B22_PCREL: @@ -160,6 +161,9 @@ case R_HEX_B9_PCREL_X: or32le(Loc, applyMask(0x003000fe, Val & 0x3f)); break; + case R_HEX_B13_PCREL: + or32le(Loc, applyMask(0x00202ffe, Val >> 2)); + break; case R_HEX_B15_PCREL: or32le(Loc, applyMask(0x00df20fe, Val >> 2)); break; Index: test/ELF/hexagon.s =================================================================== --- test/ELF/hexagon.s +++ test/ELF/hexagon.s @@ -202,3 +202,7 @@ # R_HEX_B9_PCREL_X: {r0=#1 ; jump ##_start} # CHECK: jump 0x11000 + +# R_HEX_B13_PCREL +if (r0 == #0) jump:t #_start +# CHECK: if (r0==#0) jump:t 0x11000