summaryrefslogtreecommitdiff
path: root/tools/standalone_miri/value.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/standalone_miri/value.cpp')
-rw-r--r--tools/standalone_miri/value.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tools/standalone_miri/value.cpp b/tools/standalone_miri/value.cpp
index 9007eb5c..0b3aa988 100644
--- a/tools/standalone_miri/value.cpp
+++ b/tools/standalone_miri/value.cpp
@@ -13,6 +13,38 @@
#include <algorithm>
#include "debug.hpp"
+FfiLayout FfiLayout::new_const_bytes(size_t s)
+{
+ return FfiLayout {
+ { Range {s, true, false} }
+ };
+}
+bool FfiLayout::is_valid_read(size_t o, size_t s) const
+{
+ for(const auto& r : ranges)
+ {
+ if( o < r.len ) {
+ if( !r.is_valid )
+ return false;
+ if( o + s <= r.len )
+ {
+ s = 0;
+ break;
+ }
+ s -= (r.len - o);
+ o = 0;
+ }
+ else {
+ o -= r.len;
+ }
+ }
+ if( s > 0 )
+ {
+ return false;
+ }
+ return true;
+}
+
AllocationHandle Allocation::new_alloc(size_t size)
{
Allocation* rv = new Allocation();