#!/bin/bash
BUILD_DIR=$PWD/build
#LD_SCRIPT64=$PWD/bootstrap.ld
-LD_SCRIPT32=$PWD/bootstrap32.ld
+LD_SCRIPT32=$PWD/all-linked-try.ld
SNAP_DIR=$1
set -e;
# objdump -D $BUILD_DIR/bootstrap.elf > disasms/bootstrap64.elf.s
# chmod -x $BUILD_DIR/bootstrap64.bin
# objcopy -B i386 -I binary -O elf32-i386 $BUILD_DIR/bootstrap64.bin $BUILD_DIR/bootstrap32.bin
+cd ../
+JAIL_DIR=$PWD/jailhouse/inmates
+cd $START_DIR
+echo "[inmate-header] Compiling..."
+ gcc-4.8 -Wp,-MD,$BUILD_DIR/.header-32.o.d -nostdinc \
+ -isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/include \
+ -D__KERNEL__ -D__ASSEMBLY__ -m64 -DCONFIG_X86_X32_ABI \
+ -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 \
+ -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 \
+ -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 \
+ -Wa,-gdwarf-2 -mfentry -DCC_USING_FENTRY \
+ -I$JAIL_DIR/lib/x86 \
+ -I$JAIL_DIR/../hypervisor/arch/x86/include \
+ -I$JAIL_DIR../hypervisor/include -m32 \
+ -c -o $BUILD_DIR/header-32-inmate.o \
+ ./header-32-inmate.S
echo "[boot.S] Compiling the header of image.."
gcc -m32 -o $BUILD_DIR/boot.o32 -c \
./boot.S
echo "[bootstrap32] Linking final image.."
+cd $BUILD_DIR
gcc -m32 -o $BUILD_DIR/bootstrap32.elf -nostdlib -static \
-Wl,-T,$LD_SCRIPT32,--gc-sections \
- $BUILD_DIR/boot.o32 \
+ boot.o32 \
$BOOTST_OBJ_DIR/boot_idt.o32 \
$BOOTST_OBJ_DIR/boot_cpu.o32 \
$BOOTST_OBJ_DIR/boot_kernel.o32 \
$BOOTST_OBJ_DIR/load_elf.o32 \
$BOOTST_OBJ_DIR/minilibc_support.o32 \
$BOOTST_OBJ_DIR/bootstrap32.bin \
+ header-32-inmate.o\
$LD_SCRIPT32 \
$SNAP_DIR/obj/l4/amd64/pkg/bootstrap/server/src/ARCH-amd64/libc32/OBJ-amd64_K8/libc32.a \
-lgcc
-chmod 755 $BUILD_DIR/bootstrap32.elf
+chmod 755 bootstrap32.elf
#objdump -D $BUILD_DIR/bootstrap32.elf > disasms/bootstrap32.elf.s
-objcopy -O binary $BUILD_DIR/bootstrap32.elf $BUILD_DIR/bootstrap32-jh.bin
-cp $BUILD_DIR/bootstrap32-jh.bin ../buildroot-overlay/jailhouse/bootstrap32-jh.bin
+objcopy -O binary bootstrap32.elf bootstrap32-jh.bin
+cp bootstrap32-jh.bin $START_DIR/../buildroot-overlay/jailhouse/bootstrap32-jh.bin
echo done!