Skip to content
  • Clemens Fruhwirth's avatar
    Sign extension hack to work around PC64 relocation limitation for binutils <2.17 for x86_64. · b8a64b8e
    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