diff --git a/domain.te b/domain.te
index 6b025e3ed8ba5f8869515cfdba63f4ab14c1c30b..43e9f4a7e53d54b7410eee0f09d373638c9b3bb3 100644
--- a/domain.te
+++ b/domain.te
@@ -59,6 +59,10 @@ userdebug_or_eng(`
 
   # allow "gdbserver --attach" to work for su.
   allow domain su:process sigchld;
+
+  # Allow writing coredumps to /cores/*
+  allow domain coredump_file:file create_file_perms;
+  allow domain coredump_file:dir ra_dir_perms;
 ')
 
 ###
diff --git a/file.te b/file.te
index 112406be6377c149d73123b42ff8e9eb853d09b3..4edbca1979604e56fc99a7ab14c2265503a515db 100644
--- a/file.te
+++ b/file.te
@@ -43,6 +43,8 @@ type usbfs, fs_type;
 type unlabeled, file_type;
 # Default type for anything under /system.
 type system_file, file_type;
+# /cores for coredumps on userdebug / eng builds
+type coredump_file, file_type;
 # Default type for anything under /data.
 type system_data_file, file_type, data_file_type;
 # /data/.layout_version or other installd-created files that
diff --git a/file_contexts b/file_contexts
index ec91425b16f8c9b909983fd7ec6ad05c5f149b0a..ee5967c213506abfbadcfa6445565a16a0721f5a 100644
--- a/file_contexts
+++ b/file_contexts
@@ -218,6 +218,9 @@
 /data/misc/wifi/hostapd(/.*)?   u:object_r:wpa_socket:s0
 /data/misc/zoneinfo(/.*)?       u:object_r:zoneinfo_data_file:s0
 
+# coredump directory for userdebug/eng devices
+/cores(/.*)?                    u:object_r:coredump_file:s0
+
 # Wallpaper file for other users
 /data/system/users/[0-9]+/wallpaper		u:object_r:wallpaper_file:s0
 #############################