The original behavior was to always emit the offsets to each call site in the call site table as uleb128 values, however on some architectures (eg RISCV) these uleb128 offsets into the code cannot always be resolved until link time (because relaxation will invalidate any calculated offsets), and there are no appropriate relocations for uleb128 values. As a consequence it needs to be possible to specify an alternative.
This also switches RISCV to use DW_EH_PE_udata4 for call side encodings in .gcc_except_table
Regarding the 0x7 magic constant, it's not very clear in this context why that is the right value. Can we replace that with a symbolic constant, or at least add some context (a comment, etc.) to make it clear to readers the logic behind that value?