* [Buildroot] [PATCH V4 0/2] google-breakpad: new package
@ 2014-06-04 11:32 Pascal Huerst
2014-06-04 11:32 ` [Buildroot] [PATCH V4 1/2] " Pascal Huerst
2014-06-04 11:32 ` [Buildroot] [PATCH V4 2/2] google-breakpad: integration into makefile and Config.in Pascal Huerst
0 siblings, 2 replies; 8+ messages in thread
From: Pascal Huerst @ 2014-06-04 11:32 UTC (permalink / raw)
To: buildroot
Changes v3 -> v4
Fixed minor issue in google-breakpad_gen-syms.sh
Had to remove -print from find command
Changes v2 -> v3 (All suggested by thomas.petazzoni at free-electrons.com)
Removed dependency of BR2_ENABLE_DEBUG, but added comment,
that this flag might have to be set in order to use breakpad
properly.
Removed "find -name ..." for libs and binaries by generic patterns,
such as "*.so" and so forth. This will never work properly. Instead
I added a list to insert libs and binaries, that will be symbol-
dumped and prepared for breakpad (see Config.in patch v3 2/2)
Changed storage path for dumps from: $(TARGET_DIR).. to
$(STAGING_DIR)/usr/share/google-breakpad-symbols/
Removed most logic from Makefile. Added script instead, which is
called by Makefile
Added dependency for compatible targets: ARM, i386, MIPS...
Set fixed version for checkout (instead of head)
Fixed typos, and some minor mistakes
Changes v1 -> v2 (All suggested by maxime.hadjinlian at gmail.com)
Added dependency from BR2_ENABLE_DEBUG
Removed symbolstore.py -> Its all done in Makefile now
Removed new Target -> It in target-finalize before stripping now
Added LICENSE and LICENSE_FILE to *.mk
Pascal Huerst (2):
google-breakpad: new package
google-breakpad: integration into makefile and Config.in
Config.in | 10 ++++++
Makefile | 7 ++++
package/Config.in | 2 ++
package/google-breakpad/Config.in | 21 ++++++++++++
.../google-breakpad/google-breakpad-gen-syms.sh | 37 ++++++++++++++++++++++
package/google-breakpad/google-breakpad.mk | 17 ++++++++++
6 files changed, 94 insertions(+)
create mode 100644 package/google-breakpad/Config.in
create mode 100755 package/google-breakpad/google-breakpad-gen-syms.sh
create mode 100644 package/google-breakpad/google-breakpad.mk
--
1.9.3
^ permalink raw reply [flat|nested] 8+ messages in thread* [Buildroot] [PATCH V4 1/2] google-breakpad: new package 2014-06-04 11:32 [Buildroot] [PATCH V4 0/2] google-breakpad: new package Pascal Huerst @ 2014-06-04 11:32 ` Pascal Huerst 2014-06-04 19:53 ` Yann E. MORIN 2014-06-09 17:41 ` Samuel Martin 2014-06-04 11:32 ` [Buildroot] [PATCH V4 2/2] google-breakpad: integration into makefile and Config.in Pascal Huerst 1 sibling, 2 replies; 8+ messages in thread From: Pascal Huerst @ 2014-06-04 11:32 UTC (permalink / raw) To: buildroot Breakpad is a library and tool suite that allows you to distribute an application to users with compiler-provided debugging information removed, record crashes in compact "minidump" files, send them back to your server, and produce C and C++ stack traces from these minidumps. Breakpad can also write minidumps on request for programs that have not crashed. Signed-off-by: Pascal Huerst <pascal.huerst@gmail.com> --- package/Config.in | 1 + package/google-breakpad/Config.in | 21 ++++++++++++ .../google-breakpad/google-breakpad-gen-syms.sh | 37 ++++++++++++++++++++++ package/google-breakpad/google-breakpad.mk | 17 ++++++++++ 4 files changed, 76 insertions(+) create mode 100644 package/google-breakpad/Config.in create mode 100755 package/google-breakpad/google-breakpad-gen-syms.sh create mode 100644 package/google-breakpad/google-breakpad.mk diff --git a/package/Config.in b/package/Config.in index 1706197..ea94f01 100644 --- a/package/Config.in +++ b/package/Config.in @@ -54,6 +54,7 @@ source "package/dstat/Config.in" source "package/duma/Config.in" source "package/fio/Config.in" source "package/gdb/Config.in" +source "package/google-breakpad/Config.in" source "package/iozone/Config.in" source "package/kexec/Config.in" source "package/ktap/Config.in" diff --git a/package/google-breakpad/Config.in b/package/google-breakpad/Config.in new file mode 100644 index 0000000..5c9e18b --- /dev/null +++ b/package/google-breakpad/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_GOOGLE_BREAKPAD + bool "google-breakpad" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_aarch64 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + + help + Google-Breakpad is a library and tool suite that allows you to distribute + an application to users with compiler-provided debugging information + removed, record crashes in compact "minidump" files, send them back to + your server, and produce C and C++ stack traces from these minidumps. + Breakpad can also write minidumps on request for programs that have not + crashed. + + Add all binaries and libraries you want to debug by google-breakpad to + BR2_GOOGLE_BREAKPAD_INCLUDE_FILES + + http://code.google.com/p/google-breakpad/ + +comment "google-breakpad requires an (e)glibc toolchain w/ C++ enabled" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_USES_GLIBC) diff --git a/package/google-breakpad/google-breakpad-gen-syms.sh b/package/google-breakpad/google-breakpad-gen-syms.sh new file mode 100755 index 0000000..e082875 --- /dev/null +++ b/package/google-breakpad/google-breakpad-gen-syms.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +STAGING_DIR=$1 +HOST_DIR=$2 +INCLUDE_FILES=$3 + +# Search for files we want to dump symbols of +FIND_CMD="find $STAGING_DIR -name \"\"" + +for INCLUDE_FILE in $INCLUDE_FILES; do + FIND_CMD="$FIND_CMD -o -name \"$INCLUDE_FILE\"" +done + +# Create directory structure +SYMBOLS_DIR=$STAGING_DIR/usr/share/google-breakpad-symbols + +mkdir -p $SYMBOLS_DIR/tmp + +for BIN_PATH in $(eval $FIND_CMD); do + BIN=$(basename $BIN_PATH); + SYM=$BIN.sym; + + $HOST_DIR/usr/bin/dump_syms $BIN_PATH > $SYMBOLS_DIR/tmp/$SYM 2>/dev/null; + + if [ $? -eq 0 ]; then + HASH=$(head -n1 $SYMBOLS_DIR/tmp/$SYM | cut -d ' ' -f 4); + mkdir -p $SYMBOLS_DIR/$BIN/$HASH + mv $SYMBOLS_DIR/tmp/$SYM $SYMBOLS_DIR/$BIN/$HASH; + else + rm -f $SYMBOLS_DIR/tmp/$SYM + echo "Can not dump symbols of $BIN for google-breakpad!" + fi +done + +rm -Rf $SYMBOLS_DIR/tmp + +exit 0 diff --git a/package/google-breakpad/google-breakpad.mk b/package/google-breakpad/google-breakpad.mk new file mode 100644 index 0000000..e5b69c0 --- /dev/null +++ b/package/google-breakpad/google-breakpad.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# google-breakpad +# +################################################################################ + +GOOGLE_BREAKPAD_VERSION = 1320 +GOOGLE_BREAKPAD_SITE = http://google-breakpad.googlecode.com/svn/trunk +GOOGLE_BREAKPAD_SITE_METHOD = svn +GOOGLE_BREAKPAD_CONF_OPT = --disable-processor --disable-tools +GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad +GOOGLE_BREAKPAD_INSTALL_STAGING = YES +GOOGLE_BREAKPAD_LICENSE = BSD-3c +GOOGLE_BREAKPAD_LICENSE_FILES = LICENSE + +$(eval $(host-autotools-package)) +$(eval $(autotools-package)) -- 1.9.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH V4 1/2] google-breakpad: new package 2014-06-04 11:32 ` [Buildroot] [PATCH V4 1/2] " Pascal Huerst @ 2014-06-04 19:53 ` Yann E. MORIN 2014-06-05 20:21 ` Pascal Hürst 2014-06-09 17:41 ` Samuel Martin 1 sibling, 1 reply; 8+ messages in thread From: Yann E. MORIN @ 2014-06-04 19:53 UTC (permalink / raw) To: buildroot Pascal, All, Some comments below... On 2014-06-04 13:32 +0200, Pascal Huerst spake thusly: > Breakpad is a library and tool suite that allows you to distribute an application > to users with compiler-provided debugging information removed, record crashes in > compact "minidump" files, send them back to your server, and produce C and C++ > stack traces from these minidumps. Breakpad can also write minidumps on request > for programs that have not crashed. > > Signed-off-by: Pascal Huerst <pascal.huerst@gmail.com> > --- > package/Config.in | 1 + > package/google-breakpad/Config.in | 21 ++++++++++++ > .../google-breakpad/google-breakpad-gen-syms.sh | 37 ++++++++++++++++++++++ > package/google-breakpad/google-breakpad.mk | 17 ++++++++++ > 4 files changed, 76 insertions(+) > create mode 100644 package/google-breakpad/Config.in > create mode 100755 package/google-breakpad/google-breakpad-gen-syms.sh > create mode 100644 package/google-breakpad/google-breakpad.mk > > diff --git a/package/Config.in b/package/Config.in > index 1706197..ea94f01 100644 > --- a/package/Config.in > +++ b/package/Config.in > @@ -54,6 +54,7 @@ source "package/dstat/Config.in" > source "package/duma/Config.in" > source "package/fio/Config.in" > source "package/gdb/Config.in" > +source "package/google-breakpad/Config.in" > source "package/iozone/Config.in" > source "package/kexec/Config.in" > source "package/ktap/Config.in" > diff --git a/package/google-breakpad/Config.in b/package/google-breakpad/Config.in > new file mode 100644 > index 0000000..5c9e18b > --- /dev/null > +++ b/package/google-breakpad/Config.in > @@ -0,0 +1,21 @@ > +config BR2_PACKAGE_GOOGLE_BREAKPAD > + bool "google-breakpad" > + depends on BR2_INSTALL_LIBSTDCPP > + depends on BR2_TOOLCHAIN_USES_GLIBC > + depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_aarch64 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el > + No empty line here. > + help > + Google-Breakpad is a library and tool suite that allows you to distribute > + an application to users with compiler-provided debugging information > + removed, record crashes in compact "minidump" files, send them back to > + your server, and produce C and C++ stack traces from these minidumps. > + Breakpad can also write minidumps on request for programs that have not > + crashed. > + > + Add all binaries and libraries you want to debug by google-breakpad to > + BR2_GOOGLE_BREAKPAD_INCLUDE_FILES These two lines should have been part of the following patch, since you introduce that variable only then. > + http://code.google.com/p/google-breakpad/ > + > +comment "google-breakpad requires an (e)glibc toolchain w/ C++ enabled" > + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_USES_GLIBC) > diff --git a/package/google-breakpad/google-breakpad-gen-syms.sh b/package/google-breakpad/google-breakpad-gen-syms.sh > new file mode 100755 > index 0000000..e082875 > --- /dev/null > +++ b/package/google-breakpad/google-breakpad-gen-syms.sh This script should have been part of your next patch. > @@ -0,0 +1,37 @@ > +#!/bin/sh > + > +STAGING_DIR=$1 > +HOST_DIR=$2 Passing HOST_DIR is not needed. You should call the script with the EXTRA_ENV which contains the PATH variable, in the Makefile: $(EXTRA_ENV) your-script your-args > +INCLUDE_FILES=$3 > + > +# Search for files we want to dump symbols of > +FIND_CMD="find $STAGING_DIR -name \"\"" Ugly hack. It took me a moment to understand what you wanted. See below for a suggested better way to achieve the same result. Besides, not all package install their files in staging. You should use TARGET_DIR instead. > +for INCLUDE_FILE in $INCLUDE_FILES; do > + FIND_CMD="$FIND_CMD -o -name \"$INCLUDE_FILE\"" > +done This does not handle the case where two files would have the same basename but reside in different directories. For example: /usr/bin/my-exec <- ELF file /data/config/my-exec <- database Please state that INCLUDE_FILES should be relative to $(TARGET_DIR). That way, we guarantee breakpad is not run against unwanted files, which would otherwise confuse the unsuspecting user. > +# Create directory structure > +SYMBOLS_DIR=$STAGING_DIR/usr/share/google-breakpad-symbols > + > +mkdir -p $SYMBOLS_DIR/tmp > + > +for BIN_PATH in $(eval $FIND_CMD); do > + BIN=$(basename $BIN_PATH); > + SYM=$BIN.sym; > + > + $HOST_DIR/usr/bin/dump_syms $BIN_PATH > $SYMBOLS_DIR/tmp/$SYM 2>/dev/null; > + > + if [ $? -eq 0 ]; then > + HASH=$(head -n1 $SYMBOLS_DIR/tmp/$SYM | cut -d ' ' -f 4); > + mkdir -p $SYMBOLS_DIR/$BIN/$HASH > + mv $SYMBOLS_DIR/tmp/$SYM $SYMBOLS_DIR/$BIN/$HASH; > + else > + rm -f $SYMBOLS_DIR/tmp/$SYM > + echo "Can not dump symbols of $BIN for google-breakpad!" > + fi > +done > + > +rm -Rf $SYMBOLS_DIR/tmp > + > +exit 0 'exit 0' is not needed. What about the following (untested)? #!/bin/sh STAGING_DIR="${1}" TARGET_DIR="${2}" shift 2 symbols_dir="${STAGING_DIR}/usr/share/google-breakpad-symbols" rm -rf "${symbols_dir}" mkdir -p "${symbols_dir}/tmp" cd "${TARGET_DIR}" for file in $(ls -1d "${@}"); do if [ -d "${file}" ]; then printf "Error: '%s' is a directory\n" "${file}" >&2 exit 1 fi if dump_syms "${file}" >"${symbols_dir}/tmp/tmp.syms"; then sha1="$( printf "%s" "${file}" |sha1sum |awk '{print $1}' )" mv "${symbols_dir}/tmp/tmp.syms" "${symbols_dir}/${sha1}.sym" printf "%s %s\n" "${sha1}" "${file}" >>"${symbols_dir}/hashes.list" else printf "Error dumping symbols for: '%s'\n" "${file}" >&2 exit 1 fi done rm -rf "${symbols_dir}/tmp" It is more concise, and handles mutilple files with the same name, and packages which do not install their files in STAGING_DIR. ${1} and ${2} are the staging and target dirs, so we store them and shift, so the remaining arguments are all the paths to files we want to extract symbols from. We $(ls -1d) the args, in case one of them is a glob. A directory argument is invalid. The user should use a glob. We can use 'dump_syms' without full path since it is guaranteed to be in the PATH, as exported by the EXTRA_ENV variable used above. We store the symbols in a file named after the sha1 of the filename. We could use the symbols file's hash if it is a strong enough hash (eg sha1 or above, but since I don;t know what hash dump_syms generates, I can't trust it to not collide). This allows to store symbols for file with the same name in different directories. We store the correspondence {sha1,file} in a text file, so it is easy to retrieve the filename from a sha1, and conversely. We exit as soon as we can't extract symbols from a file, as we want to catch it as a failure, instead of ignoring it. But this script should go in the second patch of yours in any case. > diff --git a/package/google-breakpad/google-breakpad.mk b/package/google-breakpad/google-breakpad.mk > new file mode 100644 > index 0000000..e5b69c0 > --- /dev/null > +++ b/package/google-breakpad/google-breakpad.mk > @@ -0,0 +1,17 @@ > +################################################################################ > +# > +# google-breakpad > +# > +################################################################################ > + > +GOOGLE_BREAKPAD_VERSION = 1320 > +GOOGLE_BREAKPAD_SITE = http://google-breakpad.googlecode.com/svn/trunk > +GOOGLE_BREAKPAD_SITE_METHOD = svn > +GOOGLE_BREAKPAD_CONF_OPT = --disable-processor --disable-tools Do we really want to disable tools even for the host variant? Isn't dump_symc a tool that gets disabled in this case? > +GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad Does the target variant have a build-time dependency on the host tools? If not, then you should do, in Config.in: config BR2_PACKAGE_GOOGLE_BREAKPAD bool "google breakpad" select BR2_PACKAGE_HOST_GOOGLE_BREAKPAD config BR2_PACKAGE_HOST_GOOGLE_BREAKPAD bool (with the other depends you need, of course.) Regards, Yann E. MORIN. > +GOOGLE_BREAKPAD_INSTALL_STAGING = YES > +GOOGLE_BREAKPAD_LICENSE = BSD-3c > +GOOGLE_BREAKPAD_LICENSE_FILES = LICENSE > + > +$(eval $(host-autotools-package)) > +$(eval $(autotools-package)) > -- > 1.9.3 > > _______________________________________________ > buildroot mailing list > buildroot at busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH V4 1/2] google-breakpad: new package 2014-06-04 19:53 ` Yann E. MORIN @ 2014-06-05 20:21 ` Pascal Hürst 2014-06-05 20:28 ` Yann E. MORIN 0 siblings, 1 reply; 8+ messages in thread From: Pascal Hürst @ 2014-06-05 20:21 UTC (permalink / raw) To: buildroot -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello Yann, all, [snip] >> diff --git a/package/google-breakpad/google-breakpad-gen-syms.sh >> b/package/google-breakpad/google-breakpad-gen-syms.sh new file >> mode 100755 index 0000000..e082875 --- /dev/null +++ >> b/package/google-breakpad/google-breakpad-gen-syms.sh > > This script should have been part of your next patch. > >> @@ -0,0 +1,37 @@ +#!/bin/sh + +STAGING_DIR=$1 +HOST_DIR=$2 > > Passing HOST_DIR is not needed. You should call the script with the > EXTRA_ENV which contains the PATH variable, in the Makefile: > > $(EXTRA_ENV) your-script your-args > >> +INCLUDE_FILES=$3 + +# Search for files we want to dump symbols >> of +FIND_CMD="find $STAGING_DIR -name \"\"" > > Ugly hack. It took me a moment to understand what you wanted. See > below for a suggested better way to achieve the same result. > > Besides, not all package install their files in staging. You > should use TARGET_DIR instead. Aren't all binaries in TARGET_DIR stripped? If so, it doesn't really make sense to run gen_syms in TARGET_DIR. >> +for INCLUDE_FILE in $INCLUDE_FILES; do + FIND_CMD="$FIND_CMD -o >> -name \"$INCLUDE_FILE\"" +done > > This does not handle the case where two files would have the same > basename but reside in different directories. For example: > /usr/bin/my-exec <- ELF file /data/config/my-exec <- > database > > Please state that INCLUDE_FILES should be relative to > $(TARGET_DIR). That way, we guarantee breakpad is not run against > unwanted files, which would otherwise confuse the unsuspecting > user. > >> +# Create directory structure >> +SYMBOLS_DIR=$STAGING_DIR/usr/share/google-breakpad-symbols + >> +mkdir -p $SYMBOLS_DIR/tmp + +for BIN_PATH in $(eval $FIND_CMD); >> do + BIN=$(basename $BIN_PATH); + SYM=$BIN.sym; + + >> $HOST_DIR/usr/bin/dump_syms $BIN_PATH > $SYMBOLS_DIR/tmp/$SYM >> 2>/dev/null; + + if [ $? -eq 0 ]; then + HASH=$(head -n1 >> $SYMBOLS_DIR/tmp/$SYM | cut -d ' ' -f 4); + mkdir -p >> $SYMBOLS_DIR/$BIN/$HASH + mv $SYMBOLS_DIR/tmp/$SYM >> $SYMBOLS_DIR/$BIN/$HASH; + else + rm -f $SYMBOLS_DIR/tmp/$SYM + >> echo "Can not dump symbols of $BIN for google-breakpad!" + fi >> +done + +rm -Rf $SYMBOLS_DIR/tmp + +exit 0 > > 'exit 0' is not needed. > > What about the following (untested)? > > #!/bin/sh STAGING_DIR="${1}" TARGET_DIR="${2}" shift 2 > > symbols_dir="${STAGING_DIR}/usr/share/google-breakpad-symbols" rm > -rf "${symbols_dir}" mkdir -p "${symbols_dir}/tmp" > > cd "${TARGET_DIR}" for file in $(ls -1d "${@}"); do if [ -d > "${file}" ]; then printf "Error: '%s' is a directory\n" "${file}" >> &2 exit 1 fi if dump_syms "${file}" >> "${symbols_dir}/tmp/tmp.syms"; then sha1="$( printf "%s" >> "${file}" > |sha1sum |awk '{print $1}' )" mv "${symbols_dir}/tmp/tmp.syms" > "${symbols_dir}/${sha1}.sym" printf "%s %s\n" "${sha1}" "${file}" >>> "${symbols_dir}/hashes.list" else printf "Error dumping >>> symbols > for: '%s'\n" "${file}" >&2 exit 1 fi done rm -rf > "${symbols_dir}/tmp" > > It is more concise, and handles mutilple files with the same name, > and packages which do not install their files in STAGING_DIR. > > ${1} and ${2} are the staging and target dirs, so we store them > and shift, so the remaining arguments are all the paths to files > we want to extract symbols from. > > We $(ls -1d) the args, in case one of them is a glob. > > A directory argument is invalid. The user should use a glob. > > We can use 'dump_syms' without full path since it is guaranteed to > be in the PATH, as exported by the EXTRA_ENV variable used above. > > We store the symbols in a file named after the sha1 of the > filename. We could use the symbols file's hash if it is a strong > enough hash (eg sha1 or above, but since I don;t know what hash > dump_syms generates, I can't trust it to not collide). This allows > to store symbols for file with the same name in different > directories. > > We store the correspondence {sha1,file} in a text file, so it is > easy to retrieve the filename from a sha1, and conversely. > > We exit as soon as we can't extract symbols from a file, as we > want to catch it as a failure, instead of ignoring it. Ok, I understand your concerns and the find-call is by far not perfect, but the whole reason why I setup the directory structure that way, is because googles minidump-stackwalk expects it that way. See: https://code.google.com/p/google-breakpad/wiki/LinuxStarterGuide#Producing_symbols_for_your_application [snip] regards pascal -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEUEARECAAYFAlOQ0VgACgkQo7eFcXQQ8U0B0QCfQbjF0nqWHLOcwr4AyiXLXDeL BOIAl3P1IpV/hcSaXIEZpguemMN+RgU= =apjR -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH V4 1/2] google-breakpad: new package 2014-06-05 20:21 ` Pascal Hürst @ 2014-06-05 20:28 ` Yann E. MORIN 0 siblings, 0 replies; 8+ messages in thread From: Yann E. MORIN @ 2014-06-05 20:28 UTC (permalink / raw) To: buildroot Pascal, All, On 2014-06-05 22:21 +0200, Pascal H?rst spake thusly: > > Besides, not all package install their files in staging. You > > should use TARGET_DIR instead. > > Aren't all binaries in TARGET_DIR stripped? If so, it doesn't really > make sense to run gen_syms in TARGET_DIR. They are stripped only just before making the filesystem images. So, if you run your script before that, you'll get unstripped binaries in the target/ dir. [--SNIP alternate script proposal--] > Ok, I understand your concerns and the find-call is by far not > perfect, but the whole reason why I setup the directory structure that > way, is because googles minidump-stackwalk expects it that way. See: > https://code.google.com/p/google-breakpad/wiki/LinuxStarterGuide#Producing_symbols_for_your_application OK (I was afraid that layout was indeed a requirement). You can keep the layout as you created it. Just adapt my script so it generates the proper layout. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH V4 1/2] google-breakpad: new package 2014-06-04 11:32 ` [Buildroot] [PATCH V4 1/2] " Pascal Huerst 2014-06-04 19:53 ` Yann E. MORIN @ 2014-06-09 17:41 ` Samuel Martin 1 sibling, 0 replies; 8+ messages in thread From: Samuel Martin @ 2014-06-09 17:41 UTC (permalink / raw) To: buildroot Pascal, all, On Wed, Jun 4, 2014 at 1:32 PM, Pascal Huerst <pascal.huerst@gmail.com> wrote: [...] > +################################################################################ > +# > +# google-breakpad > +# > +################################################################################ > + > +GOOGLE_BREAKPAD_VERSION = 1320 > +GOOGLE_BREAKPAD_SITE = http://google-breakpad.googlecode.com/svn/trunk > +GOOGLE_BREAKPAD_SITE_METHOD = svn > +GOOGLE_BREAKPAD_CONF_OPT = --disable-processor --disable-tools > +GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad > +GOOGLE_BREAKPAD_INSTALL_STAGING = YES > +GOOGLE_BREAKPAD_LICENSE = BSD-3c > +GOOGLE_BREAKPAD_LICENSE_FILES = LICENSE > + > +$(eval $(host-autotools-package)) Unfortunately, among the built host-tools, minidump-2-core is not a cross-tool :-( (see [1]), so it might be worthwhile to not installed it. [1] https://code.google.com/p/google-breakpad/source/browse/trunk/src/tools/linux/md2core/minidump-2-core.cc#425 > +$(eval $(autotools-package)) > -- > 1.9.3 > > _______________________________________________ > buildroot mailing list > buildroot at busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot Regards, -- Samuel ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH V4 2/2] google-breakpad: integration into makefile and Config.in 2014-06-04 11:32 [Buildroot] [PATCH V4 0/2] google-breakpad: new package Pascal Huerst 2014-06-04 11:32 ` [Buildroot] [PATCH V4 1/2] " Pascal Huerst @ 2014-06-04 11:32 ` Pascal Huerst 2014-06-04 19:59 ` Yann E. MORIN 1 sibling, 1 reply; 8+ messages in thread From: Pascal Huerst @ 2014-06-04 11:32 UTC (permalink / raw) To: buildroot This adds the symbol generation for google-breakpad to the Makefile and adds a list were users can insert libraries and binaries that should be symbol-dumped. Signed-off-by: Pascal Huerst <pascal.huerst@gmail.com> --- Config.in | 10 ++++++++++ Makefile | 7 +++++++ package/Config.in | 1 + 3 files changed, 18 insertions(+) diff --git a/Config.in b/Config.in index 0799cb7..0849146 100644 --- a/Config.in +++ b/Config.in @@ -457,6 +457,16 @@ config BR2_OPTIMIZE_S endchoice +config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES + string "executables and libraries to be used by google-breakpad" + depends on BR2_PACKAGE_GOOGLE_BREAKPAD + default "" + help + You may specify a space-seperated list of binaries and libraries + here of which debug symbols should be dumped for google breakpad. + Debug symbols will be stored as google_breakpad_symbols in: + staging/usr/shared/google-breakpad-symbols + config BR2_ENABLE_SSP bool "build code with Stack Smashing Protection" depends on BR2_TOOLCHAIN_HAS_SSP diff --git a/Makefile b/Makefile index 0b4264a..2650a93 100644 --- a/Makefile +++ b/Makefile @@ -553,6 +553,13 @@ endif ifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY)$(BR2_PACKAGE_PYTHON3_PYC_ONLY),y) find $(TARGET_DIR)/usr/lib/ -name '*.py' -print0 | xargs -0 rm -f endif +ifeq ($(BR2_PACKAGE_GOOGLE_BREAKPAD),y) + package/google-breakpad/google-breakpad-gen-syms.sh \ + $(STAGING_DIR) \ + $(HOST_DIR) \ + "$(call qstrip,$(BR2_GOOGLE_BREAKPAD_INCLUDE_FILES))" +endif + rm -rf $(TARGET_DIR)/usr/lib/luarocks $(STRIP_FIND_CMD) | xargs $(STRIPCMD) 2>/dev/null || true if test -d $(TARGET_DIR)/lib/modules; then \ diff --git a/package/Config.in b/package/Config.in index ea94f01..47cb483 100644 --- a/package/Config.in +++ b/package/Config.in @@ -786,6 +786,7 @@ source "package/fftw/Config.in" source "package/flann/Config.in" source "package/glibmm/Config.in" source "package/gmp/Config.in" +source "package/google-breakpad/Config.in" source "package/gsl/Config.in" source "package/gtest/Config.in" source "package/libargtable2/Config.in" -- 1.9.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Buildroot] [PATCH V4 2/2] google-breakpad: integration into makefile and Config.in 2014-06-04 11:32 ` [Buildroot] [PATCH V4 2/2] google-breakpad: integration into makefile and Config.in Pascal Huerst @ 2014-06-04 19:59 ` Yann E. MORIN 0 siblings, 0 replies; 8+ messages in thread From: Yann E. MORIN @ 2014-06-04 19:59 UTC (permalink / raw) To: buildroot Pascal, All, On 2014-06-04 13:32 +0200, Pascal Huerst spake thusly: > This adds the symbol generation for google-breakpad to > the Makefile and adds a list were users can insert libraries > and binaries that should be symbol-dumped. > > Signed-off-by: Pascal Huerst <pascal.huerst@gmail.com> > --- > Config.in | 10 ++++++++++ > Makefile | 7 +++++++ > package/Config.in | 1 + > 3 files changed, 18 insertions(+) > > diff --git a/Config.in b/Config.in > index 0799cb7..0849146 100644 > --- a/Config.in > +++ b/Config.in > @@ -457,6 +457,16 @@ config BR2_OPTIMIZE_S > > endchoice > > +config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES > + string "executables and libraries to be used by google-breakpad" > + depends on BR2_PACKAGE_GOOGLE_BREAKPAD > + default "" > + help > + You may specify a space-seperated list of binaries and libraries "separated" > + here of which debug symbols should be dumped for google breakpad. > + Debug symbols will be stored as google_breakpad_symbols in: > + staging/usr/shared/google-breakpad-symbols Replace 'staging' with '$(STAGING_DIR)' Also, state that the files should be full paths relative to $(TARGET_DIR) > config BR2_ENABLE_SSP > bool "build code with Stack Smashing Protection" > depends on BR2_TOOLCHAIN_HAS_SSP > diff --git a/Makefile b/Makefile > index 0b4264a..2650a93 100644 > --- a/Makefile > +++ b/Makefile > @@ -553,6 +553,13 @@ endif > ifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY)$(BR2_PACKAGE_PYTHON3_PYC_ONLY),y) > find $(TARGET_DIR)/usr/lib/ -name '*.py' -print0 | xargs -0 rm -f > endif > +ifeq ($(BR2_PACKAGE_GOOGLE_BREAKPAD),y) > + package/google-breakpad/google-breakpad-gen-syms.sh \ As said in my review on your previous patch, you should use EXTRA_ENV here: $(EXTRA_ENV) package/google-breakpad/gen-syms.sh $(STAGING_DIR) \ $(TARGET_DIR) $(call qstrip,$(BR2_GOOGLE_BREAKPAD_INCLUDE_FILES)) We do not quote BR2_GOOGLE_BREAKPAD_INCLUDE_FILES since we want to pass each entry as its own arg on the command line. Also, maybe name the script just 'gen-syms.sh', it's shorter, so you can fit more on a line. ;-) > + $(STAGING_DIR) \ > + $(HOST_DIR) \ > + "$(call qstrip,$(BR2_GOOGLE_BREAKPAD_INCLUDE_FILES))" > +endif > + > rm -rf $(TARGET_DIR)/usr/lib/luarocks > $(STRIP_FIND_CMD) | xargs $(STRIPCMD) 2>/dev/null || true > if test -d $(TARGET_DIR)/lib/modules; then \ > diff --git a/package/Config.in b/package/Config.in > index ea94f01..47cb483 100644 > --- a/package/Config.in > +++ b/package/Config.in > @@ -786,6 +786,7 @@ source "package/fftw/Config.in" > source "package/flann/Config.in" > source "package/glibmm/Config.in" > source "package/gmp/Config.in" > +source "package/google-breakpad/Config.in" This should be part of your previous patch. And it should be in the "Debugging, profiling and benchmark" sub-menu, instead of "Libraries/Others". Regards, Yann E. MORIN. > source "package/gsl/Config.in" > source "package/gtest/Config.in" > source "package/libargtable2/Config.in" > -- > 1.9.3 > > _______________________________________________ > buildroot mailing list > buildroot at busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-06-09 17:41 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-06-04 11:32 [Buildroot] [PATCH V4 0/2] google-breakpad: new package Pascal Huerst 2014-06-04 11:32 ` [Buildroot] [PATCH V4 1/2] " Pascal Huerst 2014-06-04 19:53 ` Yann E. MORIN 2014-06-05 20:21 ` Pascal Hürst 2014-06-05 20:28 ` Yann E. MORIN 2014-06-09 17:41 ` Samuel Martin 2014-06-04 11:32 ` [Buildroot] [PATCH V4 2/2] google-breakpad: integration into makefile and Config.in Pascal Huerst 2014-06-04 19:59 ` Yann E. MORIN
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox