Skip to content
  1. Dec 21, 2016
  2. Dec 19, 2016
    • Rafael Espindola's avatar
      Fix corner cases of setting the section address. · 5967c973
      Rafael Espindola authored
      This handles all the corner cases if setting a section address:
      
      - If the address is too low, we cannot allocate the program headers.
      - If the load address is lowered, we have to do that before finalize
      
      This also shares some code with the linker script since it was already
      hitting similar cases.
      
      This is used by the freebsd boot loader. It is not clear if we need to
      support this with a non binary output, but it is not as bad as I was
      expecting.
      
      llvm-svn: 290136
      5967c973
    • Rafael Espindola's avatar
      Detemplate PhdrEntry. NFC. · 17cb7c0a
      Rafael Espindola authored
      llvm-svn: 290115
      17cb7c0a
  3. Nov 29, 2016
  4. Nov 10, 2016
  5. Nov 05, 2016
    • 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
  6. Nov 04, 2016
  7. Oct 28, 2016
    • Rui Ueyama's avatar
      Consolidate BumpPtrAllocators. · 55518e7d
      Rui Ueyama authored
      Previously, we have a lot of BumpPtrAllocators, but all these
      allocators virtually have the same lifetime because they are
      not freed until the linker finishes its job. This patch aggregates
      them into a single allocator.
      
      Differential revision: https://reviews.llvm.org/D26042
      
      llvm-svn: 285452
      55518e7d
  8. Oct 20, 2016
  9. Oct 13, 2016
    • Rui Ueyama's avatar
      Support GNU-style ZLIB-compressed input sections. · 05384080
      Rui Ueyama authored
      Previously, we supported only SHF_COMPRESSED sections because it's
      new and it's the ELF standard. But there are object files compressed
      in the GNU style out there, so we had to support it.
      
      Sections compressed in the GNU style start with ".zdebug_" and
      contain different headers than the ELF standard's one. In this
      patch, getRawCompressedData is responsible to handle it.
      
      A tricky thing about GNU-style compressed sections is that we have
      to rename them when creating output sections. ".zdebug_" prefix
      implies the section is compressed. We need to rename ".zdebug_"
      ".debug" because our output sections are not compressed.
      We do that in this patch.
      
      llvm-svn: 284068
      05384080
  10. Oct 05, 2016
  11. Sep 09, 2016
  12. Aug 12, 2016
  13. Aug 09, 2016
  14. Aug 08, 2016
    • Rui Ueyama's avatar
      Refactor getMipsEFlags. · 31f32fa6
      Rui Ueyama authored
      Previously, we incrementally updated the reuslting flag as we check
      file flags, so it was not very clear who is updating what flags.
      This patch makes them pure functions -- that has no side effect and
      don't update arguments to improve readability.
      
      Now each function construct a patial result, and all resutls are then
      bitwise-OR'ed to construct the final result.
      
      This patch also creates a new file, Mips.cpp, to move all these
      MIPS functions to a separate file.
      
      Differential Revision: https://reviews.llvm.org/D23249
      
      llvm-svn: 278042
      31f32fa6
  15. Jul 27, 2016
  16. Jul 26, 2016
  17. Jul 21, 2016
  18. Jul 20, 2016
  19. Jul 19, 2016
  20. Jul 12, 2016
  21. May 02, 2016
  22. Feb 28, 2016
  23. 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
  24. 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
  25. Oct 07, 2015
  26. Aug 14, 2015
  27. Aug 12, 2015
  28. 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
  29. 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
  30. Aug 04, 2015
  31. Jul 30, 2015
  32. Jul 29, 2015
  33. Jul 26, 2015
  34. Jul 24, 2015
  35. Jul 14, 2015
Loading