From b48baeeebbec2f5d06f8ffc5305d2994d8389a72 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Sat, 11 Nov 2023 07:47:17 +0100 Subject: [PATCH] elf: fix typo in initial section offsets --- src/link/Elf.zig | 5 ++++- src/link/Elf/Object.zig | 2 +- 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 3ddea985e04c9450708bf815228f9ac4d6276f8d..3aa7708190132f0c21b8450eab2d40c23657b772 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 3e1e49407b36f6fdf3cf752b32dabbe90c04f8af..136beb4d52b77230b0c9e59c4184791277b54605 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 ed286be26194d565a820eedcfe87b8b58b7ad13f..d79d3eff2c16adf66ae6c55eb689e386d037d3da 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.?; -- 2.54.0