|
From: <sv...@va...> - 2009-12-30 20:22:19
|
Author: sewardj
Date: 2009-12-30 20:22:02 +0000 (Wed, 30 Dec 2009)
New Revision: 10975
Log:
On arm-linux, don't intercept 'index' in ld.so.
Modified:
branches/ARM/coregrind/m_redir.c
branches/ARM/coregrind/m_trampoline.S
branches/ARM/coregrind/pub_core_trampoline.h
Modified: branches/ARM/coregrind/m_redir.c
===================================================================
--- branches/ARM/coregrind/m_redir.c 2009-12-29 17:30:16 UTC (rev 10974)
+++ branches/ARM/coregrind/m_redir.c 2009-12-30 20:22:02 UTC (rev 10975)
@@ -1000,16 +1000,16 @@
(Addr)&VG_(arm_linux_REDIR_FOR_strlen),
NULL
);
+ //add_hardwired_spec(
+ // "ld-linux.so.3", "index",
+ // (Addr)&VG_(arm_linux_REDIR_FOR_index),
+ // NULL
+ //);
add_hardwired_spec(
"ld-linux.so.3", "memcpy",
(Addr)&VG_(arm_linux_REDIR_FOR_memcpy),
NULL
);
- add_hardwired_spec(
- "ld-linux.so.3", "index",
- (Addr)&VG_(arm_linux_REDIR_FOR_index),
- NULL
- );
}
/* nothing so far */
Modified: branches/ARM/coregrind/m_trampoline.S
===================================================================
--- branches/ARM/coregrind/m_trampoline.S 2009-12-29 17:30:16 UTC (rev 10974)
+++ branches/ARM/coregrind/m_trampoline.S 2009-12-30 20:22:02 UTC (rev 10975)
@@ -483,8 +483,9 @@
#elif defined(VGP_arm_linux)
-# define UD2_32 .word 0xFFFFFFFF ;
-# define UD2_64 UD2_32 ; UD2_32
+# define UD2_4 .word 0xFFFFFFFF
+# define UD2_16 UD2_4 ; UD2_4 ; UD2_4 ; UD2_4
+# define UD2_64 UD2_16 ; UD2_16 ; UD2_16 ; UD2_16
# define UD2_256 UD2_64 ; UD2_64 ; UD2_64 ; UD2_64
# define UD2_1024 UD2_256 ; UD2_256 ; UD2_256 ; UD2_256
# define UD2_PAGE UD2_1024 ; UD2_1024 ; UD2_1024 ; UD2_1024
@@ -509,28 +510,28 @@
cmp r3, #0
bne .L5
bx lr
- UD2_32
+ UD2_4
-.global VG_(arm_linux_REDIR_FOR_index)
-VG_(arm_linux_REDIR_FOR_index):
- ldrb r3, [r0, #0] @ zero_extendqisi2
- and r1, r1, #255
- cmp r3, r1
- @ lr needed for prologue
- bne .L9
- bx lr
-.L12:
- ldrb r3, [r0, #1]! @ zero_extendqisi2
- cmp r3, r1
- beq .L11
-.L9:
- cmp r3, #0
- bne .L12
- mov r0, #0
- bx lr
-.L11:
- bx lr
- UD2_32
+//.global VG_(arm_linux_REDIR_FOR_index)
+//VG_(arm_linux_REDIR_FOR_index):
+// ldrb r3, [r0, #0] @ zero_extendqisi2
+// and r1, r1, #255
+// cmp r3, r1
+// @ lr needed for prologue
+// bne .L9
+// bx lr
+//.L12:
+// ldrb r3, [r0, #1]! @ zero_extendqisi2
+// cmp r3, r1
+// beq .L11
+//.L9:
+// cmp r3, #0
+// bne .L12
+// mov r0, #0
+// bx lr
+//.L11:
+// bx lr
+// UD2_4
.global VG_(arm_linux_REDIR_FOR_memcpy)
VG_(arm_linux_REDIR_FOR_memcpy):
@@ -608,7 +609,7 @@
bne .L20
mov r0, r5
ldmfd sp!, {r4, r5, pc}
- UD2_32
+ UD2_4
.global VG_(trampoline_stuff_end)
VG_(trampoline_stuff_end):
@@ -616,6 +617,7 @@
/* and a trailing page of unexecutable code */
UD2_PAGE
+# undef UD2_4
# undef UD2_16
# undef UD2_64
# undef UD2_256
Modified: branches/ARM/coregrind/pub_core_trampoline.h
===================================================================
--- branches/ARM/coregrind/pub_core_trampoline.h 2009-12-29 17:30:16 UTC (rev 10974)
+++ branches/ARM/coregrind/pub_core_trampoline.h 2009-12-30 20:22:02 UTC (rev 10975)
@@ -92,8 +92,8 @@
#endif
#if defined(VGP_arm_linux)
-extern void* VG_(arm_linux_REDIR_FOR_index) ( void*, Int );
extern UInt VG_(arm_linux_REDIR_FOR_strlen)( void* );
+//extern void* VG_(arm_linux_REDIR_FOR_index) ( void*, Int );
extern void* VG_(arm_linux_REDIR_FOR_memcpy)( void*, void*, Int );
#endif
|