labath added a comment.

Ok, so this is what seems to be happening:
The vdso "file" has the following program headers:

  Program Headers:
    Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
    LOAD           0x000000 0xffffe000 0x00000000 0x00434 0x00434 R E 0x1000
    DYNAMIC        0x000324 0xffffe324 0x00000324 0x00090 0x00090 R   0x4
    NOTE           0x0001c4 0xffffe1c4 0x000001c4 0x00034 0x00034 R   0x4
    GNU_EH_FRAME   0x0001f8 0xffffe1f8 0x000001f8 0x00024 0x00024 R   0x4

Your patch makes the makes us use the physical addresses (because some of the 
physical addresses are non-null), but in this case that is incorrect. For this 
file the VirtAddr describes the correct address of the file/section/segment in 
memory. Also the addresses in the section headers  (which is what we were using 
previously are correct.

Going back to your patch, it's not clear to me whether using physical addresses 
as load addresses is a correct thing to do in general. I mean, generally, we 
care about the places where the object file is located in virtual memory, and 
in physical, so maybe we should keep use virtual addresses here, and have 
ObjectFile::LoadInMemory use physical addresses through some other api? What do 
you think?

That said, on my desktop machine I get the following program headers from the 
vdso:

  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x000000 0x00000000 0x00000000 0x00d1a 0x00d1a R E 0x1000
  DYNAMIC        0x0002bc 0x000002bc 0x000002bc 0x00090 0x00090 R   0x4
  NOTE           0x000560 0x00000560 0x00000560 0x00060 0x00060 R   0x4
  GNU_EH_FRAME   0x0005c0 0x000005c0 0x000005c0 0x00024 0x00024 R   0x4

and things still work fine, so it may be possible to make this work by just 
changing how we compute the load bias (I have to look up where we do that). 
(However, I am still not sure about using physical addresses being the right 
thing here).


Repository:
  rL LLVM

https://reviews.llvm.org/D42145



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to