I think there were cases where the ELF loader was used to load to actual physical addresses in FS mode. I don't remember the specifics.
Gabe On Tue, Nov 18, 2014 at 8:21 AM, Nilay Vaish via gem5-dev <gem5-dev@gem5.org > wrote: > I checked the elf-64 draft and I think you right. But I am not able to > understand why do we use p_paddr at all. Should we not be using p_vaddr > everywhere? > > -- > Nilay > > > > On Tue, 18 Nov 2014, Romana, Alexandre via gem5-dev wrote: > > Hi everybody, >> >> Looks to me like there is a bug/typo in elf_loader.cc: >> >> >> 318 // Check to see if this segment contains the bss section. >> >> 319 if (phdr.p_paddr <= bssSecStart && >> >> 320 phdr.p_paddr + phdr.p_memsz > bssSecStart && >> >> 321 phdr.p_memsz - phdr.p_filesz > 0) { >> >> 322 bss.baseAddr = phdr.p_paddr + phdr.p_filesz; >> >> 323 bss.size = phdr.p_memsz - phdr.p_filesz; >> >> 324 bss.fileImage = NULL; >> >> 325 } >> >> 326 >> >> 327 // Check to see if this is the text or data segment >> >> 328 if (phdr.p_vaddr <= textSecStart && >> >> 329 phdr.p_vaddr + phdr.p_filesz > textSecStart) { >> >> 330 text.baseAddr = phdr.p_paddr; >> >> 331 text.size = phdr.p_filesz; >> >> 332 text.fileImage = fileData + phdr.p_offset; >> >> 333 } else if (phdr.p_vaddr <= dataSecStart && >> >> 334 phdr.p_vaddr + phdr.p_filesz > dataSecStart) { >> >> 335 data.baseAddr = phdr.p_paddr; >> >> 336 data.size = phdr.p_filesz; >> >> 337 data.fileImage = fileData + phdr.p_offset; >> >> 338 } else { >> >> 339 // If it's none of the above but is loadable, >> >> 340 // load the filesize worth of data >> >> 341 Segment extra; >> >> 342 extra.baseAddr = phdr.p_paddr; >> >> 343 extra.size = phdr.p_filesz; >> >> 344 extra.fileImage = fileData + phdr.p_offset; >> >> 345 extraSegments.push_back(extra); >> >> >> I guess nobody used so far the loader with the bss section mapped onto a >> segment with different virtual and physical addresses… >> To double check you can look at the bssSecStart definition: >> bssSecStart = shdr.sh_addr; >> sh_addr being the virtual address, I think we can safely assume there’s >> a typo line 319-320, and I can submit a patch (changing 2 characters in the >> code), >> or could anybody please explain why we are comparing virtual with >> physical addresses here? >> >> Thanks, >> Alexandre >> >> Texas Instruments France SAS, Immeuble Le Khapa, 65 Quai Georges Gorse, >> ZAC Seguin Rives de Seine, 92100 Boulogne Billancourt. 036 420 040 R.C.S >> Nanterre. Capital de EUR 12.654.784 >> >> >> _______________________________________________ >> gem5-dev mailing list >> gem5-dev@gem5.org >> http://m5sim.org/mailman/listinfo/gem5-dev >> >> >> _______________________________________________ > gem5-dev mailing list > gem5-dev@gem5.org > http://m5sim.org/mailman/listinfo/gem5-dev > _______________________________________________ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev