From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10645 invoked by alias); 30 Jan 2008 05:59:24 -0000 Received: (qmail 10631 invoked by uid 22791); 30 Jan 2008 05:59:23 -0000 X-Spam-Check-By: sourceware.org Received: from mtagate7.de.ibm.com (HELO mtagate7.de.ibm.com) (195.212.29.156) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 30 Jan 2008 05:58:49 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate7.de.ibm.com (8.13.8/8.13.8) with ESMTP id m0U5wjXE376964 for ; Wed, 30 Jan 2008 05:58:45 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v8.7) with ESMTP id m0U5wje02183248 for ; Wed, 30 Jan 2008 06:58:45 +0100 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m0U5wjkZ010567 for ; Wed, 30 Jan 2008 06:58:45 +0100 Received: from bbkeks.de.ibm.com (dyn-9-152-248-39.boeblingen.de.ibm.com [9.152.248.39]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id m0U5wihG010556 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 30 Jan 2008 06:58:45 +0100 Message-ID: <47A011A6.3030009@de.ibm.com> Date: Wed, 30 Jan 2008 06:54:00 -0000 From: Markus Deuling User-Agent: Thunderbird 2.0.0.9 (X11/20071031) MIME-Version: 1.0 To: Pierre Muller CC: Daniel Jacobowitz , "'GDB Patches'" , Eli Zaretskii Subject: Re: [RFC]: New test scrupt gdb_buildall.sh References: <479EE84F.3030802@de.ibm.com> <000601c86271$978ce940$c6a6bbc0$@u-strasbg.fr> In-Reply-To: <000601c86271$978ce940$c6a6bbc0$@u-strasbg.fr> Content-Type: multipart/mixed; boundary="------------020706020903040907050502" Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-01/txt/msg00767.txt.bz2 This is a multi-part message in MIME format. --------------020706020903040907050502 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 2126 Hi Pierre, Pierre Muller schrieb: > I was just wondering what happens if you > run this script on a 64bit architecture. > Are the 32bit configurations included automatically in that > case or should you add a "--32bfd" option > as a counterpart of the "--64bfd" option. hm, not sure about that. I just know that this flags enables 64bit on 32bit platforms. I don't know how it is the other way round. I currently have no 64-bit platform available to test it :-( Thanks for testing it on a windows platform! > I tested your script on ccygwin, but I had > to add a $exexext variable because > addr2line complained that it did not find > gdb/gdb file (the real executable is gdb/gdb.exe). I added some lines to check whether it is gdb/gdb or gdb/gdb.exe after the build. addr2line now should take the correct one. > Another (windows specific) problem is that > windows does not accept ':' as part of a filename, > but it appears in a big number of architectures. > I modified the script to substitute ':' with '_' > to be able to check. Ops, ok. I didn't knew that. Thanks for pointing met to that. I changed the script to replace ":" by "_" as you proposed and it works fine. > I ran the modified script and got just > two problems: mips:8000 and mips:10000 > The problem comes from mips-tdep.c line 5389 > bfd_get_flavor is called with info.abfd which is NULL. > Yes, I see errors in this targets: mips_3900.log: ERR: gdb panic mips_4100.log: ERR: gdb panic mips_5000.log: ERR: gdb panic mips_10000.log: ERR: gdb printed no output mips_8000.log: ERR: gdb printed no output I guess that is something to look at :-) Again, thank you for your work on this ! @Eli: I haven't found documentation about gdb_mbuild script. What would be the right place to mention this new script in the doco? Should it be mentioned at all ? I attached a the reworked version of the script. Is this ok to commit ? ChangeLog: Add script to build and test GDB using enable-targets=all. * gdb_buildall.sh: New file. Regards, Markus -- Markus Deuling GNU Toolchain for Linux on Cell BE deuling@de.ibm.com --------------020706020903040907050502 Content-Type: text/plain; name="diff-all-build" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diff-all-build" Content-length: 7154 diff -urpN src/gdb/gdb_buildall.sh dev/gdb/gdb_buildall.sh --- src/gdb/gdb_buildall.sh 1970-01-01 01:00:00.000000000 +0100 +++ dev/gdb/gdb_buildall.sh 2008-01-30 06:46:43.000000000 +0100 @@ -0,0 +1,268 @@ +#!/bin/sh + +# Build script to build GDB with all targets enabled. + +# Copyright (C) 2008 Free Software Foundation, Inc. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Make certain that the script is not running in an internationalized +# environment. The script is grepping for GDB's output. + +# Contributed by Markus Deuling . +# Based on gdb_mbuild.sh from Richard Earnshaw. + + +LANG=c ; export LANG +LC_ALL=c ; export LC_ALL + +# Prints a usage message. +usage() +{ + cat < ... ] + +Options: + + --bfd64 Enable 64-bit BFD. + --clean Delete build directory after check. + -e Regular expression for selecting the targets to build. + --force Force rebuild. + -j Run in parallel. Passed to make. + On a single cpu machine, 2 is recommended. + Arguments: + Source code directory. + Build directory. + + Environment variables examined (with default if not defined): + MAKE (make)" +EOF + exit 1 +} + +### Command line options. +makejobs= +force=false +targexp="" +bfd_flag="" +clean=false +while test $# -gt 0 +do + case "$1" in + -j ) + # Number of parallel make jobs. + shift + test $# -ge 1 || usage + makejobs="-j $1" + ;; + --clean ) + # Shall the build directory be deleted after processing? + clean=true + ;; + -e ) + # A regular expression for selecting targets + shift + test $# -ge 1 || usage + targexp="${targexp} -e ${1}" + ;; + --force ) + # Force a rebuild + force=true ; + ;; + --bfd64) + # Enable 64-bit BFD + bfd_flag="--enable-64-bit-bfd" + ;; + -* ) usage ;; + *) break ;; + esac + shift +done + +if test $# -ne 2 +then + usage +fi + +### Environment. + +# Convert these to absolute directory paths. +srcdir=`cd $1 && /bin/pwd` || exit 1 +builddir=`cd $2 && /bin/pwd` || exit 1 +# Version of make to use +make=${MAKE:-make} +MAKE=${make} +export MAKE +# We dont want GDB do dump cores. +ulimit -c 0 + +# Just make sure we're in the right directory. +maintainers=${srcdir}/gdb/MAINTAINERS +if [ ! -r ${maintainers} ] +then + echo Maintainers file ${maintainers} not found + exit 1 +fi + + +# Build GDB with all targets enabled. +echo "Starting gdb_buildall.sh ..." + +trap "exit 1" 1 2 15 +dir=${builddir}/ALL + +# Should a scratch rebuild be forced, for perhaps the entire build be skipped? +if ${force} +then + echo ... forcing rebuild + rm -rf ${dir} +fi + +# Did the previous configure attempt fail? If it did restart from scratch +if test -d ${dir} -a ! -r ${dir}/Makefile +then + echo ... removing partially configured + rm -rf ${dir} + if test -d ${dir} + then + echo "... ERROR: Unable to remove directory ${dir}" + exit 1 + fi +fi + +# Create build directory. +mkdir -p ${dir} +cd ${dir} || exit 1 + +# Configure GDB. +if test ! -r Makefile +then + # Default SIMOPTS to GDBOPTS. + test -z "${simopts}" && simopts="${gdbopts}" + + # The config options. + __build="--enable-targets=all" + __enable_gdb_build_warnings=`test -z "${gdbopts}" \ + || echo "--enable-gdb-build-warnings=${gdbopts}"` + __enable_sim_build_warnings=`test -z "${simopts}" \ + || echo "--enable-sim-build-warnings=${simopts}"` + __configure="${srcdir}/configure \ + ${__build} ${bfd_flag}\ + ${__enable_gdb_build_warnings} \ + ${__enable_sim_build_warnings}" + echo ... ${__configure} + trap "echo Removing partially configured ${dir} directory ...; rm -rf ${dir}; exit 1" 1 2 15 + ${__configure} > Config.log 2>&1 + trap "exit 1" 1 2 15 + + # Without Makefile GDB won't build. + if test ! -r Makefile + then + echo "... CONFIG ERROR: GDB couldn't be configured " | tee -a Config.log + echo "... CONFIG ERROR: see Config.log for details " + exit 1 + fi +fi + +# Build GDB, if not built. +gdb_bin="gdb/gdb" +if test ! -x gdb/gdb -a ! -x gdb/gdb.exe +then + echo ... ${make} ${makejobs} + ( ${make} ${makejobs} all-gdb || rm -f gdb/gdb gdb/gdb.exe + ) > Build.log 2>&1 + + # If the build fails, exit. + if test ! -x gdb/gdb -a ! -x gdb/gdb.exe + then + echo "... BUILD ERROR: GDB couldn't be compiled " | tee -a Build.log + echo "... BUILD ERROR: see Build.log for details " + exit 1 + fi + if test -x gdb/gdb.exe + then + gdb_bin="gdb/gdb.exe" + fi +fi + + +# Retrieve a list of settable architectures by invoking "set architecture" +# without parameters. +cat < arch +set architecture +quit +EOF +./gdb/gdb --batch -nx -x arch 2>&1 | cat > gdb_archs +tail -n 1 gdb_archs | sed 's/auto./\n/g' | sed 's/,/\n/g' | sed 's/Requires an argument. Valid arguments are/\n/g' | sed '/^[ ]*$/d' > arch +mv arch gdb_archs + +if test "${targexp}" != "" +then + alltarg=`cat gdb_archs | grep ${targexp}` +else + alltarg=`cat gdb_archs` +fi +rm -f gdb_archs + +# Test all architectures available in ALLTARG +echo "maint print architecture for" +echo "$alltarg" | while read target +do + cat < x +set architecture ${target} +maint print architecture +quit +EOF + log_file=$target.log + log_file=${log_file//:/_} + echo -n "... ${target}" + ./gdb/gdb -batch -nx -x x 2>&1 | cat > $log_file + # Check GDBs results + if test ! -s $log_file + then + echo " ERR: gdb printed no output" | tee -a $log_file + elif test `grep -o internal-error $log_file | tail -n 1` + then + echo " ERR: gdb panic" | tee -a $log_file + else + echo " OK" + fi + + # Create a sed script that cleans up the output from GDB. + rm -f mbuild.sed + # Rules to replace <0xNNNN> with the corresponding function's name. + sed -n -e '/<0x0*>/d' -e 's/^.*<0x\([0-9a-f]*\)>.*$/0x\1/p' $log_file \ + | sort -u \ + | while read addr + do + func="`addr2line -f -e ./$gdb_bin -s ${addr} | sed -n -e 1p`" + echo "s/<${addr}>/<${func}>/g" + done >> mbuild.sed + # Rules to strip the leading paths off of file names. + echo 's/"\/.*\/gdb\//"gdb\//g' >> mbuild.sed + # Run the script. + sed -f mbuild.sed $log_file > Mbuild.log + + mv Mbuild.log ${builddir}/$log_file + rm -rf $log_file x mbuild.sed +done +echo "done." + +# Clean up build directory if necessary. +if ${clean} +then + echo "cleanning up $dir" + rm -rf ${dir} +fi + +exit 0 --------------020706020903040907050502--