Skip to content
  1. Nov 23, 2016
  2. Nov 11, 2016
  3. Nov 10, 2016
  4. Aug 17, 2016
  5. Jul 20, 2016
    • Rafael Espindola's avatar
      Create thunks before regular relocation scan. · 0f7cedaa
      Rafael Espindola authored
      We will need to do something like this to support range extension
      thunks since that process is iterative.
      
      Doing this also has the advantage that when doing the regular
      relocation scan the offset in the output section is known and we can
      just store that. This reduces the number of times we have to run
      getOffset and I think will allow a more specialized .eh_frame
      representation.
      
      By itself this is already a performance win.
      
      firefox
        master 7.295045737
        patch  7.209466989 0.98826892235
      chromium
        master 4.531254468
        patch  4.509221804 0.995137623774
      chromium fast
        master 1.836928973
        patch  1.823805241 0.992855612714
      the gold plugin
        master 0.379768791
        patch  0.380043405 1.00072310839
      clang
        master 0.642698284
        patch  0.642215663 0.999249070657
      llvm-as
        master 0.036665467
        patch  0.036456225 0.994293213284
      the gold plugin fsds
        master 0.40395817
        patch  0.404384555 1.0010555177
      clang fsds
        master 0.722045545
        patch  0.720946135 0.998477367518
      llvm-as fsds
        master 0.03292646
        patch  0.032759965 0.994943428477
      scylla
        master 3.427376378
        patch  3.368316181 0.98276810292
      
      llvm-svn: 276146
      0f7cedaa
  6. Jul 14, 2016
  7. Jul 13, 2016
  8. Jul 10, 2016
    • Rui Ueyama's avatar
      Remove Target::writeThunk. · e2efadce
      Rui Ueyama authored
      Only MipsThunk were using the function, and the way how it wrote
      thunk contents was different from ARM thunks. This patch makes
      them consistent.
      
      llvm-svn: 274997
      e2efadce
  9. Jul 08, 2016
    • Peter Smith's avatar
      Recommit R274836 Add Thunk support framework for ARM and Mips · fb05cd99
      Peter Smith authored
      The TinyPtrVector of const Thunk<ELFT>* in InputSections.h can cause 
      build failures on certain compiler/library combinations when Thunk<ELFT> 
      is not a complete type or is an abstract class. Fixed by making Thunk<ELFT>
      non Abstract.
      
      type or is an abstract class 
      
      llvm-svn: 274863
      fb05cd99
    • Peter Smith's avatar
      Revert R274836 Add Thunk support framework for ARM and Mips · eeb82744
      Peter Smith authored
      This seems to be causing a buildbot failure on lld-x86_64-freebsd. Will
      reproduce locally and fix. 
      
      llvm-svn: 274841
      eeb82744
    • Peter Smith's avatar
      Add Thunk support framework for ARM and Mips · de01b98a
      Peter Smith authored
          
          Generalise the Mips LA25 Thunk code and implement ARM and Thumb
          interworking Thunks.
          
          - Introduce a new module Thunks.cpp to store the Target Specific Thunk
            implementations.
          - DefinedRegular and Shared have a ThunkData field to record Thunk.
          - A Target can have more than one type of Thunk.
          - Support PC-relative calls to Thunks.
          - Support Thunks to PLT entries.
          - Existing Mips LA25 Thunk code integrated.
          - Support for ARMv7A interworking Thunks.
          
          Limitations:
          - Only one Thunk per SymbolBody, this is sufficient for all currently
            implemented Thunks.
          - ARM thunks assume presence of V6T2 MOVT and MOVW instructions.
      
          Differential revision: http://reviews.llvm.org/D21891
      
      llvm-svn: 274836
      de01b98a
  10. Jun 17, 2016
  11. Jun 16, 2016
    • Rui Ueyama's avatar
      Rename PltZero -> PltHeader. · 4a90f57e
      Rui Ueyama authored
      PltZero (or PLT[0]) was an appropriate name for the little code
      we have at beginning of the PLT section when we only supported x86
      since the code for x86 just fits in the first PLT slot.
      
      It's not the case anymore. The code for ARM64 occupies first two
      slots, so PltZero spans PLT[0] and PLT[1], for example.
      This patch renames it to avoid confusion.
      
      llvm-svn: 272913
      4a90f57e
    • Rui Ueyama's avatar
      Eliminate unnecessary call of SymbolBody::getPltVA. · c9fee5fe
      Rui Ueyama authored
      For ARM and MIPS, we don't need to call this function.
      This patch passes a symbol instead of a PLT entry address
      so that the target handler can call it if necessary.
      
      llvm-svn: 272910
      c9fee5fe
  12. Jun 08, 2016
  13. Jun 05, 2016
  14. Jun 02, 2016
    • Rafael Espindola's avatar
      Start adding tlsdesc support for aarch64. · e37d13b9
      Rafael Espindola authored
      This is mostly extracted from http://reviews.llvm.org/D18960.
      
      The general idea for tlsdesc is that the two GD got entries are used
      for a function pointer and its argument. The dynamic linker sets
      both. In the non-dlopen case the dynamic linker sets the function to
      the identity and the argument to the offset in the tls block.
      
      All that the static linker has to do in the non-dlopen case is
      relocate the code to point to the got entries and create a dynamic
      relocation.
      
      The dlopen case is more complicated, but can be implemented in another patch.
      
      llvm-svn: 271569
      e37d13b9
  15. Jun 01, 2016
  16. May 26, 2016
  17. May 25, 2016
  18. May 24, 2016
  19. May 20, 2016
    • Rafael Espindola's avatar
      Make tp offset computation target independent. · 8818ca69
      Rafael Espindola authored
      This adds direct support for computing offsets from the thread pointer
      for both variants. Of the architectures we support, variant 1 is used
      only by aarch64 (but that doesn't seem to be documented anywhere.)
      
      llvm-svn: 270243
      8818ca69
  20. May 18, 2016
    • Rafael Espindola's avatar
      Drop vestigial support for UseLazyBinding=false. · e4c86d83
      Rafael Espindola authored
      Lazy binding is quite important for use case like a shared build of
      llvm. Also, if someone wants to disable it, it is better done in the
      compiler (disable plt generation).
      
      The only reason to keep it is to make it easier to add a new
      architecture. But it doesn't really help much as it is possible to start
      with non lazy relocation and plt code but still let the generic part
      create a dedicated .got.plt and .rela.plt.
      
      llvm-svn: 269982
      e4c86d83
  21. May 09, 2016
  22. May 04, 2016
  23. Apr 28, 2016
  24. Apr 27, 2016
  25. Apr 25, 2016
  26. Apr 21, 2016
  27. Apr 20, 2016
Loading