]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Moved VGA_(getArchAndSubArch) into m_translate and made it local. This
authorNicholas Nethercote <njn@valgrind.org>
Sat, 18 Jun 2005 03:44:34 +0000 (03:44 +0000)
committerNicholas Nethercote <njn@valgrind.org>
Sat, 18 Jun 2005 03:44:34 +0000 (03:44 +0000)
allowed the removal of $ARCH/state.c, hooray!

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3930

coregrind/amd64/Makefile.am
coregrind/amd64/state.c [deleted file]
coregrind/arm/Makefile.am
coregrind/arm/state.c [deleted file]
coregrind/core.h
coregrind/m_translate.c
coregrind/x86/Makefile.am
coregrind/x86/state.c [deleted file]

index ccbe24491bb933c66fb82b562e17784eb8e539e6..5453d083c10aac1d07f183bcd20a6d2a507c2f27 100644 (file)
@@ -3,16 +3,12 @@ include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
 
 noinst_LIBRARIES = libarch.a
 
-EXTRA_DIST = \
-       jmp_with_stack.c
-
 BUILT_SOURCES = stage2.lds
 CLEANFILES = stage2.lds
 
 libarch_a_SOURCES = \
        cpuid.S \
-       jmp_with_stack.c \
-       state.c
+       jmp_with_stack.c
 
 # Extract ld's default linker script and hack it to our needs
 stage2.lds: Makefile
diff --git a/coregrind/amd64/state.c b/coregrind/amd64/state.c
deleted file mode 100644 (file)
index 31a84fe..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- Arch-specific registers, etc.                  amd64/state.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
-   This file is part of Valgrind, a dynamic binary instrumentation
-   framework.
-
-   Copyright (C) 2000-2005 Julian Seward
-      jseward@acm.org
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307, USA.
-
-   The GNU General Public License is contained in the file COPYING.
-*/
-
-#include "core.h"
-#include "pub_core_libcbase.h"
-#include "pub_core_libcassert.h"
-#include "pub_core_tooliface.h"
-#include <sys/ptrace.h>
-
-#include "libvex_guest_amd64.h"
-
-
-/*------------------------------------------------------------*/
-/*--- Determining arch/subarch.                            ---*/
-/*------------------------------------------------------------*/
-
-// Returns the architecture and subarchitecture, or indicates
-// that this subarchitecture is unable to run Valgrind
-// Returns False to indicate we cannot proceed further.
-Bool VGA_(getArchAndSubArch)( /*OUT*/VexArch*    vex_arch, 
-                              /*OUT*/VexSubArch* vex_subarch )
-{
-   vg_assert(VG_(has_cpuid)());
-   *vex_arch = VexArchAMD64;
-   *vex_subarch = VexSubArch_NONE;
-   return True;
-}
-
-
-/*--------------------------------------------------------------------*/
-/*--- end                                                          ---*/
-/*--------------------------------------------------------------------*/
index c34202b277579bf9be766de3d6f8c7a732a10be5..1735781220b9a26f8cdd6bf85ea31ccba5caefb3 100644 (file)
@@ -3,15 +3,11 @@ include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
 
 noinst_LIBRARIES = libarch.a
 
-EXTRA_DIST = \
-       jmp_with_stack.c \
-       libpthread.c
-
 BUILT_SOURCES = stage2.lds
 CLEANFILES = stage2.lds
 
 libarch_a_SOURCES = \
-       state.c
+       jmp_with_stack.c
 
 # Extract ld's default linker script and hack it to our needs
 stage2.lds: Makefile
