diff --git a/data_specifications/specification.proto b/data_specifications/specification.proto index f468bea8..9baa9270 100644 --- a/data_specifications/specification.proto +++ b/data_specifications/specification.proto @@ -347,6 +347,7 @@ message Function { // a low lifting of that location with spec type metadata repeated TypeHint type_hints = 11; ProgramAddress binary_addr = 13; + uint64 epilogue_address = 14; } diff --git a/include/anvill/Declarations.h b/include/anvill/Declarations.h index a95bc328..e452c85d 100644 --- a/include/anvill/Declarations.h +++ b/include/anvill/Declarations.h @@ -460,6 +460,8 @@ struct FunctionDecl : public CallableDecl { MachineAddr binary_addr{}; + std::uint64_t epilogue_addr{0}; + std::vector in_scope_variables; diff --git a/lib/Protobuf.cpp b/lib/Protobuf.cpp index 1064876c..6ccbcdc7 100644 --- a/lib/Protobuf.cpp +++ b/lib/Protobuf.cpp @@ -554,6 +554,7 @@ Result ProtobufTranslator::DecodeFunction( decl.ret_ptr_offset = frame.return_address_offset(); decl.parameter_size = frame.parameter_size(); decl.parameter_offset = frame.parameter_offset(); + decl.epilogue_addr = function.epilogue_address(); decl.maximum_depth = decl.GetPointerDisplacement() + frame.max_frame_depth();