]> rtime.felk.cvut.cz Git - jailhouse-test.git/blob - bootstrap-relink/link_objects.sh
fiasco: bootstrap: Some tries to relink fiasco image on 0x0 address.
[jailhouse-test.git] / bootstrap-relink / link_objects.sh
1 #!/bin/bash
2 BUILD_DIR=$PWD/build
3 #LD_SCRIPT64=$PWD/bootstrap.ld
4 LD_SCRIPT32=$PWD/bootstrap32.ld
5 SNAP_DIR=$1
6
7 set -e;
8
9 echo "[bootstrap] remake..."
10 START_DIR=$PWD
11 cd $SNAP_DIR/obj/l4/amd64/pkg/bootstrap
12 make
13 cd $START_DIR
14
15 BOOTST_OBJ_DIR=$SNAP_DIR/obj/l4/amd64/pkg/bootstrap/server/src/OBJ-amd64_K8
16
17 # echo "[bootstrap] linking..."
18 # cd $BOOTST_OBJ_DIR
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 \
22 # GENDEP_BINARY=ld  \
23 # GENDEP_BINARY_ALT1=ld \
24 #       ld -m elf_x86_64 -o $BUILD_DIR/bootstrap.elf  \
25 #             --whole-archive  \
26 #               ARCH-amd64/crt0.o \
27 #               exec.o \
28 #               module.o \
29 #               base_critical.o \
30 #               region.o \
31 #               startup.o \
32 #               init_kip_f.o \
33 #               libc_support+.o \
34 #               patch.o \
35 #               koptions.o \
36 #               platform_common.o \
37 #               memory.o \
38 #               boot_modules.o \
39 #               platform/x86_pc.o \
40 #               ARCH-x86/reboot.o \
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 \
45 #             -T$LD_SCRIPT64\
46 #             --start-group   \
47 #               -ldrivers_uart  -lcxx_base -lcxx_io -luc_c_minimal $SNAP_DIR/obj/l4/amd64/lib/amd64_K8/libgcc.a   \
48 #               --end-group \
49 #               --warn-common \
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
53 # cd $START_DIR
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
59
60 echo "[boot.S] Compiling the header of image.."
61 gcc -m32 -o $BUILD_DIR/boot.o32 -c  \
62     -DMODADDR=0x02000000  \
63     -DRAM_BASE=0 \
64     -DL4_MINIMAL_LIBC=1 \
65     -DCMDLINE="\"\"" \
66     -DPLATFORM_TYPE=\"pc\" \
67     -DPLATFORM_TYPE_pc \
68     -DPLATFORM_UART_NR=        \
69     -DSYSTEM_amd64_K8 \
70     -DARCH_amd64 \
71     -DCPUTYPE_K8 \
72     -DL4API_  \
73     -D_GNU_SOURCE \
74     -DL4_MINIMAL_LIBC \
75         -I$SNAP_DIR/src/l4/pkg/bootstrap/server/src \
76         -I$SNAP_DIR/src/l4/pkg/bootstrap/server/src/ARCH-amd64   \
77         -I$SNAP_DIR/obj/l4/amd64/include/amd64 \
78         -I$SNAP_DIR/obj/l4/amd64/include \
79         -isystem $SNAP_DIR/obj/l4/amd64/include/sys/amd64 \
80         -isystem $SNAP_DIR/obj/l4/amd64/include/sys  -nostdinc \
81         -I$SNAP_DIR/obj/l4/amd64/include/uclibc \
82         -I$SNAP_DIR/obj/l4/amd64/include/contrib/libstdc++-v3  \
83         -isystem /usr/lib/gcc/x86_64-linux-gnu/4.9/include \
84         -isystem /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed \
85         -fno-omit-frame-pointer -mno-sse -g -Os -mno-red-zone -march=k8 -Wextra -Wall \
86         -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -fno-common -std=gnu99 \
87         -mno-red-zone -march=k8 -fno-stack-protector -mno-sse -m32 -fno-stack-protector \
88         ./boot.S
89
90 echo "[bootstrap32] Linking final image.."
91
92 gcc -m32 -o $BUILD_DIR/bootstrap32.elf -nostdlib -static \
93         -Wl,-T,$LD_SCRIPT32,--gc-sections \
94                 $BUILD_DIR/boot.o32 \
95                 $BOOTST_OBJ_DIR/boot_idt.o32 \
96                 $BOOTST_OBJ_DIR/boot_cpu.o32 \
97                 $BOOTST_OBJ_DIR/boot_kernel.o32 \
98                 $BOOTST_OBJ_DIR/load_elf.o32 \
99                 $BOOTST_OBJ_DIR/minilibc_support.o32 \
100                 $BOOTST_OBJ_DIR/bootstrap32.bin \
101                 $LD_SCRIPT32 \
102                 $SNAP_DIR/obj/l4/amd64/pkg/bootstrap/server/src/ARCH-amd64/libc32/OBJ-amd64_K8/libc32.a \
103         -lgcc
104
105 chmod 755 $BUILD_DIR/bootstrap32.elf
106
107 objdump -D $BUILD_DIR/bootstrap32.elf > disasms/bootstrap32.elf.s
108 objcopy -O binary $BUILD_DIR/bootstrap32.elf $BUILD_DIR/bootstrap32-jh.bin
109 cp $BUILD_DIR/bootstrap32-jh-bin ../buildroot-overlay/jailhouse/bootstrap32-jh.bin
110 echo done!