In the Bismon static source code analyzer (GPLv3+ licensed, git commit 49dd1bd232854a) for embedded C and C++ code (using a plugin for GCC 10 straight compiler on Debian bookworm for x86-64) I have a test Bash script Hello-World-Analyze which uses a GNU array variable bismon_hello_args.
That variable is declared (at line 56) using:
declare -a bismon_hello_args
and I would like to fill that bismon_hello_args array variable from script arguments starting with --bismon, and later invoke the bismon executable (compiled from C source files) with several arguments to its main being the elements of that bismon_hello_args array variable.
So if my Hello-World-Analyze script is invoked as Hello-World-Analyze --bismon-debug-after-load --bismon-anon-web-cookie=/tmp/bismoncookie --gcc=/usr/local/bin/gcc-11 I want the bismon ELF executable to be started with two arguments (so argc=3, in C parlance) : --bismon-debug-after-load followed by --bismon-anon-web-cookie=/tmp/bismoncookie
For some reason, the following code (lines 58 to 64) in that Hello-World-Analyze script:
for f in "$@"; do
case "$f" in
--bismon*) bismon_hello_args+=$f;;
--asm) export BISMON_PLUGIN_ASMOUT=/tmp/gcc10_metaplugin_BMGCC.s;;
--gcc=*) export BISMON_GCC=$(echo $f | /bin/sed -e s/--gcc=//);;
esac
done
does not work as expected. It should be (and was in a previous git commit e8c3d795bc9dc8) later followed with
./bismon $bismon_hello_args &
But debugging prints show that bismon is invoked with argc=2 so one long argv[1] program argument...
What am I doing wrong?