Commit 0f95565c authored by John Tsichritzis's avatar John Tsichritzis Committed by TrustedFirmware Code Review
Browse files

Merge "Introduce BTI support in ROMLIB" into integration

Showing with 41 additions and 10 deletions
+41 -10
...@@ -937,7 +937,7 @@ ${SPTOOL}: ...@@ -937,7 +937,7 @@ ${SPTOOL}:
.PHONY: libraries .PHONY: libraries
romlib.bin: libraries romlib.bin: libraries
${Q}${MAKE} PLAT_DIR=${PLAT_DIR} BUILD_PLAT=${BUILD_PLAT} INCLUDES='${INCLUDES}' DEFINES='${DEFINES}' --no-print-directory -C ${ROMLIBPATH} all ${Q}${MAKE} PLAT_DIR=${PLAT_DIR} BUILD_PLAT=${BUILD_PLAT} ENABLE_BTI=${ENABLE_BTI} ARM_ARCH_MINOR=${ARM_ARCH_MINOR} INCLUDES='${INCLUDES}' DEFINES='${DEFINES}' --no-print-directory -C ${ROMLIBPATH} all
cscope: cscope:
@echo " CSCOPE" @echo " CSCOPE"
......
...@@ -29,6 +29,11 @@ ifeq ($(DEBUG),1) ...@@ -29,6 +29,11 @@ ifeq ($(DEBUG),1)
LDFLAGS += -Map=$(MAPFILE) LDFLAGS += -Map=$(MAPFILE)
endif endif
ifeq (${ARM_ARCH_MINOR},0)
ASFLAGS = -march=armv8-a
else
ASFLAGS = -march=armv8.${ARM_ARCH_MINOR}-a
endif
.PHONY: all clean distclean .PHONY: all clean distclean
...@@ -60,13 +65,13 @@ $(WRAPPER_DIR)/jmpvar.s: $(BUILD_DIR)/romlib.elf ...@@ -60,13 +65,13 @@ $(WRAPPER_DIR)/jmpvar.s: $(BUILD_DIR)/romlib.elf
$(LIB_DIR)/libwrappers.a: $(BUILD_DIR)/jmptbl.i $(WRAPPER_DIR)/jmpvar.o $(LIB_DIR)/libwrappers.a: $(BUILD_DIR)/jmptbl.i $(WRAPPER_DIR)/jmpvar.o
@echo " AR $@" @echo " AR $@"
$(Q)./genwrappers.sh -b $(WRAPPER_DIR) -o $@ $(BUILD_DIR)/jmptbl.i $(Q)./genwrappers.sh -b $(WRAPPER_DIR) -o $@ --bti=$(ENABLE_BTI) --asflags=$(ASFLAGS) $(BUILD_DIR)/jmptbl.i
$(BUILD_DIR)/jmptbl.i: $(BUILD_DIR)/jmptbl.s $(BUILD_DIR)/jmptbl.i: $(BUILD_DIR)/jmptbl.s
$(BUILD_DIR)/jmptbl.s: ../../$(PLAT_DIR)/jmptbl.i $(BUILD_DIR)/jmptbl.s: ../../$(PLAT_DIR)/jmptbl.i
@echo " TBL $@" @echo " TBL $@"
$(Q)./gentbl.sh -o $@ -b $(BUILD_DIR) ../../$(PLAT_DIR)/jmptbl.i $(Q)./gentbl.sh -o $@ -b $(BUILD_DIR) --bti=$(ENABLE_BTI) ../../$(PLAT_DIR)/jmptbl.i
clean: clean:
@rm -f $(BUILD_DIR)/* @rm -f $(BUILD_DIR)/*
......
#!/bin/sh #!/bin/sh
# Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. # Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
# #
# SPDX-License-Identifier: BSD-3-Clause # SPDX-License-Identifier: BSD-3-Clause
...@@ -19,6 +19,10 @@ do ...@@ -19,6 +19,10 @@ do
build=$2 build=$2
shift 2 shift 2
;; ;;
--bti=*)
enable_bti=$(echo $1 | sed 's/--bti=\(.*\)/\1/')
shift 1
;;
--) --)
shift shift
break break
...@@ -47,12 +51,15 @@ if (NF == 2 && $1 == "include") { ...@@ -47,12 +51,15 @@ if (NF == 2 && $1 == "include") {
awk -v OFS="\t" ' awk -v OFS="\t" '
BEGIN{print "#index\tlib\tfunction\t[patch]"} BEGIN{print "#index\tlib\tfunction\t[patch]"}
{print NR-1, $0}' | tee $build/jmptbl.i | {print NR-1, $0}' | tee $build/jmptbl.i |
awk -v OFS="\n" ' awk -v OFS="\n" -v BTI=$enable_bti '
BEGIN {print "\t.text", BEGIN {print "\t.text",
"\t.globl\tjmptbl", "\t.globl\tjmptbl",
"jmptbl:"} "jmptbl:"}
{sub(/[:blank:]*#.*/,"")} {sub(/[:blank:]*#.*/,"")}
!/^$/ {if ($3 == "reserved") !/^$/ {
if (BTI == 1)
print "\tbti\tj"
if ($3 == "reserved")
print "\t.word\t0x0" print "\t.word\t0x0"
else else
print "\tb\t" $3}' > $$.tmp && print "\tb\t" $3}' > $$.tmp &&
......
...@@ -19,6 +19,14 @@ do ...@@ -19,6 +19,14 @@ do
build=$2 build=$2
shift 2 shift 2
;; ;;
--bti=*)
enable_bti=$(echo $1 | sed 's/--bti=\(.*\)/\1/')
shift 1
;;
--asflags=*)
asflags=$(echo $1 | sed 's/--asflags=\(.*\)/\1/')
shift 1
;;
--) --)
shift shift
break break
...@@ -30,8 +38,13 @@ do ...@@ -30,8 +38,13 @@ do
esac esac
done done
awk '{sub(/[:blank:]*#.*/,"")} awk -v BTI=$enable_bti '
!/^$/ && $NF != "patch" && $NF != "reserved" {print $1*4, $2, $3}' "$@" | {sub(/[:blank:]*#.*/,"")}
!/^$/ && $NF != "patch" && $NF != "reserved" {
if (BTI == 1)
print $1*8, $2, $3
else
print $1*4, $2, $3}' "$@" |
while read idx lib sym while read idx lib sym
do do
file=$build/${lib}_$sym file=$build/${lib}_$sym
...@@ -39,14 +52,20 @@ do ...@@ -39,14 +52,20 @@ do
cat <<EOF > $file.s cat <<EOF > $file.s
.globl $sym .globl $sym
$sym: $sym:
EOF
if [ $enable_bti = 1 ]
then
echo "\tbti\tjc" >> $file.s
fi
cat <<EOF >> $file.s
ldr x17, =jmptbl ldr x17, =jmptbl
ldr x17, [x17]
mov x16, #$idx mov x16, #$idx
ldr x17, [x17]
add x16, x16, x17 add x16, x16, x17
br x16 br x16
EOF EOF
${CROSS_COMPILE}as -o $file.o $file.s ${CROSS_COMPILE}as ${asflags} -o $file.o $file.s
done done
${CROSS_COMPILE}ar -rc $out $build/*.o ${CROSS_COMPILE}ar -rc $out $build/*.o
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment