]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Increase Valgrind's load address to prevent mmap failure.
authorIvo Raisr <ivosh@ivosh.net>
Tue, 16 May 2017 08:22:51 +0000 (08:22 +0000)
committerIvo Raisr <ivosh@ivosh.net>
Tue, 16 May 2017 08:22:51 +0000 (08:22 +0000)
Fixes BZ#374963.

Previously Valgrind failed to start when the executable contained
large text, data or bss segments. The load address was increased
for almost all platforms to 0x58000000 (from 0x38000000),
giving another 512 MB for the executable.

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

NEWS
configure.ac
coregrind/link_tool_exe_darwin.in
coregrind/m_aspacemgr/aspacemgr-linux.c
coregrind/m_gdbserver/server.c
docs/xml/manual-core-adv.xml

diff --git a/NEWS b/NEWS
index b36ad8f67e62ecc3508f9b20b053d3ef6ca78c7e..6c8a9921e4ee2f508838d7546d5a5925cb5234a4 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -152,6 +152,7 @@ where XXXXXX is the bug number as listed below.
 373555  Rename BBPTR to GSPTR as it denotes guest state pointer only
 373938  const IRExpr arguments for matchIRExpr()
 374719  some spelling fixes
+374963  increase valgrind's load address to prevent mmap failure
 375514  valgrind_get_tls_addr() does not work in case of static TLS
 375772  +1 error in get_elf_symbol_info() when computing value of 'hi' address
         for ML_(find_rx_mapping)()
index 810a769901ef194a02f782efb7db8bec326a3e6c..d134aee0dd0144afe2e02144a4ad03617da48584 100644 (file)
@@ -522,8 +522,8 @@ case "$ARCH_MAX-$VGCONF_OS" in
         VGCONF_ARCH_SEC=""
        VGCONF_PLATFORM_PRI_CAPS="X86_LINUX"
        VGCONF_PLATFORM_SEC_CAPS=""
-        valt_load_address_pri_norml="0x38000000"
-        valt_load_address_pri_inner="0x28000000"
+        valt_load_address_pri_norml="0x58000000"
+        valt_load_address_pri_inner="0x38000000"
         valt_load_address_sec_norml="0xUNSET"
         valt_load_address_sec_inner="0xUNSET"
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
@@ -536,24 +536,24 @@ case "$ARCH_MAX-$VGCONF_OS" in
            VGCONF_ARCH_SEC=""
           VGCONF_PLATFORM_PRI_CAPS="AMD64_LINUX"
           VGCONF_PLATFORM_SEC_CAPS=""
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
        elif test x$vg_cv_only32bit = xyes; then
           VGCONF_ARCH_PRI="x86"
            VGCONF_ARCH_SEC=""
           VGCONF_PLATFORM_PRI_CAPS="X86_LINUX"
           VGCONF_PLATFORM_SEC_CAPS=""
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
        else
            VGCONF_ARCH_PRI="amd64"
            VGCONF_ARCH_SEC="x86"
           VGCONF_PLATFORM_PRI_CAPS="AMD64_LINUX"
           VGCONF_PLATFORM_SEC_CAPS="X86_LINUX"
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
-           valt_load_address_sec_norml="0x38000000"
-           valt_load_address_sec_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
+           valt_load_address_sec_norml="0x58000000"
+           valt_load_address_sec_inner="0x38000000"
        fi
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
        ;;
@@ -562,8 +562,8 @@ case "$ARCH_MAX-$VGCONF_OS" in
         VGCONF_ARCH_SEC=""
        VGCONF_PLATFORM_PRI_CAPS="PPC32_LINUX"
        VGCONF_PLATFORM_SEC_CAPS=""
