]> git.ipfire.org Git - thirdparty/gcc.git/commit
runtime: Mark runtime_goexit function as noinline.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Sep 2014 21:14:43 +0000 (21:14 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Sep 2014 21:14:43 +0000 (21:14 +0000)
commitc459ce0fde82ae429a4e666ef610ee7cf993026d
tree082a0c27401b1c808011f524ac48284b258eb287
parent47d6df078c0a608f7b018a9026de05b6079e8189
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215484 138bc75d-0d04-0410-961f-82ee72b054a4
libgo/runtime/proc.c