diff --git a/coregrind/arm/state.c b/coregrind/arm/state.c
deleted file mode 100644 (file)
index aca5d1f..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- Arch-specific registers, etc.                    x86/state.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
-   This file is part of Valgrind, a dynamic binary instrumentation
-   framework.
-
-   Copyright (C) 2000-2005 Nicholas Nethercote
-      njn@valgrind.org
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307, USA.
-
-   The GNU General Public License is contained in the file COPYING.
-*/
-
-#include "core.h"
-#include <sys/ptrace.h>
-
-#include "libvex_guest_arm.h"
-
-
-/*------------------------------------------------------------*/
-/*--- Initialising the first thread                        ---*/
-/*------------------------------------------------------------*/
-
-/* Given a pointer to the ThreadArchState for thread 1 (the root
-   thread), initialise the VEX guest state, and copy in essential
-   starting values.
-*/
-void VGA_(init_thread1state) ( Addr client_eip, 
-                               Addr esp_at_startup,
-                              /*MOD*/ ThreadArchState* arch )
-{
-   I_die_here;
-#if 0
-   // When implementing this, look at x86/state.c
-#endif
-}
-
-
-/*------------------------------------------------------------*/
-/*--- Thread stuff                                         ---*/
-/*------------------------------------------------------------*/
-
-void VGA_(clear_thread)( ThreadArchState *arch )
-{
-   I_die_here;
-#if 0
-   arch->ldt = NULL;
-   VG_(clear_TLS_for_thread)(arch->tls);
-#endif
-}  
-
-void VGA_(cleanup_thread) ( ThreadArchState *arch )
-{  
-   I_die_here;
-#if 0
-   /* Deallocate its LDT, if it ever had one. */
-   VG_(deallocate_LDT_for_thread)( arch->ldt ); 
-   arch->ldt = NULL;
-   
-   /* Clear its TLS array. */
-   VG_(clear_TLS_for_thread)( arch->tls );
-#endif
-}  
-
-void VGA_(setup_child) ( ThreadArchState *regs, ThreadArchState *parent_regs )
-{  
-   I_die_here;
-#if 0
-   // XXX: look at x86/state.c
-#endif
-}  
-
-
-/*------------------------------------------------------------*/
-/*--- pointercheck                                         ---*/
-/*------------------------------------------------------------*/
-
-Bool VGA_(setup_pointercheck)(Addr client_base, Addr client_end)
-{
-   I_die_here;
-#if 0
-   vki_modify_ldt_t ldt = { 
-      VG_POINTERCHECK_SEGIDX,    // entry_number
-      VG_(client_base),          // base_addr
-      (VG_(client_end)-VG_(client_base)) / VKI_PAGE_SIZE, // limit
-      1,                         // seg_32bit
-      0,                         // contents: data, RW, non-expanding
-      0,                         // ! read_exec_only
-      1,                         // limit_in_pages
-      0,                         // ! seg not present
-      1,                         // useable
-   };
-   int ret = VG_(do_syscall)(__NR_modify_ldt, 1, &ldt, sizeof(ldt));
-   if (ret < 0) {
-      VG_(message)(Vg_UserMsg,
-                   "Warning: ignoring --pointercheck=yes, "
-                   "because modify_ldt failed (errno=%d)", -ret);
-      return False;
-   } else {
-      return True;
-   }
-#endif
-}
-
-/*------------------------------------------------------------*/
-/*--- Debugger-related operations                          ---*/
-/*------------------------------------------------------------*/
-
-Int VGA_(ptrace_setregs_from_tst)(Int pid, ThreadArchState* arch)
-{
-   I_die_here;
-#if 0
-   struct vki_user_regs_struct regs;
-
-   regs.cs     = arch->vex.guest_CS;
-   regs.ss     = arch->vex.guest_SS;
-   regs.ds     = arch->vex.guest_DS;
-   regs.es     = arch->vex.guest_ES;
-   regs.fs     = arch->vex.guest_FS;
-   regs.gs     = arch->vex.guest_GS;
-   regs.eax    = arch->vex.guest_EAX;
-   regs.ebx    = arch->vex.guest_EBX;
-   regs.ecx    = arch->vex.guest_ECX;
-   regs.edx    = arch->vex.guest_EDX;
-   regs.esi    = arch->vex.guest_ESI;
-   regs.edi    = arch->vex.guest_EDI;
-   regs.ebp    = arch->vex.guest_EBP;
-   regs.esp    = arch->vex.guest_ESP;
-   regs.eflags = LibVEX_GuestX86_get_eflags(&arch->vex);
-   regs.eip    = arch->vex.guest_EIP;
-
-   return ptrace(PTRACE_SETREGS, pid, NULL, &regs);
-#endif
-}
-
-/*--------------------------------------------------------------------*/
-/*--- end                                                          ---*/
-/*--------------------------------------------------------------------*/
index 59f7c8c12ce2a4dd807958b195babf030b2c717b..a7d927befbd4ea513bfe72b9cada9443bfa1e531 100644 (file)
 
 #include "pub_core_scheduler.h"   // for types 'ThreadArchState'
 
