|
From: John R. <jr...@bi...> - 2009-08-24 23:47:09
|
Hi, The next release of glibc (due in some weeks) implements a new symbol type STT_IFUNC. This symbol type facilitates choosing at runtime a software variant that may run faster/better/etc. on a specific processor. The mechanism is: call the STT_IFUNC function; it returns the address of the actual function which should be used on the current processor. The caller typically puts the returned address of the optimized function into the Program Linkage Table (PLT). The first uses include i686 and x86_64 to choose among the serial/speculative/sseN implementations of strlen, strcmp, etc. Because memcheck-3.5.0 does not understand STT_IFUNC, then memcheck complains for the speculative overfetching of the default choice for many str* subroutines. As seen on the alpha release of Fedora 12 (due in the next 24 hrs), output looks like: ==2471== Invalid read of size 8 ==2471== at 0x81C0EBA: __GI_strcmp (strcmp.S:100) -- |