lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f99f135ffd1345d29f545938cdaa7973@AcuMS.aculab.com>
Date:   Sun, 20 Mar 2022 18:22:35 +0000
From:   David Laight <David.Laight@...LAB.COM>
To:     'Ammar Faizi' <ammarfaizi2@...weeb.org>, Willy Tarreau <w@....eu>
CC:     "Paul E. McKenney" <paulmck@...nel.org>,
        Alviro Iskandar Setiawan <alviro.iskandar@...weeb.org>,
        Nugraha <richiisei@...il.com>,
        "Linux Kernel Mailing List" <linux-kernel@...r.kernel.org>,
        GNU/Weeb Mailing List <gwml@...r.gnuweeb.org>,
        "x86@...nel.org" <x86@...nel.org>,
        "llvm@...ts.linux.dev" <llvm@...ts.linux.dev>
Subject: RE: [RFC PATCH v1 3/6] tools/nolibc: i386: Implement syscall with 6
 arguments

From: Ammar Faizi
> Sent: 20 March 2022 15:04
> On 3/20/22 8:10 PM, David Laight wrote:
> > From: Ammar Faizi
> >> Sent: 20 March 2022 09:38
> >>
> >> In i386, the 6th argument of syscall goes in %ebp. However, both Clang
> >> and GCC cannot use %ebp in the clobber list and in the "r" constraint
> >> without using -fomit-frame-pointer. To make it always available for any
> >> kind of compilation, the below workaround is implemented.
> >>
> >> For clang (the Assembly statement can't clobber %ebp):
> >>    1) Save the %ebp value to the redzone area -4(%esp).
> >
> > i386 doesn't have a redzone.
> > If you get a signal it will trash -4(%sp)
> 
> OK, I missed that one. Thanks for reviewing this.
> 
...
> >
> > One possibility might be to do:
> > 	push arg6
> > 	push %ebp
> > 	mov  %ebp, 4(%sp)
> 
> Did you mean `mov 4(%esp), %ebp`?
> 
> > 	int  0x80
> > 	pop  %ebp
> > 	add  %esp,4
> 
> I think your solution is better than the xchg approach (with the 3rd line
> fixed). Will take this in for the next version.

It has to be said that although I've been writing x86 asm
for 40 years (and others for longer) I can never actually
remember the exact syntax or order of the operands!
Probably because it is randomly different between assemblers.
You want the 'memory read' instruction: 8b /r.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