Files
acrn-hypervisor/hypervisor/arch/riscv/Makefile
Jian Jun Chen b88fb1fc46 hv: risc-v: enable stack_protector
Add stack protector implementation for RISC-V architecture using a
global __stack_chk_guard variable. This differs from x86 which uses
per-CPU stack canaries.

Tracked-On: #8834
Signed-off-by: Jian Jun Chen <jian.jun.chen@intel.com>
Reviewed-by: Fei Li <fei1.li@intel.com>
Acked-by: Wang, Yu1 <yu1.wang@intel.com>
2025-10-29 17:45:44 +08:00

90 lines
2.2 KiB
Makefile

CROSS_COMPILE ?= riscv64-linux-gnu-
CC = $(CROSS_COMPILE)gcc
AS = $(CROSS_COMPILE)as
AR = $(CROSS_COMPILE)ar
LD = $(CROSS_COMPILE)ld
OBJCOPY = $(CROSS_COMPILE)objcopy
ARCH_LDSCRIPT_IN = arch/riscv/link_ram.ld.in
CFLAGS += -std=gnu99
ASFLAGS +=
LDFLAGS += -Wl,--no-warn-rwx-segments
LDFLAGS += -Wl,-z,norelro
LDFLAGS += -Wl,-z,noexecstack
ifeq (y, $(CONFIG_RELOC))
CFLAGS += -fpie
ASFLAGS += -fpie
CFLAGS += -fvisibility=hidden
LDFLAGS += -shared
LDFLAGS += -Wl,-z,notext
LDFLAGS += -Wl,-Bsymbolic
LDFLAGS += -Wl,-z,defs
else
CFLAGS += -fno-pie -static
ASFLAGS += -fno-pie -static
LDFLAGS += -static
endif
# g expands to i, m, a, f, d, zicsr and zifencei.
# h for hypervisor extension
RV_ISA += gh
RV_ISA += zbb
RV_ISA += zicbom
RV_ISA += zihintpause
ARCH_CFLAGS += -march=rv64$(subst $() $(),_,$(RV_ISA))
ARCH_CFLAGS += -mabi=lp64d
ARCH_CFLAGS += -mcmodel=medany
ARCH_ASFLAGS += -march=rv64$(subst $() $(),_,$(RV_ISA))
# HV host assembly sources
HOST_S_SRCS += arch/riscv/boot/cpu_entry.S
HOST_S_SRCS += arch/riscv/intr.S
HOST_S_SRCS += arch/riscv/sched.S
# HV host C sources
HOST_C_SRCS += arch/riscv/boot/reloc.c
HOST_C_SRCS += arch/riscv/lib/random.c
HOST_C_SRCS += arch/riscv/init.c
HOST_C_SRCS += arch/riscv/sbi.c
HOST_C_SRCS += arch/riscv/notify.c
HOST_C_SRCS += arch/riscv/timer.c
HOST_C_SRCS += arch/riscv/trap.c
HOST_C_SRCS += arch/riscv/cpu.c
HOST_C_SRCS += arch/riscv/mmu.c
HOST_C_SRCS += arch/riscv/irq.c
HOST_C_SRCS += arch/riscv/pgtable.c
HOST_C_SRCS += arch/riscv/security.c
#HV guest C source
HOST_C_SRCS += arch/riscv/guest/vm.c
# Virtual platform assembly sources
VP_S_SRCS +=
# Virtual platform C sources
VP_C_SRCS += arch/riscv/guest/dummy_guest.c
HOST_C_OBJS := $(patsubst %.c,$(HV_OBJDIR)/%.o,$(HOST_C_SRCS))
HOST_S_OBJS := $(patsubst %.S,$(HV_OBJDIR)/%.o,$(HOST_S_SRCS))
VP_C_OBJS := $(patsubst %.c,$(HV_OBJDIR)/%.o,$(VP_C_SRCS))
VP_S_OBJS := $(patsubst %.S,$(HV_OBJDIR)/%.o,$(VP_S_SRCS))
HOST_MOD := $(HV_MODDIR)/host_mod.a
VP_MOD := $(HV_MODDIR)/vp_mod.a
MODULES += $(HOST_MOD)
MODULES += $(VP_MOD)
$(HOST_MOD): $(HOST_C_OBJS) $(HOST_S_OBJS)
$(AR) $(ARFLAGS) $(HOST_MOD) $(HOST_C_OBJS) $(HOST_S_OBJS)
$(VP_MOD): $(VP_C_OBJS) $(VP_S_OBJS)
$(AR) $(ARFLAGS) $(VP_MOD) $(VP_C_OBJS) $(VP_S_OBJS)