Skip to content
  • Cary Coutant's avatar
    Fix case where IR file provides symbol visibility but replacement file does not. · 0b7a4aa6
    Cary Coutant authored
    In PR 22868, two IR files provide conflicting visibility for a symbol.
    When a def with PROTECTED visibility is seen after a def with DEFAULT
    visibility, gold does not override the visibility. Later, if the
    replacement object define the symbol with DEFAULT visibility, the symbol
    remains DEFAULT. This was caused by a recent change to allow multiply-defined
    absolute symbols, combined with the fact that the plugin framework was using
    SHN_ABS as the section index for placeholder symbols. The solution is to
    use a real (but arbitrary) section index.
    
    gold/
    	PR gold/22868
    	* plugin.cc (Sized_pluginobj::do_add_symbols): Use a real section
    	index instead of SHN_ABS for defined symbols.
    	* testsuite/Makefile.am (plugin_pr22868): New test case.
    	* testsuite/Makefile.in: Regenerate
    	* testsuite/plugin_pr22868.sh: New test script.
    	* testsuite/plugin_pr22868_a.c: New source file.
    	* testsuite/plugin_pr22868_b.c: New source file.
    0b7a4aa6