Re: illegal instruction - create compile variants ?

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

 



On Sun, 01 May 2011 22:31:42 +0200, Kevin Kofler wrote:
> Yes, all the packages which have WORKING support for SSE etc. in Fedora do 
> that. See e.g.
> https://projects.kde.org/projects/kde/kdelibs/repository/revisions/master/entry/solid/solid/backends/shared/cpufeatures.cpp
> https://projects.kde.org/projects/kde/kdelibs/repository/revisions/master/entry/solid/solid/backends/udev/cpuinfo.cpp
> https://projects.kde.org/projects/kde/kdelibs/repository/revisions/master/entry/solid/solid/backends/udev/udevprocessor.cpp
> for the implementation Solid (in kdelibs) uses.

There is the STT_GNU_IFUNC feature implemented for it - the indirect is handled
by linker without an additional indirect overhead if applied for a shared
library function. For apps it works in a similar way as normal indirect.

In use by glibc:

include/libc-symbols.h:
/* Marker used for indirection function symbols.  */
#define libc_ifunc(name, expr)                                          \
  extern void *name##_ifunc (void) __asm__ (#name);                     \
  void *name##_ifunc (void)                                             \
  {                                                                     \
    INIT_ARCH ();                                                       \
    __typeof (name) *res = expr;                                        \
    return res;                                                         \
  }                                                                     \
  __asm__ (".type " #name ", %gnu_indirect_function");

sysdeps/x86_64/multiarch/memmove.c:
libc_ifunc (memmove,
            HAS_SSSE3
            ? (HAS_FAST_COPY_BACKWARD
               ? __memmove_ssse3_back : __memmove_ssse3)
            : __memmove_sse2);
etc.

Or a simpler testcase:
	http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.base/gnu-ifunc-lib.c?rev=1.1&cvsroot=src


Regards,
Jan
-- 
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/devel


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux