From 16091faf1e33f7508a1b286e922689904c39b33a Mon Sep 17 00:00:00 2001 From: Hans-Christian Egtvedt Date: Wed, 17 Sep 2008 08:51:54 +0000 Subject: [PATCH] oprofile: convert oprofile.mk to use Makefile.autotools.in and bump version This patch bumps the version to 0.9.4 and converts the oprofile.mk to use Makefile.autotools.in. Patches against 0.9.3 are removed since they are no longer needed and a new patch for 0.9.4 is added. Building for all architectures should now also be possible. Signed-off-by: Hans-Christian Egtvedt Signed-off-by: Fathi Boudra --- package/oprofile/oprofile-0.9.3-avr32.patch | 128 ------------------ ...le-0.9.4-avr32-enable-lookup_dcookie.patch | 24 ++++ .../oprofile/oprofile-dont-use-kill-s.patch | 65 --------- .../oprofile-fix-autoconf-brain-damage.patch | 13 -- package/oprofile/oprofile.mk | 85 ++++-------- 5 files changed, 52 insertions(+), 263 deletions(-) delete mode 100644 package/oprofile/oprofile-0.9.3-avr32.patch create mode 100644 package/oprofile/oprofile-0.9.4-avr32-enable-lookup_dcookie.patch delete mode 100644 package/oprofile/oprofile-dont-use-kill-s.patch delete mode 100644 package/oprofile/oprofile-fix-autoconf-brain-damage.patch diff --git a/package/oprofile/oprofile-0.9.3-avr32.patch b/package/oprofile/oprofile-0.9.3-avr32.patch deleted file mode 100644 index 708efccec8..0000000000 --- a/package/oprofile/oprofile-0.9.3-avr32.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 39ec366414a52eec3ac9db6b639965fef78601e3 Mon Sep 17 00:00:00 2001 -From: Haavard Skinnemoen -Date: Wed, 31 Oct 2007 20:38:48 +0100 -Subject: [PATCH] Oprofile: Add support for AVR32 - -Signed-off-by: Haavard Skinnemoen ---- - events/Makefile.am | 1 + - events/avr32/events | 27 +++++++++++++++++++++++++++ - events/avr32/unit_masks | 4 ++++ - libop/op_cpu_type.c | 1 + - libop/op_cpu_type.h | 1 + - libop/op_events.c | 1 + - utils/ophelp.c | 5 +++++ - 7 files changed, 40 insertions(+), 0 deletions(-) - create mode 100644 events/avr32/events - create mode 100644 events/avr32/unit_masks - -diff --git a/events/Makefile.am b/events/Makefile.am -index 6efaa2e..4681d34 100644 ---- a/events/Makefile.am -+++ b/events/Makefile.am -@@ -32,6 +32,7 @@ event_files = \ - arm/xscale2/events arm/xscale2/unit_masks \ - arm/armv6/events arm/armv6/unit_masks \ - arm/mpcore/events arm/mpcore/unit_masks \ -+ avr32/events avr32/unit_masks \ - mips/20K/events mips/20K/unit_masks \ - mips/24K/events mips/24K/unit_masks \ - mips/25K/events mips/25K/unit_masks \ -diff --git a/events/avr32/events b/events/avr32/events -new file mode 100644 -index 0000000..489d914 ---- /dev/null -+++ b/events/avr32/events -@@ -0,0 +1,27 @@ -+# AVR32 events -+# -+event:0x00 counters:1,2 um:zero minimum:500 name:IFU_IFETCH_MISS : number of instruction fetch misses -+event:0x01 counters:1,2 um:zero minimum:500 name:CYCLES_IFU_MEM_STALL : cycles instruction fetch pipe is stalled -+event:0x02 counters:1,2 um:zero minimum:500 name:CYCLES_DATA_STALL : cycles stall due to data dependency -+event:0x03 counters:1,2 um:zero minimum:500 name:ITLB_MISS : number of Instruction TLB misses -+event:0x04 counters:1,2 um:zero minimum:500 name:DTLB_MISS : number of Data TLB misses -+event:0x05 counters:1,2 um:zero minimum:500 name:BR_INST_EXECUTED : branch instruction executed w/ or w/o program flow change -+event:0x06 counters:1,2 um:zero minimum:500 name:BR_INST_MISS_PRED : branch mispredicted -+event:0x07 counters:1,2 um:zero minimum:500 name:INSN_EXECUTED : instructions executed -+event:0x08 counters:1,2 um:zero minimum:500 name:DCACHE_WBUF_FULL : data cache write buffers full -+event:0x09 counters:1,2 um:zero minimum:500 name:CYCLES_DCACHE_WBUF_FULL : cycles stalled due to data cache write buffers full -+event:0x0a counters:1,2 um:zero minimum:500 name:DCACHE_READ_MISS : data cache read miss -+event:0x0b counters:1,2 um:zero minimum:500 name:CYCLES_DCACHE_READ_MISS : cycles stalled due to data cache read miss -+event:0x0c counters:1,2 um:zero minimum:500 name:WRITE_ACCESS : write access -+event:0x0d counters:1,2 um:zero minimum:500 name:CYCLES_WRITE_ACCESS : cycles when write access is ongoing -+event:0x0e counters:1,2 um:zero minimum:500 name:READ_ACCESS : read access -+event:0x0f counters:1,2 um:zero minimum:500 name:CYCLES_READ_ACCESS : cycles when read access is ongoing -+event:0x10 counters:1,2 um:zero minimum:500 name:CACHE_STALL : read or write access that stalled -+event:0x11 counters:1,2 um:zero minimum:500 name:CYCLES_CACHE_STALL : cycles stalled doing read or write access -+event:0x12 counters:1,2 um:zero minimum:500 name:DCACHE_ACCESS : data cache access -+event:0x13 counters:1,2 um:zero minimum:500 name:CYCLES_DCACHE_ACCESS : cycles when data cache access is ongoing -+event:0x14 counters:1,2 um:zero minimum:500 name:DCACHE_WB : data cache line writeback -+event:0x15 counters:1,2 um:zero minimum:500 name:ACCUMULATOR_HIT : accumulator cache hit -+event:0x16 counters:1,2 um:zero minimum:500 name:ACCUMULATOR_MISS : accumulator cache miss -+event:0x17 counters:1,2 um:zero minimum:500 name:BTB_HIT : branch target buffer hit -+event:0xff counters:0 um:zero minimum:500 name:CPU_CYCLES : clock cycles counter -diff --git a/events/avr32/unit_masks b/events/avr32/unit_masks -new file mode 100644 -index 0000000..37d9839 ---- /dev/null -+++ b/events/avr32/unit_masks -@@ -0,0 +1,4 @@ -+# AVR32 performance counters possible unit masks -+# -+name:zero type:mandatory default:0x00 -+ 0x00 No unit mask -diff --git a/libop/op_cpu_type.c b/libop/op_cpu_type.c -index 04647f0..023397c 100644 ---- a/libop/op_cpu_type.c -+++ b/libop/op_cpu_type.c -@@ -72,6 +72,7 @@ static struct cpu_descr const cpu_descrs[MAX_CPU_TYPE] = { - { "ARM MPCore", "arm/mpcore", CPU_ARM_MPCORE, 2 }, - { "ARM V6 PMU", "arm/armv6", CPU_ARM_V6, 3 }, - { "ppc64 POWER5++", "ppc64/power5++", CPU_PPC64_POWER5pp, 6 }, -+ { "AVR32", "avr32", CPU_AVR32, 3 }, - }; - - static size_t const nr_cpu_descrs = sizeof(cpu_descrs) / sizeof(struct cpu_descr); -diff --git a/libop/op_cpu_type.h b/libop/op_cpu_type.h -index 5c9bde7..d2a624e 100644 ---- a/libop/op_cpu_type.h -+++ b/libop/op_cpu_type.h -@@ -70,6 +70,7 @@ typedef enum { - CPU_ARM_MPCORE, /**< ARM MPCore */ - CPU_ARM_V6, /**< ARM V6 */ - CPU_PPC64_POWER5pp, /**< ppc64 Power5++ family */ -+ CPU_AVR32, /**< AVR32 */ - MAX_CPU_TYPE - } op_cpu; - -diff --git a/libop/op_events.c b/libop/op_events.c -index 2b3c9a9..1ab4bcc 100644 ---- a/libop/op_events.c -+++ b/libop/op_events.c -@@ -788,6 +788,7 @@ void op_default_event(op_cpu cpu_type, struct op_default_event_descr * descr) - case CPU_ARM_XSCALE2: - case CPU_ARM_MPCORE: - case CPU_ARM_V6: -+ case CPU_AVR32: - descr->name = "CPU_CYCLES"; - break; - -diff --git a/utils/ophelp.c b/utils/ophelp.c -index a5a7a02..10ed606 100644 ---- a/utils/ophelp.c -+++ b/utils/ophelp.c -@@ -511,6 +511,11 @@ int main(int argc, char const * argv[]) - "Downloadable from http://www.freescale.com\n"); - break; - -+ case CPU_AVR32: -+ printf("See AVR32 Architecture Manual\n" -+ "Chapter 6: Performance Counters\n" -+ "http://www.atmel.com/dyn/resources/prod_documents/doc32000.pdf\n"); -+ - case CPU_RTC: - break; - --- -1.5.3.4 - diff --git a/package/oprofile/oprofile-0.9.4-avr32-enable-lookup_dcookie.patch b/package/oprofile/oprofile-0.9.4-avr32-enable-lookup_dcookie.patch new file mode 100644 index 0000000000..7c41389465 --- /dev/null +++ b/package/oprofile/oprofile-0.9.4-avr32-enable-lookup_dcookie.patch @@ -0,0 +1,24 @@ +Index: oprofile-0.9.4/daemon/opd_cookie.c +=================================================================== +--- oprofile-0.9.4.orig/daemon/opd_cookie.c 2008-07-25 16:00:17.000000000 +0200 ++++ oprofile-0.9.4/daemon/opd_cookie.c 2008-07-25 16:00:20.000000000 +0200 +@@ -78,6 +78,19 @@ + (unsigned long)(cookie & 0xffffffff), + (unsigned long)(cookie >> 32), buf, size); + } ++#elif (defined(__avr32__)) ++static inline int lookup_dcookie(cookie_t cookie, char * buf, size_t size) ++{ ++ /* On avr32, the first 64bit arg (cookie) is expected to be in ++ * r11(MSW)/r10(LSW) which normally hold arg 2 and arg 3. The second arg ++ * (buf) is then expected to be in r12 which normally holds the first ++ * arg. Third arg (size) is at the right position. ++ */ ++ return syscall(__NR_lookup_dcookie, buf, ++ (unsigned long)(cookie >> 32), ++ (unsigned long)(cookie & 0xffffffff), ++ size); ++} + #else + static inline int lookup_dcookie(cookie_t cookie, char * buf, size_t size) + { diff --git a/package/oprofile/oprofile-dont-use-kill-s.patch b/package/oprofile/oprofile-dont-use-kill-s.patch deleted file mode 100644 index a293fffdb4..0000000000 --- a/package/oprofile/oprofile-dont-use-kill-s.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 34a0afeb251d14c2c98e8b61a85f6621a9ffe3d0 Mon Sep 17 00:00:00 2001 -From: Haavard Skinnemoen -Date: Tue, 6 Nov 2007 19:38:24 +0100 -Subject: [PATCH] opcontrol: don't use kill -s - -Busybox's implementation of "kill" doesn't understand the "-s SIG" -option. Use "-SIG" instead. - -Signed-off-by: Haavard Skinnemoen ---- - utils/opcontrol | 10 +++++----- - 1 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/utils/opcontrol b/utils/opcontrol -index 7cb68a7..5a75cd2 100644 ---- a/utils/opcontrol -+++ b/utils/opcontrol -@@ -908,7 +908,7 @@ do_stop() - return - fi - -- kill -s 0 `cat $LOCK_FILE` 2>/dev/null -+ kill -0 `cat $LOCK_FILE` 2>/dev/null - if test "$?" -ne 0; then - echo "Detected stale lock file. Removing." >&2 - rm -f "$LOCK_FILE" -@@ -919,7 +919,7 @@ do_stop() - echo "Stopping profiling." - echo 0 >/dev/oprofile/enable - fi -- kill -s USR2 `cat $LOCK_FILE` 2>/dev/null -+ kill -USR2 `cat $LOCK_FILE` 2>/dev/null - } - - -@@ -932,7 +932,7 @@ do_kill_daemon() - return - fi - -- kill -s 0 `cat $LOCK_FILE` 2>/dev/null -+ kill -0 `cat $LOCK_FILE` 2>/dev/null - if test "$?" -ne 0; then - echo "Detected stale lock file. Removing." >&2 - rm -f "$LOCK_FILE" -@@ -1274,7 +1274,7 @@ do_start_daemon() - { - - if test -f "$LOCK_FILE"; then -- kill -s 0 `cat $LOCK_FILE` 2>/dev/null -+ kill -0 `cat $LOCK_FILE` 2>/dev/null - if test "$?" -eq 0; then - return; - else -@@ -1341,7 +1341,7 @@ do_start() - if test "$KERNEL_SUPPORT" = "yes"; then - echo 1 >$MOUNT/enable - fi -- kill -s USR1 `cat $LOCK_FILE` 2>/dev/null -+ kill -USR1 `cat $LOCK_FILE` 2>/dev/null - echo "Profiler running." - } - --- -1.5.3.4 - diff --git a/package/oprofile/oprofile-fix-autoconf-brain-damage.patch b/package/oprofile/oprofile-fix-autoconf-brain-damage.patch deleted file mode 100644 index 4551ee3d22..0000000000 --- a/package/oprofile/oprofile-fix-autoconf-brain-damage.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/libutil++/bfd_support.cpp b/libutil++/bfd_support.cpp -index a33836f..9b0d1b2 100644 ---- a/libutil++/bfd_support.cpp -+++ b/libutil++/bfd_support.cpp -@@ -415,7 +415,7 @@ void bfd_info::close() - } - - --#if SYNTHESIZE_SYMBOLS -+#if SYNTHESIZE_SYMBOLS && 0 - bool bfd_info::get_synth_symbols() - { - extern const bfd_target bfd_elf64_powerpc_vec; diff --git a/package/oprofile/oprofile.mk b/package/oprofile/oprofile.mk index a82d6ab7c7..066dbd2e7b 100644 --- a/package/oprofile/oprofile.mk +++ b/package/oprofile/oprofile.mk @@ -3,72 +3,43 @@ # oprofile # ############################################################# -OPROFILE_VERSION := 0.9.3 -OPROFILE_DIR := $(BUILD_DIR)/oprofile-$(OPROFILE_VERSION) -OPROFILE_SITE := http://prdownloads.sourceforge.net/oprofile -OPROFILE_SOURCE := oprofile-$(OPROFILE_VERSION).tar.gz -OPROFILE_CAT := $(ZCAT) - -OPROFILE_BINARIES := utils/ophelp -OPROFILE_BINARIES += pp/opannotate pp/oparchive pp/opgprof pp/opreport -OPROFILE_BINARIES += daemon/oprofiled - -$(DL_DIR)/$(OPROFILE_SOURCE): - $(WGET) -P $(DL_DIR) $(OPROFILE_SITE)/$(OPROFILE_SOURCE) - -oprofile-source: $(DL_DIR)/$(OPROFILE_SOURCE) - -$(OPROFILE_DIR)/.unpacked: $(DL_DIR)/$(OPROFILE_SOURCE) - $(OPROFILE_CAT) $(DL_DIR)/$(OPROFILE_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - - toolchain/patch-kernel.sh $(OPROFILE_DIR) package/oprofile/ \*.patch* - $(CONFIG_UPDATE) $(OPROFILE_DIR) - touch $@ +OPROFILE_VERSION := 0.9.4 +OPROFILE_CONF_OPT := --localstatedir=/var \ + --with-extra-includes="$(BUILD_DIR)/binutils-$(BR2_BINUTILS_VERSION)-target/bfd -I$(TOOL_BUILD_DIR)/binutils-$(BR2_BINUTILS_VERSION)/include" \ + --with-extra-libs=$(BUILD_DIR)/binutils-$(BR2_BINUTILS_VERSION)-target/bfd \ + --with-kernel-support + +OPROFILE_BINARIES := utils/ophelp +OPROFILE_BINARIES += pp/opannotate pp/oparchive pp/opgprof pp/opreport opjitconv/opjitconv +OPROFILE_BINARIES += daemon/oprofiled + +ifeq ($(BR2_powerpc),y) +OPROFILE_ARCH := ppc +endif +ifeq ($(BR2_x86_64),y) +OPROFILE_ARCH := x86-64 +endif +ifeq ($(OPROFILE_ARCH),) +OPROFILE_ARCH := $(BR2_ARCH) +endif -$(OPROFILE_DIR)/.configured: $(OPROFILE_DIR)/.unpacked - (cd $(OPROFILE_DIR); rm -f config.cache; \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - ./configure \ - --target=$(GNU_TARGET_NAME) \ - --host=$(GNU_TARGET_NAME) \ - --build=$(GNU_HOST_NAME) \ - --prefix=/usr \ - --sysconfdir=/etc \ - --localstatedir=/var \ - --includedir=/include \ - ); - touch $@ +OPROFILE_DEPENDENCIES := popt binutils_target -$(OPROFILE_DIR)/daemon/oprofiled: $(OPROFILE_DIR)/.configured - PATH=$(TARGET_PATH) $(MAKE) -C $(OPROFILE_DIR) - touch -c $@ +$(eval $(call AUTOTARGETS,package,oprofile)) -$(TARGET_DIR)/usr/bin/oprofiled: $(OPROFILE_DIR)/daemon/oprofiled +$(OPROFILE_TARGET_INSTALL_TARGET): $(INSTALL) -d -m 755 $(TARGET_DIR)/usr/bin - $(INSTALL) -d -m 755 $(TARGET_DIR)/usr/share/oprofile/avr32 - $(INSTALL) -m 644 $(addprefix $(OPROFILE_DIR)/events/avr32/, events unit_masks) $(TARGET_DIR)/usr/share/oprofile/avr32 + $(INSTALL) -d -m 755 $(TARGET_DIR)/usr/share/oprofile + cp -dpfr $(OPROFILE_DIR)/events/$(OPROFILE_ARCH) $(TARGET_DIR)/usr/share/oprofile $(INSTALL) -m 644 $(OPROFILE_DIR)/libregex/stl.pat $(TARGET_DIR)/usr/share/oprofile $(INSTALL) -m 755 $(OPROFILE_DIR)/utils/opcontrol $(TARGET_DIR)/usr/bin $(INSTALL) -m 755 $(addprefix $(OPROFILE_DIR)/, $(OPROFILE_BINARIES)) $(TARGET_DIR)/usr/bin - $(STRIPCMD) --strip-unneeded $(addprefix $(TARGET_DIR)/usr/bin/, $(notdir $(OPROFILE_BINARIES))) - touch -c $@ - -oprofile: uclibc popt binutils_target $(TARGET_DIR)/usr/bin/oprofiled + $(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(addprefix $(TARGET_DIR)/usr/bin/, $(notdir $(OPROFILE_BINARIES))) + touch $@ -oprofile-clean: +$(OPROFILE_TARGET_CLEAN): rm -f $(addprefix $(TARGET_DIR)/usr/bin/, $(notdir $(OPROFILE_BINARIES))) rm -f $(TARGET_DIR)/usr/bin/opcontrol rm -rf $(TARGET_DIR)/usr/share/oprofile -$(MAKE) -C $(OPROFILE_DIR) clean - -oprofile-dirclean: - rm -rf $(OPROFILE_DIR) - -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(strip $(BR2_PACKAGE_OPROFILE)),y) -TARGETS += oprofile -endif + touch $@ -- 2.30.2