runtime: Mark runtime_goexit function as noinline.
authorIan Lance Taylor <ian@gcc.gnu.org>
Mon, 22 Sep 2014 21:14:43 +0000 (21:14 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Mon, 22 Sep 2014 21:14:43 +0000 (21:14 +0000)
commit76deefd0cd9c4066f2f7000b9b7fb475bddcc5c9
tree082a0c27401b1c808011f524ac48284b258eb287
parentd87fc699839f068bc14ea189bc2aba4afc986a9c
runtime: Mark runtime_goexit function as noinline.

If the compiler inlines this function into kickoff, it may reuse
the TLS block address to load g. However, this is not necessarily
correct, as the call to g->entry in kickoff may cause the TLS
address to change. If the wrong value is loaded for g->status in
runtime_goexit, it may cause a runtime panic.

By marking the function as noinline we prevent the compiler from
reusing the TLS address.

From-SVN: r215484
libgo/runtime/proc.c