Skip to content
  • Simon Atanasyan's avatar
    [ELF][MIPS] Support MIPS TLS relocations · 002e2447
    Simon Atanasyan authored
    The patch adds one more partition to the MIPS GOT. This time it is for
    TLS related GOT entries. Such entries are located after 'local' and 'global'
    ones. We cannot get a final offset for these entries at the time of
    creation because we do not know size of 'local' and 'global' partitions.
    So we have to adjust the offset later using `getMipsTlsOffset()` method.
    
    All MIPS TLS relocations which need GOT entries operates MIPS style GOT
    offset - 'offset from the GOT's beginning' - MipsGPOffset constant. That
    is why I add new types of relocation expressions.
    
    One more difference from othe ABIs is that the MIPS ABI does not support
    any TLS relocation relaxations. I decided to make a separate function
    `handleMipsTlsRelocation` and put MIPS TLS relocation handling code
    there. It is similar to `handleTlsRelocation` routine and duplicates its
    code. But it allows to make the code cleaner and prevent pollution of
    the `handleTlsRelocation` by MIPS 'if' statements.
    
    Differential Revision: http://reviews.llvm.org/D21606
    
    llvm-svn: 273569
    002e2447
Loading