diff --git a/src/systemc/core/sc_attr.cc b/src/systemc/core/sc_attr.cc
index 28e0b60..ca9e0af 100644
--- a/src/systemc/core/sc_attr.cc
+++ b/src/systemc/core/sc_attr.cc
@@ -89,4 +89,53 @@
     return (const_iterator)nullptr;
 }
 
+sc_attr_cltn::sc_attr_cltn()
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+}
+
+sc_attr_cltn::sc_attr_cltn(const sc_attr_cltn &)
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+}
+
+sc_attr_cltn::~sc_attr_cltn()
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+}
+
+bool
+sc_attr_cltn::push_back(sc_attr_base *)
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+    return false;
+}
+
+sc_attr_base *
+sc_attr_cltn::operator [] (const std::string &name)
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+    return nullptr;
+}
+
+const sc_attr_base *
+sc_attr_cltn::operator [] (const std::string &name) const
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+    return nullptr;
+}
+
+sc_attr_base *
+sc_attr_cltn::remove(const std::string &name)
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+    return nullptr;
+}
+
+void
+sc_attr_cltn::remove_all()
+{
+    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
+}
+
 } // namespace sc_core
diff --git a/src/systemc/ext/core/sc_attr.hh b/src/systemc/ext/core/sc_attr.hh
index d7baa14..e1c5ae7 100644
--- a/src/systemc/ext/core/sc_attr.hh
+++ b/src/systemc/ext/core/sc_attr.hh
@@ -31,6 +31,7 @@
 #define __SYSTEMC_EXT_CORE_SC_ATTR_HH__
 
 #include <string>
+#include <vector>
 
 namespace sc_core
 {
@@ -91,6 +92,33 @@
     const_iterator begin() const;
     iterator end();
     const_iterator end() const;
+
+  private:
+    // Disabled
+    sc_attr_cltn &operator = (const sc_attr_cltn &);
+
+    // "Impelemtation defined" members required by the regression tests.
+  public:
+    sc_attr_cltn();
+
+    // It's non-standard for this not to be disabled.
+    sc_attr_cltn(const sc_attr_cltn &);
+
+    ~sc_attr_cltn();
+
+    bool push_back(sc_attr_base *);
+
+    sc_attr_base *operator [] (const std::string &name);
+    const sc_attr_base *operator [] (const std::string &name) const;
+
+    sc_attr_base *remove(const std::string &name);
+
+    void remove_all();
+
+    int size() const { return cltn.size(); }
+
+  private:
+    std::vector<sc_attr_base *> cltn;
 };
 
 } // namespace sc_core
diff --git a/src/systemc/ext/core/sc_process_handle.hh b/src/systemc/ext/core/sc_process_handle.hh
index a928ab3..a8f977b 100644
--- a/src/systemc/ext/core/sc_process_handle.hh
+++ b/src/systemc/ext/core/sc_process_handle.hh
@@ -66,10 +66,15 @@
     virtual const char *what() const throw();
     virtual bool is_reset() const;
 
-  protected:
-    sc_unwind_exception();
+    // Nonstandard.
+    // These should be protected, but I think this is to enable catch by
+    // value.
+  public:
     sc_unwind_exception(const sc_unwind_exception &);
     virtual ~sc_unwind_exception() throw();
+
+  protected:
+    sc_unwind_exception();
 };
 
 class sc_process_handle
