packages: add sysprof tool
authorGabor Juhos <juhosg@openwrt.org>
Sun, 20 Oct 2013 15:58:09 +0000 (15:58 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Sun, 20 Oct 2013 15:58:09 +0000 (15:58 +0000)
Add sysprof - preformance profiler
for Linux - to the development tools.

Patches for mips/arm are from openembedded
code.

sysprof-cli <outfile> get required events/stack frames.
Next outfile can be loaded/displayed on PC using
sysprof.

Tool using:
- PERF events
- /proc/kallsyms for kernel symbols

You should compile kernel with profiling enabled,
debug information, symbol table information.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 38466

devel/sysprof/Makefile [new file with mode: 0644]
devel/sysprof/patches/define-NT_GNU_BUILD_ID.patch [new file with mode: 0644]
devel/sysprof/patches/rmb-arm.patch [new file with mode: 0644]
devel/sysprof/patches/rmb-mips.patch [new file with mode: 0644]

diff --git a/devel/sysprof/Makefile b/devel/sysprof/Makefile
new file mode 100644 (file)
index 0000000..9242cf4
--- /dev/null
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2009-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:=sysprof
+PKG_VERSION:=1.2.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://sysprof.com
+PKG_MD5SUM:=a81808d847732f8dafb59d26ec2eebbf
+
+PKG_BUILD_DEPENDS:= glib2
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+define Package/sysprof
+  SECTION:=devel
+  CATEGORY:=Development
+  TITLE:=Sysprof System Profiler
+  URL:=http://sysprof.com
+  DEPENDS:=+glib2
+endef
+
+
+define Package/sysprof/description
+       Sysprof is a statistical, system-wide profiler for Linux
+endef
+
+define Package/sysprof/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sysprof-cli $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,sysprof))
diff --git a/devel/sysprof/patches/define-NT_GNU_BUILD_ID.patch b/devel/sysprof/patches/define-NT_GNU_BUILD_ID.patch
new file mode 100644 (file)
index 0000000..dcc2cbe
--- /dev/null
@@ -0,0 +1,22 @@
+On uclibc elf.h does not have GNU extentions but we need this define
+so we define it locally if its not getting it from elf.h
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Upstream-Status: Pending
+
+Index: git/elfparser.h
+===================================================================
+--- git.orig/elfparser.h       2011-07-16 18:57:41.000000000 -0700
++++ git/elfparser.h    2011-07-16 20:28:54.733829895 -0700
+@@ -17,6 +17,10 @@
+  */
+ #include <glib.h>
++#ifndef NT_GNU_BUILD_ID
++#define NT_GNU_BUILD_ID 3
++#endif
++
+ typedef struct ElfSym ElfSym;
+ typedef struct ElfParser ElfParser;
diff --git a/devel/sysprof/patches/rmb-arm.patch b/devel/sysprof/patches/rmb-arm.patch
new file mode 100644 (file)
index 0000000..a440348
--- /dev/null
@@ -0,0 +1,21 @@
+
+Upstream-Status: Pending
+
+Index: git/util.h
+===================================================================
+--- git.orig/util.h    2010-12-07 22:41:57.156243001 -0600
++++ git/util.h 2010-12-07 22:43:47.616243002 -0600
+@@ -37,4 +37,13 @@
+ #define cpu_relax()     asm volatile("" ::: "memory");
+ #endif
+
++#ifdef __arm__
++/*
++ * Use the __kuser_memory_barrier helper in the CPU helper page. See
++ * arch/arm/kernel/entry-armv.S in the kernel source for details.
++ */
++#define rmb()         ((void(*)(void))0xffff0fa0)()
++#define cpu_relax()   asm volatile("":::"memory")
++#endif
++
+ #endif
diff --git a/devel/sysprof/patches/rmb-mips.patch b/devel/sysprof/patches/rmb-mips.patch
new file mode 100644 (file)
index 0000000..e055b8a
--- /dev/null
@@ -0,0 +1,22 @@
+Upstream-Status: Pending
+
+Index: git/util.h
+===================================================================
+--- git.orig/util.h    2010-12-08 01:22:44.486243001 -0600
++++ git/util.h 2010-12-08 01:23:27.836243001 -0600
+@@ -37,4 +37,15 @@
+ #define cpu_relax()     asm volatile("" ::: "memory");
+ #endif
++#ifdef __mips__
++#define rmb()         asm volatile(                                   \
++                              ".set   mips2\n\t"                      \
++                              "sync\n\t"                              \
++                              ".set   mips0"                          \
++                              : /* no output */                       \
++                              : /* no input */                        \
++                              : "memory")
++#define cpu_relax()   asm volatile("" ::: "memory")
++#endif
++
+ #endif