diff --git a/.github/workflows/real-time-cpp-benchmarks.yml b/.github/workflows/real-time-cpp-benchmarks.yml index 91cddd380..1440bbfad 100644 --- a/.github/workflows/real-time-cpp-benchmarks.yml +++ b/.github/workflows/real-time-cpp-benchmarks.yml @@ -154,11 +154,11 @@ jobs: echo 'Add rl78-unknown-elf-g++ path' echo PATH="${{ runner.workspace }}/gcc-15.1.0-rl78-unknown-elf/bin:$PATH" - echo 'Query avr-g++ version' + echo 'Query rl78-unknown-elf-g++ version' echo rl78-unknown-elf-g++ -v echo - echo 'Build avr benchmarks' + echo 'Build rl78-unknown-elf-g++ benchmarks' echo ./target/build/test_app_benchmarks_rl78.sh ${{ matrix.standard }} working-directory: ./ref_app/ @@ -198,6 +198,37 @@ jobs: - name: benchmark_builds-stm32f446 run: ./target/build/test_app_benchmarks_stm32f446.sh ${{ matrix.standard }} working-directory: ./ref_app/ + benchmark_builds-v850: + runs-on: ubuntu-latest + defaults: + run: + shell: bash + strategy: + fail-fast: false + matrix: + standard: [ c++23 ] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: update-tools + run: | + wget --no-check-certificate https://github.com/ckormanyos/gcc-v850-unknown-elf/releases/download/v14.2.0/gcc-14.2.0-v850-unknown-elf.tar.gz + tar -xzf gcc-14.2.0-v850-unknown-elf.tar.gz -C ${{ runner.workspace }} + - name: benchmark_builds-v850 + run: | + echo + echo 'Add v850-unknown-elf-g++ path' + echo + PATH="${{ runner.workspace }}/gcc-14.2.0-v850-unknown-elf/bin:$PATH" + echo 'Query v850-unknown-elf-g++ version' + echo + v850-unknown-elf-g++ -v + echo + echo 'Build v850-unknown-elf-g++ benchmarks' + echo + ./target/build/test_app_benchmarks_v850.sh ${{ matrix.standard }} + working-directory: ./ref_app/ benchmark_single-stm32f446: runs-on: ubuntu-latest defaults: diff --git a/ref_app/src/app/benchmark/app_benchmark.h b/ref_app/src/app/benchmark/app_benchmark.h index 22afe39fb..6e5118049 100644 --- a/ref_app/src/app/benchmark/app_benchmark.h +++ b/ref_app/src/app/benchmark/app_benchmark.h @@ -8,6 +8,16 @@ #ifndef APP_BENCHMARK_2018_10_02_H #define APP_BENCHMARK_2018_10_02_H + #if defined(ATTRIBUTE) + #undef ATTRIBUTE + #endif + + #if defined(_MSC_VER) + #define ATTRIBUTE(a) + #else + #define ATTRIBUTE(a) __attribute__((a)) + #endif + #define APP_BENCHMARK_TYPE_NONE 0 #define APP_BENCHMARK_TYPE_COMPLEX 1 #define APP_BENCHMARK_TYPE_CRC 2 diff --git a/ref_app/src/app/benchmark/app_benchmark_boost_crypt_hasher.cpp b/ref_app/src/app/benchmark/app_benchmark_boost_crypt_hasher.cpp index f423710b4..ab0c8ccaf 100644 --- a/ref_app/src/app/benchmark/app_benchmark_boost_crypt_hasher.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_boost_crypt_hasher.cpp @@ -98,7 +98,7 @@ extern "C" } } -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp b/ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp index e48e26845..c78a102cc 100644 --- a/ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp @@ -89,7 +89,7 @@ auto app::benchmark::run_boost_math_cbrt_tgamma() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_boost_math_cyl_bessel_j.cpp b/ref_app/src/app/benchmark/app_benchmark_boost_math_cyl_bessel_j.cpp index f8b6de828..cbefc450d 100644 --- a/ref_app/src/app/benchmark/app_benchmark_boost_math_cyl_bessel_j.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_boost_math_cyl_bessel_j.cpp @@ -129,7 +129,7 @@ auto app::benchmark::run_boost_math_cbrt_cyl_bessel_j() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_boost_multiprecision_cbrt.cpp b/ref_app/src/app/benchmark/app_benchmark_boost_multiprecision_cbrt.cpp index 8f5e6ecb6..df559bc22 100644 --- a/ref_app/src/app/benchmark/app_benchmark_boost_multiprecision_cbrt.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_boost_multiprecision_cbrt.cpp @@ -90,7 +90,7 @@ auto app::benchmark::run_boost_multiprecision_cbrt() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp b/ref_app/src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp index 46f444943..98a993c4e 100644 --- a/ref_app/src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp @@ -135,7 +135,7 @@ extern "C" } } -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_complex.cpp b/ref_app/src/app/benchmark/app_benchmark_complex.cpp index 0a1c96431..1b3220379 100644 --- a/ref_app/src/app/benchmark/app_benchmark_complex.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_complex.cpp @@ -38,7 +38,7 @@ auto app::benchmark::run_complex() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_crc.cpp b/ref_app/src/app/benchmark/app_benchmark_crc.cpp index a8b3f1973..7cb92a8db 100644 --- a/ref_app/src/app/benchmark/app_benchmark_crc.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_crc.cpp @@ -67,7 +67,7 @@ extern "C" } } -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_detail.h b/ref_app/src/app/benchmark/app_benchmark_detail.h index 0e98f00d6..e2eea1768 100644 --- a/ref_app/src/app/benchmark/app_benchmark_detail.h +++ b/ref_app/src/app/benchmark/app_benchmark_detail.h @@ -49,7 +49,7 @@ { const numeric_type ratio { a / b }; - const numeric_type closeness { fabs(numeric_type { 1 - ratio }) }; + const numeric_type closeness { fabs(static_cast(1 - ratio )) }; result_is_ok = (closeness < tol); } diff --git a/ref_app/src/app/benchmark/app_benchmark_ecc_generic_ecc.cpp b/ref_app/src/app/benchmark/app_benchmark_ecc_generic_ecc.cpp index 2535efd8b..28a39ea13 100644 --- a/ref_app/src/app/benchmark/app_benchmark_ecc_generic_ecc.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_ecc_generic_ecc.cpp @@ -212,7 +212,7 @@ auto my_hardware_random_device_generator() -> unsigned int } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_fast_math.cpp b/ref_app/src/app/benchmark/app_benchmark_fast_math.cpp index c92780701..a47951e43 100644 --- a/ref_app/src/app/benchmark/app_benchmark_fast_math.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_fast_math.cpp @@ -47,7 +47,7 @@ auto app::benchmark::run_fast_math() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_filter.cpp b/ref_app/src/app/benchmark/app_benchmark_filter.cpp index 41601844d..51843ea6b 100644 --- a/ref_app/src/app/benchmark/app_benchmark_filter.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_filter.cpp @@ -52,7 +52,7 @@ auto app::benchmark::run_filter() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_fixed_point.cpp b/ref_app/src/app/benchmark/app_benchmark_fixed_point.cpp index a25c0ce41..c4223850b 100644 --- a/ref_app/src/app/benchmark/app_benchmark_fixed_point.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_fixed_point.cpp @@ -50,7 +50,7 @@ auto app::benchmark::run_fixed_point() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_float.cpp b/ref_app/src/app/benchmark/app_benchmark_float.cpp index 97fb43261..ade1c2b10 100644 --- a/ref_app/src/app/benchmark/app_benchmark_float.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_float.cpp @@ -118,7 +118,7 @@ bool app::benchmark::run_float() } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_hash.cpp b/ref_app/src/app/benchmark/app_benchmark_hash.cpp index ba1ab4183..f59c31ddb 100644 --- a/ref_app/src/app/benchmark/app_benchmark_hash.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_hash.cpp @@ -54,7 +54,7 @@ auto app::benchmark::run_hash() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_hash_sha256.cpp b/ref_app/src/app/benchmark/app_benchmark_hash_sha256.cpp index b573b0028..d6c87fa3b 100644 --- a/ref_app/src/app/benchmark/app_benchmark_hash_sha256.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_hash_sha256.cpp @@ -55,7 +55,7 @@ auto app::benchmark::run_hash_sha256() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_non_std_decimal.cpp b/ref_app/src/app/benchmark/app_benchmark_non_std_decimal.cpp index a210485d2..c0f50e206 100644 --- a/ref_app/src/app/benchmark/app_benchmark_non_std_decimal.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_non_std_decimal.cpp @@ -261,7 +261,7 @@ arithmetic_float_type xarg = static_cast(1234) / 1000; arithmetic_float_type ctrl = static_cast(UINT64_C(343494186080075997)) / UINT64_C(100000000000000000); #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_none.cpp b/ref_app/src/app/benchmark/app_benchmark_none.cpp index 9befed277..3747cd68a 100644 --- a/ref_app/src/app/benchmark/app_benchmark_none.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_none.cpp @@ -17,7 +17,7 @@ auto app::benchmark::run_none() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_pi_agm.cpp b/ref_app/src/app/benchmark/app_benchmark_pi_agm.cpp index 4db744da1..78d41ddae 100644 --- a/ref_app/src/app/benchmark/app_benchmark_pi_agm.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_pi_agm.cpp @@ -137,7 +137,7 @@ auto app::benchmark::run_pi_agm() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_pi_spigot.cpp b/ref_app/src/app/benchmark/app_benchmark_pi_spigot.cpp index ac1b10588..0abc3e797 100644 --- a/ref_app/src/app/benchmark/app_benchmark_pi_spigot.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_pi_spigot.cpp @@ -76,7 +76,7 @@ auto app::benchmark::run_pi_spigot() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_pi_spigot_single.cpp b/ref_app/src/app/benchmark/app_benchmark_pi_spigot_single.cpp index 85ae46b2d..812baadff 100644 --- a/ref_app/src/app/benchmark/app_benchmark_pi_spigot_single.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_pi_spigot_single.cpp @@ -67,7 +67,7 @@ auto app::benchmark::run_pi_spigot_single() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_soft_double_h2f1.cpp b/ref_app/src/app/benchmark/app_benchmark_soft_double_h2f1.cpp index 693724736..32734d8b3 100644 --- a/ref_app/src/app/benchmark/app_benchmark_soft_double_h2f1.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_soft_double_h2f1.cpp @@ -210,7 +210,7 @@ auto app::benchmark::run_soft_double_h2f1() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_trapezoid_integral.cpp b/ref_app/src/app/benchmark/app_benchmark_trapezoid_integral.cpp index 028b704cd..659a6b285 100644 --- a/ref_app/src/app/benchmark/app_benchmark_trapezoid_integral.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_trapezoid_integral.cpp @@ -123,7 +123,7 @@ auto app::benchmark::run_trapezoid_integral() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_wide_decimal.cpp b/ref_app/src/app/benchmark/app_benchmark_wide_decimal.cpp index 9b31a5a44..879632bef 100644 --- a/ref_app/src/app/benchmark/app_benchmark_wide_decimal.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_wide_decimal.cpp @@ -68,7 +68,7 @@ auto app::benchmark::run_wide_decimal() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/app/benchmark/app_benchmark_wide_integer.cpp b/ref_app/src/app/benchmark/app_benchmark_wide_integer.cpp index 4d0cd446f..63975e11b 100644 --- a/ref_app/src/app/benchmark/app_benchmark_wide_integer.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_wide_integer.cpp @@ -146,7 +146,7 @@ auto app::benchmark::run_wide_integer() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) -auto main() -> int; +ATTRIBUTE(used) auto main() -> int; auto main() -> int { diff --git a/ref_app/src/mcal/host/mcal_irq.h b/ref_app/src/mcal/host/mcal_irq.h index 5764d543b..0eee5f010 100644 --- a/ref_app/src/mcal/host/mcal_irq.h +++ b/ref_app/src/mcal/host/mcal_irq.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Copyright Christopher Kormanyos 2007 - 2023. +// Copyright Christopher Kormanyos 2007 - 2025. // Distributed under the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,8 +16,8 @@ auto init(const config_type*) -> void; - inline auto enable_all () -> void { } - inline auto disable_all() -> void { } + inline auto enable_all () noexcept -> void { } + inline auto disable_all() noexcept -> void { } } // namespace irq } // namespace mcal diff --git a/ref_app/target.vcxproj b/ref_app/target.vcxproj index de30ae019..785a2771d 100644 --- a/ref_app/target.vcxproj +++ b/ref_app/target.vcxproj @@ -925,6 +925,7 @@ + diff --git a/ref_app/target.vcxproj.filters b/ref_app/target.vcxproj.filters index 5cb5be092..1ed3d87a6 100644 --- a/ref_app/target.vcxproj.filters +++ b/ref_app/target.vcxproj.filters @@ -687,6 +687,9 @@ build + + build + diff --git a/ref_app/target/build/test_app_benchmarks_v850.sh b/ref_app/target/build/test_app_benchmarks_v850.sh new file mode 100755 index 000000000..dcb8effa9 --- /dev/null +++ b/ref_app/target/build/test_app_benchmarks_v850.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +# +# Copyright Christopher Kormanyos 2020 - 2025. +# Distributed under the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt +# or copy at http://www.boost.org/LICENSE_1_0.txt) +# + +if [[ "$1" != "" ]]; then + STD="$1" +else + STD=c++14 +fi + +GCC=v850-unknown-elf-g++ + +wflags="-Wextra -Wpedantic -Wmain -Wundef -Wconversion -Wsign-conversion -Wunused-parameter -Wuninitialized -Wmissing-declarations -Wshadow -Wunreachable-code -Wswitch-default -Wswitch-enum -Wcast-align -Wmissing-include-dirs -Winit-self -Wfloat-equal -Wdouble-promotion" + +mkdir -p bin + +rm -f ./bin/*.* + +echo run benchmarks with $GCC and language standard $STD +echo + +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_COMPLEX -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_complex.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_complex.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_complex.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CRC -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_crc.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_crc.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_crc.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FAST_MATH -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_fast_math.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_fast_math.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_fast_math.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FILTER -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_filter.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_filter.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_filter.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FIXED_POINT -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_fixed_point.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_fixed_point.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_fixed_point.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FLOAT -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_float.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_float.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_float.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_HASH -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_hash.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_hash.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_hash.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_NONE -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_none.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_none.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_none.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_PI_AGM -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_pi_agm.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_pi_agm.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_pi_agm.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_PI_SPIGOT -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_pi_spigot.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_pi_spigot.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_pi_spigot.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_PI_SPIGOT_SINGLE -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_pi_spigot_single.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_pi_spigot_single.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_pi_spigot_single.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_SOFT_DOUBLE_H2F1 -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_soft_double_h2f1.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_soft_double_h2f1.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_soft_double_h2f1.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_WIDE_DECIMAL -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_wide_decimal.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_wide_decimal.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_wide_decimal.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_WIDE_INTEGER -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_wide_integer.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_wide_integer.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_wide_integer.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_TRAPEZOID_INTEGRAL -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_trapezoid_integral.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_trapezoid_integral.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_trapezoid_integral.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mv850e1 -mlong-calls -mgcc-abi -mtda=0 -mzda=0 -msda=0 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/v850es_fx2 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_HASH_SHA256 -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_hash_sha256.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_hash_sha256.map -T ./target/micros/v850es_fx2/make/v850es_fx2.ld -o ./bin/app_benchmark_hash_sha256.elf + +echo check existences of ELF-files and map-files +echo + +ls -la ./bin/app_benchmark_complex.elf ./bin/app_benchmark_complex.map +result_ls_complex=$? + +ls -la ./bin/app_benchmark_crc.elf ./bin/app_benchmark_crc.map +result_ls_crc=$? + +ls -la ./bin/app_benchmark_fast_math.elf ./bin/app_benchmark_fast_math.map +result_ls_fast_math=$? + +ls -la ./bin/app_benchmark_filter.elf ./bin/app_benchmark_filter.map +result_ls_filter=$? + +ls -la ./bin/app_benchmark_fixed_point.elf ./bin/app_benchmark_fixed_point.map +result_ls_fixed_point=$? + +ls -la ./bin/app_benchmark_float.elf ./bin/app_benchmark_float.map +result_ls_float=$? + +ls -la ./bin/app_benchmark_hash.elf ./bin/app_benchmark_hash.map +result_ls_hash=$? + +ls -la ./bin/app_benchmark_none.elf ./bin/app_benchmark_none.map +result_ls_none=$? + +ls -la ./bin/app_benchmark_pi_agm.elf ./bin/app_benchmark_pi_agm.map +result_ls_pi_agm=$? + +ls -la ./bin/app_benchmark_pi_spigot.elf ./bin/app_benchmark_pi_spigot.map +result_ls_pi_spigot=$? + +ls -la ./bin/app_benchmark_pi_spigot_single.elf ./bin/app_benchmark_pi_spigot_single.map +result_ls_pi_spigot_single=$? + +ls -la ./bin/app_benchmark_soft_double_h2f1.elf ./bin/app_benchmark_soft_double_h2f1.map +result_ls_soft_double_h2f1=$? + +ls -la ./bin/app_benchmark_trapezoid_integral.elf ./bin/app_benchmark_trapezoid_integral.map +result_ls_trapezoid_integral=$? + +ls -la ./bin/app_benchmark_wide_decimal.elf ./bin/app_benchmark_wide_decimal.map +result_ls_wide_decimal=$? + +ls -la ./bin/app_benchmark_wide_integer.elf ./bin/app_benchmark_wide_integer.map +result_ls_wide_integer=$? + +ls -la ./bin/app_benchmark_hash_sha256.elf ./bin/app_benchmark_hash_sha256.map +result_ls_hash_sha256=$? + +echo "result_ls_complex : " "$result_ls_complex" +echo "result_ls_crc : " "$result_ls_crc" +echo "result_ls_fast_math : " "$result_ls_fast_math" +echo "result_ls_filter : " "$result_ls_filter" +echo "result_ls_fixed_point : " "$result_ls_fixed_point" +echo "result_ls_float : " "$result_ls_float" +echo "result_ls_hash : " "$result_ls_hash" +echo "result_ls_none : " "$result_ls_none" +echo "result_ls_pi_agm : " "$result_ls_pi_agm" +echo "result_ls_pi_spigot : " "$result_ls_pi_spigot" +echo "result_ls_pi_spigot_single : " "$result_ls_pi_spigot_single" +echo "result_ls_soft_double_h2f1 : " "$result_ls_soft_double_h2f1" +echo "result_ls_trapezoid_integral : " "$result_ls_trapezoid_integral" +echo "result_ls_wide_decimal : " "$result_ls_wide_decimal" +echo "result_ls_wide_integer : " "$result_ls_wide_integer" +echo "result_ls_hash_sha256 : " "$result_ls_hash_sha256" + +echo verify result_total +echo + +result_total=$((result_ls_complex+result_ls_crc+result_ls_fast_math+result_ls_filter+result_ls_fixed_point+result_ls_float+result_ls_hash+result_ls_none+result_ls_pi_agm+result_ls_pi_spigot+result_ls_pi_spigot_single+result_ls_soft_double_h2f1+result_ls_trapezoid_integral+result_ls_wide_decimal+result_ls_wide_integer+result_ls_hash_sha256)) + +echo "result_total : " "$result_total" + +exit $result_total diff --git a/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/startup/main.cpp b/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/startup/main.cpp index ddab42305..408c039f1 100644 --- a/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/startup/main.cpp +++ b/ref_app/target/micros/xtensa_esp32_s3_riscv_cop/startup/main.cpp @@ -29,7 +29,17 @@ #include -auto main() -> int; +#if defined(ATTRIBUTE) +#undef ATTRIBUTE +#endif + +#if defined(_MSC_VER) +#define ATTRIBUTE(a) +#else +#define ATTRIBUTE(a) __attribute__((a)) +#endif + +ATTRIBUTE(used) auto main() -> int; namespace {