$PLATFORM/core_platform.c and $PLATFORM/libplatform.a, hooray.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3808
pub_core_hashtable.h \
pub_core_mallocfree.h \
pub_core_options.h \
+ pub_core_redir.h \
pub_core_replacemalloc.h\
pub_core_sigframe.h \
pub_core_skiplist.h \
m_hashtable.c \
m_mallocfree.c \
m_options.c \
+ m_redir.c \
m_skiplist.c \
m_stacktrace.c \
m_tooliface.c \
vg_symtab2.c \
vg_threadmodel.c \
vg_pthreadmodel.c \
- vg_redir.c \
vg_dwarf.c \
vg_stabs.c \
vg_symtypes.c
-## libplatform.a must be before libarch.a and libos.a, it seems.
stage2_extra= \
m_dispatch/libdispatch.a \
m_demangle/libdemangle.a \
m_aspacemgr/libaspacemgr.a \
m_sigframe/libsigframe.a \
m_syscalls/libsyscalls.a \
- ${VG_PLATFORM}/libplatform.a \
${VG_ARCH}/libarch.a \
${VG_OS}/libos.a \
@VEX_DIR@/libvex.a
noinst_HEADERS = \
core_platform.h \
vki_unistd.h
-
-noinst_LIBRARIES = libplatform.a
-
-
-libplatform_a_SOURCES = \
- core_platform.c
+++ /dev/null
-#include "core.h"
-
-void VGP_(setup_redirects)(void)
-{
- /* Redirect vsyscalls to local versions */
- VG_(add_redirect_addr_to_addr)(0xFFFFFFFFFF600000ULL,
- VG_(client_trampoline_code)+VG_(tramp_gettimeofday_offset));
- VG_(add_redirect_addr_to_addr)(0xFFFFFFFFFF600400ULL,
- VG_(client_trampoline_code)+VG_(tramp_time_offset));
-}
noinst_HEADERS = \
core_platform.h \
vki_unistd.h
-
-noinst_LIBRARIES = libplatform.a
-
-libplatform_a_SOURCES =
-
Addr max_accessible );
-/* ---------------------------------------------------------------------
- Exports of vg_redir.c
- ------------------------------------------------------------------ */
-
-/* Redirection machinery */
-extern Addr VG_(code_redirect) ( Addr orig );
-
-/* Set up some default redirects */
-extern void VG_(setup_code_redirect_table) ( void );
-
-extern void VG_(add_redirect_sym_to_addr)(const Char *from_lib,
- const Char *from_sym,
- Addr to_addr);
-extern void VG_(add_redirect_addr_to_addr)(Addr from_addr, Addr to_addr);
-extern void VG_(resolve_seg_redirs)(SegInfo *si);
-
-/* Wrapping machinery */
-enum return_type {
- RT_RETURN,
- RT_LONGJMP,
- RT_EXIT,
-};
-
-typedef struct _FuncWrapper FuncWrapper;
-struct _FuncWrapper {
- void *(*before)(va_list args);
- void (*after) (void *nonce, enum return_type, Word retval);
-};
-
-extern void VG_(wrap_function)(Addr eip, const FuncWrapper *wrapper);
-extern const FuncWrapper *VG_(is_wrapped)(Addr eip);
-extern Bool VG_(is_wrapper_return)(Addr eip);
-
-/* Primary interface for adding wrappers for client-side functions. */
-extern CodeRedirect *VG_(add_wrapper)(const Char *from_lib, const Char *from_sym,
- const FuncWrapper *wrapper);
-
-extern Bool VG_(is_resolved)(const CodeRedirect *redir);
-
/* ---------------------------------------------------------------------
Exports of vg_main.c
------------------------------------------------------------------ */
extern Bool VGA_(client_requests)(ThreadId tid, UWord *args);
-// ---------------------------------------------------------------------
-// Platform-specific things defined in eg. x86/*.c
-// ---------------------------------------------------------------------
-
-// Do any platform specific redirects.
-extern void VGP_(setup_redirects)(void);
-
///* ---------------------------------------------------------------------
// Thread modelling
// ------------------------------------------------------------------ */
#include "pub_core_aspacemgr.h"
#include "pub_core_skiplist.h"
#include "pub_core_options.h"
+#include "pub_core_redir.h"
#include "pub_core_transtab.h"
/*------------------------------------------------------------*/
add_redirect_sym_to_sym("soname:ld-linux-x86-64.so.2", "strlen",
"*vgpreload_memcheck.so*", "strlen");
-}
+#if defined(VGP_x86_linux)
+ /* Redirect _dl_sysinfo_int80, which is glibc's default system call
+ routine, to the routine in our trampoline page so that the
+ special sysinfo unwind hack in m_stacktrace.c will kick in. */
+ VG_(add_redirect_sym_to_addr)("soname:ld-linux.so.2", "_dl_sysinfo_int80",
+ VG_(client_trampoline_code)+VG_(tramp_syscall_offset));
+#elif defined(VGP_amd64_linux)
+ /* Redirect vsyscalls to local versions */
+ VG_(add_redirect_addr_to_addr)(0xFFFFFFFFFF600000ULL,
+ VG_(client_trampoline_code)+VG_(tramp_gettimeofday_offset));
+ VG_(add_redirect_addr_to_addr)(0xFFFFFFFFFF600400ULL,
+ VG_(client_trampoline_code)+VG_(tramp_time_offset));
+#else
+# error Unknown platform
+#endif
+}
//:: /*------------------------------------------------------------*/
//:: /*--- General function wrapping. ---*/
#include "core.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_options.h"
+#include "pub_core_redir.h"
#include "pub_core_tooliface.h"
#include "pub_core_translate.h"
#include "pub_core_transtab.h"
#include "pub_core_errormgr.h"
#include "pub_core_execontext.h"
#include "pub_core_options.h"
+#include "pub_core_redir.h"
#include "pub_core_syscalls.h"
#include "pub_core_tooliface.h"
#include "pub_core_transtab.h"
//--------------------------------------------------------------
VG_(debugLog)(1, "main", "Initialise redirects\n");
VG_(setup_code_redirect_table)();
- VGP_(setup_redirects)();
//--------------------------------------------------------------
// Verbosity message
#include "pub_core_aspacemgr.h"
#include "pub_core_demangle.h"
#include "pub_core_options.h"
+#include "pub_core_redir.h"
#include "pub_core_tooliface.h"
#include <elf.h> /* ELF defns */
noinst_HEADERS = \
core_platform.h \
vki_unistd.h
-
-noinst_LIBRARIES = libplatform.a
-
-
-libplatform_a_SOURCES = \
- core_platform.c
+++ /dev/null
-#include "core.h"
-
-void VGP_(setup_redirects)(void)
-{
- /* Redirect _dl_sysinfo_int80, which is glibc's default system call
- routine, to the routine in our trampoline page so that the
- special sysinfo unwind hack in vg_execontext.c will kick in.
- */
- VG_(add_redirect_sym_to_addr)("soname:ld-linux.so.2", "_dl_sysinfo_int80",
- VG_(client_trampoline_code)+VG_(tramp_syscall_offset));
-}