#!/bin/bash

# Copyright (c) 2011 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.

find_common_sh() {
  local path="/usr/lib/crosutils"

  SCRIPT_ROOT=.
  local common="${path}/common.sh"
  # Find and source the common stuff to ensure that it's setting expected
  # values.
  if ([ -r "${common}" ] && . "${common}" && [ -d "${SCRIPTS_DIR}" ]); then
    SCRIPT_ROOT=${path}
  fi
}

find_common_sh
. "${SCRIPT_ROOT}/common.sh" || ! echo "Run me inside the chroot." || exit 1

# Command line options
DEFINE_string board "${DEFAULT_BOARD}" "The board to debug for."
DEFINE_string sysroot "" "Where your target binaries are."
DEFINE_string debug_file_dir "" "Where your split-out debug symbols are."

# Parse command line and update positional args
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"

  # Die on any errors
set -e

if [[ -z "${FLAGS_board}" ]]; then
  die "Error: --board is required."
fi

if [ $# -gt 2 -o $# -lt 1 ]; then
  die "usage $0 [flags] file [core]"
fi

if [[ -n "${2}" ]]; then
  CORE_CMD="core ${2}"
fi

if [[ -z "${FLAGS_sysroot}" ]]; then
  SYSROOT="/build/${FLAGS_board}"
  BOARDROOT="${SYSROOT}"
else
  SYSROOT="${FLAGS_sysroot}"
  BOARDROOT="/build/${FLAGS_board}"
fi
if [[ -z "${FLAGS_debug_file_dir}" ]]; then
  DEBUG_FILE_DIR="${SYSROOT}/usr/lib/debug/"
else
  DEBUG_FILE_DIR="${FLAGS_debug_file_dir}"
  DEBUG_FILE="${DEBUG_FILE_DIR}${1#${SYSROOT}}.debug"
  if [[ -f "${DEBUG_FILE}" ]]; then
    DEBUG_FILE_CMD="symbol-file -readnow ${DEBUG_FILE}"
  fi
fi
GDB="${BOARDROOT}/usr/bin/gdb"

# Use awk to pull the lib paths out of the board's /etc/ld.so.conf
LIB_PATHS=$(awk -v b="${BOARDROOT}" '$1 !~ /^#/ { p=p":"b$0 } \
                                    END{print substr(p,2)}' \
                   "${BOARDROOT}/etc/ld.so.conf")

export LD_LIBRARY_PATH="${LIB_PATHS}"

# Using --exec, --core, etc makes gdb parse those files before the other
# settings take effect, causing the user to have to re-import them in order
# for the correct debug symbols to get used.
exec $GDB \
  --eval-command "set sysroot ${SYSROOT}" \
  --eval-command "set debug-file-directory ${DEBUG_FILE_DIR}" \
  --eval-command "set prompt (cros-gdb) " \
  --eval-command "${DEBUG_FILE_CMD}" \
  --eval-command "file ${1}" \
  --eval-command "${CORE_CMD}"
