Re: [Xen-devel] [PATCH v3 0/2] Clear .bss for VP guests

From: Boris Ostrovsky
Date: Fri Feb 26 2016 - 10:10:23 EST


On 02/26/2016 09:42 AM, Brian Gerst wrote:
On Fri, Feb 26, 2016 at 8:51 AM, Boris Ostrovsky
<boris.ostrovsky@xxxxxxxxxx> wrote:
On 02/26/2016 05:53 AM, Roger Pau Monnà wrote:
El 25/2/16 a les 16:16, Boris Ostrovsky ha escrit:
PV guests need to have their .bss zeroed out since it is not guaranteed
to be cleared by Xen's domain builder
I guess I'm missing something, but elf_load_image (in libelf-loader.c)
seems to be able to clear segments (it will zero the memory between
p_paddr + p_filesz and p_paddr + p_memsz) while loading the ELF into
memory, so if the program headers are correctly setup the .bss should be
zeroed out AFAICT.

Right, but I don't think this is guaranteed. It's uninitialized data so in
principle it can be anything.

The ELF spec says "the system initializes the data with zero when the
program begins to run" which I read as it's up to runtime and not the loader
to do so.

And since kernel does it explicitly on baremetal path I think it's a good
idea for PV to do the same.
It does it on bare metal because bzImage is a raw binary image, not ELF.

OK, I didn't think about this.

But nevertheless, is it guaranteed that .bss is cleared by the loader? My reading of the spec is that it's not.


-boris