| #!/bin/bash |
| |
| # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Debug a 32 bit binary on 64 bit linux. Can be run from inside or outside |
| # the chroot. If inside, then the 32 bit gdb from the chroot is used, otherwise |
| # the system's 64 bit gdb is used. |
| |
| . "$(dirname "$0")/common.sh" |
| |
| # Command line options |
| DEFINE_string chroot "$DEFAULT_CHROOT_DIR" "Location of chroot" |
| |
| # Parse command line and update positional args |
| FLAGS "$@" || exit 1 |
| eval set -- "${FLAGS_ARGV}" |
| |
| # Die on any errors |
| set -e |
| |
| if [ -z "$SYSROOT" ]; then |
| if [ $INSIDE_CHROOT == 1 ]; then |
| SYSROOT=/build/x86-generic |
| else |
| SYSROOT=$FLAGS_chroot/build/x86-generic |
| fi |
| fi |
| |
| if [ -z "$CHOST" ]; then |
| CHOST="x86-generic" |
| fi |
| |
| SYSROOT="$FLAGS_chroot/build/$CHOST" |
| LIB_PATHS="/lib32:/usr/lib32:$LIB_PATHS:$SYSROOT/usr/lib:$SYSROOT/lib:." |
| LIB_PATHS="$LIB_PATHS:$SYSROOT/opt/google/chrome/chromeos" |
| |
| if [ $INSIDE_CHROOT == 1 ]; then |
| # if we're inside the chroot, the we'll be running a 32 bit gdb, so we'll |
| # need the same library path as the target |
| export LD_LIBRARY_PATH=$LIB_PATHS |
| GDB="$SYSROOT/usr/bin/gdb" |
| else |
| GDB="gdb" |
| fi |
| |
| exec $GDB \ |
| --eval-command "set environment LD_LIBRARY_PATH=$LIB_PATHS" \ |
| --eval-command "set sysroot $SYSROOT " \ |
| --eval-command "set prompt (cros-gdb) " \ |
| --args "$@" |