Skip to content
  1. Nov 23, 2016
  2. May 24, 2016
  3. Apr 22, 2016
    • Peter Collingbourne's avatar
      ELF: Implement basic support for --version-script. · 66ac1d61
      Peter Collingbourne authored
      This patch only implements support for version scripts of the form:
        { [ global: symbol1; symbol2; [...]; symbolN; ] local: *; };
      No wildcards are supported, other than for the local entry. Symbol versioning
      is also not supported.
      
      It works by introducing a new Symbol flag which tracks whether a symbol
      appears in the global section of a version script.
      
      This patch also simplifies the logic in SymbolBody::isPreemptible(), and
      teaches it to handle the case where symbols with default visibility in DSOs
      do not appear in the dynamic symbol table because of a version script.
      
      Fixes PR27482.
      
      Differential Revision: http://reviews.llvm.org/D19430
      
      llvm-svn: 267208
      66ac1d61
  4. Apr 13, 2016
    • Adhemerval Zanella's avatar
      ELF: Implement --dynamic-list · 9df07207
      Adhemerval Zanella authored
      This patch implements the --dynamic-list option, which adds a list of
      global symbol that either should not be bounded by default definition
      when creating shared libraries, or add in dynamic symbol table in the
      case of creating executables.
      
      The patch modifies the ScriptParserBase class to use a list of Token
      instead of StringRef, which contains information if the token is a
      quoted or unquoted strings. It is used to use a faster search for
      exact match symbol name.
      
      The input file follow a similar format of linker script with some
      simplifications (it does not have scope or node names). It leads
      to a simplified parser define in DynamicList.{cpp,h}.
      
      Different from ld/gold neither glob pattern nor mangled names
      (extern 'C++') are currently supported.
      
      llvm-svn: 266227
      9df07207
  5. Feb 28, 2016
  6. Oct 22, 2015
    • Rui Ueyama's avatar
      ELF2: Implement --gc-sections. · c4aaed92
      Rui Ueyama authored
      Section garbage collection is a feature to remove unused sections
      from outputs. Unused sections are sections that cannot be reachable
      from known GC-root symbols or sections. Naturally the feature is
      implemented as a mark-sweep garbage collector.
      
      In this patch, I added Live bit to InputSectionBase. If and only
      if Live bit is on, the section will be written to the output.
      Starting from GC-root symbols or sections, a new function, markLive(),
      visits all reachable sections and sets their Live bits. Writer then
      ignores sections whose Live bit is off, so that such sections are
      excluded from the output.
      
      This change has small negative impact on performance if you use
      the feature because making sections means more work. The time to
      link Clang changes from 0.356s to 0.386s, or +8%.
      
      It reduces Clang size from 57,764,984 bytes to 55,296,600 bytes.
      That is 4.3% reduction.
      
      http://reviews.llvm.org/D13950
      
      llvm-svn: 251043
      c4aaed92
  7. Oct 09, 2015
    • Rui Ueyama's avatar
      ELF2: Make SymbolTable a template class. · 3ce825ed
      Rui Ueyama authored
      SymbolTable was not a template class. Instead we had switch-case-based
      type dispatch to call desired functions. We had to do that because
      SymbolTable was created before we know what ELF type objects had been
      passed.
      
      Every time I tried to add a new function to the symbol table, I had to
      define a dispatcher which consist of a single switch statement.
      
      It also brought an restriction what the driver can do. For example,
      we cannot add undefined symbols before any files are added to the symbol
      table. That's because no symbols can be added until the symbol table
      knows the ELF type, but when it knows about that, it's too late.
      
      In this patch, the driver makes a decision on what ELF type objects
      are being handled. Then the driver creates a SymbolTable object for
      an appropriate ELF type.
      
      http://reviews.llvm.org/D13544
      
      llvm-svn: 249902
      3ce825ed
  8. Oct 07, 2015
  9. Aug 14, 2015
  10. Aug 12, 2015
  11. Aug 06, 2015
    • Rui Ueyama's avatar
      COFF, ELF2: Pass output file path implicitly using Config global variable. · cb8474ed
      Rui Ueyama authored
      Various parameters are passed implicitly using Config global variable
      already. Output file path is no different from others, so there was no
      special reason to handle that differnetly.
      
      This patch changes the signature of writeResult(SymbolTable *, StringRef)
      to writeResult(SymbolTable *).
      
      llvm-svn: 244180
      cb8474ed
    • Rui Ueyama's avatar
      ELF2: Simplify Writer interface. · afff74e2
      Rui Ueyama authored
      We are using Writer more like a function instead of a class.
      This patch makes it a function to simplify the interface.
      All details of Writer class is now hidden from other parts of the linker.
      
      llvm-svn: 244169
      afff74e2
  12. Aug 05, 2015
    • Rafael Espindola's avatar
      For now we only have on Chunk type. Simplify. · e7a00e32
      Rafael Espindola authored
      The others we have in sight are
      * common symbols.
      * entries in SHF_MERGE sections.
      
      They will have a substantially different treatment. It is not clear if it is
      worth it putting them all in a single list just to dispatch based on the kind on
      the other side.
      
      I hope to implement common symbols soon, and then we will be in a position
      to have a concrete discussion. For now this is simpler for the the implemented
      features.
      
      llvm-svn: 244042
      e7a00e32
  13. Aug 04, 2015
  14. Jul 30, 2015
  15. Jul 29, 2015
  16. Jul 26, 2015
  17. Jul 24, 2015
  18. Jul 14, 2015
Loading