libhybris/libhybris — pull request #180 by groleo (2013-12-06 13:53:19+00:00)
Title: dynamically add hooks from glibc

The hook table contains
a. functions that need parameter conversion
(like parameters of type FILE*, or pthread_mutex_t*)
b. some of the pthread_ functions we know to work from glibc.
The pthread functions that we don't have in the hook table,
when called by client code, will cause a crash.

If a symbol is not found in the hook table, it's searched
in libc.so.6. If it's not found there, then we fallback to bionic.

So far, this patch covers bionic{libc,libdl} and a part of libthread_db.
Still to be covered is libm, libstdc++ and linker.

For debugging purposes, one can use HYBRIS_FROM_BIONIC to
force a symbol to be used from Bionic.

So far, I only need longjmp and setjmp from bionic{libc}, everything else
being called from (e)glibc.

Tested on nexus 4 as:
HYBRIS_FROM_BIONIC="setjmp:longjmp" \
HYBRIS_EGLPLATFORM=hwcomposer \
./ARMHF/bin/test_hwcomposer

Signed-off-by: Adrian Negreanu