On Mon, Aug 22, 2011 at 7:07 AM, Michael Matz <m...@suse.de> wrote:
> Hi,
>
> On Sun, 21 Aug 2011, Richard Guenther wrote:
>
>> On Sat, Aug 20, 2011 at 11:02 PM, Richard Henderson <r...@redhat.com> wrote:
>> > On 08/19/2011 02:04 AM, Richard Guenther wrote:
>> >> So make sure that __cpu_indicator initially has a conservative correct
>> >> value?  I'd still prefer the constructor-in-libgcc option - if only 
>> >> because
>> >> then the compiler-side is much simplified.
>> >>
>> >
>> > Err, I thought __cpu_indicator was a function, not data.
>> >
>> > I think we need to discuss this more...
>>
>> Oh, I thought it was data initialized by the constructor ...
>
> Sriramans patch right now has a function __cpu_indicator_init which is
> called from (adhoc constructed) ctors and that initializes variables
> __cpu_model and __cpu_features ;-)  There's no __cpu_indicator symbol :)
>
> I think the whole initializer function and the associated data blobs have
> to sit in static libgcc and be hidden.  By that all shared modules
> will have their own copies of the model and features (and the initializer
> function) so there won't be issues with copy relocs, or cross shared lib
> calls while relocating the modules.  Dynamically they will contain the
> same data always, but it's not many bytes, and only modules making use of
> this facility will pay it.
>
> The initializer function has to be callable from pre-.init contexts, e.g.
> ifunc dispatchers.  And to make life easier there should be one ctor
> function calling this initializer function too, so that normal code can
> rely on it being already called saving one check.
>

It sounds more complicated than necessary.  Why not just do it
on demand like glibc does?

-- 
H.J.

Reply via email to