Mark Wielaard bfca72
Mark Wielaard bfca72
    On ppc64*, R2 is the TOC pointer, should not be considered a
Mark Wielaard bfca72
    scratch register, and thus should not be in the clobber list.
Mark Wielaard bfca72
    This is called out in newer GCC releases and triggers a
Mark Wielaard bfca72
    compile time error.
Mark Wielaard bfca72
Mark Wielaard bfca72
    Thusly, remove R2 from the clobber list.
Mark Wielaard bfca72
Mark Wielaard bfca72
diff --git a/coregrind/m_debuglog.c b/coregrind/m_debuglog.c
Mark Wielaard bfca72
index dc6e26d..be77680 100644
Mark Wielaard bfca72
--- a/coregrind/m_debuglog.c
Mark Wielaard bfca72
+++ b/coregrind/m_debuglog.c
Mark Wielaard bfca72
@@ -215,7 +215,7 @@ static UInt local_sys_write_stderr ( const HChar* buf, Int n )
Mark Wielaard bfca72
       :
Mark Wielaard bfca72
       : "b" (block)
Mark Wielaard bfca72
       : "cc","memory","cr0","ctr",
Mark Wielaard bfca72
-        "r0","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12"
Mark Wielaard bfca72
+        "r0","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12"
Mark Wielaard bfca72
    );
Mark Wielaard bfca72
    if (block[0] < 0)
Mark Wielaard bfca72
       block[0] = -1;
Mark Wielaard bfca72
@@ -231,7 +231,7 @@ static UInt local_sys_getpid ( void )
Mark Wielaard bfca72
       : "=&r" (__res)
Mark Wielaard bfca72
       : "i" (__NR_getpid)
Mark Wielaard bfca72
       : "cc","memory","cr0","ctr",
Mark Wielaard bfca72
-        "r0","r2","r4","r5","r6","r7","r8","r9","r10","r11","r12"
Mark Wielaard bfca72
+        "r0","r4","r5","r6","r7","r8","r9","r10","r11","r12"
Mark Wielaard bfca72
    );
Mark Wielaard bfca72
    return (UInt)__res;
Mark Wielaard bfca72
 }
Mark Wielaard bfca72
diff --git a/include/valgrind.h b/include/valgrind.h
Mark Wielaard bfca72
index 6892007..d2e7c38 100644
Mark Wielaard bfca72
--- a/include/valgrind.h
Mark Wielaard bfca72
+++ b/include/valgrind.h
Mark Wielaard bfca72
@@ -2708,7 +2708,7 @@ typedef
Mark Wielaard bfca72
 #define __CALLER_SAVED_REGS                                       \
Mark Wielaard bfca72
    "lr", "ctr", "xer",                                            \
Mark Wielaard bfca72
    "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7",        \
Mark Wielaard bfca72
-   "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",   \
Mark Wielaard bfca72
+   "r0", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",         \
Mark Wielaard bfca72
    "r11", "r12", "r13"
Mark Wielaard bfca72
 
Mark Wielaard bfca72
 /* Macros to save and align the stack before making a function
Mark Wielaard bfca72
@@ -3264,7 +3264,7 @@ typedef
Mark Wielaard bfca72
 #define __CALLER_SAVED_REGS                                       \
Mark Wielaard bfca72
    "lr", "ctr", "xer",                                            \
Mark Wielaard bfca72
    "cr0", "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", "cr7",        \
Mark Wielaard bfca72
-   "r0", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",   \
Mark Wielaard bfca72
+   "r0", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",         \
Mark Wielaard bfca72
    "r11", "r12", "r13"
Mark Wielaard bfca72
 
Mark Wielaard bfca72
 /* Macros to save and align the stack before making a function