import lldb


def stop_if_called_from_a(frame, bp_loc, dict):
    thread = frame.GetThread()
    process = thread.GetProcess()
    target = process.GetTarget()
    dbg = target.GetDebugger()

    # Perform synchronous interaction with the debugger.
    old_async = dbg.GetAsync()
    dbg.SetAsync(True)

    # We check the call frames in order to stop only when the immediate caller
    # of the leaf function c() is a().  If it's not the right caller, we ask the
    # command interpreter to continue execution.

    should_stop = True
    if thread.GetNumFrames() >= 2:
        if (
            thread.frames[0].function.name == "c"
            and thread.frames[1].function.name == "a"
        ):
            should_stop = True
        else:
            should_stop = False

    dbg.SetAsync(old_async)
    return should_stop
