Hi Zhangjin, On Tue, Jul 25, 2023 at 07:02:55PM +0800, Zhangjin Wu wrote: > Btw, have checked "=r" instead of "=a" works on i386 too for we already > bind the _ret variable with "RET" register, but still need to check if > "=a" is necessary? I need to tell you that syscall6() for i386 can't use "r" and "=r" because there was a historical bug that made GCC stuck in a loop forever when compiling the nolibc code. It's already fixed in the latest version of GCC, but we should still support older compilers. Ref: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105032 I discovered that bug in 2022 in the latest version of GCC at that time, so it's pretty new, and those buggy versions are very likely still in the wild today. -- Ammar Faizi