diff --git a/libc/include/fcntl.h b/libc/include/fcntl.h
index 94322fd..3cb3d8a 100644
--- a/libc/include/fcntl.h
+++ b/libc/include/fcntl.h
@@ -50,8 +50,8 @@
 extern int  creat(const char*  path, mode_t  mode);
 
 #if defined(__BIONIC_FORTIFY) && !defined(__clang__)
-__errordecl(__creat_error, "called with O_CREAT, but missing mode");
-__errordecl(__too_many_args_error, "too many arguments");
+__errordecl(__creat_missing_mode, "called with O_CREAT, but missing mode");
+__errordecl(__creat_too_many_args, "too many arguments");
 extern int __open_real(const char *pathname, int flags, ...)
     __asm__(__USER_LABEL_PREFIX__ "open");
 extern int __open_2(const char *, int);
@@ -60,12 +60,12 @@
 int open(const char *pathname, int flags, ...) {
     if (__builtin_constant_p(flags)) {
         if ((flags & O_CREAT) && __builtin_va_arg_pack_len() == 0) {
-            __creat_error();  // compile time error
+            __creat_missing_mode();  // compile time error
         }
     }
 
     if (__builtin_va_arg_pack_len() > 1) {
-        __too_many_args_error();  // compile time error
+        __creat_too_many_args();  // compile time error
     }
 
     if ((__builtin_va_arg_pack_len() == 0) && !__builtin_constant_p(flags)) {
@@ -83,12 +83,12 @@
 int openat(int dirfd, const char *pathname, int flags, ...) {
     if (__builtin_constant_p(flags)) {
         if ((flags & O_CREAT) && __builtin_va_arg_pack_len() == 0) {
-            __creat_error();  // compile time error
+            __creat_missing_mode();  // compile time error
         }
     }
 
     if (__builtin_va_arg_pack_len() > 1) {
-        __too_many_args_error();  // compile time error
+        __creat_too_many_args();  // compile time error
     }
 
     if ((__builtin_va_arg_pack_len() == 0) && !__builtin_constant_p(flags)) {
diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h
index cf0d82d..c9ad23d 100644
--- a/libc/include/sys/stat.h
+++ b/libc/include/sys/stat.h
@@ -134,13 +134,13 @@
 extern mode_t __umask_chk(mode_t);
 extern mode_t __umask_real(mode_t)
     __asm__(__USER_LABEL_PREFIX__ "umask");
-__errordecl(__umask_error, "umask called with invalid mode");
+__errordecl(__umask_invalid_mode, "umask called with invalid mode");
 
 __BIONIC_FORTIFY_INLINE
 mode_t umask(mode_t mode) {
   if (__builtin_constant_p(mode)) {
     if ((mode & 0777) != mode) {
-      __umask_error();
+      __umask_invalid_mode();
     }
     return __umask_real(mode);
   }
