work-around: the glibc adobe flash incompatibility

John Reiser jreiser at bitwagon.com
Wed Nov 17 16:03:44 UTC 2010


> For those who do not know it yet, recent Fedora glibc updates include
> an optimized memcpy (which gets used on some processors) which breaks the
> 64 bit adobe flash plugin.

For right now (the immediate present) a work-around is to use the 'memmove'
subroutine as the resolution of any reference to the symbol 'memcpy'.
The quick-and-dirty way to do this, is to overwrite with "memmove\0"
the unused {DT_NULL}.d_un field [which is 8 bytes on x86_64] of the
PT_DYNAMIC section, then change the {'memcpy'}.st_name field of the
DT_SYMTAB to designate the overwritten substring.  The PT_DYNAMIC
segment appears after the DT_STRTAB, so the {'memcpy'}.st_name value
[now {'memmove'}.st_name] will be some much larger index than previously.

Another way might be to re-order the DT_NEEDED entries in the PT_DYNAMIC
segment so that "ld-linux.so.2" comes first, lop off the first DT_NEEDED
by increasing the address and decreasing the size by 2*sizeof(void *),
overwriting the "ld-linux.so.2" in the DT_STRTAB with "memmove", then
setting {'memcpy'}.st_name.  ld-linux.so.2 will be there anyway.

-- 


More information about the devel mailing list