| ... | ... | @@ -923,9 +923,18 @@ const MachODumper = struct { |
| 923 | 923 | sect.segName(), |
| 924 | 924 | sect.sectName(), |
| 925 | 925 | }); |
| 926 | if (sym.n_desc & macho.REFERENCED_DYNAMICALLY != 0) try writer.writeAll(" [referenced dynamically]"); |
| 927 | if (sym.weakDef()) try writer.writeAll(" weak"); |
| 928 | if (sym.weakRef()) try writer.writeAll(" weakref"); |
| 926 | 929 | if (sym.ext()) { |
| 930 | if (sym.pext()) try writer.writeAll(" private"); |
| 927 | 931 | try writer.writeAll(" external"); |
| 928 | | } |
| 932 | } else if (sym.pext()) try writer.writeAll(" (was private external)"); |
| 933 | try writer.print(" {s}\n", .{sym_name}); |
| 934 | } else if (sym.tentative()) { |
| 935 | const alignment = (sym.n_desc >> 8) & 0x0F; |
| 936 | try writer.print(" 0x{x:0>16} (common) (alignment 2^{d})", .{ sym.n_value, alignment }); |
| 937 | if (sym.ext()) try writer.writeAll(" external"); |
| 929 | 938 | try writer.print(" {s}\n", .{sym_name}); |
| 930 | 939 | } else if (sym.undf()) { |
| 931 | 940 | const ordinal = @divTrunc(@as(i16, @bitCast(sym.n_desc)), macho.N_SYMBOL_RESOLVER); |
| ... | ... | @@ -946,17 +955,13 @@ const MachODumper = struct { |
| 946 | 955 | break :blk basename[0..ext]; |
| 947 | 956 | }; |
| 948 | 957 | try writer.writeAll("(undefined)"); |
| 949 | | if (sym.weakRef()) { |
| 950 | | try writer.writeAll(" weak"); |
| 951 | | } |
| 952 | | if (sym.ext()) { |
| 953 | | try writer.writeAll(" external"); |
| 954 | | } |
| 958 | if (sym.weakRef()) try writer.writeAll(" weakref"); |
| 959 | if (sym.ext()) try writer.writeAll(" external"); |
| 955 | 960 | try writer.print(" {s} (from {s})\n", .{ |
| 956 | 961 | sym_name, |
| 957 | 962 | import_name, |
| 958 | 963 | }); |
| 959 | | } else unreachable; |
| 964 | } |
| 960 | 965 | } |
| 961 | 966 | } |
| 962 | 967 | }; |