//===- SymbolicExpression.proto -------------------------------*- Proto -*-===//
//
//  Copyright (C) 2018 GrammaTech, Inc.
//
//  This code is licensed under the MIT license. See the LICENSE file in the
//  project root for license terms.
//
//  This project is sponsored by the Office of Naval Research, One Liberty
//  Center, 875 N. Randolph Street, Arlington, VA 22203 under contract #
//  N68335-17-C-0700.  The content of the information does not necessarily
//  reflect the position or policy of the Government and no official
//  endorsement should be inferred.
//
//===----------------------------------------------------------------------===//
syntax = "proto3";
package protoV0;

message SymStackConst {
  int32 offset = 1;
  bytes symbol_uuid = 2;
}

message SymAddrConst {
  int64 offset = 1;
  bytes symbol_uuid = 2;
}

message SymAddrAddr {
  int64 scale = 1;
  int64 offset = 2;
  bytes symbol1_uuid = 3;
  bytes symbol2_uuid = 4;
}

message SymbolicExpression {
  oneof value {
    SymStackConst stack_const = 1;
    SymAddrConst addr_const = 2;
    SymAddrAddr addr_addr = 3;
  }
}
