#!/bin/bash
# Copyright 2025 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

#### CATEGORY=Build
### Disassembles a given binary in the build.

readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
source "$SCRIPT_DIR/../lib/vars.sh" || exit $?

# The script relies on the following environment variables being set.
fx-config-read
export EDITOR # Required if --edit is passed
export FUCHSIA_BUILD_DIR
export PREBUILT_BINUTILS_DIR # Required if --binutils is passed
export PREBUILT_CLANG_DIR

"${PREBUILT_PYTHON3}" "$FUCHSIA_DIR"/zircon/kernel/scripts/dis.py "$@"
