On domingo, 29 de julho de 2012 08.13.20, [email protected] wrote:
> - actually for loading time, the bottleneck is the R_ARM_ABS32 relocation,
> which is reduced around 97% now !
>
> Finally the overall loading time is reduced from ~10-20s to ~1s...

Wow! Any chance you can blog about this somewhere? If you don't, I will based
on your data.

> But I still have some question about the R_ARM_ABS32 relocation.
>
> It seems if the function is virtual (with "default" visibility), then it
> will be added into .rel.dyn as the R_ARM_ABS32 type, for example: 007b0124
> 0011a802 R_ARM_ABS32            00311e4b
> _ZN20QEventDispatcherUNIX13processEventsE6QFlagsIN10QEventLoop17ProcessEven
> tsFlagEE
>
> Could someone help with below:
> 1. why the virtual function with "default" visibility needs relocation even
> if it's implemented inside ?

That's what "default" means: the symbol can be interposed by another, from a
different library. It is possible that another library implements a different
version of this function.

If it weren't like that, if it resolved to the local library, it would be
behaviour of "protected" visibility. That is:

> 2. when changed to "protected" visibility, I
> guess it's optimized to add a GOT.PLT entry as a R_ARM_RELATIVE relocation,
> is that true ?

The virtual table gets a relative relocation, true. Virtual calls don't need
PLT entries since they're always indirect. The PLT for a virtual function only
shows up if that function is called non-virtually: that is, from the
constructor, when the full class name was specified or when the compiler could
prove what class the object is.

--
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
     Intel Sweden AB - Registration Number: 556189-6027
     Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to