Index: lld/trunk/ELF/Driver.cpp =================================================================== --- lld/trunk/ELF/Driver.cpp +++ lld/trunk/ELF/Driver.cpp @@ -790,18 +790,8 @@ readDynamicList(*Buffer); for (auto *Arg : Args.filtered(OPT_export_dynamic_symbol)) - Config->VersionScriptGlobals.push_back( + Config->DynamicList.push_back( {Arg->getValue(), /*IsExternCpp*/ false, /*HasWildcard*/ false}); - - // Dynamic lists are a simplified linker script that doesn't need the - // "global:" and implicitly ends with a "local:*". Set the variables - // needed to simulate that. - if (Args.hasArg(OPT_dynamic_list) || - Args.hasArg(OPT_export_dynamic_symbol)) { - Config->ExportDynamic = true; - if (!Config->Shared) - Config->DefaultSymbolVersion = VER_NDX_LOCAL; - } } if (auto *Arg = Args.getLastArg(OPT_version_script)) Index: lld/trunk/ELF/SymbolTable.cpp =================================================================== --- lld/trunk/ELF/SymbolTable.cpp +++ lld/trunk/ELF/SymbolTable.cpp @@ -733,7 +733,7 @@ for (SymbolBody *B : Syms) { if (!Config->Shared) - B->symbol()->VersionId = VER_NDX_GLOBAL; + B->symbol()->ExportDynamic = true; else if (B->symbol()->includeInDynsym()) B->IsPreemptible = true; } Index: lld/trunk/test/ELF/gc-sections-shared.s =================================================================== --- lld/trunk/test/ELF/gc-sections-shared.s +++ lld/trunk/test/ELF/gc-sections-shared.s @@ -19,6 +19,15 @@ # CHECK-NEXT: Section: Undefined (0x0) # CHECK-NEXT: } # CHECK-NEXT: Symbol { +# CHECK-NEXT: Name: bar +# CHECK-NEXT: Value: +# CHECK-NEXT: Size: +# CHECK-NEXT: Binding: Global +# CHECK-NEXT: Type: +# CHECK-NEXT: Other: +# CHECK-NEXT: Section: .text +# CHECK-NEXT: } +# CHECK-NEXT: Symbol { # CHECK-NEXT: Name: bar2 # CHECK-NEXT: Value: # CHECK-NEXT: Size: