PERFORCE change 124914 for review
Peter Wemm
peter at FreeBSD.org
Wed Aug 8 12:06:38 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=124914
Change 124914 by peter at peter_daintree on 2007/08/08 19:06:13
Initial checkin of buildable/runnable valgrind3. Run autogen.sh to
build autoconf stuff. depends on various autoconf/automake etc ports.
Affected files ...
.. //depot/projects/valgrind/Makefile.am#2 edit
.. //depot/projects/valgrind/Makefile.core.am#2 edit
.. //depot/projects/valgrind/Makefile.flags.am#2 edit
.. //depot/projects/valgrind/Makefile.tool-flags.am#2 edit
.. //depot/projects/valgrind/Makefile.tool.am#2 edit
.. //depot/projects/valgrind/VEX/Makefile#2 edit
.. //depot/projects/valgrind/VEX/priv/guest-amd64/ghelpers.c#2 edit
.. //depot/projects/valgrind/VEX/priv/main/vex_svnversion.h#1 add
.. //depot/projects/valgrind/VEX/pub/libvex_guest_amd64.h#2 edit
.. //depot/projects/valgrind/autogen.sh#2 edit
.. //depot/projects/valgrind/cachegrind/Makefile.am#2 edit
.. //depot/projects/valgrind/cachegrind/tests/Makefile.am#2 edit
.. //depot/projects/valgrind/callgrind/Makefile.am#2 edit
.. //depot/projects/valgrind/callgrind/tests/Makefile.am#2 edit
.. //depot/projects/valgrind/configure.in#2 edit
.. //depot/projects/valgrind/coregrind/Makefile.am#2 edit
.. //depot/projects/valgrind/coregrind/launcher.c#2 edit
.. //depot/projects/valgrind/coregrind/m_aspacemgr/aspacemgr.c#2 edit
.. //depot/projects/valgrind/coregrind/m_coredump/coredump-amd64-freebsd.c#1 add
.. //depot/projects/valgrind/coregrind/m_coredump/coredump-elf.c#2 edit
.. //depot/projects/valgrind/coregrind/m_coredump/coredump-x86-freebsd.c#1 add
.. //depot/projects/valgrind/coregrind/m_debuginfo/debuginfo.c#2 edit
.. //depot/projects/valgrind/coregrind/m_debuginfo/readdwarf.c#2 edit
.. //depot/projects/valgrind/coregrind/m_debuglog.c#2 edit
.. //depot/projects/valgrind/coregrind/m_dispatch/dispatch-amd64-freebsd.S#1 add
.. //depot/projects/valgrind/coregrind/m_dispatch/dispatch-x86-freebsd.S#1 add
.. //depot/projects/valgrind/coregrind/m_libcassert.c#2 edit
.. //depot/projects/valgrind/coregrind/m_libcfile.c#2 edit
.. //depot/projects/valgrind/coregrind/m_libcproc.c#2 edit
.. //depot/projects/valgrind/coregrind/m_libcsignal.c#2 edit
.. //depot/projects/valgrind/coregrind/m_machine.c#2 edit
.. //depot/projects/valgrind/coregrind/m_main.c#2 edit
.. //depot/projects/valgrind/coregrind/m_redir.c#2 edit
.. //depot/projects/valgrind/coregrind/m_sigframe/sigframe-amd64-freebsd.c#1 add
.. //depot/projects/valgrind/coregrind/m_sigframe/sigframe-x86-freebsd.c#1 add
.. //depot/projects/valgrind/coregrind/m_signals.c#2 edit
.. //depot/projects/valgrind/coregrind/m_stacktrace.c#2 edit
.. //depot/projects/valgrind/coregrind/m_syscall.c#2 edit
.. //depot/projects/valgrind/coregrind/m_syswrap/makeargsize.sh#1 add
.. //depot/projects/valgrind/coregrind/m_syswrap/makeargsize6.sh#1 add
.. //depot/projects/valgrind/coregrind/m_syswrap/priv_syswrap-freebsd.h#1 add
.. //depot/projects/valgrind/coregrind/m_syswrap/priv_syswrap-generic.h#2 edit
.. //depot/projects/valgrind/coregrind/m_syswrap/priv_types_n_macros.h#2 edit
.. //depot/projects/valgrind/coregrind/m_syswrap/sysargcount.c#1 add
.. //depot/projects/valgrind/coregrind/m_syswrap/syscall-amd64-freebsd.S#1 add
.. //depot/projects/valgrind/coregrind/m_syswrap/syscall-x86-freebsd.S#1 add
.. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-amd64-freebsd.c#1 add
.. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-freebsd-variants.c#1 add
.. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-freebsd.c#1 add
.. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-generic.c#2 edit
.. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-main.c#2 edit
.. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-x86-freebsd.c#1 add
.. //depot/projects/valgrind/coregrind/m_trampoline.S#2 edit
.. //depot/projects/valgrind/coregrind/m_ume.c#2 edit
.. //depot/projects/valgrind/coregrind/pub_core_libcproc.h#2 edit
.. //depot/projects/valgrind/coregrind/pub_core_sigframe.h#2 edit
.. //depot/projects/valgrind/coregrind/pub_core_syscall.h#2 edit
.. //depot/projects/valgrind/coregrind/pub_core_trampoline.h#2 edit
.. //depot/projects/valgrind/coregrind/vg_preloaded.c#2 edit
.. //depot/projects/valgrind/coregrind/vki_syscall-freebsd.h#1 add
.. //depot/projects/valgrind/coregrind/vki_unistd.h#2 edit
.. //depot/projects/valgrind/getpath/Makefile#1 add
.. //depot/projects/valgrind/getpath/getpath_fromaddr.c#1 add
.. //depot/projects/valgrind/getpath/getpath_fromfd.c#1 add
.. //depot/projects/valgrind/getpath/gp_README#1 add
.. //depot/projects/valgrind/helgrind/Makefile.am#2 edit
.. //depot/projects/valgrind/helgrind/tests/Makefile.am#2 edit
.. //depot/projects/valgrind/include/Makefile.am#2 edit
.. //depot/projects/valgrind/include/pub_tool_basics.h#2 edit
.. //depot/projects/valgrind/include/vki-amd64-freebsd.h#1 add
.. //depot/projects/valgrind/include/vki-freebsd.h#1 add
.. //depot/projects/valgrind/include/vki-x86-freebsd.h#1 add
.. //depot/projects/valgrind/include/vki_machine_types-amd64-freebsd.h#1 add
.. //depot/projects/valgrind/include/vki_machine_types-x86-freebsd.h#1 add
.. //depot/projects/valgrind/lackey/Makefile.am#2 edit
.. //depot/projects/valgrind/libc-4x.supp#1 add
.. //depot/projects/valgrind/massif/Makefile.am#2 edit
.. //depot/projects/valgrind/memcheck/Makefile.am#2 edit
.. //depot/projects/valgrind/memcheck/tests/Makefile.am#2 edit
.. //depot/projects/valgrind/memcheck/tests/addressable.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/badjump2.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/brk.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/buflen_check.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/malloc_usable.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/memalign2.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/mempool.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/pointer-trace.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/sh-mem-random.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/stack_changes.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/stack_switch.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/str_tester.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/writev.c#2 edit
.. //depot/projects/valgrind/memcheck/tests/x86/Makefile.am#2 edit
.. //depot/projects/valgrind/memcheck/tests/zeropage.c#2 edit
.. //depot/projects/valgrind/none/Makefile.am#2 edit
.. //depot/projects/valgrind/none/tests/Makefile.am#2 edit
.. //depot/projects/valgrind/none/tests/closeall.c#2 edit
.. //depot/projects/valgrind/none/tests/faultstatus.c#2 edit
.. //depot/projects/valgrind/none/tests/fdleak_cmsg.c#2 edit
.. //depot/projects/valgrind/none/tests/fdleak_socketpair.c#2 edit
.. //depot/projects/valgrind/none/tests/map_unaligned.c#2 edit
.. //depot/projects/valgrind/none/tests/map_unmap.c#2 edit
.. //depot/projects/valgrind/none/tests/mq.c#2 edit
.. //depot/projects/valgrind/none/tests/pending.c#2 edit
.. //depot/projects/valgrind/none/tests/resolv.c#2 edit
.. //depot/projects/valgrind/none/tests/rlimit_nofile.c#2 edit
.. //depot/projects/valgrind/none/tests/sem.c#2 edit
.. //depot/projects/valgrind/none/tests/sigstackgrowth.c#2 edit
.. //depot/projects/valgrind/none/tests/x86/Makefile.am#2 edit
.. //depot/projects/valgrind/none/tests/x86/faultstatus.c#2 edit
.. //depot/projects/valgrind/perf/bigcode.c#2 edit
.. //depot/projects/valgrind/perf/tinycc.c#2 edit
.. //depot/projects/valgrind/tests/filter_addresses#2 edit
.. //depot/projects/valgrind/tests/filter_discards#2 edit
.. //depot/projects/valgrind/tests/filter_numbers#2 edit
.. //depot/projects/valgrind/tests/filter_stderr_basic#2 edit
.. //depot/projects/valgrind/tests/toobig-allocs.c#2 edit
Differences ...
==== //depot/projects/valgrind/Makefile.am#2 (text+ko) ====
@@ -32,6 +32,14 @@
CLEANFILES =
DISTCLEANFILES = default.supp
+if VG_X86_FREEBSD
+BUILT_SOURCES += valt_load_address_x86_freebsd.lds
+CLEANFILES += valt_load_address_x86_freebsd.lds
+endif
+if VG_AMD64_FREEBSD
+BUILT_SOURCES += valt_load_address_amd64_freebsd.lds
+CLEANFILES += valt_load_address_amd64_freebsd.lds
+endif
if VG_X86_LINUX
BUILT_SOURCES += valt_load_address_x86_linux.lds
CLEANFILES += valt_load_address_x86_linux.lds
@@ -181,6 +189,20 @@
#
# So we search for the line with a hex value "+ SIZEOF_HEADERS", and replace
# all the hex values in that line with "valt_load_address".
+valt_load_address_x86_freebsd.lds: Makefile
+ $(CC) @FLAG_M32@ -Wl,--verbose -nostdlib 2>&1 | sed -E \
+ -e '1,/^=====+$$/d' \
+ -e '/^=====+$$/d' \
+ -e '/\. = 0x[0-9A-Fa-f]+ \+ SIZEOF_HEADERS/s/0x[0-9A-Fa-f]+/valt_load_address/g' > $@ \
+ || rm -f $@
+
+valt_load_address_amd64_freebsd.lds: Makefile
+ $(CC) -m64 -Wl,--verbose -nostdlib 2>&1 | sed -E \
+ -e '1,/^=====+$$/d' \
+ -e '/^=====+$$/d' \
+ -e '/\. = 0x[0-9A-Fa-f]+ \+ SIZEOF_HEADERS/s/0x[0-9A-Fa-f]+/valt_load_address/g' > $@ \
+ || rm -f $@
+
valt_load_address_x86_linux.lds: Makefile
$(CC) @FLAG_M32@ -Wl,--verbose -nostdlib 2>&1 | sed \
-e '1,/^=====\+$$/d' \
==== //depot/projects/valgrind/Makefile.core.am#2 (text+ko) ====
@@ -1,3 +1,27 @@
+add_includes_x86_freebsd = -I$(top_srcdir)/coregrind \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/coregrind/x86 \
+ -I$(top_srcdir)/coregrind/freebsd \
+ -I$(top_srcdir)/coregrind/x86-freebsd \
+ -I$(top_srcdir)/include \
+ -I at VEX_DIR@/pub \
+ -DVG_PLATFORM="\"x86-freebsd\"" \
+ -DVGA_x86=1 \
+ -DVGO_freebsd=1 \
+ -DVGP_x86_freebsd=1
+
+add_includes_amd64_freebsd = -I$(top_srcdir)/coregrind \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/coregrind/x86 \
+ -I$(top_srcdir)/coregrind/freebsd \
+ -I$(top_srcdir)/coregrind/x86-freebsd \
+ -I$(top_srcdir)/include \
+ -I at VEX_DIR@/pub \
+ -DVG_PLATFORM="\"amd64-freebsd\"" \
+ -DVGA_amd64=1 \
+ -DVGO_freebsd=1 \
+ -DVGP_amd64_freebsd=1
+
add_includes_x86_linux = -I$(top_srcdir)/coregrind \
-I$(top_srcdir) \
-I$(top_srcdir)/coregrind/x86 \
@@ -49,6 +73,8 @@
include $(top_srcdir)/Makefile.flags.am
PRELOAD_LDFLAGS_COMMON = -nostdlib -shared -Wl,-z,interpose,-z,initfirst
+PRELOAD_LDFLAGS_X86_FREEBSD = $(PRELOAD_LDFLAGS_COMMON) @FLAG_M32@
+PRELOAD_LDFLAGS_AMD64_FREEBSD = $(PRELOAD_LDFLAGS_COMMON) -m64
PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON) @FLAG_M32@
PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON) -m64
PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON) @FLAG_M32@
==== //depot/projects/valgrind/Makefile.flags.am#2 (text+ko) ====
@@ -6,6 +6,18 @@
AM_CFLAGS_PIC = -fpic -fno-omit-frame-pointer
# Flags for specific targets
+AM_FLAG_M3264_X86_FREEBSD = @FLAG_M32@
+AM_CPPFLAGS_X86_FREEBSD = $(add_includes_x86_freebsd)
+AM_CFLAGS_X86_FREEBSD = $(WERROR) @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
+ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_X86_FREEBSD = $(add_includes_x86_freebsd) @FLAG_M32@ -g
+
+AM_FLAG_M3264_AMD64_FREEBSD = @FLAG_M64@
+AM_CPPFLAGS_AMD64_FREEBSD = $(add_includes_amd64_freebsd)
+AM_CFLAGS_AMD64_FREEBSD = $(WERROR) @FLAG_M64@ -fomit-frame-pointer \
+ @PREFERRED_STACK_BOUNDARY@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_AMD64_FREEBSD = $(add_includes_amd64_freebsd) -m64 -g
+
AM_FLAG_M3264_X86_LINUX = @FLAG_M32@
AM_CPPFLAGS_X86_LINUX = $(add_includes_x86_linux)
AM_CFLAGS_X86_LINUX = $(WERROR) @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
==== //depot/projects/valgrind/Makefile.tool-flags.am#2 (text+ko) ====
@@ -1,3 +1,15 @@
+add_includes_x86_freebsd = -I$(top_srcdir)/include \
+ -I at VEX_DIR@/pub \
+ -DVGA_x86=1 \
+ -DVGO_freebsd=1 \
+ -DVGP_x86_freebsd=1
+
+add_includes_amd64_freebsd = -I$(top_srcdir)/include \
+ -I at VEX_DIR@/pub \
+ -DVGA_amd64=1 \
+ -DVGO_freebsd=1 \
+ -DVGP_amd64_freebsd=1
+
add_includes_x86_linux = -I$(top_srcdir)/include \
-I at VEX_DIR@/pub \
-DVGA_x86=1 \
==== //depot/projects/valgrind/Makefile.tool.am#2 (text+ko) ====
@@ -6,6 +6,12 @@
include $(top_srcdir)/Makefile.tool-flags.am
include $(top_srcdir)/Makefile.tool-inplace.am
+LIBREPLACEMALLOC_X86_FREEBSD = \
+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload_x86_freebsd.a
+
+LIBREPLACEMALLOC_AMD64_FREEBSD = \
+ $(top_builddir)/coregrind/libreplacemalloc_toolpreload_amd64_freebsd.a
+
LIBREPLACEMALLOC_X86_LINUX = \
$(top_builddir)/coregrind/libreplacemalloc_toolpreload_x86_linux.a
@@ -18,6 +24,14 @@
LIBREPLACEMALLOC_PPC64_LINUX = \
$(top_builddir)/coregrind/libreplacemalloc_toolpreload_ppc64_linux.a
+COREGRIND_LIBS_X86_FREEBSD = \
+ $(top_builddir)/coregrind/libcoregrind_x86_freebsd.a \
+ @VEX_DIR@/libvex_x86_freebsd.a
+
+COREGRIND_LIBS_AMD64_FREEBSD = \
+ $(top_builddir)/coregrind/libcoregrind_amd64_freebsd.a \
+ @VEX_DIR@/libvex_amd64_freebsd.a
+
COREGRIND_LIBS_X86_LINUX = \
$(top_builddir)/coregrind/libcoregrind_x86_linux.a \
@VEX_DIR@/libvex_x86_linux.a
@@ -36,6 +50,16 @@
##.PHONY: @VEX_DIR@/libvex.a
+ at VEX_DIR@/libvex_x86_freebsd.a: @VEX_DIR@/priv/main/vex_svnversion.h
+ $(MAKE) -C @VEX_DIR@ CC="$(CC)" libvex_x86_freebsd.a \
+ EXTRA_CFLAGS="$(AM_CFLAGS_X86_FREEBSD) @FLAG_WDECL_AFTER_STMT@ \
+ @FLAG_FNO_STACK_PROTECTOR@"
+
+ at VEX_DIR@/libvex_amd64_freebsd.a: @VEX_DIR@/priv/main/vex_svnversion.h
+ $(MAKE) -C @VEX_DIR@ CC="$(CC)" libvex_amd64_freebsd.a \
+ EXTRA_CFLAGS="$(AM_CFLAGS_AMD64_FREEBSD) @FLAG_WDECL_AFTER_STMT@ \
+ @FLAG_FNO_STACK_PROTECTOR@"
+
@VEX_DIR@/libvex_x86_linux.a: @VEX_DIR@/priv/main/vex_svnversion.h
$(MAKE) -C @VEX_DIR@ CC="$(CC)" libvex_x86_linux.a \
EXTRA_CFLAGS="$(AM_CFLAGS_X86_LINUX) @FLAG_WDECL_AFTER_STMT@ \
@@ -64,6 +88,16 @@
-Wl,-defsym,valt_load_address=@VALT_LOAD_ADDRESS@ \
-nodefaultlibs -nostartfiles -u _start
+TOOL_LDADD_X86_FREEBSD = $(COREGRIND_LIBS_X86_FREEBSD) $(TOOL_LDADD_COMMON)
+TOOL_LDFLAGS_X86_FREEBSD = \
+ $(TOOL_LDFLAGS_COMMON) @FLAG_M32@ \
+ -Wl,-T,$(top_builddir)/valt_load_address_x86_freebsd.lds
+
+TOOL_LDADD_AMD64_FREEBSD = $(COREGRIND_LIBS_AMD64_FREEBSD) $(TOOL_LDADD_COMMON)
+TOOL_LDFLAGS_AMD64_FREEBSD = \
+ $(TOOL_LDFLAGS_COMMON) -m64 \
+ -Wl,-T,$(top_builddir)/valt_load_address_amd64_freebsd.lds
+
TOOL_LDADD_X86_LINUX = $(COREGRIND_LIBS_X86_LINUX) $(TOOL_LDADD_COMMON)
TOOL_LDFLAGS_X86_LINUX = \
$(TOOL_LDFLAGS_COMMON) @FLAG_M32@ \
@@ -85,11 +119,21 @@
-Wl,-T,$(top_builddir)/valt_load_address_ppc64_linux.lds
PRELOAD_LDFLAGS_COMMON = -nostdlib -shared -Wl,-z,interpose,-z,initfirst
+PRELOAD_LDFLAGS_X86_FREEBSD = $(PRELOAD_LDFLAGS_COMMON) @FLAG_M32@
+PRELOAD_LDFLAGS_AMD64_FREEBSD = $(PRELOAD_LDFLAGS_COMMON) -m64
PRELOAD_LDFLAGS_X86_LINUX = $(PRELOAD_LDFLAGS_COMMON) @FLAG_M32@
PRELOAD_LDFLAGS_AMD64_LINUX = $(PRELOAD_LDFLAGS_COMMON) -m64
PRELOAD_LDFLAGS_PPC32_LINUX = $(PRELOAD_LDFLAGS_COMMON) @FLAG_M32@
PRELOAD_LDFLAGS_PPC64_LINUX = $(PRELOAD_LDFLAGS_COMMON) -m64
+LIBREPLACEMALLOC_LDFLAGS_X86_FREEBSD = \
+ -Wl,--whole-archive \
+ $(LIBREPLACEMALLOC_X86_FREEBSD) \
+ -Wl,--no-whole-archive
+LIBREPLACEMALLOC_LDFLAGS_AMD64_FREEBSD = \
+ -Wl,--whole-archive \
+ $(LIBREPLACEMALLOC_AMD64_FREEBSD) \
+ -Wl,--no-whole-archive
LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
-Wl,--whole-archive \
$(LIBREPLACEMALLOC_X86_LINUX) \
==== //depot/projects/valgrind/VEX/Makefile#2 (text+ko) ====
@@ -137,6 +137,17 @@
if [ ! -f TAG_ppc64_linux ] ; then rm -f $(LIB_OBJS) TAG_* libvex.a ; fi
touch TAG_ppc64_linux
+libvex_x86_freebsd.a: TAG_x86_freebsd libvex.a
+ mv -f libvex.a libvex_x86_freebsd.a
+TAG_x86_freebsd:
+ if [ ! -f TAG_x86_freebsd ] ; then rm -f $(LIB_OBJS) TAG_* libvex.a ; fi
+ touch TAG_x86_freebsd
+
+libvex_amd64_freebsd.a: TAG_amd64_freebsd libvex.a
+ mv -f libvex.a libvex_amd64_freebsd.a
+TAG_amd64_freebsd:
+ if [ ! -f TAG_amd64_freebsd ] ; then rm -f $(LIB_OBJS) TAG_* libvex.a ; fi
+ touch TAG_amd64_freebsd
# This doesn't get rid of priv/main/vex_svnversion.h, because
# that can't be regenerated in the final Valgrind tarball, and
==== //depot/projects/valgrind/VEX/priv/guest-amd64/ghelpers.c#2 (text+ko) ====
@@ -839,6 +839,29 @@
}
+/* VISIBLE TO LIBVEX CLIENT */
+void
+LibVEX_GuestAMD64_put_rflag_c ( UInt new_carry_flag,
+ /*MOD*/VexGuestAMD64State* vex_state )
+{
+ ULong oszacp = amd64g_calculate_rflags_all_WRK(
+ vex_state->guest_CC_OP,
+ vex_state->guest_CC_DEP1,
+ vex_state->guest_CC_DEP2,
+ vex_state->guest_CC_NDEP
+ );
+ if (new_carry_flag & 1) {
+ oszacp |= AMD64G_CC_MASK_C;
+ } else {
+ oszacp &= ~AMD64G_CC_MASK_C;
+ }
+ vex_state->guest_CC_OP = AMD64G_CC_OP_COPY;
+ vex_state->guest_CC_DEP1 = oszacp;
+ vex_state->guest_CC_DEP2 = 0;
+ vex_state->guest_CC_NDEP = 0;
+}
+
+
/*---------------------------------------------------------------*/
/*--- %rflags translation-time function specialisers. ---*/
/*--- These help iropt specialise calls the above run-time ---*/
==== //depot/projects/valgrind/VEX/pub/libvex_guest_amd64.h#2 (text+ko) ====
@@ -178,6 +178,13 @@
ULong LibVEX_GuestAMD64_get_rflags ( /*IN*/VexGuestAMD64State* vex_state );
+/* Set the carry flag in the given state to 'new_carry_flag', which
+ should be zero or one. */
+extern
+void
+LibVEX_GuestAMD64_put_rflag_c ( UInt new_carry_flag,
+ /*MOD*/VexGuestAMD64State* vex_state );
+
#if 0
/* Convert a saved x87 FPU image (as created by fsave) and write it
into the supplied VexGuestX86State structure. The non-FP parts of
@@ -193,15 +200,6 @@
void LibVEX_GuestX86_get_x87 ( /*IN*/VexGuestX86State* vex_state,
/*OUT*/UChar* x87_state );
-
-/* Given a 32-bit word containing native x86 %eflags values, set the
- eflag-related fields in the supplied VexGuestX86State accordingly.
- All other fields are left unchanged. */
-
-extern
-void LibVEX_GuestX86_put_eflags ( UInt eflags_native,
- /*OUT*/VexGuestX86State* vex_state );
-
#endif /* 0 */
#endif /* ndef __LIBVEX_PUB_GUEST_AMD64_H */
==== //depot/projects/valgrind/autogen.sh#2 (text+kox) ====
@@ -11,7 +11,8 @@
fi
}
-run aclocal
-run autoheader
-run automake -a
-run autoconf
+run aclocal19
+run autoheader259
+run automake19 -a
+run autoconf259
+echo '"export"' > VEX/priv/main/vex_svnversion.h
==== //depot/projects/valgrind/cachegrind/Makefile.am#2 (text+ko) ====
@@ -5,6 +5,12 @@
noinst_HEADERS = cg_arch.h cg_sim.c
noinst_PROGRAMS =
+if VG_X86_FREEBSD
+noinst_PROGRAMS += cachegrind-x86-freebsd
+endif
+if VG_AMD64_FREEBSD
+noinst_PROGRAMS += cachegrind-amd64-freebsd
+endif
if VG_X86_LINUX
noinst_PROGRAMS += cachegrind-x86-linux
endif
@@ -24,6 +30,20 @@
CACHEGRIND_SOURCES_PPC32 = cg-ppc32.c
CACHEGRIND_SOURCES_PPC64 = cg-ppc64.c
+cachegrind_x86_freebsd_SOURCES = $(CACHEGRIND_SOURCES_COMMON) $(CACHEGRIND_SOURCES_X86)
+cachegrind_x86_freebsd_CPPFLAGS = $(AM_CPPFLAGS_X86_FREEBSD)
+cachegrind_x86_freebsd_CFLAGS = $(AM_CFLAGS_X86_FREEBSD)
+cachegrind_x86_freebsd_DEPENDENCIES = $(COREGRIND_LIBS_X86_FREEBSD)
+cachegrind_x86_freebsd_LDADD = $(TOOL_LDADD_X86_FREEBSD)
+cachegrind_x86_freebsd_LDFLAGS = $(TOOL_LDFLAGS_X86_FREEBSD)
+
+cachegrind_amd64_freebsd_SOURCES = $(CACHEGRIND_SOURCES_COMMON) $(CACHEGRIND_SOURCES_AMD64)
+cachegrind_amd64_freebsd_CPPFLAGS = $(AM_CPPFLAGS_AMD64_FREEBSD)
+cachegrind_amd64_freebsd_CFLAGS = $(AM_CFLAGS_AMD64_FREEBSD)
+cachegrind_amd64_freebsd_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_FREEBSD)
+cachegrind_amd64_freebsd_LDADD = $(TOOL_LDADD_AMD64_FREEBSD)
+cachegrind_amd64_freebsd_LDFLAGS = $(TOOL_LDFLAGS_AMD64_FREEBSD)
+
cachegrind_x86_linux_SOURCES = $(CACHEGRIND_SOURCES_COMMON) $(CACHEGRIND_SOURCES_X86)
cachegrind_x86_linux_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX)
cachegrind_x86_linux_CFLAGS = $(AM_CFLAGS_X86_LINUX)
==== //depot/projects/valgrind/cachegrind/tests/Makefile.am#2 (text+ko) ====
@@ -3,6 +3,12 @@
include $(top_srcdir)/Makefile.flags.am
SUBDIRS = .
+if VG_X86_FREEBSD
+SUBDIRS += x86
+endif
+if VG_AMD64_FREEBSD
+SUBDIRS += amd64
+endif
if VG_X86_LINUX
SUBDIRS += x86
endif
@@ -33,7 +39,9 @@
AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI)
# C ones
+if !VG_X86_FREEBSD
dlclose_LDADD = -ldl
+endif
myprint_so_SOURCES = myprint.c
myprint_so_LDFLAGS = $(AM_FLAG_M3264_PRI) -shared -fPIC
myprint_so_CFLAGS = $(AM_FLAG_M3264_PRI) -fPIC
==== //depot/projects/valgrind/callgrind/Makefile.am#2 (text+ko) ====
@@ -5,6 +5,12 @@
noinst_HEADERS = global.h costs.h events.h
noinst_PROGRAMS =
+if VG_X86_FREEBSD
+noinst_PROGRAMS += callgrind-x86-freebsd
+endif
+if VG_AMD64_FREEBSD
+noinst_PROGRAMS += callgrind-amd64-freebsd
+endif
if VG_X86_LINUX
noinst_PROGRAMS += callgrind-x86-linux
endif
@@ -30,6 +36,20 @@
CALLGRIND_CFLAGS_COMMON = -I../cachegrind
+callgrind_x86_freebsd_SOURCES = $(CALLGRIND_SOURCES_COMMON) $(CALLGRIND_SOURCES_X86)
+callgrind_x86_freebsd_CPPFLAGS = $(AM_CPPFLAGS_X86_FREEBSD)
+callgrind_x86_freebsd_CFLAGS = $(CALLGRIND_CFLAGS_COMMON) $(AM_CFLAGS_X86_FREEBSD)
+callgrind_x86_freebsd_DEPENDENCIES = $(COREGRIND_LIBS_X86_FREEBSD)
+callgrind_x86_freebsd_LDADD = $(TOOL_LDADD_X86_FREEBSD)
+callgrind_x86_freebsd_LDFLAGS = $(TOOL_LDFLAGS_X86_FREEBSD)
+
+callgrind_amd64_freebsd_SOURCES = $(CALLGRIND_SOURCES_COMMON) $(CALLGRIND_SOURCES_AMD64)
+callgrind_amd64_freebsd_CPPFLAGS = $(AM_CPPFLAGS_AMD64_FREEBSD)
+callgrind_amd64_freebsd_CFLAGS = $(CALLGRIND_CFLAGS_COMMON) $(AM_CFLAGS_AMD64_FREEBSD)
+callgrind_amd64_freebsd_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_FREEBSD)
+callgrind_amd64_freebsd_LDADD = $(TOOL_LDADD_AMD64_FREEBSD)
+callgrind_amd64_freebsd_LDFLAGS = $(TOOL_LDFLAGS_AMD64_FREEBSD)
+
callgrind_x86_linux_SOURCES = $(CALLGRIND_SOURCES_COMMON) $(CALLGRIND_SOURCES_X86)
callgrind_x86_linux_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX)
callgrind_x86_linux_CFLAGS = $(CALLGRIND_CFLAGS_COMMON) $(AM_CFLAGS_X86_LINUX)
==== //depot/projects/valgrind/callgrind/tests/Makefile.am#2 (text+ko) ====
@@ -13,7 +13,11 @@
simwork3.vgtest simwork3.stdout.exp simwork3.stderr.exp \
threads.vgtest threads.stderr.exp
-check_PROGRAMS = clreq simwork threads
+check_PROGRAMS = clreq simwork
+
+if !VG_X86_FREEBSD
+check_PROGRAMS += threads
+endif
AM_CPPFLAGS = -I$(top_srcdir)/include
AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI)
==== //depot/projects/valgrind/configure.in#2 (text+ko) ====
@@ -127,7 +127,7 @@
valt_load_address_inner="0x28000000"
;;
- x86_64)
+ x86_64|amd64)
AC_MSG_RESULT([ok (${host_cpu})])
VG_ARCH="amd64"
valt_load_address_normal="0x38000000"
@@ -289,6 +289,24 @@
fi
AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
;;
+ x86-freebsd)
+ VG_PLATFORM_PRI="X86_FREEBSD"
+ VG_PLATFORM_SEC=""
+ AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
+ ;;
+ amd64-freebsd)
+ if test x$vg_cv_only64bit = xyes; then
+ VG_PLATFORM_PRI="AMD64_FREEBSD"
+ VG_PLATFORM_SEC=""
+ elif test x$vg_cv_only32bit = xyes; then
+ VG_PLATFORM_PRI="X86_FREEBSD"
+ VG_PLATFORM_SEC=""
+ else
+ VG_PLATFORM_PRI="AMD64_FREEBSD"
+ VG_PLATFORM_SEC="X86_FREEBSD"
+ fi
+ AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
+ ;;
*)
VG_PLATFORM_PRI="unknown"
VG_PLATFORM_SEC="unknown"
@@ -309,6 +327,11 @@
-o x$VG_PLATFORM_SEC = xPPC32_LINUX)
AM_CONDITIONAL(VG_PPC64_LINUX,
test x$VG_PLATFORM_PRI = xPPC64_LINUX)
+AM_CONDITIONAL(VG_X86_FREEBSD,
+ test x$VG_PLATFORM_PRI = xX86_FREEBSD \
+ -o x$VG_PLATFORM_SEC = xX86_FREEBSD)
+AM_CONDITIONAL(VG_AMD64_FREEBSD,
+ test x$VG_PLATFORM_PRI = xAMD64_FREEBSD)
# This variable will collect the individual suppression files
@@ -317,6 +340,8 @@
AC_SUBST(DEFAULT_SUPP)
+case "$VG_OS" in
+ linux)
glibc=""
AC_EGREP_CPP([GLIBC_22], [
@@ -391,6 +416,18 @@
AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.5])
;;
esac
+ ;;
+ freebsd)
+AC_MSG_CHECKING([the libc version])
+libc="4x"
+case "${libc}" in
+ 4x)
+ AC_MSG_RESULT(freebsd-4.x family)
+ AC_DEFINE([LIBC_4X], 1, [Define to 1 if you're using FreeBSD-4.x libc])
+ DEFAULT_SUPP="libc-4x.supp ${DEFAULT_SUPP}"
+ ;;
+esac
+esac
# We don't know how to detect the X client library version
==== //depot/projects/valgrind/coregrind/Makefile.am#2 (text+ko) ====
@@ -8,6 +8,8 @@
include $(top_srcdir)/Makefile.core.am
include $(top_srcdir)/Makefile.install.am
+AM_CPPFLAGS_X86_FREEBSD += -DVG_LIBDIR="\"$(valdir)"\"
+AM_CPPFLAGS_AMD64_FREEBSD += -DVG_LIBDIR="\"$(valdir)"\"
AM_CPPFLAGS_X86_LINUX += -DVG_LIBDIR="\"$(valdir)"\"
AM_CPPFLAGS_AMD64_LINUX += -DVG_LIBDIR="\"$(valdir)"\"
AM_CPPFLAGS_PPC32_LINUX += -DVG_LIBDIR="\"$(valdir)"\"
@@ -17,6 +19,12 @@
default.supp: $(SUPP_FILES)
noinst_LIBRARIES =
+if VG_X86_FREEBSD
+noinst_LIBRARIES += libcoregrind_x86_freebsd.a libreplacemalloc_toolpreload_x86_freebsd.a
+endif
+if VG_AMD64_FREEBSD
+noinst_LIBRARIES += libcoregrind_amd64_freebsd.a libreplacemalloc_toolpreload_amd64_freebsd.a
+endif
if VG_X86_LINUX
noinst_LIBRARIES += libcoregrind_x86_linux.a libreplacemalloc_toolpreload_x86_linux.a
endif
@@ -49,6 +57,12 @@
noinst_PROGRAMS =
+if VG_X86_FREEBSD
+noinst_PROGRAMS += vgpreload_core-x86-freebsd.so
+endif
+if VG_AMD64_FREEBSD
+noinst_PROGRAMS += vgpreload_core-amd64-freebsd.so
+endif
if VG_X86_LINUX
noinst_PROGRAMS += vgpreload_core-x86-linux.so
endif
@@ -183,6 +197,38 @@
m_syswrap/syswrap-generic.c \
m_syswrap/syswrap-main.c
+COREGRIND_FREEBSD_SOURCE = \
+ m_coredump/coredump-elf.c \
+ m_syswrap/syswrap-freebsd.c \
+ m_syswrap/syswrap-freebsd-variants.c
+
+libcoregrind_x86_freebsd_a_SOURCES = \
+ $(COREGRIND_SOURCES_COMMON) \
+ $(COREGRIND_FREEBSD_SOURCE) \
+ m_coredump/coredump-x86-freebsd.c \
+ m_dispatch/dispatch-x86-freebsd.S \
+ m_sigframe/sigframe-x86-freebsd.c \
+ m_syswrap/syscall-x86-freebsd.S \
+ m_syswrap/syswrap-x86-freebsd.c \
+ m_syswrap/sysargcount.c
+
+libcoregrind_x86_freebsd_a_CPPFLAGS = $(AM_CPPFLAGS_X86_FREEBSD)
+libcoregrind_x86_freebsd_a_CFLAGS = $(AM_CFLAGS_X86_FREEBSD)
+libcoregrind_x86_freebsd_a_CCASFLAGS = $(AM_CCASFLAGS_X86_FREEBSD)
+
+libcoregrind_amd64_freebsd_a_SOURCES = \
+ $(COREGRIND_SOURCES_COMMON) \
+ $(COREGRIND_FREEBSD_SOURCE) \
+ m_coredump/coredump-amd64-freebsd.c \
+ m_dispatch/dispatch-amd64-freebsd.S \
+ m_sigframe/sigframe-amd64-freebsd.c \
+ m_syswrap/syscall-amd64-freebsd.S \
+ m_syswrap/syswrap-amd64-freebsd.c
+
+libcoregrind_amd64_freebsd_a_CPPFLAGS = $(AM_CPPFLAGS_AMD64_FREEBSD)
+libcoregrind_amd64_freebsd_a_CFLAGS = $(AM_CFLAGS_AMD64_FREEBSD)
+libcoregrind_amd64_freebsd_a_CCASFLAGS = $(AM_CCASFLAGS_AMD64_FREEBSD)
+
COREGRIND_LINUX_SOURCE = \
m_coredump/coredump-elf.c \
m_syswrap/syswrap-linux.c \
@@ -240,6 +286,14 @@
libcoregrind_ppc64_linux_a_CFLAGS = $(AM_CFLAGS_PPC64_LINUX)
libcoregrind_ppc64_linux_a_CCASFLAGS = $(AM_CCASFLAGS_PPC64_LINUX)
+libreplacemalloc_toolpreload_x86_freebsd_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
+libreplacemalloc_toolpreload_x86_freebsd_a_CPPFLAGS = $(AM_CPPFLAGS_X86_FREEBSD)
+libreplacemalloc_toolpreload_x86_freebsd_a_CFLAGS = $(AM_CFLAGS_X86_FREEBSD) -fpic -fno-omit-frame-pointer
+
+libreplacemalloc_toolpreload_amd64_freebsd_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
+libreplacemalloc_toolpreload_amd64_freebsd_a_CPPFLAGS = $(AM_CPPFLAGS_AMD64_FREEBSD)
+libreplacemalloc_toolpreload_amd64_freebsd_a_CFLAGS = $(AM_CFLAGS_AMD64_FREEBSD) -fpic -fno-omit-frame-pointer
+
libreplacemalloc_toolpreload_x86_linux_a_SOURCES = m_replacemalloc/vg_replace_malloc.c
libreplacemalloc_toolpreload_x86_linux_a_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX)
libreplacemalloc_toolpreload_x86_linux_a_CFLAGS = $(AM_CFLAGS_X86_LINUX) -fpic -fno-omit-frame-pointer
@@ -256,6 +310,11 @@
libreplacemalloc_toolpreload_ppc64_linux_a_CPPFLAGS = $(AM_CPPFLAGS_PPC64_LINUX)
libreplacemalloc_toolpreload_ppc64_linux_a_CFLAGS = $(AM_CFLAGS_PPC64_LINUX) -fpic -fno-omit-frame-pointer
+m_dispatch/dispatch-x86-freebsd.S: libvex_guest_offsets.h
+m_dispatch/dispatch-amd64-freebsd.S: libvex_guest_offsets.h
+m_syswrap/syscall-x86-freebsd.S: libvex_guest_offsets.h
+m_syswrap/syscall-amd64-freebsd.S: libvex_guest_offsets.h
+
m_dispatch/dispatch-x86-linux.S: libvex_guest_offsets.h
m_dispatch/dispatch-amd64-linux.S: libvex_guest_offsets.h
m_dispatch/dispatch-ppc32-linux.S: libvex_guest_offsets.h
@@ -271,6 +330,16 @@
VGPRELOAD_CORE_SOURCES_COMMON = vg_preloaded.c
+vgpreload_core_x86_freebsd_so_SOURCES = $(VGPRELOAD_CORE_SOURCES_COMMON)
+vgpreload_core_x86_freebsd_so_CPPFLAGS = $(AM_CPPFLAGS_X86_FREEBSD)
+vgpreload_core_x86_freebsd_so_CFLAGS = $(AM_CFLAGS_X86_FREEBSD) $(AM_CFLAGS_PIC)
+vgpreload_core_x86_freebsd_so_LDFLAGS = $(PRELOAD_LDFLAGS_X86_FREEBSD)
+
+vgpreload_core_amd64_freebsd_so_SOURCES = $(VGPRELOAD_CORE_SOURCES_COMMON)
+vgpreload_core_amd64_freebsd_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_FREEBSD)
+vgpreload_core_amd64_freebsd_so_CFLAGS = $(AM_CFLAGS_AMD64_FREEBSD) $(AM_CFLAGS_PIC)
+vgpreload_core_amd64_freebsd_so_LDFLAGS = $(PRELOAD_LDFLAGS_AMD64_FREEBSD)
+
vgpreload_core_x86_linux_so_SOURCES = $(VGPRELOAD_CORE_SOURCES_COMMON)
vgpreload_core_x86_linux_so_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX)
vgpreload_core_x86_linux_so_CFLAGS = $(AM_CFLAGS_X86_LINUX) $(AM_CFLAGS_PIC)
==== //depot/projects/valgrind/coregrind/launcher.c#2 (text+ko) ====
@@ -42,7 +42,7 @@
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
-#include <sys/user.h>
+/* #include <sys/user.h> */
#include <unistd.h>
#include "pub_core_debuglog.h"
@@ -239,6 +239,10 @@
mode. */
if (0==strcmp(VG_PLATFORM,"x86-linux"))
default_platform = "x86-linux";
+ else if (0==strcmp(VG_PLATFORM,"x86-freebsd"))
+ default_platform = "x86-freebsd";
+ else if (0==strcmp(VG_PLATFORM,"amd64-freebsd"))
+ default_platform = "amd64-freebsd";
else if (0==strcmp(VG_PLATFORM,"amd64-linux"))
default_platform = "amd64-linux";
else if (0==strcmp(VG_PLATFORM,"ppc32-linux"))
@@ -268,14 +272,27 @@
we can tell stage2. stage2 will use the name for recursive
invokations of valgrind on child processes. */
memset(launcher_name, 0, PATH_MAX+1);
+#if defined(VGO_linux)
r = readlink("/proc/self/exe", launcher_name, PATH_MAX);
+#elif defined(VGO_freebsd)
+ r = readlink("/proc/curproc/file", launcher_name, PATH_MAX);
+#else
+#error "unknown OS"
+#endif
if (r == -1) {
/* If /proc/self/exe can't be followed, don't give up. Instead
continue with an empty string for VALGRIND_LAUNCHER. In the
sys_execve wrapper, this is tested, and if found to be empty,
fail the execve. */
+#if defined(VGO_linux)
fprintf(stderr, "valgrind: warning (non-fatal): "
"readlink(\"/proc/self/exe\") failed.\n");
+#elif defined(VGO_freebsd)
+ fprintf(stderr, "valgrind: warning (non-fatal): "
+ "readlink(\"/proc/curproc/file\") failed.\n");
+#else
+#error "unknown OS"
+#endif
fprintf(stderr, "valgrind: continuing, however --trace-children=yes "
"will not work.\n");
}
==== //depot/projects/valgrind/coregrind/m_aspacemgr/aspacemgr.c#2 (text+ko) ====
@@ -449,6 +449,13 @@
# elif defined(VGP_amd64_linux) || defined(VGP_ppc64_linux)
res = VG_(do_syscall6)(__NR_mmap, (UWord)start, length,
prot, flags, fd, offset);
+# elif defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd)
+ if (flags & VKI_MAP_ANONYMOUS && fd == 0)
+ fd = -1;
+ // AAA: fix 64 bit start
+ // QQQ: truncates to 32 bit offset!!
+ res = VG_(do_syscall7)(__NR_mmap, (UWord)start, length,
+ prot, flags, fd, 0, offset);
# else
# error Unknown platform
# endif
@@ -468,6 +475,7 @@
static SysRes do_extend_mapping_NO_NOTIFY( Addr old_addr, SizeT old_len,
SizeT new_len )
{
+#ifdef VGO_linux
/* Extend the mapping old_addr .. old_addr+old_len-1 to have length
new_len, WITHOUT moving it. If it can't be extended in place,
fail. */
@@ -477,6 +485,12 @@
0/*flags, meaning: must be at old_addr, else FAIL */,
0/*new_addr, is ignored*/
);
+#else
+ SysRes res;
+ res.isError = 1;
+ res.val = 1;
+ return res;
+#endif
}
static SysRes do_relocate_nooverlap_mapping_NO_NOTIFY(
@@ -484,6 +498,7 @@
Addr new_addr, Addr new_len
)
{
+#ifdef VGO_linux
/* Move the mapping old_addr .. old_addr+old_len-1 to the new
location and with the new length. Only needs to handle the case
where the two areas do not overlap, neither length is zero, and
@@ -494,6 +509,12 @@
VKI_MREMAP_MAYMOVE|VKI_MREMAP_FIXED/*move-or-fail*/,
new_addr
);
+#else
+ SysRes res;
+ res.isError = 1;
+ res.val = 1;
+ return res;
+#endif
}
static Int aspacem_readlink(HChar* path, HChar* buf, UInt bufsiz)
@@ -519,7 +540,9 @@
static void aspacem_exit( Int status )
{
+#ifdef VGO_linux
(void)VG_(do_syscall1)(__NR_exit_group, status );
+#endif
(void)VG_(do_syscall1)(__NR_exit, status );
/* Why are we still alive here? */
/*NOTREACHED*/
@@ -581,6 +604,7 @@
/* Given a file descriptor, attempt to deduce its filename. To do
this, we use /proc/self/fd/<FD>. If this doesn't point to a file,
or if it doesn't exist, we return False. */
+#if defined(VGO_linux)
static
Bool get_name_for_fd ( Int fd, /*OUT*/HChar* buf, Int nbuf )
{
@@ -595,6 +619,49 @@
else
return False;
}
+#elif defined(VGO_freebsd)
+static
+Bool get_name_for_fd ( Int fd, HChar* buf, Int nbuf )
+{
+ static int nr_fromfd = -1;
+ SysRes res;
+ Int i;
+
+ for (i = 0; i < nbuf; i++) buf[i] = 0;
+ if (nr_fromfd == -1) {
+ int oid[2];
+ int real_oid[10];
+ vki_size_t oidlen;
+ char *name = "machdep.getpath_fromfd_num";
+ vki_size_t len;
+ int sc;
+
+ oid[0] = 0; /* magic */
+ oid[1] = 3; /* undocumented */
+ oidlen = sizeof(real_oid);
+ res = VG_(do_syscall6)(__NR___sysctl, (UWord)oid, 2, (UWord)real_oid, (UWord)&oidlen, (UWord)name, strlen(name));
+ oidlen /= sizeof(int);
+ if (!res.isError && oidlen > 0) {
+ len = sizeof(sc);
+ res = VG_(do_syscall6)(__NR___sysctl, (UWord)real_oid, oidlen, (UWord)&sc, (UWord)&len, 0, 0);
+ if (!res.isError && sc > 0)
+ nr_fromfd = sc;
+ }
+ if (nr_fromfd == -1)
+ nr_fromfd = -2;
+ }
+ if (nr_fromfd < 0)
+ return False;
+
+ res = VG_(do_syscall3)(nr_fromfd, fd, (UWord)buf, nbuf);
+ if (!res.isError && buf[0] == '/')
+ return True;
+ else
+ return False;
+}
+#else
+#error undefined os
+#endif
/*-----------------------------------------------------------------*/
@@ -1191,12 +1258,15 @@
same = same
&& seg_prot == prot
+#ifndef VGO_freebsd
&& (cmp_devino
? (nsegments[i].dev == dev && nsegments[i].ino == ino)
: True)
&& (cmp_offsets
? nsegments[i].start-nsegments[i].offset == addr-offset
- : True);
+ : True)
+#endif
+ ;
if (!same) {
sync_check_ok = False;
VG_(debugLog)(
@@ -1712,8 +1782,12 @@
seg.kind = SkAnonV;
if (dev != 0 && ino != 0)
seg.kind = SkFileV;
- if (filename)
+ if (filename) {
+#if defined(VGO_freebsd)
+ seg.kind = SkFileV;
+#endif
seg.fnIdx = allocate_segname( filename );
+ }
if (0) show_nsegment( 2,0, &seg );
add_segment( &seg );
@@ -1761,7 +1835,11 @@
" sp_at_startup = 0x%010llx (supplied)\n",
(ULong)sp_at_startup );
+#ifdef VGP_x86_freebsd
+ aspacem_minAddr = (Addr) 0x00010000; // 64K
+#else
aspacem_minAddr = (Addr) 0x04000000; // 64M
+#endif
# if VG_WORDSIZE == 8
aspacem_maxAddr = (Addr)0x800000000 - 1; // 32G
@@ -1822,10 +1900,18 @@
VG_(am_show_nsegments)(2, "Initial layout");
+#ifdef VGO_freebsd
+ VG_(debugLog)(2, "aspacem", "Reading /proc/curproc/map\n");
+#else
VG_(debugLog)(2, "aspacem", "Reading /proc/self/maps\n");
+#endif
parse_procselfmaps( read_maps_callback, NULL );
+#ifdef VGO_freebsd
+ VG_(am_show_nsegments)(2, "With contents of /proc/curproc/map");
+#else
VG_(am_show_nsegments)(2, "With contents of /proc/self/maps");
+#endif
AM_SANITY_CHECK;
return suggested_clstack_top;
@@ -2378,7 +2464,7 @@
sres = VG_(am_do_mmap_NO_NOTIFY)(
start, length, prot,
VKI_MAP_FIXED|VKI_MAP_PRIVATE|VKI_MAP_ANONYMOUS,
- 0, 0
+ 0, 0
);
if (sres.isError)
return sres;
@@ -2743,6 +2829,7 @@
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list