diff options
author | Rich Felker <dalias@aerifal.cx> | 2018-08-29 12:48:42 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2018-08-29 12:48:42 -0400 |
commit | 0ec49dab6794166d67fae4764ce7fdea42ea6103 (patch) | |
tree | b2904c92d52d5a884c7e3203b6906b446403702d /src/thread/thrd_join.c | |
parent | 9cdaf1a86bf7790c8dec749118392ee78101ee37 (diff) | |
download | musl-0ec49dab6794166d67fae4764ce7fdea42ea6103.tar.gz musl-0ec49dab6794166d67fae4764ce7fdea42ea6103.tar.xz musl-0ec49dab6794166d67fae4764ce7fdea42ea6103.zip |
fix async thread cancellation on powerpc64
entering the local entry point for __cancel from __cp_cancel is valid if __cp_cancel was reached from __syscall_cp, since both are in libc and share the same TOC pointer, but it is not valid if __cp_cancel was reached when cancel_handler rewrote the program counter for asynchronous cancellation of code outside libc. to ensure __cancel is entered with a valid TOC pointer, recompute the correct value in a PC-relative manner before jumping.
Diffstat (limited to 'src/thread/thrd_join.c')
0 files changed, 0 insertions, 0 deletions