http://sourceware.org/bugzilla/show_bug.cgi?id=13177

             Bug #: 13177
           Summary: garbage collector retains zombie references to
                    external libraries
           Product: binutils
           Version: 2.21
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
        AssignedTo: unassig...@sources.redhat.com
        ReportedBy: p...@eava.ee
    Classification: Unclassified


If shared library is compiled and linked with garbage collection enabled,
zombie references to external libraries are retained that result future link
failure.
(ld 2.21, gcc 4.5.2, Ubuntu 11.04)

Steps to repro:
* Create file shared.c
--8<--
#include <dlfcn.h>
void opt_out(const char *name)
{
    dlopen(name, RTLD_LAZY);
}
__attribute__ ((visibility ("default"))) int add_two(int number)
{
    return number+2;
}
-->8--

* Create shared library by running
gcc -fpic -shared -ffunction-sections -fdata-sections -Wl,--gc-sections
-fvisibility=hidden -o libtest.so shared.c -static-libgcc
Result: SUCCESS, no errors.

* Verify created library references by running
ldd -r libtest.so
Resukt: SUCCESS. No unreferenced symbols and expected list of library bindings.

* Create file main.c:
--8<--
int add_two(int);
int main()
{
    return add_two(-2);
}
-->8--

* Create a program by running:
gcc -o main main.c -L. -ltest
Expected result: Program compailes and links correctly.
Acttual result: FAIL. ld returns:
  ./libtest.so: undefined reference to 'dlopen' 
  collect2: ld returned 1 exit status

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to