Copy builtin functions as atomic. Fixes #746304. Will backport to 2.2.
diff --git a/Lib/copy.py b/Lib/copy.py
index 02aa46b..31adfd3 100644
--- a/Lib/copy.py
+++ b/Lib/copy.py
@@ -120,6 +120,7 @@
 d[types.TypeType] = _copy_atomic
 d[types.XRangeType] = _copy_atomic
 d[types.ClassType] = _copy_atomic
+d[types.BuiltinFunctionType] = _copy_atomic
 
 def _copy_list(x):
     return x[:]
@@ -233,6 +234,7 @@
 d[types.TypeType] = _deepcopy_atomic
 d[types.XRangeType] = _deepcopy_atomic
 d[types.ClassType] = _deepcopy_atomic
+d[types.BuiltinFunctionType] = _deepcopy_atomic
 
 def _deepcopy_list(x, memo):
     y = []
diff --git a/Lib/test/test_copy.py b/Lib/test/test_copy.py
index a53f988..3d44304 100644
--- a/Lib/test/test_copy.py
+++ b/Lib/test/test_copy.py
@@ -84,7 +84,7 @@
             pass
         tests = [None, 42, 2L**100, 3.14, True, False, 1j,
                  "hello", u"hello\u1234", f.func_code,
-                 NewStyle, xrange(10), Classic]
+                 NewStyle, xrange(10), Classic, max]
         for x in tests:
             self.assert_(copy.copy(x) is x, `x`)
 
@@ -257,7 +257,7 @@
             pass
         tests = [None, 42, 2L**100, 3.14, True, False, 1j,
                  "hello", u"hello\u1234", f.func_code,
-                 NewStyle, xrange(10), Classic]
+                 NewStyle, xrange(10), Classic, max]
         for x in tests:
             self.assert_(copy.deepcopy(x) is x, `x`)