https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95700
Bug ID: 95700 Summary: read-md.c: "missing sentinel in function call" when building gcc with musl Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: iii at linux dot ibm.com Target Milestone: --- I'm trying to bootstrap gcc on gcc301 with --disable-multilib --build=x86_64-alpine-linux-musl. The following error occurs: /home/iii/gcc/regtest-f8a59086423e/build/./prev-gcc/xg++ -B/home/iii/gcc/regtest-f8a59086423e/build/./prev-gcc/ -B/home/iii/gcc/regtest-f8a59086423e/install/x86_64-alpine-linux-musl/bin/ -nostdinc++ -B/home/iii/gcc/regtest-f8a59086423e/build/prev-x86_64-alpine-linux-musl/libstdc++-v3/src/.libs -B/home/iii/gcc/regtest-f8a59086423e/build/prev-x86_64-alpine-linux-musl/libstdc++-v3/libsupc++/.libs -I/home/iii/gcc/regtest-f8a59086423e/build/prev-x86_64-alpine-linux-musl/libstdc++-v3/include/x86_64-alpine-linux-musl -I/home/iii/gcc/regtest-f8a59086423e/build/prev-x86_64-alpine-linux-musl/libstdc++-v3/include -I/home/iii/gcc/regtest-f8a59086423e/libstdc++-v3/libsupc++ -L/home/iii/gcc/regtest-f8a59086423e/build/prev-x86_64-alpine-linux-musl/libstdc++-v3/src/.libs -L/home/iii/gcc/regtest-f8a59086423e/build/prev-x86_64-alpine-linux-musl/libstdc++-v3/libsupc++/.libs -c -g -O2 -fno-checking -gtoggle -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-error=format-diag -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -fno-PIE -I. -Ibuild -I../../gcc -I../../gcc/build -I../../gcc/../include -I../../gcc/../libcpp/include \ -o build/read-md.o ../../gcc/read-md.c ../../gcc/read-md.c: In member function ‘const char* md_reader::join_c_conditions(const char*, const char*)’: ../../gcc/read-md.c:158:58: error: missing sentinel in function call [-Werror=format=] 158 | result = concat ("(", cond1, ") && (", cond2, ")", NULL); | ^ ../../gcc/read-md.c: In member function ‘void md_reader::handle_enum(file_location, bool)’: ../../gcc/read-md.c:947:58: error: missing sentinel in function call [-Werror=format=] 947 | value_name = concat (def->name, "_", name.string, NULL); | ^ ../../gcc/read-md.c: In member function ‘void md_reader::handle_include(file_location)’: ../../gcc/read-md.c:1072:57: error: missing sentinel in function call [-Werror=format=] 1072 | pathname = concat (stackp->fname, sep, filename, NULL); | ^ ../../gcc/read-md.c:1085:47: error: missing sentinel in function call [-Werror=format=] 1085 | pathname = concat (m_base_dir, filename, NULL); | ^ cc1plus: all warnings being treated as errors musl has the following commit: https://git.musl-libc.org/cgit/musl/commit/?id=c8a9c22173f485c8c053709e1dfa0a617cb6be1a, which suggests that C++ (as opposed to plain C) should allow plain (uintptr_t)0 as a sentinel value. gcc wants either a pointer or __null though: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/c-family/c-common.c;h=b1379faa412e3646a443969c0067f5c4fb23e107;hb=929fd91ba975eebf9e57f7f092041271dcaf0c34#l5385 Would it be possible to allow (uintptr_t)0 as a valid sentinel value for C++? Or is it musl that is wrong here?