Initial commit
This commit is contained in:
203
package/devel/valgrind/Makefile
Normal file
203
package/devel/valgrind/Makefile
Normal file
@@ -0,0 +1,203 @@
|
||||
#
|
||||
# Copyright (C) 2006-2013 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=valgrind
|
||||
PKG_VERSION:=3.16.1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=http://sourceware.org/pub/valgrind/
|
||||
PKG_HASH:=c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=GPL-2.0+
|
||||
PKG_CPE_ID:=cpe:/a:valgrind:valgrind
|
||||
|
||||
PKG_FIXUP = autoreconf
|
||||
PKG_INSTALL := 1
|
||||
PKG_BUILD_PARALLEL := 1
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_SSP:=0
|
||||
|
||||
STRIP:=:
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
define Package/valgrind
|
||||
SECTION:=devel
|
||||
CATEGORY:=Development
|
||||
DEPENDS:=@mips||mipsel||i386||x86_64||powerpc||arm_v7||aarch64 +libpthread +librt
|
||||
TITLE:=debugging and profiling tools for Linux
|
||||
URL:=http://www.valgrind.org
|
||||
endef
|
||||
|
||||
define Package/valgrind/default
|
||||
$(Package/valgrind)
|
||||
DEPENDS := valgrind
|
||||
endef
|
||||
|
||||
define Package/valgrind-cachegrind
|
||||
$(Package/valgrind/default)
|
||||
TITLE += (cache profiling)
|
||||
endef
|
||||
|
||||
define Package/valgrind-callgrind
|
||||
$(Package/valgrind/default)
|
||||
TITLE += (callgraph profiling)
|
||||
endef
|
||||
|
||||
define Package/valgrind-drd
|
||||
$(Package/valgrind/default)
|
||||
TITLE += (thread error detection)
|
||||
endef
|
||||
|
||||
define Package/valgrind-massif
|
||||
$(Package/valgrind/default)
|
||||
TITLE += (heap profiling)
|
||||
endef
|
||||
|
||||
define Package/valgrind-helgrind
|
||||
$(Package/valgrind/default)
|
||||
TITLE += (thread debugging)
|
||||
endef
|
||||
|
||||
define Package/valgrind-vgdb
|
||||
$(Package/valgrind/default)
|
||||
TITLE += (GDB interface)
|
||||
endef
|
||||
|
||||
define Package/valgrind/description
|
||||
Valgrind is an award-winning suite of tools for debugging and
|
||||
profiling Linux programs. With the tools that come with Valgrind,
|
||||
you can automatically detect many memory management and threading
|
||||
bugs, avoiding hours of frustrating bug-hunting, making your
|
||||
programs more stable. You can also perform detailed profiling,
|
||||
to speed up and reduce memory use of your programs.
|
||||
endef
|
||||
|
||||
CPU := $(patsubst x86_64,amd64,$(patsubst x86,i386,$(patsubst um,$(ARCH),$(LINUX_KARCH))))
|
||||
|
||||
CONFIGURE_VARS += \
|
||||
UNAME_R=$(LINUX_VERSION)
|
||||
|
||||
ifeq ($(CONFIG_ARCH_64BIT),y)
|
||||
CONFIGURE_ARGS += \
|
||||
--enable-only64bit
|
||||
BITS := 64bit
|
||||
else
|
||||
CONFIGURE_ARGS += \
|
||||
--enable-only32bit
|
||||
BITS := 32bit
|
||||
endif
|
||||
|
||||
CONFIGURE_ARGS += \
|
||||
--enable-lto \
|
||||
--enable-tls \
|
||||
--without-x \
|
||||
--without-mpicc \
|
||||
--without-uiout \
|
||||
--disable-valgrindmi \
|
||||
--disable-tui \
|
||||
--disable-valgrindtk \
|
||||
--without-included-gettext \
|
||||
--with-pagesize=4 \
|
||||
|
||||
define Package/valgrind/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/valgrind* $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/valgrind
|
||||
$(CP) \
|
||||
./files/default.supp \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/none-* \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_core*.so \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/$(BITS)-core*.xml \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/$(BITS)-linux*.xml \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/memcheck-* \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_memcheck*.so \
|
||||
$(1)/usr/lib/valgrind/
|
||||
|
||||
ifneq ($(ARCH),aarch64)
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/$(CPU)-*.xml \
|
||||
$(1)/usr/lib/valgrind/
|
||||
endif
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/bin
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip -g",$(RSTRIP)) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/none-* \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/memcheck-*
|
||||
endef
|
||||
|
||||
define Package/valgrind-cachegrind/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cg_* $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/valgrind
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/cachegrind-* \
|
||||
$(1)/usr/lib/valgrind/
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/bin
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip -g",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/lib/valgrind/cachegrind-*
|
||||
endef
|
||||
|
||||
define Package/valgrind-callgrind/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/callgrind* $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/valgrind
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/callgrind-* \
|
||||
$(1)/usr/lib/valgrind/
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/bin
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip -g",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/lib/valgrind/callgrind-*
|
||||
endef
|
||||
|
||||
define Package/valgrind-drd/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/valgrind
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/drd-* \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_drd*.so \
|
||||
$(1)/usr/lib/valgrind/
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/bin
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip -g",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/lib/valgrind/drd-*
|
||||
endef
|
||||
|
||||
define Package/valgrind-massif/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ms_print $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/valgrind
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/massif-* \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_massif*.so \
|
||||
$(1)/usr/lib/valgrind/
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/bin
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip -g",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/lib/valgrind/massif-*
|
||||
endef
|
||||
|
||||
define Package/valgrind-helgrind/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/valgrind
|
||||
$(CP) \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/helgrind-* \
|
||||
$(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_helgrind*.so \
|
||||
$(1)/usr/lib/valgrind/
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/bin
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip -g",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/lib/valgrind/helgrind-*
|
||||
endef
|
||||
|
||||
define Package/valgrind-vgdb/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vgdb $(1)/usr/bin/
|
||||
$(patsubst STRIP=%,STRIP="$(TARGET_CROSS)strip",$(RSTRIP)) $(PKG_INSTALL_DIR)/usr/bin
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,valgrind))
|
||||
$(eval $(call BuildPackage,valgrind-cachegrind))
|
||||
$(eval $(call BuildPackage,valgrind-callgrind))
|
||||
$(eval $(call BuildPackage,valgrind-drd))
|
||||
$(eval $(call BuildPackage,valgrind-massif))
|
||||
$(eval $(call BuildPackage,valgrind-helgrind))
|
||||
$(eval $(call BuildPackage,valgrind-vgdb))
|
||||
42
package/devel/valgrind/files/default.supp
Normal file
42
package/devel/valgrind/files/default.supp
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
ld(Addr1)
|
||||
Memcheck:Addr1
|
||||
fun:*
|
||||
obj:/lib/ld-*
|
||||
}
|
||||
{
|
||||
ld(Addr2)
|
||||
Memcheck:Addr2
|
||||
fun:*
|
||||
obj:/lib/ld-*
|
||||
}
|
||||
{
|
||||
ld(Addr4)
|
||||
Memcheck:Addr4
|
||||
fun:*
|
||||
obj:/lib/ld-*
|
||||
}
|
||||
{
|
||||
ld(Cond)
|
||||
Memcheck:Cond
|
||||
fun:*
|
||||
obj:/lib/ld-*
|
||||
}
|
||||
{
|
||||
strlen(Cond)
|
||||
Memcheck:Cond
|
||||
fun:strlen
|
||||
fun:*
|
||||
}
|
||||
{
|
||||
strnlen(Cond)
|
||||
Memcheck:Cond
|
||||
fun:strnlen
|
||||
fun:*
|
||||
}
|
||||
{
|
||||
index(Cond)
|
||||
Memcheck:Cond
|
||||
fun:index
|
||||
fun:*
|
||||
}
|
||||
11
package/devel/valgrind/patches/100-fix_configure_check.patch
Normal file
11
package/devel/valgrind/patches/100-fix_configure_check.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -345,7 +345,7 @@ case "${host_os}" in
|
||||
# Ok, this is linux. Check the kernel version
|
||||
AC_MSG_CHECKING([for the kernel version])
|
||||
|
||||
- kernel=`uname -r`
|
||||
+ kernel=${UNAME_R:-`uname -r`}
|
||||
|
||||
case "${kernel}" in
|
||||
0.*|1.*|2.0.*|2.1.*|2.2.*|2.3.*|2.4.*|2.5.*)
|
||||
@@ -0,0 +1,17 @@
|
||||
Description: Fix FTBFS on armhf by correctly detecting the architecture
|
||||
Origin: vendor
|
||||
Bug-Debian: http://bugs.debian.org/730844
|
||||
Author: Alessandro Ghedini <ghedo@debian.org>
|
||||
Last-Update: 2013-11-30
|
||||
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -252,7 +252,7 @@ case "${host_cpu}" in
|
||||
ARCH_MAX="s390x"
|
||||
;;
|
||||
|
||||
- armv7*)
|
||||
+ arm*)
|
||||
AC_MSG_RESULT([ok (${host_cpu})])
|
||||
ARCH_MAX="arm"
|
||||
;;
|
||||
68
package/devel/valgrind/patches/130-mips_fix_soft_float.patch
Normal file
68
package/devel/valgrind/patches/130-mips_fix_soft_float.patch
Normal file
@@ -0,0 +1,68 @@
|
||||
Disable the valgrind helpers which use MIPS floating point operations
|
||||
when floating point support is deactivated in the toolchain.
|
||||
|
||||
The fix from this commit is not sufficient any more:
|
||||
https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=869fcf2f6739f17b4eff36ec68f8dca826c8afeb
|
||||
|
||||
This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
|
||||
---------------------------------------------------------
|
||||
../VEX/priv/guest_mips_helpers.c: In function 'mips_dirtyhelper_calculate_FCSR_fp32':
|
||||
../VEX/priv/guest_mips_helpers.c:640:10: error: the register '$f21' cannot be clobbered in 'asm' for the current target
|
||||
640 | ASM_VOLATILE_UNARY32_DOUBLE(round.w.d)
|
||||
| ^
|
||||
---------------------------------------------------------
|
||||
|
||||
--- a/VEX/priv/guest_mips_helpers.c
|
||||
+++ b/VEX/priv/guest_mips_helpers.c
|
||||
@@ -617,6 +617,7 @@ extern UInt mips_dirtyhelper_calculate_F
|
||||
flt_op inst )
|
||||
{
|
||||
UInt ret = 0;
|
||||
+#ifndef __mips_soft_float
|
||||
#if defined(__mips__)
|
||||
VexGuestMIPS32State* guest_state = (VexGuestMIPS32State*)gs;
|
||||
UInt loFsVal, hiFsVal, loFtVal, hiFtVal;
|
||||
@@ -699,6 +700,7 @@ extern UInt mips_dirtyhelper_calculate_F
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
+#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -708,6 +710,7 @@ extern UInt mips_dirtyhelper_calculate_F
|
||||
flt_op inst )
|
||||
{
|
||||
UInt ret = 0;
|
||||
+#ifndef __mips_soft_float
|
||||
#if defined(__mips__) && ((__mips == 64) || \
|
||||
(defined(__mips_isa_rev) && (__mips_isa_rev >= 2)))
|
||||
#if defined(VGA_mips32)
|
||||
@@ -860,6 +863,7 @@ extern UInt mips_dirtyhelper_calculate_F
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
+#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
--- a/coregrind/m_machine.c
|
||||
+++ b/coregrind/m_machine.c
|
||||
@@ -1828,6 +1828,7 @@ Bool VG_(machine_get_hwcaps)( void )
|
||||
we are using alternative way to determine FP mode */
|
||||
ULong result = 0;
|
||||
|
||||
+#ifndef __mips_soft_float
|
||||
if (!VG_MINIMAL_SETJMP(env_unsup_insn)) {
|
||||
__asm__ volatile (
|
||||
".set push\n\t"
|
||||
@@ -1845,6 +1846,9 @@ Bool VG_(machine_get_hwcaps)( void )
|
||||
|
||||
fpmode = (result != 0x3FF0000000000000ull);
|
||||
}
|
||||
+#else
|
||||
+ fpmode = 0;
|
||||
+#endif
|
||||
}
|
||||
|
||||
if (fpmode != 0)
|
||||
Reference in New Issue
Block a user