@@ -192,6 +192,7 @@ impl ElfHandle {
192
192
193
193
let prot = ph. prot_flags ( ) ;
194
194
195
+ let seg_page_start = self . page_start ( load_bias + vaddr) ;
195
196
let total_map_size = self . page_align ( vend) - self . page_start ( vaddr) ;
196
197
let file_map_size =
197
198
self . page_align ( core:: cmp:: min ( fend, vend) ) - self . page_start ( vaddr) ;
@@ -204,18 +205,18 @@ impl ElfHandle {
204
205
//
205
206
// We do the following mmap for the file-backed portion:
206
207
let mapping = unsafe {
207
- let addr = self . page_start ( load_bias + vaddr) ;
208
208
let offset = self . page_start ( offset) ;
209
209
let size = file_map_size;
210
210
211
211
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,
214
215
ph = DisplayPFlags ( ph) ,
215
216
) ;
216
217
217
218
sys:: mmap (
218
- addr as * mut c_void ,
219
+ seg_page_start as * mut c_void ,
219
220
size,
220
221
prot,
221
222
MAP_PRIVATE | MAP_FIXED ,
@@ -243,16 +244,17 @@ impl ElfHandle {
243
244
244
245
if file_map_size < total_map_size {
245
246
let mapping = unsafe {
246
- let addr = load_addr . add ( file_map_size) ;
247
+ let addr = seg_page_start + file_map_size;
247
248
let size = total_map_size - file_map_size;
248
249
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,
251
253
ph = DisplayPFlags ( ph) ,
252
254
) ;
253
255
254
256
sys:: mmap (
255
- addr,
257
+ addr as * mut c_void ,
256
258
size,
257
259
prot,
258
260
MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS ,
0 commit comments