Skip linkloader, use shared object files

Bug: 18322681

- In rsCpuScript, if property rs.skip.linkloader is set, look for a .so
  file in the cache directory and load it.  If it is not available, use
  bcc to generate relocatable object file and link it to a .so using
  ld.mc.  Use the embedded symbols in .rs.info and follow steps similar
  to the compatibility library to invoke script functions or access
  script variables.
- Add rs* symbols like rsGetAllocation to libRSCpuRef (ala
  libRSSupport).  Do necessary changes to argument types to get mangled
  names correct.
- Make 64-bit version of rsSetObject take two pointers instead of a
  pointer and a large object.  rsIsObject takes a pointer instead of a
  large object.  Otherwise, we get failures in x86_64 due to calling
  convention mismatch.  To match the function names in the shared object
  path, define these functions as 'extern "C"' with their mangled names.
- Add stubbed Math functions from rsCpuRuntimeMath and
  rsCpuRuntimeMathFuncs into libRSCpuRef.so.
- Coalesce separate #ifdef paths in libRSCpuRef.  Function parameters
  for runtime callbacks and bcc plugin are needed in the
  non-compatibilty path, but take default NULL arguments.  This patch
  introduces these parameters into the compatibility path as well, and
  passes default NULL arguments.

Change-Id: I8a853350e39d30b4d852c30e4b5da5a75a2f2820
9 files changed