From: Joakim T. <Joa...@tr...> - 2011-11-14 09:49:19
|
autoreconf produces the these error msgs: libutil++/tests/Makefile.am:4: `:='-style assignments are not portable libutil++/tests/Makefile.am:4: shell $(REALPATH: non-POSIX variable name libutil++/tests/Makefile.am:4: (probably a GNU make extension) Makefile.am: required file `./INSTALL' not found Makefile.am: `automake --add-missing' can install `INSTALL' Makefile.am: required file `./NEWS' not found Makefile.am: required file `./AUTHORS' not found Makefile.am: required file `./ChangeLog' not found autoreconf-2.65: automake failed with exit status: 1 pass foreign to automake to avoid make it comply. Signed-off-by: Joakim Tjernlund <Joa...@tr...> --- configure.in | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configure.in b/configure.in index d23c6c6..6311953 100644 --- a/configure.in +++ b/configure.in @@ -11,8 +11,9 @@ AC_PREREQ(2.13) -AC_INIT(libop/op_config.h) -AM_INIT_AUTOMAKE(oprofile, 0.9.7) +AC_INIT([oprofile], [0.9.7]) +AC_CONFIG_SRCDIR([libop/op_config.h]) +AM_INIT_AUTOMAKE([foreign]) AM_CONFIG_HEADER(config.h) AC_CHECK_DECLS([basename], [], [], [[#include <libgen.h>]]) -- 1.7.3.4 |
From: Joakim T. <Joa...@tr...> - 2011-11-14 09:49:20
|
For some reason, my busybox based target fs have "which" and "dirname" in /bin and opcontrol fails to find them. Assume these 2 commands is in $PATH instead. Signed-off-by: Joakim Tjernlund <Joa...@tr...> --- utils/opcontrol | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/opcontrol b/utils/opcontrol index 0951574..7e1e142 100644 --- a/utils/opcontrol +++ b/utils/opcontrol @@ -2156,8 +2156,8 @@ help_start_daemon_with_ibs() # determine the location of opcontrol and related programs if test -z "$OPDIR"; then BINDIR="/usr/bin" - OPCONTROL=`$BINDIR/which $0` - OPDIR=`$BINDIR/dirname $OPCONTROL` + OPCONTROL=`which $0` + OPDIR=`dirname $OPCONTROL` fi PATH=$OPDIR:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin -- 1.7.3.4 |
From: Joakim T. <Joa...@tr...> - 2011-11-14 09:49:20
|
This make is possible to pass POPT_LIBS="/x/y/libpopt.a" resp. BFD_LIBS="/x/y/libbfd.a" at configure which will link popt/bfd statically. Signed-off-by: Joakim Tjernlund <Joa...@tr...> --- configure.in | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/configure.in b/configure.in index 6311953..e922a0e 100644 --- a/configure.in +++ b/configure.in @@ -213,8 +213,12 @@ AX_CHECK_DOCBOOK dnl finally restore the original libs setting LIBS="$ORIG_SAVE_LIBS" LIBERTY_LIBS="-liberty $DL_LIB $INTL_LIB" -BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $Z_LIB" -POPT_LIBS="-lpopt" + +test "$BFD_LIBS" || BFD_LIBS="-lbfd" +BFD_LIBS+=" -liberty $DL_LIB $INTL_LIB $Z_LIB" + +test "$POPT_LIBS" || POPT_LIBS="-lpopt" + AC_SUBST(LIBERTY_LIBS) AC_SUBST(BFD_LIBS) AC_SUBST(POPT_LIBS) -- 1.7.3.4 |
From: Maynard J. <may...@us...> - 2011-11-15 17:29:19
|
Joakim Tjernlund wrote: > autoreconf produces the these error msgs: > libutil++/tests/Makefile.am:4: `:='-style assignments are not portable > libutil++/tests/Makefile.am:4: shell $(REALPATH: non-POSIX variable name > libutil++/tests/Makefile.am:4: (probably a GNU make extension) > Makefile.am: required file `./INSTALL' not found > Makefile.am: `automake --add-missing' can install `INSTALL' > Makefile.am: required file `./NEWS' not found > Makefile.am: required file `./AUTHORS' not found > Makefile.am: required file `./ChangeLog' not found > autoreconf-2.65: automake failed with exit status: 1 > > pass foreign to automake to avoid make it comply. The oprofile project uses an autogen.sh. From my understanding, the convention is to use one or the other of autogen.sh or autoreconf. Why are you using autoreconf vs the autogen.sh? -Maynard > > Signed-off-by: Joakim Tjernlund <Joa...@tr...> > --- > configure.in | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/configure.in b/configure.in > index d23c6c6..6311953 100644 > --- a/configure.in > +++ b/configure.in > @@ -11,8 +11,9 @@ > > AC_PREREQ(2.13) > > -AC_INIT(libop/op_config.h) > -AM_INIT_AUTOMAKE(oprofile, 0.9.7) > +AC_INIT([oprofile], [0.9.7]) > +AC_CONFIG_SRCDIR([libop/op_config.h]) > +AM_INIT_AUTOMAKE([foreign]) > AM_CONFIG_HEADER(config.h) > > AC_CHECK_DECLS([basename], [], [], [[#include <libgen.h>]]) |
From: Maynard J. <may...@us...> - 2011-11-15 17:35:50
|
Joakim Tjernlund wrote: > For some reason, my busybox based target fs have "which" and "dirname" in > /bin and opcontrol fails to find them. > Assume these 2 commands is in $PATH instead. The BINDIR was added to fix a security vulnerability in the use of an untrusted search path, which could result in something other than the system 'which' (or dirname) to be executed. You *could* add a test to see if /usr/bin/which exists, and if not, try /bin/which (same for dirname). But I'd like to get opinions from other busybox users as to why this might be an issue for you, so I'm adding Joshua Emele to cc (who's the most recent busybox user to submit a patch to the project). -Maynard > > Signed-off-by: Joakim Tjernlund <Joa...@tr...> > --- > utils/opcontrol | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/utils/opcontrol b/utils/opcontrol > index 0951574..7e1e142 100644 > --- a/utils/opcontrol > +++ b/utils/opcontrol > @@ -2156,8 +2156,8 @@ help_start_daemon_with_ibs() > # determine the location of opcontrol and related programs > if test -z "$OPDIR"; then > BINDIR="/usr/bin" > - OPCONTROL=`$BINDIR/which $0` > - OPDIR=`$BINDIR/dirname $OPCONTROL` > + OPCONTROL=`which $0` > + OPDIR=`dirname $OPCONTROL` > fi > > PATH=$OPDIR:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin |
From: Maynard J. <may...@us...> - 2011-11-15 17:53:42
|
Joakim Tjernlund wrote: > This make is possible to pass > POPT_LIBS="/x/y/libpopt.a" resp. > BFD_LIBS="/x/y/libbfd.a" We already have a '--with-binutils' configure option for a non-standard install location for libbfd. As for popt, I really don't see the point. Just use your distro's popt and popt-devel rpms. The reason for the '--with-binutils' option is that some of the binutils tools (e.g., objdump) have architecture-specific backends that may be out-of-date in the distro-supplied binutils. No such issue with popt, AFAIK. -Maynard > at configure which will link popt/bfd statically. > > Signed-off-by: Joakim Tjernlund <Joa...@tr...> > --- > configure.in | 8 ++++++-- > 1 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/configure.in b/configure.in > index 6311953..e922a0e 100644 > --- a/configure.in > +++ b/configure.in > @@ -213,8 +213,12 @@ AX_CHECK_DOCBOOK > dnl finally restore the original libs setting > LIBS="$ORIG_SAVE_LIBS" > LIBERTY_LIBS="-liberty $DL_LIB $INTL_LIB" > -BFD_LIBS="-lbfd -liberty $DL_LIB $INTL_LIB $Z_LIB" > -POPT_LIBS="-lpopt" > + > +test "$BFD_LIBS" || BFD_LIBS="-lbfd" > +BFD_LIBS+=" -liberty $DL_LIB $INTL_LIB $Z_LIB" > + > +test "$POPT_LIBS" || POPT_LIBS="-lpopt" > + > AC_SUBST(LIBERTY_LIBS) > AC_SUBST(BFD_LIBS) > AC_SUBST(POPT_LIBS) |
From: Joakim T. <joa...@tr...> - 2011-11-15 19:41:14
|
Maynard Johnson <may...@us...> wrote on 2011/11/15 18:06:10: > > Joakim Tjernlund wrote: > > autoreconf produces the these error msgs: > > libutil++/tests/Makefile.am:4: `:='-style assignments are not portable > > libutil++/tests/Makefile.am:4: shell $(REALPATH: non-POSIX variable name > > libutil++/tests/Makefile.am:4: (probably a GNU make extension) > > Makefile.am: required file `./INSTALL' not found > > Makefile.am: `automake --add-missing' can install `INSTALL' > > Makefile.am: required file `./NEWS' not found > > Makefile.am: required file `./AUTHORS' not found > > Makefile.am: required file `./ChangeLog' not found > > autoreconf-2.65: automake failed with exit status: 1 > > > > pass foreign to automake to avoid make it comply. > > The oprofile project uses an autogen.sh. From my understanding, the convention is to use one or the other of autogen.sh or autoreconf. Why are you using autoreconf vs the autogen.sh? Out of habit, didn't notice the autogen.sh until later. autoreconf is supposed to replace custom scripts so why not support that too? Jocke |
From: Joakim T. <joa...@tr...> - 2011-11-15 19:42:26
|
Maynard Johnson <may...@us...> wrote on 2011/11/15 18:35:27: > From: Maynard Johnson <may...@us...> > To: Joakim Tjernlund <Joa...@tr...> > Cc: opr...@li..., je...@ac... > Date: 2011/11/15 18:36 > Subject: Re: [PATCH 2/3] Assume which and dirname is in PATH > > Joakim Tjernlund wrote: > > For some reason, my busybox based target fs have "which" and "dirname" in > > /bin and opcontrol fails to find them. > > Assume these 2 commands is in $PATH instead. > The BINDIR was added to fix a security vulnerability in the use of an untrusted search path, which could result in something other than the system 'which' (or dirname) to be executed. You *could* add a test to see if /usr/bin/which exists, and if not, try /bin/which (same for dirname). But I'd like to get opinions from other busybox users as to why this might be an issue for you, so I'm adding Joshua Emele to cc (who's the most recent busybox user to submit a patch to the project). Ahh, might be something odd at my end then. We will see I guess. > > -Maynard |
From: Joshua E. <je...@gm...> - 2011-11-15 22:47:46
|
Hello, I'm using a modified version buildroot (BR2_VERSION is "2009.05") that includes busybox-1.16.0. Here's where I see which and dirname: bash-3.2# find / -name which -exec ls -l {} \; lrwxrwxrwx 1 root 0 17 Nov 11 2011 /usr/bin/which -> ../../bin/busybox bash-3.2# find / -name dirname -exec ls -l {} \; lrwxrwxrwx 1 root 0 17 Nov 11 2011 /usr/bin/dirname -> ../../bin/busybox The location of the busybox binaries in your rootfs is largely determined by the configuration used when building. For example, looking at the busybox package I'm using, INSTALL_NO_USR will place binaries in /bin, instead of using /usr/bin: config INSTALL_NO_USR bool "Don't use /usr" default n help Disable use of /usr. Don't activate this option if you don't know that you really want this behaviour. #if ENABLE_INSTALL_NO_USR # define _BB_DIR_USR_BIN _BB_DIR_BIN # define _BB_DIR_USR_SBIN _BB_DIR_SBIN #endif If you examine the .config file, Do you have INSTALL_NO_USR enabled? Here's what I have: busybox-1.16.0$ grep INSTALL_NO_USR .config # CONFIG_INSTALL_NO_USR is not set Regards, Joshua On Tue, Nov 15, 2011 at 11:42 AM, Joakim Tjernlund <joa...@tr...> wrote: > Maynard Johnson <may...@us...> wrote on 2011/11/15 18:35:27: > >> From: Maynard Johnson <may...@us...> >> To: Joakim Tjernlund <Joa...@tr...> >> Cc: opr...@li..., je...@ac... >> Date: 2011/11/15 18:36 >> Subject: Re: [PATCH 2/3] Assume which and dirname is in PATH >> >> Joakim Tjernlund wrote: >> > For some reason, my busybox based target fs have "which" and "dirname" in >> > /bin and opcontrol fails to find them. >> > Assume these 2 commands is in $PATH instead. >> The BINDIR was added to fix a security vulnerability in the use of an untrusted search path, which could result in something other than the system 'which' (or dirname) to be executed. You *could* add a test to see if /usr/bin/which exists, and if not, try /bin/which (same for dirname). But I'd > like to get opinions from other busybox users as to why this might be an issue for you, so I'm adding Joshua Emele to cc (who's the most recent busybox user to submit a patch to the project). > > Ahh, might be something odd at my end then. We will see I guess. > >> >> -Maynard > > |
From: Joakim T. <joa...@tr...> - 2011-11-15 23:30:31
|
Joshua Emele <je...@gm...> wrote on 2011/11/15 23:47:36: > > Hello, > > I'm using a modified version buildroot (BR2_VERSION is "2009.05") that > includes busybox-1.16.0. Here's where I see which and dirname: > > bash-3.2# find / -name which -exec ls -l {} \; > lrwxrwxrwx 1 root 0 17 Nov 11 2011 > /usr/bin/which -> ../../bin/busybox > bash-3.2# find / -name dirname -exec ls -l {} \; > lrwxrwxrwx 1 root 0 17 Nov 11 2011 > /usr/bin/dirname -> ../../bin/busybox > > The location of the busybox binaries in your rootfs is largely > determined by the configuration used when building. For example, > looking at the busybox package I'm using, INSTALL_NO_USR will place > binaries in /bin, instead of using /usr/bin: > > config INSTALL_NO_USR > bool "Don't use /usr" > default n > help > Disable use of /usr. Don't activate this option if you don't know > that you really want this behaviour. > > #if ENABLE_INSTALL_NO_USR > # define _BB_DIR_USR_BIN _BB_DIR_BIN > # define _BB_DIR_USR_SBIN _BB_DIR_SBIN > #endif > > If you examine the .config file, Do you have INSTALL_NO_USR enabled? > Here's what I have: > > busybox-1.16.0$ grep INSTALL_NO_USR .config > # CONFIG_INSTALL_NO_USR is not set I don't have CONFIG_INSTALL_NO_USR but the links got created long time ago so see two possibilities here: 1) older busybox might have used /bin but later changed to /usr/bin 2) I somehow messed up the creation of which and dirname links and placed at the wrong place. It comes down to: Does oprofile want to support misplaced links and/or busybox with CONFIG_INSTALL_NO_USER? Jocke |
From: Maynard J. <may...@us...> - 2011-11-15 19:49:25
|
Joakim Tjernlund wrote: > Maynard Johnson <may...@us...> wrote on 2011/11/15 18:06:10: >> >> Joakim Tjernlund wrote: >>> autoreconf produces the these error msgs: >>> libutil++/tests/Makefile.am:4: `:='-style assignments are not portable >>> libutil++/tests/Makefile.am:4: shell $(REALPATH: non-POSIX variable name >>> libutil++/tests/Makefile.am:4: (probably a GNU make extension) >>> Makefile.am: required file `./INSTALL' not found >>> Makefile.am: `automake --add-missing' can install `INSTALL' >>> Makefile.am: required file `./NEWS' not found >>> Makefile.am: required file `./AUTHORS' not found >>> Makefile.am: required file `./ChangeLog' not found >>> autoreconf-2.65: automake failed with exit status: 1 >>> >>> pass foreign to automake to avoid make it comply. >> >> The oprofile project uses an autogen.sh. From my understanding, the convention is to use one or the other of autogen.sh or autoreconf. Why are you using autoreconf vs the autogen.sh? > > Out of habit, didn't notice the autogen.sh until later. > autoreconf is supposed to replace custom scripts so why not support that too? Due to the adage of "if it ain't broke, don't fix it". > > Jocke > |
From: Joakim T. <joa...@tr...> - 2011-11-15 23:24:40
|
Maynard Johnson <may...@us...> wrote on 2011/11/15 20:48:15: > > Joakim Tjernlund wrote: > > Maynard Johnson <may...@us...> wrote on 2011/11/15 18:06:10: > >> > >> Joakim Tjernlund wrote: > >>> autoreconf produces the these error msgs: > >>> libutil++/tests/Makefile.am:4: `:='-style assignments are not portable > >>> libutil++/tests/Makefile.am:4: shell $(REALPATH: non-POSIX variable name > >>> libutil++/tests/Makefile.am:4: (probably a GNU make extension) > >>> Makefile.am: required file `./INSTALL' not found > >>> Makefile.am: `automake --add-missing' can install `INSTALL' > >>> Makefile.am: required file `./NEWS' not found > >>> Makefile.am: required file `./AUTHORS' not found > >>> Makefile.am: required file `./ChangeLog' not found > >>> autoreconf-2.65: automake failed with exit status: 1 > >>> > >>> pass foreign to automake to avoid make it comply. > >> > >> The oprofile project uses an autogen.sh. From my understanding, the convention is to use one or the other of autogen.sh or autoreconf. Why are you using autoreconf vs the autogen.sh? > > > > Out of habit, didn't notice the autogen.sh until later. > > autoreconf is supposed to replace custom scripts so why not support that too? > Due to the adage of "if it ain't broke, don't fix it". But it is broken, in a way. Suppose you change Makefile.am and want to regenerate its Makefile.in, what do you do? I usually just run automake, but this fails as described above. Of course you can run autogen.sh too but that will regenerate everything, it like rebuilding all C files just because you changed one file. It is better to put required options in configure.in/.ac where it is always seen. Jocke PS. The same goes for -I m4 to aclocal but I will leave that to you. Jocke |
From: Joakim T. <joa...@tr...> - 2011-11-15 20:00:01
|
Maynard Johnson <may...@us...> wrote on 2011/11/15 18:53:24: > From: Maynard Johnson <may...@us...> > To: Joakim Tjernlund <Joa...@tr...> > Cc: opr...@li... > Date: 2011/11/15 18:59 > Subject: Re: [PATCH 3/3] Make libpopt and libbfd configurable: > > Joakim Tjernlund wrote: > > This make is possible to pass > > POPT_LIBS="/x/y/libpopt.a" resp. > > BFD_LIBS="/x/y/libbfd.a" > We already have a '--with-binutils' configure option for a non-standard install location for libbfd. As for popt, I really don't see the point. Just use your distro's popt and popt-devel rpms. The reason for the '--with-binutils' option is that some of the binutils tools (e.g., objdump) have architecture-specific backends that may be out-of-date in the distro-supplied binutils. No such issue with popt, AFAIK. I tried -with-binutils briefly but I didn't manage to make it work. It could be some gentoo specific(this is a cross compiler built with gentoo crossdev) Our target, an embedded PowerPC board, does not have popt installed and I want to minimize the number of files to install to make it easy install/remove oprofile on the target. We don not have stdc++ either. With my patch and this build script I managed to build a static oprofile for our target: ln -fs `powerpc-softfloat-linux-gnu-g++ -print-file-name=libstdc++.a` ./configure --host powerpc-softfloat-linux-gnu --enable-shared=no --enable-stati c=yes \ LDFLAGS=-static-libgcc \ --without-x \ --enable-gui=no \ --without-java \ POPT_LIBS="/usr/powerpc-softfloat-linux-gnu/usr/lib/libpopt.a" \ BFD_LIBS="/usr/powerpc-softfloat-linux-gnu/usr/lib/binutils/powerpc-softfloa t-linux-gnu/2.16.1/libbfd.a" \ --with-kernel-support \ --with-extra-libs="/usr/powerpc-softfloat-linux-gnu/usr/lib/binutils/powerpc -softfloat-linux-gnu/2.16.1 -L$PWD" You can't force a static lib using -l if both static and dynamic versions are present. The only way I know of is to pass the abs. path to the static lib like above. somewhat offtopic but I cannot make the callgraph option work properly: # > opcontrol --status Daemon paused: pid 21058 Separate options: library vmlinux file: none Image filter: none Call-graph depth: 8 # > opreport --session-dir=/tmp/oprofile/ --symbols -c 1974 3.1267 libnetsnmp.so.5.0.8 snmpd snmp_oid_compare 1974 100.000 libnetsnmp.so.5.0.8 snmpd snmp_oid_compare [self] ------------------------------------------------------------------------------- 1607 2.5454 ld-2.3.6.so eq_monolite do_lookup_x 1607 100.000 ld-2.3.6.so eq_monolite do_lookup_x [self] ------------------------------------------------------------------------------- 1353 2.1431 libnetsnmpagent.so.5.0.8 snmpd netsnmp_subtree_find_prev 1353 100.000 libnetsnmpagent.so.5.0.8 snmpd netsnmp_subtree_find_prev [self] No matter what I do I never get more for any binary than what the above example shows. Any ideas where to start looking? kernel 2.6.35 gcc 3.4.6 binutils 2.16.1 -fno-omit-framepointer is used when building too. |
From: Maynard J. <may...@us...> - 2011-11-16 16:23:01
|
Joakim Tjernlund wrote: > Maynard Johnson <may...@us...> wrote on 2011/11/15 18:53:24: > >> From: Maynard Johnson <may...@us...> >> To: Joakim Tjernlund <Joa...@tr...> >> Cc: opr...@li... >> Date: 2011/11/15 18:59 >> Subject: Re: [PATCH 3/3] Make libpopt and libbfd configurable: >> >> Joakim Tjernlund wrote: >>> This make is possible to pass >>> POPT_LIBS="/x/y/libpopt.a" resp. >>> BFD_LIBS="/x/y/libbfd.a" >> We already have a '--with-binutils' configure option for a non-standard install location for libbfd. As for popt, I really don't see the point. Just use your distro's popt and popt-devel rpms. The reason for the '--with-binutils' option is that some of the binutils tools (e.g., objdump) have > architecture-specific backends that may be out-of-date in the distro-supplied binutils. No such issue with popt, AFAIK. > > I tried -with-binutils briefly but I didn't manage to make it work. It could be some > gentoo specific(this is a cross compiler built with gentoo crossdev) I just verified on my ppc64 server that this option still works. I don't do any cross/embedded development, so I can't even guess what problem you might be running into. Please provide details. I'm adding Richard Purdie to cc as he's our "resident embedded" expert, albeit on ARM, not ppc. > > Our target, an embedded PowerPC board, does not have popt installed and > I want to minimize the number of files to install to make it easy install/remove > oprofile on the target. We don not have stdc++ either. With my patch and this > build script I managed to build a static oprofile for our target: > > ln -fs `powerpc-softfloat-linux-gnu-g++ -print-file-name=libstdc++.a` > ./configure --host powerpc-softfloat-linux-gnu --enable-shared=no --enable-stati > c=yes \ > LDFLAGS=-static-libgcc \ > --without-x \ > --enable-gui=no \ > --without-java \ > POPT_LIBS="/usr/powerpc-softfloat-linux-gnu/usr/lib/libpopt.a" \ > BFD_LIBS="/usr/powerpc-softfloat-linux-gnu/usr/lib/binutils/powerpc-softfloa > t-linux-gnu/2.16.1/libbfd.a" \ Well, if you can this (setting BFD_LIBS) to work, fine. I personally can't see how that would work, since you aren't including libiberty.a, which is also needed by oprofile. > --with-kernel-support \ > --with-extra-libs="/usr/powerpc-softfloat-linux-gnu/usr/lib/binutils/powerpc > -softfloat-linux-gnu/2.16.1 -L$PWD" > > You can't force a static lib using -l if both static and dynamic versions are present. > The only way I know of is to pass the abs. path to the static lib like above. Assuming that your distro has all the required static libraries, I *think* you could do something like the following: CFLAGS="-static -g -O2" CXXFLAGS="-static -g -O2" ./configure [options] I'm not certain this works -- I couldn't verify on my system because my distro doesn't provide a static version of libpopt. > > somewhat offtopic but I cannot make the callgraph option work properly: Callgraph should be supported for ppc. Did you do 'opcontrol --reset' and restart oprofile (with a --shutdown or --deinit followed by --start) after setting --callgraph=8? -Maynard > # > opcontrol --status > Daemon paused: pid 21058 > Separate options: library > vmlinux file: none > Image filter: none > Call-graph depth: 8 > > > # > opreport --session-dir=/tmp/oprofile/ --symbols -c > > 1974 3.1267 libnetsnmp.so.5.0.8 snmpd snmp_oid_compare > 1974 100.000 libnetsnmp.so.5.0.8 snmpd snmp_oid_compare [self] > ------------------------------------------------------------------------------- > 1607 2.5454 ld-2.3.6.so eq_monolite do_lookup_x > 1607 100.000 ld-2.3.6.so eq_monolite do_lookup_x [self] > ------------------------------------------------------------------------------- > 1353 2.1431 libnetsnmpagent.so.5.0.8 snmpd netsnmp_subtree_find_prev > 1353 100.000 libnetsnmpagent.so.5.0.8 snmpd netsnmp_subtree_find_prev [self] > > No matter what I do I never get more for any binary than what the above example > shows. Any ideas where to start looking? > > kernel 2.6.35 > gcc 3.4.6 > binutils 2.16.1 > > -fno-omit-framepointer is used when building too. > |
From: Joakim T. <joa...@tr...> - 2011-11-16 18:57:46
|
Maynard Johnson <may...@us...> wrote on 2011/11/16 17:20:27: > > Joakim Tjernlund wrote: > > Maynard Johnson <may...@us...> wrote on 2011/11/15 18:53:24: > > > >> From: Maynard Johnson <may...@us...> > >> To: Joakim Tjernlund <Joa...@tr...> > >> Cc: opr...@li... > >> Date: 2011/11/15 18:59 > >> Subject: Re: [PATCH 3/3] Make libpopt and libbfd configurable: > >> > >> Joakim Tjernlund wrote: > >>> This make is possible to pass > >>> POPT_LIBS="/x/y/libpopt.a" resp. > >>> BFD_LIBS="/x/y/libbfd.a" > >> We already have a '--with-binutils' configure option for a non-standard install location for libbfd. As for popt, I really don't see the point. Just use your distro's popt and popt-devel rpms. The reason for the '--with-binutils' option is that some of the binutils tools (e.g., objdump) have Maybe I did some simple mistake, won't matter though, see below. > > architecture-specific backends that may be out-of-date in the distro-supplied binutils. No such issue with popt, AFAIK. > > > > I tried -with-binutils briefly but I didn't manage to make it work. It could be some > > gentoo specific(this is a cross compiler built with gentoo crossdev) > > I just verified on my ppc64 server that this option still works. I don't do any cross/embedded development, so I can't even guess what problem you might be running into. Please provide details. I'm adding Richard Purdie to cc as he's our "resident embedded" expert, albeit on ARM, not ppc. > > > > > Our target, an embedded PowerPC board, does not have popt installed and > > I want to minimize the number of files to install to make it easy install/remove > > oprofile on the target. We don not have stdc++ either. With my patch and this > > build script I managed to build a static oprofile for our target: > > > > ln -fs `powerpc-softfloat-linux-gnu-g++ -print-file-name=libstdc++.a` > > ./configure --host powerpc-softfloat-linux-gnu --enable-shared=no --enable-stati > > c=yes \ > > LDFLAGS=-static-libgcc \ > > --without-x \ > > --enable-gui=no \ > > --without-java \ > > POPT_LIBS="/usr/powerpc-softfloat-linux-gnu/usr/lib/libpopt.a" \ > > BFD_LIBS="/usr/powerpc-softfloat-linux-gnu/usr/lib/binutils/powerpc-softfloa > > t-linux-gnu/2.16.1/libbfd.a" \ > > Well, if you can this (setting BFD_LIBS) to work, fine. I personally can't see how that would work, since you aren't including libiberty.a, which is also needed by oprofile. liberty is still there, look at the patch. It only allows you to replace libbfd. > > > --with-kernel-support \ > > --with-extra-libs="/usr/powerpc-softfloat-linux-gnu/usr/lib/binutils/powerpc > > -softfloat-linux-gnu/2.16.1 -L$PWD" > > > > You can't force a static lib using -l if both static and dynamic versions are present. > > The only way I know of is to pass the abs. path to the static lib like above. > Assuming that your distro has all the required static libraries, I *think* you could do something like the following: > CFLAGS="-static -g -O2" CXXFLAGS="-static -g -O2" ./configure [options] > I'm not certain this works -- I couldn't verify on my system because my distro doesn't provide a static version of libpopt. -static does not work. gcc still links dynamically if I do the above so the only way is still to pass the abs. path to the static lib which makes it impossible to use --with-binutils/--with-binutils-libname > > > > somewhat offtopic but I cannot make the callgraph option work properly: > Callgraph should be supported for ppc. Did you do 'opcontrol --reset' and restart oprofile (with a --shutdown or --deinit followed by --start) after setting --callgraph=8? Yes, I have tried every thing, many times. Now I am starting to think you need HW support for callgraph to work? My CPU only support the generic TIMER interface. Is my problem unique? I have search the web long and hard but found nothing that will help me. Is it possible it is a binutils bug as mine is rather old? Jocke |