bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/19887] New: --export-dynamic-symbol ignored for plugin symbols


From: eugeni.stepanov at gmail dot com
Subject: [Bug gold/19887] New: --export-dynamic-symbol ignored for plugin symbols
Date: Wed, 30 Mar 2016 19:03:41 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=19887

            Bug ID: 19887
           Summary: --export-dynamic-symbol ignored for plugin symbols
           Product: binutils
           Version: 2.27 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gold
          Assignee: ccoutant at gmail dot com
          Reporter: eugeni.stepanov at gmail dot com
                CC: ian at airs dot com
  Target Milestone: ---

$ cat 1.c
void f() {}
int main() {}

$ clang -flto -O0 1.c -fuse-ld=gold -Wl,--export-dynamic-symbol=f
-Wl,-plugin-opt,generate-api-file

$ cat apifile.txt
f PREVAILING_DEF_IRONLY
main PREVAILING_DEF

Gold says that "f" is PREVAILING_DEF_IRONLY, i.e. has no external references. I
believe it should be PREVAILING_DEF_IRONLY_EXP due to
--export-dynamic-symbol=f.

The following patch implements the desired behaviour, though I'm not 100% sure
this is the best place for the fix.

--- a/gold/plugin.cc
+++ b/gold/plugin.cc
@@ -930,7 +930,10 @@ is_visible_from_outside(Symbol* lsym)
 {
   if (lsym->in_dyn())
     return true;
-  if (parameters->options().export_dynamic() ||
parameters->options().shared())
+  if (parameters->options().export_dynamic() ||
+      parameters->options().shared() ||
+      parameters->options().in_dynamic_list(lsym->name()) ||
+      parameters->options().is_export_dynamic_symbol(lsym->name()))
     return lsym->is_externally_visible();
   return false;
 }

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]