@@ -729,10 +729,10 @@ const MachODumper = struct {
729729 imports : std .ArrayListUnmanaged ([]const u8 ) = .empty ,
730730
731731 fn parse (ctx : * ObjectContext ) ! void {
732- var it = ctx .getLoadCommandIterator ();
732+ var it = try ctx .getLoadCommandIterator ();
733733 var i : usize = 0 ;
734- while (it .next ()) | cmd | {
735- switch (cmd .cmd () ) {
734+ while (try it .next ()) | cmd | {
735+ switch (cmd .hdr . cmd ) {
736736 .SEGMENT_64 = > {
737737 const seg = cmd .cast (macho .segment_command_64 ).? ;
738738 try ctx .segments .append (ctx .gpa , seg );
@@ -771,14 +771,13 @@ const MachODumper = struct {
771771 return mem .sliceTo (@as ([* :0 ]const u8 , @ptrCast (ctx .strtab .items .ptr + off )), 0 );
772772 }
773773
774- fn getLoadCommandIterator (ctx : ObjectContext ) macho.LoadCommandIterator {
775- const data = ctx .data [@sizeOf (macho .mach_header_64 ).. ][0.. ctx .header .sizeofcmds ];
776- return .{ .ncmds = ctx .header .ncmds , .buffer = data };
774+ fn getLoadCommandIterator (ctx : ObjectContext ) ! macho.LoadCommandIterator {
775+ return .init (& ctx .header , ctx .data [@sizeOf (macho .mach_header_64 ).. ]);
777776 }
778777
779- fn getLoadCommand (ctx : ObjectContext , cmd : macho.LC ) ? macho.LoadCommandIterator.LoadCommand {
780- var it = ctx .getLoadCommandIterator ();
781- while (it .next ()) | lc | if (lc .cmd () == cmd ) {
778+ fn getLoadCommand (ctx : ObjectContext , cmd : macho.LC ) ! ? macho.LoadCommandIterator.LoadCommand {
779+ var it = try ctx .getLoadCommandIterator ();
780+ while (try it .next ()) | lc | if (lc .hdr . cmd == cmd ) {
782781 return lc ;
783782 };
784783 return null ;
@@ -872,9 +871,9 @@ const MachODumper = struct {
872871 \\LC {d}
873872 \\cmd {s}
874873 \\cmdsize {d}
875- , .{ index , @tagName (lc .cmd ()) , lc .cmdsize () });
874+ , .{ index , @tagName (lc .hdr . cmd ) , lc .hdr . cmdsize });
876875
877- switch (lc .cmd () ) {
876+ switch (lc .hdr . cmd ) {
878877 .SEGMENT_64 = > {
879878 const seg = lc .cast (macho .segment_command_64 ).? ;
880879 try writer .writeByte ('\n ' );
@@ -1592,9 +1591,9 @@ const MachODumper = struct {
15921591 .headers = > {
15931592 try ObjectContext .dumpHeader (ctx .header , writer );
15941593
1595- var it = ctx .getLoadCommandIterator ();
1594+ var it = try ctx .getLoadCommandIterator ();
15961595 var i : usize = 0 ;
1597- while (it .next ()) | cmd | {
1596+ while (try it .next ()) | cmd | {
15981597 try ObjectContext .dumpLoadCommand (cmd , i , writer );
15991598 try writer .writeByte ('\n ' );
16001599
@@ -1615,7 +1614,7 @@ const MachODumper = struct {
16151614 .dyld_weak_bind ,
16161615 .dyld_lazy_bind ,
16171616 = > {
1618- const cmd = ctx .getLoadCommand (.DYLD_INFO_ONLY ) orelse
1617+ const cmd = try ctx .getLoadCommand (.DYLD_INFO_ONLY ) orelse
16191618 return step .fail ("no dyld info found" , .{});
16201619 const lc = cmd .cast (macho .dyld_info_command ).? ;
16211620
@@ -1649,7 +1648,7 @@ const MachODumper = struct {
16491648 },
16501649
16511650 .exports = > blk : {
1652- if (ctx .getLoadCommand (.DYLD_INFO_ONLY )) | cmd | {
1651+ if (try ctx .getLoadCommand (.DYLD_INFO_ONLY )) | cmd | {
16531652 const lc = cmd .cast (macho .dyld_info_command ).? ;
16541653 if (lc .export_size > 0 ) {
16551654 const data = ctx .data [lc .export_off .. ][0.. lc .export_size ];
0 commit comments