Gabe Black has submitted this change. ( )

Change subject: sim: Add some helpers to catch and reporting using unbound ports.

sim: Add some helpers to catch and reporting using unbound ports.

If a port is unbound, trying to call its peer will likely cause a
segfault. Rather than check if a port is bound every time you go to use
it, we can instead bind to a default peer which just throws an exception
back to the caller. The caller can catch the exception and report the

This change adds a common new class to throw as the exception, and also
a small utility function which reports the error and dies.

Change-Id: Ia58a2030922c73e2fd7d139822bce38d9b0f2171
Reviewed-by: Nikos Nikoleris <>
Maintainer: Gabe Black <>
Tested-by: kokoro <>
M src/sim/
M src/sim/port.hh
2 files changed, 13 insertions(+), 0 deletions(-)

  Nikos Nikoleris: Looks good to me, approved
  Gabe Black: Looks good to me, approved
  kokoro: Regressions pass

diff --git a/src/sim/ b/src/sim/
index 7ca8db6..9131f84 100644
--- a/src/sim/
+++ b/src/sim/
@@ -45,7 +45,16 @@

 #include "sim/port.hh"

+#include "base/logging.hh"
 Port::Port(const std::string& _name, PortID _id) :
     portName(_name), id(_id), _peer(nullptr), _connected(false)
 Port::~Port() {}
+Port::reportUnbound() const
+    fatal("%s: Unconnected port!", name());
diff --git a/src/sim/port.hh b/src/sim/port.hh
index 251624c..85472d0 100644
--- a/src/sim/port.hh
+++ b/src/sim/port.hh
@@ -63,6 +63,10 @@


+    class UnboundPortException {};
+    [[noreturn]] void reportUnbound() const;
      * A numeric identifier to distinguish ports in a vector, and set
      * to InvalidPortID in case this port is not part of a vector.

To view, visit
To unsubscribe, or for help writing mail filters, visit

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ia58a2030922c73e2fd7d139822bce38d9b0f2171
Gerrit-Change-Number: 30295
Gerrit-PatchSet: 2
Gerrit-Owner: Gabe Black <>
Gerrit-Reviewer: Brandon Potter <>
Gerrit-Reviewer: Gabe Black <>
Gerrit-Reviewer: Nikos Nikoleris <>
Gerrit-Reviewer: kokoro <>
Gerrit-MessageType: merged
gem5-dev mailing list --
To unsubscribe send an email to

Reply via email to