aboutsummaryrefslogtreecommitdiffstats
path: root/lib/romlib/genwrappers.sh
diff options
context:
space:
mode:
authorJohn Tsichritzis <john.tsichritzis@arm.com>2019-06-06 10:26:10 +0000
committerTrustedFirmware Code Review <review@review.trustedfirmware.org>2019-06-06 10:26:10 +0000
commit0f95565c40d54188dd072fe2b429046dbbd9a6a3 (patch)
tree966fe8d7dc4aa50011d5f720a50672bdf9e390ea /lib/romlib/genwrappers.sh
parent16b49f601df30378b78bb323a859109149f3ea00 (diff)
parentbbb24f611c92ada192ed7a6825da8b477fd6bcfb (diff)
downloadplatform_external_arm-trusted-firmware-0f95565c40d54188dd072fe2b429046dbbd9a6a3.tar.gz
platform_external_arm-trusted-firmware-0f95565c40d54188dd072fe2b429046dbbd9a6a3.tar.bz2
platform_external_arm-trusted-firmware-0f95565c40d54188dd072fe2b429046dbbd9a6a3.zip
Merge "Introduce BTI support in ROMLIB" into integration
Diffstat (limited to 'lib/romlib/genwrappers.sh')
-rwxr-xr-xlib/romlib/genwrappers.sh27
1 files changed, 23 insertions, 4 deletions
diff --git a/lib/romlib/genwrappers.sh b/lib/romlib/genwrappers.sh
index 07d59ac45..e092548e0 100755
--- a/lib/romlib/genwrappers.sh
+++ b/lib/romlib/genwrappers.sh
@@ -19,6 +19,14 @@ do
build=$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
break
@@ -30,8 +38,13 @@ do
esac
done
-awk '{sub(/[:blank:]*#.*/,"")}
-!/^$/ && $NF != "patch" && $NF != "reserved" {print $1*4, $2, $3}' "$@" |
+awk -v BTI=$enable_bti '
+{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
do
file=$build/${lib}_$sym
@@ -39,14 +52,20 @@ do
cat <<EOF > $file.s
.globl $sym
$sym:
+EOF
+if [ $enable_bti = 1 ]
+then
+ echo "\tbti\tjc" >> $file.s
+fi
+ cat <<EOF >> $file.s
ldr x17, =jmptbl
- ldr x17, [x17]
mov x16, #$idx
+ ldr x17, [x17]
add x16, x16, x17
br x16
EOF
- ${CROSS_COMPILE}as -o $file.o $file.s
+ ${CROSS_COMPILE}as ${asflags} -o $file.o $file.s
done
${CROSS_COMPILE}ar -rc $out $build/*.o