• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2# Requires:
3#   sudo apt install gcc-arm-linux-gnueabihf gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu
4
5set -e
6set -u
7
8cd "${0%/*}"
9
10declare -ar FLAGS=(
11  '-std=c89'
12  '-pedantic'
13  '-Wall'
14  '-Werror'
15  '-Werror=implicit-fallthrough'
16  '-Werror=strict-prototypes'
17  '-Wsign-compare'
18  '-Wsign-conversion'
19  '-Wunused-parameter'
20  '-Wuninitialized'
21  '-Os'
22  '-fomit-frame-pointer'
23)
24
25#                         __aeabi_uidiv __gnu_thumb1_case_uhi __gnu_thumb1_case_uqi
26# t=armv6-m         #2820 1             2                     2
27# t=armv6s-m        #2820 1             2                     2
28# t=armv7           #2868 1             0                     0
29  t=armv7-m         #2876 0             0                     0
30# t=armv7e-m        #2880 0             0                     0
31# t=armv8-m.base    #2760 0             2                     2
32# t=armv8-m.main    #2868 0             0                     0
33# t=armv8.1-m.main  #2924 0             0                     0
34arm-linux-gnueabi-gcc -march="${t}" "${FLAGS[@]}" apf_interpreter.c -c -o apf_interpreter.armt.o
35# This dumps external calls:
36#   llvm-objdump -d -r apf_interpreter.armt.o | grep -E --color=yes -A1 'f7ff fffe' | grep -E R_ARM_THM_CALL | grep -Ev $'\t(memcmp|memcpy|memset|apf_allocate_buffer|apf_transmit_buffer|apf_internal_[_a-z]+)$' || :
37
38arm-linux-gnueabi-gcc "${FLAGS[@]}" apf_interpreter.c -c -o apf_interpreter.arm.o
39aarch64-linux-gnu-gcc "${FLAGS[@]}" apf_interpreter.c -c -o apf_interpreter.aarch64.o
40clang -m32 "${FLAGS[@]}" -Wnullable-to-nonnull-conversion -Wthread-safety apf_interpreter.c -c -o apf_interpreter.x86.o
41clang -m64 "${FLAGS[@]}" -Wnullable-to-nonnull-conversion -Wthread-safety apf_interpreter.c -c -o apf_interpreter.x86-64.o
42
43size apf_interpreter.armt.o
44size apf_interpreter.arm.o     | tail -n +2
45size apf_interpreter.aarch64.o | tail -n +2
46size apf_interpreter.x86.o     | tail -n +2
47size apf_interpreter.x86-64.o  | tail -n +2
48