#!/bin/bash
# Copyright 2020 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.

# Loads script libraries.
CONTRIB_DIR=$(dirname "$(readlink -f "$0")")
. "${CONTRIB_DIR}/common.sh" || exit 1

FLAGS_HELP="
Decode kernel stack trace from kernel logs.

Read kernel logs from stdin, and print the decoded stack trace to stdout.

Usage:
   kernel_decode_stack -b <board>
"

# Flags
DEFINE_string board "${DEFAULT_BOARD}" "Which board to decode stack trace" b

# Parse command line.
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"
set -e

# Script must be run inside the chroot.
assert_inside_chroot

decode_stacktrace() {
  local board="$1"
  shift

  local CHOST
  CHOST=$("portageq-${board}" envvar CHOST)

  local ARCH
  ARCH=$("portageq-${board}" envvar ARCH)

  # cros-kernel2.eclass falls back to tc-arch-kernel when CHROMEOS_KERNEL_ARCH
  # is not set, but since tc-arch-kernel parse the arch from CHOST, we can just
  # ignnore kernel_arch and use the original CHOST as CROSS_COMPILE in this
  # case.
  local kernel_arch
  kernel_arch=$("portageq-${board}" envvar CHROMEOS_KERNEL_ARCH || true)

  # This part is from cros-kernel2.eclass
  # Support 64bit kernels w/32bit userlands.
  local cross=${CHOST}
  if [[ "${ARCH}:${kernel_arch}" == "arm:arm64" ]]; then
    cross="aarch64-cros-linux-gnu"
  fi

  # Note: This would point to some temporary path if the kernel is not worked
  # on, but it's ok since the decode_stacktrace.sh only use this path to strip
  # the output.
  #
  # This is also why we always use the decode_stacktrace.sh from
  # kernel/upstream instead of using the one in kernel_source_path.
  local kernel_source_path
  kernel_source_path=$(
    objdump -WL "/build/${board}/usr/lib/debug/boot/vmlinux" |
      grep 'include/linux/compiler.h:$' |
      head -1 |
      sed 's|\(.*\)/include/linux/compiler.h:$|\1|')

  CROSS_COMPILE="${cross}-" \
    "${SRC_ROOT}/third_party/kernel/upstream/scripts/decode_stacktrace.sh" \
    "/build/${board}/usr/lib/debug/boot/vmlinux" \
    "${kernel_source_path}" \
    "/build/${board}/usr/lib/debug/lib/modules/"*/
}

main() {
  if [[ -z "${FLAGS_board}" ]]; then
    die "-b or --board required."
  fi

  decode_stacktrace "${FLAGS_board}" "$@"
}

main "$@"
