This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [discuss] RE: [PATCH] [1/2] x86_64: Pass -32 to the assembler when compiling the 32bit vsyscall pages
- From: "H. J. Lu" <hjl at lucon dot org>
- To: "Baker, Brian (ISS - Houston)" <Brian dot B at hp dot com>
- Cc: ak at suse dot de, torvalds at osdl dot org, discuss at x86-64 dot org, akpm at osdl dot org, "Altobelli, David" <david dot altobelli at hp dot com>, binutils at sources dot redhat dot com
- Date: Fri, 21 Apr 2006 07:50:01 -0700
- Subject: Re: [discuss] RE: [PATCH] [1/2] x86_64: Pass -32 to the assembler when compiling the 32bit vsyscall pages
- References: <6095103C4F0ACD4FAE3522E0F27ADF42022CEE33@cceexc13.americas.cpqcorp.net>
On Fri, Apr 21, 2006 at 09:25:33AM -0500, Baker, Brian (ISS - Houston) wrote:
> The credit for this should actually go to Dave Altobelli, not myself.
>
> -----Original Message-----
> From: ak@suse.de [mailto:ak@suse.de]
> Sent: Friday, April 21, 2006 2:42 AM
> To: torvalds@osdl.org
> Cc: discuss@x86-64.org; akpm@osdl.org; Baker, Brian (ISS - Houston)
> Subject: [PATCH] [1/2] x86_64: Pass -32 to the assembler when compiling
> the 32bit vsyscall pages
>
>
> This quietens warnings and actually fixes a bug. The unwind tables would
> come out wrong without -32, causing pthread cancellation during them
> to crash in the gcc runtime.
>
> The problem seems to only happen with newer binutils
> (it doesn't happen with 2.16.91.0.2 but happens wit 2.16.91.0.5)
If you believe it is true, please open a bug report at
http://www.sourceware.org/bugzilla/
>
> Thanks to Brian Baker @ HP for test case and initial analysis.
>
> Cc: brian.b@hp.com
>
> Signed-off-by: Andi Kleen <ak@suse.de>
>
> ---
> arch/x86_64/ia32/Makefile | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> Index: linux/arch/x86_64/ia32/Makefile
> ===================================================================
> --- linux.orig/arch/x86_64/ia32/Makefile
> +++ linux/arch/x86_64/ia32/Makefile
> @@ -27,5 +27,5 @@ $(obj)/vsyscall-sysenter.so $(obj)/vsysc
> $(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE
> $(call if_changed,syscall)
>
> -AFLAGS_vsyscall-sysenter.o = -m32
> -AFLAGS_vsyscall-syscall.o = -m32
> +AFLAGS_vsyscall-sysenter.o = -m32 -Wa,-32
> +AFLAGS_vsyscall-syscall.o = -m32 -Wa,-32
I can't reproduce it with binutils 2.16.91.0.5. Unless you have a bad
gcc driver, -m32 will pass --32 to assembler, which is the same as -32.
H.J.