-        valt_load_address_pri_norml="0x38000000"
-        valt_load_address_pri_inner="0x28000000"
+        valt_load_address_pri_norml="0x58000000"
+        valt_load_address_pri_inner="0x38000000"
         valt_load_address_sec_norml="0xUNSET"
         valt_load_address_sec_inner="0xUNSET"
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
@@ -576,24 +576,24 @@ case "$ARCH_MAX-$VGCONF_OS" in
            VGCONF_ARCH_SEC=""
           VGCONF_PLATFORM_PRI_CAPS="PPC64BE_LINUX"
           VGCONF_PLATFORM_SEC_CAPS=""
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
        elif test x$vg_cv_only32bit = xyes; then
           VGCONF_ARCH_PRI="ppc32"
            VGCONF_ARCH_SEC=""
           VGCONF_PLATFORM_PRI_CAPS="PPC32_LINUX"
           VGCONF_PLATFORM_SEC_CAPS=""
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
        else
           VGCONF_ARCH_PRI="ppc64be"
            VGCONF_ARCH_SEC="ppc32"
           VGCONF_PLATFORM_PRI_CAPS="PPC64BE_LINUX"
           VGCONF_PLATFORM_SEC_CAPS="PPC32_LINUX"
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
-           valt_load_address_sec_norml="0x38000000"
-           valt_load_address_sec_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
+           valt_load_address_sec_norml="0x58000000"
+           valt_load_address_sec_inner="0x38000000"
        fi
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
        ;;
@@ -605,8 +605,8 @@ case "$ARCH_MAX-$VGCONF_OS" in
         VGCONF_ARCH_SEC=""
         VGCONF_PLATFORM_PRI_CAPS="PPC64LE_LINUX"
         VGCONF_PLATFORM_SEC_CAPS=""
-        valt_load_address_pri_norml="0x38000000"
-        valt_load_address_pri_inner="0x28000000"
+        valt_load_address_pri_norml="0x58000000"
+        valt_load_address_pri_inner="0x38000000"
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
        ;;
      # Darwin gets identified as 32-bit even when it supports 64-bit.
@@ -623,25 +623,25 @@ case "$ARCH_MAX-$VGCONF_OS" in
            VGCONF_ARCH_SEC=""
           VGCONF_PLATFORM_PRI_CAPS="AMD64_DARWIN"
           VGCONF_PLATFORM_SEC_CAPS=""
-           valt_load_address_pri_norml="0x138000000"
-           valt_load_address_pri_inner="0x128000000"
+           valt_load_address_pri_norml="0x158000000"
+           valt_load_address_pri_inner="0x138000000"
        elif test x$vg_cv_only32bit = xyes; then
            VGCONF_ARCH_PRI="x86"
            VGCONF_ARCH_SEC=""
           VGCONF_PLATFORM_PRI_CAPS="X86_DARWIN"
           VGCONF_PLATFORM_SEC_CAPS=""
           VGCONF_ARCH_PRI_CAPS="x86"
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
        else
            VGCONF_ARCH_PRI="amd64"
            VGCONF_ARCH_SEC="x86"
           VGCONF_PLATFORM_PRI_CAPS="AMD64_DARWIN"
           VGCONF_PLATFORM_SEC_CAPS="X86_DARWIN"
-           valt_load_address_pri_norml="0x138000000"
-           valt_load_address_pri_inner="0x128000000"
-           valt_load_address_sec_norml="0x38000000"
-           valt_load_address_sec_inner="0x28000000"
+           valt_load_address_pri_norml="0x158000000"
+           valt_load_address_pri_inner="0x138000000"
+           valt_load_address_sec_norml="0x58000000"
+           valt_load_address_sec_inner="0x38000000"
        fi
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
        ;;
@@ -649,8 +649,8 @@ case "$ARCH_MAX-$VGCONF_OS" in
        VGCONF_ARCH_PRI="arm"
        VGCONF_PLATFORM_PRI_CAPS="ARM_LINUX"
        VGCONF_PLATFORM_SEC_CAPS=""
-       valt_load_address_pri_norml="0x38000000"
-       valt_load_address_pri_inner="0x28000000"
+       valt_load_address_pri_norml="0x58000000"
+       valt_load_address_pri_inner="0x38000000"
         valt_load_address_sec_norml="0xUNSET"
         valt_load_address_sec_inner="0xUNSET"
        AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
@@ -663,24 +663,24 @@ case "$ARCH_MAX-$VGCONF_OS" in
            VGCONF_ARCH_SEC=""
            VGCONF_PLATFORM_PRI_CAPS="ARM64_LINUX"
            VGCONF_PLATFORM_SEC_CAPS=""
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
         elif test x$vg_cv_only32bit = xyes; then
            VGCONF_ARCH_PRI="arm"
            VGCONF_ARCH_SEC=""
            VGCONF_PLATFORM_PRI_CAPS="ARM_LINUX"
            VGCONF_PLATFORM_SEC_CAPS=""
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
         else
            VGCONF_ARCH_PRI="arm64"
            VGCONF_ARCH_SEC="arm"
            VGCONF_PLATFORM_PRI_CAPS="ARM64_LINUX"
            VGCONF_PLATFORM_SEC_CAPS="ARM_LINUX"
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
-           valt_load_address_sec_norml="0x38000000"
-           valt_load_address_sec_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
+           valt_load_address_sec_norml="0x58000000"
+           valt_load_address_sec_inner="0x38000000"
         fi
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
         ;;
@@ -701,8 +701,8 @@ case "$ARCH_MAX-$VGCONF_OS" in
         VGCONF_ARCH_PRI="mips32"
         VGCONF_PLATFORM_PRI_CAPS="MIPS32_LINUX"
         VGCONF_PLATFORM_SEC_CAPS=""
-        valt_load_address_pri_norml="0x38000000"
-        valt_load_address_pri_inner="0x28000000"
+        valt_load_address_pri_norml="0x58000000"
+        valt_load_address_pri_inner="0x38000000"
         valt_load_address_sec_norml="0xUNSET"
         valt_load_address_sec_inner="0xUNSET"
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
@@ -711,8 +711,8 @@ case "$ARCH_MAX-$VGCONF_OS" in
         VGCONF_ARCH_PRI="mips64"
         VGCONF_PLATFORM_PRI_CAPS="MIPS64_LINUX"
         VGCONF_PLATFORM_SEC_CAPS=""
-        valt_load_address_pri_norml="0x38000000"
-        valt_load_address_pri_inner="0x28000000"
+        valt_load_address_pri_norml="0x58000000"
+        valt_load_address_pri_inner="0x38000000"
         valt_load_address_sec_norml="0xUNSET"
         valt_load_address_sec_inner="0xUNSET"
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
@@ -722,8 +722,8 @@ case "$ARCH_MAX-$VGCONF_OS" in
         VGCONF_ARCH_SEC=""
         VGCONF_PLATFORM_PRI_CAPS="X86_SOLARIS"
         VGCONF_PLATFORM_SEC_CAPS=""
-        valt_load_address_pri_norml="0x38000000"
-        valt_load_address_pri_inner="0x28000000"
+        valt_load_address_pri_norml="0x58000000"
+        valt_load_address_pri_inner="0x38000000"
         valt_load_address_sec_norml="0xUNSET"
         valt_load_address_sec_inner="0xUNSET"
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
@@ -736,24 +736,24 @@ case "$ARCH_MAX-$VGCONF_OS" in
            VGCONF_ARCH_SEC=""
            VGCONF_PLATFORM_PRI_CAPS="AMD64_SOLARIS"
            VGCONF_PLATFORM_SEC_CAPS=""
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
         elif test x$vg_cv_only32bit = xyes; then
            VGCONF_ARCH_PRI="x86"
            VGCONF_ARCH_SEC=""
            VGCONF_PLATFORM_PRI_CAPS="X86_SOLARIS"
            VGCONF_PLATFORM_SEC_CAPS=""
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
         else
            VGCONF_ARCH_PRI="amd64"
            VGCONF_ARCH_SEC="x86"
            VGCONF_PLATFORM_PRI_CAPS="AMD64_SOLARIS"
            VGCONF_PLATFORM_SEC_CAPS="X86_SOLARIS"
-           valt_load_address_pri_norml="0x38000000"
-           valt_load_address_pri_inner="0x28000000"
-           valt_load_address_sec_norml="0x38000000"
-           valt_load_address_sec_inner="0x28000000"
+           valt_load_address_pri_norml="0x58000000"
+           valt_load_address_pri_inner="0x38000000"
+           valt_load_address_sec_norml="0x58000000"
+           valt_load_address_sec_inner="0x38000000"
         fi
         AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
         ;;
