Skip to content
  • 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
Loading