RE: vdso handling
"Metzger, Markus T" <[email protected]>
| Newsgroups | gmane.comp.gdb.devel,gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <A78C989F6D9628469189715575E55B230AAB701F@IRSMSX103.ger.corp.intel.com> |
> -----Original Message----- > From: Alan Modra [mailto:[email protected]] > Sent: Wednesday, March 19, 2014 12:10 AM > > + /* Keep the section headers. */ > > + shdr_begin = i_ehdr.e_shoff; > > + shdr_end = shdr_begin + i_ehdr.e_shnum * i_ehdr.e_shentsize; > > + if (shdr_end > (bfd_vma) contents_size) > > + contents_size = shdr_end; > > + > > I don't think this is a good idea. If/when bfd_from_remote_memory is > used for something other than the linux kernel vdso, we can't assume > the section headers are loaded. Shouldn't the ehdr indicate that there are no sections in this case? > The original code made the assumption > that the highest address loaded from a PT_LOAD header was rounded up > to a page, and that the page size could be inferred from p_align. > Here: > segment_end = (i_phdrs[i].p_offset + i_phdrs[i].p_filesz > + i_phdrs[i].p_align - 1) & -i_phdrs[i].p_align; > if (segment_end > (bfd_vma) contents_size) > contents_size = segment_end; > > Now, p_align is generally set from the page size if using GNU ld, but > I'm wondering if your vdso somehow doesn't have that property. Can > you show us your vdso readelf -e output? If p_align isn't set to a > page, then the change in heuristic I envision is to make use of > elf_backend_data maxpagesize to figure out which parts of the image > might be loaded. If that isn't enough then perhaps we should add > another parameter to bfd_from_remote_memory to allow its caller to > specify the end of the image. I'm not sure the caller knows. GDB gets the base address from AUXV's AT_SYSINFO_EHDR. If we can't trust the image to contain everything that the ELF header describes, would it be safer to generate fake sections based on the program header? We already assume that the program header is contained in the image. Regards, Markus. Intel GmbH Dornacher Strasse 1 85622 Feldkirchen/Muenchen, Deutschland Sitz der Gesellschaft: Feldkirchen bei Muenchen Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk Registergericht: Muenchen HRB 47456 Ust.-IdNr./VAT Registration No.: DE129385895 Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052