index c11995414a23db9bee63d705dbd1eea20ad99fc2..2e00307ca763ce443d1e1447019575689f49fa5a 100644 (file)
@@ -38,7 +38,7 @@
 #
 #   /usr/bin/ld -static -arch x86_64 -macosx_version_min 10.6 \
 #      -o memcheck-amd64-darwin -u __start -e __start \
-#      -image_base 0x138000000 -stack_addr 0x13c000000 \
+#      -image_base 0x158000000 -stack_addr 0x13c000000 \
 #      -stack_size 0x800000 \
 #      memcheck_amd*.o \
 #      ../coregrind/libcoregrind-amd64-darwin.a \
@@ -48,7 +48,7 @@
 #
 #   /usr/bin/ld -static -arch i386 -macosx_version_min 10.6 \
 #      -o memcheck-x86-darwin -u __start -e __start \
-#      -image_base 0x38000000 -stack_addr 0x3c000000 \
+#      -image_base 0x58000000 -stack_addr 0x3c000000 \
 #      -stack_size 0x800000 \
 #      memcheck_x86*.o \
 #      ../coregrind/libcoregrind-x86-darwin.a \
index c68fea976ce65b899f4870b7f153129a64e7fb21..32173c69c214431ebb465a4335683ea2f356660c 100644 (file)
@@ -1655,7 +1655,7 @@ Addr VG_(am_startup) ( Addr sp_at_startup )
       |                                |
       |--------------------------------|
       |          client stack          |
-      |--------------------------------| 0x38000000
+      |--------------------------------| 0x58000000
       |            V's text            |
       |--------------------------------|
       |                                |
@@ -1688,7 +1688,7 @@ Addr VG_(am_startup) ( Addr sp_at_startup )
       |                                |
       |--------------------------------|
       |          client stack          |
-      |--------------------------------| 0x00000000_38000000
+      |--------------------------------| 0x00000000_58000000
       |            V's text            |
       |--------------------------------|
       |                                |
@@ -1723,9 +1723,9 @@ Addr VG_(am_startup) ( Addr sp_at_startup )
 
    aspacem_cStart = aspacem_minAddr;
 #  ifdef ENABLE_INNER
-   suggested_clstack_end = (Addr) 0x27ff0000 - 1; // 64kB below V's text
-#  else
    suggested_clstack_end = (Addr) 0x37ff0000 - 1; // 64kB below V's text
+#  else
+   suggested_clstack_end = (Addr) 0x57ff0000 - 1; // 64kB below V's text
 #  endif
 
    // --- Linux --------------------------------------------
index 1f3d13dfdebc4c731f34d0272b7c5a835b46a013..ca0d7bd5485e8a22629d344f5739b6ae1a747bca 100644 (file)
@@ -339,7 +339,7 @@ int handle_gdb_valgrind_command (char *mon, OutputSink *sink_wanted_at_return)
                do not, suggest a 'likely somewhat working' address: */
             const Addr tool_text_start
                = tooldi ?
-               VG_(DebugInfo_get_text_avma) (tooldi) : 0x38000000;
+               VG_(DebugInfo_get_text_avma) (tooldi) : 0x58000000;
             const NSegment *toolseg
                = tooldi ?
                  VG_(am_find_nsegment) (VG_(DebugInfo_get_text_avma) (tooldi))
index d71b3248313f93f44b32c17da290d77ba25f4a96..80190d6269303839f76cf91b7d5453714a4568a4 100644 (file)
@@ -1516,9 +1516,9 @@ problems or bugs.</para>
 
 <screen><![CDATA[
 (gdb) monitor v.set hostvisibility yes
-(gdb) add-symbol-file /path/to/tool/executable/file/memcheck-x86-linux 0x38000000
+(gdb) add-symbol-file /path/to/tool/executable/file/memcheck-x86-linux 0x58000000
 add symbol table from file "/path/to/tool/executable/file/memcheck-x86-linux" at
-       .text_addr = 0x38000000
+       .text_addr = 0x58000000
 (y or n) y
 Reading symbols from /path/to/tool/executable/file/memcheck-x86-linux...done.
 (gdb)