mirror of
https://github.com/ziglang/zig.git
synced 2025-12-25 15:43:06 +00:00
stage2 macho: workaround stage2 bugs
This commit is contained in:
parent
845a30624f
commit
ef7282bab4
@ -12417,7 +12417,8 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air
|
||||
const tracy = trace(@src());
|
||||
defer tracy.end();
|
||||
|
||||
const src: LazySrcLoc = .unneeded;
|
||||
// TODO better source location
|
||||
const src: LazySrcLoc = sema.src;
|
||||
const elem_ty_src: LazySrcLoc = .unneeded;
|
||||
const inst_data = sema.code.instructions.items(.data)[inst].ptr_type;
|
||||
const extra = sema.code.extraData(Zir.Inst.PtrType, inst_data.payload_index);
|
||||
|
||||
@ -1317,6 +1317,9 @@ pub fn parseDylib(self: *MachO, path: []const u8, opts: DylibCreateOpts) ParseDy
|
||||
error.EndOfStream, error.NotDylib => {
|
||||
try file.seekTo(0);
|
||||
|
||||
// TODO https://github.com/ziglang/zig/issues/11367
|
||||
if (@import("builtin").zig_backend != .stage1) return error.Unexpected;
|
||||
|
||||
var lib_stub = LibStub.loadFromFile(self.base.allocator, file) catch {
|
||||
dylib.deinit(self.base.allocator);
|
||||
return false;
|
||||
@ -5747,7 +5750,6 @@ fn populateLazyBindOffsetsInStubHelper(self: *MachO, buffer: []const u8) !void {
|
||||
while (true) {
|
||||
const inst = reader.readByte() catch |err| switch (err) {
|
||||
error.EndOfStream => break,
|
||||
else => return err,
|
||||
};
|
||||
const opcode: u8 = inst & macho.BIND_OPCODE_MASK;
|
||||
|
||||
@ -5875,7 +5877,7 @@ fn writeFunctionStarts(self: *MachO) !void {
|
||||
mem.set(u8, buffer, 0);
|
||||
|
||||
var stream = std.io.fixedBufferStream(buffer);
|
||||
var writer = stream.writer();
|
||||
const writer = stream.writer();
|
||||
|
||||
for (offsets.items) |offset| {
|
||||
try std.leb.writeULEB128(writer, offset);
|
||||
@ -6236,7 +6238,8 @@ fn writeLoadCommands(self: *MachO) !void {
|
||||
|
||||
var buffer = try self.base.allocator.alloc(u8, sizeofcmds);
|
||||
defer self.base.allocator.free(buffer);
|
||||
var writer = std.io.fixedBufferStream(buffer).writer();
|
||||
var fib = std.io.fixedBufferStream(buffer);
|
||||
const writer = fib.writer();
|
||||
for (self.load_commands.items) |lc| {
|
||||
try lc.write(writer);
|
||||
}
|
||||
@ -6416,7 +6419,7 @@ fn snapshotState(self: *MachO) !void {
|
||||
error.Unseekable => try out_file.writer().writeByte('['),
|
||||
else => |e| return e,
|
||||
}
|
||||
var writer = out_file.writer();
|
||||
const writer = out_file.writer();
|
||||
|
||||
var snapshot = Snapshot{
|
||||
.timestamp = std.time.nanoTimestamp(),
|
||||
|
||||
@ -171,7 +171,6 @@ fn parseTableOfContents(self: *Archive, allocator: Allocator, reader: anytype) !
|
||||
while (true) {
|
||||
const n_strx = symtab_reader.readIntLittle(u32) catch |err| switch (err) {
|
||||
error.EndOfStream => break,
|
||||
else => |e| return e,
|
||||
};
|
||||
const object_offset = try symtab_reader.readIntLittle(u32);
|
||||
|
||||
|
||||
@ -472,7 +472,8 @@ fn writeLoadCommands(self: *DebugSymbols, allocator: Allocator) !void {
|
||||
|
||||
var buffer = try allocator.alloc(u8, sizeofcmds);
|
||||
defer allocator.free(buffer);
|
||||
var writer = std.io.fixedBufferStream(buffer).writer();
|
||||
var fib = std.io.fixedBufferStream(buffer);
|
||||
const writer = fib.writer();
|
||||
for (self.load_commands.items) |lc| {
|
||||
try lc.write(writer);
|
||||
}
|
||||
|
||||
@ -64,7 +64,7 @@ pub const Id = struct {
|
||||
};
|
||||
}
|
||||
|
||||
pub fn deinit(id: *Id, allocator: Allocator) void {
|
||||
pub fn deinit(id: Id, allocator: Allocator) void {
|
||||
allocator.free(id.name);
|
||||
}
|
||||
|
||||
|
||||
@ -492,7 +492,8 @@ pub fn parseIntoAtoms(self: *Object, allocator: Allocator, macho_file: *MachO) !
|
||||
mem.copy(u8, atom.code.items, code);
|
||||
}
|
||||
|
||||
try atom.parseRelocs(relocs, .{
|
||||
// TODO stage2 bug: @alignCast shouldn't be needed
|
||||
try atom.parseRelocs(@alignCast(@alignOf(macho.relocation_info), relocs), .{
|
||||
.base_addr = sect.addr,
|
||||
.allocator = allocator,
|
||||
.object = self,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user