use uint32 for addresses in protobuf msgs
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
This commit is contained in:
committed by
Horst Schirmeier
parent
84edd02b6f
commit
122eb8c9dc
@ -5,13 +5,13 @@ extend google.protobuf.FieldOptions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message DatabaseCampaignMessage {
|
message DatabaseCampaignMessage {
|
||||||
required int32 pilot_id = 1 [(sql_primary_key) = true];
|
required uint32 pilot_id = 1 [(sql_primary_key) = true];
|
||||||
required int32 variant_id = 2 [(sql_ignore) = true];
|
required uint32 variant_id = 2 [(sql_ignore) = true];
|
||||||
required int32 fspmethod_id = 3 [(sql_ignore) = true];
|
required uint32 fspmethod_id = 3 [(sql_ignore) = true];
|
||||||
required int32 injection_instr = 4 [(sql_ignore) = true];
|
required uint32 injection_instr = 4 [(sql_ignore) = true];
|
||||||
optional int32 injection_instr_absolute = 5 [(sql_ignore) = true];
|
optional uint32 injection_instr_absolute = 5 [(sql_ignore) = true];
|
||||||
required int32 data_address = 6 [(sql_ignore) = true];
|
required uint32 data_address = 6 [(sql_ignore) = true];
|
||||||
required int32 data_width = 7 [(sql_ignore) = true];
|
required uint32 data_width = 7 [(sql_ignore) = true];
|
||||||
required string variant = 8 [(sql_ignore) = true];
|
required string variant = 8 [(sql_ignore) = true];
|
||||||
required string benchmark = 9 [(sql_ignore) = true];
|
required string benchmark = 9 [(sql_ignore) = true];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,11 +3,11 @@ message OOStuBSProtoMsg {
|
|||||||
// (client executes 8 experiments, one for each bit at mem_addr)
|
// (client executes 8 experiments, one for each bit at mem_addr)
|
||||||
|
|
||||||
// FI at #instructions from experiment start
|
// FI at #instructions from experiment start
|
||||||
required int32 instr_offset = 1;
|
required uint32 instr_offset = 1;
|
||||||
// the exact IP value at this point in time (from golden run)
|
// the exact IP value at this point in time (from golden run)
|
||||||
optional int32 instr_address = 2; // for sanity checks
|
optional uint32 instr_address = 2; // for sanity checks
|
||||||
// address of the byte to inject bit-flips
|
// address of the byte to inject bit-flips
|
||||||
required int32 mem_addr = 3;
|
required uint32 mem_addr = 3;
|
||||||
|
|
||||||
// ----------------------------------------------------
|
// ----------------------------------------------------
|
||||||
|
|
||||||
@ -15,11 +15,11 @@ message OOStuBSProtoMsg {
|
|||||||
|
|
||||||
// IP where we did the injection: for debugging purposes, must be identical
|
// IP where we did the injection: for debugging purposes, must be identical
|
||||||
// to instr_address
|
// to instr_address
|
||||||
optional int32 injection_ip = 4;
|
optional uint32 injection_ip = 4;
|
||||||
|
|
||||||
repeated group Result = 5 {
|
repeated group Result = 5 {
|
||||||
// single experiment bit offset
|
// single experiment bit offset
|
||||||
required int32 bit_offset = 1;
|
required uint32 bit_offset = 1;
|
||||||
|
|
||||||
// result type:
|
// result type:
|
||||||
// FINISHED = planned number of instructions were executed
|
// FINISHED = planned number of instructions were executed
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
message CoolChecksumProtoMsg {
|
message CoolChecksumProtoMsg {
|
||||||
// parameters
|
// parameters
|
||||||
required int32 instr_offset = 1;
|
required uint32 instr_offset = 1;
|
||||||
optional int32 instr_address = 8; // for sanity checks
|
optional uint32 instr_address = 8; // for sanity checks
|
||||||
required int32 bit_offset = 2;
|
required uint32 bit_offset = 2;
|
||||||
|
|
||||||
// results
|
// results
|
||||||
// make these optional to reduce overhead for server->client communication
|
// make these optional to reduce overhead for server->client communication
|
||||||
|
|||||||
@ -22,7 +22,7 @@ message CoredVoterProtoMsg {
|
|||||||
NOINJECTION = 10;
|
NOINJECTION = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
required int32 bitoffset = 1 [(sql_primary_key) = true];
|
required uint32 bitoffset = 1 [(sql_primary_key) = true];
|
||||||
required ResultType resulttype = 2;
|
required ResultType resulttype = 2;
|
||||||
required uint32 experiment_number = 3;
|
required uint32 experiment_number = 3;
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,7 @@ message DCIAOKernelProtoMsg {
|
|||||||
NOINJECTION = 10;
|
NOINJECTION = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
required int32 bitoffset = 1 [(sql_primary_key) = true];
|
required uint32 bitoffset = 1 [(sql_primary_key) = true];
|
||||||
required ResultType resulttype = 2;
|
required ResultType resulttype = 2;
|
||||||
optional uint32 original_value = 3;
|
optional uint32 original_value = 3;
|
||||||
|
|
||||||
|
|||||||
@ -8,13 +8,13 @@ message EcosKernelTestProtoMsg {
|
|||||||
required string benchmark = 2;
|
required string benchmark = 2;
|
||||||
|
|
||||||
// pilot ID (database)
|
// pilot ID (database)
|
||||||
required int32 pilot_id = 3;
|
required uint32 pilot_id = 3;
|
||||||
// FI at #instructions from experiment start
|
// FI at #instructions from experiment start
|
||||||
required int32 instr2_offset = 4;
|
required uint32 instr2_offset = 4;
|
||||||
// the exact IP value at this point in time (from golden run)
|
// the exact IP value at this point in time (from golden run)
|
||||||
optional int32 instr2_address = 5; // for sanity checks
|
optional uint32 instr2_address = 5; // for sanity checks
|
||||||
// address of the byte to inject bit-flips
|
// address of the byte to inject bit-flips
|
||||||
required int32 mem_addr = 6;
|
required uint32 mem_addr = 6;
|
||||||
|
|
||||||
// ----------------------------------------------------
|
// ----------------------------------------------------
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ message EcosKernelTestProtoMsg {
|
|||||||
|
|
||||||
// IP where we did the injection: for debugging purposes, must be identical
|
// IP where we did the injection: for debugging purposes, must be identical
|
||||||
// to instr_address
|
// to instr_address
|
||||||
optional int32 injection_ip = 7;
|
optional uint32 injection_ip = 7;
|
||||||
|
|
||||||
enum FaultModel {
|
enum FaultModel {
|
||||||
SINGLEBITFLIP = 1;
|
SINGLEBITFLIP = 1;
|
||||||
@ -32,7 +32,7 @@ message EcosKernelTestProtoMsg {
|
|||||||
|
|
||||||
repeated group Result = 8 {
|
repeated group Result = 8 {
|
||||||
// single experiment bit offset
|
// single experiment bit offset
|
||||||
required int32 bit_offset = 1;
|
required uint32 bit_offset = 1;
|
||||||
|
|
||||||
// result type:
|
// result type:
|
||||||
// FINISHED = planned number of instructions were executed
|
// FINISHED = planned number of instructions were executed
|
||||||
|
|||||||
@ -38,23 +38,23 @@ message L4SysProtoMsg {
|
|||||||
|
|
||||||
repeated group Result = 3 {
|
repeated group Result = 3 {
|
||||||
// parameters
|
// parameters
|
||||||
required int32 instr_offset = 1;
|
required uint32 instr_offset = 1;
|
||||||
required int32 bit_offset = 2 [(sql_primary_key) = true];
|
required uint32 bit_offset = 2 [(sql_primary_key) = true];
|
||||||
|
|
||||||
optional RegisterType register_offset = 3;
|
optional RegisterType register_offset = 3;
|
||||||
|
|
||||||
// instruction pointer where injection was done
|
// instruction pointer where injection was done
|
||||||
optional int32 injection_ip = 4;
|
optional uint32 injection_ip = 4;
|
||||||
// result type, see above
|
// result type, see above
|
||||||
optional ResultType resulttype = 5;
|
optional ResultType resulttype = 5;
|
||||||
// result data, depending on resulttype (see source code)
|
// result data, depending on resulttype (see source code)
|
||||||
optional int32 resultdata = 6;
|
optional uint32 resultdata = 6;
|
||||||
// generated output
|
// generated output
|
||||||
optional string output = 7;
|
optional string output = 7;
|
||||||
// optional textual description of what happened
|
// optional textual description of what happened
|
||||||
optional string details = 8;
|
optional string details = 8;
|
||||||
optional int32 injection_address = 9;
|
optional uint32 injection_address = 9;
|
||||||
optional int32 deviate_steps = 10;
|
optional uint32 deviate_steps = 10;
|
||||||
optional int32 deviate_eip = 11;
|
optional uint32 deviate_eip = 11;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,17 +3,17 @@ message NanoJPEGProtoMsg {
|
|||||||
// (client executes one experiment for every specified bit in the target register)
|
// (client executes one experiment for every specified bit in the target register)
|
||||||
|
|
||||||
// equivalence class start
|
// equivalence class start
|
||||||
required int32 instr_ecstart = 1;
|
required uint32 instr_ecstart = 1;
|
||||||
// FI at #instructions from experiment start
|
// FI at #instructions from experiment start
|
||||||
required int32 instr_offset = 2;
|
required uint32 instr_offset = 2;
|
||||||
// the exact IP value at this point in time (from golden run)
|
// the exact IP value at this point in time (from golden run)
|
||||||
optional uint32 instr_address = 3; // for sanity checks
|
optional uint32 instr_address = 3; // for sanity checks
|
||||||
// ID of the register to inject faults into
|
// ID of the register to inject faults into
|
||||||
required int32 register_id = 4;
|
required uint32 register_id = 4;
|
||||||
// bits to inject a bit flip into
|
// bits to inject a bit flip into
|
||||||
required int64 bitmask = 5;
|
required int64 bitmask = 5;
|
||||||
// timeout in ms
|
// timeout in ms
|
||||||
required int32 timeout = 6;
|
required uint32 timeout = 6;
|
||||||
|
|
||||||
// ----------------------------------------------------
|
// ----------------------------------------------------
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ message NanoJPEGProtoMsg {
|
|||||||
|
|
||||||
repeated group Result = 9 {
|
repeated group Result = 9 {
|
||||||
// single experiment bit number
|
// single experiment bit number
|
||||||
required int32 bitnr = 1;
|
required uint32 bitnr = 1;
|
||||||
|
|
||||||
// result type:
|
// result type:
|
||||||
// FINISHED = planned number of instructions were executed
|
// FINISHED = planned number of instructions were executed
|
||||||
|
|||||||
@ -3,11 +3,11 @@ message WeathermonitorProtoMsg {
|
|||||||
// (client executes 8 experiments, one for each bit at mem_addr)
|
// (client executes 8 experiments, one for each bit at mem_addr)
|
||||||
|
|
||||||
// FI at #instructions from experiment start
|
// FI at #instructions from experiment start
|
||||||
required int32 instr_offset = 1;
|
required uint32 instr_offset = 1;
|
||||||
// the exact IP value at this point in time (from golden run)
|
// the exact IP value at this point in time (from golden run)
|
||||||
optional int32 instr_address = 2; // for sanity checks
|
optional uint32 instr_address = 2; // for sanity checks
|
||||||
// address of the byte to inject bit-flips
|
// address of the byte to inject bit-flips
|
||||||
required int32 mem_addr = 3;
|
required uint32 mem_addr = 3;
|
||||||
|
|
||||||
// ----------------------------------------------------
|
// ----------------------------------------------------
|
||||||
|
|
||||||
@ -15,11 +15,11 @@ message WeathermonitorProtoMsg {
|
|||||||
|
|
||||||
// IP where we did the injection: for debugging purposes, must be identical
|
// IP where we did the injection: for debugging purposes, must be identical
|
||||||
// to instr_address
|
// to instr_address
|
||||||
optional int32 injection_ip = 4;
|
optional uint32 injection_ip = 4;
|
||||||
|
|
||||||
repeated group Result = 5 {
|
repeated group Result = 5 {
|
||||||
// single experiment bit offset
|
// single experiment bit offset
|
||||||
required int32 bit_offset = 1;
|
required uint32 bit_offset = 1;
|
||||||
|
|
||||||
// result type:
|
// result type:
|
||||||
// FINISHED = planned number of instructions were executed
|
// FINISHED = planned number of instructions were executed
|
||||||
|
|||||||
@ -9,7 +9,7 @@ message WeathermonitorProtoMsg {
|
|||||||
// Output: experiment results
|
// Output: experiment results
|
||||||
repeated group Result = 6 {
|
repeated group Result = 6 {
|
||||||
// single experiment bit offset
|
// single experiment bit offset
|
||||||
required int32 bitoffset = 1 [(sql_primary_key) = true];
|
required uint32 bitoffset = 1 [(sql_primary_key) = true];
|
||||||
|
|
||||||
// result type:
|
// result type:
|
||||||
// FINISHED = planned number of instructions were executed
|
// FINISHED = planned number of instructions were executed
|
||||||
|
|||||||
Reference in New Issue
Block a user