https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111165
Arsen Arsenović <arsen at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |arsen at gcc dot gnu.org --- Comment #24 from Arsen Arsenović <arsen at gcc dot gnu.org> --- (In reply to Thorsten Glaser from comment #6) > dietlibc’s strlen is a horrid SSE nightmare that doesn’t call (f)emms, but > it has a switch global variable __valgrind, if setting that to 1 it uses a > very traditional loop instead, and the registers before/after strlen also > match (only rax has changed), so I’m at a loss. > > Changing the line to… > > sp += strlen(sp) + 1; > > … doesn’t make the problem go away, for some reason. Replacing it with… > > while (*sp++) ; > > … however *does* make it go away. > > I’ll paste a screenlog of single-stepping through the valgrind version of > the code below > (http://www.mirbsd.org/cvs.cgi/contrib/hosted/tg/.gdbinit?rev=HEAD has the > helpful t macro): does setting __valgrind=1 make the issue disappear? is the strlen result correct?