diff options
| author | Rich Felker <dalias@aerifal.cx> | 2012-11-11 13:56:37 -0500 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2012-11-11 13:56:37 -0500 | 
| commit | e9b885ee550e8a3eabc9d11c469baf1cfaf64f55 (patch) | |
| tree | b2b61c6270cf5572df5dabc2581d4ba287d33a91 /src | |
| parent | dc059f03e8277abe3f515f350bd9615416aaa5ef (diff) | |
| download | musl-e9b885ee550e8a3eabc9d11c469baf1cfaf64f55.tar.gz | |
fix clobber of edx in i386 vsyscall asm
this function does not obey the normal calling convention; like a
syscall instruction, it's expected not to clobber any registers except
the return value. clobbering edx could break callers that were reusing
the value cached in edx after the syscall returns.
Diffstat (limited to 'src')
| -rw-r--r-- | src/internal/i386/syscall.s | 3 | 
1 files changed, 2 insertions, 1 deletions
diff --git a/src/internal/i386/syscall.s b/src/internal/i386/syscall.s index 291168c3..2914acee 100644 --- a/src/internal/i386/syscall.s +++ b/src/internal/i386/syscall.s @@ -16,7 +16,8 @@ __vsyscall:  	mov 12(%esp),%edi  	push %eax  	call 1f -2:	pop %ebx +2:	mov %ebx,%edx +	pop %ebx  	pop %ebx  	pop %edi  	ret  | 
