This prevents integer overflows when using addresses > 2GiB, which are common for x86 operating systems with paging (Linux, Fiasco.OC) or some test cases on the PandaBoard. Note that this results in slightly different result table definitions when automatically translating an experiment's protobuf message in the DatabaseCampaign. This change affects all existing protobuf messages to prevent copy/paste propagation of this issue. Change-Id: I09ec4b9d45eddd67a7a24c8b101e8b2b258df5e2
57 lines
1.6 KiB
Protocol Buffer
57 lines
1.6 KiB
Protocol Buffer
message NanoJPEGProtoMsg {
|
|
// Input: experiment parameters
|
|
// (client executes one experiment for every specified bit in the target register)
|
|
|
|
// equivalence class start
|
|
required uint32 instr_ecstart = 1;
|
|
// FI at #instructions from experiment start
|
|
required uint32 instr_offset = 2;
|
|
// the exact IP value at this point in time (from golden run)
|
|
optional uint32 instr_address = 3; // for sanity checks
|
|
// ID of the register to inject faults into
|
|
required uint32 register_id = 4;
|
|
// bits to inject a bit flip into
|
|
required int64 bitmask = 5;
|
|
// timeout in ms
|
|
required uint32 timeout = 6;
|
|
|
|
// ----------------------------------------------------
|
|
|
|
// Output: experiment results
|
|
|
|
// IP where we did the injection: for debugging purposes, must be identical
|
|
// to instr_address
|
|
optional uint32 injection_ip = 8;
|
|
|
|
repeated group Result = 9 {
|
|
// single experiment bit number
|
|
required uint32 bitnr = 1;
|
|
|
|
// result type:
|
|
// FINISHED = planned number of instructions were executed
|
|
// BROKEN = finished, but resulting image is broken (dimensions)
|
|
// TRAP = premature guest "crash"
|
|
// OUTSIDE = IP left text segment
|
|
// TIMEOUT = none of the above happened for /timeout/ ms
|
|
enum ResultType {
|
|
FINISHED = 1;
|
|
BROKEN = 2;
|
|
TRAP = 3;
|
|
OUTSIDE = 4;
|
|
OUTSIDEMEM = 5;
|
|
TIMEOUT = 6;
|
|
UNKNOWN = 7;
|
|
}
|
|
required ResultType resulttype = 2;
|
|
|
|
// especially interesting for TRAP/UNKNOWN: latest IP
|
|
required uint32 latest_ip = 3;
|
|
|
|
// PSNR golden run <-> this run
|
|
optional float psnr = 4;
|
|
|
|
// optional textual description of what happened
|
|
optional string details = 5;
|
|
}
|
|
}
|