diff --git a/src/base/SConscript b/src/base/SConscript
index fe92b43..5bf0633 100644
--- a/src/base/SConscript
+++ b/src/base/SConscript
@@ -111,6 +111,7 @@
 DebugFlag('Annotate', "State machine annotation debugging")
 DebugFlag('AnnotateQ', "State machine annotation queue debugging")
 DebugFlag('AnnotateVerbose', "Dump all state machine annotation details")
+DebugFlag('FmtFlag', "Show the --debug-flag that enabled each debug message")
 DebugFlag('GDBAcc', "Remote debugger accesses")
 DebugFlag('GDBExtra', "Dump extra information on reads and writes")
 DebugFlag('GDBMisc', "Breakpoints, traps, watchpoints, etc.")
diff --git a/src/base/trace.cc b/src/base/trace.cc
index 06f9eeb..c7f338b 100644
--- a/src/base/trace.cc
+++ b/src/base/trace.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 ARM Limited
+ * Copyright (c) 2014, 2019 ARM Limited
  * All rights reserved
  *
  * Copyright (c) 2001-2006 The Regents of The University of Michigan
@@ -45,6 +45,7 @@
 #include "base/logging.hh"
 #include "base/output.hh"
 #include "base/str.hh"
+#include "debug/FmtFlag.hh"
 
 const std::string &name()
 {
@@ -101,8 +102,10 @@
 
 ObjectMatch ignore;
 
+
 void
-Logger::dump(Tick when, const std::string &name, const void *d, int len)
+Logger::dump(Tick when, const std::string &name,
+         const void *d, int len, const std::string &flag)
 {
     if (!name.empty() && ignore.match(name))
         return;
@@ -133,7 +136,7 @@
         }
 
         ccprintf(line, "\n");
-        logMessage(when, name, line.str());
+        logMessage(when, name, flag, line.str());
 
         if (c < 16)
             break;
@@ -142,7 +145,7 @@
 
 void
 OstreamLogger::logMessage(Tick when, const std::string &name,
-                          const std::string &message)
+        const std::string &flag, const std::string &message)
 {
     if (!name.empty() && ignore.match(name))
         return;
@@ -150,6 +153,9 @@
     if (when != MaxTick)
         ccprintf(stream, "%7d: ", when);
 
+    if (DTRACE(FmtFlag) && !flag.empty())
+        stream << flag << ": ";
+
     if (!name.empty())
         stream << name << ": ";
 
diff --git a/src/base/trace.hh b/src/base/trace.hh
index 4af4133..0fe798e 100644
--- a/src/base/trace.hh
+++ b/src/base/trace.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 ARM Limited
+ * Copyright (c) 2014, 2019 ARM Limited
  * All rights reserved
  *
  * Copyright (c) 2001-2006 The Regents of The University of Michigan
@@ -60,21 +60,29 @@
     void dprintf(Tick when, const std::string &name, const char *fmt,
                  const Args &...args)
     {
+        dprintf_flag(when, name, "", fmt, args...);
+    }
+
+    /** Log a single message with a flag prefix. */
+    template <typename ...Args>
+    void dprintf_flag(Tick when, const std::string &name,
+            const std::string &flag,
+            const char *fmt, const Args &...args)
+    {
         if (!name.empty() && ignore.match(name))
             return;
-
         std::ostringstream line;
         ccprintf(line, fmt, args...);
-        logMessage(when, name, line.str());
+        logMessage(when, name, flag, line.str());
     }
 
     /** Dump a block of data of length len */
-    virtual void dump(Tick when, const std::string &name,
-                      const void *d, int len);
+    void dump(Tick when, const std::string &name,
+            const void *d, int len, const std::string &flag);
 
     /** Log formatted message */
     virtual void logMessage(Tick when, const std::string &name,
-                            const std::string &message) = 0;
+            const std::string &flag, const std::string &message) = 0;
 
     /** Return an ostream that can be used to send messages to
      *  the 'same place' as formatted logMessage messages.  This
@@ -104,7 +112,7 @@
     { }
 
     void logMessage(Tick when, const std::string &name,
-                    const std::string &message) override;
+            const std::string &flag, const std::string &message) override;
 
     std::ostream &getOstream() override { return stream; }
 };
@@ -166,46 +174,47 @@
 
 #define DTRACE(x) (Debug::x)
 
-#define DDUMP(x, data, count) do {                                        \
-    using namespace Debug;                                                \
-    if (DTRACE(x))                                                        \
-        Trace::getDebugLogger()->dump(curTick(), name(), data, count);    \
+#define DDUMP(x, data, count) do {               \
+    using namespace Debug;                       \
+    if (DTRACE(x))                               \
+        Trace::getDebugLogger()->dump(           \
+            curTick(), name(), data, count, #x); \
 } while (0)
 
-#define DPRINTF(x, ...) do {                                              \
-    using namespace Debug;                                                \
-    if (DTRACE(x)) {                                                      \
-        Trace::getDebugLogger()->dprintf(curTick(), name(),               \
-            __VA_ARGS__);                                                 \
-    }                                                                     \
+#define DPRINTF(x, ...) do {                     \
+    using namespace Debug;                       \
+    if (DTRACE(x)) {                             \
+        Trace::getDebugLogger()->dprintf_flag(   \
+            curTick(), name(), #x, __VA_ARGS__); \
+    }                                            \
 } while (0)
 
-#define DPRINTFS(x, s, ...) do {                                          \
-    using namespace Debug;                                                \
-    if (DTRACE(x)) {                                                      \
-        Trace::getDebugLogger()->dprintf(curTick(), s->name(),            \
-            __VA_ARGS__);                                                 \
-    }                                                                     \
+#define DPRINTFS(x, s, ...) do {                        \
+    using namespace Debug;                              \
+    if (DTRACE(x)) {                                    \
+        Trace::getDebugLogger()->dprintf_flag(          \
+                curTick(), s->name(), #x, __VA_ARGS__); \
+    }                                                   \
 } while (0)
 
-#define DPRINTFR(x, ...) do {                                             \
-    using namespace Debug;                                                \
-    if (DTRACE(x)) {                                                      \
-        Trace::getDebugLogger()->dprintf((Tick)-1, std::string(),         \
-            __VA_ARGS__);                                                 \
-    }                                                                     \
+#define DPRINTFR(x, ...) do {                          \
+    using namespace Debug;                             \
+    if (DTRACE(x)) {                                   \
+        Trace::getDebugLogger()->dprintf_flag(         \
+            (Tick)-1, std::string(), #x, __VA_ARGS__); \
+    }                                                  \
 } while (0)
 
-#define DDUMPN(data, count) do {                                          \
-    Trace::getDebugLogger()->dump(curTick(), name(), data, count);        \
+#define DDUMPN(data, count) do {                                       \
+    Trace::getDebugLogger()->dump(curTick(), name(), data, count);     \
 } while (0)
 
-#define DPRINTFN(...) do {                                                \
-    Trace::getDebugLogger()->dprintf(curTick(), name(), __VA_ARGS__);     \
+#define DPRINTFN(...) do {                                             \
+    Trace::getDebugLogger()->dprintf(curTick(), name(), __VA_ARGS__);  \
 } while (0)
 
-#define DPRINTFNR(...) do {                                               \
-    Trace::getDebugLogger()->dprintf((Tick)-1, std::string(), __VA_ARGS__);  \
+#define DPRINTFNR(...) do {                                                 \
+    Trace::getDebugLogger()->dprintf((Tick)-1, std::string(), __VA_ARGS__); \
 } while (0)
 
 #else // !TRACING_ON
diff --git a/util/systemc/gem5_within_systemc/sc_logger.cc b/util/systemc/gem5_within_systemc/sc_logger.cc
index a8b9020..195a0cb 100644
--- a/util/systemc/gem5_within_systemc/sc_logger.cc
+++ b/util/systemc/gem5_within_systemc/sc_logger.cc
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 ARM Limited
+ * Copyright (c) 2014, 2019 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -79,7 +79,7 @@
 
 void CuttingStreambuf::outputLine()
 {
-    logger->logMessage((Tick)-1, "gem5", line.str());
+    logger->logMessage((Tick)-1, "gem5", "", line.str());
     line.clear();
     line.str("");
 }
@@ -133,7 +133,7 @@
 /** Log a single message as a single sc_report call */
 void
 Logger::logMessage(Tick when, const std::string &name,
-    const std::string &message)
+    const std::string &flag, const std::string &message)
 {
     /* Need to chop the newline off the message */
     std::string message_without_nl = message;
diff --git a/util/systemc/gem5_within_systemc/sc_logger.hh b/util/systemc/gem5_within_systemc/sc_logger.hh
index 4143f8b..0f9c6a1 100644
--- a/util/systemc/gem5_within_systemc/sc_logger.hh
+++ b/util/systemc/gem5_within_systemc/sc_logger.hh
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 ARM Limited
+ * Copyright (c) 2014, 2019 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -70,7 +70,7 @@
 
     /** Log a single message as a single sc_report call */
     void logMessage(Tick when, const std::string &name,
-        const std::string &message);
+            const std::string &flag, const std::string &message) override;
 
     std::ostream &getOstream();
 };
