Merge pull request #1717 from satheesbalya-arm/sb1/sb1_2629_romlib_ifc

romlib: Add platform specific jump table list
This commit is contained in:
Antonio Niño Díaz 2018-12-18 15:22:49 +01:00 committed by GitHub
commit 85686f1842
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 103 additions and 42 deletions

View file

@ -880,7 +880,7 @@ ${SPTOOL}:
.PHONY: libraries .PHONY: libraries
romlib.bin: libraries romlib.bin: libraries
${Q}${MAKE} BUILD_PLAT=${BUILD_PLAT} INCLUDES='${INCLUDES}' DEFINES='${DEFINES}' --no-print-directory -C ${ROMLIBPATH} all ${Q}${MAKE} PLAT_DIR=${PLAT_DIR} BUILD_PLAT=${BUILD_PLAT} INCLUDES='${INCLUDES}' DEFINES='${DEFINES}' --no-print-directory -C ${ROMLIBPATH} all
cscope: cscope:
@echo " CSCOPE" @echo " CSCOPE"

View file

@ -60,11 +60,16 @@ $(WRAPPER_DIR)/jmpvar.s: $(BUILD_DIR)/romlib.elf
$(LIB_DIR)/libwrappers.a: jmptbl.i $(WRAPPER_DIR)/jmpvar.o $(LIB_DIR)/libwrappers.a: jmptbl.i $(WRAPPER_DIR)/jmpvar.o
@echo " AR $@" @echo " AR $@"
$(Q)./genwrappers.sh -b $(WRAPPER_DIR) -o $@ jmptbl.i $(Q)./genwrappers.sh -b $(WRAPPER_DIR) -o $@ $(BUILD_DIR)/jmptbl.i
$(BUILD_DIR)/jmptbl.s: jmptbl.i $(BUILD_DIR)/jmptbl.s: jmptbl.i
@echo " TBL $@" @echo " TBL $@"
$(Q)./gentbl.sh -o $@ jmptbl.i if [ -e "../../$(PLAT_DIR)/jmptbl.i" ] ; \
then \
$(Q)./gentbl.sh -o $@ -b $(BUILD_DIR) ../../$(PLAT_DIR)/jmptbl.i; \
else \
@echo "USE_ROMLIB=1 requires jump table list file: jmptbl.i in platform directory"; \
fi
clean: clean:
@rm -f $(BUILD_DIR)/* @rm -f $(BUILD_DIR)/*

View file

@ -6,6 +6,7 @@
set -e set -e
output=jmptbl.s output=jmptbl.s
build=.
for i for i
do do
@ -14,27 +15,45 @@ do
output=$2 output=$2
shift 2 shift 2
;; ;;
-b)
build=$2
shift 2
;;
--) --)
shift shift
break break
;; ;;
-*) -*)
echo usage: gentbl.sh [-o output] file ... >&2 echo usage: gentbl.sh [-o output] [-b dir] file ... >&2
exit 1 exit 1
;; ;;
esac esac
done done
tmp=`mktemp` tmp=`mktemp`
trap "rm -f $tmp" EXIT INT QUIT trap "rm -f $$.tmp" EXIT INT QUIT
rm -f $output rm -f $output
# Pre-process include files
awk '!/^$/ && !/[:blank:]*#.*/{
if (NF == 2 && $1 == "include") {
while ((getline line < $2) > 0)
if (line !~ /^$/ && line !~ /[:blank:]*#.*/)
print line
close($2)
} else
print
}' "$@" |
awk -v OFS="\t" '
BEGIN{print "#index\tlib\tfunction\t[patch]"}
{print NR-1, $0}' | tee $build/jmptbl.i |
awk -v OFS="\n" ' awk -v OFS="\n" '
BEGIN {print "\t.text", BEGIN {print "\t.text",
"\t.globl\tjmptbl", "\t.globl\tjmptbl",
"jmptbl:"} "jmptbl:"}
{sub(/[:blank:]*#.*/,"")} {sub(/[:blank:]*#.*/,"")}
!/^$/ {print "\tb\t" $3}' "$@" > $tmp !/^$/ {if ($3 == "reserved")
print "\t.word\t0x0"
mv $tmp $output else
print "\tb\t" $3}' > $$.tmp &&
mv $$.tmp $output

View file

@ -31,7 +31,7 @@ do
done done
awk '{sub(/[:blank:]*#.*/,"")} awk '{sub(/[:blank:]*#.*/,"")}
!/^$/ && !/\\tpatch$/ {print $1*4, $2, $3}' "$@" | !/^$/ && !/\\tpatch$/ !/\\treserved$/ {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

View file

@ -4,37 +4,40 @@
# SPDX-License-Identifier: BSD-3-Clause # SPDX-License-Identifier: BSD-3-Clause
# #
# Format: # Format:
# index lib function [patch] # lib function [patch]
# Add "patch" at the end of the line to patch a function. For example: # Add "patch" at the end of the line to patch a function. For example:
# 14 mbedtls mbedtls_memory_buffer_alloc_init patch # mbedtls mbedtls_memory_buffer_alloc_init patch
# Holes can be introduced in the table by using a special keyword "reserved".
# Example:
# reserved reserved
# The jump table will contain an invalid instruction instead of branch
0 rom rom_lib_init rom rom_lib_init
1 fdt fdt_getprop_namelen fdt fdt_getprop_namelen
2 fdt fdt_setprop_inplace fdt fdt_setprop_inplace
3 fdt fdt_check_header fdt fdt_check_header
4 fdt fdt_node_offset_by_compatible fdt fdt_node_offset_by_compatible
5 mbedtls mbedtls_asn1_get_alg mbedtls mbedtls_asn1_get_alg
6 mbedtls mbedtls_asn1_get_alg_null mbedtls mbedtls_asn1_get_alg_null
7 mbedtls mbedtls_asn1_get_bitstring_null mbedtls mbedtls_asn1_get_bitstring_null
8 mbedtls mbedtls_asn1_get_bool mbedtls mbedtls_asn1_get_bool
9 mbedtls mbedtls_asn1_get_int mbedtls mbedtls_asn1_get_int
10 mbedtls mbedtls_asn1_get_tag mbedtls mbedtls_asn1_get_tag
11 mbedtls mbedtls_free mbedtls mbedtls_free
12 mbedtls mbedtls_md mbedtls mbedtls_md
13 mbedtls mbedtls_md_get_size mbedtls mbedtls_md_get_size
14 mbedtls mbedtls_memory_buffer_alloc_init mbedtls mbedtls_memory_buffer_alloc_init
15 mbedtls mbedtls_oid_get_md_alg mbedtls mbedtls_oid_get_md_alg
16 mbedtls mbedtls_oid_get_numeric_string mbedtls mbedtls_oid_get_numeric_string
17 mbedtls mbedtls_oid_get_pk_alg mbedtls mbedtls_oid_get_pk_alg
18 mbedtls mbedtls_oid_get_sig_alg mbedtls mbedtls_oid_get_sig_alg
19 mbedtls mbedtls_pk_free mbedtls mbedtls_pk_free
20 mbedtls mbedtls_pk_init mbedtls mbedtls_pk_init
21 mbedtls mbedtls_pk_parse_subpubkey mbedtls mbedtls_pk_parse_subpubkey
22 mbedtls mbedtls_pk_verify_ext mbedtls mbedtls_pk_verify_ext
23 mbedtls mbedtls_platform_set_calloc_free mbedtls mbedtls_platform_set_snprintf
24 mbedtls mbedtls_platform_set_snprintf mbedtls mbedtls_x509_get_rsassa_pss_params
25 mbedtls mbedtls_x509_get_rsassa_pss_params mbedtls mbedtls_x509_get_sig_alg
26 mbedtls mbedtls_x509_get_sig_alg mbedtls mbedtls_md_info_from_type
27 mbedtls mbedtls_md_info_from_type c exit
28 c exit c atexit
29 c atexit

View file

@ -0,0 +1,17 @@
#
# Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# Platform specific romlib functions can be added or included here.
# The index in the output file will be generated cumulatively in the same
# order as it is given in this file.
# Output file can be found at: $BUILD_DIR/jmptbl.i
#
# Format:
# lib function [patch]
# Example:
# rom rom_lib_init
# fdt fdt_getprop_namelen patch
include ../../lib/romlib/jmptbl.i

View file

@ -0,0 +1,17 @@
#
# Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# Platform specific romlib functions can be added or included here.
# The index in the output file will be generated cumulatively in the same
# order as it is given in this file.
# Output file can be found at: $BUILD_DIR/jmptbl.i
#
# Format:
# lib function [patch]
# Example:
# rom rom_lib_init
# fdt fdt_getprop_namelen patch
include ../../lib/romlib/jmptbl.i