Statically link el2.o (fails to link vmlinux)
Signed-off-by: David Brazdil <dbrazdil@google.com>
diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile b/arch/arm64/kvm/hyp/nvhe/Makefile
index 65e9b3d..c08f37b 100644
--- a/arch/arm64/kvm/hyp/nvhe/Makefile
+++ b/arch/arm64/kvm/hyp/nvhe/Makefile
@@ -17,9 +17,10 @@
hyp-y += ../vgic-v3-sr.o ../aarch32.o ../vgic-v2-cpuif-proxy.o ../entry.o \
../fpsimd.o ../hyp-entry.o
hyp-y += $(lib-objs)
+hyp-y += stubs.o
hyp-y := $(patsubst %.o,%.hyp.o,$(hyp-y))
-extra-y := $(patsubst %.hyp.o,%.hyp.tmp.o,$(hyp-y))
+extra-y := $(patsubst %.hyp.o,%.hyp.tmp.o,$(hyp-y)) el2.o
$(obj)/%.hyp.tmp.o: $(src)/%.c FORCE
$(call if_changed_rule,cc_o_c)
@@ -27,7 +28,7 @@
$(call if_changed_rule,as_o_S)
$(obj)/%.hyp.o: $(obj)/%.hyp.tmp.o FORCE
$(call if_changed,hypcopy)
-LDFLAGS_el2.o := --relocatable
+
$(obj)/el2.o: $(addprefix $(obj)/,$(hyp-y)) FORCE
$(call if_changed,ld)
diff --git a/arch/arm64/kvm/hyp/nvhe/stubs.c b/arch/arm64/kvm/hyp/nvhe/stubs.c
new file mode 100644
index 0000000..0a76359
--- /dev/null
+++ b/arch/arm64/kvm/hyp/nvhe/stubs.c
@@ -0,0 +1,39 @@
+char __hyp_panic_string[] = "__hyp_panic_string";
+void panic(const char *fmt, ...) {}
+
+unsigned long __hyp_stub_vectors;
+unsigned long idmap_t0sz;
+unsigned long kimage_voffset;
+
+unsigned long __per_cpu_start;
+unsigned long __per_cpu_end;
+
+unsigned long __start_rodata;
+unsigned long __end_rodata;
+unsigned long __bss_start;
+unsigned long __bss_stop;
+
+unsigned long __hyp_idmap_text_start;
+unsigned long __hyp_idmap_text_end;
+unsigned long __hyp_text_start;
+unsigned long __hyp_text_end;
+unsigned long __hyp_bss_start;
+unsigned long __hyp_bss_end;
+
+void arm64_enable_wa2_handling() {}
+void kvm_patch_vector_branch() {}
+void kvm_update_va_mask() {}
+void sve_save_state() {}
+void sve_load_state() {}
+
+// /* Data shared with the kernel. */
+unsigned long cpu_hwcaps;
+unsigned long cpu_hwcap_keys;
+unsigned long __icache_flags;
+unsigned long kvm_vgic_global_state;
+unsigned long __kvm_bp_vect_base;
+
+unsigned long arm64_const_caps_ready;
+unsigned long gic_pmr_sync;
+unsigned long vgic_v2_cpuif_trap;
+unsigned long vgic_v3_cpuif_trap;