|
From: <sv...@va...> - 2005-10-02 23:24:49
|
Author: sewardj
Date: 2005-10-01 20:12:08 +0100 (Sat, 01 Oct 2005)
New Revision: 4841
Log:
ppc32-linux only: redirect strcmp right from the start.
Modified:
trunk/coregrind/m_redir.c
trunk/coregrind/m_trampoline.S
trunk/coregrind/pub_core_trampoline.h
Modified: trunk/coregrind/m_redir.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_redir.c 2005-09-30 16:09:12 UTC (rev 4840)
+++ trunk/coregrind/m_redir.c 2005-10-01 19:12:08 UTC (rev 4841)
@@ -360,7 +360,6 @@
0xFFFFFFFFFF600000ULL,
(Addr)&VG_(amd64_linux_REDIR_FOR_vgettimeofday)=20
);
-
add_redirect_addr_to_addr(=20
0xFFFFFFFFFF600400ULL,
(Addr)&VG_(amd64_linux_REDIR_FOR_vtime)=20
@@ -372,6 +371,10 @@
"soname:ld.so.1", "strlen",
(Addr)&VG_(ppc32_linux_REDIR_FOR_strlen)
); =20
+ add_redirect_sym_to_addr(
+ "soname:ld.so.1", "strcmp",
+ (Addr)&VG_(ppc32_linux_REDIR_FOR_strcmp)
+ ); =20
=20
#else
# error Unknown platform
Modified: trunk/coregrind/m_trampoline.S
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_trampoline.S 2005-09-30 16:09:12 UTC (rev 4840)
+++ trunk/coregrind/m_trampoline.S 2005-10-01 19:12:08 UTC (rev 4841)
@@ -159,16 +159,53 @@
lbz 4,0(3)
li 9,0
cmpwi 0,4,0
- beq- 0,.L8
-.L9:
+ beq- 0,.L18
+.L19:
lbzu 5,1(3)
addi 9,9,1
cmpwi 0,5,0
- bne+ 0,.L9
-.L8:
+ bne+ 0,.L19
+.L18:
mr 3,9
blr
=20
+/* Ditto strcmp */
+.global VG_(ppc32_linux_REDIR_FOR_strcmp)
+VG_(ppc32_linux_REDIR_FOR_strcmp):
+.L20:
+ lbz 0,0(3)
+ cmpwi 7,0,0
+ bne- 7,.L21
+ lbz 0,0(4)
+ li 11,0
+ cmpwi 7,0,0
+ beq- 7,.L22
+.L21:
+ lbz 0,0(3)
+ li 11,-1
+ cmpwi 7,0,0
+ beq- 7,.L22
+ lbz 0,0(4)
+ li 11,1
+ cmpwi 7,0,0
+ beq- 7,.L22
+ lbz 9,0(3)
+ lbz 0,0(4)
+ li 11,-1
+ cmplw 7,9,0
+ blt- 7,.L22
+ lbz 9,0(3)
+ lbz 0,0(4)
+ li 11,1
+ addi 3,3,1
+ addi 4,4,1
+ cmplw 7,9,0
+ ble+ 7,.L20
+.L22:
+ mr 3,11
+ blr
+
+
.global VG_(trampoline_stuff_end)
VG_(trampoline_stuff_end):
=20
Modified: trunk/coregrind/pub_core_trampoline.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/pub_core_trampoline.h 2005-09-30 16:09:12 UTC (rev 48=
40)
+++ trunk/coregrind/pub_core_trampoline.h 2005-10-01 19:12:08 UTC (rev 48=
41)
@@ -61,6 +61,7 @@
=20
#if defined(VGP_ppc32_linux)
extern UInt VG_(ppc32_linux_REDIR_FOR_strlen)( void* );
+extern UInt VG_(ppc32_linux_REDIR_FOR_strcmp)( void*, void* );
#endif
=20
#endif // __PUB_CORE_TRAMPOLINE_H
|