-Wdiscarded-qualifiers with glibc-2.43 and GCC 15
glibc-2.43 implements const-preserving macros (as part of C23) for stdlib functions (i.e. you pass in a const pointer, you get one back). With say, GCC 15 (which defaults to -std=gnu23), one gets:
x86_64-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I./src -I./src/ext -I./src/ext/trunnel -I./src/trunnel -I./src/ext/ -I./src/ext/equix/hashx/include/ -DSHARE_DATADIR="\"/usr/share\"" -DLOCALSTATEDIR="\"/var\"" -DBINDIR="\"/usr/
bin\"" -DTOR_UNIT_TESTS -DHAVE_MODULE_RELAY=1 -DHAVE_MODULE_DIRAUTH=1 -DHAVE_MODULE_DIRCACHE=1 -DHAVE_MODULE_POW=1 -O3 -march=native -flto=jobserver -fno-semantic-interposition -ggdb3 -pipe -fcf-protection=none -fdiagnos
tics-color=always -fdiagnostics-urls=never -frecord-gcc-switches -fdiagnostics-show-context=3 -Wa,-O2 -Wa,-mtune=znver2 -Warray-bounds --param=ggc-min-expand=120 -Wstrict-aliasing -Wfree-nonheap-object -Wuninitialized -Wmay
be-uninitialized -Wreturn-type -Wbuiltin-declaration-mismatch -Wtautological-compare -Werror=lto-type-mismatch -Werror=strict-aliasing -Werror=odr -Warray-bounds -Wstringop-overread -Wstringop-overflow -Wstringop-truncation
-Wformat-overflow -Wformat-truncation -Wrestrict -ggdb3 -flto-incremental=/var/tmp/portage/lto/net-vpn/tor -flto-partition=cache -flto-compression-level=19 -Wformat -Werror=format-security -fPIC -U_FORTIFY_SOURCE -D_FORTIF
Y_SOURCE=2 -fstack-protector-all -Wstack-protector --param ssp-buffer-size=1 -fasynchronous-unwind-tables -Wall -fno-strict-aliasing @warning_flags -c -o src/core/or/libtor_app_testing_a-versions.o `test -f 'src/core/or/vers
ions.c' || echo './'`src/core/or/versions.c
src/core/or/versions.c: In function ‘tor_version_parse’:
src/core/or/versions.c:289:25: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
289 | char *close_paren = strchr(cp, ')');
| ^~~~~~
[...]
src/feature/dircommon/directory.c: In function ‘http_get_header’:
src/feature/dircommon/directory.c:365:16: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
365 | if ((eos = strchr(cp,'\r')))
| ^
src/lib/fs/path.c: In function ‘expand_filename’:
src/lib/fs/path.c:112:13: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
112 | slash = strchr(filename, '/');
| ^
[...]
src/core/or/versions.c: In function ‘tor_version_parse’:
src/core/or/versions.c:289:25: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
289 | char *close_paren = strchr(cp, ')');
| ^~~~~~
[...]
src/test/test_util.c: In function ‘test_util_find_str_at_start_of_line’:
src/test/test_util.c:4176:17: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
4176 | char *line2 = strchr(long_string,'\n')+1;
| ^~~~~~
src/test/test_util.c:4180:23: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
4180 | char *short_line2 = strchr(short_string,'\n')+1;
| ^~~~~~