mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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: dedb0aa42c ("x86/build: use --orphan-handling linker option if available")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
c8a25eb617
commit
54279f87ec
2 files changed
+13
-2
No files matched your search
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||