Source code for libdebug.architectures.stack_unwinding_provider

#
# This file is part of libdebug Python library (https://github.com/libdebug/libdebug).
# Copyright (c) 2023-2024 Gabriele Digregorio, Roberto Alessandro Bertolini. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for details.
#

from libdebug.architectures.amd64.amd64_stack_unwinder import (
    Amd64StackUnwinder,
)
from libdebug.architectures.stack_unwinding_manager import StackUnwindingManager
from libdebug.utils.libcontext import libcontext

_amd64_stack_unwinder = Amd64StackUnwinder()


[docs] def stack_unwinding_provider() -> StackUnwindingManager: """Returns an instance of the stack unwinding provider to be used by the `_InternalDebugger` class.""" architecture = libcontext.arch match architecture: case "amd64": return _amd64_stack_unwinder case _: raise NotImplementedError(f"Architecture {architecture} not available.")