diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index 9ed4d720b23fe99595e4f4a31e1e7991b8f55f84..c9281e707d96895aa0cd58d8bf85b82071a25539 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-15  Andreas Tobler  <a.tobler@schweiz.ch>
+
+	PR target/14931
+	* powerpc_darwin_mach_dep.s (_GC_push_regs): Change to new stub style.
+
 2004-08-13  Bryce McKinlay  <mckinlay@redhat.com>
 
 	* configure.ac (gc_cflags): Add -Iinclude.
diff --git a/boehm-gc/powerpc_darwin_mach_dep.s b/boehm-gc/powerpc_darwin_mach_dep.s
index 92f2c93ca8d7ead98539a97f5a688c0affa5537e..83f06cffca58d600070af890bc69e4f4e95f9116 100644
--- a/boehm-gc/powerpc_darwin_mach_dep.s
+++ b/boehm-gc/powerpc_darwin_mach_dep.s
@@ -64,7 +64,8 @@ _GC_push_regs:
 ; PIC stuff, generated by GCC
 
 .data
-.picsymbol_stub
+.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
+	.align 2
 L_GC_push_one$stub:
 	.indirect_symbol _GC_push_one
 	mflr r0
@@ -73,9 +74,8 @@ L0$_GC_push_one:
 	mflr r11
 	addis r11,r11,ha16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
 	mtlr r0
-	lwz r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
+	lwzu r12,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)(r11)
 	mtctr r12
-	addi r11,r11,lo16(L_GC_push_one$lazy_ptr-L0$_GC_push_one)
 	bctr
 .data
 .lazy_symbol_pointer