diff options
author | Kito Cheng <kito.cheng@sifive.com> | 2023-04-24 16:13:24 +0800 |
---|---|---|
committer | Kito Cheng <kito.cheng@sifive.com> | 2023-04-24 16:13:24 +0800 |
commit | 5da0026b1bff81d6de1dcf21636a970094b61c20 (patch) | |
tree | fab0fd473088375c4da8e6ee5a141ffd59eb7495 /scripts | |
parent | 22f2d289b82e2e246281464bbd74e71376d99a81 (diff) | |
download | riscv-gnu-toolchain-5da0026b1bff81d6de1dcf21636a970094b61c20.zip riscv-gnu-toolchain-5da0026b1bff81d6de1dcf21636a970094b61c20.tar.gz riscv-gnu-toolchain-5da0026b1bff81d6de1dcf21636a970094b61c20.tar.bz2 |
Add --get-elf-class for march-to-cpu-opt
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/march-to-cpu-opt | 19 | ||||
-rwxr-xr-x | scripts/wrapper/qemu/riscv64-unknown-linux-gnu-run | 2 |
2 files changed, 17 insertions, 4 deletions
diff --git a/scripts/march-to-cpu-opt b/scripts/march-to-cpu-opt index d6a1a0d..752cf03 100755 --- a/scripts/march-to-cpu-opt +++ b/scripts/march-to-cpu-opt @@ -30,6 +30,7 @@ def parse_opt(argv): parser.add_argument('-march', '--with-arch', type=str, dest='march') parser.add_argument('-selftest', action='store_true') parser.add_argument('--get-riscv-tag', type=str) + parser.add_argument('--get-elf-class', type=str) opt = parser.parse_args() return opt @@ -160,11 +161,19 @@ class TestArchStringParse(unittest.TestCase): def selftest(): unittest.main(argv=sys.argv[1:]) -def read_arch_attr (path): +def open_elf(path): try: elffile = elftools.elf.elffile.ELFFile(open(path, 'rb')) except elftools.common.exceptions.ELFError: raise Exception("%s is not ELF file!" % path) + return elffile + +def read_elf_class(path): + elffile = open_elf(path) + return elffile.elfclass + +def read_arch_attr (path): + elffile = open_elf(path) attr_sec = elffile.get_section_by_name(".riscv.attributes") if attr_sec: @@ -200,8 +209,12 @@ def main(argv): if opt.selftest: selftest() return 0 - if (opt.with_elf): - march = read_arch_attr (opt.with_elf) + if (opt.get_elf_class): + elf_class = read_elf_class (opt.get_elf_class) + print (elf_class) + return + if (opt.get_riscv_tag): + march = read_arch_attr (opt.get_riscv_tag) else: march = opt.march cpu_opt = conver_arch_to_qemu_cpu_opt(march) diff --git a/scripts/wrapper/qemu/riscv64-unknown-linux-gnu-run b/scripts/wrapper/qemu/riscv64-unknown-linux-gnu-run index f0943f4..93dfccf 100755 --- a/scripts/wrapper/qemu/riscv64-unknown-linux-gnu-run +++ b/scripts/wrapper/qemu/riscv64-unknown-linux-gnu-run @@ -10,6 +10,6 @@ do shift done -xlen="$(readelf -h $1 | grep 'Class' | cut -d: -f 2 | xargs echo | sed 's/^ELF//')" +xlen="$(march-to-cpu-opt --get-elf-class $1)" QEMU_CPU="$(march-to-cpu-opt --get-riscv-tag $1)" qemu-riscv$xlen -r 5.10 "${qemu_args[@]}" -L ${RISC_V_SYSROOT} "$@" |