Hi, Jakub Wilk wrote: > In my tests (on a tiny test program) -fno-builtin-strcpy did the trick...
There are other functions where constant arguments get treated that way. GNU xorriso-1.4.4 would need : export CFLAGS="-fno-builtin-strcpy -fno-builtin-sprintf -fno-builtin-strcat -fno-builtin-strncpy" One would have to check the quite long list on https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html for more candidates if plain -fno-builtin is not acceptable. -------------------------------------------------------------------------- Long story: I tested on Debian 8 and now verified on Sid VM that -fno-builtin-strcpy does not suffice for wget http://www.gnu.org/software/xorriso/xorriso-1.4.4.tar.gz tar xzf xorriso-1.4.4.tar.gz cd xorriso-1.4.4 export CFLAGS="-fno-builtin-strcpy" ./configure && make (The warning "-Wlogical-not-parentheses" is harmless and meanwhile silenced upstream.) Around line 200 of strings xorriso/xorriso | less i see Program H error: PH ermstackH After export CFLAGS="-fno-builtin" make clean ./configure && make i see Program error: Permstack_pop() : cannot find stopper from xorriso/aux_objects.c sprintf(xorriso->info_text, "Program error: Permstack_pop() : cannot find stopper"); So constant sprintf() format strings get optimized, too. export CFLAGS="-fno-builtin-strcpy -fno-builtin-sprintf" make clean ./configure && make yields chopped text from e.g. strcat(name, "md5_mismatch"); strncpy(out_text, "'xorriso: TEXT MUCH TOO LONG ... ",33); -------------------------------------------------------------------------- Have a nice day :) Thomas