From 623cb9953681fa855d126552bf004f4b3a0be41f Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Fri, 7 Feb 2025 14:33:03 +0100 Subject: [PATCH 01/14] make prepare-instrumentation more flexible --- scripts/prepare_instrumentation.sh | 34 ++++++++++++++++-------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 4ed7098442..8eedf8a0f0 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -95,23 +95,27 @@ fi targetdir=c-code_instrument -currdir=`pwd` scriptdir=`dirname $0` ifdef_list=ifdef_instrument.list sourcedir=$scriptdir/.. -cd $scriptdir + +if [[ (`git rev-parse --is-inside-work-tree` == true )]]; then + sourcedir=`git rev-parse --show-toplevel` +fi + +echo "Instrumenting source-code from $sourcedir ..." rm -Rf $targetdir mkdir $targetdir # copy files from source-dir -cp -R ../lib_* $targetdir -cp -R ../apps $targetdir -cp -R ../Makefile $targetdir +cp -R $sourcedir/lib_* $targetdir +cp -R $sourcedir/apps $targetdir +cp -R $sourcedir/Makefile $targetdir if [ "$PROJECT" = "FLOAT" ]; then - cp -R ../CMakeLists.txt $targetdir + cp -R $sourcedir/CMakeLists.txt $targetdir fi -cp -R ../Workspace_msvc $targetdir +cp -R $sourcedir/Workspace_msvc $targetdir # back up #ifdef-list rm -f $ifdef_list @@ -155,7 +159,7 @@ if coan_exists; then else echo "DEBUGGING" >> $ifdef_list fi -./parse_options_h.sh $parse_options_opt $targetdir/lib_com/options.h >> $ifdef_list +$scriptdir/parse_options_h.sh $parse_options_opt $targetdir/lib_com/options.h >> $ifdef_list if [ $? -ne 0 ]; then exit -1 fi @@ -177,7 +181,7 @@ if coan_exists; then coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,rend,util}/!(wmc_auto*).[hc] fi else - ./strip_defines_cppp.sh $targetdir $ifdef_list + $scriptdir/strip_defines_cppp.sh $targetdir $ifdef_list fi shopt -u extglob @@ -185,23 +189,21 @@ shopt -u extglob find $targetdir -name "*.[ch]" -exec sed -i.bak -e "s/\(0x[0-9a-fA-F]*\)UL/\(\(unsigned long\)\1\)/" \{\} \; # run wmc_tool -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >> /dev/null -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >> /dev/null +"$scriptdir/tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >> /dev/null +"$scriptdir/tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >> /dev/null # ISAR post-renderer and lc3plus sources only need to be instrumented in float code if [ "$PROJECT" = "FLOAT" ]; then for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$targetdir/lib_lc3plus/fft/*.c" >> /dev/null + "$scriptdir/tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$targetdir/lib_lc3plus/fft/*.c" >> /dev/null for bak_file in $targetdir/lib_lc3plus/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$targetdir/lib_lc3plus/fft/*.c" >> /dev/null + "$scriptdir/tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$targetdir/lib_lc3plus/fft/*.c" >> /dev/null else for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >> /dev/null + "$scriptdir/tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >> /dev/null fi # automatically enable #define WMOPS in options.h sed -i.bak -e "s/\/\*[[:space:]]*\(#define[[:space:]]*WMOPS\)[[:space:]]*\*\//\1/g" $targetdir/lib_com/options.h sed -i.bak -e "s/\/\/[[:space:]]*\(#define[[:space:]]*WMOPS\)/\1/g" $targetdir/lib_com/options.h -# return to start dir -cd "$currdir" -- GitLab From 68e96c494a482b3f940d2e70d761e95933394a3d Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Wed, 12 Feb 2025 11:50:57 +0100 Subject: [PATCH 02/14] Fixes to scripts/prepare_instrumentation.sh --- scripts/prepare_instrumentation.sh | 40 ++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 4ed7098442..7b4cc80745 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -140,11 +140,27 @@ if [ "$PROJECT" = "FLOAT" ]; then # Append LC3plus defines to options.h echo " /* LC3plus switches */ + #define ENABLE_HR_MODE + //#define DYNMEM_COUNT + #define CR10_A_ATTENUATION_CURVE_SELECTOR + #define SUBSET_NB + #define SUBSET_WB + #define SUBSET_SSWB + #define SUBSET_SWB + #define SUBSET_FB + #define SUBSET_UB #ifndef OPTIONS_H_LC3_DEFINES #define OPTIONS_H_LC3_DEFINES $lc3plus_defines_filtered #endif /* OPTIONS_H_LC3_DEFINES */ " >>$targetdir/lib_com/options.h + + # Clean out memory tool which breaks wmc_tool instrumentation + perl -i -0777 -pe 's/Dyn_Mem_Deluxe_In\s*\((.*?)\)\s*;/$1/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/Dyn_Mem_Deluxe_Out\s*\([^)]*\)\s*;//sg' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/Dyn_Mem_In\s*\((.*?)\)\s*;/$1/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/Dyn_Mem_Out\s*\([^)]*\)\s*;//sg' $targetdir/lib_lc3plus/*.c + fi # get switches from options.h and append it to $ifdef_list @@ -160,6 +176,12 @@ if [ $? -ne 0 ]; then exit -1 fi +# Floating point code has lib_lc3plus/fft folder while BASOP code does not +fftdir="" +if [ -d $targetdir/lib_lc3plus/fft ]; then + fftdir="$targetdir/lib_lc3plus/fft/*.c" +fi + # strip switches, to remove the macros (turn on extended globing to allow !(pattern*) matching) shopt -s extglob if coan_exists; then @@ -171,7 +193,9 @@ if coan_exists; then if [ "$PROJECT" = "FLOAT" ]; then coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,isar,rend,util,debug}/!(wmc_auto*).[hc] coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/!(wmc_auto*).[hc] - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/fft/!(wmc_auto*).[hc] + if [ -n "$fftdir" ];then + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/fft/!(wmc_auto*).[hc] + fi else # same as first call from if, but without "isar" and "debug" to avoid coan warning coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,rend,util}/!(wmc_auto*).[hc] @@ -185,18 +209,20 @@ shopt -u extglob find $targetdir -name "*.[ch]" -exec sed -i.bak -e "s/\(0x[0-9a-fA-F]*\)UL/\(\(unsigned long\)\1\)/" \{\} \; # run wmc_tool -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >> /dev/null -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >> /dev/null +"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >> output.txt 2>&1 +"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >> output.txt 2>&1 # ISAR post-renderer and lc3plus sources only need to be instrumented in float code if [ "$PROJECT" = "FLOAT" ]; then for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$targetdir/lib_lc3plus/fft/*.c" >> /dev/null + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> output.txt 2>&1 for bak_file in $targetdir/lib_lc3plus/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$targetdir/lib_lc3plus/fft/*.c" >> /dev/null + if [ -n "$fftdir" ];then + for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool + fi + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> output.txt 2>&1 else for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >> /dev/null + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >> output.txt 2>&1 fi # automatically enable #define WMOPS in options.h -- GitLab From e8517d5efc28d175483f04c1f1d766d8811d4f70 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Tue, 18 Feb 2025 10:59:43 +0100 Subject: [PATCH 03/14] update regex to strip Dyn_Mem related functions in LC3plus --- scripts/prepare_instrumentation.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 7b4cc80745..a22b029e70 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -34,7 +34,7 @@ function usage { echo echo "Usage:" echo " $(basename $0) [OPTIONS]" - echo + echo echo " -m MODE one of [FULL|MEM_ONLY]" echo " -p PROJECT one of [FLOAT|BASOP]" exit @@ -140,6 +140,8 @@ if [ "$PROJECT" = "FLOAT" ]; then # Append LC3plus defines to options.h echo " /* LC3plus switches */ + #ifndef OPTIONS_H_LC3_DEFINES + #define OPTIONS_H_LC3_DEFINES #define ENABLE_HR_MODE //#define DYNMEM_COUNT #define CR10_A_ATTENUATION_CURVE_SELECTOR @@ -149,18 +151,16 @@ if [ "$PROJECT" = "FLOAT" ]; then #define SUBSET_SWB #define SUBSET_FB #define SUBSET_UB - #ifndef OPTIONS_H_LC3_DEFINES - #define OPTIONS_H_LC3_DEFINES $lc3plus_defines_filtered #endif /* OPTIONS_H_LC3_DEFINES */ " >>$targetdir/lib_com/options.h - + # Clean out memory tool which breaks wmc_tool instrumentation - perl -i -0777 -pe 's/Dyn_Mem_Deluxe_In\s*\((.*?)\)\s*;/$1/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/Dyn_Mem_Deluxe_In\(((.|\s)*?)\);/$1/g' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/Dyn_Mem_Deluxe_Out\s*\([^)]*\)\s*;//sg' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/Dyn_Mem_In\s*\((.*?)\)\s*;/$1/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/Dyn_Mem_Out\s*\([^)]*\)\s*;//sg' $targetdir/lib_lc3plus/*.c - + perl -i -0777 -pe 's/\sDyn_Mem_In\((.|\s)*?\);//g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/Dyn_Mem_Out\s*\([^)]*\)\s*;/;/sg' $targetdir/lib_lc3plus/*.c + fi # get switches from options.h and append it to $ifdef_list @@ -187,13 +187,13 @@ shopt -s extglob if coan_exists; then # remove WMOPS and MEM_COUNT_DETAILS from the list to preserve the options in the instrumented code sed -i "/-DWMOPS/d" $ifdef_list - sed -i "/-UMEM_COUNT_DETAILS/d" $ifdef_list + sed -i "/-UMEM_COUNT_DETAILS/d" $ifdef_list coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/apps/*.[hc] if [ "$PROJECT" = "FLOAT" ]; then coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,isar,rend,util,debug}/!(wmc_auto*).[hc] coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/!(wmc_auto*).[hc] - if [ -n "$fftdir" ];then + if [ -n "$fftdir" ]; then coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/fft/!(wmc_auto*).[hc] fi else @@ -216,7 +216,7 @@ if [ "$PROJECT" = "FLOAT" ]; then for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> output.txt 2>&1 for bak_file in $targetdir/lib_lc3plus/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - if [ -n "$fftdir" ];then + if [ -n "$fftdir" ]; then for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool fi "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> output.txt 2>&1 -- GitLab From 7ddcb8bc447a71edbc75e6c2c475493e75cc80b3 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Wed, 19 Feb 2025 17:32:03 +0100 Subject: [PATCH 04/14] update regexes to strip LC3plus memory instrumentation --- scripts/prepare_instrumentation.sh | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index a22b029e70..94554878a1 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -132,9 +132,9 @@ if [ "$PROJECT" = "FLOAT" ]; then while IFS=' \n' read -r line; do line=`echo $line | tr -d '\n'` - if grep -wqF "$line" "$targetdir/lib_lc3plus/defines.h"; then - lc3plus_defines_filtered+=$line$'\n' - fi + if grep -wqF "$line" "$targetdir/lib_lc3plus/defines.h"; then + lc3plus_defines_filtered+=$line$'\n' + fi done <<< $lc3plus_defines # Append LC3plus defines to options.h @@ -157,9 +157,14 @@ if [ "$PROJECT" = "FLOAT" ]; then # Clean out memory tool which breaks wmc_tool instrumentation perl -i -0777 -pe 's/Dyn_Mem_Deluxe_In\(((.|\s)*?)\);/$1/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/Dyn_Mem_Deluxe_Out\s*\([^)]*\)\s*;//sg' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/Dyn_Mem_Deluxe_Out\s*\([^)]*\)\s*;/;/sg' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/\sDyn_Mem_In\((.|\s)*?\);//g' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/Dyn_Mem_Out\s*\([^)]*\)\s*;/;/sg' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/cplxMpy32_32_32_2\(\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?)\s*\);/do { $1 = L_sub(Mpy_32_32_0($3, $5), Mpy_32_32_0($4, $6)); $2 = L_add(Mpy_32_32_0($3, $6), Mpy_32_32_0($4, $5)); } while (0);/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/cplxMpy32_32_16_2\(\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?)\s*\);/do { $1 = L_sub(L_shr_pos(Mpy_32_16_lc3plus($3, $5), 1), L_shr_pos(Mpy_32_16_lc3plus($4, $6), 1)); $2 = L_add(L_shr_pos(Mpy_32_16_lc3plus($3, $6), 1), L_shr_pos(Mpy_32_16_lc3plus($4, $5), 1)); } while (0);/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/extractW16/extract_h/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/(UL_l|l|L_|)(sh[lr](_r)?)(?:_pos){1,2}/$1$2/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/scratchAlign\(\s*((?:.|\s)*?)\s*,\s*((?:.|\s)*?)\s*\);/(void *)(((uintptr_t)($1) + ($2) + 0x3) & ~0x3);/g' $targetdir/lib_lc3plus/*.c fi @@ -209,20 +214,20 @@ shopt -u extglob find $targetdir -name "*.[ch]" -exec sed -i.bak -e "s/\(0x[0-9a-fA-F]*\)UL/\(\(unsigned long\)\1\)/" \{\} \; # run wmc_tool -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >> output.txt 2>&1 -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >> output.txt 2>&1 +"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >> wmc_tool_output.txt 2>&1 +"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >> wmc_tool_output.txt 2>&1 # ISAR post-renderer and lc3plus sources only need to be instrumented in float code if [ "$PROJECT" = "FLOAT" ]; then for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> output.txt 2>&1 + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> wmc_tool_output.txt 2>&1 for bak_file in $targetdir/lib_lc3plus/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool if [ -n "$fftdir" ]; then for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool fi - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> output.txt 2>&1 + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> wmc_tool_output.txt 2>&1 else for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >> output.txt 2>&1 + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >> wmc_tool_output.txt 2>&1 fi # automatically enable #define WMOPS in options.h -- GitLab From b7613d2f5192ccb0760a2e7d198b4b8c5ce06554 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 20 Feb 2025 10:43:04 +0100 Subject: [PATCH 05/14] add set -e before WMC tool runs --- scripts/prepare_instrumentation.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 94554878a1..2b1cbb34a5 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -213,7 +213,8 @@ shopt -u extglob # patch code before wmc_tool: replace hexadecimal unsigned long constants (0x...UL) by regular integer constant + cast to unsigned long find $targetdir -name "*.[ch]" -exec sed -i.bak -e "s/\(0x[0-9a-fA-F]*\)UL/\(\(unsigned long\)\1\)/" \{\} \; -# run wmc_tool +# run wmc_tool, exit if the command fails +set -e "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >> wmc_tool_output.txt 2>&1 "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >> wmc_tool_output.txt 2>&1 # ISAR post-renderer and lc3plus sources only need to be instrumented in float code @@ -229,6 +230,7 @@ else for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >> wmc_tool_output.txt 2>&1 fi +set +e # automatically enable #define WMOPS in options.h sed -i.bak -e "s/\/\*[[:space:]]*\(#define[[:space:]]*WMOPS\)[[:space:]]*\*\//\1/g" $targetdir/lib_com/options.h -- GitLab From a3bc23c791744f25ef6546e2e57149b8c5ee25fa Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 20 Feb 2025 12:07:57 +0100 Subject: [PATCH 06/14] rename BASOP_sub_start|end to push|pop_wmops and change #if WMOPS to #ifdef WMOPS --- scripts/prepare_instrumentation.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 2b1cbb34a5..a0e2a27066 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -165,6 +165,9 @@ if [ "$PROJECT" = "FLOAT" ]; then perl -i -0777 -pe 's/extractW16/extract_h/g' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/(UL_l|l|L_|)(sh[lr](_r)?)(?:_pos){1,2}/$1$2/g' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/scratchAlign\(\s*((?:.|\s)*?)\s*,\s*((?:.|\s)*?)\s*\);/(void *)(((uintptr_t)($1) + ($2) + 0x3) & ~0x3);/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/BASOP_sub(_sub)?_start/push_wmops/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/BASOP_sub(_sub)?_end/pop_wmops/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/#if\s*WMOPS/#ifdef WMOPS/g' $targetdir/lib_lc3plus/*.c fi -- GitLab From 47d92d926709ab3529613d5ec87c4d447ce1fb67 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 24 Feb 2025 11:31:47 +0100 Subject: [PATCH 07/14] modify usage of var in prepare_instrumentation.sh --- scripts/prepare_instrumentation.sh | 132 ++++++++++++++--------------- 1 file changed, 64 insertions(+), 68 deletions(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index a0e2a27066..6599457fca 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -40,7 +40,6 @@ function usage { exit } - # default values MODE="FULL" PROJECT="FLOAT" @@ -64,26 +63,24 @@ while getopts "m:p:h" OPTIONS; do ;; esac done -shift $((OPTIND-1)) - +shift $((OPTIND - 1)) wmc_opt="" if [ "$MODE" = "MEM_ONLY" ]; then wmc_opt="-s" fi - -system=`uname -s` -if [[ ($system = "Linux") && (`uname -a` =~ (microsoft|Microsoft|wsl|WSL) ) ]]; then +system=$(uname -s) +if [[ ($system = "Linux") && ($(uname -a) =~ (microsoft|Microsoft|wsl|WSL)) ]]; then system="Linux" fi -coan_exists () { - type coan &> /dev/null ; +coan_exists() { + type coan &>/dev/null } -cppp_exists () { - type cppp/cppp.pl &> /dev/null ; +cppp_exists() { + type cppp/cppp.pl &>/dev/null } if ! (coan_exists || cppp_exists); then @@ -95,8 +92,8 @@ fi targetdir=c-code_instrument -currdir=`pwd` -scriptdir=`dirname $0` +currdir=$(pwd) +scriptdir=$(dirname $0) ifdef_list=ifdef_instrument.list sourcedir=$scriptdir/.. cd $scriptdir @@ -118,30 +115,33 @@ rm -f $ifdef_list touch $ifdef_list # LC3plus-related stuff -> only in float code -if [ "$PROJECT" = "FLOAT" ]; then - # Add LC3plus feature defines to options.h so that they are stripped correctly - # Generate list of active defines in LC3plus defines.h - lc3plus_defines=$( - gcc -E -dM $targetdir/lib_lc3plus/defines.h -I $targetdir/lib_com -I $targetdir/lib_debug | - sed '/^#define [[:alnum:]][[:alnum:]_]\+[[:space:]]*$/! d' | - sed '/#define DEFINES_H/ d' - ) - - # Filter defines that come from outside of the header lib_lc3plus/defines.h - lc3plus_defines_filtered="" - while IFS=' \n' read -r line; - do - line=`echo $line | tr -d '\n'` - if grep -wqF "$line" "$targetdir/lib_lc3plus/defines.h"; then - lc3plus_defines_filtered+=$line$'\n' - fi - done <<< $lc3plus_defines +# Add LC3plus feature defines to options.h so that they are stripped correctly +# Generate list of active defines in LC3plus defines.h +lc3plus_defines=$( + gcc -E -dM $targetdir/lib_lc3plus/defines.h -I $targetdir/lib_com -I $targetdir/lib_debug | + sed '/^#define [[:alnum:]][[:alnum:]_]\+[[:space:]]*$/! d' | + sed '/#define DEFINES_H/ d' +) + +# Filter defines that come from outside of the header lib_lc3plus/defines.h +lc3plus_defines_filtered="" +while IFS=' \n' read -r line; do + line=$(echo $line | tr -d '\n') + if grep -wqF "$line" "$targetdir/lib_lc3plus/defines.h"; then + lc3plus_defines_filtered+=$line$'\n' + fi +done <<<$lc3plus_defines + +# Append LC3plus defines to options.h +echo " +/* LC3plus switches */ +#ifndef OPTIONS_H_LC3_DEFINES +#define OPTIONS_H_LC3_DEFINES +$lc3plus_defines_filtered +" >>$targetdir/lib_com/options.h - # Append LC3plus defines to options.h +if [ "$PROJECT" = "BASOP" ]; then echo " - /* LC3plus switches */ - #ifndef OPTIONS_H_LC3_DEFINES - #define OPTIONS_H_LC3_DEFINES #define ENABLE_HR_MODE //#define DYNMEM_COUNT #define CR10_A_ATTENUATION_CURVE_SELECTOR @@ -151,35 +151,42 @@ if [ "$PROJECT" = "FLOAT" ]; then #define SUBSET_SWB #define SUBSET_FB #define SUBSET_UB - $lc3plus_defines_filtered - #endif /* OPTIONS_H_LC3_DEFINES */ " >>$targetdir/lib_com/options.h +fi + +echo " +#endif /* OPTIONS_H_LC3_DEFINES */ +" >>$targetdir/lib_com/options.h +if [ "$PROJECT" = "BASOP" ]; then # Clean out memory tool which breaks wmc_tool instrumentation perl -i -0777 -pe 's/Dyn_Mem_Deluxe_In\(((.|\s)*?)\);/$1/g' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/Dyn_Mem_Deluxe_Out\s*\([^)]*\)\s*;/;/sg' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/\sDyn_Mem_In\((.|\s)*?\);//g' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/Dyn_Mem_Out\s*\([^)]*\)\s*;/;/sg' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/scratchAlign\(\s*((?:.|\s)*?)\s*,\s*((?:.|\s)*?)\s*\);/(void *)(((uintptr_t)($1) + ($2) + 0x3) & ~0x3);/g' $targetdir/lib_lc3plus/*.c + # expand LC3plus BASOP macros perl -i -0777 -pe 's/cplxMpy32_32_32_2\(\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?)\s*\);/do { $1 = L_sub(Mpy_32_32_0($3, $5), Mpy_32_32_0($4, $6)); $2 = L_add(Mpy_32_32_0($3, $6), Mpy_32_32_0($4, $5)); } while (0);/g' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/cplxMpy32_32_16_2\(\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?)\s*\);/do { $1 = L_sub(L_shr_pos(Mpy_32_16_lc3plus($3, $5), 1), L_shr_pos(Mpy_32_16_lc3plus($4, $6), 1)); $2 = L_add(L_shr_pos(Mpy_32_16_lc3plus($3, $6), 1), L_shr_pos(Mpy_32_16_lc3plus($4, $5), 1)); } while (0);/g' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/extractW16/extract_h/g' $targetdir/lib_lc3plus/*.c perl -i -0777 -pe 's/(UL_l|l|L_|)(sh[lr](_r)?)(?:_pos){1,2}/$1$2/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/scratchAlign\(\s*((?:.|\s)*?)\s*,\s*((?:.|\s)*?)\s*\);/(void *)(((uintptr_t)($1) + ($2) + 0x3) & ~0x3);/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/BASOP_sub(_sub)?_start/push_wmops/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/BASOP_sub(_sub)?_end/pop_wmops/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/#if\s*WMOPS/#ifdef WMOPS/g' $targetdir/lib_lc3plus/*.c - + # perl -i -0777 -pe 's/BASOP_sub(_sub)?_start/push_wmops/g' $targetdir/lib_lc3plus/*.c + # perl -i -0777 -pe 's/BASOP_sub(_sub)?_end/pop_wmops/g' $targetdir/lib_lc3plus/*.c + # perl -i -0777 -pe 's/#if\s*WMOPS/#ifdef WMOPS/g' $targetdir/lib_lc3plus/*.c fi +# remove spaces in preprocessor directives +perl -i -0777 -pe 's/#\s+(if|else|elif|endif|define)/#$1/g' $targetdir/lib_lc3plus/*.[ch] +perl -i -0777 -pe 's/#(ifdef|ifndef)\s{2,}/#ifdef /g' $targetdir/lib_lc3plus/*.[ch] # get switches from options.h and append it to $ifdef_list parse_options_opt="" if coan_exists; then - echo "-UDEBUGGING" >> $ifdef_list + echo "-UDEBUGGING" >>$ifdef_list parse_options_opt="-c" else - echo "DEBUGGING" >> $ifdef_list + echo "DEBUGGING" >>$ifdef_list fi -./parse_options_h.sh $parse_options_opt $targetdir/lib_com/options.h >> $ifdef_list +./parse_options_h.sh $parse_options_opt $targetdir/lib_com/options.h >>$ifdef_list if [ $? -ne 0 ]; then exit -1 fi @@ -198,15 +205,10 @@ if coan_exists; then sed -i "/-UMEM_COUNT_DETAILS/d" $ifdef_list coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/apps/*.[hc] - if [ "$PROJECT" = "FLOAT" ]; then - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,isar,rend,util,debug}/!(wmc_auto*).[hc] - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/!(wmc_auto*).[hc] - if [ -n "$fftdir" ]; then - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/fft/!(wmc_auto*).[hc] - fi - else - # same as first call from if, but without "isar" and "debug" to avoid coan warning - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,rend,util}/!(wmc_auto*).[hc] + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,isar,rend,util,debug}/!(wmc_auto*).[hc] + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/!(wmc_auto*).[hc] + if [ -n "$fftdir" ]; then + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/fft/!(wmc_auto*).[hc] fi else ./strip_defines_cppp.sh $targetdir $ifdef_list @@ -218,26 +220,20 @@ find $targetdir -name "*.[ch]" -exec sed -i.bak -e "s/\(0x[0-9a-fA-F]*\)UL/\(\(u # run wmc_tool, exit if the command fails set -e -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >> wmc_tool_output.txt 2>&1 -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >> wmc_tool_output.txt 2>&1 -# ISAR post-renderer and lc3plus sources only need to be instrumented in float code -if [ "$PROJECT" = "FLOAT" ]; then - for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> wmc_tool_output.txt 2>&1 - for bak_file in $targetdir/lib_lc3plus/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - if [ -n "$fftdir" ]; then - for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - fi - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >> wmc_tool_output.txt 2>&1 -else - for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >> wmc_tool_output.txt 2>&1 +"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >>wmc_tool_output.txt 2>&1 +"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >>wmc_tool_output.txt 2>&1 +for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool +"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >>wmc_tool_output.txt 2>&1 +for bak_file in $targetdir/lib_lc3plus/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool +if [ -n "$fftdir" ]; then + for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool fi +"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >>wmc_tool_output.txt 2>&1 set +e # automatically enable #define WMOPS in options.h sed -i.bak -e "s/\/\*[[:space:]]*\(#define[[:space:]]*WMOPS\)[[:space:]]*\*\//\1/g" $targetdir/lib_com/options.h -sed -i.bak -e "s/\/\/[[:space:]]*\(#define[[:space:]]*WMOPS\)/\1/g" $targetdir/lib_com/options.h +sed -i.bak -e "s/\/\/[[:space:]]*\(#define[[:space:]]*WMOPS\)/\1/g" $targetdir/lib_com/options.h # return to start dir cd "$currdir" -- GitLab From 9324755c9d66dae9c3f57a11c02d719424f4f11d Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 6 Mar 2025 10:00:21 +0100 Subject: [PATCH 08/14] add set -x to prepare_instrumentation.sh --- scripts/prepare_instrumentation.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 6599457fca..9d3e47bf21 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -90,6 +90,8 @@ if ! (coan_exists || cppp_exists); then exit -1 fi +set -x # echo commands before running + targetdir=c-code_instrument currdir=$(pwd) -- GitLab From 050a6ddb5d567e78f6ce166bf99f658a724b0464 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 6 Mar 2025 11:58:46 +0100 Subject: [PATCH 09/14] refactor prepare_instrumentation.sh to remove PROJECT argument --- scripts/prepare_instrumentation.sh | 169 +++++++++++++++-------------- 1 file changed, 88 insertions(+), 81 deletions(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 9d3e47bf21..2682781a7f 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -36,13 +36,11 @@ function usage { echo " $(basename $0) [OPTIONS]" echo echo " -m MODE one of [FULL|MEM_ONLY]" - echo " -p PROJECT one of [FLOAT|BASOP]" exit } # default values MODE="FULL" -PROJECT="FLOAT" while getopts "m:p:h" OPTIONS; do case ${OPTIONS} in @@ -52,12 +50,6 @@ while getopts "m:p:h" OPTIONS; do usage fi ;; - p) - PROJECT=${OPTARG^^} - if [ "$PROJECT" != "FLOAT" -a "$PROJECT" != "BASOP" ]; then - usage - fi - ;; h | *) usage ;; @@ -107,7 +99,7 @@ mkdir $targetdir cp -R ../lib_* $targetdir cp -R ../apps $targetdir cp -R ../Makefile $targetdir -if [ "$PROJECT" = "FLOAT" ]; then +if [ -e ../CMakeLists.txt ]; then cp -R ../CMakeLists.txt $targetdir fi cp -R ../Workspace_msvc $targetdir @@ -116,69 +108,82 @@ cp -R ../Workspace_msvc $targetdir rm -f $ifdef_list touch $ifdef_list -# LC3plus-related stuff -> only in float code -# Add LC3plus feature defines to options.h so that they are stripped correctly -# Generate list of active defines in LC3plus defines.h -lc3plus_defines=$( - gcc -E -dM $targetdir/lib_lc3plus/defines.h -I $targetdir/lib_com -I $targetdir/lib_debug | - sed '/^#define [[:alnum:]][[:alnum:]_]\+[[:space:]]*$/! d' | - sed '/#define DEFINES_H/ d' -) - -# Filter defines that come from outside of the header lib_lc3plus/defines.h -lc3plus_defines_filtered="" -while IFS=' \n' read -r line; do - line=$(echo $line | tr -d '\n') - if grep -wqF "$line" "$targetdir/lib_lc3plus/defines.h"; then - lc3plus_defines_filtered+=$line$'\n' +### LC3plus code related modifications +if [ -d $targetdir/lib_lc3plus ]; then + ISAR=1 + # Floating point code has lib_lc3plus/fft folder while BASOP code does not + if [ -d $targetdir/lib_lc3plus/fft ]; then + LC3PLUS_FFT=1 + lc3plus_fftdir="$targetdir/lib_lc3plus/fft/*.c" + else + lc3plus_fftdir="" + LC3PLUS_FFT=0 fi -done <<<$lc3plus_defines +else + ISAR=0 +fi -# Append LC3plus defines to options.h -echo " -/* LC3plus switches */ -#ifndef OPTIONS_H_LC3_DEFINES -#define OPTIONS_H_LC3_DEFINES -$lc3plus_defines_filtered -" >>$targetdir/lib_com/options.h +if [ $ISAR -eq 1 ]; then + # Generate list of active defines in LC3plus defines.h + lc3plus_defines=$( + gcc -E -dM $targetdir/lib_lc3plus/defines.h -I $targetdir/lib_com -I $targetdir/lib_debug | + sed '/^#define [[:alnum:]][[:alnum:]_]\+[[:space:]]*$/! d' | + sed '/#define DEFINES_H/ d' + ) + + # Filter defines that come from outside of the header lib_lc3plus/defines.h + lc3plus_defines_filtered="" + while IFS=' \n' read -r line; do + line=$(echo $line | tr -d '\n') + if grep -wqF "$line" "$targetdir/lib_lc3plus/defines.h"; then + lc3plus_defines_filtered+=$line$'\n' + fi + done <<<$lc3plus_defines -if [ "$PROJECT" = "BASOP" ]; then + # Append LC3plus defines to options.h echo " - #define ENABLE_HR_MODE - //#define DYNMEM_COUNT - #define CR10_A_ATTENUATION_CURVE_SELECTOR - #define SUBSET_NB - #define SUBSET_WB - #define SUBSET_SSWB - #define SUBSET_SWB - #define SUBSET_FB - #define SUBSET_UB + /* LC3plus switches */ + #ifndef OPTIONS_H_LC3_DEFINES + #define OPTIONS_H_LC3_DEFINES + $lc3plus_defines_filtered " >>$targetdir/lib_com/options.h -fi -echo " -#endif /* OPTIONS_H_LC3_DEFINES */ -" >>$targetdir/lib_com/options.h - -if [ "$PROJECT" = "BASOP" ]; then - # Clean out memory tool which breaks wmc_tool instrumentation - perl -i -0777 -pe 's/Dyn_Mem_Deluxe_In\(((.|\s)*?)\);/$1/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/Dyn_Mem_Deluxe_Out\s*\([^)]*\)\s*;/;/sg' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/\sDyn_Mem_In\((.|\s)*?\);//g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/Dyn_Mem_Out\s*\([^)]*\)\s*;/;/sg' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/scratchAlign\(\s*((?:.|\s)*?)\s*,\s*((?:.|\s)*?)\s*\);/(void *)(((uintptr_t)($1) + ($2) + 0x3) & ~0x3);/g' $targetdir/lib_lc3plus/*.c - # expand LC3plus BASOP macros - perl -i -0777 -pe 's/cplxMpy32_32_32_2\(\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?)\s*\);/do { $1 = L_sub(Mpy_32_32_0($3, $5), Mpy_32_32_0($4, $6)); $2 = L_add(Mpy_32_32_0($3, $6), Mpy_32_32_0($4, $5)); } while (0);/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/cplxMpy32_32_16_2\(\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?)\s*\);/do { $1 = L_sub(L_shr_pos(Mpy_32_16_lc3plus($3, $5), 1), L_shr_pos(Mpy_32_16_lc3plus($4, $6), 1)); $2 = L_add(L_shr_pos(Mpy_32_16_lc3plus($3, $6), 1), L_shr_pos(Mpy_32_16_lc3plus($4, $5), 1)); } while (0);/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/extractW16/extract_h/g' $targetdir/lib_lc3plus/*.c - perl -i -0777 -pe 's/(UL_l|l|L_|)(sh[lr](_r)?)(?:_pos){1,2}/$1$2/g' $targetdir/lib_lc3plus/*.c - # perl -i -0777 -pe 's/BASOP_sub(_sub)?_start/push_wmops/g' $targetdir/lib_lc3plus/*.c - # perl -i -0777 -pe 's/BASOP_sub(_sub)?_end/pop_wmops/g' $targetdir/lib_lc3plus/*.c - # perl -i -0777 -pe 's/#if\s*WMOPS/#ifdef WMOPS/g' $targetdir/lib_lc3plus/*.c -fi -# remove spaces in preprocessor directives -perl -i -0777 -pe 's/#\s+(if|else|elif|endif|define)/#$1/g' $targetdir/lib_lc3plus/*.[ch] -perl -i -0777 -pe 's/#(ifdef|ifndef)\s{2,}/#ifdef /g' $targetdir/lib_lc3plus/*.[ch] + # only for fixed point code + if [ $LC3PLUS_FFT -eq 0 ]; then + # append additional defines for stripping + echo " + #define ENABLE_HR_MODE + //#define DYNMEM_COUNT + #define CR10_A_ATTENUATION_CURVE_SELECTOR + #define SUBSET_NB + #define SUBSET_WB + #define SUBSET_SSWB + #define SUBSET_SWB + #define SUBSET_FB + #define SUBSET_UB + " >>$targetdir/lib_com/options.h + + # clean out memory tool which breaks wmc_tool instrumentation + perl -i -0777 -pe 's/Dyn_Mem_Deluxe_In\(((.|\s)*?)\);/$1/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/Dyn_Mem_Deluxe_Out\s*\([^)]*\)\s*;/;/sg' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/\sDyn_Mem_In\((.|\s)*?\);//g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/Dyn_Mem_Out\s*\([^)]*\)\s*;/;/sg' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/scratchAlign\(\s*((?:.|\s)*?)\s*,\s*((?:.|\s)*?)\s*\);/(void *)(((uintptr_t)($1) + ($2) + 0x3) & ~0x3);/g' $targetdir/lib_lc3plus/*.c + # expand LC3plus specific BASOP macros to avoid instrumentation + perl -i -0777 -pe 's/cplxMpy32_32_32_2\(\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?)\s*\);/do { $1 = L_sub(Mpy_32_32_0($3, $5), Mpy_32_32_0($4, $6)); $2 = L_add(Mpy_32_32_0($3, $6), Mpy_32_32_0($4, $5)); } while (0);/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/cplxMpy32_32_16_2\(\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?),\s*([^,]+?)\s*\);/do { $1 = L_sub(L_shr_pos(Mpy_32_16_lc3plus($3, $5), 1), L_shr_pos(Mpy_32_16_lc3plus($4, $6), 1)); $2 = L_add(L_shr_pos(Mpy_32_16_lc3plus($3, $6), 1), L_shr_pos(Mpy_32_16_lc3plus($4, $5), 1)); } while (0);/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/extractW16/extract_h/g' $targetdir/lib_lc3plus/*.c + perl -i -0777 -pe 's/(UL_l|l|L_|)(sh[lr](_r)?)(?:_pos){1,2}/$1$2/g' $targetdir/lib_lc3plus/*.c + fi + + # remove spaces in preprocessor directives + perl -i -0777 -pe 's/#\s+(if|else|elif|endif|define)/#$1/g' $targetdir/lib_lc3plus/*.[ch] + perl -i -0777 -pe 's/#(ifdef|ifndef)\s{2,}/#ifdef /g' $targetdir/lib_lc3plus/*.[ch] + + echo " + #endif /* OPTIONS_H_LC3_DEFINES */ + " >>$targetdir/lib_com/options.h +fi # ISAR -eq 1 # get switches from options.h and append it to $ifdef_list parse_options_opt="" @@ -193,12 +198,6 @@ if [ $? -ne 0 ]; then exit -1 fi -# Floating point code has lib_lc3plus/fft folder while BASOP code does not -fftdir="" -if [ -d $targetdir/lib_lc3plus/fft ]; then - fftdir="$targetdir/lib_lc3plus/fft/*.c" -fi - # strip switches, to remove the macros (turn on extended globing to allow !(pattern*) matching) shopt -s extglob if coan_exists; then @@ -207,11 +206,14 @@ if coan_exists; then sed -i "/-UMEM_COUNT_DETAILS/d" $ifdef_list coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/apps/*.[hc] - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,isar,rend,util,debug}/!(wmc_auto*).[hc] - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/!(wmc_auto*).[hc] - if [ -n "$fftdir" ]; then - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/fft/!(wmc_auto*).[hc] + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,rend,util,debug}/!(wmc_auto*).[hc] + if [ $ISAR -eq 1 ]; then + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{isar,lib_lc3plus}/!(wmc_auto*).[hc] + if [ $LC3PLUS_FFT -eq 1 ]; then + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/fft/!(wmc_auto*).[hc] + fi fi + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/!(wmc_auto*).[hc] else ./strip_defines_cppp.sh $targetdir $ifdef_list fi @@ -225,12 +227,17 @@ set -e "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >>wmc_tool_output.txt 2>&1 "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >>wmc_tool_output.txt 2>&1 for bak_file in $targetdir/lib_rend/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >>wmc_tool_output.txt 2>&1 -for bak_file in $targetdir/lib_lc3plus/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool -if [ -n "$fftdir" ]; then - for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool +if [ $ISAR -eq 0 ]; then + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >>wmc_tool_output.txt 2>&1 +else + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lib_lc3plus/*.c" "$lc3plus_fftdir" >>wmc_tool_output.txt 2>&1 + for bak_file in $targetdir/lib_lc3plus/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool + if [ -n "$lc3plus_fftdir" ]; then + for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool + fi + # ISAR post rend + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >>wmc_tool_output.txt 2>&1 fi -"tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >>wmc_tool_output.txt 2>&1 set +e # automatically enable #define WMOPS in options.h -- GitLab From cd18155fc7b55bed4185c12ac3d12d27407eda69 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 6 Mar 2025 13:37:06 +0100 Subject: [PATCH 10/14] minor fixes to prepare_instrumentation.sh --- scripts/prepare_instrumentation.sh | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 2682781a7f..c355ec2119 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# (C) 2022-2024 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, +# (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB, # Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD., # Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange, # Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other @@ -109,18 +109,16 @@ rm -f $ifdef_list touch $ifdef_list ### LC3plus code related modifications +ISAR=0 if [ -d $targetdir/lib_lc3plus ]; then ISAR=1 # Floating point code has lib_lc3plus/fft folder while BASOP code does not + lc3plus_fftdir="" + LC3PLUS_FFT=0 if [ -d $targetdir/lib_lc3plus/fft ]; then - LC3PLUS_FFT=1 lc3plus_fftdir="$targetdir/lib_lc3plus/fft/*.c" - else - lc3plus_fftdir="" - LC3PLUS_FFT=0 + LC3PLUS_FFT=1 fi -else - ISAR=0 fi if [ $ISAR -eq 1 ]; then @@ -150,7 +148,7 @@ if [ $ISAR -eq 1 ]; then # only for fixed point code if [ $LC3PLUS_FFT -eq 0 ]; then - # append additional defines for stripping + # append additional defines for stripping for BASOP echo " #define ENABLE_HR_MODE //#define DYNMEM_COUNT @@ -206,9 +204,10 @@ if coan_exists; then sed -i "/-UMEM_COUNT_DETAILS/d" $ifdef_list coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/apps/*.[hc] - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,rend,util,debug}/!(wmc_auto*).[hc] - if [ $ISAR -eq 1 ]; then - coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{isar,lib_lc3plus}/!(wmc_auto*).[hc] + if [ $ISAR -eq 0 ]; then + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,rend,util}/!(wmc_auto*).[hc] + else + coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_{com,dec,enc,isar,lc3plus,rend,util,debug}/!(wmc_auto*).[hc] if [ $LC3PLUS_FFT -eq 1 ]; then coan source --replace --no-transients -E -K --file $ifdef_list $targetdir/lib_lc3plus/fft/!(wmc_auto*).[hc] fi @@ -236,7 +235,7 @@ else for bak_file in $targetdir/lib_lc3plus/fft/*.bak; do mv "$bak_file" "${bak_file%.*}"; done # restore fresh .c files to avoid time-consuming des-instrumentation of files by the WMC tool fi # ISAR post rend - "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$fftdir" >>wmc_tool_output.txt 2>&1 + "tools/$system/wmc_tool" $wmc_opt -m "$targetdir/apps/isar_post_rend.c" "$targetdir/lib_isar/*.c" "$targetdir/lib_lc3plus/*.c" "$lc3plus_fftdir" >>wmc_tool_output.txt 2>&1 fi set +e -- GitLab From 0825f046c9d3f4fc3f9995a7aca72d5b470c5553 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 6 Mar 2025 13:54:05 +0100 Subject: [PATCH 11/14] update targetdir to be always in scripts dir --- scripts/prepare_instrumentation.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index f50ccdcedf..293a7c8220 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -84,9 +84,8 @@ fi set -x # echo commands before running -targetdir=c-code_instrument - scriptdir=$(dirname $0) +targetdir=$scriptdir/c-code_instrument ifdef_list=ifdef_instrument.list sourcedir=$scriptdir/.. -- GitLab From ced54b57ca07568a6e0f50201cdd6008998a66c2 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 6 Mar 2025 15:19:39 +0100 Subject: [PATCH 12/14] remove -p BASOP from getWmops.sh and IvasBuildAndRunChecks.py --- ci/complexity_measurements/getWmops.sh | 15 +++------------ scripts/IvasBuildAndRunChecks.py | 6 ------ scripts/pyivastest/IvasSvnBuilder.py | 12 ------------ 3 files changed, 3 insertions(+), 30 deletions(-) diff --git a/ci/complexity_measurements/getWmops.sh b/ci/complexity_measurements/getWmops.sh index 1a6ff20da2..a33cf5a0a1 100755 --- a/ci/complexity_measurements/getWmops.sh +++ b/ci/complexity_measurements/getWmops.sh @@ -29,7 +29,7 @@ # the United Nations Convention on Contracts on the International Sales of Goods. function usage { - echo "Usage: $0 \"ivas-format(s)\" \"output-format(s)\" \"mode{full(default)|mem_only}\" \"repo{float(default)|basop}\" [wmops_ref_logfile]" + echo "Usage: $0 \"ivas-format(s)\" \"output-format(s)\" \"mode{full(default)|mem_only}\" [wmops_ref_logfile]" exit 1 } @@ -49,17 +49,8 @@ if [ $# -ge 3 ]; then fi fi -repo_arg_script="" -if [ $# -ge 4 ]; then - if [ "$4" = "basop" ]; then - repo_arg_script="--basop" - elif [ "$4" != "float" ]; then - usage - fi -fi - wmops_ref_logfile="" -if [ $# -eq 5 ]; then +if [ $# -eq 4 ]; then wmops_ref_logfile=$5 fi @@ -91,7 +82,7 @@ if [ "$ivas_format" == "OSBA" ]; then fi # instrument and build -./scripts/IvasBuildAndRunChecks.py $mode_arg_script $repo_arg_script -p $config_file --checks COMPLEXITY --create_complexity_tables ${wmopsFilenameFlc} -C $ivas_format $mode_arg -f ${ep} --oc $output_format +./scripts/IvasBuildAndRunChecks.py $mode_arg_script -p $config_file --checks COMPLEXITY --create_complexity_tables ${wmopsFilenameFlc} -C $ivas_format $mode_arg -f ${ep} --oc $output_format ret_val=$? # TODO: only split wmops and ram files diff --git a/scripts/IvasBuildAndRunChecks.py b/scripts/IvasBuildAndRunChecks.py index ffe5cd793b..ba7407401d 100755 --- a/scripts/IvasBuildAndRunChecks.py +++ b/scripts/IvasBuildAndRunChecks.py @@ -114,11 +114,6 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): help="pass the '-s' argument to the wmc tool to only measure memory", action="store_true", ) - self.parser.add_argument( - "--basop", - help="build the basop version for instrumentation", - action="store_true", - ) self.parser.add_argument( "-e", "--enc", @@ -199,7 +194,6 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): formats_fname=self.args["format_file"], max_workers=self.args["max_workers"], mem_only=self.args["wmc_tool_mem_only"], - basop=self.args["basop"], ) else: br.add_check( diff --git a/scripts/pyivastest/IvasSvnBuilder.py b/scripts/pyivastest/IvasSvnBuilder.py index 2c8bbcf3a6..dff0f73823 100644 --- a/scripts/pyivastest/IvasSvnBuilder.py +++ b/scripts/pyivastest/IvasSvnBuilder.py @@ -227,7 +227,6 @@ class IvasBuilder(IvasBaseClass): defines_to_disable=[], instrumented=False, mem_only=False, - basop=False, ): """ @@ -277,9 +276,6 @@ class IvasBuilder(IvasBaseClass): if mem_only: instrument_cmd.append("-m") instrument_cmd.append("mem_only") - if basop: - instrument_cmd.append("-p") - instrument_cmd.append("basop") build_log.write(" ".join(instrument_cmd)) build_log.write("\n") build_result = subprocess.run( @@ -649,7 +645,6 @@ class IvasSvnBuilder(IvasBuilder): defines_to_disable=[], instrumented=False, mem_only=False, - basop=False, ): """ @@ -679,7 +674,6 @@ class IvasSvnBuilder(IvasBuilder): defines_to_disable=defines_to_disable, instrumented=instrumented, mem_only=mem_only, - basop=basop, ) @@ -792,7 +786,6 @@ class IvasBuilderAndRunner(IvasBaseClass): max_workers=1, timeout=None, mem_only=False, - basop=False, ): """ @@ -838,7 +831,6 @@ class IvasBuilderAndRunner(IvasBaseClass): self.build_and_run_dict[cfg_name]["instrumented"] = instrumented self.build_and_run_dict[cfg_name]["mem_only"] = mem_only self.build_and_run_dict[cfg_name]["make_options"] = make_options - self.build_and_run_dict[cfg_name]["basop"] = basop else: self.logger.console("Adding config {}".format(cfg_name), logging.INFO) run_dir = os.path.join(self.builder.src_dir, cfg_name) @@ -884,7 +876,6 @@ class IvasBuilderAndRunner(IvasBaseClass): "mem_only": mem_only, "make_options": make_options, "analyzer": new_analyzer, - "basop": basop, } } self.build_and_run_dict.update(cfg_dict) @@ -1068,7 +1059,6 @@ class IvasBuilderAndRunner(IvasBaseClass): defines_to_disable=cfg["defines_to_disable"], instrumented=cfg["instrumented"], mem_only=cfg["mem_only"], - basop=cfg["basop"], ) self.build_and_run_dict[cfg_name]["runner"].encoder = self.builder.encoder self.build_and_run_dict[cfg_name]["runner"].decoder = self.builder.decoder @@ -1295,7 +1285,6 @@ class IvasBuilderAndRunner(IvasBaseClass): formats_fname="", max_workers=1, mem_only=False, - basop=False, ): """ @@ -1329,7 +1318,6 @@ class IvasBuilderAndRunner(IvasBaseClass): formats_fname=formats_fname, max_workers=max_workers, mem_only=mem_only, - basop=basop, ) # TODO: this is used nowhere, is this still needed? -- GitLab From fcd59920fefbd46ac4e349318ecaa8c8a4026722 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 6 Mar 2025 15:47:49 +0100 Subject: [PATCH 13/14] [fix] perl expression to remove spaces in if[n]def wrongly changing ifndef to ifdef --- scripts/prepare_instrumentation.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 293a7c8220..c52c565846 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -180,7 +180,7 @@ if [ $ISAR -eq 1 ]; then # remove spaces in preprocessor directives perl -i -0777 -pe 's/#\s+(if|else|elif|endif|define)/#$1/g' $targetdir/lib_lc3plus/*.[ch] - perl -i -0777 -pe 's/#(ifdef|ifndef)\s{2,}/#ifdef /g' $targetdir/lib_lc3plus/*.[ch] + perl -i -0777 -pe 's/#(ifdef|ifndef)\s{2,}/#$1 /g' $targetdir/lib_lc3plus/*.[ch] echo " #endif /* OPTIONS_H_LC3_DEFINES */ -- GitLab From 12c6312f50dffc9b6486282d383f6ace6c87bd6c Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Thu, 6 Mar 2025 16:02:24 +0100 Subject: [PATCH 14/14] fix wrong argument in getWmops.sh --- ci/complexity_measurements/getWmops.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/complexity_measurements/getWmops.sh b/ci/complexity_measurements/getWmops.sh index a33cf5a0a1..5c2225f875 100755 --- a/ci/complexity_measurements/getWmops.sh +++ b/ci/complexity_measurements/getWmops.sh @@ -51,7 +51,7 @@ fi wmops_ref_logfile="" if [ $# -eq 4 ]; then - wmops_ref_logfile=$5 + wmops_ref_logfile=$4 fi date=$(date +%Y%m%d) # used for log-file file ending -- GitLab