https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78095
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |NEW Resolution|INVALID |--- --- Comment #5 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- Well, other places are also affected: coregrind/m_debuglog.c 198 static UInt local_sys_write_stderr ( const HChar* buf, Int n ) 199 { 200 volatile Long block[2]; 201 block[0] = (Long)buf; 202 block[1] = (Long)n; 203 __asm__ volatile ( 204 "addi 1,1,-256\n\t" 205 "mr 5,%0\n\t" /* r5 = &block[0] */ 206 "std 5,0(1)\n\t" /* stash on stack */ 207 "li 0,"VG_STRINGIFY(__NR_write)"\n\t" /* %r0 = __NR_write */ 208 "li 3,2\n\t" /* set %r3 = stderr */ 209 "ld 4,0(5)\n\t" /* set %r4 = buf */ 210 "ld 5,8(5)\n\t" /* set %r5 = n */ 211 "sc\n\t" /* write(stderr, buf, n) */ 212 "ld 5,0(1)\n\t" 213 "addi 1,1,256\n\t" 214 "std 3,0(5)\n" /* block[0] = result */ 215 : 216 : "b" (block) 217 : "cc","memory","cr0","ctr", 218 "r0","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12" 219 ); 220 if (block[0] < 0) 221 block[0] = -1; 222 return (UInt)(Int)block[0]; 223 } 224 225 static UInt local_sys_getpid ( void ) 226 { 227 register ULong __res __asm__ ("r3"); 228 __asm__ volatile ( 229 "li 0, %1\n\t" 230 "sc" 231 : "=&r" (__res) 232 : "i" (__NR_getpid) 233 : "cc","memory","cr0","ctr", 234 "r0","r2","r4","r5","r6","r7","r8","r9","r10","r11","r12" 235 ); 236 return (UInt)__res; 237 }