Skip to content

Commit

Permalink
[lldb][NFC] Don't let Process inherit from UserID
Browse files Browse the repository at this point in the history
I noticed that Process is inheriting from UserID to store its PID value. This patch
replaces this with a dedicated field in the Process class. This is NFC, but has some
small effects on the code using Process:
* `GetID()` now returns a `lldb::pid_t` like all other process code instead of `lldb::user_id_t`. Both are typedefs for `uint64_t`, so no change in behaviour.
* The equality operators defined for UserID no longer accept Process instances.
* Removes the inherited method `Process::Clear()` which didn't actually clear anything beside the PID value.

We maybe should also remove the getters/setters to `S/GetPID` or something like that. I can update all the code for that
in a follow-up NFC commit.

Reviewed By: labath

Differential Revision: https://reviews.llvm.org/D91699
  • Loading branch information
Teemperor committed Nov 18, 2020
1 parent da2e472 commit ccd9091
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
11 changes: 10 additions & 1 deletion lldb/include/lldb/Target/Process.h
Expand Up @@ -364,7 +364,6 @@ inline bool operator!=(const ProcessModID &lhs, const ProcessModID &rhs) {
/// A plug-in interface definition class for debugging a process.
class Process : public std::enable_shared_from_this<Process>,
public ProcessProperties,
public UserID,
public Broadcaster,
public ExecutionContextScope,
public PluginInterface {
Expand Down Expand Up @@ -560,6 +559,15 @@ class Process : public std::enable_shared_from_this<Process>,

uint32_t GetAddressByteSize() const;

/// Sets the stored pid.
///
/// This does not change the pid of underlying process.
lldb::pid_t GetID() const { return m_pid; }

/// Returns the pid of the process or LLDB_INVALID_PROCESS_ID if there is
/// no known pid.
void SetID(lldb::pid_t new_pid) { m_pid = new_pid; }

uint32_t GetUniqueID() const { return m_process_unique_id; }

/// Check if a plug-in instance can debug the file in \a module.
Expand Down Expand Up @@ -2730,6 +2738,7 @@ void PruneThreadPlans();

// Member variables
std::weak_ptr<Target> m_target_wp; ///< The target that owns this process.
lldb::pid_t m_pid = LLDB_INVALID_PROCESS_ID;
ThreadSafeValue<lldb::StateType> m_public_state;
ThreadSafeValue<lldb::StateType>
m_private_state; // The actual state of our process
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/Target/Process.cpp
Expand Up @@ -529,7 +529,7 @@ Process::Process(lldb::TargetSP target_sp, ListenerSP listener_sp)

Process::Process(lldb::TargetSP target_sp, ListenerSP listener_sp,
const UnixSignalsSP &unix_signals_sp)
: ProcessProperties(this), UserID(LLDB_INVALID_PROCESS_ID),
: ProcessProperties(this),
Broadcaster((target_sp->GetDebugger().GetBroadcasterManager()),
Process::GetStaticBroadcasterClass().AsCString()),
m_target_wp(target_sp), m_public_state(eStateUnloaded),
Expand Down

0 comments on commit ccd9091

Please sign in to comment.