Compile boot image extensions in memory.

Allow boot image location components for extensions to
specify a profile. If such extension is not found on disk,
or the on-disk version fails validation (presumably because
it's out of date), compile the extension in memory, passing
memfd file descriptors as output arguments to dex2oat.

Also fix GetPrimaryImageLocation() to check for the '/' in
the first component instead of the full boot image location.

Test: Additional tests in dex2oat_image_test
Test: m test-art-host-gtest
Bug: 119800099
Change-Id: I4d3c178defe311bf51153d4beb386eba208d75a5
5 files changed