@@ -192,6 +192,7 @@ impl ElfHandle {
192192
193193 let prot = ph. prot_flags ( ) ;
194194
195+ let seg_page_start = self . page_start ( load_bias + vaddr) ;
195196 let total_map_size = self . page_align ( vend) - self . page_start ( vaddr) ;
196197 let file_map_size =
197198 self . page_align ( core:: cmp:: min ( fend, vend) ) - self . page_start ( vaddr) ;
@@ -204,18 +205,18 @@ impl ElfHandle {
204205 //
205206 // We do the following mmap for the file-backed portion:
206207 let mapping = unsafe {
207- let addr = self . page_start ( load_bias + vaddr) ;
208208 let offset = self . page_start ( offset) ;
209209 let size = file_map_size;
210210
211211 log:: trace!(
212- "mmap [{ph}] [0x{addr:x}-0x{mend:x}] (vaddr=0x{vaddr:x}, offset=0x{offset:x})" ,
213- mend = addr + size,
212+ "mmap [{ph}] [0x{start:x}-0x{end:x}] (vaddr=0x{vaddr:x}, offset=0x{offset:x})" ,
213+ start = seg_page_start,
214+ end = seg_page_start + size,
214215 ph = DisplayPFlags ( ph) ,
215216 ) ;
216217
217218 sys:: mmap (
218- addr as * mut c_void ,
219+ seg_page_start as * mut c_void ,
219220 size,
220221 prot,
221222 MAP_PRIVATE | MAP_FIXED ,
@@ -243,16 +244,17 @@ impl ElfHandle {
243244
244245 if file_map_size < total_map_size {
245246 let mapping = unsafe {
246- let addr = load_addr . add ( file_map_size) ;
247+ let addr = seg_page_start + file_map_size;
247248 let size = total_map_size - file_map_size;
248249 log:: trace!(
249- "mmap [{ph}] [{addr:?}-0x{mend:x}] (vaddr=0x{vaddr:x}, anon)" ,
250- mend = addr as usize + size,
250+ "mmap [{ph}] [0x{addr:x}-0x{mend:x}] (vaddr=0x{vaddr:x}, anon)" ,
251+ addr = addr,
252+ mend = addr + size,
251253 ph = DisplayPFlags ( ph) ,
252254 ) ;
253255
254256 sys:: mmap (
255- addr,
257+ addr as * mut c_void ,
256258 size,
257259 prot,
258260 MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS ,
0 commit comments