Skip to content
  1. Dec 25, 2013
  2. Dec 02, 2013
  3. Oct 31, 2013
    • Rafael Espindola's avatar
      Use LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN instead of the "dso list". · 282a4703
      Rafael Espindola authored
      There are two ways one could implement hiding of linkonce_odr symbols in LTO:
      * LLVM tells the linker which symbols can be hidden if not used from native
        files.
      * The linker tells LLVM which symbols are not used from other object files,
        but will be put in the dso symbol table if present.
      
      GOLD's API is the second option. It was implemented almost 1:1 in llvm by
      passing the list down to internalize.
      
      LLVM already had partial support for the first option. It is also very similar
      to how ld64 handles hiding these symbols when *not* doing LTO.
      
      This patch then
      * removes the APIs for the DSO list.
      * marks LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN all linkonce_odr unnamed_addr
        global values and other linkonce_odr whose address is not used.
      * makes the gold plugin responsible for handling the API mismatch.
      
      llvm-svn: 193800
      282a4703
  4. Oct 18, 2013
  5. Oct 16, 2013
  6. Oct 03, 2013
  7. Aug 12, 2013
    • Shuxin Yang's avatar
      Revert r188188 and r188200. · 1826ae23
      Shuxin Yang authored
      In order to appease people (in Apple) who accuse me for committing "huge change" (?) without proper review. 
      
      Thank Eric for fixing a compile-warning. 
      
      llvm-svn: 188204
      1826ae23
    • Shuxin Yang's avatar
      Misc enhancements to LTO: · 76d082b5
      Shuxin Yang authored
        1. Add some helper classes for partitions. They are designed in a
           way such that the top-level LTO driver will not see much difference 
           with or without partitioning.
      
        2. Introduce work-dir. Now all intermediate files generated during 
           LTO phases will be saved under work-dir. User can specify the workdir
           via -lto-workdir=/path/to/dir. By default the work-dir will be 
           erased before linker exit. To keep the workdir, do -lto-keep, or -lto-keep=1.
      
          TODO: Erase the workdir, if the linker exit prematurely.  
            We are currently not able to remove directory on signal. The support 
            routines simply ignore directory.
      
        3. Add one new API lto_codegen_get_files_need_remove().
           Linker and LTO plugin will communicate via this API about which files
          (including directories) need to removed before linker exit.
      
      llvm-svn: 188188
      76d082b5
  8. Jul 23, 2013
    • Rafael Espindola's avatar
      Split getOpenFile into getOpenFile and getOpenFileSlice. · 3d2ac2e4
      Rafael Espindola authored
      The main observation is that we never need both the filesize and the map size.
      When mapping a slice of a file, it doesn't make sense to request a null
      terminator and that would be the only case where the filesize would be used.
      
      There are other cleanups that should be done in this area:
      
      * A client should not have to pass the size (even an explicit -1) to say if
        it wants a null terminator or not, so we should probably swap the argument
        order.
      * The default should be to not require a null terminator. Very few clients
        require this, but many end up asking for it just because it is the default.
      
      llvm-svn: 186984
      3d2ac2e4
    • Rafael Espindola's avatar
      Fix use of the getOpenFile api. · bf1a9184
      Rafael Espindola authored
      The gold plugin was passing the desired map size as the file size. This was
      working for two reasons:
      * Recent version of gold provide the get_view callback, so this code was not
        used.
      * In older versions, getOpenFile was called, but the file size is never used
        if we don't require null terminated buffers and map size defaults to the
        file size.
      
      Thanks to Eli Bendersky for noticing this.
      
      I will try to make this api a bit less error prone.
      
      llvm-svn: 186978
      bf1a9184
  9. Jun 18, 2013
    • Rafael Espindola's avatar
      Fix the build with gcc 4.7 and -std=c++11. · d9a5608d
      Rafael Espindola authored
      The error message was:
      
      /home/espindola/llvm/llvm/tools/gold/gold-plugin.cpp: In function ‘ld_plugin_status cleanup_hook()’:
      /home/espindola/llvm/llvm/tools/gold/gold-plugin.cpp:461:30: error: cannot pass objects of non-trivially-copyable type ‘std::string {aka class std::basic_string<char>}’ through ‘...’
      
      I will check if this was a clang or gcc issue.
      
      llvm-svn: 184138
      d9a5608d
  10. Jun 17, 2013
  11. Jun 13, 2013
  12. Dec 04, 2012
    • Chandler Carruth's avatar
      Sort the #include lines for tools/... · 4d88a1c2
      Chandler Carruth authored
      Again, tools are trickier to pick the main module header for than
      library source files. I've started to follow the pattern of using
      LLVMContext.h when it is included as a stub for program source files.
      
      llvm-svn: 169252
      4d88a1c2
  13. Oct 26, 2012
  14. Aug 27, 2012
  15. Jun 13, 2012
  16. Dec 23, 2011
  17. Nov 23, 2011
  18. Nov 05, 2011
  19. Oct 18, 2011
  20. Sep 16, 2011
  21. Sep 12, 2011
  22. Sep 09, 2011
  23. Jul 26, 2011
  24. May 31, 2011
  25. May 12, 2011
  26. May 04, 2011
  27. Apr 07, 2011
  28. Mar 22, 2011
  29. Mar 17, 2011
  30. Mar 11, 2011
  31. Feb 27, 2011
  32. Feb 26, 2011
  33. Feb 20, 2011
Loading