Bug 114738
Summary: | load fail on hidden symbol `__dso_handle' | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 3 | Reporter: | Ralph Menikoff <rmenikoff> | ||||
Component: | libaio | Assignee: | Jeff Moyer <jmoyer> | ||||
Status: | CLOSED NOTABUG | QA Contact: | |||||
Severity: | high | Docs Contact: | |||||
Priority: | high | ||||||
Version: | 3.0 | ||||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2004-02-17 17:23:38 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
Ralph Menikoff
2004-02-02 07:39:48 UTC
A colleague of mine, James Quirk, had previously come across this bug and gave me a workaround. I had made shared object using g++ and tried to link shared object into execuatble using g++. I can get this to work if I compile object with 1 line void* __dso_handle; and link it with shared object. Then g++ makes executable without error. I was mistaken that my problem was related to previous bug #109457 But that is only reponse I got from bugzilla querry for dso_handle. google search gives slew of comments related to dso_handle problems. When is this bug going to be fixed ? Please provide a reproducer. Created attachment 97695 [details]
tar file of simple source to reproduce __dso_handle error
tar xvf dso_bug.tar
make Main
gives error
/usr/bin/ld: Main: hidden symbol `__dso_handle' in
/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/crtbegin.o is referenced by DSO
Variation make Work; ./Work # runs fine
The line that cause ld problem is #include <iostream> in source Hello.C for
shared object.
Your testcase is broken. Never ever use ld -shared, always use gcc -shared or g++ -shared, it knows the details how to build correct shared libraries unlike your makefile. |