In a testdir of module 'argp', built with clang 17 and -fsanitize=address, I see this test failure:
$ cat test-argp-2.sh.log --- expected 2023-12-03 12:52:58.892318895 +0100 +++ out 2023-12-03 12:52:58.904318928 +0100 @@ -27,9 +27,9 @@ -l, --limerick create a limerick -p, --poem create a poem - -?, --help give this help list - --usage give a short usage message - -V, --version print program version + -?, --help Give this help list + --usage Give a short usage message + -V, --version Print program version Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. FAIL test-argp-2.sh (exit status: 1) The background is: - glibc/argp/argp-parse.c uses the capitalized strings. - gnulib/lib/argp-parse.c uses the lowercase strings, since 2006: https://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=59737d835c4622ee24f2b79b50cd12ed28419386 When compiling test-argp with - gcc - gcc with asan - gcc with ubsan - clang - clang with ubsan the program uses gnulib's argp_parse: $ nm --dynamic test-argp|grep argp 000000000000d7b4 D argp_err_exit_status 0000000000007962 T argp_error 000000000000640d T argp_failure 00000000000078af T argp_help 0000000000003b23 T argp_parse 000000000000d0f8 D argp_program_bug_address 000000000000d100 D argp_program_version 000000000000d7f8 B argp_program_version_hook 00000000000078cb T argp_state_help But when compiling it with clang with asan, it uses ASAN-defined symbols that apparently redirect to the glibc symbols: $ nm --dynamic test-argp|grep argp 0000000000045259 W argp_parse 000000000014a2c0 D argp_program_bug_address 000000000014a2a0 D argp_program_version 00000000000a2780 T ___interceptor_argp_parse 00000000000a2780 W __interceptor_argp_parse 0000000000045259 T __interceptor_trampoline_argp_parse What should we do? (A) Ensure that glibc and gnulib argp behave the same: - Push Sergey's lowercase commit into glibc? - Revert Sergey's lowercase commit in gnulib? or (B) Ensure that gnulib overrides glibc: - Use '#define argp_parse rpl_argp_parse' so that clang doesn't insert its interceptor? Bruno