This is the mail archive of the
mailing list for the glibc project.
Re: [PATCH] fix BZ 18116 - build failure on ppc64le: setcontext.S uses power6 mtfsf when not supported
- From: Steven Munroe <munroesj at linux dot vnet dot ibm dot comcom>
- To: Martin Sebor <msebor at redhat dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Mon, 16 Mar 2015 15:37:11 -0500
- Subject: Re: [PATCH] fix BZ 18116 - build failure on ppc64le: setcontext.S uses power6 mtfsf when not supported
- Authentication-results: sourceware.org; auth=none
- References: <550715C8 dot 7020508 at redhat dot com>
- Reply-to: munroesj at linux dot vnet dot ibm dot com
On Mon, 2015-03-16 at 11:41 -0600, Martin Sebor wrote:
> The attached patch fixes a glibc build failure with gcc 5 on
> powerpc64le caused by a recent change in gcc where the compiler
> defines the _ARCH_PWR6 macro when processing assembly files
> but doesn't invoke the assembler in the corresponding machine
> mode (unless it has been explicitly configured to target POWER
> 6 or later). A bug had been filed with gcc for this (65341) but
> was closed as won't fix. Glibc relies on the _ARCH_PWR6 macro
> in a few .S files to make use of Power ISA 2.5 instructions
> (specifically, the four-argument form of the mtfsf insn).
> A similar problem had occurred in the past (bug 10118) but
> the fix that was committed for it didn't anticipate this new
> problem. The fix in the proposed patch introduces the .machine
> "power6" directive unconditionaly, regardless of whether
> _ARCH_PWR6 is defined.
I think this patch is incorrect for the architecture. The 4 operand form
of mtfsf should only be used with processors that support the DFP
So the .machine power6 should not be moved above the #ifdef.
The .machine should be in the #ifdef _ARCH_PWR6 #else "leg" specifically
around the mtfsf 4 operand form following the PPC_FEATURE_HAS_DFP test.