3 #LD_SCRIPT64=$PWD/bootstrap.ld
4 LD_SCRIPT32=$PWD/all-linked-try.ld
9 echo "[bootstrap] remake..."
11 cd $SNAP_DIR/obj/l4/amd64/pkg/bootstrap
15 BOOTST_OBJ_DIR=$SNAP_DIR/obj/l4/amd64/pkg/bootstrap/server/src/OBJ-amd64_K8
17 # echo "[bootstrap] linking..."
19 # LD_PRELOAD=libgendep.so \
20 # LD_LIBRARY_PATH=$SNAP_DIR/obj/l4/amd64/tool/gendep/64:$SNAP_DIR/obj/l4/amd64/tool/gendep/32 \
21 # GENDEP_TARGET=$BUILD_DIR/bootstrap.elf \
23 # GENDEP_BINARY_ALT1=ld \
24 # ld -m elf_x86_64 -o $BUILD_DIR/bootstrap.elf \
41 # --no-whole-archive -nostdlib -static -Bstatic --eh-frame-hdr -m elf_x86_64 -z max-page-size=0x1000 -z common-page-size=0x1000 \
42 # --defsym=__executable_start=0x2d0000 -m elf_x86_64 -z max-page-size=0x1000 -z common-page-size=0x1000 \
43 # --defsym __L4_KIP_ADDR__=0x6ffff000 --defsym __L4_STACK_ADDR__=0x70000000 -L$SNAP_DIR/obj/l4/amd64/lib/amd64_K8 \
44 # -L$SNAP_DIR/obj/l4/amd64/lib \
47 # -ldrivers_uart -lcxx_base -lcxx_io -luc_c_minimal $SNAP_DIR/obj/l4/amd64/lib/amd64_K8/libgcc.a \
50 # --defsym=__executable_start=0x2d0000 \
51 # /usr/lib/gcc/x86_64-linux-gnu/4.9/crtend.o \
52 # $SNAP_DIR/obj/l4/amd64/lib/amd64_K8/crtn.o
54 # echo "[bootstrap64] Preparing binary to include.."
55 # objcopy -S $BUILD_DIR/bootstrap.elf $BUILD_DIR/bootstrap64.bin
56 # objdump -D $BUILD_DIR/bootstrap.elf > disasms/bootstrap64.elf.s
57 # chmod -x $BUILD_DIR/bootstrap64.bin
58 # objcopy -B i386 -I binary -O elf32-i386 $BUILD_DIR/bootstrap64.bin $BUILD_DIR/bootstrap32.bin
60 JAIL_DIR=$PWD/jailhouse/inmates
62 echo "[inmate-header] Compiling..."
63 gcc-4.8 -Wp,-MD,$BUILD_DIR/.header-32.o.d -nostdinc \
64 -isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/include \
65 -D__KERNEL__ -D__ASSEMBLY__ -m64 -DCONFIG_X86_X32_ABI \
66 -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 \
67 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 \
68 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 \
69 -Wa,-gdwarf-2 -mfentry -DCC_USING_FENTRY \
71 -I$JAIL_DIR/../hypervisor/arch/x86/include \
72 -I$JAIL_DIR../hypervisor/include -m32 \
73 -c -o $BUILD_DIR/header-32-inmate.o \
76 echo "[boot.S] Compiling the header of image.."
77 gcc -m32 -o $BUILD_DIR/boot.o32 -c \
78 -DMODADDR=0x02000000 \
82 -DPLATFORM_TYPE=\"pc\" \
91 -I$SNAP_DIR/src/l4/pkg/bootstrap/server/src \
92 -I$SNAP_DIR/src/l4/pkg/bootstrap/server/src/ARCH-amd64 \
93 -I$SNAP_DIR/obj/l4/amd64/include/amd64 \
94 -I$SNAP_DIR/obj/l4/amd64/include \
95 -isystem $SNAP_DIR/obj/l4/amd64/include/sys/amd64 \
96 -isystem $SNAP_DIR/obj/l4/amd64/include/sys -nostdinc \
97 -I$SNAP_DIR/obj/l4/amd64/include/uclibc \
98 -I$SNAP_DIR/obj/l4/amd64/include/contrib/libstdc++-v3 \
99 -isystem /usr/lib/gcc/x86_64-linux-gnu/4.9/include \
100 -isystem /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed \
101 -fno-omit-frame-pointer -mno-sse -g -Os -mno-red-zone -march=k8 -Wextra -Wall \
102 -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -fno-common -std=gnu99 \
103 -mno-red-zone -march=k8 -fno-stack-protector -mno-sse -m32 -fno-stack-protector \
106 echo "[bootstrap32] Linking final image.."
108 gcc -m32 -o $BUILD_DIR/bootstrap32.elf -nostdlib -static \
109 -Wl,-T,$LD_SCRIPT32,--gc-sections \
110 $BUILD_DIR/boot.o32 \
111 $BOOTST_OBJ_DIR/boot_idt.o32 \
112 $BOOTST_OBJ_DIR/boot_cpu.o32 \
113 $BOOTST_OBJ_DIR/boot_kernel.o32 \
114 $BOOTST_OBJ_DIR/load_elf.o32 \
115 $BOOTST_OBJ_DIR/minilibc_support.o32 \
116 $BOOTST_OBJ_DIR/bootstrap32.bin \
117 $BUILD_DIR/header-32-inmate.o\
119 $SNAP_DIR/obj/l4/amd64/pkg/bootstrap/server/src/ARCH-amd64/libc32/OBJ-amd64_K8/libc32.a \
122 chmod 755 $BUILD_DIR/bootstrap32.elf
124 #objdump -D $BUILD_DIR/bootstrap32.elf > disasms/bootstrap32.elf.s
125 objcopy -O binary $BUILD_DIR/bootstrap32.elf $BUILD_DIR/bootstrap32-jh.bin
126 cp $BUILD_DIR/bootstrap32-jh.bin ../buildroot-overlay/jailhouse/bootstrap32-jh.bin