[lld] 5bc4e15 - [ELF] Set config->exportDynamic to true if config->shared. NFC

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 24 11:32:09 PST 2022


Author: Fangrui Song
Date: 2022-02-24T11:31:58-08:00
New Revision: 5bc4e15c6e3dee7acf558ed68316a9a968e9bc0f

URL: https://github.com/llvm/llvm-project/commit/5bc4e15c6e3dee7acf558ed68316a9a968e9bc0f
DIFF: https://github.com/llvm/llvm-project/commit/5bc4e15c6e3dee7acf558ed68316a9a968e9bc0f.diff

LOG: [ELF] Set config->exportDynamic to true if config->shared. NFC

Added: 
    

Modified: 
    lld/ELF/Driver.cpp
    lld/ELF/LTO.cpp
    lld/ELF/Symbols.h

Removed: 
    


################################################################################
diff  --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 7978082f86cf4..5af69e78a3ad9 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -1016,7 +1016,8 @@ static void readConfigs(opt::InputArgList &args) {
   config->executeOnly =
       args.hasFlag(OPT_execute_only, OPT_no_execute_only, false);
   config->exportDynamic =
-      args.hasFlag(OPT_export_dynamic, OPT_no_export_dynamic, false);
+      args.hasFlag(OPT_export_dynamic, OPT_no_export_dynamic, false) ||
+      args.hasArg(OPT_shared);
   config->filterList = args::getStrings(args, OPT_filter);
   config->fini = args.getLastArgValue(OPT_fini, "_fini");
   config->fixCortexA53Errata843419 = args.hasArg(OPT_fix_cortex_a53_843419) &&

diff  --git a/lld/ELF/LTO.cpp b/lld/ELF/LTO.cpp
index 78d1280e5f419..a6c6e65b1619e 100644
--- a/lld/ELF/LTO.cpp
+++ b/lld/ELF/LTO.cpp
@@ -249,9 +249,9 @@ void BitcodeCompiler::add(BitcodeFile &f) {
                             usedStartStop.count(objSym.getSectionName());
     // Identify symbols exported dynamically, and that therefore could be
     // referenced by a shared library not visible to the linker.
-    r.ExportDynamic = sym->computeBinding() != STB_LOCAL &&
-                      (config->shared || config->exportDynamic ||
-                       sym->exportDynamic || sym->inDynamicList);
+    r.ExportDynamic =
+        sym->computeBinding() != STB_LOCAL &&
+        (config->exportDynamic || sym->exportDynamic || sym->inDynamicList);
     const auto *dr = dyn_cast<Defined>(sym);
     r.FinalDefinitionInLinkageUnit =
         (isExec || sym->visibility != STV_DEFAULT) && dr &&

diff  --git a/lld/ELF/Symbols.h b/lld/ELF/Symbols.h
index 96f946935d4d1..1a6cc9f12a2de 100644
--- a/lld/ELF/Symbols.h
+++ b/lld/ELF/Symbols.h
@@ -318,7 +318,7 @@ class Defined : public Symbol {
           uint8_t type, uint64_t value, uint64_t size, SectionBase *section)
       : Symbol(DefinedKind, file, name, binding, stOther, type), value(value),
         size(size), section(section) {
-    exportDynamic = config->shared || config->exportDynamic;
+    exportDynamic = config->exportDynamic;
   }
 
   static bool classof(const Symbol *s) { return s->isDefined(); }
@@ -355,7 +355,7 @@ class CommonSymbol : public Symbol {
                uint8_t stOther, uint8_t type, uint64_t alignment, uint64_t size)
       : Symbol(CommonKind, file, name, binding, stOther, type),
         alignment(alignment), size(size) {
-    exportDynamic = config->shared || config->exportDynamic;
+    exportDynamic = config->exportDynamic;
   }
 
   static bool classof(const Symbol *s) { return s->isCommon(); }


        


More information about the llvm-commits mailing list