[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/build: make linking work again with ld incapable of generating build ID
commit 54279f87ecbcb3eab45fbdd52f44c1be998a9ab3 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Fri Apr 22 14:56:23 2022 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri Apr 22 14:56:23 2022 +0200 x86/build: make linking work again with ld incapable of generating build ID The retaining of .note.* in a PT_NOTE segment requires a matching program header to be present in the first place. Drop the respective conditional and adjust mkelf32 to deal with (ignore) the potentially present but empty extra segment (but have the new code be generic by dropping any excess trailing entirely empty segments). Fixes: dedb0aa42c6d ("x86/build: use --orphan-handling linker option if available") Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/boot/mkelf32.c | 13 +++++++++++++ xen/arch/x86/xen.lds.S | 2 -- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/boot/mkelf32.c b/xen/arch/x86/boot/mkelf32.c index bcbde1a056..3d639c2e08 100644 --- a/xen/arch/x86/boot/mkelf32.c +++ b/xen/arch/x86/boot/mkelf32.c @@ -320,6 +320,19 @@ int main(int argc, char **argv) (int)in64_ehdr.e_phentsize, (int)sizeof(in64_phdr)); return 1; } + + /* Ignore entirely empty trailing program headers. */ + while ( in64_ehdr.e_phnum > num_phdrs ) + { + (void)lseek(infd, + in64_ehdr.e_phoff + in64_ehdr.e_phnum * sizeof(in64_phdr), + SEEK_SET); + do_read(infd, &in64_phdr, sizeof(in64_phdr)); + endianadjust_phdr64(&in64_phdr); + if ( in64_phdr.p_memsz ) + break; + --in64_ehdr.e_phnum; + } if ( in64_ehdr.e_phnum != num_phdrs ) { fprintf(stderr, "Expect precisly %d program header; found %d.\n", diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S index 68501c7186..6e4abbc1ce 100644 --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -40,9 +40,7 @@ OUTPUT_ARCH(i386:x86-64) PHDRS { text PT_LOAD ; -#if defined(BUILD_ID) || defined(CONFIG_PVH_GUEST) note PT_NOTE ; -#endif } #define PHDR(x) :x #else -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |