Here are their source codes: https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=sysdeps/unix/sysv/linux/x86_64/getcontext.S;hb=HEAD https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=sysdeps/x86_64/setjmp.S;hb=HEAD
As you can see, getcontext also saves floating point context and registers r8 and r9 which setjmp does not. What is the reason for this?
It seems like both routines are wrong. Setjmp should not ignore floating point state and getcontext should not save r8,r9.
Reference:
http://www.boost.org/doc/libs/1_57_0/libs/context/doc/html/context/rationale/x86_and_floating_point_env.html