diff options
author | Alan Modra <amodra@gmail.com> | 2014-11-20 08:52:46 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2014-11-20 08:57:31 +1030 |
commit | f9dffbf0863b9010a5eece87bd6b36e38c09ffb0 (patch) | |
tree | a110ce314701063a764a1b563e525ddb381ca215 /gold | |
parent | 3f9034c204cf1845d2f2d94f906a8573183831ba (diff) | |
download | binutils-gdb-f9dffbf0863b9010a5eece87bd6b36e38c09ffb0.tar.gz |
Default powerpc64 to --plt-thread-safe for Go
Go is multi-threaded, so use thread-safe plt stubs. __go_go doesn't
actually start threads, but is a convenient libgo function with a
reasonably unique name that is called by all Go executables. (Threads
are started by a static function of libgo, runtime_newosproc, called
by a whole lot of global functions, including runtime_starttheworld
and runtime_main.)
bfd/
* elf64-ppc.c (ppc64_elf_size_stubs): Add __go_go to thread_starters.
gold/
* powerpc.cc (Target_powerpc::do_relax): Add __go_go to thread_starters.
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 4 | ||||
-rw-r--r-- | gold/powerpc.cc | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index ec76ab9d618..20ace5b8c90 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,7 @@ +2014-11-20 Alan Modra <amodra@gmail.com> + + * powerpc.cc (Target_powerpc::do_relax): Add __go_go to thread_starters. + 2014-11-13 H.J. Lu <hongjiu.lu@intel.com> * x86_64.cc (Target_x86_64<size>::Scan::global): Don't make PLT diff --git a/gold/powerpc.cc b/gold/powerpc.cc index 828bc1674c3..500be1fd0db 100644 --- a/gold/powerpc.cc +++ b/gold/powerpc.cc @@ -2720,6 +2720,8 @@ Target_powerpc<size, big_endian>::do_relax(int pass, "GOMP_parallel_loop_runtime_start", "GOMP_parallel_sections", "GOMP_parallel_sections_start", + /* libgo */ + "__go_go", }; if (parameters->options().shared()) |