AMD64 - Fix native-built sys/boot install
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 8 Jul 2009 17:52:32 +0000 (10:52 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 8 Jul 2009 17:52:32 +0000 (10:52 -0700)
* Pass the proper elf format to the linker when compiling programs in
  sys/boot.

* include btxld in the 64 bit buildworld.  It is needed by sys/boot.

* a.out.h / imgact_aout.h needed a special case to generate a 32 bit
  struct exec when compiled from a 64 bit environment.

sys/boot/pc32/boot0/Makefile
sys/boot/pc32/boot2/boot2.c
sys/boot/pc32/btx/btxldr/Makefile
sys/boot/pc32/cdboot/Makefile
sys/boot/pc32/mbr/Makefile
sys/boot/pc32/pxeldr/Makefile
sys/sys/imgact_aout.h
usr.sbin/Makefile
usr.sbin/btxld/btxld.c

index d440da6..89662b4 100644 (file)
@@ -61,7 +61,7 @@ CFLAGS+=-DFLAGS=${BOOT_BOOT0_FLAGS} \
 #
 ${PROG}: boot0.o bootasmdef.nx
        @echo "boot0 origin set to `${.OBJDIR}/bootasmdef.nx BOOT0_ORIGIN`"
-       ${LD} -N -e start -Ttext `${.OBJDIR}/bootasmdef.nx BOOT0_ORIGIN` -o boot0.out boot0.o
+       ${LD} ${LDFLAGS} -N -e start -Ttext `${.OBJDIR}/bootasmdef.nx BOOT0_ORIGIN` -o boot0.out boot0.o
        objcopy -S -O binary boot0.out ${.TARGET}
 
 boot0.o: boot0.S
index dd0aff9..34bddfb 100644 (file)
@@ -48,6 +48,7 @@
  * $DragonFly: src/sys/boot/pc32/boot2/boot2.c,v 1.18 2008/09/13 11:45:45 corecode Exp $
  */
 
+#define AOUT_H_FORCE32
 #include <sys/param.h>
 #ifdef DISKLABEL64
 #include <sys/disklabel64.h>
index d29075e..e5dfd9e 100644 (file)
@@ -11,7 +11,7 @@ CFLAGS+= -DBTXLDR_VERBOSE
 all: btxldr
 
 btxldr: btxldr.o
-       ${LD} -N -e start -Ttext ${LOADER_ADDRESS} -o btxldr.out btxldr.o
+       ${LD} ${LDFLAGS} -N -e start -Ttext ${LOADER_ADDRESS} -o btxldr.out btxldr.o
        objcopy -S -O binary btxldr.out ${.TARGET}
 
 btxldr.o: btxldr.S
index c19a4a8..93ac4a6 100644 (file)
@@ -9,7 +9,7 @@ STRIP=
 BINDIR?=       /boot
 
 ${PROG}: ${PROG}.o
-       ${LD} -N -e start -Ttext ${ORG} -o ${PROG}.out ${PROG}.o
+       ${LD} ${LDFLAGS} -N -e start -Ttext ${ORG} -o ${PROG}.out ${PROG}.o
        objcopy -S -O binary ${PROG}.out ${.TARGET}
 
 CLEANFILES+=   ${PROG}.o ${PROG}.out
index 3a6442b..343a91c 100644 (file)
@@ -10,7 +10,7 @@ BINMODE=      444
 ORG=   0x600
 
 mbr: mbr.o
-       ${LD} -N -e start -Ttext ${ORG} -o mbr.out mbr.o
+       ${LD} ${LDFLAGS} -N -e start -Ttext ${ORG} -o mbr.out mbr.o
        objcopy -S -O binary mbr.out ${.TARGET}
 
 CLEANFILES+= mbr.out mbr.o
index cd9467d..8259b0d 100644 (file)
@@ -46,7 +46,7 @@ ${LOADER}: ${LOADERBIN} ${BTXLDR} ${BTXKERN} ${BTXCRT}
            -b ${BTXKERN} ${LOADERBIN}
 
 ${LDR}: ${LDR}.o
-       ${LD} -N -e start -Ttext ${ORG} -o ${LDR}.out ${LDR}.o
+       ${LD} ${LDFLAGS} -N -e start -Ttext ${ORG} -o ${LDR}.out ${LDR}.o
        objcopy -S -O binary ${LDR}.out ${.TARGET}
 
 ${LDR}.o: ${LDR}.S
index ab7faa7..adf90b8 100644 (file)
  * Header prepended to each a.out file.
  * only manipulate the a_midmag field via the
  * N_SETMAGIC/N_GET{MAGIC,MID,FLAG} macros in a.out.h
+ *
+ * AOUT_H_FORCE32 is used by btxld and sys/boot when compiling
+ * from a 64 bit environment to generate a 32 bit a.out.h header.
  */
 
+#ifdef AOUT_H_FORCE32
+typedef u_int32_t      aout_register_t;
+#else
+typedef unsigned long  aout_register_t;
+#endif
+
 struct exec {
-     unsigned long     a_midmag;       /* flags<<26 | mid<<16 | magic */
-     unsigned long     a_text;         /* text segment size */
-     unsigned long     a_data;         /* initialized data size */
-     unsigned long     a_bss;          /* uninitialized data size */
-     unsigned long     a_syms;         /* symbol table size */
-     unsigned long     a_entry;        /* entry point */
-     unsigned long     a_trsize;       /* text relocation size */
-     unsigned long     a_drsize;       /* data relocation size */
+     aout_register_t   a_midmag;       /* flags<<26 | mid<<16 | magic */
+     aout_register_t   a_text;         /* text segment size */
+     aout_register_t   a_data;         /* initialized data size */
+     aout_register_t   a_bss;          /* uninitialized data size */
+     aout_register_t   a_syms;         /* symbol table size */
+     aout_register_t   a_entry;        /* entry point */
+     aout_register_t   a_trsize;       /* text relocation size */
+     aout_register_t   a_drsize;       /* data relocation size */
 };
 #define a_magic a_midmag /* XXX Hack to work with current kern_execve.c */
 
index 97e6277..a23f8e9 100644 (file)
@@ -171,11 +171,14 @@ SUBDIR+=editmap \
        sendmail
 .endif
 
+.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64"
+SUBDIR+= btxld
+.endif
+
 .if ${MACHINE_ARCH} == "i386"
 SUBDIR+=apm \
        apmd \
        battd \
-       btxld \
        kgmon \
        kgzip \
        lptcontrol \
index bcf6392..5d43ada 100644 (file)
@@ -27,6 +27,7 @@
  * $DragonFly: src/usr.sbin/btxld/btxld.c,v 1.3 2004/08/19 21:38:30 joerg Exp $
  */
 
+#define AOUT_H_FORCE32
 #include <sys/param.h>
 #include <sys/stat.h>
 #include <sys/mman.h>