| ... | ... | @@ -915,25 +915,25 @@ pub const Coff = struct { |
| 915 | 915 | } |
| 916 | 916 | |
| 917 | 917 | pub fn getCoffHeader(self: Coff) CoffHeader { |
| 918 | | return @ptrCast(*align(1) CoffHeader, self.data[self.coff_header_offset..][0..@sizeOf(CoffHeader)]).*; |
| 918 | return @ptrCast(*align(1) const CoffHeader, self.data[self.coff_header_offset..][0..@sizeOf(CoffHeader)]).*; |
| 919 | 919 | } |
| 920 | 920 | |
| 921 | 921 | pub fn getOptionalHeader(self: Coff) OptionalHeader { |
| 922 | 922 | assert(self.is_image); |
| 923 | 923 | const offset = self.coff_header_offset + @sizeOf(CoffHeader); |
| 924 | | return @ptrCast(*align(1) OptionalHeader, self.data[offset..][0..@sizeOf(OptionalHeader)]).*; |
| 924 | return @ptrCast(*align(1) const OptionalHeader, self.data[offset..][0..@sizeOf(OptionalHeader)]).*; |
| 925 | 925 | } |
| 926 | 926 | |
| 927 | 927 | pub fn getOptionalHeader32(self: Coff) OptionalHeaderPE32 { |
| 928 | 928 | assert(self.is_image); |
| 929 | 929 | const offset = self.coff_header_offset + @sizeOf(CoffHeader); |
| 930 | | return @ptrCast(*align(1) OptionalHeaderPE32, self.data[offset..][0..@sizeOf(OptionalHeaderPE32)]).*; |
| 930 | return @ptrCast(*align(1) const OptionalHeaderPE32, self.data[offset..][0..@sizeOf(OptionalHeaderPE32)]).*; |
| 931 | 931 | } |
| 932 | 932 | |
| 933 | 933 | pub fn getOptionalHeader64(self: Coff) OptionalHeaderPE64 { |
| 934 | 934 | assert(self.is_image); |
| 935 | 935 | const offset = self.coff_header_offset + @sizeOf(CoffHeader); |
| 936 | | return @ptrCast(*align(1) OptionalHeaderPE64, self.data[offset..][0..@sizeOf(OptionalHeaderPE64)]).*; |
| 936 | return @ptrCast(*align(1) const OptionalHeaderPE64, self.data[offset..][0..@sizeOf(OptionalHeaderPE64)]).*; |
| 937 | 937 | } |
| 938 | 938 | |
| 939 | 939 | pub fn getImageBase(self: Coff) u64 { |
| ... | ... | @@ -962,7 +962,7 @@ pub const Coff = struct { |
| 962 | 962 | else => unreachable, // We assume we have validated the header already |
| 963 | 963 | }; |
| 964 | 964 | const offset = self.coff_header_offset + @sizeOf(CoffHeader) + size; |
| 965 | | return @ptrCast([*]align(1) ImageDataDirectory, self.data[offset..])[0..self.getNumberOfDataDirectories()]; |
| 965 | return @ptrCast([*]align(1) const ImageDataDirectory, self.data[offset..])[0..self.getNumberOfDataDirectories()]; |
| 966 | 966 | } |
| 967 | 967 | |
| 968 | 968 | pub fn getSymtab(self: *const Coff) ?Symtab { |
| ... | ... | @@ -980,13 +980,13 @@ pub const Coff = struct { |
| 980 | 980 | |
| 981 | 981 | const offset = coff_header.pointer_to_symbol_table + Symbol.sizeOf() * coff_header.number_of_symbols; |
| 982 | 982 | const size = mem.readIntLittle(u32, self.data[offset..][0..4]); |
| 983 | | return .{ .buffer = self.data[offset..][0..size] }; |
| 983 | return Strtab{ .buffer = self.data[offset..][0..size] }; |
| 984 | 984 | } |
| 985 | 985 | |
| 986 | 986 | pub fn getSectionHeaders(self: *const Coff) []align(1) const SectionHeader { |
| 987 | 987 | const coff_header = self.getCoffHeader(); |
| 988 | 988 | const offset = self.coff_header_offset + @sizeOf(CoffHeader) + coff_header.size_of_optional_header; |
| 989 | | return @ptrCast([*]align(1) SectionHeader, self.data.ptr + offset)[0..coff_header.number_of_sections]; |
| 989 | return @ptrCast([*]align(1) const SectionHeader, self.data.ptr + offset)[0..coff_header.number_of_sections]; |
| 990 | 990 | } |
| 991 | 991 | |
| 992 | 992 | pub fn getSectionName(self: *const Coff, sect_hdr: *align(1) const SectionHeader) []const u8 { |