Index: ELF/Arch/Hexagon.cpp =================================================================== --- ELF/Arch/Hexagon.cpp +++ ELF/Arch/Hexagon.cpp @@ -53,6 +53,7 @@ RelExpr Hexagon::getRelExpr(RelType Type, const Symbol &S, const uint8_t *Loc) const { switch (Type) { + case R_HEX_B13_PCREL: case R_HEX_B15_PCREL: case R_HEX_B15_PCREL_X: case R_HEX_B22_PCREL: @@ -152,6 +153,9 @@ case R_HEX_32_6_X: or32le(Loc, applyMask(0x0fff3fff, Val >> 6)); 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 @@ -194,3 +194,7 @@ # 0xb0000000 r0 = add(r1, ##_start) # CHECK: b001c000 r0 = add(r1,##69632) } + +# R_HEX_B13_PCREL +if (r0 == #0) jump:t #_start +# CHECK: if (r0==#0) jump:t 0x11000