| ... | @@ -1107,7 +1107,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation) !void { | ... | @@ -1107,7 +1107,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation) !void { |
| 1107 | for (buf) |*phdr, i| { | 1107 | for (buf) |*phdr, i| { |
| 1108 | phdr.* = progHeaderTo32(self.program_headers.items[i]); | 1108 | phdr.* = progHeaderTo32(self.program_headers.items[i]); |
| 1109 | if (foreign_endian) { | 1109 | if (foreign_endian) { |
| 1110 | bswapAllFields(elf.Elf32_Phdr, phdr); | 1110 | std.elf.bswapAllFields(elf.Elf32_Phdr, phdr); |
| 1111 | } | 1111 | } |
| 1112 | } | 1112 | } |
| 1113 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), self.phdr_table_offset.?); | 1113 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), self.phdr_table_offset.?); |
| ... | @@ -1119,7 +1119,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation) !void { | ... | @@ -1119,7 +1119,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation) !void { |
| 1119 | for (buf) |*phdr, i| { | 1119 | for (buf) |*phdr, i| { |
| 1120 | phdr.* = self.program_headers.items[i]; | 1120 | phdr.* = self.program_headers.items[i]; |
| 1121 | if (foreign_endian) { | 1121 | if (foreign_endian) { |
| 1122 | bswapAllFields(elf.Elf64_Phdr, phdr); | 1122 | std.elf.bswapAllFields(elf.Elf64_Phdr, phdr); |
| 1123 | } | 1123 | } |
| 1124 | } | 1124 | } |
| 1125 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), self.phdr_table_offset.?); | 1125 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), self.phdr_table_offset.?); |
| ... | @@ -1196,7 +1196,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation) !void { | ... | @@ -1196,7 +1196,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation) !void { |
| 1196 | shdr.* = sectHeaderTo32(self.sections.items[i]); | 1196 | shdr.* = sectHeaderTo32(self.sections.items[i]); |
| 1197 | log.debug("writing section {}\n", .{shdr.*}); | 1197 | log.debug("writing section {}\n", .{shdr.*}); |
| 1198 | if (foreign_endian) { | 1198 | if (foreign_endian) { |
| 1199 | bswapAllFields(elf.Elf32_Shdr, shdr); | 1199 | std.elf.bswapAllFields(elf.Elf32_Shdr, shdr); |
| 1200 | } | 1200 | } |
| 1201 | } | 1201 | } |
| 1202 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), self.shdr_table_offset.?); | 1202 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), self.shdr_table_offset.?); |
| ... | @@ -1209,7 +1209,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation) !void { | ... | @@ -1209,7 +1209,7 @@ pub fn flushModule(self: *Elf, comp: *Compilation) !void { |
| 1209 | shdr.* = self.sections.items[i]; | 1209 | shdr.* = self.sections.items[i]; |
| 1210 | log.debug("writing section {}\n", .{shdr.*}); | 1210 | log.debug("writing section {}\n", .{shdr.*}); |
| 1211 | if (foreign_endian) { | 1211 | if (foreign_endian) { |
| 1212 | bswapAllFields(elf.Elf64_Shdr, shdr); | 1212 | std.elf.bswapAllFields(elf.Elf64_Shdr, shdr); |
| 1213 | } | 1213 | } |
| 1214 | } | 1214 | } |
| 1215 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), self.shdr_table_offset.?); | 1215 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), self.shdr_table_offset.?); |
| ... | @@ -2787,14 +2787,14 @@ fn writeProgHeader(self: *Elf, index: usize) !void { | ... | @@ -2787,14 +2787,14 @@ fn writeProgHeader(self: *Elf, index: usize) !void { |
| 2787 | .p32 => { | 2787 | .p32 => { |
| 2788 | var phdr = [1]elf.Elf32_Phdr{progHeaderTo32(self.program_headers.items[index])}; | 2788 | var phdr = [1]elf.Elf32_Phdr{progHeaderTo32(self.program_headers.items[index])}; |
| 2789 | if (foreign_endian) { | 2789 | if (foreign_endian) { |
| 2790 | bswapAllFields(elf.Elf32_Phdr, &phdr[0]); | 2790 | std.elf.bswapAllFields(elf.Elf32_Phdr, &phdr[0]); |
| 2791 | } | 2791 | } |
| 2792 | return self.base.file.?.pwriteAll(mem.sliceAsBytes(&phdr), offset); | 2792 | return self.base.file.?.pwriteAll(mem.sliceAsBytes(&phdr), offset); |
| 2793 | }, | 2793 | }, |
| 2794 | .p64 => { | 2794 | .p64 => { |
| 2795 | var phdr = [1]elf.Elf64_Phdr{self.program_headers.items[index]}; | 2795 | var phdr = [1]elf.Elf64_Phdr{self.program_headers.items[index]}; |
| 2796 | if (foreign_endian) { | 2796 | if (foreign_endian) { |
| 2797 | bswapAllFields(elf.Elf64_Phdr, &phdr[0]); | 2797 | std.elf.bswapAllFields(elf.Elf64_Phdr, &phdr[0]); |
| 2798 | } | 2798 | } |
| 2799 | return self.base.file.?.pwriteAll(mem.sliceAsBytes(&phdr), offset); | 2799 | return self.base.file.?.pwriteAll(mem.sliceAsBytes(&phdr), offset); |
| 2800 | }, | 2800 | }, |
| ... | @@ -2808,7 +2808,7 @@ fn writeSectHeader(self: *Elf, index: usize) !void { | ... | @@ -2808,7 +2808,7 @@ fn writeSectHeader(self: *Elf, index: usize) !void { |
| 2808 | var shdr: [1]elf.Elf32_Shdr = undefined; | 2808 | var shdr: [1]elf.Elf32_Shdr = undefined; |
| 2809 | shdr[0] = sectHeaderTo32(self.sections.items[index]); | 2809 | shdr[0] = sectHeaderTo32(self.sections.items[index]); |
| 2810 | if (foreign_endian) { | 2810 | if (foreign_endian) { |
| 2811 | bswapAllFields(elf.Elf32_Shdr, &shdr[0]); | 2811 | std.elf.bswapAllFields(elf.Elf32_Shdr, &shdr[0]); |
| 2812 | } | 2812 | } |
| 2813 | const offset = self.shdr_table_offset.? + index * @sizeOf(elf.Elf32_Shdr); | 2813 | const offset = self.shdr_table_offset.? + index * @sizeOf(elf.Elf32_Shdr); |
| 2814 | return self.base.file.?.pwriteAll(mem.sliceAsBytes(&shdr), offset); | 2814 | return self.base.file.?.pwriteAll(mem.sliceAsBytes(&shdr), offset); |
| ... | @@ -2816,7 +2816,7 @@ fn writeSectHeader(self: *Elf, index: usize) !void { | ... | @@ -2816,7 +2816,7 @@ fn writeSectHeader(self: *Elf, index: usize) !void { |
| 2816 | .p64 => { | 2816 | .p64 => { |
| 2817 | var shdr = [1]elf.Elf64_Shdr{self.sections.items[index]}; | 2817 | var shdr = [1]elf.Elf64_Shdr{self.sections.items[index]}; |
| 2818 | if (foreign_endian) { | 2818 | if (foreign_endian) { |
| 2819 | bswapAllFields(elf.Elf64_Shdr, &shdr[0]); | 2819 | std.elf.bswapAllFields(elf.Elf64_Shdr, &shdr[0]); |
| 2820 | } | 2820 | } |
| 2821 | const offset = self.shdr_table_offset.? + index * @sizeOf(elf.Elf64_Shdr); | 2821 | const offset = self.shdr_table_offset.? + index * @sizeOf(elf.Elf64_Shdr); |
| 2822 | return self.base.file.?.pwriteAll(mem.sliceAsBytes(&shdr), offset); | 2822 | return self.base.file.?.pwriteAll(mem.sliceAsBytes(&shdr), offset); |
| ... | @@ -2914,7 +2914,7 @@ fn writeSymbol(self: *Elf, index: usize) !void { | ... | @@ -2914,7 +2914,7 @@ fn writeSymbol(self: *Elf, index: usize) !void { |
| 2914 | }, | 2914 | }, |
| 2915 | }; | 2915 | }; |
| 2916 | if (foreign_endian) { | 2916 | if (foreign_endian) { |
| 2917 | bswapAllFields(elf.Elf32_Sym, &sym[0]); | 2917 | std.elf.bswapAllFields(elf.Elf32_Sym, &sym[0]); |
| 2918 | } | 2918 | } |
| 2919 | const off = syms_sect.sh_offset + @sizeOf(elf.Elf32_Sym) * index; | 2919 | const off = syms_sect.sh_offset + @sizeOf(elf.Elf32_Sym) * index; |
| 2920 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(sym[0..1]), off); | 2920 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(sym[0..1]), off); |
| ... | @@ -2922,7 +2922,7 @@ fn writeSymbol(self: *Elf, index: usize) !void { | ... | @@ -2922,7 +2922,7 @@ fn writeSymbol(self: *Elf, index: usize) !void { |
| 2922 | .p64 => { | 2922 | .p64 => { |
| 2923 | var sym = [1]elf.Elf64_Sym{self.local_symbols.items[index]}; | 2923 | var sym = [1]elf.Elf64_Sym{self.local_symbols.items[index]}; |
| 2924 | if (foreign_endian) { | 2924 | if (foreign_endian) { |
| 2925 | bswapAllFields(elf.Elf64_Sym, &sym[0]); | 2925 | std.elf.bswapAllFields(elf.Elf64_Sym, &sym[0]); |
| 2926 | } | 2926 | } |
| 2927 | const off = syms_sect.sh_offset + @sizeOf(elf.Elf64_Sym) * index; | 2927 | const off = syms_sect.sh_offset + @sizeOf(elf.Elf64_Sym) * index; |
| 2928 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(sym[0..1]), off); | 2928 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(sym[0..1]), off); |
| ... | @@ -2953,7 +2953,7 @@ fn writeAllGlobalSymbols(self: *Elf) !void { | ... | @@ -2953,7 +2953,7 @@ fn writeAllGlobalSymbols(self: *Elf) !void { |
| 2953 | .st_shndx = self.global_symbols.items[i].st_shndx, | 2953 | .st_shndx = self.global_symbols.items[i].st_shndx, |
| 2954 | }; | 2954 | }; |
| 2955 | if (foreign_endian) { | 2955 | if (foreign_endian) { |
| 2956 | bswapAllFields(elf.Elf32_Sym, sym); | 2956 | std.elf.bswapAllFields(elf.Elf32_Sym, sym); |
| 2957 | } | 2957 | } |
| 2958 | } | 2958 | } |
| 2959 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), global_syms_off); | 2959 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), global_syms_off); |
| ... | @@ -2972,7 +2972,7 @@ fn writeAllGlobalSymbols(self: *Elf) !void { | ... | @@ -2972,7 +2972,7 @@ fn writeAllGlobalSymbols(self: *Elf) !void { |
| 2972 | .st_shndx = self.global_symbols.items[i].st_shndx, | 2972 | .st_shndx = self.global_symbols.items[i].st_shndx, |
| 2973 | }; | 2973 | }; |
| 2974 | if (foreign_endian) { | 2974 | if (foreign_endian) { |
| 2975 | bswapAllFields(elf.Elf64_Sym, sym); | 2975 | std.elf.bswapAllFields(elf.Elf64_Sym, sym); |
| 2976 | } | 2976 | } |
| 2977 | } | 2977 | } |
| 2978 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), global_syms_off); | 2978 | try self.base.file.?.pwriteAll(mem.sliceAsBytes(buf), global_syms_off); |
| ... | @@ -3188,10 +3188,6 @@ fn pwriteDbgInfoNops( | ... | @@ -3188,10 +3188,6 @@ fn pwriteDbgInfoNops( |
| 3188 | try self.base.file.?.pwritevAll(vecs[0..vec_index], offset - prev_padding_size); | 3188 | try self.base.file.?.pwritevAll(vecs[0..vec_index], offset - prev_padding_size); |
| 3189 | } | 3189 | } |
| 3190 | | 3190 | |
| 3191 | fn bswapAllFields(comptime S: type, ptr: *S) void { | | |
| 3192 | @panic("TODO implement bswapAllFields"); | | |
| 3193 | } | | |
| 3194 | | | |
| 3195 | fn progHeaderTo32(phdr: elf.Elf64_Phdr) elf.Elf32_Phdr { | 3191 | fn progHeaderTo32(phdr: elf.Elf64_Phdr) elf.Elf32_Phdr { |
| 3196 | return .{ | 3192 | return .{ |
| 3197 | .p_type = phdr.p_type, | 3193 | .p_type = phdr.p_type, |