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

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: fix thumb2 vs build_arm_thumb2 Created 9 years, 4 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 666747f638a4060a9d661b60eb89147e85bcd17f..8bb1cde5d770cd8b42c40bd232c39c9055b2e96a 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,
+ uint8_t 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;
@@ -70,12 +75,13 @@ NaClValidationStatus NACL_SUBARCH_NAME(ApplyValidator, arm, 32) (
uint8_t *data,
size_t size,
int bundle_size,
- Bool local_cpu) {
+ Bool local_cpu,
+ uint8_t thumb) {
NaClValidationStatus status = NaClValidationFailedNotImplemented;
UNREFERENCED_PARAMETER(local_cpu);
if (bundle_size == 16) {
if (kind == NaClApplyCodeValidation) {
- status = ((0 == NCValidateSegment(data, guest_addr, size))
+ status = ((0 == NCValidateSegment(data, guest_addr, size, thumb))
? NaClValidationSucceeded : NaClValidationFailed);
}
}
@@ -87,12 +93,14 @@ NaClValidationStatus NACL_SUBARCH_NAME(ApplyValidatorCodeReplacement, arm, 32)
uint8_t *data_old,
uint8_t *data_new,
size_t size,
- int bundle_size) {
+ int bundle_size,
+ uint8_t thumb) {
UNREFERENCED_PARAMETER(guest_addr);
UNREFERENCED_PARAMETER(data_old);
UNREFERENCED_PARAMETER(data_new);
UNREFERENCED_PARAMETER(size);
UNREFERENCED_PARAMETER(bundle_size);
+ UNREFERENCED_PARAMETER(thumb);
return NaClValidationFailedNotImplemented;
}
@@ -101,12 +109,14 @@ NaClValidationStatus NACL_SUBARCH_NAME(ApplyValidatorCopy, arm, 32)
uint8_t *data_old,
uint8_t *data_new,
size_t size,
- int bundle_size) {
+ int bundle_size,
+ uint8_t thumb) {
UNREFERENCED_PARAMETER(guest_addr);
UNREFERENCED_PARAMETER(data_old);
UNREFERENCED_PARAMETER(data_new);
UNREFERENCED_PARAMETER(size);
UNREFERENCED_PARAMETER(bundle_size);
+ UNREFERENCED_PARAMETER(thumb);
return NaClValidationFailedNotImplemented;
}

Powered by Google App Engine
This is Rietveld 408576698