authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-01-08 22:46:04+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-01-08 23:41:51+01:00
log7e0e27e738a894d2c1d37ebe2dc3ca3eaecc55f5
treea63ed47a3b5559019079af37798d16d9f0c7bceb
parent2b3b355a23bea47aacbdfd56b853abc83e2f3ed6

libstd: add missing MachO rebase opcodes in macho.zig


1 files changed, 19 insertions(+), 1 deletions(-)

lib/std/macho.zig+19-1
...@@ -1257,6 +1257,24 @@ pub const VM_PROT_WRITE: vm_prot_t = 0x2;...@@ -1257,6 +1257,24 @@ pub const VM_PROT_WRITE: vm_prot_t = 0x2;
1257/// VM execute permission1257/// VM execute permission
1258pub const VM_PROT_EXECUTE: vm_prot_t = 0x4;1258pub const VM_PROT_EXECUTE: vm_prot_t = 0x4;
12591259
1260// The following are used to encode rebasing information
1261pub const REBASE_TYPE_POINTER: u8 = 1;
1262pub const REBASE_TYPE_TEXT_ABSOLUTE32: u8 = 2;
1263pub const REBASE_TYPE_TEXT_PCREL32: u8 = 3;
1264
1265pub const REBASE_OPCODE_MASK: u8 = 0xF0;
1266pub const REBASE_IMMEDIATE_MASK: u8 = 0x0F;
1267pub const REBASE_OPCODE_DONE: u8 = 0x00;
1268pub const REBASE_OPCODE_SET_TYPE_IMM: u8 = 0x10;
1269pub const REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB: u8 = 0x20;
1270pub const REBASE_OPCODE_ADD_ADDR_ULEB: u8 = 0x30;
1271pub const REBASE_OPCODE_ADD_ADDR_IMM_SCALED: u8 = 0x40;
1272pub const REBASE_OPCODE_DO_REBASE_IMM_TIMES: u8 = 0x50;
1273pub const REBASE_OPCODE_DO_REBASE_ULEB_TIMES: u8 = 0x60;
1274pub const REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB: u8 = 0x70;
1275pub const REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB: u8 = 0x80;
1276
1277// The following are used to encode binding information
1260pub const BIND_TYPE_POINTER: u8 = 1;1278pub const BIND_TYPE_POINTER: u8 = 1;
1261pub const BIND_TYPE_TEXT_ABSOLUTE32: u8 = 2;1279pub const BIND_TYPE_TEXT_ABSOLUTE32: u8 = 2;
1262pub const BIND_TYPE_TEXT_PCREL32: u8 = 3;1280pub const BIND_TYPE_TEXT_PCREL32: u8 = 3;
...@@ -1360,7 +1378,7 @@ pub const N_WEAK_DEF: u16 = 0x80;...@@ -1360,7 +1378,7 @@ pub const N_WEAK_DEF: u16 = 0x80;
1360/// This bit is only available in .o files (MH_OBJECT filetype)1378/// This bit is only available in .o files (MH_OBJECT filetype)
1361pub const N_SYMBOL_RESOLVER: u16 = 0x100;1379pub const N_SYMBOL_RESOLVER: u16 = 0x100;
13621380
1363// The following are used on the flags byte of a terminal node // in the export information.1381// The following are used on the flags byte of a terminal node in the export information.
1364pub const EXPORT_SYMBOL_FLAGS_KIND_MASK: u8 = 0x03;1382pub const EXPORT_SYMBOL_FLAGS_KIND_MASK: u8 = 0x03;
1365pub const EXPORT_SYMBOL_FLAGS_KIND_REGULAR: u8 = 0x00;1383pub const EXPORT_SYMBOL_FLAGS_KIND_REGULAR: u8 = 0x00;
1366pub const EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL: u8 = 0x01;1384pub const EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL: u8 = 0x01;