Skip to content
  • Simon Atanasyan's avatar
    [ELF][MIPS] N32 ABI support · 9e0297b8
    Simon Atanasyan authored
    In short the patch introduces support for linking object file conform
    MIPS N32 ABI [1]. This ABI is similar to N64 ABI but uses 32-bit
    pointer size.
    
    The most non-trivial requirement of this ABI is one more relocation
    packing format. N64 ABI puts multiple relocation type into the single
    relocation record. The N32 ABI uses series of successive relocations
    with the same offset for this purpose. In this patch, new function
    `mergeMipsN32RelTypes` handle this case and "convert" N32 relocation to
    the N64 relocation so the rest of the code keep unchanged.
    
    For now, linker does not support series of relocations applied to sections
    without SHF_ALLOC bit. Probably later I will add the support or insert
    some sort of assert into the `relocateNonAlloc` routine to catch this
    case.
    
    [1] ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/MIPS-N32-ABI-Handbook.pdf
    
    Differential revision: https://reviews.llvm.org/D26298
    
    llvm-svn: 286052
    9e0297b8
Loading