diff options
| -rw-r--r-- | meta/packages/oprofile/oprofile/fix_debug_search.patch | 222 | ||||
| -rw-r--r-- | meta/packages/oprofile/oprofile/op-cross-compile.patch | 136 | ||||
| -rw-r--r-- | meta/packages/oprofile/oprofile/opstart.patch | 34 | ||||
| -rw-r--r-- | meta/packages/oprofile/oprofile_0.9.3.bb | 15 | ||||
| -rw-r--r-- | meta/packages/oprofile/oprofile_cvs.bb | 22 | 
5 files changed, 378 insertions, 51 deletions
| diff --git a/meta/packages/oprofile/oprofile/fix_debug_search.patch b/meta/packages/oprofile/oprofile/fix_debug_search.patch new file mode 100644 index 0000000000..b894908144 --- /dev/null +++ b/meta/packages/oprofile/oprofile/fix_debug_search.patch @@ -0,0 +1,222 @@ +Index: libutil++/bfd_support.cpp +=================================================================== +RCS file: /cvsroot/oprofile/oprofile/libutil++/bfd_support.cpp,v +retrieving revision 1.9 +diff -u -r1.9 bfd_support.cpp +--- libutil++/bfd_support.cpp	29 Apr 2008 12:07:46 -0000	1.9 ++++ libutil++/bfd_support.cpp	2 Jul 2008 20:55:09 -0000 +@@ -12,8 +12,11 @@ +  + #include "op_bfd.h" + #include "op_fileio.h" ++#include "op_config.h" + #include "string_manip.h" ++#include "file_manip.h" + #include "cverb.h" ++#include "locate_images.h" +  + #include <cstdlib> + #include <cstring> +@@ -42,13 +45,22 @@ + } +  +  +-bool separate_debug_file_exists(string const & name, unsigned long const crc) ++bool separate_debug_file_exists(string & name, unsigned long const crc,  ++                                extra_images const & extra) + { + 	unsigned long file_crc = 0; + 	// The size of 2 * 1024 elements for the buffer is arbitrary. + 	char buffer[2 * 1024]; +-	 +-	ifstream file(name.c_str()); ++ ++	image_error img_ok; ++	string const image_path = extra.find_image_path(name, img_ok, true); ++ ++	if (img_ok != image_ok) ++		return false; ++ ++	name = image_path; ++ ++	ifstream file(image_path.c_str()); + 	if (!file) + 		return false; +  +@@ -281,40 +293,35 @@ + } +  +  +-bool find_separate_debug_file(bfd * ibfd, string const & dir_in, +-                              string const & global_in, string & filename) ++bool find_separate_debug_file(bfd * ibfd, string const & filepath_in,  ++                              string & debug_filename, extra_images const & extra) + { +-	string dir(dir_in); +-	string global(global_in); ++	string filepath(filepath_in); + 	string basename; + 	unsigned long crc32; + 	 + 	if (!get_debug_link_info(ibfd, basename, crc32)) + 		return false; +-	 +-	if (dir.size() > 0 && dir.at(dir.size() - 1) != '/') +-		dir += '/'; +-	 +-	if (global.size() > 0 && global.at(global.size() - 1) != '/') +-		global += '/'; ++ ++	// Work out the image file's directory prefix ++	string filedir = op_dirname(filepath); ++	// Make sure it starts with / ++	if (filedir.size() > 0 && filedir.at(filedir.size() - 1) != '/') ++		filedir += '/'; ++ ++	string first_try(filedir + ".debug/" + basename); ++	string second_try(DEBUGDIR + filedir + basename); ++	string third_try(filedir + basename); +  + 	cverb << vbfd << "looking for debugging file " << basename  + 	      << " with crc32 = " << hex << crc32 << endl; +-	 +-	string first_try(dir + basename); +-	string second_try(dir + ".debug/" + basename); +- +-	if (dir.size() > 0 && dir[0] == '/') +-		dir = dir.substr(1); +  +-	string third_try(global + dir + basename); +-	 +-	if (separate_debug_file_exists(first_try, crc32))  +-		filename = first_try;  +-	else if (separate_debug_file_exists(second_try, crc32)) +-		filename = second_try; +-	else if (separate_debug_file_exists(third_try, crc32)) +-		filename = third_try; ++	if (separate_debug_file_exists(first_try, crc32, extra))  ++		debug_filename = first_try;  ++	else if (separate_debug_file_exists(second_try, crc32, extra)) ++		debug_filename = second_try; ++	else if (separate_debug_file_exists(third_try, crc32, extra)) ++		debug_filename = third_try; + 	else + 		return false; + 	 +Index: libutil++/bfd_support.h +=================================================================== +RCS file: /cvsroot/oprofile/oprofile/libutil++/bfd_support.h,v +retrieving revision 1.5 +diff -u -r1.5 bfd_support.h +--- libutil++/bfd_support.h	28 Apr 2008 21:23:25 -0000	1.5 ++++ libutil++/bfd_support.h	2 Jul 2008 20:55:09 -0000 +@@ -13,6 +13,7 @@ +  + #include "utility.h" + #include "op_types.h" ++#include "locate_images.h" +  + #include <bfd.h> + #include <stdint.h> +@@ -84,9 +85,9 @@ +  */ + extern bool + find_separate_debug_file(bfd * ibfd,  +-                         std::string const & dir_in, +-                         std::string const & global_in, +-                         std::string & filename); ++                         std::string const & filepath_in, ++                         std::string & debug_filename, ++                         extra_images const & extra); +  + /// open the given BFD + bfd * open_bfd(std::string const & file); +Index: libutil++/op_bfd.cpp +=================================================================== +RCS file: /cvsroot/oprofile/oprofile/libutil++/op_bfd.cpp,v +retrieving revision 1.83 +diff -u -r1.83 op_bfd.cpp +--- libutil++/op_bfd.cpp	19 May 2008 23:15:04 -0000	1.83 ++++ libutil++/op_bfd.cpp	2 Jul 2008 20:55:09 -0000 +@@ -97,6 +97,7 @@ + 	: + 	filename(fname), + 	archive_path(extra_images.get_archive_path()), ++	extra_found_images(extra_images), + 	file_size(-1), + 	anon_obj(false) + { +@@ -341,11 +342,8 @@ + 		return debug_info.reset(true); +  + 	// check to see if there is an .debug file +-	string const global(archive_path + DEBUGDIR); +-	string const image_path = archive_path + filename; +-	string const dirname(image_path.substr(0, image_path.rfind('/'))); +  +-	if (find_separate_debug_file(ibfd.abfd, dirname, global, debug_filename)) { ++	if (find_separate_debug_file(ibfd.abfd, filename, debug_filename, extra_found_images)) { + 		cverb << vbfd << "now loading: " << debug_filename << endl; + 		dbfd.abfd = open_bfd(debug_filename); + 		if (dbfd.has_debug_info()) +Index: libutil++/op_bfd.h +=================================================================== +RCS file: /cvsroot/oprofile/oprofile/libutil++/op_bfd.h,v +retrieving revision 1.51 +diff -u -r1.51 op_bfd.h +--- libutil++/op_bfd.h	19 May 2008 23:15:04 -0000	1.51 ++++ libutil++/op_bfd.h	2 Jul 2008 20:55:09 -0000 +@@ -21,6 +21,7 @@ + #include <set> +  + #include "bfd_support.h" ++#include "locate_images.h" + #include "utility.h" + #include "cached_value.h" + #include "op_types.h" +@@ -261,6 +262,9 @@ + 	/// path to archive + 	std::string archive_path; +  ++	/// reference to extra_images ++	extra_images const & extra_found_images; ++ + 	/// file size in bytes + 	off_t file_size; +  +Index: libutil++/op_spu_bfd.cpp +=================================================================== +RCS file: /cvsroot/oprofile/oprofile/libutil++/op_spu_bfd.cpp,v +retrieving revision 1.6 +diff -u -r1.6 op_spu_bfd.cpp +--- libutil++/op_spu_bfd.cpp	29 Apr 2008 12:07:46 -0000	1.6 ++++ libutil++/op_spu_bfd.cpp	2 Jul 2008 20:55:09 -0000 +@@ -43,6 +43,7 @@ + 	       extra_images const & extra_images, bool & ok) + 	: + 	archive_path(extra_images.get_archive_path()), ++	extra_found_images(extra_images), + 	file_size(-1), + 	embedding_filename(fname) + { +Index: pp/oparchive.cpp +=================================================================== +RCS file: /cvsroot/oprofile/oprofile/pp/oparchive.cpp,v +retrieving revision 1.17 +diff -u -r1.17 oparchive.cpp +--- pp/oparchive.cpp	29 Apr 2008 12:07:46 -0000	1.17 ++++ pp/oparchive.cpp	2 Jul 2008 20:55:09 -0000 +@@ -116,11 +116,10 @@ + 		 */ + 		bfd * ibfd = open_bfd(real_exe_name); + 		if (ibfd) { +-			string global(archive_path + DEBUGDIR); + 			string dirname = op_dirname(real_exe_name); + 			string debug_filename; +-			if (find_separate_debug_file(ibfd, dirname, global, +-				debug_filename)) { ++			if (find_separate_debug_file(ibfd, real_exe_name, ++				debug_filename, classes.extra_found_images)) { + 				/* found something copy it over */ + 				string dest_debug_dir = options::outdirectory + + 					dirname + "/.debug/"; diff --git a/meta/packages/oprofile/oprofile/op-cross-compile.patch b/meta/packages/oprofile/oprofile/op-cross-compile.patch new file mode 100644 index 0000000000..bc75b9ac39 --- /dev/null +++ b/meta/packages/oprofile/oprofile/op-cross-compile.patch @@ -0,0 +1,136 @@ +Index: libopagent/Makefile.am +=================================================================== +RCS file: /cvsroot/oprofile/oprofile/libopagent/Makefile.am,v +retrieving revision 1.2 +diff -p -a -u -r1.2 Makefile.am +--- libopagent/Makefile.am	28 Apr 2008 21:23:25 -0000	1.2 ++++ libopagent/Makefile.am	1 Jul 2008 21:56:02 -0000 +@@ -9,9 +9,9 @@ libopagent_la_SOURCES = opagent.c \ +  + EXTRA_DIST = opagent_symbols.ver +  +-nodist_libopagent_la_SOURCES = bfdheader.h +  + libopagent_la_CFLAGS = -fPIC -I ${top_srcdir}/libop -I ${top_srcdir}/libutil ++libopagent_la_LIBADD = $(BFD_LIBS) +  + # Do not increment the major version for this library except to + # intentionally break backward ABI compatability.  Use the +@@ -23,21 +23,3 @@ libopagent_la_LDFLAGS = -version-info  1 + 			-Wl,--version-script=${top_srcdir}/libopagent/opagent_symbols.ver +  +  +-# the bfdheader.h is generated by bfddefines at compile time +-# to extract the machine and architecture ids we need +-# to write out a bfd file for this arch. +-# automake does not support modelling such dependency, but +-# has the variable BUILT_SOURCE for all sources that need to +-# be made before the actual compile +-# see automake info page section 8.4.1 +-BUILT_SOURCES = bfdheader.h +- +-CLEANFILES = bfdheader.h +- +-noinst_PROGRAMS = bfddefines +- +-bfddefines_LDADD = $(BFD_LIBS) +- +-bfdheader.h:	bfddefines +-	./bfddefines bfddefines > $@ +- +Index: libopagent/opagent.c +=================================================================== +RCS file: /cvsroot/oprofile/oprofile/libopagent/opagent.c,v +retrieving revision 1.2 +diff -p -a -u -r1.2 opagent.c +--- libopagent/opagent.c	28 Apr 2008 21:23:25 -0000	1.2 ++++ libopagent/opagent.c	1 Jul 2008 21:56:02 -0000 +@@ -60,12 +60,57 @@ + #include <fcntl.h> + #include <unistd.h> + #include <time.h> ++#include <bfd.h> +  + #include "opagent.h" +-#include "bfdheader.h" + #include "op_config.h" + #include "jitdump.h" +  ++// Declare BFD-related global variables. ++static char * _bfd_target_name; ++static int _bfd_arch; ++static unsigned int _bfd_mach; ++ ++// Define BFD-related global variables. ++static int define_bfd_vars(void) ++{ ++	bfd * bfd; ++	bfd_boolean r; ++	int len; ++#define MAX_PATHLENGTH 2048 ++	char mypath[MAX_PATHLENGTH]; ++      ++	len = readlink("/proc/self/exe", mypath, sizeof(mypath)); ++      ++	if (len < 0) { ++		fprintf(stderr, "libopagent: readlink /proc/self/exe failed\n"); ++		return -1; ++	} ++	if (len >= MAX_PATHLENGTH) { ++		fprintf(stderr, "libopagent: readlink /proc/self/exe returned" ++			" path length longer than %d.\n", MAX_PATHLENGTH); ++ ++		return -1; ++	} ++	mypath[len] = '\0'; ++ ++	bfd_init(); ++	bfd = bfd_openr(mypath, NULL); ++	if (bfd == NULL) { ++		bfd_perror("bfd_openr error. Cannot get required BFD info"); ++		return -1; ++	} ++	r = bfd_check_format(bfd, bfd_object); ++	if (!r) { ++		bfd_perror("bfd_get_arch error. Cannot get required BFD info"); ++		return -1; ++	} ++	_bfd_target_name =  bfd->xvec->name; ++	_bfd_arch = bfd_get_arch(bfd); ++	_bfd_mach = bfd_get_mach(bfd); ++ ++	return 0; ++} + /** +  * Define the version of the opagent library. +  */ +@@ -112,15 +157,16 @@ op_agent_t op_open_agent(void) + 		fprintf(stderr, "%s\n", err_msg); + 		return NULL; + 	} +- ++	if (define_bfd_vars()) ++		return NULL; + 	header.magic = JITHEADER_MAGIC; + 	header.version = JITHEADER_VERSION; +-	header.totalsize = sizeof(header) + strlen(BFD_TARGET_NAME) + 1; ++	header.totalsize = sizeof(header) + strlen(_bfd_target_name) + 1; + 	/* calculate amount of padding '\0' */ + 	pad_cnt = PADDING_8ALIGNED(header.totalsize); + 	header.totalsize += pad_cnt; +-	header.bfd_arch = BFD_ARCH; +-	header.bfd_mach = BFD_MACH; ++	header.bfd_arch = _bfd_arch; ++	header.bfd_mach = _bfd_mach; + 	if (gettimeofday(&tv, NULL)) { + 		fprintf(stderr, "gettimeofday failed\n"); + 		return NULL; +@@ -132,7 +178,7 @@ op_agent_t op_open_agent(void) + 		fprintf(stderr, "%s\n", err_msg); + 		return NULL; + 	} +-	if (!fwrite(BFD_TARGET_NAME, strlen(BFD_TARGET_NAME) + 1, 1, ++	if (!fwrite(_bfd_target_name, strlen(_bfd_target_name) + 1, 1, + 		    dumpfile)) { + 		fprintf(stderr, "%s\n", err_msg); + 		return NULL; diff --git a/meta/packages/oprofile/oprofile/opstart.patch b/meta/packages/oprofile/oprofile/opstart.patch index e8da0922cc..d61c30095f 100644 --- a/meta/packages/oprofile/oprofile/opstart.patch +++ b/meta/packages/oprofile/oprofile/opstart.patch @@ -1,8 +1,8 @@  Index: oprofile/utils/Makefile.am  =================================================================== ---- oprofile.orig/utils/Makefile.am -+++ oprofile/utils/Makefile.am -@@ -3,8 +3,15 @@ AM_CFLAGS = @OP_CFLAGS@ +--- oprofile.orig/utils/Makefile.am	2005-03-31 18:20:41.000000000 +0100 ++++ oprofile/utils/Makefile.am	2008-07-02 15:14:07.000000000 +0100 +@@ -3,8 +3,15 @@   LIBS=@POPT_LIBS@ @LIBERTY_LIBS@ @@ -21,8 +21,8 @@ Index: oprofile/utils/Makefile.am  +		$(LN_S) opstart opstop  Index: oprofile/utils/opstart.c  =================================================================== ---- /dev/null -+++ oprofile/utils/opstart.c +--- /dev/null	1970-01-01 00:00:00.000000000 +0000 ++++ oprofile/utils/opstart.c	2008-07-02 15:14:07.000000000 +0100  @@ -0,0 +1,110 @@  +/**  + * @file opstart.c @@ -136,17 +136,17 @@ Index: oprofile/utils/opstart.c  +  Index: oprofile/configure.in  =================================================================== ---- oprofile.orig/configure.in -+++ oprofile/configure.in -@@ -16,6 +16,7 @@ AM_INIT_AUTOMAKE(oprofile, 0.9.4cvs) +--- oprofile.orig/configure.in	2008-07-02 15:13:58.000000000 +0100 ++++ oprofile/configure.in	2008-07-02 15:17:37.000000000 +0100 +@@ -16,6 +16,7 @@   AM_CONFIG_HEADER(config.h)   AC_PROG_RANLIB  +AC_PROG_LN_S + AC_PROG_LIBTOOL   dnl for the man page - DATE="`date '+%a %d %B %Y'`" -@@ -227,6 +228,8 @@ AC_OUTPUT(Makefile \ +@@ -241,6 +242,8 @@   	doc/xsl/catalog-1.xml \   	doc/oprofile.1 \   	doc/opcontrol.1 \ @@ -157,9 +157,9 @@ Index: oprofile/configure.in   	doc/opannotate.1 \  Index: oprofile/doc/Makefile.am  =================================================================== ---- oprofile.orig/doc/Makefile.am -+++ oprofile/doc/Makefile.am -@@ -11,6 +11,8 @@ STYLESHEETS=$(CHUNK_XHTML_STYLESHEET) $( +--- oprofile.orig/doc/Makefile.am	2008-07-02 15:13:59.000000000 +0100 ++++ oprofile/doc/Makefile.am	2008-07-02 15:14:07.000000000 +0100 +@@ -11,6 +11,8 @@   man_MANS = \   	oprofile.1 \   	opcontrol.1 \ @@ -170,8 +170,8 @@ Index: oprofile/doc/Makefile.am   	opgprof.1 \  Index: oprofile/doc/opstart.1.in  =================================================================== ---- /dev/null -+++ oprofile/doc/opstart.1.in +--- /dev/null	1970-01-01 00:00:00.000000000 +0000 ++++ oprofile/doc/opstart.1.in	2008-07-02 15:14:07.000000000 +0100  @@ -0,0 +1,27 @@  +.TH OPSTART 1 "@DATE@" "oprofile @VERSION@"  +.UC 4 @@ -202,8 +202,8 @@ Index: oprofile/doc/opstart.1.in  +.BR oprofile(1)  Index: oprofile/doc/opstop.1.in  =================================================================== ---- /dev/null -+++ oprofile/doc/opstop.1.in +--- /dev/null	1970-01-01 00:00:00.000000000 +0000 ++++ oprofile/doc/opstop.1.in	2008-07-02 15:14:07.000000000 +0100  @@ -0,0 +1,28 @@  +.TH OPSTOP 1 "@DATE@" "oprofile @VERSION@"  +.UC 4 diff --git a/meta/packages/oprofile/oprofile_0.9.3.bb b/meta/packages/oprofile/oprofile_0.9.3.bb index d0a18588b1..33386e1ab9 100644 --- a/meta/packages/oprofile/oprofile_0.9.3.bb +++ b/meta/packages/oprofile/oprofile_0.9.3.bb @@ -28,18 +28,3 @@ do_configure () {  	cp ${WORKDIR}/acinclude.m4 ${S}/  	autotools_do_configure  } -# Available config options -#  --enable-abi                 enable abi portability code (default is disabled) -#  --enable-pch                 enable precompiled header (default is disabled) -#  --enable-gcov                enable option for gcov coverage testing (default is disabled) -#  --disable-werror            disable -Werror flag (default is enabled for non-release) -#  --disable-optimization      disable optimization flags (default is enabled) -#  --with-kernel-support        Use 2.6 kernel (no kernel source tree required) -#  --with-linux=dir             Path to Linux source tree -#  --with-module-dir=dir        Path to module installation directory -#  --with-extra-includes=DIR    add extra include paths -#  --with-extra-libs=DIR        add extra library paths -#  --with-x                use the X Window System -#  --with-qt-dir           where the root of Qt is installed -#  --with-qt-includes      where the Qt includes are. -#  --with-qt-libraries     where the Qt library is installed. diff --git a/meta/packages/oprofile/oprofile_cvs.bb b/meta/packages/oprofile/oprofile_cvs.bb index cab065a073..e848bacf4d 100644 --- a/meta/packages/oprofile/oprofile_cvs.bb +++ b/meta/packages/oprofile/oprofile_cvs.bb @@ -1,5 +1,5 @@  PV = "0.9.3+cvs${SRCDATE}" -PR = "r1" +PR = "r4"  SECTION = "devel"  DESCRIPTION = "OProfile is a system-wide profiler for Linux systems, capable \  of profiling all running code at low overhead." @@ -10,14 +10,13 @@ RRECOMMENDS = "kernel-vmlinux"  SRC_URI = "cvs://anonymous@oprofile.cvs.sourceforge.net/cvsroot/oprofile;module=oprofile \             file://opstart.patch;patch=1 \ +           file://fix_debug_search.patch;patch=1;pnum=0 \ +	   file://op-cross-compile.patch;patch=1;pnum=0 \  	   file://acinclude.m4"  S = "${WORKDIR}/oprofile"  inherit autotools -# NOTE: this disables the build of the kernel modules. -# Should add the oprofile kernel modules, for those with 2.4 -# kernels, as a seperate .oe file.  EXTRA_OECONF = "--with-kernel-support \  		--without-x \  		--disable-werror " @@ -26,18 +25,3 @@ do_configure () {  	cp ${WORKDIR}/acinclude.m4 ${S}/  	autotools_do_configure  } -# Available config options -#  --enable-abi                 enable abi portability code (default is disabled) -#  --enable-pch                 enable precompiled header (default is disabled) -#  --enable-gcov                enable option for gcov coverage testing (default is disabled) -#  --disable-werror            disable -Werror flag (default is enabled for non-release) -#  --disable-optimization      disable optimization flags (default is enabled) -#  --with-kernel-support        Use 2.6 kernel (no kernel source tree required) -#  --with-linux=dir             Path to Linux source tree -#  --with-module-dir=dir        Path to module installation directory -#  --with-extra-includes=DIR    add extra include paths -#  --with-extra-libs=DIR        add extra library paths -#  --with-x                use the X Window System -#  --with-qt-dir           where the root of Qt is installed -#  --with-qt-includes      where the Qt includes are. -#  --with-qt-libraries     where the Qt library is installed. | 
