I'm testing against the latest code in git "151b743714382120dbe0dee0e0eeb75826ef5b3a"
I found when using this config file:
adapter driver cmsis-dap
cmsis-dap vid_pid 0x35b0 0x0001
cmsis-dap quirk on
transport select jtag
adapter speed 25000000
It segfaults here:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000416233 in cmsis_dap_handle_quirk_command (cmd=0x7fffffffd810) at src/jtag/drivers/cmsis_dap.c:2232
2232 COMMAND_PARSE_ENABLE(CMD_ARGV[0], cmsis_dap_handle->quirk_mode);
Missing separate debuginfos, use: dnf debuginfo-install capstone-4.0.2-15.fc39.x86_64 glibc-2.38-14.fc39.x86_64 hidapi-0.14.0-2.fc39.x86_64 libcap-2.48-9.fc39.x86_64 libftdi-1.5-10.fc39.x86_64 libgcc-13.2.1-6.fc39.x86_64 libgpiod-2.0.2-1.fc39.x86_64 libjaylink-0.3.0-3.fc39.x86_64 libusb1-1.0.26-3.fc39.x86_64 systemd-libs-254.7-1.fc39.x86_64
(gdb) bt
#0 0x0000000000416233 in cmsis_dap_handle_quirk_command (cmd=0x7fffffffd810) at src/jtag/drivers/cmsis_dap.c:2232
#1 0x0000000000489785 in exec_command (argv=0x80aef0, argc=2, c=0x80b650, context=0x7d82a0, interp=0x7d8300)
at src/helper/command.c:520
#2 jim_command_dispatch (interp=0x7d8300, argc=2, argv=0x80aef0) at src/helper/command.c:931
#3 0x00000000005d32cf in JimInvokeCommand ()
#4 0x0000000700000006 in ?? ()
#5 0x000000000080af90 in ?? ()
#6 0x00000003007d8300 in ?? ()
#7 0x00007fffffffdb20 in ?? ()
#8 0x000000000064bec2 in ?? ()
#9 0x0000000000000005 in ?? ()
#10 0x0000000000000000 in ?? ()
~~~~
In gdb I found "cmsis_dap_handle" is null when this function is called:
COMMAND_HANDLER(cmsis_dap_handle_quirk_command)
{
if (CMD_ARGC > 1)
return ERROR_COMMAND_SYNTAX_ERROR;
if (CMD_ARGC == 1)
COMMAND_PARSE_ENABLE(CMD_ARGV[0], cmsis_dap_handle->quirk_mode);
command_print(CMD, "CMSIS-DAP quirk workarounds %s",
cmsis_dap_handle->quirk_mode ? "enabled" : "disabled");
return ERROR_OK;
}
~~~
I'm not familiar with the command line parsing to know the proper fix for this, but hard coding it after the cmsis_dap_handle is set works.
Thanks for reporting.
Please test 8641: drivers/cmsis_dap: fix segfault in quirk mode setting | https://review.openocd.org/c/openocd/+/8641