-#needs MPI_Keyval_create and MPI_Attr_get
-#attrt 2
+attrt 2
#needs MPI_Intercomm_create
#attric 4
-#needs MPI_Errhandler_set, MPI_Keyval_create, MPI_Keyval_free, MPI_Attr_put
-#attrerr 1
-#needs MPI_Keyval_create, MPI_Keyval_free, MPI_Attr_put
+attrerr 1
+# The MPI-2 specification makes it clear that delect attributes are
+# called on MPI_COMM_WORLD and MPI_COMM_SELF at the very beginning of
+# MPI_Finalize. This is useful for tools that want to perform the MPI
+# equivalent of an "at_exit" action.
+# SMPI does not keep a copy of comm_self at all times for memory reasons...
#attrend 1
#attrend 4
attrend2 1
attrend2 5
-#needs MPI_Errhandler_set, MPI_Comm_create_keyval, MPI_Comm_free_keyval, MPI_Comm_set_attr, MPI_Comm_delete_attr
-#attrerrcomm 1
-#needs MPI_Errhandler_set, MPI_Type_create_keyval, MPI_Type_dup, MPI_Type_set_attr, MPI_Type_delete_attr
-#attrerrtype 1
-#needs MPI_Type_create_keyval, MPI_Type_dup, MPI_Type_set_attr
-#attr2type 1
-#needs MPI_Keyval_create, MPI_Keyval_free, MPI_Attr_put, MPI_Attr_get, MPI_Attr_delete
-#attrorder 1
-#needs MPI_Comm_create_keyval, MPI_Comm_free_keyval, MPI_Comm_get_attr, MPI_Comm_set_attr, MPI_Comm_delete_attr
-#attrordercomm 1
-#needs MPI_Type_create_keyval, MPI_Type_delete_keyval, MPI_Type_set_attr, MPI_Type_delete_attr
-#attrordertype 1
-#needs MPI_Errhandler_set, MPI_Attr_get
-#baseattr2 1
-#needs MPI_Comm_get_attr
-#baseattrcomm 1
-#MPI_Keyval_create, MPI_Keyval_free for type and comm also
+attrerrcomm 1
+attrerrtype 1
+attr2type 1
+attrorder 1
+attrordercomm 1
+attrordertype 1
+baseattr2 1
+baseattrcomm 1
+#would need a refcount in keyval and attr
#fkeyval 1
#fkeyvalcomm 1
#fkeyvaltype 1