Bug 463427 - Possibly missing symbols in RPM libraries?
Possibly missing symbols in RPM libraries?
Status: CLOSED WONTFIX
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp (Show other bugs)
beta
All Linux
low Severity low
: 1.3
: ---
Assigned To: Andrew Stitcher
MRG Quality Engineering
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2008-09-23 08:26 EDT by Alan Conway
Modified: 2011-08-12 12:23 EDT (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2010-04-26 12:04:04 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Alan Conway 2008-09-23 08:26:48 EDT
On Mon, 2008-09-22 at 14:15 -0500, Matthew Farrellee wrote:
Alan Conway wrote:
> > On Mon, 2008-09-22 at 10:01 -0500, Matthew Farrellee wrote:
> >> Alan Conway wrote:
> >>> On Mon, 2008-09-22 at 14:41 +0100, Gordon Sim wrote:
> >>>> Matthew Farrellee wrote:
> >>>>> I figured it out. Issue is Condor compiled with -fno-implicit-templates 
> >>>>> so the symbols are not generated. I'll have to think about it, but it 
> >>>>> seems like you should be able to compile with -fno-... against qpid. 
> >>>>> That means qpid should either explicitly declare templates it uses, or 
> >>>>> whatever is striping the weak template symbols should be stopped.
> >>>>>
> >>>>> On my side I can either stop using -fno-.... Condor always used -fno... 
> >>>>> or I have to explicitly declare the templates that qpid uses. The 
> >>>>> problem with being explicit is I don't know what qpid is templating...
> >>>>>
> >>>>> Thoughts?
> >>>> I'm not knowledgeable enough to have any useful thoughts here. Andrew, 
> >>>> Alan, do either of you have thoughts and/or opinions?
> >>> Condor needs to generate the template instantiations it uses. Qpid can
> >>> (and I think does) provide all the template instantiations _used by
> >>> qpid_ in its libraries, but we cannot anticipate all possible template
> >>> instantiations that users might do. It's not a finite set.
> >>>
> >>> There are a couple of strategies for template generation with gcc, see 
> >>>
> >>> http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html
> >>>
> >>> If you want to use  -fno-implicit-templates then you need to instantiate
> >>> all the templates you use *explicitly* in a .cpp file something like:
> >>>
> >>> template std::vector<int>;
> >>>
> >>> Note you need to explicitly instantiate not only every class you use but
> >>> every non-inline member function. If you run the linker errors thru c
> >>> ++filt you can use that to create your initial list. Or you can just let
> >>> the compiler generate them for you. The only impact of removing
> >>> -fno-implicit... will be on your compile times, can't say how big a
> >>> difference it will make.
> >>>
> >> The symbol in question is not one I'm creating.
> >>
> >> _ZNSt8_Rb_treeISsSt4pairIKSsN5boost10shared_ptrIN4qpid7framing10FieldValueEEEESt10_Select1stIS8_ESt4lessISsESaIS8_EEaSERKSE_
> >>
> >> It is present in all the libraries created by a qpid build, but missing 
> >> from all rpm installed qpid libraries.
> > 
> > Looks like the assignment operator for one of the std::map
> > implementation classes used by qpid::FieldTable. It is probably being
> > instantiated by condor compiling Session_0_10.h, where FieldTables are
> > passed as arguments.  
> > 
> > No idea why this would have been stripped from the RPM distributed libs.
> > Find someone who knows about the stripping done by rpmbuild to track
> > this down. Also check out the gcc docs on exporting template symbols.
> > 
> > What's your concern about removing -Fno-implicit as a solution? Have you
> > tried it to see what the build time impact is like?
> 
> I'm already compiling the qmf portions of Condor without 
> -fno-implicit-templates, but passed this along anyway because it seems 
> like it might be an issue with the qpid libraries. Or at least with the 
> packaged RPMs.
>
Comment 1 Gordon Sim 2009-02-17 08:03:13 EST
Andrew, is there anything we want to do here?
Comment 3 Gordon Sim 2010-04-26 12:04:04 EDT
New api will not suffer from these issues so closing this.

Note You need to log in before you can comment on or make changes to this bug.