https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115907
--- Comment #13 from cqwrteur <unlvsur at live dot com> --- (In reply to cqwrteur from comment #12) > (In reply to Andrew Pinski from comment #6) > > There is NO fix inside gcc/libstdc++. > > THe only fix is your build of GCC (which includes the target libraries) > > needs to be build against the oldest version of glibc you support. This is > > something which GCC cannot control. > > THIS IS HOW linking and backwards compatibility works. > > Also if you don't think this is a bug. Explain this to me. Why C++ will use > __isoc23_sscanf but C does not? > > #include <features.h> > #include <stdio.h> > > int main() { > const char *input = "42 Alice"; > int number; > > int result = sscanf(input, "%d", &number); > > printf("Parsed number: %d\n", number); > > } > > g++ -S hello.cc -std=c++11 > g++ -S hello.cc -std=c++14 > g++ -S hello.cc -std=c++17 > g++ -S hello.cc -std=c++20 > g++ -S hello.cc -std=c++23 > > Why they all use __isoc23_sscanf in the latest glibc 2.40. > > If we compile it with gcc > > gcc -S hello.c -std=c11 > gcc -S hello.c -std=c14 > gcc -S hello.c -std=c18 > gcc -S hello.c -std=c23 > Only C23 uses __isoc23_sscanf. > > It does not make any sense tbh. C++98 uses scanf. every other C++ standard else uses __isoc23_sscanf. Only C23 uses __isoc23_sscanf while every other C standard, including c18 uses __isoc99_sscanf. I am using the same GCC 15 toolchain. Why? This is just a bug. Nothing more.