I'm porting LLVM jit to a custom kernel where mmap is disabled and the only way to inject executable code in the running process is to generate and load DSO. This makes it problematic to have absolute jumps with source and target in the same object file, because ASLR is being used and I only know DSO load address after call to dlopen.
To my understanding there is no need to use absolute jumps, when relative can do the job. Also they are faster and require less number of relocs to be resolved.
All LLVM tests pass. I didn't create extra unit tests, because I'd like to know if this is correct way of doing things first.
please add a comment explaining what this function does.