disable dynamic attribute test on pypy
diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h
index 9caf35e..5835446 100644
--- a/include/pybind11/pybind11.h
+++ b/include/pybind11/pybind11.h
@@ -785,6 +785,11 @@
 
         /* Support dynamic attributes */
         if (rec->dynamic_attr) {
+            #if defined(PYPY_VERSION)
+                pybind11_fail(std::string(rec->name) + ": dynamic attributes are "
+                                                       "currently not supported in "
+                                                       "conunction with PyPy!");
+            #endif
             type->ht_type.tp_flags |= Py_TPFLAGS_HAVE_GC;
             type->ht_type.tp_dictoffset = type->ht_type.tp_basicsize; // place the dict at the end
             type->ht_type.tp_basicsize += sizeof(PyObject *); // and allocate enough space for it
diff --git a/tests/test_methods_and_attributes.cpp b/tests/test_methods_and_attributes.cpp
index 824e743..f7d6d68 100644
--- a/tests/test_methods_and_attributes.cpp
+++ b/tests/test_methods_and_attributes.cpp
@@ -176,9 +176,11 @@
         .def_property_readonly("rvalue", &TestPropRVP::get_rvalue)
         .def_property_readonly_static("static_rvalue", [](py::object) { return SimpleValue(); });
 
+#if !defined(PYPY_VERSION)
     py::class_<DynamicClass>(m, "DynamicClass", py::dynamic_attr())
         .def(py::init());
 
     py::class_<CppDerivedDynamicClass, DynamicClass>(m, "CppDerivedDynamicClass")
         .def(py::init());
+#endif
 });
diff --git a/tests/test_methods_and_attributes.py b/tests/test_methods_and_attributes.py
index 1502f77..840ee70 100644
--- a/tests/test_methods_and_attributes.py
+++ b/tests/test_methods_and_attributes.py
@@ -180,6 +180,8 @@
         assert cstats.alive() == 0
 
 
+# https://bitbucket.org/pypy/pypy/issues/2447
+@pytest.unsupported_on_pypy
 def test_cyclic_gc():
     from pybind11_tests import DynamicClass
 
diff --git a/tests/test_pickling.cpp b/tests/test_pickling.cpp
index 3941dc5..87c623d 100644
--- a/tests/test_pickling.cpp
+++ b/tests/test_pickling.cpp
@@ -57,6 +57,7 @@
             p.setExtra2(t[2].cast<int>());
         });
 
+#if !defined(PYPY_VERSION)
     py::class_<PickleableWithDict>(m, "PickleableWithDict", py::dynamic_attr())
         .def(py::init<std::string>())
         .def_readwrite("value", &PickleableWithDict::value)
@@ -78,4 +79,5 @@
             /* Assign Python state */
             self.attr("__dict__") = t[2];
         });
+#endif
 });