Skip to content
  1. Jan 27, 2017
    • Peter Smith's avatar
      [ELF][ARM] Use SyntheticSections for Thunks · 5191c6f9
      Peter Smith authored
          
      Thunks are now implemented by redirecting the relocation to the
      symbol S, to a symbol TS in a Thunk. The Thunk will transfer control
      to S. This has the following implications:
      - All the side-effects of Thunks happen within createThunks()
      - Thunks are no longer stored in InputSections and Symbols no longer
        need to hold a pointer to a Thunk
      - The synthetic Thunk sections need to be merged into OutputSections
          
      This implementation is almost a direct conversion of the existing
      Thunks with the following exceptions:
      - Mips LA25 Thunks are placed before the InputSection that defines
        the symbol that needs a Thunk.
      - All ARM Thunks are placed at the end of the OutputSection of the
        first caller to the Thunk.
          
      Range extension Thunks are not supported yet so it is optimistically
      assumed that all Thunks can be reused.
      
      Differential Revision:  https://reviews.llvm.org/D29129
      
      llvm-svn: 293283
      5191c6f9
    • Eugene Leviant's avatar
      [ELF] Fixed formatting. NFC · bcff495b
      Eugene Leviant authored
      llvm-svn: 293278
      bcff495b
    • Eugene Leviant's avatar
      [ELF] Bypass section type check · 8b7cadcf
      Eugene Leviant authored
      Differential revision: https://reviews.llvm.org/D28761
      
      llvm-svn: 293276
      8b7cadcf
    • Simon Dardis's avatar
      [lld][mips] Correct tests for mips64 implying PIC. · 73190d39
      Simon Dardis authored
      Currently LLVM can only generate PIC code for MIPS64 with the N64 as
      it uses the idiom "isPositionIndependent() || IsABI_N64()" throughout the
      MIPS backend. r293164 changed this, causing test failures for LLD.
      
      This patch changes the tests minimally to preserve existing test coverage
      and one case where the test was "right" in the wrong circumstance.
      
      Reviewers: atanasyan
      
      Differential Revision: https://reviews.llvm.org/D29194
      
      llvm-svn: 293275
      73190d39
  2. Jan 26, 2017
  3. Jan 25, 2017
  4. Jan 24, 2017
    • Rui Ueyama's avatar
      Add a file comment to SyntheticSections.h. · 8981f3aa
      Rui Ueyama authored
      llvm-svn: 292980
      8981f3aa
    • George Rimar's avatar
      [ELF] - Fixed crash after incrementing end iterator. · 3a934abe
      George Rimar authored
      Next code crashed under MSVS2015 for me:
      this->OutSec->Info = this->Info = 1 + It - Symbols.begin();
      
      Because It was end() and addition of 1 is not allowed. 
      vector implementation catched and failed that inside:
      
      _Myiter& operator+=(difference_type _Off)
      {	// increment by integer
       #if _ITERATOR_DEBUG_LEVEL == 2
      if (this->_Getcont() == 0
      	|| this->_Ptr + _Off < ((_Myvec *)this->_Getcont())->_Myfirst
      	|| ((_Myvec *)this->_Getcont())->_Mylast < this->_Ptr + _Off)
         {	// report error
      	_DEBUG_ERROR("vector iterator + offset out of range");
      	_SCL_SECURE_OUT_OF_RANGE;
      
      llvm-svn: 292940
      3a934abe
    • Peter Smith's avatar
      [ELF] Correct sh_info for static symbol table · ccb34efa
      Peter Smith authored
          
      The sh_info field of the SHT_SYMTAB section holds the index for the
      first non-local symbol. When there are global symbols that are output
      with STB_LOCAL binding due to having hidden visibility or matching
      the local version from a version script, the calculated value of
      NumLocals + 1 does not account for them. This change accounts for
      global symbols being output with local binding.
      
      Differential Revision: https://reviews.llvm.org/D28950
      
      llvm-svn: 292910
      ccb34efa
    • Pavel Labath's avatar
      [lld][cmake] Fix BUILD_SHARED_LIBS installation · dbcc04a5
      Pavel Labath authored
      Summary:
      This fixes a regression caused by D28397, which switched lld from using
      add_llvm_library to llvm_add_library. The latter does not automatically set up
      install rules for libraries, as it's expected the project will set them up
      manually based on its own needs.
      
      This adds the install rules to add_lld_library for lld. They were inspired by
      the similar add_clang_library macro in clang.
      
      Reviewers: ruiu, beanz, davidlt, EricWF, dtzWill
      
      Subscribers: mgorny, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D29007
      
      llvm-svn: 292909
      dbcc04a5
    • George Rimar's avatar
      [ELF] - Added additional comments on top of r292789 (D29021) · e3c2051d
      George Rimar authored
      It was requested during post commit review.
      
      llvm-svn: 292903
      e3c2051d
    • Rui Ueyama's avatar
      Do not allocate space for common symbols with -r · b2a23cf3
      Rui Ueyama authored
      Currently ld.lld -r allocates space for common symbols, whereas ld.bfd
      -r doesn't.  As a result the OpenBSD makefile bits for creating libraries
      fail as they use ld -X -r to strip local symbols, which results in
      duplicate symbol errors because space for the common symbols has been
      allocated.
      
      The diff also implements the --define-commons option such that allocation
      of commons can be forced even if -r is used.
      
      Patch by Mark Kettenis.
      
      llvm-svn: 292878
      b2a23cf3
    • Meador Inge's avatar
      [LinkerScript] Implement `MEMORY` command · b889744e
      Meador Inge authored
      As specified here:
      
      * https://sourceware.org/binutils/docs/ld/MEMORY.html#MEMORY
      
      There are two deviations from what is specified for GNU ld:
      
        1. Only integer constants and *not* constant expressions
           are allowed in `LENGTH` and `ORIGIN` initializations.
      
        2. The `I` and `L` attributes are *not* implemented.
      
      With (1) there is currently no easy way to evaluate integer
      only constant expressions.  This can be enhanced in the
      future.
      
      With (2) it isn't clear how these flags map to the `SHF_*`
      flags or if they even make sense for an ELF linker.
      
      Differential Revision: https://reviews.llvm.org/D28911
      
      llvm-svn: 292875
      b889744e
  5. Jan 23, 2017
  6. Jan 22, 2017
  7. Jan 20, 2017
Loading