-
Clemens Fruhwirth authored
binutils <2.17 can't generate PC64 relocations for x86_64. Hence we emit only 32 bit PC relative offsets, and artifically stick a zero in front of them to make them 64 bit (see PprMach.sh ppr_item in pprDataItem). This works as long as the offset is <32bit AND it's positive. This is not the case for offsets in jump tables, they are all negative. This hack sign extends them with a MOVSXL instruction into the dead index register, then adding the properly sign extended offset to the jump table base label giving the correct target address for the following jump.
b8a64b8e