@@ -171,23 +171,23 @@ pub const ElfDynLib = struct {
171
171
if (! mem .eql (u8 , eh .e_ident [0.. 4], elf .MAGIC )) return error .NotElfFile ;
172
172
if (eh .e_type != elf .ET .DYN ) return error .NotDynamicLibrary ;
173
173
174
- const elf_addr = @intFromPtr ( file_bytes .ptr ) ;
174
+ const elf_addr : [ * ] u8 = file_bytes .ptr ;
175
175
176
176
// Iterate over the program header entries to find out the
177
177
// dynamic vector as well as the total size of the virtual memory.
178
178
var maybe_dynv : ? [* ]usize = null ;
179
179
var virt_addr_end : usize = 0 ;
180
180
{
181
181
var i : usize = 0 ;
182
- var ph_addr : usize = elf_addr + eh .e_phoff ;
182
+ var ph_addr : [ * ] u8 = elf_addr + eh .e_phoff ;
183
183
while (i < eh .e_phnum ) : ({
184
184
i += 1 ;
185
185
ph_addr += eh .e_phentsize ;
186
186
}) {
187
- const ph = @as ( * elf .Phdr , @ptrFromInt (ph_addr ));
187
+ const ph : * elf.Phdr = @ptrCast ( @alignCast (ph_addr ));
188
188
switch (ph .p_type ) {
189
189
elf .PT_LOAD = > virt_addr_end = @max (virt_addr_end , ph .p_vaddr + ph .p_memsz ),
190
- elf .PT_DYNAMIC = > maybe_dynv = @as ([* ]usize , @ptrFromInt ( elf_addr + ph .p_offset )),
190
+ elf .PT_DYNAMIC = > maybe_dynv = @as ([* ]usize , @ptrCast ( @alignCast ( elf_addr + ph .p_offset ) )),
191
191
else = > {},
192
192
}
193
193
}
@@ -210,12 +210,12 @@ pub const ElfDynLib = struct {
210
210
// Now iterate again and actually load all the program sections.
211
211
{
212
212
var i : usize = 0 ;
213
- var ph_addr : usize = elf_addr + eh .e_phoff ;
213
+ var ph_addr : [ * ] u8 = elf_addr + eh .e_phoff ;
214
214
while (i < eh .e_phnum ) : ({
215
215
i += 1 ;
216
216
ph_addr += eh .e_phentsize ;
217
217
}) {
218
- const ph = @as ( * elf .Phdr , @ptrFromInt (ph_addr ));
218
+ const ph : * elf.Phdr = @ptrCast ( @alignCast (ph_addr ));
219
219
switch (ph .p_type ) {
220
220
elf .PT_LOAD = > {
221
221
// The VirtAddr may not be page-aligned; in such case there will be
@@ -343,9 +343,9 @@ fn checkver(def_arg: *elf.Verdef, vsym_arg: i32, vername: []const u8, strings: [
343
343
break ;
344
344
if (def .vd_next == 0 )
345
345
return false ;
346
- def = @as (* elf .Verdef , @ptrFromInt ( @intFromPtr ( def ) + def .vd_next ) );
346
+ def = @ptrCast ( @ as ([ * ] elf .Verdef , @ptrCast ( def )) + def .vd_next );
347
347
}
348
- const aux = @as (* elf .Verdaux , @ptrFromInt ( @intFromPtr ( def ) + def .vd_aux ) );
348
+ const aux : * elf.Verdaux = @ptrCast ( @ as ([ * ] elf .Verdef , @ptrCast ( def )) + def .vd_aux );
349
349
return mem .eql (u8 , vername , mem .sliceTo (strings + aux .vda_name , 0 ));
350
350
}
351
351
0 commit comments