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