-// ---------------------------------------------------------------------
-// Architecture-specific things defined in eg. x86/*.c
-// ---------------------------------------------------------------------
-
-// Returns the architecture and subarchitecture, or indicates
-// that this subarchitecture is unable to run Valgrind
-// Returns False to indicate we cannot proceed further.
-extern Bool VGA_(getArchAndSubArch)( /*OUT*/VexArch*, 
-                                     /*OUT*/VexSubArch* );
-
 /* ---------------------------------------------------------------------
    Finally - autoconf-generated settings
    ------------------------------------------------------------------ */
index 86b127280a5b8c3211be73f1c7672cc2752c97d4..0211808ea89e70164a9e7d7175c8569967062b66 100644 (file)
 #include "pub_core_translate.h"
 #include "pub_core_transtab.h"
 
+/*------------------------------------------------------------*/
+/*--- Determining arch/subarch.                            ---*/
+/*------------------------------------------------------------*/
+
+// Returns the architecture and subarchitecture, or indicates
+// that this subarchitecture is unable to run Valgrind
+// Returns False to indicate we cannot proceed further.
+static Bool getArchAndSubArch( /*OUT*/VexArch*    vex_arch, 
+                               /*OUT*/VexSubArch* vex_subarch )
+{
+#if defined(VGA_x86)
+   Bool have_sse0, have_sse1, have_sse2;
+   UInt eax, ebx, ecx, edx;
+
+   if (!VG_(has_cpuid)())
+      /* we can't do cpuid at all.  Give up. */
+      return False;
+
+   VG_(cpuid)(0, &eax, &ebx, &ecx, &edx);
+   if (eax < 1)
+     /* we can't ask for cpuid(x) for x > 0.  Give up. */
+     return False;
+
+   /* get capabilities bits into edx */
+   VG_(cpuid)(1, &eax, &ebx, &ecx, &edx);
+
+   have_sse0 = (edx & (1<<24)) != 0; /* True => have fxsave/fxrstor */
+   have_sse1 = (edx & (1<<25)) != 0; /* True => have sse insns */
+   have_sse2 = (edx & (1<<26)) != 0; /* True => have sse2 insns */
+
+   if (have_sse2 && have_sse1 && have_sse0) {
+      *vex_arch    = VexArchX86;
+      *vex_subarch = VexSubArchX86_sse2;
+      return True;
+   }
+
+   if (have_sse1 && have_sse0) {
+      *vex_arch    = VexArchX86;
+      *vex_subarch = VexSubArchX86_sse1;
+      return True;
+   }
+
+   if (have_sse0) {
+      *vex_arch    = VexArchX86;
+      *vex_subarch = VexSubArchX86_sse0;
+      return True;
+   }
+
+   /* we need at least SSE state to operate. */
+   return False;
+#elif defined(VGA_amd64)
+   vg_assert(VG_(has_cpuid)());
+   *vex_arch = VexArchAMD64;
+   *vex_subarch = VexSubArch_NONE;
+   return True;
+#else
+#  error Unknown architecture
+#endif
+}
+
 
 /*------------------------------------------------------------*/
 /*--- %SP-update pass                                      ---*/
 /*------------------------------------------------------------*/
 
