[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Summary of C++ symbols experience



On 29/01/2012 07:48, Russ Allbery wrote:
> Chow Loong Jin <hyperair@debian.org> writes:
>> On 29/01/2012 07:18, Russ Allbery wrote:
> 
>>> What I'm seeing (I think; I'm not positive) is that an inline function
>>> (generally inlined because it's defined inside the class definition,
>>> not due to explicit keywords) appears and disappears from the export
>>> list of the library essentially at random with minor changes in the g++
>>> version.
> 
>> That would be caused by changes in the logic that g++ uses to determine
>> whether or not to inline a function that is marked as inline. I believe
>> you can effectively just mark the symbols for all inline functions as
>> optional in the symbols files.
> 
> If there were a tool available to do this, that might resolve many of the
> remaining issues here.  But I suspect doing this automatically is Hard.
> By the time the library has been generated, there's no real way of knowing
> whether the symbol was inline or not.  You'd really have to somehow
> generate the symbols tags as a side-effect of the compilation process.
> And obviously doing this by hand by manual inspection when there are over
> 12,000 exported symbols is infeasible.

$ nm -CD libfoo.so  | awk '$2 == "W" {print;}'

I mentioned that the inlined symbols are all weak symbols. If the library you're
maintaining doesn't do use __attribute__((weak)), then all the weak symbols
present should be inlined and optional.

-- 
Kind regards,
Loong Jin

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: