Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1215)

Unified Diff: src/trusted/validator_arm/ncvalidate.cc

Issue 7799013: Intial Thumb2 Sandbox (naclrev 6680) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: asdsa Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/trusted/validator_arm/ncvalidate.cc
diff --git a/src/trusted/validator_arm/ncvalidate.cc b/src/trusted/validator_arm/ncvalidate.cc
index 6601d7a77fe68142c79273c241cf5779b5118bf6..4697d90b1b12dfa5111fbe17ae73f3e35c5e5177 100644
--- a/src/trusted/validator_arm/ncvalidate.cc
+++ b/src/trusted/validator_arm/ncvalidate.cc
@@ -46,14 +46,19 @@ class EarlyExitProblemSink : public nacl_arm_val::ProblemSink {
EXTERN_C_BEGIN
-int NCValidateSegment(uint8_t *mbase, uint32_t vbase, size_t size) {
+int NCValidateSegment(uint8_t *mbase, uint32_t vbase, size_t size,
+ bool thumb) {
+ nacl_arm_dec::RegisterList roRegs = Register(9);
+ if (thumb) {
+ roRegs = nacl_arm_dec::kRegisterListNothing;
+ }
SfiValidator validator(
16, // bytes per bundle
1U * 1024 * 1024 * 1024, // bytes of code space
1U * 1024 * 1024 * 1024, // bytes of data space
- Register(9), // read only register(s)
- kRegisterStack); // data addressing register(s)
-
+ roRegs, // read only register(s)
+ kRegisterStack, // data addressing register(s)
+ thumb);
EarlyExitProblemSink sink;
vector<CodeSegment> segments;
@@ -74,10 +79,11 @@ NaClValidationStatus NACL_SUBARCH_NAME(ApplyValidator, arm, 32) (
Bool local_cpu) {
NaClValidationStatus status = NaClValidationFailedNotImplemented;
UNREFERENCED_PARAMETER(local_cpu);
- UNREFERENCED_PARAMETER(sb_kind);
+
if (bundle_size == 16) {
if (kind == NaClApplyCodeValidation) {
- status = ((0 == NCValidateSegment(data, guest_addr, size))
+ status = ((0 == NCValidateSegment(data, guest_addr, size,
+ sb_kind == NACL_SB_ARM_THUMB2))
? NaClValidationSucceeded : NaClValidationFailed);
}
}

Powered by Google App Engine
This is Rietveld 408576698