On 08/11/2011 01:30 PM, Peter Maydell wrote:
>  Recent compilers look deep into cpu_exec, find longjmp as a noreturn
>  function and decide to smash some stack variables as they won't be used
>  again. This may lead to env becoming invalid after return from setjmp,
>  causing crashes. Fix it by reloading env from cpu_single_env in that
>  case.
Can you give more details of what compiler/platform this was
a problem for? My reading of the C standard is that the compiler
isn't allowed to trash env across this longjmp, because it's
a variable of automatic scope which isn't modified between the
setjmp and the longjmp...

longjmp can destroy any non-volatile variable (-Wclobbered warns about this).

Paolo

Reply via email to