Add build fingerprint and ensure match on .so load

bug 19216507

If ro.debuggable system property is set,
- Compute the Adler32 checksum of bitcode, compiler arguments, bcc,
  libclcore files.
- On shared object load, check that there is an embedded checksum value
  in .rs.info and it matches the value computed in the previous step.
  The .so is not loaded if the checksums don't match.
- If invoking bcc, pass the checksum as an argument.

If ro.debuggable is not set, a constant checksum is added to .rs.info.
But it is never checked.

Change-Id: I0a9d16b34148b748daf744007a8515511714a5a5
5 files changed