[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |