http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58580
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |manu at gcc dot gnu.org --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Also fixed with -fno-diagnostic-show-caret. ltrace shows fputs("test.cpp:3:1: warning: null char"..., 0x7fbaa148c700test.cpp:3:1: warning: null character(s) preserved in literal [enabled by default] ) = 1 fflush(0x7fbaa148c700) = 0 memcpy(0x0378c04f, """, 3) = 0x0378c04f memcpy(0x037f2a40, "\003", 16) = 0x037f2a40 __errno_location() = 0x7fbaa21db698 malloc(19) = 0x0375dc60 memcpy(0x0375dc60, "enabled by default", 19) = 0x0375dc60 memcpy(0x7ffff4e3bc60, "null character(s) preserved in l"..., 38) = 0x7ffff4e3bc60 memcpy(0x7ffff4e3bc86, " ", 1) = 0x7ffff4e3bc86 memcpy(0x7ffff4e3bc87, "[", 1) = 0x7ffff4e3bc87 memcpy(0x7ffff4e3bc88, "enabled by default", 18) = 0x7ffff4e3bc88 memcpy(0x7ffff4e3bc9a, "]", 1) = 0x7ffff4e3bc9a free(0x0375dc60) = <void> memset(0x7ffff4e3b990, '\000', 240) = 0x7ffff4e3b990 vasprintf(0x7ffff4e3bae8, 0x19eed82, 0x7ffff4e3bad0, 0x19eed82, 1) = 23 strlen("null character(s) preserved in l"...) = 59 strlen("test.cpp:4:1: warning: ") = 23 memcpy(0x03784ac0, "test.cpp:4:1: warning: ", 23) = 0x03784ac0 memcpy(0x03784ad7, "null character(s) preserved in l"..., 59) = 0x03784ad7 fopen("test.cpp", "r") = 0x37c07c0 fgets("", -1575075836, 0x37c08a0) = 0x7fbaa040f010 realloc(0x7fbaa040f010, 13107200) = 0x7fba9f78e010 fgets("", -1575075832, 0x37c08a0) = 0x7fba9f78e011 realloc(0x7fba9f78e010, 26214400) = 0x7fba9de8d010 fgets("", -1575075828, 0x37c08a0) = 0x7fba9de8d012 realloc(0x7fba9de8d010, 52428800) = 0x7fba9ac8c010 fgets("", -1575075824, 0x37c08a0) = 0x7fba9ac8c013 realloc(0x7fba9ac8c010, 104857600) = 0x7fba9488b010 fgets("", -1575075820, 0x37c08a0) = 0x7fba9488b014 realloc(0x7fba9488b010, 209715200) = 0x7fba8808a010 fgets("\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"..., -1575075840, 0x37c08a0) = NULL fgets("\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"..., -1575075840, 0x37c08a0) = NULL fclose(0x37c07c0) = 0 so it seems to go completely bollocks re-reading from the source for displaying the offending line.