sys/boot: Unbreak efi build with WORLD_LDVER=ld.bfd.
authorzrj <rimvydas.jasinskas@gmail.com>
Thu, 13 Feb 2020 11:59:17 +0000 (13:59 +0200)
committerzrj <rimvydas.jasinskas@gmail.com>
Fri, 14 Feb 2020 06:52:51 +0000 (08:52 +0200)
 Adjust 64-bit libstand.a location to use full path if available as it is
 done for 32-bit loaders already.

 The ld.bfd when invoked with -ffreestanding will not look for /usr/lib.

 Match ldscript.x86_64 to sys/platform/pc64/conf/ldscript.x86_64.
 Our ld.bfd does not support freebsd emulation target.  Generic target is
 enough to convert boot1.sym and loader.sym intermediates to PE32+.

 While there, use something sane for section padding in ldscript.x86_64.

sys/boot/efi/boot1/Makefile
sys/boot/efi/loader/arch/x86_64/ldscript.x86_64

index ecf38e0..eecf48f 100644 (file)
@@ -50,13 +50,17 @@ CFLAGS+=    -fPIC
 LDFLAGS+=      -Wl,-znocombreloc
 .endif
 
+.if exists(${.OBJDIR}/../../../../lib/libstand/libstand.a)
+LIBSTAND=      ${.OBJDIR}/../../../../lib/libstand/libstand.a
+.endif
+
 #
 # Add libstand for the runtime functions used by the compiler - for example
 # __aeabi_* (arm) or __divdi3 (i386).
 # as well as required string and memory functions for all platforms.
 #
 DPADD+=                ${LIBSTAND}
-LDADD+=                -lstand
+LDADD+=                ${LIBSTAND}
 
 DPADD+=                ${LDSCRIPT}
 
index 2cc92f0..1b95778 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: head/sys/boot/efi/loader/arch/amd64/ldscript.amd64 280950 2015-04-01 08:30:40Z andrew $ */
-OUTPUT_FORMAT("elf64-x86-64-freebsd", "elf64-x86-64-freebsd", "elf64-x86-64-freebsd")
+OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
 OUTPUT_ARCH(i386:x86-64)
 ENTRY(_start)
 SECTIONS
@@ -19,7 +19,7 @@ SECTIONS
     /* .gnu.warning sections are handled specially by elf32.em. */
     *(.gnu.warning)
     *(.plt)
-  } =0x00300000010070000002000001000400
+  } =0xCCCCCCCC
   . = ALIGN(4096);
   .data                : {
     *(.rodata .rodata.* .gnu.linkonce.r.*)