Bug 66222

Summary: linking with libbfd isn't compatible across minor releases
Product: [Retired] Red Hat Linux Reporter: David Mansfield <bugzilla>
Component: binutilsAssignee: Jakub Jelinek <jakub>
Status: CLOSED NOTABUG QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 7.3   
Target Milestone: ---   
Target Release: ---   
Hardware: i686   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2002-06-06 15:29:33 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:

Description David Mansfield 2002-06-06 15:29:27 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 Galeon/1.2.3 (X11; Linux i686; U;) Gecko/20020523

Description of problem:
i have a program compiled on redhat 7.2, and linked with libbfd.  It won't run
on 7.3 without a recompile due to a bad soname, or incompatible libbfd, one or
the other.  I get the following error message:

./eview: error while loading shared libraries: libbfd-2.11.90.0.8.so: cannot
open shared object file: No such file or directory

Indeed the libbfd is a different version in redhat 7.3: libbfd-2.11.93.0.2.so

However, the major and minor version are the same.  This, in unix tradition,
means compatible.  



Version-Release number of selected component (if applicable):


How reproducible:
Always

Steps to Reproduce:
1.link program on red hat 7.2 to libbfd
2.copy to red hat 7.3 platform
3.try to run it
	

Actual Results:  fails to dynamically link

Expected Results:  should link

Additional info:

Comment 1 Jakub Jelinek 2002-06-07 11:59:22 UTC
Nope. As you can see, the version is not after .so, like libbfd.so.2.11.93.0.2,
but before, which means the whole version is part of the SONAME (and for good
reason, libbfd is changing every few days and doesn't maintain binary
compatibility). In fact it is shared only so that it can be shared between
as, ld, nm, objdump, ar, strip, ... which all come from the same package.
If you need to use bfd in some application, you need to link it statically in
(e.g. -Bstatic -lbfd -Bdynamic) or be prepared for recompiling it every time
binutils are upgraded.