+static Bool need_to_handle_SP_assignment(void)
+{
+   return ( VG_(tdict).track_new_mem_stack_4  ||
+            VG_(tdict).track_die_mem_stack_4  ||
+            VG_(tdict).track_new_mem_stack_8  ||
+            VG_(tdict).track_die_mem_stack_8  ||
+            VG_(tdict).track_new_mem_stack_12 ||
+            VG_(tdict).track_die_mem_stack_12 ||
+            VG_(tdict).track_new_mem_stack_16 ||
+            VG_(tdict).track_die_mem_stack_16 ||
+            VG_(tdict).track_new_mem_stack_32 ||
+            VG_(tdict).track_die_mem_stack_32 ||
+            VG_(tdict).track_new_mem_stack    ||
+            VG_(tdict).track_die_mem_stack    );
+}
+
 /* NOTE: this comment is out of date */
 
 /* For tools that want to know about %ESP changes, this pass adds
@@ -336,22 +412,6 @@ static Bool chase_into_ok ( Addr64 addr64 )
   }
 }
 
-static Bool need_to_handle_SP_assignment(void)
-{
-   return ( VG_(tdict).track_new_mem_stack_4  ||
-            VG_(tdict).track_die_mem_stack_4  ||
-            VG_(tdict).track_new_mem_stack_8  ||
-            VG_(tdict).track_die_mem_stack_8  ||
-            VG_(tdict).track_new_mem_stack_12 ||
-            VG_(tdict).track_die_mem_stack_12 ||
-            VG_(tdict).track_new_mem_stack_16 ||
-            VG_(tdict).track_die_mem_stack_16 ||
-            VG_(tdict).track_new_mem_stack_32 ||
-            VG_(tdict).track_die_mem_stack_32 ||
-            VG_(tdict).track_new_mem_stack    ||
-            VG_(tdict).track_die_mem_stack    );
-}
-
 Bool VG_(translate) ( ThreadId tid, 
                       Addr64   orig_addr,
                       Bool     debugging_translation,
@@ -373,7 +433,7 @@ Bool VG_(translate) ( ThreadId tid,
    static Bool vex_init_done = False;
 
    if (!vex_init_done) {
-      Bool ok = VGA_(getArchAndSubArch)( &vex_arch, &vex_subarch );
+      Bool ok = getArchAndSubArch( &vex_arch, &vex_subarch );
       if (!ok) {
          VG_(printf)("\n");
          VG_(printf)("valgrind: fatal error: unsupported CPU.\n");
index 6a698dfe2c5676f33bdc3d9f834306dd9d74c251..6ed6d13caac68fb61cb4f8f64b07f43626bdbd4f 100644 (file)
@@ -3,16 +3,12 @@ include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
 
 noinst_LIBRARIES = libarch.a
 
-EXTRA_DIST = \
-       jmp_with_stack.c
-
 BUILT_SOURCES = stage2.lds
 CLEANFILES = stage2.lds
 
 libarch_a_SOURCES = \
        cpuid.S \
-       jmp_with_stack.c \
-       state.c
+       jmp_with_stack.c
 
 # Extract ld's default linker script and hack it to our needs
 stage2.lds: Makefile
diff --git a/coregrind/x86/state.c b/coregrind/x86/state.c
deleted file mode 100644 (file)
index 5c0bf65..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- Arch-specific registers, etc.                    x86/state.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
-   This file is part of Valgrind, a dynamic binary instrumentation
-   framework.
-
-   Copyright (C) 2000-2005 Nicholas Nethercote
-      njn@valgrind.org
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307, USA.
-
-   The GNU General Public License is contained in the file COPYING.
-*/
-
-#include "core.h"
-#include "pub_core_libcbase.h"
-#include "pub_core_libcassert.h"
-#include "pub_core_tooliface.h"
-#include <sys/ptrace.h>
-
-#include "libvex_guest_x86.h"
-
-
-/*------------------------------------------------------------*/
-/*--- Determining arch/subarch.                            ---*/
-/*------------------------------------------------------------*/
-
-// Returns the architecture and subarchitecture, or indicates
-// that this subarchitecture is unable to run Valgrind
-// Returns False to indicate we cannot proceed further.
-Bool VGA_(getArchAndSubArch)( /*OUT*/VexArch*    vex_arch, 
-                              /*OUT*/VexSubArch* vex_subarch )
-{
-   Bool have_sse0, have_sse1, have_sse2;
-   UInt eax, ebx, ecx, edx;
-
-   if (!VG_(has_cpuid)())
-      /* we can't do cpuid at all.  Give up. */
-      return False;
-
-   VG_(cpuid)(0, &eax, &ebx, &ecx, &edx);
-   if (eax < 1)
-     /* we can't ask for cpuid(x) for x > 0.  Give up. */
-     return False;
-
-   /* get capabilities bits into edx */
-   VG_(cpuid)(1, &eax, &ebx, &ecx, &edx);
-
-   have_sse0 = (edx & (1<<24)) != 0; /* True => have fxsave/fxrstor */
-   have_sse1 = (edx & (1<<25)) != 0; /* True => have sse insns */
-   have_sse2 = (edx & (1<<26)) != 0; /* True => have sse2 insns */
-
-   if (have_sse2 && have_sse1 && have_sse0) {
-      *vex_arch    = VexArchX86;
-      *vex_subarch = VexSubArchX86_sse2;
-      return True;
-   }
-
-   if (have_sse1 && have_sse0) {
-      *vex_arch    = VexArchX86;
-      *vex_subarch = VexSubArchX86_sse1;
-      return True;
-   }
-
-   if (have_sse0) {
-      *vex_arch    = VexArchX86;
-      *vex_subarch = VexSubArchX86_sse0;
-      return True;
-   }
-
-   /* we need at least SSE state to operate. */
-   return False;
-}
-
-/*--------------------------------------------------------------------*/
-/*--- end                                                          ---*/
-/*--------------------------------------------------------------------*/