fix several Zcmt issues
Created by: linsinan1995
Info for this PR
TODO: change log and other documentation will be added during the review.
1. Commits are for fixing #55 (closed)
632204fb: fix issue #55 (closed). After this fix, the condition branch will use a temp symbol instead of a constant during the branch relaxation in GAS.
db8e3588: a testcase for 632204fb.
2. Commits are added to help test this PR
c22f48ec: add a RISC-V specific option --zcmt-force-table-jump to force generating zcmt table jump instructions, which helps write test cases. Also, it relates to issue #44 (closed).
55d1396c: change an unused test case to a test case for --zcmt-force-table-jump option.
b3e53393: adding R_RISCV_RELAX to jump instructions when ZCMT is used. Since ZCMT codegen will be done through linker relaxation, this change will help ZCMT to fit into the relaxation routine to avoid some ugly hacks and also fits the ABI proposal.
88f3581c: fix issue #48 (closed). I add this commit here since this implementation bug blocks the progress of fixing issue #55 (closed).
Test result
=== libctf Summary ===
# of expected passes 4
# of unsupported tests 2
=== binutils Summary ===
# of expected passes 207
# of expected failures 1
# of untested testcases 15
# of unsupported tests 13
=== gas Summary ===
# of expected passes 1234
# of expected failures 23
# of unsupported tests 9
=== ld Summary ===
# of expected passes 437
# of expected failures 13
# of untested testcases 22
# of unsupported tests 200
============================================================================
Testsuite summary for package-unused version-unused
============================================================================
# TOTAL: 33
# PASS: 33
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================