Re: Build failures in powerpc ptrace selftests
From: Seth Forshee <hidden>
Date: 2017-08-31 12:28:05
On Thu, Aug 31, 2017 at 01:41:47AM +0800, Simon Guo wrote:
Hi Seth, On Wed, Aug 30, 2017 at 08:05:25AM -0500, Seth Forshee wrote:quoted
With gcc 7 from Ubuntu 17.10 I'm getting the follwing error building the ptrace selftests for powerpc: ptrace-tm-vsx.c: In function ‘tm_vsx’: ptrace-tm-vsx.c:42:2: error: PIC register clobbered by ‘r2’ in ‘asm’ asm __volatile__( ^~~ make[1]: *** [ptrace-tm-vsx] Error 1 ptrace-tm-spd-vsx.c: In function ‘tm_spd_vsx’: ptrace-tm-spd-vsx.c:55:2: error: PIC register clobbered by ‘r2’ in ‘asm’ asm __volatile__( ^~~ make[1]: *** [ptrace-tm-spd-vsx] Error 1 ptrace-tm-spr.c: In function ‘tm_spr’: ptrace-tm-spr.c:46:2: error: PIC register clobbered by ‘r2’ in ‘asm’ asm __volatile__( ^~~ Best I can tell gcc now considers any inline asm which clobbers r2 an error, and I get it even with -fno-pic. I'm not familiar with powerpc asm, but it's not obvious to me why r2 is in the clobber list for any of these.Thanks for reporting this issue. In PPC ABI, r2 is used as TOC pointer and it might be changed by inter-module function calls. I believe that is the reason why it was put into clobber list originally. In our case, dual entry is used to save TOC pointer (r2) update for function calls within one module. There is no r2 change and I think r2 can be moved out of clobber list. I don't have a GCC-7 environment. If possible, could you help to try following patch?
Your patch fixes the build errors for me. Thanks! Seth