Am 17.09.2013 19:17, schrieb Jan Kiszka: > On 2013-09-17 19:03, Stefan Weil wrote: >> 'cpu' and 'env' are not modified after sigsetjmp. Therefore they will >> still have their last value after longjmp restored the stack context. >> >> The code which should "reload" both variables causes a compiler warning: >> >> cpu-exec.c:204:15: error: >> variable ‘cpu’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] >> cpu-exec.c:202:28: error: >> argument ‘env’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] >> >> Remove this unneeded code. >> >> Signed-off-by: Stefan Weil <s...@weilnetz.de> >> --- >> >> Jan, >> >> could you please review this patch which removes code added by you earlier? >> I have run tests with the old code and assertions to see whether the values >> were really smashed. They never were, and from the documentation of setjmp >> I'd not expect that they ever might be. >> >> The patch is needed to fix a compiler warning with -Wextra. > > This used to fix a real, deadly crash. Therefore a reversion can't be > trivial by definition. Unfortunately, I don't recall which compiler > version and concrete scenario were involved back then. > > Anyway - did anything change in the code structure around since then? > Does anything ensure that this "optimization" is not longer performed by > the compiler? > > I'll try to understand the warnings meanwhile. > > Jan >
The code changed a lot since that time, e.g. setjmp was replaced by sigsetjmp. Maybe you had a broken compiler which could be forced to do the right thing by that code? Stefan