From 1ca30cdd84d0882a655ff23fcf8192bfb78e7eb2 Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Tue, 21 Mar 2023 16:46:26 +0100 Subject: [PATCH] [machdep] suppress custom machdep as OCaml module; only YAML input supported --- src/kernel_services/ast_queries/file.ml | 48 +--- src/kernel_services/ast_queries/file.mli | 15 +- tests/misc/custom_machdep.c | 10 +- tests/misc/custom_machdep.ml | 105 -------- .../misc/custom_machdep/__fc_machdep_custom.h | 243 ------------------ tests/misc/dune | 3 - tests/misc/oracle/custom_machdep.0.res.oracle | 30 --- ...1.res.oracle => custom_machdep.res.oracle} | 0 tests/syntax/char_is_unsigned.i | 3 +- tests/syntax/machdep_char_unsigned.yaml | 183 +++++++++++++ 10 files changed, 201 insertions(+), 439 deletions(-) delete mode 100644 tests/misc/custom_machdep.ml delete mode 100644 tests/misc/custom_machdep/__fc_machdep_custom.h delete mode 100644 tests/misc/dune delete mode 100644 tests/misc/oracle/custom_machdep.0.res.oracle rename tests/misc/oracle/{custom_machdep.1.res.oracle => custom_machdep.res.oracle} (100%) create mode 100644 tests/syntax/machdep_char_unsigned.yaml diff --git a/src/kernel_services/ast_queries/file.ml b/src/kernel_services/ast_queries/file.ml index ed44394dbb5..a8de4fc074a 100644 --- a/src/kernel_services/ast_queries/file.ml +++ b/src/kernel_services/ast_queries/file.ml @@ -270,14 +270,6 @@ let print_machdep fmt (m : Cil_types.mach) = (if m.has__builtin_va_list then "has" else "has not") ; end -module CustomMachdeps = - State_builder.Hashtbl(Datatype.String.Hashtbl)(Cil_datatype.Machdep) - (struct - let name = " File.CustomMachdeps" - let size = 5 - let dependencies = [] - end) - let machdep_dir () = Kernel.Share.get_dir ~mode:`Must_exist "machdeps" let regexp_machdep = Str.regexp "^machdep_\\([^.]*\\).yaml$" @@ -289,16 +281,7 @@ let default_machdep_file machdep = let is_default_machdep machdep = Filepath.Normalized.is_file (default_machdep_file machdep) -let mem_machdep s = - CustomMachdeps.mem s || is_default_machdep s || Sys.file_exists s - -let new_machdep s m = - try - let cm = CustomMachdeps.find s in - if not (cm = m) then - Kernel.abort "trying to register incompatible machdeps under name `%s'" s - with Not_found -> - CustomMachdeps.add s m +let mem_machdep s = is_default_machdep s || Sys.file_exists s let default_machdeps () = Array.fold_right @@ -310,7 +293,6 @@ let default_machdeps () = [] let pretty_machdeps fmt = - CustomMachdeps.iter (fun x _ -> Format.fprintf fmt "@ %s" x); List.iter (fun s -> Format.fprintf fmt "@ %s" s) (default_machdeps()) let machdep_help () = @@ -415,22 +397,19 @@ type mach = Cil_types.mach = { (* Local to this module. Use Cil.theMachine.theMachine outside *) let get_machdep () = let m = Kernel.Machdep.get () in - try - CustomMachdeps.find m - with Not_found -> - let file = - if is_default_machdep m then default_machdep_file m - else Filepath.Normalized.of_string ~existence:Must_exist m - in - let res = - Result.bind - (Yaml_unix.of_file (Fpath.v (file:>string))) - mach_of_yaml - in - match res with + let file = + if is_default_machdep m then default_machdep_file m + else Filepath.Normalized.of_string ~existence:Must_exist m + in + let res = + Result.bind + (Yaml_unix.of_file (Fpath.v (file:>string))) + mach_of_yaml + in + match res with | Ok machdep -> machdep | Error (`Msg s) -> - Kernel.fatal "Error during machdep parsing: %s" s + Kernel.fatal "Error during machdep parsing: %s" s let print_machdep_header () = if Kernel.PrintMachdepHeader.get () then begin @@ -440,8 +419,7 @@ let print_machdep_header () = let () = Cmdline.run_after_exiting_stage print_machdep_header -let list_available_machdeps () = - CustomMachdeps.fold (fun m _ acc -> m :: acc) (default_machdeps ()) +let list_available_machdeps = default_machdeps let pretty_machdep ?fmt ?machdep () = let machine = match machdep with None -> get_machdep () | Some m -> m in diff --git a/src/kernel_services/ast_queries/file.mli b/src/kernel_services/ast_queries/file.mli index 7ae56456144..b0da114f710 100644 --- a/src/kernel_services/ast_queries/file.mli +++ b/src/kernel_services/ast_queries/file.mli @@ -53,20 +53,11 @@ val new_file_type: @see <https://frama-c.com/download/frama-c-plugin-development-guide.pdf> Plug-in Development Guide *) -val new_machdep: string -> Cil_types.mach -> unit -(** [new_machdep name module] registers a new machdep name as recognized by - Frama-C through The usual uses is - [Cmdline.run_after_loading_stage - (fun () -> File.new_machdep "my_machdep" my_machdep_implem)] - @since Nitrogen-20111001 - @raise Invalid_argument if the given name already exists - @see <https://frama-c.com/download/frama-c-plugin-development-guide.pdf> Plug-in Development Guide *) - val list_available_machdeps: unit -> string list (** [list_available_machdeps ()] gives the list of the names of available - machdeps, starting with the ones added with new_machdep and ending with - the list of default machdeps. - @since 22.0-Titanium *) + machdeps in Frama-C's share path + @since 22.0-Titanium +*) type code_transformation_category (** type of registered code transformations diff --git a/tests/misc/custom_machdep.c b/tests/misc/custom_machdep.c index 9e4443c8886..1152d590191 100644 --- a/tests/misc/custom_machdep.c +++ b/tests/misc/custom_machdep.c @@ -1,13 +1,5 @@ /* run.config* - EXIT: 1 - MODULE: @PTEST_NAME@.cmxs - DEPS: @PTEST_NAME@/__fc_machdep_custom.h - OPT: -cpp-extra-args="-I./@PTEST_NAME@ -D__FC_MACHDEP_CUSTOM" -machdep custom -print -then -print - COMMENT: we need a -then to test double registering of a machdep - EXIT: 0 - MODULE: - DEPS: @PTEST_NAME@/__fc_machdep_custom.h - OPT: -cpp-extra-args="-I./@PTEST_NAME@ -D__FC_MACHDEP_CUSTOM" -machdep %{dep:@PTEST_DIR@/@PTEST_NAME@.yaml} -print + OPT: -machdep %{dep:@PTEST_DIR@/@PTEST_NAME@.yaml} -print */ // most of the following includes are not directly used, but they test if // the custom machdep has defined the necessary constants diff --git a/tests/misc/custom_machdep.ml b/tests/misc/custom_machdep.ml deleted file mode 100644 index f6431f1f5a5..00000000000 --- a/tests/misc/custom_machdep.ml +++ /dev/null @@ -1,105 +0,0 @@ -open Cil_types - -let mach = - { - version = "foo"; - compiler = "bar"; - cpp_arch_flags = []; - sizeof_short = 2; - sizeof_int = 3; - sizeof_long = 4; - sizeof_longlong = 8; - sizeof_ptr = 4; - sizeof_float = 4; - sizeof_double = 8; - sizeof_longdouble = 12; - sizeof_void = 1; - sizeof_fun = 1; - size_t = "unsigned long"; - ssize_t = "long"; - intptr_t = "long"; - uintptr_t = "unsigned long"; - int_fast8_t = "signed char"; - int_fast16_t = "long"; - int_fast32_t = "long"; - int_fast64_t = "long long"; - uint_fast8_t = "unsigned char"; - uint_fast16_t = "unsigned long"; - uint_fast32_t = "unsigned long"; - uint_fast64_t = "unsigned long long"; - wint_t = "int"; - wchar_t = "int"; - ptrdiff_t = "int"; - sig_atomic_t = "int"; - time_t = "long"; - alignof_short = 2; - alignof_int = 3; - alignof_long = 4; - alignof_longlong = 4; - alignof_ptr = 4; - alignof_float = 4; - alignof_double = 4; - alignof_longdouble = 4; - alignof_str = 1; - alignof_fun = 1; - alignof_aligned= 16; - char_is_unsigned = false; - little_endian = true; - has__builtin_va_list = true; - weof = "(-1)"; - wordsize = "24"; - posix_version = "200809L"; - bufsiz = "255"; - eof = "(-1)"; - fopen_max = "128"; - filename_max = "1023"; - path_max = "256"; - tty_name_max = "255"; - host_name_max = "255"; - l_tmpnam = "255"; - tmp_max = "4095"; - rand_max = "0xFFFFFFFE"; - mb_cur_max = "16"; - nsig = ""; - errno = [ - "edom", "33"; - "eilseq", "84"; - "erange", "34"; - "eintr", "35"; - "eagain", "36"; - "ebadf", "37"; - "efbig", "38"; - "einval", "39"; - "eio", "40"; - "enospc", "41"; - "eoverflow", "42"; - "epipe", "43"; - "espipe", "44"; - "enxio", "45"; - "emfile", "46"; - "enomem", "47"; - "enotsup", "48"; - ]; - machdep_name = "custom_machdep"; - custom_defs = "#define CUSTOM_MACHDEP 1\n"; - } - -let mach2 = { mach with compiler = "baz" } - -(* First run : register [mach] under name [custom]. - Second run : - - register [mach] under name [custom] again. This must work. - - then register [mach2] under name [custom]. This must result in an error. -*) -let () = - let ran = ref false in - Cmdline.run_after_loading_stage - (fun () -> - Kernel.result "Registering machdep 'mach' as 'custom'"; - File.new_machdep "custom" mach; - if !ran then begin - Kernel.result "Trying to register machdep 'mach2' as 'custom'"; - File.new_machdep "custom" mach2 - end - else ran := true - ) diff --git a/tests/misc/custom_machdep/__fc_machdep_custom.h b/tests/misc/custom_machdep/__fc_machdep_custom.h deleted file mode 100644 index 27db3084033..00000000000 --- a/tests/misc/custom_machdep/__fc_machdep_custom.h +++ /dev/null @@ -1,243 +0,0 @@ -/* skeleton of a real custom machdep header. - Note: the values provided here are merely for illustrative purposes - and are not necessarily consistent between them. */ -#ifndef __FC_MACHDEP -#define __FC_MACHDEP - -#ifdef __FC_MACHDEP_CUSTOM - -/* Constants required by the C standard */ -#undef __CHAR_UNSIGNED__ -#define __WORDSIZE 32 -#define __SIZEOF_SHORT 2 -#define __SIZEOF_INT 3 -#define __SIZEOF_LONG 4 -#define __SIZEOF_LONGLONG 8 -#define __CHAR_BIT 8 -#define __PTRDIFF_T int -#define __SIZE_T unsigned int - -#define __FC_SCHAR_MIN (-128) -#define __FC_SCHAR_MAX 127 -#define __FC_UCHAR_MAX 255 -#define __FC_SHRT_MIN (-32768) -#define __FC_SHRT_MAX 32767 -#define __FC_USHRT_MAX 65535 -#define __FC_INT_MIN (-2147483647 - 1) -#define __FC_INT_MAX 2147483647 -#define __FC_UINT_MAX 4294967295U -#define __FC_LONG_MIN (-2147483647L -1L) -#define __FC_LONG_MAX 2147483647L -#define __FC_ULONG_MAX 4294967295UL -#define __FC_LLONG_MIN (-9223372036854775807LL -1LL) -#define __FC_LLONG_MAX 9223372036854775807LL -#define __FC_ULLONG_MAX 18446744073709551615ULL - -#define __INT_MAX_T signed long long -#define __UINT_MAX_T unsigned long long - -#define __FC_PATH_MAX 256 -#define __FC_SIZE_MAX __FC_ULLONG_MAX - -/* Optional constants */ -#define __INT8_T signed char -#define __UINT8_T unsigned char -#define __INT16_T signed short -#define __UINT16_T unsigned short - -#define __INTPTR_T signed long -#define __UINTPTR_T unsigned long -#define __INT32_T signed long -#define __UINT32_T unsigned long -#define __INT64_T signed long long -#define __UINT64_T unsigned long long - -/* Required constants */ -#define __INT_LEAST8_T signed char -#define __UINT_LEAST8_T unsigned char -#define __INT_LEAST16_T signed short -#define __UINT_LEAST16_T unsigned short -#define __INT_LEAST32_T signed long -#define __UINT_LEAST32_T unsigned long -#define __INT_LEAST64_T signed long long -#define __UINT_LEAST64_T unsigned long long - -#define __INT_FAST8_T signed char -#define __UINT_FAST8_T unsigned char -#define __INT_FAST16_T signed int -#define __UINT_FAST16_T unsigned int -#define __INT_FAST32_T signed long -#define __UINT_FAST32_T unsigned long -#define __INT_FAST64_T signed long long -#define __UINT_FAST64_T unsigned long long - - -/* POSIX */ -#define __SSIZE_T int -/* stdio.h */ -#define __FC_L_tmpnam 1024 -/* stdint.h */ -#define __FC_PTRDIFF_MIN __FC_INT_MIN -#define __FC_PTRDIFF_MAX __FC_INT_MAX -#define __FC_INTMAX_MIN (-9223372036854775807LL -1LL) -#define __FC_INTMAX_MAX 9223372036854775807LL -#define __FC_UINTMAX_MAX 18446744073709551615ULL - -#define __FC_EOF (-1) -#define __FC_FOPEN_MAX 20 -#define __FC_RAND_MAX 32767 -#define __WCHAR_T unsigned short - -/* for stdarg.h */ -#define __FC_VA_LIST_T char* - -/* for time.h */ -#define __FC_TIME_T long - -/* for wchar.h */ -#define __WINT_T unsigned int -#define __FC_WEOF (0xFFFFFFFFU) -#define __FC_WINT_MIN 0 -#define __FC_WINT_MAX __FC_UINT_MAX - -/* for errno.h */ - -#define __FC_EPERM 1 -#define __FC_ENOENT 2 -#define __FC_ESRCH 3 -#define __FC_EINTR 4 -#define __FC_EIO 5 -#define __FC_ENXIO 6 -#define __FC_E2BIG 7 -#define __FC_ENOEXEC 8 -#define __FC_EBADF 9 -#define __FC_ECHILD 10 -#define __FC_EAGAIN 11 -#define __FC_ENOMEM 12 -#define __FC_EACCES 13 -#define __FC_EFAULT 14 -#define __FC_ENOTBLK 15 -#define __FC_EBUSY 16 -#define __FC_EEXIST 17 -#define __FC_EXDEV 18 -#define __FC_ENODEV 19 -#define __FC_ENOTDIR 20 -#define __FC_EISDIR 21 -#define __FC_EINVAL 22 -#define __FC_ENFILE 23 -#define __FC_EMFILE 24 -#define __FC_ENOTTY 25 -#define __FC_ETXTBSY 26 -#define __FC_EFBIG 27 -#define __FC_ENOSPC 28 -#define __FC_ESPIPE 29 -#define __FC_EROFS 30 -#define __FC_EMLINK 31 -#define __FC_EPIPE 32 -#define __FC_EDOM 33 -#define __FC_ERANGE 34 -#define __FC_EDEADLK 35 -#define __FC_ENAMETOOLONG 36 -#define __FC_ENOLCK 37 -#define __FC_ENOSYS 38 -#define __FC_ENOTEMPTY 39 -#define __FC_ELOOP 40 -#define __FC_EWOULDBLOCK EAGAIN -#define __FC_ENOMSG 42 -#define __FC_EIDRM 43 -#define __FC_ECHRNG 44 -#define __FC_EL2NSYNC 45 -#define __FC_EL3HLT 46 -#define __FC_EL3RST 47 -#define __FC_ELNRNG 48 -#define __FC_EUNATCH 49 -#define __FC_ENOCSI 50 -#define __FC_EL2HLT 51 -#define __FC_EBADE 52 -#define __FC_EBADR 53 -#define __FC_EXFULL 54 -#define __FC_ENOANO 55 -#define __FC_EBADRQC 56 -#define __FC_EBADSLT 57 -#define __FC_EDEADLOCK EDEADLK -#define __FC_EBFONT 59 -#define __FC_ENOSTR 60 -#define __FC_ENODATA 61 -#define __FC_ETIME 62 -#define __FC_ENOSR 63 -#define __FC_ENONET 64 -#define __FC_ENOPKG 65 -#define __FC_EREMOTE 66 -#define __FC_ENOLINK 67 -#define __FC_EADV 68 -#define __FC_ESRMNT 69 -#define __FC_ECOMM 70 -#define __FC_EPROTO 71 -#define __FC_EMULTIHOP 72 -#define __FC_EDOTDOT 73 -#define __FC_EBADMSG 74 -#define __FC_EOVERFLOW 75 -#define __FC_ENOTUNIQ 76 -#define __FC_EBADFD 77 -#define __FC_EREMCHG 78 -#define __FC_ELIBACC 79 -#define __FC_ELIBBAD 80 -#define __FC_ELIBSCN 81 -#define __FC_ELIBMAX 82 -#define __FC_ELIBEXEC 83 -#define __FC_EILSEQ 84 -#define __FC_ERESTART 85 -#define __FC_ESTRPIPE 86 -#define __FC_EUSERS 87 -#define __FC_ENOTSOCK 88 -#define __FC_EDESTADDRREQ 89 -#define __FC_EMSGSIZE 90 -#define __FC_EPROTOTYPE 91 -#define __FC_ENOPROTOOPT 92 -#define __FC_EPROTONOSUPPORT 93 -#define __FC_ESOCKTNOSUPPORT 94 -#define __FC_ENOTSUP 95 -#define __FC_EOPNOTSUPP 95 -#define __FC_EPFNOSUPPORT 96 -#define __FC_EAFNOSUPPORT 97 -#define __FC_EADDRINUSE 98 -#define __FC_EADDRNOTAVAIL 99 -#define __FC_ENETDOWN 100 -#define __FC_ENETUNREACH 101 -#define __FC_ENETRESET 102 -#define __FC_ECONNABORTED 103 -#define __FC_ECONNRESET 104 -#define __FC_ENOBUFS 105 -#define __FC_EISCONN 106 -#define __FC_ENOTCONN 107 -#define __FC_ESHUTDOWN 108 -#define __FC_ETOOMANYREFS 109 -#define __FC_ETIMEDOUT 110 -#define __FC_ECONNREFUSED 111 -#define __FC_EHOSTDOWN 112 -#define __FC_EHOSTUNREACH 113 -#define __FC_EALREADY 114 -#define __FC_EINPROGRESS 115 -#define __FC_ESTALE 116 -#define __FC_EUCLEAN 117 -#define __FC_ENOTNAM 118 -#define __FC_ENAVAIL 119 -#define __FC_EISNAM 120 -#define __FC_EREMOTEIO 121 -#define __FC_EDQUOT 122 -#define __FC_ENOMEDIUM 123 -#define __FC_EMEDIUMTYPE 124 -#define __FC_ECANCELED 125 -#define __FC_ENOKEY 126 -#define __FC_EKEYEXPIRED 127 -#define __FC_EKEYREVOKED 128 -#define __FC_EKEYREJECTED 129 -#define __FC_EOWNERDEAD 130 -#define __FC_ENOTRECOVERABLE 131 -#define __FC_ERFKILL 132 -#define __FC_EHWPOISON 133 - -#else - error "I'm supposed to be called with __FC_MACHDEP_CUSTOM macro defined" -#endif -#endif diff --git a/tests/misc/dune b/tests/misc/dune deleted file mode 100644 index 350ae7160b3..00000000000 --- a/tests/misc/dune +++ /dev/null @@ -1,3 +0,0 @@ -(subdir - result/custom_machdep - (copy_files ../../custom_machdep/*)) diff --git a/tests/misc/oracle/custom_machdep.0.res.oracle b/tests/misc/oracle/custom_machdep.0.res.oracle deleted file mode 100644 index 5ef336d10b9..00000000000 --- a/tests/misc/oracle/custom_machdep.0.res.oracle +++ /dev/null @@ -1,30 +0,0 @@ -[kernel] Registering machdep 'mach' as 'custom' -[kernel] Parsing custom_machdep.c (with preprocessing) -/* Generated by Frama-C */ -#include "ctype.h" -#include "errno.h" -#include "inttypes.h" -#include "locale.h" -#include "math.h" -#include "signal.h" -#include "stdarg.h" -#include "stddef.h" -#include "stdint.h" -#include "stdio.h" -#include "stdlib.h" -#include "string.h" -#include "strings.h" -#include "time.h" -#include "wchar.h" -int main(void) -{ - int __retres; - __retres = 8388607 - 1; - return __retres; -} - - -[kernel] Registering machdep 'mach' as 'custom' -[kernel] Trying to register machdep 'mach2' as 'custom' -[kernel] User Error: trying to register incompatible machdeps under name `custom' -[kernel] Frama-C aborted: invalid user input. diff --git a/tests/misc/oracle/custom_machdep.1.res.oracle b/tests/misc/oracle/custom_machdep.res.oracle similarity index 100% rename from tests/misc/oracle/custom_machdep.1.res.oracle rename to tests/misc/oracle/custom_machdep.res.oracle diff --git a/tests/syntax/char_is_unsigned.i b/tests/syntax/char_is_unsigned.i index 02a2088fef3..e5a954b1ed0 100644 --- a/tests/syntax/char_is_unsigned.i +++ b/tests/syntax/char_is_unsigned.i @@ -1,7 +1,6 @@ /* run.config PLUGIN: rtegen - MODULE: machdep_char_unsigned - OPT: -print -machdep unsigned_char -then -constfold -rte + OPT: -print -machdep %{dep:@PTEST_DIR@/machdep_char_unsigned.yaml} -then -constfold -rte */ char t[10]; diff --git a/tests/syntax/machdep_char_unsigned.yaml b/tests/syntax/machdep_char_unsigned.yaml new file mode 100644 index 00000000000..cb4fbd6b6c6 --- /dev/null +++ b/tests/syntax/machdep_char_unsigned.yaml @@ -0,0 +1,183 @@ +alignof_aligned: 0 +alignof_short: 2 +compiler: gcc +version: 'N/A' +cpp_arch_flags: +- -m32 +sizeof_short: 2 +sizeof_int: 2 +sizeof_long: 4 +sizeof_longlong: 8 +sizeof_ptr: 4 +sizeof_float: 4 +sizeof_double: 8 +sizeof_longdouble: 8 +sizeof_void: -1 +sizeof_fun: 0 +alignof_int: 2 +alignof_long: 2 +alignof_longlong: 2 +alignof_ptr: 2 +alignof_float: 2 +alignof_double: 2 +alignof_longdouble: 2 +alignof_str: 0 +alignof_fun: 0 +char_is_unsigned: true +little_endian: true +size_t: 'unsigned int' +ssize_t: 'int' +wchar_t: 'int' +intptr_t: 'int' +uintptr_t: 'unsigned int' +int_fast8_t: 'signed char' +int_fast16_t: 'long' +int_fast32_t: 'long' +int_fast64_t: 'long' +uint_fast8_t: 'unsigned char' +uint_fast16_t: 'unsigned long' +uint_fast32_t: 'unsigned long' +uint_fast64_t: 'unsigned long' +ptrdiff_t: 'int' +wint_t: 'long' +sig_atomic_t: 'int' +time_t: 'long' +has__builtin_va_list: true +weof: '(-1L)' +wordsize: '16' +posix_version: '' +bufsiz: '8192' +eof: '(-1)' +fopen_max: '16' +host_name_max: '255' +tty_name_max: '255' +path_max: '255' +filename_max: '2048' +l_tmpnam: '2048' +tmp_max: '0xFFFFFFFF' +rand_max: '0xFFFFFFFE' +mb_cur_max: '16' +nsig: '64' +errno: + e2big: '7' + eacces: '13' + eaddrinuse: '98' + eaddrnotavail: '99' + eafnosupport: '97' + eagain: '11' + ealready: '114' + ebade: '52' + ebadf: '9' + ebadfd: '77' + ebadmsg: '74' + ebadr: '53' + ebadrqc: '56' + ebadslt: '57' + ebusy: '16' + ecanceled: '125' + echild: '10' + echrng: '44' + ecomm: '70' + econnaborted: '103' + econnrefused: '111' + econnreset: '104' + edeadlk: '35' + edeadlock: '35' + edestaddrreq: '89' + edom: '33' + edquot: '122' + eexist: '17' + efault: '14' + efbig: '27' + ehostdown: '112' + ehostunreach: '113' + eidrm: '43' + eilseq: '84' + einprogress: '115' + eintr: '4' + einval: '22' + eio: '5' + eisconn: '106' + eisdir: '21' + eisnam: '120' + ekeyexpired: '127' + ekeyrejected: '129' + ekeyrevoked: '128' + el2hlt: '51' + el2nsync: '45' + el3hlt: '46' + el3rst: '47' + elibacc: '79' + elibbad: '80' + elibexec: '83' + elibmax: '82' + elibscn: '81' + eloop: '40' + emediumtype: '124' + emfile: '24' + emlink: '31' + emsgsize: '90' + emultihop: '72' + enametoolong: '36' + enetdown: '100' + enetreset: '102' + enetunreach: '101' + enfile: '23' + enobufs: '105' + enodata: '61' + enodev: '19' + enoent: '2' + enoexec: '8' + enokey: '126' + enolck: '37' + enolink: '67' + enomedium: '123' + enomem: '12' + enomsg: '42' + enonet: '64' + enopkg: '65' + enoprotoopt: '92' + enospc: '28' + enosr: '63' + enostr: '60' + enosys: '38' + enotblk: '15' + enotconn: '107' + enotdir: '20' + enotempty: '39' + enotsock: '88' + enotsup: '95' + enotty: '25' + enotuniq: '76' + enxio: '6' + eopnotsupp: '95' + eoverflow: '75' + eperm: '1' + epfnosupport: '96' + epipe: '32' + eproto: '71' + eprotonosupport: '93' + eprototype: '91' + erange: '34' + eremchg: '78' + eremote: '66' + eremoteio: '121' + erestart: '85' + erofs: '30' + eshutdown: '108' + esocktnosupport: '94' + espipe: '29' + esrch: '3' + estale: '116' + estrpipe: '86' + etime: '62' + etimedout: '110' + etxtbsy: '26' + euclean: '117' + eunatch: '49' + eusers: '87' + ewouldblock: '11' + exdev: '18' + exfull: '54' +machdep_name: 'machdep_char_unsigned' +custom_defs: '' -- GitLab