//===-- NativeProcessSoftwareSingleStep.h -----------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_NATIVEPROCESSSOFTWARESINGLESTEP_H
#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_NATIVEPROCESSSOFTWARESINGLESTEP_H

#include "lldb/Host/common/NativeProcessProtocol.h"
#include "lldb/Host/common/NativeThreadProtocol.h"
#include <map>
#include <set>

namespace lldb_private {

class NativeProcessSoftwareSingleStep {
public:
  Status SetupSoftwareSingleStepping(NativeThreadProtocol &thread);

protected:
  // List of thread ids stepping with a breakpoint with the address of
  // next PC candidates.
  std::map<lldb::tid_t, std::vector<lldb::addr_t>>
      m_threads_stepping_with_breakpoint;

  // The list of stepping breakpoints.
  std::set<lldb::addr_t> m_step_breakpoints;
};

} // namespace lldb_private

#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_NATIVEPROCESSSOFTWARESINGLESTEP_H
