diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/Elf.zig | 5 | ||||
| -rw-r--r-- | src/link/Elf/Object.zig | 2 | ||||
| -rw-r--r-- | src/link/Elf/ZigObject.zig | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 3ddea985e0..3aa7708190 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -4531,7 +4531,10 @@ fn allocateAllocSectionsObject(self: *Elf) !void { for (self.shdrs.items) |*shdr| { if (shdr.sh_type == elf.SHT_NULL) continue; if (shdr.sh_flags & elf.SHF_ALLOC == 0) continue; - if (shdr.sh_type == elf.SHT_NOBITS) continue; + if (shdr.sh_type == elf.SHT_NOBITS) { + shdr.sh_offset = 0; + continue; + } const needed_size = shdr.sh_size; if (needed_size > self.allocatedSize(shdr.sh_offset)) { shdr.sh_size = 0; diff --git a/src/link/Elf/Object.zig b/src/link/Elf/Object.zig index 3e1e49407b..136beb4d52 100644 --- a/src/link/Elf/Object.zig +++ b/src/link/Elf/Object.zig @@ -251,7 +251,7 @@ fn initOutputSection(self: Object, elf_file: *Elf, shdr: ElfShdr) error{OutOfMem .type = @"type", .flags = flags, .name = name, - .offset = std.math.maxInt(u32), + .offset = std.math.maxInt(u64), }); return out_shndx; } diff --git a/src/link/Elf/ZigObject.zig b/src/link/Elf/ZigObject.zig index ed286be261..d79d3eff2c 100644 --- a/src/link/Elf/ZigObject.zig +++ b/src/link/Elf/ZigObject.zig @@ -749,14 +749,14 @@ fn getDeclShdrIndex( .type = elf.SHT_NOBITS, .flags = elf.SHF_ALLOC | elf.SHF_WRITE | elf.SHF_TLS, .name = ".tbss", - .offset = std.math.maxInt(u32), + .offset = std.math.maxInt(u64), }); break :blk elf_file.sectionByName(".tdata") orelse try elf_file.addSection(.{ .type = elf.SHT_PROGBITS, .flags = elf.SHF_ALLOC | elf.SHF_WRITE | elf.SHF_TLS, .name = ".tdata", - .offset = std.math.maxInt(u32), + .offset = std.math.maxInt(u64), }); } if (variable.is_const) break :blk elf_file.zig_data_rel_ro_section_index.?; |
