macho/macho-go/proto/macho_info.proto

59 lines
1.3 KiB
Protocol Buffer
Raw Normal View History

2023-05-31 16:17:03 +07:00
syntax = "proto3";
option optimize_for = LITE_RUNTIME;
option go_package = "pkg/protomodel";
package protomodel;
message MachoInfo {
enum PointerSize {
invalid = 0;
p32 = 1;
p64 = 2;
}
message InitPointer {
uint64 offset = 1; // offset relative to the macho header
uint64 value = 2; // address of the init function
}
2023-06-15 10:41:18 +07:00
// right now we waste memory to store name/hash for all symbols
// should consider compress them, dyld stores the index in list of LC_DYLIB
message BindSymbol {
string name = 1;
string libname = 2;
uint32 libhash = 3;
uint32 segment = 4; // segment index
uint64 offset = 5; // offset in segment
}
2023-05-31 16:17:03 +07:00
2023-07-10 14:14:03 +07:00
message SymbolTable {
uint32 symbolIndex = 1;
uint32 segmentIndex = 2;
uint32 offset = 3;
}
message LibraryImportedSymbols {
uint32 libIndex = 1;
uint32 nsymbols = 2;
repeated SymbolTable symbols = 3;
}
message AllImportedSymbols {
repeated string libs = 1;
repeated string symbols = 2;
repeated LibraryImportedSymbols tables = 3;
}
2024-01-10 14:19:59 +07:00
message Selector {
uint32 idx = 1;
string name = 2;
}
2023-05-31 16:17:03 +07:00
PointerSize pointer_size = 1;
uint64 image_base = 2;
2023-07-10 14:14:03 +07:00
uint64 main = 3;
repeated InitPointer init_pointers = 4;
AllImportedSymbols symbols = 5;
2024-01-10 14:19:59 +07:00
repeated Selector special_selectors = 6;
2023-05-31 16:17:03 +07:00
}