Skip to content
  1. Oct 04, 2017
    • Rui Ueyama's avatar
      Remove BssSection::reserveSpace(). · 732f4e27
      Rui Ueyama authored
      We no longer call reserveSpace more than once, so it can be merged with
      its constructor.
      
      llvm-svn: 314867
      732f4e27
    • Shoaib Meenai's avatar
      [ELF] Decompress debug info sections early · 50d7b36f
      Shoaib Meenai authored
      When reporting a symbol conflict, LLD parses the debug info to report
      source location information. Sections have not been decompressed at this
      point, so if an object file contains zlib compressed debug info, LLD
      ends up passing this compressed debug info to the DWARF parser, which
      causes debug info parsing failures and can trigger assertions in the
      parser (as the test case demonstrates).
      
      Decompress debug sections when constructing the LLDDwarfObj to avoid
      this issue. This doesn't handle GNU-style compressed debug info sections
      (.zdebug_*), which at present are simply ignored by LLDDwarfObj; those
      can be done in a follow-up.
      
      Differential Revision: https://reviews.llvm.org/D38491
      
      llvm-svn: 314866
      50d7b36f
    • Rafael Espindola's avatar
      Add a note on where to get a lld benchmark. · 9b1dea50
      Rafael Espindola authored
      llvm-svn: 314862
      9b1dea50
  2. Oct 03, 2017
  3. Oct 02, 2017
    • Rui Ueyama's avatar
      Fix the shared library build. · 33b31a7c
      Rui Ueyama authored
      llvm-svn: 314725
      33b31a7c
    • Rui Ueyama's avatar
      Attempt to fix buildbots. · a37b587f
      Rui Ueyama authored
      llvm-svn: 314724
      a37b587f
    • Rui Ueyama's avatar
      Move new lld's code to Common subdirectory. · 3f851704
      Rui Ueyama authored
      New lld's files are spread under lib subdirectory, and it isn't easy
      to find which files are actually maintained. This patch moves maintained
      files to Common subdirectory.
      
      Differential Revision: https://reviews.llvm.org/D37645
      
      llvm-svn: 314719
      3f851704
    • Rui Ueyama's avatar
      Fix a data race found by tsan. · abf908e6
      Rui Ueyama authored
      Reads from `Live` and writes to `OutputOff` in the following code race
      even though they are logically independent because they are bitfields
      sharing the same word.
      
        for (size_t I = 0, E = Sec->Pieces.size(); I != E; ++I) {
          if (!Sec->Pieces[I].Live)
            continue;
          CachedHashStringRef Str = Sec->getData(I);
          size_t ShardId = getShardId(Str.hash());
          if ((ShardId & (Concurrency - 1)) == ThreadId)
            Sec->Pieces[I].OutputOff = Shards[ShardId].add(Str);
        }
      
      llvm-svn: 314711
      abf908e6
    • Rui Ueyama's avatar
      Rewrite a comment. · 6aeea183
      Rui Ueyama authored
      llvm-svn: 314707
      6aeea183
    • Simon Atanasyan's avatar
      [MIPS] Fix PLT entries generation in case of linking regular and microMIPS code · 649e4d32
      Simon Atanasyan authored
      Currently LLD calls the `isMicroMips` routine to determine type of PLT entries
      needs to be generated: regular or microMIPS. This routine checks ELF
      header flags in the `FirstObj` to retrieve type of linked object files.
      So if the first file does not contain microMIPS code, LLD will generate
      PLT entries with regular (non-microMIPS) code only.
      
      Ideally, if a PLT entry is referenced by microMIPS code only this entry
      should contain microMIPS code, if a PLT entry is referenced by regular
      code this entry should contain regular code. In a "mixed" case the PLT
      entry can be either microMIPS or regular, but each "cross-mode-call" has
      additional cost.
      
      It's rather difficult to implement this ideal solution. But we can
      assume that if there is an input object file with microMIPS code, the
      most part of the code is microMIPS too. So we need to deduce type of PLT
      entries based on finally calculated ELF header flags and do not check
      only the first input object file.
      
      This change implements this.
        - The `getMipsEFlags` renamed to the `calcMipsEFlags`. The function
          called from the `LinkerDriver::link`. Result is stored in
          the Configuration::MipsEFlags field.
        - The `isMicroMips` and `isMipsR6` routines access the `MipsEFlags`
          field to get and check calculated ELF flags.
        - New types of PLT records created when necessary.
      
      Differential revision: https://reviews.llvm.org/D37747
      
      llvm-svn: 314675
      649e4d32
    • George Rimar's avatar
      [ELF] - Stop removing sections in removeUnusedSyntheticSections(). · ba45584c
      George Rimar authored
      That makes code a bit more consistent. Instead of removing sections there
      we can just mark them as dead. So that removeEmptyCommands() will
      handle the rest.
      
      Differential revision: https://reviews.llvm.org/D38393
      
      llvm-svn: 314654
      ba45584c
    • Rui Ueyama's avatar
      Update for LLVM change. · daf5adc6
      Rui Ueyama authored
      r314639 ([X86] Change register&memory TEST instructions from MRMSrcMem
      to MRMDstMem) broke the test.
      
      llvm-svn: 314645
      daf5adc6
    • Rui Ueyama's avatar
      [ICF] Include section contents in section hash values. · 274aa2fb
      Rui Ueyama authored
      Computing section content hashes early seems like a win in terms of
      performance. It increases a chance that two different sections will get
      different class IDs from the beginning.
      
      Without threads, this patch improves Chromium link time by about 0.3
      seconds. With threads, by 0.1 seconds. That's less than 1% time saving
      but not bad for a small patch.
      
      llvm-svn: 314644
      274aa2fb
    • Rui Ueyama's avatar
      Inline hot functions. · 43ca7167
      Rui Ueyama authored
      llvm-svn: 314637
      43ca7167
  4. Oct 01, 2017
  5. Sep 30, 2017
  6. Sep 29, 2017
  7. Sep 28, 2017
  8. Sep 27, 2017
Loading