Re: [patch] solib-svr4.c - allow reading linkmap info from core without executable

Daniel Jacobowitz
2009-06-19T14:56:41Z

On Fri, Jun 19, 2009 at 04:42:04PM +0200, Mark Kettenis wrote:
> > From: Aleksandar Ristovski <aristovski@qnx.com>
> > Date: Fri, 19 Jun 2009 10:16:26 -0400
> >
> > Pedro Alves wrote:
> > >
> > > I was thinking on pushing the elf check a bit down instead,
> > > like the below. However, having now tested this, I see that
> > > this doesn't work in most of the cores I have here (x86_64-linux).
> > > In most cases I see, the segment that would contain the program
> > > headers, as indicated by auxv info, isn't included in the
> > > core...
> > >
> > > (objdump -h)
> > > Idx Name Size VMA LMA File off Algn
> > > :
> > > 6 load1 00000000 0000000000400000 0000000000000000 000008f8 2**0
> > > ALLOC, READONLY, CODE
> > > :
> > >
>
> I'm somewhat amazed that the Linux kernel doesn't dump the auxv stuff.
> Without the auxv data, debugging core dumps of PIE executables will be
> impossible.
>
> Perhaps the kernel does include the information in the does, but bfd
> doesn't have the necessary code to turn it into an .auxv section?

That works fine:

drow@caradoc:~% readelf -n core

Notes at offset 0x00000430 with length 0x00000344:
Owner Data size Description
CORE 0x00000150 NT_PRSTATUS (prstatus structure)
CORE 0x00000088 NT_PRPSINFO (prpsinfo structure)
CORE 0x00000130 NT_AUXV (auxiliary vector)

drow@caradoc:~% objdump -h core

core: file format elf64-x86-64

Sections:
Idx Name Size VMA LMA File off Algn
0 note0 00000344 0000000000000000 0000000000000000 00000430 2**0
CONTENTS, READONLY
1 .reg/14342 000000d8 0000000000000000 0000000000000000 000004b4 2**2
CONTENTS
2 .reg 000000d8 0000000000000000 0000000000000000 000004b4 2**2
CONTENTS
3 .auxv 00000130 0000000000000000 0000000000000000 00000644 2**3
CONTENTS

But reading it again, Pedro said "the segment that would contain the
program headers, as indicated by auxv info". That's probably not
dumped by default, as it's read-only.

--
Daniel Jacobowitz
CodeSourcery