[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: EFI executable corruption when live patching is turned off



On 06.08.2020 20:10, Trammell Hudson wrote:
> On Thursday, August 6, 2020 6:40 PM, Jan Beulich <jbeulich@xxxxxxxx> wrote:
> 
>> On 05.08.2020 20:19, Trammell Hudson wrote:
>> [...]
>>> ~/build/xen-clean/xen$ objcopy xen.efi test.efi
>>> objcopy: test.efi: Data Directory size (1c) exceeds space left in section 
>>> (18)
>>> objcopy: test.efi: error copying private BFD data: file in wrong format
>>> ~/build/xen-clean/xen$ objcopy --version | head -1
>>> GNU objcopy (GNU Binutils for Ubuntu) 2.34
>>
>> I've tried to find a sensible way to fix this in objcopy, but could
>> come up with only a somewhat hackish variant:
>> https://sourceware.org/pipermail/binutils/2020-August/112746.html
>> Let's see what the maintainers there think, or if they have better
>> suggestions (or are willing to address this themselves). The issue
>> is pretty certainly not tied to LIVEPATCH, but rather to how much
>> padding space there is at the end of the .rodata section.
> 
> Thanks for tracking that down!  I was also almost certain it was not a 
> livepatch issue, although that was the easiest minimal test case that I could 
> produce.
> 
> As a workaround for the Xen project, what do you think of forcing alignment 
> on .buildid so that the tool is happy:
> 
> diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
> index 111edb5..712ffc8 100644
> --- a/xen/arch/x86/xen.lds.S
> +++ b/xen/arch/x86/xen.lds.S
> @@ -161,6 +161,7 @@ SECTIONS
>         __note_gnu_build_id_end = .;
>    } :note :text
>  #elif defined(BUILD_ID_EFI)
> +  . = ALIGN(4096);
>    DECL_SECTION(.buildid) {
>         __note_gnu_build_id_start = .;
>         *(.buildid)

Only as a last resort, when it gets in the way of something that's in
the upstream tree. I.e. suitably described and commented you could
make this part of your future submission. I don't think a full 4096
bytes of alignment are actually needed, though - afaict 32 bytes ought
to suffice.

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.