Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Aug 2020 16:25:57 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r363968 - projects/clang1100-import/contrib/llvm-project/libcxx/include
Message-ID:  <202008061625.076GPvGF053798@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Thu Aug  6 16:25:56 2020
New Revision: 363968
URL: https://svnweb.freebsd.org/changeset/base/363968

Log:
  Reapply r343111 (partially, by mckusick):
  
  Create new EINTEGRITY error with message "Integrity check failed".
  
  An integrity check such as a check-hash or a cross-correlation failed.
  The integrity error falls between EINVAL that identifies errors in
  parameters to a system call and EIO that identifies errors with the
  underlying storage media. EINTEGRITY is typically raised by intermediate
  kernel layers such as a filesystem or an in-kernel GEOM subsystem when
  they detect inconsistencies. Uses include allowing the mount(8) command
  to return a different exit value to automate the running of fsck(8)
  during a system boot.
  
  These changes make no use of the new error, they just add it. Later
  commits will be made for the use of the new error number and it will
  be added to additional manual pages as appropriate.
  
  Reviewed by:    gnn, dim, brueffer, imp
  Discussed with: kib, cem, emaste, ed, jilles
  Differential Revision: https://reviews.freebsd.org/D18765

Modified:
  projects/clang1100-import/contrib/llvm-project/libcxx/include/__errc
  projects/clang1100-import/contrib/llvm-project/libcxx/include/errno.h

Modified: projects/clang1100-import/contrib/llvm-project/libcxx/include/__errc
==============================================================================
--- projects/clang1100-import/contrib/llvm-project/libcxx/include/__errc	Thu Aug  6 16:20:45 2020	(r363967)
+++ projects/clang1100-import/contrib/llvm-project/libcxx/include/__errc	Thu Aug  6 16:25:56 2020	(r363968)
@@ -45,6 +45,7 @@ enum class errc
     identifier_removed,                 // EIDRM
     illegal_byte_sequence,              // EILSEQ
     inappropriate_io_control_operation, // ENOTTY
+    integrity_check_failed,             // EINTEGRITY
     interrupted,                        // EINTR
     invalid_argument,                   // EINVAL
     invalid_seek,                       // ESPIPE
@@ -142,6 +143,7 @@ _LIBCPP_DECLARE_STRONG_ENUM(errc)
     identifier_removed                  = EIDRM,
     illegal_byte_sequence               = EILSEQ,
     inappropriate_io_control_operation  = ENOTTY,
+    integrity_check_failed              = EINTEGRITY,
     interrupted                         = EINTR,
     invalid_argument                    = EINVAL,
     invalid_seek                        = ESPIPE,

Modified: projects/clang1100-import/contrib/llvm-project/libcxx/include/errno.h
==============================================================================
--- projects/clang1100-import/contrib/llvm-project/libcxx/include/errno.h	Thu Aug  6 16:20:45 2020	(r363967)
+++ projects/clang1100-import/contrib/llvm-project/libcxx/include/errno.h	Thu Aug  6 16:25:56 2020	(r363968)
@@ -32,49 +32,79 @@ Macros:
 
 #ifdef __cplusplus
 
-#if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE)
+#if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) || !defined(EINTEGRITY)
 
-#ifdef ELAST
+#if defined(ELAST)
 
 static const int __elast1 = ELAST+1;
 static const int __elast2 = ELAST+2;
+static const int __elast3 = ELAST+3;
 
 #else
 
 static const int __elast1 = 104;
 static const int __elast2 = 105;
+static const int __elast3 = 106;
 
 #endif
 
-#ifdef ENOTRECOVERABLE
+#if !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
+#define ENOTRECOVERABLE __elast1
+#define EOWNERDEAD __elast2
+#define EINTEGRITY __elast3
+#if defined(ELAST)
+#undef ELAST
+#define ELAST EINTEGRITY
+#endif
 
+#elif !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
+#define ENOTRECOVERABLE __elast1
+#define EOWNERDEAD __elast2
+#if defined(ELAST)
+#undef ELAST
+#define ELAST EOWNERDEAD
+#endif
+
+#elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
 #define EOWNERDEAD __elast1
+#define EINTEGRITY __elast2
+#if defined(ELAST)
+#undef ELAST
+#define ELAST EINTEGRITY
+#endif
 
-#ifdef ELAST
+#elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
+#define EOWNERDEAD __elast1
+#if defined(ELAST)
 #undef ELAST
 #define ELAST EOWNERDEAD
 #endif
 
-#elif defined(EOWNERDEAD)
+#elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
+#define ENOTRECOVERABLE __elast1
+#define EINTEGRITY __elast2
+#if defined(ELAST)
+#undef ELAST
+#define ELAST EINTEGRITY
+#endif
 
+#elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
 #define ENOTRECOVERABLE __elast1
-#ifdef ELAST
+#if defined(ELAST)
 #undef ELAST
 #define ELAST ENOTRECOVERABLE
 #endif
 
-#else  // defined(EOWNERDEAD)
-
-#define EOWNERDEAD __elast1
-#define ENOTRECOVERABLE __elast2
-#ifdef ELAST
+#elif defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
+#define EINTEGRITY __elast1
+#if defined(ELAST)
 #undef ELAST
-#define ELAST ENOTRECOVERABLE
+#define ELAST EINTEGRITY
 #endif
 
-#endif  // defined(EOWNERDEAD)
+#endif // !defined(OWNERDEAD) && !defined(NOTRECOVERABLE) && !defined(INTEGRITY)
 
-#endif  // !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE)
+#endif // !defined(OWNERDEAD) || !defined(NOTRECOVERABLE) || !defined(INTEGRITY)
 
 //  supply errno values likely to be missing, particularly on Windows
 
@@ -390,6 +420,10 @@ static const int __elast2 = 105;
 
 #ifndef EMLINK
 #define EMLINK 9979
+#endif
+
+#ifndef EINTEGRITY
+#define EINTEGRITY 9980
 #endif
 
 #endif // __cplusplus



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202008061625.076GPvGF053798>