From f8f59f9c1cf6c31f0fce115780283171efc834c2 Mon Sep 17 00:00:00 2001 From: WANG Rui Date: Mon, 7 Aug 2023 17:13:14 +0800 Subject: [PATCH] Add support for loongarch64 --- 0001-vendor-linux-raw-sys-0.1.3.patch | 9745 +++++ 0002-vendor-linux-raw-sys-0.1.4.patch | 9745 +++++ 0003-vendor-cc-1.0.79.patch | 7331 ++++ 0004-vendor-openssl-src-111.25.3-1.1.1t.patch | 4522 ++ 0005-vendor-libffi-sys-2.3.0.patch | 34958 ++++++++++++++++ 0006-rust-add-loongarch64-support.patch | 1898 + rust.spec | 21 +- 7 files changed, 68218 insertions(+), 2 deletions(-) create mode 100644 0001-vendor-linux-raw-sys-0.1.3.patch create mode 100644 0002-vendor-linux-raw-sys-0.1.4.patch create mode 100644 0003-vendor-cc-1.0.79.patch create mode 100644 0004-vendor-openssl-src-111.25.3-1.1.1t.patch create mode 100644 0005-vendor-libffi-sys-2.3.0.patch create mode 100644 0006-rust-add-loongarch64-support.patch diff --git a/0001-vendor-linux-raw-sys-0.1.3.patch b/0001-vendor-linux-raw-sys-0.1.3.patch new file mode 100644 index 0000000..00e00c5 --- /dev/null +++ b/0001-vendor-linux-raw-sys-0.1.3.patch @@ -0,0 +1,9745 @@ +From 37615dc33f4e6855edb88d9f73de48836d64541b Mon Sep 17 00:00:00 2001 +From: hev +Date: Tue, 8 Aug 2023 11:06:09 +0800 +Subject: [PATCH 1/6] vendor: linux-raw-sys-0.1.3 + +--- + .../linux-raw-sys-0.1.3/.cargo-checksum.json | 2 +- + vendor/linux-raw-sys-0.1.3/src/lib.rs | 16 + + .../src/loongarch64/errno.rs | 135 + + .../src/loongarch64/general.rs | 5205 +++++++++++++++++ + .../src/loongarch64/ioctl.rs | 1465 +++++ + .../src/loongarch64/netlink.rs | 2860 +++++++++ + 6 files changed, 9682 insertions(+), 1 deletion(-) + create mode 100644 vendor/linux-raw-sys-0.1.3/src/loongarch64/errno.rs + create mode 100644 vendor/linux-raw-sys-0.1.3/src/loongarch64/general.rs + create mode 100644 vendor/linux-raw-sys-0.1.3/src/loongarch64/ioctl.rs + create mode 100644 vendor/linux-raw-sys-0.1.3/src/loongarch64/netlink.rs + +diff --git a/vendor/linux-raw-sys-0.1.3/.cargo-checksum.json b/vendor/linux-raw-sys-0.1.3/.cargo-checksum.json +index dd65e1f64..3d3eada26 100644 +--- a/vendor/linux-raw-sys-0.1.3/.cargo-checksum.json ++++ b/vendor/linux-raw-sys-0.1.3/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{"CODE_OF_CONDUCT.md":"ccd9e538ce44713a2486cc8e4c01b8c8b846d1ccff15de728d8d6fa9a7f846cd","COPYRIGHT":"3290ae0fbc9ddb77d2239121d710f0bb9d31b3b4744e6d97fe01e652b4c1870b","Cargo.toml":"15440cfdb69f4c22285c54ce204f0cc682d8a66775837d1d7ba837f71ebf6a54","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"018c6f3402f53659e773ed3d9f7b340fb0f76cba6354c0f13705960a7ba23d61","src/aarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/aarch64/general.rs":"9a13415e64cd991e52688dcfe05a265f74c528cadaa5ed5be1e4b323dfdce62d","src/aarch64/ioctl.rs":"723f963524494ecdc1e89ccdae22930e08103b15a54e1830647e5eab53f324ce","src/aarch64/netlink.rs":"e79e75c8c0c299020d9375dda2103ffca837f37a4814f25c3d6af6af1922958f","src/arm/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/arm/general.rs":"6fb927aa8fe794e4586e6e917f6c2f3ea22dd93fdc7326496aabf21a6a93093f","src/arm/ioctl.rs":"7dd20d0458d141bcc0c8b512bc116a6bbe8e44cdc53bb64fa7b708de1c86da0f","src/arm/netlink.rs":"6aaee90e508ddeaca3637291e9a12f4257f6d27e73c6eec11868d948e1e4c724","src/lib.rs":"9ffe12d7022e4260b831012e9495ec97f267a3a232a2a2e263b77c16a0e911d0","src/mips/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips/general.rs":"3374e45bbcfb2f62f163fbff05d9b786a4fd036b9a4beb9671b14e865048a9e3","src/mips/ioctl.rs":"84350b09b48effd8658c0cb455d158d40560e1480588843b92be4ad2c539141e","src/mips/netlink.rs":"3acc8c5156e550a2d7c299919cdabb75e4225f450df765c447bcbc89323cc463","src/mips64/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips64/general.rs":"22c331bad3f75baea83a5eea5211318ff5979be2a4401f7dd826d8dd2adfc254","src/mips64/ioctl.rs":"efa0a37a086ff4dff1889acdd728edd54f31b0ba389b54af7dd70279a9429537","src/mips64/netlink.rs":"9b92fff4ba43d4718cd1e880ccdfb25eb4a4d0b3136309cba9631e958187fd45","src/powerpc/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc/general.rs":"4ea12c0d6ad14f71291c688fbd78014e35ff3a4115155461fca5084960575de5","src/powerpc/ioctl.rs":"be402bfba0fd1014bc49648402f15aec5ad603e5991158db64ae07117eb60ffe","src/powerpc/netlink.rs":"745a7256254b0153b4aaf8c2fc5371aaca6d79666fddc5f539edc4c4e6cc1fcd","src/powerpc64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc64/general.rs":"7cc72131ebb7736700500148e776e221619f89ecdf119207d7f8a24171810525","src/powerpc64/ioctl.rs":"be402bfba0fd1014bc49648402f15aec5ad603e5991158db64ae07117eb60ffe","src/powerpc64/netlink.rs":"b7be2f1ae16cc6b360d3865fc786188f0c820f48ac8923db5eed538f44c66793","src/riscv32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv32/general.rs":"47740516fd13af34216fca38a9be1eb3d46739e16cfbcd607d0c142c72b3f21e","src/riscv32/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/riscv32/netlink.rs":"1b08bd4b65b500b34b72e5b7cf4738b7529be1fb38096bb75299e228ab1f22f6","src/riscv64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv64/general.rs":"65714484bd8a745c23f6bab9dc9546a99ef2974c80afc9e7a430b92ad1e2b08d","src/riscv64/ioctl.rs":"935141f7bc36e4d2c6c6be38aa42026a747f0bfc72bbfcc7cda3a9c540151470","src/riscv64/netlink.rs":"8b73509c05aaace7619168ecf6b128e4ca6db7f5bd3eb33994a2b57e8b9e0344","src/s390x/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/s390x/general.rs":"499eac9bc32a159a6f99371250d32d03ec22c16d357702dde133174478a850ff","src/s390x/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/s390x/netlink.rs":"25f47d91f9b1a71f4a33543ddcf6823c7c94e95c2f82587f5bbd9d1a892d61f4","src/sparc/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc/general.rs":"7a2e95915edd5207ef0de9dc524e38bc51a93c48d14275f88cb27664c8329a03","src/sparc/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc/netlink.rs":"b9a608f050677cd7cebcb832705935fa8c79858870c82a12c4fda4edf2f1023a","src/sparc64/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc64/general.rs":"06cea8ae67e9f07c99dd2556a5ac7dc3c963dce1fa317fe396c53caf5b2db65b","src/sparc64/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc64/netlink.rs":"2e718411da2f58aa8bab75b384de38b778c4bea25d3065210bc5e78b7cdde2e8","src/x32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x32/general.rs":"b5189e62ee69bc605570804495e4c0cc793498f1002fdc80c135e00afa53c6ce","src/x32/ioctl.rs":"85e548f8536204552b5b23fb8b3bfeade961fc73c41a9691156012304e0dd84c","src/x32/netlink.rs":"275a7694600599f6856a2606133bd9c203261f164d9153cd0cd8c253a6428769","src/x86/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86/general.rs":"89186979648bde769f128ab85a864188b5ca65b99803c8ee1f834302bb42317c","src/x86/ioctl.rs":"6238356fcad51581c1bfaac29ca6b418a7cb0a0a37692cbd0d370a42890fd319","src/x86/netlink.rs":"6aaee90e508ddeaca3637291e9a12f4257f6d27e73c6eec11868d948e1e4c724","src/x86_64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86_64/general.rs":"9150b5bbac59f17eb59505a0effe7ec0043a47f97f3124b5377a10422a28e80f","src/x86_64/ioctl.rs":"85e548f8536204552b5b23fb8b3bfeade961fc73c41a9691156012304e0dd84c","src/x86_64/netlink.rs":"fa40e0f28bb09540e219ac6a5f31f50efdc770aa70704a809827dae6a4573885"},"package":"8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f"} +\ No newline at end of file ++{"files":{"CODE_OF_CONDUCT.md":"ccd9e538ce44713a2486cc8e4c01b8c8b846d1ccff15de728d8d6fa9a7f846cd","COPYRIGHT":"3290ae0fbc9ddb77d2239121d710f0bb9d31b3b4744e6d97fe01e652b4c1870b","Cargo.toml":"15440cfdb69f4c22285c54ce204f0cc682d8a66775837d1d7ba837f71ebf6a54","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"018c6f3402f53659e773ed3d9f7b340fb0f76cba6354c0f13705960a7ba23d61","src/aarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/aarch64/general.rs":"9a13415e64cd991e52688dcfe05a265f74c528cadaa5ed5be1e4b323dfdce62d","src/aarch64/ioctl.rs":"723f963524494ecdc1e89ccdae22930e08103b15a54e1830647e5eab53f324ce","src/aarch64/netlink.rs":"e79e75c8c0c299020d9375dda2103ffca837f37a4814f25c3d6af6af1922958f","src/arm/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/arm/general.rs":"6fb927aa8fe794e4586e6e917f6c2f3ea22dd93fdc7326496aabf21a6a93093f","src/arm/ioctl.rs":"7dd20d0458d141bcc0c8b512bc116a6bbe8e44cdc53bb64fa7b708de1c86da0f","src/arm/netlink.rs":"6aaee90e508ddeaca3637291e9a12f4257f6d27e73c6eec11868d948e1e4c724","src/lib.rs":"2ba0a2d4c29e07a02147d5e23273b7ee6c9ed25384dcc6e1f78d87fc9b5b7175","src/loongarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/loongarch64/general.rs":"3773fec3ddf27668d2fd48ac2b83a551a06db5f017ee2242e70c194cce3bef9f","src/loongarch64/ioctl.rs":"c5e3e77f50f71f996c6112e5acf8ebf7cf5519ea57c32c7e570b89d857057f7d","src/loongarch64/netlink.rs":"0a61b43de4353c28fe746cc196a2696ff469b6aa7f2b35541e01d79ae05d6a0b","src/mips/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips/general.rs":"3374e45bbcfb2f62f163fbff05d9b786a4fd036b9a4beb9671b14e865048a9e3","src/mips/ioctl.rs":"84350b09b48effd8658c0cb455d158d40560e1480588843b92be4ad2c539141e","src/mips/netlink.rs":"3acc8c5156e550a2d7c299919cdabb75e4225f450df765c447bcbc89323cc463","src/mips64/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips64/general.rs":"22c331bad3f75baea83a5eea5211318ff5979be2a4401f7dd826d8dd2adfc254","src/mips64/ioctl.rs":"efa0a37a086ff4dff1889acdd728edd54f31b0ba389b54af7dd70279a9429537","src/mips64/netlink.rs":"9b92fff4ba43d4718cd1e880ccdfb25eb4a4d0b3136309cba9631e958187fd45","src/powerpc/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc/general.rs":"4ea12c0d6ad14f71291c688fbd78014e35ff3a4115155461fca5084960575de5","src/powerpc/ioctl.rs":"be402bfba0fd1014bc49648402f15aec5ad603e5991158db64ae07117eb60ffe","src/powerpc/netlink.rs":"745a7256254b0153b4aaf8c2fc5371aaca6d79666fddc5f539edc4c4e6cc1fcd","src/powerpc64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc64/general.rs":"7cc72131ebb7736700500148e776e221619f89ecdf119207d7f8a24171810525","src/powerpc64/ioctl.rs":"be402bfba0fd1014bc49648402f15aec5ad603e5991158db64ae07117eb60ffe","src/powerpc64/netlink.rs":"b7be2f1ae16cc6b360d3865fc786188f0c820f48ac8923db5eed538f44c66793","src/riscv32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv32/general.rs":"47740516fd13af34216fca38a9be1eb3d46739e16cfbcd607d0c142c72b3f21e","src/riscv32/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/riscv32/netlink.rs":"1b08bd4b65b500b34b72e5b7cf4738b7529be1fb38096bb75299e228ab1f22f6","src/riscv64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv64/general.rs":"65714484bd8a745c23f6bab9dc9546a99ef2974c80afc9e7a430b92ad1e2b08d","src/riscv64/ioctl.rs":"935141f7bc36e4d2c6c6be38aa42026a747f0bfc72bbfcc7cda3a9c540151470","src/riscv64/netlink.rs":"8b73509c05aaace7619168ecf6b128e4ca6db7f5bd3eb33994a2b57e8b9e0344","src/s390x/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/s390x/general.rs":"499eac9bc32a159a6f99371250d32d03ec22c16d357702dde133174478a850ff","src/s390x/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/s390x/netlink.rs":"25f47d91f9b1a71f4a33543ddcf6823c7c94e95c2f82587f5bbd9d1a892d61f4","src/sparc/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc/general.rs":"7a2e95915edd5207ef0de9dc524e38bc51a93c48d14275f88cb27664c8329a03","src/sparc/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc/netlink.rs":"b9a608f050677cd7cebcb832705935fa8c79858870c82a12c4fda4edf2f1023a","src/sparc64/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc64/general.rs":"06cea8ae67e9f07c99dd2556a5ac7dc3c963dce1fa317fe396c53caf5b2db65b","src/sparc64/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc64/netlink.rs":"2e718411da2f58aa8bab75b384de38b778c4bea25d3065210bc5e78b7cdde2e8","src/x32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x32/general.rs":"b5189e62ee69bc605570804495e4c0cc793498f1002fdc80c135e00afa53c6ce","src/x32/ioctl.rs":"85e548f8536204552b5b23fb8b3bfeade961fc73c41a9691156012304e0dd84c","src/x32/netlink.rs":"275a7694600599f6856a2606133bd9c203261f164d9153cd0cd8c253a6428769","src/x86/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86/general.rs":"89186979648bde769f128ab85a864188b5ca65b99803c8ee1f834302bb42317c","src/x86/ioctl.rs":"6238356fcad51581c1bfaac29ca6b418a7cb0a0a37692cbd0d370a42890fd319","src/x86/netlink.rs":"6aaee90e508ddeaca3637291e9a12f4257f6d27e73c6eec11868d948e1e4c724","src/x86_64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86_64/general.rs":"9150b5bbac59f17eb59505a0effe7ec0043a47f97f3124b5377a10422a28e80f","src/x86_64/ioctl.rs":"85e548f8536204552b5b23fb8b3bfeade961fc73c41a9691156012304e0dd84c","src/x86_64/netlink.rs":"fa40e0f28bb09540e219ac6a5f31f50efdc770aa70704a809827dae6a4573885"},"package":"8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f"} +diff --git a/vendor/linux-raw-sys-0.1.3/src/lib.rs b/vendor/linux-raw-sys-0.1.3/src/lib.rs +index 199cddefa..f3a2e3569 100644 +--- a/vendor/linux-raw-sys-0.1.3/src/lib.rs ++++ b/vendor/linux-raw-sys-0.1.3/src/lib.rs +@@ -112,6 +112,22 @@ pub mod ioctl; + #[path = "aarch64/netlink.rs"] + pub mod netlink; + #[cfg(feature = "errno")] ++#[cfg(target_arch = "loongarch64")] ++#[path = "loongarch64/errno.rs"] ++pub mod errno; ++#[cfg(feature = "general")] ++#[cfg(target_arch = "loongarch64")] ++#[path = "loongarch64/general.rs"] ++pub mod general; ++#[cfg(feature = "ioctl")] ++#[cfg(target_arch = "loongarch64")] ++#[path = "loongarch64/ioctl.rs"] ++pub mod ioctl; ++#[cfg(feature = "netlink")] ++#[cfg(target_arch = "loongarch64")] ++#[path = "loongarch64/netlink.rs"] ++pub mod netlink; ++#[cfg(feature = "errno")] + #[cfg(target_arch = "mips")] + #[path = "mips/errno.rs"] + pub mod errno; +diff --git a/vendor/linux-raw-sys-0.1.3/src/loongarch64/errno.rs b/vendor/linux-raw-sys-0.1.3/src/loongarch64/errno.rs +new file mode 100644 +index 000000000..8c5620d74 +--- /dev/null ++++ b/vendor/linux-raw-sys-0.1.3/src/loongarch64/errno.rs +@@ -0,0 +1,135 @@ ++/* automatically generated by rust-bindgen 0.59.2 */ ++ ++pub const EPERM: u32 = 1; ++pub const ENOENT: u32 = 2; ++pub const ESRCH: u32 = 3; ++pub const EINTR: u32 = 4; ++pub const EIO: u32 = 5; ++pub const ENXIO: u32 = 6; ++pub const E2BIG: u32 = 7; ++pub const ENOEXEC: u32 = 8; ++pub const EBADF: u32 = 9; ++pub const ECHILD: u32 = 10; ++pub const EAGAIN: u32 = 11; ++pub const ENOMEM: u32 = 12; ++pub const EACCES: u32 = 13; ++pub const EFAULT: u32 = 14; ++pub const ENOTBLK: u32 = 15; ++pub const EBUSY: u32 = 16; ++pub const EEXIST: u32 = 17; ++pub const EXDEV: u32 = 18; ++pub const ENODEV: u32 = 19; ++pub const ENOTDIR: u32 = 20; ++pub const EISDIR: u32 = 21; ++pub const EINVAL: u32 = 22; ++pub const ENFILE: u32 = 23; ++pub const EMFILE: u32 = 24; ++pub const ENOTTY: u32 = 25; ++pub const ETXTBSY: u32 = 26; ++pub const EFBIG: u32 = 27; ++pub const ENOSPC: u32 = 28; ++pub const ESPIPE: u32 = 29; ++pub const EROFS: u32 = 30; ++pub const EMLINK: u32 = 31; ++pub const EPIPE: u32 = 32; ++pub const EDOM: u32 = 33; ++pub const ERANGE: u32 = 34; ++pub const EDEADLK: u32 = 35; ++pub const ENAMETOOLONG: u32 = 36; ++pub const ENOLCK: u32 = 37; ++pub const ENOSYS: u32 = 38; ++pub const ENOTEMPTY: u32 = 39; ++pub const ELOOP: u32 = 40; ++pub const EWOULDBLOCK: u32 = 11; ++pub const ENOMSG: u32 = 42; ++pub const EIDRM: u32 = 43; ++pub const ECHRNG: u32 = 44; ++pub const EL2NSYNC: u32 = 45; ++pub const EL3HLT: u32 = 46; ++pub const EL3RST: u32 = 47; ++pub const ELNRNG: u32 = 48; ++pub const EUNATCH: u32 = 49; ++pub const ENOCSI: u32 = 50; ++pub const EL2HLT: u32 = 51; ++pub const EBADE: u32 = 52; ++pub const EBADR: u32 = 53; ++pub const EXFULL: u32 = 54; ++pub const ENOANO: u32 = 55; ++pub const EBADRQC: u32 = 56; ++pub const EBADSLT: u32 = 57; ++pub const EDEADLOCK: u32 = 35; ++pub const EBFONT: u32 = 59; ++pub const ENOSTR: u32 = 60; ++pub const ENODATA: u32 = 61; ++pub const ETIME: u32 = 62; ++pub const ENOSR: u32 = 63; ++pub const ENONET: u32 = 64; ++pub const ENOPKG: u32 = 65; ++pub const EREMOTE: u32 = 66; ++pub const ENOLINK: u32 = 67; ++pub const EADV: u32 = 68; ++pub const ESRMNT: u32 = 69; ++pub const ECOMM: u32 = 70; ++pub const EPROTO: u32 = 71; ++pub const EMULTIHOP: u32 = 72; ++pub const EDOTDOT: u32 = 73; ++pub const EBADMSG: u32 = 74; ++pub const EOVERFLOW: u32 = 75; ++pub const ENOTUNIQ: u32 = 76; ++pub const EBADFD: u32 = 77; ++pub const EREMCHG: u32 = 78; ++pub const ELIBACC: u32 = 79; ++pub const ELIBBAD: u32 = 80; ++pub const ELIBSCN: u32 = 81; ++pub const ELIBMAX: u32 = 82; ++pub const ELIBEXEC: u32 = 83; ++pub const EILSEQ: u32 = 84; ++pub const ERESTART: u32 = 85; ++pub const ESTRPIPE: u32 = 86; ++pub const EUSERS: u32 = 87; ++pub const ENOTSOCK: u32 = 88; ++pub const EDESTADDRREQ: u32 = 89; ++pub const EMSGSIZE: u32 = 90; ++pub const EPROTOTYPE: u32 = 91; ++pub const ENOPROTOOPT: u32 = 92; ++pub const EPROTONOSUPPORT: u32 = 93; ++pub const ESOCKTNOSUPPORT: u32 = 94; ++pub const EOPNOTSUPP: u32 = 95; ++pub const EPFNOSUPPORT: u32 = 96; ++pub const EAFNOSUPPORT: u32 = 97; ++pub const EADDRINUSE: u32 = 98; ++pub const EADDRNOTAVAIL: u32 = 99; ++pub const ENETDOWN: u32 = 100; ++pub const ENETUNREACH: u32 = 101; ++pub const ENETRESET: u32 = 102; ++pub const ECONNABORTED: u32 = 103; ++pub const ECONNRESET: u32 = 104; ++pub const ENOBUFS: u32 = 105; ++pub const EISCONN: u32 = 106; ++pub const ENOTCONN: u32 = 107; ++pub const ESHUTDOWN: u32 = 108; ++pub const ETOOMANYREFS: u32 = 109; ++pub const ETIMEDOUT: u32 = 110; ++pub const ECONNREFUSED: u32 = 111; ++pub const EHOSTDOWN: u32 = 112; ++pub const EHOSTUNREACH: u32 = 113; ++pub const EALREADY: u32 = 114; ++pub const EINPROGRESS: u32 = 115; ++pub const ESTALE: u32 = 116; ++pub const EUCLEAN: u32 = 117; ++pub const ENOTNAM: u32 = 118; ++pub const ENAVAIL: u32 = 119; ++pub const EISNAM: u32 = 120; ++pub const EREMOTEIO: u32 = 121; ++pub const EDQUOT: u32 = 122; ++pub const ENOMEDIUM: u32 = 123; ++pub const EMEDIUMTYPE: u32 = 124; ++pub const ECANCELED: u32 = 125; ++pub const ENOKEY: u32 = 126; ++pub const EKEYEXPIRED: u32 = 127; ++pub const EKEYREVOKED: u32 = 128; ++pub const EKEYREJECTED: u32 = 129; ++pub const EOWNERDEAD: u32 = 130; ++pub const ENOTRECOVERABLE: u32 = 131; ++pub const ERFKILL: u32 = 132; ++pub const EHWPOISON: u32 = 133; +diff --git a/vendor/linux-raw-sys-0.1.3/src/loongarch64/general.rs b/vendor/linux-raw-sys-0.1.3/src/loongarch64/general.rs +new file mode 100644 +index 000000000..79d309016 +--- /dev/null ++++ b/vendor/linux-raw-sys-0.1.3/src/loongarch64/general.rs +@@ -0,0 +1,5205 @@ ++/* automatically generated by rust-bindgen 0.59.2 */ ++ ++#[repr(C)] ++#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] ++pub struct __BindgenBitfieldUnit { ++storage: Storage, ++} ++impl __BindgenBitfieldUnit { ++#[inline] ++pub const fn new(storage: Storage) -> Self { ++Self { storage } ++} ++} ++impl __BindgenBitfieldUnit ++where ++Storage: AsRef<[u8]> + AsMut<[u8]>, ++{ ++#[inline] ++pub fn get_bit(&self, index: usize) -> bool { ++debug_assert!(index / 8 < self.storage.as_ref().len()); ++let byte_index = index / 8; ++let byte = self.storage.as_ref()[byte_index]; ++let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; ++let mask = 1 << bit_index; ++byte & mask == mask ++} ++#[inline] ++pub fn set_bit(&mut self, index: usize, val: bool) { ++debug_assert!(index / 8 < self.storage.as_ref().len()); ++let byte_index = index / 8; ++let byte = &mut self.storage.as_mut()[byte_index]; ++let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; ++let mask = 1 << bit_index; ++if val { ++*byte |= mask; ++} else { ++*byte &= !mask; ++} ++} ++#[inline] ++pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { ++debug_assert!(bit_width <= 64); ++debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); ++debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); ++let mut val = 0; ++for i in 0..(bit_width as usize) { ++if self.get_bit(i + bit_offset) { ++let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; ++val |= 1 << index; ++} ++} ++val ++} ++#[inline] ++pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { ++debug_assert!(bit_width <= 64); ++debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); ++debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); ++for i in 0..(bit_width as usize) { ++let mask = 1 << i; ++let val_bit_is_set = val & mask == mask; ++let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; ++self.set_bit(index + bit_offset, val_bit_is_set); ++} ++} ++} ++#[repr(C)] ++#[derive(Default)] ++pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); ++impl __IncompleteArrayField { ++#[inline] ++pub const fn new() -> Self { ++__IncompleteArrayField(::core::marker::PhantomData, []) ++} ++#[inline] ++pub fn as_ptr(&self) -> *const T { ++self as *const _ as *const T ++} ++#[inline] ++pub fn as_mut_ptr(&mut self) -> *mut T { ++self as *mut _ as *mut T ++} ++#[inline] ++pub unsafe fn as_slice(&self, len: usize) -> &[T] { ++::core::slice::from_raw_parts(self.as_ptr(), len) ++} ++#[inline] ++pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { ++::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) ++} ++} ++impl ::core::fmt::Debug for __IncompleteArrayField { ++fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { ++fmt.write_str("__IncompleteArrayField") ++} ++} ++#[repr(C)] ++pub struct __BindgenUnionField(::core::marker::PhantomData); ++impl __BindgenUnionField { ++#[inline] ++pub const fn new() -> Self { ++__BindgenUnionField(::core::marker::PhantomData) ++} ++#[inline] ++pub unsafe fn as_ref(&self) -> &T { ++::core::mem::transmute(self) ++} ++#[inline] ++pub unsafe fn as_mut(&mut self) -> &mut T { ++::core::mem::transmute(self) ++} ++} ++impl ::core::default::Default for __BindgenUnionField { ++#[inline] ++fn default() -> Self { ++Self::new() ++} ++} ++impl ::core::clone::Clone for __BindgenUnionField { ++#[inline] ++fn clone(&self) -> Self { ++Self::new() ++} ++} ++impl ::core::marker::Copy for __BindgenUnionField {} ++impl ::core::fmt::Debug for __BindgenUnionField { ++fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { ++fmt.write_str("__BindgenUnionField") ++} ++} ++impl ::core::hash::Hash for __BindgenUnionField { ++fn hash(&self, _state: &mut H) {} ++} ++impl ::core::cmp::PartialEq for __BindgenUnionField { ++fn eq(&self, _other: &__BindgenUnionField) -> bool { ++true ++} ++} ++impl ::core::cmp::Eq for __BindgenUnionField {} ++pub const LINUX_VERSION_CODE: u32 = 393728; ++pub const LINUX_VERSION_MAJOR: u32 = 6; ++pub const LINUX_VERSION_PATCHLEVEL: u32 = 2; ++pub const LINUX_VERSION_SUBLEVEL: u32 = 0; ++pub const AT_SYSINFO_EHDR: u32 = 33; ++pub const AT_VECTOR_SIZE_ARCH: u32 = 1; ++pub const AT_NULL: u32 = 0; ++pub const AT_IGNORE: u32 = 1; ++pub const AT_EXECFD: u32 = 2; ++pub const AT_PHDR: u32 = 3; ++pub const AT_PHENT: u32 = 4; ++pub const AT_PHNUM: u32 = 5; ++pub const AT_PAGESZ: u32 = 6; ++pub const AT_BASE: u32 = 7; ++pub const AT_FLAGS: u32 = 8; ++pub const AT_ENTRY: u32 = 9; ++pub const AT_NOTELF: u32 = 10; ++pub const AT_UID: u32 = 11; ++pub const AT_EUID: u32 = 12; ++pub const AT_GID: u32 = 13; ++pub const AT_EGID: u32 = 14; ++pub const AT_PLATFORM: u32 = 15; ++pub const AT_HWCAP: u32 = 16; ++pub const AT_CLKTCK: u32 = 17; ++pub const AT_SECURE: u32 = 23; ++pub const AT_BASE_PLATFORM: u32 = 24; ++pub const AT_RANDOM: u32 = 25; ++pub const AT_HWCAP2: u32 = 26; ++pub const AT_EXECFN: u32 = 31; ++pub const AT_MINSIGSTKSZ: u32 = 51; ++pub const __FD_SETSIZE: u32 = 1024; ++pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; ++pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; ++pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; ++pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; ++pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; ++pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; ++pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; ++pub const VFS_CAP_REVISION_SHIFT: u32 = 24; ++pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; ++pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; ++pub const VFS_CAP_REVISION_1: u32 = 16777216; ++pub const VFS_CAP_U32_1: u32 = 1; ++pub const VFS_CAP_REVISION_2: u32 = 33554432; ++pub const VFS_CAP_U32_2: u32 = 2; ++pub const VFS_CAP_REVISION_3: u32 = 50331648; ++pub const VFS_CAP_U32_3: u32 = 2; ++pub const VFS_CAP_U32: u32 = 2; ++pub const VFS_CAP_REVISION: u32 = 50331648; ++pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; ++pub const _LINUX_CAPABILITY_U32S: u32 = 1; ++pub const CAP_CHOWN: u32 = 0; ++pub const CAP_DAC_OVERRIDE: u32 = 1; ++pub const CAP_DAC_READ_SEARCH: u32 = 2; ++pub const CAP_FOWNER: u32 = 3; ++pub const CAP_FSETID: u32 = 4; ++pub const CAP_KILL: u32 = 5; ++pub const CAP_SETGID: u32 = 6; ++pub const CAP_SETUID: u32 = 7; ++pub const CAP_SETPCAP: u32 = 8; ++pub const CAP_LINUX_IMMUTABLE: u32 = 9; ++pub const CAP_NET_BIND_SERVICE: u32 = 10; ++pub const CAP_NET_BROADCAST: u32 = 11; ++pub const CAP_NET_ADMIN: u32 = 12; ++pub const CAP_NET_RAW: u32 = 13; ++pub const CAP_IPC_LOCK: u32 = 14; ++pub const CAP_IPC_OWNER: u32 = 15; ++pub const CAP_SYS_MODULE: u32 = 16; ++pub const CAP_SYS_RAWIO: u32 = 17; ++pub const CAP_SYS_CHROOT: u32 = 18; ++pub const CAP_SYS_PTRACE: u32 = 19; ++pub const CAP_SYS_PACCT: u32 = 20; ++pub const CAP_SYS_ADMIN: u32 = 21; ++pub const CAP_SYS_BOOT: u32 = 22; ++pub const CAP_SYS_NICE: u32 = 23; ++pub const CAP_SYS_RESOURCE: u32 = 24; ++pub const CAP_SYS_TIME: u32 = 25; ++pub const CAP_SYS_TTY_CONFIG: u32 = 26; ++pub const CAP_MKNOD: u32 = 27; ++pub const CAP_LEASE: u32 = 28; ++pub const CAP_AUDIT_WRITE: u32 = 29; ++pub const CAP_AUDIT_CONTROL: u32 = 30; ++pub const CAP_SETFCAP: u32 = 31; ++pub const CAP_MAC_OVERRIDE: u32 = 32; ++pub const CAP_MAC_ADMIN: u32 = 33; ++pub const CAP_SYSLOG: u32 = 34; ++pub const CAP_WAKE_ALARM: u32 = 35; ++pub const CAP_BLOCK_SUSPEND: u32 = 36; ++pub const CAP_AUDIT_READ: u32 = 37; ++pub const CAP_PERFMON: u32 = 38; ++pub const CAP_BPF: u32 = 39; ++pub const CAP_CHECKPOINT_RESTORE: u32 = 40; ++pub const CAP_LAST_CAP: u32 = 40; ++pub const O_ACCMODE: u32 = 3; ++pub const O_RDONLY: u32 = 0; ++pub const O_WRONLY: u32 = 1; ++pub const O_RDWR: u32 = 2; ++pub const O_CREAT: u32 = 64; ++pub const O_EXCL: u32 = 128; ++pub const O_NOCTTY: u32 = 256; ++pub const O_TRUNC: u32 = 512; ++pub const O_APPEND: u32 = 1024; ++pub const O_NONBLOCK: u32 = 2048; ++pub const O_DSYNC: u32 = 4096; ++pub const FASYNC: u32 = 8192; ++pub const O_DIRECT: u32 = 16384; ++pub const O_LARGEFILE: u32 = 32768; ++pub const O_DIRECTORY: u32 = 65536; ++pub const O_NOFOLLOW: u32 = 131072; ++pub const O_NOATIME: u32 = 262144; ++pub const O_CLOEXEC: u32 = 524288; ++pub const __O_SYNC: u32 = 1048576; ++pub const O_SYNC: u32 = 1052672; ++pub const O_PATH: u32 = 2097152; ++pub const __O_TMPFILE: u32 = 4194304; ++pub const O_TMPFILE: u32 = 4259840; ++pub const O_TMPFILE_MASK: u32 = 4259904; ++pub const O_NDELAY: u32 = 2048; ++pub const F_DUPFD: u32 = 0; ++pub const F_GETFD: u32 = 1; ++pub const F_SETFD: u32 = 2; ++pub const F_GETFL: u32 = 3; ++pub const F_SETFL: u32 = 4; ++pub const F_GETLK: u32 = 5; ++pub const F_SETLK: u32 = 6; ++pub const F_SETLKW: u32 = 7; ++pub const F_SETOWN: u32 = 8; ++pub const F_GETOWN: u32 = 9; ++pub const F_SETSIG: u32 = 10; ++pub const F_GETSIG: u32 = 11; ++pub const F_SETOWN_EX: u32 = 15; ++pub const F_GETOWN_EX: u32 = 16; ++pub const F_GETOWNER_UIDS: u32 = 17; ++pub const F_OFD_GETLK: u32 = 36; ++pub const F_OFD_SETLK: u32 = 37; ++pub const F_OFD_SETLKW: u32 = 38; ++pub const F_OWNER_TID: u32 = 0; ++pub const F_OWNER_PID: u32 = 1; ++pub const F_OWNER_PGRP: u32 = 2; ++pub const FD_CLOEXEC: u32 = 1; ++pub const F_RDLCK: u32 = 0; ++pub const F_WRLCK: u32 = 1; ++pub const F_UNLCK: u32 = 2; ++pub const F_EXLCK: u32 = 4; ++pub const F_SHLCK: u32 = 8; ++pub const LOCK_SH: u32 = 1; ++pub const LOCK_EX: u32 = 2; ++pub const LOCK_NB: u32 = 4; ++pub const LOCK_UN: u32 = 8; ++pub const LOCK_MAND: u32 = 32; ++pub const LOCK_READ: u32 = 64; ++pub const LOCK_WRITE: u32 = 128; ++pub const LOCK_RW: u32 = 192; ++pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; ++pub const RESOLVE_NO_XDEV: u32 = 1; ++pub const RESOLVE_NO_MAGICLINKS: u32 = 2; ++pub const RESOLVE_NO_SYMLINKS: u32 = 4; ++pub const RESOLVE_BENEATH: u32 = 8; ++pub const RESOLVE_IN_ROOT: u32 = 16; ++pub const RESOLVE_CACHED: u32 = 32; ++pub const F_SETLEASE: u32 = 1024; ++pub const F_GETLEASE: u32 = 1025; ++pub const F_CANCELLK: u32 = 1029; ++pub const F_DUPFD_CLOEXEC: u32 = 1030; ++pub const F_NOTIFY: u32 = 1026; ++pub const F_SETPIPE_SZ: u32 = 1031; ++pub const F_GETPIPE_SZ: u32 = 1032; ++pub const F_ADD_SEALS: u32 = 1033; ++pub const F_GET_SEALS: u32 = 1034; ++pub const F_SEAL_SEAL: u32 = 1; ++pub const F_SEAL_SHRINK: u32 = 2; ++pub const F_SEAL_GROW: u32 = 4; ++pub const F_SEAL_WRITE: u32 = 8; ++pub const F_SEAL_FUTURE_WRITE: u32 = 16; ++pub const F_GET_RW_HINT: u32 = 1035; ++pub const F_SET_RW_HINT: u32 = 1036; ++pub const F_GET_FILE_RW_HINT: u32 = 1037; ++pub const F_SET_FILE_RW_HINT: u32 = 1038; ++pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; ++pub const RWH_WRITE_LIFE_NONE: u32 = 1; ++pub const RWH_WRITE_LIFE_SHORT: u32 = 2; ++pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; ++pub const RWH_WRITE_LIFE_LONG: u32 = 4; ++pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; ++pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; ++pub const DN_ACCESS: u32 = 1; ++pub const DN_MODIFY: u32 = 2; ++pub const DN_CREATE: u32 = 4; ++pub const DN_DELETE: u32 = 8; ++pub const DN_RENAME: u32 = 16; ++pub const DN_ATTRIB: u32 = 32; ++pub const DN_MULTISHOT: u32 = 2147483648; ++pub const AT_FDCWD: i32 = -100; ++pub const AT_SYMLINK_NOFOLLOW: u32 = 256; ++pub const AT_EACCESS: u32 = 512; ++pub const AT_REMOVEDIR: u32 = 512; ++pub const AT_SYMLINK_FOLLOW: u32 = 1024; ++pub const AT_NO_AUTOMOUNT: u32 = 2048; ++pub const AT_EMPTY_PATH: u32 = 4096; ++pub const AT_STATX_SYNC_TYPE: u32 = 24576; ++pub const AT_STATX_SYNC_AS_STAT: u32 = 0; ++pub const AT_STATX_FORCE_SYNC: u32 = 8192; ++pub const AT_STATX_DONT_SYNC: u32 = 16384; ++pub const AT_RECURSIVE: u32 = 32768; ++pub const EPOLL_CLOEXEC: u32 = 524288; ++pub const EPOLL_CTL_ADD: u32 = 1; ++pub const EPOLL_CTL_DEL: u32 = 2; ++pub const EPOLL_CTL_MOD: u32 = 3; ++pub const POSIX_FADV_NORMAL: u32 = 0; ++pub const POSIX_FADV_RANDOM: u32 = 1; ++pub const POSIX_FADV_SEQUENTIAL: u32 = 2; ++pub const POSIX_FADV_WILLNEED: u32 = 3; ++pub const POSIX_FADV_DONTNEED: u32 = 4; ++pub const POSIX_FADV_NOREUSE: u32 = 5; ++pub const FALLOC_FL_KEEP_SIZE: u32 = 1; ++pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; ++pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; ++pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; ++pub const FALLOC_FL_ZERO_RANGE: u32 = 16; ++pub const FALLOC_FL_INSERT_RANGE: u32 = 32; ++pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; ++pub const NR_OPEN: u32 = 1024; ++pub const NGROUPS_MAX: u32 = 65536; ++pub const ARG_MAX: u32 = 131072; ++pub const LINK_MAX: u32 = 127; ++pub const MAX_CANON: u32 = 255; ++pub const MAX_INPUT: u32 = 255; ++pub const NAME_MAX: u32 = 255; ++pub const PATH_MAX: u32 = 4096; ++pub const PIPE_BUF: u32 = 4096; ++pub const XATTR_NAME_MAX: u32 = 255; ++pub const XATTR_SIZE_MAX: u32 = 65536; ++pub const XATTR_LIST_MAX: u32 = 65536; ++pub const RTSIG_MAX: u32 = 32; ++pub const _IOC_NRBITS: u32 = 8; ++pub const _IOC_TYPEBITS: u32 = 8; ++pub const _IOC_SIZEBITS: u32 = 14; ++pub const _IOC_DIRBITS: u32 = 2; ++pub const _IOC_NRMASK: u32 = 255; ++pub const _IOC_TYPEMASK: u32 = 255; ++pub const _IOC_SIZEMASK: u32 = 16383; ++pub const _IOC_DIRMASK: u32 = 3; ++pub const _IOC_NRSHIFT: u32 = 0; ++pub const _IOC_TYPESHIFT: u32 = 8; ++pub const _IOC_SIZESHIFT: u32 = 16; ++pub const _IOC_DIRSHIFT: u32 = 30; ++pub const _IOC_NONE: u32 = 0; ++pub const _IOC_WRITE: u32 = 1; ++pub const _IOC_READ: u32 = 2; ++pub const IOC_IN: u32 = 1073741824; ++pub const IOC_OUT: u32 = 2147483648; ++pub const IOC_INOUT: u32 = 3221225472; ++pub const IOCSIZE_MASK: u32 = 1073676288; ++pub const IOCSIZE_SHIFT: u32 = 16; ++pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; ++pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; ++pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; ++pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; ++pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; ++pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; ++pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; ++pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; ++pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; ++pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; ++pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; ++pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; ++pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; ++pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; ++pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; ++pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; ++pub const FSCRYPT_POLICY_V1: u32 = 0; ++pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; ++pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; ++pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; ++pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; ++pub const FSCRYPT_POLICY_V2: u32 = 2; ++pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; ++pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; ++pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; ++pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; ++pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; ++pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; ++pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; ++pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; ++pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; ++pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; ++pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; ++pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; ++pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; ++pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; ++pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; ++pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; ++pub const FS_POLICY_FLAGS_VALID: u32 = 7; ++pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; ++pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; ++pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; ++pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; ++pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; ++pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; ++pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; ++pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; ++pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; ++pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; ++pub const FS_MAX_KEY_SIZE: u32 = 64; ++pub const MS_RDONLY: u32 = 1; ++pub const MS_NOSUID: u32 = 2; ++pub const MS_NODEV: u32 = 4; ++pub const MS_NOEXEC: u32 = 8; ++pub const MS_SYNCHRONOUS: u32 = 16; ++pub const MS_REMOUNT: u32 = 32; ++pub const MS_MANDLOCK: u32 = 64; ++pub const MS_DIRSYNC: u32 = 128; ++pub const MS_NOSYMFOLLOW: u32 = 256; ++pub const MS_NOATIME: u32 = 1024; ++pub const MS_NODIRATIME: u32 = 2048; ++pub const MS_BIND: u32 = 4096; ++pub const MS_MOVE: u32 = 8192; ++pub const MS_REC: u32 = 16384; ++pub const MS_VERBOSE: u32 = 32768; ++pub const MS_SILENT: u32 = 32768; ++pub const MS_POSIXACL: u32 = 65536; ++pub const MS_UNBINDABLE: u32 = 131072; ++pub const MS_PRIVATE: u32 = 262144; ++pub const MS_SLAVE: u32 = 524288; ++pub const MS_SHARED: u32 = 1048576; ++pub const MS_RELATIME: u32 = 2097152; ++pub const MS_KERNMOUNT: u32 = 4194304; ++pub const MS_I_VERSION: u32 = 8388608; ++pub const MS_STRICTATIME: u32 = 16777216; ++pub const MS_LAZYTIME: u32 = 33554432; ++pub const MS_SUBMOUNT: u32 = 67108864; ++pub const MS_NOREMOTELOCK: u32 = 134217728; ++pub const MS_NOSEC: u32 = 268435456; ++pub const MS_BORN: u32 = 536870912; ++pub const MS_ACTIVE: u32 = 1073741824; ++pub const MS_NOUSER: u32 = 2147483648; ++pub const MS_RMT_MASK: u32 = 41943121; ++pub const MS_MGC_VAL: u32 = 3236757504; ++pub const MS_MGC_MSK: u32 = 4294901760; ++pub const OPEN_TREE_CLONE: u32 = 1; ++pub const OPEN_TREE_CLOEXEC: u32 = 524288; ++pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; ++pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; ++pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; ++pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; ++pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; ++pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; ++pub const MOVE_MOUNT_SET_GROUP: u32 = 256; ++pub const MOVE_MOUNT__MASK: u32 = 375; ++pub const FSOPEN_CLOEXEC: u32 = 1; ++pub const FSPICK_CLOEXEC: u32 = 1; ++pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; ++pub const FSPICK_NO_AUTOMOUNT: u32 = 4; ++pub const FSPICK_EMPTY_PATH: u32 = 8; ++pub const FSMOUNT_CLOEXEC: u32 = 1; ++pub const MOUNT_ATTR_RDONLY: u32 = 1; ++pub const MOUNT_ATTR_NOSUID: u32 = 2; ++pub const MOUNT_ATTR_NODEV: u32 = 4; ++pub const MOUNT_ATTR_NOEXEC: u32 = 8; ++pub const MOUNT_ATTR__ATIME: u32 = 112; ++pub const MOUNT_ATTR_RELATIME: u32 = 0; ++pub const MOUNT_ATTR_NOATIME: u32 = 16; ++pub const MOUNT_ATTR_STRICTATIME: u32 = 32; ++pub const MOUNT_ATTR_NODIRATIME: u32 = 128; ++pub const MOUNT_ATTR_IDMAP: u32 = 1048576; ++pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; ++pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; ++pub const INR_OPEN_CUR: u32 = 1024; ++pub const INR_OPEN_MAX: u32 = 4096; ++pub const BLOCK_SIZE_BITS: u32 = 10; ++pub const BLOCK_SIZE: u32 = 1024; ++pub const SEEK_SET: u32 = 0; ++pub const SEEK_CUR: u32 = 1; ++pub const SEEK_END: u32 = 2; ++pub const SEEK_DATA: u32 = 3; ++pub const SEEK_HOLE: u32 = 4; ++pub const SEEK_MAX: u32 = 4; ++pub const RENAME_NOREPLACE: u32 = 1; ++pub const RENAME_EXCHANGE: u32 = 2; ++pub const RENAME_WHITEOUT: u32 = 4; ++pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; ++pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; ++pub const NR_FILE: u32 = 8192; ++pub const FS_XFLAG_REALTIME: u32 = 1; ++pub const FS_XFLAG_PREALLOC: u32 = 2; ++pub const FS_XFLAG_IMMUTABLE: u32 = 8; ++pub const FS_XFLAG_APPEND: u32 = 16; ++pub const FS_XFLAG_SYNC: u32 = 32; ++pub const FS_XFLAG_NOATIME: u32 = 64; ++pub const FS_XFLAG_NODUMP: u32 = 128; ++pub const FS_XFLAG_RTINHERIT: u32 = 256; ++pub const FS_XFLAG_PROJINHERIT: u32 = 512; ++pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; ++pub const FS_XFLAG_EXTSIZE: u32 = 2048; ++pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; ++pub const FS_XFLAG_NODEFRAG: u32 = 8192; ++pub const FS_XFLAG_FILESTREAM: u32 = 16384; ++pub const FS_XFLAG_DAX: u32 = 32768; ++pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; ++pub const FS_XFLAG_HASATTR: u32 = 2147483648; ++pub const BMAP_IOCTL: u32 = 1; ++pub const FSLABEL_MAX: u32 = 256; ++pub const FS_SECRM_FL: u32 = 1; ++pub const FS_UNRM_FL: u32 = 2; ++pub const FS_COMPR_FL: u32 = 4; ++pub const FS_SYNC_FL: u32 = 8; ++pub const FS_IMMUTABLE_FL: u32 = 16; ++pub const FS_APPEND_FL: u32 = 32; ++pub const FS_NODUMP_FL: u32 = 64; ++pub const FS_NOATIME_FL: u32 = 128; ++pub const FS_DIRTY_FL: u32 = 256; ++pub const FS_COMPRBLK_FL: u32 = 512; ++pub const FS_NOCOMP_FL: u32 = 1024; ++pub const FS_ENCRYPT_FL: u32 = 2048; ++pub const FS_BTREE_FL: u32 = 4096; ++pub const FS_INDEX_FL: u32 = 4096; ++pub const FS_IMAGIC_FL: u32 = 8192; ++pub const FS_JOURNAL_DATA_FL: u32 = 16384; ++pub const FS_NOTAIL_FL: u32 = 32768; ++pub const FS_DIRSYNC_FL: u32 = 65536; ++pub const FS_TOPDIR_FL: u32 = 131072; ++pub const FS_HUGE_FILE_FL: u32 = 262144; ++pub const FS_EXTENT_FL: u32 = 524288; ++pub const FS_VERITY_FL: u32 = 1048576; ++pub const FS_EA_INODE_FL: u32 = 2097152; ++pub const FS_EOFBLOCKS_FL: u32 = 4194304; ++pub const FS_NOCOW_FL: u32 = 8388608; ++pub const FS_DAX_FL: u32 = 33554432; ++pub const FS_INLINE_DATA_FL: u32 = 268435456; ++pub const FS_PROJINHERIT_FL: u32 = 536870912; ++pub const FS_CASEFOLD_FL: u32 = 1073741824; ++pub const FS_RESERVED_FL: u32 = 2147483648; ++pub const FS_FL_USER_VISIBLE: u32 = 253951; ++pub const FS_FL_USER_MODIFIABLE: u32 = 229631; ++pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; ++pub const SYNC_FILE_RANGE_WRITE: u32 = 2; ++pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; ++pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; ++pub const FUTEX_WAIT: u32 = 0; ++pub const FUTEX_WAKE: u32 = 1; ++pub const FUTEX_FD: u32 = 2; ++pub const FUTEX_REQUEUE: u32 = 3; ++pub const FUTEX_CMP_REQUEUE: u32 = 4; ++pub const FUTEX_WAKE_OP: u32 = 5; ++pub const FUTEX_LOCK_PI: u32 = 6; ++pub const FUTEX_UNLOCK_PI: u32 = 7; ++pub const FUTEX_TRYLOCK_PI: u32 = 8; ++pub const FUTEX_WAIT_BITSET: u32 = 9; ++pub const FUTEX_WAKE_BITSET: u32 = 10; ++pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; ++pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; ++pub const FUTEX_LOCK_PI2: u32 = 13; ++pub const FUTEX_PRIVATE_FLAG: u32 = 128; ++pub const FUTEX_CLOCK_REALTIME: u32 = 256; ++pub const FUTEX_CMD_MASK: i32 = -385; ++pub const FUTEX_WAIT_PRIVATE: u32 = 128; ++pub const FUTEX_WAKE_PRIVATE: u32 = 129; ++pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; ++pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; ++pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; ++pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; ++pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; ++pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; ++pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; ++pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; ++pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; ++pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; ++pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; ++pub const FUTEX_32: u32 = 2; ++pub const FUTEX_WAITV_MAX: u32 = 128; ++pub const FUTEX_WAITERS: u32 = 2147483648; ++pub const FUTEX_OWNER_DIED: u32 = 1073741824; ++pub const FUTEX_TID_MASK: u32 = 1073741823; ++pub const ROBUST_LIST_LIMIT: u32 = 2048; ++pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; ++pub const FUTEX_OP_SET: u32 = 0; ++pub const FUTEX_OP_ADD: u32 = 1; ++pub const FUTEX_OP_OR: u32 = 2; ++pub const FUTEX_OP_ANDN: u32 = 3; ++pub const FUTEX_OP_XOR: u32 = 4; ++pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; ++pub const FUTEX_OP_CMP_EQ: u32 = 0; ++pub const FUTEX_OP_CMP_NE: u32 = 1; ++pub const FUTEX_OP_CMP_LT: u32 = 2; ++pub const FUTEX_OP_CMP_LE: u32 = 3; ++pub const FUTEX_OP_CMP_GT: u32 = 4; ++pub const FUTEX_OP_CMP_GE: u32 = 5; ++pub const __UAPI_DEF_IF_IFCONF: u32 = 1; ++pub const __UAPI_DEF_IF_IFMAP: u32 = 1; ++pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; ++pub const __UAPI_DEF_IF_IFREQ: u32 = 1; ++pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; ++pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; ++pub const __UAPI_DEF_IN_ADDR: u32 = 1; ++pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; ++pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; ++pub const __UAPI_DEF_IP_MREQ: u32 = 1; ++pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; ++pub const __UAPI_DEF_IN_CLASS: u32 = 1; ++pub const __UAPI_DEF_IN6_ADDR: u32 = 1; ++pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; ++pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; ++pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; ++pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; ++pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; ++pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; ++pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; ++pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; ++pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; ++pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; ++pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; ++pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; ++pub const __UAPI_DEF_XATTR: u32 = 1; ++pub const _K_SS_MAXSIZE: u32 = 128; ++pub const SOCK_SNDBUF_LOCK: u32 = 1; ++pub const SOCK_RCVBUF_LOCK: u32 = 2; ++pub const SOCK_BUF_LOCK_MASK: u32 = 3; ++pub const SOCK_TXREHASH_DEFAULT: u32 = 255; ++pub const SOCK_TXREHASH_DISABLED: u32 = 0; ++pub const SOCK_TXREHASH_ENABLED: u32 = 1; ++pub const IP_TOS: u32 = 1; ++pub const IP_TTL: u32 = 2; ++pub const IP_HDRINCL: u32 = 3; ++pub const IP_OPTIONS: u32 = 4; ++pub const IP_ROUTER_ALERT: u32 = 5; ++pub const IP_RECVOPTS: u32 = 6; ++pub const IP_RETOPTS: u32 = 7; ++pub const IP_PKTINFO: u32 = 8; ++pub const IP_PKTOPTIONS: u32 = 9; ++pub const IP_MTU_DISCOVER: u32 = 10; ++pub const IP_RECVERR: u32 = 11; ++pub const IP_RECVTTL: u32 = 12; ++pub const IP_RECVTOS: u32 = 13; ++pub const IP_MTU: u32 = 14; ++pub const IP_FREEBIND: u32 = 15; ++pub const IP_IPSEC_POLICY: u32 = 16; ++pub const IP_XFRM_POLICY: u32 = 17; ++pub const IP_PASSSEC: u32 = 18; ++pub const IP_TRANSPARENT: u32 = 19; ++pub const IP_RECVRETOPTS: u32 = 7; ++pub const IP_ORIGDSTADDR: u32 = 20; ++pub const IP_RECVORIGDSTADDR: u32 = 20; ++pub const IP_MINTTL: u32 = 21; ++pub const IP_NODEFRAG: u32 = 22; ++pub const IP_CHECKSUM: u32 = 23; ++pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; ++pub const IP_RECVFRAGSIZE: u32 = 25; ++pub const IP_RECVERR_RFC4884: u32 = 26; ++pub const IP_PMTUDISC_DONT: u32 = 0; ++pub const IP_PMTUDISC_WANT: u32 = 1; ++pub const IP_PMTUDISC_DO: u32 = 2; ++pub const IP_PMTUDISC_PROBE: u32 = 3; ++pub const IP_PMTUDISC_INTERFACE: u32 = 4; ++pub const IP_PMTUDISC_OMIT: u32 = 5; ++pub const IP_MULTICAST_IF: u32 = 32; ++pub const IP_MULTICAST_TTL: u32 = 33; ++pub const IP_MULTICAST_LOOP: u32 = 34; ++pub const IP_ADD_MEMBERSHIP: u32 = 35; ++pub const IP_DROP_MEMBERSHIP: u32 = 36; ++pub const IP_UNBLOCK_SOURCE: u32 = 37; ++pub const IP_BLOCK_SOURCE: u32 = 38; ++pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; ++pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; ++pub const IP_MSFILTER: u32 = 41; ++pub const MCAST_JOIN_GROUP: u32 = 42; ++pub const MCAST_BLOCK_SOURCE: u32 = 43; ++pub const MCAST_UNBLOCK_SOURCE: u32 = 44; ++pub const MCAST_LEAVE_GROUP: u32 = 45; ++pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; ++pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; ++pub const MCAST_MSFILTER: u32 = 48; ++pub const IP_MULTICAST_ALL: u32 = 49; ++pub const IP_UNICAST_IF: u32 = 50; ++pub const MCAST_EXCLUDE: u32 = 0; ++pub const MCAST_INCLUDE: u32 = 1; ++pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; ++pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; ++pub const __SOCK_SIZE__: u32 = 16; ++pub const IN_CLASSA_NET: u32 = 4278190080; ++pub const IN_CLASSA_NSHIFT: u32 = 24; ++pub const IN_CLASSA_HOST: u32 = 16777215; ++pub const IN_CLASSA_MAX: u32 = 128; ++pub const IN_CLASSB_NET: u32 = 4294901760; ++pub const IN_CLASSB_NSHIFT: u32 = 16; ++pub const IN_CLASSB_HOST: u32 = 65535; ++pub const IN_CLASSB_MAX: u32 = 65536; ++pub const IN_CLASSC_NET: u32 = 4294967040; ++pub const IN_CLASSC_NSHIFT: u32 = 8; ++pub const IN_CLASSC_HOST: u32 = 255; ++pub const IN_MULTICAST_NET: u32 = 3758096384; ++pub const IN_CLASSE_NET: u32 = 4294967295; ++pub const IN_CLASSE_NSHIFT: u32 = 0; ++pub const IN_LOOPBACKNET: u32 = 127; ++pub const INADDR_LOOPBACK: u32 = 2130706433; ++pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; ++pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; ++pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; ++pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; ++pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; ++pub const __LITTLE_ENDIAN: u32 = 1234; ++pub const IN_ACCESS: u32 = 1; ++pub const IN_MODIFY: u32 = 2; ++pub const IN_ATTRIB: u32 = 4; ++pub const IN_CLOSE_WRITE: u32 = 8; ++pub const IN_CLOSE_NOWRITE: u32 = 16; ++pub const IN_OPEN: u32 = 32; ++pub const IN_MOVED_FROM: u32 = 64; ++pub const IN_MOVED_TO: u32 = 128; ++pub const IN_CREATE: u32 = 256; ++pub const IN_DELETE: u32 = 512; ++pub const IN_DELETE_SELF: u32 = 1024; ++pub const IN_MOVE_SELF: u32 = 2048; ++pub const IN_UNMOUNT: u32 = 8192; ++pub const IN_Q_OVERFLOW: u32 = 16384; ++pub const IN_IGNORED: u32 = 32768; ++pub const IN_CLOSE: u32 = 24; ++pub const IN_MOVE: u32 = 192; ++pub const IN_ONLYDIR: u32 = 16777216; ++pub const IN_DONT_FOLLOW: u32 = 33554432; ++pub const IN_EXCL_UNLINK: u32 = 67108864; ++pub const IN_MASK_CREATE: u32 = 268435456; ++pub const IN_MASK_ADD: u32 = 536870912; ++pub const IN_ISDIR: u32 = 1073741824; ++pub const IN_ONESHOT: u32 = 2147483648; ++pub const IN_ALL_EVENTS: u32 = 4095; ++pub const IN_CLOEXEC: u32 = 524288; ++pub const IN_NONBLOCK: u32 = 2048; ++pub const IPTOS_TOS_MASK: u32 = 30; ++pub const IPTOS_LOWDELAY: u32 = 16; ++pub const IPTOS_THROUGHPUT: u32 = 8; ++pub const IPTOS_RELIABILITY: u32 = 4; ++pub const IPTOS_MINCOST: u32 = 2; ++pub const IPTOS_PREC_MASK: u32 = 224; ++pub const IPTOS_PREC_NETCONTROL: u32 = 224; ++pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; ++pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; ++pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; ++pub const IPTOS_PREC_FLASH: u32 = 96; ++pub const IPTOS_PREC_IMMEDIATE: u32 = 64; ++pub const IPTOS_PREC_PRIORITY: u32 = 32; ++pub const IPTOS_PREC_ROUTINE: u32 = 0; ++pub const IPOPT_COPY: u32 = 128; ++pub const IPOPT_CLASS_MASK: u32 = 96; ++pub const IPOPT_NUMBER_MASK: u32 = 31; ++pub const IPOPT_CONTROL: u32 = 0; ++pub const IPOPT_RESERVED1: u32 = 32; ++pub const IPOPT_MEASUREMENT: u32 = 64; ++pub const IPOPT_RESERVED2: u32 = 96; ++pub const IPOPT_END: u32 = 0; ++pub const IPOPT_NOOP: u32 = 1; ++pub const IPOPT_SEC: u32 = 130; ++pub const IPOPT_LSRR: u32 = 131; ++pub const IPOPT_TIMESTAMP: u32 = 68; ++pub const IPOPT_CIPSO: u32 = 134; ++pub const IPOPT_RR: u32 = 7; ++pub const IPOPT_SID: u32 = 136; ++pub const IPOPT_SSRR: u32 = 137; ++pub const IPOPT_RA: u32 = 148; ++pub const IPVERSION: u32 = 4; ++pub const MAXTTL: u32 = 255; ++pub const IPDEFTTL: u32 = 64; ++pub const IPOPT_OPTVAL: u32 = 0; ++pub const IPOPT_OLEN: u32 = 1; ++pub const IPOPT_OFFSET: u32 = 2; ++pub const IPOPT_MINOFF: u32 = 4; ++pub const MAX_IPOPTLEN: u32 = 40; ++pub const IPOPT_NOP: u32 = 1; ++pub const IPOPT_EOL: u32 = 0; ++pub const IPOPT_TS: u32 = 68; ++pub const IPOPT_TS_TSONLY: u32 = 0; ++pub const IPOPT_TS_TSANDADDR: u32 = 1; ++pub const IPOPT_TS_PRESPEC: u32 = 3; ++pub const IPV4_BEET_PHMAXLEN: u32 = 8; ++pub const IPV6_FL_A_GET: u32 = 0; ++pub const IPV6_FL_A_PUT: u32 = 1; ++pub const IPV6_FL_A_RENEW: u32 = 2; ++pub const IPV6_FL_F_CREATE: u32 = 1; ++pub const IPV6_FL_F_EXCL: u32 = 2; ++pub const IPV6_FL_F_REFLECT: u32 = 4; ++pub const IPV6_FL_F_REMOTE: u32 = 8; ++pub const IPV6_FL_S_NONE: u32 = 0; ++pub const IPV6_FL_S_EXCL: u32 = 1; ++pub const IPV6_FL_S_PROCESS: u32 = 2; ++pub const IPV6_FL_S_USER: u32 = 3; ++pub const IPV6_FL_S_ANY: u32 = 255; ++pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; ++pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; ++pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; ++pub const IPV6_PRIORITY_FILLER: u32 = 256; ++pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; ++pub const IPV6_PRIORITY_RESERVED1: u32 = 768; ++pub const IPV6_PRIORITY_BULK: u32 = 1024; ++pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; ++pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; ++pub const IPV6_PRIORITY_CONTROL: u32 = 1792; ++pub const IPV6_PRIORITY_8: u32 = 2048; ++pub const IPV6_PRIORITY_9: u32 = 2304; ++pub const IPV6_PRIORITY_10: u32 = 2560; ++pub const IPV6_PRIORITY_11: u32 = 2816; ++pub const IPV6_PRIORITY_12: u32 = 3072; ++pub const IPV6_PRIORITY_13: u32 = 3328; ++pub const IPV6_PRIORITY_14: u32 = 3584; ++pub const IPV6_PRIORITY_15: u32 = 3840; ++pub const IPPROTO_HOPOPTS: u32 = 0; ++pub const IPPROTO_ROUTING: u32 = 43; ++pub const IPPROTO_FRAGMENT: u32 = 44; ++pub const IPPROTO_ICMPV6: u32 = 58; ++pub const IPPROTO_NONE: u32 = 59; ++pub const IPPROTO_DSTOPTS: u32 = 60; ++pub const IPPROTO_MH: u32 = 135; ++pub const IPV6_TLV_PAD1: u32 = 0; ++pub const IPV6_TLV_PADN: u32 = 1; ++pub const IPV6_TLV_ROUTERALERT: u32 = 5; ++pub const IPV6_TLV_CALIPSO: u32 = 7; ++pub const IPV6_TLV_IOAM: u32 = 49; ++pub const IPV6_TLV_JUMBO: u32 = 194; ++pub const IPV6_TLV_HAO: u32 = 201; ++pub const IPV6_ADDRFORM: u32 = 1; ++pub const IPV6_2292PKTINFO: u32 = 2; ++pub const IPV6_2292HOPOPTS: u32 = 3; ++pub const IPV6_2292DSTOPTS: u32 = 4; ++pub const IPV6_2292RTHDR: u32 = 5; ++pub const IPV6_2292PKTOPTIONS: u32 = 6; ++pub const IPV6_CHECKSUM: u32 = 7; ++pub const IPV6_2292HOPLIMIT: u32 = 8; ++pub const IPV6_NEXTHOP: u32 = 9; ++pub const IPV6_AUTHHDR: u32 = 10; ++pub const IPV6_FLOWINFO: u32 = 11; ++pub const IPV6_UNICAST_HOPS: u32 = 16; ++pub const IPV6_MULTICAST_IF: u32 = 17; ++pub const IPV6_MULTICAST_HOPS: u32 = 18; ++pub const IPV6_MULTICAST_LOOP: u32 = 19; ++pub const IPV6_ADD_MEMBERSHIP: u32 = 20; ++pub const IPV6_DROP_MEMBERSHIP: u32 = 21; ++pub const IPV6_ROUTER_ALERT: u32 = 22; ++pub const IPV6_MTU_DISCOVER: u32 = 23; ++pub const IPV6_MTU: u32 = 24; ++pub const IPV6_RECVERR: u32 = 25; ++pub const IPV6_V6ONLY: u32 = 26; ++pub const IPV6_JOIN_ANYCAST: u32 = 27; ++pub const IPV6_LEAVE_ANYCAST: u32 = 28; ++pub const IPV6_MULTICAST_ALL: u32 = 29; ++pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; ++pub const IPV6_RECVERR_RFC4884: u32 = 31; ++pub const IPV6_PMTUDISC_DONT: u32 = 0; ++pub const IPV6_PMTUDISC_WANT: u32 = 1; ++pub const IPV6_PMTUDISC_DO: u32 = 2; ++pub const IPV6_PMTUDISC_PROBE: u32 = 3; ++pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; ++pub const IPV6_PMTUDISC_OMIT: u32 = 5; ++pub const IPV6_FLOWLABEL_MGR: u32 = 32; ++pub const IPV6_FLOWINFO_SEND: u32 = 33; ++pub const IPV6_IPSEC_POLICY: u32 = 34; ++pub const IPV6_XFRM_POLICY: u32 = 35; ++pub const IPV6_HDRINCL: u32 = 36; ++pub const IPV6_RECVPKTINFO: u32 = 49; ++pub const IPV6_PKTINFO: u32 = 50; ++pub const IPV6_RECVHOPLIMIT: u32 = 51; ++pub const IPV6_HOPLIMIT: u32 = 52; ++pub const IPV6_RECVHOPOPTS: u32 = 53; ++pub const IPV6_HOPOPTS: u32 = 54; ++pub const IPV6_RTHDRDSTOPTS: u32 = 55; ++pub const IPV6_RECVRTHDR: u32 = 56; ++pub const IPV6_RTHDR: u32 = 57; ++pub const IPV6_RECVDSTOPTS: u32 = 58; ++pub const IPV6_DSTOPTS: u32 = 59; ++pub const IPV6_RECVPATHMTU: u32 = 60; ++pub const IPV6_PATHMTU: u32 = 61; ++pub const IPV6_DONTFRAG: u32 = 62; ++pub const IPV6_RECVTCLASS: u32 = 66; ++pub const IPV6_TCLASS: u32 = 67; ++pub const IPV6_AUTOFLOWLABEL: u32 = 70; ++pub const IPV6_ADDR_PREFERENCES: u32 = 72; ++pub const IPV6_PREFER_SRC_TMP: u32 = 1; ++pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; ++pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; ++pub const IPV6_PREFER_SRC_COA: u32 = 4; ++pub const IPV6_PREFER_SRC_HOME: u32 = 1024; ++pub const IPV6_PREFER_SRC_CGA: u32 = 8; ++pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; ++pub const IPV6_MINHOPCOUNT: u32 = 73; ++pub const IPV6_ORIGDSTADDR: u32 = 74; ++pub const IPV6_RECVORIGDSTADDR: u32 = 74; ++pub const IPV6_TRANSPARENT: u32 = 75; ++pub const IPV6_UNICAST_IF: u32 = 76; ++pub const IPV6_RECVFRAGSIZE: u32 = 77; ++pub const IPV6_FREEBIND: u32 = 78; ++pub const IPV6_MIN_MTU: u32 = 1280; ++pub const IPV6_SRCRT_STRICT: u32 = 1; ++pub const IPV6_SRCRT_TYPE_0: u32 = 0; ++pub const IPV6_SRCRT_TYPE_2: u32 = 2; ++pub const IPV6_SRCRT_TYPE_3: u32 = 3; ++pub const IPV6_SRCRT_TYPE_4: u32 = 4; ++pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; ++pub const ADFS_SUPER_MAGIC: u32 = 44533; ++pub const AFFS_SUPER_MAGIC: u32 = 44543; ++pub const AFS_SUPER_MAGIC: u32 = 1397113167; ++pub const AUTOFS_SUPER_MAGIC: u32 = 391; ++pub const CEPH_SUPER_MAGIC: u32 = 12805120; ++pub const CODA_SUPER_MAGIC: u32 = 1937076805; ++pub const CRAMFS_MAGIC: u32 = 684539205; ++pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; ++pub const DEBUGFS_MAGIC: u32 = 1684170528; ++pub const SECURITYFS_MAGIC: u32 = 1935894131; ++pub const SELINUX_MAGIC: u32 = 4185718668; ++pub const SMACK_MAGIC: u32 = 1128357203; ++pub const RAMFS_MAGIC: u32 = 2240043254; ++pub const TMPFS_MAGIC: u32 = 16914836; ++pub const HUGETLBFS_MAGIC: u32 = 2508478710; ++pub const SQUASHFS_MAGIC: u32 = 1936814952; ++pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; ++pub const EFS_SUPER_MAGIC: u32 = 4278867; ++pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; ++pub const EXT2_SUPER_MAGIC: u32 = 61267; ++pub const EXT3_SUPER_MAGIC: u32 = 61267; ++pub const XENFS_SUPER_MAGIC: u32 = 2881100148; ++pub const EXT4_SUPER_MAGIC: u32 = 61267; ++pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; ++pub const NILFS_SUPER_MAGIC: u32 = 13364; ++pub const F2FS_SUPER_MAGIC: u32 = 4076150800; ++pub const HPFS_SUPER_MAGIC: u32 = 4187351113; ++pub const ISOFS_SUPER_MAGIC: u32 = 38496; ++pub const JFFS2_SUPER_MAGIC: u32 = 29366; ++pub const XFS_SUPER_MAGIC: u32 = 1481003842; ++pub const PSTOREFS_MAGIC: u32 = 1634035564; ++pub const EFIVARFS_MAGIC: u32 = 3730735588; ++pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; ++pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; ++pub const FUSE_SUPER_MAGIC: u32 = 1702057286; ++pub const MINIX_SUPER_MAGIC: u32 = 4991; ++pub const MINIX_SUPER_MAGIC2: u32 = 5007; ++pub const MINIX2_SUPER_MAGIC: u32 = 9320; ++pub const MINIX2_SUPER_MAGIC2: u32 = 9336; ++pub const MINIX3_SUPER_MAGIC: u32 = 19802; ++pub const MSDOS_SUPER_MAGIC: u32 = 19780; ++pub const EXFAT_SUPER_MAGIC: u32 = 538032816; ++pub const NCP_SUPER_MAGIC: u32 = 22092; ++pub const NFS_SUPER_MAGIC: u32 = 26985; ++pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; ++pub const OPENPROM_SUPER_MAGIC: u32 = 40865; ++pub const QNX4_SUPER_MAGIC: u32 = 47; ++pub const QNX6_SUPER_MAGIC: u32 = 1746473250; ++pub const AFS_FS_MAGIC: u32 = 1799439955; ++pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; ++pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; ++pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; ++pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; ++pub const SMB_SUPER_MAGIC: u32 = 20859; ++pub const CIFS_SUPER_MAGIC: u32 = 4283649346; ++pub const SMB2_SUPER_MAGIC: u32 = 4266872130; ++pub const CGROUP_SUPER_MAGIC: u32 = 2613483; ++pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; ++pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; ++pub const STACK_END_MAGIC: u32 = 1470918301; ++pub const TRACEFS_MAGIC: u32 = 1953653091; ++pub const V9FS_MAGIC: u32 = 16914839; ++pub const BDEVFS_MAGIC: u32 = 1650746742; ++pub const DAXFS_MAGIC: u32 = 1684300152; ++pub const BINFMTFS_MAGIC: u32 = 1112100429; ++pub const DEVPTS_SUPER_MAGIC: u32 = 7377; ++pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; ++pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; ++pub const PIPEFS_MAGIC: u32 = 1346981957; ++pub const PROC_SUPER_MAGIC: u32 = 40864; ++pub const SOCKFS_MAGIC: u32 = 1397703499; ++pub const SYSFS_MAGIC: u32 = 1650812274; ++pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; ++pub const MTD_INODE_FS_MAGIC: u32 = 288389204; ++pub const ANON_INODE_FS_MAGIC: u32 = 151263540; ++pub const BTRFS_TEST_MAGIC: u32 = 1936880249; ++pub const NSFS_MAGIC: u32 = 1853056627; ++pub const BPF_FS_MAGIC: u32 = 3405662737; ++pub const AAFS_MAGIC: u32 = 1513908720; ++pub const ZONEFS_MAGIC: u32 = 1515144787; ++pub const UDF_SUPER_MAGIC: u32 = 352400198; ++pub const DMA_BUF_MAGIC: u32 = 1145913666; ++pub const DEVMEM_MAGIC: u32 = 1162691661; ++pub const SECRETMEM_MAGIC: u32 = 1397048141; ++pub const PROT_READ: u32 = 1; ++pub const PROT_WRITE: u32 = 2; ++pub const PROT_EXEC: u32 = 4; ++pub const PROT_SEM: u32 = 8; ++pub const PROT_NONE: u32 = 0; ++pub const PROT_GROWSDOWN: u32 = 16777216; ++pub const PROT_GROWSUP: u32 = 33554432; ++pub const MAP_TYPE: u32 = 15; ++pub const MAP_FIXED: u32 = 16; ++pub const MAP_ANONYMOUS: u32 = 32; ++pub const MAP_POPULATE: u32 = 32768; ++pub const MAP_NONBLOCK: u32 = 65536; ++pub const MAP_STACK: u32 = 131072; ++pub const MAP_HUGETLB: u32 = 262144; ++pub const MAP_SYNC: u32 = 524288; ++pub const MAP_FIXED_NOREPLACE: u32 = 1048576; ++pub const MAP_UNINITIALIZED: u32 = 67108864; ++pub const MLOCK_ONFAULT: u32 = 1; ++pub const MS_ASYNC: u32 = 1; ++pub const MS_INVALIDATE: u32 = 2; ++pub const MS_SYNC: u32 = 4; ++pub const MADV_NORMAL: u32 = 0; ++pub const MADV_RANDOM: u32 = 1; ++pub const MADV_SEQUENTIAL: u32 = 2; ++pub const MADV_WILLNEED: u32 = 3; ++pub const MADV_DONTNEED: u32 = 4; ++pub const MADV_FREE: u32 = 8; ++pub const MADV_REMOVE: u32 = 9; ++pub const MADV_DONTFORK: u32 = 10; ++pub const MADV_DOFORK: u32 = 11; ++pub const MADV_HWPOISON: u32 = 100; ++pub const MADV_SOFT_OFFLINE: u32 = 101; ++pub const MADV_MERGEABLE: u32 = 12; ++pub const MADV_UNMERGEABLE: u32 = 13; ++pub const MADV_HUGEPAGE: u32 = 14; ++pub const MADV_NOHUGEPAGE: u32 = 15; ++pub const MADV_DONTDUMP: u32 = 16; ++pub const MADV_DODUMP: u32 = 17; ++pub const MADV_WIPEONFORK: u32 = 18; ++pub const MADV_KEEPONFORK: u32 = 19; ++pub const MADV_COLD: u32 = 20; ++pub const MADV_PAGEOUT: u32 = 21; ++pub const MADV_POPULATE_READ: u32 = 22; ++pub const MADV_POPULATE_WRITE: u32 = 23; ++pub const MADV_DONTNEED_LOCKED: u32 = 24; ++pub const MADV_COLLAPSE: u32 = 25; ++pub const MAP_FILE: u32 = 0; ++pub const PKEY_DISABLE_ACCESS: u32 = 1; ++pub const PKEY_DISABLE_WRITE: u32 = 2; ++pub const PKEY_ACCESS_MASK: u32 = 3; ++pub const MAP_GROWSDOWN: u32 = 256; ++pub const MAP_DENYWRITE: u32 = 2048; ++pub const MAP_EXECUTABLE: u32 = 4096; ++pub const MAP_LOCKED: u32 = 8192; ++pub const MAP_NORESERVE: u32 = 16384; ++pub const MCL_CURRENT: u32 = 1; ++pub const MCL_FUTURE: u32 = 2; ++pub const MCL_ONFAULT: u32 = 4; ++pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; ++pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; ++pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; ++pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; ++pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; ++pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; ++pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; ++pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; ++pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; ++pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; ++pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; ++pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; ++pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; ++pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; ++pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; ++pub const MREMAP_MAYMOVE: u32 = 1; ++pub const MREMAP_FIXED: u32 = 2; ++pub const MREMAP_DONTUNMAP: u32 = 4; ++pub const OVERCOMMIT_GUESS: u32 = 0; ++pub const OVERCOMMIT_ALWAYS: u32 = 1; ++pub const OVERCOMMIT_NEVER: u32 = 2; ++pub const MAP_SHARED: u32 = 1; ++pub const MAP_PRIVATE: u32 = 2; ++pub const MAP_SHARED_VALIDATE: u32 = 3; ++pub const MAP_HUGE_SHIFT: u32 = 26; ++pub const MAP_HUGE_MASK: u32 = 63; ++pub const MAP_HUGE_16KB: u32 = 939524096; ++pub const MAP_HUGE_64KB: u32 = 1073741824; ++pub const MAP_HUGE_512KB: u32 = 1275068416; ++pub const MAP_HUGE_1MB: u32 = 1342177280; ++pub const MAP_HUGE_2MB: u32 = 1409286144; ++pub const MAP_HUGE_8MB: u32 = 1543503872; ++pub const MAP_HUGE_16MB: u32 = 1610612736; ++pub const MAP_HUGE_32MB: u32 = 1677721600; ++pub const MAP_HUGE_256MB: u32 = 1879048192; ++pub const MAP_HUGE_512MB: u32 = 1946157056; ++pub const MAP_HUGE_1GB: u32 = 2013265920; ++pub const MAP_HUGE_2GB: u32 = 2080374784; ++pub const MAP_HUGE_16GB: u32 = 2281701376; ++pub const SIOCGSTAMP_OLD: u32 = 35078; ++pub const SIOCGSTAMPNS_OLD: u32 = 35079; ++pub const SOL_SOCKET: u32 = 1; ++pub const SO_DEBUG: u32 = 1; ++pub const SO_REUSEADDR: u32 = 2; ++pub const SO_TYPE: u32 = 3; ++pub const SO_ERROR: u32 = 4; ++pub const SO_DONTROUTE: u32 = 5; ++pub const SO_BROADCAST: u32 = 6; ++pub const SO_SNDBUF: u32 = 7; ++pub const SO_RCVBUF: u32 = 8; ++pub const SO_SNDBUFFORCE: u32 = 32; ++pub const SO_RCVBUFFORCE: u32 = 33; ++pub const SO_KEEPALIVE: u32 = 9; ++pub const SO_OOBINLINE: u32 = 10; ++pub const SO_NO_CHECK: u32 = 11; ++pub const SO_PRIORITY: u32 = 12; ++pub const SO_LINGER: u32 = 13; ++pub const SO_BSDCOMPAT: u32 = 14; ++pub const SO_REUSEPORT: u32 = 15; ++pub const SO_PASSCRED: u32 = 16; ++pub const SO_PEERCRED: u32 = 17; ++pub const SO_RCVLOWAT: u32 = 18; ++pub const SO_SNDLOWAT: u32 = 19; ++pub const SO_RCVTIMEO_OLD: u32 = 20; ++pub const SO_SNDTIMEO_OLD: u32 = 21; ++pub const SO_SECURITY_AUTHENTICATION: u32 = 22; ++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; ++pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; ++pub const SO_BINDTODEVICE: u32 = 25; ++pub const SO_ATTACH_FILTER: u32 = 26; ++pub const SO_DETACH_FILTER: u32 = 27; ++pub const SO_GET_FILTER: u32 = 26; ++pub const SO_PEERNAME: u32 = 28; ++pub const SO_ACCEPTCONN: u32 = 30; ++pub const SO_PEERSEC: u32 = 31; ++pub const SO_PASSSEC: u32 = 34; ++pub const SO_MARK: u32 = 36; ++pub const SO_PROTOCOL: u32 = 38; ++pub const SO_DOMAIN: u32 = 39; ++pub const SO_RXQ_OVFL: u32 = 40; ++pub const SO_WIFI_STATUS: u32 = 41; ++pub const SCM_WIFI_STATUS: u32 = 41; ++pub const SO_PEEK_OFF: u32 = 42; ++pub const SO_NOFCS: u32 = 43; ++pub const SO_LOCK_FILTER: u32 = 44; ++pub const SO_SELECT_ERR_QUEUE: u32 = 45; ++pub const SO_BUSY_POLL: u32 = 46; ++pub const SO_MAX_PACING_RATE: u32 = 47; ++pub const SO_BPF_EXTENSIONS: u32 = 48; ++pub const SO_INCOMING_CPU: u32 = 49; ++pub const SO_ATTACH_BPF: u32 = 50; ++pub const SO_DETACH_BPF: u32 = 27; ++pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; ++pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; ++pub const SO_CNX_ADVICE: u32 = 53; ++pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; ++pub const SO_MEMINFO: u32 = 55; ++pub const SO_INCOMING_NAPI_ID: u32 = 56; ++pub const SO_COOKIE: u32 = 57; ++pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; ++pub const SO_PEERGROUPS: u32 = 59; ++pub const SO_ZEROCOPY: u32 = 60; ++pub const SO_TXTIME: u32 = 61; ++pub const SCM_TXTIME: u32 = 61; ++pub const SO_BINDTOIFINDEX: u32 = 62; ++pub const SO_TIMESTAMP_OLD: u32 = 29; ++pub const SO_TIMESTAMPNS_OLD: u32 = 35; ++pub const SO_TIMESTAMPING_OLD: u32 = 37; ++pub const SO_TIMESTAMP_NEW: u32 = 63; ++pub const SO_TIMESTAMPNS_NEW: u32 = 64; ++pub const SO_TIMESTAMPING_NEW: u32 = 65; ++pub const SO_RCVTIMEO_NEW: u32 = 66; ++pub const SO_SNDTIMEO_NEW: u32 = 67; ++pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; ++pub const SO_PREFER_BUSY_POLL: u32 = 69; ++pub const SO_BUSY_POLL_BUDGET: u32 = 70; ++pub const SO_NETNS_COOKIE: u32 = 71; ++pub const SO_BUF_LOCK: u32 = 72; ++pub const SO_RESERVE_MEM: u32 = 73; ++pub const SO_TXREHASH: u32 = 74; ++pub const SO_RCVMARK: u32 = 75; ++pub const SO_TIMESTAMP: u32 = 29; ++pub const SO_TIMESTAMPNS: u32 = 35; ++pub const SO_TIMESTAMPING: u32 = 37; ++pub const SO_RCVTIMEO: u32 = 20; ++pub const SO_SNDTIMEO: u32 = 21; ++pub const SCM_TIMESTAMP: u32 = 29; ++pub const SCM_TIMESTAMPNS: u32 = 35; ++pub const SCM_TIMESTAMPING: u32 = 37; ++pub const SYS_SOCKET: u32 = 1; ++pub const SYS_BIND: u32 = 2; ++pub const SYS_CONNECT: u32 = 3; ++pub const SYS_LISTEN: u32 = 4; ++pub const SYS_ACCEPT: u32 = 5; ++pub const SYS_GETSOCKNAME: u32 = 6; ++pub const SYS_GETPEERNAME: u32 = 7; ++pub const SYS_SOCKETPAIR: u32 = 8; ++pub const SYS_SEND: u32 = 9; ++pub const SYS_RECV: u32 = 10; ++pub const SYS_SENDTO: u32 = 11; ++pub const SYS_RECVFROM: u32 = 12; ++pub const SYS_SHUTDOWN: u32 = 13; ++pub const SYS_SETSOCKOPT: u32 = 14; ++pub const SYS_GETSOCKOPT: u32 = 15; ++pub const SYS_SENDMSG: u32 = 16; ++pub const SYS_RECVMSG: u32 = 17; ++pub const SYS_ACCEPT4: u32 = 18; ++pub const SYS_RECVMMSG: u32 = 19; ++pub const SYS_SENDMMSG: u32 = 20; ++pub const __SO_ACCEPTCON: u32 = 65536; ++pub const POLLIN: u32 = 1; ++pub const POLLPRI: u32 = 2; ++pub const POLLOUT: u32 = 4; ++pub const POLLERR: u32 = 8; ++pub const POLLHUP: u32 = 16; ++pub const POLLNVAL: u32 = 32; ++pub const POLLRDNORM: u32 = 64; ++pub const POLLRDBAND: u32 = 128; ++pub const POLLWRNORM: u32 = 256; ++pub const POLLWRBAND: u32 = 512; ++pub const POLLMSG: u32 = 1024; ++pub const POLLREMOVE: u32 = 4096; ++pub const POLLRDHUP: u32 = 8192; ++pub const PR_SET_PDEATHSIG: u32 = 1; ++pub const PR_GET_PDEATHSIG: u32 = 2; ++pub const PR_GET_DUMPABLE: u32 = 3; ++pub const PR_SET_DUMPABLE: u32 = 4; ++pub const PR_GET_UNALIGN: u32 = 5; ++pub const PR_SET_UNALIGN: u32 = 6; ++pub const PR_UNALIGN_NOPRINT: u32 = 1; ++pub const PR_UNALIGN_SIGBUS: u32 = 2; ++pub const PR_GET_KEEPCAPS: u32 = 7; ++pub const PR_SET_KEEPCAPS: u32 = 8; ++pub const PR_GET_FPEMU: u32 = 9; ++pub const PR_SET_FPEMU: u32 = 10; ++pub const PR_FPEMU_NOPRINT: u32 = 1; ++pub const PR_FPEMU_SIGFPE: u32 = 2; ++pub const PR_GET_FPEXC: u32 = 11; ++pub const PR_SET_FPEXC: u32 = 12; ++pub const PR_FP_EXC_SW_ENABLE: u32 = 128; ++pub const PR_FP_EXC_DIV: u32 = 65536; ++pub const PR_FP_EXC_OVF: u32 = 131072; ++pub const PR_FP_EXC_UND: u32 = 262144; ++pub const PR_FP_EXC_RES: u32 = 524288; ++pub const PR_FP_EXC_INV: u32 = 1048576; ++pub const PR_FP_EXC_DISABLED: u32 = 0; ++pub const PR_FP_EXC_NONRECOV: u32 = 1; ++pub const PR_FP_EXC_ASYNC: u32 = 2; ++pub const PR_FP_EXC_PRECISE: u32 = 3; ++pub const PR_GET_TIMING: u32 = 13; ++pub const PR_SET_TIMING: u32 = 14; ++pub const PR_TIMING_STATISTICAL: u32 = 0; ++pub const PR_TIMING_TIMESTAMP: u32 = 1; ++pub const PR_SET_NAME: u32 = 15; ++pub const PR_GET_NAME: u32 = 16; ++pub const PR_GET_ENDIAN: u32 = 19; ++pub const PR_SET_ENDIAN: u32 = 20; ++pub const PR_ENDIAN_BIG: u32 = 0; ++pub const PR_ENDIAN_LITTLE: u32 = 1; ++pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; ++pub const PR_GET_SECCOMP: u32 = 21; ++pub const PR_SET_SECCOMP: u32 = 22; ++pub const PR_CAPBSET_READ: u32 = 23; ++pub const PR_CAPBSET_DROP: u32 = 24; ++pub const PR_GET_TSC: u32 = 25; ++pub const PR_SET_TSC: u32 = 26; ++pub const PR_TSC_ENABLE: u32 = 1; ++pub const PR_TSC_SIGSEGV: u32 = 2; ++pub const PR_GET_SECUREBITS: u32 = 27; ++pub const PR_SET_SECUREBITS: u32 = 28; ++pub const PR_SET_TIMERSLACK: u32 = 29; ++pub const PR_GET_TIMERSLACK: u32 = 30; ++pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; ++pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; ++pub const PR_MCE_KILL: u32 = 33; ++pub const PR_MCE_KILL_CLEAR: u32 = 0; ++pub const PR_MCE_KILL_SET: u32 = 1; ++pub const PR_MCE_KILL_LATE: u32 = 0; ++pub const PR_MCE_KILL_EARLY: u32 = 1; ++pub const PR_MCE_KILL_DEFAULT: u32 = 2; ++pub const PR_MCE_KILL_GET: u32 = 34; ++pub const PR_SET_MM: u32 = 35; ++pub const PR_SET_MM_START_CODE: u32 = 1; ++pub const PR_SET_MM_END_CODE: u32 = 2; ++pub const PR_SET_MM_START_DATA: u32 = 3; ++pub const PR_SET_MM_END_DATA: u32 = 4; ++pub const PR_SET_MM_START_STACK: u32 = 5; ++pub const PR_SET_MM_START_BRK: u32 = 6; ++pub const PR_SET_MM_BRK: u32 = 7; ++pub const PR_SET_MM_ARG_START: u32 = 8; ++pub const PR_SET_MM_ARG_END: u32 = 9; ++pub const PR_SET_MM_ENV_START: u32 = 10; ++pub const PR_SET_MM_ENV_END: u32 = 11; ++pub const PR_SET_MM_AUXV: u32 = 12; ++pub const PR_SET_MM_EXE_FILE: u32 = 13; ++pub const PR_SET_MM_MAP: u32 = 14; ++pub const PR_SET_MM_MAP_SIZE: u32 = 15; ++pub const PR_SET_PTRACER: u32 = 1499557217; ++pub const PR_SET_CHILD_SUBREAPER: u32 = 36; ++pub const PR_GET_CHILD_SUBREAPER: u32 = 37; ++pub const PR_SET_NO_NEW_PRIVS: u32 = 38; ++pub const PR_GET_NO_NEW_PRIVS: u32 = 39; ++pub const PR_GET_TID_ADDRESS: u32 = 40; ++pub const PR_SET_THP_DISABLE: u32 = 41; ++pub const PR_GET_THP_DISABLE: u32 = 42; ++pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; ++pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; ++pub const PR_SET_FP_MODE: u32 = 45; ++pub const PR_GET_FP_MODE: u32 = 46; ++pub const PR_FP_MODE_FR: u32 = 1; ++pub const PR_FP_MODE_FRE: u32 = 2; ++pub const PR_CAP_AMBIENT: u32 = 47; ++pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; ++pub const PR_CAP_AMBIENT_RAISE: u32 = 2; ++pub const PR_CAP_AMBIENT_LOWER: u32 = 3; ++pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; ++pub const PR_SVE_SET_VL: u32 = 50; ++pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; ++pub const PR_SVE_GET_VL: u32 = 51; ++pub const PR_SVE_VL_LEN_MASK: u32 = 65535; ++pub const PR_SVE_VL_INHERIT: u32 = 131072; ++pub const PR_GET_SPECULATION_CTRL: u32 = 52; ++pub const PR_SET_SPECULATION_CTRL: u32 = 53; ++pub const PR_SPEC_STORE_BYPASS: u32 = 0; ++pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; ++pub const PR_SPEC_L1D_FLUSH: u32 = 2; ++pub const PR_SPEC_NOT_AFFECTED: u32 = 0; ++pub const PR_SPEC_PRCTL: u32 = 1; ++pub const PR_SPEC_ENABLE: u32 = 2; ++pub const PR_SPEC_DISABLE: u32 = 4; ++pub const PR_SPEC_FORCE_DISABLE: u32 = 8; ++pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; ++pub const PR_PAC_RESET_KEYS: u32 = 54; ++pub const PR_PAC_APIAKEY: u32 = 1; ++pub const PR_PAC_APIBKEY: u32 = 2; ++pub const PR_PAC_APDAKEY: u32 = 4; ++pub const PR_PAC_APDBKEY: u32 = 8; ++pub const PR_PAC_APGAKEY: u32 = 16; ++pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; ++pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; ++pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; ++pub const PR_MTE_TCF_NONE: u32 = 0; ++pub const PR_MTE_TCF_SYNC: u32 = 2; ++pub const PR_MTE_TCF_ASYNC: u32 = 4; ++pub const PR_MTE_TCF_MASK: u32 = 6; ++pub const PR_MTE_TAG_SHIFT: u32 = 3; ++pub const PR_MTE_TAG_MASK: u32 = 524280; ++pub const PR_MTE_TCF_SHIFT: u32 = 1; ++pub const PR_SET_IO_FLUSHER: u32 = 57; ++pub const PR_GET_IO_FLUSHER: u32 = 58; ++pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; ++pub const PR_SYS_DISPATCH_OFF: u32 = 0; ++pub const PR_SYS_DISPATCH_ON: u32 = 1; ++pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; ++pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; ++pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; ++pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; ++pub const PR_SCHED_CORE: u32 = 62; ++pub const PR_SCHED_CORE_GET: u32 = 0; ++pub const PR_SCHED_CORE_CREATE: u32 = 1; ++pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; ++pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; ++pub const PR_SCHED_CORE_MAX: u32 = 4; ++pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; ++pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; ++pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; ++pub const PR_SME_SET_VL: u32 = 63; ++pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; ++pub const PR_SME_GET_VL: u32 = 64; ++pub const PR_SME_VL_LEN_MASK: u32 = 65535; ++pub const PR_SME_VL_INHERIT: u32 = 131072; ++pub const PR_SET_VMA: u32 = 1398164801; ++pub const PR_SET_VMA_ANON_NAME: u32 = 0; ++pub const GRND_NONBLOCK: u32 = 1; ++pub const GRND_RANDOM: u32 = 2; ++pub const GRND_INSECURE: u32 = 4; ++pub const ITIMER_REAL: u32 = 0; ++pub const ITIMER_VIRTUAL: u32 = 1; ++pub const ITIMER_PROF: u32 = 2; ++pub const CLOCK_REALTIME: u32 = 0; ++pub const CLOCK_MONOTONIC: u32 = 1; ++pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; ++pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; ++pub const CLOCK_MONOTONIC_RAW: u32 = 4; ++pub const CLOCK_REALTIME_COARSE: u32 = 5; ++pub const CLOCK_MONOTONIC_COARSE: u32 = 6; ++pub const CLOCK_BOOTTIME: u32 = 7; ++pub const CLOCK_REALTIME_ALARM: u32 = 8; ++pub const CLOCK_BOOTTIME_ALARM: u32 = 9; ++pub const CLOCK_SGI_CYCLE: u32 = 10; ++pub const CLOCK_TAI: u32 = 11; ++pub const MAX_CLOCKS: u32 = 16; ++pub const CLOCKS_MASK: u32 = 1; ++pub const CLOCKS_MONO: u32 = 1; ++pub const TIMER_ABSTIME: u32 = 1; ++pub const RUSAGE_SELF: u32 = 0; ++pub const RUSAGE_CHILDREN: i32 = -1; ++pub const RUSAGE_BOTH: i32 = -2; ++pub const RUSAGE_THREAD: u32 = 1; ++pub const RLIM64_INFINITY: i32 = -1; ++pub const PRIO_MIN: i32 = -20; ++pub const PRIO_MAX: u32 = 20; ++pub const PRIO_PROCESS: u32 = 0; ++pub const PRIO_PGRP: u32 = 1; ++pub const PRIO_USER: u32 = 2; ++pub const _STK_LIM: u32 = 8388608; ++pub const MLOCK_LIMIT: u32 = 8388608; ++pub const RLIMIT_CPU: u32 = 0; ++pub const RLIMIT_FSIZE: u32 = 1; ++pub const RLIMIT_DATA: u32 = 2; ++pub const RLIMIT_STACK: u32 = 3; ++pub const RLIMIT_CORE: u32 = 4; ++pub const RLIMIT_RSS: u32 = 5; ++pub const RLIMIT_NPROC: u32 = 6; ++pub const RLIMIT_NOFILE: u32 = 7; ++pub const RLIMIT_MEMLOCK: u32 = 8; ++pub const RLIMIT_AS: u32 = 9; ++pub const RLIMIT_LOCKS: u32 = 10; ++pub const RLIMIT_SIGPENDING: u32 = 11; ++pub const RLIMIT_MSGQUEUE: u32 = 12; ++pub const RLIMIT_NICE: u32 = 13; ++pub const RLIMIT_RTPRIO: u32 = 14; ++pub const RLIMIT_RTTIME: u32 = 15; ++pub const RLIM_NLIMITS: u32 = 16; ++pub const RLIM_INFINITY: i32 = -1; ++pub const CSIGNAL: u32 = 255; ++pub const CLONE_VM: u32 = 256; ++pub const CLONE_FS: u32 = 512; ++pub const CLONE_FILES: u32 = 1024; ++pub const CLONE_SIGHAND: u32 = 2048; ++pub const CLONE_PIDFD: u32 = 4096; ++pub const CLONE_PTRACE: u32 = 8192; ++pub const CLONE_VFORK: u32 = 16384; ++pub const CLONE_PARENT: u32 = 32768; ++pub const CLONE_THREAD: u32 = 65536; ++pub const CLONE_NEWNS: u32 = 131072; ++pub const CLONE_SYSVSEM: u32 = 262144; ++pub const CLONE_SETTLS: u32 = 524288; ++pub const CLONE_PARENT_SETTID: u32 = 1048576; ++pub const CLONE_CHILD_CLEARTID: u32 = 2097152; ++pub const CLONE_DETACHED: u32 = 4194304; ++pub const CLONE_UNTRACED: u32 = 8388608; ++pub const CLONE_CHILD_SETTID: u32 = 16777216; ++pub const CLONE_NEWCGROUP: u32 = 33554432; ++pub const CLONE_NEWUTS: u32 = 67108864; ++pub const CLONE_NEWIPC: u32 = 134217728; ++pub const CLONE_NEWUSER: u32 = 268435456; ++pub const CLONE_NEWPID: u32 = 536870912; ++pub const CLONE_NEWNET: u32 = 1073741824; ++pub const CLONE_IO: u32 = 2147483648; ++pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; ++pub const CLONE_INTO_CGROUP: u64 = 8589934592; ++pub const CLONE_NEWTIME: u32 = 128; ++pub const CLONE_ARGS_SIZE_VER0: u32 = 64; ++pub const CLONE_ARGS_SIZE_VER1: u32 = 80; ++pub const CLONE_ARGS_SIZE_VER2: u32 = 88; ++pub const SCHED_NORMAL: u32 = 0; ++pub const SCHED_FIFO: u32 = 1; ++pub const SCHED_RR: u32 = 2; ++pub const SCHED_BATCH: u32 = 3; ++pub const SCHED_IDLE: u32 = 5; ++pub const SCHED_DEADLINE: u32 = 6; ++pub const SCHED_RESET_ON_FORK: u32 = 1073741824; ++pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; ++pub const SCHED_FLAG_RECLAIM: u32 = 2; ++pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; ++pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; ++pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; ++pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; ++pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; ++pub const SCHED_FLAG_KEEP_ALL: u32 = 24; ++pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; ++pub const SCHED_FLAG_ALL: u32 = 127; ++pub const MINSIGSTKSZ: u32 = 4096; ++pub const SIGSTKSZ: u32 = 16384; ++pub const _NSIG: u32 = 64; ++pub const SIGHUP: u32 = 1; ++pub const SIGINT: u32 = 2; ++pub const SIGQUIT: u32 = 3; ++pub const SIGILL: u32 = 4; ++pub const SIGTRAP: u32 = 5; ++pub const SIGABRT: u32 = 6; ++pub const SIGIOT: u32 = 6; ++pub const SIGBUS: u32 = 7; ++pub const SIGFPE: u32 = 8; ++pub const SIGKILL: u32 = 9; ++pub const SIGUSR1: u32 = 10; ++pub const SIGSEGV: u32 = 11; ++pub const SIGUSR2: u32 = 12; ++pub const SIGPIPE: u32 = 13; ++pub const SIGALRM: u32 = 14; ++pub const SIGTERM: u32 = 15; ++pub const SIGSTKFLT: u32 = 16; ++pub const SIGCHLD: u32 = 17; ++pub const SIGCONT: u32 = 18; ++pub const SIGSTOP: u32 = 19; ++pub const SIGTSTP: u32 = 20; ++pub const SIGTTIN: u32 = 21; ++pub const SIGTTOU: u32 = 22; ++pub const SIGURG: u32 = 23; ++pub const SIGXCPU: u32 = 24; ++pub const SIGXFSZ: u32 = 25; ++pub const SIGVTALRM: u32 = 26; ++pub const SIGPROF: u32 = 27; ++pub const SIGWINCH: u32 = 28; ++pub const SIGIO: u32 = 29; ++pub const SIGPOLL: u32 = 29; ++pub const SIGPWR: u32 = 30; ++pub const SIGSYS: u32 = 31; ++pub const SIGUNUSED: u32 = 31; ++pub const SIGRTMIN: u32 = 32; ++pub const SIGRTMAX: u32 = 64; ++pub const SA_NOCLDSTOP: u32 = 1; ++pub const SA_NOCLDWAIT: u32 = 2; ++pub const SA_SIGINFO: u32 = 4; ++pub const SA_UNSUPPORTED: u32 = 1024; ++pub const SA_EXPOSE_TAGBITS: u32 = 2048; ++pub const SA_ONSTACK: u32 = 134217728; ++pub const SA_RESTART: u32 = 268435456; ++pub const SA_NODEFER: u32 = 1073741824; ++pub const SA_RESETHAND: u32 = 2147483648; ++pub const SA_NOMASK: u32 = 1073741824; ++pub const SA_ONESHOT: u32 = 2147483648; ++pub const SIG_BLOCK: u32 = 0; ++pub const SIG_UNBLOCK: u32 = 1; ++pub const SIG_SETMASK: u32 = 2; ++pub const SI_MAX_SIZE: u32 = 128; ++pub const SI_USER: u32 = 0; ++pub const SI_KERNEL: u32 = 128; ++pub const SI_QUEUE: i32 = -1; ++pub const SI_TIMER: i32 = -2; ++pub const SI_MESGQ: i32 = -3; ++pub const SI_ASYNCIO: i32 = -4; ++pub const SI_SIGIO: i32 = -5; ++pub const SI_TKILL: i32 = -6; ++pub const SI_DETHREAD: i32 = -7; ++pub const SI_ASYNCNL: i32 = -60; ++pub const ILL_ILLOPC: u32 = 1; ++pub const ILL_ILLOPN: u32 = 2; ++pub const ILL_ILLADR: u32 = 3; ++pub const ILL_ILLTRP: u32 = 4; ++pub const ILL_PRVOPC: u32 = 5; ++pub const ILL_PRVREG: u32 = 6; ++pub const ILL_COPROC: u32 = 7; ++pub const ILL_BADSTK: u32 = 8; ++pub const ILL_BADIADDR: u32 = 9; ++pub const __ILL_BREAK: u32 = 10; ++pub const __ILL_BNDMOD: u32 = 11; ++pub const NSIGILL: u32 = 11; ++pub const FPE_INTDIV: u32 = 1; ++pub const FPE_INTOVF: u32 = 2; ++pub const FPE_FLTDIV: u32 = 3; ++pub const FPE_FLTOVF: u32 = 4; ++pub const FPE_FLTUND: u32 = 5; ++pub const FPE_FLTRES: u32 = 6; ++pub const FPE_FLTINV: u32 = 7; ++pub const FPE_FLTSUB: u32 = 8; ++pub const __FPE_DECOVF: u32 = 9; ++pub const __FPE_DECDIV: u32 = 10; ++pub const __FPE_DECERR: u32 = 11; ++pub const __FPE_INVASC: u32 = 12; ++pub const __FPE_INVDEC: u32 = 13; ++pub const FPE_FLTUNK: u32 = 14; ++pub const FPE_CONDTRAP: u32 = 15; ++pub const NSIGFPE: u32 = 15; ++pub const SEGV_MAPERR: u32 = 1; ++pub const SEGV_ACCERR: u32 = 2; ++pub const SEGV_BNDERR: u32 = 3; ++pub const SEGV_PKUERR: u32 = 4; ++pub const SEGV_ACCADI: u32 = 5; ++pub const SEGV_ADIDERR: u32 = 6; ++pub const SEGV_ADIPERR: u32 = 7; ++pub const SEGV_MTEAERR: u32 = 8; ++pub const SEGV_MTESERR: u32 = 9; ++pub const NSIGSEGV: u32 = 9; ++pub const BUS_ADRALN: u32 = 1; ++pub const BUS_ADRERR: u32 = 2; ++pub const BUS_OBJERR: u32 = 3; ++pub const BUS_MCEERR_AR: u32 = 4; ++pub const BUS_MCEERR_AO: u32 = 5; ++pub const NSIGBUS: u32 = 5; ++pub const TRAP_BRKPT: u32 = 1; ++pub const TRAP_TRACE: u32 = 2; ++pub const TRAP_BRANCH: u32 = 3; ++pub const TRAP_HWBKPT: u32 = 4; ++pub const TRAP_UNK: u32 = 5; ++pub const TRAP_PERF: u32 = 6; ++pub const NSIGTRAP: u32 = 6; ++pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; ++pub const CLD_EXITED: u32 = 1; ++pub const CLD_KILLED: u32 = 2; ++pub const CLD_DUMPED: u32 = 3; ++pub const CLD_TRAPPED: u32 = 4; ++pub const CLD_STOPPED: u32 = 5; ++pub const CLD_CONTINUED: u32 = 6; ++pub const NSIGCHLD: u32 = 6; ++pub const POLL_IN: u32 = 1; ++pub const POLL_OUT: u32 = 2; ++pub const POLL_MSG: u32 = 3; ++pub const POLL_ERR: u32 = 4; ++pub const POLL_PRI: u32 = 5; ++pub const POLL_HUP: u32 = 6; ++pub const NSIGPOLL: u32 = 6; ++pub const SYS_SECCOMP: u32 = 1; ++pub const SYS_USER_DISPATCH: u32 = 2; ++pub const NSIGSYS: u32 = 2; ++pub const EMT_TAGOVF: u32 = 1; ++pub const NSIGEMT: u32 = 1; ++pub const SIGEV_SIGNAL: u32 = 0; ++pub const SIGEV_NONE: u32 = 1; ++pub const SIGEV_THREAD: u32 = 2; ++pub const SIGEV_THREAD_ID: u32 = 4; ++pub const SIGEV_MAX_SIZE: u32 = 64; ++pub const SS_ONSTACK: u32 = 1; ++pub const SS_DISABLE: u32 = 2; ++pub const SS_AUTODISARM: u32 = 2147483648; ++pub const SS_FLAG_BITS: u32 = 2147483648; ++pub const S_IFMT: u32 = 61440; ++pub const S_IFSOCK: u32 = 49152; ++pub const S_IFLNK: u32 = 40960; ++pub const S_IFREG: u32 = 32768; ++pub const S_IFBLK: u32 = 24576; ++pub const S_IFDIR: u32 = 16384; ++pub const S_IFCHR: u32 = 8192; ++pub const S_IFIFO: u32 = 4096; ++pub const S_ISUID: u32 = 2048; ++pub const S_ISGID: u32 = 1024; ++pub const S_ISVTX: u32 = 512; ++pub const S_IRWXU: u32 = 448; ++pub const S_IRUSR: u32 = 256; ++pub const S_IWUSR: u32 = 128; ++pub const S_IXUSR: u32 = 64; ++pub const S_IRWXG: u32 = 56; ++pub const S_IRGRP: u32 = 32; ++pub const S_IWGRP: u32 = 16; ++pub const S_IXGRP: u32 = 8; ++pub const S_IRWXO: u32 = 7; ++pub const S_IROTH: u32 = 4; ++pub const S_IWOTH: u32 = 2; ++pub const S_IXOTH: u32 = 1; ++pub const STATX_TYPE: u32 = 1; ++pub const STATX_MODE: u32 = 2; ++pub const STATX_NLINK: u32 = 4; ++pub const STATX_UID: u32 = 8; ++pub const STATX_GID: u32 = 16; ++pub const STATX_ATIME: u32 = 32; ++pub const STATX_MTIME: u32 = 64; ++pub const STATX_CTIME: u32 = 128; ++pub const STATX_INO: u32 = 256; ++pub const STATX_SIZE: u32 = 512; ++pub const STATX_BLOCKS: u32 = 1024; ++pub const STATX_BASIC_STATS: u32 = 2047; ++pub const STATX_BTIME: u32 = 2048; ++pub const STATX_MNT_ID: u32 = 4096; ++pub const STATX_DIOALIGN: u32 = 8192; ++pub const STATX__RESERVED: u32 = 2147483648; ++pub const STATX_ALL: u32 = 4095; ++pub const STATX_ATTR_COMPRESSED: u32 = 4; ++pub const STATX_ATTR_IMMUTABLE: u32 = 16; ++pub const STATX_ATTR_APPEND: u32 = 32; ++pub const STATX_ATTR_NODUMP: u32 = 64; ++pub const STATX_ATTR_ENCRYPTED: u32 = 2048; ++pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; ++pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; ++pub const STATX_ATTR_VERITY: u32 = 1048576; ++pub const STATX_ATTR_DAX: u32 = 2097152; ++pub const SI_LOAD_SHIFT: u32 = 16; ++pub const TCP_MSS_DEFAULT: u32 = 536; ++pub const TCP_MSS_DESIRED: u32 = 1220; ++pub const TCP_NODELAY: u32 = 1; ++pub const TCP_MAXSEG: u32 = 2; ++pub const TCP_CORK: u32 = 3; ++pub const TCP_KEEPIDLE: u32 = 4; ++pub const TCP_KEEPINTVL: u32 = 5; ++pub const TCP_KEEPCNT: u32 = 6; ++pub const TCP_SYNCNT: u32 = 7; ++pub const TCP_LINGER2: u32 = 8; ++pub const TCP_DEFER_ACCEPT: u32 = 9; ++pub const TCP_WINDOW_CLAMP: u32 = 10; ++pub const TCP_INFO: u32 = 11; ++pub const TCP_QUICKACK: u32 = 12; ++pub const TCP_CONGESTION: u32 = 13; ++pub const TCP_MD5SIG: u32 = 14; ++pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; ++pub const TCP_THIN_DUPACK: u32 = 17; ++pub const TCP_USER_TIMEOUT: u32 = 18; ++pub const TCP_REPAIR: u32 = 19; ++pub const TCP_REPAIR_QUEUE: u32 = 20; ++pub const TCP_QUEUE_SEQ: u32 = 21; ++pub const TCP_REPAIR_OPTIONS: u32 = 22; ++pub const TCP_FASTOPEN: u32 = 23; ++pub const TCP_TIMESTAMP: u32 = 24; ++pub const TCP_NOTSENT_LOWAT: u32 = 25; ++pub const TCP_CC_INFO: u32 = 26; ++pub const TCP_SAVE_SYN: u32 = 27; ++pub const TCP_SAVED_SYN: u32 = 28; ++pub const TCP_REPAIR_WINDOW: u32 = 29; ++pub const TCP_FASTOPEN_CONNECT: u32 = 30; ++pub const TCP_ULP: u32 = 31; ++pub const TCP_MD5SIG_EXT: u32 = 32; ++pub const TCP_FASTOPEN_KEY: u32 = 33; ++pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; ++pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; ++pub const TCP_INQ: u32 = 36; ++pub const TCP_CM_INQ: u32 = 36; ++pub const TCP_TX_DELAY: u32 = 37; ++pub const TCP_REPAIR_ON: u32 = 1; ++pub const TCP_REPAIR_OFF: u32 = 0; ++pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; ++pub const TCPI_OPT_TIMESTAMPS: u32 = 1; ++pub const TCPI_OPT_SACK: u32 = 2; ++pub const TCPI_OPT_WSCALE: u32 = 4; ++pub const TCPI_OPT_ECN: u32 = 8; ++pub const TCPI_OPT_ECN_SEEN: u32 = 16; ++pub const TCPI_OPT_SYN_DATA: u32 = 32; ++pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; ++pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; ++pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; ++pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; ++pub const IGNBRK: u32 = 1; ++pub const BRKINT: u32 = 2; ++pub const IGNPAR: u32 = 4; ++pub const PARMRK: u32 = 8; ++pub const INPCK: u32 = 16; ++pub const ISTRIP: u32 = 32; ++pub const INLCR: u32 = 64; ++pub const IGNCR: u32 = 128; ++pub const ICRNL: u32 = 256; ++pub const IXANY: u32 = 2048; ++pub const OPOST: u32 = 1; ++pub const OCRNL: u32 = 8; ++pub const ONOCR: u32 = 16; ++pub const ONLRET: u32 = 32; ++pub const OFILL: u32 = 64; ++pub const OFDEL: u32 = 128; ++pub const B0: u32 = 0; ++pub const B50: u32 = 1; ++pub const B75: u32 = 2; ++pub const B110: u32 = 3; ++pub const B134: u32 = 4; ++pub const B150: u32 = 5; ++pub const B200: u32 = 6; ++pub const B300: u32 = 7; ++pub const B600: u32 = 8; ++pub const B1200: u32 = 9; ++pub const B1800: u32 = 10; ++pub const B2400: u32 = 11; ++pub const B4800: u32 = 12; ++pub const B9600: u32 = 13; ++pub const B19200: u32 = 14; ++pub const B38400: u32 = 15; ++pub const EXTA: u32 = 14; ++pub const EXTB: u32 = 15; ++pub const ADDRB: u32 = 536870912; ++pub const CMSPAR: u32 = 1073741824; ++pub const CRTSCTS: u32 = 2147483648; ++pub const IBSHIFT: u32 = 16; ++pub const TCOOFF: u32 = 0; ++pub const TCOON: u32 = 1; ++pub const TCIOFF: u32 = 2; ++pub const TCION: u32 = 3; ++pub const TCIFLUSH: u32 = 0; ++pub const TCOFLUSH: u32 = 1; ++pub const TCIOFLUSH: u32 = 2; ++pub const NCCS: u32 = 19; ++pub const VINTR: u32 = 0; ++pub const VQUIT: u32 = 1; ++pub const VERASE: u32 = 2; ++pub const VKILL: u32 = 3; ++pub const VEOF: u32 = 4; ++pub const VTIME: u32 = 5; ++pub const VMIN: u32 = 6; ++pub const VSWTC: u32 = 7; ++pub const VSTART: u32 = 8; ++pub const VSTOP: u32 = 9; ++pub const VSUSP: u32 = 10; ++pub const VEOL: u32 = 11; ++pub const VREPRINT: u32 = 12; ++pub const VDISCARD: u32 = 13; ++pub const VWERASE: u32 = 14; ++pub const VLNEXT: u32 = 15; ++pub const VEOL2: u32 = 16; ++pub const IUCLC: u32 = 512; ++pub const IXON: u32 = 1024; ++pub const IXOFF: u32 = 4096; ++pub const IMAXBEL: u32 = 8192; ++pub const IUTF8: u32 = 16384; ++pub const OLCUC: u32 = 2; ++pub const ONLCR: u32 = 4; ++pub const NLDLY: u32 = 256; ++pub const NL0: u32 = 0; ++pub const NL1: u32 = 256; ++pub const CRDLY: u32 = 1536; ++pub const CR0: u32 = 0; ++pub const CR1: u32 = 512; ++pub const CR2: u32 = 1024; ++pub const CR3: u32 = 1536; ++pub const TABDLY: u32 = 6144; ++pub const TAB0: u32 = 0; ++pub const TAB1: u32 = 2048; ++pub const TAB2: u32 = 4096; ++pub const TAB3: u32 = 6144; ++pub const XTABS: u32 = 6144; ++pub const BSDLY: u32 = 8192; ++pub const BS0: u32 = 0; ++pub const BS1: u32 = 8192; ++pub const VTDLY: u32 = 16384; ++pub const VT0: u32 = 0; ++pub const VT1: u32 = 16384; ++pub const FFDLY: u32 = 32768; ++pub const FF0: u32 = 0; ++pub const FF1: u32 = 32768; ++pub const CBAUD: u32 = 4111; ++pub const CSIZE: u32 = 48; ++pub const CS5: u32 = 0; ++pub const CS6: u32 = 16; ++pub const CS7: u32 = 32; ++pub const CS8: u32 = 48; ++pub const CSTOPB: u32 = 64; ++pub const CREAD: u32 = 128; ++pub const PARENB: u32 = 256; ++pub const PARODD: u32 = 512; ++pub const HUPCL: u32 = 1024; ++pub const CLOCAL: u32 = 2048; ++pub const CBAUDEX: u32 = 4096; ++pub const BOTHER: u32 = 4096; ++pub const B57600: u32 = 4097; ++pub const B115200: u32 = 4098; ++pub const B230400: u32 = 4099; ++pub const B460800: u32 = 4100; ++pub const B500000: u32 = 4101; ++pub const B576000: u32 = 4102; ++pub const B921600: u32 = 4103; ++pub const B1000000: u32 = 4104; ++pub const B1152000: u32 = 4105; ++pub const B1500000: u32 = 4106; ++pub const B2000000: u32 = 4107; ++pub const B2500000: u32 = 4108; ++pub const B3000000: u32 = 4109; ++pub const B3500000: u32 = 4110; ++pub const B4000000: u32 = 4111; ++pub const CIBAUD: u32 = 269418496; ++pub const ISIG: u32 = 1; ++pub const ICANON: u32 = 2; ++pub const XCASE: u32 = 4; ++pub const ECHO: u32 = 8; ++pub const ECHOE: u32 = 16; ++pub const ECHOK: u32 = 32; ++pub const ECHONL: u32 = 64; ++pub const NOFLSH: u32 = 128; ++pub const TOSTOP: u32 = 256; ++pub const ECHOCTL: u32 = 512; ++pub const ECHOPRT: u32 = 1024; ++pub const ECHOKE: u32 = 2048; ++pub const FLUSHO: u32 = 4096; ++pub const PENDIN: u32 = 16384; ++pub const IEXTEN: u32 = 32768; ++pub const EXTPROC: u32 = 65536; ++pub const TCSANOW: u32 = 0; ++pub const TCSADRAIN: u32 = 1; ++pub const TCSAFLUSH: u32 = 2; ++pub const TIOCPKT_DATA: u32 = 0; ++pub const TIOCPKT_FLUSHREAD: u32 = 1; ++pub const TIOCPKT_FLUSHWRITE: u32 = 2; ++pub const TIOCPKT_STOP: u32 = 4; ++pub const TIOCPKT_START: u32 = 8; ++pub const TIOCPKT_NOSTOP: u32 = 16; ++pub const TIOCPKT_DOSTOP: u32 = 32; ++pub const TIOCPKT_IOCTL: u32 = 64; ++pub const TIOCSER_TEMT: u32 = 1; ++pub const NCC: u32 = 8; ++pub const TIOCM_LE: u32 = 1; ++pub const TIOCM_DTR: u32 = 2; ++pub const TIOCM_RTS: u32 = 4; ++pub const TIOCM_ST: u32 = 8; ++pub const TIOCM_SR: u32 = 16; ++pub const TIOCM_CTS: u32 = 32; ++pub const TIOCM_CAR: u32 = 64; ++pub const TIOCM_RNG: u32 = 128; ++pub const TIOCM_DSR: u32 = 256; ++pub const TIOCM_CD: u32 = 64; ++pub const TIOCM_RI: u32 = 128; ++pub const TIOCM_OUT1: u32 = 8192; ++pub const TIOCM_OUT2: u32 = 16384; ++pub const TIOCM_LOOP: u32 = 32768; ++pub const UIO_FASTIOV: u32 = 8; ++pub const UIO_MAXIOV: u32 = 1024; ++pub const UNIX_PATH_MAX: u32 = 108; ++pub const __NR_io_setup: u32 = 0; ++pub const __NR_io_destroy: u32 = 1; ++pub const __NR_io_submit: u32 = 2; ++pub const __NR_io_cancel: u32 = 3; ++pub const __NR_io_getevents: u32 = 4; ++pub const __NR_setxattr: u32 = 5; ++pub const __NR_lsetxattr: u32 = 6; ++pub const __NR_fsetxattr: u32 = 7; ++pub const __NR_getxattr: u32 = 8; ++pub const __NR_lgetxattr: u32 = 9; ++pub const __NR_fgetxattr: u32 = 10; ++pub const __NR_listxattr: u32 = 11; ++pub const __NR_llistxattr: u32 = 12; ++pub const __NR_flistxattr: u32 = 13; ++pub const __NR_removexattr: u32 = 14; ++pub const __NR_lremovexattr: u32 = 15; ++pub const __NR_fremovexattr: u32 = 16; ++pub const __NR_getcwd: u32 = 17; ++pub const __NR_lookup_dcookie: u32 = 18; ++pub const __NR_eventfd2: u32 = 19; ++pub const __NR_epoll_create1: u32 = 20; ++pub const __NR_epoll_ctl: u32 = 21; ++pub const __NR_epoll_pwait: u32 = 22; ++pub const __NR_dup: u32 = 23; ++pub const __NR_dup3: u32 = 24; ++pub const __NR3264_fcntl: u32 = 25; ++pub const __NR_inotify_init1: u32 = 26; ++pub const __NR_inotify_add_watch: u32 = 27; ++pub const __NR_inotify_rm_watch: u32 = 28; ++pub const __NR_ioctl: u32 = 29; ++pub const __NR_ioprio_set: u32 = 30; ++pub const __NR_ioprio_get: u32 = 31; ++pub const __NR_flock: u32 = 32; ++pub const __NR_mknodat: u32 = 33; ++pub const __NR_mkdirat: u32 = 34; ++pub const __NR_unlinkat: u32 = 35; ++pub const __NR_symlinkat: u32 = 36; ++pub const __NR_linkat: u32 = 37; ++pub const __NR_umount2: u32 = 39; ++pub const __NR_mount: u32 = 40; ++pub const __NR_pivot_root: u32 = 41; ++pub const __NR_nfsservctl: u32 = 42; ++pub const __NR3264_statfs: u32 = 43; ++pub const __NR3264_fstatfs: u32 = 44; ++pub const __NR3264_truncate: u32 = 45; ++pub const __NR3264_ftruncate: u32 = 46; ++pub const __NR_fallocate: u32 = 47; ++pub const __NR_faccessat: u32 = 48; ++pub const __NR_chdir: u32 = 49; ++pub const __NR_fchdir: u32 = 50; ++pub const __NR_chroot: u32 = 51; ++pub const __NR_fchmod: u32 = 52; ++pub const __NR_fchmodat: u32 = 53; ++pub const __NR_fchownat: u32 = 54; ++pub const __NR_fchown: u32 = 55; ++pub const __NR_openat: u32 = 56; ++pub const __NR_close: u32 = 57; ++pub const __NR_vhangup: u32 = 58; ++pub const __NR_pipe2: u32 = 59; ++pub const __NR_quotactl: u32 = 60; ++pub const __NR_getdents64: u32 = 61; ++pub const __NR3264_lseek: u32 = 62; ++pub const __NR_read: u32 = 63; ++pub const __NR_write: u32 = 64; ++pub const __NR_readv: u32 = 65; ++pub const __NR_writev: u32 = 66; ++pub const __NR_pread64: u32 = 67; ++pub const __NR_pwrite64: u32 = 68; ++pub const __NR_preadv: u32 = 69; ++pub const __NR_pwritev: u32 = 70; ++pub const __NR3264_sendfile: u32 = 71; ++pub const __NR_pselect6: u32 = 72; ++pub const __NR_ppoll: u32 = 73; ++pub const __NR_signalfd4: u32 = 74; ++pub const __NR_vmsplice: u32 = 75; ++pub const __NR_splice: u32 = 76; ++pub const __NR_tee: u32 = 77; ++pub const __NR_readlinkat: u32 = 78; ++pub const __NR_sync: u32 = 81; ++pub const __NR_fsync: u32 = 82; ++pub const __NR_fdatasync: u32 = 83; ++pub const __NR_sync_file_range: u32 = 84; ++pub const __NR_timerfd_create: u32 = 85; ++pub const __NR_timerfd_settime: u32 = 86; ++pub const __NR_timerfd_gettime: u32 = 87; ++pub const __NR_utimensat: u32 = 88; ++pub const __NR_acct: u32 = 89; ++pub const __NR_capget: u32 = 90; ++pub const __NR_capset: u32 = 91; ++pub const __NR_personality: u32 = 92; ++pub const __NR_exit: u32 = 93; ++pub const __NR_exit_group: u32 = 94; ++pub const __NR_waitid: u32 = 95; ++pub const __NR_set_tid_address: u32 = 96; ++pub const __NR_unshare: u32 = 97; ++pub const __NR_futex: u32 = 98; ++pub const __NR_set_robust_list: u32 = 99; ++pub const __NR_get_robust_list: u32 = 100; ++pub const __NR_nanosleep: u32 = 101; ++pub const __NR_getitimer: u32 = 102; ++pub const __NR_setitimer: u32 = 103; ++pub const __NR_kexec_load: u32 = 104; ++pub const __NR_init_module: u32 = 105; ++pub const __NR_delete_module: u32 = 106; ++pub const __NR_timer_create: u32 = 107; ++pub const __NR_timer_gettime: u32 = 108; ++pub const __NR_timer_getoverrun: u32 = 109; ++pub const __NR_timer_settime: u32 = 110; ++pub const __NR_timer_delete: u32 = 111; ++pub const __NR_clock_settime: u32 = 112; ++pub const __NR_clock_gettime: u32 = 113; ++pub const __NR_clock_getres: u32 = 114; ++pub const __NR_clock_nanosleep: u32 = 115; ++pub const __NR_syslog: u32 = 116; ++pub const __NR_ptrace: u32 = 117; ++pub const __NR_sched_setparam: u32 = 118; ++pub const __NR_sched_setscheduler: u32 = 119; ++pub const __NR_sched_getscheduler: u32 = 120; ++pub const __NR_sched_getparam: u32 = 121; ++pub const __NR_sched_setaffinity: u32 = 122; ++pub const __NR_sched_getaffinity: u32 = 123; ++pub const __NR_sched_yield: u32 = 124; ++pub const __NR_sched_get_priority_max: u32 = 125; ++pub const __NR_sched_get_priority_min: u32 = 126; ++pub const __NR_sched_rr_get_interval: u32 = 127; ++pub const __NR_restart_syscall: u32 = 128; ++pub const __NR_kill: u32 = 129; ++pub const __NR_tkill: u32 = 130; ++pub const __NR_tgkill: u32 = 131; ++pub const __NR_sigaltstack: u32 = 132; ++pub const __NR_rt_sigsuspend: u32 = 133; ++pub const __NR_rt_sigaction: u32 = 134; ++pub const __NR_rt_sigprocmask: u32 = 135; ++pub const __NR_rt_sigpending: u32 = 136; ++pub const __NR_rt_sigtimedwait: u32 = 137; ++pub const __NR_rt_sigqueueinfo: u32 = 138; ++pub const __NR_rt_sigreturn: u32 = 139; ++pub const __NR_setpriority: u32 = 140; ++pub const __NR_getpriority: u32 = 141; ++pub const __NR_reboot: u32 = 142; ++pub const __NR_setregid: u32 = 143; ++pub const __NR_setgid: u32 = 144; ++pub const __NR_setreuid: u32 = 145; ++pub const __NR_setuid: u32 = 146; ++pub const __NR_setresuid: u32 = 147; ++pub const __NR_getresuid: u32 = 148; ++pub const __NR_setresgid: u32 = 149; ++pub const __NR_getresgid: u32 = 150; ++pub const __NR_setfsuid: u32 = 151; ++pub const __NR_setfsgid: u32 = 152; ++pub const __NR_times: u32 = 153; ++pub const __NR_setpgid: u32 = 154; ++pub const __NR_getpgid: u32 = 155; ++pub const __NR_getsid: u32 = 156; ++pub const __NR_setsid: u32 = 157; ++pub const __NR_getgroups: u32 = 158; ++pub const __NR_setgroups: u32 = 159; ++pub const __NR_uname: u32 = 160; ++pub const __NR_sethostname: u32 = 161; ++pub const __NR_setdomainname: u32 = 162; ++pub const __NR_getrusage: u32 = 165; ++pub const __NR_umask: u32 = 166; ++pub const __NR_prctl: u32 = 167; ++pub const __NR_getcpu: u32 = 168; ++pub const __NR_gettimeofday: u32 = 169; ++pub const __NR_settimeofday: u32 = 170; ++pub const __NR_adjtimex: u32 = 171; ++pub const __NR_getpid: u32 = 172; ++pub const __NR_getppid: u32 = 173; ++pub const __NR_getuid: u32 = 174; ++pub const __NR_geteuid: u32 = 175; ++pub const __NR_getgid: u32 = 176; ++pub const __NR_getegid: u32 = 177; ++pub const __NR_gettid: u32 = 178; ++pub const __NR_sysinfo: u32 = 179; ++pub const __NR_mq_open: u32 = 180; ++pub const __NR_mq_unlink: u32 = 181; ++pub const __NR_mq_timedsend: u32 = 182; ++pub const __NR_mq_timedreceive: u32 = 183; ++pub const __NR_mq_notify: u32 = 184; ++pub const __NR_mq_getsetattr: u32 = 185; ++pub const __NR_msgget: u32 = 186; ++pub const __NR_msgctl: u32 = 187; ++pub const __NR_msgrcv: u32 = 188; ++pub const __NR_msgsnd: u32 = 189; ++pub const __NR_semget: u32 = 190; ++pub const __NR_semctl: u32 = 191; ++pub const __NR_semtimedop: u32 = 192; ++pub const __NR_semop: u32 = 193; ++pub const __NR_shmget: u32 = 194; ++pub const __NR_shmctl: u32 = 195; ++pub const __NR_shmat: u32 = 196; ++pub const __NR_shmdt: u32 = 197; ++pub const __NR_socket: u32 = 198; ++pub const __NR_socketpair: u32 = 199; ++pub const __NR_bind: u32 = 200; ++pub const __NR_listen: u32 = 201; ++pub const __NR_accept: u32 = 202; ++pub const __NR_connect: u32 = 203; ++pub const __NR_getsockname: u32 = 204; ++pub const __NR_getpeername: u32 = 205; ++pub const __NR_sendto: u32 = 206; ++pub const __NR_recvfrom: u32 = 207; ++pub const __NR_setsockopt: u32 = 208; ++pub const __NR_getsockopt: u32 = 209; ++pub const __NR_shutdown: u32 = 210; ++pub const __NR_sendmsg: u32 = 211; ++pub const __NR_recvmsg: u32 = 212; ++pub const __NR_readahead: u32 = 213; ++pub const __NR_brk: u32 = 214; ++pub const __NR_munmap: u32 = 215; ++pub const __NR_mremap: u32 = 216; ++pub const __NR_add_key: u32 = 217; ++pub const __NR_request_key: u32 = 218; ++pub const __NR_keyctl: u32 = 219; ++pub const __NR_clone: u32 = 220; ++pub const __NR_execve: u32 = 221; ++pub const __NR3264_mmap: u32 = 222; ++pub const __NR3264_fadvise64: u32 = 223; ++pub const __NR_swapon: u32 = 224; ++pub const __NR_swapoff: u32 = 225; ++pub const __NR_mprotect: u32 = 226; ++pub const __NR_msync: u32 = 227; ++pub const __NR_mlock: u32 = 228; ++pub const __NR_munlock: u32 = 229; ++pub const __NR_mlockall: u32 = 230; ++pub const __NR_munlockall: u32 = 231; ++pub const __NR_mincore: u32 = 232; ++pub const __NR_madvise: u32 = 233; ++pub const __NR_remap_file_pages: u32 = 234; ++pub const __NR_mbind: u32 = 235; ++pub const __NR_get_mempolicy: u32 = 236; ++pub const __NR_set_mempolicy: u32 = 237; ++pub const __NR_migrate_pages: u32 = 238; ++pub const __NR_move_pages: u32 = 239; ++pub const __NR_rt_tgsigqueueinfo: u32 = 240; ++pub const __NR_perf_event_open: u32 = 241; ++pub const __NR_accept4: u32 = 242; ++pub const __NR_recvmmsg: u32 = 243; ++pub const __NR_arch_specific_syscall: u32 = 244; ++pub const __NR_wait4: u32 = 260; ++pub const __NR_prlimit64: u32 = 261; ++pub const __NR_fanotify_init: u32 = 262; ++pub const __NR_fanotify_mark: u32 = 263; ++pub const __NR_name_to_handle_at: u32 = 264; ++pub const __NR_open_by_handle_at: u32 = 265; ++pub const __NR_clock_adjtime: u32 = 266; ++pub const __NR_syncfs: u32 = 267; ++pub const __NR_setns: u32 = 268; ++pub const __NR_sendmmsg: u32 = 269; ++pub const __NR_process_vm_readv: u32 = 270; ++pub const __NR_process_vm_writev: u32 = 271; ++pub const __NR_kcmp: u32 = 272; ++pub const __NR_finit_module: u32 = 273; ++pub const __NR_sched_setattr: u32 = 274; ++pub const __NR_sched_getattr: u32 = 275; ++pub const __NR_renameat2: u32 = 276; ++pub const __NR_seccomp: u32 = 277; ++pub const __NR_getrandom: u32 = 278; ++pub const __NR_memfd_create: u32 = 279; ++pub const __NR_bpf: u32 = 280; ++pub const __NR_execveat: u32 = 281; ++pub const __NR_userfaultfd: u32 = 282; ++pub const __NR_membarrier: u32 = 283; ++pub const __NR_mlock2: u32 = 284; ++pub const __NR_copy_file_range: u32 = 285; ++pub const __NR_preadv2: u32 = 286; ++pub const __NR_pwritev2: u32 = 287; ++pub const __NR_pkey_mprotect: u32 = 288; ++pub const __NR_pkey_alloc: u32 = 289; ++pub const __NR_pkey_free: u32 = 290; ++pub const __NR_statx: u32 = 291; ++pub const __NR_io_pgetevents: u32 = 292; ++pub const __NR_rseq: u32 = 293; ++pub const __NR_kexec_file_load: u32 = 294; ++pub const __NR_pidfd_send_signal: u32 = 424; ++pub const __NR_io_uring_setup: u32 = 425; ++pub const __NR_io_uring_enter: u32 = 426; ++pub const __NR_io_uring_register: u32 = 427; ++pub const __NR_open_tree: u32 = 428; ++pub const __NR_move_mount: u32 = 429; ++pub const __NR_fsopen: u32 = 430; ++pub const __NR_fsconfig: u32 = 431; ++pub const __NR_fsmount: u32 = 432; ++pub const __NR_fspick: u32 = 433; ++pub const __NR_pidfd_open: u32 = 434; ++pub const __NR_clone3: u32 = 435; ++pub const __NR_close_range: u32 = 436; ++pub const __NR_openat2: u32 = 437; ++pub const __NR_pidfd_getfd: u32 = 438; ++pub const __NR_faccessat2: u32 = 439; ++pub const __NR_process_madvise: u32 = 440; ++pub const __NR_epoll_pwait2: u32 = 441; ++pub const __NR_mount_setattr: u32 = 442; ++pub const __NR_quotactl_fd: u32 = 443; ++pub const __NR_landlock_create_ruleset: u32 = 444; ++pub const __NR_landlock_add_rule: u32 = 445; ++pub const __NR_landlock_restrict_self: u32 = 446; ++pub const __NR_process_mrelease: u32 = 448; ++pub const __NR_futex_waitv: u32 = 449; ++pub const __NR_set_mempolicy_home_node: u32 = 450; ++pub const __NR_syscalls: u32 = 451; ++pub const __NR_fcntl: u32 = 25; ++pub const __NR_statfs: u32 = 43; ++pub const __NR_fstatfs: u32 = 44; ++pub const __NR_truncate: u32 = 45; ++pub const __NR_ftruncate: u32 = 46; ++pub const __NR_lseek: u32 = 62; ++pub const __NR_sendfile: u32 = 71; ++pub const __NR_mmap: u32 = 222; ++pub const __NR_fadvise64: u32 = 223; ++pub const __OLD_UTS_LEN: u32 = 8; ++pub const __NEW_UTS_LEN: u32 = 64; ++pub const WNOHANG: u32 = 1; ++pub const WUNTRACED: u32 = 2; ++pub const WSTOPPED: u32 = 2; ++pub const WEXITED: u32 = 4; ++pub const WCONTINUED: u32 = 8; ++pub const WNOWAIT: u32 = 16777216; ++pub const __WNOTHREAD: u32 = 536870912; ++pub const __WALL: u32 = 1073741824; ++pub const __WCLONE: u32 = 2147483648; ++pub const P_ALL: u32 = 0; ++pub const P_PID: u32 = 1; ++pub const P_PGID: u32 = 2; ++pub const P_PIDFD: u32 = 3; ++pub const MFD_CLOEXEC: u32 = 1; ++pub const MFD_ALLOW_SEALING: u32 = 2; ++pub const MFD_HUGETLB: u32 = 4; ++pub const MFD_HUGE_SHIFT: u32 = 26; ++pub const MFD_HUGE_MASK: u32 = 63; ++pub const MFD_HUGE_64KB: u32 = 1073741824; ++pub const MFD_HUGE_512KB: u32 = 1275068416; ++pub const MFD_HUGE_1MB: u32 = 1342177280; ++pub const MFD_HUGE_2MB: u32 = 1409286144; ++pub const MFD_HUGE_8MB: u32 = 1543503872; ++pub const MFD_HUGE_16MB: u32 = 1610612736; ++pub const MFD_HUGE_32MB: u32 = 1677721600; ++pub const MFD_HUGE_256MB: u32 = 1879048192; ++pub const MFD_HUGE_512MB: u32 = 1946157056; ++pub const MFD_HUGE_1GB: u32 = 2013265920; ++pub const MFD_HUGE_2GB: u32 = 2080374784; ++pub const MFD_HUGE_16GB: u32 = 2281701376; ++pub const TFD_TIMER_ABSTIME: u32 = 1; ++pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; ++pub const TFD_CLOEXEC: u32 = 524288; ++pub const TFD_NONBLOCK: u32 = 2048; ++pub const USERFAULTFD_IOC: u32 = 170; ++pub const _UFFDIO_REGISTER: u32 = 0; ++pub const _UFFDIO_UNREGISTER: u32 = 1; ++pub const _UFFDIO_WAKE: u32 = 2; ++pub const _UFFDIO_COPY: u32 = 3; ++pub const _UFFDIO_ZEROPAGE: u32 = 4; ++pub const _UFFDIO_WRITEPROTECT: u32 = 6; ++pub const _UFFDIO_CONTINUE: u32 = 7; ++pub const _UFFDIO_API: u32 = 63; ++pub const UFFDIO: u32 = 170; ++pub const UFFD_EVENT_PAGEFAULT: u32 = 18; ++pub const UFFD_EVENT_FORK: u32 = 19; ++pub const UFFD_EVENT_REMAP: u32 = 20; ++pub const UFFD_EVENT_REMOVE: u32 = 21; ++pub const UFFD_EVENT_UNMAP: u32 = 22; ++pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; ++pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; ++pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; ++pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; ++pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; ++pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; ++pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; ++pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; ++pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; ++pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; ++pub const UFFD_FEATURE_SIGBUS: u32 = 128; ++pub const UFFD_FEATURE_THREAD_ID: u32 = 256; ++pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; ++pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; ++pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; ++pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; ++pub const UFFD_USER_MODE_ONLY: u32 = 1; ++pub const IORING_FILE_INDEX_ALLOC: i32 = -1; ++pub const IORING_SETUP_IOPOLL: u32 = 1; ++pub const IORING_SETUP_SQPOLL: u32 = 2; ++pub const IORING_SETUP_SQ_AFF: u32 = 4; ++pub const IORING_SETUP_CQSIZE: u32 = 8; ++pub const IORING_SETUP_CLAMP: u32 = 16; ++pub const IORING_SETUP_ATTACH_WQ: u32 = 32; ++pub const IORING_SETUP_R_DISABLED: u32 = 64; ++pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; ++pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; ++pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; ++pub const IORING_SETUP_SQE128: u32 = 1024; ++pub const IORING_SETUP_CQE32: u32 = 2048; ++pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; ++pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; ++pub const IORING_URING_CMD_FIXED: u32 = 1; ++pub const IORING_FSYNC_DATASYNC: u32 = 1; ++pub const IORING_TIMEOUT_ABS: u32 = 1; ++pub const IORING_TIMEOUT_UPDATE: u32 = 2; ++pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; ++pub const IORING_TIMEOUT_REALTIME: u32 = 8; ++pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; ++pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; ++pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; ++pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; ++pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; ++pub const IORING_POLL_ADD_MULTI: u32 = 1; ++pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; ++pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; ++pub const IORING_POLL_ADD_LEVEL: u32 = 8; ++pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; ++pub const IORING_ASYNC_CANCEL_FD: u32 = 2; ++pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; ++pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; ++pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; ++pub const IORING_RECV_MULTISHOT: u32 = 2; ++pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; ++pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; ++pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; ++pub const IORING_ACCEPT_MULTISHOT: u32 = 1; ++pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; ++pub const IORING_CQE_F_BUFFER: u32 = 1; ++pub const IORING_CQE_F_MORE: u32 = 2; ++pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; ++pub const IORING_CQE_F_NOTIF: u32 = 8; ++pub const IORING_OFF_SQ_RING: u32 = 0; ++pub const IORING_OFF_CQ_RING: u32 = 134217728; ++pub const IORING_OFF_SQES: u32 = 268435456; ++pub const IORING_SQ_NEED_WAKEUP: u32 = 1; ++pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; ++pub const IORING_SQ_TASKRUN: u32 = 4; ++pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; ++pub const IORING_ENTER_GETEVENTS: u32 = 1; ++pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; ++pub const IORING_ENTER_SQ_WAIT: u32 = 4; ++pub const IORING_ENTER_EXT_ARG: u32 = 8; ++pub const IORING_ENTER_REGISTERED_RING: u32 = 16; ++pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; ++pub const IORING_FEAT_NODROP: u32 = 2; ++pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; ++pub const IORING_FEAT_RW_CUR_POS: u32 = 8; ++pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; ++pub const IORING_FEAT_FAST_POLL: u32 = 32; ++pub const IORING_FEAT_POLL_32BITS: u32 = 64; ++pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; ++pub const IORING_FEAT_EXT_ARG: u32 = 256; ++pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; ++pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; ++pub const IORING_FEAT_CQE_SKIP: u32 = 2048; ++pub const IORING_FEAT_LINKED_FILE: u32 = 4096; ++pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; ++pub const IORING_REGISTER_FILES_SKIP: i32 = -2; ++pub const IO_URING_OP_SUPPORTED: u32 = 1; ++pub const DT_UNKNOWN: u32 = 0; ++pub const DT_FIFO: u32 = 1; ++pub const DT_CHR: u32 = 2; ++pub const DT_DIR: u32 = 4; ++pub const DT_BLK: u32 = 6; ++pub const DT_REG: u32 = 8; ++pub const DT_LNK: u32 = 10; ++pub const DT_SOCK: u32 = 12; ++pub const SHUT_RD: u32 = 0; ++pub const SHUT_WR: u32 = 1; ++pub const SHUT_RDWR: u32 = 2; ++pub const STAT_HAVE_NSEC: u32 = 1; ++pub const SOCK_STREAM: u32 = 1; ++pub const SOCK_DGRAM: u32 = 2; ++pub const SOCK_RAW: u32 = 3; ++pub const SOCK_RDM: u32 = 4; ++pub const SOCK_SEQPACKET: u32 = 5; ++pub const F_OK: u32 = 0; ++pub const R_OK: u32 = 4; ++pub const W_OK: u32 = 2; ++pub const X_OK: u32 = 1; ++pub const UTIME_NOW: u32 = 1073741823; ++pub const UTIME_OMIT: u32 = 1073741822; ++pub const MSG_DONTWAIT: u32 = 64; ++pub const AF_UNSPEC: u32 = 0; ++pub const AF_UNIX: u32 = 1; ++pub const AF_INET: u32 = 2; ++pub const AF_AX25: u32 = 3; ++pub const AF_IPX: u32 = 4; ++pub const AF_APPLETALK: u32 = 5; ++pub const AF_NETROM: u32 = 6; ++pub const AF_BRIDGE: u32 = 7; ++pub const AF_ATMPVC: u32 = 8; ++pub const AF_X25: u32 = 9; ++pub const AF_INET6: u32 = 10; ++pub const AF_ROSE: u32 = 11; ++pub const AF_DECnet: u32 = 12; ++pub const AF_NETBEUI: u32 = 13; ++pub const AF_SECURITY: u32 = 14; ++pub const AF_KEY: u32 = 15; ++pub const AF_NETLINK: u32 = 16; ++pub const AF_PACKET: u32 = 17; ++pub const AF_ASH: u32 = 18; ++pub const AF_ECONET: u32 = 19; ++pub const AF_ATMSVC: u32 = 20; ++pub const AF_RDS: u32 = 21; ++pub const AF_SNA: u32 = 22; ++pub const AF_IRDA: u32 = 23; ++pub const AF_PPPOX: u32 = 24; ++pub const AF_WANPIPE: u32 = 25; ++pub const AF_LLC: u32 = 26; ++pub const AF_CAN: u32 = 29; ++pub const AF_TIPC: u32 = 30; ++pub const AF_BLUETOOTH: u32 = 31; ++pub const AF_IUCV: u32 = 32; ++pub const AF_RXRPC: u32 = 33; ++pub const AF_ISDN: u32 = 34; ++pub const AF_PHONET: u32 = 35; ++pub const AF_IEEE802154: u32 = 36; ++pub const AF_MAX: u32 = 37; ++pub const MSG_OOB: u32 = 1; ++pub const MSG_PEEK: u32 = 2; ++pub const MSG_DONTROUTE: u32 = 4; ++pub const MSG_CTRUNC: u32 = 8; ++pub const MSG_PROBE: u32 = 16; ++pub const MSG_TRUNC: u32 = 32; ++pub const MSG_EOR: u32 = 128; ++pub const MSG_WAITALL: u32 = 256; ++pub const MSG_FIN: u32 = 512; ++pub const MSG_SYN: u32 = 1024; ++pub const MSG_CONFIRM: u32 = 2048; ++pub const MSG_RST: u32 = 4096; ++pub const MSG_ERRQUEUE: u32 = 8192; ++pub const MSG_NOSIGNAL: u32 = 16384; ++pub const MSG_MORE: u32 = 32768; ++pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; ++pub const STDIN_FILENO: u32 = 0; ++pub const STDOUT_FILENO: u32 = 1; ++pub const STDERR_FILENO: u32 = 2; ++pub const RWF_HIPRI: u32 = 1; ++pub const RWF_DSYNC: u32 = 2; ++pub const RWF_SYNC: u32 = 4; ++pub const RWF_NOWAIT: u32 = 8; ++pub const RWF_APPEND: u32 = 16; ++pub const EFD_SEMAPHORE: u32 = 1; ++pub const EFD_CLOEXEC: u32 = 524288; ++pub const EFD_NONBLOCK: u32 = 2048; ++pub const EPOLLIN: u32 = 1; ++pub const EPOLLPRI: u32 = 2; ++pub const EPOLLOUT: u32 = 4; ++pub const EPOLLERR: u32 = 8; ++pub const EPOLLHUP: u32 = 16; ++pub const EPOLLNVAL: u32 = 32; ++pub const EPOLLRDNORM: u32 = 64; ++pub const EPOLLRDBAND: u32 = 128; ++pub const EPOLLWRNORM: u32 = 256; ++pub const EPOLLWRBAND: u32 = 512; ++pub const EPOLLMSG: u32 = 1024; ++pub const EPOLLRDHUP: u32 = 8192; ++pub const EPOLLEXCLUSIVE: u32 = 268435456; ++pub const EPOLLWAKEUP: u32 = 536870912; ++pub const EPOLLONESHOT: u32 = 1073741824; ++pub const EPOLLET: u32 = 2147483648; ++pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; ++pub const TFD_CREATE_FLAGS: u32 = 526336; ++pub const TFD_SETTIME_FLAGS: u32 = 1; ++pub const SCM_RIGHTS: u32 = 1; ++pub const SCM_CREDENTIALS: u32 = 2; ++pub const SCM_SECURITY: u32 = 3; ++pub const UFFD_API: u32 = 170; ++pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; ++pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; ++pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; ++pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; ++pub const UFFDIO_COPY_MODE_WP: u32 = 2; ++pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; ++pub const SPLICE_F_MOVE: u32 = 1; ++pub const SPLICE_F_NONBLOCK: u32 = 2; ++pub const SPLICE_F_MORE: u32 = 4; ++pub const SPLICE_F_GIFT: u32 = 8; ++pub const MNT_FORCE: u32 = 1; ++pub const MNT_DETACH: u32 = 2; ++pub const MNT_EXPIRE: u32 = 4; ++pub const UMOUNT_NOFOLLOW: u32 = 8; ++pub const UMOUNT_UNUSED: u32 = 2147483648; ++pub type size_t = crate::ctypes::c_ulong; ++pub type ssize_t = crate::ctypes::c_long; ++pub type __s8 = crate::ctypes::c_schar; ++pub type __u8 = crate::ctypes::c_uchar; ++pub type __s16 = crate::ctypes::c_short; ++pub type __u16 = crate::ctypes::c_ushort; ++pub type __s32 = crate::ctypes::c_int; ++pub type __u32 = crate::ctypes::c_uint; ++pub type __s64 = crate::ctypes::c_longlong; ++pub type __u64 = crate::ctypes::c_ulonglong; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_fd_set { ++pub fds_bits: [crate::ctypes::c_ulong; 16usize], ++} ++pub type __kernel_sighandler_t = ::core::option::Option; ++pub type __kernel_key_t = crate::ctypes::c_int; ++pub type __kernel_mqd_t = crate::ctypes::c_int; ++pub type __kernel_long_t = crate::ctypes::c_long; ++pub type __kernel_ulong_t = crate::ctypes::c_ulong; ++pub type __kernel_ino_t = __kernel_ulong_t; ++pub type __kernel_mode_t = crate::ctypes::c_uint; ++pub type __kernel_pid_t = crate::ctypes::c_int; ++pub type __kernel_ipc_pid_t = crate::ctypes::c_int; ++pub type __kernel_uid_t = crate::ctypes::c_uint; ++pub type __kernel_gid_t = crate::ctypes::c_uint; ++pub type __kernel_suseconds_t = __kernel_long_t; ++pub type __kernel_daddr_t = crate::ctypes::c_int; ++pub type __kernel_uid32_t = crate::ctypes::c_uint; ++pub type __kernel_gid32_t = crate::ctypes::c_uint; ++pub type __kernel_old_uid_t = __kernel_uid_t; ++pub type __kernel_old_gid_t = __kernel_gid_t; ++pub type __kernel_old_dev_t = crate::ctypes::c_uint; ++pub type __kernel_size_t = __kernel_ulong_t; ++pub type __kernel_ssize_t = __kernel_long_t; ++pub type __kernel_ptrdiff_t = __kernel_long_t; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_fsid_t { ++pub val: [crate::ctypes::c_int; 2usize], ++} ++pub type __kernel_off_t = __kernel_long_t; ++pub type __kernel_loff_t = crate::ctypes::c_longlong; ++pub type __kernel_old_time_t = __kernel_long_t; ++pub type __kernel_time_t = __kernel_long_t; ++pub type __kernel_time64_t = crate::ctypes::c_longlong; ++pub type __kernel_clock_t = __kernel_long_t; ++pub type __kernel_timer_t = crate::ctypes::c_int; ++pub type __kernel_clockid_t = crate::ctypes::c_int; ++pub type __kernel_caddr_t = *mut crate::ctypes::c_char; ++pub type __kernel_uid16_t = crate::ctypes::c_ushort; ++pub type __kernel_gid16_t = crate::ctypes::c_ushort; ++pub type __le16 = __u16; ++pub type __be16 = __u16; ++pub type __le32 = __u32; ++pub type __be32 = __u32; ++pub type __le64 = __u64; ++pub type __be64 = __u64; ++pub type __sum16 = __u16; ++pub type __wsum = __u32; ++pub type __poll_t = crate::ctypes::c_uint; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __user_cap_header_struct { ++pub version: __u32, ++pub pid: crate::ctypes::c_int, ++} ++pub type cap_user_header_t = *mut __user_cap_header_struct; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __user_cap_data_struct { ++pub effective: __u32, ++pub permitted: __u32, ++pub inheritable: __u32, ++} ++pub type cap_user_data_t = *mut __user_cap_data_struct; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct vfs_cap_data { ++pub magic_etc: __le32, ++pub data: [vfs_cap_data__bindgen_ty_1; 2usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct vfs_cap_data__bindgen_ty_1 { ++pub permitted: __le32, ++pub inheritable: __le32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct vfs_ns_cap_data { ++pub magic_etc: __le32, ++pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], ++pub rootid: __le32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct vfs_ns_cap_data__bindgen_ty_1 { ++pub permitted: __le32, ++pub inheritable: __le32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct f_owner_ex { ++pub type_: crate::ctypes::c_int, ++pub pid: __kernel_pid_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct flock { ++pub l_type: crate::ctypes::c_short, ++pub l_whence: crate::ctypes::c_short, ++pub l_start: __kernel_off_t, ++pub l_len: __kernel_off_t, ++pub l_pid: __kernel_pid_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct flock64 { ++pub l_type: crate::ctypes::c_short, ++pub l_whence: crate::ctypes::c_short, ++pub l_start: __kernel_loff_t, ++pub l_len: __kernel_loff_t, ++pub l_pid: __kernel_pid_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct open_how { ++pub flags: __u64, ++pub mode: __u64, ++pub resolve: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct epoll_event { ++pub events: __poll_t, ++pub data: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fscrypt_policy_v1 { ++pub version: __u8, ++pub contents_encryption_mode: __u8, ++pub filenames_encryption_mode: __u8, ++pub flags: __u8, ++pub master_key_descriptor: [__u8; 8usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fscrypt_key { ++pub mode: __u32, ++pub raw: [__u8; 64usize], ++pub size: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fscrypt_policy_v2 { ++pub version: __u8, ++pub contents_encryption_mode: __u8, ++pub filenames_encryption_mode: __u8, ++pub flags: __u8, ++pub __reserved: [__u8; 4usize], ++pub master_key_identifier: [__u8; 16usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct fscrypt_get_policy_ex_arg { ++pub policy_size: __u64, ++pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { ++pub version: __u8, ++pub v1: fscrypt_policy_v1, ++pub v2: fscrypt_policy_v2, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct fscrypt_key_specifier { ++pub type_: __u32, ++pub __reserved: __u32, ++pub u: fscrypt_key_specifier__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union fscrypt_key_specifier__bindgen_ty_1 { ++pub __reserved: [__u8; 32usize], ++pub descriptor: [__u8; 8usize], ++pub identifier: [__u8; 16usize], ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct fscrypt_provisioning_key_payload { ++pub type_: __u32, ++pub __reserved: __u32, ++pub raw: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++pub struct fscrypt_add_key_arg { ++pub key_spec: fscrypt_key_specifier, ++pub raw_size: __u32, ++pub key_id: __u32, ++pub __reserved: [__u32; 8usize], ++pub raw: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct fscrypt_remove_key_arg { ++pub key_spec: fscrypt_key_specifier, ++pub removal_status_flags: __u32, ++pub __reserved: [__u32; 5usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct fscrypt_get_key_status_arg { ++pub key_spec: fscrypt_key_specifier, ++pub __reserved: [__u32; 6usize], ++pub status: __u32, ++pub status_flags: __u32, ++pub user_count: __u32, ++pub __out_reserved: [__u32; 13usize], ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum fsconfig_command { ++FSCONFIG_SET_FLAG = 0, ++FSCONFIG_SET_STRING = 1, ++FSCONFIG_SET_BINARY = 2, ++FSCONFIG_SET_PATH = 3, ++FSCONFIG_SET_PATH_EMPTY = 4, ++FSCONFIG_SET_FD = 5, ++FSCONFIG_CMD_CREATE = 6, ++FSCONFIG_CMD_RECONFIGURE = 7, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct mount_attr { ++pub attr_set: __u64, ++pub attr_clr: __u64, ++pub propagation: __u64, ++pub userns_fd: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct file_clone_range { ++pub src_fd: __s64, ++pub src_offset: __u64, ++pub src_length: __u64, ++pub dest_offset: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fstrim_range { ++pub start: __u64, ++pub len: __u64, ++pub minlen: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct file_dedupe_range_info { ++pub dest_fd: __s64, ++pub dest_offset: __u64, ++pub bytes_deduped: __u64, ++pub status: __s32, ++pub reserved: __u32, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct file_dedupe_range { ++pub src_offset: __u64, ++pub src_length: __u64, ++pub dest_count: __u16, ++pub reserved1: __u16, ++pub reserved2: __u32, ++pub info: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct files_stat_struct { ++pub nr_files: crate::ctypes::c_ulong, ++pub nr_free_files: crate::ctypes::c_ulong, ++pub max_files: crate::ctypes::c_ulong, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct inodes_stat_t { ++pub nr_inodes: crate::ctypes::c_long, ++pub nr_unused: crate::ctypes::c_long, ++pub dummy: [crate::ctypes::c_long; 5usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fsxattr { ++pub fsx_xflags: __u32, ++pub fsx_extsize: __u32, ++pub fsx_nextents: __u32, ++pub fsx_projid: __u32, ++pub fsx_cowextsize: __u32, ++pub fsx_pad: [crate::ctypes::c_uchar; 8usize], ++} ++pub type __kernel_rwf_t = crate::ctypes::c_int; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct futex_waitv { ++pub val: __u64, ++pub uaddr: __u64, ++pub flags: __u32, ++pub __reserved: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct robust_list { ++pub next: *mut robust_list, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct robust_list_head { ++pub list: robust_list, ++pub futex_offset: crate::ctypes::c_long, ++pub list_op_pending: *mut robust_list, ++} ++pub type __kernel_sa_family_t = crate::ctypes::c_ushort; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __kernel_sockaddr_storage { ++pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union __kernel_sockaddr_storage__bindgen_ty_1 { ++pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, ++pub __align: *mut crate::ctypes::c_void, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { ++pub ss_family: __kernel_sa_family_t, ++pub __data: [crate::ctypes::c_char; 126usize], ++} ++pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; ++pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; ++pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; ++pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; ++pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; ++pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; ++pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; ++pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; ++pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; ++pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; ++pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; ++pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; ++pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; ++pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; ++pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; ++pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; ++pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; ++pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; ++pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; ++pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; ++pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; ++pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; ++pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; ++pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; ++pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; ++pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; ++pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; ++pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; ++pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_1 { ++IPPROTO_IP = 0, ++IPPROTO_ICMP = 1, ++IPPROTO_IGMP = 2, ++IPPROTO_IPIP = 4, ++IPPROTO_TCP = 6, ++IPPROTO_EGP = 8, ++IPPROTO_PUP = 12, ++IPPROTO_UDP = 17, ++IPPROTO_IDP = 22, ++IPPROTO_TP = 29, ++IPPROTO_DCCP = 33, ++IPPROTO_IPV6 = 41, ++IPPROTO_RSVP = 46, ++IPPROTO_GRE = 47, ++IPPROTO_ESP = 50, ++IPPROTO_AH = 51, ++IPPROTO_MTP = 92, ++IPPROTO_BEETPH = 94, ++IPPROTO_ENCAP = 98, ++IPPROTO_PIM = 103, ++IPPROTO_COMP = 108, ++IPPROTO_L2TP = 115, ++IPPROTO_SCTP = 132, ++IPPROTO_UDPLITE = 136, ++IPPROTO_MPLS = 137, ++IPPROTO_ETHERNET = 143, ++IPPROTO_RAW = 255, ++IPPROTO_MPTCP = 262, ++IPPROTO_MAX = 263, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct in_addr { ++pub s_addr: __be32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_mreq { ++pub imr_multiaddr: in_addr, ++pub imr_interface: in_addr, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_mreqn { ++pub imr_multiaddr: in_addr, ++pub imr_address: in_addr, ++pub imr_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_mreq_source { ++pub imr_multiaddr: __be32, ++pub imr_interface: __be32, ++pub imr_sourceaddr: __be32, ++} ++#[repr(C)] ++pub struct ip_msfilter { ++pub imsf_multiaddr: __be32, ++pub imsf_interface: __be32, ++pub imsf_fmode: __u32, ++pub imsf_numsrc: __u32, ++pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, ++} ++#[repr(C)] ++pub struct ip_msfilter__bindgen_ty_1 { ++pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, ++pub __bindgen_anon_1: __BindgenUnionField, ++pub bindgen_union_field: u32, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { ++pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, ++pub imsf_slist_flex: __IncompleteArrayField<__be32>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct group_req { ++pub gr_interface: __u32, ++pub gr_group: __kernel_sockaddr_storage, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct group_source_req { ++pub gsr_interface: __u32, ++pub gsr_group: __kernel_sockaddr_storage, ++pub gsr_source: __kernel_sockaddr_storage, ++} ++#[repr(C)] ++pub struct group_filter { ++pub __bindgen_anon_1: group_filter__bindgen_ty_1, ++} ++#[repr(C)] ++pub struct group_filter__bindgen_ty_1 { ++pub __bindgen_anon_1: __BindgenUnionField, ++pub __bindgen_anon_2: __BindgenUnionField, ++pub bindgen_union_field: [u64; 34usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { ++pub gf_interface_aux: __u32, ++pub gf_group_aux: __kernel_sockaddr_storage, ++pub gf_fmode_aux: __u32, ++pub gf_numsrc_aux: __u32, ++pub gf_slist: [__kernel_sockaddr_storage; 1usize], ++} ++#[repr(C)] ++pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { ++pub gf_interface: __u32, ++pub gf_group: __kernel_sockaddr_storage, ++pub gf_fmode: __u32, ++pub gf_numsrc: __u32, ++pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct in_pktinfo { ++pub ipi_ifindex: crate::ctypes::c_int, ++pub ipi_spec_dst: in_addr, ++pub ipi_addr: in_addr, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sockaddr_in { ++pub sin_family: __kernel_sa_family_t, ++pub sin_port: __be16, ++pub sin_addr: in_addr, ++pub __pad: [crate::ctypes::c_uchar; 8usize], ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct inotify_event { ++pub wd: __s32, ++pub mask: __u32, ++pub cookie: __u32, ++pub len: __u32, ++pub name: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct iphdr { ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, ++pub tos: __u8, ++pub tot_len: __be16, ++pub id: __be16, ++pub frag_off: __be16, ++pub ttl: __u8, ++pub protocol: __u8, ++pub check: __sum16, ++pub __bindgen_anon_1: iphdr__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union iphdr__bindgen_ty_1 { ++pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, ++pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { ++pub saddr: __be32, ++pub daddr: __be32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { ++pub saddr: __be32, ++pub daddr: __be32, ++} ++impl iphdr { ++#[inline] ++pub fn ihl(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_ihl(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn version(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_version(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 4u8, { ++let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; ++ihl as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 4u8, { ++let version: u8 = unsafe { ::core::mem::transmute(version) }; ++version as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct ip_auth_hdr { ++pub nexthdr: __u8, ++pub hdrlen: __u8, ++pub reserved: __be16, ++pub spi: __be32, ++pub seq_no: __be32, ++pub auth_data: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct ip_esp_hdr { ++pub spi: __be32, ++pub seq_no: __be32, ++pub enc_data: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_comp_hdr { ++pub nexthdr: __u8, ++pub flags: __u8, ++pub cpi: __be16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_beet_phdr { ++pub nexthdr: __u8, ++pub hdrlen: __u8, ++pub padlen: __u8, ++pub reserved: __u8, ++} ++pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; ++pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; ++pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; ++pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; ++pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; ++pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; ++pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; ++pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; ++pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; ++pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; ++pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; ++pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; ++pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; ++pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; ++pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; ++pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; ++pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; ++pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; ++pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; ++pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; ++pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; ++pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; ++pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; ++pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; ++pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; ++pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; ++pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; ++pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; ++pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; ++pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; ++pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; ++pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; ++pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; ++pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_2 { ++IPV4_DEVCONF_FORWARDING = 1, ++IPV4_DEVCONF_MC_FORWARDING = 2, ++IPV4_DEVCONF_PROXY_ARP = 3, ++IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, ++IPV4_DEVCONF_SECURE_REDIRECTS = 5, ++IPV4_DEVCONF_SEND_REDIRECTS = 6, ++IPV4_DEVCONF_SHARED_MEDIA = 7, ++IPV4_DEVCONF_RP_FILTER = 8, ++IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, ++IPV4_DEVCONF_BOOTP_RELAY = 10, ++IPV4_DEVCONF_LOG_MARTIANS = 11, ++IPV4_DEVCONF_TAG = 12, ++IPV4_DEVCONF_ARPFILTER = 13, ++IPV4_DEVCONF_MEDIUM_ID = 14, ++IPV4_DEVCONF_NOXFRM = 15, ++IPV4_DEVCONF_NOPOLICY = 16, ++IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, ++IPV4_DEVCONF_ARP_ANNOUNCE = 18, ++IPV4_DEVCONF_ARP_IGNORE = 19, ++IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, ++IPV4_DEVCONF_ARP_ACCEPT = 21, ++IPV4_DEVCONF_ARP_NOTIFY = 22, ++IPV4_DEVCONF_ACCEPT_LOCAL = 23, ++IPV4_DEVCONF_SRC_VMARK = 24, ++IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, ++IPV4_DEVCONF_ROUTE_LOCALNET = 26, ++IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, ++IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, ++IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, ++IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, ++IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, ++IPV4_DEVCONF_BC_FORWARDING = 32, ++IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, ++__IPV4_DEVCONF_MAX = 34, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct in6_addr { ++pub in6_u: in6_addr__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union in6_addr__bindgen_ty_1 { ++pub u6_addr8: [__u8; 16usize], ++pub u6_addr16: [__be16; 8usize], ++pub u6_addr32: [__be32; 4usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct sockaddr_in6 { ++pub sin6_family: crate::ctypes::c_ushort, ++pub sin6_port: __be16, ++pub sin6_flowinfo: __be32, ++pub sin6_addr: in6_addr, ++pub sin6_scope_id: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ipv6_mreq { ++pub ipv6mr_multiaddr: in6_addr, ++pub ipv6mr_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct in6_flowlabel_req { ++pub flr_dst: in6_addr, ++pub flr_label: __be32, ++pub flr_action: __u8, ++pub flr_share: __u8, ++pub flr_flags: __u16, ++pub flr_expires: __u16, ++pub flr_linger: __u16, ++pub __flr_pad: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct in6_pktinfo { ++pub ipi6_addr: in6_addr, ++pub ipi6_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ip6_mtuinfo { ++pub ip6m_addr: sockaddr_in6, ++pub ip6m_mtu: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct in6_ifreq { ++pub ifr6_addr: in6_addr, ++pub ifr6_prefixlen: __u32, ++pub ifr6_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ipv6_rt_hdr { ++pub nexthdr: __u8, ++pub hdrlen: __u8, ++pub type_: __u8, ++pub segments_left: __u8, ++} ++#[repr(C, packed)] ++#[derive(Debug, Copy, Clone)] ++pub struct ipv6_opt_hdr { ++pub nexthdr: __u8, ++pub hdrlen: __u8, ++} ++#[repr(C)] ++pub struct rt0_hdr { ++pub rt_hdr: ipv6_rt_hdr, ++pub reserved: __u32, ++pub addr: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct rt2_hdr { ++pub rt_hdr: ipv6_rt_hdr, ++pub reserved: __u32, ++pub addr: in6_addr, ++} ++#[repr(C, packed)] ++#[derive(Copy, Clone)] ++pub struct ipv6_destopt_hao { ++pub type_: __u8, ++pub length: __u8, ++pub addr: in6_addr, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ipv6hdr { ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, ++pub flow_lbl: [__u8; 3usize], ++pub payload_len: __be16, ++pub nexthdr: __u8, ++pub hop_limit: __u8, ++pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union ipv6hdr__bindgen_ty_1 { ++pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, ++pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { ++pub saddr: in6_addr, ++pub daddr: in6_addr, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { ++pub saddr: in6_addr, ++pub daddr: in6_addr, ++} ++impl ipv6hdr { ++#[inline] ++pub fn priority(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_priority(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn version(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_version(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 4u8, { ++let priority: u8 = unsafe { ::core::mem::transmute(priority) }; ++priority as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 4u8, { ++let version: u8 = unsafe { ::core::mem::transmute(version) }; ++version as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; ++pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; ++pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; ++pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; ++pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; ++pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; ++pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; ++pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; ++pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; ++pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; ++pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; ++pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; ++pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; ++pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; ++pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; ++pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; ++pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; ++pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; ++pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; ++pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; ++pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; ++pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; ++pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; ++pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; ++pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; ++pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; ++pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; ++pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; ++pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; ++pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; ++pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; ++pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; ++pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; ++pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; ++pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; ++pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; ++pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; ++pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; ++pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; ++pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; ++pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; ++pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; ++pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; ++pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; ++pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; ++pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; ++pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; ++pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; ++pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; ++pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; ++pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; ++pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; ++pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; ++pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; ++pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; ++pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; ++pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; ++pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; ++pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_3 { ++DEVCONF_FORWARDING = 0, ++DEVCONF_HOPLIMIT = 1, ++DEVCONF_MTU6 = 2, ++DEVCONF_ACCEPT_RA = 3, ++DEVCONF_ACCEPT_REDIRECTS = 4, ++DEVCONF_AUTOCONF = 5, ++DEVCONF_DAD_TRANSMITS = 6, ++DEVCONF_RTR_SOLICITS = 7, ++DEVCONF_RTR_SOLICIT_INTERVAL = 8, ++DEVCONF_RTR_SOLICIT_DELAY = 9, ++DEVCONF_USE_TEMPADDR = 10, ++DEVCONF_TEMP_VALID_LFT = 11, ++DEVCONF_TEMP_PREFERED_LFT = 12, ++DEVCONF_REGEN_MAX_RETRY = 13, ++DEVCONF_MAX_DESYNC_FACTOR = 14, ++DEVCONF_MAX_ADDRESSES = 15, ++DEVCONF_FORCE_MLD_VERSION = 16, ++DEVCONF_ACCEPT_RA_DEFRTR = 17, ++DEVCONF_ACCEPT_RA_PINFO = 18, ++DEVCONF_ACCEPT_RA_RTR_PREF = 19, ++DEVCONF_RTR_PROBE_INTERVAL = 20, ++DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, ++DEVCONF_PROXY_NDP = 22, ++DEVCONF_OPTIMISTIC_DAD = 23, ++DEVCONF_ACCEPT_SOURCE_ROUTE = 24, ++DEVCONF_MC_FORWARDING = 25, ++DEVCONF_DISABLE_IPV6 = 26, ++DEVCONF_ACCEPT_DAD = 27, ++DEVCONF_FORCE_TLLAO = 28, ++DEVCONF_NDISC_NOTIFY = 29, ++DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, ++DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, ++DEVCONF_SUPPRESS_FRAG_NDISC = 32, ++DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, ++DEVCONF_USE_OPTIMISTIC = 34, ++DEVCONF_ACCEPT_RA_MTU = 35, ++DEVCONF_STABLE_SECRET = 36, ++DEVCONF_USE_OIF_ADDRS_ONLY = 37, ++DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, ++DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, ++DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, ++DEVCONF_DROP_UNSOLICITED_NA = 41, ++DEVCONF_KEEP_ADDR_ON_DOWN = 42, ++DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, ++DEVCONF_SEG6_ENABLED = 44, ++DEVCONF_SEG6_REQUIRE_HMAC = 45, ++DEVCONF_ENHANCED_DAD = 46, ++DEVCONF_ADDR_GEN_MODE = 47, ++DEVCONF_DISABLE_POLICY = 48, ++DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, ++DEVCONF_NDISC_TCLASS = 50, ++DEVCONF_RPL_SEG_ENABLED = 51, ++DEVCONF_RA_DEFRTR_METRIC = 52, ++DEVCONF_IOAM6_ENABLED = 53, ++DEVCONF_IOAM6_ID = 54, ++DEVCONF_IOAM6_ID_WIDE = 55, ++DEVCONF_NDISC_EVICT_NOCARRIER = 56, ++DEVCONF_ACCEPT_UNTRACKED_NA = 57, ++DEVCONF_MAX = 58, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum socket_state { ++SS_FREE = 0, ++SS_UNCONNECTED = 1, ++SS_CONNECTING = 2, ++SS_CONNECTED = 3, ++SS_DISCONNECTING = 4, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct pollfd { ++pub fd: crate::ctypes::c_int, ++pub events: crate::ctypes::c_short, ++pub revents: crate::ctypes::c_short, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct prctl_mm_map { ++pub start_code: __u64, ++pub end_code: __u64, ++pub start_data: __u64, ++pub end_data: __u64, ++pub start_brk: __u64, ++pub brk: __u64, ++pub start_stack: __u64, ++pub arg_start: __u64, ++pub arg_end: __u64, ++pub env_start: __u64, ++pub env_end: __u64, ++pub auxv: *mut __u64, ++pub auxv_size: __u32, ++pub exe_fd: __u32, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct rand_pool_info { ++pub entropy_count: crate::ctypes::c_int, ++pub buf_size: crate::ctypes::c_int, ++pub buf: __IncompleteArrayField<__u32>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_timespec { ++pub tv_sec: __kernel_time64_t, ++pub tv_nsec: crate::ctypes::c_longlong, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_itimerspec { ++pub it_interval: __kernel_timespec, ++pub it_value: __kernel_timespec, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_old_timeval { ++pub tv_sec: __kernel_long_t, ++pub tv_usec: __kernel_long_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_old_timespec { ++pub tv_sec: __kernel_old_time_t, ++pub tv_nsec: crate::ctypes::c_long, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_old_itimerval { ++pub it_interval: __kernel_old_timeval, ++pub it_value: __kernel_old_timeval, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_sock_timeval { ++pub tv_sec: __s64, ++pub tv_usec: __s64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct timespec { ++pub tv_sec: __kernel_old_time_t, ++pub tv_nsec: crate::ctypes::c_long, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct timeval { ++pub tv_sec: __kernel_old_time_t, ++pub tv_usec: __kernel_suseconds_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct itimerspec { ++pub it_interval: timespec, ++pub it_value: timespec, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct itimerval { ++pub it_interval: timeval, ++pub it_value: timeval, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct timezone { ++pub tz_minuteswest: crate::ctypes::c_int, ++pub tz_dsttime: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rusage { ++pub ru_utime: __kernel_old_timeval, ++pub ru_stime: __kernel_old_timeval, ++pub ru_maxrss: __kernel_long_t, ++pub ru_ixrss: __kernel_long_t, ++pub ru_idrss: __kernel_long_t, ++pub ru_isrss: __kernel_long_t, ++pub ru_minflt: __kernel_long_t, ++pub ru_majflt: __kernel_long_t, ++pub ru_nswap: __kernel_long_t, ++pub ru_inblock: __kernel_long_t, ++pub ru_oublock: __kernel_long_t, ++pub ru_msgsnd: __kernel_long_t, ++pub ru_msgrcv: __kernel_long_t, ++pub ru_nsignals: __kernel_long_t, ++pub ru_nvcsw: __kernel_long_t, ++pub ru_nivcsw: __kernel_long_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rlimit { ++pub rlim_cur: __kernel_ulong_t, ++pub rlim_max: __kernel_ulong_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rlimit64 { ++pub rlim_cur: __u64, ++pub rlim_max: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct clone_args { ++pub flags: __u64, ++pub pidfd: __u64, ++pub child_tid: __u64, ++pub parent_tid: __u64, ++pub exit_signal: __u64, ++pub stack: __u64, ++pub stack_size: __u64, ++pub tls: __u64, ++pub set_tid: __u64, ++pub set_tid_size: __u64, ++pub cgroup: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sigset_t { ++pub sig: [crate::ctypes::c_ulong; 1usize], ++} ++pub type old_sigset_t = crate::ctypes::c_ulong; ++pub type __signalfn_t = ::core::option::Option; ++pub type __sighandler_t = __signalfn_t; ++pub type __restorefn_t = ::core::option::Option; ++pub type __sigrestore_t = __restorefn_t; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sigaction { ++pub sa_handler: __sighandler_t, ++pub sa_flags: crate::ctypes::c_ulong, ++pub sa_mask: sigset_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sigaltstack { ++pub ss_sp: *mut crate::ctypes::c_void, ++pub ss_flags: crate::ctypes::c_int, ++pub ss_size: __kernel_size_t, ++} ++pub type stack_t = sigaltstack; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union sigval { ++pub sival_int: crate::ctypes::c_int, ++pub sival_ptr: *mut crate::ctypes::c_void, ++} ++pub type sigval_t = sigval; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union __sifields { ++pub _kill: __sifields__bindgen_ty_1, ++pub _timer: __sifields__bindgen_ty_2, ++pub _rt: __sifields__bindgen_ty_3, ++pub _sigchld: __sifields__bindgen_ty_4, ++pub _sigfault: __sifields__bindgen_ty_5, ++pub _sigpoll: __sifields__bindgen_ty_6, ++pub _sigsys: __sifields__bindgen_ty_7, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_1 { ++pub _pid: __kernel_pid_t, ++pub _uid: __kernel_uid32_t, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __sifields__bindgen_ty_2 { ++pub _tid: __kernel_timer_t, ++pub _overrun: crate::ctypes::c_int, ++pub _sigval: sigval_t, ++pub _sys_private: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __sifields__bindgen_ty_3 { ++pub _pid: __kernel_pid_t, ++pub _uid: __kernel_uid32_t, ++pub _sigval: sigval_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_4 { ++pub _pid: __kernel_pid_t, ++pub _uid: __kernel_uid32_t, ++pub _status: crate::ctypes::c_int, ++pub _utime: __kernel_clock_t, ++pub _stime: __kernel_clock_t, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __sifields__bindgen_ty_5 { ++pub _addr: *mut crate::ctypes::c_void, ++pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union __sifields__bindgen_ty_5__bindgen_ty_1 { ++pub _trapno: crate::ctypes::c_int, ++pub _addr_lsb: crate::ctypes::c_short, ++pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, ++pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, ++pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { ++pub _dummy_bnd: [crate::ctypes::c_char; 8usize], ++pub _lower: *mut crate::ctypes::c_void, ++pub _upper: *mut crate::ctypes::c_void, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { ++pub _dummy_pkey: [crate::ctypes::c_char; 8usize], ++pub _pkey: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { ++pub _data: crate::ctypes::c_ulong, ++pub _type: __u32, ++pub _flags: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_6 { ++pub _band: crate::ctypes::c_long, ++pub _fd: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_7 { ++pub _call_addr: *mut crate::ctypes::c_void, ++pub _syscall: crate::ctypes::c_int, ++pub _arch: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct siginfo { ++pub __bindgen_anon_1: siginfo__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union siginfo__bindgen_ty_1 { ++pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, ++pub _si_pad: [crate::ctypes::c_int; 32usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { ++pub si_signo: crate::ctypes::c_int, ++pub si_errno: crate::ctypes::c_int, ++pub si_code: crate::ctypes::c_int, ++pub _sifields: __sifields, ++} ++pub type siginfo_t = siginfo; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct sigevent { ++pub sigev_value: sigval_t, ++pub sigev_signo: crate::ctypes::c_int, ++pub sigev_notify: crate::ctypes::c_int, ++pub _sigev_un: sigevent__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union sigevent__bindgen_ty_1 { ++pub _pad: [crate::ctypes::c_int; 12usize], ++pub _tid: crate::ctypes::c_int, ++pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { ++pub _function: ::core::option::Option, ++pub _attribute: *mut crate::ctypes::c_void, ++} ++pub type sigevent_t = sigevent; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct statx_timestamp { ++pub tv_sec: __s64, ++pub tv_nsec: __u32, ++pub __reserved: __s32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct statx { ++pub stx_mask: __u32, ++pub stx_blksize: __u32, ++pub stx_attributes: __u64, ++pub stx_nlink: __u32, ++pub stx_uid: __u32, ++pub stx_gid: __u32, ++pub stx_mode: __u16, ++pub __spare0: [__u16; 1usize], ++pub stx_ino: __u64, ++pub stx_size: __u64, ++pub stx_blocks: __u64, ++pub stx_attributes_mask: __u64, ++pub stx_atime: statx_timestamp, ++pub stx_btime: statx_timestamp, ++pub stx_ctime: statx_timestamp, ++pub stx_mtime: statx_timestamp, ++pub stx_rdev_major: __u32, ++pub stx_rdev_minor: __u32, ++pub stx_dev_major: __u32, ++pub stx_dev_minor: __u32, ++pub stx_mnt_id: __u64, ++pub stx_dio_mem_align: __u32, ++pub stx_dio_offset_align: __u32, ++pub __spare3: [__u64; 12usize], ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct sysinfo { ++pub uptime: __kernel_long_t, ++pub loads: [__kernel_ulong_t; 3usize], ++pub totalram: __kernel_ulong_t, ++pub freeram: __kernel_ulong_t, ++pub sharedram: __kernel_ulong_t, ++pub bufferram: __kernel_ulong_t, ++pub totalswap: __kernel_ulong_t, ++pub freeswap: __kernel_ulong_t, ++pub procs: __u16, ++pub pad: __u16, ++pub totalhigh: __kernel_ulong_t, ++pub freehigh: __kernel_ulong_t, ++pub mem_unit: __u32, ++pub _f: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcphdr { ++pub source: __be16, ++pub dest: __be16, ++pub seq: __be32, ++pub ack_seq: __be32, ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, ++pub window: __be16, ++pub check: __sum16, ++pub urg_ptr: __be16, ++} ++impl tcphdr { ++#[inline] ++pub fn res1(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } ++} ++#[inline] ++pub fn set_res1(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn doff(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } ++} ++#[inline] ++pub fn set_doff(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn fin(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_fin(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(8usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn syn(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_syn(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(9usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn rst(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_rst(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(10usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn psh(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_psh(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(11usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn ack(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_ack(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(12usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn urg(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_urg(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(13usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn ece(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_ece(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(14usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn cwr(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_cwr(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(15usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 4u8, { ++let res1: u16 = unsafe { ::core::mem::transmute(res1) }; ++res1 as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 4u8, { ++let doff: u16 = unsafe { ::core::mem::transmute(doff) }; ++doff as u64 ++}); ++__bindgen_bitfield_unit.set(8usize, 1u8, { ++let fin: u16 = unsafe { ::core::mem::transmute(fin) }; ++fin as u64 ++}); ++__bindgen_bitfield_unit.set(9usize, 1u8, { ++let syn: u16 = unsafe { ::core::mem::transmute(syn) }; ++syn as u64 ++}); ++__bindgen_bitfield_unit.set(10usize, 1u8, { ++let rst: u16 = unsafe { ::core::mem::transmute(rst) }; ++rst as u64 ++}); ++__bindgen_bitfield_unit.set(11usize, 1u8, { ++let psh: u16 = unsafe { ::core::mem::transmute(psh) }; ++psh as u64 ++}); ++__bindgen_bitfield_unit.set(12usize, 1u8, { ++let ack: u16 = unsafe { ::core::mem::transmute(ack) }; ++ack as u64 ++}); ++__bindgen_bitfield_unit.set(13usize, 1u8, { ++let urg: u16 = unsafe { ::core::mem::transmute(urg) }; ++urg as u64 ++}); ++__bindgen_bitfield_unit.set(14usize, 1u8, { ++let ece: u16 = unsafe { ::core::mem::transmute(ece) }; ++ece as u64 ++}); ++__bindgen_bitfield_unit.set(15usize, 1u8, { ++let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; ++cwr as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union tcp_word_hdr { ++pub hdr: tcphdr, ++pub words: [__be32; 5usize], ++} ++pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; ++pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; ++pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; ++pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; ++pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; ++pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; ++pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; ++pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; ++pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; ++pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_4 { ++TCP_FLAG_CWR = 32768, ++TCP_FLAG_ECE = 16384, ++TCP_FLAG_URG = 8192, ++TCP_FLAG_ACK = 4096, ++TCP_FLAG_PSH = 2048, ++TCP_FLAG_RST = 1024, ++TCP_FLAG_SYN = 512, ++TCP_FLAG_FIN = 256, ++TCP_RESERVED_BITS = 15, ++TCP_DATA_OFFSET = 240, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_repair_opt { ++pub opt_code: __u32, ++pub opt_val: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_repair_window { ++pub snd_wl1: __u32, ++pub snd_wnd: __u32, ++pub max_window: __u32, ++pub rcv_wnd: __u32, ++pub rcv_wup: __u32, ++} ++pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; ++pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; ++pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; ++pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_5 { ++TCP_NO_QUEUE = 0, ++TCP_RECV_QUEUE = 1, ++TCP_SEND_QUEUE = 2, ++TCP_QUEUES_NR = 3, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum tcp_fastopen_client_fail { ++TFO_STATUS_UNSPEC = 0, ++TFO_COOKIE_UNAVAILABLE = 1, ++TFO_DATA_NOT_ACKED = 2, ++TFO_SYN_RETRANSMITTED = 3, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum tcp_ca_state { ++TCP_CA_Open = 0, ++TCP_CA_Disorder = 1, ++TCP_CA_CWR = 2, ++TCP_CA_Recovery = 3, ++TCP_CA_Loss = 4, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_info { ++pub tcpi_state: __u8, ++pub tcpi_ca_state: __u8, ++pub tcpi_retransmits: __u8, ++pub tcpi_probes: __u8, ++pub tcpi_backoff: __u8, ++pub tcpi_options: __u8, ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, ++pub tcpi_rto: __u32, ++pub tcpi_ato: __u32, ++pub tcpi_snd_mss: __u32, ++pub tcpi_rcv_mss: __u32, ++pub tcpi_unacked: __u32, ++pub tcpi_sacked: __u32, ++pub tcpi_lost: __u32, ++pub tcpi_retrans: __u32, ++pub tcpi_fackets: __u32, ++pub tcpi_last_data_sent: __u32, ++pub tcpi_last_ack_sent: __u32, ++pub tcpi_last_data_recv: __u32, ++pub tcpi_last_ack_recv: __u32, ++pub tcpi_pmtu: __u32, ++pub tcpi_rcv_ssthresh: __u32, ++pub tcpi_rtt: __u32, ++pub tcpi_rttvar: __u32, ++pub tcpi_snd_ssthresh: __u32, ++pub tcpi_snd_cwnd: __u32, ++pub tcpi_advmss: __u32, ++pub tcpi_reordering: __u32, ++pub tcpi_rcv_rtt: __u32, ++pub tcpi_rcv_space: __u32, ++pub tcpi_total_retrans: __u32, ++pub tcpi_pacing_rate: __u64, ++pub tcpi_max_pacing_rate: __u64, ++pub tcpi_bytes_acked: __u64, ++pub tcpi_bytes_received: __u64, ++pub tcpi_segs_out: __u32, ++pub tcpi_segs_in: __u32, ++pub tcpi_notsent_bytes: __u32, ++pub tcpi_min_rtt: __u32, ++pub tcpi_data_segs_in: __u32, ++pub tcpi_data_segs_out: __u32, ++pub tcpi_delivery_rate: __u64, ++pub tcpi_busy_time: __u64, ++pub tcpi_rwnd_limited: __u64, ++pub tcpi_sndbuf_limited: __u64, ++pub tcpi_delivered: __u32, ++pub tcpi_delivered_ce: __u32, ++pub tcpi_bytes_sent: __u64, ++pub tcpi_bytes_retrans: __u64, ++pub tcpi_dsack_dups: __u32, ++pub tcpi_reord_seen: __u32, ++pub tcpi_rcv_ooopack: __u32, ++pub tcpi_snd_wnd: __u32, ++pub tcpi_rcv_wnd: __u32, ++pub tcpi_rehash: __u32, ++} ++impl tcp_info { ++#[inline] ++pub fn tcpi_snd_wscale(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn tcpi_rcv_wscale(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } ++} ++#[inline] ++pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(8usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn tcpi_fastopen_client_fail(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } ++} ++#[inline] ++pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(9usize, 2u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 4u8, { ++let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; ++tcpi_snd_wscale as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 4u8, { ++let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; ++tcpi_rcv_wscale as u64 ++}); ++__bindgen_bitfield_unit.set(8usize, 1u8, { ++let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; ++tcpi_delivery_rate_app_limited as u64 ++}); ++__bindgen_bitfield_unit.set(9usize, 2u8, { ++let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; ++tcpi_fastopen_client_fail as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; ++pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; ++pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; ++pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; ++pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; ++pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; ++pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; ++pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; ++pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; ++pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; ++pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; ++pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; ++pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; ++pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; ++pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; ++pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; ++pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; ++pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; ++pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; ++pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; ++pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; ++pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; ++pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; ++pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; ++pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; ++pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; ++pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; ++pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_6 { ++TCP_NLA_PAD = 0, ++TCP_NLA_BUSY = 1, ++TCP_NLA_RWND_LIMITED = 2, ++TCP_NLA_SNDBUF_LIMITED = 3, ++TCP_NLA_DATA_SEGS_OUT = 4, ++TCP_NLA_TOTAL_RETRANS = 5, ++TCP_NLA_PACING_RATE = 6, ++TCP_NLA_DELIVERY_RATE = 7, ++TCP_NLA_SND_CWND = 8, ++TCP_NLA_REORDERING = 9, ++TCP_NLA_MIN_RTT = 10, ++TCP_NLA_RECUR_RETRANS = 11, ++TCP_NLA_DELIVERY_RATE_APP_LMT = 12, ++TCP_NLA_SNDQ_SIZE = 13, ++TCP_NLA_CA_STATE = 14, ++TCP_NLA_SND_SSTHRESH = 15, ++TCP_NLA_DELIVERED = 16, ++TCP_NLA_DELIVERED_CE = 17, ++TCP_NLA_BYTES_SENT = 18, ++TCP_NLA_BYTES_RETRANS = 19, ++TCP_NLA_DSACK_DUPS = 20, ++TCP_NLA_REORD_SEEN = 21, ++TCP_NLA_SRTT = 22, ++TCP_NLA_TIMEOUT_REHASH = 23, ++TCP_NLA_BYTES_NOTSENT = 24, ++TCP_NLA_EDT = 25, ++TCP_NLA_TTL = 26, ++TCP_NLA_REHASH = 27, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct tcp_md5sig { ++pub tcpm_addr: __kernel_sockaddr_storage, ++pub tcpm_flags: __u8, ++pub tcpm_prefixlen: __u8, ++pub tcpm_keylen: __u16, ++pub tcpm_ifindex: crate::ctypes::c_int, ++pub tcpm_key: [__u8; 80usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_diag_md5sig { ++pub tcpm_family: __u8, ++pub tcpm_prefixlen: __u8, ++pub tcpm_keylen: __u16, ++pub tcpm_addr: [__be32; 4usize], ++pub tcpm_key: [__u8; 80usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_zerocopy_receive { ++pub address: __u64, ++pub length: __u32, ++pub recv_skip_hint: __u32, ++pub inq: __u32, ++pub err: __s32, ++pub copybuf_address: __u64, ++pub copybuf_len: __s32, ++pub flags: __u32, ++pub msg_control: __u64, ++pub msg_controllen: __u64, ++pub msg_flags: __u32, ++pub reserved: __u32, ++} ++pub type cc_t = crate::ctypes::c_uchar; ++pub type speed_t = crate::ctypes::c_uint; ++pub type tcflag_t = crate::ctypes::c_uint; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct termios { ++pub c_iflag: tcflag_t, ++pub c_oflag: tcflag_t, ++pub c_cflag: tcflag_t, ++pub c_lflag: tcflag_t, ++pub c_line: cc_t, ++pub c_cc: [cc_t; 19usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct termios2 { ++pub c_iflag: tcflag_t, ++pub c_oflag: tcflag_t, ++pub c_cflag: tcflag_t, ++pub c_lflag: tcflag_t, ++pub c_line: cc_t, ++pub c_cc: [cc_t; 19usize], ++pub c_ispeed: speed_t, ++pub c_ospeed: speed_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ktermios { ++pub c_iflag: tcflag_t, ++pub c_oflag: tcflag_t, ++pub c_cflag: tcflag_t, ++pub c_lflag: tcflag_t, ++pub c_line: cc_t, ++pub c_cc: [cc_t; 19usize], ++pub c_ispeed: speed_t, ++pub c_ospeed: speed_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct winsize { ++pub ws_row: crate::ctypes::c_ushort, ++pub ws_col: crate::ctypes::c_ushort, ++pub ws_xpixel: crate::ctypes::c_ushort, ++pub ws_ypixel: crate::ctypes::c_ushort, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct termio { ++pub c_iflag: crate::ctypes::c_ushort, ++pub c_oflag: crate::ctypes::c_ushort, ++pub c_cflag: crate::ctypes::c_ushort, ++pub c_lflag: crate::ctypes::c_ushort, ++pub c_line: crate::ctypes::c_uchar, ++pub c_cc: [crate::ctypes::c_uchar; 8usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct iovec { ++pub iov_base: *mut crate::ctypes::c_void, ++pub iov_len: __kernel_size_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sockaddr_un { ++pub sun_family: __kernel_sa_family_t, ++pub sun_path: [crate::ctypes::c_char; 108usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct oldold_utsname { ++pub sysname: [crate::ctypes::c_char; 9usize], ++pub nodename: [crate::ctypes::c_char; 9usize], ++pub release: [crate::ctypes::c_char; 9usize], ++pub version: [crate::ctypes::c_char; 9usize], ++pub machine: [crate::ctypes::c_char; 9usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct old_utsname { ++pub sysname: [crate::ctypes::c_char; 65usize], ++pub nodename: [crate::ctypes::c_char; 65usize], ++pub release: [crate::ctypes::c_char; 65usize], ++pub version: [crate::ctypes::c_char; 65usize], ++pub machine: [crate::ctypes::c_char; 65usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct new_utsname { ++pub sysname: [crate::ctypes::c_char; 65usize], ++pub nodename: [crate::ctypes::c_char; 65usize], ++pub release: [crate::ctypes::c_char; 65usize], ++pub version: [crate::ctypes::c_char; 65usize], ++pub machine: [crate::ctypes::c_char; 65usize], ++pub domainname: [crate::ctypes::c_char; 65usize], ++} ++impl membarrier_cmd { ++pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum membarrier_cmd { ++MEMBARRIER_CMD_QUERY = 0, ++MEMBARRIER_CMD_GLOBAL = 1, ++MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2, ++MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4, ++MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8, ++MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16, ++MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32, ++MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64, ++MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128, ++MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum membarrier_cmd_flag { ++MEMBARRIER_CMD_FLAG_CPU = 1, ++} ++#[repr(C, packed)] ++#[derive(Copy, Clone)] ++pub struct uffd_msg { ++pub event: __u8, ++pub reserved1: __u8, ++pub reserved2: __u16, ++pub reserved3: __u32, ++pub arg: uffd_msg__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union uffd_msg__bindgen_ty_1 { ++pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, ++pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, ++pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, ++pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, ++pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { ++pub flags: __u64, ++pub address: __u64, ++pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { ++pub ptid: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { ++pub ufd: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { ++pub from: __u64, ++pub to: __u64, ++pub len: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { ++pub start: __u64, ++pub end: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { ++pub reserved1: __u64, ++pub reserved2: __u64, ++pub reserved3: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_api { ++pub api: __u64, ++pub features: __u64, ++pub ioctls: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_range { ++pub start: __u64, ++pub len: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_register { ++pub range: uffdio_range, ++pub mode: __u64, ++pub ioctls: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_copy { ++pub dst: __u64, ++pub src: __u64, ++pub len: __u64, ++pub mode: __u64, ++pub copy: __s64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_zeropage { ++pub range: uffdio_range, ++pub mode: __u64, ++pub zeropage: __s64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_writeprotect { ++pub range: uffdio_range, ++pub mode: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_continue { ++pub range: uffdio_range, ++pub mode: __u64, ++pub mapped: __s64, ++} ++#[repr(C)] ++pub struct io_uring_sqe { ++pub opcode: __u8, ++pub flags: __u8, ++pub ioprio: __u16, ++pub fd: __s32, ++pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, ++pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, ++pub len: __u32, ++pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, ++pub user_data: __u64, ++pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, ++pub personality: __u16, ++pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, ++pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_1 { ++pub off: __u64, ++pub addr2: __u64, ++pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { ++pub cmd_op: __u32, ++pub __pad1: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_2 { ++pub addr: __u64, ++pub splice_off_in: __u64, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_3 { ++pub rw_flags: __kernel_rwf_t, ++pub fsync_flags: __u32, ++pub poll_events: __u16, ++pub poll32_events: __u32, ++pub sync_range_flags: __u32, ++pub msg_flags: __u32, ++pub timeout_flags: __u32, ++pub accept_flags: __u32, ++pub cancel_flags: __u32, ++pub open_flags: __u32, ++pub statx_flags: __u32, ++pub fadvise_advice: __u32, ++pub splice_flags: __u32, ++pub rename_flags: __u32, ++pub unlink_flags: __u32, ++pub hardlink_flags: __u32, ++pub xattr_flags: __u32, ++pub msg_ring_flags: __u32, ++pub uring_cmd_flags: __u32, ++} ++#[repr(C, packed)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_4 { ++pub buf_index: __u16, ++pub buf_group: __u16, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_5 { ++pub splice_fd_in: __s32, ++pub file_index: __u32, ++pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { ++pub addr_len: __u16, ++pub __pad3: [__u16; 1usize], ++} ++#[repr(C)] ++pub struct io_uring_sqe__bindgen_ty_6 { ++pub __bindgen_anon_1: __BindgenUnionField, ++pub cmd: __BindgenUnionField<[__u8; 0usize]>, ++pub bindgen_union_field: [u64; 2usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { ++pub addr3: __u64, ++pub __pad2: [__u64; 1usize], ++} ++pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; ++pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; ++pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; ++pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; ++pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; ++pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; ++pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_7 { ++IOSQE_FIXED_FILE_BIT = 0, ++IOSQE_IO_DRAIN_BIT = 1, ++IOSQE_IO_LINK_BIT = 2, ++IOSQE_IO_HARDLINK_BIT = 3, ++IOSQE_ASYNC_BIT = 4, ++IOSQE_BUFFER_SELECT_BIT = 5, ++IOSQE_CQE_SKIP_SUCCESS_BIT = 6, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum io_uring_op { ++IORING_OP_NOP = 0, ++IORING_OP_READV = 1, ++IORING_OP_WRITEV = 2, ++IORING_OP_FSYNC = 3, ++IORING_OP_READ_FIXED = 4, ++IORING_OP_WRITE_FIXED = 5, ++IORING_OP_POLL_ADD = 6, ++IORING_OP_POLL_REMOVE = 7, ++IORING_OP_SYNC_FILE_RANGE = 8, ++IORING_OP_SENDMSG = 9, ++IORING_OP_RECVMSG = 10, ++IORING_OP_TIMEOUT = 11, ++IORING_OP_TIMEOUT_REMOVE = 12, ++IORING_OP_ACCEPT = 13, ++IORING_OP_ASYNC_CANCEL = 14, ++IORING_OP_LINK_TIMEOUT = 15, ++IORING_OP_CONNECT = 16, ++IORING_OP_FALLOCATE = 17, ++IORING_OP_OPENAT = 18, ++IORING_OP_CLOSE = 19, ++IORING_OP_FILES_UPDATE = 20, ++IORING_OP_STATX = 21, ++IORING_OP_READ = 22, ++IORING_OP_WRITE = 23, ++IORING_OP_FADVISE = 24, ++IORING_OP_MADVISE = 25, ++IORING_OP_SEND = 26, ++IORING_OP_RECV = 27, ++IORING_OP_OPENAT2 = 28, ++IORING_OP_EPOLL_CTL = 29, ++IORING_OP_SPLICE = 30, ++IORING_OP_PROVIDE_BUFFERS = 31, ++IORING_OP_REMOVE_BUFFERS = 32, ++IORING_OP_TEE = 33, ++IORING_OP_SHUTDOWN = 34, ++IORING_OP_RENAMEAT = 35, ++IORING_OP_UNLINKAT = 36, ++IORING_OP_MKDIRAT = 37, ++IORING_OP_SYMLINKAT = 38, ++IORING_OP_LINKAT = 39, ++IORING_OP_MSG_RING = 40, ++IORING_OP_FSETXATTR = 41, ++IORING_OP_SETXATTR = 42, ++IORING_OP_FGETXATTR = 43, ++IORING_OP_GETXATTR = 44, ++IORING_OP_SOCKET = 45, ++IORING_OP_URING_CMD = 46, ++IORING_OP_SEND_ZC = 47, ++IORING_OP_SENDMSG_ZC = 48, ++IORING_OP_LAST = 49, ++} ++pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; ++pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_8 { ++IORING_MSG_DATA = 0, ++IORING_MSG_SEND_FD = 1, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct io_uring_cqe { ++pub user_data: __u64, ++pub res: __s32, ++pub flags: __u32, ++pub big_cqe: __IncompleteArrayField<__u64>, ++} ++pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_9 { ++IORING_CQE_BUFFER_SHIFT = 16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_sqring_offsets { ++pub head: __u32, ++pub tail: __u32, ++pub ring_mask: __u32, ++pub ring_entries: __u32, ++pub flags: __u32, ++pub dropped: __u32, ++pub array: __u32, ++pub resv1: __u32, ++pub resv2: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_cqring_offsets { ++pub head: __u32, ++pub tail: __u32, ++pub ring_mask: __u32, ++pub ring_entries: __u32, ++pub overflow: __u32, ++pub cqes: __u32, ++pub flags: __u32, ++pub resv1: __u32, ++pub resv2: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_params { ++pub sq_entries: __u32, ++pub cq_entries: __u32, ++pub flags: __u32, ++pub sq_thread_cpu: __u32, ++pub sq_thread_idle: __u32, ++pub features: __u32, ++pub wq_fd: __u32, ++pub resv: [__u32; 3usize], ++pub sq_off: io_sqring_offsets, ++pub cq_off: io_cqring_offsets, ++} ++pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; ++pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; ++pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; ++pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; ++pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; ++pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; ++pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; ++pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; ++pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; ++pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; ++pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; ++pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; ++pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; ++pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; ++pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; ++pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; ++pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; ++pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; ++pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; ++pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; ++pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; ++pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; ++pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; ++pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; ++pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; ++pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; ++pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_10 { ++IORING_REGISTER_BUFFERS = 0, ++IORING_UNREGISTER_BUFFERS = 1, ++IORING_REGISTER_FILES = 2, ++IORING_UNREGISTER_FILES = 3, ++IORING_REGISTER_EVENTFD = 4, ++IORING_UNREGISTER_EVENTFD = 5, ++IORING_REGISTER_FILES_UPDATE = 6, ++IORING_REGISTER_EVENTFD_ASYNC = 7, ++IORING_REGISTER_PROBE = 8, ++IORING_REGISTER_PERSONALITY = 9, ++IORING_UNREGISTER_PERSONALITY = 10, ++IORING_REGISTER_RESTRICTIONS = 11, ++IORING_REGISTER_ENABLE_RINGS = 12, ++IORING_REGISTER_FILES2 = 13, ++IORING_REGISTER_FILES_UPDATE2 = 14, ++IORING_REGISTER_BUFFERS2 = 15, ++IORING_REGISTER_BUFFERS_UPDATE = 16, ++IORING_REGISTER_IOWQ_AFF = 17, ++IORING_UNREGISTER_IOWQ_AFF = 18, ++IORING_REGISTER_IOWQ_MAX_WORKERS = 19, ++IORING_REGISTER_RING_FDS = 20, ++IORING_UNREGISTER_RING_FDS = 21, ++IORING_REGISTER_PBUF_RING = 22, ++IORING_UNREGISTER_PBUF_RING = 23, ++IORING_REGISTER_SYNC_CANCEL = 24, ++IORING_REGISTER_FILE_ALLOC_RANGE = 25, ++IORING_REGISTER_LAST = 26, ++} ++pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; ++pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_11 { ++IO_WQ_BOUND = 0, ++IO_WQ_UNBOUND = 1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_files_update { ++pub offset: __u32, ++pub resv: __u32, ++pub fds: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_rsrc_register { ++pub nr: __u32, ++pub flags: __u32, ++pub resv2: __u64, ++pub data: __u64, ++pub tags: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_rsrc_update { ++pub offset: __u32, ++pub resv: __u32, ++pub data: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_rsrc_update2 { ++pub offset: __u32, ++pub resv: __u32, ++pub data: __u64, ++pub tags: __u64, ++pub nr: __u32, ++pub resv2: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_notification_slot { ++pub tag: __u64, ++pub resv: [__u64; 3usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_notification_register { ++pub nr_slots: __u32, ++pub resv: __u32, ++pub resv2: __u64, ++pub data: __u64, ++pub resv3: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_probe_op { ++pub op: __u8, ++pub resv: __u8, ++pub flags: __u16, ++pub resv2: __u32, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct io_uring_probe { ++pub last_op: __u8, ++pub ops_len: __u8, ++pub resv: __u16, ++pub resv2: [__u32; 3usize], ++pub ops: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct io_uring_restriction { ++pub opcode: __u16, ++pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, ++pub resv: __u8, ++pub resv2: [__u32; 3usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_restriction__bindgen_ty_1 { ++pub register_op: __u8, ++pub sqe_op: __u8, ++pub sqe_flags: __u8, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_buf { ++pub addr: __u64, ++pub len: __u32, ++pub bid: __u16, ++pub resv: __u16, ++} ++#[repr(C)] ++pub struct io_uring_buf_ring { ++pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, ++} ++#[repr(C)] ++pub struct io_uring_buf_ring__bindgen_ty_1 { ++pub __bindgen_anon_1: __BindgenUnionField, ++pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>, ++pub bindgen_union_field: [u64; 2usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { ++pub resv1: __u64, ++pub resv2: __u32, ++pub resv3: __u16, ++pub tail: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_buf_reg { ++pub ring_addr: __u64, ++pub ring_entries: __u32, ++pub bgid: __u16, ++pub pad: __u16, ++pub resv: [__u64; 3usize], ++} ++pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; ++pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; ++pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; ++pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; ++pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_12 { ++IORING_RESTRICTION_REGISTER_OP = 0, ++IORING_RESTRICTION_SQE_OP = 1, ++IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, ++IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, ++IORING_RESTRICTION_LAST = 4, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_getevents_arg { ++pub sigmask: __u64, ++pub sigmask_sz: __u32, ++pub pad: __u32, ++pub ts: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_sync_cancel_reg { ++pub addr: __u64, ++pub fd: __s32, ++pub flags: __u32, ++pub timeout: __kernel_timespec, ++pub pad: [__u64; 4usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_file_index_range { ++pub off: __u32, ++pub len: __u32, ++pub resv: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_recvmsg_out { ++pub namelen: __u32, ++pub controllen: __u32, ++pub payloadlen: __u32, ++pub flags: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct sockaddr { ++pub __storage: __kernel_sockaddr_storage, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct linger { ++pub l_onoff: crate::ctypes::c_int, ++pub l_linger: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct linux_dirent64 { ++pub d_ino: crate::ctypes::c_ulong, ++pub d_off: crate::ctypes::c_long, ++pub d_reclen: __u16, ++pub d_type: __u8, ++pub d_name: __IncompleteArrayField, ++} ++pub type socklen_t = crate::ctypes::c_uint; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct stat { ++pub st_dev: crate::ctypes::c_ulong, ++pub st_ino: crate::ctypes::c_ulong, ++pub st_mode: crate::ctypes::c_uint, ++pub st_nlink: crate::ctypes::c_uint, ++pub st_uid: crate::ctypes::c_uint, ++pub st_gid: crate::ctypes::c_uint, ++pub st_rdev: crate::ctypes::c_ulong, ++pub __pad1: crate::ctypes::c_ulong, ++pub st_size: crate::ctypes::c_long, ++pub st_blksize: crate::ctypes::c_int, ++pub __pad2: crate::ctypes::c_int, ++pub st_blocks: crate::ctypes::c_long, ++pub st_atime: crate::ctypes::c_long, ++pub st_atime_nsec: crate::ctypes::c_ulong, ++pub st_mtime: crate::ctypes::c_long, ++pub st_mtime_nsec: crate::ctypes::c_ulong, ++pub st_ctime: crate::ctypes::c_long, ++pub st_ctime_nsec: crate::ctypes::c_ulong, ++pub __unused4: crate::ctypes::c_uint, ++pub __unused5: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct statfs { ++pub f_type: __kernel_long_t, ++pub f_bsize: __kernel_long_t, ++pub f_blocks: __kernel_long_t, ++pub f_bfree: __kernel_long_t, ++pub f_bavail: __kernel_long_t, ++pub f_files: __kernel_long_t, ++pub f_ffree: __kernel_long_t, ++pub f_fsid: __kernel_fsid_t, ++pub f_namelen: __kernel_long_t, ++pub f_frsize: __kernel_long_t, ++pub f_flags: __kernel_long_t, ++pub f_spare: [__kernel_long_t; 4usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct statfs64 { ++pub f_type: __kernel_long_t, ++pub f_bsize: __kernel_long_t, ++pub f_blocks: __u64, ++pub f_bfree: __u64, ++pub f_bavail: __u64, ++pub f_files: __u64, ++pub f_ffree: __u64, ++pub f_fsid: __kernel_fsid_t, ++pub f_namelen: __kernel_long_t, ++pub f_frsize: __kernel_long_t, ++pub f_flags: __kernel_long_t, ++pub f_spare: [__kernel_long_t; 4usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct compat_statfs64 { ++pub f_type: __u32, ++pub f_bsize: __u32, ++pub f_blocks: __u64, ++pub f_bfree: __u64, ++pub f_bavail: __u64, ++pub f_files: __u64, ++pub f_ffree: __u64, ++pub f_fsid: __kernel_fsid_t, ++pub f_namelen: __u32, ++pub f_frsize: __u32, ++pub f_flags: __u32, ++pub f_spare: [__u32; 4usize], ++} ++pub type __fsword_t = __kernel_long_t; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct user_desc { ++pub entry_number: crate::ctypes::c_uint, ++pub base_addr: crate::ctypes::c_uint, ++pub limit: crate::ctypes::c_uint, ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, ++pub __bindgen_padding_0: [u8; 3usize], ++} ++impl user_desc { ++#[inline] ++pub fn seg_32bit(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn contents(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) } ++} ++#[inline] ++pub fn set_contents(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(1usize, 2u8, val as u64) ++} ++} ++#[inline] ++pub fn read_exec_only(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(3usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn limit_in_pages(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn seg_not_present(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(5usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn useable(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_useable(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(6usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 1u8, { ++let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) }; ++seg_32bit as u64 ++}); ++__bindgen_bitfield_unit.set(1usize, 2u8, { ++let contents: u32 = unsafe { ::core::mem::transmute(contents) }; ++contents as u64 ++}); ++__bindgen_bitfield_unit.set(3usize, 1u8, { ++let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) }; ++read_exec_only as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 1u8, { ++let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) }; ++limit_in_pages as u64 ++}); ++__bindgen_bitfield_unit.set(5usize, 1u8, { ++let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) }; ++seg_not_present as u64 ++}); ++__bindgen_bitfield_unit.set(6usize, 1u8, { ++let useable: u32 = unsafe { ::core::mem::transmute(useable) }; ++useable as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct msghdr { ++pub msg_name: *mut crate::ctypes::c_void, ++pub msg_namelen: crate::ctypes::c_int, ++pub msg_iov: *mut iovec, ++pub msg_iovlen: size_t, ++pub msg_control: *mut crate::ctypes::c_void, ++pub msg_controllen: size_t, ++pub msg_flags: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct cmsghdr { ++pub cmsg_len: size_t, ++pub cmsg_level: crate::ctypes::c_int, ++pub cmsg_type: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ucred { ++pub pid: __u32, ++pub uid: __u32, ++pub gid: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct mmsghdr { ++pub msg_hdr: msghdr, ++pub msg_len: crate::ctypes::c_uint, ++} +diff --git a/vendor/linux-raw-sys-0.1.3/src/loongarch64/ioctl.rs b/vendor/linux-raw-sys-0.1.3/src/loongarch64/ioctl.rs +new file mode 100644 +index 000000000..1b6c25e1f +--- /dev/null ++++ b/vendor/linux-raw-sys-0.1.3/src/loongarch64/ioctl.rs +@@ -0,0 +1,1465 @@ ++/* automatically generated by rust-bindgen 0.59.2 */ ++ ++pub const FIONREAD: u32 = 21531; ++pub const FIONBIO: u32 = 21537; ++pub const FIOCLEX: u32 = 21585; ++pub const FIONCLEX: u32 = 21584; ++pub const FIOASYNC: u32 = 21586; ++pub const FIOQSIZE: u32 = 21600; ++pub const TCXONC: u32 = 21514; ++pub const TCFLSH: u32 = 21515; ++pub const TIOCSCTTY: u32 = 21518; ++pub const TIOCSPGRP: u32 = 21520; ++pub const TIOCOUTQ: u32 = 21521; ++pub const TIOCSTI: u32 = 21522; ++pub const TIOCSWINSZ: u32 = 21524; ++pub const TIOCMGET: u32 = 21525; ++pub const TIOCMBIS: u32 = 21526; ++pub const TIOCMBIC: u32 = 21527; ++pub const TIOCMSET: u32 = 21528; ++pub const TIOCSSOFTCAR: u32 = 21530; ++pub const TIOCLINUX: u32 = 21532; ++pub const TIOCCONS: u32 = 21533; ++pub const TIOCSSERIAL: u32 = 21535; ++pub const TIOCPKT: u32 = 21536; ++pub const TIOCNOTTY: u32 = 21538; ++pub const TIOCSETD: u32 = 21539; ++pub const TIOCSBRK: u32 = 21543; ++pub const TIOCCBRK: u32 = 21544; ++pub const TIOCSRS485: u32 = 21551; ++pub const TIOCSPTLCK: u32 = 1074025521; ++pub const TIOCSIG: u32 = 1074025526; ++pub const TIOCVHANGUP: u32 = 21559; ++pub const TIOCSERCONFIG: u32 = 21587; ++pub const TIOCSERGWILD: u32 = 21588; ++pub const TIOCSERSWILD: u32 = 21589; ++pub const TIOCSLCKTRMIOS: u32 = 21591; ++pub const TIOCSERGSTRUCT: u32 = 21592; ++pub const TIOCSERGETLSR: u32 = 21593; ++pub const TIOCSERGETMULTI: u32 = 21594; ++pub const TIOCSERSETMULTI: u32 = 21595; ++pub const TIOCMIWAIT: u32 = 21596; ++pub const TCGETS: u32 = 21505; ++pub const TCGETA: u32 = 21509; ++pub const TCSBRK: u32 = 21513; ++pub const TCSBRKP: u32 = 21541; ++pub const TCSETA: u32 = 21510; ++pub const TCSETAF: u32 = 21512; ++pub const TCSETAW: u32 = 21511; ++pub const TIOCEXCL: u32 = 21516; ++pub const TIOCNXCL: u32 = 21517; ++pub const TIOCGDEV: u32 = 2147767346; ++pub const TIOCGEXCL: u32 = 2147767360; ++pub const TIOCGICOUNT: u32 = 21597; ++pub const TIOCGLCKTRMIOS: u32 = 21590; ++pub const TIOCGPGRP: u32 = 21519; ++pub const TIOCGPKT: u32 = 2147767352; ++pub const TIOCGPTLCK: u32 = 2147767353; ++pub const TIOCGPTN: u32 = 2147767344; ++pub const TIOCGPTPEER: u32 = 21569; ++pub const TIOCGRS485: u32 = 21550; ++pub const TIOCGSERIAL: u32 = 21534; ++pub const TIOCGSID: u32 = 21545; ++pub const TIOCGSOFTCAR: u32 = 21529; ++pub const TIOCGWINSZ: u32 = 21523; ++pub const TCGETS2: u32 = 2150388778; ++pub const TCGETX: u32 = 21554; ++pub const TCSETS: u32 = 21506; ++pub const TCSETS2: u32 = 1076646955; ++pub const TCSETSF: u32 = 21508; ++pub const TCSETSF2: u32 = 1076646957; ++pub const TCSETSW: u32 = 21507; ++pub const TCSETSW2: u32 = 1076646956; ++pub const TCSETX: u32 = 21555; ++pub const TCSETXF: u32 = 21556; ++pub const TCSETXW: u32 = 21557; ++pub const TIOCGETD: u32 = 21540; ++pub const MTIOCGET: u32 = 2150657282; ++pub const BLKSSZGET: u32 = 4712; ++pub const BLKPBSZGET: u32 = 4731; ++pub const BLKROSET: u32 = 4701; ++pub const BLKROGET: u32 = 4702; ++pub const BLKRRPART: u32 = 4703; ++pub const BLKGETSIZE: u32 = 4704; ++pub const BLKFLSBUF: u32 = 4705; ++pub const BLKRASET: u32 = 4706; ++pub const BLKRAGET: u32 = 4707; ++pub const BLKFRASET: u32 = 4708; ++pub const BLKFRAGET: u32 = 4709; ++pub const BLKSECTSET: u32 = 4710; ++pub const BLKSECTGET: u32 = 4711; ++pub const BLKPG: u32 = 4713; ++pub const BLKBSZGET: u32 = 2148012656; ++pub const BLKBSZSET: u32 = 1074270833; ++pub const BLKGETSIZE64: u32 = 2148012658; ++pub const BLKTRACESETUP: u32 = 3225948787; ++pub const BLKTRACESTART: u32 = 4724; ++pub const BLKTRACESTOP: u32 = 4725; ++pub const BLKTRACETEARDOWN: u32 = 4726; ++pub const BLKDISCARD: u32 = 4727; ++pub const BLKIOMIN: u32 = 4728; ++pub const BLKIOOPT: u32 = 4729; ++pub const BLKALIGNOFF: u32 = 4730; ++pub const BLKDISCARDZEROES: u32 = 4732; ++pub const BLKSECDISCARD: u32 = 4733; ++pub const BLKROTATIONAL: u32 = 4734; ++pub const BLKZEROOUT: u32 = 4735; ++pub const UFFDIO_REGISTER: u32 = 3223366144; ++pub const UFFDIO_UNREGISTER: u32 = 2148575745; ++pub const UFFDIO_WAKE: u32 = 2148575746; ++pub const UFFDIO_COPY: u32 = 3223890435; ++pub const UFFDIO_ZEROPAGE: u32 = 3223366148; ++pub const UFFDIO_WRITEPROTECT: u32 = 3222841862; ++pub const UFFDIO_API: u32 = 3222841919; ++pub const NS_GET_USERNS: u32 = 46849; ++pub const NS_GET_PARENT: u32 = 46850; ++pub const NS_GET_NSTYPE: u32 = 46851; ++pub const KDGETLED: u32 = 19249; ++pub const KDSETLED: u32 = 19250; ++pub const KDGKBLED: u32 = 19300; ++pub const KDSKBLED: u32 = 19301; ++pub const KDGKBTYPE: u32 = 19251; ++pub const KDADDIO: u32 = 19252; ++pub const KDDELIO: u32 = 19253; ++pub const KDENABIO: u32 = 19254; ++pub const KDDISABIO: u32 = 19255; ++pub const KDSETMODE: u32 = 19258; ++pub const KDGETMODE: u32 = 19259; ++pub const KDMKTONE: u32 = 19248; ++pub const KIOCSOUND: u32 = 19247; ++pub const GIO_CMAP: u32 = 19312; ++pub const PIO_CMAP: u32 = 19313; ++pub const GIO_FONT: u32 = 19296; ++pub const GIO_FONTX: u32 = 19307; ++pub const PIO_FONT: u32 = 19297; ++pub const PIO_FONTX: u32 = 19308; ++pub const PIO_FONTRESET: u32 = 19309; ++pub const GIO_SCRNMAP: u32 = 19264; ++pub const GIO_UNISCRNMAP: u32 = 19305; ++pub const PIO_SCRNMAP: u32 = 19265; ++pub const PIO_UNISCRNMAP: u32 = 19306; ++pub const GIO_UNIMAP: u32 = 19302; ++pub const PIO_UNIMAP: u32 = 19303; ++pub const PIO_UNIMAPCLR: u32 = 19304; ++pub const KDGKBMODE: u32 = 19268; ++pub const KDSKBMODE: u32 = 19269; ++pub const KDGKBMETA: u32 = 19298; ++pub const KDSKBMETA: u32 = 19299; ++pub const KDGKBENT: u32 = 19270; ++pub const KDSKBENT: u32 = 19271; ++pub const KDGKBSENT: u32 = 19272; ++pub const KDSKBSENT: u32 = 19273; ++pub const KDGKBDIACR: u32 = 19274; ++pub const KDGETKEYCODE: u32 = 19276; ++pub const KDSETKEYCODE: u32 = 19277; ++pub const KDSIGACCEPT: u32 = 19278; ++pub const VT_OPENQRY: u32 = 22016; ++pub const VT_GETMODE: u32 = 22017; ++pub const VT_SETMODE: u32 = 22018; ++pub const VT_GETSTATE: u32 = 22019; ++pub const VT_RELDISP: u32 = 22021; ++pub const VT_ACTIVATE: u32 = 22022; ++pub const VT_WAITACTIVE: u32 = 22023; ++pub const VT_DISALLOCATE: u32 = 22024; ++pub const VT_RESIZE: u32 = 22025; ++pub const VT_RESIZEX: u32 = 22026; ++pub const FIOSETOWN: u32 = 35073; ++pub const SIOCSPGRP: u32 = 35074; ++pub const FIOGETOWN: u32 = 35075; ++pub const SIOCGPGRP: u32 = 35076; ++pub const SIOCATMARK: u32 = 35077; ++pub const SIOCGSTAMP: u32 = 35078; ++pub const TIOCINQ: u32 = 21531; ++pub const SIOCADDRT: u32 = 35083; ++pub const SIOCDELRT: u32 = 35084; ++pub const SIOCGIFNAME: u32 = 35088; ++pub const SIOCSIFLINK: u32 = 35089; ++pub const SIOCGIFCONF: u32 = 35090; ++pub const SIOCGIFFLAGS: u32 = 35091; ++pub const SIOCSIFFLAGS: u32 = 35092; ++pub const SIOCGIFADDR: u32 = 35093; ++pub const SIOCSIFADDR: u32 = 35094; ++pub const SIOCGIFDSTADDR: u32 = 35095; ++pub const SIOCSIFDSTADDR: u32 = 35096; ++pub const SIOCGIFBRDADDR: u32 = 35097; ++pub const SIOCSIFBRDADDR: u32 = 35098; ++pub const SIOCGIFNETMASK: u32 = 35099; ++pub const SIOCSIFNETMASK: u32 = 35100; ++pub const SIOCGIFMETRIC: u32 = 35101; ++pub const SIOCSIFMETRIC: u32 = 35102; ++pub const SIOCGIFMEM: u32 = 35103; ++pub const SIOCSIFMEM: u32 = 35104; ++pub const SIOCGIFMTU: u32 = 35105; ++pub const SIOCSIFMTU: u32 = 35106; ++pub const SIOCSIFHWADDR: u32 = 35108; ++pub const SIOCGIFENCAP: u32 = 35109; ++pub const SIOCSIFENCAP: u32 = 35110; ++pub const SIOCGIFHWADDR: u32 = 35111; ++pub const SIOCGIFSLAVE: u32 = 35113; ++pub const SIOCSIFSLAVE: u32 = 35120; ++pub const SIOCADDMULTI: u32 = 35121; ++pub const SIOCDELMULTI: u32 = 35122; ++pub const SIOCDARP: u32 = 35155; ++pub const SIOCGARP: u32 = 35156; ++pub const SIOCSARP: u32 = 35157; ++pub const SIOCDRARP: u32 = 35168; ++pub const SIOCGRARP: u32 = 35169; ++pub const SIOCSRARP: u32 = 35170; ++pub const SIOCGIFMAP: u32 = 35184; ++pub const SIOCSIFMAP: u32 = 35185; ++pub const SIOCRTMSG: u32 = 35085; ++pub const SIOCSIFNAME: u32 = 35107; ++pub const SIOCGIFINDEX: u32 = 35123; ++pub const SIOGIFINDEX: u32 = 35123; ++pub const SIOCSIFPFLAGS: u32 = 35124; ++pub const SIOCGIFPFLAGS: u32 = 35125; ++pub const SIOCDIFADDR: u32 = 35126; ++pub const SIOCSIFHWBROADCAST: u32 = 35127; ++pub const SIOCGIFCOUNT: u32 = 35128; ++pub const SIOCGIFBR: u32 = 35136; ++pub const SIOCSIFBR: u32 = 35137; ++pub const SIOCGIFTXQLEN: u32 = 35138; ++pub const SIOCSIFTXQLEN: u32 = 35139; ++pub const SIOCADDDLCI: u32 = 35200; ++pub const SIOCDELDLCI: u32 = 35201; ++pub const SIOCDEVPRIVATE: u32 = 35312; ++pub const SIOCPROTOPRIVATE: u32 = 35296; ++pub const FIBMAP: u32 = 1; ++pub const FIGETBSZ: u32 = 2; ++pub const FIFREEZE: u32 = 3221510263; ++pub const FITHAW: u32 = 3221510264; ++pub const FITRIM: u32 = 3222820985; ++pub const FICLONE: u32 = 1074041865; ++pub const FICLONERANGE: u32 = 1075876877; ++pub const FIDEDUPERANGE: u32 = 3222836278; ++pub const FS_IOC_GETFLAGS: u32 = 2148034049; ++pub const FS_IOC_SETFLAGS: u32 = 1074292226; ++pub const FS_IOC_GETVERSION: u32 = 2148038145; ++pub const FS_IOC_SETVERSION: u32 = 1074296322; ++pub const FS_IOC_FIEMAP: u32 = 3223348747; ++pub const FS_IOC32_GETFLAGS: u32 = 2147771905; ++pub const FS_IOC32_SETFLAGS: u32 = 1074030082; ++pub const FS_IOC32_GETVERSION: u32 = 2147776001; ++pub const FS_IOC32_SETVERSION: u32 = 1074034178; ++pub const FS_IOC_FSGETXATTR: u32 = 2149341215; ++pub const FS_IOC_FSSETXATTR: u32 = 1075599392; ++pub const FS_IOC_GETFSLABEL: u32 = 2164298801; ++pub const FS_IOC_SETFSLABEL: u32 = 1090556978; ++pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015; ++pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085; ++pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867; ++pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527; ++pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400; ++pub const FSI_SCOM_WRITE: u32 = 3223352066; ++pub const ATM_GETCIRANGE: u32 = 1074815370; ++pub const DMA_BUF_SET_NAME_B: u32 = 1074291201; ++pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961; ++pub const TUNSETPERSIST: u32 = 1074025675; ++pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389; ++pub const CEC_RECEIVE: u32 = 3224920326; ++pub const MGSL_IOCGPARAMS: u32 = 2150657281; ++pub const ENI_SETMULT: u32 = 1074815335; ++pub const RIO_GET_EVENT_MASK: u32 = 2147773710; ++pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681; ++pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567; ++pub const CHIOMOVE: u32 = 1075077889; ++pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399; ++pub const BTRFS_IOC_SYNC: u32 = 37896; ++pub const VIDIOC_TRY_FMT: u32 = 3234879040; ++pub const LIRC_SET_REC_MODE: u32 = 1074030866; ++pub const VIDIOC_DQEVENT: u32 = 2156418649; ++pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338; ++pub const UVCIOC_CTRL_MAP: u32 = 3227546912; ++pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949; ++pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008; ++pub const UI_SET_KEYBIT: u32 = 1074025829; ++pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872; ++pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218; ++pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409; ++pub const VHOST_SET_VRING_BASE: u32 = 1074310930; ++pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025; ++pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713; ++pub const LIRC_GET_REC_MODE: u32 = 2147772674; ++pub const PPGETTIME: u32 = 2148561045; ++pub const BTRFS_IOC_RM_DEV: u32 = 1342215179; ++pub const ATM_SETBACKEND: u32 = 1073897970; ++pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851; ++pub const FBIO_WAITEVENT: u32 = 18056; ++pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245; ++pub const NVME_IOCTL_IO_CMD: u32 = 3225964099; ++pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091; ++pub const FDTWADDLE: u32 = 601; ++pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076907586; ++pub const NILFS_IOCTL_SYNC: u32 = 2148036234; ++pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327; ++pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616; ++pub const DM_DEV_STATUS: u32 = 3241737479; ++pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781; ++pub const NS_GETPSTAT: u32 = 3222298977; ++pub const UI_SET_PROPBIT: u32 = 1074025838; ++pub const TUNSETFILTEREBPF: u32 = 2147767521; ++pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874; ++pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081; ++pub const WDIOC_SETOPTIONS: u32 = 2147768068; ++pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040; ++pub const MGSL_IOCGTXIDLE: u32 = 27907; ++pub const ATM_ADDLECSADDR: u32 = 1074815374; ++pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719; ++pub const FDGETPRM: u32 = 2149581316; ++pub const HIDIOCAPPLICATION: u32 = 18434; ++pub const ENI_MEMDUMP: u32 = 1074815328; ++pub const PTP_SYS_OFFSET2: u32 = 1128283406; ++pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328; ++pub const DMA_BUF_SET_NAME_A: u32 = 1074029057; ++pub const PTP_PIN_GETFUNC: u32 = 3227532550; ++pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873; ++pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776; ++pub const RTC_EPOCH_READ: u32 = 2148036621; ++pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854; ++pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943; ++pub const ATM_GETLECSADDR: u32 = 1074815376; ++pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564; ++pub const SONET_GETDIAG: u32 = 2147770644; ++pub const ATMMPC_DATA: u32 = 25049; ++pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989; ++pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136; ++pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601; ++pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864; ++pub const UI_DEV_SETUP: u32 = 1079792899; ++pub const ISST_IF_IO_CMD: u32 = 1074331138; ++pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423; ++pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412; ++pub const BLKGETNRZONES: u32 = 2147750533; ++pub const VIDIOC_G_MODULATOR: u32 = 3225703990; ++pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515; ++pub const USBDEVFS_SETINTERFACE: u32 = 2148029700; ++pub const PPPIOCGCHAN: u32 = 2147775543; ++pub const EVIOCGVERSION: u32 = 2147763457; ++pub const VHOST_NET_SET_BACKEND: u32 = 1074310960; ++pub const USBDEVFS_REAPURBNDELAY: u32 = 1074287885; ++pub const RNDZAPENTCNT: u32 = 20996; ++pub const VIDIOC_G_PARM: u32 = 3234616853; ++pub const TUNGETDEVNETNS: u32 = 21731; ++pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877; ++pub const VHOST_SET_VRING_ERR: u32 = 1074310946; ++pub const VDUSE_VQ_SETUP: u32 = 1075872020; ++pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492; ++pub const VIDIOC_S_FREQUENCY: u32 = 1076647481; ++pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428; ++pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912; ++pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073; ++pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758; ++pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191; ++pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865; ++pub const STP_SET_OPTIONS: u32 = 1074275586; ++pub const FBIO_RADEON_GET_MIRROR: u32 = 2148024323; ++pub const IVTVFB_IOC_DMA_FRAME: u32 = 1075336896; ++pub const IPMICTL_SEND_COMMAND: u32 = 2150131981; ++pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332; ++pub const DFL_FPGA_FME_PORT_PR: u32 = 46720; ++pub const CHIOSVOLTAG: u32 = 1076912914; ++pub const ATM_SETESIF: u32 = 1074815373; ++pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075323652; ++pub const PMU_IOC_GET_MODEL: u32 = 2148024835; ++pub const JSIOCGBTNMAP: u32 = 2214619700; ++pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035; ++pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363; ++pub const FDCLRPRM: u32 = 577; ++pub const BTRFS_IOC_SCRUB: u32 = 3288372251; ++pub const USBDEVFS_DISCONNECT: u32 = 21782; ++pub const TUNSETVNETBE: u32 = 1074025694; ++pub const ATMTCP_REMOVE: u32 = 24975; ++pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851; ++pub const PPPIOCGNPMODE: u32 = 3221779532; ++pub const FDGETDRVPRM: u32 = 2155872785; ++pub const TUNSETVNETLE: u32 = 1074025692; ++pub const PHN_SETREG: u32 = 1074294790; ++pub const PPPIOCDETACH: u32 = 1074033724; ++pub const MMTIMER_GETRES: u32 = 2148035841; ++pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105; ++pub const PPGETFLAGS: u32 = 2147774618; ++pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977; ++pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232; ++pub const VIDIOC_G_TUNER: u32 = 3226752541; ++pub const DM_TABLE_STATUS: u32 = 3241737484; ++pub const DM_DEV_ARM_POLL: u32 = 3241737488; ++pub const NE_CREATE_VM: u32 = 2148052512; ++pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658; ++pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735; ++pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659; ++pub const MGSL_IOCGXCTRL: u32 = 27926; ++pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076372225; ++pub const SONYPI_IOCGBLUE: u32 = 2147579400; ++pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743; ++pub const I2OHTML: u32 = 3224398089; ++pub const VFIO_GET_API_VERSION: u32 = 15204; ++pub const IDT77105_GETSTATZ: u32 = 1074815283; ++pub const I2OPARMSET: u32 = 3223873795; ++pub const TEE_IOC_CANCEL: u32 = 2148049924; ++pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409; ++pub const DFL_FPGA_PORT_RESET: u32 = 46656; ++pub const PPPIOCGASYNCMAP: u32 = 2147775576; ++pub const EVIOCGKEYCODE_V2: u32 = 2150122756; ++pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487; ++pub const HIDIOCSUSAGE: u32 = 1075333132; ++pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664; ++pub const PTP_EXTTS_REQUEST: u32 = 1074806018; ++pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251; ++pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896; ++pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041; ++pub const JSIOCGAXES: u32 = 2147576337; ++pub const HIDIOCSFLAG: u32 = 1074022415; ++pub const PTP_PEROUT_REQUEST2: u32 = 1077427468; ++pub const PPWDATA: u32 = 1073836166; ++pub const PTP_CLOCK_GETCAPS: u32 = 2152742145; ++pub const FDGETMAXERRS: u32 = 2148794894; ++pub const TUNSETQUEUE: u32 = 1074025689; ++pub const PTP_ENABLE_PPS: u32 = 1074019588; ++pub const SIOCSIFATMTCP: u32 = 24960; ++pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795; ++pub const ND_IOCTL_ARS_CAP: u32 = 3223342593; ++pub const NBD_SET_BLKSIZE: u32 = 43777; ++pub const NBD_SET_TIMEOUT: u32 = 43785; ++pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834; ++pub const RIO_UNMAP_INBOUND: u32 = 1074294034; ++pub const ATM_QUERYLOOP: u32 = 1074815316; ++pub const DFL_FPGA_GET_API_VERSION: u32 = 46592; ++pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795; ++pub const FBIO_CURSOR: u32 = 3228059144; ++pub const RNDCLEARPOOL: u32 = 20998; ++pub const VIDIOC_QUERYSTD: u32 = 2148030015; ++pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200; ++pub const SCIF_RECV: u32 = 3222827783; ++pub const PTP_PIN_GETFUNC2: u32 = 3227532559; ++pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586; ++pub const CEC_ADAP_G_CAPS: u32 = 3226231040; ++pub const VIDIOC_G_FBUF: u32 = 2150651402; ++pub const PTP_ENABLE_PPS2: u32 = 1074019597; ++pub const PCITEST_CLEAR_IRQ: u32 = 20496; ++pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688; ++pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031; ++pub const JSIOCGAXMAP: u32 = 2151705138; ++pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148541196; ++pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074799383; ++pub const RTC_WIE_OFF: u32 = 28688; ++pub const PPGETMODE: u32 = 2147774616; ++pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584; ++pub const PTP_SYS_OFFSET: u32 = 1128283397; ++pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956; ++pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866; ++pub const ND_IOCTL_VENDOR: u32 = 3221769737; ++pub const SCIF_VREADFROM: u32 = 3223876364; ++pub const BTRFS_IOC_TRANS_START: u32 = 37894; ++pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656; ++pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006; ++pub const TUNDETACHFILTER: u32 = 1074812118; ++pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596; ++pub const IOC_PR_CLEAR: u32 = 1074819277; ++pub const SCIF_READFROM: u32 = 3223876362; ++pub const PPPIOCGDEBUG: u32 = 2147775553; ++pub const BLKGETZONESZ: u32 = 2147750532; ++pub const HIDIOCGUSAGES: u32 = 3491514387; ++pub const SONYPI_IOCGTEMP: u32 = 2147579404; ++pub const UI_SET_MSCBIT: u32 = 1074025832; ++pub const APM_IOC_SUSPEND: u32 = 16642; ++pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833; ++pub const RTC_PLL_GET: u32 = 2149609489; ++pub const RIO_CM_EP_GET_LIST: u32 = 3221512962; ++pub const USBDEVFS_DISCSIGNAL: u32 = 2148553998; ++pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680; ++pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674; ++pub const DM_TARGET_MSG: u32 = 3241737486; ++pub const SONYPI_IOCGBAT1REM: u32 = 2147644931; ++pub const EVIOCSFF: u32 = 1076905344; ++pub const TUNSETGROUP: u32 = 1074025678; ++pub const EVIOCGKEYCODE: u32 = 2148025604; ++pub const KCOV_REMOTE_ENABLE: u32 = 1075340134; ++pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876; ++pub const FDEJECT: u32 = 602; ++pub const TUNSETOFFLOAD: u32 = 1074025680; ++pub const PPPIOCCONNECT: u32 = 1074033722; ++pub const ATM_ADDADDR: u32 = 1074815368; ++pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043; ++pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093; ++pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097; ++pub const CCISS_PASSTHRU: u32 = 3227009547; ++pub const MGSL_IOCCLRMODCOUNT: u32 = 27919; ++pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215; ++pub const ATMARPD_CTRL: u32 = 25057; ++pub const UI_ABS_SETUP: u32 = 1075598596; ++pub const UI_DEV_DESTROY: u32 = 21762; ++pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976; ++pub const RTC_AIE_ON: u32 = 28673; ++pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029; ++pub const PPPIOCSDEBUG: u32 = 1074033728; ++pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143; ++pub const PPPIOCSMRU: u32 = 1074033746; ++pub const CCISS_DEREGDISK: u32 = 16908; ++pub const UI_DEV_CREATE: u32 = 21761; ++pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416; ++pub const BTRFS_IOC_START_SYNC: u32 = 2148045848; ++pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401; ++pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011; ++pub const DM_TABLE_CLEAR: u32 = 3241737482; ++pub const CCISS_GETINTINFO: u32 = 2148024834; ++pub const PPPIOCSASYNCMAP: u32 = 1074033751; ++pub const I2OEVTGET: u32 = 2154326283; ++pub const NVME_IOCTL_RESET: u32 = 20036; ++pub const PPYIELD: u32 = 28813; ++pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392; ++pub const TUNSETCARRIER: u32 = 1074025698; ++pub const DM_DEV_WAIT: u32 = 3241737480; ++pub const RTC_WIE_ON: u32 = 28687; ++pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432; ++pub const RIO_CM_CHAN_CREATE: u32 = 3221381891; ++pub const MGSL_IOCSPARAMS: u32 = 1076915456; ++pub const RTC_SET_TIME: u32 = 1076129802; ++pub const VHOST_RESET_OWNER: u32 = 44802; ++pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232; ++pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084; ++pub const UDF_GETEABLOCK: u32 = 2148035649; ++pub const VFIO_IOMMU_MAP_DMA: u32 = 15217; ++pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082; ++pub const HIDIOCGFLAG: u32 = 2147764238; ++pub const HIDIOCGUCODE: u32 = 3222816781; ++pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421; ++pub const DM_REMOVE_ALL: u32 = 3241737473; ++pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969; ++pub const CCISS_GETFIRMVER: u32 = 2147762696; ++pub const ND_IOCTL_ARS_START: u32 = 3223342594; ++pub const PPPIOCSMRRU: u32 = 1074033723; ++pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620; ++pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642; ++pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768; ++pub const PPSETTIME: u32 = 1074819222; ++pub const RTC_ALM_READ: u32 = 2149871624; ++pub const VDUSE_SET_API_VERSION: u32 = 1074299137; ++pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600; ++pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564; ++pub const USBDEVFS_CONNECT: u32 = 21783; ++pub const SYNC_IOC_FILE_INFO: u32 = 3224911364; ++pub const ATMARP_MKIP: u32 = 25058; ++pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216; ++pub const CCISS_GETHEARTBEAT: u32 = 2147762694; ++pub const ATM_RSTADDR: u32 = 1074815367; ++pub const NBD_SET_SIZE: u32 = 43778; ++pub const UDF_GETVOLIDENT: u32 = 2148035650; ++pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142; ++pub const MGSL_IOCSTXIDLE: u32 = 27906; ++pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720; ++pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564; ++pub const PPRSTATUS: u32 = 2147577985; ++pub const MGSL_IOCTXENABLE: u32 = 27908; ++pub const UDF_GETEASIZE: u32 = 2147773504; ++pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391; ++pub const VHOST_SET_OWNER: u32 = 44801; ++pub const RIO_ALLOC_DMA: u32 = 3222826259; ++pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111; ++pub const I2OHRTGET: u32 = 3222825217; ++pub const ATM_SETCIRANGE: u32 = 1074815371; ++pub const HPET_IE_ON: u32 = 26625; ++pub const PERF_EVENT_IOC_ID: u32 = 2148017159; ++pub const TUNSETSNDBUF: u32 = 1074025684; ++pub const PTP_PIN_SETFUNC: u32 = 1080048903; ++pub const PPPIOCDISCONN: u32 = 29753; ++pub const VIDIOC_QUERYCTRL: u32 = 3225703972; ++pub const PPEXCL: u32 = 28815; ++pub const PCITEST_MSI: u32 = 1074024451; ++pub const FDWERRORCLR: u32 = 598; ++pub const AUTOFS_IOC_FAIL: u32 = 37729; ++pub const USBDEVFS_IOCTL: u32 = 3222295826; ++pub const VIDIOC_S_STD: u32 = 1074288152; ++pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848; ++pub const SONET_SETDIAG: u32 = 3221512466; ++pub const BTRFS_IOC_DEFRAG: u32 = 1342215170; ++pub const CCISS_GETDRIVVER: u32 = 2147762697; ++pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839; ++pub const HPET_IRQFREQ: u32 = 1074292742; ++pub const ATM_GETESI: u32 = 1074815365; ++pub const CCISS_GETLUNINFO: u32 = 2148286993; ++pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094; ++pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033; ++pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192; ++pub const UDMABUF_CREATE_LIST: u32 = 1074296131; ++pub const VHOST_SET_LOG_BASE: u32 = 1074310916; ++pub const ZATM_GETPOOL: u32 = 1074815329; ++pub const BR2684_SETFILT: u32 = 1075601808; ++pub const RNDGETPOOL: u32 = 2148028930; ++pub const PPS_GETPARAMS: u32 = 2148036769; ++pub const IOC_PR_RESERVE: u32 = 1074819273; ++pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177; ++pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244; ++pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772; ++pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628; ++pub const PMU_IOC_GET_BACKLIGHT: u32 = 2148024833; ++pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578; ++pub const SCIF_WRITETO: u32 = 3223876363; ++pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475; ++pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561; ++pub const CCISS_REGNEWD: u32 = 16910; ++pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169; ++pub const VIDIOC_CREATE_BUFS: u32 = 3238024796; ++pub const CAPI_GET_VERSION: u32 = 3222291207; ++pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228770626; ++pub const VFIO_EEH_PE_OP: u32 = 15225; ++pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592; ++pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674; ++pub const NBD_SET_SIZE_BLOCKS: u32 = 43783; ++pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312; ++pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873; ++pub const VIDIOC_S_AUDOUT: u32 = 1077171762; ++pub const VIDIOC_S_FMT: u32 = 3234878981; ++pub const PPPIOCATTACH: u32 = 1074033725; ++pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948; ++pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862; ++pub const CCISS_BIG_PASSTHRU: u32 = 3227533842; ++pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691; ++pub const PCITEST_LEGACY_IRQ: u32 = 20482; ++pub const USBDEVFS_SUBMITURB: u32 = 2151175434; ++pub const AUTOFS_IOC_READY: u32 = 37728; ++pub const BTRFS_IOC_SEND: u32 = 1078498342; ++pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711; ++pub const JSIOCSBTNMAP: u32 = 1140877875; ++pub const PPPIOCSFLAGS: u32 = 1074033753; ++pub const NVRAM_INIT: u32 = 28736; ++pub const RFKILL_IOCTL_NOINPUT: u32 = 20993; ++pub const BTRFS_IOC_BALANCE: u32 = 1342215180; ++pub const FS_IOC_GETFSMAP: u32 = 3233830971; ++pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699; ++pub const STP_POLICY_ID_GET: u32 = 2148541697; ++pub const PPSETFLAGS: u32 = 1074032795; ++pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730; ++pub const ATMTCP_CREATE: u32 = 24974; ++pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314; ++pub const PPPIOCGXASYNCMAP: u32 = 2149610576; ++pub const VHOST_SET_VRING_CALL: u32 = 1074310945; ++pub const LIRC_GET_FEATURES: u32 = 2147772672; ++pub const GSMIOC_DISABLE_NET: u32 = 18179; ++pub const AUTOFS_IOC_CATATONIC: u32 = 37730; ++pub const NBD_DO_IT: u32 = 43779; ++pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879; ++pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697; ++pub const EVIOCSCLOCKID: u32 = 1074021792; ++pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725; ++pub const FSI_SCOM_RESET: u32 = 1074033411; ++pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2148024838; ++pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661; ++pub const FDDEFPRM: u32 = 1075839555; ++pub const TEE_IOC_INVOKE: u32 = 2148574211; ++pub const USBDEVFS_BULK: u32 = 3222820098; ++pub const SCIF_VWRITETO: u32 = 3223876365; ++pub const SONYPI_IOCSBRT: u32 = 1073837568; ++pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278; ++pub const RTC_PIE_ON: u32 = 28677; ++pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172; ++pub const PPPIOCXFERUNIT: u32 = 29774; ++pub const WDIOC_GETTIMEOUT: u32 = 2147768071; ++pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597; ++pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774; ++pub const FBIO_WAITFORVSYNC: u32 = 1074021920; ++pub const RTC_PIE_OFF: u32 = 28678; ++pub const EVIOCGRAB: u32 = 1074021776; ++pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074283010; ++pub const EVIOCGREP: u32 = 2148025603; ++pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074275339; ++pub const UFFDIO_CONTINUE: u32 = 3223366151; ++pub const VDUSE_GET_API_VERSION: u32 = 2148040960; ++pub const RTC_RD_TIME: u32 = 2149871625; ++pub const FDMSGOFF: u32 = 582; ++pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988; ++pub const CAPI_GET_ERRCODE: u32 = 2147631905; ++pub const PCITEST_SET_IRQTYPE: u32 = 1074024456; ++pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969; ++pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074294522; ++pub const RIO_DEV_ADD: u32 = 1075866903; ++pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893; ++pub const FBIO_RADEON_SET_MIRROR: u32 = 1074282500; ++pub const PCITEST_GET_IRQTYPE: u32 = 20489; ++pub const JSIOCGVERSION: u32 = 2147772929; ++pub const SONYPI_IOCSBLUE: u32 = 1073837577; ++pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074; ++pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524; ++pub const SCIF_REG: u32 = 3223876360; ++pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440; ++pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933; ++pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038; ++pub const VHOST_SET_VRING_NUM: u32 = 1074310928; ++pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082; ++pub const RIO_FREE_DMA: u32 = 1074294036; ++pub const MGSL_IOCRXENABLE: u32 = 27909; ++pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977; ++pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838; ++pub const PPPIOCGL2TPSTATS: u32 = 2152231990; ++pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332; ++pub const PTP_PIN_SETFUNC2: u32 = 1080048912; ++pub const CHIOEXCHANGE: u32 = 1075602178; ++pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804; ++pub const CEC_DQEVENT: u32 = 3226493191; ++pub const UI_SET_SWBIT: u32 = 1074025837; ++pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028; ++pub const TUNSETIFF: u32 = 1074025674; ++pub const CHIOPOSITION: u32 = 1074553603; ++pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879; ++pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019; ++pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184; ++pub const CAPI_CLR_FLAGS: u32 = 2147762981; ++pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663; ++pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2148036344; ++pub const EVIOCSMASK: u32 = 1074808211; ++pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173; ++pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673; ++pub const CEC_S_MODE: u32 = 1074028809; ++pub const MGSL_IOCSIF: u32 = 27914; ++pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244; ++pub const PPSETMODE: u32 = 1074032768; ++pub const VFIO_DEVICE_SET_IRQS: u32 = 15214; ++pub const VIDIOC_PREPARE_BUF: u32 = 3227014749; ++pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938; ++pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098; ++pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867; ++pub const UDMABUF_CREATE: u32 = 1075344706; ++pub const SONET_CLRDIAG: u32 = 3221512467; ++pub const PHN_SET_REG: u32 = 1074294785; ++pub const RNDADDTOENTCNT: u32 = 1074024961; ++pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657; ++pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126; ++pub const PPS_FETCH: u32 = 3221778596; ++pub const RTC_AIE_OFF: u32 = 28674; ++pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208; ++pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094; ++pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224; ++pub const VFIO_IOMMU_GET_INFO: u32 = 15216; ++pub const DM_DEV_SUSPEND: u32 = 3241737478; ++pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461; ++pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939; ++pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773; ++pub const ATMMPC_CTRL: u32 = 25048; ++pub const PPPIOCSXASYNCMAP: u32 = 1075868751; ++pub const CHIOGSTATUS: u32 = 1074815752; ++pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309; ++pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699; ++pub const CAPI_SET_FLAGS: u32 = 2147762980; ++pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210; ++pub const VHOST_SET_MEM_TABLE: u32 = 1074310915; ++pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074294520; ++pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658; ++pub const VHOST_GET_FEATURES: u32 = 2148052736; ++pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679; ++pub const PACKET_CTRL_CMD: u32 = 3222820865; ++pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871; ++pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178; ++pub const JSIOCGCORR: u32 = 2149870114; ++pub const VIDIOC_G_FMT: u32 = 3234878980; ++pub const RTC_EPOCH_SET: u32 = 1074294798; ++pub const CAPI_GET_PROFILE: u32 = 3225436937; ++pub const ATM_GETLOOP: u32 = 1074815314; ++pub const SCIF_LISTEN: u32 = 1074033410; ++pub const NBD_CLEAR_QUE: u32 = 43781; ++pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353; ++pub const LIRC_GET_LENGTH: u32 = 2147772687; ++pub const I8K_SET_FAN: u32 = 3221776775; ++pub const FDSETMAXERRS: u32 = 1075053132; ++pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968; ++pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325; ++pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708; ++pub const EVIOCRMFF: u32 = 1074021761; ++pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284; ++pub const PPRDATA: u32 = 2147577989; ++pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284; ++pub const TUNSETVNETHDRSZ: u32 = 1074025688; ++pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146; ++pub const GSMIOC_GETCONF: u32 = 2152482560; ++pub const LIRC_GET_SEND_MODE: u32 = 2147772673; ++pub const PPPIOCSACTIVE: u32 = 1074820166; ++pub const SIOCGSTAMPNS_NEW: u32 = 2148567303; ++pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092; ++pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869; ++pub const UI_END_FF_ERASE: u32 = 1074550219; ++pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385; ++pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317; ++pub const NBD_SET_FLAGS: u32 = 43786; ++pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212; ++pub const REISERFS_IOC_UNPACK: u32 = 1074318593; ++pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935; ++pub const RIO_SET_EVENT_MASK: u32 = 1074031885; ++pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012; ++pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015; ++pub const I2OPASSTHRU: u32 = 2148559116; ++pub const IOC_OPAL_SET_PW: u32 = 1109422304; ++pub const FSI_SCOM_READ: u32 = 3223352065; ++pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704; ++pub const VIDIOC_QBUF: u32 = 3227014671; ++pub const VIDIOC_S_TUNER: u32 = 1079268894; ++pub const TUNGETVNETHDRSZ: u32 = 2147767511; ++pub const CAPI_NCCI_GETUNIT: u32 = 2147762983; ++pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455; ++pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975; ++pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357; ++pub const TEE_IOC_VERSION: u32 = 2148312064; ++pub const VIDIOC_LOG_STATUS: u32 = 22086; ++pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2150656277; ++pub const VHOST_SET_LOG_FD: u32 = 1074048775; ++pub const SCIF_SEND: u32 = 3222827782; ++pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660; ++pub const NS_ADJBUFLEV: u32 = 24931; ++pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935; ++pub const NILFS_IOCTL_RESIZE: u32 = 1074294411; ++pub const PHN_GETREG: u32 = 3221778437; ++pub const I2OSWDL: u32 = 3224398085; ++pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019; ++pub const JSIOCGBUTTONS: u32 = 2147576338; ++pub const VFIO_IOMMU_ENABLE: u32 = 15219; ++pub const DM_DEV_RENAME: u32 = 3241737477; ++pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091; ++pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128; ++pub const STP_POLICY_ID_SET: u32 = 3222283520; ++pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887; ++pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563; ++pub const VIDIOC_S_CROP: u32 = 1075074620; ++pub const WDIOC_GETTEMP: u32 = 2147768067; ++pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804; ++pub const UI_SET_LEDBIT: u32 = 1074025833; ++pub const NBD_SET_SOCK: u32 = 43776; ++pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231; ++pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497; ++pub const I2OSWUL: u32 = 3224398086; ++pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227; ++pub const FDFMTTRK: u32 = 1074528840; ++pub const MMTIMER_GETBITS: u32 = 27908; ++pub const VIDIOC_ENUMSTD: u32 = 3225966105; ++pub const VHOST_GET_VRING_BASE: u32 = 3221794578; ++pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220; ++pub const ATMARP_SETENTRY: u32 = 25059; ++pub const CCISS_REVALIDVOLS: u32 = 16906; ++pub const MGSL_IOCLOOPTXDONE: u32 = 27913; ++pub const RTC_VL_READ: u32 = 2147774483; ++pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171; ++pub const RIO_DEV_DEL: u32 = 1075866904; ++pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797; ++pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772; ++pub const SONYPI_IOCSFAN: u32 = 1073837579; ++pub const SPIOCSTYPE: u32 = 1074295041; ++pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614; ++pub const I8K_GET_FAN: u32 = 3221776774; ++pub const TUNGETVNETBE: u32 = 2147767519; ++pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087; ++pub const UI_END_FF_UPLOAD: u32 = 1080579529; ++pub const TOSH_SMM: u32 = 3222828176; ++pub const SONYPI_IOCGBAT2REM: u32 = 2147644933; ++pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673; ++pub const PPPIOCSNPMODE: u32 = 1074295883; ++pub const USBDEVFS_CONTROL: u32 = 3222820096; ++pub const HIDIOCGUSAGE: u32 = 3222816779; ++pub const TUNSETTXFILTER: u32 = 1074025681; ++pub const TUNGETVNETLE: u32 = 2147767517; ++pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914; ++pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411; ++pub const MGSL_IOCGXSYNC: u32 = 27924; ++pub const HIDIOCGFIELDINFO: u32 = 3224913930; ++pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975; ++pub const I2OVALIDATE: u32 = 2147772680; ++pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006; ++pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802; ++pub const VIDIOC_G_FREQUENCY: u32 = 3224131128; ++pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2184212994; ++pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877; ++pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675; ++pub const FDGETDRVSTAT: u32 = 2152727058; ++pub const SYNC_IOC_MERGE: u32 = 3224387075; ++pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327; ++pub const PPPIOCBRIDGECHAN: u32 = 1074033717; ++pub const LIRC_SET_SEND_MODE: u32 = 1074030865; ++pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315; ++pub const ATM_GETTYPE: u32 = 1074815364; ++pub const PHN_GETREGS: u32 = 3223875591; ++pub const FDSETEMSGTRESH: u32 = 586; ++pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630; ++pub const MGSL_IOCWAITEVENT: u32 = 3221515528; ++pub const CAPI_INSTALLED: u32 = 2147631906; ++pub const EVIOCGMASK: u32 = 2148550034; ++pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849; ++pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706; ++pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433; ++pub const GSMIOC_GETFIRST: u32 = 2147763972; ++pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952; ++pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790; ++pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724; ++pub const CAPI_GET_SERIAL: u32 = 3221504776; ++pub const FDSETDRVPRM: u32 = 1082131088; ++pub const IOC_OPAL_SAVE: u32 = 1092120796; ++pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328; ++pub const TUNSETIFINDEX: u32 = 1074025690; ++pub const CCISS_SETINTINFO: u32 = 1074283011; ++pub const CM_IOSDBGLVL: u32 = 1074291706; ++pub const RTC_VL_CLR: u32 = 28692; ++pub const VIDIOC_REQBUFS: u32 = 3222558216; ++pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741; ++pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329; ++pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557; ++pub const CCISS_GETNODENAME: u32 = 2148549124; ++pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238; ++pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146; ++pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217; ++pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076372242; ++pub const LPSETTIMEOUT_NEW: u32 = 1074791951; ++pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971; ++pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305; ++pub const FDRAWCMD: u32 = 600; ++pub const SCIF_UNREG: u32 = 3222303497; ++pub const PPPIOCGIDLE64: u32 = 2148561983; ++pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568; ++pub const VIDIOC_CROPCAP: u32 = 3224131130; ++pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657; ++pub const PHN_SET_REGS: u32 = 1074294787; ++pub const ATMLEC_DATA: u32 = 25041; ++pub const PPPOEIOCDFWD: u32 = 45313; ++pub const VIDIOC_S_SELECTION: u32 = 3225441887; ++pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065; ++pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412; ++pub const VIDIOC_S_CTRL: u32 = 3221771804; ++pub const ZATM_SETPOOL: u32 = 1074815331; ++pub const MTIOCPOS: u32 = 2148035843; ++pub const PMU_IOC_SLEEP: u32 = 16896; ++pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083; ++pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652; ++pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669; ++pub const VIDIOC_QUERYCAP: u32 = 2154321408; ++pub const HPET_INFO: u32 = 2149083139; ++pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074288321; ++pub const DM_LIST_DEVICES: u32 = 3241737474; ++pub const TUNSETOWNER: u32 = 1074025676; ++pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654; ++pub const RNDADDENTROPY: u32 = 1074287107; ++pub const USBDEVFS_RESET: u32 = 21780; ++pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182; ++pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793; ++pub const FDGETDRVTYP: u32 = 2148532751; ++pub const PPWCONTROL: u32 = 1073836164; ++pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435; ++pub const KCOV_DISABLE: u32 = 25445; ++pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799; ++pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144; ++pub const PPPIOCSPASS: u32 = 1074820167; ++pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464; ++pub const I2OSWDEL: u32 = 3224398087; ++pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211; ++pub const IOC_OPAL_MBR_DONE: u32 = 1091596521; ++pub const PPPIOCSMAXCID: u32 = 1074033745; ++pub const PPSETPHASE: u32 = 1074032788; ++pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029; ++pub const USBDEVFS_GET_SPEED: u32 = 21791; ++pub const SONET_GETFRAMING: u32 = 2147770646; ++pub const VIDIOC_QUERYBUF: u32 = 3227014665; ++pub const VIDIOC_S_EDID: u32 = 3223868969; ++pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617; ++pub const PPS_GETCAP: u32 = 2148036771; ++pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071; ++pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873; ++pub const SCIF_GET_NODEIDS: u32 = 3222827790; ++pub const NBD_DISCONNECT: u32 = 43784; ++pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237; ++pub const VFIO_IOMMU_DISABLE: u32 = 15220; ++pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041; ++pub const SNAPSHOT_POWER_OFF: u32 = 13072; ++pub const APM_IOC_STANDBY: u32 = 16641; ++pub const PPPIOCGUNIT: u32 = 2147775574; ++pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702; ++pub const SCIF_BIND: u32 = 3221779201; ++pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368; ++pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688; ++pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797; ++pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701; ++pub const PPPIOCGRASYNCMAP: u32 = 2147775573; ++pub const MMTIMER_MMAPAVAIL: u32 = 27910; ++pub const I2OPASSTHRU32: u32 = 2148034828; ++pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689; ++pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515; ++pub const UI_SET_SNDBIT: u32 = 1074025834; ++pub const VIDIOC_G_AUDOUT: u32 = 2150913585; ++pub const RTC_PLL_SET: u32 = 1075867666; ++pub const VIDIOC_ENUMAUDIO: u32 = 3224655425; ++pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090; ++pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072; ++pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836; ++pub const VHOST_SET_VRING_ADDR: u32 = 1076408081; ++pub const VDUSE_CREATE_DEV: u32 = 1095794946; ++pub const FDFLUSH: u32 = 587; ++pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650; ++pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836; ++pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526; ++pub const SCIF_CONNECT: u32 = 3221779203; ++pub const BLKREPORTZONE: u32 = 3222278786; ++pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536; ++pub const ATM_ADDPARTY: u32 = 1074815476; ++pub const FDSETPRM: u32 = 1075839554; ++pub const ATM_GETSTATZ: u32 = 1074815313; ++pub const ISST_IF_MSR_COMMAND: u32 = 3221814788; ++pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2180551740; ++pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083; ++pub const SEV_ISSUE_CMD: u32 = 3222295296; ++pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865; ++pub const PCITEST_COPY: u32 = 1074286598; ++pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690; ++pub const CHIOGPICKER: u32 = 2147771140; ++pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982; ++pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938; ++pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074275334; ++pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226; ++pub const CHIOGVPARAMS: u32 = 2154849043; ++pub const PTP_PEROUT_REQUEST: u32 = 1077427459; ++pub const FSI_SCOM_CHECK: u32 = 2147775232; ++pub const RTC_IRQP_READ: u32 = 2148036619; ++pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421; ++pub const HIDIOCGRDESCSIZE: u32 = 2147764225; ++pub const UI_GET_VERSION: u32 = 2147767597; ++pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803; ++pub const CCISS_GETBUSTYPES: u32 = 2147762695; ++pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223; ++pub const VIDIOC_EXPBUF: u32 = 3225441808; ++pub const UI_SET_RELBIT: u32 = 1074025830; ++pub const VFIO_SET_IOMMU: u32 = 15206; ++pub const VIDIOC_S_MODULATOR: u32 = 1078220343; ++pub const TUNGETFILTER: u32 = 2148553947; ++pub const MEYEIOC_SYNC: u32 = 3221518019; ++pub const CCISS_SETNODENAME: u32 = 1074807301; ++pub const FBIO_GETCONTROL2: u32 = 2148025993; ++pub const TUNSETDEBUG: u32 = 1074025673; ++pub const DM_DEV_REMOVE: u32 = 3241737476; ++pub const HIDIOCSUSAGES: u32 = 1344030740; ++pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487; ++pub const FBIOGET_VBLANK: u32 = 2149598738; ++pub const ATM_GETSTAT: u32 = 1074815312; ++pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765; ++pub const TUNATTACHFILTER: u32 = 1074812117; ++pub const UI_SET_ABSBIT: u32 = 1074025831; ++pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453; ++pub const USBDEVFS_REAPURB32: u32 = 1074025740; ++pub const BTRFS_IOC_TRANS_END: u32 = 37895; ++pub const CAPI_REGISTER: u32 = 1074545409; ++pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744; ++pub const USBDEVFS_DISCARDURB: u32 = 21771; ++pub const HE_GET_REG: u32 = 1074815328; ++pub const ATM_SETLOOP: u32 = 1074815315; ++pub const ATMSIGD_CTRL: u32 = 25072; ++pub const CIOC_KERNEL_VERSION: u32 = 3221775114; ++pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877; ++pub const SNAPSHOT_UNFREEZE: u32 = 13058; ++pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723; ++pub const PMU_IOC_HAS_ADB: u32 = 2148024836; ++pub const I2OGETIOPS: u32 = 2149607680; ++pub const VIDIOC_S_FBUF: u32 = 1076909579; ++pub const PPRCONTROL: u32 = 2147577987; ++pub const CHIOSPICKER: u32 = 1074029317; ++pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221; ++pub const TUNGETSNDBUF: u32 = 2147767507; ++pub const GSMIOC_SETCONF: u32 = 1078740737; ++pub const IOC_PR_PREEMPT: u32 = 1075343563; ++pub const KCOV_INIT_TRACE: u32 = 2148033281; ++pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930; ++pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560; ++pub const MTIOCTOP: u32 = 1074294017; ++pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274; ++pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835; ++pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221; ++pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253; ++pub const PPPIOCGMRU: u32 = 2147775571; ++pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013; ++pub const PPPIOCGFLAGS: u32 = 2147775578; ++pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989; ++pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316; ++pub const ATM_DELLECSADDR: u32 = 1074815375; ++pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977; ++pub const PPPIOCGIDLE32: u32 = 2148037695; ++pub const VFIO_DEVICE_RESET: u32 = 15215; ++pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708; ++pub const WDIOC_GETSTATUS: u32 = 2147768065; ++pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497; ++pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481; ++pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835; ++pub const PCITEST_READ: u32 = 1074286597; ++pub const VFIO_GROUP_GET_STATUS: u32 = 15207; ++pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2148036347; ++pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573; ++pub const VIDIOC_DECODER_CMD: u32 = 3225966176; ++pub const VIDIOC_G_AUDIO: u32 = 2150913569; ++pub const CCISS_RESCANDISK: u32 = 16912; ++pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316; ++pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519; ++pub const USBDEVFS_REAPURB: u32 = 1074287884; ++pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593; ++pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523; ++pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717; ++pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457; ++pub const PCITEST_MSIX: u32 = 1074024455; ++pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456; ++pub const UI_BEGIN_FF_ERASE: u32 = 3222033866; ++pub const DM_GET_TARGET_VERSION: u32 = 3241737489; ++pub const PPPIOCGIDLE: u32 = 2148561983; ++pub const NVRAM_SETCKS: u32 = 28737; ++pub const WDIOC_GETSUPPORT: u32 = 2150127360; ++pub const GSMIOC_ENABLE_NET: u32 = 1077167874; ++pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177; ++pub const NE_ADD_VCPU: u32 = 3221532193; ++pub const EVIOCSKEYCODE_V2: u32 = 1076380932; ++pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882; ++pub const SCIF_FENCE_WAIT: u32 = 3221517072; ++pub const RIO_TRANSFER: u32 = 3222826261; ++pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566; ++pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598; ++pub const I2OEVTREG: u32 = 1074555146; ++pub const I2OPARMGET: u32 = 3223873796; ++pub const EVIOCGID: u32 = 2148025602; ++pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330; ++pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088; ++pub const VIDIOC_S_PARM: u32 = 3234616854; ++pub const TUNSETSTEERINGEBPF: u32 = 2147767520; ++pub const ATM_GETNAMES: u32 = 1074815363; ++pub const VIDIOC_QUERYMENU: u32 = 3224131109; ++pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660; ++pub const I2OLCTGET: u32 = 3222825218; ++pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532; ++pub const NS_SETBUFLEV: u32 = 1074815330; ++pub const BLKCLOSEZONE: u32 = 1074795143; ++pub const SONET_GETFRSENSE: u32 = 2147901719; ++pub const UI_SET_EVBIT: u32 = 1074025828; ++pub const DM_LIST_VERSIONS: u32 = 3241737485; ++pub const HIDIOCGSTRING: u32 = 2164541444; ++pub const PPPIOCATTCHAN: u32 = 1074033720; ++pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154; ++pub const TUNGETFEATURES: u32 = 2147767503; ++pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209; ++pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689; ++pub const CCISS_REGNEWDISK: u32 = 1074020877; ++pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515; ++pub const PHN_SETREGS: u32 = 1076391944; ++pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992; ++pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992; ++pub const TUNGETIFF: u32 = 2147767506; ++pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154; ++pub const BTRFS_IOC_RESIZE: u32 = 1342215171; ++pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931; ++pub const PPS_KC_BIND: u32 = 1074294949; ++pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727; ++pub const UI_SET_FFBIT: u32 = 1074025835; ++pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692; ++pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553; ++pub const CEC_G_MODE: u32 = 2147770632; ++pub const USBDEVFS_RESETEP: u32 = 2147767555; ++pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872; ++pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724; ++pub const MGSL_IOCSXCTRL: u32 = 27925; ++pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812; ++pub const PPPIOCUNBRIDGECHAN: u32 = 29748; ++pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722; ++pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2148072960; ++pub const SCIF_FENCE_MARK: u32 = 3222303503; ++pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577; ++pub const VFIO_CHECK_EXTENSION: u32 = 15205; ++pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307; ++pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995; ++pub const UI_SET_PHYS: u32 = 1074287980; ++pub const FDWERRORGET: u32 = 2150105623; ++pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968; ++pub const MGSL_IOCGSTATS: u32 = 27911; ++pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817; ++pub const SIOCGSTAMP_NEW: u32 = 2148567302; ++pub const RTC_WKALM_RD: u32 = 2150133776; ++pub const PHN_GET_REG: u32 = 3221778432; ++pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616; ++pub const PHN_NOT_OH: u32 = 28676; ++pub const PPGETMODES: u32 = 2147774615; ++pub const CHIOGPARAMS: u32 = 2148819718; ++pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219; ++pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947; ++pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853; ++pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226; ++pub const MGSL_IOCWAITGPIO: u32 = 3222301970; ++pub const PMU_IOC_CAN_SLEEP: u32 = 2148024837; ++pub const KCOV_ENABLE: u32 = 25444; ++pub const BTRFS_IOC_CLONE: u32 = 1074041865; ++pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776; ++pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942; ++pub const AGPIOC_ALLOCATE: u32 = 3221766406; ++pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267; ++pub const MGSL_IOCTXABORT: u32 = 27910; ++pub const MGSL_IOCSGPIO: u32 = 1074818320; ++pub const LIRC_SET_REC_CARRIER: u32 = 1074030868; ++pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842; ++pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060; ++pub const RTC_UIE_OFF: u32 = 28676; ++pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312; ++pub const NVME_IOCTL_ID: u32 = 20032; ++pub const NE_START_ENCLAVE: u32 = 3222318628; ++pub const VIDIOC_STREAMON: u32 = 1074026002; ++pub const FDPOLLDRVSTAT: u32 = 2152727059; ++pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086; ++pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426; ++pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152; ++pub const WDIOC_GETTIMELEFT: u32 = 2147768074; ++pub const ATM_GETLINKRATE: u32 = 1074815361; ++pub const RTC_WKALM_SET: u32 = 1076391951; ++pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774; ++pub const ATMARP_ENCAP: u32 = 25061; ++pub const CAPI_GET_FLAGS: u32 = 2147762979; ++pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696; ++pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690; ++pub const NS_GET_OWNER_UID: u32 = 46852; ++pub const VIDIOC_OVERLAY: u32 = 1074025998; ++pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022; ++pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586; ++pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932; ++pub const ATM_GETADDR: u32 = 1074815366; ++pub const PHN_GET_REGS: u32 = 3221778434; ++pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091; ++pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092; ++pub const SNAPSHOT_S2RAM: u32 = 13067; ++pub const JSIOCSAXMAP: u32 = 1077963313; ++pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638; ++pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501; ++pub const SCIF_FENCE_SIGNAL: u32 = 3223876369; ++pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216; ++pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218; ++pub const MMTIMER_GETOFFSET: u32 = 27904; ++pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246; ++pub const ATM_SETSC: u32 = 1074029041; ++pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445; ++pub const NVME_IOCTL_RESCAN: u32 = 20038; ++pub const BLKOPENZONE: u32 = 1074795142; ++pub const DM_VERSION: u32 = 3241737472; ++pub const CEC_TRANSMIT: u32 = 3224920325; ++pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430; ++pub const SIOCMKCLIP: u32 = 25056; ++pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313; ++pub const HIDIOCGVERSION: u32 = 2147764225; ++pub const VIDIOC_S_INPUT: u32 = 3221509671; ++pub const VIDIOC_G_CROP: u32 = 3222558267; ++pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883; ++pub const EVIOCGEFFECTS: u32 = 2147763588; ++pub const UVCIOC_CTRL_QUERY: u32 = 3222304033; ++pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963; ++pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159; ++pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734; ++pub const USBDEVFS_GETDRIVER: u32 = 1090802952; ++pub const IDT77105_GETSTAT: u32 = 1074815282; ++pub const HIDIOCINITREPORT: u32 = 18437; ++pub const VFIO_DEVICE_GET_INFO: u32 = 15211; ++pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402; ++pub const RNDGETENTCNT: u32 = 2147766784; ++pub const PPPIOCNEWUNIT: u32 = 3221517374; ++pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834; ++pub const FDRESET: u32 = 596; ++pub const IOC_PR_REGISTER: u32 = 1075343560; ++pub const HIDIOCSREPORT: u32 = 1074546696; ++pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210; ++pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214; ++pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889; ++pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155; ++pub const HIDIOCGRAWINFO: u32 = 2148026371; ++pub const PPPIOCSCOMPRESS: u32 = 1074820173; ++pub const USBDEVFS_CONNECTINFO: u32 = 1074287889; ++pub const BLKRESETZONE: u32 = 1074795139; ++pub const CHIOINITELEM: u32 = 25361; ++pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700; ++pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089; ++pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801; ++pub const PPGETPHASE: u32 = 2147774617; ++pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939; ++pub const FDMSGON: u32 = 581; ++pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733; ++pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256; ++pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873; ++pub const IOC_OPAL_ERASE_LR: u32 = 1091596518; ++pub const FDFMTBEG: u32 = 583; ++pub const RNDRESEEDCRNG: u32 = 20999; ++pub const ISST_IF_GET_PHY_ID: u32 = 3221814785; ++pub const TUNSETNOCSUM: u32 = 1074025672; ++pub const SONET_GETSTAT: u32 = 2149867792; ++pub const TFD_IOC_SET_TICKS: u32 = 1074287616; ++pub const PPDATADIR: u32 = 1074032784; ++pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517; ++pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871; ++pub const RIO_CM_CHAN_SEND: u32 = 1074815753; ++pub const PPWCTLONIRQ: u32 = 1073836178; ++pub const SONYPI_IOCGBRT: u32 = 2147579392; ++pub const IOC_PR_RELEASE: u32 = 1074819274; ++pub const PPCLRIRQ: u32 = 2147774611; ++pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698; ++pub const MGSL_IOCSXSYNC: u32 = 27923; ++pub const HPET_IE_OFF: u32 = 26626; ++pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513; ++pub const SONET_SETFRAMING: u32 = 1074028821; ++pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193; ++pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435; ++pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108; ++pub const BLKFINISHZONE: u32 = 1074795144; ++pub const EVIOCREVOKE: u32 = 1074021777; ++pub const VFIO_DEVICE_FEATURE: u32 = 15221; ++pub const CCISS_GETPCIINFO: u32 = 2148024833; ++pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787; ++pub const SCIF_ACCEPTREQ: u32 = 3222303492; ++pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986; ++pub const VIDIOC_STREAMOFF: u32 = 1074026003; ++pub const VDUSE_DESTROY_DEV: u32 = 1090552067; ++pub const FDGETFDCSTAT: u32 = 2150105621; ++pub const CM_IOCGATR: u32 = 3221775105; ++pub const VIDIOC_S_PRIORITY: u32 = 1074026052; ++pub const SNAPSHOT_FREEZE: u32 = 13057; ++pub const VIDIOC_ENUMINPUT: u32 = 3226490394; ++pub const ZATM_GETPOOLZ: u32 = 1074815330; ++pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026; ++pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774; ++pub const VIDIOC_G_STD: u32 = 2148029975; ++pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794; ++pub const SONET_GETSTATZ: u32 = 2149867793; ++pub const SCIF_ACCEPTREG: u32 = 3221779205; ++pub const VIDIOC_ENCODER_CMD: u32 = 3223869005; ++pub const PPPIOCSRASYNCMAP: u32 = 1074033748; ++pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402; ++pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885; ++pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694; ++pub const ATMLEC_CTRL: u32 = 25040; ++pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2148036345; ++pub const DM_DEV_CREATE: u32 = 3241737475; ++pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638; ++pub const VIDIOC_G_CTRL: u32 = 3221771803; ++pub const NBD_CLEAR_SOCK: u32 = 43780; ++pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218; ++pub const WDIOC_KEEPALIVE: u32 = 2147768069; ++pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037; ++pub const PTP_EXTTS_REQUEST2: u32 = 1074806027; ++pub const PCITEST_BAR: u32 = 20481; ++pub const MGSL_IOCGGPIO: u32 = 2148560145; ++pub const EVIOCSREP: u32 = 1074283779; ++pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213; ++pub const HPET_DPI: u32 = 26629; ++pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158; ++pub const ND_IOCTL_CALL: u32 = 3225439754; ++pub const HIDIOCGDEVINFO: u32 = 2149337091; ++pub const DM_TABLE_DEPS: u32 = 3241737483; ++pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846; ++pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664; ++pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872; ++pub const VIDIOC_G_PRIORITY: u32 = 2147767875; ++pub const ATM_NEWBACKENDIF: u32 = 1073897971; ++pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712; ++pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914; ++pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697; ++pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650; ++pub const DM_TABLE_LOAD: u32 = 3241737481; ++pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721; ++pub const VIDIOC_G_OUTPUT: u32 = 2147767854; ++pub const ATM_DROPPARTY: u32 = 1074029045; ++pub const CHIOGELEM: u32 = 1080845072; ++pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185; ++pub const EVIOCSKEYCODE: u32 = 1074283780; ++pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626; ++pub const TUNSETLINK: u32 = 1074025677; ++pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302; ++pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916; ++pub const PPS_SETPARAMS: u32 = 1074294946; ++pub const IOC_OPAL_LR_SETUP: u32 = 1093169379; ++pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931; ++pub const WDIOC_SETTIMEOUT: u32 = 3221509894; ++pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369; ++pub const CAPI_GET_MANUFACTURER: u32 = 3221504774; ++pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222; ++pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224; ++pub const VIDIOC_G_EDID: u32 = 3223868968; ++pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075377419; ++pub const RIO_MAP_INBOUND: u32 = 3223874833; ++pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222; ++pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576; ++pub const VIDIOC_S_AUDIO: u32 = 1077171746; ++pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363; ++pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243; ++pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183; ++pub const SNAPSHOT_FREE: u32 = 13061; ++pub const I8K_GET_SPEED: u32 = 3221776773; ++pub const HIDIOCGREPORT: u32 = 1074546695; ++pub const HPET_EPI: u32 = 26628; ++pub const JSIOCSCORR: u32 = 1076128289; ++pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564; ++pub const RIO_MAP_OUTBOUND: u32 = 3223874831; ++pub const ATM_SETESI: u32 = 1074815372; ++pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370; ++pub const ATM_DELADDR: u32 = 1074815369; ++pub const PPFCONTROL: u32 = 1073901710; ++pub const SONYPI_IOCGFAN: u32 = 2147579402; ++pub const RTC_IRQP_SET: u32 = 1074294796; ++pub const PCITEST_WRITE: u32 = 1074286596; ++pub const PPCLAIM: u32 = 28811; ++pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942; ++pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615; ++pub const VHOST_SET_FEATURES: u32 = 1074310912; ++pub const TOSHIBA_ACPI_SCI: u32 = 3222828177; ++pub const VIDIOC_DQBUF: u32 = 3227014673; ++pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434; ++pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026; ++pub const ATMLEC_MCAST: u32 = 25042; ++pub const MMTIMER_GETFREQ: u32 = 2148035842; ++pub const VIDIOC_G_SELECTION: u32 = 3225441886; ++pub const RTC_ALM_SET: u32 = 1076129799; ++pub const PPPOEIOCSFWD: u32 = 1074311424; ++pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702; ++pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677; ++pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631; ++pub const FDFMTEND: u32 = 585; ++pub const DMA_BUF_SET_NAME: u32 = 1074291201; ++pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176; ++pub const RTC_UIE_ON: u32 = 28675; ++pub const PPRELEASE: u32 = 28812; ++pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218; ++pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714; ++pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659; ++pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2184212993; ++pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097; ++pub const VHOST_SET_VRING_KICK: u32 = 1074310944; ++pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192; ++pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169; ++pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932; ++pub const PPNEGOT: u32 = 1074032785; ++pub const NBD_PRINT_DEBUG: u32 = 43782; ++pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878; ++pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877; ++pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913; ++pub const BTRFS_IOC_FS_INFO: u32 = 2214630431; ++pub const VIDIOC_ENUM_FMT: u32 = 3225441794; ++pub const VIDIOC_G_INPUT: u32 = 2147767846; ++pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408; ++pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515; ++pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731; ++pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060; ++pub const MMTIMER_GETCOUNTER: u32 = 2148035849; ++pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170; ++pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934; ++pub const RIO_CM_CHAN_BIND: u32 = 1074291461; ++pub const HIDIOCGRDESC: u32 = 2416199682; ++pub const MGSL_IOCGIF: u32 = 27915; ++pub const VIDIOC_S_OUTPUT: u32 = 3221509679; ++pub const HIDIOCGREPORTINFO: u32 = 3222030345; ++pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066; ++pub const VDUSE_VQ_GET_INFO: u32 = 3224404245; ++pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677; ++pub const BLKGETDISKSEQ: u32 = 2148012672; ++pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328; ++pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489; ++pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099; ++pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522; ++pub const ACRN_IOCTL_IRQFD: u32 = 1075356273; ++pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688; ++pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907; ++pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523; ++pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100; ++pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633; ++pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621; ++pub const ACRN_IOCTL_START_VM: u32 = 41490; ++pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1093181974; ++pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513; ++pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491; ++pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525; ++pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514; ++pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560; ++pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678; ++pub const ACRN_IOCTL_RESET_VM: u32 = 41493; ++pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524; ++pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074307620; +diff --git a/vendor/linux-raw-sys-0.1.3/src/loongarch64/netlink.rs b/vendor/linux-raw-sys-0.1.3/src/loongarch64/netlink.rs +new file mode 100644 +index 000000000..8069c2f5c +--- /dev/null ++++ b/vendor/linux-raw-sys-0.1.3/src/loongarch64/netlink.rs +@@ -0,0 +1,2860 @@ ++/* automatically generated by rust-bindgen 0.59.2 */ ++ ++#[repr(C)] ++#[derive(Default)] ++pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); ++impl __IncompleteArrayField { ++#[inline] ++pub const fn new() -> Self { ++__IncompleteArrayField(::core::marker::PhantomData, []) ++} ++#[inline] ++pub fn as_ptr(&self) -> *const T { ++self as *const _ as *const T ++} ++#[inline] ++pub fn as_mut_ptr(&mut self) -> *mut T { ++self as *mut _ as *mut T ++} ++#[inline] ++pub unsafe fn as_slice(&self, len: usize) -> &[T] { ++::core::slice::from_raw_parts(self.as_ptr(), len) ++} ++#[inline] ++pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { ++::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) ++} ++} ++impl ::core::fmt::Debug for __IncompleteArrayField { ++fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { ++fmt.write_str("__IncompleteArrayField") ++} ++} ++pub const LINUX_VERSION_CODE: u32 = 393728; ++pub const LINUX_VERSION_MAJOR: u32 = 6; ++pub const LINUX_VERSION_PATCHLEVEL: u32 = 2; ++pub const LINUX_VERSION_SUBLEVEL: u32 = 0; ++pub const _K_SS_MAXSIZE: u32 = 128; ++pub const SOCK_SNDBUF_LOCK: u32 = 1; ++pub const SOCK_RCVBUF_LOCK: u32 = 2; ++pub const SOCK_BUF_LOCK_MASK: u32 = 3; ++pub const SOCK_TXREHASH_DEFAULT: u32 = 255; ++pub const SOCK_TXREHASH_DISABLED: u32 = 0; ++pub const SOCK_TXREHASH_ENABLED: u32 = 1; ++pub const __FD_SETSIZE: u32 = 1024; ++pub const NETLINK_ROUTE: u32 = 0; ++pub const NETLINK_UNUSED: u32 = 1; ++pub const NETLINK_USERSOCK: u32 = 2; ++pub const NETLINK_FIREWALL: u32 = 3; ++pub const NETLINK_SOCK_DIAG: u32 = 4; ++pub const NETLINK_NFLOG: u32 = 5; ++pub const NETLINK_XFRM: u32 = 6; ++pub const NETLINK_SELINUX: u32 = 7; ++pub const NETLINK_ISCSI: u32 = 8; ++pub const NETLINK_AUDIT: u32 = 9; ++pub const NETLINK_FIB_LOOKUP: u32 = 10; ++pub const NETLINK_CONNECTOR: u32 = 11; ++pub const NETLINK_NETFILTER: u32 = 12; ++pub const NETLINK_IP6_FW: u32 = 13; ++pub const NETLINK_DNRTMSG: u32 = 14; ++pub const NETLINK_KOBJECT_UEVENT: u32 = 15; ++pub const NETLINK_GENERIC: u32 = 16; ++pub const NETLINK_SCSITRANSPORT: u32 = 18; ++pub const NETLINK_ECRYPTFS: u32 = 19; ++pub const NETLINK_RDMA: u32 = 20; ++pub const NETLINK_CRYPTO: u32 = 21; ++pub const NETLINK_SMC: u32 = 22; ++pub const NETLINK_INET_DIAG: u32 = 4; ++pub const MAX_LINKS: u32 = 32; ++pub const NLM_F_REQUEST: u32 = 1; ++pub const NLM_F_MULTI: u32 = 2; ++pub const NLM_F_ACK: u32 = 4; ++pub const NLM_F_ECHO: u32 = 8; ++pub const NLM_F_DUMP_INTR: u32 = 16; ++pub const NLM_F_DUMP_FILTERED: u32 = 32; ++pub const NLM_F_ROOT: u32 = 256; ++pub const NLM_F_MATCH: u32 = 512; ++pub const NLM_F_ATOMIC: u32 = 1024; ++pub const NLM_F_DUMP: u32 = 768; ++pub const NLM_F_REPLACE: u32 = 256; ++pub const NLM_F_EXCL: u32 = 512; ++pub const NLM_F_CREATE: u32 = 1024; ++pub const NLM_F_APPEND: u32 = 2048; ++pub const NLM_F_NONREC: u32 = 256; ++pub const NLM_F_BULK: u32 = 512; ++pub const NLM_F_CAPPED: u32 = 256; ++pub const NLM_F_ACK_TLVS: u32 = 512; ++pub const NLMSG_ALIGNTO: u32 = 4; ++pub const NLMSG_NOOP: u32 = 1; ++pub const NLMSG_ERROR: u32 = 2; ++pub const NLMSG_DONE: u32 = 3; ++pub const NLMSG_OVERRUN: u32 = 4; ++pub const NLMSG_MIN_TYPE: u32 = 16; ++pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; ++pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; ++pub const NETLINK_PKTINFO: u32 = 3; ++pub const NETLINK_BROADCAST_ERROR: u32 = 4; ++pub const NETLINK_NO_ENOBUFS: u32 = 5; ++pub const NETLINK_RX_RING: u32 = 6; ++pub const NETLINK_TX_RING: u32 = 7; ++pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; ++pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; ++pub const NETLINK_CAP_ACK: u32 = 10; ++pub const NETLINK_EXT_ACK: u32 = 11; ++pub const NETLINK_GET_STRICT_CHK: u32 = 12; ++pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; ++pub const NET_MAJOR: u32 = 36; ++pub const NLA_F_NESTED: u32 = 32768; ++pub const NLA_F_NET_BYTEORDER: u32 = 16384; ++pub const NLA_TYPE_MASK: i32 = -49153; ++pub const NLA_ALIGNTO: u32 = 4; ++pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; ++pub const MACVLAN_FLAG_NODST: u32 = 2; ++pub const IPVLAN_F_PRIVATE: u32 = 1; ++pub const IPVLAN_F_VEPA: u32 = 2; ++pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; ++pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; ++pub const MAX_VLAN_LIST_LEN: u32 = 1; ++pub const PORT_PROFILE_MAX: u32 = 40; ++pub const PORT_UUID_MAX: u32 = 16; ++pub const PORT_SELF_VF: i32 = -1; ++pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; ++pub const XDP_FLAGS_SKB_MODE: u32 = 2; ++pub const XDP_FLAGS_DRV_MODE: u32 = 4; ++pub const XDP_FLAGS_HW_MODE: u32 = 8; ++pub const XDP_FLAGS_REPLACE: u32 = 16; ++pub const XDP_FLAGS_MODES: u32 = 14; ++pub const XDP_FLAGS_MASK: u32 = 31; ++pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; ++pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; ++pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; ++pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; ++pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; ++pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; ++pub const IFA_F_SECONDARY: u32 = 1; ++pub const IFA_F_TEMPORARY: u32 = 1; ++pub const IFA_F_NODAD: u32 = 2; ++pub const IFA_F_OPTIMISTIC: u32 = 4; ++pub const IFA_F_DADFAILED: u32 = 8; ++pub const IFA_F_HOMEADDRESS: u32 = 16; ++pub const IFA_F_DEPRECATED: u32 = 32; ++pub const IFA_F_TENTATIVE: u32 = 64; ++pub const IFA_F_PERMANENT: u32 = 128; ++pub const IFA_F_MANAGETEMPADDR: u32 = 256; ++pub const IFA_F_NOPREFIXROUTE: u32 = 512; ++pub const IFA_F_MCAUTOJOIN: u32 = 1024; ++pub const IFA_F_STABLE_PRIVACY: u32 = 2048; ++pub const IFAPROT_UNSPEC: u32 = 0; ++pub const IFAPROT_KERNEL_LO: u32 = 1; ++pub const IFAPROT_KERNEL_RA: u32 = 2; ++pub const IFAPROT_KERNEL_LL: u32 = 3; ++pub const NTF_USE: u32 = 1; ++pub const NTF_SELF: u32 = 2; ++pub const NTF_MASTER: u32 = 4; ++pub const NTF_PROXY: u32 = 8; ++pub const NTF_EXT_LEARNED: u32 = 16; ++pub const NTF_OFFLOADED: u32 = 32; ++pub const NTF_STICKY: u32 = 64; ++pub const NTF_ROUTER: u32 = 128; ++pub const NTF_EXT_MANAGED: u32 = 1; ++pub const NTF_EXT_LOCKED: u32 = 2; ++pub const NUD_INCOMPLETE: u32 = 1; ++pub const NUD_REACHABLE: u32 = 2; ++pub const NUD_STALE: u32 = 4; ++pub const NUD_DELAY: u32 = 8; ++pub const NUD_PROBE: u32 = 16; ++pub const NUD_FAILED: u32 = 32; ++pub const NUD_NOARP: u32 = 64; ++pub const NUD_PERMANENT: u32 = 128; ++pub const NUD_NONE: u32 = 0; ++pub const RTNL_FAMILY_IPMR: u32 = 128; ++pub const RTNL_FAMILY_IP6MR: u32 = 129; ++pub const RTNL_FAMILY_MAX: u32 = 129; ++pub const RTA_ALIGNTO: u32 = 4; ++pub const RTPROT_UNSPEC: u32 = 0; ++pub const RTPROT_REDIRECT: u32 = 1; ++pub const RTPROT_KERNEL: u32 = 2; ++pub const RTPROT_BOOT: u32 = 3; ++pub const RTPROT_STATIC: u32 = 4; ++pub const RTPROT_GATED: u32 = 8; ++pub const RTPROT_RA: u32 = 9; ++pub const RTPROT_MRT: u32 = 10; ++pub const RTPROT_ZEBRA: u32 = 11; ++pub const RTPROT_BIRD: u32 = 12; ++pub const RTPROT_DNROUTED: u32 = 13; ++pub const RTPROT_XORP: u32 = 14; ++pub const RTPROT_NTK: u32 = 15; ++pub const RTPROT_DHCP: u32 = 16; ++pub const RTPROT_MROUTED: u32 = 17; ++pub const RTPROT_KEEPALIVED: u32 = 18; ++pub const RTPROT_BABEL: u32 = 42; ++pub const RTPROT_OPENR: u32 = 99; ++pub const RTPROT_BGP: u32 = 186; ++pub const RTPROT_ISIS: u32 = 187; ++pub const RTPROT_OSPF: u32 = 188; ++pub const RTPROT_RIP: u32 = 189; ++pub const RTPROT_EIGRP: u32 = 192; ++pub const RTM_F_NOTIFY: u32 = 256; ++pub const RTM_F_CLONED: u32 = 512; ++pub const RTM_F_EQUALIZE: u32 = 1024; ++pub const RTM_F_PREFIX: u32 = 2048; ++pub const RTM_F_LOOKUP_TABLE: u32 = 4096; ++pub const RTM_F_FIB_MATCH: u32 = 8192; ++pub const RTM_F_OFFLOAD: u32 = 16384; ++pub const RTM_F_TRAP: u32 = 32768; ++pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; ++pub const RTNH_F_DEAD: u32 = 1; ++pub const RTNH_F_PERVASIVE: u32 = 2; ++pub const RTNH_F_ONLINK: u32 = 4; ++pub const RTNH_F_OFFLOAD: u32 = 8; ++pub const RTNH_F_LINKDOWN: u32 = 16; ++pub const RTNH_F_UNRESOLVED: u32 = 32; ++pub const RTNH_F_TRAP: u32 = 64; ++pub const RTNH_COMPARE_MASK: u32 = 89; ++pub const RTNH_ALIGNTO: u32 = 4; ++pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; ++pub const RTAX_FEATURE_ECN: u32 = 1; ++pub const RTAX_FEATURE_SACK: u32 = 2; ++pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; ++pub const RTAX_FEATURE_ALLFRAG: u32 = 8; ++pub const RTAX_FEATURE_MASK: u32 = 15; ++pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; ++pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; ++pub const RTMGRP_LINK: u32 = 1; ++pub const RTMGRP_NOTIFY: u32 = 2; ++pub const RTMGRP_NEIGH: u32 = 4; ++pub const RTMGRP_TC: u32 = 8; ++pub const RTMGRP_IPV4_IFADDR: u32 = 16; ++pub const RTMGRP_IPV4_MROUTE: u32 = 32; ++pub const RTMGRP_IPV4_ROUTE: u32 = 64; ++pub const RTMGRP_IPV4_RULE: u32 = 128; ++pub const RTMGRP_IPV6_IFADDR: u32 = 256; ++pub const RTMGRP_IPV6_MROUTE: u32 = 512; ++pub const RTMGRP_IPV6_ROUTE: u32 = 1024; ++pub const RTMGRP_IPV6_IFINFO: u32 = 2048; ++pub const RTMGRP_DECnet_IFADDR: u32 = 4096; ++pub const RTMGRP_DECnet_ROUTE: u32 = 16384; ++pub const RTMGRP_IPV6_PREFIX: u32 = 131072; ++pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; ++pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; ++pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; ++pub const RTEXT_FILTER_VF: u32 = 1; ++pub const RTEXT_FILTER_BRVLAN: u32 = 2; ++pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; ++pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; ++pub const RTEXT_FILTER_MRP: u32 = 16; ++pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; ++pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; ++pub const RTEXT_FILTER_MST: u32 = 128; ++pub type size_t = crate::ctypes::c_ulong; ++pub type ssize_t = crate::ctypes::c_long; ++pub type __kernel_sa_family_t = crate::ctypes::c_ushort; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __kernel_sockaddr_storage { ++pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union __kernel_sockaddr_storage__bindgen_ty_1 { ++pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, ++pub __align: *mut crate::ctypes::c_void, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { ++pub ss_family: __kernel_sa_family_t, ++pub __data: [crate::ctypes::c_char; 126usize], ++} ++pub type __s8 = crate::ctypes::c_schar; ++pub type __u8 = crate::ctypes::c_uchar; ++pub type __s16 = crate::ctypes::c_short; ++pub type __u16 = crate::ctypes::c_ushort; ++pub type __s32 = crate::ctypes::c_int; ++pub type __u32 = crate::ctypes::c_uint; ++pub type __s64 = crate::ctypes::c_longlong; ++pub type __u64 = crate::ctypes::c_ulonglong; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_fd_set { ++pub fds_bits: [crate::ctypes::c_ulong; 16usize], ++} ++pub type __kernel_sighandler_t = ::core::option::Option; ++pub type __kernel_key_t = crate::ctypes::c_int; ++pub type __kernel_mqd_t = crate::ctypes::c_int; ++pub type __kernel_long_t = crate::ctypes::c_long; ++pub type __kernel_ulong_t = crate::ctypes::c_ulong; ++pub type __kernel_ino_t = __kernel_ulong_t; ++pub type __kernel_mode_t = crate::ctypes::c_uint; ++pub type __kernel_pid_t = crate::ctypes::c_int; ++pub type __kernel_ipc_pid_t = crate::ctypes::c_int; ++pub type __kernel_uid_t = crate::ctypes::c_uint; ++pub type __kernel_gid_t = crate::ctypes::c_uint; ++pub type __kernel_suseconds_t = __kernel_long_t; ++pub type __kernel_daddr_t = crate::ctypes::c_int; ++pub type __kernel_uid32_t = crate::ctypes::c_uint; ++pub type __kernel_gid32_t = crate::ctypes::c_uint; ++pub type __kernel_old_uid_t = __kernel_uid_t; ++pub type __kernel_old_gid_t = __kernel_gid_t; ++pub type __kernel_old_dev_t = crate::ctypes::c_uint; ++pub type __kernel_size_t = __kernel_ulong_t; ++pub type __kernel_ssize_t = __kernel_long_t; ++pub type __kernel_ptrdiff_t = __kernel_long_t; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_fsid_t { ++pub val: [crate::ctypes::c_int; 2usize], ++} ++pub type __kernel_off_t = __kernel_long_t; ++pub type __kernel_loff_t = crate::ctypes::c_longlong; ++pub type __kernel_old_time_t = __kernel_long_t; ++pub type __kernel_time_t = __kernel_long_t; ++pub type __kernel_time64_t = crate::ctypes::c_longlong; ++pub type __kernel_clock_t = __kernel_long_t; ++pub type __kernel_timer_t = crate::ctypes::c_int; ++pub type __kernel_clockid_t = crate::ctypes::c_int; ++pub type __kernel_caddr_t = *mut crate::ctypes::c_char; ++pub type __kernel_uid16_t = crate::ctypes::c_ushort; ++pub type __kernel_gid16_t = crate::ctypes::c_ushort; ++pub type __le16 = __u16; ++pub type __be16 = __u16; ++pub type __le32 = __u32; ++pub type __be32 = __u32; ++pub type __le64 = __u64; ++pub type __be64 = __u64; ++pub type __sum16 = __u16; ++pub type __wsum = __u32; ++pub type __poll_t = crate::ctypes::c_uint; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sockaddr_nl { ++pub nl_family: __kernel_sa_family_t, ++pub nl_pad: crate::ctypes::c_ushort, ++pub nl_pid: __u32, ++pub nl_groups: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nlmsghdr { ++pub nlmsg_len: __u32, ++pub nlmsg_type: __u16, ++pub nlmsg_flags: __u16, ++pub nlmsg_seq: __u32, ++pub nlmsg_pid: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nlmsgerr { ++pub error: crate::ctypes::c_int, ++pub msg: nlmsghdr, ++} ++impl nlmsgerr_attrs { ++pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum nlmsgerr_attrs { ++NLMSGERR_ATTR_UNUSED = 0, ++NLMSGERR_ATTR_MSG = 1, ++NLMSGERR_ATTR_OFFS = 2, ++NLMSGERR_ATTR_COOKIE = 3, ++NLMSGERR_ATTR_POLICY = 4, ++NLMSGERR_ATTR_MISS_TYPE = 5, ++NLMSGERR_ATTR_MISS_NEST = 6, ++__NLMSGERR_ATTR_MAX = 7, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nl_pktinfo { ++pub group: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nl_mmap_req { ++pub nm_block_size: crate::ctypes::c_uint, ++pub nm_block_nr: crate::ctypes::c_uint, ++pub nm_frame_size: crate::ctypes::c_uint, ++pub nm_frame_nr: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nl_mmap_hdr { ++pub nm_status: crate::ctypes::c_uint, ++pub nm_len: crate::ctypes::c_uint, ++pub nm_group: __u32, ++pub nm_pid: __u32, ++pub nm_uid: __u32, ++pub nm_gid: __u32, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum nl_mmap_status { ++NL_MMAP_STATUS_UNUSED = 0, ++NL_MMAP_STATUS_RESERVED = 1, ++NL_MMAP_STATUS_VALID = 2, ++NL_MMAP_STATUS_COPY = 3, ++NL_MMAP_STATUS_SKIP = 4, ++} ++pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; ++pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_1 { ++NETLINK_UNCONNECTED = 0, ++NETLINK_CONNECTED = 1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nlattr { ++pub nla_len: __u16, ++pub nla_type: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nla_bitfield32 { ++pub value: __u32, ++pub selector: __u32, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum netlink_attribute_type { ++NL_ATTR_TYPE_INVALID = 0, ++NL_ATTR_TYPE_FLAG = 1, ++NL_ATTR_TYPE_U8 = 2, ++NL_ATTR_TYPE_U16 = 3, ++NL_ATTR_TYPE_U32 = 4, ++NL_ATTR_TYPE_U64 = 5, ++NL_ATTR_TYPE_S8 = 6, ++NL_ATTR_TYPE_S16 = 7, ++NL_ATTR_TYPE_S32 = 8, ++NL_ATTR_TYPE_S64 = 9, ++NL_ATTR_TYPE_BINARY = 10, ++NL_ATTR_TYPE_STRING = 11, ++NL_ATTR_TYPE_NUL_STRING = 12, ++NL_ATTR_TYPE_NESTED = 13, ++NL_ATTR_TYPE_NESTED_ARRAY = 14, ++NL_ATTR_TYPE_BITFIELD32 = 15, ++} ++impl netlink_policy_type_attr { ++pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum netlink_policy_type_attr { ++NL_POLICY_TYPE_ATTR_UNSPEC = 0, ++NL_POLICY_TYPE_ATTR_TYPE = 1, ++NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, ++NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, ++NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, ++NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, ++NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, ++NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, ++NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, ++NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, ++NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, ++NL_POLICY_TYPE_ATTR_PAD = 11, ++NL_POLICY_TYPE_ATTR_MASK = 12, ++__NL_POLICY_TYPE_ATTR_MAX = 13, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnl_link_stats { ++pub rx_packets: __u32, ++pub tx_packets: __u32, ++pub rx_bytes: __u32, ++pub tx_bytes: __u32, ++pub rx_errors: __u32, ++pub tx_errors: __u32, ++pub rx_dropped: __u32, ++pub tx_dropped: __u32, ++pub multicast: __u32, ++pub collisions: __u32, ++pub rx_length_errors: __u32, ++pub rx_over_errors: __u32, ++pub rx_crc_errors: __u32, ++pub rx_frame_errors: __u32, ++pub rx_fifo_errors: __u32, ++pub rx_missed_errors: __u32, ++pub tx_aborted_errors: __u32, ++pub tx_carrier_errors: __u32, ++pub tx_fifo_errors: __u32, ++pub tx_heartbeat_errors: __u32, ++pub tx_window_errors: __u32, ++pub rx_compressed: __u32, ++pub tx_compressed: __u32, ++pub rx_nohandler: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnl_link_stats64 { ++pub rx_packets: __u64, ++pub tx_packets: __u64, ++pub rx_bytes: __u64, ++pub tx_bytes: __u64, ++pub rx_errors: __u64, ++pub tx_errors: __u64, ++pub rx_dropped: __u64, ++pub tx_dropped: __u64, ++pub multicast: __u64, ++pub collisions: __u64, ++pub rx_length_errors: __u64, ++pub rx_over_errors: __u64, ++pub rx_crc_errors: __u64, ++pub rx_frame_errors: __u64, ++pub rx_fifo_errors: __u64, ++pub rx_missed_errors: __u64, ++pub tx_aborted_errors: __u64, ++pub tx_carrier_errors: __u64, ++pub tx_fifo_errors: __u64, ++pub tx_heartbeat_errors: __u64, ++pub tx_window_errors: __u64, ++pub rx_compressed: __u64, ++pub tx_compressed: __u64, ++pub rx_nohandler: __u64, ++pub rx_otherhost_dropped: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnl_hw_stats64 { ++pub rx_packets: __u64, ++pub tx_packets: __u64, ++pub rx_bytes: __u64, ++pub tx_bytes: __u64, ++pub rx_errors: __u64, ++pub tx_errors: __u64, ++pub rx_dropped: __u64, ++pub tx_dropped: __u64, ++pub multicast: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnl_link_ifmap { ++pub mem_start: __u64, ++pub mem_end: __u64, ++pub base_addr: __u64, ++pub irq: __u16, ++pub dma: __u8, ++pub port: __u8, ++} ++pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; ++pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; ++pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; ++pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; ++pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; ++pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; ++pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; ++pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; ++pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; ++pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; ++pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; ++pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; ++pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; ++pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; ++pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; ++pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; ++pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; ++pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; ++pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; ++pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; ++pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; ++pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; ++pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; ++pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; ++pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; ++pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; ++pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; ++pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; ++pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; ++pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; ++pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; ++pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; ++pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; ++pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; ++pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; ++pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; ++pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; ++pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; ++pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; ++pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; ++pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; ++pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; ++pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; ++pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; ++pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; ++pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; ++pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; ++pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; ++pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; ++pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; ++pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; ++pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; ++pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; ++pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; ++pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; ++pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; ++pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; ++pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; ++pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; ++pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; ++pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; ++pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; ++pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; ++pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; ++pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_2 { ++IFLA_UNSPEC = 0, ++IFLA_ADDRESS = 1, ++IFLA_BROADCAST = 2, ++IFLA_IFNAME = 3, ++IFLA_MTU = 4, ++IFLA_LINK = 5, ++IFLA_QDISC = 6, ++IFLA_STATS = 7, ++IFLA_COST = 8, ++IFLA_PRIORITY = 9, ++IFLA_MASTER = 10, ++IFLA_WIRELESS = 11, ++IFLA_PROTINFO = 12, ++IFLA_TXQLEN = 13, ++IFLA_MAP = 14, ++IFLA_WEIGHT = 15, ++IFLA_OPERSTATE = 16, ++IFLA_LINKMODE = 17, ++IFLA_LINKINFO = 18, ++IFLA_NET_NS_PID = 19, ++IFLA_IFALIAS = 20, ++IFLA_NUM_VF = 21, ++IFLA_VFINFO_LIST = 22, ++IFLA_STATS64 = 23, ++IFLA_VF_PORTS = 24, ++IFLA_PORT_SELF = 25, ++IFLA_AF_SPEC = 26, ++IFLA_GROUP = 27, ++IFLA_NET_NS_FD = 28, ++IFLA_EXT_MASK = 29, ++IFLA_PROMISCUITY = 30, ++IFLA_NUM_TX_QUEUES = 31, ++IFLA_NUM_RX_QUEUES = 32, ++IFLA_CARRIER = 33, ++IFLA_PHYS_PORT_ID = 34, ++IFLA_CARRIER_CHANGES = 35, ++IFLA_PHYS_SWITCH_ID = 36, ++IFLA_LINK_NETNSID = 37, ++IFLA_PHYS_PORT_NAME = 38, ++IFLA_PROTO_DOWN = 39, ++IFLA_GSO_MAX_SEGS = 40, ++IFLA_GSO_MAX_SIZE = 41, ++IFLA_PAD = 42, ++IFLA_XDP = 43, ++IFLA_EVENT = 44, ++IFLA_NEW_NETNSID = 45, ++IFLA_IF_NETNSID = 46, ++IFLA_CARRIER_UP_COUNT = 47, ++IFLA_CARRIER_DOWN_COUNT = 48, ++IFLA_NEW_IFINDEX = 49, ++IFLA_MIN_MTU = 50, ++IFLA_MAX_MTU = 51, ++IFLA_PROP_LIST = 52, ++IFLA_ALT_IFNAME = 53, ++IFLA_PERM_ADDRESS = 54, ++IFLA_PROTO_DOWN_REASON = 55, ++IFLA_PARENT_DEV_NAME = 56, ++IFLA_PARENT_DEV_BUS_NAME = 57, ++IFLA_GRO_MAX_SIZE = 58, ++IFLA_TSO_MAX_SIZE = 59, ++IFLA_TSO_MAX_SEGS = 60, ++IFLA_ALLMULTI = 61, ++IFLA_DEVLINK_PORT = 62, ++__IFLA_MAX = 63, ++} ++pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; ++pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; ++pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; ++pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; ++pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_3 { ++IFLA_PROTO_DOWN_REASON_UNSPEC = 0, ++IFLA_PROTO_DOWN_REASON_MASK = 1, ++IFLA_PROTO_DOWN_REASON_VALUE = 2, ++__IFLA_PROTO_DOWN_REASON_CNT = 3, ++} ++pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; ++pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; ++pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_4 { ++IFLA_INET_UNSPEC = 0, ++IFLA_INET_CONF = 1, ++__IFLA_INET_MAX = 2, ++} ++pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; ++pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; ++pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; ++pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; ++pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; ++pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; ++pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; ++pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; ++pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; ++pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; ++pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_5 { ++IFLA_INET6_UNSPEC = 0, ++IFLA_INET6_FLAGS = 1, ++IFLA_INET6_CONF = 2, ++IFLA_INET6_STATS = 3, ++IFLA_INET6_MCAST = 4, ++IFLA_INET6_CACHEINFO = 5, ++IFLA_INET6_ICMP6STATS = 6, ++IFLA_INET6_TOKEN = 7, ++IFLA_INET6_ADDR_GEN_MODE = 8, ++IFLA_INET6_RA_MTU = 9, ++__IFLA_INET6_MAX = 10, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum in6_addr_gen_mode { ++IN6_ADDR_GEN_MODE_EUI64 = 0, ++IN6_ADDR_GEN_MODE_NONE = 1, ++IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, ++IN6_ADDR_GEN_MODE_RANDOM = 3, ++} ++pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; ++pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; ++pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; ++pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; ++pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; ++pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; ++pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; ++pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; ++pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; ++pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; ++pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; ++pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; ++pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; ++pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; ++pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; ++pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; ++pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; ++pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; ++pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; ++pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; ++pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; ++pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; ++pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; ++pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; ++pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; ++pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; ++pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; ++pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; ++pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; ++pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; ++pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; ++pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; ++pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; ++pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; ++pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; ++pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; ++pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; ++pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; ++pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; ++pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; ++pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; ++pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; ++pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; ++pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; ++pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; ++pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; ++pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; ++pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; ++pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_6 { ++IFLA_BR_UNSPEC = 0, ++IFLA_BR_FORWARD_DELAY = 1, ++IFLA_BR_HELLO_TIME = 2, ++IFLA_BR_MAX_AGE = 3, ++IFLA_BR_AGEING_TIME = 4, ++IFLA_BR_STP_STATE = 5, ++IFLA_BR_PRIORITY = 6, ++IFLA_BR_VLAN_FILTERING = 7, ++IFLA_BR_VLAN_PROTOCOL = 8, ++IFLA_BR_GROUP_FWD_MASK = 9, ++IFLA_BR_ROOT_ID = 10, ++IFLA_BR_BRIDGE_ID = 11, ++IFLA_BR_ROOT_PORT = 12, ++IFLA_BR_ROOT_PATH_COST = 13, ++IFLA_BR_TOPOLOGY_CHANGE = 14, ++IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15, ++IFLA_BR_HELLO_TIMER = 16, ++IFLA_BR_TCN_TIMER = 17, ++IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18, ++IFLA_BR_GC_TIMER = 19, ++IFLA_BR_GROUP_ADDR = 20, ++IFLA_BR_FDB_FLUSH = 21, ++IFLA_BR_MCAST_ROUTER = 22, ++IFLA_BR_MCAST_SNOOPING = 23, ++IFLA_BR_MCAST_QUERY_USE_IFADDR = 24, ++IFLA_BR_MCAST_QUERIER = 25, ++IFLA_BR_MCAST_HASH_ELASTICITY = 26, ++IFLA_BR_MCAST_HASH_MAX = 27, ++IFLA_BR_MCAST_LAST_MEMBER_CNT = 28, ++IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, ++IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, ++IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, ++IFLA_BR_MCAST_QUERIER_INTVL = 32, ++IFLA_BR_MCAST_QUERY_INTVL = 33, ++IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, ++IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, ++IFLA_BR_NF_CALL_IPTABLES = 36, ++IFLA_BR_NF_CALL_IP6TABLES = 37, ++IFLA_BR_NF_CALL_ARPTABLES = 38, ++IFLA_BR_VLAN_DEFAULT_PVID = 39, ++IFLA_BR_PAD = 40, ++IFLA_BR_VLAN_STATS_ENABLED = 41, ++IFLA_BR_MCAST_STATS_ENABLED = 42, ++IFLA_BR_MCAST_IGMP_VERSION = 43, ++IFLA_BR_MCAST_MLD_VERSION = 44, ++IFLA_BR_VLAN_STATS_PER_PORT = 45, ++IFLA_BR_MULTI_BOOLOPT = 46, ++IFLA_BR_MCAST_QUERIER_STATE = 47, ++__IFLA_BR_MAX = 48, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_bridge_id { ++pub prio: [__u8; 2usize], ++pub addr: [__u8; 6usize], ++} ++pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; ++pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_7 { ++BRIDGE_MODE_UNSPEC = 0, ++BRIDGE_MODE_HAIRPIN = 1, ++} ++pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; ++pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; ++pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; ++pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; ++pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; ++pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; ++pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; ++pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; ++pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; ++pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; ++pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; ++pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; ++pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; ++pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; ++pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; ++pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; ++pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; ++pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; ++pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; ++pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; ++pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; ++pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; ++pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; ++pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; ++pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; ++pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; ++pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; ++pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; ++pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; ++pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; ++pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; ++pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; ++pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; ++pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; ++pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; ++pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; ++pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; ++pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; ++pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; ++pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; ++pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; ++pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_8 { ++IFLA_BRPORT_UNSPEC = 0, ++IFLA_BRPORT_STATE = 1, ++IFLA_BRPORT_PRIORITY = 2, ++IFLA_BRPORT_COST = 3, ++IFLA_BRPORT_MODE = 4, ++IFLA_BRPORT_GUARD = 5, ++IFLA_BRPORT_PROTECT = 6, ++IFLA_BRPORT_FAST_LEAVE = 7, ++IFLA_BRPORT_LEARNING = 8, ++IFLA_BRPORT_UNICAST_FLOOD = 9, ++IFLA_BRPORT_PROXYARP = 10, ++IFLA_BRPORT_LEARNING_SYNC = 11, ++IFLA_BRPORT_PROXYARP_WIFI = 12, ++IFLA_BRPORT_ROOT_ID = 13, ++IFLA_BRPORT_BRIDGE_ID = 14, ++IFLA_BRPORT_DESIGNATED_PORT = 15, ++IFLA_BRPORT_DESIGNATED_COST = 16, ++IFLA_BRPORT_ID = 17, ++IFLA_BRPORT_NO = 18, ++IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19, ++IFLA_BRPORT_CONFIG_PENDING = 20, ++IFLA_BRPORT_MESSAGE_AGE_TIMER = 21, ++IFLA_BRPORT_FORWARD_DELAY_TIMER = 22, ++IFLA_BRPORT_HOLD_TIMER = 23, ++IFLA_BRPORT_FLUSH = 24, ++IFLA_BRPORT_MULTICAST_ROUTER = 25, ++IFLA_BRPORT_PAD = 26, ++IFLA_BRPORT_MCAST_FLOOD = 27, ++IFLA_BRPORT_MCAST_TO_UCAST = 28, ++IFLA_BRPORT_VLAN_TUNNEL = 29, ++IFLA_BRPORT_BCAST_FLOOD = 30, ++IFLA_BRPORT_GROUP_FWD_MASK = 31, ++IFLA_BRPORT_NEIGH_SUPPRESS = 32, ++IFLA_BRPORT_ISOLATED = 33, ++IFLA_BRPORT_BACKUP_PORT = 34, ++IFLA_BRPORT_MRP_RING_OPEN = 35, ++IFLA_BRPORT_MRP_IN_OPEN = 36, ++IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37, ++IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38, ++IFLA_BRPORT_LOCKED = 39, ++IFLA_BRPORT_MAB = 40, ++__IFLA_BRPORT_MAX = 41, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_cacheinfo { ++pub max_reasm_len: __u32, ++pub tstamp: __u32, ++pub reachable_time: __u32, ++pub retrans_time: __u32, ++} ++pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; ++pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; ++pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; ++pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; ++pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; ++pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; ++pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_9 { ++IFLA_INFO_UNSPEC = 0, ++IFLA_INFO_KIND = 1, ++IFLA_INFO_DATA = 2, ++IFLA_INFO_XSTATS = 3, ++IFLA_INFO_SLAVE_KIND = 4, ++IFLA_INFO_SLAVE_DATA = 5, ++__IFLA_INFO_MAX = 6, ++} ++pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; ++pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; ++pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; ++pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; ++pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; ++pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; ++pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_10 { ++IFLA_VLAN_UNSPEC = 0, ++IFLA_VLAN_ID = 1, ++IFLA_VLAN_FLAGS = 2, ++IFLA_VLAN_EGRESS_QOS = 3, ++IFLA_VLAN_INGRESS_QOS = 4, ++IFLA_VLAN_PROTOCOL = 5, ++__IFLA_VLAN_MAX = 6, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vlan_flags { ++pub flags: __u32, ++pub mask: __u32, ++} ++pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; ++pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; ++pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_11 { ++IFLA_VLAN_QOS_UNSPEC = 0, ++IFLA_VLAN_QOS_MAPPING = 1, ++__IFLA_VLAN_QOS_MAX = 2, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vlan_qos_mapping { ++pub from: __u32, ++pub to: __u32, ++} ++pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; ++pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; ++pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; ++pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; ++pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; ++pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; ++pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; ++pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; ++pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; ++pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_12 { ++IFLA_MACVLAN_UNSPEC = 0, ++IFLA_MACVLAN_MODE = 1, ++IFLA_MACVLAN_FLAGS = 2, ++IFLA_MACVLAN_MACADDR_MODE = 3, ++IFLA_MACVLAN_MACADDR = 4, ++IFLA_MACVLAN_MACADDR_DATA = 5, ++IFLA_MACVLAN_MACADDR_COUNT = 6, ++IFLA_MACVLAN_BC_QUEUE_LEN = 7, ++IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8, ++__IFLA_MACVLAN_MAX = 9, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum macvlan_mode { ++MACVLAN_MODE_PRIVATE = 1, ++MACVLAN_MODE_VEPA = 2, ++MACVLAN_MODE_BRIDGE = 4, ++MACVLAN_MODE_PASSTHRU = 8, ++MACVLAN_MODE_SOURCE = 16, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum macvlan_macaddr_mode { ++MACVLAN_MACADDR_ADD = 0, ++MACVLAN_MACADDR_DEL = 1, ++MACVLAN_MACADDR_FLUSH = 2, ++MACVLAN_MACADDR_SET = 3, ++} ++pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; ++pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; ++pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_13 { ++IFLA_VRF_UNSPEC = 0, ++IFLA_VRF_TABLE = 1, ++__IFLA_VRF_MAX = 2, ++} ++pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; ++pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; ++pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_14 { ++IFLA_VRF_PORT_UNSPEC = 0, ++IFLA_VRF_PORT_TABLE = 1, ++__IFLA_VRF_PORT_MAX = 2, ++} ++pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; ++pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; ++pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; ++pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; ++pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; ++pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; ++pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; ++pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; ++pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; ++pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; ++pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; ++pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; ++pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; ++pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; ++pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; ++pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; ++pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_15 { ++IFLA_MACSEC_UNSPEC = 0, ++IFLA_MACSEC_SCI = 1, ++IFLA_MACSEC_PORT = 2, ++IFLA_MACSEC_ICV_LEN = 3, ++IFLA_MACSEC_CIPHER_SUITE = 4, ++IFLA_MACSEC_WINDOW = 5, ++IFLA_MACSEC_ENCODING_SA = 6, ++IFLA_MACSEC_ENCRYPT = 7, ++IFLA_MACSEC_PROTECT = 8, ++IFLA_MACSEC_INC_SCI = 9, ++IFLA_MACSEC_ES = 10, ++IFLA_MACSEC_SCB = 11, ++IFLA_MACSEC_REPLAY_PROTECT = 12, ++IFLA_MACSEC_VALIDATION = 13, ++IFLA_MACSEC_PAD = 14, ++IFLA_MACSEC_OFFLOAD = 15, ++__IFLA_MACSEC_MAX = 16, ++} ++pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; ++pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; ++pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; ++pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; ++pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_16 { ++IFLA_XFRM_UNSPEC = 0, ++IFLA_XFRM_LINK = 1, ++IFLA_XFRM_IF_ID = 2, ++IFLA_XFRM_COLLECT_METADATA = 3, ++__IFLA_XFRM_MAX = 4, ++} ++impl macsec_validation_type { ++pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum macsec_validation_type { ++MACSEC_VALIDATE_DISABLED = 0, ++MACSEC_VALIDATE_CHECK = 1, ++MACSEC_VALIDATE_STRICT = 2, ++__MACSEC_VALIDATE_END = 3, ++} ++impl macsec_offload { ++pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum macsec_offload { ++MACSEC_OFFLOAD_OFF = 0, ++MACSEC_OFFLOAD_PHY = 1, ++MACSEC_OFFLOAD_MAC = 2, ++__MACSEC_OFFLOAD_END = 3, ++} ++pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; ++pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; ++pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; ++pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_17 { ++IFLA_IPVLAN_UNSPEC = 0, ++IFLA_IPVLAN_MODE = 1, ++IFLA_IPVLAN_FLAGS = 2, ++__IFLA_IPVLAN_MAX = 3, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum ipvlan_mode { ++IPVLAN_MODE_L2 = 0, ++IPVLAN_MODE_L3 = 1, ++IPVLAN_MODE_L3S = 2, ++IPVLAN_MODE_MAX = 3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tunnel_msg { ++pub family: __u8, ++pub flags: __u8, ++pub reserved2: __u16, ++pub ifindex: __u32, ++} ++pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; ++pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; ++pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; ++pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; ++pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; ++pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; ++pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; ++pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; ++pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; ++pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; ++pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_18 { ++VNIFILTER_ENTRY_STATS_UNSPEC = 0, ++VNIFILTER_ENTRY_STATS_RX_BYTES = 1, ++VNIFILTER_ENTRY_STATS_RX_PKTS = 2, ++VNIFILTER_ENTRY_STATS_RX_DROPS = 3, ++VNIFILTER_ENTRY_STATS_RX_ERRORS = 4, ++VNIFILTER_ENTRY_STATS_TX_BYTES = 5, ++VNIFILTER_ENTRY_STATS_TX_PKTS = 6, ++VNIFILTER_ENTRY_STATS_TX_DROPS = 7, ++VNIFILTER_ENTRY_STATS_TX_ERRORS = 8, ++VNIFILTER_ENTRY_STATS_PAD = 9, ++__VNIFILTER_ENTRY_STATS_MAX = 10, ++} ++pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; ++pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; ++pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; ++pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; ++pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; ++pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; ++pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_19 { ++VXLAN_VNIFILTER_ENTRY_UNSPEC = 0, ++VXLAN_VNIFILTER_ENTRY_START = 1, ++VXLAN_VNIFILTER_ENTRY_END = 2, ++VXLAN_VNIFILTER_ENTRY_GROUP = 3, ++VXLAN_VNIFILTER_ENTRY_GROUP6 = 4, ++VXLAN_VNIFILTER_ENTRY_STATS = 5, ++__VXLAN_VNIFILTER_ENTRY_MAX = 6, ++} ++pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; ++pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; ++pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_20 { ++VXLAN_VNIFILTER_UNSPEC = 0, ++VXLAN_VNIFILTER_ENTRY = 1, ++__VXLAN_VNIFILTER_MAX = 2, ++} ++pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; ++pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; ++pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; ++pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; ++pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; ++pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; ++pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; ++pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; ++pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; ++pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; ++pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; ++pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; ++pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; ++pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; ++pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; ++pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; ++pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; ++pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; ++pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; ++pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; ++pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; ++pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; ++pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; ++pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; ++pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; ++pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; ++pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; ++pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; ++pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; ++pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; ++pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; ++pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_21 { ++IFLA_VXLAN_UNSPEC = 0, ++IFLA_VXLAN_ID = 1, ++IFLA_VXLAN_GROUP = 2, ++IFLA_VXLAN_LINK = 3, ++IFLA_VXLAN_LOCAL = 4, ++IFLA_VXLAN_TTL = 5, ++IFLA_VXLAN_TOS = 6, ++IFLA_VXLAN_LEARNING = 7, ++IFLA_VXLAN_AGEING = 8, ++IFLA_VXLAN_LIMIT = 9, ++IFLA_VXLAN_PORT_RANGE = 10, ++IFLA_VXLAN_PROXY = 11, ++IFLA_VXLAN_RSC = 12, ++IFLA_VXLAN_L2MISS = 13, ++IFLA_VXLAN_L3MISS = 14, ++IFLA_VXLAN_PORT = 15, ++IFLA_VXLAN_GROUP6 = 16, ++IFLA_VXLAN_LOCAL6 = 17, ++IFLA_VXLAN_UDP_CSUM = 18, ++IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19, ++IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20, ++IFLA_VXLAN_REMCSUM_TX = 21, ++IFLA_VXLAN_REMCSUM_RX = 22, ++IFLA_VXLAN_GBP = 23, ++IFLA_VXLAN_REMCSUM_NOPARTIAL = 24, ++IFLA_VXLAN_COLLECT_METADATA = 25, ++IFLA_VXLAN_LABEL = 26, ++IFLA_VXLAN_GPE = 27, ++IFLA_VXLAN_TTL_INHERIT = 28, ++IFLA_VXLAN_DF = 29, ++IFLA_VXLAN_VNIFILTER = 30, ++__IFLA_VXLAN_MAX = 31, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vxlan_port_range { ++pub low: __be16, ++pub high: __be16, ++} ++impl ifla_vxlan_df { ++pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum ifla_vxlan_df { ++VXLAN_DF_UNSET = 0, ++VXLAN_DF_SET = 1, ++VXLAN_DF_INHERIT = 2, ++__VXLAN_DF_END = 3, ++} ++pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; ++pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; ++pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; ++pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; ++pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; ++pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; ++pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; ++pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; ++pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; ++pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; ++pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; ++pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; ++pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; ++pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; ++pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; ++pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_22 { ++IFLA_GENEVE_UNSPEC = 0, ++IFLA_GENEVE_ID = 1, ++IFLA_GENEVE_REMOTE = 2, ++IFLA_GENEVE_TTL = 3, ++IFLA_GENEVE_TOS = 4, ++IFLA_GENEVE_PORT = 5, ++IFLA_GENEVE_COLLECT_METADATA = 6, ++IFLA_GENEVE_REMOTE6 = 7, ++IFLA_GENEVE_UDP_CSUM = 8, ++IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9, ++IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10, ++IFLA_GENEVE_LABEL = 11, ++IFLA_GENEVE_TTL_INHERIT = 12, ++IFLA_GENEVE_DF = 13, ++IFLA_GENEVE_INNER_PROTO_INHERIT = 14, ++__IFLA_GENEVE_MAX = 15, ++} ++impl ifla_geneve_df { ++pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum ifla_geneve_df { ++GENEVE_DF_UNSET = 0, ++GENEVE_DF_SET = 1, ++GENEVE_DF_INHERIT = 2, ++__GENEVE_DF_END = 3, ++} ++pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; ++pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; ++pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; ++pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; ++pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; ++pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_23 { ++IFLA_BAREUDP_UNSPEC = 0, ++IFLA_BAREUDP_PORT = 1, ++IFLA_BAREUDP_ETHERTYPE = 2, ++IFLA_BAREUDP_SRCPORT_MIN = 3, ++IFLA_BAREUDP_MULTIPROTO_MODE = 4, ++__IFLA_BAREUDP_MAX = 5, ++} ++pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; ++pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; ++pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_24 { ++IFLA_PPP_UNSPEC = 0, ++IFLA_PPP_DEV_FD = 1, ++__IFLA_PPP_MAX = 2, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum ifla_gtp_role { ++GTP_ROLE_GGSN = 0, ++GTP_ROLE_SGSN = 1, ++} ++pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; ++pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; ++pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; ++pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; ++pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; ++pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; ++pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; ++pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_25 { ++IFLA_GTP_UNSPEC = 0, ++IFLA_GTP_FD0 = 1, ++IFLA_GTP_FD1 = 2, ++IFLA_GTP_PDP_HASHSIZE = 3, ++IFLA_GTP_ROLE = 4, ++IFLA_GTP_CREATE_SOCKETS = 5, ++IFLA_GTP_RESTART_COUNT = 6, ++__IFLA_GTP_MAX = 7, ++} ++pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; ++pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; ++pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; ++pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; ++pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; ++pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; ++pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; ++pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; ++pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; ++pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; ++pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; ++pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; ++pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; ++pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; ++pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; ++pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; ++pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; ++pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; ++pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; ++pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; ++pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; ++pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; ++pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; ++pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; ++pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; ++pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; ++pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; ++pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; ++pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; ++pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; ++pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; ++pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; ++pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_26 { ++IFLA_BOND_UNSPEC = 0, ++IFLA_BOND_MODE = 1, ++IFLA_BOND_ACTIVE_SLAVE = 2, ++IFLA_BOND_MIIMON = 3, ++IFLA_BOND_UPDELAY = 4, ++IFLA_BOND_DOWNDELAY = 5, ++IFLA_BOND_USE_CARRIER = 6, ++IFLA_BOND_ARP_INTERVAL = 7, ++IFLA_BOND_ARP_IP_TARGET = 8, ++IFLA_BOND_ARP_VALIDATE = 9, ++IFLA_BOND_ARP_ALL_TARGETS = 10, ++IFLA_BOND_PRIMARY = 11, ++IFLA_BOND_PRIMARY_RESELECT = 12, ++IFLA_BOND_FAIL_OVER_MAC = 13, ++IFLA_BOND_XMIT_HASH_POLICY = 14, ++IFLA_BOND_RESEND_IGMP = 15, ++IFLA_BOND_NUM_PEER_NOTIF = 16, ++IFLA_BOND_ALL_SLAVES_ACTIVE = 17, ++IFLA_BOND_MIN_LINKS = 18, ++IFLA_BOND_LP_INTERVAL = 19, ++IFLA_BOND_PACKETS_PER_SLAVE = 20, ++IFLA_BOND_AD_LACP_RATE = 21, ++IFLA_BOND_AD_SELECT = 22, ++IFLA_BOND_AD_INFO = 23, ++IFLA_BOND_AD_ACTOR_SYS_PRIO = 24, ++IFLA_BOND_AD_USER_PORT_KEY = 25, ++IFLA_BOND_AD_ACTOR_SYSTEM = 26, ++IFLA_BOND_TLB_DYNAMIC_LB = 27, ++IFLA_BOND_PEER_NOTIF_DELAY = 28, ++IFLA_BOND_AD_LACP_ACTIVE = 29, ++IFLA_BOND_MISSED_MAX = 30, ++IFLA_BOND_NS_IP6_TARGET = 31, ++__IFLA_BOND_MAX = 32, ++} ++pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; ++pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; ++pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; ++pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; ++pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; ++pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; ++pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_27 { ++IFLA_BOND_AD_INFO_UNSPEC = 0, ++IFLA_BOND_AD_INFO_AGGREGATOR = 1, ++IFLA_BOND_AD_INFO_NUM_PORTS = 2, ++IFLA_BOND_AD_INFO_ACTOR_KEY = 3, ++IFLA_BOND_AD_INFO_PARTNER_KEY = 4, ++IFLA_BOND_AD_INFO_PARTNER_MAC = 5, ++__IFLA_BOND_AD_INFO_MAX = 6, ++} ++pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; ++pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; ++pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; ++pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; ++pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; ++pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; ++pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; ++pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; ++pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; ++pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; ++pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_28 { ++IFLA_BOND_SLAVE_UNSPEC = 0, ++IFLA_BOND_SLAVE_STATE = 1, ++IFLA_BOND_SLAVE_MII_STATUS = 2, ++IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3, ++IFLA_BOND_SLAVE_PERM_HWADDR = 4, ++IFLA_BOND_SLAVE_QUEUE_ID = 5, ++IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6, ++IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7, ++IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8, ++IFLA_BOND_SLAVE_PRIO = 9, ++__IFLA_BOND_SLAVE_MAX = 10, ++} ++pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; ++pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; ++pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_29 { ++IFLA_VF_INFO_UNSPEC = 0, ++IFLA_VF_INFO = 1, ++__IFLA_VF_INFO_MAX = 2, ++} ++pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; ++pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; ++pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; ++pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; ++pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; ++pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; ++pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; ++pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; ++pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; ++pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; ++pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; ++pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; ++pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; ++pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; ++pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_30 { ++IFLA_VF_UNSPEC = 0, ++IFLA_VF_MAC = 1, ++IFLA_VF_VLAN = 2, ++IFLA_VF_TX_RATE = 3, ++IFLA_VF_SPOOFCHK = 4, ++IFLA_VF_LINK_STATE = 5, ++IFLA_VF_RATE = 6, ++IFLA_VF_RSS_QUERY_EN = 7, ++IFLA_VF_STATS = 8, ++IFLA_VF_TRUST = 9, ++IFLA_VF_IB_NODE_GUID = 10, ++IFLA_VF_IB_PORT_GUID = 11, ++IFLA_VF_VLAN_LIST = 12, ++IFLA_VF_BROADCAST = 13, ++__IFLA_VF_MAX = 14, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_mac { ++pub vf: __u32, ++pub mac: [__u8; 32usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_broadcast { ++pub broadcast: [__u8; 32usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_vlan { ++pub vf: __u32, ++pub vlan: __u32, ++pub qos: __u32, ++} ++pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; ++pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; ++pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_31 { ++IFLA_VF_VLAN_INFO_UNSPEC = 0, ++IFLA_VF_VLAN_INFO = 1, ++__IFLA_VF_VLAN_INFO_MAX = 2, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_vlan_info { ++pub vf: __u32, ++pub vlan: __u32, ++pub qos: __u32, ++pub vlan_proto: __be16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_tx_rate { ++pub vf: __u32, ++pub rate: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_rate { ++pub vf: __u32, ++pub min_tx_rate: __u32, ++pub max_tx_rate: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_spoofchk { ++pub vf: __u32, ++pub setting: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_guid { ++pub vf: __u32, ++pub guid: __u64, ++} ++pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; ++pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; ++pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; ++pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_32 { ++IFLA_VF_LINK_STATE_AUTO = 0, ++IFLA_VF_LINK_STATE_ENABLE = 1, ++IFLA_VF_LINK_STATE_DISABLE = 2, ++__IFLA_VF_LINK_STATE_MAX = 3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_link_state { ++pub vf: __u32, ++pub link_state: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_rss_query_en { ++pub vf: __u32, ++pub setting: __u32, ++} ++pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; ++pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; ++pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; ++pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; ++pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; ++pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; ++pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; ++pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; ++pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; ++pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_33 { ++IFLA_VF_STATS_RX_PACKETS = 0, ++IFLA_VF_STATS_TX_PACKETS = 1, ++IFLA_VF_STATS_RX_BYTES = 2, ++IFLA_VF_STATS_TX_BYTES = 3, ++IFLA_VF_STATS_BROADCAST = 4, ++IFLA_VF_STATS_MULTICAST = 5, ++IFLA_VF_STATS_PAD = 6, ++IFLA_VF_STATS_RX_DROPPED = 7, ++IFLA_VF_STATS_TX_DROPPED = 8, ++__IFLA_VF_STATS_MAX = 9, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_trust { ++pub vf: __u32, ++pub setting: __u32, ++} ++pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; ++pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; ++pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_34 { ++IFLA_VF_PORT_UNSPEC = 0, ++IFLA_VF_PORT = 1, ++__IFLA_VF_PORT_MAX = 2, ++} ++pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; ++pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; ++pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; ++pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; ++pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; ++pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; ++pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; ++pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; ++pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_35 { ++IFLA_PORT_UNSPEC = 0, ++IFLA_PORT_VF = 1, ++IFLA_PORT_PROFILE = 2, ++IFLA_PORT_VSI_TYPE = 3, ++IFLA_PORT_INSTANCE_UUID = 4, ++IFLA_PORT_HOST_UUID = 5, ++IFLA_PORT_REQUEST = 6, ++IFLA_PORT_RESPONSE = 7, ++__IFLA_PORT_MAX = 8, ++} ++pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; ++pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; ++pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; ++pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_36 { ++PORT_REQUEST_PREASSOCIATE = 0, ++PORT_REQUEST_PREASSOCIATE_RR = 1, ++PORT_REQUEST_ASSOCIATE = 2, ++PORT_REQUEST_DISASSOCIATE = 3, ++} ++pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; ++pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; ++pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; ++pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; ++pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; ++pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; ++pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; ++pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; ++pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; ++pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; ++pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; ++pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; ++pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_37 { ++PORT_VDP_RESPONSE_SUCCESS = 0, ++PORT_VDP_RESPONSE_INVALID_FORMAT = 1, ++PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2, ++PORT_VDP_RESPONSE_UNUSED_VTID = 3, ++PORT_VDP_RESPONSE_VTID_VIOLATION = 4, ++PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5, ++PORT_VDP_RESPONSE_OUT_OF_SYNC = 6, ++PORT_PROFILE_RESPONSE_SUCCESS = 256, ++PORT_PROFILE_RESPONSE_INPROGRESS = 257, ++PORT_PROFILE_RESPONSE_INVALID = 258, ++PORT_PROFILE_RESPONSE_BADSTATE = 259, ++PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, ++PORT_PROFILE_RESPONSE_ERROR = 261, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_port_vsi { ++pub vsi_mgr_id: __u8, ++pub vsi_type_id: [__u8; 3usize], ++pub vsi_type_version: __u8, ++pub pad: [__u8; 3usize], ++} ++pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; ++pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; ++pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; ++pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; ++pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_38 { ++IFLA_IPOIB_UNSPEC = 0, ++IFLA_IPOIB_PKEY = 1, ++IFLA_IPOIB_MODE = 2, ++IFLA_IPOIB_UMCAST = 3, ++__IFLA_IPOIB_MAX = 4, ++} ++pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; ++pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_39 { ++IPOIB_MODE_DATAGRAM = 0, ++IPOIB_MODE_CONNECTED = 1, ++} ++pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; ++pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; ++pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_40 { ++HSR_PROTOCOL_HSR = 0, ++HSR_PROTOCOL_PRP = 1, ++HSR_PROTOCOL_MAX = 2, ++} ++pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; ++pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; ++pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; ++pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; ++pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; ++pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; ++pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; ++pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; ++pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_41 { ++IFLA_HSR_UNSPEC = 0, ++IFLA_HSR_SLAVE1 = 1, ++IFLA_HSR_SLAVE2 = 2, ++IFLA_HSR_MULTICAST_SPEC = 3, ++IFLA_HSR_SUPERVISION_ADDR = 4, ++IFLA_HSR_SEQ_NR = 5, ++IFLA_HSR_VERSION = 6, ++IFLA_HSR_PROTOCOL = 7, ++__IFLA_HSR_MAX = 8, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct if_stats_msg { ++pub family: __u8, ++pub pad1: __u8, ++pub pad2: __u16, ++pub ifindex: __u32, ++pub filter_mask: __u32, ++} ++pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; ++pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; ++pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; ++pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; ++pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; ++pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; ++pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_42 { ++IFLA_STATS_UNSPEC = 0, ++IFLA_STATS_LINK_64 = 1, ++IFLA_STATS_LINK_XSTATS = 2, ++IFLA_STATS_LINK_XSTATS_SLAVE = 3, ++IFLA_STATS_LINK_OFFLOAD_XSTATS = 4, ++IFLA_STATS_AF_SPEC = 5, ++__IFLA_STATS_MAX = 6, ++} ++pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; ++pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; ++pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; ++pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_43 { ++IFLA_STATS_GETSET_UNSPEC = 0, ++IFLA_STATS_GET_FILTERS = 1, ++IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, ++__IFLA_STATS_GETSET_MAX = 3, ++} ++pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; ++pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; ++pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; ++pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_44 { ++LINK_XSTATS_TYPE_UNSPEC = 0, ++LINK_XSTATS_TYPE_BRIDGE = 1, ++LINK_XSTATS_TYPE_BOND = 2, ++__LINK_XSTATS_TYPE_MAX = 3, ++} ++pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; ++pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; ++pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; ++pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; ++pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_45 { ++IFLA_OFFLOAD_XSTATS_UNSPEC = 0, ++IFLA_OFFLOAD_XSTATS_CPU_HIT = 1, ++IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2, ++IFLA_OFFLOAD_XSTATS_L3_STATS = 3, ++__IFLA_OFFLOAD_XSTATS_MAX = 4, ++} ++pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; ++pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; ++pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; ++pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_46 { ++IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0, ++IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1, ++IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, ++__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, ++} ++pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; ++pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; ++pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; ++pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; ++pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_47 { ++XDP_ATTACHED_NONE = 0, ++XDP_ATTACHED_DRV = 1, ++XDP_ATTACHED_SKB = 2, ++XDP_ATTACHED_HW = 3, ++XDP_ATTACHED_MULTI = 4, ++} ++pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; ++pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; ++pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; ++pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; ++pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; ++pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; ++pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; ++pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; ++pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; ++pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_48 { ++IFLA_XDP_UNSPEC = 0, ++IFLA_XDP_FD = 1, ++IFLA_XDP_ATTACHED = 2, ++IFLA_XDP_FLAGS = 3, ++IFLA_XDP_PROG_ID = 4, ++IFLA_XDP_DRV_PROG_ID = 5, ++IFLA_XDP_SKB_PROG_ID = 6, ++IFLA_XDP_HW_PROG_ID = 7, ++IFLA_XDP_EXPECTED_FD = 8, ++__IFLA_XDP_MAX = 9, ++} ++pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; ++pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; ++pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; ++pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; ++pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; ++pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; ++pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_49 { ++IFLA_EVENT_NONE = 0, ++IFLA_EVENT_REBOOT = 1, ++IFLA_EVENT_FEATURES = 2, ++IFLA_EVENT_BONDING_FAILOVER = 3, ++IFLA_EVENT_NOTIFY_PEERS = 4, ++IFLA_EVENT_IGMP_RESEND = 5, ++IFLA_EVENT_BONDING_OPTIONS = 6, ++} ++pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; ++pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; ++pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; ++pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; ++pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; ++pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; ++pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; ++pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; ++pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; ++pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; ++pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_50 { ++IFLA_TUN_UNSPEC = 0, ++IFLA_TUN_OWNER = 1, ++IFLA_TUN_GROUP = 2, ++IFLA_TUN_TYPE = 3, ++IFLA_TUN_PI = 4, ++IFLA_TUN_VNET_HDR = 5, ++IFLA_TUN_PERSIST = 6, ++IFLA_TUN_MULTI_QUEUE = 7, ++IFLA_TUN_NUM_QUEUES = 8, ++IFLA_TUN_NUM_DISABLED_QUEUES = 9, ++__IFLA_TUN_MAX = 10, ++} ++pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; ++pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; ++pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; ++pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_51 { ++IFLA_RMNET_UNSPEC = 0, ++IFLA_RMNET_MUX_ID = 1, ++IFLA_RMNET_FLAGS = 2, ++__IFLA_RMNET_MAX = 3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_rmnet_flags { ++pub flags: __u32, ++pub mask: __u32, ++} ++pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; ++pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; ++pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_52 { ++IFLA_MCTP_UNSPEC = 0, ++IFLA_MCTP_NET = 1, ++__IFLA_MCTP_MAX = 2, ++} ++pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; ++pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; ++pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_53 { ++IFLA_DSA_UNSPEC = 0, ++IFLA_DSA_MASTER = 1, ++__IFLA_DSA_MAX = 2, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifaddrmsg { ++pub ifa_family: __u8, ++pub ifa_prefixlen: __u8, ++pub ifa_flags: __u8, ++pub ifa_scope: __u8, ++pub ifa_index: __u32, ++} ++pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; ++pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; ++pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; ++pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; ++pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; ++pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; ++pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; ++pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; ++pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; ++pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; ++pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; ++pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; ++pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_54 { ++IFA_UNSPEC = 0, ++IFA_ADDRESS = 1, ++IFA_LOCAL = 2, ++IFA_LABEL = 3, ++IFA_BROADCAST = 4, ++IFA_ANYCAST = 5, ++IFA_CACHEINFO = 6, ++IFA_MULTICAST = 7, ++IFA_FLAGS = 8, ++IFA_RT_PRIORITY = 9, ++IFA_TARGET_NETNSID = 10, ++IFA_PROTO = 11, ++__IFA_MAX = 12, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifa_cacheinfo { ++pub ifa_prefered: __u32, ++pub ifa_valid: __u32, ++pub cstamp: __u32, ++pub tstamp: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ndmsg { ++pub ndm_family: __u8, ++pub ndm_pad1: __u8, ++pub ndm_pad2: __u16, ++pub ndm_ifindex: __s32, ++pub ndm_state: __u16, ++pub ndm_flags: __u8, ++pub ndm_type: __u8, ++} ++pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; ++pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; ++pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; ++pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; ++pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; ++pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; ++pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; ++pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; ++pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; ++pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; ++pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; ++pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; ++pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; ++pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; ++pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; ++pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; ++pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; ++pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; ++pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_55 { ++NDA_UNSPEC = 0, ++NDA_DST = 1, ++NDA_LLADDR = 2, ++NDA_CACHEINFO = 3, ++NDA_PROBES = 4, ++NDA_VLAN = 5, ++NDA_PORT = 6, ++NDA_VNI = 7, ++NDA_IFINDEX = 8, ++NDA_MASTER = 9, ++NDA_LINK_NETNSID = 10, ++NDA_SRC_VNI = 11, ++NDA_PROTOCOL = 12, ++NDA_NH_ID = 13, ++NDA_FDB_EXT_ATTRS = 14, ++NDA_FLAGS_EXT = 15, ++NDA_NDM_STATE_MASK = 16, ++NDA_NDM_FLAGS_MASK = 17, ++__NDA_MAX = 18, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nda_cacheinfo { ++pub ndm_confirmed: __u32, ++pub ndm_used: __u32, ++pub ndm_updated: __u32, ++pub ndm_refcnt: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ndt_stats { ++pub ndts_allocs: __u64, ++pub ndts_destroys: __u64, ++pub ndts_hash_grows: __u64, ++pub ndts_res_failed: __u64, ++pub ndts_lookups: __u64, ++pub ndts_hits: __u64, ++pub ndts_rcv_probes_mcast: __u64, ++pub ndts_rcv_probes_ucast: __u64, ++pub ndts_periodic_gc_runs: __u64, ++pub ndts_forced_gc_runs: __u64, ++pub ndts_table_fulls: __u64, ++} ++pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; ++pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; ++pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; ++pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; ++pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; ++pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; ++pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; ++pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; ++pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; ++pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; ++pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; ++pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; ++pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; ++pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; ++pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; ++pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; ++pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; ++pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; ++pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; ++pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; ++pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_56 { ++NDTPA_UNSPEC = 0, ++NDTPA_IFINDEX = 1, ++NDTPA_REFCNT = 2, ++NDTPA_REACHABLE_TIME = 3, ++NDTPA_BASE_REACHABLE_TIME = 4, ++NDTPA_RETRANS_TIME = 5, ++NDTPA_GC_STALETIME = 6, ++NDTPA_DELAY_PROBE_TIME = 7, ++NDTPA_QUEUE_LEN = 8, ++NDTPA_APP_PROBES = 9, ++NDTPA_UCAST_PROBES = 10, ++NDTPA_MCAST_PROBES = 11, ++NDTPA_ANYCAST_DELAY = 12, ++NDTPA_PROXY_DELAY = 13, ++NDTPA_PROXY_QLEN = 14, ++NDTPA_LOCKTIME = 15, ++NDTPA_QUEUE_LENBYTES = 16, ++NDTPA_MCAST_REPROBES = 17, ++NDTPA_PAD = 18, ++NDTPA_INTERVAL_PROBE_TIME_MS = 19, ++__NDTPA_MAX = 20, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ndtmsg { ++pub ndtm_family: __u8, ++pub ndtm_pad1: __u8, ++pub ndtm_pad2: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ndt_config { ++pub ndtc_key_len: __u16, ++pub ndtc_entry_size: __u16, ++pub ndtc_entries: __u32, ++pub ndtc_last_flush: __u32, ++pub ndtc_last_rand: __u32, ++pub ndtc_hash_rnd: __u32, ++pub ndtc_hash_mask: __u32, ++pub ndtc_hash_chain_gc: __u32, ++pub ndtc_proxy_qlen: __u32, ++} ++pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; ++pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; ++pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; ++pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; ++pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; ++pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; ++pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; ++pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; ++pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; ++pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; ++pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_57 { ++NDTA_UNSPEC = 0, ++NDTA_NAME = 1, ++NDTA_THRESH1 = 2, ++NDTA_THRESH2 = 3, ++NDTA_THRESH3 = 4, ++NDTA_CONFIG = 5, ++NDTA_PARMS = 6, ++NDTA_STATS = 7, ++NDTA_GC_INTERVAL = 8, ++NDTA_PAD = 9, ++__NDTA_MAX = 10, ++} ++pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; ++pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_58 { ++FDB_NOTIFY_BIT = 1, ++FDB_NOTIFY_INACTIVE_BIT = 2, ++} ++pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; ++pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; ++pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; ++pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_59 { ++NFEA_UNSPEC = 0, ++NFEA_ACTIVITY_NOTIFY = 1, ++NFEA_DONT_REFRESH = 2, ++__NFEA_MAX = 3, ++} ++pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; ++pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; ++pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; ++pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; ++pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; ++pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; ++pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; ++pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; ++pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; ++pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; ++pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; ++pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; ++pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; ++pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; ++pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; ++pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; ++pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; ++pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; ++pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; ++pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; ++pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; ++pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; ++pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; ++pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; ++pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; ++pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; ++pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; ++pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; ++pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; ++pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; ++pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; ++pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; ++pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; ++pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; ++pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; ++pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; ++pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; ++pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; ++pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; ++pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; ++pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; ++pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; ++pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; ++pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; ++pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; ++pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; ++pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; ++pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; ++pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; ++pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; ++pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; ++pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; ++pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; ++pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; ++pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; ++pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; ++pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; ++pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; ++pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; ++pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; ++pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; ++pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; ++pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; ++pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; ++pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; ++pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; ++pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; ++pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; ++pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; ++pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; ++pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; ++pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; ++pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_60 { ++RTM_BASE = 16, ++RTM_DELLINK = 17, ++RTM_GETLINK = 18, ++RTM_SETLINK = 19, ++RTM_NEWADDR = 20, ++RTM_DELADDR = 21, ++RTM_GETADDR = 22, ++RTM_NEWROUTE = 24, ++RTM_DELROUTE = 25, ++RTM_GETROUTE = 26, ++RTM_NEWNEIGH = 28, ++RTM_DELNEIGH = 29, ++RTM_GETNEIGH = 30, ++RTM_NEWRULE = 32, ++RTM_DELRULE = 33, ++RTM_GETRULE = 34, ++RTM_NEWQDISC = 36, ++RTM_DELQDISC = 37, ++RTM_GETQDISC = 38, ++RTM_NEWTCLASS = 40, ++RTM_DELTCLASS = 41, ++RTM_GETTCLASS = 42, ++RTM_NEWTFILTER = 44, ++RTM_DELTFILTER = 45, ++RTM_GETTFILTER = 46, ++RTM_NEWACTION = 48, ++RTM_DELACTION = 49, ++RTM_GETACTION = 50, ++RTM_NEWPREFIX = 52, ++RTM_GETMULTICAST = 58, ++RTM_GETANYCAST = 62, ++RTM_NEWNEIGHTBL = 64, ++RTM_GETNEIGHTBL = 66, ++RTM_SETNEIGHTBL = 67, ++RTM_NEWNDUSEROPT = 68, ++RTM_NEWADDRLABEL = 72, ++RTM_DELADDRLABEL = 73, ++RTM_GETADDRLABEL = 74, ++RTM_GETDCB = 78, ++RTM_SETDCB = 79, ++RTM_NEWNETCONF = 80, ++RTM_DELNETCONF = 81, ++RTM_GETNETCONF = 82, ++RTM_NEWMDB = 84, ++RTM_DELMDB = 85, ++RTM_GETMDB = 86, ++RTM_NEWNSID = 88, ++RTM_DELNSID = 89, ++RTM_GETNSID = 90, ++RTM_NEWSTATS = 92, ++RTM_GETSTATS = 94, ++RTM_SETSTATS = 95, ++RTM_NEWCACHEREPORT = 96, ++RTM_NEWCHAIN = 100, ++RTM_DELCHAIN = 101, ++RTM_GETCHAIN = 102, ++RTM_NEWNEXTHOP = 104, ++RTM_DELNEXTHOP = 105, ++RTM_GETNEXTHOP = 106, ++RTM_NEWLINKPROP = 108, ++RTM_DELLINKPROP = 109, ++RTM_GETLINKPROP = 110, ++RTM_NEWVLAN = 112, ++RTM_DELVLAN = 113, ++RTM_GETVLAN = 114, ++RTM_NEWNEXTHOPBUCKET = 116, ++RTM_DELNEXTHOPBUCKET = 117, ++RTM_GETNEXTHOPBUCKET = 118, ++RTM_NEWTUNNEL = 120, ++RTM_DELTUNNEL = 121, ++RTM_GETTUNNEL = 122, ++__RTM_MAX = 123, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtattr { ++pub rta_len: crate::ctypes::c_ushort, ++pub rta_type: crate::ctypes::c_ushort, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtmsg { ++pub rtm_family: crate::ctypes::c_uchar, ++pub rtm_dst_len: crate::ctypes::c_uchar, ++pub rtm_src_len: crate::ctypes::c_uchar, ++pub rtm_tos: crate::ctypes::c_uchar, ++pub rtm_table: crate::ctypes::c_uchar, ++pub rtm_protocol: crate::ctypes::c_uchar, ++pub rtm_scope: crate::ctypes::c_uchar, ++pub rtm_type: crate::ctypes::c_uchar, ++pub rtm_flags: crate::ctypes::c_uint, ++} ++pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; ++pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; ++pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; ++pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; ++pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; ++pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; ++pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; ++pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; ++pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; ++pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; ++pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; ++pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; ++pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_61 { ++RTN_UNSPEC = 0, ++RTN_UNICAST = 1, ++RTN_LOCAL = 2, ++RTN_BROADCAST = 3, ++RTN_ANYCAST = 4, ++RTN_MULTICAST = 5, ++RTN_BLACKHOLE = 6, ++RTN_UNREACHABLE = 7, ++RTN_PROHIBIT = 8, ++RTN_THROW = 9, ++RTN_NAT = 10, ++RTN_XRESOLVE = 11, ++__RTN_MAX = 12, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum rt_scope_t { ++RT_SCOPE_UNIVERSE = 0, ++RT_SCOPE_SITE = 200, ++RT_SCOPE_LINK = 253, ++RT_SCOPE_HOST = 254, ++RT_SCOPE_NOWHERE = 255, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum rt_class_t { ++RT_TABLE_UNSPEC = 0, ++RT_TABLE_COMPAT = 252, ++RT_TABLE_DEFAULT = 253, ++RT_TABLE_MAIN = 254, ++RT_TABLE_LOCAL = 255, ++RT_TABLE_MAX = 4294967295, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum rtattr_type_t { ++RTA_UNSPEC = 0, ++RTA_DST = 1, ++RTA_SRC = 2, ++RTA_IIF = 3, ++RTA_OIF = 4, ++RTA_GATEWAY = 5, ++RTA_PRIORITY = 6, ++RTA_PREFSRC = 7, ++RTA_METRICS = 8, ++RTA_MULTIPATH = 9, ++RTA_PROTOINFO = 10, ++RTA_FLOW = 11, ++RTA_CACHEINFO = 12, ++RTA_SESSION = 13, ++RTA_MP_ALGO = 14, ++RTA_TABLE = 15, ++RTA_MARK = 16, ++RTA_MFC_STATS = 17, ++RTA_VIA = 18, ++RTA_NEWDST = 19, ++RTA_PREF = 20, ++RTA_ENCAP_TYPE = 21, ++RTA_ENCAP = 22, ++RTA_EXPIRES = 23, ++RTA_PAD = 24, ++RTA_UID = 25, ++RTA_TTL_PROPAGATE = 26, ++RTA_IP_PROTO = 27, ++RTA_SPORT = 28, ++RTA_DPORT = 29, ++RTA_NH_ID = 30, ++__RTA_MAX = 31, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnexthop { ++pub rtnh_len: crate::ctypes::c_ushort, ++pub rtnh_flags: crate::ctypes::c_uchar, ++pub rtnh_hops: crate::ctypes::c_uchar, ++pub rtnh_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct rtvia { ++pub rtvia_family: __kernel_sa_family_t, ++pub rtvia_addr: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rta_cacheinfo { ++pub rta_clntref: __u32, ++pub rta_lastuse: __u32, ++pub rta_expires: __s32, ++pub rta_error: __u32, ++pub rta_used: __u32, ++pub rta_id: __u32, ++pub rta_ts: __u32, ++pub rta_tsage: __u32, ++} ++pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; ++pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; ++pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; ++pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; ++pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; ++pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; ++pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; ++pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; ++pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; ++pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; ++pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; ++pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; ++pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; ++pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; ++pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; ++pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; ++pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; ++pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; ++pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_62 { ++RTAX_UNSPEC = 0, ++RTAX_LOCK = 1, ++RTAX_MTU = 2, ++RTAX_WINDOW = 3, ++RTAX_RTT = 4, ++RTAX_RTTVAR = 5, ++RTAX_SSTHRESH = 6, ++RTAX_CWND = 7, ++RTAX_ADVMSS = 8, ++RTAX_REORDERING = 9, ++RTAX_HOPLIMIT = 10, ++RTAX_INITCWND = 11, ++RTAX_FEATURES = 12, ++RTAX_RTO_MIN = 13, ++RTAX_INITRWND = 14, ++RTAX_QUICKACK = 15, ++RTAX_CC_ALGO = 16, ++RTAX_FASTOPEN_NO_COOKIE = 17, ++__RTAX_MAX = 18, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct rta_session { ++pub proto: __u8, ++pub pad1: __u8, ++pub pad2: __u16, ++pub u: rta_session__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union rta_session__bindgen_ty_1 { ++pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, ++pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, ++pub spi: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { ++pub sport: __u16, ++pub dport: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { ++pub type_: __u8, ++pub code: __u8, ++pub ident: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rta_mfc_stats { ++pub mfcs_packets: __u64, ++pub mfcs_bytes: __u64, ++pub mfcs_wrong_if: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtgenmsg { ++pub rtgen_family: crate::ctypes::c_uchar, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifinfomsg { ++pub ifi_family: crate::ctypes::c_uchar, ++pub __ifi_pad: crate::ctypes::c_uchar, ++pub ifi_type: crate::ctypes::c_ushort, ++pub ifi_index: crate::ctypes::c_int, ++pub ifi_flags: crate::ctypes::c_uint, ++pub ifi_change: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct prefixmsg { ++pub prefix_family: crate::ctypes::c_uchar, ++pub prefix_pad1: crate::ctypes::c_uchar, ++pub prefix_pad2: crate::ctypes::c_ushort, ++pub prefix_ifindex: crate::ctypes::c_int, ++pub prefix_type: crate::ctypes::c_uchar, ++pub prefix_len: crate::ctypes::c_uchar, ++pub prefix_flags: crate::ctypes::c_uchar, ++pub prefix_pad3: crate::ctypes::c_uchar, ++} ++pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; ++pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; ++pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; ++pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_63 { ++PREFIX_UNSPEC = 0, ++PREFIX_ADDRESS = 1, ++PREFIX_CACHEINFO = 2, ++__PREFIX_MAX = 3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct prefix_cacheinfo { ++pub preferred_time: __u32, ++pub valid_time: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcmsg { ++pub tcm_family: crate::ctypes::c_uchar, ++pub tcm__pad1: crate::ctypes::c_uchar, ++pub tcm__pad2: crate::ctypes::c_ushort, ++pub tcm_ifindex: crate::ctypes::c_int, ++pub tcm_handle: __u32, ++pub tcm_parent: __u32, ++pub tcm_info: __u32, ++} ++pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; ++pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; ++pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; ++pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; ++pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; ++pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; ++pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; ++pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; ++pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; ++pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; ++pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; ++pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; ++pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; ++pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; ++pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; ++pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; ++pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_64 { ++TCA_UNSPEC = 0, ++TCA_KIND = 1, ++TCA_OPTIONS = 2, ++TCA_STATS = 3, ++TCA_XSTATS = 4, ++TCA_RATE = 5, ++TCA_FCNT = 6, ++TCA_STATS2 = 7, ++TCA_STAB = 8, ++TCA_PAD = 9, ++TCA_DUMP_INVISIBLE = 10, ++TCA_CHAIN = 11, ++TCA_HW_OFFLOAD = 12, ++TCA_INGRESS_BLOCK = 13, ++TCA_EGRESS_BLOCK = 14, ++TCA_DUMP_FLAGS = 15, ++__TCA_MAX = 16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nduseroptmsg { ++pub nduseropt_family: crate::ctypes::c_uchar, ++pub nduseropt_pad1: crate::ctypes::c_uchar, ++pub nduseropt_opts_len: crate::ctypes::c_ushort, ++pub nduseropt_ifindex: crate::ctypes::c_int, ++pub nduseropt_icmp_type: __u8, ++pub nduseropt_icmp_code: __u8, ++pub nduseropt_pad2: crate::ctypes::c_ushort, ++pub nduseropt_pad3: crate::ctypes::c_uint, ++} ++pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; ++pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; ++pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_65 { ++NDUSEROPT_UNSPEC = 0, ++NDUSEROPT_SRCADDR = 1, ++__NDUSEROPT_MAX = 2, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum rtnetlink_groups { ++RTNLGRP_NONE = 0, ++RTNLGRP_LINK = 1, ++RTNLGRP_NOTIFY = 2, ++RTNLGRP_NEIGH = 3, ++RTNLGRP_TC = 4, ++RTNLGRP_IPV4_IFADDR = 5, ++RTNLGRP_IPV4_MROUTE = 6, ++RTNLGRP_IPV4_ROUTE = 7, ++RTNLGRP_IPV4_RULE = 8, ++RTNLGRP_IPV6_IFADDR = 9, ++RTNLGRP_IPV6_MROUTE = 10, ++RTNLGRP_IPV6_ROUTE = 11, ++RTNLGRP_IPV6_IFINFO = 12, ++RTNLGRP_DECnet_IFADDR = 13, ++RTNLGRP_NOP2 = 14, ++RTNLGRP_DECnet_ROUTE = 15, ++RTNLGRP_DECnet_RULE = 16, ++RTNLGRP_NOP4 = 17, ++RTNLGRP_IPV6_PREFIX = 18, ++RTNLGRP_IPV6_RULE = 19, ++RTNLGRP_ND_USEROPT = 20, ++RTNLGRP_PHONET_IFADDR = 21, ++RTNLGRP_PHONET_ROUTE = 22, ++RTNLGRP_DCB = 23, ++RTNLGRP_IPV4_NETCONF = 24, ++RTNLGRP_IPV6_NETCONF = 25, ++RTNLGRP_MDB = 26, ++RTNLGRP_MPLS_ROUTE = 27, ++RTNLGRP_NSID = 28, ++RTNLGRP_MPLS_NETCONF = 29, ++RTNLGRP_IPV4_MROUTE_R = 30, ++RTNLGRP_IPV6_MROUTE_R = 31, ++RTNLGRP_NEXTHOP = 32, ++RTNLGRP_BRVLAN = 33, ++RTNLGRP_MCTP_IFADDR = 34, ++RTNLGRP_TUNNEL = 35, ++RTNLGRP_STATS = 36, ++__RTNLGRP_MAX = 37, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcamsg { ++pub tca_family: crate::ctypes::c_uchar, ++pub tca__pad1: crate::ctypes::c_uchar, ++pub tca__pad2: crate::ctypes::c_ushort, ++} ++pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; ++pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; ++pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; ++pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; ++pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; ++pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_66 { ++TCA_ROOT_UNSPEC = 0, ++TCA_ROOT_TAB = 1, ++TCA_ROOT_FLAGS = 2, ++TCA_ROOT_COUNT = 3, ++TCA_ROOT_TIME_DELTA = 4, ++__TCA_ROOT_MAX = 5, ++} +-- +2.41.0 + diff --git a/0002-vendor-linux-raw-sys-0.1.4.patch b/0002-vendor-linux-raw-sys-0.1.4.patch new file mode 100644 index 0000000..7929703 --- /dev/null +++ b/0002-vendor-linux-raw-sys-0.1.4.patch @@ -0,0 +1,9745 @@ +From 10a9eb54bfb73676b3166bc3f85a84d2aacd7c91 Mon Sep 17 00:00:00 2001 +From: hev +Date: Tue, 8 Aug 2023 13:54:57 +0800 +Subject: [PATCH 2/6] vendor: linux-raw-sys-0.1.4 + +--- + vendor/linux-raw-sys/.cargo-checksum.json | 2 +- + vendor/linux-raw-sys/src/lib.rs | 16 + + vendor/linux-raw-sys/src/loongarch64/errno.rs | 135 + + .../linux-raw-sys/src/loongarch64/general.rs | 5205 +++++++++++++++++ + vendor/linux-raw-sys/src/loongarch64/ioctl.rs | 1465 +++++ + .../linux-raw-sys/src/loongarch64/netlink.rs | 2860 +++++++++ + 6 files changed, 9682 insertions(+), 1 deletion(-) + create mode 100644 vendor/linux-raw-sys/src/loongarch64/errno.rs + create mode 100644 vendor/linux-raw-sys/src/loongarch64/general.rs + create mode 100644 vendor/linux-raw-sys/src/loongarch64/ioctl.rs + create mode 100644 vendor/linux-raw-sys/src/loongarch64/netlink.rs + +diff --git a/vendor/linux-raw-sys/.cargo-checksum.json b/vendor/linux-raw-sys/.cargo-checksum.json +index c03cdb88d..8ee585db0 100644 +--- a/vendor/linux-raw-sys/.cargo-checksum.json ++++ b/vendor/linux-raw-sys/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{"CODE_OF_CONDUCT.md":"ccd9e538ce44713a2486cc8e4c01b8c8b846d1ccff15de728d8d6fa9a7f846cd","COPYRIGHT":"3290ae0fbc9ddb77d2239121d710f0bb9d31b3b4744e6d97fe01e652b4c1870b","Cargo.toml":"f09fb593f5ffe340754c48be1d18e84ebb68aec0a870a6679b4d353d34639e75","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"018c6f3402f53659e773ed3d9f7b340fb0f76cba6354c0f13705960a7ba23d61","src/aarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/aarch64/general.rs":"9a13415e64cd991e52688dcfe05a265f74c528cadaa5ed5be1e4b323dfdce62d","src/aarch64/ioctl.rs":"723f963524494ecdc1e89ccdae22930e08103b15a54e1830647e5eab53f324ce","src/aarch64/netlink.rs":"e79e75c8c0c299020d9375dda2103ffca837f37a4814f25c3d6af6af1922958f","src/arm/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/arm/general.rs":"6fb927aa8fe794e4586e6e917f6c2f3ea22dd93fdc7326496aabf21a6a93093f","src/arm/ioctl.rs":"7dd20d0458d141bcc0c8b512bc116a6bbe8e44cdc53bb64fa7b708de1c86da0f","src/arm/netlink.rs":"6aaee90e508ddeaca3637291e9a12f4257f6d27e73c6eec11868d948e1e4c724","src/lib.rs":"b41bc02b8eede907dc4381805eae16ccda7857082f2b6547c0e55775018de687","src/mips/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips/general.rs":"3374e45bbcfb2f62f163fbff05d9b786a4fd036b9a4beb9671b14e865048a9e3","src/mips/ioctl.rs":"84350b09b48effd8658c0cb455d158d40560e1480588843b92be4ad2c539141e","src/mips/netlink.rs":"3acc8c5156e550a2d7c299919cdabb75e4225f450df765c447bcbc89323cc463","src/mips64/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips64/general.rs":"22c331bad3f75baea83a5eea5211318ff5979be2a4401f7dd826d8dd2adfc254","src/mips64/ioctl.rs":"efa0a37a086ff4dff1889acdd728edd54f31b0ba389b54af7dd70279a9429537","src/mips64/netlink.rs":"9b92fff4ba43d4718cd1e880ccdfb25eb4a4d0b3136309cba9631e958187fd45","src/powerpc/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc/general.rs":"4ea12c0d6ad14f71291c688fbd78014e35ff3a4115155461fca5084960575de5","src/powerpc/ioctl.rs":"be402bfba0fd1014bc49648402f15aec5ad603e5991158db64ae07117eb60ffe","src/powerpc/netlink.rs":"745a7256254b0153b4aaf8c2fc5371aaca6d79666fddc5f539edc4c4e6cc1fcd","src/powerpc64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc64/general.rs":"7cc72131ebb7736700500148e776e221619f89ecdf119207d7f8a24171810525","src/powerpc64/ioctl.rs":"be402bfba0fd1014bc49648402f15aec5ad603e5991158db64ae07117eb60ffe","src/powerpc64/netlink.rs":"b7be2f1ae16cc6b360d3865fc786188f0c820f48ac8923db5eed538f44c66793","src/riscv32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv32/general.rs":"47740516fd13af34216fca38a9be1eb3d46739e16cfbcd607d0c142c72b3f21e","src/riscv32/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/riscv32/netlink.rs":"1b08bd4b65b500b34b72e5b7cf4738b7529be1fb38096bb75299e228ab1f22f6","src/riscv64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv64/general.rs":"65714484bd8a745c23f6bab9dc9546a99ef2974c80afc9e7a430b92ad1e2b08d","src/riscv64/ioctl.rs":"935141f7bc36e4d2c6c6be38aa42026a747f0bfc72bbfcc7cda3a9c540151470","src/riscv64/netlink.rs":"8b73509c05aaace7619168ecf6b128e4ca6db7f5bd3eb33994a2b57e8b9e0344","src/s390x/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/s390x/general.rs":"499eac9bc32a159a6f99371250d32d03ec22c16d357702dde133174478a850ff","src/s390x/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/s390x/netlink.rs":"25f47d91f9b1a71f4a33543ddcf6823c7c94e95c2f82587f5bbd9d1a892d61f4","src/sparc/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc/general.rs":"7a2e95915edd5207ef0de9dc524e38bc51a93c48d14275f88cb27664c8329a03","src/sparc/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc/netlink.rs":"b9a608f050677cd7cebcb832705935fa8c79858870c82a12c4fda4edf2f1023a","src/sparc64/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc64/general.rs":"06cea8ae67e9f07c99dd2556a5ac7dc3c963dce1fa317fe396c53caf5b2db65b","src/sparc64/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc64/netlink.rs":"2e718411da2f58aa8bab75b384de38b778c4bea25d3065210bc5e78b7cdde2e8","src/x32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x32/general.rs":"b5189e62ee69bc605570804495e4c0cc793498f1002fdc80c135e00afa53c6ce","src/x32/ioctl.rs":"85e548f8536204552b5b23fb8b3bfeade961fc73c41a9691156012304e0dd84c","src/x32/netlink.rs":"275a7694600599f6856a2606133bd9c203261f164d9153cd0cd8c253a6428769","src/x86/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86/general.rs":"89186979648bde769f128ab85a864188b5ca65b99803c8ee1f834302bb42317c","src/x86/ioctl.rs":"6238356fcad51581c1bfaac29ca6b418a7cb0a0a37692cbd0d370a42890fd319","src/x86/netlink.rs":"6aaee90e508ddeaca3637291e9a12f4257f6d27e73c6eec11868d948e1e4c724","src/x86_64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86_64/general.rs":"9150b5bbac59f17eb59505a0effe7ec0043a47f97f3124b5377a10422a28e80f","src/x86_64/ioctl.rs":"85e548f8536204552b5b23fb8b3bfeade961fc73c41a9691156012304e0dd84c","src/x86_64/netlink.rs":"fa40e0f28bb09540e219ac6a5f31f50efdc770aa70704a809827dae6a4573885"},"package":"f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"} +\ No newline at end of file ++{"files":{"CODE_OF_CONDUCT.md":"ccd9e538ce44713a2486cc8e4c01b8c8b846d1ccff15de728d8d6fa9a7f846cd","COPYRIGHT":"3290ae0fbc9ddb77d2239121d710f0bb9d31b3b4744e6d97fe01e652b4c1870b","Cargo.toml":"f09fb593f5ffe340754c48be1d18e84ebb68aec0a870a6679b4d353d34639e75","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"018c6f3402f53659e773ed3d9f7b340fb0f76cba6354c0f13705960a7ba23d61","src/aarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/aarch64/general.rs":"9a13415e64cd991e52688dcfe05a265f74c528cadaa5ed5be1e4b323dfdce62d","src/aarch64/ioctl.rs":"723f963524494ecdc1e89ccdae22930e08103b15a54e1830647e5eab53f324ce","src/aarch64/netlink.rs":"e79e75c8c0c299020d9375dda2103ffca837f37a4814f25c3d6af6af1922958f","src/arm/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/arm/general.rs":"6fb927aa8fe794e4586e6e917f6c2f3ea22dd93fdc7326496aabf21a6a93093f","src/arm/ioctl.rs":"7dd20d0458d141bcc0c8b512bc116a6bbe8e44cdc53bb64fa7b708de1c86da0f","src/arm/netlink.rs":"6aaee90e508ddeaca3637291e9a12f4257f6d27e73c6eec11868d948e1e4c724","src/lib.rs":"e6b4d0bfc2c97f2e3d6541e7240021f32e9918ff51f4663b23e386e2af0e301a","src/loongarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/loongarch64/general.rs":"3773fec3ddf27668d2fd48ac2b83a551a06db5f017ee2242e70c194cce3bef9f","src/loongarch64/ioctl.rs":"c5e3e77f50f71f996c6112e5acf8ebf7cf5519ea57c32c7e570b89d857057f7d","src/loongarch64/netlink.rs":"0a61b43de4353c28fe746cc196a2696ff469b6aa7f2b35541e01d79ae05d6a0b","src/mips/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips/general.rs":"3374e45bbcfb2f62f163fbff05d9b786a4fd036b9a4beb9671b14e865048a9e3","src/mips/ioctl.rs":"84350b09b48effd8658c0cb455d158d40560e1480588843b92be4ad2c539141e","src/mips/netlink.rs":"3acc8c5156e550a2d7c299919cdabb75e4225f450df765c447bcbc89323cc463","src/mips64/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips64/general.rs":"22c331bad3f75baea83a5eea5211318ff5979be2a4401f7dd826d8dd2adfc254","src/mips64/ioctl.rs":"efa0a37a086ff4dff1889acdd728edd54f31b0ba389b54af7dd70279a9429537","src/mips64/netlink.rs":"9b92fff4ba43d4718cd1e880ccdfb25eb4a4d0b3136309cba9631e958187fd45","src/powerpc/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc/general.rs":"4ea12c0d6ad14f71291c688fbd78014e35ff3a4115155461fca5084960575de5","src/powerpc/ioctl.rs":"be402bfba0fd1014bc49648402f15aec5ad603e5991158db64ae07117eb60ffe","src/powerpc/netlink.rs":"745a7256254b0153b4aaf8c2fc5371aaca6d79666fddc5f539edc4c4e6cc1fcd","src/powerpc64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc64/general.rs":"7cc72131ebb7736700500148e776e221619f89ecdf119207d7f8a24171810525","src/powerpc64/ioctl.rs":"be402bfba0fd1014bc49648402f15aec5ad603e5991158db64ae07117eb60ffe","src/powerpc64/netlink.rs":"b7be2f1ae16cc6b360d3865fc786188f0c820f48ac8923db5eed538f44c66793","src/riscv32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv32/general.rs":"47740516fd13af34216fca38a9be1eb3d46739e16cfbcd607d0c142c72b3f21e","src/riscv32/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/riscv32/netlink.rs":"1b08bd4b65b500b34b72e5b7cf4738b7529be1fb38096bb75299e228ab1f22f6","src/riscv64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv64/general.rs":"65714484bd8a745c23f6bab9dc9546a99ef2974c80afc9e7a430b92ad1e2b08d","src/riscv64/ioctl.rs":"935141f7bc36e4d2c6c6be38aa42026a747f0bfc72bbfcc7cda3a9c540151470","src/riscv64/netlink.rs":"8b73509c05aaace7619168ecf6b128e4ca6db7f5bd3eb33994a2b57e8b9e0344","src/s390x/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/s390x/general.rs":"499eac9bc32a159a6f99371250d32d03ec22c16d357702dde133174478a850ff","src/s390x/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/s390x/netlink.rs":"25f47d91f9b1a71f4a33543ddcf6823c7c94e95c2f82587f5bbd9d1a892d61f4","src/sparc/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc/general.rs":"7a2e95915edd5207ef0de9dc524e38bc51a93c48d14275f88cb27664c8329a03","src/sparc/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc/netlink.rs":"b9a608f050677cd7cebcb832705935fa8c79858870c82a12c4fda4edf2f1023a","src/sparc64/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc64/general.rs":"06cea8ae67e9f07c99dd2556a5ac7dc3c963dce1fa317fe396c53caf5b2db65b","src/sparc64/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc64/netlink.rs":"2e718411da2f58aa8bab75b384de38b778c4bea25d3065210bc5e78b7cdde2e8","src/x32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x32/general.rs":"b5189e62ee69bc605570804495e4c0cc793498f1002fdc80c135e00afa53c6ce","src/x32/ioctl.rs":"85e548f8536204552b5b23fb8b3bfeade961fc73c41a9691156012304e0dd84c","src/x32/netlink.rs":"275a7694600599f6856a2606133bd9c203261f164d9153cd0cd8c253a6428769","src/x86/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86/general.rs":"89186979648bde769f128ab85a864188b5ca65b99803c8ee1f834302bb42317c","src/x86/ioctl.rs":"6238356fcad51581c1bfaac29ca6b418a7cb0a0a37692cbd0d370a42890fd319","src/x86/netlink.rs":"6aaee90e508ddeaca3637291e9a12f4257f6d27e73c6eec11868d948e1e4c724","src/x86_64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86_64/general.rs":"9150b5bbac59f17eb59505a0effe7ec0043a47f97f3124b5377a10422a28e80f","src/x86_64/ioctl.rs":"85e548f8536204552b5b23fb8b3bfeade961fc73c41a9691156012304e0dd84c","src/x86_64/netlink.rs":"fa40e0f28bb09540e219ac6a5f31f50efdc770aa70704a809827dae6a4573885"},"package":"f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"} +diff --git a/vendor/linux-raw-sys/src/lib.rs b/vendor/linux-raw-sys/src/lib.rs +index 3204531d0..6c9c948ec 100644 +--- a/vendor/linux-raw-sys/src/lib.rs ++++ b/vendor/linux-raw-sys/src/lib.rs +@@ -165,6 +165,22 @@ pub mod ioctl; + #[path = "aarch64/netlink.rs"] + pub mod netlink; + #[cfg(feature = "errno")] ++#[cfg(target_arch = "loongarch64")] ++#[path = "loongarch64/errno.rs"] ++pub mod errno; ++#[cfg(feature = "general")] ++#[cfg(target_arch = "loongarch64")] ++#[path = "loongarch64/general.rs"] ++pub mod general; ++#[cfg(feature = "ioctl")] ++#[cfg(target_arch = "loongarch64")] ++#[path = "loongarch64/ioctl.rs"] ++pub mod ioctl; ++#[cfg(feature = "netlink")] ++#[cfg(target_arch = "loongarch64")] ++#[path = "loongarch64/netlink.rs"] ++pub mod netlink; ++#[cfg(feature = "errno")] + #[cfg(target_arch = "mips")] + #[path = "mips/errno.rs"] + pub mod errno; +diff --git a/vendor/linux-raw-sys/src/loongarch64/errno.rs b/vendor/linux-raw-sys/src/loongarch64/errno.rs +new file mode 100644 +index 000000000..8c5620d74 +--- /dev/null ++++ b/vendor/linux-raw-sys/src/loongarch64/errno.rs +@@ -0,0 +1,135 @@ ++/* automatically generated by rust-bindgen 0.59.2 */ ++ ++pub const EPERM: u32 = 1; ++pub const ENOENT: u32 = 2; ++pub const ESRCH: u32 = 3; ++pub const EINTR: u32 = 4; ++pub const EIO: u32 = 5; ++pub const ENXIO: u32 = 6; ++pub const E2BIG: u32 = 7; ++pub const ENOEXEC: u32 = 8; ++pub const EBADF: u32 = 9; ++pub const ECHILD: u32 = 10; ++pub const EAGAIN: u32 = 11; ++pub const ENOMEM: u32 = 12; ++pub const EACCES: u32 = 13; ++pub const EFAULT: u32 = 14; ++pub const ENOTBLK: u32 = 15; ++pub const EBUSY: u32 = 16; ++pub const EEXIST: u32 = 17; ++pub const EXDEV: u32 = 18; ++pub const ENODEV: u32 = 19; ++pub const ENOTDIR: u32 = 20; ++pub const EISDIR: u32 = 21; ++pub const EINVAL: u32 = 22; ++pub const ENFILE: u32 = 23; ++pub const EMFILE: u32 = 24; ++pub const ENOTTY: u32 = 25; ++pub const ETXTBSY: u32 = 26; ++pub const EFBIG: u32 = 27; ++pub const ENOSPC: u32 = 28; ++pub const ESPIPE: u32 = 29; ++pub const EROFS: u32 = 30; ++pub const EMLINK: u32 = 31; ++pub const EPIPE: u32 = 32; ++pub const EDOM: u32 = 33; ++pub const ERANGE: u32 = 34; ++pub const EDEADLK: u32 = 35; ++pub const ENAMETOOLONG: u32 = 36; ++pub const ENOLCK: u32 = 37; ++pub const ENOSYS: u32 = 38; ++pub const ENOTEMPTY: u32 = 39; ++pub const ELOOP: u32 = 40; ++pub const EWOULDBLOCK: u32 = 11; ++pub const ENOMSG: u32 = 42; ++pub const EIDRM: u32 = 43; ++pub const ECHRNG: u32 = 44; ++pub const EL2NSYNC: u32 = 45; ++pub const EL3HLT: u32 = 46; ++pub const EL3RST: u32 = 47; ++pub const ELNRNG: u32 = 48; ++pub const EUNATCH: u32 = 49; ++pub const ENOCSI: u32 = 50; ++pub const EL2HLT: u32 = 51; ++pub const EBADE: u32 = 52; ++pub const EBADR: u32 = 53; ++pub const EXFULL: u32 = 54; ++pub const ENOANO: u32 = 55; ++pub const EBADRQC: u32 = 56; ++pub const EBADSLT: u32 = 57; ++pub const EDEADLOCK: u32 = 35; ++pub const EBFONT: u32 = 59; ++pub const ENOSTR: u32 = 60; ++pub const ENODATA: u32 = 61; ++pub const ETIME: u32 = 62; ++pub const ENOSR: u32 = 63; ++pub const ENONET: u32 = 64; ++pub const ENOPKG: u32 = 65; ++pub const EREMOTE: u32 = 66; ++pub const ENOLINK: u32 = 67; ++pub const EADV: u32 = 68; ++pub const ESRMNT: u32 = 69; ++pub const ECOMM: u32 = 70; ++pub const EPROTO: u32 = 71; ++pub const EMULTIHOP: u32 = 72; ++pub const EDOTDOT: u32 = 73; ++pub const EBADMSG: u32 = 74; ++pub const EOVERFLOW: u32 = 75; ++pub const ENOTUNIQ: u32 = 76; ++pub const EBADFD: u32 = 77; ++pub const EREMCHG: u32 = 78; ++pub const ELIBACC: u32 = 79; ++pub const ELIBBAD: u32 = 80; ++pub const ELIBSCN: u32 = 81; ++pub const ELIBMAX: u32 = 82; ++pub const ELIBEXEC: u32 = 83; ++pub const EILSEQ: u32 = 84; ++pub const ERESTART: u32 = 85; ++pub const ESTRPIPE: u32 = 86; ++pub const EUSERS: u32 = 87; ++pub const ENOTSOCK: u32 = 88; ++pub const EDESTADDRREQ: u32 = 89; ++pub const EMSGSIZE: u32 = 90; ++pub const EPROTOTYPE: u32 = 91; ++pub const ENOPROTOOPT: u32 = 92; ++pub const EPROTONOSUPPORT: u32 = 93; ++pub const ESOCKTNOSUPPORT: u32 = 94; ++pub const EOPNOTSUPP: u32 = 95; ++pub const EPFNOSUPPORT: u32 = 96; ++pub const EAFNOSUPPORT: u32 = 97; ++pub const EADDRINUSE: u32 = 98; ++pub const EADDRNOTAVAIL: u32 = 99; ++pub const ENETDOWN: u32 = 100; ++pub const ENETUNREACH: u32 = 101; ++pub const ENETRESET: u32 = 102; ++pub const ECONNABORTED: u32 = 103; ++pub const ECONNRESET: u32 = 104; ++pub const ENOBUFS: u32 = 105; ++pub const EISCONN: u32 = 106; ++pub const ENOTCONN: u32 = 107; ++pub const ESHUTDOWN: u32 = 108; ++pub const ETOOMANYREFS: u32 = 109; ++pub const ETIMEDOUT: u32 = 110; ++pub const ECONNREFUSED: u32 = 111; ++pub const EHOSTDOWN: u32 = 112; ++pub const EHOSTUNREACH: u32 = 113; ++pub const EALREADY: u32 = 114; ++pub const EINPROGRESS: u32 = 115; ++pub const ESTALE: u32 = 116; ++pub const EUCLEAN: u32 = 117; ++pub const ENOTNAM: u32 = 118; ++pub const ENAVAIL: u32 = 119; ++pub const EISNAM: u32 = 120; ++pub const EREMOTEIO: u32 = 121; ++pub const EDQUOT: u32 = 122; ++pub const ENOMEDIUM: u32 = 123; ++pub const EMEDIUMTYPE: u32 = 124; ++pub const ECANCELED: u32 = 125; ++pub const ENOKEY: u32 = 126; ++pub const EKEYEXPIRED: u32 = 127; ++pub const EKEYREVOKED: u32 = 128; ++pub const EKEYREJECTED: u32 = 129; ++pub const EOWNERDEAD: u32 = 130; ++pub const ENOTRECOVERABLE: u32 = 131; ++pub const ERFKILL: u32 = 132; ++pub const EHWPOISON: u32 = 133; +diff --git a/vendor/linux-raw-sys/src/loongarch64/general.rs b/vendor/linux-raw-sys/src/loongarch64/general.rs +new file mode 100644 +index 000000000..79d309016 +--- /dev/null ++++ b/vendor/linux-raw-sys/src/loongarch64/general.rs +@@ -0,0 +1,5205 @@ ++/* automatically generated by rust-bindgen 0.59.2 */ ++ ++#[repr(C)] ++#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] ++pub struct __BindgenBitfieldUnit { ++storage: Storage, ++} ++impl __BindgenBitfieldUnit { ++#[inline] ++pub const fn new(storage: Storage) -> Self { ++Self { storage } ++} ++} ++impl __BindgenBitfieldUnit ++where ++Storage: AsRef<[u8]> + AsMut<[u8]>, ++{ ++#[inline] ++pub fn get_bit(&self, index: usize) -> bool { ++debug_assert!(index / 8 < self.storage.as_ref().len()); ++let byte_index = index / 8; ++let byte = self.storage.as_ref()[byte_index]; ++let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; ++let mask = 1 << bit_index; ++byte & mask == mask ++} ++#[inline] ++pub fn set_bit(&mut self, index: usize, val: bool) { ++debug_assert!(index / 8 < self.storage.as_ref().len()); ++let byte_index = index / 8; ++let byte = &mut self.storage.as_mut()[byte_index]; ++let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; ++let mask = 1 << bit_index; ++if val { ++*byte |= mask; ++} else { ++*byte &= !mask; ++} ++} ++#[inline] ++pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { ++debug_assert!(bit_width <= 64); ++debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); ++debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); ++let mut val = 0; ++for i in 0..(bit_width as usize) { ++if self.get_bit(i + bit_offset) { ++let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; ++val |= 1 << index; ++} ++} ++val ++} ++#[inline] ++pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { ++debug_assert!(bit_width <= 64); ++debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); ++debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); ++for i in 0..(bit_width as usize) { ++let mask = 1 << i; ++let val_bit_is_set = val & mask == mask; ++let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; ++self.set_bit(index + bit_offset, val_bit_is_set); ++} ++} ++} ++#[repr(C)] ++#[derive(Default)] ++pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); ++impl __IncompleteArrayField { ++#[inline] ++pub const fn new() -> Self { ++__IncompleteArrayField(::core::marker::PhantomData, []) ++} ++#[inline] ++pub fn as_ptr(&self) -> *const T { ++self as *const _ as *const T ++} ++#[inline] ++pub fn as_mut_ptr(&mut self) -> *mut T { ++self as *mut _ as *mut T ++} ++#[inline] ++pub unsafe fn as_slice(&self, len: usize) -> &[T] { ++::core::slice::from_raw_parts(self.as_ptr(), len) ++} ++#[inline] ++pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { ++::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) ++} ++} ++impl ::core::fmt::Debug for __IncompleteArrayField { ++fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { ++fmt.write_str("__IncompleteArrayField") ++} ++} ++#[repr(C)] ++pub struct __BindgenUnionField(::core::marker::PhantomData); ++impl __BindgenUnionField { ++#[inline] ++pub const fn new() -> Self { ++__BindgenUnionField(::core::marker::PhantomData) ++} ++#[inline] ++pub unsafe fn as_ref(&self) -> &T { ++::core::mem::transmute(self) ++} ++#[inline] ++pub unsafe fn as_mut(&mut self) -> &mut T { ++::core::mem::transmute(self) ++} ++} ++impl ::core::default::Default for __BindgenUnionField { ++#[inline] ++fn default() -> Self { ++Self::new() ++} ++} ++impl ::core::clone::Clone for __BindgenUnionField { ++#[inline] ++fn clone(&self) -> Self { ++Self::new() ++} ++} ++impl ::core::marker::Copy for __BindgenUnionField {} ++impl ::core::fmt::Debug for __BindgenUnionField { ++fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { ++fmt.write_str("__BindgenUnionField") ++} ++} ++impl ::core::hash::Hash for __BindgenUnionField { ++fn hash(&self, _state: &mut H) {} ++} ++impl ::core::cmp::PartialEq for __BindgenUnionField { ++fn eq(&self, _other: &__BindgenUnionField) -> bool { ++true ++} ++} ++impl ::core::cmp::Eq for __BindgenUnionField {} ++pub const LINUX_VERSION_CODE: u32 = 393728; ++pub const LINUX_VERSION_MAJOR: u32 = 6; ++pub const LINUX_VERSION_PATCHLEVEL: u32 = 2; ++pub const LINUX_VERSION_SUBLEVEL: u32 = 0; ++pub const AT_SYSINFO_EHDR: u32 = 33; ++pub const AT_VECTOR_SIZE_ARCH: u32 = 1; ++pub const AT_NULL: u32 = 0; ++pub const AT_IGNORE: u32 = 1; ++pub const AT_EXECFD: u32 = 2; ++pub const AT_PHDR: u32 = 3; ++pub const AT_PHENT: u32 = 4; ++pub const AT_PHNUM: u32 = 5; ++pub const AT_PAGESZ: u32 = 6; ++pub const AT_BASE: u32 = 7; ++pub const AT_FLAGS: u32 = 8; ++pub const AT_ENTRY: u32 = 9; ++pub const AT_NOTELF: u32 = 10; ++pub const AT_UID: u32 = 11; ++pub const AT_EUID: u32 = 12; ++pub const AT_GID: u32 = 13; ++pub const AT_EGID: u32 = 14; ++pub const AT_PLATFORM: u32 = 15; ++pub const AT_HWCAP: u32 = 16; ++pub const AT_CLKTCK: u32 = 17; ++pub const AT_SECURE: u32 = 23; ++pub const AT_BASE_PLATFORM: u32 = 24; ++pub const AT_RANDOM: u32 = 25; ++pub const AT_HWCAP2: u32 = 26; ++pub const AT_EXECFN: u32 = 31; ++pub const AT_MINSIGSTKSZ: u32 = 51; ++pub const __FD_SETSIZE: u32 = 1024; ++pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688; ++pub const _LINUX_CAPABILITY_U32S_1: u32 = 1; ++pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798; ++pub const _LINUX_CAPABILITY_U32S_2: u32 = 2; ++pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514; ++pub const _LINUX_CAPABILITY_U32S_3: u32 = 2; ++pub const VFS_CAP_REVISION_MASK: u32 = 4278190080; ++pub const VFS_CAP_REVISION_SHIFT: u32 = 24; ++pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081; ++pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1; ++pub const VFS_CAP_REVISION_1: u32 = 16777216; ++pub const VFS_CAP_U32_1: u32 = 1; ++pub const VFS_CAP_REVISION_2: u32 = 33554432; ++pub const VFS_CAP_U32_2: u32 = 2; ++pub const VFS_CAP_REVISION_3: u32 = 50331648; ++pub const VFS_CAP_U32_3: u32 = 2; ++pub const VFS_CAP_U32: u32 = 2; ++pub const VFS_CAP_REVISION: u32 = 50331648; ++pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688; ++pub const _LINUX_CAPABILITY_U32S: u32 = 1; ++pub const CAP_CHOWN: u32 = 0; ++pub const CAP_DAC_OVERRIDE: u32 = 1; ++pub const CAP_DAC_READ_SEARCH: u32 = 2; ++pub const CAP_FOWNER: u32 = 3; ++pub const CAP_FSETID: u32 = 4; ++pub const CAP_KILL: u32 = 5; ++pub const CAP_SETGID: u32 = 6; ++pub const CAP_SETUID: u32 = 7; ++pub const CAP_SETPCAP: u32 = 8; ++pub const CAP_LINUX_IMMUTABLE: u32 = 9; ++pub const CAP_NET_BIND_SERVICE: u32 = 10; ++pub const CAP_NET_BROADCAST: u32 = 11; ++pub const CAP_NET_ADMIN: u32 = 12; ++pub const CAP_NET_RAW: u32 = 13; ++pub const CAP_IPC_LOCK: u32 = 14; ++pub const CAP_IPC_OWNER: u32 = 15; ++pub const CAP_SYS_MODULE: u32 = 16; ++pub const CAP_SYS_RAWIO: u32 = 17; ++pub const CAP_SYS_CHROOT: u32 = 18; ++pub const CAP_SYS_PTRACE: u32 = 19; ++pub const CAP_SYS_PACCT: u32 = 20; ++pub const CAP_SYS_ADMIN: u32 = 21; ++pub const CAP_SYS_BOOT: u32 = 22; ++pub const CAP_SYS_NICE: u32 = 23; ++pub const CAP_SYS_RESOURCE: u32 = 24; ++pub const CAP_SYS_TIME: u32 = 25; ++pub const CAP_SYS_TTY_CONFIG: u32 = 26; ++pub const CAP_MKNOD: u32 = 27; ++pub const CAP_LEASE: u32 = 28; ++pub const CAP_AUDIT_WRITE: u32 = 29; ++pub const CAP_AUDIT_CONTROL: u32 = 30; ++pub const CAP_SETFCAP: u32 = 31; ++pub const CAP_MAC_OVERRIDE: u32 = 32; ++pub const CAP_MAC_ADMIN: u32 = 33; ++pub const CAP_SYSLOG: u32 = 34; ++pub const CAP_WAKE_ALARM: u32 = 35; ++pub const CAP_BLOCK_SUSPEND: u32 = 36; ++pub const CAP_AUDIT_READ: u32 = 37; ++pub const CAP_PERFMON: u32 = 38; ++pub const CAP_BPF: u32 = 39; ++pub const CAP_CHECKPOINT_RESTORE: u32 = 40; ++pub const CAP_LAST_CAP: u32 = 40; ++pub const O_ACCMODE: u32 = 3; ++pub const O_RDONLY: u32 = 0; ++pub const O_WRONLY: u32 = 1; ++pub const O_RDWR: u32 = 2; ++pub const O_CREAT: u32 = 64; ++pub const O_EXCL: u32 = 128; ++pub const O_NOCTTY: u32 = 256; ++pub const O_TRUNC: u32 = 512; ++pub const O_APPEND: u32 = 1024; ++pub const O_NONBLOCK: u32 = 2048; ++pub const O_DSYNC: u32 = 4096; ++pub const FASYNC: u32 = 8192; ++pub const O_DIRECT: u32 = 16384; ++pub const O_LARGEFILE: u32 = 32768; ++pub const O_DIRECTORY: u32 = 65536; ++pub const O_NOFOLLOW: u32 = 131072; ++pub const O_NOATIME: u32 = 262144; ++pub const O_CLOEXEC: u32 = 524288; ++pub const __O_SYNC: u32 = 1048576; ++pub const O_SYNC: u32 = 1052672; ++pub const O_PATH: u32 = 2097152; ++pub const __O_TMPFILE: u32 = 4194304; ++pub const O_TMPFILE: u32 = 4259840; ++pub const O_TMPFILE_MASK: u32 = 4259904; ++pub const O_NDELAY: u32 = 2048; ++pub const F_DUPFD: u32 = 0; ++pub const F_GETFD: u32 = 1; ++pub const F_SETFD: u32 = 2; ++pub const F_GETFL: u32 = 3; ++pub const F_SETFL: u32 = 4; ++pub const F_GETLK: u32 = 5; ++pub const F_SETLK: u32 = 6; ++pub const F_SETLKW: u32 = 7; ++pub const F_SETOWN: u32 = 8; ++pub const F_GETOWN: u32 = 9; ++pub const F_SETSIG: u32 = 10; ++pub const F_GETSIG: u32 = 11; ++pub const F_SETOWN_EX: u32 = 15; ++pub const F_GETOWN_EX: u32 = 16; ++pub const F_GETOWNER_UIDS: u32 = 17; ++pub const F_OFD_GETLK: u32 = 36; ++pub const F_OFD_SETLK: u32 = 37; ++pub const F_OFD_SETLKW: u32 = 38; ++pub const F_OWNER_TID: u32 = 0; ++pub const F_OWNER_PID: u32 = 1; ++pub const F_OWNER_PGRP: u32 = 2; ++pub const FD_CLOEXEC: u32 = 1; ++pub const F_RDLCK: u32 = 0; ++pub const F_WRLCK: u32 = 1; ++pub const F_UNLCK: u32 = 2; ++pub const F_EXLCK: u32 = 4; ++pub const F_SHLCK: u32 = 8; ++pub const LOCK_SH: u32 = 1; ++pub const LOCK_EX: u32 = 2; ++pub const LOCK_NB: u32 = 4; ++pub const LOCK_UN: u32 = 8; ++pub const LOCK_MAND: u32 = 32; ++pub const LOCK_READ: u32 = 64; ++pub const LOCK_WRITE: u32 = 128; ++pub const LOCK_RW: u32 = 192; ++pub const F_LINUX_SPECIFIC_BASE: u32 = 1024; ++pub const RESOLVE_NO_XDEV: u32 = 1; ++pub const RESOLVE_NO_MAGICLINKS: u32 = 2; ++pub const RESOLVE_NO_SYMLINKS: u32 = 4; ++pub const RESOLVE_BENEATH: u32 = 8; ++pub const RESOLVE_IN_ROOT: u32 = 16; ++pub const RESOLVE_CACHED: u32 = 32; ++pub const F_SETLEASE: u32 = 1024; ++pub const F_GETLEASE: u32 = 1025; ++pub const F_CANCELLK: u32 = 1029; ++pub const F_DUPFD_CLOEXEC: u32 = 1030; ++pub const F_NOTIFY: u32 = 1026; ++pub const F_SETPIPE_SZ: u32 = 1031; ++pub const F_GETPIPE_SZ: u32 = 1032; ++pub const F_ADD_SEALS: u32 = 1033; ++pub const F_GET_SEALS: u32 = 1034; ++pub const F_SEAL_SEAL: u32 = 1; ++pub const F_SEAL_SHRINK: u32 = 2; ++pub const F_SEAL_GROW: u32 = 4; ++pub const F_SEAL_WRITE: u32 = 8; ++pub const F_SEAL_FUTURE_WRITE: u32 = 16; ++pub const F_GET_RW_HINT: u32 = 1035; ++pub const F_SET_RW_HINT: u32 = 1036; ++pub const F_GET_FILE_RW_HINT: u32 = 1037; ++pub const F_SET_FILE_RW_HINT: u32 = 1038; ++pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0; ++pub const RWH_WRITE_LIFE_NONE: u32 = 1; ++pub const RWH_WRITE_LIFE_SHORT: u32 = 2; ++pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3; ++pub const RWH_WRITE_LIFE_LONG: u32 = 4; ++pub const RWH_WRITE_LIFE_EXTREME: u32 = 5; ++pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0; ++pub const DN_ACCESS: u32 = 1; ++pub const DN_MODIFY: u32 = 2; ++pub const DN_CREATE: u32 = 4; ++pub const DN_DELETE: u32 = 8; ++pub const DN_RENAME: u32 = 16; ++pub const DN_ATTRIB: u32 = 32; ++pub const DN_MULTISHOT: u32 = 2147483648; ++pub const AT_FDCWD: i32 = -100; ++pub const AT_SYMLINK_NOFOLLOW: u32 = 256; ++pub const AT_EACCESS: u32 = 512; ++pub const AT_REMOVEDIR: u32 = 512; ++pub const AT_SYMLINK_FOLLOW: u32 = 1024; ++pub const AT_NO_AUTOMOUNT: u32 = 2048; ++pub const AT_EMPTY_PATH: u32 = 4096; ++pub const AT_STATX_SYNC_TYPE: u32 = 24576; ++pub const AT_STATX_SYNC_AS_STAT: u32 = 0; ++pub const AT_STATX_FORCE_SYNC: u32 = 8192; ++pub const AT_STATX_DONT_SYNC: u32 = 16384; ++pub const AT_RECURSIVE: u32 = 32768; ++pub const EPOLL_CLOEXEC: u32 = 524288; ++pub const EPOLL_CTL_ADD: u32 = 1; ++pub const EPOLL_CTL_DEL: u32 = 2; ++pub const EPOLL_CTL_MOD: u32 = 3; ++pub const POSIX_FADV_NORMAL: u32 = 0; ++pub const POSIX_FADV_RANDOM: u32 = 1; ++pub const POSIX_FADV_SEQUENTIAL: u32 = 2; ++pub const POSIX_FADV_WILLNEED: u32 = 3; ++pub const POSIX_FADV_DONTNEED: u32 = 4; ++pub const POSIX_FADV_NOREUSE: u32 = 5; ++pub const FALLOC_FL_KEEP_SIZE: u32 = 1; ++pub const FALLOC_FL_PUNCH_HOLE: u32 = 2; ++pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4; ++pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8; ++pub const FALLOC_FL_ZERO_RANGE: u32 = 16; ++pub const FALLOC_FL_INSERT_RANGE: u32 = 32; ++pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64; ++pub const NR_OPEN: u32 = 1024; ++pub const NGROUPS_MAX: u32 = 65536; ++pub const ARG_MAX: u32 = 131072; ++pub const LINK_MAX: u32 = 127; ++pub const MAX_CANON: u32 = 255; ++pub const MAX_INPUT: u32 = 255; ++pub const NAME_MAX: u32 = 255; ++pub const PATH_MAX: u32 = 4096; ++pub const PIPE_BUF: u32 = 4096; ++pub const XATTR_NAME_MAX: u32 = 255; ++pub const XATTR_SIZE_MAX: u32 = 65536; ++pub const XATTR_LIST_MAX: u32 = 65536; ++pub const RTSIG_MAX: u32 = 32; ++pub const _IOC_NRBITS: u32 = 8; ++pub const _IOC_TYPEBITS: u32 = 8; ++pub const _IOC_SIZEBITS: u32 = 14; ++pub const _IOC_DIRBITS: u32 = 2; ++pub const _IOC_NRMASK: u32 = 255; ++pub const _IOC_TYPEMASK: u32 = 255; ++pub const _IOC_SIZEMASK: u32 = 16383; ++pub const _IOC_DIRMASK: u32 = 3; ++pub const _IOC_NRSHIFT: u32 = 0; ++pub const _IOC_TYPESHIFT: u32 = 8; ++pub const _IOC_SIZESHIFT: u32 = 16; ++pub const _IOC_DIRSHIFT: u32 = 30; ++pub const _IOC_NONE: u32 = 0; ++pub const _IOC_WRITE: u32 = 1; ++pub const _IOC_READ: u32 = 2; ++pub const IOC_IN: u32 = 1073741824; ++pub const IOC_OUT: u32 = 2147483648; ++pub const IOC_INOUT: u32 = 3221225472; ++pub const IOCSIZE_MASK: u32 = 1073676288; ++pub const IOCSIZE_SHIFT: u32 = 16; ++pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0; ++pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1; ++pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2; ++pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3; ++pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3; ++pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4; ++pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8; ++pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16; ++pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1; ++pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4; ++pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5; ++pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6; ++pub const FSCRYPT_MODE_SM4_XTS: u32 = 7; ++pub const FSCRYPT_MODE_SM4_CTS: u32 = 8; ++pub const FSCRYPT_MODE_ADIANTUM: u32 = 9; ++pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10; ++pub const FSCRYPT_POLICY_V1: u32 = 0; ++pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8; ++pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; ++pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8; ++pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64; ++pub const FSCRYPT_POLICY_V2: u32 = 2; ++pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16; ++pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1; ++pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2; ++pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1; ++pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2; ++pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1; ++pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2; ++pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3; ++pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1; ++pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8; ++pub const FS_POLICY_FLAGS_PAD_4: u32 = 0; ++pub const FS_POLICY_FLAGS_PAD_8: u32 = 1; ++pub const FS_POLICY_FLAGS_PAD_16: u32 = 2; ++pub const FS_POLICY_FLAGS_PAD_32: u32 = 3; ++pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3; ++pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4; ++pub const FS_POLICY_FLAGS_VALID: u32 = 7; ++pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0; ++pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1; ++pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2; ++pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3; ++pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4; ++pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5; ++pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6; ++pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9; ++pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0"; ++pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8; ++pub const FS_MAX_KEY_SIZE: u32 = 64; ++pub const MS_RDONLY: u32 = 1; ++pub const MS_NOSUID: u32 = 2; ++pub const MS_NODEV: u32 = 4; ++pub const MS_NOEXEC: u32 = 8; ++pub const MS_SYNCHRONOUS: u32 = 16; ++pub const MS_REMOUNT: u32 = 32; ++pub const MS_MANDLOCK: u32 = 64; ++pub const MS_DIRSYNC: u32 = 128; ++pub const MS_NOSYMFOLLOW: u32 = 256; ++pub const MS_NOATIME: u32 = 1024; ++pub const MS_NODIRATIME: u32 = 2048; ++pub const MS_BIND: u32 = 4096; ++pub const MS_MOVE: u32 = 8192; ++pub const MS_REC: u32 = 16384; ++pub const MS_VERBOSE: u32 = 32768; ++pub const MS_SILENT: u32 = 32768; ++pub const MS_POSIXACL: u32 = 65536; ++pub const MS_UNBINDABLE: u32 = 131072; ++pub const MS_PRIVATE: u32 = 262144; ++pub const MS_SLAVE: u32 = 524288; ++pub const MS_SHARED: u32 = 1048576; ++pub const MS_RELATIME: u32 = 2097152; ++pub const MS_KERNMOUNT: u32 = 4194304; ++pub const MS_I_VERSION: u32 = 8388608; ++pub const MS_STRICTATIME: u32 = 16777216; ++pub const MS_LAZYTIME: u32 = 33554432; ++pub const MS_SUBMOUNT: u32 = 67108864; ++pub const MS_NOREMOTELOCK: u32 = 134217728; ++pub const MS_NOSEC: u32 = 268435456; ++pub const MS_BORN: u32 = 536870912; ++pub const MS_ACTIVE: u32 = 1073741824; ++pub const MS_NOUSER: u32 = 2147483648; ++pub const MS_RMT_MASK: u32 = 41943121; ++pub const MS_MGC_VAL: u32 = 3236757504; ++pub const MS_MGC_MSK: u32 = 4294901760; ++pub const OPEN_TREE_CLONE: u32 = 1; ++pub const OPEN_TREE_CLOEXEC: u32 = 524288; ++pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1; ++pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2; ++pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4; ++pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16; ++pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32; ++pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64; ++pub const MOVE_MOUNT_SET_GROUP: u32 = 256; ++pub const MOVE_MOUNT__MASK: u32 = 375; ++pub const FSOPEN_CLOEXEC: u32 = 1; ++pub const FSPICK_CLOEXEC: u32 = 1; ++pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2; ++pub const FSPICK_NO_AUTOMOUNT: u32 = 4; ++pub const FSPICK_EMPTY_PATH: u32 = 8; ++pub const FSMOUNT_CLOEXEC: u32 = 1; ++pub const MOUNT_ATTR_RDONLY: u32 = 1; ++pub const MOUNT_ATTR_NOSUID: u32 = 2; ++pub const MOUNT_ATTR_NODEV: u32 = 4; ++pub const MOUNT_ATTR_NOEXEC: u32 = 8; ++pub const MOUNT_ATTR__ATIME: u32 = 112; ++pub const MOUNT_ATTR_RELATIME: u32 = 0; ++pub const MOUNT_ATTR_NOATIME: u32 = 16; ++pub const MOUNT_ATTR_STRICTATIME: u32 = 32; ++pub const MOUNT_ATTR_NODIRATIME: u32 = 128; ++pub const MOUNT_ATTR_IDMAP: u32 = 1048576; ++pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152; ++pub const MOUNT_ATTR_SIZE_VER0: u32 = 32; ++pub const INR_OPEN_CUR: u32 = 1024; ++pub const INR_OPEN_MAX: u32 = 4096; ++pub const BLOCK_SIZE_BITS: u32 = 10; ++pub const BLOCK_SIZE: u32 = 1024; ++pub const SEEK_SET: u32 = 0; ++pub const SEEK_CUR: u32 = 1; ++pub const SEEK_END: u32 = 2; ++pub const SEEK_DATA: u32 = 3; ++pub const SEEK_HOLE: u32 = 4; ++pub const SEEK_MAX: u32 = 4; ++pub const RENAME_NOREPLACE: u32 = 1; ++pub const RENAME_EXCHANGE: u32 = 2; ++pub const RENAME_WHITEOUT: u32 = 4; ++pub const FILE_DEDUPE_RANGE_SAME: u32 = 0; ++pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1; ++pub const NR_FILE: u32 = 8192; ++pub const FS_XFLAG_REALTIME: u32 = 1; ++pub const FS_XFLAG_PREALLOC: u32 = 2; ++pub const FS_XFLAG_IMMUTABLE: u32 = 8; ++pub const FS_XFLAG_APPEND: u32 = 16; ++pub const FS_XFLAG_SYNC: u32 = 32; ++pub const FS_XFLAG_NOATIME: u32 = 64; ++pub const FS_XFLAG_NODUMP: u32 = 128; ++pub const FS_XFLAG_RTINHERIT: u32 = 256; ++pub const FS_XFLAG_PROJINHERIT: u32 = 512; ++pub const FS_XFLAG_NOSYMLINKS: u32 = 1024; ++pub const FS_XFLAG_EXTSIZE: u32 = 2048; ++pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096; ++pub const FS_XFLAG_NODEFRAG: u32 = 8192; ++pub const FS_XFLAG_FILESTREAM: u32 = 16384; ++pub const FS_XFLAG_DAX: u32 = 32768; ++pub const FS_XFLAG_COWEXTSIZE: u32 = 65536; ++pub const FS_XFLAG_HASATTR: u32 = 2147483648; ++pub const BMAP_IOCTL: u32 = 1; ++pub const FSLABEL_MAX: u32 = 256; ++pub const FS_SECRM_FL: u32 = 1; ++pub const FS_UNRM_FL: u32 = 2; ++pub const FS_COMPR_FL: u32 = 4; ++pub const FS_SYNC_FL: u32 = 8; ++pub const FS_IMMUTABLE_FL: u32 = 16; ++pub const FS_APPEND_FL: u32 = 32; ++pub const FS_NODUMP_FL: u32 = 64; ++pub const FS_NOATIME_FL: u32 = 128; ++pub const FS_DIRTY_FL: u32 = 256; ++pub const FS_COMPRBLK_FL: u32 = 512; ++pub const FS_NOCOMP_FL: u32 = 1024; ++pub const FS_ENCRYPT_FL: u32 = 2048; ++pub const FS_BTREE_FL: u32 = 4096; ++pub const FS_INDEX_FL: u32 = 4096; ++pub const FS_IMAGIC_FL: u32 = 8192; ++pub const FS_JOURNAL_DATA_FL: u32 = 16384; ++pub const FS_NOTAIL_FL: u32 = 32768; ++pub const FS_DIRSYNC_FL: u32 = 65536; ++pub const FS_TOPDIR_FL: u32 = 131072; ++pub const FS_HUGE_FILE_FL: u32 = 262144; ++pub const FS_EXTENT_FL: u32 = 524288; ++pub const FS_VERITY_FL: u32 = 1048576; ++pub const FS_EA_INODE_FL: u32 = 2097152; ++pub const FS_EOFBLOCKS_FL: u32 = 4194304; ++pub const FS_NOCOW_FL: u32 = 8388608; ++pub const FS_DAX_FL: u32 = 33554432; ++pub const FS_INLINE_DATA_FL: u32 = 268435456; ++pub const FS_PROJINHERIT_FL: u32 = 536870912; ++pub const FS_CASEFOLD_FL: u32 = 1073741824; ++pub const FS_RESERVED_FL: u32 = 2147483648; ++pub const FS_FL_USER_VISIBLE: u32 = 253951; ++pub const FS_FL_USER_MODIFIABLE: u32 = 229631; ++pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1; ++pub const SYNC_FILE_RANGE_WRITE: u32 = 2; ++pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4; ++pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7; ++pub const FUTEX_WAIT: u32 = 0; ++pub const FUTEX_WAKE: u32 = 1; ++pub const FUTEX_FD: u32 = 2; ++pub const FUTEX_REQUEUE: u32 = 3; ++pub const FUTEX_CMP_REQUEUE: u32 = 4; ++pub const FUTEX_WAKE_OP: u32 = 5; ++pub const FUTEX_LOCK_PI: u32 = 6; ++pub const FUTEX_UNLOCK_PI: u32 = 7; ++pub const FUTEX_TRYLOCK_PI: u32 = 8; ++pub const FUTEX_WAIT_BITSET: u32 = 9; ++pub const FUTEX_WAKE_BITSET: u32 = 10; ++pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11; ++pub const FUTEX_CMP_REQUEUE_PI: u32 = 12; ++pub const FUTEX_LOCK_PI2: u32 = 13; ++pub const FUTEX_PRIVATE_FLAG: u32 = 128; ++pub const FUTEX_CLOCK_REALTIME: u32 = 256; ++pub const FUTEX_CMD_MASK: i32 = -385; ++pub const FUTEX_WAIT_PRIVATE: u32 = 128; ++pub const FUTEX_WAKE_PRIVATE: u32 = 129; ++pub const FUTEX_REQUEUE_PRIVATE: u32 = 131; ++pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132; ++pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133; ++pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134; ++pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141; ++pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135; ++pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136; ++pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137; ++pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138; ++pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139; ++pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140; ++pub const FUTEX_32: u32 = 2; ++pub const FUTEX_WAITV_MAX: u32 = 128; ++pub const FUTEX_WAITERS: u32 = 2147483648; ++pub const FUTEX_OWNER_DIED: u32 = 1073741824; ++pub const FUTEX_TID_MASK: u32 = 1073741823; ++pub const ROBUST_LIST_LIMIT: u32 = 2048; ++pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295; ++pub const FUTEX_OP_SET: u32 = 0; ++pub const FUTEX_OP_ADD: u32 = 1; ++pub const FUTEX_OP_OR: u32 = 2; ++pub const FUTEX_OP_ANDN: u32 = 3; ++pub const FUTEX_OP_XOR: u32 = 4; ++pub const FUTEX_OP_OPARG_SHIFT: u32 = 8; ++pub const FUTEX_OP_CMP_EQ: u32 = 0; ++pub const FUTEX_OP_CMP_NE: u32 = 1; ++pub const FUTEX_OP_CMP_LT: u32 = 2; ++pub const FUTEX_OP_CMP_LE: u32 = 3; ++pub const FUTEX_OP_CMP_GT: u32 = 4; ++pub const FUTEX_OP_CMP_GE: u32 = 5; ++pub const __UAPI_DEF_IF_IFCONF: u32 = 1; ++pub const __UAPI_DEF_IF_IFMAP: u32 = 1; ++pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1; ++pub const __UAPI_DEF_IF_IFREQ: u32 = 1; ++pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1; ++pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1; ++pub const __UAPI_DEF_IN_ADDR: u32 = 1; ++pub const __UAPI_DEF_IN_IPPROTO: u32 = 1; ++pub const __UAPI_DEF_IN_PKTINFO: u32 = 1; ++pub const __UAPI_DEF_IP_MREQ: u32 = 1; ++pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1; ++pub const __UAPI_DEF_IN_CLASS: u32 = 1; ++pub const __UAPI_DEF_IN6_ADDR: u32 = 1; ++pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1; ++pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1; ++pub const __UAPI_DEF_IPV6_MREQ: u32 = 1; ++pub const __UAPI_DEF_IPPROTO_V6: u32 = 1; ++pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1; ++pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1; ++pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1; ++pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1; ++pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1; ++pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1; ++pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1; ++pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1; ++pub const __UAPI_DEF_XATTR: u32 = 1; ++pub const _K_SS_MAXSIZE: u32 = 128; ++pub const SOCK_SNDBUF_LOCK: u32 = 1; ++pub const SOCK_RCVBUF_LOCK: u32 = 2; ++pub const SOCK_BUF_LOCK_MASK: u32 = 3; ++pub const SOCK_TXREHASH_DEFAULT: u32 = 255; ++pub const SOCK_TXREHASH_DISABLED: u32 = 0; ++pub const SOCK_TXREHASH_ENABLED: u32 = 1; ++pub const IP_TOS: u32 = 1; ++pub const IP_TTL: u32 = 2; ++pub const IP_HDRINCL: u32 = 3; ++pub const IP_OPTIONS: u32 = 4; ++pub const IP_ROUTER_ALERT: u32 = 5; ++pub const IP_RECVOPTS: u32 = 6; ++pub const IP_RETOPTS: u32 = 7; ++pub const IP_PKTINFO: u32 = 8; ++pub const IP_PKTOPTIONS: u32 = 9; ++pub const IP_MTU_DISCOVER: u32 = 10; ++pub const IP_RECVERR: u32 = 11; ++pub const IP_RECVTTL: u32 = 12; ++pub const IP_RECVTOS: u32 = 13; ++pub const IP_MTU: u32 = 14; ++pub const IP_FREEBIND: u32 = 15; ++pub const IP_IPSEC_POLICY: u32 = 16; ++pub const IP_XFRM_POLICY: u32 = 17; ++pub const IP_PASSSEC: u32 = 18; ++pub const IP_TRANSPARENT: u32 = 19; ++pub const IP_RECVRETOPTS: u32 = 7; ++pub const IP_ORIGDSTADDR: u32 = 20; ++pub const IP_RECVORIGDSTADDR: u32 = 20; ++pub const IP_MINTTL: u32 = 21; ++pub const IP_NODEFRAG: u32 = 22; ++pub const IP_CHECKSUM: u32 = 23; ++pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24; ++pub const IP_RECVFRAGSIZE: u32 = 25; ++pub const IP_RECVERR_RFC4884: u32 = 26; ++pub const IP_PMTUDISC_DONT: u32 = 0; ++pub const IP_PMTUDISC_WANT: u32 = 1; ++pub const IP_PMTUDISC_DO: u32 = 2; ++pub const IP_PMTUDISC_PROBE: u32 = 3; ++pub const IP_PMTUDISC_INTERFACE: u32 = 4; ++pub const IP_PMTUDISC_OMIT: u32 = 5; ++pub const IP_MULTICAST_IF: u32 = 32; ++pub const IP_MULTICAST_TTL: u32 = 33; ++pub const IP_MULTICAST_LOOP: u32 = 34; ++pub const IP_ADD_MEMBERSHIP: u32 = 35; ++pub const IP_DROP_MEMBERSHIP: u32 = 36; ++pub const IP_UNBLOCK_SOURCE: u32 = 37; ++pub const IP_BLOCK_SOURCE: u32 = 38; ++pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39; ++pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40; ++pub const IP_MSFILTER: u32 = 41; ++pub const MCAST_JOIN_GROUP: u32 = 42; ++pub const MCAST_BLOCK_SOURCE: u32 = 43; ++pub const MCAST_UNBLOCK_SOURCE: u32 = 44; ++pub const MCAST_LEAVE_GROUP: u32 = 45; ++pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46; ++pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47; ++pub const MCAST_MSFILTER: u32 = 48; ++pub const IP_MULTICAST_ALL: u32 = 49; ++pub const IP_UNICAST_IF: u32 = 50; ++pub const MCAST_EXCLUDE: u32 = 0; ++pub const MCAST_INCLUDE: u32 = 1; ++pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; ++pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; ++pub const __SOCK_SIZE__: u32 = 16; ++pub const IN_CLASSA_NET: u32 = 4278190080; ++pub const IN_CLASSA_NSHIFT: u32 = 24; ++pub const IN_CLASSA_HOST: u32 = 16777215; ++pub const IN_CLASSA_MAX: u32 = 128; ++pub const IN_CLASSB_NET: u32 = 4294901760; ++pub const IN_CLASSB_NSHIFT: u32 = 16; ++pub const IN_CLASSB_HOST: u32 = 65535; ++pub const IN_CLASSB_MAX: u32 = 65536; ++pub const IN_CLASSC_NET: u32 = 4294967040; ++pub const IN_CLASSC_NSHIFT: u32 = 8; ++pub const IN_CLASSC_HOST: u32 = 255; ++pub const IN_MULTICAST_NET: u32 = 3758096384; ++pub const IN_CLASSE_NET: u32 = 4294967295; ++pub const IN_CLASSE_NSHIFT: u32 = 0; ++pub const IN_LOOPBACKNET: u32 = 127; ++pub const INADDR_LOOPBACK: u32 = 2130706433; ++pub const INADDR_UNSPEC_GROUP: u32 = 3758096384; ++pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385; ++pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386; ++pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490; ++pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639; ++pub const __LITTLE_ENDIAN: u32 = 1234; ++pub const IN_ACCESS: u32 = 1; ++pub const IN_MODIFY: u32 = 2; ++pub const IN_ATTRIB: u32 = 4; ++pub const IN_CLOSE_WRITE: u32 = 8; ++pub const IN_CLOSE_NOWRITE: u32 = 16; ++pub const IN_OPEN: u32 = 32; ++pub const IN_MOVED_FROM: u32 = 64; ++pub const IN_MOVED_TO: u32 = 128; ++pub const IN_CREATE: u32 = 256; ++pub const IN_DELETE: u32 = 512; ++pub const IN_DELETE_SELF: u32 = 1024; ++pub const IN_MOVE_SELF: u32 = 2048; ++pub const IN_UNMOUNT: u32 = 8192; ++pub const IN_Q_OVERFLOW: u32 = 16384; ++pub const IN_IGNORED: u32 = 32768; ++pub const IN_CLOSE: u32 = 24; ++pub const IN_MOVE: u32 = 192; ++pub const IN_ONLYDIR: u32 = 16777216; ++pub const IN_DONT_FOLLOW: u32 = 33554432; ++pub const IN_EXCL_UNLINK: u32 = 67108864; ++pub const IN_MASK_CREATE: u32 = 268435456; ++pub const IN_MASK_ADD: u32 = 536870912; ++pub const IN_ISDIR: u32 = 1073741824; ++pub const IN_ONESHOT: u32 = 2147483648; ++pub const IN_ALL_EVENTS: u32 = 4095; ++pub const IN_CLOEXEC: u32 = 524288; ++pub const IN_NONBLOCK: u32 = 2048; ++pub const IPTOS_TOS_MASK: u32 = 30; ++pub const IPTOS_LOWDELAY: u32 = 16; ++pub const IPTOS_THROUGHPUT: u32 = 8; ++pub const IPTOS_RELIABILITY: u32 = 4; ++pub const IPTOS_MINCOST: u32 = 2; ++pub const IPTOS_PREC_MASK: u32 = 224; ++pub const IPTOS_PREC_NETCONTROL: u32 = 224; ++pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192; ++pub const IPTOS_PREC_CRITIC_ECP: u32 = 160; ++pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128; ++pub const IPTOS_PREC_FLASH: u32 = 96; ++pub const IPTOS_PREC_IMMEDIATE: u32 = 64; ++pub const IPTOS_PREC_PRIORITY: u32 = 32; ++pub const IPTOS_PREC_ROUTINE: u32 = 0; ++pub const IPOPT_COPY: u32 = 128; ++pub const IPOPT_CLASS_MASK: u32 = 96; ++pub const IPOPT_NUMBER_MASK: u32 = 31; ++pub const IPOPT_CONTROL: u32 = 0; ++pub const IPOPT_RESERVED1: u32 = 32; ++pub const IPOPT_MEASUREMENT: u32 = 64; ++pub const IPOPT_RESERVED2: u32 = 96; ++pub const IPOPT_END: u32 = 0; ++pub const IPOPT_NOOP: u32 = 1; ++pub const IPOPT_SEC: u32 = 130; ++pub const IPOPT_LSRR: u32 = 131; ++pub const IPOPT_TIMESTAMP: u32 = 68; ++pub const IPOPT_CIPSO: u32 = 134; ++pub const IPOPT_RR: u32 = 7; ++pub const IPOPT_SID: u32 = 136; ++pub const IPOPT_SSRR: u32 = 137; ++pub const IPOPT_RA: u32 = 148; ++pub const IPVERSION: u32 = 4; ++pub const MAXTTL: u32 = 255; ++pub const IPDEFTTL: u32 = 64; ++pub const IPOPT_OPTVAL: u32 = 0; ++pub const IPOPT_OLEN: u32 = 1; ++pub const IPOPT_OFFSET: u32 = 2; ++pub const IPOPT_MINOFF: u32 = 4; ++pub const MAX_IPOPTLEN: u32 = 40; ++pub const IPOPT_NOP: u32 = 1; ++pub const IPOPT_EOL: u32 = 0; ++pub const IPOPT_TS: u32 = 68; ++pub const IPOPT_TS_TSONLY: u32 = 0; ++pub const IPOPT_TS_TSANDADDR: u32 = 1; ++pub const IPOPT_TS_PRESPEC: u32 = 3; ++pub const IPV4_BEET_PHMAXLEN: u32 = 8; ++pub const IPV6_FL_A_GET: u32 = 0; ++pub const IPV6_FL_A_PUT: u32 = 1; ++pub const IPV6_FL_A_RENEW: u32 = 2; ++pub const IPV6_FL_F_CREATE: u32 = 1; ++pub const IPV6_FL_F_EXCL: u32 = 2; ++pub const IPV6_FL_F_REFLECT: u32 = 4; ++pub const IPV6_FL_F_REMOTE: u32 = 8; ++pub const IPV6_FL_S_NONE: u32 = 0; ++pub const IPV6_FL_S_EXCL: u32 = 1; ++pub const IPV6_FL_S_PROCESS: u32 = 2; ++pub const IPV6_FL_S_USER: u32 = 3; ++pub const IPV6_FL_S_ANY: u32 = 255; ++pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575; ++pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880; ++pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0; ++pub const IPV6_PRIORITY_FILLER: u32 = 256; ++pub const IPV6_PRIORITY_UNATTENDED: u32 = 512; ++pub const IPV6_PRIORITY_RESERVED1: u32 = 768; ++pub const IPV6_PRIORITY_BULK: u32 = 1024; ++pub const IPV6_PRIORITY_RESERVED2: u32 = 1280; ++pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536; ++pub const IPV6_PRIORITY_CONTROL: u32 = 1792; ++pub const IPV6_PRIORITY_8: u32 = 2048; ++pub const IPV6_PRIORITY_9: u32 = 2304; ++pub const IPV6_PRIORITY_10: u32 = 2560; ++pub const IPV6_PRIORITY_11: u32 = 2816; ++pub const IPV6_PRIORITY_12: u32 = 3072; ++pub const IPV6_PRIORITY_13: u32 = 3328; ++pub const IPV6_PRIORITY_14: u32 = 3584; ++pub const IPV6_PRIORITY_15: u32 = 3840; ++pub const IPPROTO_HOPOPTS: u32 = 0; ++pub const IPPROTO_ROUTING: u32 = 43; ++pub const IPPROTO_FRAGMENT: u32 = 44; ++pub const IPPROTO_ICMPV6: u32 = 58; ++pub const IPPROTO_NONE: u32 = 59; ++pub const IPPROTO_DSTOPTS: u32 = 60; ++pub const IPPROTO_MH: u32 = 135; ++pub const IPV6_TLV_PAD1: u32 = 0; ++pub const IPV6_TLV_PADN: u32 = 1; ++pub const IPV6_TLV_ROUTERALERT: u32 = 5; ++pub const IPV6_TLV_CALIPSO: u32 = 7; ++pub const IPV6_TLV_IOAM: u32 = 49; ++pub const IPV6_TLV_JUMBO: u32 = 194; ++pub const IPV6_TLV_HAO: u32 = 201; ++pub const IPV6_ADDRFORM: u32 = 1; ++pub const IPV6_2292PKTINFO: u32 = 2; ++pub const IPV6_2292HOPOPTS: u32 = 3; ++pub const IPV6_2292DSTOPTS: u32 = 4; ++pub const IPV6_2292RTHDR: u32 = 5; ++pub const IPV6_2292PKTOPTIONS: u32 = 6; ++pub const IPV6_CHECKSUM: u32 = 7; ++pub const IPV6_2292HOPLIMIT: u32 = 8; ++pub const IPV6_NEXTHOP: u32 = 9; ++pub const IPV6_AUTHHDR: u32 = 10; ++pub const IPV6_FLOWINFO: u32 = 11; ++pub const IPV6_UNICAST_HOPS: u32 = 16; ++pub const IPV6_MULTICAST_IF: u32 = 17; ++pub const IPV6_MULTICAST_HOPS: u32 = 18; ++pub const IPV6_MULTICAST_LOOP: u32 = 19; ++pub const IPV6_ADD_MEMBERSHIP: u32 = 20; ++pub const IPV6_DROP_MEMBERSHIP: u32 = 21; ++pub const IPV6_ROUTER_ALERT: u32 = 22; ++pub const IPV6_MTU_DISCOVER: u32 = 23; ++pub const IPV6_MTU: u32 = 24; ++pub const IPV6_RECVERR: u32 = 25; ++pub const IPV6_V6ONLY: u32 = 26; ++pub const IPV6_JOIN_ANYCAST: u32 = 27; ++pub const IPV6_LEAVE_ANYCAST: u32 = 28; ++pub const IPV6_MULTICAST_ALL: u32 = 29; ++pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30; ++pub const IPV6_RECVERR_RFC4884: u32 = 31; ++pub const IPV6_PMTUDISC_DONT: u32 = 0; ++pub const IPV6_PMTUDISC_WANT: u32 = 1; ++pub const IPV6_PMTUDISC_DO: u32 = 2; ++pub const IPV6_PMTUDISC_PROBE: u32 = 3; ++pub const IPV6_PMTUDISC_INTERFACE: u32 = 4; ++pub const IPV6_PMTUDISC_OMIT: u32 = 5; ++pub const IPV6_FLOWLABEL_MGR: u32 = 32; ++pub const IPV6_FLOWINFO_SEND: u32 = 33; ++pub const IPV6_IPSEC_POLICY: u32 = 34; ++pub const IPV6_XFRM_POLICY: u32 = 35; ++pub const IPV6_HDRINCL: u32 = 36; ++pub const IPV6_RECVPKTINFO: u32 = 49; ++pub const IPV6_PKTINFO: u32 = 50; ++pub const IPV6_RECVHOPLIMIT: u32 = 51; ++pub const IPV6_HOPLIMIT: u32 = 52; ++pub const IPV6_RECVHOPOPTS: u32 = 53; ++pub const IPV6_HOPOPTS: u32 = 54; ++pub const IPV6_RTHDRDSTOPTS: u32 = 55; ++pub const IPV6_RECVRTHDR: u32 = 56; ++pub const IPV6_RTHDR: u32 = 57; ++pub const IPV6_RECVDSTOPTS: u32 = 58; ++pub const IPV6_DSTOPTS: u32 = 59; ++pub const IPV6_RECVPATHMTU: u32 = 60; ++pub const IPV6_PATHMTU: u32 = 61; ++pub const IPV6_DONTFRAG: u32 = 62; ++pub const IPV6_RECVTCLASS: u32 = 66; ++pub const IPV6_TCLASS: u32 = 67; ++pub const IPV6_AUTOFLOWLABEL: u32 = 70; ++pub const IPV6_ADDR_PREFERENCES: u32 = 72; ++pub const IPV6_PREFER_SRC_TMP: u32 = 1; ++pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2; ++pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256; ++pub const IPV6_PREFER_SRC_COA: u32 = 4; ++pub const IPV6_PREFER_SRC_HOME: u32 = 1024; ++pub const IPV6_PREFER_SRC_CGA: u32 = 8; ++pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048; ++pub const IPV6_MINHOPCOUNT: u32 = 73; ++pub const IPV6_ORIGDSTADDR: u32 = 74; ++pub const IPV6_RECVORIGDSTADDR: u32 = 74; ++pub const IPV6_TRANSPARENT: u32 = 75; ++pub const IPV6_UNICAST_IF: u32 = 76; ++pub const IPV6_RECVFRAGSIZE: u32 = 77; ++pub const IPV6_FREEBIND: u32 = 78; ++pub const IPV6_MIN_MTU: u32 = 1280; ++pub const IPV6_SRCRT_STRICT: u32 = 1; ++pub const IPV6_SRCRT_TYPE_0: u32 = 0; ++pub const IPV6_SRCRT_TYPE_2: u32 = 2; ++pub const IPV6_SRCRT_TYPE_3: u32 = 3; ++pub const IPV6_SRCRT_TYPE_4: u32 = 4; ++pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0; ++pub const ADFS_SUPER_MAGIC: u32 = 44533; ++pub const AFFS_SUPER_MAGIC: u32 = 44543; ++pub const AFS_SUPER_MAGIC: u32 = 1397113167; ++pub const AUTOFS_SUPER_MAGIC: u32 = 391; ++pub const CEPH_SUPER_MAGIC: u32 = 12805120; ++pub const CODA_SUPER_MAGIC: u32 = 1937076805; ++pub const CRAMFS_MAGIC: u32 = 684539205; ++pub const CRAMFS_MAGIC_WEND: u32 = 1161678120; ++pub const DEBUGFS_MAGIC: u32 = 1684170528; ++pub const SECURITYFS_MAGIC: u32 = 1935894131; ++pub const SELINUX_MAGIC: u32 = 4185718668; ++pub const SMACK_MAGIC: u32 = 1128357203; ++pub const RAMFS_MAGIC: u32 = 2240043254; ++pub const TMPFS_MAGIC: u32 = 16914836; ++pub const HUGETLBFS_MAGIC: u32 = 2508478710; ++pub const SQUASHFS_MAGIC: u32 = 1936814952; ++pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791; ++pub const EFS_SUPER_MAGIC: u32 = 4278867; ++pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530; ++pub const EXT2_SUPER_MAGIC: u32 = 61267; ++pub const EXT3_SUPER_MAGIC: u32 = 61267; ++pub const XENFS_SUPER_MAGIC: u32 = 2881100148; ++pub const EXT4_SUPER_MAGIC: u32 = 61267; ++pub const BTRFS_SUPER_MAGIC: u32 = 2435016766; ++pub const NILFS_SUPER_MAGIC: u32 = 13364; ++pub const F2FS_SUPER_MAGIC: u32 = 4076150800; ++pub const HPFS_SUPER_MAGIC: u32 = 4187351113; ++pub const ISOFS_SUPER_MAGIC: u32 = 38496; ++pub const JFFS2_SUPER_MAGIC: u32 = 29366; ++pub const XFS_SUPER_MAGIC: u32 = 1481003842; ++pub const PSTOREFS_MAGIC: u32 = 1634035564; ++pub const EFIVARFS_MAGIC: u32 = 3730735588; ++pub const HOSTFS_SUPER_MAGIC: u32 = 12648430; ++pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128; ++pub const FUSE_SUPER_MAGIC: u32 = 1702057286; ++pub const MINIX_SUPER_MAGIC: u32 = 4991; ++pub const MINIX_SUPER_MAGIC2: u32 = 5007; ++pub const MINIX2_SUPER_MAGIC: u32 = 9320; ++pub const MINIX2_SUPER_MAGIC2: u32 = 9336; ++pub const MINIX3_SUPER_MAGIC: u32 = 19802; ++pub const MSDOS_SUPER_MAGIC: u32 = 19780; ++pub const EXFAT_SUPER_MAGIC: u32 = 538032816; ++pub const NCP_SUPER_MAGIC: u32 = 22092; ++pub const NFS_SUPER_MAGIC: u32 = 26985; ++pub const OCFS2_SUPER_MAGIC: u32 = 1952539503; ++pub const OPENPROM_SUPER_MAGIC: u32 = 40865; ++pub const QNX4_SUPER_MAGIC: u32 = 47; ++pub const QNX6_SUPER_MAGIC: u32 = 1746473250; ++pub const AFS_FS_MAGIC: u32 = 1799439955; ++pub const REISERFS_SUPER_MAGIC: u32 = 1382369651; ++pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0"; ++pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0"; ++pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0"; ++pub const SMB_SUPER_MAGIC: u32 = 20859; ++pub const CIFS_SUPER_MAGIC: u32 = 4283649346; ++pub const SMB2_SUPER_MAGIC: u32 = 4266872130; ++pub const CGROUP_SUPER_MAGIC: u32 = 2613483; ++pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888; ++pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209; ++pub const STACK_END_MAGIC: u32 = 1470918301; ++pub const TRACEFS_MAGIC: u32 = 1953653091; ++pub const V9FS_MAGIC: u32 = 16914839; ++pub const BDEVFS_MAGIC: u32 = 1650746742; ++pub const DAXFS_MAGIC: u32 = 1684300152; ++pub const BINFMTFS_MAGIC: u32 = 1112100429; ++pub const DEVPTS_SUPER_MAGIC: u32 = 7377; ++pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352; ++pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762; ++pub const PIPEFS_MAGIC: u32 = 1346981957; ++pub const PROC_SUPER_MAGIC: u32 = 40864; ++pub const SOCKFS_MAGIC: u32 = 1397703499; ++pub const SYSFS_MAGIC: u32 = 1650812274; ++pub const USBDEVICE_SUPER_MAGIC: u32 = 40866; ++pub const MTD_INODE_FS_MAGIC: u32 = 288389204; ++pub const ANON_INODE_FS_MAGIC: u32 = 151263540; ++pub const BTRFS_TEST_MAGIC: u32 = 1936880249; ++pub const NSFS_MAGIC: u32 = 1853056627; ++pub const BPF_FS_MAGIC: u32 = 3405662737; ++pub const AAFS_MAGIC: u32 = 1513908720; ++pub const ZONEFS_MAGIC: u32 = 1515144787; ++pub const UDF_SUPER_MAGIC: u32 = 352400198; ++pub const DMA_BUF_MAGIC: u32 = 1145913666; ++pub const DEVMEM_MAGIC: u32 = 1162691661; ++pub const SECRETMEM_MAGIC: u32 = 1397048141; ++pub const PROT_READ: u32 = 1; ++pub const PROT_WRITE: u32 = 2; ++pub const PROT_EXEC: u32 = 4; ++pub const PROT_SEM: u32 = 8; ++pub const PROT_NONE: u32 = 0; ++pub const PROT_GROWSDOWN: u32 = 16777216; ++pub const PROT_GROWSUP: u32 = 33554432; ++pub const MAP_TYPE: u32 = 15; ++pub const MAP_FIXED: u32 = 16; ++pub const MAP_ANONYMOUS: u32 = 32; ++pub const MAP_POPULATE: u32 = 32768; ++pub const MAP_NONBLOCK: u32 = 65536; ++pub const MAP_STACK: u32 = 131072; ++pub const MAP_HUGETLB: u32 = 262144; ++pub const MAP_SYNC: u32 = 524288; ++pub const MAP_FIXED_NOREPLACE: u32 = 1048576; ++pub const MAP_UNINITIALIZED: u32 = 67108864; ++pub const MLOCK_ONFAULT: u32 = 1; ++pub const MS_ASYNC: u32 = 1; ++pub const MS_INVALIDATE: u32 = 2; ++pub const MS_SYNC: u32 = 4; ++pub const MADV_NORMAL: u32 = 0; ++pub const MADV_RANDOM: u32 = 1; ++pub const MADV_SEQUENTIAL: u32 = 2; ++pub const MADV_WILLNEED: u32 = 3; ++pub const MADV_DONTNEED: u32 = 4; ++pub const MADV_FREE: u32 = 8; ++pub const MADV_REMOVE: u32 = 9; ++pub const MADV_DONTFORK: u32 = 10; ++pub const MADV_DOFORK: u32 = 11; ++pub const MADV_HWPOISON: u32 = 100; ++pub const MADV_SOFT_OFFLINE: u32 = 101; ++pub const MADV_MERGEABLE: u32 = 12; ++pub const MADV_UNMERGEABLE: u32 = 13; ++pub const MADV_HUGEPAGE: u32 = 14; ++pub const MADV_NOHUGEPAGE: u32 = 15; ++pub const MADV_DONTDUMP: u32 = 16; ++pub const MADV_DODUMP: u32 = 17; ++pub const MADV_WIPEONFORK: u32 = 18; ++pub const MADV_KEEPONFORK: u32 = 19; ++pub const MADV_COLD: u32 = 20; ++pub const MADV_PAGEOUT: u32 = 21; ++pub const MADV_POPULATE_READ: u32 = 22; ++pub const MADV_POPULATE_WRITE: u32 = 23; ++pub const MADV_DONTNEED_LOCKED: u32 = 24; ++pub const MADV_COLLAPSE: u32 = 25; ++pub const MAP_FILE: u32 = 0; ++pub const PKEY_DISABLE_ACCESS: u32 = 1; ++pub const PKEY_DISABLE_WRITE: u32 = 2; ++pub const PKEY_ACCESS_MASK: u32 = 3; ++pub const MAP_GROWSDOWN: u32 = 256; ++pub const MAP_DENYWRITE: u32 = 2048; ++pub const MAP_EXECUTABLE: u32 = 4096; ++pub const MAP_LOCKED: u32 = 8192; ++pub const MAP_NORESERVE: u32 = 16384; ++pub const MCL_CURRENT: u32 = 1; ++pub const MCL_FUTURE: u32 = 2; ++pub const MCL_ONFAULT: u32 = 4; ++pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26; ++pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63; ++pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096; ++pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824; ++pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416; ++pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280; ++pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144; ++pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872; ++pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736; ++pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600; ++pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192; ++pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056; ++pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920; ++pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784; ++pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376; ++pub const MREMAP_MAYMOVE: u32 = 1; ++pub const MREMAP_FIXED: u32 = 2; ++pub const MREMAP_DONTUNMAP: u32 = 4; ++pub const OVERCOMMIT_GUESS: u32 = 0; ++pub const OVERCOMMIT_ALWAYS: u32 = 1; ++pub const OVERCOMMIT_NEVER: u32 = 2; ++pub const MAP_SHARED: u32 = 1; ++pub const MAP_PRIVATE: u32 = 2; ++pub const MAP_SHARED_VALIDATE: u32 = 3; ++pub const MAP_HUGE_SHIFT: u32 = 26; ++pub const MAP_HUGE_MASK: u32 = 63; ++pub const MAP_HUGE_16KB: u32 = 939524096; ++pub const MAP_HUGE_64KB: u32 = 1073741824; ++pub const MAP_HUGE_512KB: u32 = 1275068416; ++pub const MAP_HUGE_1MB: u32 = 1342177280; ++pub const MAP_HUGE_2MB: u32 = 1409286144; ++pub const MAP_HUGE_8MB: u32 = 1543503872; ++pub const MAP_HUGE_16MB: u32 = 1610612736; ++pub const MAP_HUGE_32MB: u32 = 1677721600; ++pub const MAP_HUGE_256MB: u32 = 1879048192; ++pub const MAP_HUGE_512MB: u32 = 1946157056; ++pub const MAP_HUGE_1GB: u32 = 2013265920; ++pub const MAP_HUGE_2GB: u32 = 2080374784; ++pub const MAP_HUGE_16GB: u32 = 2281701376; ++pub const SIOCGSTAMP_OLD: u32 = 35078; ++pub const SIOCGSTAMPNS_OLD: u32 = 35079; ++pub const SOL_SOCKET: u32 = 1; ++pub const SO_DEBUG: u32 = 1; ++pub const SO_REUSEADDR: u32 = 2; ++pub const SO_TYPE: u32 = 3; ++pub const SO_ERROR: u32 = 4; ++pub const SO_DONTROUTE: u32 = 5; ++pub const SO_BROADCAST: u32 = 6; ++pub const SO_SNDBUF: u32 = 7; ++pub const SO_RCVBUF: u32 = 8; ++pub const SO_SNDBUFFORCE: u32 = 32; ++pub const SO_RCVBUFFORCE: u32 = 33; ++pub const SO_KEEPALIVE: u32 = 9; ++pub const SO_OOBINLINE: u32 = 10; ++pub const SO_NO_CHECK: u32 = 11; ++pub const SO_PRIORITY: u32 = 12; ++pub const SO_LINGER: u32 = 13; ++pub const SO_BSDCOMPAT: u32 = 14; ++pub const SO_REUSEPORT: u32 = 15; ++pub const SO_PASSCRED: u32 = 16; ++pub const SO_PEERCRED: u32 = 17; ++pub const SO_RCVLOWAT: u32 = 18; ++pub const SO_SNDLOWAT: u32 = 19; ++pub const SO_RCVTIMEO_OLD: u32 = 20; ++pub const SO_SNDTIMEO_OLD: u32 = 21; ++pub const SO_SECURITY_AUTHENTICATION: u32 = 22; ++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23; ++pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24; ++pub const SO_BINDTODEVICE: u32 = 25; ++pub const SO_ATTACH_FILTER: u32 = 26; ++pub const SO_DETACH_FILTER: u32 = 27; ++pub const SO_GET_FILTER: u32 = 26; ++pub const SO_PEERNAME: u32 = 28; ++pub const SO_ACCEPTCONN: u32 = 30; ++pub const SO_PEERSEC: u32 = 31; ++pub const SO_PASSSEC: u32 = 34; ++pub const SO_MARK: u32 = 36; ++pub const SO_PROTOCOL: u32 = 38; ++pub const SO_DOMAIN: u32 = 39; ++pub const SO_RXQ_OVFL: u32 = 40; ++pub const SO_WIFI_STATUS: u32 = 41; ++pub const SCM_WIFI_STATUS: u32 = 41; ++pub const SO_PEEK_OFF: u32 = 42; ++pub const SO_NOFCS: u32 = 43; ++pub const SO_LOCK_FILTER: u32 = 44; ++pub const SO_SELECT_ERR_QUEUE: u32 = 45; ++pub const SO_BUSY_POLL: u32 = 46; ++pub const SO_MAX_PACING_RATE: u32 = 47; ++pub const SO_BPF_EXTENSIONS: u32 = 48; ++pub const SO_INCOMING_CPU: u32 = 49; ++pub const SO_ATTACH_BPF: u32 = 50; ++pub const SO_DETACH_BPF: u32 = 27; ++pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51; ++pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52; ++pub const SO_CNX_ADVICE: u32 = 53; ++pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54; ++pub const SO_MEMINFO: u32 = 55; ++pub const SO_INCOMING_NAPI_ID: u32 = 56; ++pub const SO_COOKIE: u32 = 57; ++pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58; ++pub const SO_PEERGROUPS: u32 = 59; ++pub const SO_ZEROCOPY: u32 = 60; ++pub const SO_TXTIME: u32 = 61; ++pub const SCM_TXTIME: u32 = 61; ++pub const SO_BINDTOIFINDEX: u32 = 62; ++pub const SO_TIMESTAMP_OLD: u32 = 29; ++pub const SO_TIMESTAMPNS_OLD: u32 = 35; ++pub const SO_TIMESTAMPING_OLD: u32 = 37; ++pub const SO_TIMESTAMP_NEW: u32 = 63; ++pub const SO_TIMESTAMPNS_NEW: u32 = 64; ++pub const SO_TIMESTAMPING_NEW: u32 = 65; ++pub const SO_RCVTIMEO_NEW: u32 = 66; ++pub const SO_SNDTIMEO_NEW: u32 = 67; ++pub const SO_DETACH_REUSEPORT_BPF: u32 = 68; ++pub const SO_PREFER_BUSY_POLL: u32 = 69; ++pub const SO_BUSY_POLL_BUDGET: u32 = 70; ++pub const SO_NETNS_COOKIE: u32 = 71; ++pub const SO_BUF_LOCK: u32 = 72; ++pub const SO_RESERVE_MEM: u32 = 73; ++pub const SO_TXREHASH: u32 = 74; ++pub const SO_RCVMARK: u32 = 75; ++pub const SO_TIMESTAMP: u32 = 29; ++pub const SO_TIMESTAMPNS: u32 = 35; ++pub const SO_TIMESTAMPING: u32 = 37; ++pub const SO_RCVTIMEO: u32 = 20; ++pub const SO_SNDTIMEO: u32 = 21; ++pub const SCM_TIMESTAMP: u32 = 29; ++pub const SCM_TIMESTAMPNS: u32 = 35; ++pub const SCM_TIMESTAMPING: u32 = 37; ++pub const SYS_SOCKET: u32 = 1; ++pub const SYS_BIND: u32 = 2; ++pub const SYS_CONNECT: u32 = 3; ++pub const SYS_LISTEN: u32 = 4; ++pub const SYS_ACCEPT: u32 = 5; ++pub const SYS_GETSOCKNAME: u32 = 6; ++pub const SYS_GETPEERNAME: u32 = 7; ++pub const SYS_SOCKETPAIR: u32 = 8; ++pub const SYS_SEND: u32 = 9; ++pub const SYS_RECV: u32 = 10; ++pub const SYS_SENDTO: u32 = 11; ++pub const SYS_RECVFROM: u32 = 12; ++pub const SYS_SHUTDOWN: u32 = 13; ++pub const SYS_SETSOCKOPT: u32 = 14; ++pub const SYS_GETSOCKOPT: u32 = 15; ++pub const SYS_SENDMSG: u32 = 16; ++pub const SYS_RECVMSG: u32 = 17; ++pub const SYS_ACCEPT4: u32 = 18; ++pub const SYS_RECVMMSG: u32 = 19; ++pub const SYS_SENDMMSG: u32 = 20; ++pub const __SO_ACCEPTCON: u32 = 65536; ++pub const POLLIN: u32 = 1; ++pub const POLLPRI: u32 = 2; ++pub const POLLOUT: u32 = 4; ++pub const POLLERR: u32 = 8; ++pub const POLLHUP: u32 = 16; ++pub const POLLNVAL: u32 = 32; ++pub const POLLRDNORM: u32 = 64; ++pub const POLLRDBAND: u32 = 128; ++pub const POLLWRNORM: u32 = 256; ++pub const POLLWRBAND: u32 = 512; ++pub const POLLMSG: u32 = 1024; ++pub const POLLREMOVE: u32 = 4096; ++pub const POLLRDHUP: u32 = 8192; ++pub const PR_SET_PDEATHSIG: u32 = 1; ++pub const PR_GET_PDEATHSIG: u32 = 2; ++pub const PR_GET_DUMPABLE: u32 = 3; ++pub const PR_SET_DUMPABLE: u32 = 4; ++pub const PR_GET_UNALIGN: u32 = 5; ++pub const PR_SET_UNALIGN: u32 = 6; ++pub const PR_UNALIGN_NOPRINT: u32 = 1; ++pub const PR_UNALIGN_SIGBUS: u32 = 2; ++pub const PR_GET_KEEPCAPS: u32 = 7; ++pub const PR_SET_KEEPCAPS: u32 = 8; ++pub const PR_GET_FPEMU: u32 = 9; ++pub const PR_SET_FPEMU: u32 = 10; ++pub const PR_FPEMU_NOPRINT: u32 = 1; ++pub const PR_FPEMU_SIGFPE: u32 = 2; ++pub const PR_GET_FPEXC: u32 = 11; ++pub const PR_SET_FPEXC: u32 = 12; ++pub const PR_FP_EXC_SW_ENABLE: u32 = 128; ++pub const PR_FP_EXC_DIV: u32 = 65536; ++pub const PR_FP_EXC_OVF: u32 = 131072; ++pub const PR_FP_EXC_UND: u32 = 262144; ++pub const PR_FP_EXC_RES: u32 = 524288; ++pub const PR_FP_EXC_INV: u32 = 1048576; ++pub const PR_FP_EXC_DISABLED: u32 = 0; ++pub const PR_FP_EXC_NONRECOV: u32 = 1; ++pub const PR_FP_EXC_ASYNC: u32 = 2; ++pub const PR_FP_EXC_PRECISE: u32 = 3; ++pub const PR_GET_TIMING: u32 = 13; ++pub const PR_SET_TIMING: u32 = 14; ++pub const PR_TIMING_STATISTICAL: u32 = 0; ++pub const PR_TIMING_TIMESTAMP: u32 = 1; ++pub const PR_SET_NAME: u32 = 15; ++pub const PR_GET_NAME: u32 = 16; ++pub const PR_GET_ENDIAN: u32 = 19; ++pub const PR_SET_ENDIAN: u32 = 20; ++pub const PR_ENDIAN_BIG: u32 = 0; ++pub const PR_ENDIAN_LITTLE: u32 = 1; ++pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; ++pub const PR_GET_SECCOMP: u32 = 21; ++pub const PR_SET_SECCOMP: u32 = 22; ++pub const PR_CAPBSET_READ: u32 = 23; ++pub const PR_CAPBSET_DROP: u32 = 24; ++pub const PR_GET_TSC: u32 = 25; ++pub const PR_SET_TSC: u32 = 26; ++pub const PR_TSC_ENABLE: u32 = 1; ++pub const PR_TSC_SIGSEGV: u32 = 2; ++pub const PR_GET_SECUREBITS: u32 = 27; ++pub const PR_SET_SECUREBITS: u32 = 28; ++pub const PR_SET_TIMERSLACK: u32 = 29; ++pub const PR_GET_TIMERSLACK: u32 = 30; ++pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; ++pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; ++pub const PR_MCE_KILL: u32 = 33; ++pub const PR_MCE_KILL_CLEAR: u32 = 0; ++pub const PR_MCE_KILL_SET: u32 = 1; ++pub const PR_MCE_KILL_LATE: u32 = 0; ++pub const PR_MCE_KILL_EARLY: u32 = 1; ++pub const PR_MCE_KILL_DEFAULT: u32 = 2; ++pub const PR_MCE_KILL_GET: u32 = 34; ++pub const PR_SET_MM: u32 = 35; ++pub const PR_SET_MM_START_CODE: u32 = 1; ++pub const PR_SET_MM_END_CODE: u32 = 2; ++pub const PR_SET_MM_START_DATA: u32 = 3; ++pub const PR_SET_MM_END_DATA: u32 = 4; ++pub const PR_SET_MM_START_STACK: u32 = 5; ++pub const PR_SET_MM_START_BRK: u32 = 6; ++pub const PR_SET_MM_BRK: u32 = 7; ++pub const PR_SET_MM_ARG_START: u32 = 8; ++pub const PR_SET_MM_ARG_END: u32 = 9; ++pub const PR_SET_MM_ENV_START: u32 = 10; ++pub const PR_SET_MM_ENV_END: u32 = 11; ++pub const PR_SET_MM_AUXV: u32 = 12; ++pub const PR_SET_MM_EXE_FILE: u32 = 13; ++pub const PR_SET_MM_MAP: u32 = 14; ++pub const PR_SET_MM_MAP_SIZE: u32 = 15; ++pub const PR_SET_PTRACER: u32 = 1499557217; ++pub const PR_SET_CHILD_SUBREAPER: u32 = 36; ++pub const PR_GET_CHILD_SUBREAPER: u32 = 37; ++pub const PR_SET_NO_NEW_PRIVS: u32 = 38; ++pub const PR_GET_NO_NEW_PRIVS: u32 = 39; ++pub const PR_GET_TID_ADDRESS: u32 = 40; ++pub const PR_SET_THP_DISABLE: u32 = 41; ++pub const PR_GET_THP_DISABLE: u32 = 42; ++pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; ++pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; ++pub const PR_SET_FP_MODE: u32 = 45; ++pub const PR_GET_FP_MODE: u32 = 46; ++pub const PR_FP_MODE_FR: u32 = 1; ++pub const PR_FP_MODE_FRE: u32 = 2; ++pub const PR_CAP_AMBIENT: u32 = 47; ++pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; ++pub const PR_CAP_AMBIENT_RAISE: u32 = 2; ++pub const PR_CAP_AMBIENT_LOWER: u32 = 3; ++pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; ++pub const PR_SVE_SET_VL: u32 = 50; ++pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; ++pub const PR_SVE_GET_VL: u32 = 51; ++pub const PR_SVE_VL_LEN_MASK: u32 = 65535; ++pub const PR_SVE_VL_INHERIT: u32 = 131072; ++pub const PR_GET_SPECULATION_CTRL: u32 = 52; ++pub const PR_SET_SPECULATION_CTRL: u32 = 53; ++pub const PR_SPEC_STORE_BYPASS: u32 = 0; ++pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; ++pub const PR_SPEC_L1D_FLUSH: u32 = 2; ++pub const PR_SPEC_NOT_AFFECTED: u32 = 0; ++pub const PR_SPEC_PRCTL: u32 = 1; ++pub const PR_SPEC_ENABLE: u32 = 2; ++pub const PR_SPEC_DISABLE: u32 = 4; ++pub const PR_SPEC_FORCE_DISABLE: u32 = 8; ++pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; ++pub const PR_PAC_RESET_KEYS: u32 = 54; ++pub const PR_PAC_APIAKEY: u32 = 1; ++pub const PR_PAC_APIBKEY: u32 = 2; ++pub const PR_PAC_APDAKEY: u32 = 4; ++pub const PR_PAC_APDBKEY: u32 = 8; ++pub const PR_PAC_APGAKEY: u32 = 16; ++pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; ++pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; ++pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; ++pub const PR_MTE_TCF_NONE: u32 = 0; ++pub const PR_MTE_TCF_SYNC: u32 = 2; ++pub const PR_MTE_TCF_ASYNC: u32 = 4; ++pub const PR_MTE_TCF_MASK: u32 = 6; ++pub const PR_MTE_TAG_SHIFT: u32 = 3; ++pub const PR_MTE_TAG_MASK: u32 = 524280; ++pub const PR_MTE_TCF_SHIFT: u32 = 1; ++pub const PR_SET_IO_FLUSHER: u32 = 57; ++pub const PR_GET_IO_FLUSHER: u32 = 58; ++pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; ++pub const PR_SYS_DISPATCH_OFF: u32 = 0; ++pub const PR_SYS_DISPATCH_ON: u32 = 1; ++pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0; ++pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1; ++pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; ++pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; ++pub const PR_SCHED_CORE: u32 = 62; ++pub const PR_SCHED_CORE_GET: u32 = 0; ++pub const PR_SCHED_CORE_CREATE: u32 = 1; ++pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; ++pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; ++pub const PR_SCHED_CORE_MAX: u32 = 4; ++pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; ++pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; ++pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; ++pub const PR_SME_SET_VL: u32 = 63; ++pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; ++pub const PR_SME_GET_VL: u32 = 64; ++pub const PR_SME_VL_LEN_MASK: u32 = 65535; ++pub const PR_SME_VL_INHERIT: u32 = 131072; ++pub const PR_SET_VMA: u32 = 1398164801; ++pub const PR_SET_VMA_ANON_NAME: u32 = 0; ++pub const GRND_NONBLOCK: u32 = 1; ++pub const GRND_RANDOM: u32 = 2; ++pub const GRND_INSECURE: u32 = 4; ++pub const ITIMER_REAL: u32 = 0; ++pub const ITIMER_VIRTUAL: u32 = 1; ++pub const ITIMER_PROF: u32 = 2; ++pub const CLOCK_REALTIME: u32 = 0; ++pub const CLOCK_MONOTONIC: u32 = 1; ++pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; ++pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3; ++pub const CLOCK_MONOTONIC_RAW: u32 = 4; ++pub const CLOCK_REALTIME_COARSE: u32 = 5; ++pub const CLOCK_MONOTONIC_COARSE: u32 = 6; ++pub const CLOCK_BOOTTIME: u32 = 7; ++pub const CLOCK_REALTIME_ALARM: u32 = 8; ++pub const CLOCK_BOOTTIME_ALARM: u32 = 9; ++pub const CLOCK_SGI_CYCLE: u32 = 10; ++pub const CLOCK_TAI: u32 = 11; ++pub const MAX_CLOCKS: u32 = 16; ++pub const CLOCKS_MASK: u32 = 1; ++pub const CLOCKS_MONO: u32 = 1; ++pub const TIMER_ABSTIME: u32 = 1; ++pub const RUSAGE_SELF: u32 = 0; ++pub const RUSAGE_CHILDREN: i32 = -1; ++pub const RUSAGE_BOTH: i32 = -2; ++pub const RUSAGE_THREAD: u32 = 1; ++pub const RLIM64_INFINITY: i32 = -1; ++pub const PRIO_MIN: i32 = -20; ++pub const PRIO_MAX: u32 = 20; ++pub const PRIO_PROCESS: u32 = 0; ++pub const PRIO_PGRP: u32 = 1; ++pub const PRIO_USER: u32 = 2; ++pub const _STK_LIM: u32 = 8388608; ++pub const MLOCK_LIMIT: u32 = 8388608; ++pub const RLIMIT_CPU: u32 = 0; ++pub const RLIMIT_FSIZE: u32 = 1; ++pub const RLIMIT_DATA: u32 = 2; ++pub const RLIMIT_STACK: u32 = 3; ++pub const RLIMIT_CORE: u32 = 4; ++pub const RLIMIT_RSS: u32 = 5; ++pub const RLIMIT_NPROC: u32 = 6; ++pub const RLIMIT_NOFILE: u32 = 7; ++pub const RLIMIT_MEMLOCK: u32 = 8; ++pub const RLIMIT_AS: u32 = 9; ++pub const RLIMIT_LOCKS: u32 = 10; ++pub const RLIMIT_SIGPENDING: u32 = 11; ++pub const RLIMIT_MSGQUEUE: u32 = 12; ++pub const RLIMIT_NICE: u32 = 13; ++pub const RLIMIT_RTPRIO: u32 = 14; ++pub const RLIMIT_RTTIME: u32 = 15; ++pub const RLIM_NLIMITS: u32 = 16; ++pub const RLIM_INFINITY: i32 = -1; ++pub const CSIGNAL: u32 = 255; ++pub const CLONE_VM: u32 = 256; ++pub const CLONE_FS: u32 = 512; ++pub const CLONE_FILES: u32 = 1024; ++pub const CLONE_SIGHAND: u32 = 2048; ++pub const CLONE_PIDFD: u32 = 4096; ++pub const CLONE_PTRACE: u32 = 8192; ++pub const CLONE_VFORK: u32 = 16384; ++pub const CLONE_PARENT: u32 = 32768; ++pub const CLONE_THREAD: u32 = 65536; ++pub const CLONE_NEWNS: u32 = 131072; ++pub const CLONE_SYSVSEM: u32 = 262144; ++pub const CLONE_SETTLS: u32 = 524288; ++pub const CLONE_PARENT_SETTID: u32 = 1048576; ++pub const CLONE_CHILD_CLEARTID: u32 = 2097152; ++pub const CLONE_DETACHED: u32 = 4194304; ++pub const CLONE_UNTRACED: u32 = 8388608; ++pub const CLONE_CHILD_SETTID: u32 = 16777216; ++pub const CLONE_NEWCGROUP: u32 = 33554432; ++pub const CLONE_NEWUTS: u32 = 67108864; ++pub const CLONE_NEWIPC: u32 = 134217728; ++pub const CLONE_NEWUSER: u32 = 268435456; ++pub const CLONE_NEWPID: u32 = 536870912; ++pub const CLONE_NEWNET: u32 = 1073741824; ++pub const CLONE_IO: u32 = 2147483648; ++pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296; ++pub const CLONE_INTO_CGROUP: u64 = 8589934592; ++pub const CLONE_NEWTIME: u32 = 128; ++pub const CLONE_ARGS_SIZE_VER0: u32 = 64; ++pub const CLONE_ARGS_SIZE_VER1: u32 = 80; ++pub const CLONE_ARGS_SIZE_VER2: u32 = 88; ++pub const SCHED_NORMAL: u32 = 0; ++pub const SCHED_FIFO: u32 = 1; ++pub const SCHED_RR: u32 = 2; ++pub const SCHED_BATCH: u32 = 3; ++pub const SCHED_IDLE: u32 = 5; ++pub const SCHED_DEADLINE: u32 = 6; ++pub const SCHED_RESET_ON_FORK: u32 = 1073741824; ++pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1; ++pub const SCHED_FLAG_RECLAIM: u32 = 2; ++pub const SCHED_FLAG_DL_OVERRUN: u32 = 4; ++pub const SCHED_FLAG_KEEP_POLICY: u32 = 8; ++pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16; ++pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32; ++pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64; ++pub const SCHED_FLAG_KEEP_ALL: u32 = 24; ++pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96; ++pub const SCHED_FLAG_ALL: u32 = 127; ++pub const MINSIGSTKSZ: u32 = 4096; ++pub const SIGSTKSZ: u32 = 16384; ++pub const _NSIG: u32 = 64; ++pub const SIGHUP: u32 = 1; ++pub const SIGINT: u32 = 2; ++pub const SIGQUIT: u32 = 3; ++pub const SIGILL: u32 = 4; ++pub const SIGTRAP: u32 = 5; ++pub const SIGABRT: u32 = 6; ++pub const SIGIOT: u32 = 6; ++pub const SIGBUS: u32 = 7; ++pub const SIGFPE: u32 = 8; ++pub const SIGKILL: u32 = 9; ++pub const SIGUSR1: u32 = 10; ++pub const SIGSEGV: u32 = 11; ++pub const SIGUSR2: u32 = 12; ++pub const SIGPIPE: u32 = 13; ++pub const SIGALRM: u32 = 14; ++pub const SIGTERM: u32 = 15; ++pub const SIGSTKFLT: u32 = 16; ++pub const SIGCHLD: u32 = 17; ++pub const SIGCONT: u32 = 18; ++pub const SIGSTOP: u32 = 19; ++pub const SIGTSTP: u32 = 20; ++pub const SIGTTIN: u32 = 21; ++pub const SIGTTOU: u32 = 22; ++pub const SIGURG: u32 = 23; ++pub const SIGXCPU: u32 = 24; ++pub const SIGXFSZ: u32 = 25; ++pub const SIGVTALRM: u32 = 26; ++pub const SIGPROF: u32 = 27; ++pub const SIGWINCH: u32 = 28; ++pub const SIGIO: u32 = 29; ++pub const SIGPOLL: u32 = 29; ++pub const SIGPWR: u32 = 30; ++pub const SIGSYS: u32 = 31; ++pub const SIGUNUSED: u32 = 31; ++pub const SIGRTMIN: u32 = 32; ++pub const SIGRTMAX: u32 = 64; ++pub const SA_NOCLDSTOP: u32 = 1; ++pub const SA_NOCLDWAIT: u32 = 2; ++pub const SA_SIGINFO: u32 = 4; ++pub const SA_UNSUPPORTED: u32 = 1024; ++pub const SA_EXPOSE_TAGBITS: u32 = 2048; ++pub const SA_ONSTACK: u32 = 134217728; ++pub const SA_RESTART: u32 = 268435456; ++pub const SA_NODEFER: u32 = 1073741824; ++pub const SA_RESETHAND: u32 = 2147483648; ++pub const SA_NOMASK: u32 = 1073741824; ++pub const SA_ONESHOT: u32 = 2147483648; ++pub const SIG_BLOCK: u32 = 0; ++pub const SIG_UNBLOCK: u32 = 1; ++pub const SIG_SETMASK: u32 = 2; ++pub const SI_MAX_SIZE: u32 = 128; ++pub const SI_USER: u32 = 0; ++pub const SI_KERNEL: u32 = 128; ++pub const SI_QUEUE: i32 = -1; ++pub const SI_TIMER: i32 = -2; ++pub const SI_MESGQ: i32 = -3; ++pub const SI_ASYNCIO: i32 = -4; ++pub const SI_SIGIO: i32 = -5; ++pub const SI_TKILL: i32 = -6; ++pub const SI_DETHREAD: i32 = -7; ++pub const SI_ASYNCNL: i32 = -60; ++pub const ILL_ILLOPC: u32 = 1; ++pub const ILL_ILLOPN: u32 = 2; ++pub const ILL_ILLADR: u32 = 3; ++pub const ILL_ILLTRP: u32 = 4; ++pub const ILL_PRVOPC: u32 = 5; ++pub const ILL_PRVREG: u32 = 6; ++pub const ILL_COPROC: u32 = 7; ++pub const ILL_BADSTK: u32 = 8; ++pub const ILL_BADIADDR: u32 = 9; ++pub const __ILL_BREAK: u32 = 10; ++pub const __ILL_BNDMOD: u32 = 11; ++pub const NSIGILL: u32 = 11; ++pub const FPE_INTDIV: u32 = 1; ++pub const FPE_INTOVF: u32 = 2; ++pub const FPE_FLTDIV: u32 = 3; ++pub const FPE_FLTOVF: u32 = 4; ++pub const FPE_FLTUND: u32 = 5; ++pub const FPE_FLTRES: u32 = 6; ++pub const FPE_FLTINV: u32 = 7; ++pub const FPE_FLTSUB: u32 = 8; ++pub const __FPE_DECOVF: u32 = 9; ++pub const __FPE_DECDIV: u32 = 10; ++pub const __FPE_DECERR: u32 = 11; ++pub const __FPE_INVASC: u32 = 12; ++pub const __FPE_INVDEC: u32 = 13; ++pub const FPE_FLTUNK: u32 = 14; ++pub const FPE_CONDTRAP: u32 = 15; ++pub const NSIGFPE: u32 = 15; ++pub const SEGV_MAPERR: u32 = 1; ++pub const SEGV_ACCERR: u32 = 2; ++pub const SEGV_BNDERR: u32 = 3; ++pub const SEGV_PKUERR: u32 = 4; ++pub const SEGV_ACCADI: u32 = 5; ++pub const SEGV_ADIDERR: u32 = 6; ++pub const SEGV_ADIPERR: u32 = 7; ++pub const SEGV_MTEAERR: u32 = 8; ++pub const SEGV_MTESERR: u32 = 9; ++pub const NSIGSEGV: u32 = 9; ++pub const BUS_ADRALN: u32 = 1; ++pub const BUS_ADRERR: u32 = 2; ++pub const BUS_OBJERR: u32 = 3; ++pub const BUS_MCEERR_AR: u32 = 4; ++pub const BUS_MCEERR_AO: u32 = 5; ++pub const NSIGBUS: u32 = 5; ++pub const TRAP_BRKPT: u32 = 1; ++pub const TRAP_TRACE: u32 = 2; ++pub const TRAP_BRANCH: u32 = 3; ++pub const TRAP_HWBKPT: u32 = 4; ++pub const TRAP_UNK: u32 = 5; ++pub const TRAP_PERF: u32 = 6; ++pub const NSIGTRAP: u32 = 6; ++pub const TRAP_PERF_FLAG_ASYNC: u32 = 1; ++pub const CLD_EXITED: u32 = 1; ++pub const CLD_KILLED: u32 = 2; ++pub const CLD_DUMPED: u32 = 3; ++pub const CLD_TRAPPED: u32 = 4; ++pub const CLD_STOPPED: u32 = 5; ++pub const CLD_CONTINUED: u32 = 6; ++pub const NSIGCHLD: u32 = 6; ++pub const POLL_IN: u32 = 1; ++pub const POLL_OUT: u32 = 2; ++pub const POLL_MSG: u32 = 3; ++pub const POLL_ERR: u32 = 4; ++pub const POLL_PRI: u32 = 5; ++pub const POLL_HUP: u32 = 6; ++pub const NSIGPOLL: u32 = 6; ++pub const SYS_SECCOMP: u32 = 1; ++pub const SYS_USER_DISPATCH: u32 = 2; ++pub const NSIGSYS: u32 = 2; ++pub const EMT_TAGOVF: u32 = 1; ++pub const NSIGEMT: u32 = 1; ++pub const SIGEV_SIGNAL: u32 = 0; ++pub const SIGEV_NONE: u32 = 1; ++pub const SIGEV_THREAD: u32 = 2; ++pub const SIGEV_THREAD_ID: u32 = 4; ++pub const SIGEV_MAX_SIZE: u32 = 64; ++pub const SS_ONSTACK: u32 = 1; ++pub const SS_DISABLE: u32 = 2; ++pub const SS_AUTODISARM: u32 = 2147483648; ++pub const SS_FLAG_BITS: u32 = 2147483648; ++pub const S_IFMT: u32 = 61440; ++pub const S_IFSOCK: u32 = 49152; ++pub const S_IFLNK: u32 = 40960; ++pub const S_IFREG: u32 = 32768; ++pub const S_IFBLK: u32 = 24576; ++pub const S_IFDIR: u32 = 16384; ++pub const S_IFCHR: u32 = 8192; ++pub const S_IFIFO: u32 = 4096; ++pub const S_ISUID: u32 = 2048; ++pub const S_ISGID: u32 = 1024; ++pub const S_ISVTX: u32 = 512; ++pub const S_IRWXU: u32 = 448; ++pub const S_IRUSR: u32 = 256; ++pub const S_IWUSR: u32 = 128; ++pub const S_IXUSR: u32 = 64; ++pub const S_IRWXG: u32 = 56; ++pub const S_IRGRP: u32 = 32; ++pub const S_IWGRP: u32 = 16; ++pub const S_IXGRP: u32 = 8; ++pub const S_IRWXO: u32 = 7; ++pub const S_IROTH: u32 = 4; ++pub const S_IWOTH: u32 = 2; ++pub const S_IXOTH: u32 = 1; ++pub const STATX_TYPE: u32 = 1; ++pub const STATX_MODE: u32 = 2; ++pub const STATX_NLINK: u32 = 4; ++pub const STATX_UID: u32 = 8; ++pub const STATX_GID: u32 = 16; ++pub const STATX_ATIME: u32 = 32; ++pub const STATX_MTIME: u32 = 64; ++pub const STATX_CTIME: u32 = 128; ++pub const STATX_INO: u32 = 256; ++pub const STATX_SIZE: u32 = 512; ++pub const STATX_BLOCKS: u32 = 1024; ++pub const STATX_BASIC_STATS: u32 = 2047; ++pub const STATX_BTIME: u32 = 2048; ++pub const STATX_MNT_ID: u32 = 4096; ++pub const STATX_DIOALIGN: u32 = 8192; ++pub const STATX__RESERVED: u32 = 2147483648; ++pub const STATX_ALL: u32 = 4095; ++pub const STATX_ATTR_COMPRESSED: u32 = 4; ++pub const STATX_ATTR_IMMUTABLE: u32 = 16; ++pub const STATX_ATTR_APPEND: u32 = 32; ++pub const STATX_ATTR_NODUMP: u32 = 64; ++pub const STATX_ATTR_ENCRYPTED: u32 = 2048; ++pub const STATX_ATTR_AUTOMOUNT: u32 = 4096; ++pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192; ++pub const STATX_ATTR_VERITY: u32 = 1048576; ++pub const STATX_ATTR_DAX: u32 = 2097152; ++pub const SI_LOAD_SHIFT: u32 = 16; ++pub const TCP_MSS_DEFAULT: u32 = 536; ++pub const TCP_MSS_DESIRED: u32 = 1220; ++pub const TCP_NODELAY: u32 = 1; ++pub const TCP_MAXSEG: u32 = 2; ++pub const TCP_CORK: u32 = 3; ++pub const TCP_KEEPIDLE: u32 = 4; ++pub const TCP_KEEPINTVL: u32 = 5; ++pub const TCP_KEEPCNT: u32 = 6; ++pub const TCP_SYNCNT: u32 = 7; ++pub const TCP_LINGER2: u32 = 8; ++pub const TCP_DEFER_ACCEPT: u32 = 9; ++pub const TCP_WINDOW_CLAMP: u32 = 10; ++pub const TCP_INFO: u32 = 11; ++pub const TCP_QUICKACK: u32 = 12; ++pub const TCP_CONGESTION: u32 = 13; ++pub const TCP_MD5SIG: u32 = 14; ++pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16; ++pub const TCP_THIN_DUPACK: u32 = 17; ++pub const TCP_USER_TIMEOUT: u32 = 18; ++pub const TCP_REPAIR: u32 = 19; ++pub const TCP_REPAIR_QUEUE: u32 = 20; ++pub const TCP_QUEUE_SEQ: u32 = 21; ++pub const TCP_REPAIR_OPTIONS: u32 = 22; ++pub const TCP_FASTOPEN: u32 = 23; ++pub const TCP_TIMESTAMP: u32 = 24; ++pub const TCP_NOTSENT_LOWAT: u32 = 25; ++pub const TCP_CC_INFO: u32 = 26; ++pub const TCP_SAVE_SYN: u32 = 27; ++pub const TCP_SAVED_SYN: u32 = 28; ++pub const TCP_REPAIR_WINDOW: u32 = 29; ++pub const TCP_FASTOPEN_CONNECT: u32 = 30; ++pub const TCP_ULP: u32 = 31; ++pub const TCP_MD5SIG_EXT: u32 = 32; ++pub const TCP_FASTOPEN_KEY: u32 = 33; ++pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34; ++pub const TCP_ZEROCOPY_RECEIVE: u32 = 35; ++pub const TCP_INQ: u32 = 36; ++pub const TCP_CM_INQ: u32 = 36; ++pub const TCP_TX_DELAY: u32 = 37; ++pub const TCP_REPAIR_ON: u32 = 1; ++pub const TCP_REPAIR_OFF: u32 = 0; ++pub const TCP_REPAIR_OFF_NO_WP: i32 = -1; ++pub const TCPI_OPT_TIMESTAMPS: u32 = 1; ++pub const TCPI_OPT_SACK: u32 = 2; ++pub const TCPI_OPT_WSCALE: u32 = 4; ++pub const TCPI_OPT_ECN: u32 = 8; ++pub const TCPI_OPT_ECN_SEEN: u32 = 16; ++pub const TCPI_OPT_SYN_DATA: u32 = 32; ++pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80; ++pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1; ++pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2; ++pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1; ++pub const IGNBRK: u32 = 1; ++pub const BRKINT: u32 = 2; ++pub const IGNPAR: u32 = 4; ++pub const PARMRK: u32 = 8; ++pub const INPCK: u32 = 16; ++pub const ISTRIP: u32 = 32; ++pub const INLCR: u32 = 64; ++pub const IGNCR: u32 = 128; ++pub const ICRNL: u32 = 256; ++pub const IXANY: u32 = 2048; ++pub const OPOST: u32 = 1; ++pub const OCRNL: u32 = 8; ++pub const ONOCR: u32 = 16; ++pub const ONLRET: u32 = 32; ++pub const OFILL: u32 = 64; ++pub const OFDEL: u32 = 128; ++pub const B0: u32 = 0; ++pub const B50: u32 = 1; ++pub const B75: u32 = 2; ++pub const B110: u32 = 3; ++pub const B134: u32 = 4; ++pub const B150: u32 = 5; ++pub const B200: u32 = 6; ++pub const B300: u32 = 7; ++pub const B600: u32 = 8; ++pub const B1200: u32 = 9; ++pub const B1800: u32 = 10; ++pub const B2400: u32 = 11; ++pub const B4800: u32 = 12; ++pub const B9600: u32 = 13; ++pub const B19200: u32 = 14; ++pub const B38400: u32 = 15; ++pub const EXTA: u32 = 14; ++pub const EXTB: u32 = 15; ++pub const ADDRB: u32 = 536870912; ++pub const CMSPAR: u32 = 1073741824; ++pub const CRTSCTS: u32 = 2147483648; ++pub const IBSHIFT: u32 = 16; ++pub const TCOOFF: u32 = 0; ++pub const TCOON: u32 = 1; ++pub const TCIOFF: u32 = 2; ++pub const TCION: u32 = 3; ++pub const TCIFLUSH: u32 = 0; ++pub const TCOFLUSH: u32 = 1; ++pub const TCIOFLUSH: u32 = 2; ++pub const NCCS: u32 = 19; ++pub const VINTR: u32 = 0; ++pub const VQUIT: u32 = 1; ++pub const VERASE: u32 = 2; ++pub const VKILL: u32 = 3; ++pub const VEOF: u32 = 4; ++pub const VTIME: u32 = 5; ++pub const VMIN: u32 = 6; ++pub const VSWTC: u32 = 7; ++pub const VSTART: u32 = 8; ++pub const VSTOP: u32 = 9; ++pub const VSUSP: u32 = 10; ++pub const VEOL: u32 = 11; ++pub const VREPRINT: u32 = 12; ++pub const VDISCARD: u32 = 13; ++pub const VWERASE: u32 = 14; ++pub const VLNEXT: u32 = 15; ++pub const VEOL2: u32 = 16; ++pub const IUCLC: u32 = 512; ++pub const IXON: u32 = 1024; ++pub const IXOFF: u32 = 4096; ++pub const IMAXBEL: u32 = 8192; ++pub const IUTF8: u32 = 16384; ++pub const OLCUC: u32 = 2; ++pub const ONLCR: u32 = 4; ++pub const NLDLY: u32 = 256; ++pub const NL0: u32 = 0; ++pub const NL1: u32 = 256; ++pub const CRDLY: u32 = 1536; ++pub const CR0: u32 = 0; ++pub const CR1: u32 = 512; ++pub const CR2: u32 = 1024; ++pub const CR3: u32 = 1536; ++pub const TABDLY: u32 = 6144; ++pub const TAB0: u32 = 0; ++pub const TAB1: u32 = 2048; ++pub const TAB2: u32 = 4096; ++pub const TAB3: u32 = 6144; ++pub const XTABS: u32 = 6144; ++pub const BSDLY: u32 = 8192; ++pub const BS0: u32 = 0; ++pub const BS1: u32 = 8192; ++pub const VTDLY: u32 = 16384; ++pub const VT0: u32 = 0; ++pub const VT1: u32 = 16384; ++pub const FFDLY: u32 = 32768; ++pub const FF0: u32 = 0; ++pub const FF1: u32 = 32768; ++pub const CBAUD: u32 = 4111; ++pub const CSIZE: u32 = 48; ++pub const CS5: u32 = 0; ++pub const CS6: u32 = 16; ++pub const CS7: u32 = 32; ++pub const CS8: u32 = 48; ++pub const CSTOPB: u32 = 64; ++pub const CREAD: u32 = 128; ++pub const PARENB: u32 = 256; ++pub const PARODD: u32 = 512; ++pub const HUPCL: u32 = 1024; ++pub const CLOCAL: u32 = 2048; ++pub const CBAUDEX: u32 = 4096; ++pub const BOTHER: u32 = 4096; ++pub const B57600: u32 = 4097; ++pub const B115200: u32 = 4098; ++pub const B230400: u32 = 4099; ++pub const B460800: u32 = 4100; ++pub const B500000: u32 = 4101; ++pub const B576000: u32 = 4102; ++pub const B921600: u32 = 4103; ++pub const B1000000: u32 = 4104; ++pub const B1152000: u32 = 4105; ++pub const B1500000: u32 = 4106; ++pub const B2000000: u32 = 4107; ++pub const B2500000: u32 = 4108; ++pub const B3000000: u32 = 4109; ++pub const B3500000: u32 = 4110; ++pub const B4000000: u32 = 4111; ++pub const CIBAUD: u32 = 269418496; ++pub const ISIG: u32 = 1; ++pub const ICANON: u32 = 2; ++pub const XCASE: u32 = 4; ++pub const ECHO: u32 = 8; ++pub const ECHOE: u32 = 16; ++pub const ECHOK: u32 = 32; ++pub const ECHONL: u32 = 64; ++pub const NOFLSH: u32 = 128; ++pub const TOSTOP: u32 = 256; ++pub const ECHOCTL: u32 = 512; ++pub const ECHOPRT: u32 = 1024; ++pub const ECHOKE: u32 = 2048; ++pub const FLUSHO: u32 = 4096; ++pub const PENDIN: u32 = 16384; ++pub const IEXTEN: u32 = 32768; ++pub const EXTPROC: u32 = 65536; ++pub const TCSANOW: u32 = 0; ++pub const TCSADRAIN: u32 = 1; ++pub const TCSAFLUSH: u32 = 2; ++pub const TIOCPKT_DATA: u32 = 0; ++pub const TIOCPKT_FLUSHREAD: u32 = 1; ++pub const TIOCPKT_FLUSHWRITE: u32 = 2; ++pub const TIOCPKT_STOP: u32 = 4; ++pub const TIOCPKT_START: u32 = 8; ++pub const TIOCPKT_NOSTOP: u32 = 16; ++pub const TIOCPKT_DOSTOP: u32 = 32; ++pub const TIOCPKT_IOCTL: u32 = 64; ++pub const TIOCSER_TEMT: u32 = 1; ++pub const NCC: u32 = 8; ++pub const TIOCM_LE: u32 = 1; ++pub const TIOCM_DTR: u32 = 2; ++pub const TIOCM_RTS: u32 = 4; ++pub const TIOCM_ST: u32 = 8; ++pub const TIOCM_SR: u32 = 16; ++pub const TIOCM_CTS: u32 = 32; ++pub const TIOCM_CAR: u32 = 64; ++pub const TIOCM_RNG: u32 = 128; ++pub const TIOCM_DSR: u32 = 256; ++pub const TIOCM_CD: u32 = 64; ++pub const TIOCM_RI: u32 = 128; ++pub const TIOCM_OUT1: u32 = 8192; ++pub const TIOCM_OUT2: u32 = 16384; ++pub const TIOCM_LOOP: u32 = 32768; ++pub const UIO_FASTIOV: u32 = 8; ++pub const UIO_MAXIOV: u32 = 1024; ++pub const UNIX_PATH_MAX: u32 = 108; ++pub const __NR_io_setup: u32 = 0; ++pub const __NR_io_destroy: u32 = 1; ++pub const __NR_io_submit: u32 = 2; ++pub const __NR_io_cancel: u32 = 3; ++pub const __NR_io_getevents: u32 = 4; ++pub const __NR_setxattr: u32 = 5; ++pub const __NR_lsetxattr: u32 = 6; ++pub const __NR_fsetxattr: u32 = 7; ++pub const __NR_getxattr: u32 = 8; ++pub const __NR_lgetxattr: u32 = 9; ++pub const __NR_fgetxattr: u32 = 10; ++pub const __NR_listxattr: u32 = 11; ++pub const __NR_llistxattr: u32 = 12; ++pub const __NR_flistxattr: u32 = 13; ++pub const __NR_removexattr: u32 = 14; ++pub const __NR_lremovexattr: u32 = 15; ++pub const __NR_fremovexattr: u32 = 16; ++pub const __NR_getcwd: u32 = 17; ++pub const __NR_lookup_dcookie: u32 = 18; ++pub const __NR_eventfd2: u32 = 19; ++pub const __NR_epoll_create1: u32 = 20; ++pub const __NR_epoll_ctl: u32 = 21; ++pub const __NR_epoll_pwait: u32 = 22; ++pub const __NR_dup: u32 = 23; ++pub const __NR_dup3: u32 = 24; ++pub const __NR3264_fcntl: u32 = 25; ++pub const __NR_inotify_init1: u32 = 26; ++pub const __NR_inotify_add_watch: u32 = 27; ++pub const __NR_inotify_rm_watch: u32 = 28; ++pub const __NR_ioctl: u32 = 29; ++pub const __NR_ioprio_set: u32 = 30; ++pub const __NR_ioprio_get: u32 = 31; ++pub const __NR_flock: u32 = 32; ++pub const __NR_mknodat: u32 = 33; ++pub const __NR_mkdirat: u32 = 34; ++pub const __NR_unlinkat: u32 = 35; ++pub const __NR_symlinkat: u32 = 36; ++pub const __NR_linkat: u32 = 37; ++pub const __NR_umount2: u32 = 39; ++pub const __NR_mount: u32 = 40; ++pub const __NR_pivot_root: u32 = 41; ++pub const __NR_nfsservctl: u32 = 42; ++pub const __NR3264_statfs: u32 = 43; ++pub const __NR3264_fstatfs: u32 = 44; ++pub const __NR3264_truncate: u32 = 45; ++pub const __NR3264_ftruncate: u32 = 46; ++pub const __NR_fallocate: u32 = 47; ++pub const __NR_faccessat: u32 = 48; ++pub const __NR_chdir: u32 = 49; ++pub const __NR_fchdir: u32 = 50; ++pub const __NR_chroot: u32 = 51; ++pub const __NR_fchmod: u32 = 52; ++pub const __NR_fchmodat: u32 = 53; ++pub const __NR_fchownat: u32 = 54; ++pub const __NR_fchown: u32 = 55; ++pub const __NR_openat: u32 = 56; ++pub const __NR_close: u32 = 57; ++pub const __NR_vhangup: u32 = 58; ++pub const __NR_pipe2: u32 = 59; ++pub const __NR_quotactl: u32 = 60; ++pub const __NR_getdents64: u32 = 61; ++pub const __NR3264_lseek: u32 = 62; ++pub const __NR_read: u32 = 63; ++pub const __NR_write: u32 = 64; ++pub const __NR_readv: u32 = 65; ++pub const __NR_writev: u32 = 66; ++pub const __NR_pread64: u32 = 67; ++pub const __NR_pwrite64: u32 = 68; ++pub const __NR_preadv: u32 = 69; ++pub const __NR_pwritev: u32 = 70; ++pub const __NR3264_sendfile: u32 = 71; ++pub const __NR_pselect6: u32 = 72; ++pub const __NR_ppoll: u32 = 73; ++pub const __NR_signalfd4: u32 = 74; ++pub const __NR_vmsplice: u32 = 75; ++pub const __NR_splice: u32 = 76; ++pub const __NR_tee: u32 = 77; ++pub const __NR_readlinkat: u32 = 78; ++pub const __NR_sync: u32 = 81; ++pub const __NR_fsync: u32 = 82; ++pub const __NR_fdatasync: u32 = 83; ++pub const __NR_sync_file_range: u32 = 84; ++pub const __NR_timerfd_create: u32 = 85; ++pub const __NR_timerfd_settime: u32 = 86; ++pub const __NR_timerfd_gettime: u32 = 87; ++pub const __NR_utimensat: u32 = 88; ++pub const __NR_acct: u32 = 89; ++pub const __NR_capget: u32 = 90; ++pub const __NR_capset: u32 = 91; ++pub const __NR_personality: u32 = 92; ++pub const __NR_exit: u32 = 93; ++pub const __NR_exit_group: u32 = 94; ++pub const __NR_waitid: u32 = 95; ++pub const __NR_set_tid_address: u32 = 96; ++pub const __NR_unshare: u32 = 97; ++pub const __NR_futex: u32 = 98; ++pub const __NR_set_robust_list: u32 = 99; ++pub const __NR_get_robust_list: u32 = 100; ++pub const __NR_nanosleep: u32 = 101; ++pub const __NR_getitimer: u32 = 102; ++pub const __NR_setitimer: u32 = 103; ++pub const __NR_kexec_load: u32 = 104; ++pub const __NR_init_module: u32 = 105; ++pub const __NR_delete_module: u32 = 106; ++pub const __NR_timer_create: u32 = 107; ++pub const __NR_timer_gettime: u32 = 108; ++pub const __NR_timer_getoverrun: u32 = 109; ++pub const __NR_timer_settime: u32 = 110; ++pub const __NR_timer_delete: u32 = 111; ++pub const __NR_clock_settime: u32 = 112; ++pub const __NR_clock_gettime: u32 = 113; ++pub const __NR_clock_getres: u32 = 114; ++pub const __NR_clock_nanosleep: u32 = 115; ++pub const __NR_syslog: u32 = 116; ++pub const __NR_ptrace: u32 = 117; ++pub const __NR_sched_setparam: u32 = 118; ++pub const __NR_sched_setscheduler: u32 = 119; ++pub const __NR_sched_getscheduler: u32 = 120; ++pub const __NR_sched_getparam: u32 = 121; ++pub const __NR_sched_setaffinity: u32 = 122; ++pub const __NR_sched_getaffinity: u32 = 123; ++pub const __NR_sched_yield: u32 = 124; ++pub const __NR_sched_get_priority_max: u32 = 125; ++pub const __NR_sched_get_priority_min: u32 = 126; ++pub const __NR_sched_rr_get_interval: u32 = 127; ++pub const __NR_restart_syscall: u32 = 128; ++pub const __NR_kill: u32 = 129; ++pub const __NR_tkill: u32 = 130; ++pub const __NR_tgkill: u32 = 131; ++pub const __NR_sigaltstack: u32 = 132; ++pub const __NR_rt_sigsuspend: u32 = 133; ++pub const __NR_rt_sigaction: u32 = 134; ++pub const __NR_rt_sigprocmask: u32 = 135; ++pub const __NR_rt_sigpending: u32 = 136; ++pub const __NR_rt_sigtimedwait: u32 = 137; ++pub const __NR_rt_sigqueueinfo: u32 = 138; ++pub const __NR_rt_sigreturn: u32 = 139; ++pub const __NR_setpriority: u32 = 140; ++pub const __NR_getpriority: u32 = 141; ++pub const __NR_reboot: u32 = 142; ++pub const __NR_setregid: u32 = 143; ++pub const __NR_setgid: u32 = 144; ++pub const __NR_setreuid: u32 = 145; ++pub const __NR_setuid: u32 = 146; ++pub const __NR_setresuid: u32 = 147; ++pub const __NR_getresuid: u32 = 148; ++pub const __NR_setresgid: u32 = 149; ++pub const __NR_getresgid: u32 = 150; ++pub const __NR_setfsuid: u32 = 151; ++pub const __NR_setfsgid: u32 = 152; ++pub const __NR_times: u32 = 153; ++pub const __NR_setpgid: u32 = 154; ++pub const __NR_getpgid: u32 = 155; ++pub const __NR_getsid: u32 = 156; ++pub const __NR_setsid: u32 = 157; ++pub const __NR_getgroups: u32 = 158; ++pub const __NR_setgroups: u32 = 159; ++pub const __NR_uname: u32 = 160; ++pub const __NR_sethostname: u32 = 161; ++pub const __NR_setdomainname: u32 = 162; ++pub const __NR_getrusage: u32 = 165; ++pub const __NR_umask: u32 = 166; ++pub const __NR_prctl: u32 = 167; ++pub const __NR_getcpu: u32 = 168; ++pub const __NR_gettimeofday: u32 = 169; ++pub const __NR_settimeofday: u32 = 170; ++pub const __NR_adjtimex: u32 = 171; ++pub const __NR_getpid: u32 = 172; ++pub const __NR_getppid: u32 = 173; ++pub const __NR_getuid: u32 = 174; ++pub const __NR_geteuid: u32 = 175; ++pub const __NR_getgid: u32 = 176; ++pub const __NR_getegid: u32 = 177; ++pub const __NR_gettid: u32 = 178; ++pub const __NR_sysinfo: u32 = 179; ++pub const __NR_mq_open: u32 = 180; ++pub const __NR_mq_unlink: u32 = 181; ++pub const __NR_mq_timedsend: u32 = 182; ++pub const __NR_mq_timedreceive: u32 = 183; ++pub const __NR_mq_notify: u32 = 184; ++pub const __NR_mq_getsetattr: u32 = 185; ++pub const __NR_msgget: u32 = 186; ++pub const __NR_msgctl: u32 = 187; ++pub const __NR_msgrcv: u32 = 188; ++pub const __NR_msgsnd: u32 = 189; ++pub const __NR_semget: u32 = 190; ++pub const __NR_semctl: u32 = 191; ++pub const __NR_semtimedop: u32 = 192; ++pub const __NR_semop: u32 = 193; ++pub const __NR_shmget: u32 = 194; ++pub const __NR_shmctl: u32 = 195; ++pub const __NR_shmat: u32 = 196; ++pub const __NR_shmdt: u32 = 197; ++pub const __NR_socket: u32 = 198; ++pub const __NR_socketpair: u32 = 199; ++pub const __NR_bind: u32 = 200; ++pub const __NR_listen: u32 = 201; ++pub const __NR_accept: u32 = 202; ++pub const __NR_connect: u32 = 203; ++pub const __NR_getsockname: u32 = 204; ++pub const __NR_getpeername: u32 = 205; ++pub const __NR_sendto: u32 = 206; ++pub const __NR_recvfrom: u32 = 207; ++pub const __NR_setsockopt: u32 = 208; ++pub const __NR_getsockopt: u32 = 209; ++pub const __NR_shutdown: u32 = 210; ++pub const __NR_sendmsg: u32 = 211; ++pub const __NR_recvmsg: u32 = 212; ++pub const __NR_readahead: u32 = 213; ++pub const __NR_brk: u32 = 214; ++pub const __NR_munmap: u32 = 215; ++pub const __NR_mremap: u32 = 216; ++pub const __NR_add_key: u32 = 217; ++pub const __NR_request_key: u32 = 218; ++pub const __NR_keyctl: u32 = 219; ++pub const __NR_clone: u32 = 220; ++pub const __NR_execve: u32 = 221; ++pub const __NR3264_mmap: u32 = 222; ++pub const __NR3264_fadvise64: u32 = 223; ++pub const __NR_swapon: u32 = 224; ++pub const __NR_swapoff: u32 = 225; ++pub const __NR_mprotect: u32 = 226; ++pub const __NR_msync: u32 = 227; ++pub const __NR_mlock: u32 = 228; ++pub const __NR_munlock: u32 = 229; ++pub const __NR_mlockall: u32 = 230; ++pub const __NR_munlockall: u32 = 231; ++pub const __NR_mincore: u32 = 232; ++pub const __NR_madvise: u32 = 233; ++pub const __NR_remap_file_pages: u32 = 234; ++pub const __NR_mbind: u32 = 235; ++pub const __NR_get_mempolicy: u32 = 236; ++pub const __NR_set_mempolicy: u32 = 237; ++pub const __NR_migrate_pages: u32 = 238; ++pub const __NR_move_pages: u32 = 239; ++pub const __NR_rt_tgsigqueueinfo: u32 = 240; ++pub const __NR_perf_event_open: u32 = 241; ++pub const __NR_accept4: u32 = 242; ++pub const __NR_recvmmsg: u32 = 243; ++pub const __NR_arch_specific_syscall: u32 = 244; ++pub const __NR_wait4: u32 = 260; ++pub const __NR_prlimit64: u32 = 261; ++pub const __NR_fanotify_init: u32 = 262; ++pub const __NR_fanotify_mark: u32 = 263; ++pub const __NR_name_to_handle_at: u32 = 264; ++pub const __NR_open_by_handle_at: u32 = 265; ++pub const __NR_clock_adjtime: u32 = 266; ++pub const __NR_syncfs: u32 = 267; ++pub const __NR_setns: u32 = 268; ++pub const __NR_sendmmsg: u32 = 269; ++pub const __NR_process_vm_readv: u32 = 270; ++pub const __NR_process_vm_writev: u32 = 271; ++pub const __NR_kcmp: u32 = 272; ++pub const __NR_finit_module: u32 = 273; ++pub const __NR_sched_setattr: u32 = 274; ++pub const __NR_sched_getattr: u32 = 275; ++pub const __NR_renameat2: u32 = 276; ++pub const __NR_seccomp: u32 = 277; ++pub const __NR_getrandom: u32 = 278; ++pub const __NR_memfd_create: u32 = 279; ++pub const __NR_bpf: u32 = 280; ++pub const __NR_execveat: u32 = 281; ++pub const __NR_userfaultfd: u32 = 282; ++pub const __NR_membarrier: u32 = 283; ++pub const __NR_mlock2: u32 = 284; ++pub const __NR_copy_file_range: u32 = 285; ++pub const __NR_preadv2: u32 = 286; ++pub const __NR_pwritev2: u32 = 287; ++pub const __NR_pkey_mprotect: u32 = 288; ++pub const __NR_pkey_alloc: u32 = 289; ++pub const __NR_pkey_free: u32 = 290; ++pub const __NR_statx: u32 = 291; ++pub const __NR_io_pgetevents: u32 = 292; ++pub const __NR_rseq: u32 = 293; ++pub const __NR_kexec_file_load: u32 = 294; ++pub const __NR_pidfd_send_signal: u32 = 424; ++pub const __NR_io_uring_setup: u32 = 425; ++pub const __NR_io_uring_enter: u32 = 426; ++pub const __NR_io_uring_register: u32 = 427; ++pub const __NR_open_tree: u32 = 428; ++pub const __NR_move_mount: u32 = 429; ++pub const __NR_fsopen: u32 = 430; ++pub const __NR_fsconfig: u32 = 431; ++pub const __NR_fsmount: u32 = 432; ++pub const __NR_fspick: u32 = 433; ++pub const __NR_pidfd_open: u32 = 434; ++pub const __NR_clone3: u32 = 435; ++pub const __NR_close_range: u32 = 436; ++pub const __NR_openat2: u32 = 437; ++pub const __NR_pidfd_getfd: u32 = 438; ++pub const __NR_faccessat2: u32 = 439; ++pub const __NR_process_madvise: u32 = 440; ++pub const __NR_epoll_pwait2: u32 = 441; ++pub const __NR_mount_setattr: u32 = 442; ++pub const __NR_quotactl_fd: u32 = 443; ++pub const __NR_landlock_create_ruleset: u32 = 444; ++pub const __NR_landlock_add_rule: u32 = 445; ++pub const __NR_landlock_restrict_self: u32 = 446; ++pub const __NR_process_mrelease: u32 = 448; ++pub const __NR_futex_waitv: u32 = 449; ++pub const __NR_set_mempolicy_home_node: u32 = 450; ++pub const __NR_syscalls: u32 = 451; ++pub const __NR_fcntl: u32 = 25; ++pub const __NR_statfs: u32 = 43; ++pub const __NR_fstatfs: u32 = 44; ++pub const __NR_truncate: u32 = 45; ++pub const __NR_ftruncate: u32 = 46; ++pub const __NR_lseek: u32 = 62; ++pub const __NR_sendfile: u32 = 71; ++pub const __NR_mmap: u32 = 222; ++pub const __NR_fadvise64: u32 = 223; ++pub const __OLD_UTS_LEN: u32 = 8; ++pub const __NEW_UTS_LEN: u32 = 64; ++pub const WNOHANG: u32 = 1; ++pub const WUNTRACED: u32 = 2; ++pub const WSTOPPED: u32 = 2; ++pub const WEXITED: u32 = 4; ++pub const WCONTINUED: u32 = 8; ++pub const WNOWAIT: u32 = 16777216; ++pub const __WNOTHREAD: u32 = 536870912; ++pub const __WALL: u32 = 1073741824; ++pub const __WCLONE: u32 = 2147483648; ++pub const P_ALL: u32 = 0; ++pub const P_PID: u32 = 1; ++pub const P_PGID: u32 = 2; ++pub const P_PIDFD: u32 = 3; ++pub const MFD_CLOEXEC: u32 = 1; ++pub const MFD_ALLOW_SEALING: u32 = 2; ++pub const MFD_HUGETLB: u32 = 4; ++pub const MFD_HUGE_SHIFT: u32 = 26; ++pub const MFD_HUGE_MASK: u32 = 63; ++pub const MFD_HUGE_64KB: u32 = 1073741824; ++pub const MFD_HUGE_512KB: u32 = 1275068416; ++pub const MFD_HUGE_1MB: u32 = 1342177280; ++pub const MFD_HUGE_2MB: u32 = 1409286144; ++pub const MFD_HUGE_8MB: u32 = 1543503872; ++pub const MFD_HUGE_16MB: u32 = 1610612736; ++pub const MFD_HUGE_32MB: u32 = 1677721600; ++pub const MFD_HUGE_256MB: u32 = 1879048192; ++pub const MFD_HUGE_512MB: u32 = 1946157056; ++pub const MFD_HUGE_1GB: u32 = 2013265920; ++pub const MFD_HUGE_2GB: u32 = 2080374784; ++pub const MFD_HUGE_16GB: u32 = 2281701376; ++pub const TFD_TIMER_ABSTIME: u32 = 1; ++pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2; ++pub const TFD_CLOEXEC: u32 = 524288; ++pub const TFD_NONBLOCK: u32 = 2048; ++pub const USERFAULTFD_IOC: u32 = 170; ++pub const _UFFDIO_REGISTER: u32 = 0; ++pub const _UFFDIO_UNREGISTER: u32 = 1; ++pub const _UFFDIO_WAKE: u32 = 2; ++pub const _UFFDIO_COPY: u32 = 3; ++pub const _UFFDIO_ZEROPAGE: u32 = 4; ++pub const _UFFDIO_WRITEPROTECT: u32 = 6; ++pub const _UFFDIO_CONTINUE: u32 = 7; ++pub const _UFFDIO_API: u32 = 63; ++pub const UFFDIO: u32 = 170; ++pub const UFFD_EVENT_PAGEFAULT: u32 = 18; ++pub const UFFD_EVENT_FORK: u32 = 19; ++pub const UFFD_EVENT_REMAP: u32 = 20; ++pub const UFFD_EVENT_REMOVE: u32 = 21; ++pub const UFFD_EVENT_UNMAP: u32 = 22; ++pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1; ++pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2; ++pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4; ++pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1; ++pub const UFFD_FEATURE_EVENT_FORK: u32 = 2; ++pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4; ++pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8; ++pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16; ++pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32; ++pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64; ++pub const UFFD_FEATURE_SIGBUS: u32 = 128; ++pub const UFFD_FEATURE_THREAD_ID: u32 = 256; ++pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512; ++pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024; ++pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048; ++pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096; ++pub const UFFD_USER_MODE_ONLY: u32 = 1; ++pub const IORING_FILE_INDEX_ALLOC: i32 = -1; ++pub const IORING_SETUP_IOPOLL: u32 = 1; ++pub const IORING_SETUP_SQPOLL: u32 = 2; ++pub const IORING_SETUP_SQ_AFF: u32 = 4; ++pub const IORING_SETUP_CQSIZE: u32 = 8; ++pub const IORING_SETUP_CLAMP: u32 = 16; ++pub const IORING_SETUP_ATTACH_WQ: u32 = 32; ++pub const IORING_SETUP_R_DISABLED: u32 = 64; ++pub const IORING_SETUP_SUBMIT_ALL: u32 = 128; ++pub const IORING_SETUP_COOP_TASKRUN: u32 = 256; ++pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512; ++pub const IORING_SETUP_SQE128: u32 = 1024; ++pub const IORING_SETUP_CQE32: u32 = 2048; ++pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096; ++pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192; ++pub const IORING_URING_CMD_FIXED: u32 = 1; ++pub const IORING_FSYNC_DATASYNC: u32 = 1; ++pub const IORING_TIMEOUT_ABS: u32 = 1; ++pub const IORING_TIMEOUT_UPDATE: u32 = 2; ++pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; ++pub const IORING_TIMEOUT_REALTIME: u32 = 8; ++pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; ++pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32; ++pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; ++pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; ++pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648; ++pub const IORING_POLL_ADD_MULTI: u32 = 1; ++pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; ++pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; ++pub const IORING_POLL_ADD_LEVEL: u32 = 8; ++pub const IORING_ASYNC_CANCEL_ALL: u32 = 1; ++pub const IORING_ASYNC_CANCEL_FD: u32 = 2; ++pub const IORING_ASYNC_CANCEL_ANY: u32 = 4; ++pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8; ++pub const IORING_RECVSEND_POLL_FIRST: u32 = 1; ++pub const IORING_RECV_MULTISHOT: u32 = 2; ++pub const IORING_RECVSEND_FIXED_BUF: u32 = 4; ++pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8; ++pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648; ++pub const IORING_ACCEPT_MULTISHOT: u32 = 1; ++pub const IORING_MSG_RING_CQE_SKIP: u32 = 1; ++pub const IORING_CQE_F_BUFFER: u32 = 1; ++pub const IORING_CQE_F_MORE: u32 = 2; ++pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4; ++pub const IORING_CQE_F_NOTIF: u32 = 8; ++pub const IORING_OFF_SQ_RING: u32 = 0; ++pub const IORING_OFF_CQ_RING: u32 = 134217728; ++pub const IORING_OFF_SQES: u32 = 268435456; ++pub const IORING_SQ_NEED_WAKEUP: u32 = 1; ++pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; ++pub const IORING_SQ_TASKRUN: u32 = 4; ++pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; ++pub const IORING_ENTER_GETEVENTS: u32 = 1; ++pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; ++pub const IORING_ENTER_SQ_WAIT: u32 = 4; ++pub const IORING_ENTER_EXT_ARG: u32 = 8; ++pub const IORING_ENTER_REGISTERED_RING: u32 = 16; ++pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; ++pub const IORING_FEAT_NODROP: u32 = 2; ++pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; ++pub const IORING_FEAT_RW_CUR_POS: u32 = 8; ++pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; ++pub const IORING_FEAT_FAST_POLL: u32 = 32; ++pub const IORING_FEAT_POLL_32BITS: u32 = 64; ++pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; ++pub const IORING_FEAT_EXT_ARG: u32 = 256; ++pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; ++pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; ++pub const IORING_FEAT_CQE_SKIP: u32 = 2048; ++pub const IORING_FEAT_LINKED_FILE: u32 = 4096; ++pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1; ++pub const IORING_REGISTER_FILES_SKIP: i32 = -2; ++pub const IO_URING_OP_SUPPORTED: u32 = 1; ++pub const DT_UNKNOWN: u32 = 0; ++pub const DT_FIFO: u32 = 1; ++pub const DT_CHR: u32 = 2; ++pub const DT_DIR: u32 = 4; ++pub const DT_BLK: u32 = 6; ++pub const DT_REG: u32 = 8; ++pub const DT_LNK: u32 = 10; ++pub const DT_SOCK: u32 = 12; ++pub const SHUT_RD: u32 = 0; ++pub const SHUT_WR: u32 = 1; ++pub const SHUT_RDWR: u32 = 2; ++pub const STAT_HAVE_NSEC: u32 = 1; ++pub const SOCK_STREAM: u32 = 1; ++pub const SOCK_DGRAM: u32 = 2; ++pub const SOCK_RAW: u32 = 3; ++pub const SOCK_RDM: u32 = 4; ++pub const SOCK_SEQPACKET: u32 = 5; ++pub const F_OK: u32 = 0; ++pub const R_OK: u32 = 4; ++pub const W_OK: u32 = 2; ++pub const X_OK: u32 = 1; ++pub const UTIME_NOW: u32 = 1073741823; ++pub const UTIME_OMIT: u32 = 1073741822; ++pub const MSG_DONTWAIT: u32 = 64; ++pub const AF_UNSPEC: u32 = 0; ++pub const AF_UNIX: u32 = 1; ++pub const AF_INET: u32 = 2; ++pub const AF_AX25: u32 = 3; ++pub const AF_IPX: u32 = 4; ++pub const AF_APPLETALK: u32 = 5; ++pub const AF_NETROM: u32 = 6; ++pub const AF_BRIDGE: u32 = 7; ++pub const AF_ATMPVC: u32 = 8; ++pub const AF_X25: u32 = 9; ++pub const AF_INET6: u32 = 10; ++pub const AF_ROSE: u32 = 11; ++pub const AF_DECnet: u32 = 12; ++pub const AF_NETBEUI: u32 = 13; ++pub const AF_SECURITY: u32 = 14; ++pub const AF_KEY: u32 = 15; ++pub const AF_NETLINK: u32 = 16; ++pub const AF_PACKET: u32 = 17; ++pub const AF_ASH: u32 = 18; ++pub const AF_ECONET: u32 = 19; ++pub const AF_ATMSVC: u32 = 20; ++pub const AF_RDS: u32 = 21; ++pub const AF_SNA: u32 = 22; ++pub const AF_IRDA: u32 = 23; ++pub const AF_PPPOX: u32 = 24; ++pub const AF_WANPIPE: u32 = 25; ++pub const AF_LLC: u32 = 26; ++pub const AF_CAN: u32 = 29; ++pub const AF_TIPC: u32 = 30; ++pub const AF_BLUETOOTH: u32 = 31; ++pub const AF_IUCV: u32 = 32; ++pub const AF_RXRPC: u32 = 33; ++pub const AF_ISDN: u32 = 34; ++pub const AF_PHONET: u32 = 35; ++pub const AF_IEEE802154: u32 = 36; ++pub const AF_MAX: u32 = 37; ++pub const MSG_OOB: u32 = 1; ++pub const MSG_PEEK: u32 = 2; ++pub const MSG_DONTROUTE: u32 = 4; ++pub const MSG_CTRUNC: u32 = 8; ++pub const MSG_PROBE: u32 = 16; ++pub const MSG_TRUNC: u32 = 32; ++pub const MSG_EOR: u32 = 128; ++pub const MSG_WAITALL: u32 = 256; ++pub const MSG_FIN: u32 = 512; ++pub const MSG_SYN: u32 = 1024; ++pub const MSG_CONFIRM: u32 = 2048; ++pub const MSG_RST: u32 = 4096; ++pub const MSG_ERRQUEUE: u32 = 8192; ++pub const MSG_NOSIGNAL: u32 = 16384; ++pub const MSG_MORE: u32 = 32768; ++pub const MSG_CMSG_CLOEXEC: u32 = 1073741824; ++pub const STDIN_FILENO: u32 = 0; ++pub const STDOUT_FILENO: u32 = 1; ++pub const STDERR_FILENO: u32 = 2; ++pub const RWF_HIPRI: u32 = 1; ++pub const RWF_DSYNC: u32 = 2; ++pub const RWF_SYNC: u32 = 4; ++pub const RWF_NOWAIT: u32 = 8; ++pub const RWF_APPEND: u32 = 16; ++pub const EFD_SEMAPHORE: u32 = 1; ++pub const EFD_CLOEXEC: u32 = 524288; ++pub const EFD_NONBLOCK: u32 = 2048; ++pub const EPOLLIN: u32 = 1; ++pub const EPOLLPRI: u32 = 2; ++pub const EPOLLOUT: u32 = 4; ++pub const EPOLLERR: u32 = 8; ++pub const EPOLLHUP: u32 = 16; ++pub const EPOLLNVAL: u32 = 32; ++pub const EPOLLRDNORM: u32 = 64; ++pub const EPOLLRDBAND: u32 = 128; ++pub const EPOLLWRNORM: u32 = 256; ++pub const EPOLLWRBAND: u32 = 512; ++pub const EPOLLMSG: u32 = 1024; ++pub const EPOLLRDHUP: u32 = 8192; ++pub const EPOLLEXCLUSIVE: u32 = 268435456; ++pub const EPOLLWAKEUP: u32 = 536870912; ++pub const EPOLLONESHOT: u32 = 1073741824; ++pub const EPOLLET: u32 = 2147483648; ++pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336; ++pub const TFD_CREATE_FLAGS: u32 = 526336; ++pub const TFD_SETTIME_FLAGS: u32 = 1; ++pub const SCM_RIGHTS: u32 = 1; ++pub const SCM_CREDENTIALS: u32 = 2; ++pub const SCM_SECURITY: u32 = 3; ++pub const UFFD_API: u32 = 170; ++pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1; ++pub const UFFDIO_REGISTER_MODE_WP: u32 = 2; ++pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4; ++pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1; ++pub const UFFDIO_COPY_MODE_WP: u32 = 2; ++pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1; ++pub const SPLICE_F_MOVE: u32 = 1; ++pub const SPLICE_F_NONBLOCK: u32 = 2; ++pub const SPLICE_F_MORE: u32 = 4; ++pub const SPLICE_F_GIFT: u32 = 8; ++pub const MNT_FORCE: u32 = 1; ++pub const MNT_DETACH: u32 = 2; ++pub const MNT_EXPIRE: u32 = 4; ++pub const UMOUNT_NOFOLLOW: u32 = 8; ++pub const UMOUNT_UNUSED: u32 = 2147483648; ++pub type size_t = crate::ctypes::c_ulong; ++pub type ssize_t = crate::ctypes::c_long; ++pub type __s8 = crate::ctypes::c_schar; ++pub type __u8 = crate::ctypes::c_uchar; ++pub type __s16 = crate::ctypes::c_short; ++pub type __u16 = crate::ctypes::c_ushort; ++pub type __s32 = crate::ctypes::c_int; ++pub type __u32 = crate::ctypes::c_uint; ++pub type __s64 = crate::ctypes::c_longlong; ++pub type __u64 = crate::ctypes::c_ulonglong; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_fd_set { ++pub fds_bits: [crate::ctypes::c_ulong; 16usize], ++} ++pub type __kernel_sighandler_t = ::core::option::Option; ++pub type __kernel_key_t = crate::ctypes::c_int; ++pub type __kernel_mqd_t = crate::ctypes::c_int; ++pub type __kernel_long_t = crate::ctypes::c_long; ++pub type __kernel_ulong_t = crate::ctypes::c_ulong; ++pub type __kernel_ino_t = __kernel_ulong_t; ++pub type __kernel_mode_t = crate::ctypes::c_uint; ++pub type __kernel_pid_t = crate::ctypes::c_int; ++pub type __kernel_ipc_pid_t = crate::ctypes::c_int; ++pub type __kernel_uid_t = crate::ctypes::c_uint; ++pub type __kernel_gid_t = crate::ctypes::c_uint; ++pub type __kernel_suseconds_t = __kernel_long_t; ++pub type __kernel_daddr_t = crate::ctypes::c_int; ++pub type __kernel_uid32_t = crate::ctypes::c_uint; ++pub type __kernel_gid32_t = crate::ctypes::c_uint; ++pub type __kernel_old_uid_t = __kernel_uid_t; ++pub type __kernel_old_gid_t = __kernel_gid_t; ++pub type __kernel_old_dev_t = crate::ctypes::c_uint; ++pub type __kernel_size_t = __kernel_ulong_t; ++pub type __kernel_ssize_t = __kernel_long_t; ++pub type __kernel_ptrdiff_t = __kernel_long_t; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_fsid_t { ++pub val: [crate::ctypes::c_int; 2usize], ++} ++pub type __kernel_off_t = __kernel_long_t; ++pub type __kernel_loff_t = crate::ctypes::c_longlong; ++pub type __kernel_old_time_t = __kernel_long_t; ++pub type __kernel_time_t = __kernel_long_t; ++pub type __kernel_time64_t = crate::ctypes::c_longlong; ++pub type __kernel_clock_t = __kernel_long_t; ++pub type __kernel_timer_t = crate::ctypes::c_int; ++pub type __kernel_clockid_t = crate::ctypes::c_int; ++pub type __kernel_caddr_t = *mut crate::ctypes::c_char; ++pub type __kernel_uid16_t = crate::ctypes::c_ushort; ++pub type __kernel_gid16_t = crate::ctypes::c_ushort; ++pub type __le16 = __u16; ++pub type __be16 = __u16; ++pub type __le32 = __u32; ++pub type __be32 = __u32; ++pub type __le64 = __u64; ++pub type __be64 = __u64; ++pub type __sum16 = __u16; ++pub type __wsum = __u32; ++pub type __poll_t = crate::ctypes::c_uint; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __user_cap_header_struct { ++pub version: __u32, ++pub pid: crate::ctypes::c_int, ++} ++pub type cap_user_header_t = *mut __user_cap_header_struct; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __user_cap_data_struct { ++pub effective: __u32, ++pub permitted: __u32, ++pub inheritable: __u32, ++} ++pub type cap_user_data_t = *mut __user_cap_data_struct; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct vfs_cap_data { ++pub magic_etc: __le32, ++pub data: [vfs_cap_data__bindgen_ty_1; 2usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct vfs_cap_data__bindgen_ty_1 { ++pub permitted: __le32, ++pub inheritable: __le32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct vfs_ns_cap_data { ++pub magic_etc: __le32, ++pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize], ++pub rootid: __le32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct vfs_ns_cap_data__bindgen_ty_1 { ++pub permitted: __le32, ++pub inheritable: __le32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct f_owner_ex { ++pub type_: crate::ctypes::c_int, ++pub pid: __kernel_pid_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct flock { ++pub l_type: crate::ctypes::c_short, ++pub l_whence: crate::ctypes::c_short, ++pub l_start: __kernel_off_t, ++pub l_len: __kernel_off_t, ++pub l_pid: __kernel_pid_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct flock64 { ++pub l_type: crate::ctypes::c_short, ++pub l_whence: crate::ctypes::c_short, ++pub l_start: __kernel_loff_t, ++pub l_len: __kernel_loff_t, ++pub l_pid: __kernel_pid_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct open_how { ++pub flags: __u64, ++pub mode: __u64, ++pub resolve: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct epoll_event { ++pub events: __poll_t, ++pub data: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fscrypt_policy_v1 { ++pub version: __u8, ++pub contents_encryption_mode: __u8, ++pub filenames_encryption_mode: __u8, ++pub flags: __u8, ++pub master_key_descriptor: [__u8; 8usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fscrypt_key { ++pub mode: __u32, ++pub raw: [__u8; 64usize], ++pub size: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fscrypt_policy_v2 { ++pub version: __u8, ++pub contents_encryption_mode: __u8, ++pub filenames_encryption_mode: __u8, ++pub flags: __u8, ++pub __reserved: [__u8; 4usize], ++pub master_key_identifier: [__u8; 16usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct fscrypt_get_policy_ex_arg { ++pub policy_size: __u64, ++pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 { ++pub version: __u8, ++pub v1: fscrypt_policy_v1, ++pub v2: fscrypt_policy_v2, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct fscrypt_key_specifier { ++pub type_: __u32, ++pub __reserved: __u32, ++pub u: fscrypt_key_specifier__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union fscrypt_key_specifier__bindgen_ty_1 { ++pub __reserved: [__u8; 32usize], ++pub descriptor: [__u8; 8usize], ++pub identifier: [__u8; 16usize], ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct fscrypt_provisioning_key_payload { ++pub type_: __u32, ++pub __reserved: __u32, ++pub raw: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++pub struct fscrypt_add_key_arg { ++pub key_spec: fscrypt_key_specifier, ++pub raw_size: __u32, ++pub key_id: __u32, ++pub __reserved: [__u32; 8usize], ++pub raw: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct fscrypt_remove_key_arg { ++pub key_spec: fscrypt_key_specifier, ++pub removal_status_flags: __u32, ++pub __reserved: [__u32; 5usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct fscrypt_get_key_status_arg { ++pub key_spec: fscrypt_key_specifier, ++pub __reserved: [__u32; 6usize], ++pub status: __u32, ++pub status_flags: __u32, ++pub user_count: __u32, ++pub __out_reserved: [__u32; 13usize], ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum fsconfig_command { ++FSCONFIG_SET_FLAG = 0, ++FSCONFIG_SET_STRING = 1, ++FSCONFIG_SET_BINARY = 2, ++FSCONFIG_SET_PATH = 3, ++FSCONFIG_SET_PATH_EMPTY = 4, ++FSCONFIG_SET_FD = 5, ++FSCONFIG_CMD_CREATE = 6, ++FSCONFIG_CMD_RECONFIGURE = 7, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct mount_attr { ++pub attr_set: __u64, ++pub attr_clr: __u64, ++pub propagation: __u64, ++pub userns_fd: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct file_clone_range { ++pub src_fd: __s64, ++pub src_offset: __u64, ++pub src_length: __u64, ++pub dest_offset: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fstrim_range { ++pub start: __u64, ++pub len: __u64, ++pub minlen: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct file_dedupe_range_info { ++pub dest_fd: __s64, ++pub dest_offset: __u64, ++pub bytes_deduped: __u64, ++pub status: __s32, ++pub reserved: __u32, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct file_dedupe_range { ++pub src_offset: __u64, ++pub src_length: __u64, ++pub dest_count: __u16, ++pub reserved1: __u16, ++pub reserved2: __u32, ++pub info: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct files_stat_struct { ++pub nr_files: crate::ctypes::c_ulong, ++pub nr_free_files: crate::ctypes::c_ulong, ++pub max_files: crate::ctypes::c_ulong, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct inodes_stat_t { ++pub nr_inodes: crate::ctypes::c_long, ++pub nr_unused: crate::ctypes::c_long, ++pub dummy: [crate::ctypes::c_long; 5usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct fsxattr { ++pub fsx_xflags: __u32, ++pub fsx_extsize: __u32, ++pub fsx_nextents: __u32, ++pub fsx_projid: __u32, ++pub fsx_cowextsize: __u32, ++pub fsx_pad: [crate::ctypes::c_uchar; 8usize], ++} ++pub type __kernel_rwf_t = crate::ctypes::c_int; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct futex_waitv { ++pub val: __u64, ++pub uaddr: __u64, ++pub flags: __u32, ++pub __reserved: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct robust_list { ++pub next: *mut robust_list, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct robust_list_head { ++pub list: robust_list, ++pub futex_offset: crate::ctypes::c_long, ++pub list_op_pending: *mut robust_list, ++} ++pub type __kernel_sa_family_t = crate::ctypes::c_ushort; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __kernel_sockaddr_storage { ++pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union __kernel_sockaddr_storage__bindgen_ty_1 { ++pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, ++pub __align: *mut crate::ctypes::c_void, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { ++pub ss_family: __kernel_sa_family_t, ++pub __data: [crate::ctypes::c_char; 126usize], ++} ++pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP; ++pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP; ++pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP; ++pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP; ++pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP; ++pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP; ++pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP; ++pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP; ++pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP; ++pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP; ++pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP; ++pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6; ++pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP; ++pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE; ++pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP; ++pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH; ++pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP; ++pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH; ++pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP; ++pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM; ++pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP; ++pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP; ++pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP; ++pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE; ++pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS; ++pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET; ++pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW; ++pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP; ++pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_1 { ++IPPROTO_IP = 0, ++IPPROTO_ICMP = 1, ++IPPROTO_IGMP = 2, ++IPPROTO_IPIP = 4, ++IPPROTO_TCP = 6, ++IPPROTO_EGP = 8, ++IPPROTO_PUP = 12, ++IPPROTO_UDP = 17, ++IPPROTO_IDP = 22, ++IPPROTO_TP = 29, ++IPPROTO_DCCP = 33, ++IPPROTO_IPV6 = 41, ++IPPROTO_RSVP = 46, ++IPPROTO_GRE = 47, ++IPPROTO_ESP = 50, ++IPPROTO_AH = 51, ++IPPROTO_MTP = 92, ++IPPROTO_BEETPH = 94, ++IPPROTO_ENCAP = 98, ++IPPROTO_PIM = 103, ++IPPROTO_COMP = 108, ++IPPROTO_L2TP = 115, ++IPPROTO_SCTP = 132, ++IPPROTO_UDPLITE = 136, ++IPPROTO_MPLS = 137, ++IPPROTO_ETHERNET = 143, ++IPPROTO_RAW = 255, ++IPPROTO_MPTCP = 262, ++IPPROTO_MAX = 263, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct in_addr { ++pub s_addr: __be32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_mreq { ++pub imr_multiaddr: in_addr, ++pub imr_interface: in_addr, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_mreqn { ++pub imr_multiaddr: in_addr, ++pub imr_address: in_addr, ++pub imr_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_mreq_source { ++pub imr_multiaddr: __be32, ++pub imr_interface: __be32, ++pub imr_sourceaddr: __be32, ++} ++#[repr(C)] ++pub struct ip_msfilter { ++pub imsf_multiaddr: __be32, ++pub imsf_interface: __be32, ++pub imsf_fmode: __u32, ++pub imsf_numsrc: __u32, ++pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1, ++} ++#[repr(C)] ++pub struct ip_msfilter__bindgen_ty_1 { ++pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>, ++pub __bindgen_anon_1: __BindgenUnionField, ++pub bindgen_union_field: u32, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 { ++pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, ++pub imsf_slist_flex: __IncompleteArrayField<__be32>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct group_req { ++pub gr_interface: __u32, ++pub gr_group: __kernel_sockaddr_storage, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct group_source_req { ++pub gsr_interface: __u32, ++pub gsr_group: __kernel_sockaddr_storage, ++pub gsr_source: __kernel_sockaddr_storage, ++} ++#[repr(C)] ++pub struct group_filter { ++pub __bindgen_anon_1: group_filter__bindgen_ty_1, ++} ++#[repr(C)] ++pub struct group_filter__bindgen_ty_1 { ++pub __bindgen_anon_1: __BindgenUnionField, ++pub __bindgen_anon_2: __BindgenUnionField, ++pub bindgen_union_field: [u64; 34usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct group_filter__bindgen_ty_1__bindgen_ty_1 { ++pub gf_interface_aux: __u32, ++pub gf_group_aux: __kernel_sockaddr_storage, ++pub gf_fmode_aux: __u32, ++pub gf_numsrc_aux: __u32, ++pub gf_slist: [__kernel_sockaddr_storage; 1usize], ++} ++#[repr(C)] ++pub struct group_filter__bindgen_ty_1__bindgen_ty_2 { ++pub gf_interface: __u32, ++pub gf_group: __kernel_sockaddr_storage, ++pub gf_fmode: __u32, ++pub gf_numsrc: __u32, ++pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct in_pktinfo { ++pub ipi_ifindex: crate::ctypes::c_int, ++pub ipi_spec_dst: in_addr, ++pub ipi_addr: in_addr, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sockaddr_in { ++pub sin_family: __kernel_sa_family_t, ++pub sin_port: __be16, ++pub sin_addr: in_addr, ++pub __pad: [crate::ctypes::c_uchar; 8usize], ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct inotify_event { ++pub wd: __s32, ++pub mask: __u32, ++pub cookie: __u32, ++pub len: __u32, ++pub name: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct iphdr { ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, ++pub tos: __u8, ++pub tot_len: __be16, ++pub id: __be16, ++pub frag_off: __be16, ++pub ttl: __u8, ++pub protocol: __u8, ++pub check: __sum16, ++pub __bindgen_anon_1: iphdr__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union iphdr__bindgen_ty_1 { ++pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1, ++pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct iphdr__bindgen_ty_1__bindgen_ty_1 { ++pub saddr: __be32, ++pub daddr: __be32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct iphdr__bindgen_ty_1__bindgen_ty_2 { ++pub saddr: __be32, ++pub daddr: __be32, ++} ++impl iphdr { ++#[inline] ++pub fn ihl(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_ihl(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn version(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_version(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 4u8, { ++let ihl: u8 = unsafe { ::core::mem::transmute(ihl) }; ++ihl as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 4u8, { ++let version: u8 = unsafe { ::core::mem::transmute(version) }; ++version as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct ip_auth_hdr { ++pub nexthdr: __u8, ++pub hdrlen: __u8, ++pub reserved: __be16, ++pub spi: __be32, ++pub seq_no: __be32, ++pub auth_data: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct ip_esp_hdr { ++pub spi: __be32, ++pub seq_no: __be32, ++pub enc_data: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_comp_hdr { ++pub nexthdr: __u8, ++pub flags: __u8, ++pub cpi: __be16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ip_beet_phdr { ++pub nexthdr: __u8, ++pub hdrlen: __u8, ++pub padlen: __u8, ++pub reserved: __u8, ++} ++pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING; ++pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING; ++pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP; ++pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS; ++pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS; ++pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS; ++pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA; ++pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER; ++pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE; ++pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY; ++pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS; ++pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG; ++pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER; ++pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID; ++pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM; ++pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY; ++pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION; ++pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE; ++pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE; ++pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES; ++pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT; ++pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY; ++pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL; ++pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK; ++pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN; ++pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET; ++pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL; ++pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL; ++pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; ++pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; ++pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP; ++pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING; ++pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER; ++pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_2 { ++IPV4_DEVCONF_FORWARDING = 1, ++IPV4_DEVCONF_MC_FORWARDING = 2, ++IPV4_DEVCONF_PROXY_ARP = 3, ++IPV4_DEVCONF_ACCEPT_REDIRECTS = 4, ++IPV4_DEVCONF_SECURE_REDIRECTS = 5, ++IPV4_DEVCONF_SEND_REDIRECTS = 6, ++IPV4_DEVCONF_SHARED_MEDIA = 7, ++IPV4_DEVCONF_RP_FILTER = 8, ++IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9, ++IPV4_DEVCONF_BOOTP_RELAY = 10, ++IPV4_DEVCONF_LOG_MARTIANS = 11, ++IPV4_DEVCONF_TAG = 12, ++IPV4_DEVCONF_ARPFILTER = 13, ++IPV4_DEVCONF_MEDIUM_ID = 14, ++IPV4_DEVCONF_NOXFRM = 15, ++IPV4_DEVCONF_NOPOLICY = 16, ++IPV4_DEVCONF_FORCE_IGMP_VERSION = 17, ++IPV4_DEVCONF_ARP_ANNOUNCE = 18, ++IPV4_DEVCONF_ARP_IGNORE = 19, ++IPV4_DEVCONF_PROMOTE_SECONDARIES = 20, ++IPV4_DEVCONF_ARP_ACCEPT = 21, ++IPV4_DEVCONF_ARP_NOTIFY = 22, ++IPV4_DEVCONF_ACCEPT_LOCAL = 23, ++IPV4_DEVCONF_SRC_VMARK = 24, ++IPV4_DEVCONF_PROXY_ARP_PVLAN = 25, ++IPV4_DEVCONF_ROUTE_LOCALNET = 26, ++IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27, ++IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28, ++IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29, ++IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, ++IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, ++IPV4_DEVCONF_BC_FORWARDING = 32, ++IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, ++__IPV4_DEVCONF_MAX = 34, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct in6_addr { ++pub in6_u: in6_addr__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union in6_addr__bindgen_ty_1 { ++pub u6_addr8: [__u8; 16usize], ++pub u6_addr16: [__be16; 8usize], ++pub u6_addr32: [__be32; 4usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct sockaddr_in6 { ++pub sin6_family: crate::ctypes::c_ushort, ++pub sin6_port: __be16, ++pub sin6_flowinfo: __be32, ++pub sin6_addr: in6_addr, ++pub sin6_scope_id: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ipv6_mreq { ++pub ipv6mr_multiaddr: in6_addr, ++pub ipv6mr_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct in6_flowlabel_req { ++pub flr_dst: in6_addr, ++pub flr_label: __be32, ++pub flr_action: __u8, ++pub flr_share: __u8, ++pub flr_flags: __u16, ++pub flr_expires: __u16, ++pub flr_linger: __u16, ++pub __flr_pad: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct in6_pktinfo { ++pub ipi6_addr: in6_addr, ++pub ipi6_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ip6_mtuinfo { ++pub ip6m_addr: sockaddr_in6, ++pub ip6m_mtu: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct in6_ifreq { ++pub ifr6_addr: in6_addr, ++pub ifr6_prefixlen: __u32, ++pub ifr6_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ipv6_rt_hdr { ++pub nexthdr: __u8, ++pub hdrlen: __u8, ++pub type_: __u8, ++pub segments_left: __u8, ++} ++#[repr(C, packed)] ++#[derive(Debug, Copy, Clone)] ++pub struct ipv6_opt_hdr { ++pub nexthdr: __u8, ++pub hdrlen: __u8, ++} ++#[repr(C)] ++pub struct rt0_hdr { ++pub rt_hdr: ipv6_rt_hdr, ++pub reserved: __u32, ++pub addr: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct rt2_hdr { ++pub rt_hdr: ipv6_rt_hdr, ++pub reserved: __u32, ++pub addr: in6_addr, ++} ++#[repr(C, packed)] ++#[derive(Copy, Clone)] ++pub struct ipv6_destopt_hao { ++pub type_: __u8, ++pub length: __u8, ++pub addr: in6_addr, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ipv6hdr { ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, ++pub flow_lbl: [__u8; 3usize], ++pub payload_len: __be16, ++pub nexthdr: __u8, ++pub hop_limit: __u8, ++pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union ipv6hdr__bindgen_ty_1 { ++pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1, ++pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 { ++pub saddr: in6_addr, ++pub daddr: in6_addr, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 { ++pub saddr: in6_addr, ++pub daddr: in6_addr, ++} ++impl ipv6hdr { ++#[inline] ++pub fn priority(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_priority(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn version(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_version(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 4u8, { ++let priority: u8 = unsafe { ::core::mem::transmute(priority) }; ++priority as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 4u8, { ++let version: u8 = unsafe { ::core::mem::transmute(version) }; ++version as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING; ++pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT; ++pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6; ++pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA; ++pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS; ++pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF; ++pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS; ++pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS; ++pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL; ++pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY; ++pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR; ++pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT; ++pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT; ++pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY; ++pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR; ++pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES; ++pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION; ++pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR; ++pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO; ++pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF; ++pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL; ++pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN; ++pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP; ++pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD; ++pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE; ++pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING; ++pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6; ++pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD; ++pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO; ++pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY; ++pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL; ++pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL; ++pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC; ++pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL; ++pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC; ++pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU; ++pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET; ++pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY; ++pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT; ++pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN; ++pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST; ++pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA; ++pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN; ++pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL; ++pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED; ++pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC; ++pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD; ++pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE; ++pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY; ++pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN; ++pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS; ++pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED; ++pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC; ++pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED; ++pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID; ++pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE; ++pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER; ++pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA; ++pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_3 { ++DEVCONF_FORWARDING = 0, ++DEVCONF_HOPLIMIT = 1, ++DEVCONF_MTU6 = 2, ++DEVCONF_ACCEPT_RA = 3, ++DEVCONF_ACCEPT_REDIRECTS = 4, ++DEVCONF_AUTOCONF = 5, ++DEVCONF_DAD_TRANSMITS = 6, ++DEVCONF_RTR_SOLICITS = 7, ++DEVCONF_RTR_SOLICIT_INTERVAL = 8, ++DEVCONF_RTR_SOLICIT_DELAY = 9, ++DEVCONF_USE_TEMPADDR = 10, ++DEVCONF_TEMP_VALID_LFT = 11, ++DEVCONF_TEMP_PREFERED_LFT = 12, ++DEVCONF_REGEN_MAX_RETRY = 13, ++DEVCONF_MAX_DESYNC_FACTOR = 14, ++DEVCONF_MAX_ADDRESSES = 15, ++DEVCONF_FORCE_MLD_VERSION = 16, ++DEVCONF_ACCEPT_RA_DEFRTR = 17, ++DEVCONF_ACCEPT_RA_PINFO = 18, ++DEVCONF_ACCEPT_RA_RTR_PREF = 19, ++DEVCONF_RTR_PROBE_INTERVAL = 20, ++DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21, ++DEVCONF_PROXY_NDP = 22, ++DEVCONF_OPTIMISTIC_DAD = 23, ++DEVCONF_ACCEPT_SOURCE_ROUTE = 24, ++DEVCONF_MC_FORWARDING = 25, ++DEVCONF_DISABLE_IPV6 = 26, ++DEVCONF_ACCEPT_DAD = 27, ++DEVCONF_FORCE_TLLAO = 28, ++DEVCONF_NDISC_NOTIFY = 29, ++DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30, ++DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31, ++DEVCONF_SUPPRESS_FRAG_NDISC = 32, ++DEVCONF_ACCEPT_RA_FROM_LOCAL = 33, ++DEVCONF_USE_OPTIMISTIC = 34, ++DEVCONF_ACCEPT_RA_MTU = 35, ++DEVCONF_STABLE_SECRET = 36, ++DEVCONF_USE_OIF_ADDRS_ONLY = 37, ++DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38, ++DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39, ++DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40, ++DEVCONF_DROP_UNSOLICITED_NA = 41, ++DEVCONF_KEEP_ADDR_ON_DOWN = 42, ++DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43, ++DEVCONF_SEG6_ENABLED = 44, ++DEVCONF_SEG6_REQUIRE_HMAC = 45, ++DEVCONF_ENHANCED_DAD = 46, ++DEVCONF_ADDR_GEN_MODE = 47, ++DEVCONF_DISABLE_POLICY = 48, ++DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, ++DEVCONF_NDISC_TCLASS = 50, ++DEVCONF_RPL_SEG_ENABLED = 51, ++DEVCONF_RA_DEFRTR_METRIC = 52, ++DEVCONF_IOAM6_ENABLED = 53, ++DEVCONF_IOAM6_ID = 54, ++DEVCONF_IOAM6_ID_WIDE = 55, ++DEVCONF_NDISC_EVICT_NOCARRIER = 56, ++DEVCONF_ACCEPT_UNTRACKED_NA = 57, ++DEVCONF_MAX = 58, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum socket_state { ++SS_FREE = 0, ++SS_UNCONNECTED = 1, ++SS_CONNECTING = 2, ++SS_CONNECTED = 3, ++SS_DISCONNECTING = 4, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct pollfd { ++pub fd: crate::ctypes::c_int, ++pub events: crate::ctypes::c_short, ++pub revents: crate::ctypes::c_short, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct prctl_mm_map { ++pub start_code: __u64, ++pub end_code: __u64, ++pub start_data: __u64, ++pub end_data: __u64, ++pub start_brk: __u64, ++pub brk: __u64, ++pub start_stack: __u64, ++pub arg_start: __u64, ++pub arg_end: __u64, ++pub env_start: __u64, ++pub env_end: __u64, ++pub auxv: *mut __u64, ++pub auxv_size: __u32, ++pub exe_fd: __u32, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct rand_pool_info { ++pub entropy_count: crate::ctypes::c_int, ++pub buf_size: crate::ctypes::c_int, ++pub buf: __IncompleteArrayField<__u32>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_timespec { ++pub tv_sec: __kernel_time64_t, ++pub tv_nsec: crate::ctypes::c_longlong, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_itimerspec { ++pub it_interval: __kernel_timespec, ++pub it_value: __kernel_timespec, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_old_timeval { ++pub tv_sec: __kernel_long_t, ++pub tv_usec: __kernel_long_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_old_timespec { ++pub tv_sec: __kernel_old_time_t, ++pub tv_nsec: crate::ctypes::c_long, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_old_itimerval { ++pub it_interval: __kernel_old_timeval, ++pub it_value: __kernel_old_timeval, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_sock_timeval { ++pub tv_sec: __s64, ++pub tv_usec: __s64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct timespec { ++pub tv_sec: __kernel_old_time_t, ++pub tv_nsec: crate::ctypes::c_long, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct timeval { ++pub tv_sec: __kernel_old_time_t, ++pub tv_usec: __kernel_suseconds_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct itimerspec { ++pub it_interval: timespec, ++pub it_value: timespec, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct itimerval { ++pub it_interval: timeval, ++pub it_value: timeval, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct timezone { ++pub tz_minuteswest: crate::ctypes::c_int, ++pub tz_dsttime: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rusage { ++pub ru_utime: __kernel_old_timeval, ++pub ru_stime: __kernel_old_timeval, ++pub ru_maxrss: __kernel_long_t, ++pub ru_ixrss: __kernel_long_t, ++pub ru_idrss: __kernel_long_t, ++pub ru_isrss: __kernel_long_t, ++pub ru_minflt: __kernel_long_t, ++pub ru_majflt: __kernel_long_t, ++pub ru_nswap: __kernel_long_t, ++pub ru_inblock: __kernel_long_t, ++pub ru_oublock: __kernel_long_t, ++pub ru_msgsnd: __kernel_long_t, ++pub ru_msgrcv: __kernel_long_t, ++pub ru_nsignals: __kernel_long_t, ++pub ru_nvcsw: __kernel_long_t, ++pub ru_nivcsw: __kernel_long_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rlimit { ++pub rlim_cur: __kernel_ulong_t, ++pub rlim_max: __kernel_ulong_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rlimit64 { ++pub rlim_cur: __u64, ++pub rlim_max: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct clone_args { ++pub flags: __u64, ++pub pidfd: __u64, ++pub child_tid: __u64, ++pub parent_tid: __u64, ++pub exit_signal: __u64, ++pub stack: __u64, ++pub stack_size: __u64, ++pub tls: __u64, ++pub set_tid: __u64, ++pub set_tid_size: __u64, ++pub cgroup: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sigset_t { ++pub sig: [crate::ctypes::c_ulong; 1usize], ++} ++pub type old_sigset_t = crate::ctypes::c_ulong; ++pub type __signalfn_t = ::core::option::Option; ++pub type __sighandler_t = __signalfn_t; ++pub type __restorefn_t = ::core::option::Option; ++pub type __sigrestore_t = __restorefn_t; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sigaction { ++pub sa_handler: __sighandler_t, ++pub sa_flags: crate::ctypes::c_ulong, ++pub sa_mask: sigset_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sigaltstack { ++pub ss_sp: *mut crate::ctypes::c_void, ++pub ss_flags: crate::ctypes::c_int, ++pub ss_size: __kernel_size_t, ++} ++pub type stack_t = sigaltstack; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union sigval { ++pub sival_int: crate::ctypes::c_int, ++pub sival_ptr: *mut crate::ctypes::c_void, ++} ++pub type sigval_t = sigval; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union __sifields { ++pub _kill: __sifields__bindgen_ty_1, ++pub _timer: __sifields__bindgen_ty_2, ++pub _rt: __sifields__bindgen_ty_3, ++pub _sigchld: __sifields__bindgen_ty_4, ++pub _sigfault: __sifields__bindgen_ty_5, ++pub _sigpoll: __sifields__bindgen_ty_6, ++pub _sigsys: __sifields__bindgen_ty_7, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_1 { ++pub _pid: __kernel_pid_t, ++pub _uid: __kernel_uid32_t, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __sifields__bindgen_ty_2 { ++pub _tid: __kernel_timer_t, ++pub _overrun: crate::ctypes::c_int, ++pub _sigval: sigval_t, ++pub _sys_private: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __sifields__bindgen_ty_3 { ++pub _pid: __kernel_pid_t, ++pub _uid: __kernel_uid32_t, ++pub _sigval: sigval_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_4 { ++pub _pid: __kernel_pid_t, ++pub _uid: __kernel_uid32_t, ++pub _status: crate::ctypes::c_int, ++pub _utime: __kernel_clock_t, ++pub _stime: __kernel_clock_t, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __sifields__bindgen_ty_5 { ++pub _addr: *mut crate::ctypes::c_void, ++pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union __sifields__bindgen_ty_5__bindgen_ty_1 { ++pub _trapno: crate::ctypes::c_int, ++pub _addr_lsb: crate::ctypes::c_short, ++pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1, ++pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2, ++pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 { ++pub _dummy_bnd: [crate::ctypes::c_char; 8usize], ++pub _lower: *mut crate::ctypes::c_void, ++pub _upper: *mut crate::ctypes::c_void, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 { ++pub _dummy_pkey: [crate::ctypes::c_char; 8usize], ++pub _pkey: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 { ++pub _data: crate::ctypes::c_ulong, ++pub _type: __u32, ++pub _flags: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_6 { ++pub _band: crate::ctypes::c_long, ++pub _fd: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __sifields__bindgen_ty_7 { ++pub _call_addr: *mut crate::ctypes::c_void, ++pub _syscall: crate::ctypes::c_int, ++pub _arch: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct siginfo { ++pub __bindgen_anon_1: siginfo__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union siginfo__bindgen_ty_1 { ++pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1, ++pub _si_pad: [crate::ctypes::c_int; 32usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct siginfo__bindgen_ty_1__bindgen_ty_1 { ++pub si_signo: crate::ctypes::c_int, ++pub si_errno: crate::ctypes::c_int, ++pub si_code: crate::ctypes::c_int, ++pub _sifields: __sifields, ++} ++pub type siginfo_t = siginfo; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct sigevent { ++pub sigev_value: sigval_t, ++pub sigev_signo: crate::ctypes::c_int, ++pub sigev_notify: crate::ctypes::c_int, ++pub _sigev_un: sigevent__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union sigevent__bindgen_ty_1 { ++pub _pad: [crate::ctypes::c_int; 12usize], ++pub _tid: crate::ctypes::c_int, ++pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { ++pub _function: ::core::option::Option, ++pub _attribute: *mut crate::ctypes::c_void, ++} ++pub type sigevent_t = sigevent; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct statx_timestamp { ++pub tv_sec: __s64, ++pub tv_nsec: __u32, ++pub __reserved: __s32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct statx { ++pub stx_mask: __u32, ++pub stx_blksize: __u32, ++pub stx_attributes: __u64, ++pub stx_nlink: __u32, ++pub stx_uid: __u32, ++pub stx_gid: __u32, ++pub stx_mode: __u16, ++pub __spare0: [__u16; 1usize], ++pub stx_ino: __u64, ++pub stx_size: __u64, ++pub stx_blocks: __u64, ++pub stx_attributes_mask: __u64, ++pub stx_atime: statx_timestamp, ++pub stx_btime: statx_timestamp, ++pub stx_ctime: statx_timestamp, ++pub stx_mtime: statx_timestamp, ++pub stx_rdev_major: __u32, ++pub stx_rdev_minor: __u32, ++pub stx_dev_major: __u32, ++pub stx_dev_minor: __u32, ++pub stx_mnt_id: __u64, ++pub stx_dio_mem_align: __u32, ++pub stx_dio_offset_align: __u32, ++pub __spare3: [__u64; 12usize], ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct sysinfo { ++pub uptime: __kernel_long_t, ++pub loads: [__kernel_ulong_t; 3usize], ++pub totalram: __kernel_ulong_t, ++pub freeram: __kernel_ulong_t, ++pub sharedram: __kernel_ulong_t, ++pub bufferram: __kernel_ulong_t, ++pub totalswap: __kernel_ulong_t, ++pub freeswap: __kernel_ulong_t, ++pub procs: __u16, ++pub pad: __u16, ++pub totalhigh: __kernel_ulong_t, ++pub freehigh: __kernel_ulong_t, ++pub mem_unit: __u32, ++pub _f: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcphdr { ++pub source: __be16, ++pub dest: __be16, ++pub seq: __be32, ++pub ack_seq: __be32, ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, ++pub window: __be16, ++pub check: __sum16, ++pub urg_ptr: __be16, ++} ++impl tcphdr { ++#[inline] ++pub fn res1(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) } ++} ++#[inline] ++pub fn set_res1(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn doff(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) } ++} ++#[inline] ++pub fn set_doff(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn fin(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_fin(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(8usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn syn(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_syn(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(9usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn rst(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_rst(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(10usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn psh(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_psh(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(11usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn ack(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_ack(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(12usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn urg(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_urg(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(13usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn ece(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_ece(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(14usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn cwr(&self) -> __u16 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } ++} ++#[inline] ++pub fn set_cwr(&mut self, val: __u16) { ++unsafe { ++let val: u16 = ::core::mem::transmute(val); ++self._bitfield_1.set(15usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 4u8, { ++let res1: u16 = unsafe { ::core::mem::transmute(res1) }; ++res1 as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 4u8, { ++let doff: u16 = unsafe { ::core::mem::transmute(doff) }; ++doff as u64 ++}); ++__bindgen_bitfield_unit.set(8usize, 1u8, { ++let fin: u16 = unsafe { ::core::mem::transmute(fin) }; ++fin as u64 ++}); ++__bindgen_bitfield_unit.set(9usize, 1u8, { ++let syn: u16 = unsafe { ::core::mem::transmute(syn) }; ++syn as u64 ++}); ++__bindgen_bitfield_unit.set(10usize, 1u8, { ++let rst: u16 = unsafe { ::core::mem::transmute(rst) }; ++rst as u64 ++}); ++__bindgen_bitfield_unit.set(11usize, 1u8, { ++let psh: u16 = unsafe { ::core::mem::transmute(psh) }; ++psh as u64 ++}); ++__bindgen_bitfield_unit.set(12usize, 1u8, { ++let ack: u16 = unsafe { ::core::mem::transmute(ack) }; ++ack as u64 ++}); ++__bindgen_bitfield_unit.set(13usize, 1u8, { ++let urg: u16 = unsafe { ::core::mem::transmute(urg) }; ++urg as u64 ++}); ++__bindgen_bitfield_unit.set(14usize, 1u8, { ++let ece: u16 = unsafe { ::core::mem::transmute(ece) }; ++ece as u64 ++}); ++__bindgen_bitfield_unit.set(15usize, 1u8, { ++let cwr: u16 = unsafe { ::core::mem::transmute(cwr) }; ++cwr as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union tcp_word_hdr { ++pub hdr: tcphdr, ++pub words: [__be32; 5usize], ++} ++pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR; ++pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE; ++pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG; ++pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK; ++pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH; ++pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST; ++pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN; ++pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN; ++pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS; ++pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_4 { ++TCP_FLAG_CWR = 32768, ++TCP_FLAG_ECE = 16384, ++TCP_FLAG_URG = 8192, ++TCP_FLAG_ACK = 4096, ++TCP_FLAG_PSH = 2048, ++TCP_FLAG_RST = 1024, ++TCP_FLAG_SYN = 512, ++TCP_FLAG_FIN = 256, ++TCP_RESERVED_BITS = 15, ++TCP_DATA_OFFSET = 240, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_repair_opt { ++pub opt_code: __u32, ++pub opt_val: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_repair_window { ++pub snd_wl1: __u32, ++pub snd_wnd: __u32, ++pub max_window: __u32, ++pub rcv_wnd: __u32, ++pub rcv_wup: __u32, ++} ++pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE; ++pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE; ++pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE; ++pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_5 { ++TCP_NO_QUEUE = 0, ++TCP_RECV_QUEUE = 1, ++TCP_SEND_QUEUE = 2, ++TCP_QUEUES_NR = 3, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum tcp_fastopen_client_fail { ++TFO_STATUS_UNSPEC = 0, ++TFO_COOKIE_UNAVAILABLE = 1, ++TFO_DATA_NOT_ACKED = 2, ++TFO_SYN_RETRANSMITTED = 3, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum tcp_ca_state { ++TCP_CA_Open = 0, ++TCP_CA_Disorder = 1, ++TCP_CA_CWR = 2, ++TCP_CA_Recovery = 3, ++TCP_CA_Loss = 4, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_info { ++pub tcpi_state: __u8, ++pub tcpi_ca_state: __u8, ++pub tcpi_retransmits: __u8, ++pub tcpi_probes: __u8, ++pub tcpi_backoff: __u8, ++pub tcpi_options: __u8, ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, ++pub tcpi_rto: __u32, ++pub tcpi_ato: __u32, ++pub tcpi_snd_mss: __u32, ++pub tcpi_rcv_mss: __u32, ++pub tcpi_unacked: __u32, ++pub tcpi_sacked: __u32, ++pub tcpi_lost: __u32, ++pub tcpi_retrans: __u32, ++pub tcpi_fackets: __u32, ++pub tcpi_last_data_sent: __u32, ++pub tcpi_last_ack_sent: __u32, ++pub tcpi_last_data_recv: __u32, ++pub tcpi_last_ack_recv: __u32, ++pub tcpi_pmtu: __u32, ++pub tcpi_rcv_ssthresh: __u32, ++pub tcpi_rtt: __u32, ++pub tcpi_rttvar: __u32, ++pub tcpi_snd_ssthresh: __u32, ++pub tcpi_snd_cwnd: __u32, ++pub tcpi_advmss: __u32, ++pub tcpi_reordering: __u32, ++pub tcpi_rcv_rtt: __u32, ++pub tcpi_rcv_space: __u32, ++pub tcpi_total_retrans: __u32, ++pub tcpi_pacing_rate: __u64, ++pub tcpi_max_pacing_rate: __u64, ++pub tcpi_bytes_acked: __u64, ++pub tcpi_bytes_received: __u64, ++pub tcpi_segs_out: __u32, ++pub tcpi_segs_in: __u32, ++pub tcpi_notsent_bytes: __u32, ++pub tcpi_min_rtt: __u32, ++pub tcpi_data_segs_in: __u32, ++pub tcpi_data_segs_out: __u32, ++pub tcpi_delivery_rate: __u64, ++pub tcpi_busy_time: __u64, ++pub tcpi_rwnd_limited: __u64, ++pub tcpi_sndbuf_limited: __u64, ++pub tcpi_delivered: __u32, ++pub tcpi_delivered_ce: __u32, ++pub tcpi_bytes_sent: __u64, ++pub tcpi_bytes_retrans: __u64, ++pub tcpi_dsack_dups: __u32, ++pub tcpi_reord_seen: __u32, ++pub tcpi_rcv_ooopack: __u32, ++pub tcpi_snd_wnd: __u32, ++pub tcpi_rcv_wnd: __u32, ++pub tcpi_rehash: __u32, ++} ++impl tcp_info { ++#[inline] ++pub fn tcpi_snd_wscale(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_tcpi_snd_wscale(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn tcpi_rcv_wscale(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) } ++} ++#[inline] ++pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 4u8, val as u64) ++} ++} ++#[inline] ++pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } ++} ++#[inline] ++pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(8usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn tcpi_fastopen_client_fail(&self) -> __u8 { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) } ++} ++#[inline] ++pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) { ++unsafe { ++let val: u8 = ::core::mem::transmute(val); ++self._bitfield_1.set(9usize, 2u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 4u8, { ++let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) }; ++tcpi_snd_wscale as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 4u8, { ++let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) }; ++tcpi_rcv_wscale as u64 ++}); ++__bindgen_bitfield_unit.set(8usize, 1u8, { ++let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) }; ++tcpi_delivery_rate_app_limited as u64 ++}); ++__bindgen_bitfield_unit.set(9usize, 2u8, { ++let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) }; ++tcpi_fastopen_client_fail as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD; ++pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY; ++pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED; ++pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED; ++pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT; ++pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS; ++pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE; ++pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE; ++pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND; ++pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING; ++pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT; ++pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS; ++pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT; ++pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE; ++pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE; ++pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH; ++pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED; ++pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE; ++pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT; ++pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS; ++pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS; ++pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN; ++pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT; ++pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH; ++pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT; ++pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT; ++pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL; ++pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_6 { ++TCP_NLA_PAD = 0, ++TCP_NLA_BUSY = 1, ++TCP_NLA_RWND_LIMITED = 2, ++TCP_NLA_SNDBUF_LIMITED = 3, ++TCP_NLA_DATA_SEGS_OUT = 4, ++TCP_NLA_TOTAL_RETRANS = 5, ++TCP_NLA_PACING_RATE = 6, ++TCP_NLA_DELIVERY_RATE = 7, ++TCP_NLA_SND_CWND = 8, ++TCP_NLA_REORDERING = 9, ++TCP_NLA_MIN_RTT = 10, ++TCP_NLA_RECUR_RETRANS = 11, ++TCP_NLA_DELIVERY_RATE_APP_LMT = 12, ++TCP_NLA_SNDQ_SIZE = 13, ++TCP_NLA_CA_STATE = 14, ++TCP_NLA_SND_SSTHRESH = 15, ++TCP_NLA_DELIVERED = 16, ++TCP_NLA_DELIVERED_CE = 17, ++TCP_NLA_BYTES_SENT = 18, ++TCP_NLA_BYTES_RETRANS = 19, ++TCP_NLA_DSACK_DUPS = 20, ++TCP_NLA_REORD_SEEN = 21, ++TCP_NLA_SRTT = 22, ++TCP_NLA_TIMEOUT_REHASH = 23, ++TCP_NLA_BYTES_NOTSENT = 24, ++TCP_NLA_EDT = 25, ++TCP_NLA_TTL = 26, ++TCP_NLA_REHASH = 27, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct tcp_md5sig { ++pub tcpm_addr: __kernel_sockaddr_storage, ++pub tcpm_flags: __u8, ++pub tcpm_prefixlen: __u8, ++pub tcpm_keylen: __u16, ++pub tcpm_ifindex: crate::ctypes::c_int, ++pub tcpm_key: [__u8; 80usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_diag_md5sig { ++pub tcpm_family: __u8, ++pub tcpm_prefixlen: __u8, ++pub tcpm_keylen: __u16, ++pub tcpm_addr: [__be32; 4usize], ++pub tcpm_key: [__u8; 80usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcp_zerocopy_receive { ++pub address: __u64, ++pub length: __u32, ++pub recv_skip_hint: __u32, ++pub inq: __u32, ++pub err: __s32, ++pub copybuf_address: __u64, ++pub copybuf_len: __s32, ++pub flags: __u32, ++pub msg_control: __u64, ++pub msg_controllen: __u64, ++pub msg_flags: __u32, ++pub reserved: __u32, ++} ++pub type cc_t = crate::ctypes::c_uchar; ++pub type speed_t = crate::ctypes::c_uint; ++pub type tcflag_t = crate::ctypes::c_uint; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct termios { ++pub c_iflag: tcflag_t, ++pub c_oflag: tcflag_t, ++pub c_cflag: tcflag_t, ++pub c_lflag: tcflag_t, ++pub c_line: cc_t, ++pub c_cc: [cc_t; 19usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct termios2 { ++pub c_iflag: tcflag_t, ++pub c_oflag: tcflag_t, ++pub c_cflag: tcflag_t, ++pub c_lflag: tcflag_t, ++pub c_line: cc_t, ++pub c_cc: [cc_t; 19usize], ++pub c_ispeed: speed_t, ++pub c_ospeed: speed_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ktermios { ++pub c_iflag: tcflag_t, ++pub c_oflag: tcflag_t, ++pub c_cflag: tcflag_t, ++pub c_lflag: tcflag_t, ++pub c_line: cc_t, ++pub c_cc: [cc_t; 19usize], ++pub c_ispeed: speed_t, ++pub c_ospeed: speed_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct winsize { ++pub ws_row: crate::ctypes::c_ushort, ++pub ws_col: crate::ctypes::c_ushort, ++pub ws_xpixel: crate::ctypes::c_ushort, ++pub ws_ypixel: crate::ctypes::c_ushort, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct termio { ++pub c_iflag: crate::ctypes::c_ushort, ++pub c_oflag: crate::ctypes::c_ushort, ++pub c_cflag: crate::ctypes::c_ushort, ++pub c_lflag: crate::ctypes::c_ushort, ++pub c_line: crate::ctypes::c_uchar, ++pub c_cc: [crate::ctypes::c_uchar; 8usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct iovec { ++pub iov_base: *mut crate::ctypes::c_void, ++pub iov_len: __kernel_size_t, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sockaddr_un { ++pub sun_family: __kernel_sa_family_t, ++pub sun_path: [crate::ctypes::c_char; 108usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct oldold_utsname { ++pub sysname: [crate::ctypes::c_char; 9usize], ++pub nodename: [crate::ctypes::c_char; 9usize], ++pub release: [crate::ctypes::c_char; 9usize], ++pub version: [crate::ctypes::c_char; 9usize], ++pub machine: [crate::ctypes::c_char; 9usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct old_utsname { ++pub sysname: [crate::ctypes::c_char; 65usize], ++pub nodename: [crate::ctypes::c_char; 65usize], ++pub release: [crate::ctypes::c_char; 65usize], ++pub version: [crate::ctypes::c_char; 65usize], ++pub machine: [crate::ctypes::c_char; 65usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct new_utsname { ++pub sysname: [crate::ctypes::c_char; 65usize], ++pub nodename: [crate::ctypes::c_char; 65usize], ++pub release: [crate::ctypes::c_char; 65usize], ++pub version: [crate::ctypes::c_char; 65usize], ++pub machine: [crate::ctypes::c_char; 65usize], ++pub domainname: [crate::ctypes::c_char; 65usize], ++} ++impl membarrier_cmd { ++pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum membarrier_cmd { ++MEMBARRIER_CMD_QUERY = 0, ++MEMBARRIER_CMD_GLOBAL = 1, ++MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2, ++MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4, ++MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8, ++MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16, ++MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32, ++MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64, ++MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128, ++MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum membarrier_cmd_flag { ++MEMBARRIER_CMD_FLAG_CPU = 1, ++} ++#[repr(C, packed)] ++#[derive(Copy, Clone)] ++pub struct uffd_msg { ++pub event: __u8, ++pub reserved1: __u8, ++pub reserved2: __u16, ++pub reserved3: __u32, ++pub arg: uffd_msg__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union uffd_msg__bindgen_ty_1 { ++pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1, ++pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2, ++pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3, ++pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4, ++pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 { ++pub flags: __u64, ++pub address: __u64, ++pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 { ++pub ptid: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 { ++pub ufd: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 { ++pub from: __u64, ++pub to: __u64, ++pub len: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 { ++pub start: __u64, ++pub end: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 { ++pub reserved1: __u64, ++pub reserved2: __u64, ++pub reserved3: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_api { ++pub api: __u64, ++pub features: __u64, ++pub ioctls: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_range { ++pub start: __u64, ++pub len: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_register { ++pub range: uffdio_range, ++pub mode: __u64, ++pub ioctls: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_copy { ++pub dst: __u64, ++pub src: __u64, ++pub len: __u64, ++pub mode: __u64, ++pub copy: __s64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_zeropage { ++pub range: uffdio_range, ++pub mode: __u64, ++pub zeropage: __s64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_writeprotect { ++pub range: uffdio_range, ++pub mode: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct uffdio_continue { ++pub range: uffdio_range, ++pub mode: __u64, ++pub mapped: __s64, ++} ++#[repr(C)] ++pub struct io_uring_sqe { ++pub opcode: __u8, ++pub flags: __u8, ++pub ioprio: __u16, ++pub fd: __s32, ++pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, ++pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, ++pub len: __u32, ++pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, ++pub user_data: __u64, ++pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, ++pub personality: __u16, ++pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, ++pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_1 { ++pub off: __u64, ++pub addr2: __u64, ++pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 { ++pub cmd_op: __u32, ++pub __pad1: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_2 { ++pub addr: __u64, ++pub splice_off_in: __u64, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_3 { ++pub rw_flags: __kernel_rwf_t, ++pub fsync_flags: __u32, ++pub poll_events: __u16, ++pub poll32_events: __u32, ++pub sync_range_flags: __u32, ++pub msg_flags: __u32, ++pub timeout_flags: __u32, ++pub accept_flags: __u32, ++pub cancel_flags: __u32, ++pub open_flags: __u32, ++pub statx_flags: __u32, ++pub fadvise_advice: __u32, ++pub splice_flags: __u32, ++pub rename_flags: __u32, ++pub unlink_flags: __u32, ++pub hardlink_flags: __u32, ++pub xattr_flags: __u32, ++pub msg_ring_flags: __u32, ++pub uring_cmd_flags: __u32, ++} ++#[repr(C, packed)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_4 { ++pub buf_index: __u16, ++pub buf_group: __u16, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_sqe__bindgen_ty_5 { ++pub splice_fd_in: __s32, ++pub file_index: __u32, ++pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 { ++pub addr_len: __u16, ++pub __pad3: [__u16; 1usize], ++} ++#[repr(C)] ++pub struct io_uring_sqe__bindgen_ty_6 { ++pub __bindgen_anon_1: __BindgenUnionField, ++pub cmd: __BindgenUnionField<[__u8; 0usize]>, ++pub bindgen_union_field: [u64; 2usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 { ++pub addr3: __u64, ++pub __pad2: [__u64; 1usize], ++} ++pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT; ++pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT; ++pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT; ++pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT; ++pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT; ++pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT; ++pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_7 { ++IOSQE_FIXED_FILE_BIT = 0, ++IOSQE_IO_DRAIN_BIT = 1, ++IOSQE_IO_LINK_BIT = 2, ++IOSQE_IO_HARDLINK_BIT = 3, ++IOSQE_ASYNC_BIT = 4, ++IOSQE_BUFFER_SELECT_BIT = 5, ++IOSQE_CQE_SKIP_SUCCESS_BIT = 6, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum io_uring_op { ++IORING_OP_NOP = 0, ++IORING_OP_READV = 1, ++IORING_OP_WRITEV = 2, ++IORING_OP_FSYNC = 3, ++IORING_OP_READ_FIXED = 4, ++IORING_OP_WRITE_FIXED = 5, ++IORING_OP_POLL_ADD = 6, ++IORING_OP_POLL_REMOVE = 7, ++IORING_OP_SYNC_FILE_RANGE = 8, ++IORING_OP_SENDMSG = 9, ++IORING_OP_RECVMSG = 10, ++IORING_OP_TIMEOUT = 11, ++IORING_OP_TIMEOUT_REMOVE = 12, ++IORING_OP_ACCEPT = 13, ++IORING_OP_ASYNC_CANCEL = 14, ++IORING_OP_LINK_TIMEOUT = 15, ++IORING_OP_CONNECT = 16, ++IORING_OP_FALLOCATE = 17, ++IORING_OP_OPENAT = 18, ++IORING_OP_CLOSE = 19, ++IORING_OP_FILES_UPDATE = 20, ++IORING_OP_STATX = 21, ++IORING_OP_READ = 22, ++IORING_OP_WRITE = 23, ++IORING_OP_FADVISE = 24, ++IORING_OP_MADVISE = 25, ++IORING_OP_SEND = 26, ++IORING_OP_RECV = 27, ++IORING_OP_OPENAT2 = 28, ++IORING_OP_EPOLL_CTL = 29, ++IORING_OP_SPLICE = 30, ++IORING_OP_PROVIDE_BUFFERS = 31, ++IORING_OP_REMOVE_BUFFERS = 32, ++IORING_OP_TEE = 33, ++IORING_OP_SHUTDOWN = 34, ++IORING_OP_RENAMEAT = 35, ++IORING_OP_UNLINKAT = 36, ++IORING_OP_MKDIRAT = 37, ++IORING_OP_SYMLINKAT = 38, ++IORING_OP_LINKAT = 39, ++IORING_OP_MSG_RING = 40, ++IORING_OP_FSETXATTR = 41, ++IORING_OP_SETXATTR = 42, ++IORING_OP_FGETXATTR = 43, ++IORING_OP_GETXATTR = 44, ++IORING_OP_SOCKET = 45, ++IORING_OP_URING_CMD = 46, ++IORING_OP_SEND_ZC = 47, ++IORING_OP_SENDMSG_ZC = 48, ++IORING_OP_LAST = 49, ++} ++pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA; ++pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_8 { ++IORING_MSG_DATA = 0, ++IORING_MSG_SEND_FD = 1, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct io_uring_cqe { ++pub user_data: __u64, ++pub res: __s32, ++pub flags: __u32, ++pub big_cqe: __IncompleteArrayField<__u64>, ++} ++pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_9 { ++IORING_CQE_BUFFER_SHIFT = 16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_sqring_offsets { ++pub head: __u32, ++pub tail: __u32, ++pub ring_mask: __u32, ++pub ring_entries: __u32, ++pub flags: __u32, ++pub dropped: __u32, ++pub array: __u32, ++pub resv1: __u32, ++pub resv2: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_cqring_offsets { ++pub head: __u32, ++pub tail: __u32, ++pub ring_mask: __u32, ++pub ring_entries: __u32, ++pub overflow: __u32, ++pub cqes: __u32, ++pub flags: __u32, ++pub resv1: __u32, ++pub resv2: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_params { ++pub sq_entries: __u32, ++pub cq_entries: __u32, ++pub flags: __u32, ++pub sq_thread_cpu: __u32, ++pub sq_thread_idle: __u32, ++pub features: __u32, ++pub wq_fd: __u32, ++pub resv: [__u32; 3usize], ++pub sq_off: io_sqring_offsets, ++pub cq_off: io_cqring_offsets, ++} ++pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS; ++pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS; ++pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES; ++pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES; ++pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD; ++pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD; ++pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE; ++pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC; ++pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE; ++pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY; ++pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY; ++pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS; ++pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS; ++pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2; ++pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2; ++pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2; ++pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE; ++pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF; ++pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF; ++pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS; ++pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS; ++pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS; ++pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING; ++pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING; ++pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL; ++pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE; ++pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_10 { ++IORING_REGISTER_BUFFERS = 0, ++IORING_UNREGISTER_BUFFERS = 1, ++IORING_REGISTER_FILES = 2, ++IORING_UNREGISTER_FILES = 3, ++IORING_REGISTER_EVENTFD = 4, ++IORING_UNREGISTER_EVENTFD = 5, ++IORING_REGISTER_FILES_UPDATE = 6, ++IORING_REGISTER_EVENTFD_ASYNC = 7, ++IORING_REGISTER_PROBE = 8, ++IORING_REGISTER_PERSONALITY = 9, ++IORING_UNREGISTER_PERSONALITY = 10, ++IORING_REGISTER_RESTRICTIONS = 11, ++IORING_REGISTER_ENABLE_RINGS = 12, ++IORING_REGISTER_FILES2 = 13, ++IORING_REGISTER_FILES_UPDATE2 = 14, ++IORING_REGISTER_BUFFERS2 = 15, ++IORING_REGISTER_BUFFERS_UPDATE = 16, ++IORING_REGISTER_IOWQ_AFF = 17, ++IORING_UNREGISTER_IOWQ_AFF = 18, ++IORING_REGISTER_IOWQ_MAX_WORKERS = 19, ++IORING_REGISTER_RING_FDS = 20, ++IORING_UNREGISTER_RING_FDS = 21, ++IORING_REGISTER_PBUF_RING = 22, ++IORING_UNREGISTER_PBUF_RING = 23, ++IORING_REGISTER_SYNC_CANCEL = 24, ++IORING_REGISTER_FILE_ALLOC_RANGE = 25, ++IORING_REGISTER_LAST = 26, ++} ++pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND; ++pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_11 { ++IO_WQ_BOUND = 0, ++IO_WQ_UNBOUND = 1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_files_update { ++pub offset: __u32, ++pub resv: __u32, ++pub fds: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_rsrc_register { ++pub nr: __u32, ++pub flags: __u32, ++pub resv2: __u64, ++pub data: __u64, ++pub tags: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_rsrc_update { ++pub offset: __u32, ++pub resv: __u32, ++pub data: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_rsrc_update2 { ++pub offset: __u32, ++pub resv: __u32, ++pub data: __u64, ++pub tags: __u64, ++pub nr: __u32, ++pub resv2: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_notification_slot { ++pub tag: __u64, ++pub resv: [__u64; 3usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_notification_register { ++pub nr_slots: __u32, ++pub resv: __u32, ++pub resv2: __u64, ++pub data: __u64, ++pub resv3: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_probe_op { ++pub op: __u8, ++pub resv: __u8, ++pub flags: __u16, ++pub resv2: __u32, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct io_uring_probe { ++pub last_op: __u8, ++pub ops_len: __u8, ++pub resv: __u16, ++pub resv2: [__u32; 3usize], ++pub ops: __IncompleteArrayField, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct io_uring_restriction { ++pub opcode: __u16, ++pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, ++pub resv: __u8, ++pub resv2: [__u32; 3usize], ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union io_uring_restriction__bindgen_ty_1 { ++pub register_op: __u8, ++pub sqe_op: __u8, ++pub sqe_flags: __u8, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_buf { ++pub addr: __u64, ++pub len: __u32, ++pub bid: __u16, ++pub resv: __u16, ++} ++#[repr(C)] ++pub struct io_uring_buf_ring { ++pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1, ++} ++#[repr(C)] ++pub struct io_uring_buf_ring__bindgen_ty_1 { ++pub __bindgen_anon_1: __BindgenUnionField, ++pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>, ++pub bindgen_union_field: [u64; 2usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 { ++pub resv1: __u64, ++pub resv2: __u32, ++pub resv3: __u16, ++pub tail: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_buf_reg { ++pub ring_addr: __u64, ++pub ring_entries: __u32, ++pub bgid: __u16, ++pub pad: __u16, ++pub resv: [__u64; 3usize], ++} ++pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP; ++pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP; ++pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED; ++pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED; ++pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_12 { ++IORING_RESTRICTION_REGISTER_OP = 0, ++IORING_RESTRICTION_SQE_OP = 1, ++IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2, ++IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3, ++IORING_RESTRICTION_LAST = 4, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_getevents_arg { ++pub sigmask: __u64, ++pub sigmask_sz: __u32, ++pub pad: __u32, ++pub ts: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_sync_cancel_reg { ++pub addr: __u64, ++pub fd: __s32, ++pub flags: __u32, ++pub timeout: __kernel_timespec, ++pub pad: [__u64; 4usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_file_index_range { ++pub off: __u32, ++pub len: __u32, ++pub resv: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct io_uring_recvmsg_out { ++pub namelen: __u32, ++pub controllen: __u32, ++pub payloadlen: __u32, ++pub flags: __u32, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct sockaddr { ++pub __storage: __kernel_sockaddr_storage, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct linger { ++pub l_onoff: crate::ctypes::c_int, ++pub l_linger: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct linux_dirent64 { ++pub d_ino: crate::ctypes::c_ulong, ++pub d_off: crate::ctypes::c_long, ++pub d_reclen: __u16, ++pub d_type: __u8, ++pub d_name: __IncompleteArrayField, ++} ++pub type socklen_t = crate::ctypes::c_uint; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct stat { ++pub st_dev: crate::ctypes::c_ulong, ++pub st_ino: crate::ctypes::c_ulong, ++pub st_mode: crate::ctypes::c_uint, ++pub st_nlink: crate::ctypes::c_uint, ++pub st_uid: crate::ctypes::c_uint, ++pub st_gid: crate::ctypes::c_uint, ++pub st_rdev: crate::ctypes::c_ulong, ++pub __pad1: crate::ctypes::c_ulong, ++pub st_size: crate::ctypes::c_long, ++pub st_blksize: crate::ctypes::c_int, ++pub __pad2: crate::ctypes::c_int, ++pub st_blocks: crate::ctypes::c_long, ++pub st_atime: crate::ctypes::c_long, ++pub st_atime_nsec: crate::ctypes::c_ulong, ++pub st_mtime: crate::ctypes::c_long, ++pub st_mtime_nsec: crate::ctypes::c_ulong, ++pub st_ctime: crate::ctypes::c_long, ++pub st_ctime_nsec: crate::ctypes::c_ulong, ++pub __unused4: crate::ctypes::c_uint, ++pub __unused5: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct statfs { ++pub f_type: __kernel_long_t, ++pub f_bsize: __kernel_long_t, ++pub f_blocks: __kernel_long_t, ++pub f_bfree: __kernel_long_t, ++pub f_bavail: __kernel_long_t, ++pub f_files: __kernel_long_t, ++pub f_ffree: __kernel_long_t, ++pub f_fsid: __kernel_fsid_t, ++pub f_namelen: __kernel_long_t, ++pub f_frsize: __kernel_long_t, ++pub f_flags: __kernel_long_t, ++pub f_spare: [__kernel_long_t; 4usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct statfs64 { ++pub f_type: __kernel_long_t, ++pub f_bsize: __kernel_long_t, ++pub f_blocks: __u64, ++pub f_bfree: __u64, ++pub f_bavail: __u64, ++pub f_files: __u64, ++pub f_ffree: __u64, ++pub f_fsid: __kernel_fsid_t, ++pub f_namelen: __kernel_long_t, ++pub f_frsize: __kernel_long_t, ++pub f_flags: __kernel_long_t, ++pub f_spare: [__kernel_long_t; 4usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct compat_statfs64 { ++pub f_type: __u32, ++pub f_bsize: __u32, ++pub f_blocks: __u64, ++pub f_bfree: __u64, ++pub f_bavail: __u64, ++pub f_files: __u64, ++pub f_ffree: __u64, ++pub f_fsid: __kernel_fsid_t, ++pub f_namelen: __u32, ++pub f_frsize: __u32, ++pub f_flags: __u32, ++pub f_spare: [__u32; 4usize], ++} ++pub type __fsword_t = __kernel_long_t; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct user_desc { ++pub entry_number: crate::ctypes::c_uint, ++pub base_addr: crate::ctypes::c_uint, ++pub limit: crate::ctypes::c_uint, ++pub _bitfield_align_1: [u8; 0], ++pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, ++pub __bindgen_padding_0: [u8; 3usize], ++} ++impl user_desc { ++#[inline] ++pub fn seg_32bit(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(0usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn contents(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) } ++} ++#[inline] ++pub fn set_contents(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(1usize, 2u8, val as u64) ++} ++} ++#[inline] ++pub fn read_exec_only(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(3usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn limit_in_pages(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(4usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn seg_not_present(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(5usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn useable(&self) -> crate::ctypes::c_uint { ++unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) } ++} ++#[inline] ++pub fn set_useable(&mut self, val: crate::ctypes::c_uint) { ++unsafe { ++let val: u32 = ::core::mem::transmute(val); ++self._bitfield_1.set(6usize, 1u8, val as u64) ++} ++} ++#[inline] ++pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> { ++let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); ++__bindgen_bitfield_unit.set(0usize, 1u8, { ++let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) }; ++seg_32bit as u64 ++}); ++__bindgen_bitfield_unit.set(1usize, 2u8, { ++let contents: u32 = unsafe { ::core::mem::transmute(contents) }; ++contents as u64 ++}); ++__bindgen_bitfield_unit.set(3usize, 1u8, { ++let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) }; ++read_exec_only as u64 ++}); ++__bindgen_bitfield_unit.set(4usize, 1u8, { ++let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) }; ++limit_in_pages as u64 ++}); ++__bindgen_bitfield_unit.set(5usize, 1u8, { ++let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) }; ++seg_not_present as u64 ++}); ++__bindgen_bitfield_unit.set(6usize, 1u8, { ++let useable: u32 = unsafe { ::core::mem::transmute(useable) }; ++useable as u64 ++}); ++__bindgen_bitfield_unit ++} ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct msghdr { ++pub msg_name: *mut crate::ctypes::c_void, ++pub msg_namelen: crate::ctypes::c_int, ++pub msg_iov: *mut iovec, ++pub msg_iovlen: size_t, ++pub msg_control: *mut crate::ctypes::c_void, ++pub msg_controllen: size_t, ++pub msg_flags: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct cmsghdr { ++pub cmsg_len: size_t, ++pub cmsg_level: crate::ctypes::c_int, ++pub cmsg_type: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ucred { ++pub pid: __u32, ++pub uid: __u32, ++pub gid: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct mmsghdr { ++pub msg_hdr: msghdr, ++pub msg_len: crate::ctypes::c_uint, ++} +diff --git a/vendor/linux-raw-sys/src/loongarch64/ioctl.rs b/vendor/linux-raw-sys/src/loongarch64/ioctl.rs +new file mode 100644 +index 000000000..1b6c25e1f +--- /dev/null ++++ b/vendor/linux-raw-sys/src/loongarch64/ioctl.rs +@@ -0,0 +1,1465 @@ ++/* automatically generated by rust-bindgen 0.59.2 */ ++ ++pub const FIONREAD: u32 = 21531; ++pub const FIONBIO: u32 = 21537; ++pub const FIOCLEX: u32 = 21585; ++pub const FIONCLEX: u32 = 21584; ++pub const FIOASYNC: u32 = 21586; ++pub const FIOQSIZE: u32 = 21600; ++pub const TCXONC: u32 = 21514; ++pub const TCFLSH: u32 = 21515; ++pub const TIOCSCTTY: u32 = 21518; ++pub const TIOCSPGRP: u32 = 21520; ++pub const TIOCOUTQ: u32 = 21521; ++pub const TIOCSTI: u32 = 21522; ++pub const TIOCSWINSZ: u32 = 21524; ++pub const TIOCMGET: u32 = 21525; ++pub const TIOCMBIS: u32 = 21526; ++pub const TIOCMBIC: u32 = 21527; ++pub const TIOCMSET: u32 = 21528; ++pub const TIOCSSOFTCAR: u32 = 21530; ++pub const TIOCLINUX: u32 = 21532; ++pub const TIOCCONS: u32 = 21533; ++pub const TIOCSSERIAL: u32 = 21535; ++pub const TIOCPKT: u32 = 21536; ++pub const TIOCNOTTY: u32 = 21538; ++pub const TIOCSETD: u32 = 21539; ++pub const TIOCSBRK: u32 = 21543; ++pub const TIOCCBRK: u32 = 21544; ++pub const TIOCSRS485: u32 = 21551; ++pub const TIOCSPTLCK: u32 = 1074025521; ++pub const TIOCSIG: u32 = 1074025526; ++pub const TIOCVHANGUP: u32 = 21559; ++pub const TIOCSERCONFIG: u32 = 21587; ++pub const TIOCSERGWILD: u32 = 21588; ++pub const TIOCSERSWILD: u32 = 21589; ++pub const TIOCSLCKTRMIOS: u32 = 21591; ++pub const TIOCSERGSTRUCT: u32 = 21592; ++pub const TIOCSERGETLSR: u32 = 21593; ++pub const TIOCSERGETMULTI: u32 = 21594; ++pub const TIOCSERSETMULTI: u32 = 21595; ++pub const TIOCMIWAIT: u32 = 21596; ++pub const TCGETS: u32 = 21505; ++pub const TCGETA: u32 = 21509; ++pub const TCSBRK: u32 = 21513; ++pub const TCSBRKP: u32 = 21541; ++pub const TCSETA: u32 = 21510; ++pub const TCSETAF: u32 = 21512; ++pub const TCSETAW: u32 = 21511; ++pub const TIOCEXCL: u32 = 21516; ++pub const TIOCNXCL: u32 = 21517; ++pub const TIOCGDEV: u32 = 2147767346; ++pub const TIOCGEXCL: u32 = 2147767360; ++pub const TIOCGICOUNT: u32 = 21597; ++pub const TIOCGLCKTRMIOS: u32 = 21590; ++pub const TIOCGPGRP: u32 = 21519; ++pub const TIOCGPKT: u32 = 2147767352; ++pub const TIOCGPTLCK: u32 = 2147767353; ++pub const TIOCGPTN: u32 = 2147767344; ++pub const TIOCGPTPEER: u32 = 21569; ++pub const TIOCGRS485: u32 = 21550; ++pub const TIOCGSERIAL: u32 = 21534; ++pub const TIOCGSID: u32 = 21545; ++pub const TIOCGSOFTCAR: u32 = 21529; ++pub const TIOCGWINSZ: u32 = 21523; ++pub const TCGETS2: u32 = 2150388778; ++pub const TCGETX: u32 = 21554; ++pub const TCSETS: u32 = 21506; ++pub const TCSETS2: u32 = 1076646955; ++pub const TCSETSF: u32 = 21508; ++pub const TCSETSF2: u32 = 1076646957; ++pub const TCSETSW: u32 = 21507; ++pub const TCSETSW2: u32 = 1076646956; ++pub const TCSETX: u32 = 21555; ++pub const TCSETXF: u32 = 21556; ++pub const TCSETXW: u32 = 21557; ++pub const TIOCGETD: u32 = 21540; ++pub const MTIOCGET: u32 = 2150657282; ++pub const BLKSSZGET: u32 = 4712; ++pub const BLKPBSZGET: u32 = 4731; ++pub const BLKROSET: u32 = 4701; ++pub const BLKROGET: u32 = 4702; ++pub const BLKRRPART: u32 = 4703; ++pub const BLKGETSIZE: u32 = 4704; ++pub const BLKFLSBUF: u32 = 4705; ++pub const BLKRASET: u32 = 4706; ++pub const BLKRAGET: u32 = 4707; ++pub const BLKFRASET: u32 = 4708; ++pub const BLKFRAGET: u32 = 4709; ++pub const BLKSECTSET: u32 = 4710; ++pub const BLKSECTGET: u32 = 4711; ++pub const BLKPG: u32 = 4713; ++pub const BLKBSZGET: u32 = 2148012656; ++pub const BLKBSZSET: u32 = 1074270833; ++pub const BLKGETSIZE64: u32 = 2148012658; ++pub const BLKTRACESETUP: u32 = 3225948787; ++pub const BLKTRACESTART: u32 = 4724; ++pub const BLKTRACESTOP: u32 = 4725; ++pub const BLKTRACETEARDOWN: u32 = 4726; ++pub const BLKDISCARD: u32 = 4727; ++pub const BLKIOMIN: u32 = 4728; ++pub const BLKIOOPT: u32 = 4729; ++pub const BLKALIGNOFF: u32 = 4730; ++pub const BLKDISCARDZEROES: u32 = 4732; ++pub const BLKSECDISCARD: u32 = 4733; ++pub const BLKROTATIONAL: u32 = 4734; ++pub const BLKZEROOUT: u32 = 4735; ++pub const UFFDIO_REGISTER: u32 = 3223366144; ++pub const UFFDIO_UNREGISTER: u32 = 2148575745; ++pub const UFFDIO_WAKE: u32 = 2148575746; ++pub const UFFDIO_COPY: u32 = 3223890435; ++pub const UFFDIO_ZEROPAGE: u32 = 3223366148; ++pub const UFFDIO_WRITEPROTECT: u32 = 3222841862; ++pub const UFFDIO_API: u32 = 3222841919; ++pub const NS_GET_USERNS: u32 = 46849; ++pub const NS_GET_PARENT: u32 = 46850; ++pub const NS_GET_NSTYPE: u32 = 46851; ++pub const KDGETLED: u32 = 19249; ++pub const KDSETLED: u32 = 19250; ++pub const KDGKBLED: u32 = 19300; ++pub const KDSKBLED: u32 = 19301; ++pub const KDGKBTYPE: u32 = 19251; ++pub const KDADDIO: u32 = 19252; ++pub const KDDELIO: u32 = 19253; ++pub const KDENABIO: u32 = 19254; ++pub const KDDISABIO: u32 = 19255; ++pub const KDSETMODE: u32 = 19258; ++pub const KDGETMODE: u32 = 19259; ++pub const KDMKTONE: u32 = 19248; ++pub const KIOCSOUND: u32 = 19247; ++pub const GIO_CMAP: u32 = 19312; ++pub const PIO_CMAP: u32 = 19313; ++pub const GIO_FONT: u32 = 19296; ++pub const GIO_FONTX: u32 = 19307; ++pub const PIO_FONT: u32 = 19297; ++pub const PIO_FONTX: u32 = 19308; ++pub const PIO_FONTRESET: u32 = 19309; ++pub const GIO_SCRNMAP: u32 = 19264; ++pub const GIO_UNISCRNMAP: u32 = 19305; ++pub const PIO_SCRNMAP: u32 = 19265; ++pub const PIO_UNISCRNMAP: u32 = 19306; ++pub const GIO_UNIMAP: u32 = 19302; ++pub const PIO_UNIMAP: u32 = 19303; ++pub const PIO_UNIMAPCLR: u32 = 19304; ++pub const KDGKBMODE: u32 = 19268; ++pub const KDSKBMODE: u32 = 19269; ++pub const KDGKBMETA: u32 = 19298; ++pub const KDSKBMETA: u32 = 19299; ++pub const KDGKBENT: u32 = 19270; ++pub const KDSKBENT: u32 = 19271; ++pub const KDGKBSENT: u32 = 19272; ++pub const KDSKBSENT: u32 = 19273; ++pub const KDGKBDIACR: u32 = 19274; ++pub const KDGETKEYCODE: u32 = 19276; ++pub const KDSETKEYCODE: u32 = 19277; ++pub const KDSIGACCEPT: u32 = 19278; ++pub const VT_OPENQRY: u32 = 22016; ++pub const VT_GETMODE: u32 = 22017; ++pub const VT_SETMODE: u32 = 22018; ++pub const VT_GETSTATE: u32 = 22019; ++pub const VT_RELDISP: u32 = 22021; ++pub const VT_ACTIVATE: u32 = 22022; ++pub const VT_WAITACTIVE: u32 = 22023; ++pub const VT_DISALLOCATE: u32 = 22024; ++pub const VT_RESIZE: u32 = 22025; ++pub const VT_RESIZEX: u32 = 22026; ++pub const FIOSETOWN: u32 = 35073; ++pub const SIOCSPGRP: u32 = 35074; ++pub const FIOGETOWN: u32 = 35075; ++pub const SIOCGPGRP: u32 = 35076; ++pub const SIOCATMARK: u32 = 35077; ++pub const SIOCGSTAMP: u32 = 35078; ++pub const TIOCINQ: u32 = 21531; ++pub const SIOCADDRT: u32 = 35083; ++pub const SIOCDELRT: u32 = 35084; ++pub const SIOCGIFNAME: u32 = 35088; ++pub const SIOCSIFLINK: u32 = 35089; ++pub const SIOCGIFCONF: u32 = 35090; ++pub const SIOCGIFFLAGS: u32 = 35091; ++pub const SIOCSIFFLAGS: u32 = 35092; ++pub const SIOCGIFADDR: u32 = 35093; ++pub const SIOCSIFADDR: u32 = 35094; ++pub const SIOCGIFDSTADDR: u32 = 35095; ++pub const SIOCSIFDSTADDR: u32 = 35096; ++pub const SIOCGIFBRDADDR: u32 = 35097; ++pub const SIOCSIFBRDADDR: u32 = 35098; ++pub const SIOCGIFNETMASK: u32 = 35099; ++pub const SIOCSIFNETMASK: u32 = 35100; ++pub const SIOCGIFMETRIC: u32 = 35101; ++pub const SIOCSIFMETRIC: u32 = 35102; ++pub const SIOCGIFMEM: u32 = 35103; ++pub const SIOCSIFMEM: u32 = 35104; ++pub const SIOCGIFMTU: u32 = 35105; ++pub const SIOCSIFMTU: u32 = 35106; ++pub const SIOCSIFHWADDR: u32 = 35108; ++pub const SIOCGIFENCAP: u32 = 35109; ++pub const SIOCSIFENCAP: u32 = 35110; ++pub const SIOCGIFHWADDR: u32 = 35111; ++pub const SIOCGIFSLAVE: u32 = 35113; ++pub const SIOCSIFSLAVE: u32 = 35120; ++pub const SIOCADDMULTI: u32 = 35121; ++pub const SIOCDELMULTI: u32 = 35122; ++pub const SIOCDARP: u32 = 35155; ++pub const SIOCGARP: u32 = 35156; ++pub const SIOCSARP: u32 = 35157; ++pub const SIOCDRARP: u32 = 35168; ++pub const SIOCGRARP: u32 = 35169; ++pub const SIOCSRARP: u32 = 35170; ++pub const SIOCGIFMAP: u32 = 35184; ++pub const SIOCSIFMAP: u32 = 35185; ++pub const SIOCRTMSG: u32 = 35085; ++pub const SIOCSIFNAME: u32 = 35107; ++pub const SIOCGIFINDEX: u32 = 35123; ++pub const SIOGIFINDEX: u32 = 35123; ++pub const SIOCSIFPFLAGS: u32 = 35124; ++pub const SIOCGIFPFLAGS: u32 = 35125; ++pub const SIOCDIFADDR: u32 = 35126; ++pub const SIOCSIFHWBROADCAST: u32 = 35127; ++pub const SIOCGIFCOUNT: u32 = 35128; ++pub const SIOCGIFBR: u32 = 35136; ++pub const SIOCSIFBR: u32 = 35137; ++pub const SIOCGIFTXQLEN: u32 = 35138; ++pub const SIOCSIFTXQLEN: u32 = 35139; ++pub const SIOCADDDLCI: u32 = 35200; ++pub const SIOCDELDLCI: u32 = 35201; ++pub const SIOCDEVPRIVATE: u32 = 35312; ++pub const SIOCPROTOPRIVATE: u32 = 35296; ++pub const FIBMAP: u32 = 1; ++pub const FIGETBSZ: u32 = 2; ++pub const FIFREEZE: u32 = 3221510263; ++pub const FITHAW: u32 = 3221510264; ++pub const FITRIM: u32 = 3222820985; ++pub const FICLONE: u32 = 1074041865; ++pub const FICLONERANGE: u32 = 1075876877; ++pub const FIDEDUPERANGE: u32 = 3222836278; ++pub const FS_IOC_GETFLAGS: u32 = 2148034049; ++pub const FS_IOC_SETFLAGS: u32 = 1074292226; ++pub const FS_IOC_GETVERSION: u32 = 2148038145; ++pub const FS_IOC_SETVERSION: u32 = 1074296322; ++pub const FS_IOC_FIEMAP: u32 = 3223348747; ++pub const FS_IOC32_GETFLAGS: u32 = 2147771905; ++pub const FS_IOC32_SETFLAGS: u32 = 1074030082; ++pub const FS_IOC32_GETVERSION: u32 = 2147776001; ++pub const FS_IOC32_SETVERSION: u32 = 1074034178; ++pub const FS_IOC_FSGETXATTR: u32 = 2149341215; ++pub const FS_IOC_FSSETXATTR: u32 = 1075599392; ++pub const FS_IOC_GETFSLABEL: u32 = 2164298801; ++pub const FS_IOC_SETFSLABEL: u32 = 1090556978; ++pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015; ++pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085; ++pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867; ++pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527; ++pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400; ++pub const FSI_SCOM_WRITE: u32 = 3223352066; ++pub const ATM_GETCIRANGE: u32 = 1074815370; ++pub const DMA_BUF_SET_NAME_B: u32 = 1074291201; ++pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961; ++pub const TUNSETPERSIST: u32 = 1074025675; ++pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389; ++pub const CEC_RECEIVE: u32 = 3224920326; ++pub const MGSL_IOCGPARAMS: u32 = 2150657281; ++pub const ENI_SETMULT: u32 = 1074815335; ++pub const RIO_GET_EVENT_MASK: u32 = 2147773710; ++pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681; ++pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567; ++pub const CHIOMOVE: u32 = 1075077889; ++pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399; ++pub const BTRFS_IOC_SYNC: u32 = 37896; ++pub const VIDIOC_TRY_FMT: u32 = 3234879040; ++pub const LIRC_SET_REC_MODE: u32 = 1074030866; ++pub const VIDIOC_DQEVENT: u32 = 2156418649; ++pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338; ++pub const UVCIOC_CTRL_MAP: u32 = 3227546912; ++pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949; ++pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008; ++pub const UI_SET_KEYBIT: u32 = 1074025829; ++pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872; ++pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218; ++pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409; ++pub const VHOST_SET_VRING_BASE: u32 = 1074310930; ++pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025; ++pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713; ++pub const LIRC_GET_REC_MODE: u32 = 2147772674; ++pub const PPGETTIME: u32 = 2148561045; ++pub const BTRFS_IOC_RM_DEV: u32 = 1342215179; ++pub const ATM_SETBACKEND: u32 = 1073897970; ++pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851; ++pub const FBIO_WAITEVENT: u32 = 18056; ++pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245; ++pub const NVME_IOCTL_IO_CMD: u32 = 3225964099; ++pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091; ++pub const FDTWADDLE: u32 = 601; ++pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076907586; ++pub const NILFS_IOCTL_SYNC: u32 = 2148036234; ++pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327; ++pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616; ++pub const DM_DEV_STATUS: u32 = 3241737479; ++pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781; ++pub const NS_GETPSTAT: u32 = 3222298977; ++pub const UI_SET_PROPBIT: u32 = 1074025838; ++pub const TUNSETFILTEREBPF: u32 = 2147767521; ++pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874; ++pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081; ++pub const WDIOC_SETOPTIONS: u32 = 2147768068; ++pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040; ++pub const MGSL_IOCGTXIDLE: u32 = 27907; ++pub const ATM_ADDLECSADDR: u32 = 1074815374; ++pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719; ++pub const FDGETPRM: u32 = 2149581316; ++pub const HIDIOCAPPLICATION: u32 = 18434; ++pub const ENI_MEMDUMP: u32 = 1074815328; ++pub const PTP_SYS_OFFSET2: u32 = 1128283406; ++pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328; ++pub const DMA_BUF_SET_NAME_A: u32 = 1074029057; ++pub const PTP_PIN_GETFUNC: u32 = 3227532550; ++pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873; ++pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776; ++pub const RTC_EPOCH_READ: u32 = 2148036621; ++pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854; ++pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943; ++pub const ATM_GETLECSADDR: u32 = 1074815376; ++pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564; ++pub const SONET_GETDIAG: u32 = 2147770644; ++pub const ATMMPC_DATA: u32 = 25049; ++pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989; ++pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136; ++pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601; ++pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864; ++pub const UI_DEV_SETUP: u32 = 1079792899; ++pub const ISST_IF_IO_CMD: u32 = 1074331138; ++pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423; ++pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412; ++pub const BLKGETNRZONES: u32 = 2147750533; ++pub const VIDIOC_G_MODULATOR: u32 = 3225703990; ++pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515; ++pub const USBDEVFS_SETINTERFACE: u32 = 2148029700; ++pub const PPPIOCGCHAN: u32 = 2147775543; ++pub const EVIOCGVERSION: u32 = 2147763457; ++pub const VHOST_NET_SET_BACKEND: u32 = 1074310960; ++pub const USBDEVFS_REAPURBNDELAY: u32 = 1074287885; ++pub const RNDZAPENTCNT: u32 = 20996; ++pub const VIDIOC_G_PARM: u32 = 3234616853; ++pub const TUNGETDEVNETNS: u32 = 21731; ++pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877; ++pub const VHOST_SET_VRING_ERR: u32 = 1074310946; ++pub const VDUSE_VQ_SETUP: u32 = 1075872020; ++pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492; ++pub const VIDIOC_S_FREQUENCY: u32 = 1076647481; ++pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428; ++pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912; ++pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073; ++pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758; ++pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191; ++pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865; ++pub const STP_SET_OPTIONS: u32 = 1074275586; ++pub const FBIO_RADEON_GET_MIRROR: u32 = 2148024323; ++pub const IVTVFB_IOC_DMA_FRAME: u32 = 1075336896; ++pub const IPMICTL_SEND_COMMAND: u32 = 2150131981; ++pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332; ++pub const DFL_FPGA_FME_PORT_PR: u32 = 46720; ++pub const CHIOSVOLTAG: u32 = 1076912914; ++pub const ATM_SETESIF: u32 = 1074815373; ++pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075323652; ++pub const PMU_IOC_GET_MODEL: u32 = 2148024835; ++pub const JSIOCGBTNMAP: u32 = 2214619700; ++pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035; ++pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363; ++pub const FDCLRPRM: u32 = 577; ++pub const BTRFS_IOC_SCRUB: u32 = 3288372251; ++pub const USBDEVFS_DISCONNECT: u32 = 21782; ++pub const TUNSETVNETBE: u32 = 1074025694; ++pub const ATMTCP_REMOVE: u32 = 24975; ++pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851; ++pub const PPPIOCGNPMODE: u32 = 3221779532; ++pub const FDGETDRVPRM: u32 = 2155872785; ++pub const TUNSETVNETLE: u32 = 1074025692; ++pub const PHN_SETREG: u32 = 1074294790; ++pub const PPPIOCDETACH: u32 = 1074033724; ++pub const MMTIMER_GETRES: u32 = 2148035841; ++pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105; ++pub const PPGETFLAGS: u32 = 2147774618; ++pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977; ++pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232; ++pub const VIDIOC_G_TUNER: u32 = 3226752541; ++pub const DM_TABLE_STATUS: u32 = 3241737484; ++pub const DM_DEV_ARM_POLL: u32 = 3241737488; ++pub const NE_CREATE_VM: u32 = 2148052512; ++pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658; ++pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735; ++pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659; ++pub const MGSL_IOCGXCTRL: u32 = 27926; ++pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076372225; ++pub const SONYPI_IOCGBLUE: u32 = 2147579400; ++pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743; ++pub const I2OHTML: u32 = 3224398089; ++pub const VFIO_GET_API_VERSION: u32 = 15204; ++pub const IDT77105_GETSTATZ: u32 = 1074815283; ++pub const I2OPARMSET: u32 = 3223873795; ++pub const TEE_IOC_CANCEL: u32 = 2148049924; ++pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409; ++pub const DFL_FPGA_PORT_RESET: u32 = 46656; ++pub const PPPIOCGASYNCMAP: u32 = 2147775576; ++pub const EVIOCGKEYCODE_V2: u32 = 2150122756; ++pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487; ++pub const HIDIOCSUSAGE: u32 = 1075333132; ++pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664; ++pub const PTP_EXTTS_REQUEST: u32 = 1074806018; ++pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251; ++pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896; ++pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041; ++pub const JSIOCGAXES: u32 = 2147576337; ++pub const HIDIOCSFLAG: u32 = 1074022415; ++pub const PTP_PEROUT_REQUEST2: u32 = 1077427468; ++pub const PPWDATA: u32 = 1073836166; ++pub const PTP_CLOCK_GETCAPS: u32 = 2152742145; ++pub const FDGETMAXERRS: u32 = 2148794894; ++pub const TUNSETQUEUE: u32 = 1074025689; ++pub const PTP_ENABLE_PPS: u32 = 1074019588; ++pub const SIOCSIFATMTCP: u32 = 24960; ++pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795; ++pub const ND_IOCTL_ARS_CAP: u32 = 3223342593; ++pub const NBD_SET_BLKSIZE: u32 = 43777; ++pub const NBD_SET_TIMEOUT: u32 = 43785; ++pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834; ++pub const RIO_UNMAP_INBOUND: u32 = 1074294034; ++pub const ATM_QUERYLOOP: u32 = 1074815316; ++pub const DFL_FPGA_GET_API_VERSION: u32 = 46592; ++pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795; ++pub const FBIO_CURSOR: u32 = 3228059144; ++pub const RNDCLEARPOOL: u32 = 20998; ++pub const VIDIOC_QUERYSTD: u32 = 2148030015; ++pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200; ++pub const SCIF_RECV: u32 = 3222827783; ++pub const PTP_PIN_GETFUNC2: u32 = 3227532559; ++pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586; ++pub const CEC_ADAP_G_CAPS: u32 = 3226231040; ++pub const VIDIOC_G_FBUF: u32 = 2150651402; ++pub const PTP_ENABLE_PPS2: u32 = 1074019597; ++pub const PCITEST_CLEAR_IRQ: u32 = 20496; ++pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688; ++pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031; ++pub const JSIOCGAXMAP: u32 = 2151705138; ++pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148541196; ++pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074799383; ++pub const RTC_WIE_OFF: u32 = 28688; ++pub const PPGETMODE: u32 = 2147774616; ++pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584; ++pub const PTP_SYS_OFFSET: u32 = 1128283397; ++pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956; ++pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866; ++pub const ND_IOCTL_VENDOR: u32 = 3221769737; ++pub const SCIF_VREADFROM: u32 = 3223876364; ++pub const BTRFS_IOC_TRANS_START: u32 = 37894; ++pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656; ++pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006; ++pub const TUNDETACHFILTER: u32 = 1074812118; ++pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596; ++pub const IOC_PR_CLEAR: u32 = 1074819277; ++pub const SCIF_READFROM: u32 = 3223876362; ++pub const PPPIOCGDEBUG: u32 = 2147775553; ++pub const BLKGETZONESZ: u32 = 2147750532; ++pub const HIDIOCGUSAGES: u32 = 3491514387; ++pub const SONYPI_IOCGTEMP: u32 = 2147579404; ++pub const UI_SET_MSCBIT: u32 = 1074025832; ++pub const APM_IOC_SUSPEND: u32 = 16642; ++pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833; ++pub const RTC_PLL_GET: u32 = 2149609489; ++pub const RIO_CM_EP_GET_LIST: u32 = 3221512962; ++pub const USBDEVFS_DISCSIGNAL: u32 = 2148553998; ++pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680; ++pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674; ++pub const DM_TARGET_MSG: u32 = 3241737486; ++pub const SONYPI_IOCGBAT1REM: u32 = 2147644931; ++pub const EVIOCSFF: u32 = 1076905344; ++pub const TUNSETGROUP: u32 = 1074025678; ++pub const EVIOCGKEYCODE: u32 = 2148025604; ++pub const KCOV_REMOTE_ENABLE: u32 = 1075340134; ++pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876; ++pub const FDEJECT: u32 = 602; ++pub const TUNSETOFFLOAD: u32 = 1074025680; ++pub const PPPIOCCONNECT: u32 = 1074033722; ++pub const ATM_ADDADDR: u32 = 1074815368; ++pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043; ++pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093; ++pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097; ++pub const CCISS_PASSTHRU: u32 = 3227009547; ++pub const MGSL_IOCCLRMODCOUNT: u32 = 27919; ++pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215; ++pub const ATMARPD_CTRL: u32 = 25057; ++pub const UI_ABS_SETUP: u32 = 1075598596; ++pub const UI_DEV_DESTROY: u32 = 21762; ++pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976; ++pub const RTC_AIE_ON: u32 = 28673; ++pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029; ++pub const PPPIOCSDEBUG: u32 = 1074033728; ++pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143; ++pub const PPPIOCSMRU: u32 = 1074033746; ++pub const CCISS_DEREGDISK: u32 = 16908; ++pub const UI_DEV_CREATE: u32 = 21761; ++pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416; ++pub const BTRFS_IOC_START_SYNC: u32 = 2148045848; ++pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401; ++pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011; ++pub const DM_TABLE_CLEAR: u32 = 3241737482; ++pub const CCISS_GETINTINFO: u32 = 2148024834; ++pub const PPPIOCSASYNCMAP: u32 = 1074033751; ++pub const I2OEVTGET: u32 = 2154326283; ++pub const NVME_IOCTL_RESET: u32 = 20036; ++pub const PPYIELD: u32 = 28813; ++pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392; ++pub const TUNSETCARRIER: u32 = 1074025698; ++pub const DM_DEV_WAIT: u32 = 3241737480; ++pub const RTC_WIE_ON: u32 = 28687; ++pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432; ++pub const RIO_CM_CHAN_CREATE: u32 = 3221381891; ++pub const MGSL_IOCSPARAMS: u32 = 1076915456; ++pub const RTC_SET_TIME: u32 = 1076129802; ++pub const VHOST_RESET_OWNER: u32 = 44802; ++pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232; ++pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084; ++pub const UDF_GETEABLOCK: u32 = 2148035649; ++pub const VFIO_IOMMU_MAP_DMA: u32 = 15217; ++pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082; ++pub const HIDIOCGFLAG: u32 = 2147764238; ++pub const HIDIOCGUCODE: u32 = 3222816781; ++pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421; ++pub const DM_REMOVE_ALL: u32 = 3241737473; ++pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969; ++pub const CCISS_GETFIRMVER: u32 = 2147762696; ++pub const ND_IOCTL_ARS_START: u32 = 3223342594; ++pub const PPPIOCSMRRU: u32 = 1074033723; ++pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620; ++pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642; ++pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768; ++pub const PPSETTIME: u32 = 1074819222; ++pub const RTC_ALM_READ: u32 = 2149871624; ++pub const VDUSE_SET_API_VERSION: u32 = 1074299137; ++pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600; ++pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564; ++pub const USBDEVFS_CONNECT: u32 = 21783; ++pub const SYNC_IOC_FILE_INFO: u32 = 3224911364; ++pub const ATMARP_MKIP: u32 = 25058; ++pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216; ++pub const CCISS_GETHEARTBEAT: u32 = 2147762694; ++pub const ATM_RSTADDR: u32 = 1074815367; ++pub const NBD_SET_SIZE: u32 = 43778; ++pub const UDF_GETVOLIDENT: u32 = 2148035650; ++pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142; ++pub const MGSL_IOCSTXIDLE: u32 = 27906; ++pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720; ++pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564; ++pub const PPRSTATUS: u32 = 2147577985; ++pub const MGSL_IOCTXENABLE: u32 = 27908; ++pub const UDF_GETEASIZE: u32 = 2147773504; ++pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391; ++pub const VHOST_SET_OWNER: u32 = 44801; ++pub const RIO_ALLOC_DMA: u32 = 3222826259; ++pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111; ++pub const I2OHRTGET: u32 = 3222825217; ++pub const ATM_SETCIRANGE: u32 = 1074815371; ++pub const HPET_IE_ON: u32 = 26625; ++pub const PERF_EVENT_IOC_ID: u32 = 2148017159; ++pub const TUNSETSNDBUF: u32 = 1074025684; ++pub const PTP_PIN_SETFUNC: u32 = 1080048903; ++pub const PPPIOCDISCONN: u32 = 29753; ++pub const VIDIOC_QUERYCTRL: u32 = 3225703972; ++pub const PPEXCL: u32 = 28815; ++pub const PCITEST_MSI: u32 = 1074024451; ++pub const FDWERRORCLR: u32 = 598; ++pub const AUTOFS_IOC_FAIL: u32 = 37729; ++pub const USBDEVFS_IOCTL: u32 = 3222295826; ++pub const VIDIOC_S_STD: u32 = 1074288152; ++pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848; ++pub const SONET_SETDIAG: u32 = 3221512466; ++pub const BTRFS_IOC_DEFRAG: u32 = 1342215170; ++pub const CCISS_GETDRIVVER: u32 = 2147762697; ++pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839; ++pub const HPET_IRQFREQ: u32 = 1074292742; ++pub const ATM_GETESI: u32 = 1074815365; ++pub const CCISS_GETLUNINFO: u32 = 2148286993; ++pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094; ++pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033; ++pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192; ++pub const UDMABUF_CREATE_LIST: u32 = 1074296131; ++pub const VHOST_SET_LOG_BASE: u32 = 1074310916; ++pub const ZATM_GETPOOL: u32 = 1074815329; ++pub const BR2684_SETFILT: u32 = 1075601808; ++pub const RNDGETPOOL: u32 = 2148028930; ++pub const PPS_GETPARAMS: u32 = 2148036769; ++pub const IOC_PR_RESERVE: u32 = 1074819273; ++pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177; ++pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244; ++pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772; ++pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628; ++pub const PMU_IOC_GET_BACKLIGHT: u32 = 2148024833; ++pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578; ++pub const SCIF_WRITETO: u32 = 3223876363; ++pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475; ++pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561; ++pub const CCISS_REGNEWD: u32 = 16910; ++pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169; ++pub const VIDIOC_CREATE_BUFS: u32 = 3238024796; ++pub const CAPI_GET_VERSION: u32 = 3222291207; ++pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228770626; ++pub const VFIO_EEH_PE_OP: u32 = 15225; ++pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592; ++pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674; ++pub const NBD_SET_SIZE_BLOCKS: u32 = 43783; ++pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312; ++pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873; ++pub const VIDIOC_S_AUDOUT: u32 = 1077171762; ++pub const VIDIOC_S_FMT: u32 = 3234878981; ++pub const PPPIOCATTACH: u32 = 1074033725; ++pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948; ++pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862; ++pub const CCISS_BIG_PASSTHRU: u32 = 3227533842; ++pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691; ++pub const PCITEST_LEGACY_IRQ: u32 = 20482; ++pub const USBDEVFS_SUBMITURB: u32 = 2151175434; ++pub const AUTOFS_IOC_READY: u32 = 37728; ++pub const BTRFS_IOC_SEND: u32 = 1078498342; ++pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711; ++pub const JSIOCSBTNMAP: u32 = 1140877875; ++pub const PPPIOCSFLAGS: u32 = 1074033753; ++pub const NVRAM_INIT: u32 = 28736; ++pub const RFKILL_IOCTL_NOINPUT: u32 = 20993; ++pub const BTRFS_IOC_BALANCE: u32 = 1342215180; ++pub const FS_IOC_GETFSMAP: u32 = 3233830971; ++pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699; ++pub const STP_POLICY_ID_GET: u32 = 2148541697; ++pub const PPSETFLAGS: u32 = 1074032795; ++pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730; ++pub const ATMTCP_CREATE: u32 = 24974; ++pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314; ++pub const PPPIOCGXASYNCMAP: u32 = 2149610576; ++pub const VHOST_SET_VRING_CALL: u32 = 1074310945; ++pub const LIRC_GET_FEATURES: u32 = 2147772672; ++pub const GSMIOC_DISABLE_NET: u32 = 18179; ++pub const AUTOFS_IOC_CATATONIC: u32 = 37730; ++pub const NBD_DO_IT: u32 = 43779; ++pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879; ++pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697; ++pub const EVIOCSCLOCKID: u32 = 1074021792; ++pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725; ++pub const FSI_SCOM_RESET: u32 = 1074033411; ++pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2148024838; ++pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661; ++pub const FDDEFPRM: u32 = 1075839555; ++pub const TEE_IOC_INVOKE: u32 = 2148574211; ++pub const USBDEVFS_BULK: u32 = 3222820098; ++pub const SCIF_VWRITETO: u32 = 3223876365; ++pub const SONYPI_IOCSBRT: u32 = 1073837568; ++pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278; ++pub const RTC_PIE_ON: u32 = 28677; ++pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172; ++pub const PPPIOCXFERUNIT: u32 = 29774; ++pub const WDIOC_GETTIMEOUT: u32 = 2147768071; ++pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597; ++pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774; ++pub const FBIO_WAITFORVSYNC: u32 = 1074021920; ++pub const RTC_PIE_OFF: u32 = 28678; ++pub const EVIOCGRAB: u32 = 1074021776; ++pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074283010; ++pub const EVIOCGREP: u32 = 2148025603; ++pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074275339; ++pub const UFFDIO_CONTINUE: u32 = 3223366151; ++pub const VDUSE_GET_API_VERSION: u32 = 2148040960; ++pub const RTC_RD_TIME: u32 = 2149871625; ++pub const FDMSGOFF: u32 = 582; ++pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988; ++pub const CAPI_GET_ERRCODE: u32 = 2147631905; ++pub const PCITEST_SET_IRQTYPE: u32 = 1074024456; ++pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969; ++pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074294522; ++pub const RIO_DEV_ADD: u32 = 1075866903; ++pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893; ++pub const FBIO_RADEON_SET_MIRROR: u32 = 1074282500; ++pub const PCITEST_GET_IRQTYPE: u32 = 20489; ++pub const JSIOCGVERSION: u32 = 2147772929; ++pub const SONYPI_IOCSBLUE: u32 = 1073837577; ++pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074; ++pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524; ++pub const SCIF_REG: u32 = 3223876360; ++pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440; ++pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933; ++pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038; ++pub const VHOST_SET_VRING_NUM: u32 = 1074310928; ++pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082; ++pub const RIO_FREE_DMA: u32 = 1074294036; ++pub const MGSL_IOCRXENABLE: u32 = 27909; ++pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977; ++pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838; ++pub const PPPIOCGL2TPSTATS: u32 = 2152231990; ++pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332; ++pub const PTP_PIN_SETFUNC2: u32 = 1080048912; ++pub const CHIOEXCHANGE: u32 = 1075602178; ++pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804; ++pub const CEC_DQEVENT: u32 = 3226493191; ++pub const UI_SET_SWBIT: u32 = 1074025837; ++pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028; ++pub const TUNSETIFF: u32 = 1074025674; ++pub const CHIOPOSITION: u32 = 1074553603; ++pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879; ++pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019; ++pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184; ++pub const CAPI_CLR_FLAGS: u32 = 2147762981; ++pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663; ++pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2148036344; ++pub const EVIOCSMASK: u32 = 1074808211; ++pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173; ++pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673; ++pub const CEC_S_MODE: u32 = 1074028809; ++pub const MGSL_IOCSIF: u32 = 27914; ++pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244; ++pub const PPSETMODE: u32 = 1074032768; ++pub const VFIO_DEVICE_SET_IRQS: u32 = 15214; ++pub const VIDIOC_PREPARE_BUF: u32 = 3227014749; ++pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938; ++pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098; ++pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867; ++pub const UDMABUF_CREATE: u32 = 1075344706; ++pub const SONET_CLRDIAG: u32 = 3221512467; ++pub const PHN_SET_REG: u32 = 1074294785; ++pub const RNDADDTOENTCNT: u32 = 1074024961; ++pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657; ++pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126; ++pub const PPS_FETCH: u32 = 3221778596; ++pub const RTC_AIE_OFF: u32 = 28674; ++pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208; ++pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094; ++pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224; ++pub const VFIO_IOMMU_GET_INFO: u32 = 15216; ++pub const DM_DEV_SUSPEND: u32 = 3241737478; ++pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461; ++pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939; ++pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773; ++pub const ATMMPC_CTRL: u32 = 25048; ++pub const PPPIOCSXASYNCMAP: u32 = 1075868751; ++pub const CHIOGSTATUS: u32 = 1074815752; ++pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309; ++pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699; ++pub const CAPI_SET_FLAGS: u32 = 2147762980; ++pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210; ++pub const VHOST_SET_MEM_TABLE: u32 = 1074310915; ++pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074294520; ++pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658; ++pub const VHOST_GET_FEATURES: u32 = 2148052736; ++pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679; ++pub const PACKET_CTRL_CMD: u32 = 3222820865; ++pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871; ++pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178; ++pub const JSIOCGCORR: u32 = 2149870114; ++pub const VIDIOC_G_FMT: u32 = 3234878980; ++pub const RTC_EPOCH_SET: u32 = 1074294798; ++pub const CAPI_GET_PROFILE: u32 = 3225436937; ++pub const ATM_GETLOOP: u32 = 1074815314; ++pub const SCIF_LISTEN: u32 = 1074033410; ++pub const NBD_CLEAR_QUE: u32 = 43781; ++pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353; ++pub const LIRC_GET_LENGTH: u32 = 2147772687; ++pub const I8K_SET_FAN: u32 = 3221776775; ++pub const FDSETMAXERRS: u32 = 1075053132; ++pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968; ++pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325; ++pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708; ++pub const EVIOCRMFF: u32 = 1074021761; ++pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284; ++pub const PPRDATA: u32 = 2147577989; ++pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284; ++pub const TUNSETVNETHDRSZ: u32 = 1074025688; ++pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146; ++pub const GSMIOC_GETCONF: u32 = 2152482560; ++pub const LIRC_GET_SEND_MODE: u32 = 2147772673; ++pub const PPPIOCSACTIVE: u32 = 1074820166; ++pub const SIOCGSTAMPNS_NEW: u32 = 2148567303; ++pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092; ++pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869; ++pub const UI_END_FF_ERASE: u32 = 1074550219; ++pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385; ++pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317; ++pub const NBD_SET_FLAGS: u32 = 43786; ++pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212; ++pub const REISERFS_IOC_UNPACK: u32 = 1074318593; ++pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935; ++pub const RIO_SET_EVENT_MASK: u32 = 1074031885; ++pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012; ++pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015; ++pub const I2OPASSTHRU: u32 = 2148559116; ++pub const IOC_OPAL_SET_PW: u32 = 1109422304; ++pub const FSI_SCOM_READ: u32 = 3223352065; ++pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704; ++pub const VIDIOC_QBUF: u32 = 3227014671; ++pub const VIDIOC_S_TUNER: u32 = 1079268894; ++pub const TUNGETVNETHDRSZ: u32 = 2147767511; ++pub const CAPI_NCCI_GETUNIT: u32 = 2147762983; ++pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455; ++pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975; ++pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357; ++pub const TEE_IOC_VERSION: u32 = 2148312064; ++pub const VIDIOC_LOG_STATUS: u32 = 22086; ++pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2150656277; ++pub const VHOST_SET_LOG_FD: u32 = 1074048775; ++pub const SCIF_SEND: u32 = 3222827782; ++pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660; ++pub const NS_ADJBUFLEV: u32 = 24931; ++pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935; ++pub const NILFS_IOCTL_RESIZE: u32 = 1074294411; ++pub const PHN_GETREG: u32 = 3221778437; ++pub const I2OSWDL: u32 = 3224398085; ++pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019; ++pub const JSIOCGBUTTONS: u32 = 2147576338; ++pub const VFIO_IOMMU_ENABLE: u32 = 15219; ++pub const DM_DEV_RENAME: u32 = 3241737477; ++pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091; ++pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128; ++pub const STP_POLICY_ID_SET: u32 = 3222283520; ++pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887; ++pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563; ++pub const VIDIOC_S_CROP: u32 = 1075074620; ++pub const WDIOC_GETTEMP: u32 = 2147768067; ++pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804; ++pub const UI_SET_LEDBIT: u32 = 1074025833; ++pub const NBD_SET_SOCK: u32 = 43776; ++pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231; ++pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497; ++pub const I2OSWUL: u32 = 3224398086; ++pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227; ++pub const FDFMTTRK: u32 = 1074528840; ++pub const MMTIMER_GETBITS: u32 = 27908; ++pub const VIDIOC_ENUMSTD: u32 = 3225966105; ++pub const VHOST_GET_VRING_BASE: u32 = 3221794578; ++pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220; ++pub const ATMARP_SETENTRY: u32 = 25059; ++pub const CCISS_REVALIDVOLS: u32 = 16906; ++pub const MGSL_IOCLOOPTXDONE: u32 = 27913; ++pub const RTC_VL_READ: u32 = 2147774483; ++pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171; ++pub const RIO_DEV_DEL: u32 = 1075866904; ++pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797; ++pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772; ++pub const SONYPI_IOCSFAN: u32 = 1073837579; ++pub const SPIOCSTYPE: u32 = 1074295041; ++pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614; ++pub const I8K_GET_FAN: u32 = 3221776774; ++pub const TUNGETVNETBE: u32 = 2147767519; ++pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087; ++pub const UI_END_FF_UPLOAD: u32 = 1080579529; ++pub const TOSH_SMM: u32 = 3222828176; ++pub const SONYPI_IOCGBAT2REM: u32 = 2147644933; ++pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673; ++pub const PPPIOCSNPMODE: u32 = 1074295883; ++pub const USBDEVFS_CONTROL: u32 = 3222820096; ++pub const HIDIOCGUSAGE: u32 = 3222816779; ++pub const TUNSETTXFILTER: u32 = 1074025681; ++pub const TUNGETVNETLE: u32 = 2147767517; ++pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914; ++pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411; ++pub const MGSL_IOCGXSYNC: u32 = 27924; ++pub const HIDIOCGFIELDINFO: u32 = 3224913930; ++pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975; ++pub const I2OVALIDATE: u32 = 2147772680; ++pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006; ++pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802; ++pub const VIDIOC_G_FREQUENCY: u32 = 3224131128; ++pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2184212994; ++pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877; ++pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675; ++pub const FDGETDRVSTAT: u32 = 2152727058; ++pub const SYNC_IOC_MERGE: u32 = 3224387075; ++pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327; ++pub const PPPIOCBRIDGECHAN: u32 = 1074033717; ++pub const LIRC_SET_SEND_MODE: u32 = 1074030865; ++pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315; ++pub const ATM_GETTYPE: u32 = 1074815364; ++pub const PHN_GETREGS: u32 = 3223875591; ++pub const FDSETEMSGTRESH: u32 = 586; ++pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630; ++pub const MGSL_IOCWAITEVENT: u32 = 3221515528; ++pub const CAPI_INSTALLED: u32 = 2147631906; ++pub const EVIOCGMASK: u32 = 2148550034; ++pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849; ++pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706; ++pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433; ++pub const GSMIOC_GETFIRST: u32 = 2147763972; ++pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952; ++pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790; ++pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724; ++pub const CAPI_GET_SERIAL: u32 = 3221504776; ++pub const FDSETDRVPRM: u32 = 1082131088; ++pub const IOC_OPAL_SAVE: u32 = 1092120796; ++pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328; ++pub const TUNSETIFINDEX: u32 = 1074025690; ++pub const CCISS_SETINTINFO: u32 = 1074283011; ++pub const CM_IOSDBGLVL: u32 = 1074291706; ++pub const RTC_VL_CLR: u32 = 28692; ++pub const VIDIOC_REQBUFS: u32 = 3222558216; ++pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741; ++pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329; ++pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557; ++pub const CCISS_GETNODENAME: u32 = 2148549124; ++pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238; ++pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146; ++pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217; ++pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076372242; ++pub const LPSETTIMEOUT_NEW: u32 = 1074791951; ++pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971; ++pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305; ++pub const FDRAWCMD: u32 = 600; ++pub const SCIF_UNREG: u32 = 3222303497; ++pub const PPPIOCGIDLE64: u32 = 2148561983; ++pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568; ++pub const VIDIOC_CROPCAP: u32 = 3224131130; ++pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657; ++pub const PHN_SET_REGS: u32 = 1074294787; ++pub const ATMLEC_DATA: u32 = 25041; ++pub const PPPOEIOCDFWD: u32 = 45313; ++pub const VIDIOC_S_SELECTION: u32 = 3225441887; ++pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065; ++pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412; ++pub const VIDIOC_S_CTRL: u32 = 3221771804; ++pub const ZATM_SETPOOL: u32 = 1074815331; ++pub const MTIOCPOS: u32 = 2148035843; ++pub const PMU_IOC_SLEEP: u32 = 16896; ++pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083; ++pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652; ++pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669; ++pub const VIDIOC_QUERYCAP: u32 = 2154321408; ++pub const HPET_INFO: u32 = 2149083139; ++pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074288321; ++pub const DM_LIST_DEVICES: u32 = 3241737474; ++pub const TUNSETOWNER: u32 = 1074025676; ++pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654; ++pub const RNDADDENTROPY: u32 = 1074287107; ++pub const USBDEVFS_RESET: u32 = 21780; ++pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182; ++pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793; ++pub const FDGETDRVTYP: u32 = 2148532751; ++pub const PPWCONTROL: u32 = 1073836164; ++pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435; ++pub const KCOV_DISABLE: u32 = 25445; ++pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799; ++pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144; ++pub const PPPIOCSPASS: u32 = 1074820167; ++pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464; ++pub const I2OSWDEL: u32 = 3224398087; ++pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211; ++pub const IOC_OPAL_MBR_DONE: u32 = 1091596521; ++pub const PPPIOCSMAXCID: u32 = 1074033745; ++pub const PPSETPHASE: u32 = 1074032788; ++pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029; ++pub const USBDEVFS_GET_SPEED: u32 = 21791; ++pub const SONET_GETFRAMING: u32 = 2147770646; ++pub const VIDIOC_QUERYBUF: u32 = 3227014665; ++pub const VIDIOC_S_EDID: u32 = 3223868969; ++pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617; ++pub const PPS_GETCAP: u32 = 2148036771; ++pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071; ++pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873; ++pub const SCIF_GET_NODEIDS: u32 = 3222827790; ++pub const NBD_DISCONNECT: u32 = 43784; ++pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237; ++pub const VFIO_IOMMU_DISABLE: u32 = 15220; ++pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041; ++pub const SNAPSHOT_POWER_OFF: u32 = 13072; ++pub const APM_IOC_STANDBY: u32 = 16641; ++pub const PPPIOCGUNIT: u32 = 2147775574; ++pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702; ++pub const SCIF_BIND: u32 = 3221779201; ++pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368; ++pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688; ++pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797; ++pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701; ++pub const PPPIOCGRASYNCMAP: u32 = 2147775573; ++pub const MMTIMER_MMAPAVAIL: u32 = 27910; ++pub const I2OPASSTHRU32: u32 = 2148034828; ++pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689; ++pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515; ++pub const UI_SET_SNDBIT: u32 = 1074025834; ++pub const VIDIOC_G_AUDOUT: u32 = 2150913585; ++pub const RTC_PLL_SET: u32 = 1075867666; ++pub const VIDIOC_ENUMAUDIO: u32 = 3224655425; ++pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090; ++pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072; ++pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836; ++pub const VHOST_SET_VRING_ADDR: u32 = 1076408081; ++pub const VDUSE_CREATE_DEV: u32 = 1095794946; ++pub const FDFLUSH: u32 = 587; ++pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650; ++pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836; ++pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526; ++pub const SCIF_CONNECT: u32 = 3221779203; ++pub const BLKREPORTZONE: u32 = 3222278786; ++pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536; ++pub const ATM_ADDPARTY: u32 = 1074815476; ++pub const FDSETPRM: u32 = 1075839554; ++pub const ATM_GETSTATZ: u32 = 1074815313; ++pub const ISST_IF_MSR_COMMAND: u32 = 3221814788; ++pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2180551740; ++pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083; ++pub const SEV_ISSUE_CMD: u32 = 3222295296; ++pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865; ++pub const PCITEST_COPY: u32 = 1074286598; ++pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690; ++pub const CHIOGPICKER: u32 = 2147771140; ++pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982; ++pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938; ++pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074275334; ++pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226; ++pub const CHIOGVPARAMS: u32 = 2154849043; ++pub const PTP_PEROUT_REQUEST: u32 = 1077427459; ++pub const FSI_SCOM_CHECK: u32 = 2147775232; ++pub const RTC_IRQP_READ: u32 = 2148036619; ++pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421; ++pub const HIDIOCGRDESCSIZE: u32 = 2147764225; ++pub const UI_GET_VERSION: u32 = 2147767597; ++pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803; ++pub const CCISS_GETBUSTYPES: u32 = 2147762695; ++pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223; ++pub const VIDIOC_EXPBUF: u32 = 3225441808; ++pub const UI_SET_RELBIT: u32 = 1074025830; ++pub const VFIO_SET_IOMMU: u32 = 15206; ++pub const VIDIOC_S_MODULATOR: u32 = 1078220343; ++pub const TUNGETFILTER: u32 = 2148553947; ++pub const MEYEIOC_SYNC: u32 = 3221518019; ++pub const CCISS_SETNODENAME: u32 = 1074807301; ++pub const FBIO_GETCONTROL2: u32 = 2148025993; ++pub const TUNSETDEBUG: u32 = 1074025673; ++pub const DM_DEV_REMOVE: u32 = 3241737476; ++pub const HIDIOCSUSAGES: u32 = 1344030740; ++pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487; ++pub const FBIOGET_VBLANK: u32 = 2149598738; ++pub const ATM_GETSTAT: u32 = 1074815312; ++pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765; ++pub const TUNATTACHFILTER: u32 = 1074812117; ++pub const UI_SET_ABSBIT: u32 = 1074025831; ++pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453; ++pub const USBDEVFS_REAPURB32: u32 = 1074025740; ++pub const BTRFS_IOC_TRANS_END: u32 = 37895; ++pub const CAPI_REGISTER: u32 = 1074545409; ++pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744; ++pub const USBDEVFS_DISCARDURB: u32 = 21771; ++pub const HE_GET_REG: u32 = 1074815328; ++pub const ATM_SETLOOP: u32 = 1074815315; ++pub const ATMSIGD_CTRL: u32 = 25072; ++pub const CIOC_KERNEL_VERSION: u32 = 3221775114; ++pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877; ++pub const SNAPSHOT_UNFREEZE: u32 = 13058; ++pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723; ++pub const PMU_IOC_HAS_ADB: u32 = 2148024836; ++pub const I2OGETIOPS: u32 = 2149607680; ++pub const VIDIOC_S_FBUF: u32 = 1076909579; ++pub const PPRCONTROL: u32 = 2147577987; ++pub const CHIOSPICKER: u32 = 1074029317; ++pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221; ++pub const TUNGETSNDBUF: u32 = 2147767507; ++pub const GSMIOC_SETCONF: u32 = 1078740737; ++pub const IOC_PR_PREEMPT: u32 = 1075343563; ++pub const KCOV_INIT_TRACE: u32 = 2148033281; ++pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930; ++pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560; ++pub const MTIOCTOP: u32 = 1074294017; ++pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274; ++pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835; ++pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221; ++pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253; ++pub const PPPIOCGMRU: u32 = 2147775571; ++pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013; ++pub const PPPIOCGFLAGS: u32 = 2147775578; ++pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989; ++pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316; ++pub const ATM_DELLECSADDR: u32 = 1074815375; ++pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977; ++pub const PPPIOCGIDLE32: u32 = 2148037695; ++pub const VFIO_DEVICE_RESET: u32 = 15215; ++pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708; ++pub const WDIOC_GETSTATUS: u32 = 2147768065; ++pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497; ++pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481; ++pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835; ++pub const PCITEST_READ: u32 = 1074286597; ++pub const VFIO_GROUP_GET_STATUS: u32 = 15207; ++pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2148036347; ++pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573; ++pub const VIDIOC_DECODER_CMD: u32 = 3225966176; ++pub const VIDIOC_G_AUDIO: u32 = 2150913569; ++pub const CCISS_RESCANDISK: u32 = 16912; ++pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316; ++pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519; ++pub const USBDEVFS_REAPURB: u32 = 1074287884; ++pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593; ++pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523; ++pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717; ++pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457; ++pub const PCITEST_MSIX: u32 = 1074024455; ++pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456; ++pub const UI_BEGIN_FF_ERASE: u32 = 3222033866; ++pub const DM_GET_TARGET_VERSION: u32 = 3241737489; ++pub const PPPIOCGIDLE: u32 = 2148561983; ++pub const NVRAM_SETCKS: u32 = 28737; ++pub const WDIOC_GETSUPPORT: u32 = 2150127360; ++pub const GSMIOC_ENABLE_NET: u32 = 1077167874; ++pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177; ++pub const NE_ADD_VCPU: u32 = 3221532193; ++pub const EVIOCSKEYCODE_V2: u32 = 1076380932; ++pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882; ++pub const SCIF_FENCE_WAIT: u32 = 3221517072; ++pub const RIO_TRANSFER: u32 = 3222826261; ++pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566; ++pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598; ++pub const I2OEVTREG: u32 = 1074555146; ++pub const I2OPARMGET: u32 = 3223873796; ++pub const EVIOCGID: u32 = 2148025602; ++pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330; ++pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088; ++pub const VIDIOC_S_PARM: u32 = 3234616854; ++pub const TUNSETSTEERINGEBPF: u32 = 2147767520; ++pub const ATM_GETNAMES: u32 = 1074815363; ++pub const VIDIOC_QUERYMENU: u32 = 3224131109; ++pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660; ++pub const I2OLCTGET: u32 = 3222825218; ++pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532; ++pub const NS_SETBUFLEV: u32 = 1074815330; ++pub const BLKCLOSEZONE: u32 = 1074795143; ++pub const SONET_GETFRSENSE: u32 = 2147901719; ++pub const UI_SET_EVBIT: u32 = 1074025828; ++pub const DM_LIST_VERSIONS: u32 = 3241737485; ++pub const HIDIOCGSTRING: u32 = 2164541444; ++pub const PPPIOCATTCHAN: u32 = 1074033720; ++pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154; ++pub const TUNGETFEATURES: u32 = 2147767503; ++pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209; ++pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689; ++pub const CCISS_REGNEWDISK: u32 = 1074020877; ++pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515; ++pub const PHN_SETREGS: u32 = 1076391944; ++pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992; ++pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992; ++pub const TUNGETIFF: u32 = 2147767506; ++pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154; ++pub const BTRFS_IOC_RESIZE: u32 = 1342215171; ++pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931; ++pub const PPS_KC_BIND: u32 = 1074294949; ++pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727; ++pub const UI_SET_FFBIT: u32 = 1074025835; ++pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692; ++pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553; ++pub const CEC_G_MODE: u32 = 2147770632; ++pub const USBDEVFS_RESETEP: u32 = 2147767555; ++pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872; ++pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724; ++pub const MGSL_IOCSXCTRL: u32 = 27925; ++pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812; ++pub const PPPIOCUNBRIDGECHAN: u32 = 29748; ++pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722; ++pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2148072960; ++pub const SCIF_FENCE_MARK: u32 = 3222303503; ++pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577; ++pub const VFIO_CHECK_EXTENSION: u32 = 15205; ++pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307; ++pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995; ++pub const UI_SET_PHYS: u32 = 1074287980; ++pub const FDWERRORGET: u32 = 2150105623; ++pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968; ++pub const MGSL_IOCGSTATS: u32 = 27911; ++pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817; ++pub const SIOCGSTAMP_NEW: u32 = 2148567302; ++pub const RTC_WKALM_RD: u32 = 2150133776; ++pub const PHN_GET_REG: u32 = 3221778432; ++pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616; ++pub const PHN_NOT_OH: u32 = 28676; ++pub const PPGETMODES: u32 = 2147774615; ++pub const CHIOGPARAMS: u32 = 2148819718; ++pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219; ++pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947; ++pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853; ++pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226; ++pub const MGSL_IOCWAITGPIO: u32 = 3222301970; ++pub const PMU_IOC_CAN_SLEEP: u32 = 2148024837; ++pub const KCOV_ENABLE: u32 = 25444; ++pub const BTRFS_IOC_CLONE: u32 = 1074041865; ++pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776; ++pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942; ++pub const AGPIOC_ALLOCATE: u32 = 3221766406; ++pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267; ++pub const MGSL_IOCTXABORT: u32 = 27910; ++pub const MGSL_IOCSGPIO: u32 = 1074818320; ++pub const LIRC_SET_REC_CARRIER: u32 = 1074030868; ++pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842; ++pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060; ++pub const RTC_UIE_OFF: u32 = 28676; ++pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312; ++pub const NVME_IOCTL_ID: u32 = 20032; ++pub const NE_START_ENCLAVE: u32 = 3222318628; ++pub const VIDIOC_STREAMON: u32 = 1074026002; ++pub const FDPOLLDRVSTAT: u32 = 2152727059; ++pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086; ++pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426; ++pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152; ++pub const WDIOC_GETTIMELEFT: u32 = 2147768074; ++pub const ATM_GETLINKRATE: u32 = 1074815361; ++pub const RTC_WKALM_SET: u32 = 1076391951; ++pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774; ++pub const ATMARP_ENCAP: u32 = 25061; ++pub const CAPI_GET_FLAGS: u32 = 2147762979; ++pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696; ++pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690; ++pub const NS_GET_OWNER_UID: u32 = 46852; ++pub const VIDIOC_OVERLAY: u32 = 1074025998; ++pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022; ++pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586; ++pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932; ++pub const ATM_GETADDR: u32 = 1074815366; ++pub const PHN_GET_REGS: u32 = 3221778434; ++pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091; ++pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092; ++pub const SNAPSHOT_S2RAM: u32 = 13067; ++pub const JSIOCSAXMAP: u32 = 1077963313; ++pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638; ++pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501; ++pub const SCIF_FENCE_SIGNAL: u32 = 3223876369; ++pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216; ++pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218; ++pub const MMTIMER_GETOFFSET: u32 = 27904; ++pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246; ++pub const ATM_SETSC: u32 = 1074029041; ++pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445; ++pub const NVME_IOCTL_RESCAN: u32 = 20038; ++pub const BLKOPENZONE: u32 = 1074795142; ++pub const DM_VERSION: u32 = 3241737472; ++pub const CEC_TRANSMIT: u32 = 3224920325; ++pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430; ++pub const SIOCMKCLIP: u32 = 25056; ++pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313; ++pub const HIDIOCGVERSION: u32 = 2147764225; ++pub const VIDIOC_S_INPUT: u32 = 3221509671; ++pub const VIDIOC_G_CROP: u32 = 3222558267; ++pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883; ++pub const EVIOCGEFFECTS: u32 = 2147763588; ++pub const UVCIOC_CTRL_QUERY: u32 = 3222304033; ++pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963; ++pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159; ++pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734; ++pub const USBDEVFS_GETDRIVER: u32 = 1090802952; ++pub const IDT77105_GETSTAT: u32 = 1074815282; ++pub const HIDIOCINITREPORT: u32 = 18437; ++pub const VFIO_DEVICE_GET_INFO: u32 = 15211; ++pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402; ++pub const RNDGETENTCNT: u32 = 2147766784; ++pub const PPPIOCNEWUNIT: u32 = 3221517374; ++pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834; ++pub const FDRESET: u32 = 596; ++pub const IOC_PR_REGISTER: u32 = 1075343560; ++pub const HIDIOCSREPORT: u32 = 1074546696; ++pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210; ++pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214; ++pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889; ++pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155; ++pub const HIDIOCGRAWINFO: u32 = 2148026371; ++pub const PPPIOCSCOMPRESS: u32 = 1074820173; ++pub const USBDEVFS_CONNECTINFO: u32 = 1074287889; ++pub const BLKRESETZONE: u32 = 1074795139; ++pub const CHIOINITELEM: u32 = 25361; ++pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700; ++pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089; ++pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801; ++pub const PPGETPHASE: u32 = 2147774617; ++pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939; ++pub const FDMSGON: u32 = 581; ++pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733; ++pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256; ++pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873; ++pub const IOC_OPAL_ERASE_LR: u32 = 1091596518; ++pub const FDFMTBEG: u32 = 583; ++pub const RNDRESEEDCRNG: u32 = 20999; ++pub const ISST_IF_GET_PHY_ID: u32 = 3221814785; ++pub const TUNSETNOCSUM: u32 = 1074025672; ++pub const SONET_GETSTAT: u32 = 2149867792; ++pub const TFD_IOC_SET_TICKS: u32 = 1074287616; ++pub const PPDATADIR: u32 = 1074032784; ++pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517; ++pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871; ++pub const RIO_CM_CHAN_SEND: u32 = 1074815753; ++pub const PPWCTLONIRQ: u32 = 1073836178; ++pub const SONYPI_IOCGBRT: u32 = 2147579392; ++pub const IOC_PR_RELEASE: u32 = 1074819274; ++pub const PPCLRIRQ: u32 = 2147774611; ++pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698; ++pub const MGSL_IOCSXSYNC: u32 = 27923; ++pub const HPET_IE_OFF: u32 = 26626; ++pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513; ++pub const SONET_SETFRAMING: u32 = 1074028821; ++pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193; ++pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435; ++pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108; ++pub const BLKFINISHZONE: u32 = 1074795144; ++pub const EVIOCREVOKE: u32 = 1074021777; ++pub const VFIO_DEVICE_FEATURE: u32 = 15221; ++pub const CCISS_GETPCIINFO: u32 = 2148024833; ++pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787; ++pub const SCIF_ACCEPTREQ: u32 = 3222303492; ++pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986; ++pub const VIDIOC_STREAMOFF: u32 = 1074026003; ++pub const VDUSE_DESTROY_DEV: u32 = 1090552067; ++pub const FDGETFDCSTAT: u32 = 2150105621; ++pub const CM_IOCGATR: u32 = 3221775105; ++pub const VIDIOC_S_PRIORITY: u32 = 1074026052; ++pub const SNAPSHOT_FREEZE: u32 = 13057; ++pub const VIDIOC_ENUMINPUT: u32 = 3226490394; ++pub const ZATM_GETPOOLZ: u32 = 1074815330; ++pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026; ++pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774; ++pub const VIDIOC_G_STD: u32 = 2148029975; ++pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794; ++pub const SONET_GETSTATZ: u32 = 2149867793; ++pub const SCIF_ACCEPTREG: u32 = 3221779205; ++pub const VIDIOC_ENCODER_CMD: u32 = 3223869005; ++pub const PPPIOCSRASYNCMAP: u32 = 1074033748; ++pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402; ++pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885; ++pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694; ++pub const ATMLEC_CTRL: u32 = 25040; ++pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2148036345; ++pub const DM_DEV_CREATE: u32 = 3241737475; ++pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638; ++pub const VIDIOC_G_CTRL: u32 = 3221771803; ++pub const NBD_CLEAR_SOCK: u32 = 43780; ++pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218; ++pub const WDIOC_KEEPALIVE: u32 = 2147768069; ++pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037; ++pub const PTP_EXTTS_REQUEST2: u32 = 1074806027; ++pub const PCITEST_BAR: u32 = 20481; ++pub const MGSL_IOCGGPIO: u32 = 2148560145; ++pub const EVIOCSREP: u32 = 1074283779; ++pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213; ++pub const HPET_DPI: u32 = 26629; ++pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158; ++pub const ND_IOCTL_CALL: u32 = 3225439754; ++pub const HIDIOCGDEVINFO: u32 = 2149337091; ++pub const DM_TABLE_DEPS: u32 = 3241737483; ++pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846; ++pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664; ++pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872; ++pub const VIDIOC_G_PRIORITY: u32 = 2147767875; ++pub const ATM_NEWBACKENDIF: u32 = 1073897971; ++pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712; ++pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914; ++pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697; ++pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650; ++pub const DM_TABLE_LOAD: u32 = 3241737481; ++pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721; ++pub const VIDIOC_G_OUTPUT: u32 = 2147767854; ++pub const ATM_DROPPARTY: u32 = 1074029045; ++pub const CHIOGELEM: u32 = 1080845072; ++pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185; ++pub const EVIOCSKEYCODE: u32 = 1074283780; ++pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626; ++pub const TUNSETLINK: u32 = 1074025677; ++pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302; ++pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916; ++pub const PPS_SETPARAMS: u32 = 1074294946; ++pub const IOC_OPAL_LR_SETUP: u32 = 1093169379; ++pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931; ++pub const WDIOC_SETTIMEOUT: u32 = 3221509894; ++pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369; ++pub const CAPI_GET_MANUFACTURER: u32 = 3221504774; ++pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222; ++pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224; ++pub const VIDIOC_G_EDID: u32 = 3223868968; ++pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075377419; ++pub const RIO_MAP_INBOUND: u32 = 3223874833; ++pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222; ++pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576; ++pub const VIDIOC_S_AUDIO: u32 = 1077171746; ++pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363; ++pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243; ++pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183; ++pub const SNAPSHOT_FREE: u32 = 13061; ++pub const I8K_GET_SPEED: u32 = 3221776773; ++pub const HIDIOCGREPORT: u32 = 1074546695; ++pub const HPET_EPI: u32 = 26628; ++pub const JSIOCSCORR: u32 = 1076128289; ++pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564; ++pub const RIO_MAP_OUTBOUND: u32 = 3223874831; ++pub const ATM_SETESI: u32 = 1074815372; ++pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370; ++pub const ATM_DELADDR: u32 = 1074815369; ++pub const PPFCONTROL: u32 = 1073901710; ++pub const SONYPI_IOCGFAN: u32 = 2147579402; ++pub const RTC_IRQP_SET: u32 = 1074294796; ++pub const PCITEST_WRITE: u32 = 1074286596; ++pub const PPCLAIM: u32 = 28811; ++pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942; ++pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615; ++pub const VHOST_SET_FEATURES: u32 = 1074310912; ++pub const TOSHIBA_ACPI_SCI: u32 = 3222828177; ++pub const VIDIOC_DQBUF: u32 = 3227014673; ++pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434; ++pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026; ++pub const ATMLEC_MCAST: u32 = 25042; ++pub const MMTIMER_GETFREQ: u32 = 2148035842; ++pub const VIDIOC_G_SELECTION: u32 = 3225441886; ++pub const RTC_ALM_SET: u32 = 1076129799; ++pub const PPPOEIOCSFWD: u32 = 1074311424; ++pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702; ++pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677; ++pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631; ++pub const FDFMTEND: u32 = 585; ++pub const DMA_BUF_SET_NAME: u32 = 1074291201; ++pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176; ++pub const RTC_UIE_ON: u32 = 28675; ++pub const PPRELEASE: u32 = 28812; ++pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218; ++pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714; ++pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659; ++pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2184212993; ++pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097; ++pub const VHOST_SET_VRING_KICK: u32 = 1074310944; ++pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192; ++pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169; ++pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932; ++pub const PPNEGOT: u32 = 1074032785; ++pub const NBD_PRINT_DEBUG: u32 = 43782; ++pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878; ++pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877; ++pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913; ++pub const BTRFS_IOC_FS_INFO: u32 = 2214630431; ++pub const VIDIOC_ENUM_FMT: u32 = 3225441794; ++pub const VIDIOC_G_INPUT: u32 = 2147767846; ++pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408; ++pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515; ++pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731; ++pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060; ++pub const MMTIMER_GETCOUNTER: u32 = 2148035849; ++pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170; ++pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934; ++pub const RIO_CM_CHAN_BIND: u32 = 1074291461; ++pub const HIDIOCGRDESC: u32 = 2416199682; ++pub const MGSL_IOCGIF: u32 = 27915; ++pub const VIDIOC_S_OUTPUT: u32 = 3221509679; ++pub const HIDIOCGREPORTINFO: u32 = 3222030345; ++pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066; ++pub const VDUSE_VQ_GET_INFO: u32 = 3224404245; ++pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677; ++pub const BLKGETDISKSEQ: u32 = 2148012672; ++pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328; ++pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489; ++pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099; ++pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522; ++pub const ACRN_IOCTL_IRQFD: u32 = 1075356273; ++pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688; ++pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907; ++pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523; ++pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100; ++pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633; ++pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621; ++pub const ACRN_IOCTL_START_VM: u32 = 41490; ++pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1093181974; ++pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513; ++pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491; ++pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525; ++pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514; ++pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560; ++pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678; ++pub const ACRN_IOCTL_RESET_VM: u32 = 41493; ++pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524; ++pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074307620; +diff --git a/vendor/linux-raw-sys/src/loongarch64/netlink.rs b/vendor/linux-raw-sys/src/loongarch64/netlink.rs +new file mode 100644 +index 000000000..8069c2f5c +--- /dev/null ++++ b/vendor/linux-raw-sys/src/loongarch64/netlink.rs +@@ -0,0 +1,2860 @@ ++/* automatically generated by rust-bindgen 0.59.2 */ ++ ++#[repr(C)] ++#[derive(Default)] ++pub struct __IncompleteArrayField(::core::marker::PhantomData, [T; 0]); ++impl __IncompleteArrayField { ++#[inline] ++pub const fn new() -> Self { ++__IncompleteArrayField(::core::marker::PhantomData, []) ++} ++#[inline] ++pub fn as_ptr(&self) -> *const T { ++self as *const _ as *const T ++} ++#[inline] ++pub fn as_mut_ptr(&mut self) -> *mut T { ++self as *mut _ as *mut T ++} ++#[inline] ++pub unsafe fn as_slice(&self, len: usize) -> &[T] { ++::core::slice::from_raw_parts(self.as_ptr(), len) ++} ++#[inline] ++pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { ++::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len) ++} ++} ++impl ::core::fmt::Debug for __IncompleteArrayField { ++fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { ++fmt.write_str("__IncompleteArrayField") ++} ++} ++pub const LINUX_VERSION_CODE: u32 = 393728; ++pub const LINUX_VERSION_MAJOR: u32 = 6; ++pub const LINUX_VERSION_PATCHLEVEL: u32 = 2; ++pub const LINUX_VERSION_SUBLEVEL: u32 = 0; ++pub const _K_SS_MAXSIZE: u32 = 128; ++pub const SOCK_SNDBUF_LOCK: u32 = 1; ++pub const SOCK_RCVBUF_LOCK: u32 = 2; ++pub const SOCK_BUF_LOCK_MASK: u32 = 3; ++pub const SOCK_TXREHASH_DEFAULT: u32 = 255; ++pub const SOCK_TXREHASH_DISABLED: u32 = 0; ++pub const SOCK_TXREHASH_ENABLED: u32 = 1; ++pub const __FD_SETSIZE: u32 = 1024; ++pub const NETLINK_ROUTE: u32 = 0; ++pub const NETLINK_UNUSED: u32 = 1; ++pub const NETLINK_USERSOCK: u32 = 2; ++pub const NETLINK_FIREWALL: u32 = 3; ++pub const NETLINK_SOCK_DIAG: u32 = 4; ++pub const NETLINK_NFLOG: u32 = 5; ++pub const NETLINK_XFRM: u32 = 6; ++pub const NETLINK_SELINUX: u32 = 7; ++pub const NETLINK_ISCSI: u32 = 8; ++pub const NETLINK_AUDIT: u32 = 9; ++pub const NETLINK_FIB_LOOKUP: u32 = 10; ++pub const NETLINK_CONNECTOR: u32 = 11; ++pub const NETLINK_NETFILTER: u32 = 12; ++pub const NETLINK_IP6_FW: u32 = 13; ++pub const NETLINK_DNRTMSG: u32 = 14; ++pub const NETLINK_KOBJECT_UEVENT: u32 = 15; ++pub const NETLINK_GENERIC: u32 = 16; ++pub const NETLINK_SCSITRANSPORT: u32 = 18; ++pub const NETLINK_ECRYPTFS: u32 = 19; ++pub const NETLINK_RDMA: u32 = 20; ++pub const NETLINK_CRYPTO: u32 = 21; ++pub const NETLINK_SMC: u32 = 22; ++pub const NETLINK_INET_DIAG: u32 = 4; ++pub const MAX_LINKS: u32 = 32; ++pub const NLM_F_REQUEST: u32 = 1; ++pub const NLM_F_MULTI: u32 = 2; ++pub const NLM_F_ACK: u32 = 4; ++pub const NLM_F_ECHO: u32 = 8; ++pub const NLM_F_DUMP_INTR: u32 = 16; ++pub const NLM_F_DUMP_FILTERED: u32 = 32; ++pub const NLM_F_ROOT: u32 = 256; ++pub const NLM_F_MATCH: u32 = 512; ++pub const NLM_F_ATOMIC: u32 = 1024; ++pub const NLM_F_DUMP: u32 = 768; ++pub const NLM_F_REPLACE: u32 = 256; ++pub const NLM_F_EXCL: u32 = 512; ++pub const NLM_F_CREATE: u32 = 1024; ++pub const NLM_F_APPEND: u32 = 2048; ++pub const NLM_F_NONREC: u32 = 256; ++pub const NLM_F_BULK: u32 = 512; ++pub const NLM_F_CAPPED: u32 = 256; ++pub const NLM_F_ACK_TLVS: u32 = 512; ++pub const NLMSG_ALIGNTO: u32 = 4; ++pub const NLMSG_NOOP: u32 = 1; ++pub const NLMSG_ERROR: u32 = 2; ++pub const NLMSG_DONE: u32 = 3; ++pub const NLMSG_OVERRUN: u32 = 4; ++pub const NLMSG_MIN_TYPE: u32 = 16; ++pub const NETLINK_ADD_MEMBERSHIP: u32 = 1; ++pub const NETLINK_DROP_MEMBERSHIP: u32 = 2; ++pub const NETLINK_PKTINFO: u32 = 3; ++pub const NETLINK_BROADCAST_ERROR: u32 = 4; ++pub const NETLINK_NO_ENOBUFS: u32 = 5; ++pub const NETLINK_RX_RING: u32 = 6; ++pub const NETLINK_TX_RING: u32 = 7; ++pub const NETLINK_LISTEN_ALL_NSID: u32 = 8; ++pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9; ++pub const NETLINK_CAP_ACK: u32 = 10; ++pub const NETLINK_EXT_ACK: u32 = 11; ++pub const NETLINK_GET_STRICT_CHK: u32 = 12; ++pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4; ++pub const NET_MAJOR: u32 = 36; ++pub const NLA_F_NESTED: u32 = 32768; ++pub const NLA_F_NET_BYTEORDER: u32 = 16384; ++pub const NLA_TYPE_MASK: i32 = -49153; ++pub const NLA_ALIGNTO: u32 = 4; ++pub const MACVLAN_FLAG_NOPROMISC: u32 = 1; ++pub const MACVLAN_FLAG_NODST: u32 = 2; ++pub const IPVLAN_F_PRIVATE: u32 = 1; ++pub const IPVLAN_F_VEPA: u32 = 2; ++pub const TUNNEL_MSG_FLAG_STATS: u32 = 1; ++pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1; ++pub const MAX_VLAN_LIST_LEN: u32 = 1; ++pub const PORT_PROFILE_MAX: u32 = 40; ++pub const PORT_UUID_MAX: u32 = 16; ++pub const PORT_SELF_VF: i32 = -1; ++pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1; ++pub const XDP_FLAGS_SKB_MODE: u32 = 2; ++pub const XDP_FLAGS_DRV_MODE: u32 = 4; ++pub const XDP_FLAGS_HW_MODE: u32 = 8; ++pub const XDP_FLAGS_REPLACE: u32 = 16; ++pub const XDP_FLAGS_MODES: u32 = 14; ++pub const XDP_FLAGS_MASK: u32 = 31; ++pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1; ++pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2; ++pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4; ++pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8; ++pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16; ++pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32; ++pub const IFA_F_SECONDARY: u32 = 1; ++pub const IFA_F_TEMPORARY: u32 = 1; ++pub const IFA_F_NODAD: u32 = 2; ++pub const IFA_F_OPTIMISTIC: u32 = 4; ++pub const IFA_F_DADFAILED: u32 = 8; ++pub const IFA_F_HOMEADDRESS: u32 = 16; ++pub const IFA_F_DEPRECATED: u32 = 32; ++pub const IFA_F_TENTATIVE: u32 = 64; ++pub const IFA_F_PERMANENT: u32 = 128; ++pub const IFA_F_MANAGETEMPADDR: u32 = 256; ++pub const IFA_F_NOPREFIXROUTE: u32 = 512; ++pub const IFA_F_MCAUTOJOIN: u32 = 1024; ++pub const IFA_F_STABLE_PRIVACY: u32 = 2048; ++pub const IFAPROT_UNSPEC: u32 = 0; ++pub const IFAPROT_KERNEL_LO: u32 = 1; ++pub const IFAPROT_KERNEL_RA: u32 = 2; ++pub const IFAPROT_KERNEL_LL: u32 = 3; ++pub const NTF_USE: u32 = 1; ++pub const NTF_SELF: u32 = 2; ++pub const NTF_MASTER: u32 = 4; ++pub const NTF_PROXY: u32 = 8; ++pub const NTF_EXT_LEARNED: u32 = 16; ++pub const NTF_OFFLOADED: u32 = 32; ++pub const NTF_STICKY: u32 = 64; ++pub const NTF_ROUTER: u32 = 128; ++pub const NTF_EXT_MANAGED: u32 = 1; ++pub const NTF_EXT_LOCKED: u32 = 2; ++pub const NUD_INCOMPLETE: u32 = 1; ++pub const NUD_REACHABLE: u32 = 2; ++pub const NUD_STALE: u32 = 4; ++pub const NUD_DELAY: u32 = 8; ++pub const NUD_PROBE: u32 = 16; ++pub const NUD_FAILED: u32 = 32; ++pub const NUD_NOARP: u32 = 64; ++pub const NUD_PERMANENT: u32 = 128; ++pub const NUD_NONE: u32 = 0; ++pub const RTNL_FAMILY_IPMR: u32 = 128; ++pub const RTNL_FAMILY_IP6MR: u32 = 129; ++pub const RTNL_FAMILY_MAX: u32 = 129; ++pub const RTA_ALIGNTO: u32 = 4; ++pub const RTPROT_UNSPEC: u32 = 0; ++pub const RTPROT_REDIRECT: u32 = 1; ++pub const RTPROT_KERNEL: u32 = 2; ++pub const RTPROT_BOOT: u32 = 3; ++pub const RTPROT_STATIC: u32 = 4; ++pub const RTPROT_GATED: u32 = 8; ++pub const RTPROT_RA: u32 = 9; ++pub const RTPROT_MRT: u32 = 10; ++pub const RTPROT_ZEBRA: u32 = 11; ++pub const RTPROT_BIRD: u32 = 12; ++pub const RTPROT_DNROUTED: u32 = 13; ++pub const RTPROT_XORP: u32 = 14; ++pub const RTPROT_NTK: u32 = 15; ++pub const RTPROT_DHCP: u32 = 16; ++pub const RTPROT_MROUTED: u32 = 17; ++pub const RTPROT_KEEPALIVED: u32 = 18; ++pub const RTPROT_BABEL: u32 = 42; ++pub const RTPROT_OPENR: u32 = 99; ++pub const RTPROT_BGP: u32 = 186; ++pub const RTPROT_ISIS: u32 = 187; ++pub const RTPROT_OSPF: u32 = 188; ++pub const RTPROT_RIP: u32 = 189; ++pub const RTPROT_EIGRP: u32 = 192; ++pub const RTM_F_NOTIFY: u32 = 256; ++pub const RTM_F_CLONED: u32 = 512; ++pub const RTM_F_EQUALIZE: u32 = 1024; ++pub const RTM_F_PREFIX: u32 = 2048; ++pub const RTM_F_LOOKUP_TABLE: u32 = 4096; ++pub const RTM_F_FIB_MATCH: u32 = 8192; ++pub const RTM_F_OFFLOAD: u32 = 16384; ++pub const RTM_F_TRAP: u32 = 32768; ++pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912; ++pub const RTNH_F_DEAD: u32 = 1; ++pub const RTNH_F_PERVASIVE: u32 = 2; ++pub const RTNH_F_ONLINK: u32 = 4; ++pub const RTNH_F_OFFLOAD: u32 = 8; ++pub const RTNH_F_LINKDOWN: u32 = 16; ++pub const RTNH_F_UNRESOLVED: u32 = 32; ++pub const RTNH_F_TRAP: u32 = 64; ++pub const RTNH_COMPARE_MASK: u32 = 89; ++pub const RTNH_ALIGNTO: u32 = 4; ++pub const RTNETLINK_HAVE_PEERINFO: u32 = 1; ++pub const RTAX_FEATURE_ECN: u32 = 1; ++pub const RTAX_FEATURE_SACK: u32 = 2; ++pub const RTAX_FEATURE_TIMESTAMP: u32 = 4; ++pub const RTAX_FEATURE_ALLFRAG: u32 = 8; ++pub const RTAX_FEATURE_MASK: u32 = 15; ++pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295; ++pub const TCA_DUMP_FLAGS_TERSE: u32 = 1; ++pub const RTMGRP_LINK: u32 = 1; ++pub const RTMGRP_NOTIFY: u32 = 2; ++pub const RTMGRP_NEIGH: u32 = 4; ++pub const RTMGRP_TC: u32 = 8; ++pub const RTMGRP_IPV4_IFADDR: u32 = 16; ++pub const RTMGRP_IPV4_MROUTE: u32 = 32; ++pub const RTMGRP_IPV4_ROUTE: u32 = 64; ++pub const RTMGRP_IPV4_RULE: u32 = 128; ++pub const RTMGRP_IPV6_IFADDR: u32 = 256; ++pub const RTMGRP_IPV6_MROUTE: u32 = 512; ++pub const RTMGRP_IPV6_ROUTE: u32 = 1024; ++pub const RTMGRP_IPV6_IFINFO: u32 = 2048; ++pub const RTMGRP_DECnet_IFADDR: u32 = 4096; ++pub const RTMGRP_DECnet_ROUTE: u32 = 16384; ++pub const RTMGRP_IPV6_PREFIX: u32 = 131072; ++pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1; ++pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1; ++pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2; ++pub const RTEXT_FILTER_VF: u32 = 1; ++pub const RTEXT_FILTER_BRVLAN: u32 = 2; ++pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4; ++pub const RTEXT_FILTER_SKIP_STATS: u32 = 8; ++pub const RTEXT_FILTER_MRP: u32 = 16; ++pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32; ++pub const RTEXT_FILTER_CFM_STATUS: u32 = 64; ++pub const RTEXT_FILTER_MST: u32 = 128; ++pub type size_t = crate::ctypes::c_ulong; ++pub type ssize_t = crate::ctypes::c_long; ++pub type __kernel_sa_family_t = crate::ctypes::c_ushort; ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct __kernel_sockaddr_storage { ++pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union __kernel_sockaddr_storage__bindgen_ty_1 { ++pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1, ++pub __align: *mut crate::ctypes::c_void, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 { ++pub ss_family: __kernel_sa_family_t, ++pub __data: [crate::ctypes::c_char; 126usize], ++} ++pub type __s8 = crate::ctypes::c_schar; ++pub type __u8 = crate::ctypes::c_uchar; ++pub type __s16 = crate::ctypes::c_short; ++pub type __u16 = crate::ctypes::c_ushort; ++pub type __s32 = crate::ctypes::c_int; ++pub type __u32 = crate::ctypes::c_uint; ++pub type __s64 = crate::ctypes::c_longlong; ++pub type __u64 = crate::ctypes::c_ulonglong; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_fd_set { ++pub fds_bits: [crate::ctypes::c_ulong; 16usize], ++} ++pub type __kernel_sighandler_t = ::core::option::Option; ++pub type __kernel_key_t = crate::ctypes::c_int; ++pub type __kernel_mqd_t = crate::ctypes::c_int; ++pub type __kernel_long_t = crate::ctypes::c_long; ++pub type __kernel_ulong_t = crate::ctypes::c_ulong; ++pub type __kernel_ino_t = __kernel_ulong_t; ++pub type __kernel_mode_t = crate::ctypes::c_uint; ++pub type __kernel_pid_t = crate::ctypes::c_int; ++pub type __kernel_ipc_pid_t = crate::ctypes::c_int; ++pub type __kernel_uid_t = crate::ctypes::c_uint; ++pub type __kernel_gid_t = crate::ctypes::c_uint; ++pub type __kernel_suseconds_t = __kernel_long_t; ++pub type __kernel_daddr_t = crate::ctypes::c_int; ++pub type __kernel_uid32_t = crate::ctypes::c_uint; ++pub type __kernel_gid32_t = crate::ctypes::c_uint; ++pub type __kernel_old_uid_t = __kernel_uid_t; ++pub type __kernel_old_gid_t = __kernel_gid_t; ++pub type __kernel_old_dev_t = crate::ctypes::c_uint; ++pub type __kernel_size_t = __kernel_ulong_t; ++pub type __kernel_ssize_t = __kernel_long_t; ++pub type __kernel_ptrdiff_t = __kernel_long_t; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct __kernel_fsid_t { ++pub val: [crate::ctypes::c_int; 2usize], ++} ++pub type __kernel_off_t = __kernel_long_t; ++pub type __kernel_loff_t = crate::ctypes::c_longlong; ++pub type __kernel_old_time_t = __kernel_long_t; ++pub type __kernel_time_t = __kernel_long_t; ++pub type __kernel_time64_t = crate::ctypes::c_longlong; ++pub type __kernel_clock_t = __kernel_long_t; ++pub type __kernel_timer_t = crate::ctypes::c_int; ++pub type __kernel_clockid_t = crate::ctypes::c_int; ++pub type __kernel_caddr_t = *mut crate::ctypes::c_char; ++pub type __kernel_uid16_t = crate::ctypes::c_ushort; ++pub type __kernel_gid16_t = crate::ctypes::c_ushort; ++pub type __le16 = __u16; ++pub type __be16 = __u16; ++pub type __le32 = __u32; ++pub type __be32 = __u32; ++pub type __le64 = __u64; ++pub type __be64 = __u64; ++pub type __sum16 = __u16; ++pub type __wsum = __u32; ++pub type __poll_t = crate::ctypes::c_uint; ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct sockaddr_nl { ++pub nl_family: __kernel_sa_family_t, ++pub nl_pad: crate::ctypes::c_ushort, ++pub nl_pid: __u32, ++pub nl_groups: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nlmsghdr { ++pub nlmsg_len: __u32, ++pub nlmsg_type: __u16, ++pub nlmsg_flags: __u16, ++pub nlmsg_seq: __u32, ++pub nlmsg_pid: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nlmsgerr { ++pub error: crate::ctypes::c_int, ++pub msg: nlmsghdr, ++} ++impl nlmsgerr_attrs { ++pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum nlmsgerr_attrs { ++NLMSGERR_ATTR_UNUSED = 0, ++NLMSGERR_ATTR_MSG = 1, ++NLMSGERR_ATTR_OFFS = 2, ++NLMSGERR_ATTR_COOKIE = 3, ++NLMSGERR_ATTR_POLICY = 4, ++NLMSGERR_ATTR_MISS_TYPE = 5, ++NLMSGERR_ATTR_MISS_NEST = 6, ++__NLMSGERR_ATTR_MAX = 7, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nl_pktinfo { ++pub group: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nl_mmap_req { ++pub nm_block_size: crate::ctypes::c_uint, ++pub nm_block_nr: crate::ctypes::c_uint, ++pub nm_frame_size: crate::ctypes::c_uint, ++pub nm_frame_nr: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nl_mmap_hdr { ++pub nm_status: crate::ctypes::c_uint, ++pub nm_len: crate::ctypes::c_uint, ++pub nm_group: __u32, ++pub nm_pid: __u32, ++pub nm_uid: __u32, ++pub nm_gid: __u32, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum nl_mmap_status { ++NL_MMAP_STATUS_UNUSED = 0, ++NL_MMAP_STATUS_RESERVED = 1, ++NL_MMAP_STATUS_VALID = 2, ++NL_MMAP_STATUS_COPY = 3, ++NL_MMAP_STATUS_SKIP = 4, ++} ++pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED; ++pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_1 { ++NETLINK_UNCONNECTED = 0, ++NETLINK_CONNECTED = 1, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nlattr { ++pub nla_len: __u16, ++pub nla_type: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nla_bitfield32 { ++pub value: __u32, ++pub selector: __u32, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum netlink_attribute_type { ++NL_ATTR_TYPE_INVALID = 0, ++NL_ATTR_TYPE_FLAG = 1, ++NL_ATTR_TYPE_U8 = 2, ++NL_ATTR_TYPE_U16 = 3, ++NL_ATTR_TYPE_U32 = 4, ++NL_ATTR_TYPE_U64 = 5, ++NL_ATTR_TYPE_S8 = 6, ++NL_ATTR_TYPE_S16 = 7, ++NL_ATTR_TYPE_S32 = 8, ++NL_ATTR_TYPE_S64 = 9, ++NL_ATTR_TYPE_BINARY = 10, ++NL_ATTR_TYPE_STRING = 11, ++NL_ATTR_TYPE_NUL_STRING = 12, ++NL_ATTR_TYPE_NESTED = 13, ++NL_ATTR_TYPE_NESTED_ARRAY = 14, ++NL_ATTR_TYPE_BITFIELD32 = 15, ++} ++impl netlink_policy_type_attr { ++pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum netlink_policy_type_attr { ++NL_POLICY_TYPE_ATTR_UNSPEC = 0, ++NL_POLICY_TYPE_ATTR_TYPE = 1, ++NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, ++NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, ++NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, ++NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, ++NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, ++NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, ++NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, ++NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, ++NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, ++NL_POLICY_TYPE_ATTR_PAD = 11, ++NL_POLICY_TYPE_ATTR_MASK = 12, ++__NL_POLICY_TYPE_ATTR_MAX = 13, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnl_link_stats { ++pub rx_packets: __u32, ++pub tx_packets: __u32, ++pub rx_bytes: __u32, ++pub tx_bytes: __u32, ++pub rx_errors: __u32, ++pub tx_errors: __u32, ++pub rx_dropped: __u32, ++pub tx_dropped: __u32, ++pub multicast: __u32, ++pub collisions: __u32, ++pub rx_length_errors: __u32, ++pub rx_over_errors: __u32, ++pub rx_crc_errors: __u32, ++pub rx_frame_errors: __u32, ++pub rx_fifo_errors: __u32, ++pub rx_missed_errors: __u32, ++pub tx_aborted_errors: __u32, ++pub tx_carrier_errors: __u32, ++pub tx_fifo_errors: __u32, ++pub tx_heartbeat_errors: __u32, ++pub tx_window_errors: __u32, ++pub rx_compressed: __u32, ++pub tx_compressed: __u32, ++pub rx_nohandler: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnl_link_stats64 { ++pub rx_packets: __u64, ++pub tx_packets: __u64, ++pub rx_bytes: __u64, ++pub tx_bytes: __u64, ++pub rx_errors: __u64, ++pub tx_errors: __u64, ++pub rx_dropped: __u64, ++pub tx_dropped: __u64, ++pub multicast: __u64, ++pub collisions: __u64, ++pub rx_length_errors: __u64, ++pub rx_over_errors: __u64, ++pub rx_crc_errors: __u64, ++pub rx_frame_errors: __u64, ++pub rx_fifo_errors: __u64, ++pub rx_missed_errors: __u64, ++pub tx_aborted_errors: __u64, ++pub tx_carrier_errors: __u64, ++pub tx_fifo_errors: __u64, ++pub tx_heartbeat_errors: __u64, ++pub tx_window_errors: __u64, ++pub rx_compressed: __u64, ++pub tx_compressed: __u64, ++pub rx_nohandler: __u64, ++pub rx_otherhost_dropped: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnl_hw_stats64 { ++pub rx_packets: __u64, ++pub tx_packets: __u64, ++pub rx_bytes: __u64, ++pub tx_bytes: __u64, ++pub rx_errors: __u64, ++pub tx_errors: __u64, ++pub rx_dropped: __u64, ++pub tx_dropped: __u64, ++pub multicast: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnl_link_ifmap { ++pub mem_start: __u64, ++pub mem_end: __u64, ++pub base_addr: __u64, ++pub irq: __u16, ++pub dma: __u8, ++pub port: __u8, ++} ++pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC; ++pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS; ++pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST; ++pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME; ++pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU; ++pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK; ++pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC; ++pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS; ++pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST; ++pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY; ++pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER; ++pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS; ++pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO; ++pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN; ++pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP; ++pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT; ++pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE; ++pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE; ++pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO; ++pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID; ++pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS; ++pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF; ++pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST; ++pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64; ++pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS; ++pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF; ++pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC; ++pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP; ++pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD; ++pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK; ++pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY; ++pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES; ++pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES; ++pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER; ++pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID; ++pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES; ++pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID; ++pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID; ++pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME; ++pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN; ++pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS; ++pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE; ++pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD; ++pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP; ++pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT; ++pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID; ++pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; ++pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID; ++pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT; ++pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT; ++pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX; ++pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU; ++pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU; ++pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST; ++pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME; ++pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS; ++pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON; ++pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME; ++pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME; ++pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE; ++pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE; ++pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS; ++pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI; ++pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT; ++pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_2 { ++IFLA_UNSPEC = 0, ++IFLA_ADDRESS = 1, ++IFLA_BROADCAST = 2, ++IFLA_IFNAME = 3, ++IFLA_MTU = 4, ++IFLA_LINK = 5, ++IFLA_QDISC = 6, ++IFLA_STATS = 7, ++IFLA_COST = 8, ++IFLA_PRIORITY = 9, ++IFLA_MASTER = 10, ++IFLA_WIRELESS = 11, ++IFLA_PROTINFO = 12, ++IFLA_TXQLEN = 13, ++IFLA_MAP = 14, ++IFLA_WEIGHT = 15, ++IFLA_OPERSTATE = 16, ++IFLA_LINKMODE = 17, ++IFLA_LINKINFO = 18, ++IFLA_NET_NS_PID = 19, ++IFLA_IFALIAS = 20, ++IFLA_NUM_VF = 21, ++IFLA_VFINFO_LIST = 22, ++IFLA_STATS64 = 23, ++IFLA_VF_PORTS = 24, ++IFLA_PORT_SELF = 25, ++IFLA_AF_SPEC = 26, ++IFLA_GROUP = 27, ++IFLA_NET_NS_FD = 28, ++IFLA_EXT_MASK = 29, ++IFLA_PROMISCUITY = 30, ++IFLA_NUM_TX_QUEUES = 31, ++IFLA_NUM_RX_QUEUES = 32, ++IFLA_CARRIER = 33, ++IFLA_PHYS_PORT_ID = 34, ++IFLA_CARRIER_CHANGES = 35, ++IFLA_PHYS_SWITCH_ID = 36, ++IFLA_LINK_NETNSID = 37, ++IFLA_PHYS_PORT_NAME = 38, ++IFLA_PROTO_DOWN = 39, ++IFLA_GSO_MAX_SEGS = 40, ++IFLA_GSO_MAX_SIZE = 41, ++IFLA_PAD = 42, ++IFLA_XDP = 43, ++IFLA_EVENT = 44, ++IFLA_NEW_NETNSID = 45, ++IFLA_IF_NETNSID = 46, ++IFLA_CARRIER_UP_COUNT = 47, ++IFLA_CARRIER_DOWN_COUNT = 48, ++IFLA_NEW_IFINDEX = 49, ++IFLA_MIN_MTU = 50, ++IFLA_MAX_MTU = 51, ++IFLA_PROP_LIST = 52, ++IFLA_ALT_IFNAME = 53, ++IFLA_PERM_ADDRESS = 54, ++IFLA_PROTO_DOWN_REASON = 55, ++IFLA_PARENT_DEV_NAME = 56, ++IFLA_PARENT_DEV_BUS_NAME = 57, ++IFLA_GRO_MAX_SIZE = 58, ++IFLA_TSO_MAX_SIZE = 59, ++IFLA_TSO_MAX_SEGS = 60, ++IFLA_ALLMULTI = 61, ++IFLA_DEVLINK_PORT = 62, ++__IFLA_MAX = 63, ++} ++pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC; ++pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK; ++pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; ++pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT; ++pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_3 { ++IFLA_PROTO_DOWN_REASON_UNSPEC = 0, ++IFLA_PROTO_DOWN_REASON_MASK = 1, ++IFLA_PROTO_DOWN_REASON_VALUE = 2, ++__IFLA_PROTO_DOWN_REASON_CNT = 3, ++} ++pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC; ++pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF; ++pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_4 { ++IFLA_INET_UNSPEC = 0, ++IFLA_INET_CONF = 1, ++__IFLA_INET_MAX = 2, ++} ++pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC; ++pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS; ++pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF; ++pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS; ++pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST; ++pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO; ++pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS; ++pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN; ++pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE; ++pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU; ++pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_5 { ++IFLA_INET6_UNSPEC = 0, ++IFLA_INET6_FLAGS = 1, ++IFLA_INET6_CONF = 2, ++IFLA_INET6_STATS = 3, ++IFLA_INET6_MCAST = 4, ++IFLA_INET6_CACHEINFO = 5, ++IFLA_INET6_ICMP6STATS = 6, ++IFLA_INET6_TOKEN = 7, ++IFLA_INET6_ADDR_GEN_MODE = 8, ++IFLA_INET6_RA_MTU = 9, ++__IFLA_INET6_MAX = 10, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum in6_addr_gen_mode { ++IN6_ADDR_GEN_MODE_EUI64 = 0, ++IN6_ADDR_GEN_MODE_NONE = 1, ++IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2, ++IN6_ADDR_GEN_MODE_RANDOM = 3, ++} ++pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC; ++pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY; ++pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME; ++pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE; ++pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME; ++pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE; ++pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY; ++pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING; ++pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL; ++pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK; ++pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID; ++pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID; ++pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT; ++pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST; ++pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE; ++pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED; ++pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER; ++pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER; ++pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER; ++pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER; ++pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR; ++pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH; ++pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER; ++pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING; ++pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR; ++pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER; ++pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY; ++pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX; ++pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT; ++pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT; ++pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL; ++pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL; ++pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL; ++pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL; ++pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL; ++pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL; ++pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES; ++pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES; ++pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES; ++pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID; ++pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD; ++pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED; ++pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED; ++pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION; ++pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION; ++pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT; ++pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT; ++pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE; ++pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_6 { ++IFLA_BR_UNSPEC = 0, ++IFLA_BR_FORWARD_DELAY = 1, ++IFLA_BR_HELLO_TIME = 2, ++IFLA_BR_MAX_AGE = 3, ++IFLA_BR_AGEING_TIME = 4, ++IFLA_BR_STP_STATE = 5, ++IFLA_BR_PRIORITY = 6, ++IFLA_BR_VLAN_FILTERING = 7, ++IFLA_BR_VLAN_PROTOCOL = 8, ++IFLA_BR_GROUP_FWD_MASK = 9, ++IFLA_BR_ROOT_ID = 10, ++IFLA_BR_BRIDGE_ID = 11, ++IFLA_BR_ROOT_PORT = 12, ++IFLA_BR_ROOT_PATH_COST = 13, ++IFLA_BR_TOPOLOGY_CHANGE = 14, ++IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15, ++IFLA_BR_HELLO_TIMER = 16, ++IFLA_BR_TCN_TIMER = 17, ++IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18, ++IFLA_BR_GC_TIMER = 19, ++IFLA_BR_GROUP_ADDR = 20, ++IFLA_BR_FDB_FLUSH = 21, ++IFLA_BR_MCAST_ROUTER = 22, ++IFLA_BR_MCAST_SNOOPING = 23, ++IFLA_BR_MCAST_QUERY_USE_IFADDR = 24, ++IFLA_BR_MCAST_QUERIER = 25, ++IFLA_BR_MCAST_HASH_ELASTICITY = 26, ++IFLA_BR_MCAST_HASH_MAX = 27, ++IFLA_BR_MCAST_LAST_MEMBER_CNT = 28, ++IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29, ++IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30, ++IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31, ++IFLA_BR_MCAST_QUERIER_INTVL = 32, ++IFLA_BR_MCAST_QUERY_INTVL = 33, ++IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34, ++IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35, ++IFLA_BR_NF_CALL_IPTABLES = 36, ++IFLA_BR_NF_CALL_IP6TABLES = 37, ++IFLA_BR_NF_CALL_ARPTABLES = 38, ++IFLA_BR_VLAN_DEFAULT_PVID = 39, ++IFLA_BR_PAD = 40, ++IFLA_BR_VLAN_STATS_ENABLED = 41, ++IFLA_BR_MCAST_STATS_ENABLED = 42, ++IFLA_BR_MCAST_IGMP_VERSION = 43, ++IFLA_BR_MCAST_MLD_VERSION = 44, ++IFLA_BR_VLAN_STATS_PER_PORT = 45, ++IFLA_BR_MULTI_BOOLOPT = 46, ++IFLA_BR_MCAST_QUERIER_STATE = 47, ++__IFLA_BR_MAX = 48, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_bridge_id { ++pub prio: [__u8; 2usize], ++pub addr: [__u8; 6usize], ++} ++pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC; ++pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_7 { ++BRIDGE_MODE_UNSPEC = 0, ++BRIDGE_MODE_HAIRPIN = 1, ++} ++pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC; ++pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE; ++pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY; ++pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST; ++pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE; ++pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD; ++pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT; ++pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE; ++pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING; ++pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD; ++pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP; ++pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC; ++pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI; ++pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID; ++pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID; ++pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT; ++pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST; ++pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID; ++pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO; ++pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK; ++pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING; ++pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER; ++pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER; ++pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER; ++pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH; ++pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER; ++pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD; ++pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD; ++pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST; ++pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL; ++pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD; ++pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK; ++pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS; ++pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED; ++pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT; ++pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN; ++pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN; ++pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT; ++pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT; ++pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED; ++pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB; ++pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_8 { ++IFLA_BRPORT_UNSPEC = 0, ++IFLA_BRPORT_STATE = 1, ++IFLA_BRPORT_PRIORITY = 2, ++IFLA_BRPORT_COST = 3, ++IFLA_BRPORT_MODE = 4, ++IFLA_BRPORT_GUARD = 5, ++IFLA_BRPORT_PROTECT = 6, ++IFLA_BRPORT_FAST_LEAVE = 7, ++IFLA_BRPORT_LEARNING = 8, ++IFLA_BRPORT_UNICAST_FLOOD = 9, ++IFLA_BRPORT_PROXYARP = 10, ++IFLA_BRPORT_LEARNING_SYNC = 11, ++IFLA_BRPORT_PROXYARP_WIFI = 12, ++IFLA_BRPORT_ROOT_ID = 13, ++IFLA_BRPORT_BRIDGE_ID = 14, ++IFLA_BRPORT_DESIGNATED_PORT = 15, ++IFLA_BRPORT_DESIGNATED_COST = 16, ++IFLA_BRPORT_ID = 17, ++IFLA_BRPORT_NO = 18, ++IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19, ++IFLA_BRPORT_CONFIG_PENDING = 20, ++IFLA_BRPORT_MESSAGE_AGE_TIMER = 21, ++IFLA_BRPORT_FORWARD_DELAY_TIMER = 22, ++IFLA_BRPORT_HOLD_TIMER = 23, ++IFLA_BRPORT_FLUSH = 24, ++IFLA_BRPORT_MULTICAST_ROUTER = 25, ++IFLA_BRPORT_PAD = 26, ++IFLA_BRPORT_MCAST_FLOOD = 27, ++IFLA_BRPORT_MCAST_TO_UCAST = 28, ++IFLA_BRPORT_VLAN_TUNNEL = 29, ++IFLA_BRPORT_BCAST_FLOOD = 30, ++IFLA_BRPORT_GROUP_FWD_MASK = 31, ++IFLA_BRPORT_NEIGH_SUPPRESS = 32, ++IFLA_BRPORT_ISOLATED = 33, ++IFLA_BRPORT_BACKUP_PORT = 34, ++IFLA_BRPORT_MRP_RING_OPEN = 35, ++IFLA_BRPORT_MRP_IN_OPEN = 36, ++IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37, ++IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38, ++IFLA_BRPORT_LOCKED = 39, ++IFLA_BRPORT_MAB = 40, ++__IFLA_BRPORT_MAX = 41, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_cacheinfo { ++pub max_reasm_len: __u32, ++pub tstamp: __u32, ++pub reachable_time: __u32, ++pub retrans_time: __u32, ++} ++pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC; ++pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND; ++pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA; ++pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS; ++pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND; ++pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA; ++pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_9 { ++IFLA_INFO_UNSPEC = 0, ++IFLA_INFO_KIND = 1, ++IFLA_INFO_DATA = 2, ++IFLA_INFO_XSTATS = 3, ++IFLA_INFO_SLAVE_KIND = 4, ++IFLA_INFO_SLAVE_DATA = 5, ++__IFLA_INFO_MAX = 6, ++} ++pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC; ++pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID; ++pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS; ++pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS; ++pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS; ++pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL; ++pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_10 { ++IFLA_VLAN_UNSPEC = 0, ++IFLA_VLAN_ID = 1, ++IFLA_VLAN_FLAGS = 2, ++IFLA_VLAN_EGRESS_QOS = 3, ++IFLA_VLAN_INGRESS_QOS = 4, ++IFLA_VLAN_PROTOCOL = 5, ++__IFLA_VLAN_MAX = 6, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vlan_flags { ++pub flags: __u32, ++pub mask: __u32, ++} ++pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC; ++pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING; ++pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_11 { ++IFLA_VLAN_QOS_UNSPEC = 0, ++IFLA_VLAN_QOS_MAPPING = 1, ++__IFLA_VLAN_QOS_MAX = 2, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vlan_qos_mapping { ++pub from: __u32, ++pub to: __u32, ++} ++pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC; ++pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE; ++pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS; ++pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE; ++pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR; ++pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA; ++pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT; ++pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN; ++pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED; ++pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_12 { ++IFLA_MACVLAN_UNSPEC = 0, ++IFLA_MACVLAN_MODE = 1, ++IFLA_MACVLAN_FLAGS = 2, ++IFLA_MACVLAN_MACADDR_MODE = 3, ++IFLA_MACVLAN_MACADDR = 4, ++IFLA_MACVLAN_MACADDR_DATA = 5, ++IFLA_MACVLAN_MACADDR_COUNT = 6, ++IFLA_MACVLAN_BC_QUEUE_LEN = 7, ++IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8, ++__IFLA_MACVLAN_MAX = 9, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum macvlan_mode { ++MACVLAN_MODE_PRIVATE = 1, ++MACVLAN_MODE_VEPA = 2, ++MACVLAN_MODE_BRIDGE = 4, ++MACVLAN_MODE_PASSTHRU = 8, ++MACVLAN_MODE_SOURCE = 16, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum macvlan_macaddr_mode { ++MACVLAN_MACADDR_ADD = 0, ++MACVLAN_MACADDR_DEL = 1, ++MACVLAN_MACADDR_FLUSH = 2, ++MACVLAN_MACADDR_SET = 3, ++} ++pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC; ++pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE; ++pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_13 { ++IFLA_VRF_UNSPEC = 0, ++IFLA_VRF_TABLE = 1, ++__IFLA_VRF_MAX = 2, ++} ++pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC; ++pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE; ++pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_14 { ++IFLA_VRF_PORT_UNSPEC = 0, ++IFLA_VRF_PORT_TABLE = 1, ++__IFLA_VRF_PORT_MAX = 2, ++} ++pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC; ++pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI; ++pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT; ++pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN; ++pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE; ++pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW; ++pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA; ++pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT; ++pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT; ++pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI; ++pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES; ++pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB; ++pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT; ++pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION; ++pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD; ++pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD; ++pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_15 { ++IFLA_MACSEC_UNSPEC = 0, ++IFLA_MACSEC_SCI = 1, ++IFLA_MACSEC_PORT = 2, ++IFLA_MACSEC_ICV_LEN = 3, ++IFLA_MACSEC_CIPHER_SUITE = 4, ++IFLA_MACSEC_WINDOW = 5, ++IFLA_MACSEC_ENCODING_SA = 6, ++IFLA_MACSEC_ENCRYPT = 7, ++IFLA_MACSEC_PROTECT = 8, ++IFLA_MACSEC_INC_SCI = 9, ++IFLA_MACSEC_ES = 10, ++IFLA_MACSEC_SCB = 11, ++IFLA_MACSEC_REPLAY_PROTECT = 12, ++IFLA_MACSEC_VALIDATION = 13, ++IFLA_MACSEC_PAD = 14, ++IFLA_MACSEC_OFFLOAD = 15, ++__IFLA_MACSEC_MAX = 16, ++} ++pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC; ++pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK; ++pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID; ++pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA; ++pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_16 { ++IFLA_XFRM_UNSPEC = 0, ++IFLA_XFRM_LINK = 1, ++IFLA_XFRM_IF_ID = 2, ++IFLA_XFRM_COLLECT_METADATA = 3, ++__IFLA_XFRM_MAX = 4, ++} ++impl macsec_validation_type { ++pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum macsec_validation_type { ++MACSEC_VALIDATE_DISABLED = 0, ++MACSEC_VALIDATE_CHECK = 1, ++MACSEC_VALIDATE_STRICT = 2, ++__MACSEC_VALIDATE_END = 3, ++} ++impl macsec_offload { ++pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum macsec_offload { ++MACSEC_OFFLOAD_OFF = 0, ++MACSEC_OFFLOAD_PHY = 1, ++MACSEC_OFFLOAD_MAC = 2, ++__MACSEC_OFFLOAD_END = 3, ++} ++pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC; ++pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE; ++pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS; ++pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_17 { ++IFLA_IPVLAN_UNSPEC = 0, ++IFLA_IPVLAN_MODE = 1, ++IFLA_IPVLAN_FLAGS = 2, ++__IFLA_IPVLAN_MAX = 3, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum ipvlan_mode { ++IPVLAN_MODE_L2 = 0, ++IPVLAN_MODE_L3 = 1, ++IPVLAN_MODE_L3S = 2, ++IPVLAN_MODE_MAX = 3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tunnel_msg { ++pub family: __u8, ++pub flags: __u8, ++pub reserved2: __u16, ++pub ifindex: __u32, ++} ++pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC; ++pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES; ++pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS; ++pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS; ++pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS; ++pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES; ++pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS; ++pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS; ++pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS; ++pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD; ++pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_18 { ++VNIFILTER_ENTRY_STATS_UNSPEC = 0, ++VNIFILTER_ENTRY_STATS_RX_BYTES = 1, ++VNIFILTER_ENTRY_STATS_RX_PKTS = 2, ++VNIFILTER_ENTRY_STATS_RX_DROPS = 3, ++VNIFILTER_ENTRY_STATS_RX_ERRORS = 4, ++VNIFILTER_ENTRY_STATS_TX_BYTES = 5, ++VNIFILTER_ENTRY_STATS_TX_PKTS = 6, ++VNIFILTER_ENTRY_STATS_TX_DROPS = 7, ++VNIFILTER_ENTRY_STATS_TX_ERRORS = 8, ++VNIFILTER_ENTRY_STATS_PAD = 9, ++__VNIFILTER_ENTRY_STATS_MAX = 10, ++} ++pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC; ++pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START; ++pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END; ++pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP; ++pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6; ++pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS; ++pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_19 { ++VXLAN_VNIFILTER_ENTRY_UNSPEC = 0, ++VXLAN_VNIFILTER_ENTRY_START = 1, ++VXLAN_VNIFILTER_ENTRY_END = 2, ++VXLAN_VNIFILTER_ENTRY_GROUP = 3, ++VXLAN_VNIFILTER_ENTRY_GROUP6 = 4, ++VXLAN_VNIFILTER_ENTRY_STATS = 5, ++__VXLAN_VNIFILTER_ENTRY_MAX = 6, ++} ++pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC; ++pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY; ++pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_20 { ++VXLAN_VNIFILTER_UNSPEC = 0, ++VXLAN_VNIFILTER_ENTRY = 1, ++__VXLAN_VNIFILTER_MAX = 2, ++} ++pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC; ++pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID; ++pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP; ++pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK; ++pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL; ++pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL; ++pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS; ++pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING; ++pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING; ++pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT; ++pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE; ++pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY; ++pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC; ++pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS; ++pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS; ++pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT; ++pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6; ++pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6; ++pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM; ++pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX; ++pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX; ++pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX; ++pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX; ++pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP; ++pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL; ++pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA; ++pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL; ++pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE; ++pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT; ++pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF; ++pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER; ++pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_21 { ++IFLA_VXLAN_UNSPEC = 0, ++IFLA_VXLAN_ID = 1, ++IFLA_VXLAN_GROUP = 2, ++IFLA_VXLAN_LINK = 3, ++IFLA_VXLAN_LOCAL = 4, ++IFLA_VXLAN_TTL = 5, ++IFLA_VXLAN_TOS = 6, ++IFLA_VXLAN_LEARNING = 7, ++IFLA_VXLAN_AGEING = 8, ++IFLA_VXLAN_LIMIT = 9, ++IFLA_VXLAN_PORT_RANGE = 10, ++IFLA_VXLAN_PROXY = 11, ++IFLA_VXLAN_RSC = 12, ++IFLA_VXLAN_L2MISS = 13, ++IFLA_VXLAN_L3MISS = 14, ++IFLA_VXLAN_PORT = 15, ++IFLA_VXLAN_GROUP6 = 16, ++IFLA_VXLAN_LOCAL6 = 17, ++IFLA_VXLAN_UDP_CSUM = 18, ++IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19, ++IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20, ++IFLA_VXLAN_REMCSUM_TX = 21, ++IFLA_VXLAN_REMCSUM_RX = 22, ++IFLA_VXLAN_GBP = 23, ++IFLA_VXLAN_REMCSUM_NOPARTIAL = 24, ++IFLA_VXLAN_COLLECT_METADATA = 25, ++IFLA_VXLAN_LABEL = 26, ++IFLA_VXLAN_GPE = 27, ++IFLA_VXLAN_TTL_INHERIT = 28, ++IFLA_VXLAN_DF = 29, ++IFLA_VXLAN_VNIFILTER = 30, ++__IFLA_VXLAN_MAX = 31, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vxlan_port_range { ++pub low: __be16, ++pub high: __be16, ++} ++impl ifla_vxlan_df { ++pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum ifla_vxlan_df { ++VXLAN_DF_UNSET = 0, ++VXLAN_DF_SET = 1, ++VXLAN_DF_INHERIT = 2, ++__VXLAN_DF_END = 3, ++} ++pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC; ++pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID; ++pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE; ++pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL; ++pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS; ++pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT; ++pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA; ++pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6; ++pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM; ++pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX; ++pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX; ++pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL; ++pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT; ++pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF; ++pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT; ++pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_22 { ++IFLA_GENEVE_UNSPEC = 0, ++IFLA_GENEVE_ID = 1, ++IFLA_GENEVE_REMOTE = 2, ++IFLA_GENEVE_TTL = 3, ++IFLA_GENEVE_TOS = 4, ++IFLA_GENEVE_PORT = 5, ++IFLA_GENEVE_COLLECT_METADATA = 6, ++IFLA_GENEVE_REMOTE6 = 7, ++IFLA_GENEVE_UDP_CSUM = 8, ++IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9, ++IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10, ++IFLA_GENEVE_LABEL = 11, ++IFLA_GENEVE_TTL_INHERIT = 12, ++IFLA_GENEVE_DF = 13, ++IFLA_GENEVE_INNER_PROTO_INHERIT = 14, ++__IFLA_GENEVE_MAX = 15, ++} ++impl ifla_geneve_df { ++pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT; ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum ifla_geneve_df { ++GENEVE_DF_UNSET = 0, ++GENEVE_DF_SET = 1, ++GENEVE_DF_INHERIT = 2, ++__GENEVE_DF_END = 3, ++} ++pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC; ++pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT; ++pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE; ++pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN; ++pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE; ++pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_23 { ++IFLA_BAREUDP_UNSPEC = 0, ++IFLA_BAREUDP_PORT = 1, ++IFLA_BAREUDP_ETHERTYPE = 2, ++IFLA_BAREUDP_SRCPORT_MIN = 3, ++IFLA_BAREUDP_MULTIPROTO_MODE = 4, ++__IFLA_BAREUDP_MAX = 5, ++} ++pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC; ++pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD; ++pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_24 { ++IFLA_PPP_UNSPEC = 0, ++IFLA_PPP_DEV_FD = 1, ++__IFLA_PPP_MAX = 2, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum ifla_gtp_role { ++GTP_ROLE_GGSN = 0, ++GTP_ROLE_SGSN = 1, ++} ++pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC; ++pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0; ++pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1; ++pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE; ++pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE; ++pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS; ++pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT; ++pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_25 { ++IFLA_GTP_UNSPEC = 0, ++IFLA_GTP_FD0 = 1, ++IFLA_GTP_FD1 = 2, ++IFLA_GTP_PDP_HASHSIZE = 3, ++IFLA_GTP_ROLE = 4, ++IFLA_GTP_CREATE_SOCKETS = 5, ++IFLA_GTP_RESTART_COUNT = 6, ++__IFLA_GTP_MAX = 7, ++} ++pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC; ++pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE; ++pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE; ++pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON; ++pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY; ++pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY; ++pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER; ++pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL; ++pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET; ++pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE; ++pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS; ++pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY; ++pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT; ++pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC; ++pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY; ++pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP; ++pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF; ++pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE; ++pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS; ++pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL; ++pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE; ++pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE; ++pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT; ++pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO; ++pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO; ++pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY; ++pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM; ++pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB; ++pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY; ++pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE; ++pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX; ++pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET; ++pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_26 { ++IFLA_BOND_UNSPEC = 0, ++IFLA_BOND_MODE = 1, ++IFLA_BOND_ACTIVE_SLAVE = 2, ++IFLA_BOND_MIIMON = 3, ++IFLA_BOND_UPDELAY = 4, ++IFLA_BOND_DOWNDELAY = 5, ++IFLA_BOND_USE_CARRIER = 6, ++IFLA_BOND_ARP_INTERVAL = 7, ++IFLA_BOND_ARP_IP_TARGET = 8, ++IFLA_BOND_ARP_VALIDATE = 9, ++IFLA_BOND_ARP_ALL_TARGETS = 10, ++IFLA_BOND_PRIMARY = 11, ++IFLA_BOND_PRIMARY_RESELECT = 12, ++IFLA_BOND_FAIL_OVER_MAC = 13, ++IFLA_BOND_XMIT_HASH_POLICY = 14, ++IFLA_BOND_RESEND_IGMP = 15, ++IFLA_BOND_NUM_PEER_NOTIF = 16, ++IFLA_BOND_ALL_SLAVES_ACTIVE = 17, ++IFLA_BOND_MIN_LINKS = 18, ++IFLA_BOND_LP_INTERVAL = 19, ++IFLA_BOND_PACKETS_PER_SLAVE = 20, ++IFLA_BOND_AD_LACP_RATE = 21, ++IFLA_BOND_AD_SELECT = 22, ++IFLA_BOND_AD_INFO = 23, ++IFLA_BOND_AD_ACTOR_SYS_PRIO = 24, ++IFLA_BOND_AD_USER_PORT_KEY = 25, ++IFLA_BOND_AD_ACTOR_SYSTEM = 26, ++IFLA_BOND_TLB_DYNAMIC_LB = 27, ++IFLA_BOND_PEER_NOTIF_DELAY = 28, ++IFLA_BOND_AD_LACP_ACTIVE = 29, ++IFLA_BOND_MISSED_MAX = 30, ++IFLA_BOND_NS_IP6_TARGET = 31, ++__IFLA_BOND_MAX = 32, ++} ++pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC; ++pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR; ++pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS; ++pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY; ++pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY; ++pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC; ++pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_27 { ++IFLA_BOND_AD_INFO_UNSPEC = 0, ++IFLA_BOND_AD_INFO_AGGREGATOR = 1, ++IFLA_BOND_AD_INFO_NUM_PORTS = 2, ++IFLA_BOND_AD_INFO_ACTOR_KEY = 3, ++IFLA_BOND_AD_INFO_PARTNER_KEY = 4, ++IFLA_BOND_AD_INFO_PARTNER_MAC = 5, ++__IFLA_BOND_AD_INFO_MAX = 6, ++} ++pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC; ++pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE; ++pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS; ++pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT; ++pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR; ++pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID; ++pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID; ++pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE; ++pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE; ++pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO; ++pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_28 { ++IFLA_BOND_SLAVE_UNSPEC = 0, ++IFLA_BOND_SLAVE_STATE = 1, ++IFLA_BOND_SLAVE_MII_STATUS = 2, ++IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3, ++IFLA_BOND_SLAVE_PERM_HWADDR = 4, ++IFLA_BOND_SLAVE_QUEUE_ID = 5, ++IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6, ++IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7, ++IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8, ++IFLA_BOND_SLAVE_PRIO = 9, ++__IFLA_BOND_SLAVE_MAX = 10, ++} ++pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC; ++pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO; ++pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_29 { ++IFLA_VF_INFO_UNSPEC = 0, ++IFLA_VF_INFO = 1, ++__IFLA_VF_INFO_MAX = 2, ++} ++pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC; ++pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC; ++pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN; ++pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE; ++pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK; ++pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE; ++pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE; ++pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN; ++pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS; ++pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST; ++pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID; ++pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID; ++pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST; ++pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST; ++pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_30 { ++IFLA_VF_UNSPEC = 0, ++IFLA_VF_MAC = 1, ++IFLA_VF_VLAN = 2, ++IFLA_VF_TX_RATE = 3, ++IFLA_VF_SPOOFCHK = 4, ++IFLA_VF_LINK_STATE = 5, ++IFLA_VF_RATE = 6, ++IFLA_VF_RSS_QUERY_EN = 7, ++IFLA_VF_STATS = 8, ++IFLA_VF_TRUST = 9, ++IFLA_VF_IB_NODE_GUID = 10, ++IFLA_VF_IB_PORT_GUID = 11, ++IFLA_VF_VLAN_LIST = 12, ++IFLA_VF_BROADCAST = 13, ++__IFLA_VF_MAX = 14, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_mac { ++pub vf: __u32, ++pub mac: [__u8; 32usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_broadcast { ++pub broadcast: [__u8; 32usize], ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_vlan { ++pub vf: __u32, ++pub vlan: __u32, ++pub qos: __u32, ++} ++pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC; ++pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO; ++pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_31 { ++IFLA_VF_VLAN_INFO_UNSPEC = 0, ++IFLA_VF_VLAN_INFO = 1, ++__IFLA_VF_VLAN_INFO_MAX = 2, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_vlan_info { ++pub vf: __u32, ++pub vlan: __u32, ++pub qos: __u32, ++pub vlan_proto: __be16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_tx_rate { ++pub vf: __u32, ++pub rate: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_rate { ++pub vf: __u32, ++pub min_tx_rate: __u32, ++pub max_tx_rate: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_spoofchk { ++pub vf: __u32, ++pub setting: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_guid { ++pub vf: __u32, ++pub guid: __u64, ++} ++pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO; ++pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE; ++pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE; ++pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_32 { ++IFLA_VF_LINK_STATE_AUTO = 0, ++IFLA_VF_LINK_STATE_ENABLE = 1, ++IFLA_VF_LINK_STATE_DISABLE = 2, ++__IFLA_VF_LINK_STATE_MAX = 3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_link_state { ++pub vf: __u32, ++pub link_state: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_rss_query_en { ++pub vf: __u32, ++pub setting: __u32, ++} ++pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS; ++pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS; ++pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES; ++pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES; ++pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST; ++pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST; ++pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD; ++pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED; ++pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED; ++pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_33 { ++IFLA_VF_STATS_RX_PACKETS = 0, ++IFLA_VF_STATS_TX_PACKETS = 1, ++IFLA_VF_STATS_RX_BYTES = 2, ++IFLA_VF_STATS_TX_BYTES = 3, ++IFLA_VF_STATS_BROADCAST = 4, ++IFLA_VF_STATS_MULTICAST = 5, ++IFLA_VF_STATS_PAD = 6, ++IFLA_VF_STATS_RX_DROPPED = 7, ++IFLA_VF_STATS_TX_DROPPED = 8, ++__IFLA_VF_STATS_MAX = 9, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_vf_trust { ++pub vf: __u32, ++pub setting: __u32, ++} ++pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC; ++pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT; ++pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_34 { ++IFLA_VF_PORT_UNSPEC = 0, ++IFLA_VF_PORT = 1, ++__IFLA_VF_PORT_MAX = 2, ++} ++pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC; ++pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF; ++pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE; ++pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE; ++pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID; ++pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID; ++pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST; ++pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE; ++pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_35 { ++IFLA_PORT_UNSPEC = 0, ++IFLA_PORT_VF = 1, ++IFLA_PORT_PROFILE = 2, ++IFLA_PORT_VSI_TYPE = 3, ++IFLA_PORT_INSTANCE_UUID = 4, ++IFLA_PORT_HOST_UUID = 5, ++IFLA_PORT_REQUEST = 6, ++IFLA_PORT_RESPONSE = 7, ++__IFLA_PORT_MAX = 8, ++} ++pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE; ++pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR; ++pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE; ++pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_36 { ++PORT_REQUEST_PREASSOCIATE = 0, ++PORT_REQUEST_PREASSOCIATE_RR = 1, ++PORT_REQUEST_ASSOCIATE = 2, ++PORT_REQUEST_DISASSOCIATE = 3, ++} ++pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS; ++pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT; ++pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES; ++pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID; ++pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION; ++pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION; ++pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC; ++pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS; ++pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS; ++pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID; ++pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE; ++pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES; ++pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_37 { ++PORT_VDP_RESPONSE_SUCCESS = 0, ++PORT_VDP_RESPONSE_INVALID_FORMAT = 1, ++PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2, ++PORT_VDP_RESPONSE_UNUSED_VTID = 3, ++PORT_VDP_RESPONSE_VTID_VIOLATION = 4, ++PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5, ++PORT_VDP_RESPONSE_OUT_OF_SYNC = 6, ++PORT_PROFILE_RESPONSE_SUCCESS = 256, ++PORT_PROFILE_RESPONSE_INPROGRESS = 257, ++PORT_PROFILE_RESPONSE_INVALID = 258, ++PORT_PROFILE_RESPONSE_BADSTATE = 259, ++PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260, ++PORT_PROFILE_RESPONSE_ERROR = 261, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_port_vsi { ++pub vsi_mgr_id: __u8, ++pub vsi_type_id: [__u8; 3usize], ++pub vsi_type_version: __u8, ++pub pad: [__u8; 3usize], ++} ++pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC; ++pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY; ++pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE; ++pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST; ++pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_38 { ++IFLA_IPOIB_UNSPEC = 0, ++IFLA_IPOIB_PKEY = 1, ++IFLA_IPOIB_MODE = 2, ++IFLA_IPOIB_UMCAST = 3, ++__IFLA_IPOIB_MAX = 4, ++} ++pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM; ++pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_39 { ++IPOIB_MODE_DATAGRAM = 0, ++IPOIB_MODE_CONNECTED = 1, ++} ++pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR; ++pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP; ++pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_40 { ++HSR_PROTOCOL_HSR = 0, ++HSR_PROTOCOL_PRP = 1, ++HSR_PROTOCOL_MAX = 2, ++} ++pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC; ++pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1; ++pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2; ++pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC; ++pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR; ++pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR; ++pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION; ++pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL; ++pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_41 { ++IFLA_HSR_UNSPEC = 0, ++IFLA_HSR_SLAVE1 = 1, ++IFLA_HSR_SLAVE2 = 2, ++IFLA_HSR_MULTICAST_SPEC = 3, ++IFLA_HSR_SUPERVISION_ADDR = 4, ++IFLA_HSR_SEQ_NR = 5, ++IFLA_HSR_VERSION = 6, ++IFLA_HSR_PROTOCOL = 7, ++__IFLA_HSR_MAX = 8, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct if_stats_msg { ++pub family: __u8, ++pub pad1: __u8, ++pub pad2: __u16, ++pub ifindex: __u32, ++pub filter_mask: __u32, ++} ++pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC; ++pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64; ++pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS; ++pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE; ++pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS; ++pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC; ++pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_42 { ++IFLA_STATS_UNSPEC = 0, ++IFLA_STATS_LINK_64 = 1, ++IFLA_STATS_LINK_XSTATS = 2, ++IFLA_STATS_LINK_XSTATS_SLAVE = 3, ++IFLA_STATS_LINK_OFFLOAD_XSTATS = 4, ++IFLA_STATS_AF_SPEC = 5, ++__IFLA_STATS_MAX = 6, ++} ++pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC; ++pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS; ++pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS; ++pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_43 { ++IFLA_STATS_GETSET_UNSPEC = 0, ++IFLA_STATS_GET_FILTERS = 1, ++IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, ++__IFLA_STATS_GETSET_MAX = 3, ++} ++pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC; ++pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE; ++pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND; ++pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_44 { ++LINK_XSTATS_TYPE_UNSPEC = 0, ++LINK_XSTATS_TYPE_BRIDGE = 1, ++LINK_XSTATS_TYPE_BOND = 2, ++__LINK_XSTATS_TYPE_MAX = 3, ++} ++pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC; ++pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT; ++pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO; ++pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS; ++pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_45 { ++IFLA_OFFLOAD_XSTATS_UNSPEC = 0, ++IFLA_OFFLOAD_XSTATS_CPU_HIT = 1, ++IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2, ++IFLA_OFFLOAD_XSTATS_L3_STATS = 3, ++__IFLA_OFFLOAD_XSTATS_MAX = 4, ++} ++pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC; ++pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST; ++pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED; ++pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_46 { ++IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0, ++IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1, ++IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, ++__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, ++} ++pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE; ++pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV; ++pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB; ++pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW; ++pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_47 { ++XDP_ATTACHED_NONE = 0, ++XDP_ATTACHED_DRV = 1, ++XDP_ATTACHED_SKB = 2, ++XDP_ATTACHED_HW = 3, ++XDP_ATTACHED_MULTI = 4, ++} ++pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC; ++pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD; ++pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED; ++pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS; ++pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID; ++pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID; ++pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID; ++pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID; ++pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD; ++pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_48 { ++IFLA_XDP_UNSPEC = 0, ++IFLA_XDP_FD = 1, ++IFLA_XDP_ATTACHED = 2, ++IFLA_XDP_FLAGS = 3, ++IFLA_XDP_PROG_ID = 4, ++IFLA_XDP_DRV_PROG_ID = 5, ++IFLA_XDP_SKB_PROG_ID = 6, ++IFLA_XDP_HW_PROG_ID = 7, ++IFLA_XDP_EXPECTED_FD = 8, ++__IFLA_XDP_MAX = 9, ++} ++pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE; ++pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT; ++pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES; ++pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER; ++pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS; ++pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND; ++pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_49 { ++IFLA_EVENT_NONE = 0, ++IFLA_EVENT_REBOOT = 1, ++IFLA_EVENT_FEATURES = 2, ++IFLA_EVENT_BONDING_FAILOVER = 3, ++IFLA_EVENT_NOTIFY_PEERS = 4, ++IFLA_EVENT_IGMP_RESEND = 5, ++IFLA_EVENT_BONDING_OPTIONS = 6, ++} ++pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC; ++pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER; ++pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP; ++pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE; ++pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI; ++pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR; ++pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST; ++pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE; ++pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES; ++pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES; ++pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_50 { ++IFLA_TUN_UNSPEC = 0, ++IFLA_TUN_OWNER = 1, ++IFLA_TUN_GROUP = 2, ++IFLA_TUN_TYPE = 3, ++IFLA_TUN_PI = 4, ++IFLA_TUN_VNET_HDR = 5, ++IFLA_TUN_PERSIST = 6, ++IFLA_TUN_MULTI_QUEUE = 7, ++IFLA_TUN_NUM_QUEUES = 8, ++IFLA_TUN_NUM_DISABLED_QUEUES = 9, ++__IFLA_TUN_MAX = 10, ++} ++pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC; ++pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID; ++pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS; ++pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_51 { ++IFLA_RMNET_UNSPEC = 0, ++IFLA_RMNET_MUX_ID = 1, ++IFLA_RMNET_FLAGS = 2, ++__IFLA_RMNET_MAX = 3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifla_rmnet_flags { ++pub flags: __u32, ++pub mask: __u32, ++} ++pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC; ++pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET; ++pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_52 { ++IFLA_MCTP_UNSPEC = 0, ++IFLA_MCTP_NET = 1, ++__IFLA_MCTP_MAX = 2, ++} ++pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC; ++pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER; ++pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_53 { ++IFLA_DSA_UNSPEC = 0, ++IFLA_DSA_MASTER = 1, ++__IFLA_DSA_MAX = 2, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifaddrmsg { ++pub ifa_family: __u8, ++pub ifa_prefixlen: __u8, ++pub ifa_flags: __u8, ++pub ifa_scope: __u8, ++pub ifa_index: __u32, ++} ++pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC; ++pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS; ++pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL; ++pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL; ++pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST; ++pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST; ++pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO; ++pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST; ++pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS; ++pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY; ++pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID; ++pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO; ++pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_54 { ++IFA_UNSPEC = 0, ++IFA_ADDRESS = 1, ++IFA_LOCAL = 2, ++IFA_LABEL = 3, ++IFA_BROADCAST = 4, ++IFA_ANYCAST = 5, ++IFA_CACHEINFO = 6, ++IFA_MULTICAST = 7, ++IFA_FLAGS = 8, ++IFA_RT_PRIORITY = 9, ++IFA_TARGET_NETNSID = 10, ++IFA_PROTO = 11, ++__IFA_MAX = 12, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifa_cacheinfo { ++pub ifa_prefered: __u32, ++pub ifa_valid: __u32, ++pub cstamp: __u32, ++pub tstamp: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ndmsg { ++pub ndm_family: __u8, ++pub ndm_pad1: __u8, ++pub ndm_pad2: __u16, ++pub ndm_ifindex: __s32, ++pub ndm_state: __u16, ++pub ndm_flags: __u8, ++pub ndm_type: __u8, ++} ++pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC; ++pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST; ++pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR; ++pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO; ++pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES; ++pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN; ++pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT; ++pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI; ++pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX; ++pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER; ++pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID; ++pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI; ++pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL; ++pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID; ++pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS; ++pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT; ++pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK; ++pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK; ++pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_55 { ++NDA_UNSPEC = 0, ++NDA_DST = 1, ++NDA_LLADDR = 2, ++NDA_CACHEINFO = 3, ++NDA_PROBES = 4, ++NDA_VLAN = 5, ++NDA_PORT = 6, ++NDA_VNI = 7, ++NDA_IFINDEX = 8, ++NDA_MASTER = 9, ++NDA_LINK_NETNSID = 10, ++NDA_SRC_VNI = 11, ++NDA_PROTOCOL = 12, ++NDA_NH_ID = 13, ++NDA_FDB_EXT_ATTRS = 14, ++NDA_FLAGS_EXT = 15, ++NDA_NDM_STATE_MASK = 16, ++NDA_NDM_FLAGS_MASK = 17, ++__NDA_MAX = 18, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nda_cacheinfo { ++pub ndm_confirmed: __u32, ++pub ndm_used: __u32, ++pub ndm_updated: __u32, ++pub ndm_refcnt: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ndt_stats { ++pub ndts_allocs: __u64, ++pub ndts_destroys: __u64, ++pub ndts_hash_grows: __u64, ++pub ndts_res_failed: __u64, ++pub ndts_lookups: __u64, ++pub ndts_hits: __u64, ++pub ndts_rcv_probes_mcast: __u64, ++pub ndts_rcv_probes_ucast: __u64, ++pub ndts_periodic_gc_runs: __u64, ++pub ndts_forced_gc_runs: __u64, ++pub ndts_table_fulls: __u64, ++} ++pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC; ++pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX; ++pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT; ++pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME; ++pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME; ++pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME; ++pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME; ++pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME; ++pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN; ++pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES; ++pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES; ++pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES; ++pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY; ++pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY; ++pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN; ++pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME; ++pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES; ++pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES; ++pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD; ++pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS; ++pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_56 { ++NDTPA_UNSPEC = 0, ++NDTPA_IFINDEX = 1, ++NDTPA_REFCNT = 2, ++NDTPA_REACHABLE_TIME = 3, ++NDTPA_BASE_REACHABLE_TIME = 4, ++NDTPA_RETRANS_TIME = 5, ++NDTPA_GC_STALETIME = 6, ++NDTPA_DELAY_PROBE_TIME = 7, ++NDTPA_QUEUE_LEN = 8, ++NDTPA_APP_PROBES = 9, ++NDTPA_UCAST_PROBES = 10, ++NDTPA_MCAST_PROBES = 11, ++NDTPA_ANYCAST_DELAY = 12, ++NDTPA_PROXY_DELAY = 13, ++NDTPA_PROXY_QLEN = 14, ++NDTPA_LOCKTIME = 15, ++NDTPA_QUEUE_LENBYTES = 16, ++NDTPA_MCAST_REPROBES = 17, ++NDTPA_PAD = 18, ++NDTPA_INTERVAL_PROBE_TIME_MS = 19, ++__NDTPA_MAX = 20, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ndtmsg { ++pub ndtm_family: __u8, ++pub ndtm_pad1: __u8, ++pub ndtm_pad2: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ndt_config { ++pub ndtc_key_len: __u16, ++pub ndtc_entry_size: __u16, ++pub ndtc_entries: __u32, ++pub ndtc_last_flush: __u32, ++pub ndtc_last_rand: __u32, ++pub ndtc_hash_rnd: __u32, ++pub ndtc_hash_mask: __u32, ++pub ndtc_hash_chain_gc: __u32, ++pub ndtc_proxy_qlen: __u32, ++} ++pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC; ++pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME; ++pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1; ++pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2; ++pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3; ++pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG; ++pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS; ++pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS; ++pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL; ++pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD; ++pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_57 { ++NDTA_UNSPEC = 0, ++NDTA_NAME = 1, ++NDTA_THRESH1 = 2, ++NDTA_THRESH2 = 3, ++NDTA_THRESH3 = 4, ++NDTA_CONFIG = 5, ++NDTA_PARMS = 6, ++NDTA_STATS = 7, ++NDTA_GC_INTERVAL = 8, ++NDTA_PAD = 9, ++__NDTA_MAX = 10, ++} ++pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT; ++pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_58 { ++FDB_NOTIFY_BIT = 1, ++FDB_NOTIFY_INACTIVE_BIT = 2, ++} ++pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC; ++pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY; ++pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH; ++pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_59 { ++NFEA_UNSPEC = 0, ++NFEA_ACTIVITY_NOTIFY = 1, ++NFEA_DONT_REFRESH = 2, ++__NFEA_MAX = 3, ++} ++pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; ++pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE; ++pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK; ++pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK; ++pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK; ++pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR; ++pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR; ++pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR; ++pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE; ++pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE; ++pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE; ++pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH; ++pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH; ++pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH; ++pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE; ++pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE; ++pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE; ++pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC; ++pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC; ++pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC; ++pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS; ++pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS; ++pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS; ++pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER; ++pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER; ++pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER; ++pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION; ++pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION; ++pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION; ++pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX; ++pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST; ++pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST; ++pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL; ++pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL; ++pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL; ++pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT; ++pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL; ++pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL; ++pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL; ++pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB; ++pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB; ++pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF; ++pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF; ++pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF; ++pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB; ++pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB; ++pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB; ++pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID; ++pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID; ++pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID; ++pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS; ++pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS; ++pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS; ++pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT; ++pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN; ++pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN; ++pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN; ++pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP; ++pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP; ++pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP; ++pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP; ++pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP; ++pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP; ++pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN; ++pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN; ++pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN; ++pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET; ++pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET; ++pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET; ++pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL; ++pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL; ++pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL; ++pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_60 { ++RTM_BASE = 16, ++RTM_DELLINK = 17, ++RTM_GETLINK = 18, ++RTM_SETLINK = 19, ++RTM_NEWADDR = 20, ++RTM_DELADDR = 21, ++RTM_GETADDR = 22, ++RTM_NEWROUTE = 24, ++RTM_DELROUTE = 25, ++RTM_GETROUTE = 26, ++RTM_NEWNEIGH = 28, ++RTM_DELNEIGH = 29, ++RTM_GETNEIGH = 30, ++RTM_NEWRULE = 32, ++RTM_DELRULE = 33, ++RTM_GETRULE = 34, ++RTM_NEWQDISC = 36, ++RTM_DELQDISC = 37, ++RTM_GETQDISC = 38, ++RTM_NEWTCLASS = 40, ++RTM_DELTCLASS = 41, ++RTM_GETTCLASS = 42, ++RTM_NEWTFILTER = 44, ++RTM_DELTFILTER = 45, ++RTM_GETTFILTER = 46, ++RTM_NEWACTION = 48, ++RTM_DELACTION = 49, ++RTM_GETACTION = 50, ++RTM_NEWPREFIX = 52, ++RTM_GETMULTICAST = 58, ++RTM_GETANYCAST = 62, ++RTM_NEWNEIGHTBL = 64, ++RTM_GETNEIGHTBL = 66, ++RTM_SETNEIGHTBL = 67, ++RTM_NEWNDUSEROPT = 68, ++RTM_NEWADDRLABEL = 72, ++RTM_DELADDRLABEL = 73, ++RTM_GETADDRLABEL = 74, ++RTM_GETDCB = 78, ++RTM_SETDCB = 79, ++RTM_NEWNETCONF = 80, ++RTM_DELNETCONF = 81, ++RTM_GETNETCONF = 82, ++RTM_NEWMDB = 84, ++RTM_DELMDB = 85, ++RTM_GETMDB = 86, ++RTM_NEWNSID = 88, ++RTM_DELNSID = 89, ++RTM_GETNSID = 90, ++RTM_NEWSTATS = 92, ++RTM_GETSTATS = 94, ++RTM_SETSTATS = 95, ++RTM_NEWCACHEREPORT = 96, ++RTM_NEWCHAIN = 100, ++RTM_DELCHAIN = 101, ++RTM_GETCHAIN = 102, ++RTM_NEWNEXTHOP = 104, ++RTM_DELNEXTHOP = 105, ++RTM_GETNEXTHOP = 106, ++RTM_NEWLINKPROP = 108, ++RTM_DELLINKPROP = 109, ++RTM_GETLINKPROP = 110, ++RTM_NEWVLAN = 112, ++RTM_DELVLAN = 113, ++RTM_GETVLAN = 114, ++RTM_NEWNEXTHOPBUCKET = 116, ++RTM_DELNEXTHOPBUCKET = 117, ++RTM_GETNEXTHOPBUCKET = 118, ++RTM_NEWTUNNEL = 120, ++RTM_DELTUNNEL = 121, ++RTM_GETTUNNEL = 122, ++__RTM_MAX = 123, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtattr { ++pub rta_len: crate::ctypes::c_ushort, ++pub rta_type: crate::ctypes::c_ushort, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtmsg { ++pub rtm_family: crate::ctypes::c_uchar, ++pub rtm_dst_len: crate::ctypes::c_uchar, ++pub rtm_src_len: crate::ctypes::c_uchar, ++pub rtm_tos: crate::ctypes::c_uchar, ++pub rtm_table: crate::ctypes::c_uchar, ++pub rtm_protocol: crate::ctypes::c_uchar, ++pub rtm_scope: crate::ctypes::c_uchar, ++pub rtm_type: crate::ctypes::c_uchar, ++pub rtm_flags: crate::ctypes::c_uint, ++} ++pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC; ++pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST; ++pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL; ++pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST; ++pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST; ++pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST; ++pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE; ++pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE; ++pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT; ++pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW; ++pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT; ++pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE; ++pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_61 { ++RTN_UNSPEC = 0, ++RTN_UNICAST = 1, ++RTN_LOCAL = 2, ++RTN_BROADCAST = 3, ++RTN_ANYCAST = 4, ++RTN_MULTICAST = 5, ++RTN_BLACKHOLE = 6, ++RTN_UNREACHABLE = 7, ++RTN_PROHIBIT = 8, ++RTN_THROW = 9, ++RTN_NAT = 10, ++RTN_XRESOLVE = 11, ++__RTN_MAX = 12, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum rt_scope_t { ++RT_SCOPE_UNIVERSE = 0, ++RT_SCOPE_SITE = 200, ++RT_SCOPE_LINK = 253, ++RT_SCOPE_HOST = 254, ++RT_SCOPE_NOWHERE = 255, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum rt_class_t { ++RT_TABLE_UNSPEC = 0, ++RT_TABLE_COMPAT = 252, ++RT_TABLE_DEFAULT = 253, ++RT_TABLE_MAIN = 254, ++RT_TABLE_LOCAL = 255, ++RT_TABLE_MAX = 4294967295, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum rtattr_type_t { ++RTA_UNSPEC = 0, ++RTA_DST = 1, ++RTA_SRC = 2, ++RTA_IIF = 3, ++RTA_OIF = 4, ++RTA_GATEWAY = 5, ++RTA_PRIORITY = 6, ++RTA_PREFSRC = 7, ++RTA_METRICS = 8, ++RTA_MULTIPATH = 9, ++RTA_PROTOINFO = 10, ++RTA_FLOW = 11, ++RTA_CACHEINFO = 12, ++RTA_SESSION = 13, ++RTA_MP_ALGO = 14, ++RTA_TABLE = 15, ++RTA_MARK = 16, ++RTA_MFC_STATS = 17, ++RTA_VIA = 18, ++RTA_NEWDST = 19, ++RTA_PREF = 20, ++RTA_ENCAP_TYPE = 21, ++RTA_ENCAP = 22, ++RTA_EXPIRES = 23, ++RTA_PAD = 24, ++RTA_UID = 25, ++RTA_TTL_PROPAGATE = 26, ++RTA_IP_PROTO = 27, ++RTA_SPORT = 28, ++RTA_DPORT = 29, ++RTA_NH_ID = 30, ++__RTA_MAX = 31, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtnexthop { ++pub rtnh_len: crate::ctypes::c_ushort, ++pub rtnh_flags: crate::ctypes::c_uchar, ++pub rtnh_hops: crate::ctypes::c_uchar, ++pub rtnh_ifindex: crate::ctypes::c_int, ++} ++#[repr(C)] ++#[derive(Debug)] ++pub struct rtvia { ++pub rtvia_family: __kernel_sa_family_t, ++pub rtvia_addr: __IncompleteArrayField<__u8>, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rta_cacheinfo { ++pub rta_clntref: __u32, ++pub rta_lastuse: __u32, ++pub rta_expires: __s32, ++pub rta_error: __u32, ++pub rta_used: __u32, ++pub rta_id: __u32, ++pub rta_ts: __u32, ++pub rta_tsage: __u32, ++} ++pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC; ++pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK; ++pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU; ++pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW; ++pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT; ++pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR; ++pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH; ++pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND; ++pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS; ++pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING; ++pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT; ++pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND; ++pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES; ++pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN; ++pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND; ++pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK; ++pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO; ++pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE; ++pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_62 { ++RTAX_UNSPEC = 0, ++RTAX_LOCK = 1, ++RTAX_MTU = 2, ++RTAX_WINDOW = 3, ++RTAX_RTT = 4, ++RTAX_RTTVAR = 5, ++RTAX_SSTHRESH = 6, ++RTAX_CWND = 7, ++RTAX_ADVMSS = 8, ++RTAX_REORDERING = 9, ++RTAX_HOPLIMIT = 10, ++RTAX_INITCWND = 11, ++RTAX_FEATURES = 12, ++RTAX_RTO_MIN = 13, ++RTAX_INITRWND = 14, ++RTAX_QUICKACK = 15, ++RTAX_CC_ALGO = 16, ++RTAX_FASTOPEN_NO_COOKIE = 17, ++__RTAX_MAX = 18, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct rta_session { ++pub proto: __u8, ++pub pad1: __u8, ++pub pad2: __u16, ++pub u: rta_session__bindgen_ty_1, ++} ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub union rta_session__bindgen_ty_1 { ++pub ports: rta_session__bindgen_ty_1__bindgen_ty_1, ++pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2, ++pub spi: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rta_session__bindgen_ty_1__bindgen_ty_1 { ++pub sport: __u16, ++pub dport: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rta_session__bindgen_ty_1__bindgen_ty_2 { ++pub type_: __u8, ++pub code: __u8, ++pub ident: __u16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rta_mfc_stats { ++pub mfcs_packets: __u64, ++pub mfcs_bytes: __u64, ++pub mfcs_wrong_if: __u64, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct rtgenmsg { ++pub rtgen_family: crate::ctypes::c_uchar, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct ifinfomsg { ++pub ifi_family: crate::ctypes::c_uchar, ++pub __ifi_pad: crate::ctypes::c_uchar, ++pub ifi_type: crate::ctypes::c_ushort, ++pub ifi_index: crate::ctypes::c_int, ++pub ifi_flags: crate::ctypes::c_uint, ++pub ifi_change: crate::ctypes::c_uint, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct prefixmsg { ++pub prefix_family: crate::ctypes::c_uchar, ++pub prefix_pad1: crate::ctypes::c_uchar, ++pub prefix_pad2: crate::ctypes::c_ushort, ++pub prefix_ifindex: crate::ctypes::c_int, ++pub prefix_type: crate::ctypes::c_uchar, ++pub prefix_len: crate::ctypes::c_uchar, ++pub prefix_flags: crate::ctypes::c_uchar, ++pub prefix_pad3: crate::ctypes::c_uchar, ++} ++pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC; ++pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS; ++pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO; ++pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_63 { ++PREFIX_UNSPEC = 0, ++PREFIX_ADDRESS = 1, ++PREFIX_CACHEINFO = 2, ++__PREFIX_MAX = 3, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct prefix_cacheinfo { ++pub preferred_time: __u32, ++pub valid_time: __u32, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcmsg { ++pub tcm_family: crate::ctypes::c_uchar, ++pub tcm__pad1: crate::ctypes::c_uchar, ++pub tcm__pad2: crate::ctypes::c_ushort, ++pub tcm_ifindex: crate::ctypes::c_int, ++pub tcm_handle: __u32, ++pub tcm_parent: __u32, ++pub tcm_info: __u32, ++} ++pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC; ++pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND; ++pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS; ++pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS; ++pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS; ++pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE; ++pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT; ++pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2; ++pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB; ++pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD; ++pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE; ++pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN; ++pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD; ++pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK; ++pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK; ++pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS; ++pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_64 { ++TCA_UNSPEC = 0, ++TCA_KIND = 1, ++TCA_OPTIONS = 2, ++TCA_STATS = 3, ++TCA_XSTATS = 4, ++TCA_RATE = 5, ++TCA_FCNT = 6, ++TCA_STATS2 = 7, ++TCA_STAB = 8, ++TCA_PAD = 9, ++TCA_DUMP_INVISIBLE = 10, ++TCA_CHAIN = 11, ++TCA_HW_OFFLOAD = 12, ++TCA_INGRESS_BLOCK = 13, ++TCA_EGRESS_BLOCK = 14, ++TCA_DUMP_FLAGS = 15, ++__TCA_MAX = 16, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct nduseroptmsg { ++pub nduseropt_family: crate::ctypes::c_uchar, ++pub nduseropt_pad1: crate::ctypes::c_uchar, ++pub nduseropt_opts_len: crate::ctypes::c_ushort, ++pub nduseropt_ifindex: crate::ctypes::c_int, ++pub nduseropt_icmp_type: __u8, ++pub nduseropt_icmp_code: __u8, ++pub nduseropt_pad2: crate::ctypes::c_ushort, ++pub nduseropt_pad3: crate::ctypes::c_uint, ++} ++pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC; ++pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR; ++pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_65 { ++NDUSEROPT_UNSPEC = 0, ++NDUSEROPT_SRCADDR = 1, ++__NDUSEROPT_MAX = 2, ++} ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum rtnetlink_groups { ++RTNLGRP_NONE = 0, ++RTNLGRP_LINK = 1, ++RTNLGRP_NOTIFY = 2, ++RTNLGRP_NEIGH = 3, ++RTNLGRP_TC = 4, ++RTNLGRP_IPV4_IFADDR = 5, ++RTNLGRP_IPV4_MROUTE = 6, ++RTNLGRP_IPV4_ROUTE = 7, ++RTNLGRP_IPV4_RULE = 8, ++RTNLGRP_IPV6_IFADDR = 9, ++RTNLGRP_IPV6_MROUTE = 10, ++RTNLGRP_IPV6_ROUTE = 11, ++RTNLGRP_IPV6_IFINFO = 12, ++RTNLGRP_DECnet_IFADDR = 13, ++RTNLGRP_NOP2 = 14, ++RTNLGRP_DECnet_ROUTE = 15, ++RTNLGRP_DECnet_RULE = 16, ++RTNLGRP_NOP4 = 17, ++RTNLGRP_IPV6_PREFIX = 18, ++RTNLGRP_IPV6_RULE = 19, ++RTNLGRP_ND_USEROPT = 20, ++RTNLGRP_PHONET_IFADDR = 21, ++RTNLGRP_PHONET_ROUTE = 22, ++RTNLGRP_DCB = 23, ++RTNLGRP_IPV4_NETCONF = 24, ++RTNLGRP_IPV6_NETCONF = 25, ++RTNLGRP_MDB = 26, ++RTNLGRP_MPLS_ROUTE = 27, ++RTNLGRP_NSID = 28, ++RTNLGRP_MPLS_NETCONF = 29, ++RTNLGRP_IPV4_MROUTE_R = 30, ++RTNLGRP_IPV6_MROUTE_R = 31, ++RTNLGRP_NEXTHOP = 32, ++RTNLGRP_BRVLAN = 33, ++RTNLGRP_MCTP_IFADDR = 34, ++RTNLGRP_TUNNEL = 35, ++RTNLGRP_STATS = 36, ++__RTNLGRP_MAX = 37, ++} ++#[repr(C)] ++#[derive(Debug, Copy, Clone)] ++pub struct tcamsg { ++pub tca_family: crate::ctypes::c_uchar, ++pub tca__pad1: crate::ctypes::c_uchar, ++pub tca__pad2: crate::ctypes::c_ushort, ++} ++pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC; ++pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB; ++pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS; ++pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT; ++pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA; ++pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX; ++#[repr(u32)] ++#[non_exhaustive] ++#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] ++pub enum _bindgen_ty_66 { ++TCA_ROOT_UNSPEC = 0, ++TCA_ROOT_TAB = 1, ++TCA_ROOT_FLAGS = 2, ++TCA_ROOT_COUNT = 3, ++TCA_ROOT_TIME_DELTA = 4, ++__TCA_ROOT_MAX = 5, ++} +-- +2.41.0 + diff --git a/0003-vendor-cc-1.0.79.patch b/0003-vendor-cc-1.0.79.patch new file mode 100644 index 0000000..1bf60e4 --- /dev/null +++ b/0003-vendor-cc-1.0.79.patch @@ -0,0 +1,7331 @@ +From 0c865dc915a36598508de5546b47f457a0429d45 Mon Sep 17 00:00:00 2001 +From: hev +Date: Tue, 8 Aug 2023 15:46:00 +0800 +Subject: [PATCH 3/6] vendor: cc-1.0.79 + +--- + Cargo.lock | 4 +- + vendor/cc-1.0.79/.cargo-checksum.json | 1 + + vendor/cc-1.0.79/Cargo.lock | 110 + + vendor/cc-1.0.79/Cargo.toml | 39 + + vendor/cc-1.0.79/LICENSE-APACHE | 201 ++ + vendor/cc-1.0.79/LICENSE-MIT | 25 + + vendor/cc-1.0.79/README.md | 223 ++ + vendor/cc-1.0.79/src/bin/gcc-shim.rs | 70 + + vendor/cc-1.0.79/src/com.rs | 155 + + vendor/cc-1.0.79/src/lib.rs | 3712 ++++++++++++++++++++++ + vendor/cc-1.0.79/src/registry.rs | 231 ++ + vendor/cc-1.0.79/src/setup_config.rs | 283 ++ + vendor/cc-1.0.79/src/vs_instances.rs | 199 ++ + vendor/cc-1.0.79/src/winapi.rs | 218 ++ + vendor/cc-1.0.79/src/windows_registry.rs | 902 ++++++ + vendor/cc-1.0.79/tests/cc_env.rs | 118 + + vendor/cc-1.0.79/tests/cflags.rs | 15 + + vendor/cc-1.0.79/tests/cxxflags.rs | 15 + + vendor/cc-1.0.79/tests/support/mod.rs | 172 + + vendor/cc-1.0.79/tests/test.rs | 461 +++ + 20 files changed, 7152 insertions(+), 2 deletions(-) + create mode 100644 vendor/cc-1.0.79/.cargo-checksum.json + create mode 100644 vendor/cc-1.0.79/Cargo.lock + create mode 100644 vendor/cc-1.0.79/Cargo.toml + create mode 100644 vendor/cc-1.0.79/LICENSE-APACHE + create mode 100644 vendor/cc-1.0.79/LICENSE-MIT + create mode 100644 vendor/cc-1.0.79/README.md + create mode 100644 vendor/cc-1.0.79/src/bin/gcc-shim.rs + create mode 100644 vendor/cc-1.0.79/src/com.rs + create mode 100644 vendor/cc-1.0.79/src/lib.rs + create mode 100644 vendor/cc-1.0.79/src/registry.rs + create mode 100644 vendor/cc-1.0.79/src/setup_config.rs + create mode 100644 vendor/cc-1.0.79/src/vs_instances.rs + create mode 100644 vendor/cc-1.0.79/src/winapi.rs + create mode 100644 vendor/cc-1.0.79/src/windows_registry.rs + create mode 100644 vendor/cc-1.0.79/tests/cc_env.rs + create mode 100644 vendor/cc-1.0.79/tests/cflags.rs + create mode 100644 vendor/cc-1.0.79/tests/cxxflags.rs + create mode 100644 vendor/cc-1.0.79/tests/support/mod.rs + create mode 100644 vendor/cc-1.0.79/tests/test.rs + +diff --git a/Cargo.lock b/Cargo.lock +index ece96826a..e0e8bed51 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -549,9 +549,9 @@ version = "0.1.0" + + [[package]] + name = "cc" +-version = "1.0.77" ++version = "1.0.79" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" ++checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + dependencies = [ + "jobserver", + ] +diff --git a/vendor/cc-1.0.79/.cargo-checksum.json b/vendor/cc-1.0.79/.cargo-checksum.json +new file mode 100644 +index 000000000..347071415 +--- /dev/null ++++ b/vendor/cc-1.0.79/.cargo-checksum.json +@@ -0,0 +1 @@ ++{"files":{"Cargo.lock":"dddb9c49058d411a098e98dc1c06e3bc89f859a2080d96c11b11aec67394bb8c","Cargo.toml":"1953a8bc4b98e351fe75917c151b1e08a46531d562aebba25a90add4aadecac2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"58af5106352aafa62175a90f8a5f25fa114028bf909220dc0735d79745999ec1","src/bin/gcc-shim.rs":"36dc4e447428e73c548cc7106ca1e8f282c098463b014e13a729a44445de4880","src/com.rs":"29d0dee08a656ab1a4cc3e5fe24542e0fab5c1373cbc9b05059f7572cf9b8313","src/lib.rs":"17a4659710aa290c4ed9c23063c7b202c5bcf2a84de33aa1f01fc6fded69a1f8","src/registry.rs":"98ae2b71781acc49297e5544fa0cf059f735636f8f1338edef8dbf7232443945","src/setup_config.rs":"72deaf1927c0b713fd5c2b2d5b8f0ea3a303a00fda1579427895cac26a94122d","src/vs_instances.rs":"2d3f8278a803b0e7052f4eeb1979b29f963dd0143f4458e2cb5f33c4e5f0963b","src/winapi.rs":"e128e95b2d39ae7a02f54a7e25d33c488c14759b9f1a50a449e10545856950c3","src/windows_registry.rs":"1f973f804b4b451e48ff6d98ce660355772f164dfdf79a6ae514645c7c764005","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"a3c8d116973bb16066bf6ec4de5143183f97de7aad085d85f8118a2eaac3e1e0","tests/test.rs":"61fb35ae6dd5cf506ada000bdd82c92e9f8eac9cc053b63e83d3f897436fbf8f"},"package":"50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"} +\ No newline at end of file +diff --git a/vendor/cc-1.0.79/Cargo.lock b/vendor/cc-1.0.79/Cargo.lock +new file mode 100644 +index 000000000..0beba240c +--- /dev/null ++++ b/vendor/cc-1.0.79/Cargo.lock +@@ -0,0 +1,110 @@ ++# This file is automatically @generated by Cargo. ++# It is not intended for manual editing. ++version = 3 ++ ++[[package]] ++name = "bitflags" ++version = "1.3.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" ++ ++[[package]] ++name = "cc" ++version = "1.0.79" ++dependencies = [ ++ "jobserver", ++ "tempfile", ++] ++ ++[[package]] ++name = "cfg-if" ++version = "1.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" ++ ++[[package]] ++name = "fastrand" ++version = "1.8.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" ++dependencies = [ ++ "instant", ++] ++ ++[[package]] ++name = "instant" ++version = "0.1.12" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" ++dependencies = [ ++ "cfg-if", ++] ++ ++[[package]] ++name = "jobserver" ++version = "0.1.25" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" ++dependencies = [ ++ "libc", ++] ++ ++[[package]] ++name = "libc" ++version = "0.2.139" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" ++ ++[[package]] ++name = "redox_syscall" ++version = "0.2.16" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" ++dependencies = [ ++ "bitflags", ++] ++ ++[[package]] ++name = "remove_dir_all" ++version = "0.5.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" ++dependencies = [ ++ "winapi", ++] ++ ++[[package]] ++name = "tempfile" ++version = "3.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" ++dependencies = [ ++ "cfg-if", ++ "fastrand", ++ "libc", ++ "redox_syscall", ++ "remove_dir_all", ++ "winapi", ++] ++ ++[[package]] ++name = "winapi" ++version = "0.3.9" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" ++dependencies = [ ++ "winapi-i686-pc-windows-gnu", ++ "winapi-x86_64-pc-windows-gnu", ++] ++ ++[[package]] ++name = "winapi-i686-pc-windows-gnu" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" ++ ++[[package]] ++name = "winapi-x86_64-pc-windows-gnu" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +diff --git a/vendor/cc-1.0.79/Cargo.toml b/vendor/cc-1.0.79/Cargo.toml +new file mode 100644 +index 000000000..bbdd986d0 +--- /dev/null ++++ b/vendor/cc-1.0.79/Cargo.toml +@@ -0,0 +1,39 @@ ++# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO ++# ++# When uploading crates to the registry Cargo will automatically ++# "normalize" Cargo.toml files for maximal compatibility ++# with all versions of Cargo and also rewrite `path` dependencies ++# to registry (e.g., crates.io) dependencies. ++# ++# If you are reading this file be aware that the original Cargo.toml ++# will likely look very different (and much more reasonable). ++# See Cargo.toml.orig for the original contents. ++ ++[package] ++edition = "2018" ++name = "cc" ++version = "1.0.79" ++authors = ["Alex Crichton "] ++exclude = ["/.github"] ++description = """ ++A build-time dependency for Cargo build scripts to assist in invoking the native ++C compiler to compile native C code into a static archive to be linked into Rust ++code. ++""" ++homepage = "https://github.com/rust-lang/cc-rs" ++documentation = "https://docs.rs/cc" ++readme = "README.md" ++keywords = ["build-dependencies"] ++categories = ["development-tools::build-utils"] ++license = "MIT OR Apache-2.0" ++repository = "https://github.com/rust-lang/cc-rs" ++ ++[dependencies.jobserver] ++version = "0.1.16" ++optional = true ++ ++[dev-dependencies.tempfile] ++version = "3" ++ ++[features] ++parallel = ["jobserver"] +diff --git a/vendor/cc-1.0.79/LICENSE-APACHE b/vendor/cc-1.0.79/LICENSE-APACHE +new file mode 100644 +index 000000000..16fe87b06 +--- /dev/null ++++ b/vendor/cc-1.0.79/LICENSE-APACHE +@@ -0,0 +1,201 @@ ++ Apache License ++ Version 2.0, January 2004 ++ http://www.apache.org/licenses/ ++ ++TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION ++ ++1. Definitions. ++ ++ "License" shall mean the terms and conditions for use, reproduction, ++ and distribution as defined by Sections 1 through 9 of this document. ++ ++ "Licensor" shall mean the copyright owner or entity authorized by ++ the copyright owner that is granting the License. ++ ++ "Legal Entity" shall mean the union of the acting entity and all ++ other entities that control, are controlled by, or are under common ++ control with that entity. For the purposes of this definition, ++ "control" means (i) the power, direct or indirect, to cause the ++ direction or management of such entity, whether by contract or ++ otherwise, or (ii) ownership of fifty percent (50%) or more of the ++ outstanding shares, or (iii) beneficial ownership of such entity. ++ ++ "You" (or "Your") shall mean an individual or Legal Entity ++ exercising permissions granted by this License. ++ ++ "Source" form shall mean the preferred form for making modifications, ++ including but not limited to software source code, documentation ++ source, and configuration files. ++ ++ "Object" form shall mean any form resulting from mechanical ++ transformation or translation of a Source form, including but ++ not limited to compiled object code, generated documentation, ++ and conversions to other media types. ++ ++ "Work" shall mean the work of authorship, whether in Source or ++ Object form, made available under the License, as indicated by a ++ copyright notice that is included in or attached to the work ++ (an example is provided in the Appendix below). ++ ++ "Derivative Works" shall mean any work, whether in Source or Object ++ form, that is based on (or derived from) the Work and for which the ++ editorial revisions, annotations, elaborations, or other modifications ++ represent, as a whole, an original work of authorship. For the purposes ++ of this License, Derivative Works shall not include works that remain ++ separable from, or merely link (or bind by name) to the interfaces of, ++ the Work and Derivative Works thereof. ++ ++ "Contribution" shall mean any work of authorship, including ++ the original version of the Work and any modifications or additions ++ to that Work or Derivative Works thereof, that is intentionally ++ submitted to Licensor for inclusion in the Work by the copyright owner ++ or by an individual or Legal Entity authorized to submit on behalf of ++ the copyright owner. For the purposes of this definition, "submitted" ++ means any form of electronic, verbal, or written communication sent ++ to the Licensor or its representatives, including but not limited to ++ communication on electronic mailing lists, source code control systems, ++ and issue tracking systems that are managed by, or on behalf of, the ++ Licensor for the purpose of discussing and improving the Work, but ++ excluding communication that is conspicuously marked or otherwise ++ designated in writing by the copyright owner as "Not a Contribution." ++ ++ "Contributor" shall mean Licensor and any individual or Legal Entity ++ on behalf of whom a Contribution has been received by Licensor and ++ subsequently incorporated within the Work. ++ ++2. Grant of Copyright License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ copyright license to reproduce, prepare Derivative Works of, ++ publicly display, publicly perform, sublicense, and distribute the ++ Work and such Derivative Works in Source or Object form. ++ ++3. Grant of Patent License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ (except as stated in this section) patent license to make, have made, ++ use, offer to sell, sell, import, and otherwise transfer the Work, ++ where such license applies only to those patent claims licensable ++ by such Contributor that are necessarily infringed by their ++ Contribution(s) alone or by combination of their Contribution(s) ++ with the Work to which such Contribution(s) was submitted. If You ++ institute patent litigation against any entity (including a ++ cross-claim or counterclaim in a lawsuit) alleging that the Work ++ or a Contribution incorporated within the Work constitutes direct ++ or contributory patent infringement, then any patent licenses ++ granted to You under this License for that Work shall terminate ++ as of the date such litigation is filed. ++ ++4. Redistribution. You may reproduce and distribute copies of the ++ Work or Derivative Works thereof in any medium, with or without ++ modifications, and in Source or Object form, provided that You ++ meet the following conditions: ++ ++ (a) You must give any other recipients of the Work or ++ Derivative Works a copy of this License; and ++ ++ (b) You must cause any modified files to carry prominent notices ++ stating that You changed the files; and ++ ++ (c) You must retain, in the Source form of any Derivative Works ++ that You distribute, all copyright, patent, trademark, and ++ attribution notices from the Source form of the Work, ++ excluding those notices that do not pertain to any part of ++ the Derivative Works; and ++ ++ (d) If the Work includes a "NOTICE" text file as part of its ++ distribution, then any Derivative Works that You distribute must ++ include a readable copy of the attribution notices contained ++ within such NOTICE file, excluding those notices that do not ++ pertain to any part of the Derivative Works, in at least one ++ of the following places: within a NOTICE text file distributed ++ as part of the Derivative Works; within the Source form or ++ documentation, if provided along with the Derivative Works; or, ++ within a display generated by the Derivative Works, if and ++ wherever such third-party notices normally appear. The contents ++ of the NOTICE file are for informational purposes only and ++ do not modify the License. You may add Your own attribution ++ notices within Derivative Works that You distribute, alongside ++ or as an addendum to the NOTICE text from the Work, provided ++ that such additional attribution notices cannot be construed ++ as modifying the License. ++ ++ You may add Your own copyright statement to Your modifications and ++ may provide additional or different license terms and conditions ++ for use, reproduction, or distribution of Your modifications, or ++ for any such Derivative Works as a whole, provided Your use, ++ reproduction, and distribution of the Work otherwise complies with ++ the conditions stated in this License. ++ ++5. Submission of Contributions. Unless You explicitly state otherwise, ++ any Contribution intentionally submitted for inclusion in the Work ++ by You to the Licensor shall be under the terms and conditions of ++ this License, without any additional terms or conditions. ++ Notwithstanding the above, nothing herein shall supersede or modify ++ the terms of any separate license agreement you may have executed ++ with Licensor regarding such Contributions. ++ ++6. Trademarks. This License does not grant permission to use the trade ++ names, trademarks, service marks, or product names of the Licensor, ++ except as required for reasonable and customary use in describing the ++ origin of the Work and reproducing the content of the NOTICE file. ++ ++7. Disclaimer of Warranty. Unless required by applicable law or ++ agreed to in writing, Licensor provides the Work (and each ++ Contributor provides its Contributions) on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or ++ implied, including, without limitation, any warranties or conditions ++ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A ++ PARTICULAR PURPOSE. You are solely responsible for determining the ++ appropriateness of using or redistributing the Work and assume any ++ risks associated with Your exercise of permissions under this License. ++ ++8. Limitation of Liability. In no event and under no legal theory, ++ whether in tort (including negligence), contract, or otherwise, ++ unless required by applicable law (such as deliberate and grossly ++ negligent acts) or agreed to in writing, shall any Contributor be ++ liable to You for damages, including any direct, indirect, special, ++ incidental, or consequential damages of any character arising as a ++ result of this License or out of the use or inability to use the ++ Work (including but not limited to damages for loss of goodwill, ++ work stoppage, computer failure or malfunction, or any and all ++ other commercial damages or losses), even if such Contributor ++ has been advised of the possibility of such damages. ++ ++9. Accepting Warranty or Additional Liability. While redistributing ++ the Work or Derivative Works thereof, You may choose to offer, ++ and charge a fee for, acceptance of support, warranty, indemnity, ++ or other liability obligations and/or rights consistent with this ++ License. However, in accepting such obligations, You may act only ++ on Your own behalf and on Your sole responsibility, not on behalf ++ of any other Contributor, and only if You agree to indemnify, ++ defend, and hold each Contributor harmless for any liability ++ incurred by, or claims asserted against, such Contributor by reason ++ of your accepting any such warranty or additional liability. ++ ++END OF TERMS AND CONDITIONS ++ ++APPENDIX: How to apply the Apache License to your work. ++ ++ To apply the Apache License to your work, attach the following ++ boilerplate notice, with the fields enclosed by brackets "[]" ++ replaced with your own identifying information. (Don't include ++ the brackets!) The text should be enclosed in the appropriate ++ comment syntax for the file format. We also recommend that a ++ file or class name and description of purpose be included on the ++ same "printed page" as the copyright notice for easier ++ identification within third-party archives. ++ ++Copyright [yyyy] [name of copyright owner] ++ ++Licensed under the Apache License, Version 2.0 (the "License"); ++you may not use this file except in compliance with the License. ++You may obtain a copy of the License at ++ ++ http://www.apache.org/licenses/LICENSE-2.0 ++ ++Unless required by applicable law or agreed to in writing, software ++distributed under the License is distributed on an "AS IS" BASIS, ++WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++See the License for the specific language governing permissions and ++limitations under the License. +diff --git a/vendor/cc-1.0.79/LICENSE-MIT b/vendor/cc-1.0.79/LICENSE-MIT +new file mode 100644 +index 000000000..39e0ed660 +--- /dev/null ++++ b/vendor/cc-1.0.79/LICENSE-MIT +@@ -0,0 +1,25 @@ ++Copyright (c) 2014 Alex Crichton ++ ++Permission is hereby granted, free of charge, to any ++person obtaining a copy of this software and associated ++documentation files (the "Software"), to deal in the ++Software without restriction, including without ++limitation the rights to use, copy, modify, merge, ++publish, distribute, sublicense, and/or sell copies of ++the Software, and to permit persons to whom the Software ++is furnished to do so, subject to the following ++conditions: ++ ++The above copyright notice and this permission notice ++shall be included in all copies or substantial portions ++of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ++ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED ++TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A ++PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT ++SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ++CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR ++IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++DEALINGS IN THE SOFTWARE. +diff --git a/vendor/cc-1.0.79/README.md b/vendor/cc-1.0.79/README.md +new file mode 100644 +index 000000000..863540d2d +--- /dev/null ++++ b/vendor/cc-1.0.79/README.md +@@ -0,0 +1,223 @@ ++# cc-rs ++ ++A library to compile C/C++/assembly into a Rust library/application. ++ ++[Documentation](https://docs.rs/cc) ++ ++A simple library meant to be used as a build dependency with Cargo packages in ++order to build a set of C/C++ files into a static archive. This crate calls out ++to the most relevant compiler for a platform, for example using `cl` on MSVC. ++ ++## Using cc-rs ++ ++First, you'll want to both add a build script for your crate (`build.rs`) and ++also add this crate to your `Cargo.toml` via: ++ ++```toml ++[build-dependencies] ++cc = "1.0" ++``` ++ ++Next up, you'll want to write a build script like so: ++ ++```rust,no_run ++// build.rs ++ ++fn main() { ++ cc::Build::new() ++ .file("foo.c") ++ .file("bar.c") ++ .compile("foo"); ++} ++``` ++ ++And that's it! Running `cargo build` should take care of the rest and your Rust ++application will now have the C files `foo.c` and `bar.c` compiled into a file ++named `libfoo.a`. If the C files contain ++ ++```c ++void foo_function(void) { ... } ++``` ++ ++and ++ ++```c ++int32_t bar_function(int32_t x) { ... } ++``` ++ ++you can call them from Rust by declaring them in ++your Rust code like so: ++ ++```rust,no_run ++extern { ++ fn foo_function(); ++ fn bar_function(x: i32) -> i32; ++} ++ ++pub fn call() { ++ unsafe { ++ foo_function(); ++ bar_function(42); ++ } ++} ++ ++fn main() { ++ // ... ++} ++``` ++ ++See [the Rustonomicon](https://doc.rust-lang.org/nomicon/ffi.html) for more details. ++ ++## External configuration via environment variables ++ ++To control the programs and flags used for building, the builder can set a ++number of different environment variables. ++ ++* `CFLAGS` - a series of space separated flags passed to compilers. Note that ++ individual flags cannot currently contain spaces, so doing ++ something like: `-L=foo\ bar` is not possible. ++* `CC` - the actual C compiler used. Note that this is used as an exact ++ executable name, so (for example) no extra flags can be passed inside ++ this variable, and the builder must ensure that there aren't any ++ trailing spaces. This compiler must understand the `-c` flag. For ++ certain `TARGET`s, it also is assumed to know about other flags (most ++ common is `-fPIC`). ++* `AR` - the `ar` (archiver) executable to use to build the static library. ++* `CRATE_CC_NO_DEFAULTS` - the default compiler flags may cause conflicts in some cross compiling scenarios. Setting this variable will disable the generation of default compiler flags. ++* `CXX...` - see [C++ Support](#c-support). ++ ++Each of these variables can also be supplied with certain prefixes and suffixes, ++in the following prioritized order: ++ ++1. `_` - for example, `CC_x86_64-unknown-linux-gnu` ++2. `_` - for example, `CC_x86_64_unknown_linux_gnu` ++3. `_` - for example, `HOST_CC` or `TARGET_CFLAGS` ++4. `` - a plain `CC`, `AR` as above. ++ ++If none of these variables exist, cc-rs uses built-in defaults ++ ++In addition to the above optional environment variables, `cc-rs` has some ++functions with hard requirements on some variables supplied by [cargo's ++build-script driver][cargo] that it has the `TARGET`, `OUT_DIR`, `OPT_LEVEL`, ++and `HOST` variables. ++ ++[cargo]: https://doc.rust-lang.org/cargo/reference/build-scripts.html#inputs-to-the-build-script ++ ++## Optional features ++ ++### Parallel ++ ++Currently cc-rs supports parallel compilation (think `make -jN`) but this ++feature is turned off by default. To enable cc-rs to compile C/C++ in parallel, ++you can change your dependency to: ++ ++```toml ++[build-dependencies] ++cc = { version = "1.0", features = ["parallel"] } ++``` ++ ++By default cc-rs will limit parallelism to `$NUM_JOBS`, or if not present it ++will limit it to the number of cpus on the machine. If you are using cargo, ++use `-jN` option of `build`, `test` and `run` commands as `$NUM_JOBS` ++is supplied by cargo. ++ ++## Compile-time Requirements ++ ++To work properly this crate needs access to a C compiler when the build script ++is being run. This crate does not ship a C compiler with it. The compiler ++required varies per platform, but there are three broad categories: ++ ++* Unix platforms require `cc` to be the C compiler. This can be found by ++ installing cc/clang on Linux distributions and Xcode on macOS, for example. ++* Windows platforms targeting MSVC (e.g. your target triple ends in `-msvc`) ++ require `cl.exe` to be available and in `PATH`. This is typically found in ++ standard Visual Studio installations and the `PATH` can be set up by running ++ the appropriate developer tools shell. ++* Windows platforms targeting MinGW (e.g. your target triple ends in `-gnu`) ++ require `cc` to be available in `PATH`. We recommend the ++ [MinGW-w64](https://www.mingw-w64.org/) distribution, which is using the ++ [Win-builds](http://win-builds.org/) installation system. ++ You may also acquire it via ++ [MSYS2](https://www.msys2.org/), as explained [here][msys2-help]. Make sure ++ to install the appropriate architecture corresponding to your installation of ++ rustc. GCC from older [MinGW](http://www.mingw.org/) project is compatible ++ only with 32-bit rust compiler. ++ ++[msys2-help]: https://github.com/rust-lang/rust#building-on-windows ++ ++## C++ support ++ ++`cc-rs` supports C++ libraries compilation by using the `cpp` method on ++`Build`: ++ ++```rust,no_run ++fn main() { ++ cc::Build::new() ++ .cpp(true) // Switch to C++ library compilation. ++ .file("foo.cpp") ++ .compile("libfoo.a"); ++} ++``` ++ ++For C++ libraries, the `CXX` and `CXXFLAGS` environment variables are used instead of `CC` and `CFLAGS`. ++ ++The C++ standard library may be linked to the crate target. By default it's `libc++` for macOS, FreeBSD, and OpenBSD, `libc++_shared` for Android, nothing for MSVC, and `libstdc++` for anything else. It can be changed in one of two ways: ++ ++1. by using the `cpp_link_stdlib` method on `Build`: ++ ```rust,no-run ++ fn main() { ++ cc::Build::new() ++ .cpp(true) ++ .file("foo.cpp") ++ .cpp_link_stdlib("stdc++") // use libstdc++ ++ .compile("libfoo.a"); ++ } ++ ``` ++2. by setting the `CXXSTDLIB` environment variable. ++ ++In particular, for Android you may want to [use `c++_static` if you have at most one shared library](https://developer.android.com/ndk/guides/cpp-support). ++ ++Remember that C++ does name mangling so `extern "C"` might be required to enable Rust linker to find your functions. ++ ++## CUDA C++ support ++ ++`cc-rs` also supports compiling CUDA C++ libraries by using the `cuda` method ++on `Build` (currently for GNU/Clang toolchains only): ++ ++```rust,no_run ++fn main() { ++ cc::Build::new() ++ // Switch to CUDA C++ library compilation using NVCC. ++ .cuda(true) ++ .cudart("static") ++ // Generate code for Maxwell (GTX 970, 980, 980 Ti, Titan X). ++ .flag("-gencode").flag("arch=compute_52,code=sm_52") ++ // Generate code for Maxwell (Jetson TX1). ++ .flag("-gencode").flag("arch=compute_53,code=sm_53") ++ // Generate code for Pascal (GTX 1070, 1080, 1080 Ti, Titan Xp). ++ .flag("-gencode").flag("arch=compute_61,code=sm_61") ++ // Generate code for Pascal (Tesla P100). ++ .flag("-gencode").flag("arch=compute_60,code=sm_60") ++ // Generate code for Pascal (Jetson TX2). ++ .flag("-gencode").flag("arch=compute_62,code=sm_62") ++ .file("bar.cu") ++ .compile("libbar.a"); ++} ++``` ++ ++## License ++ ++This project is licensed under either of ++ ++ * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or ++ https://www.apache.org/licenses/LICENSE-2.0) ++ * MIT license ([LICENSE-MIT](LICENSE-MIT) or ++ https://opensource.org/licenses/MIT) ++ ++at your option. ++ ++### Contribution ++ ++Unless you explicitly state otherwise, any contribution intentionally submitted ++for inclusion in cc-rs by you, as defined in the Apache-2.0 license, shall be ++dual licensed as above, without any additional terms or conditions. +diff --git a/vendor/cc-1.0.79/src/bin/gcc-shim.rs b/vendor/cc-1.0.79/src/bin/gcc-shim.rs +new file mode 100644 +index 000000000..e5b537258 +--- /dev/null ++++ b/vendor/cc-1.0.79/src/bin/gcc-shim.rs +@@ -0,0 +1,70 @@ ++#![cfg_attr(test, allow(dead_code))] ++ ++use std::env; ++use std::fs::File; ++use std::io::{self, prelude::*}; ++use std::path::PathBuf; ++ ++fn main() { ++ let mut args = env::args(); ++ let program = args.next().expect("Unexpected empty args"); ++ ++ let out_dir = PathBuf::from( ++ env::var_os("GCCTEST_OUT_DIR") ++ .unwrap_or_else(|| panic!("{}: GCCTEST_OUT_DIR not found", program)), ++ ); ++ ++ // Find the first nonexistent candidate file to which the program's args can be written. ++ let candidate = (0..).find_map(|i| { ++ let candidate = out_dir.join(format!("out{}", i)); ++ ++ if candidate.exists() { ++ // If the file exists, commands have already run. Try again. ++ None ++ } else { ++ Some(candidate) ++ } ++ }).unwrap_or_else(|| panic!("Cannot find the first nonexistent candidate file to which the program's args can be written under out_dir '{}'", out_dir.display())); ++ ++ // Create a file and record the args passed to the command. ++ let f = File::create(&candidate).unwrap_or_else(|e| { ++ panic!( ++ "{}: can't create candidate: {}, error: {}", ++ program, ++ candidate.display(), ++ e ++ ) ++ }); ++ let mut f = io::BufWriter::new(f); ++ ++ (|| { ++ for arg in args { ++ writeln!(f, "{}", arg)?; ++ } ++ ++ f.flush()?; ++ ++ let mut f = f.into_inner()?; ++ f.flush()?; ++ f.sync_all() ++ })() ++ .unwrap_or_else(|e| { ++ panic!( ++ "{}: can't write to candidate: {}, error: {}", ++ program, ++ candidate.display(), ++ e ++ ) ++ }); ++ ++ // Create a file used by some tests. ++ let path = &out_dir.join("libfoo.a"); ++ File::create(path).unwrap_or_else(|e| { ++ panic!( ++ "{}: can't create libfoo.a: {}, error: {}", ++ program, ++ path.display(), ++ e ++ ) ++ }); ++} +diff --git a/vendor/cc-1.0.79/src/com.rs b/vendor/cc-1.0.79/src/com.rs +new file mode 100644 +index 000000000..843247e58 +--- /dev/null ++++ b/vendor/cc-1.0.79/src/com.rs +@@ -0,0 +1,155 @@ ++// Copyright © 2017 winapi-rs developers ++// Licensed under the Apache License, Version 2.0 ++// or the MIT license ++// , at your option. ++// All files in the project carrying such notice may not be copied, modified, or distributed ++// except according to those terms. ++ ++#![allow(unused)] ++ ++use crate::winapi::CoInitializeEx; ++use crate::winapi::IUnknown; ++use crate::winapi::Interface; ++use crate::winapi::BSTR; ++use crate::winapi::COINIT_MULTITHREADED; ++use crate::winapi::{SysFreeString, SysStringLen}; ++use crate::winapi::{HRESULT, S_FALSE, S_OK}; ++use std::ffi::{OsStr, OsString}; ++use std::mem::forget; ++use std::ops::Deref; ++use std::os::windows::ffi::{OsStrExt, OsStringExt}; ++use std::ptr::null_mut; ++use std::slice::from_raw_parts; ++ ++pub fn initialize() -> Result<(), HRESULT> { ++ let err = unsafe { CoInitializeEx(null_mut(), COINIT_MULTITHREADED) }; ++ if err != S_OK && err != S_FALSE { ++ // S_FALSE just means COM is already initialized ++ return Err(err); ++ } ++ Ok(()) ++} ++ ++pub struct ComPtr(*mut T) ++where ++ T: Interface; ++impl ComPtr ++where ++ T: Interface, ++{ ++ /// Creates a `ComPtr` to wrap a raw pointer. ++ /// It takes ownership over the pointer which means it does __not__ call `AddRef`. ++ /// `T` __must__ be a COM interface that inherits from `IUnknown`. ++ pub unsafe fn from_raw(ptr: *mut T) -> ComPtr { ++ assert!(!ptr.is_null()); ++ ComPtr(ptr) ++ } ++ /// Casts up the inheritance chain ++ pub fn up(self) -> ComPtr ++ where ++ T: Deref, ++ U: Interface, ++ { ++ ComPtr(self.into_raw() as *mut U) ++ } ++ /// Extracts the raw pointer. ++ /// You are now responsible for releasing it yourself. ++ pub fn into_raw(self) -> *mut T { ++ let p = self.0; ++ forget(self); ++ p ++ } ++ /// For internal use only. ++ fn as_unknown(&self) -> &IUnknown { ++ unsafe { &*(self.0 as *mut IUnknown) } ++ } ++ /// Performs QueryInterface fun. ++ pub fn cast(&self) -> Result, i32> ++ where ++ U: Interface, ++ { ++ let mut obj = null_mut(); ++ let err = unsafe { self.as_unknown().QueryInterface(&U::uuidof(), &mut obj) }; ++ if err < 0 { ++ return Err(err); ++ } ++ Ok(unsafe { ComPtr::from_raw(obj as *mut U) }) ++ } ++} ++impl Deref for ComPtr ++where ++ T: Interface, ++{ ++ type Target = T; ++ fn deref(&self) -> &T { ++ unsafe { &*self.0 } ++ } ++} ++impl Clone for ComPtr ++where ++ T: Interface, ++{ ++ fn clone(&self) -> Self { ++ unsafe { ++ self.as_unknown().AddRef(); ++ ComPtr::from_raw(self.0) ++ } ++ } ++} ++impl Drop for ComPtr ++where ++ T: Interface, ++{ ++ fn drop(&mut self) { ++ unsafe { ++ self.as_unknown().Release(); ++ } ++ } ++} ++pub struct BStr(BSTR); ++impl BStr { ++ pub unsafe fn from_raw(s: BSTR) -> BStr { ++ BStr(s) ++ } ++ pub fn to_osstring(&self) -> OsString { ++ let len = unsafe { SysStringLen(self.0) }; ++ let slice = unsafe { from_raw_parts(self.0, len as usize) }; ++ OsStringExt::from_wide(slice) ++ } ++} ++impl Drop for BStr { ++ fn drop(&mut self) { ++ unsafe { SysFreeString(self.0) }; ++ } ++} ++ ++pub trait ToWide { ++ fn to_wide(&self) -> Vec; ++ fn to_wide_null(&self) -> Vec; ++} ++impl ToWide for T ++where ++ T: AsRef, ++{ ++ fn to_wide(&self) -> Vec { ++ self.as_ref().encode_wide().collect() ++ } ++ fn to_wide_null(&self) -> Vec { ++ self.as_ref().encode_wide().chain(Some(0)).collect() ++ } ++} ++pub trait FromWide ++where ++ Self: Sized, ++{ ++ fn from_wide(wide: &[u16]) -> Self; ++ fn from_wide_null(wide: &[u16]) -> Self { ++ let len = wide.iter().take_while(|&&c| c != 0).count(); ++ Self::from_wide(&wide[..len]) ++ } ++} ++impl FromWide for OsString { ++ fn from_wide(wide: &[u16]) -> OsString { ++ OsStringExt::from_wide(wide) ++ } ++} +diff --git a/vendor/cc-1.0.79/src/lib.rs b/vendor/cc-1.0.79/src/lib.rs +new file mode 100644 +index 000000000..abc5d7a95 +--- /dev/null ++++ b/vendor/cc-1.0.79/src/lib.rs +@@ -0,0 +1,3712 @@ ++//! A library for build scripts to compile custom C code ++//! ++//! This library is intended to be used as a `build-dependencies` entry in ++//! `Cargo.toml`: ++//! ++//! ```toml ++//! [build-dependencies] ++//! cc = "1.0" ++//! ``` ++//! ++//! The purpose of this crate is to provide the utility functions necessary to ++//! compile C code into a static archive which is then linked into a Rust crate. ++//! Configuration is available through the `Build` struct. ++//! ++//! This crate will automatically detect situations such as cross compilation or ++//! other environment variables set by Cargo and will build code appropriately. ++//! ++//! The crate is not limited to C code, it can accept any source code that can ++//! be passed to a C or C++ compiler. As such, assembly files with extensions ++//! `.s` (gcc/clang) and `.asm` (MSVC) can also be compiled. ++//! ++//! [`Build`]: struct.Build.html ++//! ++//! # Parallelism ++//! ++//! To parallelize computation, enable the `parallel` feature for the crate. ++//! ++//! ```toml ++//! [build-dependencies] ++//! cc = { version = "1.0", features = ["parallel"] } ++//! ``` ++//! To specify the max number of concurrent compilation jobs, set the `NUM_JOBS` ++//! environment variable to the desired amount. ++//! ++//! Cargo will also set this environment variable when executed with the `-jN` flag. ++//! ++//! If `NUM_JOBS` is not set, the `RAYON_NUM_THREADS` environment variable can ++//! also specify the build parallelism. ++//! ++//! # Examples ++//! ++//! Use the `Build` struct to compile `src/foo.c`: ++//! ++//! ```no_run ++//! fn main() { ++//! cc::Build::new() ++//! .file("src/foo.c") ++//! .define("FOO", Some("bar")) ++//! .include("src") ++//! .compile("foo"); ++//! } ++//! ``` ++ ++#![doc(html_root_url = "https://docs.rs/cc/1.0")] ++#![cfg_attr(test, deny(warnings))] ++#![allow(deprecated)] ++#![deny(missing_docs)] ++ ++use std::collections::{hash_map, HashMap}; ++use std::env; ++use std::ffi::{OsStr, OsString}; ++use std::fmt::{self, Display, Formatter}; ++use std::fs; ++use std::hash::Hasher; ++use std::io::{self, BufRead, BufReader, Read, Write}; ++use std::path::{Component, Path, PathBuf}; ++use std::process::{Child, Command, Stdio}; ++use std::sync::{Arc, Mutex}; ++use std::thread::{self, JoinHandle}; ++ ++// These modules are all glue to support reading the MSVC version from ++// the registry and from COM interfaces ++#[cfg(windows)] ++mod registry; ++#[cfg(windows)] ++#[macro_use] ++mod winapi; ++#[cfg(windows)] ++mod com; ++#[cfg(windows)] ++mod setup_config; ++#[cfg(windows)] ++mod vs_instances; ++ ++pub mod windows_registry; ++ ++/// A builder for compilation of a native library. ++/// ++/// A `Build` is the main type of the `cc` crate and is used to control all the ++/// various configuration options and such of a compile. You'll find more ++/// documentation on each method itself. ++#[derive(Clone, Debug)] ++pub struct Build { ++ include_directories: Vec, ++ definitions: Vec<(String, Option)>, ++ objects: Vec, ++ flags: Vec, ++ flags_supported: Vec, ++ known_flag_support_status: Arc>>, ++ ar_flags: Vec, ++ asm_flags: Vec, ++ no_default_flags: bool, ++ files: Vec, ++ cpp: bool, ++ cpp_link_stdlib: Option>, ++ cpp_set_stdlib: Option, ++ cuda: bool, ++ cudart: Option, ++ target: Option, ++ host: Option, ++ out_dir: Option, ++ opt_level: Option, ++ debug: Option, ++ force_frame_pointer: Option, ++ env: Vec<(OsString, OsString)>, ++ compiler: Option, ++ archiver: Option, ++ ranlib: Option, ++ cargo_metadata: bool, ++ link_lib_modifiers: Vec, ++ pic: Option, ++ use_plt: Option, ++ static_crt: Option, ++ shared_flag: Option, ++ static_flag: Option, ++ warnings_into_errors: bool, ++ warnings: Option, ++ extra_warnings: Option, ++ env_cache: Arc>>>, ++ apple_sdk_root_cache: Arc>>, ++ emit_rerun_if_env_changed: bool, ++} ++ ++/// Represents the types of errors that may occur while using cc-rs. ++#[derive(Clone, Debug)] ++enum ErrorKind { ++ /// Error occurred while performing I/O. ++ IOError, ++ /// Invalid architecture supplied. ++ ArchitectureInvalid, ++ /// Environment variable not found, with the var in question as extra info. ++ EnvVarNotFound, ++ /// Error occurred while using external tools (ie: invocation of compiler). ++ ToolExecError, ++ /// Error occurred due to missing external tools. ++ ToolNotFound, ++ /// One of the function arguments failed validation. ++ InvalidArgument, ++} ++ ++/// Represents an internal error that occurred, with an explanation. ++#[derive(Clone, Debug)] ++pub struct Error { ++ /// Describes the kind of error that occurred. ++ kind: ErrorKind, ++ /// More explanation of error that occurred. ++ message: String, ++} ++ ++impl Error { ++ fn new(kind: ErrorKind, message: &str) -> Error { ++ Error { ++ kind: kind, ++ message: message.to_owned(), ++ } ++ } ++} ++ ++impl From for Error { ++ fn from(e: io::Error) -> Error { ++ Error::new(ErrorKind::IOError, &format!("{}", e)) ++ } ++} ++ ++impl Display for Error { ++ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { ++ write!(f, "{:?}: {}", self.kind, self.message) ++ } ++} ++ ++impl std::error::Error for Error {} ++ ++/// Configuration used to represent an invocation of a C compiler. ++/// ++/// This can be used to figure out what compiler is in use, what the arguments ++/// to it are, and what the environment variables look like for the compiler. ++/// This can be used to further configure other build systems (e.g. forward ++/// along CC and/or CFLAGS) or the `to_command` method can be used to run the ++/// compiler itself. ++#[derive(Clone, Debug)] ++pub struct Tool { ++ path: PathBuf, ++ cc_wrapper_path: Option, ++ cc_wrapper_args: Vec, ++ args: Vec, ++ env: Vec<(OsString, OsString)>, ++ family: ToolFamily, ++ cuda: bool, ++ removed_args: Vec, ++} ++ ++/// Represents the family of tools this tool belongs to. ++/// ++/// Each family of tools differs in how and what arguments they accept. ++/// ++/// Detection of a family is done on best-effort basis and may not accurately reflect the tool. ++#[derive(Copy, Clone, Debug, PartialEq)] ++enum ToolFamily { ++ /// Tool is GNU Compiler Collection-like. ++ Gnu, ++ /// Tool is Clang-like. It differs from the GCC in a sense that it accepts superset of flags ++ /// and its cross-compilation approach is different. ++ Clang, ++ /// Tool is the MSVC cl.exe. ++ Msvc { clang_cl: bool }, ++} ++ ++impl ToolFamily { ++ /// What the flag to request debug info for this family of tools look like ++ fn add_debug_flags(&self, cmd: &mut Tool, dwarf_version: Option) { ++ match *self { ++ ToolFamily::Msvc { .. } => { ++ cmd.push_cc_arg("-Z7".into()); ++ } ++ ToolFamily::Gnu | ToolFamily::Clang => { ++ cmd.push_cc_arg( ++ dwarf_version ++ .map_or_else(|| "-g".into(), |v| format!("-gdwarf-{}", v)) ++ .into(), ++ ); ++ } ++ } ++ } ++ ++ /// What the flag to force frame pointers. ++ fn add_force_frame_pointer(&self, cmd: &mut Tool) { ++ match *self { ++ ToolFamily::Gnu | ToolFamily::Clang => { ++ cmd.push_cc_arg("-fno-omit-frame-pointer".into()); ++ } ++ _ => (), ++ } ++ } ++ ++ /// What the flags to enable all warnings ++ fn warnings_flags(&self) -> &'static str { ++ match *self { ++ ToolFamily::Msvc { .. } => "-W4", ++ ToolFamily::Gnu | ToolFamily::Clang => "-Wall", ++ } ++ } ++ ++ /// What the flags to enable extra warnings ++ fn extra_warnings_flags(&self) -> Option<&'static str> { ++ match *self { ++ ToolFamily::Msvc { .. } => None, ++ ToolFamily::Gnu | ToolFamily::Clang => Some("-Wextra"), ++ } ++ } ++ ++ /// What the flag to turn warning into errors ++ fn warnings_to_errors_flag(&self) -> &'static str { ++ match *self { ++ ToolFamily::Msvc { .. } => "-WX", ++ ToolFamily::Gnu | ToolFamily::Clang => "-Werror", ++ } ++ } ++ ++ fn verbose_stderr(&self) -> bool { ++ *self == ToolFamily::Clang ++ } ++} ++ ++/// Represents an object. ++/// ++/// This is a source file -> object file pair. ++#[derive(Clone, Debug)] ++struct Object { ++ src: PathBuf, ++ dst: PathBuf, ++} ++ ++impl Object { ++ /// Create a new source file -> object file pair. ++ fn new(src: PathBuf, dst: PathBuf) -> Object { ++ Object { src: src, dst: dst } ++ } ++} ++ ++impl Build { ++ /// Construct a new instance of a blank set of configuration. ++ /// ++ /// This builder is finished with the [`compile`] function. ++ /// ++ /// [`compile`]: struct.Build.html#method.compile ++ pub fn new() -> Build { ++ Build { ++ include_directories: Vec::new(), ++ definitions: Vec::new(), ++ objects: Vec::new(), ++ flags: Vec::new(), ++ flags_supported: Vec::new(), ++ known_flag_support_status: Arc::new(Mutex::new(HashMap::new())), ++ ar_flags: Vec::new(), ++ asm_flags: Vec::new(), ++ no_default_flags: false, ++ files: Vec::new(), ++ shared_flag: None, ++ static_flag: None, ++ cpp: false, ++ cpp_link_stdlib: None, ++ cpp_set_stdlib: None, ++ cuda: false, ++ cudart: None, ++ target: None, ++ host: None, ++ out_dir: None, ++ opt_level: None, ++ debug: None, ++ force_frame_pointer: None, ++ env: Vec::new(), ++ compiler: None, ++ archiver: None, ++ ranlib: None, ++ cargo_metadata: true, ++ link_lib_modifiers: Vec::new(), ++ pic: None, ++ use_plt: None, ++ static_crt: None, ++ warnings: None, ++ extra_warnings: None, ++ warnings_into_errors: false, ++ env_cache: Arc::new(Mutex::new(HashMap::new())), ++ apple_sdk_root_cache: Arc::new(Mutex::new(HashMap::new())), ++ emit_rerun_if_env_changed: true, ++ } ++ } ++ ++ /// Add a directory to the `-I` or include path for headers ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// use std::path::Path; ++ /// ++ /// let library_path = Path::new("/path/to/library"); ++ /// ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .include(library_path) ++ /// .include("src") ++ /// .compile("foo"); ++ /// ``` ++ pub fn include>(&mut self, dir: P) -> &mut Build { ++ self.include_directories.push(dir.as_ref().to_path_buf()); ++ self ++ } ++ ++ /// Add multiple directories to the `-I` include path. ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// # use std::path::Path; ++ /// # let condition = true; ++ /// # ++ /// let mut extra_dir = None; ++ /// if condition { ++ /// extra_dir = Some(Path::new("/path/to")); ++ /// } ++ /// ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .includes(extra_dir) ++ /// .compile("foo"); ++ /// ``` ++ pub fn includes

(&mut self, dirs: P) -> &mut Build ++ where ++ P: IntoIterator, ++ P::Item: AsRef, ++ { ++ for dir in dirs { ++ self.include(dir); ++ } ++ self ++ } ++ ++ /// Specify a `-D` variable with an optional value. ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .define("FOO", "BAR") ++ /// .define("BAZ", None) ++ /// .compile("foo"); ++ /// ``` ++ pub fn define<'a, V: Into>>(&mut self, var: &str, val: V) -> &mut Build { ++ self.definitions ++ .push((var.to_string(), val.into().map(|s| s.to_string()))); ++ self ++ } ++ ++ /// Add an arbitrary object file to link in ++ pub fn object>(&mut self, obj: P) -> &mut Build { ++ self.objects.push(obj.as_ref().to_path_buf()); ++ self ++ } ++ ++ /// Add an arbitrary flag to the invocation of the compiler ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .flag("-ffunction-sections") ++ /// .compile("foo"); ++ /// ``` ++ pub fn flag(&mut self, flag: &str) -> &mut Build { ++ self.flags.push(flag.to_string()); ++ self ++ } ++ ++ /// Add a flag to the invocation of the ar ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .file("src/bar.c") ++ /// .ar_flag("/NODEFAULTLIB:libc.dll") ++ /// .compile("foo"); ++ /// ``` ++ pub fn ar_flag(&mut self, flag: &str) -> &mut Build { ++ self.ar_flags.push(flag.to_string()); ++ self ++ } ++ ++ /// Add a flag that will only be used with assembly files. ++ /// ++ /// The flag will be applied to input files with either a `.s` or ++ /// `.asm` extension (case insensitive). ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .asm_flag("-Wa,-defsym,abc=1") ++ /// .file("src/foo.S") // The asm flag will be applied here ++ /// .file("src/bar.c") // The asm flag will not be applied here ++ /// .compile("foo"); ++ /// ``` ++ pub fn asm_flag(&mut self, flag: &str) -> &mut Build { ++ self.asm_flags.push(flag.to_string()); ++ self ++ } ++ ++ fn ensure_check_file(&self) -> Result { ++ let out_dir = self.get_out_dir()?; ++ let src = if self.cuda { ++ assert!(self.cpp); ++ out_dir.join("flag_check.cu") ++ } else if self.cpp { ++ out_dir.join("flag_check.cpp") ++ } else { ++ out_dir.join("flag_check.c") ++ }; ++ ++ if !src.exists() { ++ let mut f = fs::File::create(&src)?; ++ write!(f, "int main(void) {{ return 0; }}")?; ++ } ++ ++ Ok(src) ++ } ++ ++ /// Run the compiler to test if it accepts the given flag. ++ /// ++ /// For a convenience method for setting flags conditionally, ++ /// see `flag_if_supported()`. ++ /// ++ /// It may return error if it's unable to run the compiler with a test file ++ /// (e.g. the compiler is missing or a write to the `out_dir` failed). ++ /// ++ /// Note: Once computed, the result of this call is stored in the ++ /// `known_flag_support` field. If `is_flag_supported(flag)` ++ /// is called again, the result will be read from the hash table. ++ pub fn is_flag_supported(&self, flag: &str) -> Result { ++ let mut known_status = self.known_flag_support_status.lock().unwrap(); ++ if let Some(is_supported) = known_status.get(flag).cloned() { ++ return Ok(is_supported); ++ } ++ ++ let out_dir = self.get_out_dir()?; ++ let src = self.ensure_check_file()?; ++ let obj = out_dir.join("flag_check"); ++ let target = self.get_target()?; ++ let host = self.get_host()?; ++ let mut cfg = Build::new(); ++ cfg.flag(flag) ++ .target(&target) ++ .opt_level(0) ++ .host(&host) ++ .debug(false) ++ .cpp(self.cpp) ++ .cuda(self.cuda); ++ if let Some(ref c) = self.compiler { ++ cfg.compiler(c.clone()); ++ } ++ let mut compiler = cfg.try_get_compiler()?; ++ ++ // Clang uses stderr for verbose output, which yields a false positive ++ // result if the CFLAGS/CXXFLAGS include -v to aid in debugging. ++ if compiler.family.verbose_stderr() { ++ compiler.remove_arg("-v".into()); ++ } ++ ++ let mut cmd = compiler.to_command(); ++ let is_arm = target.contains("aarch64") || target.contains("arm"); ++ let clang = compiler.family == ToolFamily::Clang; ++ command_add_output_file( ++ &mut cmd, ++ &obj, ++ self.cuda, ++ target.contains("msvc"), ++ clang, ++ false, ++ is_arm, ++ ); ++ ++ // We need to explicitly tell msvc not to link and create an exe ++ // in the root directory of the crate ++ if target.contains("msvc") && !self.cuda { ++ cmd.arg("-c"); ++ } ++ ++ cmd.arg(&src); ++ ++ let output = cmd.output()?; ++ let is_supported = output.status.success() && output.stderr.is_empty(); ++ ++ known_status.insert(flag.to_owned(), is_supported); ++ Ok(is_supported) ++ } ++ ++ /// Add an arbitrary flag to the invocation of the compiler if it supports it ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .flag_if_supported("-Wlogical-op") // only supported by GCC ++ /// .flag_if_supported("-Wunreachable-code") // only supported by clang ++ /// .compile("foo"); ++ /// ``` ++ pub fn flag_if_supported(&mut self, flag: &str) -> &mut Build { ++ self.flags_supported.push(flag.to_string()); ++ self ++ } ++ ++ /// Set the `-shared` flag. ++ /// ++ /// When enabled, the compiler will produce a shared object which can ++ /// then be linked with other objects to form an executable. ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .shared_flag(true) ++ /// .compile("libfoo.so"); ++ /// ``` ++ pub fn shared_flag(&mut self, shared_flag: bool) -> &mut Build { ++ self.shared_flag = Some(shared_flag); ++ self ++ } ++ ++ /// Set the `-static` flag. ++ /// ++ /// When enabled on systems that support dynamic linking, this prevents ++ /// linking with the shared libraries. ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .shared_flag(true) ++ /// .static_flag(true) ++ /// .compile("foo"); ++ /// ``` ++ pub fn static_flag(&mut self, static_flag: bool) -> &mut Build { ++ self.static_flag = Some(static_flag); ++ self ++ } ++ ++ /// Disables the generation of default compiler flags. The default compiler ++ /// flags may cause conflicts in some cross compiling scenarios. ++ /// ++ /// Setting the `CRATE_CC_NO_DEFAULTS` environment variable has the same ++ /// effect as setting this to `true`. The presence of the environment ++ /// variable and the value of `no_default_flags` will be OR'd together. ++ pub fn no_default_flags(&mut self, no_default_flags: bool) -> &mut Build { ++ self.no_default_flags = no_default_flags; ++ self ++ } ++ ++ /// Add a file which will be compiled ++ pub fn file>(&mut self, p: P) -> &mut Build { ++ self.files.push(p.as_ref().to_path_buf()); ++ self ++ } ++ ++ /// Add files which will be compiled ++ pub fn files

(&mut self, p: P) -> &mut Build ++ where ++ P: IntoIterator, ++ P::Item: AsRef, ++ { ++ for file in p.into_iter() { ++ self.file(file); ++ } ++ self ++ } ++ ++ /// Set C++ support. ++ /// ++ /// The other `cpp_*` options will only become active if this is set to ++ /// `true`. ++ pub fn cpp(&mut self, cpp: bool) -> &mut Build { ++ self.cpp = cpp; ++ self ++ } ++ ++ /// Set CUDA C++ support. ++ /// ++ /// Enabling CUDA will pass the detected C/C++ toolchain as an argument to ++ /// the CUDA compiler, NVCC. NVCC itself accepts some limited GNU-like args; ++ /// any other arguments for the C/C++ toolchain will be redirected using ++ /// "-Xcompiler" flags. ++ /// ++ /// If enabled, this also implicitly enables C++ support. ++ pub fn cuda(&mut self, cuda: bool) -> &mut Build { ++ self.cuda = cuda; ++ if cuda { ++ self.cpp = true; ++ self.cudart = Some("static".to_string()); ++ } ++ self ++ } ++ ++ /// Link CUDA run-time. ++ /// ++ /// This option mimics the `--cudart` NVCC command-line option. Just like ++ /// the original it accepts `{none|shared|static}`, with default being ++ /// `static`. The method has to be invoked after `.cuda(true)`, or not ++ /// at all, if the default is right for the project. ++ pub fn cudart(&mut self, cudart: &str) -> &mut Build { ++ if self.cuda { ++ self.cudart = Some(cudart.to_string()); ++ } ++ self ++ } ++ ++ /// Set warnings into errors flag. ++ /// ++ /// Disabled by default. ++ /// ++ /// Warning: turning warnings into errors only make sense ++ /// if you are a developer of the crate using cc-rs. ++ /// Some warnings only appear on some architecture or ++ /// specific version of the compiler. Any user of this crate, ++ /// or any other crate depending on it, could fail during ++ /// compile time. ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .warnings_into_errors(true) ++ /// .compile("libfoo.a"); ++ /// ``` ++ pub fn warnings_into_errors(&mut self, warnings_into_errors: bool) -> &mut Build { ++ self.warnings_into_errors = warnings_into_errors; ++ self ++ } ++ ++ /// Set warnings flags. ++ /// ++ /// Adds some flags: ++ /// - "-Wall" for MSVC. ++ /// - "-Wall", "-Wextra" for GNU and Clang. ++ /// ++ /// Enabled by default. ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .warnings(false) ++ /// .compile("libfoo.a"); ++ /// ``` ++ pub fn warnings(&mut self, warnings: bool) -> &mut Build { ++ self.warnings = Some(warnings); ++ self.extra_warnings = Some(warnings); ++ self ++ } ++ ++ /// Set extra warnings flags. ++ /// ++ /// Adds some flags: ++ /// - nothing for MSVC. ++ /// - "-Wextra" for GNU and Clang. ++ /// ++ /// Enabled by default. ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// // Disables -Wextra, -Wall remains enabled: ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .extra_warnings(false) ++ /// .compile("libfoo.a"); ++ /// ``` ++ pub fn extra_warnings(&mut self, warnings: bool) -> &mut Build { ++ self.extra_warnings = Some(warnings); ++ self ++ } ++ ++ /// Set the standard library to link against when compiling with C++ ++ /// support. ++ /// ++ /// See [`get_cpp_link_stdlib`](cc::Build::get_cpp_link_stdlib) documentation ++ /// for the default value. ++ /// If the `CXXSTDLIB` environment variable is set, its value will ++ /// override the default value, but not the value explicitly set by calling ++ /// this function. ++ /// ++ /// A value of `None` indicates that no automatic linking should happen, ++ /// otherwise cargo will link against the specified library. ++ /// ++ /// The given library name must not contain the `lib` prefix. ++ /// ++ /// Common values: ++ /// - `stdc++` for GNU ++ /// - `c++` for Clang ++ /// - `c++_shared` or `c++_static` for Android ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .shared_flag(true) ++ /// .cpp_link_stdlib("stdc++") ++ /// .compile("libfoo.so"); ++ /// ``` ++ pub fn cpp_link_stdlib<'a, V: Into>>( ++ &mut self, ++ cpp_link_stdlib: V, ++ ) -> &mut Build { ++ self.cpp_link_stdlib = Some(cpp_link_stdlib.into().map(|s| s.into())); ++ self ++ } ++ ++ /// Force the C++ compiler to use the specified standard library. ++ /// ++ /// Setting this option will automatically set `cpp_link_stdlib` to the same ++ /// value. ++ /// ++ /// The default value of this option is always `None`. ++ /// ++ /// This option has no effect when compiling for a Visual Studio based ++ /// target. ++ /// ++ /// This option sets the `-stdlib` flag, which is only supported by some ++ /// compilers (clang, icc) but not by others (gcc). The library will not ++ /// detect which compiler is used, as such it is the responsibility of the ++ /// caller to ensure that this option is only used in conjunction with a ++ /// compiler which supports the `-stdlib` flag. ++ /// ++ /// A value of `None` indicates that no specific C++ standard library should ++ /// be used, otherwise `-stdlib` is added to the compile invocation. ++ /// ++ /// The given library name must not contain the `lib` prefix. ++ /// ++ /// Common values: ++ /// - `stdc++` for GNU ++ /// - `c++` for Clang ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .cpp_set_stdlib("c++") ++ /// .compile("libfoo.a"); ++ /// ``` ++ pub fn cpp_set_stdlib<'a, V: Into>>( ++ &mut self, ++ cpp_set_stdlib: V, ++ ) -> &mut Build { ++ let cpp_set_stdlib = cpp_set_stdlib.into(); ++ self.cpp_set_stdlib = cpp_set_stdlib.map(|s| s.into()); ++ self.cpp_link_stdlib(cpp_set_stdlib); ++ self ++ } ++ ++ /// Configures the target this configuration will be compiling for. ++ /// ++ /// This option is automatically scraped from the `TARGET` environment ++ /// variable by build scripts, so it's not required to call this function. ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .target("aarch64-linux-android") ++ /// .compile("foo"); ++ /// ``` ++ pub fn target(&mut self, target: &str) -> &mut Build { ++ self.target = Some(target.to_string()); ++ self ++ } ++ ++ /// Configures the host assumed by this configuration. ++ /// ++ /// This option is automatically scraped from the `HOST` environment ++ /// variable by build scripts, so it's not required to call this function. ++ /// ++ /// # Example ++ /// ++ /// ```no_run ++ /// cc::Build::new() ++ /// .file("src/foo.c") ++ /// .host("arm-linux-gnueabihf") ++ /// .compile("foo"); ++ /// ``` ++ pub fn host(&mut self, host: &str) -> &mut Build { ++ self.host = Some(host.to_string()); ++ self ++ } ++ ++ /// Configures the optimization level of the generated object files. ++ /// ++ /// This option is automatically scraped from the `OPT_LEVEL` environment ++ /// variable by build scripts, so it's not required to call this function. ++ pub fn opt_level(&mut self, opt_level: u32) -> &mut Build { ++ self.opt_level = Some(opt_level.to_string()); ++ self ++ } ++ ++ /// Configures the optimization level of the generated object files. ++ /// ++ /// This option is automatically scraped from the `OPT_LEVEL` environment ++ /// variable by build scripts, so it's not required to call this function. ++ pub fn opt_level_str(&mut self, opt_level: &str) -> &mut Build { ++ self.opt_level = Some(opt_level.to_string()); ++ self ++ } ++ ++ /// Configures whether the compiler will emit debug information when ++ /// generating object files. ++ /// ++ /// This option is automatically scraped from the `DEBUG` environment ++ /// variable by build scripts, so it's not required to call this function. ++ pub fn debug(&mut self, debug: bool) -> &mut Build { ++ self.debug = Some(debug); ++ self ++ } ++ ++ /// Configures whether the compiler will emit instructions to store ++ /// frame pointers during codegen. ++ /// ++ /// This option is automatically enabled when debug information is emitted. ++ /// Otherwise the target platform compiler's default will be used. ++ /// You can use this option to force a specific setting. ++ pub fn force_frame_pointer(&mut self, force: bool) -> &mut Build { ++ self.force_frame_pointer = Some(force); ++ self ++ } ++ ++ /// Configures the output directory where all object files and static ++ /// libraries will be located. ++ /// ++ /// This option is automatically scraped from the `OUT_DIR` environment ++ /// variable by build scripts, so it's not required to call this function. ++ pub fn out_dir>(&mut self, out_dir: P) -> &mut Build { ++ self.out_dir = Some(out_dir.as_ref().to_owned()); ++ self ++ } ++ ++ /// Configures the compiler to be used to produce output. ++ /// ++ /// This option is automatically determined from the target platform or a ++ /// number of environment variables, so it's not required to call this ++ /// function. ++ pub fn compiler>(&mut self, compiler: P) -> &mut Build { ++ self.compiler = Some(compiler.as_ref().to_owned()); ++ self ++ } ++ ++ /// Configures the tool used to assemble archives. ++ /// ++ /// This option is automatically determined from the target platform or a ++ /// number of environment variables, so it's not required to call this ++ /// function. ++ pub fn archiver>(&mut self, archiver: P) -> &mut Build { ++ self.archiver = Some(archiver.as_ref().to_owned()); ++ self ++ } ++ ++ /// Configures the tool used to index archives. ++ /// ++ /// This option is automatically determined from the target platform or a ++ /// number of environment variables, so it's not required to call this ++ /// function. ++ pub fn ranlib>(&mut self, ranlib: P) -> &mut Build { ++ self.ranlib = Some(ranlib.as_ref().to_owned()); ++ self ++ } ++ ++ /// Define whether metadata should be emitted for cargo allowing it to ++ /// automatically link the binary. Defaults to `true`. ++ /// ++ /// The emitted metadata is: ++ /// ++ /// - `rustc-link-lib=static=`*compiled lib* ++ /// - `rustc-link-search=native=`*target folder* ++ /// - When target is MSVC, the ATL-MFC libs are added via `rustc-link-search=native=` ++ /// - When C++ is enabled, the C++ stdlib is added via `rustc-link-lib` ++ /// - If `emit_rerun_if_env_changed` is not `false`, `rerun-if-env-changed=`*env* ++ /// ++ pub fn cargo_metadata(&mut self, cargo_metadata: bool) -> &mut Build { ++ self.cargo_metadata = cargo_metadata; ++ self ++ } ++ ++ /// Adds a native library modifier that will be added to the ++ /// `rustc-link-lib=static:MODIFIERS=LIBRARY_NAME` metadata line ++ /// emitted for cargo if `cargo_metadata` is enabled. ++ /// See https://doc.rust-lang.org/rustc/command-line-arguments.html#-l-link-the-generated-crate-to-a-native-library ++ /// for the list of modifiers accepted by rustc. ++ pub fn link_lib_modifier(&mut self, link_lib_modifier: &str) -> &mut Build { ++ self.link_lib_modifiers.push(link_lib_modifier.to_string()); ++ self ++ } ++ ++ /// Configures whether the compiler will emit position independent code. ++ /// ++ /// This option defaults to `false` for `windows-gnu` and bare metal targets and ++ /// to `true` for all other targets. ++ pub fn pic(&mut self, pic: bool) -> &mut Build { ++ self.pic = Some(pic); ++ self ++ } ++ ++ /// Configures whether the Procedure Linkage Table is used for indirect ++ /// calls into shared libraries. ++ /// ++ /// The PLT is used to provide features like lazy binding, but introduces ++ /// a small performance loss due to extra pointer indirection. Setting ++ /// `use_plt` to `false` can provide a small performance increase. ++ /// ++ /// Note that skipping the PLT requires a recent version of GCC/Clang. ++ /// ++ /// This only applies to ELF targets. It has no effect on other platforms. ++ pub fn use_plt(&mut self, use_plt: bool) -> &mut Build { ++ self.use_plt = Some(use_plt); ++ self ++ } ++ ++ /// Define whether metadata should be emitted for cargo to detect environment ++ /// changes that should trigger a rebuild. ++ /// ++ /// This has no effect if the `cargo_metadata` option is `false`. ++ /// ++ /// This option defaults to `true`. ++ pub fn emit_rerun_if_env_changed(&mut self, emit_rerun_if_env_changed: bool) -> &mut Build { ++ self.emit_rerun_if_env_changed = emit_rerun_if_env_changed; ++ self ++ } ++ ++ /// Configures whether the /MT flag or the /MD flag will be passed to msvc build tools. ++ /// ++ /// This option defaults to `false`, and affect only msvc targets. ++ pub fn static_crt(&mut self, static_crt: bool) -> &mut Build { ++ self.static_crt = Some(static_crt); ++ self ++ } ++ ++ #[doc(hidden)] ++ pub fn __set_env(&mut self, a: A, b: B) -> &mut Build ++ where ++ A: AsRef, ++ B: AsRef, ++ { ++ self.env ++ .push((a.as_ref().to_owned(), b.as_ref().to_owned())); ++ self ++ } ++ ++ /// Run the compiler, generating the file `output` ++ /// ++ /// This will return a result instead of panicing; see compile() for the complete description. ++ pub fn try_compile(&self, output: &str) -> Result<(), Error> { ++ let mut output_components = Path::new(output).components(); ++ match (output_components.next(), output_components.next()) { ++ (Some(Component::Normal(_)), None) => {} ++ _ => { ++ return Err(Error::new( ++ ErrorKind::InvalidArgument, ++ "argument of `compile` must be a single normal path component", ++ )); ++ } ++ } ++ ++ let (lib_name, gnu_lib_name) = if output.starts_with("lib") && output.ends_with(".a") { ++ (&output[3..output.len() - 2], output.to_owned()) ++ } else { ++ let mut gnu = String::with_capacity(5 + output.len()); ++ gnu.push_str("lib"); ++ gnu.push_str(&output); ++ gnu.push_str(".a"); ++ (output, gnu) ++ }; ++ let dst = self.get_out_dir()?; ++ ++ let mut objects = Vec::new(); ++ for file in self.files.iter() { ++ let obj = if file.has_root() { ++ // If `file` is an absolute path, prefix the `basename` ++ // with the `dirname`'s hash to ensure name uniqueness. ++ let basename = file ++ .file_name() ++ .ok_or_else(|| Error::new(ErrorKind::InvalidArgument, "file_name() failure"))? ++ .to_string_lossy(); ++ let dirname = file ++ .parent() ++ .ok_or_else(|| Error::new(ErrorKind::InvalidArgument, "parent() failure"))? ++ .to_string_lossy(); ++ let mut hasher = hash_map::DefaultHasher::new(); ++ hasher.write(dirname.to_string().as_bytes()); ++ dst.join(format!("{:016x}-{}", hasher.finish(), basename)) ++ .with_extension("o") ++ } else { ++ dst.join(file).with_extension("o") ++ }; ++ let obj = if !obj.starts_with(&dst) { ++ dst.join(obj.file_name().ok_or_else(|| { ++ Error::new(ErrorKind::IOError, "Getting object file details failed.") ++ })?) ++ } else { ++ obj ++ }; ++ ++ match obj.parent() { ++ Some(s) => fs::create_dir_all(s)?, ++ None => { ++ return Err(Error::new( ++ ErrorKind::IOError, ++ "Getting object file details failed.", ++ )); ++ } ++ }; ++ ++ objects.push(Object::new(file.to_path_buf(), obj)); ++ } ++ self.compile_objects(&objects)?; ++ self.assemble(lib_name, &dst.join(gnu_lib_name), &objects)?; ++ ++ if self.get_target()?.contains("msvc") { ++ let compiler = self.get_base_compiler()?; ++ let atlmfc_lib = compiler ++ .env() ++ .iter() ++ .find(|&&(ref var, _)| var.as_os_str() == OsStr::new("LIB")) ++ .and_then(|&(_, ref lib_paths)| { ++ env::split_paths(lib_paths).find(|path| { ++ let sub = Path::new("atlmfc/lib"); ++ path.ends_with(sub) || path.parent().map_or(false, |p| p.ends_with(sub)) ++ }) ++ }); ++ ++ if let Some(atlmfc_lib) = atlmfc_lib { ++ self.print(&format!( ++ "cargo:rustc-link-search=native={}", ++ atlmfc_lib.display() ++ )); ++ } ++ } ++ ++ if self.link_lib_modifiers.is_empty() { ++ self.print(&format!("cargo:rustc-link-lib=static={}", lib_name)); ++ } else { ++ let m = self.link_lib_modifiers.join(","); ++ self.print(&format!("cargo:rustc-link-lib=static:{}={}", m, lib_name)); ++ } ++ self.print(&format!("cargo:rustc-link-search=native={}", dst.display())); ++ ++ // Add specific C++ libraries, if enabled. ++ if self.cpp { ++ if let Some(stdlib) = self.get_cpp_link_stdlib()? { ++ self.print(&format!("cargo:rustc-link-lib={}", stdlib)); ++ } ++ } ++ ++ let cudart = match &self.cudart { ++ Some(opt) => opt.as_str(), // {none|shared|static} ++ None => "none", ++ }; ++ if cudart != "none" { ++ if let Some(nvcc) = which(&self.get_compiler().path) { ++ // Try to figure out the -L search path. If it fails, ++ // it's on user to specify one by passing it through ++ // RUSTFLAGS environment variable. ++ let mut libtst = false; ++ let mut libdir = nvcc; ++ libdir.pop(); // remove 'nvcc' ++ libdir.push(".."); ++ let target_arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap(); ++ if cfg!(target_os = "linux") { ++ libdir.push("targets"); ++ libdir.push(target_arch.to_owned() + "-linux"); ++ libdir.push("lib"); ++ libtst = true; ++ } else if cfg!(target_env = "msvc") { ++ libdir.push("lib"); ++ match target_arch.as_str() { ++ "x86_64" => { ++ libdir.push("x64"); ++ libtst = true; ++ } ++ "x86" => { ++ libdir.push("Win32"); ++ libtst = true; ++ } ++ _ => libtst = false, ++ } ++ } ++ if libtst && libdir.is_dir() { ++ println!( ++ "cargo:rustc-link-search=native={}", ++ libdir.to_str().unwrap() ++ ); ++ } ++ ++ // And now the -l flag. ++ let lib = match cudart { ++ "shared" => "cudart", ++ "static" => "cudart_static", ++ bad => panic!("unsupported cudart option: {}", bad), ++ }; ++ println!("cargo:rustc-link-lib={}", lib); ++ } ++ } ++ ++ Ok(()) ++ } ++ ++ /// Run the compiler, generating the file `output` ++ /// ++ /// # Library name ++ /// ++ /// The `output` string argument determines the file name for the compiled ++ /// library. The Rust compiler will create an assembly named "lib"+output+".a". ++ /// MSVC will create a file named output+".lib". ++ /// ++ /// The choice of `output` is close to arbitrary, but: ++ /// ++ /// - must be nonempty, ++ /// - must not contain a path separator (`/`), ++ /// - must be unique across all `compile` invocations made by the same build ++ /// script. ++ /// ++ /// If your build script compiles a single source file, the base name of ++ /// that source file would usually be reasonable: ++ /// ++ /// ```no_run ++ /// cc::Build::new().file("blobstore.c").compile("blobstore"); ++ /// ``` ++ /// ++ /// Compiling multiple source files, some people use their crate's name, or ++ /// their crate's name + "-cc". ++ /// ++ /// Otherwise, please use your imagination. ++ /// ++ /// For backwards compatibility, if `output` starts with "lib" *and* ends ++ /// with ".a", a second "lib" prefix and ".a" suffix do not get added on, ++ /// but this usage is deprecated; please omit `lib` and `.a` in the argument ++ /// that you pass. ++ /// ++ /// # Panics ++ /// ++ /// Panics if `output` is not formatted correctly or if one of the underlying ++ /// compiler commands fails. It can also panic if it fails reading file names ++ /// or creating directories. ++ pub fn compile(&self, output: &str) { ++ if let Err(e) = self.try_compile(output) { ++ fail(&e.message); ++ } ++ } ++ ++ #[cfg(feature = "parallel")] ++ fn compile_objects<'me>(&'me self, objs: &[Object]) -> Result<(), Error> { ++ use std::sync::atomic::{AtomicBool, Ordering::SeqCst}; ++ use std::sync::Once; ++ ++ // Limit our parallelism globally with a jobserver. Start off by ++ // releasing our own token for this process so we can have a bit of an ++ // easier to write loop below. If this fails, though, then we're likely ++ // on Windows with the main implicit token, so we just have a bit extra ++ // parallelism for a bit and don't reacquire later. ++ let server = jobserver(); ++ let reacquire = server.release_raw().is_ok(); ++ ++ // When compiling objects in parallel we do a few dirty tricks to speed ++ // things up: ++ // ++ // * First is that we use the `jobserver` crate to limit the parallelism ++ // of this build script. The `jobserver` crate will use a jobserver ++ // configured by Cargo for build scripts to ensure that parallelism is ++ // coordinated across C compilations and Rust compilations. Before we ++ // compile anything we make sure to wait until we acquire a token. ++ // ++ // Note that this jobserver is cached globally so we only used one per ++ // process and only worry about creating it once. ++ // ++ // * Next we use a raw `thread::spawn` per thread to actually compile ++ // objects in parallel. We only actually spawn a thread after we've ++ // acquired a token to perform some work ++ // ++ // * Finally though we want to keep the dependencies of this crate ++ // pretty light, so we avoid using a safe abstraction like `rayon` and ++ // instead rely on some bits of `unsafe` code. We know that this stack ++ // frame persists while everything is compiling so we use all the ++ // stack-allocated objects without cloning/reallocating. We use a ++ // transmute to `State` with a `'static` lifetime to persist ++ // everything we need across the boundary, and the join-on-drop ++ // semantics of `JoinOnDrop` should ensure that our stack frame is ++ // alive while threads are alive. ++ // ++ // With all that in mind we compile all objects in a loop here, after we ++ // acquire the appropriate tokens, Once all objects have been compiled ++ // we join on all the threads and propagate the results of compilation. ++ // ++ // Note that as a slight optimization we try to break out as soon as ++ // possible as soon as any compilation fails to ensure that errors get ++ // out to the user as fast as possible. ++ let error = AtomicBool::new(false); ++ let mut threads = Vec::new(); ++ for obj in objs { ++ if error.load(SeqCst) { ++ break; ++ } ++ let token = server.acquire()?; ++ let state = State { ++ build: self, ++ obj, ++ error: &error, ++ }; ++ let state = unsafe { std::mem::transmute::>(state) }; ++ let thread = thread::spawn(|| { ++ let state: State<'me> = state; // erase the `'static` lifetime ++ let result = state.build.compile_object(state.obj); ++ if result.is_err() { ++ state.error.store(true, SeqCst); ++ } ++ drop(token); // make sure our jobserver token is released after the compile ++ return result; ++ }); ++ threads.push(JoinOnDrop(Some(thread))); ++ } ++ ++ for mut thread in threads { ++ if let Some(thread) = thread.0.take() { ++ thread.join().expect("thread should not panic")?; ++ } ++ } ++ ++ // Reacquire our process's token before we proceed, which we released ++ // before entering the loop above. ++ if reacquire { ++ server.acquire_raw()?; ++ } ++ ++ return Ok(()); ++ ++ /// Shared state from the parent thread to the child thread. This ++ /// package of pointers is temporarily transmuted to a `'static` ++ /// lifetime to cross the thread boundary and then once the thread is ++ /// running we erase the `'static` to go back to an anonymous lifetime. ++ struct State<'a> { ++ build: &'a Build, ++ obj: &'a Object, ++ error: &'a AtomicBool, ++ } ++ ++ /// Returns a suitable `jobserver::Client` used to coordinate ++ /// parallelism between build scripts. ++ fn jobserver() -> &'static jobserver::Client { ++ static INIT: Once = Once::new(); ++ static mut JOBSERVER: Option = None; ++ ++ fn _assert_sync() {} ++ _assert_sync::(); ++ ++ unsafe { ++ INIT.call_once(|| { ++ let server = default_jobserver(); ++ JOBSERVER = Some(server); ++ }); ++ JOBSERVER.as_ref().unwrap() ++ } ++ } ++ ++ unsafe fn default_jobserver() -> jobserver::Client { ++ // Try to use the environmental jobserver which Cargo typically ++ // initializes for us... ++ if let Some(client) = jobserver::Client::from_env() { ++ return client; ++ } ++ ++ // ... but if that fails for whatever reason select something ++ // reasonable and crate a new jobserver. Use `NUM_JOBS` if set (it's ++ // configured by Cargo) and otherwise just fall back to a ++ // semi-reasonable number. Note that we could use `num_cpus` here ++ // but it's an extra dependency that will almost never be used, so ++ // it's generally not too worth it. ++ let mut parallelism = 4; ++ if let Ok(amt) = env::var("NUM_JOBS") { ++ if let Ok(amt) = amt.parse() { ++ parallelism = amt; ++ } ++ } ++ ++ // If we create our own jobserver then be sure to reserve one token ++ // for ourselves. ++ let client = jobserver::Client::new(parallelism).expect("failed to create jobserver"); ++ client.acquire_raw().expect("failed to acquire initial"); ++ return client; ++ } ++ ++ struct JoinOnDrop(Option>>); ++ ++ impl Drop for JoinOnDrop { ++ fn drop(&mut self) { ++ if let Some(thread) = self.0.take() { ++ drop(thread.join()); ++ } ++ } ++ } ++ } ++ ++ #[cfg(not(feature = "parallel"))] ++ fn compile_objects(&self, objs: &[Object]) -> Result<(), Error> { ++ for obj in objs { ++ self.compile_object(obj)?; ++ } ++ Ok(()) ++ } ++ ++ fn compile_object(&self, obj: &Object) -> Result<(), Error> { ++ let asm_ext = AsmFileExt::from_path(&obj.src); ++ let is_asm = asm_ext.is_some(); ++ let target = self.get_target()?; ++ let msvc = target.contains("msvc"); ++ let compiler = self.try_get_compiler()?; ++ let clang = compiler.family == ToolFamily::Clang; ++ ++ let (mut cmd, name) = if msvc && asm_ext == Some(AsmFileExt::DotAsm) { ++ self.msvc_macro_assembler()? ++ } else { ++ let mut cmd = compiler.to_command(); ++ for &(ref a, ref b) in self.env.iter() { ++ cmd.env(a, b); ++ } ++ ( ++ cmd, ++ compiler ++ .path ++ .file_name() ++ .ok_or_else(|| Error::new(ErrorKind::IOError, "Failed to get compiler path."))? ++ .to_string_lossy() ++ .into_owned(), ++ ) ++ }; ++ let is_arm = target.contains("aarch64") || target.contains("arm"); ++ command_add_output_file(&mut cmd, &obj.dst, self.cuda, msvc, clang, is_asm, is_arm); ++ // armasm and armasm64 don't requrie -c option ++ if !msvc || !is_asm || !is_arm { ++ cmd.arg("-c"); ++ } ++ if self.cuda && self.cuda_file_count() > 1 { ++ cmd.arg("--device-c"); ++ } ++ if is_asm { ++ cmd.args(&self.asm_flags); ++ } ++ if compiler.family == (ToolFamily::Msvc { clang_cl: true }) && !is_asm { ++ // #513: For `clang-cl`, separate flags/options from the input file. ++ // When cross-compiling macOS -> Windows, this avoids interpreting ++ // common `/Users/...` paths as the `/U` flag and triggering ++ // `-Wslash-u-filename` warning. ++ cmd.arg("--"); ++ } ++ cmd.arg(&obj.src); ++ if cfg!(target_os = "macos") { ++ self.fix_env_for_apple_os(&mut cmd)?; ++ } ++ ++ run(&mut cmd, &name)?; ++ Ok(()) ++ } ++ ++ /// This will return a result instead of panicing; see expand() for the complete description. ++ pub fn try_expand(&self) -> Result, Error> { ++ let compiler = self.try_get_compiler()?; ++ let mut cmd = compiler.to_command(); ++ for &(ref a, ref b) in self.env.iter() { ++ cmd.env(a, b); ++ } ++ cmd.arg("-E"); ++ ++ assert!( ++ self.files.len() <= 1, ++ "Expand may only be called for a single file" ++ ); ++ ++ for file in self.files.iter() { ++ cmd.arg(file); ++ } ++ ++ let name = compiler ++ .path ++ .file_name() ++ .ok_or_else(|| Error::new(ErrorKind::IOError, "Failed to get compiler path."))? ++ .to_string_lossy() ++ .into_owned(); ++ ++ Ok(run_output(&mut cmd, &name)?) ++ } ++ ++ /// Run the compiler, returning the macro-expanded version of the input files. ++ /// ++ /// This is only relevant for C and C++ files. ++ /// ++ /// # Panics ++ /// Panics if more than one file is present in the config, or if compiler ++ /// path has an invalid file name. ++ /// ++ /// # Example ++ /// ```no_run ++ /// let out = cc::Build::new().file("src/foo.c").expand(); ++ /// ``` ++ pub fn expand(&self) -> Vec { ++ match self.try_expand() { ++ Err(e) => fail(&e.message), ++ Ok(v) => v, ++ } ++ } ++ ++ /// Get the compiler that's in use for this configuration. ++ /// ++ /// This function will return a `Tool` which represents the culmination ++ /// of this configuration at a snapshot in time. The returned compiler can ++ /// be inspected (e.g. the path, arguments, environment) to forward along to ++ /// other tools, or the `to_command` method can be used to invoke the ++ /// compiler itself. ++ /// ++ /// This method will take into account all configuration such as debug ++ /// information, optimization level, include directories, defines, etc. ++ /// Additionally, the compiler binary in use follows the standard ++ /// conventions for this path, e.g. looking at the explicitly set compiler, ++ /// environment variables (a number of which are inspected here), and then ++ /// falling back to the default configuration. ++ /// ++ /// # Panics ++ /// ++ /// Panics if an error occurred while determining the architecture. ++ pub fn get_compiler(&self) -> Tool { ++ match self.try_get_compiler() { ++ Ok(tool) => tool, ++ Err(e) => fail(&e.message), ++ } ++ } ++ ++ /// Get the compiler that's in use for this configuration. ++ /// ++ /// This will return a result instead of panicing; see get_compiler() for the complete description. ++ pub fn try_get_compiler(&self) -> Result { ++ let opt_level = self.get_opt_level()?; ++ let target = self.get_target()?; ++ ++ let mut cmd = self.get_base_compiler()?; ++ let envflags = self.envflags(if self.cpp { "CXXFLAGS" } else { "CFLAGS" }); ++ ++ // Disable default flag generation via `no_default_flags` or environment variable ++ let no_defaults = self.no_default_flags || self.getenv("CRATE_CC_NO_DEFAULTS").is_some(); ++ ++ if !no_defaults { ++ self.add_default_flags(&mut cmd, &target, &opt_level)?; ++ } else { ++ println!("Info: default compiler flags are disabled"); ++ } ++ ++ for arg in envflags { ++ cmd.push_cc_arg(arg.into()); ++ } ++ ++ for directory in self.include_directories.iter() { ++ cmd.args.push("-I".into()); ++ cmd.args.push(directory.into()); ++ } ++ ++ // If warnings and/or extra_warnings haven't been explicitly set, ++ // then we set them only if the environment doesn't already have ++ // CFLAGS/CXXFLAGS, since those variables presumably already contain ++ // the desired set of warnings flags. ++ ++ if self ++ .warnings ++ .unwrap_or(if self.has_flags() { false } else { true }) ++ { ++ let wflags = cmd.family.warnings_flags().into(); ++ cmd.push_cc_arg(wflags); ++ } ++ ++ if self ++ .extra_warnings ++ .unwrap_or(if self.has_flags() { false } else { true }) ++ { ++ if let Some(wflags) = cmd.family.extra_warnings_flags() { ++ cmd.push_cc_arg(wflags.into()); ++ } ++ } ++ ++ for flag in self.flags.iter() { ++ cmd.args.push(flag.into()); ++ } ++ ++ for flag in self.flags_supported.iter() { ++ if self.is_flag_supported(flag).unwrap_or(false) { ++ cmd.push_cc_arg(flag.into()); ++ } ++ } ++ ++ for &(ref key, ref value) in self.definitions.iter() { ++ if let Some(ref value) = *value { ++ cmd.args.push(format!("-D{}={}", key, value).into()); ++ } else { ++ cmd.args.push(format!("-D{}", key).into()); ++ } ++ } ++ ++ if self.warnings_into_errors { ++ let warnings_to_errors_flag = cmd.family.warnings_to_errors_flag().into(); ++ cmd.push_cc_arg(warnings_to_errors_flag); ++ } ++ ++ Ok(cmd) ++ } ++ ++ fn add_default_flags( ++ &self, ++ cmd: &mut Tool, ++ target: &str, ++ opt_level: &str, ++ ) -> Result<(), Error> { ++ // Non-target flags ++ // If the flag is not conditioned on target variable, it belongs here :) ++ match cmd.family { ++ ToolFamily::Msvc { .. } => { ++ cmd.push_cc_arg("-nologo".into()); ++ ++ let crt_flag = match self.static_crt { ++ Some(true) => "-MT", ++ Some(false) => "-MD", ++ None => { ++ let features = self ++ .getenv("CARGO_CFG_TARGET_FEATURE") ++ .unwrap_or(String::new()); ++ if features.contains("crt-static") { ++ "-MT" ++ } else { ++ "-MD" ++ } ++ } ++ }; ++ cmd.push_cc_arg(crt_flag.into()); ++ ++ match &opt_level[..] { ++ // Msvc uses /O1 to enable all optimizations that minimize code size. ++ "z" | "s" | "1" => cmd.push_opt_unless_duplicate("-O1".into()), ++ // -O3 is a valid value for gcc and clang compilers, but not msvc. Cap to /O2. ++ "2" | "3" => cmd.push_opt_unless_duplicate("-O2".into()), ++ _ => {} ++ } ++ } ++ ToolFamily::Gnu | ToolFamily::Clang => { ++ // arm-linux-androideabi-gcc 4.8 shipped with Android NDK does ++ // not support '-Oz' ++ if opt_level == "z" && cmd.family != ToolFamily::Clang { ++ cmd.push_opt_unless_duplicate("-Os".into()); ++ } else { ++ cmd.push_opt_unless_duplicate(format!("-O{}", opt_level).into()); ++ } ++ ++ if cmd.family == ToolFamily::Clang && target.contains("android") { ++ // For compatibility with code that doesn't use pre-defined `__ANDROID__` macro. ++ // If compiler used via ndk-build or cmake (officially supported build methods) ++ // this macros is defined. ++ // See https://android.googlesource.com/platform/ndk/+/refs/heads/ndk-release-r21/build/cmake/android.toolchain.cmake#456 ++ // https://android.googlesource.com/platform/ndk/+/refs/heads/ndk-release-r21/build/core/build-binary.mk#141 ++ cmd.push_opt_unless_duplicate("-DANDROID".into()); ++ } ++ ++ if !target.contains("apple-ios") && !target.contains("apple-watchos") { ++ cmd.push_cc_arg("-ffunction-sections".into()); ++ cmd.push_cc_arg("-fdata-sections".into()); ++ } ++ // Disable generation of PIC on bare-metal for now: rust-lld doesn't support this yet ++ if self.pic.unwrap_or( ++ !target.contains("windows") ++ && !target.contains("-none-") ++ && !target.contains("uefi"), ++ ) { ++ cmd.push_cc_arg("-fPIC".into()); ++ // PLT only applies if code is compiled with PIC support, ++ // and only for ELF targets. ++ if target.contains("linux") && !self.use_plt.unwrap_or(true) { ++ cmd.push_cc_arg("-fno-plt".into()); ++ } ++ } ++ } ++ } ++ ++ if self.get_debug() { ++ if self.cuda { ++ // NVCC debug flag ++ cmd.args.push("-G".into()); ++ } ++ let family = cmd.family; ++ family.add_debug_flags(cmd, self.get_dwarf_version()); ++ } ++ ++ if self.get_force_frame_pointer() { ++ let family = cmd.family; ++ family.add_force_frame_pointer(cmd); ++ } ++ ++ // Target flags ++ match cmd.family { ++ ToolFamily::Clang => { ++ if !(target.contains("android") ++ && android_clang_compiler_uses_target_arg_internally(&cmd.path)) ++ { ++ if target.contains("darwin") { ++ if let Some(arch) = ++ map_darwin_target_from_rust_to_compiler_architecture(target) ++ { ++ cmd.args ++ .push(format!("--target={}-apple-darwin", arch).into()); ++ } ++ } else if target.contains("macabi") { ++ if let Some(arch) = ++ map_darwin_target_from_rust_to_compiler_architecture(target) ++ { ++ cmd.args ++ .push(format!("--target={}-apple-ios-macabi", arch).into()); ++ } ++ } else if target.contains("ios-sim") { ++ if let Some(arch) = ++ map_darwin_target_from_rust_to_compiler_architecture(target) ++ { ++ let deployment_target = env::var("IPHONEOS_DEPLOYMENT_TARGET") ++ .unwrap_or_else(|_| "7.0".into()); ++ cmd.args.push( ++ format!( ++ "--target={}-apple-ios{}-simulator", ++ arch, deployment_target ++ ) ++ .into(), ++ ); ++ } ++ } else if target.contains("watchos-sim") { ++ if let Some(arch) = ++ map_darwin_target_from_rust_to_compiler_architecture(target) ++ { ++ let deployment_target = env::var("WATCHOS_DEPLOYMENT_TARGET") ++ .unwrap_or_else(|_| "5.0".into()); ++ cmd.args.push( ++ format!( ++ "--target={}-apple-watchos{}-simulator", ++ arch, deployment_target ++ ) ++ .into(), ++ ); ++ } ++ } else if target.starts_with("riscv64gc-") { ++ cmd.args.push( ++ format!("--target={}", target.replace("riscv64gc", "riscv64")).into(), ++ ); ++ } else if target.starts_with("riscv32gc-") { ++ cmd.args.push( ++ format!("--target={}", target.replace("riscv32gc", "riscv32")).into(), ++ ); ++ } else if target.contains("uefi") { ++ if target.contains("x86_64") { ++ cmd.args.push("--target=x86_64-unknown-windows-gnu".into()); ++ } else if target.contains("i686") { ++ cmd.args.push("--target=i686-unknown-windows-gnu".into()) ++ } else if target.contains("aarch64") { ++ cmd.args.push("--target=aarch64-unknown-windows-gnu".into()) ++ } ++ } else { ++ cmd.push_cc_arg(format!("--target={}", target).into()); ++ } ++ } ++ } ++ ToolFamily::Msvc { clang_cl } => { ++ // This is an undocumented flag from MSVC but helps with making ++ // builds more reproducible by avoiding putting timestamps into ++ // files. ++ cmd.push_cc_arg("-Brepro".into()); ++ ++ if clang_cl { ++ if target.contains("x86_64") { ++ cmd.push_cc_arg("-m64".into()); ++ } else if target.contains("86") { ++ cmd.push_cc_arg("-m32".into()); ++ cmd.push_cc_arg("-arch:IA32".into()); ++ } else { ++ cmd.push_cc_arg(format!("--target={}", target).into()); ++ } ++ } else { ++ if target.contains("i586") { ++ cmd.push_cc_arg("-arch:IA32".into()); ++ } ++ } ++ ++ // There is a check in corecrt.h that will generate a ++ // compilation error if ++ // _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE is ++ // not defined to 1. The check was added in Windows ++ // 8 days because only store apps were allowed on ARM. ++ // This changed with the release of Windows 10 IoT Core. ++ // The check will be going away in future versions of ++ // the SDK, but for all released versions of the ++ // Windows SDK it is required. ++ if target.contains("arm") || target.contains("thumb") { ++ cmd.args ++ .push("-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1".into()); ++ } ++ } ++ ToolFamily::Gnu => { ++ if target.contains("i686") || target.contains("i586") { ++ cmd.args.push("-m32".into()); ++ } else if target == "x86_64-unknown-linux-gnux32" { ++ cmd.args.push("-mx32".into()); ++ } else if target.contains("x86_64") || target.contains("powerpc64") { ++ cmd.args.push("-m64".into()); ++ } ++ ++ if target.contains("darwin") { ++ if let Some(arch) = map_darwin_target_from_rust_to_compiler_architecture(target) ++ { ++ cmd.args.push("-arch".into()); ++ cmd.args.push(arch.into()); ++ } ++ } ++ ++ if target.contains("-kmc-solid_") { ++ cmd.args.push("-finput-charset=utf-8".into()); ++ } ++ ++ if self.static_flag.is_none() { ++ let features = self ++ .getenv("CARGO_CFG_TARGET_FEATURE") ++ .unwrap_or(String::new()); ++ if features.contains("crt-static") { ++ cmd.args.push("-static".into()); ++ } ++ } ++ ++ // armv7 targets get to use armv7 instructions ++ if (target.starts_with("armv7") || target.starts_with("thumbv7")) ++ && (target.contains("-linux-") || target.contains("-kmc-solid_")) ++ { ++ cmd.args.push("-march=armv7-a".into()); ++ ++ if target.ends_with("eabihf") { ++ // lowest common denominator FPU ++ cmd.args.push("-mfpu=vfpv3-d16".into()); ++ } ++ } ++ ++ // (x86 Android doesn't say "eabi") ++ if target.contains("-androideabi") && target.contains("v7") { ++ // -march=armv7-a handled above ++ cmd.args.push("-mthumb".into()); ++ if !target.contains("neon") { ++ // On android we can guarantee some extra float instructions ++ // (specified in the android spec online) ++ // NEON guarantees even more; see below. ++ cmd.args.push("-mfpu=vfpv3-d16".into()); ++ } ++ cmd.args.push("-mfloat-abi=softfp".into()); ++ } ++ ++ if target.contains("neon") { ++ cmd.args.push("-mfpu=neon-vfpv4".into()); ++ } ++ ++ if target.starts_with("armv4t-unknown-linux-") { ++ cmd.args.push("-march=armv4t".into()); ++ cmd.args.push("-marm".into()); ++ cmd.args.push("-mfloat-abi=soft".into()); ++ } ++ ++ if target.starts_with("armv5te-unknown-linux-") { ++ cmd.args.push("-march=armv5te".into()); ++ cmd.args.push("-marm".into()); ++ cmd.args.push("-mfloat-abi=soft".into()); ++ } ++ ++ // For us arm == armv6 by default ++ if target.starts_with("arm-unknown-linux-") { ++ cmd.args.push("-march=armv6".into()); ++ cmd.args.push("-marm".into()); ++ if target.ends_with("hf") { ++ cmd.args.push("-mfpu=vfp".into()); ++ } else { ++ cmd.args.push("-mfloat-abi=soft".into()); ++ } ++ } ++ ++ // We can guarantee some settings for FRC ++ if target.starts_with("arm-frc-") { ++ cmd.args.push("-march=armv7-a".into()); ++ cmd.args.push("-mcpu=cortex-a9".into()); ++ cmd.args.push("-mfpu=vfpv3".into()); ++ cmd.args.push("-mfloat-abi=softfp".into()); ++ cmd.args.push("-marm".into()); ++ } ++ ++ // Turn codegen down on i586 to avoid some instructions. ++ if target.starts_with("i586-unknown-linux-") { ++ cmd.args.push("-march=pentium".into()); ++ } ++ ++ // Set codegen level for i686 correctly ++ if target.starts_with("i686-unknown-linux-") { ++ cmd.args.push("-march=i686".into()); ++ } ++ ++ // Looks like `musl-gcc` makes it hard for `-m32` to make its way ++ // all the way to the linker, so we need to actually instruct the ++ // linker that we're generating 32-bit executables as well. This'll ++ // typically only be used for build scripts which transitively use ++ // these flags that try to compile executables. ++ if target == "i686-unknown-linux-musl" || target == "i586-unknown-linux-musl" { ++ cmd.args.push("-Wl,-melf_i386".into()); ++ } ++ ++ if target.starts_with("thumb") { ++ cmd.args.push("-mthumb".into()); ++ ++ if target.ends_with("eabihf") { ++ cmd.args.push("-mfloat-abi=hard".into()) ++ } ++ } ++ if target.starts_with("thumbv6m") { ++ cmd.args.push("-march=armv6s-m".into()); ++ } ++ if target.starts_with("thumbv7em") { ++ cmd.args.push("-march=armv7e-m".into()); ++ ++ if target.ends_with("eabihf") { ++ cmd.args.push("-mfpu=fpv4-sp-d16".into()) ++ } ++ } ++ if target.starts_with("thumbv7m") { ++ cmd.args.push("-march=armv7-m".into()); ++ } ++ if target.starts_with("thumbv8m.base") { ++ cmd.args.push("-march=armv8-m.base".into()); ++ } ++ if target.starts_with("thumbv8m.main") { ++ cmd.args.push("-march=armv8-m.main".into()); ++ ++ if target.ends_with("eabihf") { ++ cmd.args.push("-mfpu=fpv5-sp-d16".into()) ++ } ++ } ++ if target.starts_with("armebv7r") | target.starts_with("armv7r") { ++ if target.starts_with("armeb") { ++ cmd.args.push("-mbig-endian".into()); ++ } else { ++ cmd.args.push("-mlittle-endian".into()); ++ } ++ ++ // ARM mode ++ cmd.args.push("-marm".into()); ++ ++ // R Profile ++ cmd.args.push("-march=armv7-r".into()); ++ ++ if target.ends_with("eabihf") { ++ // Calling convention ++ cmd.args.push("-mfloat-abi=hard".into()); ++ ++ // lowest common denominator FPU ++ // (see Cortex-R4 technical reference manual) ++ cmd.args.push("-mfpu=vfpv3-d16".into()) ++ } else { ++ // Calling convention ++ cmd.args.push("-mfloat-abi=soft".into()); ++ } ++ } ++ if target.starts_with("armv7a") { ++ cmd.args.push("-march=armv7-a".into()); ++ ++ if target.ends_with("eabihf") { ++ // lowest common denominator FPU ++ cmd.args.push("-mfpu=vfpv3-d16".into()); ++ } ++ } ++ if target.starts_with("riscv32") || target.starts_with("riscv64") { ++ // get the 32i/32imac/32imc/64gc/64imac/... part ++ let mut parts = target.split('-'); ++ if let Some(arch) = parts.next() { ++ let arch = &arch[5..]; ++ if target.contains("linux") && arch.starts_with("64") { ++ cmd.args.push(("-march=rv64gc").into()); ++ cmd.args.push("-mabi=lp64d".into()); ++ } else if target.contains("freebsd") && arch.starts_with("64") { ++ cmd.args.push(("-march=rv64gc").into()); ++ cmd.args.push("-mabi=lp64d".into()); ++ } else if target.contains("openbsd") && arch.starts_with("64") { ++ cmd.args.push(("-march=rv64gc").into()); ++ cmd.args.push("-mabi=lp64d".into()); ++ } else if target.contains("linux") && arch.starts_with("32") { ++ cmd.args.push(("-march=rv32gc").into()); ++ cmd.args.push("-mabi=ilp32d".into()); ++ } else if arch.starts_with("64") { ++ cmd.args.push(("-march=rv".to_owned() + arch).into()); ++ cmd.args.push("-mabi=lp64".into()); ++ } else { ++ cmd.args.push(("-march=rv".to_owned() + arch).into()); ++ cmd.args.push("-mabi=ilp32".into()); ++ } ++ cmd.args.push("-mcmodel=medany".into()); ++ } ++ } ++ } ++ } ++ ++ if target.contains("apple-ios") || target.contains("apple-watchos") { ++ self.ios_watchos_flags(cmd)?; ++ } ++ ++ if self.static_flag.unwrap_or(false) { ++ cmd.args.push("-static".into()); ++ } ++ if self.shared_flag.unwrap_or(false) { ++ cmd.args.push("-shared".into()); ++ } ++ ++ if self.cpp { ++ match (self.cpp_set_stdlib.as_ref(), cmd.family) { ++ (None, _) => {} ++ (Some(stdlib), ToolFamily::Gnu) | (Some(stdlib), ToolFamily::Clang) => { ++ cmd.push_cc_arg(format!("-stdlib=lib{}", stdlib).into()); ++ } ++ _ => { ++ println!( ++ "cargo:warning=cpp_set_stdlib is specified, but the {:?} compiler \ ++ does not support this option, ignored", ++ cmd.family ++ ); ++ } ++ } ++ } ++ ++ Ok(()) ++ } ++ ++ fn has_flags(&self) -> bool { ++ let flags_env_var_name = if self.cpp { "CXXFLAGS" } else { "CFLAGS" }; ++ let flags_env_var_value = self.get_var(flags_env_var_name); ++ if let Ok(_) = flags_env_var_value { ++ true ++ } else { ++ false ++ } ++ } ++ ++ fn msvc_macro_assembler(&self) -> Result<(Command, String), Error> { ++ let target = self.get_target()?; ++ let tool = if target.contains("x86_64") { ++ "ml64.exe" ++ } else if target.contains("arm") { ++ "armasm.exe" ++ } else if target.contains("aarch64") { ++ "armasm64.exe" ++ } else { ++ "ml.exe" ++ }; ++ let mut cmd = windows_registry::find(&target, tool).unwrap_or_else(|| self.cmd(tool)); ++ cmd.arg("-nologo"); // undocumented, yet working with armasm[64] ++ for directory in self.include_directories.iter() { ++ cmd.arg("-I").arg(directory); ++ } ++ if target.contains("aarch64") || target.contains("arm") { ++ if self.get_debug() { ++ cmd.arg("-g"); ++ } ++ ++ println!("cargo:warning=The MSVC ARM assemblers do not support -D flags"); ++ } else { ++ if self.get_debug() { ++ cmd.arg("-Zi"); ++ } ++ ++ for &(ref key, ref value) in self.definitions.iter() { ++ if let Some(ref value) = *value { ++ cmd.arg(&format!("-D{}={}", key, value)); ++ } else { ++ cmd.arg(&format!("-D{}", key)); ++ } ++ } ++ } ++ ++ if target.contains("i686") || target.contains("i586") { ++ cmd.arg("-safeseh"); ++ } ++ for flag in self.flags.iter() { ++ cmd.arg(flag); ++ } ++ ++ Ok((cmd, tool.to_string())) ++ } ++ ++ fn assemble(&self, lib_name: &str, dst: &Path, objs: &[Object]) -> Result<(), Error> { ++ // Delete the destination if it exists as we want to ++ // create on the first iteration instead of appending. ++ let _ = fs::remove_file(&dst); ++ ++ // Add objects to the archive in limited-length batches. This helps keep ++ // the length of the command line within a reasonable length to avoid ++ // blowing system limits on limiting platforms like Windows. ++ let objs: Vec<_> = objs ++ .iter() ++ .map(|o| o.dst.clone()) ++ .chain(self.objects.clone()) ++ .collect(); ++ for chunk in objs.chunks(100) { ++ self.assemble_progressive(dst, chunk)?; ++ } ++ ++ if self.cuda && self.cuda_file_count() > 0 { ++ // Link the device-side code and add it to the target library, ++ // so that non-CUDA linker can link the final binary. ++ ++ let out_dir = self.get_out_dir()?; ++ let dlink = out_dir.join(lib_name.to_owned() + "_dlink.o"); ++ let mut nvcc = self.get_compiler().to_command(); ++ nvcc.arg("--device-link") ++ .arg("-o") ++ .arg(dlink.clone()) ++ .arg(dst); ++ run(&mut nvcc, "nvcc")?; ++ self.assemble_progressive(dst, &[dlink])?; ++ } ++ ++ let target = self.get_target()?; ++ if target.contains("msvc") { ++ // The Rust compiler will look for libfoo.a and foo.lib, but the ++ // MSVC linker will also be passed foo.lib, so be sure that both ++ // exist for now. ++ ++ let lib_dst = dst.with_file_name(format!("{}.lib", lib_name)); ++ let _ = fs::remove_file(&lib_dst); ++ match fs::hard_link(&dst, &lib_dst).or_else(|_| { ++ // if hard-link fails, just copy (ignoring the number of bytes written) ++ fs::copy(&dst, &lib_dst).map(|_| ()) ++ }) { ++ Ok(_) => (), ++ Err(_) => { ++ return Err(Error::new( ++ ErrorKind::IOError, ++ "Could not copy or create a hard-link to the generated lib file.", ++ )); ++ } ++ }; ++ } else { ++ // Non-msvc targets (those using `ar`) need a separate step to add ++ // the symbol table to archives since our construction command of ++ // `cq` doesn't add it for us. ++ let (mut ar, cmd, _any_flags) = self.get_ar()?; ++ ++ // NOTE: We add `s` even if flags were passed using $ARFLAGS/ar_flag, because `s` ++ // here represents a _mode_, not an arbitrary flag. Further discussion of this choice ++ // can be seen in https://github.com/rust-lang/cc-rs/pull/763. ++ run(ar.arg("s").arg(dst), &cmd)?; ++ } ++ ++ Ok(()) ++ } ++ ++ fn assemble_progressive(&self, dst: &Path, objs: &[PathBuf]) -> Result<(), Error> { ++ let target = self.get_target()?; ++ ++ if target.contains("msvc") { ++ let (mut cmd, program, any_flags) = self.get_ar()?; ++ // NOTE: -out: here is an I/O flag, and so must be included even if $ARFLAGS/ar_flag is ++ // in use. -nologo on the other hand is just a regular flag, and one that we'll skip if ++ // the caller has explicitly dictated the flags they want. See ++ // https://github.com/rust-lang/cc-rs/pull/763 for further discussion. ++ let mut out = OsString::from("-out:"); ++ out.push(dst); ++ cmd.arg(out); ++ if !any_flags { ++ cmd.arg("-nologo"); ++ } ++ // If the library file already exists, add the library name ++ // as an argument to let lib.exe know we are appending the objs. ++ if dst.exists() { ++ cmd.arg(dst); ++ } ++ cmd.args(objs); ++ run(&mut cmd, &program)?; ++ } else { ++ let (mut ar, cmd, _any_flags) = self.get_ar()?; ++ ++ // Set an environment variable to tell the OSX archiver to ensure ++ // that all dates listed in the archive are zero, improving ++ // determinism of builds. AFAIK there's not really official ++ // documentation of this but there's a lot of references to it if ++ // you search google. ++ // ++ // You can reproduce this locally on a mac with: ++ // ++ // $ touch foo.c ++ // $ cc -c foo.c -o foo.o ++ // ++ // # Notice that these two checksums are different ++ // $ ar crus libfoo1.a foo.o && sleep 2 && ar crus libfoo2.a foo.o ++ // $ md5sum libfoo*.a ++ // ++ // # Notice that these two checksums are the same ++ // $ export ZERO_AR_DATE=1 ++ // $ ar crus libfoo1.a foo.o && sleep 2 && touch foo.o && ar crus libfoo2.a foo.o ++ // $ md5sum libfoo*.a ++ // ++ // In any case if this doesn't end up getting read, it shouldn't ++ // cause that many issues! ++ ar.env("ZERO_AR_DATE", "1"); ++ ++ // NOTE: We add cq here regardless of whether $ARFLAGS/ar_flag have been used because ++ // it dictates the _mode_ ar runs in, which the setter of $ARFLAGS/ar_flag can't ++ // dictate. See https://github.com/rust-lang/cc-rs/pull/763 for further discussion. ++ run(ar.arg("cq").arg(dst).args(objs), &cmd)?; ++ } ++ ++ Ok(()) ++ } ++ ++ fn ios_watchos_flags(&self, cmd: &mut Tool) -> Result<(), Error> { ++ enum ArchSpec { ++ Device(&'static str), ++ Simulator(&'static str), ++ Catalyst(&'static str), ++ } ++ ++ enum Os { ++ Ios, ++ WatchOs, ++ } ++ impl Display for Os { ++ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { ++ match self { ++ Os::Ios => f.write_str("iOS"), ++ Os::WatchOs => f.write_str("WatchOS"), ++ } ++ } ++ } ++ ++ let target = self.get_target()?; ++ let os = if target.contains("-watchos") { ++ Os::WatchOs ++ } else { ++ Os::Ios ++ }; ++ ++ let arch = target.split('-').nth(0).ok_or_else(|| { ++ Error::new( ++ ErrorKind::ArchitectureInvalid, ++ format!("Unknown architecture for {} target.", os).as_str(), ++ ) ++ })?; ++ ++ let is_catalyst = match target.split('-').nth(3) { ++ Some(v) => v == "macabi", ++ None => false, ++ }; ++ ++ let is_sim = match target.split('-').nth(3) { ++ Some(v) => v == "sim", ++ None => false, ++ }; ++ ++ let arch = if is_catalyst { ++ match arch { ++ "arm64e" => ArchSpec::Catalyst("arm64e"), ++ "arm64" | "aarch64" => ArchSpec::Catalyst("arm64"), ++ "x86_64" => ArchSpec::Catalyst("-m64"), ++ _ => { ++ return Err(Error::new( ++ ErrorKind::ArchitectureInvalid, ++ "Unknown architecture for iOS target.", ++ )); ++ } ++ } ++ } else if is_sim { ++ match arch { ++ "arm64" | "aarch64" => ArchSpec::Simulator("arm64"), ++ "x86_64" => ArchSpec::Simulator("-m64"), ++ _ => { ++ return Err(Error::new( ++ ErrorKind::ArchitectureInvalid, ++ "Unknown architecture for iOS simulator target.", ++ )); ++ } ++ } ++ } else { ++ match arch { ++ "arm" | "armv7" | "thumbv7" => ArchSpec::Device("armv7"), ++ "armv7k" => ArchSpec::Device("armv7k"), ++ "armv7s" | "thumbv7s" => ArchSpec::Device("armv7s"), ++ "arm64e" => ArchSpec::Device("arm64e"), ++ "arm64" | "aarch64" => ArchSpec::Device("arm64"), ++ "arm64_32" => ArchSpec::Device("arm64_32"), ++ "i386" | "i686" => ArchSpec::Simulator("-m32"), ++ "x86_64" => ArchSpec::Simulator("-m64"), ++ _ => { ++ return Err(Error::new( ++ ErrorKind::ArchitectureInvalid, ++ format!("Unknown architecture for {} target.", os).as_str(), ++ )); ++ } ++ } ++ }; ++ ++ let (sdk_prefix, sim_prefix, min_version) = match os { ++ Os::Ios => ( ++ "iphone", ++ "ios-", ++ std::env::var("IPHONEOS_DEPLOYMENT_TARGET").unwrap_or_else(|_| "7.0".into()), ++ ), ++ Os::WatchOs => ( ++ "watch", ++ "watch", ++ std::env::var("WATCHOS_DEPLOYMENT_TARGET").unwrap_or_else(|_| "2.0".into()), ++ ), ++ }; ++ ++ let sdk = match arch { ++ ArchSpec::Device(arch) => { ++ cmd.args.push("-arch".into()); ++ cmd.args.push(arch.into()); ++ cmd.args ++ .push(format!("-m{}os-version-min={}", sdk_prefix, min_version).into()); ++ format!("{}os", sdk_prefix) ++ } ++ ArchSpec::Simulator(arch) => { ++ if arch.starts_with('-') { ++ // -m32 or -m64 ++ cmd.args.push(arch.into()); ++ } else { ++ cmd.args.push("-arch".into()); ++ cmd.args.push(arch.into()); ++ } ++ cmd.args ++ .push(format!("-m{}simulator-version-min={}", sim_prefix, min_version).into()); ++ format!("{}simulator", sdk_prefix) ++ } ++ ArchSpec::Catalyst(_) => "macosx".to_owned(), ++ }; ++ ++ self.print(&format!("Detecting {} SDK path for {}", os, sdk)); ++ let sdk_path = if let Some(sdkroot) = env::var_os("SDKROOT") { ++ sdkroot ++ } else { ++ self.apple_sdk_root(sdk.as_str())? ++ }; ++ ++ cmd.args.push("-isysroot".into()); ++ cmd.args.push(sdk_path); ++ // TODO: Remove this once Apple stops accepting apps built with Xcode 13 ++ cmd.args.push("-fembed-bitcode".into()); ++ ++ Ok(()) ++ } ++ ++ fn cmd>(&self, prog: P) -> Command { ++ let mut cmd = Command::new(prog); ++ for &(ref a, ref b) in self.env.iter() { ++ cmd.env(a, b); ++ } ++ cmd ++ } ++ ++ fn get_base_compiler(&self) -> Result { ++ if let Some(ref c) = self.compiler { ++ return Ok(Tool::new(c.clone())); ++ } ++ let host = self.get_host()?; ++ let target = self.get_target()?; ++ let (env, msvc, gnu, traditional, clang) = if self.cpp { ++ ("CXX", "cl.exe", "g++", "c++", "clang++") ++ } else { ++ ("CC", "cl.exe", "gcc", "cc", "clang") ++ }; ++ ++ // On historical Solaris systems, "cc" may have been Sun Studio, which ++ // is not flag-compatible with "gcc". This history casts a long shadow, ++ // and many modern illumos distributions today ship GCC as "gcc" without ++ // also making it available as "cc". ++ let default = if host.contains("solaris") || host.contains("illumos") { ++ gnu ++ } else { ++ traditional ++ }; ++ ++ let cl_exe = windows_registry::find_tool(&target, "cl.exe"); ++ ++ let tool_opt: Option = self ++ .env_tool(env) ++ .map(|(tool, wrapper, args)| { ++ // find the driver mode, if any ++ const DRIVER_MODE: &str = "--driver-mode="; ++ let driver_mode = args ++ .iter() ++ .find(|a| a.starts_with(DRIVER_MODE)) ++ .map(|a| &a[DRIVER_MODE.len()..]); ++ // Chop off leading/trailing whitespace to work around ++ // semi-buggy build scripts which are shared in ++ // makefiles/configure scripts (where spaces are far more ++ // lenient) ++ let mut t = Tool::with_clang_driver(PathBuf::from(tool.trim()), driver_mode); ++ if let Some(cc_wrapper) = wrapper { ++ t.cc_wrapper_path = Some(PathBuf::from(cc_wrapper)); ++ } ++ for arg in args { ++ t.cc_wrapper_args.push(arg.into()); ++ } ++ t ++ }) ++ .or_else(|| { ++ if target.contains("emscripten") { ++ let tool = if self.cpp { "em++" } else { "emcc" }; ++ // Windows uses bat file so we have to be a bit more specific ++ if cfg!(windows) { ++ let mut t = Tool::new(PathBuf::from("cmd")); ++ t.args.push("/c".into()); ++ t.args.push(format!("{}.bat", tool).into()); ++ Some(t) ++ } else { ++ Some(Tool::new(PathBuf::from(tool))) ++ } ++ } else { ++ None ++ } ++ }) ++ .or_else(|| cl_exe.clone()); ++ ++ let tool = match tool_opt { ++ Some(t) => t, ++ None => { ++ let compiler = if host.contains("windows") && target.contains("windows") { ++ if target.contains("msvc") { ++ msvc.to_string() ++ } else { ++ let cc = if target.contains("llvm") { clang } else { gnu }; ++ format!("{}.exe", cc) ++ } ++ } else if target.contains("apple-ios") { ++ clang.to_string() ++ } else if target.contains("apple-watchos") { ++ clang.to_string() ++ } else if target.contains("android") { ++ autodetect_android_compiler(&target, &host, gnu, clang) ++ } else if target.contains("cloudabi") { ++ format!("{}-{}", target, traditional) ++ } else if target == "wasm32-wasi" ++ || target == "wasm32-unknown-wasi" ++ || target == "wasm32-unknown-unknown" ++ { ++ "clang".to_string() ++ } else if target.contains("vxworks") { ++ if self.cpp { ++ "wr-c++".to_string() ++ } else { ++ "wr-cc".to_string() ++ } ++ } else if target.starts_with("armv7a-kmc-solid_") { ++ format!("arm-kmc-eabi-{}", gnu) ++ } else if target.starts_with("aarch64-kmc-solid_") { ++ format!("aarch64-kmc-elf-{}", gnu) ++ } else if self.get_host()? != target { ++ let prefix = self.prefix_for_target(&target); ++ match prefix { ++ Some(prefix) => { ++ let cc = if target.contains("llvm") { clang } else { gnu }; ++ format!("{}-{}", prefix, cc) ++ } ++ None => default.to_string(), ++ } ++ } else { ++ default.to_string() ++ }; ++ ++ let mut t = Tool::new(PathBuf::from(compiler)); ++ if let Some(cc_wrapper) = Self::rustc_wrapper_fallback() { ++ t.cc_wrapper_path = Some(PathBuf::from(cc_wrapper)); ++ } ++ t ++ } ++ }; ++ ++ let mut tool = if self.cuda { ++ assert!( ++ tool.args.is_empty(), ++ "CUDA compilation currently assumes empty pre-existing args" ++ ); ++ let nvcc = match self.get_var("NVCC") { ++ Err(_) => "nvcc".into(), ++ Ok(nvcc) => nvcc, ++ }; ++ let mut nvcc_tool = Tool::with_features(PathBuf::from(nvcc), None, self.cuda); ++ nvcc_tool ++ .args ++ .push(format!("-ccbin={}", tool.path.display()).into()); ++ nvcc_tool.family = tool.family; ++ nvcc_tool ++ } else { ++ tool ++ }; ++ ++ // New "standalone" C/C++ cross-compiler executables from recent Android NDK ++ // are just shell scripts that call main clang binary (from Android NDK) with ++ // proper `--target` argument. ++ // ++ // For example, armv7a-linux-androideabi16-clang passes ++ // `--target=armv7a-linux-androideabi16` to clang. ++ // ++ // As the shell script calls the main clang binary, the command line limit length ++ // on Windows is restricted to around 8k characters instead of around 32k characters. ++ // To remove this limit, we call the main clang binary directly and construct the ++ // `--target=` ourselves. ++ if host.contains("windows") && android_clang_compiler_uses_target_arg_internally(&tool.path) ++ { ++ if let Some(path) = tool.path.file_name() { ++ let file_name = path.to_str().unwrap().to_owned(); ++ let (target, clang) = file_name.split_at(file_name.rfind("-").unwrap()); ++ ++ tool.path.set_file_name(clang.trim_start_matches("-")); ++ tool.path.set_extension("exe"); ++ tool.args.push(format!("--target={}", target).into()); ++ ++ // Additionally, shell scripts for target i686-linux-android versions 16 to 24 ++ // pass the `mstackrealign` option so we do that here as well. ++ if target.contains("i686-linux-android") { ++ let (_, version) = target.split_at(target.rfind("d").unwrap() + 1); ++ if let Ok(version) = version.parse::() { ++ if version > 15 && version < 25 { ++ tool.args.push("-mstackrealign".into()); ++ } ++ } ++ } ++ }; ++ } ++ ++ // If we found `cl.exe` in our environment, the tool we're returning is ++ // an MSVC-like tool, *and* no env vars were set then set env vars for ++ // the tool that we're returning. ++ // ++ // Env vars are needed for things like `link.exe` being put into PATH as ++ // well as header include paths sometimes. These paths are automatically ++ // included by default but if the `CC` or `CXX` env vars are set these ++ // won't be used. This'll ensure that when the env vars are used to ++ // configure for invocations like `clang-cl` we still get a "works out ++ // of the box" experience. ++ if let Some(cl_exe) = cl_exe { ++ if tool.family == (ToolFamily::Msvc { clang_cl: true }) ++ && tool.env.len() == 0 ++ && target.contains("msvc") ++ { ++ for &(ref k, ref v) in cl_exe.env.iter() { ++ tool.env.push((k.to_owned(), v.to_owned())); ++ } ++ } ++ } ++ ++ Ok(tool) ++ } ++ ++ fn get_var(&self, var_base: &str) -> Result { ++ let target = self.get_target()?; ++ let host = self.get_host()?; ++ let kind = if host == target { "HOST" } else { "TARGET" }; ++ let target_u = target.replace("-", "_"); ++ let res = self ++ .getenv(&format!("{}_{}", var_base, target)) ++ .or_else(|| self.getenv(&format!("{}_{}", var_base, target_u))) ++ .or_else(|| self.getenv(&format!("{}_{}", kind, var_base))) ++ .or_else(|| self.getenv(var_base)); ++ ++ match res { ++ Some(res) => Ok(res), ++ None => Err(Error::new( ++ ErrorKind::EnvVarNotFound, ++ &format!("Could not find environment variable {}.", var_base), ++ )), ++ } ++ } ++ ++ fn envflags(&self, name: &str) -> Vec { ++ self.get_var(name) ++ .unwrap_or(String::new()) ++ .split_ascii_whitespace() ++ .map(|slice| slice.to_string()) ++ .collect() ++ } ++ ++ /// Returns a fallback `cc_compiler_wrapper` by introspecting `RUSTC_WRAPPER` ++ fn rustc_wrapper_fallback() -> Option { ++ // No explicit CC wrapper was detected, but check if RUSTC_WRAPPER ++ // is defined and is a build accelerator that is compatible with ++ // C/C++ compilers (e.g. sccache) ++ const VALID_WRAPPERS: &[&'static str] = &["sccache", "cachepot"]; ++ ++ let rustc_wrapper = std::env::var_os("RUSTC_WRAPPER")?; ++ let wrapper_path = Path::new(&rustc_wrapper); ++ let wrapper_stem = wrapper_path.file_stem()?; ++ ++ if VALID_WRAPPERS.contains(&wrapper_stem.to_str()?) { ++ Some(rustc_wrapper.to_str()?.to_owned()) ++ } else { ++ None ++ } ++ } ++ ++ /// Returns compiler path, optional modifier name from whitelist, and arguments vec ++ fn env_tool(&self, name: &str) -> Option<(String, Option, Vec)> { ++ let tool = match self.get_var(name) { ++ Ok(tool) => tool, ++ Err(_) => return None, ++ }; ++ ++ // If this is an exact path on the filesystem we don't want to do any ++ // interpretation at all, just pass it on through. This'll hopefully get ++ // us to support spaces-in-paths. ++ if Path::new(&tool).exists() { ++ return Some((tool, None, Vec::new())); ++ } ++ ++ // Ok now we want to handle a couple of scenarios. We'll assume from ++ // here on out that spaces are splitting separate arguments. Two major ++ // features we want to support are: ++ // ++ // CC='sccache cc' ++ // ++ // aka using `sccache` or any other wrapper/caching-like-thing for ++ // compilations. We want to know what the actual compiler is still, ++ // though, because our `Tool` API support introspection of it to see ++ // what compiler is in use. ++ // ++ // additionally we want to support ++ // ++ // CC='cc -flag' ++ // ++ // where the CC env var is used to also pass default flags to the C ++ // compiler. ++ // ++ // It's true that everything here is a bit of a pain, but apparently if ++ // you're not literally make or bash then you get a lot of bug reports. ++ let known_wrappers = ["ccache", "distcc", "sccache", "icecc", "cachepot"]; ++ ++ let mut parts = tool.split_whitespace(); ++ let maybe_wrapper = match parts.next() { ++ Some(s) => s, ++ None => return None, ++ }; ++ ++ let file_stem = Path::new(maybe_wrapper) ++ .file_stem() ++ .unwrap() ++ .to_str() ++ .unwrap(); ++ if known_wrappers.contains(&file_stem) { ++ if let Some(compiler) = parts.next() { ++ return Some(( ++ compiler.to_string(), ++ Some(maybe_wrapper.to_string()), ++ parts.map(|s| s.to_string()).collect(), ++ )); ++ } ++ } ++ ++ Some(( ++ maybe_wrapper.to_string(), ++ Self::rustc_wrapper_fallback(), ++ parts.map(|s| s.to_string()).collect(), ++ )) ++ } ++ ++ /// Returns the C++ standard library: ++ /// 1. If [cpp_link_stdlib](cc::Build::cpp_link_stdlib) is set, uses its value. ++ /// 2. Else if the `CXXSTDLIB` environment variable is set, uses its value. ++ /// 3. Else the default is `libc++` for OS X and BSDs, `libc++_shared` for Android, ++ /// `None` for MSVC and `libstdc++` for anything else. ++ fn get_cpp_link_stdlib(&self) -> Result, Error> { ++ match self.cpp_link_stdlib.clone() { ++ Some(s) => Ok(s), ++ None => { ++ if let Ok(stdlib) = self.get_var("CXXSTDLIB") { ++ if stdlib.is_empty() { ++ Ok(None) ++ } else { ++ Ok(Some(stdlib)) ++ } ++ } else { ++ let target = self.get_target()?; ++ if target.contains("msvc") { ++ Ok(None) ++ } else if target.contains("apple") { ++ Ok(Some("c++".to_string())) ++ } else if target.contains("freebsd") { ++ Ok(Some("c++".to_string())) ++ } else if target.contains("openbsd") { ++ Ok(Some("c++".to_string())) ++ } else if target.contains("android") { ++ Ok(Some("c++_shared".to_string())) ++ } else { ++ Ok(Some("stdc++".to_string())) ++ } ++ } ++ } ++ } ++ } ++ ++ fn get_ar(&self) -> Result<(Command, String, bool), Error> { ++ self.try_get_archiver_and_flags() ++ } ++ ++ /// Get the archiver (ar) that's in use for this configuration. ++ /// ++ /// You can use [`Command::get_program`] to get just the path to the command. ++ /// ++ /// This method will take into account all configuration such as debug ++ /// information, optimization level, include directories, defines, etc. ++ /// Additionally, the compiler binary in use follows the standard ++ /// conventions for this path, e.g. looking at the explicitly set compiler, ++ /// environment variables (a number of which are inspected here), and then ++ /// falling back to the default configuration. ++ /// ++ /// # Panics ++ /// ++ /// Panics if an error occurred while determining the architecture. ++ pub fn get_archiver(&self) -> Command { ++ match self.try_get_archiver() { ++ Ok(tool) => tool, ++ Err(e) => fail(&e.message), ++ } ++ } ++ ++ /// Get the archiver that's in use for this configuration. ++ /// ++ /// This will return a result instead of panicing; ++ /// see [`get_archiver()`] for the complete description. ++ pub fn try_get_archiver(&self) -> Result { ++ Ok(self.try_get_archiver_and_flags()?.0) ++ } ++ ++ fn try_get_archiver_and_flags(&self) -> Result<(Command, String, bool), Error> { ++ let (mut cmd, name) = self.get_base_archiver()?; ++ let flags = self.envflags("ARFLAGS"); ++ let mut any_flags = !flags.is_empty(); ++ cmd.args(flags); ++ for flag in &self.ar_flags { ++ any_flags = true; ++ cmd.arg(flag); ++ } ++ Ok((cmd, name, any_flags)) ++ } ++ ++ fn get_base_archiver(&self) -> Result<(Command, String), Error> { ++ if let Some(ref a) = self.archiver { ++ return Ok((self.cmd(a), a.to_string_lossy().into_owned())); ++ } ++ ++ self.get_base_archiver_variant("AR", "ar") ++ } ++ ++ /// Get the ranlib that's in use for this configuration. ++ /// ++ /// You can use [`Command::get_program`] to get just the path to the command. ++ /// ++ /// This method will take into account all configuration such as debug ++ /// information, optimization level, include directories, defines, etc. ++ /// Additionally, the compiler binary in use follows the standard ++ /// conventions for this path, e.g. looking at the explicitly set compiler, ++ /// environment variables (a number of which are inspected here), and then ++ /// falling back to the default configuration. ++ /// ++ /// # Panics ++ /// ++ /// Panics if an error occurred while determining the architecture. ++ pub fn get_ranlib(&self) -> Command { ++ match self.try_get_ranlib() { ++ Ok(tool) => tool, ++ Err(e) => fail(&e.message), ++ } ++ } ++ ++ /// Get the ranlib that's in use for this configuration. ++ /// ++ /// This will return a result instead of panicing; ++ /// see [`get_ranlib()`] for the complete description. ++ pub fn try_get_ranlib(&self) -> Result { ++ let mut cmd = self.get_base_ranlib()?; ++ cmd.args(self.envflags("RANLIBFLAGS")); ++ Ok(cmd) ++ } ++ ++ fn get_base_ranlib(&self) -> Result { ++ if let Some(ref r) = self.ranlib { ++ return Ok(self.cmd(r)); ++ } ++ ++ Ok(self.get_base_archiver_variant("RANLIB", "ranlib")?.0) ++ } ++ ++ fn get_base_archiver_variant(&self, env: &str, tool: &str) -> Result<(Command, String), Error> { ++ let target = self.get_target()?; ++ let mut name = String::new(); ++ let tool_opt: Option = self ++ .env_tool(env) ++ .map(|(tool, _wrapper, args)| { ++ let mut cmd = self.cmd(tool); ++ cmd.args(args); ++ cmd ++ }) ++ .or_else(|| { ++ if target.contains("emscripten") { ++ // Windows use bat files so we have to be a bit more specific ++ if cfg!(windows) { ++ let mut cmd = self.cmd("cmd"); ++ name = format!("em{}.bat", tool); ++ cmd.arg("/c").arg(&name); ++ Some(cmd) ++ } else { ++ name = format!("em{}", tool); ++ Some(self.cmd(&name)) ++ } ++ } else { ++ None ++ } ++ }); ++ ++ let default = tool.to_string(); ++ let tool = match tool_opt { ++ Some(t) => t, ++ None => { ++ if target.contains("android") { ++ name = format!("{}-{}", target.replace("armv7", "arm"), tool); ++ self.cmd(&name) ++ } else if target.contains("msvc") { ++ // NOTE: There isn't really a ranlib on msvc, so arguably we should return ++ // `None` somehow here. But in general, callers will already have to be aware ++ // of not running ranlib on Windows anyway, so it feels okay to return lib.exe ++ // here. ++ ++ let compiler = self.get_base_compiler()?; ++ let mut lib = String::new(); ++ if compiler.family == (ToolFamily::Msvc { clang_cl: true }) { ++ // See if there is 'llvm-lib' next to 'clang-cl' ++ // Another possibility could be to see if there is 'clang' ++ // next to 'clang-cl' and use 'search_programs()' to locate ++ // 'llvm-lib'. This is because 'clang-cl' doesn't support ++ // the -print-search-dirs option. ++ if let Some(mut cmd) = which(&compiler.path) { ++ cmd.pop(); ++ cmd.push("llvm-lib.exe"); ++ if let Some(llvm_lib) = which(&cmd) { ++ lib = llvm_lib.to_str().unwrap().to_owned(); ++ } ++ } ++ } ++ ++ if lib.is_empty() { ++ name = String::from("lib.exe"); ++ match windows_registry::find(&target, "lib.exe") { ++ Some(t) => t, ++ None => self.cmd("lib.exe"), ++ } ++ } else { ++ name = lib; ++ self.cmd(&name) ++ } ++ } else if target.contains("illumos") { ++ // The default 'ar' on illumos uses a non-standard flags, ++ // but the OS comes bundled with a GNU-compatible variant. ++ // ++ // Use the GNU-variant to match other Unix systems. ++ name = format!("g{}", tool); ++ self.cmd(&name) ++ } else if self.get_host()? != target { ++ match self.prefix_for_target(&target) { ++ Some(p) => { ++ // GCC uses $target-gcc-ar, whereas binutils uses $target-ar -- try both. ++ // Prefer -ar if it exists, as builds of `-gcc-ar` have been observed to be ++ // outright broken (such as when targetting freebsd with `--disable-lto` ++ // toolchain where the archiver attempts to load the LTO plugin anyway but ++ // fails to find one). ++ // ++ // The same applies to ranlib. ++ let mut chosen = default; ++ for &infix in &["", "-gcc"] { ++ let target_p = format!("{}{}-{}", p, infix, tool); ++ if Command::new(&target_p).output().is_ok() { ++ chosen = target_p; ++ break; ++ } ++ } ++ name = chosen; ++ self.cmd(&name) ++ } ++ None => { ++ name = default; ++ self.cmd(&name) ++ } ++ } ++ } else { ++ name = default; ++ self.cmd(&name) ++ } ++ } ++ }; ++ ++ Ok((tool, name)) ++ } ++ ++ fn prefix_for_target(&self, target: &str) -> Option { ++ // Put aside RUSTC_LINKER's prefix to be used as last resort ++ let rustc_linker = self.getenv("RUSTC_LINKER").unwrap_or("".to_string()); ++ // let linker_prefix = rustc_linker.strip_suffix("-gcc"); // >=1.45.0 ++ let linker_prefix = if rustc_linker.len() > 4 { ++ let (prefix, suffix) = rustc_linker.split_at(rustc_linker.len() - 4); ++ if suffix == "-gcc" { ++ Some(prefix) ++ } else { ++ None ++ } ++ } else { ++ None ++ }; ++ // CROSS_COMPILE is of the form: "arm-linux-gnueabi-" ++ let cc_env = self.getenv("CROSS_COMPILE"); ++ let cross_compile = cc_env.as_ref().map(|s| s.trim_end_matches('-').to_owned()); ++ cross_compile.or(match &target[..] { ++ // Note: there is no `aarch64-pc-windows-gnu` target, only `-gnullvm` ++ "aarch64-pc-windows-gnullvm" => Some("aarch64-w64-mingw32"), ++ "aarch64-uwp-windows-gnu" => Some("aarch64-w64-mingw32"), ++ "aarch64-unknown-linux-gnu" => Some("aarch64-linux-gnu"), ++ "aarch64-unknown-linux-musl" => Some("aarch64-linux-musl"), ++ "aarch64-unknown-netbsd" => Some("aarch64--netbsd"), ++ "arm-unknown-linux-gnueabi" => Some("arm-linux-gnueabi"), ++ "armv4t-unknown-linux-gnueabi" => Some("arm-linux-gnueabi"), ++ "armv5te-unknown-linux-gnueabi" => Some("arm-linux-gnueabi"), ++ "armv5te-unknown-linux-musleabi" => Some("arm-linux-gnueabi"), ++ "arm-frc-linux-gnueabi" => Some("arm-frc-linux-gnueabi"), ++ "arm-unknown-linux-gnueabihf" => Some("arm-linux-gnueabihf"), ++ "arm-unknown-linux-musleabi" => Some("arm-linux-musleabi"), ++ "arm-unknown-linux-musleabihf" => Some("arm-linux-musleabihf"), ++ "arm-unknown-netbsd-eabi" => Some("arm--netbsdelf-eabi"), ++ "armv6-unknown-netbsd-eabihf" => Some("armv6--netbsdelf-eabihf"), ++ "armv7-unknown-linux-gnueabi" => Some("arm-linux-gnueabi"), ++ "armv7-unknown-linux-gnueabihf" => Some("arm-linux-gnueabihf"), ++ "armv7-unknown-linux-musleabihf" => Some("arm-linux-musleabihf"), ++ "armv7neon-unknown-linux-gnueabihf" => Some("arm-linux-gnueabihf"), ++ "armv7neon-unknown-linux-musleabihf" => Some("arm-linux-musleabihf"), ++ "thumbv7-unknown-linux-gnueabihf" => Some("arm-linux-gnueabihf"), ++ "thumbv7-unknown-linux-musleabihf" => Some("arm-linux-musleabihf"), ++ "thumbv7neon-unknown-linux-gnueabihf" => Some("arm-linux-gnueabihf"), ++ "thumbv7neon-unknown-linux-musleabihf" => Some("arm-linux-musleabihf"), ++ "armv7-unknown-netbsd-eabihf" => Some("armv7--netbsdelf-eabihf"), ++ "hexagon-unknown-linux-musl" => Some("hexagon-linux-musl"), ++ "i586-unknown-linux-musl" => Some("musl"), ++ "i686-pc-windows-gnu" => Some("i686-w64-mingw32"), ++ "i686-uwp-windows-gnu" => Some("i686-w64-mingw32"), ++ "i686-unknown-linux-gnu" => self.find_working_gnu_prefix(&[ ++ "i686-linux-gnu", ++ "x86_64-linux-gnu", // transparently support gcc-multilib ++ ]), // explicit None if not found, so caller knows to fall back ++ "i686-unknown-linux-musl" => Some("musl"), ++ "i686-unknown-netbsd" => Some("i486--netbsdelf"), ++ "mips-unknown-linux-gnu" => Some("mips-linux-gnu"), ++ "mips-unknown-linux-musl" => Some("mips-linux-musl"), ++ "mipsel-unknown-linux-gnu" => Some("mipsel-linux-gnu"), ++ "mipsel-unknown-linux-musl" => Some("mipsel-linux-musl"), ++ "mips64-unknown-linux-gnuabi64" => Some("mips64-linux-gnuabi64"), ++ "mips64el-unknown-linux-gnuabi64" => Some("mips64el-linux-gnuabi64"), ++ "mipsisa32r6-unknown-linux-gnu" => Some("mipsisa32r6-linux-gnu"), ++ "mipsisa32r6el-unknown-linux-gnu" => Some("mipsisa32r6el-linux-gnu"), ++ "mipsisa64r6-unknown-linux-gnuabi64" => Some("mipsisa64r6-linux-gnuabi64"), ++ "mipsisa64r6el-unknown-linux-gnuabi64" => Some("mipsisa64r6el-linux-gnuabi64"), ++ "powerpc-unknown-linux-gnu" => Some("powerpc-linux-gnu"), ++ "powerpc-unknown-linux-gnuspe" => Some("powerpc-linux-gnuspe"), ++ "powerpc-unknown-netbsd" => Some("powerpc--netbsd"), ++ "powerpc64-unknown-linux-gnu" => Some("powerpc-linux-gnu"), ++ "powerpc64le-unknown-linux-gnu" => Some("powerpc64le-linux-gnu"), ++ "riscv32i-unknown-none-elf" => self.find_working_gnu_prefix(&[ ++ "riscv32-unknown-elf", ++ "riscv64-unknown-elf", ++ "riscv-none-embed", ++ ]), ++ "riscv32imac-unknown-none-elf" => self.find_working_gnu_prefix(&[ ++ "riscv32-unknown-elf", ++ "riscv64-unknown-elf", ++ "riscv-none-embed", ++ ]), ++ "riscv32imac-unknown-xous-elf" => self.find_working_gnu_prefix(&[ ++ "riscv32-unknown-elf", ++ "riscv64-unknown-elf", ++ "riscv-none-embed", ++ ]), ++ "riscv32imc-esp-espidf" => Some("riscv32-esp-elf"), ++ "riscv32imc-unknown-none-elf" => self.find_working_gnu_prefix(&[ ++ "riscv32-unknown-elf", ++ "riscv64-unknown-elf", ++ "riscv-none-embed", ++ ]), ++ "riscv64gc-unknown-none-elf" => self.find_working_gnu_prefix(&[ ++ "riscv64-unknown-elf", ++ "riscv32-unknown-elf", ++ "riscv-none-embed", ++ ]), ++ "riscv64imac-unknown-none-elf" => self.find_working_gnu_prefix(&[ ++ "riscv64-unknown-elf", ++ "riscv32-unknown-elf", ++ "riscv-none-embed", ++ ]), ++ "riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"), ++ "riscv32gc-unknown-linux-gnu" => Some("riscv32-linux-gnu"), ++ "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"), ++ "riscv32gc-unknown-linux-musl" => Some("riscv32-linux-musl"), ++ "s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"), ++ "sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"), ++ "sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"), ++ "sparc64-unknown-netbsd" => Some("sparc64--netbsd"), ++ "sparcv9-sun-solaris" => Some("sparcv9-sun-solaris"), ++ "armv7a-none-eabi" => Some("arm-none-eabi"), ++ "armv7a-none-eabihf" => Some("arm-none-eabi"), ++ "armebv7r-none-eabi" => Some("arm-none-eabi"), ++ "armebv7r-none-eabihf" => Some("arm-none-eabi"), ++ "armv7r-none-eabi" => Some("arm-none-eabi"), ++ "armv7r-none-eabihf" => Some("arm-none-eabi"), ++ "thumbv6m-none-eabi" => Some("arm-none-eabi"), ++ "thumbv7em-none-eabi" => Some("arm-none-eabi"), ++ "thumbv7em-none-eabihf" => Some("arm-none-eabi"), ++ "thumbv7m-none-eabi" => Some("arm-none-eabi"), ++ "thumbv8m.base-none-eabi" => Some("arm-none-eabi"), ++ "thumbv8m.main-none-eabi" => Some("arm-none-eabi"), ++ "thumbv8m.main-none-eabihf" => Some("arm-none-eabi"), ++ "x86_64-pc-windows-gnu" => Some("x86_64-w64-mingw32"), ++ "x86_64-pc-windows-gnullvm" => Some("x86_64-w64-mingw32"), ++ "x86_64-uwp-windows-gnu" => Some("x86_64-w64-mingw32"), ++ "x86_64-rumprun-netbsd" => Some("x86_64-rumprun-netbsd"), ++ "x86_64-unknown-linux-gnu" => self.find_working_gnu_prefix(&[ ++ "x86_64-linux-gnu", // rustfmt wrap ++ ]), // explicit None if not found, so caller knows to fall back ++ "x86_64-unknown-linux-musl" => Some("musl"), ++ "x86_64-unknown-netbsd" => Some("x86_64--netbsd"), ++ _ => linker_prefix, ++ } ++ .map(|x| x.to_owned())) ++ } ++ ++ /// Some platforms have multiple, compatible, canonical prefixes. Look through ++ /// each possible prefix for a compiler that exists and return it. The prefixes ++ /// should be ordered from most-likely to least-likely. ++ fn find_working_gnu_prefix(&self, prefixes: &[&'static str]) -> Option<&'static str> { ++ let suffix = if self.cpp { "-g++" } else { "-gcc" }; ++ let extension = std::env::consts::EXE_SUFFIX; ++ ++ // Loop through PATH entries searching for each toolchain. This ensures that we ++ // are more likely to discover the toolchain early on, because chances are good ++ // that the desired toolchain is in one of the higher-priority paths. ++ env::var_os("PATH") ++ .as_ref() ++ .and_then(|path_entries| { ++ env::split_paths(path_entries).find_map(|path_entry| { ++ for prefix in prefixes { ++ let target_compiler = format!("{}{}{}", prefix, suffix, extension); ++ if path_entry.join(&target_compiler).exists() { ++ return Some(prefix); ++ } ++ } ++ None ++ }) ++ }) ++ .map(|prefix| *prefix) ++ .or_else(|| ++ // If no toolchain was found, provide the first toolchain that was passed in. ++ // This toolchain has been shown not to exist, however it will appear in the ++ // error that is shown to the user which should make it easier to search for ++ // where it should be obtained. ++ prefixes.first().map(|prefix| *prefix)) ++ } ++ ++ fn get_target(&self) -> Result { ++ match self.target.clone() { ++ Some(t) => Ok(t), ++ None => Ok(self.getenv_unwrap("TARGET")?), ++ } ++ } ++ ++ fn get_host(&self) -> Result { ++ match self.host.clone() { ++ Some(h) => Ok(h), ++ None => Ok(self.getenv_unwrap("HOST")?), ++ } ++ } ++ ++ fn get_opt_level(&self) -> Result { ++ match self.opt_level.as_ref().cloned() { ++ Some(ol) => Ok(ol), ++ None => Ok(self.getenv_unwrap("OPT_LEVEL")?), ++ } ++ } ++ ++ fn get_debug(&self) -> bool { ++ self.debug.unwrap_or_else(|| match self.getenv("DEBUG") { ++ Some(s) => s != "false", ++ None => false, ++ }) ++ } ++ ++ fn get_dwarf_version(&self) -> Option { ++ // Tentatively matches the DWARF version defaults as of rustc 1.62. ++ let target = self.get_target().ok()?; ++ if target.contains("android") ++ || target.contains("apple") ++ || target.contains("dragonfly") ++ || target.contains("freebsd") ++ || target.contains("netbsd") ++ || target.contains("openbsd") ++ || target.contains("windows-gnu") ++ { ++ Some(2) ++ } else if target.contains("linux") { ++ Some(4) ++ } else { ++ None ++ } ++ } ++ ++ fn get_force_frame_pointer(&self) -> bool { ++ self.force_frame_pointer.unwrap_or_else(|| self.get_debug()) ++ } ++ ++ fn get_out_dir(&self) -> Result { ++ match self.out_dir.clone() { ++ Some(p) => Ok(p), ++ None => Ok(env::var_os("OUT_DIR").map(PathBuf::from).ok_or_else(|| { ++ Error::new( ++ ErrorKind::EnvVarNotFound, ++ "Environment variable OUT_DIR not defined.", ++ ) ++ })?), ++ } ++ } ++ ++ fn getenv(&self, v: &str) -> Option { ++ // Returns true for environment variables cargo sets for build scripts: ++ // https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-build-scripts ++ // ++ // This handles more of the vars than we actually use (it tries to check ++ // complete-ish set), just to avoid needing maintenance if/when new ++ // calls to `getenv`/`getenv_unwrap` are added. ++ fn provided_by_cargo(envvar: &str) -> bool { ++ match envvar { ++ v if v.starts_with("CARGO") || v.starts_with("RUSTC") => true, ++ "HOST" | "TARGET" | "RUSTDOC" | "OUT_DIR" | "OPT_LEVEL" | "DEBUG" | "PROFILE" ++ | "NUM_JOBS" | "RUSTFLAGS" => true, ++ _ => false, ++ } ++ } ++ let mut cache = self.env_cache.lock().unwrap(); ++ if let Some(val) = cache.get(v) { ++ return val.clone(); ++ } ++ if self.emit_rerun_if_env_changed && !provided_by_cargo(v) { ++ self.print(&format!("cargo:rerun-if-env-changed={}", v)); ++ } ++ let r = env::var(v).ok(); ++ self.print(&format!("{} = {:?}", v, r)); ++ cache.insert(v.to_string(), r.clone()); ++ r ++ } ++ ++ fn getenv_unwrap(&self, v: &str) -> Result { ++ match self.getenv(v) { ++ Some(s) => Ok(s), ++ None => Err(Error::new( ++ ErrorKind::EnvVarNotFound, ++ &format!("Environment variable {} not defined.", v.to_string()), ++ )), ++ } ++ } ++ ++ fn print(&self, s: &str) { ++ if self.cargo_metadata { ++ println!("{}", s); ++ } ++ } ++ ++ fn fix_env_for_apple_os(&self, cmd: &mut Command) -> Result<(), Error> { ++ let target = self.get_target()?; ++ let host = self.get_host()?; ++ if host.contains("apple-darwin") && target.contains("apple-darwin") { ++ // If, for example, `cargo` runs during the build of an XCode project, then `SDKROOT` environment variable ++ // would represent the current target, and this is the problem for us, if we want to compile something ++ // for the host, when host != target. ++ // We can not just remove `SDKROOT`, because, again, for example, XCode add to PATH ++ // /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin ++ // and `cc` from this path can not find system include files, like `pthread.h`, if `SDKROOT` ++ // is not set ++ if let Ok(sdkroot) = env::var("SDKROOT") { ++ if !sdkroot.contains("MacOSX") { ++ let macos_sdk = self.apple_sdk_root("macosx")?; ++ cmd.env("SDKROOT", macos_sdk); ++ } ++ } ++ // Additionally, `IPHONEOS_DEPLOYMENT_TARGET` must not be set when using the Xcode linker at ++ // "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld", ++ // although this is apparently ignored when using the linker at "/usr/bin/ld". ++ cmd.env_remove("IPHONEOS_DEPLOYMENT_TARGET"); ++ } ++ Ok(()) ++ } ++ ++ fn apple_sdk_root(&self, sdk: &str) -> Result { ++ let mut cache = self ++ .apple_sdk_root_cache ++ .lock() ++ .expect("apple_sdk_root_cache lock failed"); ++ if let Some(ret) = cache.get(sdk) { ++ return Ok(ret.clone()); ++ } ++ ++ let sdk_path = run_output( ++ self.cmd("xcrun") ++ .arg("--show-sdk-path") ++ .arg("--sdk") ++ .arg(sdk), ++ "xcrun", ++ )?; ++ ++ let sdk_path = match String::from_utf8(sdk_path) { ++ Ok(p) => p, ++ Err(_) => { ++ return Err(Error::new( ++ ErrorKind::IOError, ++ "Unable to determine Apple SDK path.", ++ )); ++ } ++ }; ++ let ret: OsString = sdk_path.trim().into(); ++ cache.insert(sdk.into(), ret.clone()); ++ Ok(ret) ++ } ++ ++ fn cuda_file_count(&self) -> usize { ++ self.files ++ .iter() ++ .filter(|file| file.extension() == Some(OsStr::new("cu"))) ++ .count() ++ } ++} ++ ++impl Default for Build { ++ fn default() -> Build { ++ Build::new() ++ } ++} ++ ++impl Tool { ++ fn new(path: PathBuf) -> Self { ++ Tool::with_features(path, None, false) ++ } ++ ++ fn with_clang_driver(path: PathBuf, clang_driver: Option<&str>) -> Self { ++ Self::with_features(path, clang_driver, false) ++ } ++ ++ #[cfg(windows)] ++ /// Explicitly set the `ToolFamily`, skipping name-based detection. ++ fn with_family(path: PathBuf, family: ToolFamily) -> Self { ++ Self { ++ path: path, ++ cc_wrapper_path: None, ++ cc_wrapper_args: Vec::new(), ++ args: Vec::new(), ++ env: Vec::new(), ++ family: family, ++ cuda: false, ++ removed_args: Vec::new(), ++ } ++ } ++ ++ fn with_features(path: PathBuf, clang_driver: Option<&str>, cuda: bool) -> Self { ++ // Try to detect family of the tool from its name, falling back to Gnu. ++ let family = if let Some(fname) = path.file_name().and_then(|p| p.to_str()) { ++ if fname.contains("clang-cl") { ++ ToolFamily::Msvc { clang_cl: true } ++ } else if fname.ends_with("cl") || fname == "cl.exe" { ++ ToolFamily::Msvc { clang_cl: false } ++ } else if fname.contains("clang") { ++ match clang_driver { ++ Some("cl") => ToolFamily::Msvc { clang_cl: true }, ++ _ => ToolFamily::Clang, ++ } ++ } else { ++ ToolFamily::Gnu ++ } ++ } else { ++ ToolFamily::Gnu ++ }; ++ ++ Tool { ++ path: path, ++ cc_wrapper_path: None, ++ cc_wrapper_args: Vec::new(), ++ args: Vec::new(), ++ env: Vec::new(), ++ family: family, ++ cuda: cuda, ++ removed_args: Vec::new(), ++ } ++ } ++ ++ /// Add an argument to be stripped from the final command arguments. ++ fn remove_arg(&mut self, flag: OsString) { ++ self.removed_args.push(flag); ++ } ++ ++ /// Add a flag, and optionally prepend the NVCC wrapper flag "-Xcompiler". ++ /// ++ /// Currently this is only used for compiling CUDA sources, since NVCC only ++ /// accepts a limited set of GNU-like flags, and the rest must be prefixed ++ /// with a "-Xcompiler" flag to get passed to the underlying C++ compiler. ++ fn push_cc_arg(&mut self, flag: OsString) { ++ if self.cuda { ++ self.args.push("-Xcompiler".into()); ++ } ++ self.args.push(flag); ++ } ++ ++ fn is_duplicate_opt_arg(&self, flag: &OsString) -> bool { ++ let flag = flag.to_str().unwrap(); ++ let mut chars = flag.chars(); ++ ++ // Only duplicate check compiler flags ++ if self.is_like_msvc() { ++ if chars.next() != Some('/') { ++ return false; ++ } ++ } else if self.is_like_gnu() || self.is_like_clang() { ++ if chars.next() != Some('-') { ++ return false; ++ } ++ } ++ ++ // Check for existing optimization flags (-O, /O) ++ if chars.next() == Some('O') { ++ return self ++ .args() ++ .iter() ++ .any(|ref a| a.to_str().unwrap_or("").chars().nth(1) == Some('O')); ++ } ++ ++ // TODO Check for existing -m..., -m...=..., /arch:... flags ++ return false; ++ } ++ ++ /// Don't push optimization arg if it conflicts with existing args ++ fn push_opt_unless_duplicate(&mut self, flag: OsString) { ++ if self.is_duplicate_opt_arg(&flag) { ++ println!("Info: Ignoring duplicate arg {:?}", &flag); ++ } else { ++ self.push_cc_arg(flag); ++ } ++ } ++ ++ /// Converts this compiler into a `Command` that's ready to be run. ++ /// ++ /// This is useful for when the compiler needs to be executed and the ++ /// command returned will already have the initial arguments and environment ++ /// variables configured. ++ pub fn to_command(&self) -> Command { ++ let mut cmd = match self.cc_wrapper_path { ++ Some(ref cc_wrapper_path) => { ++ let mut cmd = Command::new(&cc_wrapper_path); ++ cmd.arg(&self.path); ++ cmd ++ } ++ None => Command::new(&self.path), ++ }; ++ cmd.args(&self.cc_wrapper_args); ++ ++ let value = self ++ .args ++ .iter() ++ .filter(|a| !self.removed_args.contains(a)) ++ .collect::>(); ++ cmd.args(&value); ++ ++ for &(ref k, ref v) in self.env.iter() { ++ cmd.env(k, v); ++ } ++ cmd ++ } ++ ++ /// Returns the path for this compiler. ++ /// ++ /// Note that this may not be a path to a file on the filesystem, e.g. "cc", ++ /// but rather something which will be resolved when a process is spawned. ++ pub fn path(&self) -> &Path { ++ &self.path ++ } ++ ++ /// Returns the default set of arguments to the compiler needed to produce ++ /// executables for the target this compiler generates. ++ pub fn args(&self) -> &[OsString] { ++ &self.args ++ } ++ ++ /// Returns the set of environment variables needed for this compiler to ++ /// operate. ++ /// ++ /// This is typically only used for MSVC compilers currently. ++ pub fn env(&self) -> &[(OsString, OsString)] { ++ &self.env ++ } ++ ++ /// Returns the compiler command in format of CC environment variable. ++ /// Or empty string if CC env was not present ++ /// ++ /// This is typically used by configure script ++ pub fn cc_env(&self) -> OsString { ++ match self.cc_wrapper_path { ++ Some(ref cc_wrapper_path) => { ++ let mut cc_env = cc_wrapper_path.as_os_str().to_owned(); ++ cc_env.push(" "); ++ cc_env.push(self.path.to_path_buf().into_os_string()); ++ for arg in self.cc_wrapper_args.iter() { ++ cc_env.push(" "); ++ cc_env.push(arg); ++ } ++ cc_env ++ } ++ None => OsString::from(""), ++ } ++ } ++ ++ /// Returns the compiler flags in format of CFLAGS environment variable. ++ /// Important here - this will not be CFLAGS from env, its internal gcc's flags to use as CFLAGS ++ /// This is typically used by configure script ++ pub fn cflags_env(&self) -> OsString { ++ let mut flags = OsString::new(); ++ for (i, arg) in self.args.iter().enumerate() { ++ if i > 0 { ++ flags.push(" "); ++ } ++ flags.push(arg); ++ } ++ flags ++ } ++ ++ /// Whether the tool is GNU Compiler Collection-like. ++ pub fn is_like_gnu(&self) -> bool { ++ self.family == ToolFamily::Gnu ++ } ++ ++ /// Whether the tool is Clang-like. ++ pub fn is_like_clang(&self) -> bool { ++ self.family == ToolFamily::Clang ++ } ++ ++ /// Whether the tool is MSVC-like. ++ pub fn is_like_msvc(&self) -> bool { ++ match self.family { ++ ToolFamily::Msvc { .. } => true, ++ _ => false, ++ } ++ } ++} ++ ++fn run(cmd: &mut Command, program: &str) -> Result<(), Error> { ++ let (mut child, print) = spawn(cmd, program)?; ++ let status = match child.wait() { ++ Ok(s) => s, ++ Err(_) => { ++ return Err(Error::new( ++ ErrorKind::ToolExecError, ++ &format!( ++ "Failed to wait on spawned child process, command {:?} with args {:?}.", ++ cmd, program ++ ), ++ )); ++ } ++ }; ++ print.join().unwrap(); ++ println!("{}", status); ++ ++ if status.success() { ++ Ok(()) ++ } else { ++ Err(Error::new( ++ ErrorKind::ToolExecError, ++ &format!( ++ "Command {:?} with args {:?} did not execute successfully (status code {}).", ++ cmd, program, status ++ ), ++ )) ++ } ++} ++ ++fn run_output(cmd: &mut Command, program: &str) -> Result, Error> { ++ cmd.stdout(Stdio::piped()); ++ let (mut child, print) = spawn(cmd, program)?; ++ let mut stdout = vec![]; ++ child ++ .stdout ++ .take() ++ .unwrap() ++ .read_to_end(&mut stdout) ++ .unwrap(); ++ let status = match child.wait() { ++ Ok(s) => s, ++ Err(_) => { ++ return Err(Error::new( ++ ErrorKind::ToolExecError, ++ &format!( ++ "Failed to wait on spawned child process, command {:?} with args {:?}.", ++ cmd, program ++ ), ++ )); ++ } ++ }; ++ print.join().unwrap(); ++ println!("{}", status); ++ ++ if status.success() { ++ Ok(stdout) ++ } else { ++ Err(Error::new( ++ ErrorKind::ToolExecError, ++ &format!( ++ "Command {:?} with args {:?} did not execute successfully (status code {}).", ++ cmd, program, status ++ ), ++ )) ++ } ++} ++ ++fn spawn(cmd: &mut Command, program: &str) -> Result<(Child, JoinHandle<()>), Error> { ++ println!("running: {:?}", cmd); ++ ++ // Capture the standard error coming from these programs, and write it out ++ // with cargo:warning= prefixes. Note that this is a bit wonky to avoid ++ // requiring the output to be UTF-8, we instead just ship bytes from one ++ // location to another. ++ match cmd.stderr(Stdio::piped()).spawn() { ++ Ok(mut child) => { ++ let stderr = BufReader::new(child.stderr.take().unwrap()); ++ let print = thread::spawn(move || { ++ for line in stderr.split(b'\n').filter_map(|l| l.ok()) { ++ print!("cargo:warning="); ++ std::io::stdout().write_all(&line).unwrap(); ++ println!(""); ++ } ++ }); ++ Ok((child, print)) ++ } ++ Err(ref e) if e.kind() == io::ErrorKind::NotFound => { ++ let extra = if cfg!(windows) { ++ " (see https://github.com/rust-lang/cc-rs#compile-time-requirements \ ++ for help)" ++ } else { ++ "" ++ }; ++ Err(Error::new( ++ ErrorKind::ToolNotFound, ++ &format!("Failed to find tool. Is `{}` installed?{}", program, extra), ++ )) ++ } ++ Err(ref e) => Err(Error::new( ++ ErrorKind::ToolExecError, ++ &format!( ++ "Command {:?} with args {:?} failed to start: {:?}", ++ cmd, program, e ++ ), ++ )), ++ } ++} ++ ++fn fail(s: &str) -> ! { ++ eprintln!("\n\nerror occurred: {}\n\n", s); ++ std::process::exit(1); ++} ++ ++fn command_add_output_file( ++ cmd: &mut Command, ++ dst: &Path, ++ cuda: bool, ++ msvc: bool, ++ clang: bool, ++ is_asm: bool, ++ is_arm: bool, ++) { ++ if msvc && !clang && !cuda && !(is_asm && is_arm) { ++ let mut s = OsString::from("-Fo"); ++ s.push(&dst); ++ cmd.arg(s); ++ } else { ++ cmd.arg("-o").arg(&dst); ++ } ++} ++ ++// Use by default minimum available API level ++// See note about naming here ++// https://android.googlesource.com/platform/ndk/+/refs/heads/ndk-release-r21/docs/BuildSystemMaintainers.md#Clang ++static NEW_STANDALONE_ANDROID_COMPILERS: [&str; 4] = [ ++ "aarch64-linux-android21-clang", ++ "armv7a-linux-androideabi16-clang", ++ "i686-linux-android16-clang", ++ "x86_64-linux-android21-clang", ++]; ++ ++// New "standalone" C/C++ cross-compiler executables from recent Android NDK ++// are just shell scripts that call main clang binary (from Android NDK) with ++// proper `--target` argument. ++// ++// For example, armv7a-linux-androideabi16-clang passes ++// `--target=armv7a-linux-androideabi16` to clang. ++// So to construct proper command line check if ++// `--target` argument would be passed or not to clang ++fn android_clang_compiler_uses_target_arg_internally(clang_path: &Path) -> bool { ++ if let Some(filename) = clang_path.file_name() { ++ if let Some(filename_str) = filename.to_str() { ++ filename_str.contains("android") ++ } else { ++ false ++ } ++ } else { ++ false ++ } ++} ++ ++#[test] ++fn test_android_clang_compiler_uses_target_arg_internally() { ++ for version in 16..21 { ++ assert!(android_clang_compiler_uses_target_arg_internally( ++ &PathBuf::from(format!("armv7a-linux-androideabi{}-clang", version)) ++ )); ++ assert!(android_clang_compiler_uses_target_arg_internally( ++ &PathBuf::from(format!("armv7a-linux-androideabi{}-clang++", version)) ++ )); ++ } ++ assert!(!android_clang_compiler_uses_target_arg_internally( ++ &PathBuf::from("clang") ++ )); ++ assert!(!android_clang_compiler_uses_target_arg_internally( ++ &PathBuf::from("clang++") ++ )); ++} ++ ++fn autodetect_android_compiler(target: &str, host: &str, gnu: &str, clang: &str) -> String { ++ let new_clang_key = match target { ++ "aarch64-linux-android" => Some("aarch64"), ++ "armv7-linux-androideabi" => Some("armv7a"), ++ "i686-linux-android" => Some("i686"), ++ "x86_64-linux-android" => Some("x86_64"), ++ _ => None, ++ }; ++ ++ let new_clang = new_clang_key ++ .map(|key| { ++ NEW_STANDALONE_ANDROID_COMPILERS ++ .iter() ++ .find(|x| x.starts_with(key)) ++ }) ++ .unwrap_or(None); ++ ++ if let Some(new_clang) = new_clang { ++ if Command::new(new_clang).output().is_ok() { ++ return (*new_clang).into(); ++ } ++ } ++ ++ let target = target ++ .replace("armv7neon", "arm") ++ .replace("armv7", "arm") ++ .replace("thumbv7neon", "arm") ++ .replace("thumbv7", "arm"); ++ let gnu_compiler = format!("{}-{}", target, gnu); ++ let clang_compiler = format!("{}-{}", target, clang); ++ ++ // On Windows, the Android clang compiler is provided as a `.cmd` file instead ++ // of a `.exe` file. `std::process::Command` won't run `.cmd` files unless the ++ // `.cmd` is explicitly appended to the command name, so we do that here. ++ let clang_compiler_cmd = format!("{}-{}.cmd", target, clang); ++ ++ // Check if gnu compiler is present ++ // if not, use clang ++ if Command::new(&gnu_compiler).output().is_ok() { ++ gnu_compiler ++ } else if host.contains("windows") && Command::new(&clang_compiler_cmd).output().is_ok() { ++ clang_compiler_cmd ++ } else { ++ clang_compiler ++ } ++} ++ ++// Rust and clang/cc don't agree on how to name the target. ++fn map_darwin_target_from_rust_to_compiler_architecture(target: &str) -> Option<&'static str> { ++ if target.contains("x86_64") { ++ Some("x86_64") ++ } else if target.contains("arm64e") { ++ Some("arm64e") ++ } else if target.contains("aarch64") { ++ Some("arm64") ++ } else if target.contains("i686") { ++ Some("i386") ++ } else if target.contains("powerpc") { ++ Some("ppc") ++ } else if target.contains("powerpc64") { ++ Some("ppc64") ++ } else { ++ None ++ } ++} ++ ++fn which(tool: &Path) -> Option { ++ fn check_exe(exe: &mut PathBuf) -> bool { ++ let exe_ext = std::env::consts::EXE_EXTENSION; ++ exe.exists() || (!exe_ext.is_empty() && exe.set_extension(exe_ext) && exe.exists()) ++ } ++ ++ // If |tool| is not just one "word," assume it's an actual path... ++ if tool.components().count() > 1 { ++ let mut exe = PathBuf::from(tool); ++ return if check_exe(&mut exe) { Some(exe) } else { None }; ++ } ++ ++ // Loop through PATH entries searching for the |tool|. ++ let path_entries = env::var_os("PATH")?; ++ env::split_paths(&path_entries).find_map(|path_entry| { ++ let mut exe = path_entry.join(tool); ++ return if check_exe(&mut exe) { Some(exe) } else { None }; ++ }) ++} ++ ++#[derive(Clone, Copy, PartialEq)] ++enum AsmFileExt { ++ /// `.asm` files. On MSVC targets, we assume these should be passed to MASM ++ /// (`ml{,64}.exe`). ++ DotAsm, ++ /// `.s` or `.S` files, which do not have the special handling on MSVC targets. ++ DotS, ++} ++ ++impl AsmFileExt { ++ fn from_path(file: &Path) -> Option { ++ if let Some(ext) = file.extension() { ++ if let Some(ext) = ext.to_str() { ++ let ext = ext.to_lowercase(); ++ match &*ext { ++ "asm" => return Some(AsmFileExt::DotAsm), ++ "s" => return Some(AsmFileExt::DotS), ++ _ => return None, ++ } ++ } ++ } ++ None ++ } ++} +diff --git a/vendor/cc-1.0.79/src/registry.rs b/vendor/cc-1.0.79/src/registry.rs +new file mode 100644 +index 000000000..cae32219c +--- /dev/null ++++ b/vendor/cc-1.0.79/src/registry.rs +@@ -0,0 +1,231 @@ ++// Copyright 2015 The Rust Project Developers. See the COPYRIGHT ++// file at the top-level directory of this distribution and at ++// http://rust-lang.org/COPYRIGHT. ++// ++// Licensed under the Apache License, Version 2.0 or the MIT license ++// , at your ++// option. This file may not be copied, modified, or distributed ++// except according to those terms. ++ ++use std::ffi::{OsStr, OsString}; ++use std::io; ++use std::ops::RangeFrom; ++use std::os::raw; ++use std::os::windows::prelude::*; ++ ++/// Must never be `HKEY_PERFORMANCE_DATA`. ++pub(crate) struct RegistryKey(Repr); ++ ++type HKEY = *mut u8; ++type DWORD = u32; ++type LPDWORD = *mut DWORD; ++type LPCWSTR = *const u16; ++type LPWSTR = *mut u16; ++type LONG = raw::c_long; ++type PHKEY = *mut HKEY; ++type PFILETIME = *mut u8; ++type LPBYTE = *mut u8; ++type REGSAM = u32; ++ ++const ERROR_SUCCESS: DWORD = 0; ++const ERROR_NO_MORE_ITEMS: DWORD = 259; ++// Sign-extend into 64 bits if needed. ++const HKEY_LOCAL_MACHINE: HKEY = 0x80000002u32 as i32 as isize as HKEY; ++const REG_SZ: DWORD = 1; ++const KEY_READ: DWORD = 0x20019; ++const KEY_WOW64_32KEY: DWORD = 0x200; ++ ++#[link(name = "advapi32")] ++extern "system" { ++ fn RegOpenKeyExW( ++ key: HKEY, ++ lpSubKey: LPCWSTR, ++ ulOptions: DWORD, ++ samDesired: REGSAM, ++ phkResult: PHKEY, ++ ) -> LONG; ++ fn RegEnumKeyExW( ++ key: HKEY, ++ dwIndex: DWORD, ++ lpName: LPWSTR, ++ lpcName: LPDWORD, ++ lpReserved: LPDWORD, ++ lpClass: LPWSTR, ++ lpcClass: LPDWORD, ++ lpftLastWriteTime: PFILETIME, ++ ) -> LONG; ++ fn RegQueryValueExW( ++ hKey: HKEY, ++ lpValueName: LPCWSTR, ++ lpReserved: LPDWORD, ++ lpType: LPDWORD, ++ lpData: LPBYTE, ++ lpcbData: LPDWORD, ++ ) -> LONG; ++ fn RegCloseKey(hKey: HKEY) -> LONG; ++} ++ ++struct OwnedKey(HKEY); ++ ++/// Note: must not encode `HKEY_PERFORMANCE_DATA` or one of its subkeys. ++enum Repr { ++ /// `HKEY_LOCAL_MACHINE`. ++ LocalMachine, ++ /// A subkey of `HKEY_LOCAL_MACHINE`. ++ Owned(OwnedKey), ++} ++ ++pub struct Iter<'a> { ++ idx: RangeFrom, ++ key: &'a RegistryKey, ++} ++ ++unsafe impl Sync for Repr {} ++unsafe impl Send for Repr {} ++ ++pub(crate) const LOCAL_MACHINE: RegistryKey = RegistryKey(Repr::LocalMachine); ++ ++impl RegistryKey { ++ fn raw(&self) -> HKEY { ++ match self.0 { ++ Repr::LocalMachine => HKEY_LOCAL_MACHINE, ++ Repr::Owned(ref val) => val.0, ++ } ++ } ++ ++ /// Open a sub-key of `self`. ++ pub fn open(&self, key: &OsStr) -> io::Result { ++ let key = key.encode_wide().chain(Some(0)).collect::>(); ++ let mut ret = 0 as *mut _; ++ let err = unsafe { ++ RegOpenKeyExW( ++ self.raw(), ++ key.as_ptr(), ++ 0, ++ KEY_READ | KEY_WOW64_32KEY, ++ &mut ret, ++ ) ++ }; ++ if err == ERROR_SUCCESS as LONG { ++ Ok(RegistryKey(Repr::Owned(OwnedKey(ret)))) ++ } else { ++ Err(io::Error::from_raw_os_error(err as i32)) ++ } ++ } ++ ++ pub fn iter(&self) -> Iter { ++ Iter { ++ idx: 0.., ++ key: self, ++ } ++ } ++ ++ pub fn query_str(&self, name: &str) -> io::Result { ++ let name: &OsStr = name.as_ref(); ++ let name = name.encode_wide().chain(Some(0)).collect::>(); ++ let mut len = 0; ++ let mut kind = 0; ++ unsafe { ++ let err = RegQueryValueExW( ++ self.raw(), ++ name.as_ptr(), ++ 0 as *mut _, ++ &mut kind, ++ 0 as *mut _, ++ &mut len, ++ ); ++ if err != ERROR_SUCCESS as LONG { ++ return Err(io::Error::from_raw_os_error(err as i32)); ++ } ++ if kind != REG_SZ { ++ return Err(io::Error::new( ++ io::ErrorKind::Other, ++ "registry key wasn't a string", ++ )); ++ } ++ ++ // The length here is the length in bytes, but we're using wide ++ // characters so we need to be sure to halve it for the length ++ // passed in. ++ assert!(len % 2 == 0, "impossible wide string size: {} bytes", len); ++ let vlen = len as usize / 2; ++ // Defensively initialized, see comment about ++ // `HKEY_PERFORMANCE_DATA` below. ++ let mut v = vec![0u16; vlen]; ++ let err = RegQueryValueExW( ++ self.raw(), ++ name.as_ptr(), ++ 0 as *mut _, ++ 0 as *mut _, ++ v.as_mut_ptr() as *mut _, ++ &mut len, ++ ); ++ // We don't check for `ERROR_MORE_DATA` (which would if the value ++ // grew between the first and second call to `RegQueryValueExW`), ++ // both because it's extremely unlikely, and this is a bit more ++ // defensive more defensive against weird types of registry keys. ++ if err != ERROR_SUCCESS as LONG { ++ return Err(io::Error::from_raw_os_error(err as i32)); ++ } ++ // The length is allowed to change, but should still be even, as ++ // well as smaller. ++ assert!(len % 2 == 0, "impossible wide string size: {} bytes", len); ++ // If the length grew but returned a success code, it *probably* ++ // indicates we're `HKEY_PERFORMANCE_DATA` or a subkey(?). We ++ // consider this UB, since those keys write "undefined" or ++ // "unpredictable" values to len, and need to use a completely ++ // different loop structure. This should be impossible (and enforce ++ // it in the API to the best of our ability), but to mitigate the ++ // damage we do some smoke-checks on the len, and ensure `v` has ++ // been fully initialized (rather than trusting the result of ++ // `RegQueryValueExW`). ++ let actual_len = len as usize / 2; ++ assert!(actual_len <= v.len()); ++ v.truncate(actual_len); ++ // Some registry keys may have a terminating nul character, but ++ // we're not interested in that, so chop it off if it's there. ++ if !v.is_empty() && v[v.len() - 1] == 0 { ++ v.pop(); ++ } ++ return Ok(OsString::from_wide(&v)); ++ } ++ } ++} ++ ++impl Drop for OwnedKey { ++ fn drop(&mut self) { ++ unsafe { ++ RegCloseKey(self.0); ++ } ++ } ++} ++ ++impl<'a> Iterator for Iter<'a> { ++ type Item = io::Result; ++ ++ fn next(&mut self) -> Option> { ++ self.idx.next().and_then(|i| unsafe { ++ let mut v = Vec::with_capacity(256); ++ let mut len = v.capacity() as DWORD; ++ let ret = RegEnumKeyExW( ++ self.key.raw(), ++ i, ++ v.as_mut_ptr(), ++ &mut len, ++ 0 as *mut _, ++ 0 as *mut _, ++ 0 as *mut _, ++ 0 as *mut _, ++ ); ++ if ret == ERROR_NO_MORE_ITEMS as LONG { ++ None ++ } else if ret != ERROR_SUCCESS as LONG { ++ Some(Err(io::Error::from_raw_os_error(ret as i32))) ++ } else { ++ v.set_len(len as usize); ++ Some(Ok(OsString::from_wide(&v))) ++ } ++ }) ++ } ++} +diff --git a/vendor/cc-1.0.79/src/setup_config.rs b/vendor/cc-1.0.79/src/setup_config.rs +new file mode 100644 +index 000000000..030051ca6 +--- /dev/null ++++ b/vendor/cc-1.0.79/src/setup_config.rs +@@ -0,0 +1,283 @@ ++// Copyright © 2017 winapi-rs developers ++// Licensed under the Apache License, Version 2.0 ++// or the MIT license ++// , at your option. ++// All files in the project carrying such notice may not be copied, modified, or distributed ++// except according to those terms. ++ ++#![allow(bad_style)] ++#![allow(unused)] ++ ++use crate::winapi::Interface; ++use crate::winapi::BSTR; ++use crate::winapi::LPCOLESTR; ++use crate::winapi::LPSAFEARRAY; ++use crate::winapi::S_FALSE; ++use crate::winapi::{CoCreateInstance, CLSCTX_ALL}; ++use crate::winapi::{IUnknown, IUnknownVtbl}; ++use crate::winapi::{HRESULT, LCID, LPCWSTR, PULONGLONG}; ++use crate::winapi::{LPFILETIME, ULONG}; ++use std::ffi::OsString; ++use std::ptr::null_mut; ++ ++use crate::com::{BStr, ComPtr}; ++ ++// Bindings to the Setup.Configuration stuff ++pub type InstanceState = u32; ++ ++pub const eNone: InstanceState = 0; ++pub const eLocal: InstanceState = 1; ++pub const eRegistered: InstanceState = 2; ++pub const eNoRebootRequired: InstanceState = 4; ++pub const eComplete: InstanceState = -1i32 as u32; ++ ++RIDL! {#[uuid(0xb41463c3, 0x8866, 0x43b5, 0xbc, 0x33, 0x2b, 0x06, 0x76, 0xf7, 0xf4, 0x2e)] ++interface ISetupInstance(ISetupInstanceVtbl): IUnknown(IUnknownVtbl) { ++ fn GetInstanceId( ++ pbstrInstanceId: *mut BSTR, ++ ) -> HRESULT, ++ fn GetInstallDate( ++ pInstallDate: LPFILETIME, ++ ) -> HRESULT, ++ fn GetInstallationName( ++ pbstrInstallationName: *mut BSTR, ++ ) -> HRESULT, ++ fn GetInstallationPath( ++ pbstrInstallationPath: *mut BSTR, ++ ) -> HRESULT, ++ fn GetInstallationVersion( ++ pbstrInstallationVersion: *mut BSTR, ++ ) -> HRESULT, ++ fn GetDisplayName( ++ lcid: LCID, ++ pbstrDisplayName: *mut BSTR, ++ ) -> HRESULT, ++ fn GetDescription( ++ lcid: LCID, ++ pbstrDescription: *mut BSTR, ++ ) -> HRESULT, ++ fn ResolvePath( ++ pwszRelativePath: LPCOLESTR, ++ pbstrAbsolutePath: *mut BSTR, ++ ) -> HRESULT, ++}} ++ ++RIDL! {#[uuid(0x89143c9a, 0x05af, 0x49b0, 0xb7, 0x17, 0x72, 0xe2, 0x18, 0xa2, 0x18, 0x5c)] ++interface ISetupInstance2(ISetupInstance2Vtbl): ISetupInstance(ISetupInstanceVtbl) { ++ fn GetState( ++ pState: *mut InstanceState, ++ ) -> HRESULT, ++ fn GetPackages( ++ ppsaPackages: *mut LPSAFEARRAY, ++ ) -> HRESULT, ++ fn GetProduct( ++ ppPackage: *mut *mut ISetupPackageReference, ++ ) -> HRESULT, ++ fn GetProductPath( ++ pbstrProductPath: *mut BSTR, ++ ) -> HRESULT, ++}} ++ ++RIDL! {#[uuid(0x6380bcff, 0x41d3, 0x4b2e, 0x8b, 0x2e, 0xbf, 0x8a, 0x68, 0x10, 0xc8, 0x48)] ++interface IEnumSetupInstances(IEnumSetupInstancesVtbl): IUnknown(IUnknownVtbl) { ++ fn Next( ++ celt: ULONG, ++ rgelt: *mut *mut ISetupInstance, ++ pceltFetched: *mut ULONG, ++ ) -> HRESULT, ++ fn Skip( ++ celt: ULONG, ++ ) -> HRESULT, ++ fn Reset() -> HRESULT, ++ fn Clone( ++ ppenum: *mut *mut IEnumSetupInstances, ++ ) -> HRESULT, ++}} ++ ++RIDL! {#[uuid(0x42843719, 0xdb4c, 0x46c2, 0x8e, 0x7c, 0x64, 0xf1, 0x81, 0x6e, 0xfd, 0x5b)] ++interface ISetupConfiguration(ISetupConfigurationVtbl): IUnknown(IUnknownVtbl) { ++ fn EnumInstances( ++ ppEnumInstances: *mut *mut IEnumSetupInstances, ++ ) -> HRESULT, ++ fn GetInstanceForCurrentProcess( ++ ppInstance: *mut *mut ISetupInstance, ++ ) -> HRESULT, ++ fn GetInstanceForPath( ++ wzPath: LPCWSTR, ++ ppInstance: *mut *mut ISetupInstance, ++ ) -> HRESULT, ++}} ++ ++RIDL! {#[uuid(0x26aab78c, 0x4a60, 0x49d6, 0xaf, 0x3b, 0x3c, 0x35, 0xbc, 0x93, 0x36, 0x5d)] ++interface ISetupConfiguration2(ISetupConfiguration2Vtbl): ++ ISetupConfiguration(ISetupConfigurationVtbl) { ++ fn EnumAllInstances( ++ ppEnumInstances: *mut *mut IEnumSetupInstances, ++ ) -> HRESULT, ++}} ++ ++RIDL! {#[uuid(0xda8d8a16, 0xb2b6, 0x4487, 0xa2, 0xf1, 0x59, 0x4c, 0xcc, 0xcd, 0x6b, 0xf5)] ++interface ISetupPackageReference(ISetupPackageReferenceVtbl): IUnknown(IUnknownVtbl) { ++ fn GetId( ++ pbstrId: *mut BSTR, ++ ) -> HRESULT, ++ fn GetVersion( ++ pbstrVersion: *mut BSTR, ++ ) -> HRESULT, ++ fn GetChip( ++ pbstrChip: *mut BSTR, ++ ) -> HRESULT, ++ fn GetLanguage( ++ pbstrLanguage: *mut BSTR, ++ ) -> HRESULT, ++ fn GetBranch( ++ pbstrBranch: *mut BSTR, ++ ) -> HRESULT, ++ fn GetType( ++ pbstrType: *mut BSTR, ++ ) -> HRESULT, ++ fn GetUniqueId( ++ pbstrUniqueId: *mut BSTR, ++ ) -> HRESULT, ++}} ++ ++RIDL! {#[uuid(0x42b21b78, 0x6192, 0x463e, 0x87, 0xbf, 0xd5, 0x77, 0x83, 0x8f, 0x1d, 0x5c)] ++interface ISetupHelper(ISetupHelperVtbl): IUnknown(IUnknownVtbl) { ++ fn ParseVersion( ++ pwszVersion: LPCOLESTR, ++ pullVersion: PULONGLONG, ++ ) -> HRESULT, ++ fn ParseVersionRange( ++ pwszVersionRange: LPCOLESTR, ++ pullMinVersion: PULONGLONG, ++ pullMaxVersion: PULONGLONG, ++ ) -> HRESULT, ++}} ++ ++DEFINE_GUID! {CLSID_SetupConfiguration, ++0x177f0c4a, 0x1cd3, 0x4de7, 0xa3, 0x2c, 0x71, 0xdb, 0xbb, 0x9f, 0xa3, 0x6d} ++ ++// Safe wrapper around the COM interfaces ++pub struct SetupConfiguration(ComPtr); ++ ++impl SetupConfiguration { ++ pub fn new() -> Result { ++ let mut obj = null_mut(); ++ let err = unsafe { ++ CoCreateInstance( ++ &CLSID_SetupConfiguration, ++ null_mut(), ++ CLSCTX_ALL, ++ &ISetupConfiguration::uuidof(), ++ &mut obj, ++ ) ++ }; ++ if err < 0 { ++ return Err(err); ++ } ++ let obj = unsafe { ComPtr::from_raw(obj as *mut ISetupConfiguration) }; ++ Ok(SetupConfiguration(obj)) ++ } ++ pub fn get_instance_for_current_process(&self) -> Result { ++ let mut obj = null_mut(); ++ let err = unsafe { self.0.GetInstanceForCurrentProcess(&mut obj) }; ++ if err < 0 { ++ return Err(err); ++ } ++ Ok(unsafe { SetupInstance::from_raw(obj) }) ++ } ++ pub fn enum_instances(&self) -> Result { ++ let mut obj = null_mut(); ++ let err = unsafe { self.0.EnumInstances(&mut obj) }; ++ if err < 0 { ++ return Err(err); ++ } ++ Ok(unsafe { EnumSetupInstances::from_raw(obj) }) ++ } ++ pub fn enum_all_instances(&self) -> Result { ++ let mut obj = null_mut(); ++ let this = self.0.cast::()?; ++ let err = unsafe { this.EnumAllInstances(&mut obj) }; ++ if err < 0 { ++ return Err(err); ++ } ++ Ok(unsafe { EnumSetupInstances::from_raw(obj) }) ++ } ++} ++ ++pub struct SetupInstance(ComPtr); ++ ++impl SetupInstance { ++ pub unsafe fn from_raw(obj: *mut ISetupInstance) -> SetupInstance { ++ SetupInstance(ComPtr::from_raw(obj)) ++ } ++ pub fn instance_id(&self) -> Result { ++ let mut s = null_mut(); ++ let err = unsafe { self.0.GetInstanceId(&mut s) }; ++ let bstr = unsafe { BStr::from_raw(s) }; ++ if err < 0 { ++ return Err(err); ++ } ++ Ok(bstr.to_osstring()) ++ } ++ pub fn installation_name(&self) -> Result { ++ let mut s = null_mut(); ++ let err = unsafe { self.0.GetInstallationName(&mut s) }; ++ let bstr = unsafe { BStr::from_raw(s) }; ++ if err < 0 { ++ return Err(err); ++ } ++ Ok(bstr.to_osstring()) ++ } ++ pub fn installation_path(&self) -> Result { ++ let mut s = null_mut(); ++ let err = unsafe { self.0.GetInstallationPath(&mut s) }; ++ let bstr = unsafe { BStr::from_raw(s) }; ++ if err < 0 { ++ return Err(err); ++ } ++ Ok(bstr.to_osstring()) ++ } ++ pub fn installation_version(&self) -> Result { ++ let mut s = null_mut(); ++ let err = unsafe { self.0.GetInstallationVersion(&mut s) }; ++ let bstr = unsafe { BStr::from_raw(s) }; ++ if err < 0 { ++ return Err(err); ++ } ++ Ok(bstr.to_osstring()) ++ } ++ pub fn product_path(&self) -> Result { ++ let mut s = null_mut(); ++ let this = self.0.cast::()?; ++ let err = unsafe { this.GetProductPath(&mut s) }; ++ let bstr = unsafe { BStr::from_raw(s) }; ++ if err < 0 { ++ return Err(err); ++ } ++ Ok(bstr.to_osstring()) ++ } ++} ++ ++pub struct EnumSetupInstances(ComPtr); ++ ++impl EnumSetupInstances { ++ pub unsafe fn from_raw(obj: *mut IEnumSetupInstances) -> EnumSetupInstances { ++ EnumSetupInstances(ComPtr::from_raw(obj)) ++ } ++} ++ ++impl Iterator for EnumSetupInstances { ++ type Item = Result; ++ fn next(&mut self) -> Option> { ++ let mut obj = null_mut(); ++ let err = unsafe { self.0.Next(1, &mut obj, null_mut()) }; ++ if err < 0 { ++ return Some(Err(err)); ++ } ++ if err == S_FALSE { ++ return None; ++ } ++ Some(Ok(unsafe { SetupInstance::from_raw(obj) })) ++ } ++} +diff --git a/vendor/cc-1.0.79/src/vs_instances.rs b/vendor/cc-1.0.79/src/vs_instances.rs +new file mode 100644 +index 000000000..31d3dd147 +--- /dev/null ++++ b/vendor/cc-1.0.79/src/vs_instances.rs +@@ -0,0 +1,199 @@ ++use std::borrow::Cow; ++use std::collections::HashMap; ++use std::convert::TryFrom; ++use std::io::BufRead; ++use std::path::PathBuf; ++ ++use crate::setup_config::{EnumSetupInstances, SetupInstance}; ++ ++pub enum VsInstance { ++ Com(SetupInstance), ++ Vswhere(VswhereInstance), ++} ++ ++impl VsInstance { ++ pub fn installation_name(&self) -> Option> { ++ match self { ++ VsInstance::Com(s) => s ++ .installation_name() ++ .ok() ++ .and_then(|s| s.into_string().ok()) ++ .map(Cow::from), ++ VsInstance::Vswhere(v) => v.map.get("installationName").map(Cow::from), ++ } ++ } ++ ++ pub fn installation_path(&self) -> Option { ++ match self { ++ VsInstance::Com(s) => s.installation_path().ok().map(PathBuf::from), ++ VsInstance::Vswhere(v) => v.map.get("installationPath").map(PathBuf::from), ++ } ++ } ++ ++ pub fn installation_version(&self) -> Option> { ++ match self { ++ VsInstance::Com(s) => s ++ .installation_version() ++ .ok() ++ .and_then(|s| s.into_string().ok()) ++ .map(Cow::from), ++ VsInstance::Vswhere(v) => v.map.get("installationVersion").map(Cow::from), ++ } ++ } ++} ++ ++pub enum VsInstances { ++ ComBased(EnumSetupInstances), ++ VswhereBased(VswhereInstance), ++} ++ ++impl IntoIterator for VsInstances { ++ type Item = VsInstance; ++ #[allow(bare_trait_objects)] ++ type IntoIter = Box>; ++ ++ fn into_iter(self) -> Self::IntoIter { ++ match self { ++ VsInstances::ComBased(e) => { ++ Box::new(e.into_iter().filter_map(Result::ok).map(VsInstance::Com)) ++ } ++ VsInstances::VswhereBased(v) => Box::new(std::iter::once(VsInstance::Vswhere(v))), ++ } ++ } ++} ++ ++#[derive(Debug)] ++pub struct VswhereInstance { ++ map: HashMap, ++} ++ ++impl TryFrom<&Vec> for VswhereInstance { ++ type Error = &'static str; ++ ++ fn try_from(output: &Vec) -> Result { ++ let map: HashMap<_, _> = output ++ .lines() ++ .filter_map(Result::ok) ++ .filter_map(|s| { ++ let mut splitn = s.splitn(2, ": "); ++ Some((splitn.next()?.to_owned(), splitn.next()?.to_owned())) ++ }) ++ .collect(); ++ ++ if !map.contains_key("installationName") ++ || !map.contains_key("installationPath") ++ || !map.contains_key("installationVersion") ++ { ++ return Err("required properties not found"); ++ } ++ ++ Ok(Self { map }) ++ } ++} ++ ++#[cfg(test)] ++mod tests_ { ++ use std::borrow::Cow; ++ use std::convert::TryFrom; ++ use std::path::PathBuf; ++ ++ #[test] ++ fn it_parses_vswhere_output_correctly() { ++ let output = br"instanceId: 58104422 ++installDate: 21/02/2021 21:50:33 ++installationName: VisualStudio/16.9.2+31112.23 ++installationPath: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools ++installationVersion: 16.9.31112.23 ++productId: Microsoft.VisualStudio.Product.BuildTools ++productPath: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\LaunchDevCmd.bat ++state: 4294967295 ++isComplete: 1 ++isLaunchable: 1 ++isPrerelease: 0 ++isRebootRequired: 0 ++displayName: Visual Studio Build Tools 2019 ++description: The Visual Studio Build Tools allows you to build native and managed MSBuild-based applications without requiring the Visual Studio IDE. There are options to install the Visual C++ compilers and libraries, MFC, ATL, and C++/CLI support. ++channelId: VisualStudio.16.Release ++channelUri: https://aka.ms/vs/16/release/channel ++enginePath: C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service ++releaseNotes: https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes-v16.9#16.9.2 ++thirdPartyNotices: https://go.microsoft.com/fwlink/?LinkId=660909 ++updateDate: 2021-03-17T21:16:46.5963702Z ++catalog_buildBranch: d16.9 ++catalog_buildVersion: 16.9.31112.23 ++catalog_id: VisualStudio/16.9.2+31112.23 ++catalog_localBuild: build-lab ++catalog_manifestName: VisualStudio ++catalog_manifestType: installer ++catalog_productDisplayVersion: 16.9.2 ++catalog_productLine: Dev16 ++catalog_productLineVersion: 2019 ++catalog_productMilestone: RTW ++catalog_productMilestoneIsPreRelease: False ++catalog_productName: Visual Studio ++catalog_productPatchVersion: 2 ++catalog_productPreReleaseMilestoneSuffix: 1.0 ++catalog_productSemanticVersion: 16.9.2+31112.23 ++catalog_requiredEngineVersion: 2.9.3365.38425 ++properties_campaignId: 156063665.1613940062 ++properties_channelManifestId: VisualStudio.16.Release/16.9.2+31112.23 ++properties_nickname: ++properties_setupEngineFilePath: C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installershell.exe ++" ++ .to_vec(); ++ ++ let vswhere_instance = super::VswhereInstance::try_from(&output); ++ assert!(vswhere_instance.is_ok()); ++ ++ let vs_instance = super::VsInstance::Vswhere(vswhere_instance.unwrap()); ++ assert_eq!( ++ vs_instance.installation_name(), ++ Some(Cow::from("VisualStudio/16.9.2+31112.23")) ++ ); ++ assert_eq!( ++ vs_instance.installation_path(), ++ Some(PathBuf::from( ++ r"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools" ++ )) ++ ); ++ assert_eq!( ++ vs_instance.installation_version(), ++ Some(Cow::from("16.9.31112.23")) ++ ); ++ } ++ ++ #[test] ++ fn it_returns_an_error_for_empty_output() { ++ let output = b"".to_vec(); ++ ++ let vswhere_instance = super::VswhereInstance::try_from(&output); ++ ++ assert!(vswhere_instance.is_err()); ++ } ++ ++ #[test] ++ fn it_returns_an_error_for_output_consisting_of_empty_lines() { ++ let output = br" ++ ++" ++ .to_vec(); ++ ++ let vswhere_instance = super::VswhereInstance::try_from(&output); ++ ++ assert!(vswhere_instance.is_err()); ++ } ++ ++ #[test] ++ fn it_returns_an_error_for_output_without_required_properties() { ++ let output = br"instanceId: 58104422 ++installDate: 21/02/2021 21:50:33 ++productId: Microsoft.VisualStudio.Product.BuildTools ++productPath: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\LaunchDevCmd.bat ++" ++ .to_vec(); ++ ++ let vswhere_instance = super::VswhereInstance::try_from(&output); ++ ++ assert!(vswhere_instance.is_err()); ++ } ++} +diff --git a/vendor/cc-1.0.79/src/winapi.rs b/vendor/cc-1.0.79/src/winapi.rs +new file mode 100644 +index 000000000..8e04ce9cb +--- /dev/null ++++ b/vendor/cc-1.0.79/src/winapi.rs +@@ -0,0 +1,218 @@ ++// Copyright © 2015-2017 winapi-rs developers ++// Licensed under the Apache License, Version 2.0 ++// or the MIT license ++// , at your option. ++// All files in the project carrying such notice may not be copied, modified, or distributed ++// except according to those terms. ++ ++#![allow(bad_style)] ++ ++use std::os::raw; ++ ++pub type wchar_t = u16; ++ ++pub type UINT = raw::c_uint; ++pub type LPUNKNOWN = *mut IUnknown; ++pub type REFIID = *const IID; ++pub type IID = GUID; ++pub type REFCLSID = *const IID; ++pub type PVOID = *mut raw::c_void; ++pub type USHORT = raw::c_ushort; ++pub type ULONG = raw::c_ulong; ++pub type LONG = raw::c_long; ++pub type DWORD = u32; ++pub type LPVOID = *mut raw::c_void; ++pub type HRESULT = raw::c_long; ++pub type LPFILETIME = *mut FILETIME; ++pub type BSTR = *mut OLECHAR; ++pub type OLECHAR = WCHAR; ++pub type WCHAR = wchar_t; ++pub type LPCOLESTR = *const OLECHAR; ++pub type LCID = DWORD; ++pub type LPCWSTR = *const WCHAR; ++pub type PULONGLONG = *mut ULONGLONG; ++pub type ULONGLONG = u64; ++ ++pub const S_OK: HRESULT = 0; ++pub const S_FALSE: HRESULT = 1; ++pub const COINIT_MULTITHREADED: u32 = 0x0; ++ ++pub type CLSCTX = u32; ++ ++pub const CLSCTX_INPROC_SERVER: CLSCTX = 0x1; ++pub const CLSCTX_INPROC_HANDLER: CLSCTX = 0x2; ++pub const CLSCTX_LOCAL_SERVER: CLSCTX = 0x4; ++pub const CLSCTX_REMOTE_SERVER: CLSCTX = 0x10; ++ ++pub const CLSCTX_ALL: CLSCTX = ++ CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER; ++ ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct GUID { ++ pub Data1: raw::c_ulong, ++ pub Data2: raw::c_ushort, ++ pub Data3: raw::c_ushort, ++ pub Data4: [raw::c_uchar; 8], ++} ++ ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct FILETIME { ++ pub dwLowDateTime: DWORD, ++ pub dwHighDateTime: DWORD, ++} ++ ++pub trait Interface { ++ fn uuidof() -> GUID; ++} ++ ++#[link(name = "ole32")] ++#[link(name = "oleaut32")] ++extern "C" {} ++ ++extern "system" { ++ pub fn CoInitializeEx(pvReserved: LPVOID, dwCoInit: DWORD) -> HRESULT; ++ pub fn CoCreateInstance( ++ rclsid: REFCLSID, ++ pUnkOuter: LPUNKNOWN, ++ dwClsContext: DWORD, ++ riid: REFIID, ++ ppv: *mut LPVOID, ++ ) -> HRESULT; ++ pub fn SysFreeString(bstrString: BSTR); ++ pub fn SysStringLen(pbstr: BSTR) -> UINT; ++} ++ ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct SAFEARRAYBOUND { ++ pub cElements: ULONG, ++ pub lLbound: LONG, ++} ++ ++#[repr(C)] ++#[derive(Copy, Clone)] ++pub struct SAFEARRAY { ++ pub cDims: USHORT, ++ pub fFeatures: USHORT, ++ pub cbElements: ULONG, ++ pub cLocks: ULONG, ++ pub pvData: PVOID, ++ pub rgsabound: [SAFEARRAYBOUND; 1], ++} ++ ++pub type LPSAFEARRAY = *mut SAFEARRAY; ++ ++macro_rules! DEFINE_GUID { ++ ( ++ $name:ident, $l:expr, $w1:expr, $w2:expr, ++ $b1:expr, $b2:expr, $b3:expr, $b4:expr, $b5:expr, $b6:expr, $b7:expr, $b8:expr ++ ) => { ++ pub const $name: $crate::winapi::GUID = $crate::winapi::GUID { ++ Data1: $l, ++ Data2: $w1, ++ Data3: $w2, ++ Data4: [$b1, $b2, $b3, $b4, $b5, $b6, $b7, $b8], ++ }; ++ }; ++} ++ ++macro_rules! RIDL { ++ (#[uuid($($uuid:expr),+)] ++ interface $interface:ident ($vtbl:ident) {$( ++ fn $method:ident($($p:ident : $t:ty,)*) -> $rtr:ty, ++ )+}) => ( ++ #[repr(C)] ++ pub struct $vtbl { ++ $(pub $method: unsafe extern "system" fn( ++ This: *mut $interface, ++ $($p: $t),* ++ ) -> $rtr,)+ ++ } ++ #[repr(C)] ++ pub struct $interface { ++ pub lpVtbl: *const $vtbl, ++ } ++ RIDL!{@impl $interface {$(fn $method($($p: $t,)*) -> $rtr,)+}} ++ RIDL!{@uuid $interface $($uuid),+} ++ ); ++ (#[uuid($($uuid:expr),+)] ++ interface $interface:ident ($vtbl:ident) : $pinterface:ident ($pvtbl:ident) { ++ }) => ( ++ #[repr(C)] ++ pub struct $vtbl { ++ pub parent: $pvtbl, ++ } ++ #[repr(C)] ++ pub struct $interface { ++ pub lpVtbl: *const $vtbl, ++ } ++ RIDL!{@deref $interface $pinterface} ++ RIDL!{@uuid $interface $($uuid),+} ++ ); ++ (#[uuid($($uuid:expr),+)] ++ interface $interface:ident ($vtbl:ident) : $pinterface:ident ($pvtbl:ident) {$( ++ fn $method:ident($($p:ident : $t:ty,)*) -> $rtr:ty, ++ )+}) => ( ++ #[repr(C)] ++ pub struct $vtbl { ++ pub parent: $pvtbl, ++ $(pub $method: unsafe extern "system" fn( ++ This: *mut $interface, ++ $($p: $t,)* ++ ) -> $rtr,)+ ++ } ++ #[repr(C)] ++ pub struct $interface { ++ pub lpVtbl: *const $vtbl, ++ } ++ RIDL!{@impl $interface {$(fn $method($($p: $t,)*) -> $rtr,)+}} ++ RIDL!{@deref $interface $pinterface} ++ RIDL!{@uuid $interface $($uuid),+} ++ ); ++ (@deref $interface:ident $pinterface:ident) => ( ++ impl ::std::ops::Deref for $interface { ++ type Target = $pinterface; ++ #[inline] ++ fn deref(&self) -> &$pinterface { ++ unsafe { &*(self as *const $interface as *const $pinterface) } ++ } ++ } ++ ); ++ (@impl $interface:ident {$( ++ fn $method:ident($($p:ident : $t:ty,)*) -> $rtr:ty, ++ )+}) => ( ++ impl $interface { ++ $(#[inline] pub unsafe fn $method(&self, $($p: $t,)*) -> $rtr { ++ ((*self.lpVtbl).$method)(self as *const _ as *mut _, $($p,)*) ++ })+ ++ } ++ ); ++ (@uuid $interface:ident ++ $l:expr, $w1:expr, $w2:expr, ++ $b1:expr, $b2:expr, $b3:expr, $b4:expr, $b5:expr, $b6:expr, $b7:expr, $b8:expr ++ ) => ( ++ impl $crate::winapi::Interface for $interface { ++ #[inline] ++ fn uuidof() -> $crate::winapi::GUID { ++ $crate::winapi::GUID { ++ Data1: $l, ++ Data2: $w1, ++ Data3: $w2, ++ Data4: [$b1, $b2, $b3, $b4, $b5, $b6, $b7, $b8], ++ } ++ } ++ } ++ ); ++} ++ ++RIDL! {#[uuid(0x00000000, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] ++interface IUnknown(IUnknownVtbl) { ++ fn QueryInterface( ++ riid: REFIID, ++ ppvObject: *mut *mut raw::c_void, ++ ) -> HRESULT, ++ fn AddRef() -> ULONG, ++ fn Release() -> ULONG, ++}} +diff --git a/vendor/cc-1.0.79/src/windows_registry.rs b/vendor/cc-1.0.79/src/windows_registry.rs +new file mode 100644 +index 000000000..b05498c29 +--- /dev/null ++++ b/vendor/cc-1.0.79/src/windows_registry.rs +@@ -0,0 +1,902 @@ ++// Copyright 2015 The Rust Project Developers. See the COPYRIGHT ++// file at the top-level directory of this distribution and at ++// http://rust-lang.org/COPYRIGHT. ++// ++// Licensed under the Apache License, Version 2.0 or the MIT license ++// , at your ++// option. This file may not be copied, modified, or distributed ++// except according to those terms. ++ ++//! A helper module to probe the Windows Registry when looking for ++//! windows-specific tools. ++ ++use std::process::Command; ++ ++use crate::Tool; ++#[cfg(windows)] ++use crate::ToolFamily; ++ ++#[cfg(windows)] ++const MSVC_FAMILY: ToolFamily = ToolFamily::Msvc { clang_cl: false }; ++ ++/// Attempts to find a tool within an MSVC installation using the Windows ++/// registry as a point to search from. ++/// ++/// The `target` argument is the target that the tool should work for (e.g. ++/// compile or link for) and the `tool` argument is the tool to find (e.g. ++/// `cl.exe` or `link.exe`). ++/// ++/// This function will return `None` if the tool could not be found, or it will ++/// return `Some(cmd)` which represents a command that's ready to execute the ++/// tool with the appropriate environment variables set. ++/// ++/// Note that this function always returns `None` for non-MSVC targets. ++pub fn find(target: &str, tool: &str) -> Option { ++ find_tool(target, tool).map(|c| c.to_command()) ++} ++ ++/// Similar to the `find` function above, this function will attempt the same ++/// operation (finding a MSVC tool in a local install) but instead returns a ++/// `Tool` which may be introspected. ++#[cfg(not(windows))] ++pub fn find_tool(_target: &str, _tool: &str) -> Option { ++ None ++} ++ ++/// Documented above. ++#[cfg(windows)] ++pub fn find_tool(target: &str, tool: &str) -> Option { ++ // This logic is all tailored for MSVC, if we're not that then bail out ++ // early. ++ if !target.contains("msvc") { ++ return None; ++ } ++ ++ // Looks like msbuild isn't located in the same location as other tools like ++ // cl.exe and lib.exe. To handle this we probe for it manually with ++ // dedicated registry keys. ++ if tool.contains("msbuild") { ++ return impl_::find_msbuild(target); ++ } ++ ++ if tool.contains("devenv") { ++ return impl_::find_devenv(target); ++ } ++ ++ // Ok, if we're here, now comes the fun part of the probing. Default shells ++ // or shells like MSYS aren't really configured to execute `cl.exe` and the ++ // various compiler tools shipped as part of Visual Studio. Here we try to ++ // first find the relevant tool, then we also have to be sure to fill in ++ // environment variables like `LIB`, `INCLUDE`, and `PATH` to ensure that ++ // the tool is actually usable. ++ ++ return impl_::find_msvc_environment(tool, target) ++ .or_else(|| impl_::find_msvc_15plus(tool, target)) ++ .or_else(|| impl_::find_msvc_14(tool, target)) ++ .or_else(|| impl_::find_msvc_12(tool, target)) ++ .or_else(|| impl_::find_msvc_11(tool, target)); ++} ++ ++/// A version of Visual Studio ++#[derive(Debug, PartialEq, Eq, Copy, Clone)] ++pub enum VsVers { ++ /// Visual Studio 12 (2013) ++ Vs12, ++ /// Visual Studio 14 (2015) ++ Vs14, ++ /// Visual Studio 15 (2017) ++ Vs15, ++ /// Visual Studio 16 (2019) ++ Vs16, ++ /// Visual Studio 17 (2022) ++ Vs17, ++ ++ /// Hidden variant that should not be matched on. Callers that want to ++ /// handle an enumeration of `VsVers` instances should always have a default ++ /// case meaning that it's a VS version they don't understand. ++ #[doc(hidden)] ++ #[allow(bad_style)] ++ __Nonexhaustive_do_not_match_this_or_your_code_will_break, ++} ++ ++/// Find the most recent installed version of Visual Studio ++/// ++/// This is used by the cmake crate to figure out the correct ++/// generator. ++#[cfg(not(windows))] ++pub fn find_vs_version() -> Result { ++ Err(format!("not windows")) ++} ++ ++/// Documented above ++#[cfg(windows)] ++pub fn find_vs_version() -> Result { ++ use std::env; ++ ++ match env::var("VisualStudioVersion") { ++ Ok(version) => match &version[..] { ++ "17.0" => Ok(VsVers::Vs17), ++ "16.0" => Ok(VsVers::Vs16), ++ "15.0" => Ok(VsVers::Vs15), ++ "14.0" => Ok(VsVers::Vs14), ++ "12.0" => Ok(VsVers::Vs12), ++ vers => Err(format!( ++ "\n\n\ ++ unsupported or unknown VisualStudio version: {}\n\ ++ if another version is installed consider running \ ++ the appropriate vcvars script before building this \ ++ crate\n\ ++ ", ++ vers ++ )), ++ }, ++ _ => { ++ // Check for the presence of a specific registry key ++ // that indicates visual studio is installed. ++ if impl_::has_msbuild_version("17.0") { ++ Ok(VsVers::Vs17) ++ } else if impl_::has_msbuild_version("16.0") { ++ Ok(VsVers::Vs16) ++ } else if impl_::has_msbuild_version("15.0") { ++ Ok(VsVers::Vs15) ++ } else if impl_::has_msbuild_version("14.0") { ++ Ok(VsVers::Vs14) ++ } else if impl_::has_msbuild_version("12.0") { ++ Ok(VsVers::Vs12) ++ } else { ++ Err(format!( ++ "\n\n\ ++ couldn't determine visual studio generator\n\ ++ if VisualStudio is installed, however, consider \ ++ running the appropriate vcvars script before building \ ++ this crate\n\ ++ " ++ )) ++ } ++ } ++ } ++} ++ ++#[cfg(windows)] ++mod impl_ { ++ use crate::com; ++ use crate::registry::{RegistryKey, LOCAL_MACHINE}; ++ use crate::setup_config::SetupConfiguration; ++ use crate::vs_instances::{VsInstances, VswhereInstance}; ++ use std::convert::TryFrom; ++ use std::env; ++ use std::ffi::OsString; ++ use std::fs::File; ++ use std::io::Read; ++ use std::iter; ++ use std::mem; ++ use std::path::{Path, PathBuf}; ++ use std::process::Command; ++ use std::str::FromStr; ++ ++ use super::MSVC_FAMILY; ++ use crate::Tool; ++ ++ struct MsvcTool { ++ tool: PathBuf, ++ libs: Vec, ++ path: Vec, ++ include: Vec, ++ } ++ ++ impl MsvcTool { ++ fn new(tool: PathBuf) -> MsvcTool { ++ MsvcTool { ++ tool: tool, ++ libs: Vec::new(), ++ path: Vec::new(), ++ include: Vec::new(), ++ } ++ } ++ ++ fn into_tool(self) -> Tool { ++ let MsvcTool { ++ tool, ++ libs, ++ path, ++ include, ++ } = self; ++ let mut tool = Tool::with_family(tool.into(), MSVC_FAMILY); ++ add_env(&mut tool, "LIB", libs); ++ add_env(&mut tool, "PATH", path); ++ add_env(&mut tool, "INCLUDE", include); ++ tool ++ } ++ } ++ ++ /// Checks to see if the `VSCMD_ARG_TGT_ARCH` environment variable matches the ++ /// given target's arch. Returns `None` if the variable does not exist. ++ #[cfg(windows)] ++ fn is_vscmd_target(target: &str) -> Option { ++ let vscmd_arch = env::var("VSCMD_ARG_TGT_ARCH").ok()?; ++ // Convert the Rust target arch to its VS arch equivalent. ++ let arch = match target.split("-").next() { ++ Some("x86_64") => "x64", ++ Some("aarch64") => "arm64", ++ Some("i686") | Some("i586") => "x86", ++ Some("thumbv7a") => "arm", ++ // An unrecognized arch. ++ _ => return Some(false), ++ }; ++ Some(vscmd_arch == arch) ++ } ++ ++ /// Attempt to find the tool using environment variables set by vcvars. ++ pub fn find_msvc_environment(tool: &str, target: &str) -> Option { ++ // Early return if the environment doesn't contain a VC install. ++ if env::var_os("VCINSTALLDIR").is_none() { ++ return None; ++ } ++ let vs_install_dir = env::var_os("VSINSTALLDIR")?.into(); ++ ++ // If the vscmd target differs from the requested target then ++ // attempt to get the tool using the VS install directory. ++ if is_vscmd_target(target) == Some(false) { ++ // We will only get here with versions 15+. ++ tool_from_vs15plus_instance(tool, target, &vs_install_dir) ++ } else { ++ // Fallback to simply using the current environment. ++ env::var_os("PATH") ++ .and_then(|path| { ++ env::split_paths(&path) ++ .map(|p| p.join(tool)) ++ .find(|p| p.exists()) ++ }) ++ .map(|path| Tool::with_family(path.into(), MSVC_FAMILY)) ++ } ++ } ++ ++ fn find_msbuild_vs17(target: &str) -> Option { ++ find_tool_in_vs16plus_path(r"MSBuild\Current\Bin\MSBuild.exe", target, "17") ++ } ++ ++ #[allow(bare_trait_objects)] ++ fn vs16plus_instances(target: &str, version: &'static str) -> Box> { ++ let instances = if let Some(instances) = vs15plus_instances(target) { ++ instances ++ } else { ++ return Box::new(iter::empty()); ++ }; ++ Box::new(instances.into_iter().filter_map(move |instance| { ++ let installation_name = instance.installation_name()?; ++ if installation_name.starts_with(&format!("VisualStudio/{}.", version)) { ++ Some(instance.installation_path()?) ++ } else if installation_name.starts_with(&format!("VisualStudioPreview/{}.", version)) { ++ Some(instance.installation_path()?) ++ } else { ++ None ++ } ++ })) ++ } ++ ++ fn find_tool_in_vs16plus_path(tool: &str, target: &str, version: &'static str) -> Option { ++ vs16plus_instances(target, version) ++ .filter_map(|path| { ++ let path = path.join(tool); ++ if !path.is_file() { ++ return None; ++ } ++ let mut tool = Tool::with_family(path, MSVC_FAMILY); ++ if target.contains("x86_64") { ++ tool.env.push(("Platform".into(), "X64".into())); ++ } ++ if target.contains("aarch64") { ++ tool.env.push(("Platform".into(), "ARM64".into())); ++ } ++ Some(tool) ++ }) ++ .next() ++ } ++ ++ fn find_msbuild_vs16(target: &str) -> Option { ++ find_tool_in_vs16plus_path(r"MSBuild\Current\Bin\MSBuild.exe", target, "16") ++ } ++ ++ // In MSVC 15 (2017) MS once again changed the scheme for locating ++ // the tooling. Now we must go through some COM interfaces, which ++ // is super fun for Rust. ++ // ++ // Note that much of this logic can be found [online] wrt paths, COM, etc. ++ // ++ // [online]: https://blogs.msdn.microsoft.com/vcblog/2017/03/06/finding-the-visual-c-compiler-tools-in-visual-studio-2017/ ++ // ++ // Returns MSVC 15+ instances (15, 16 right now), the order should be consider undefined. ++ // ++ // However, on ARM64 this method doesn't work because VS Installer fails to register COM component on ARM64. ++ // Hence, as the last resort we try to use vswhere.exe to list available instances. ++ fn vs15plus_instances(target: &str) -> Option { ++ vs15plus_instances_using_com().or_else(|| vs15plus_instances_using_vswhere(target)) ++ } ++ ++ fn vs15plus_instances_using_com() -> Option { ++ com::initialize().ok()?; ++ ++ let config = SetupConfiguration::new().ok()?; ++ let enum_setup_instances = config.enum_all_instances().ok()?; ++ ++ Some(VsInstances::ComBased(enum_setup_instances)) ++ } ++ ++ fn vs15plus_instances_using_vswhere(target: &str) -> Option { ++ let program_files_path: PathBuf = env::var("ProgramFiles(x86)") ++ .or_else(|_| env::var("ProgramFiles")) ++ .ok()? ++ .into(); ++ ++ let vswhere_path = ++ program_files_path.join(r"Microsoft Visual Studio\Installer\vswhere.exe"); ++ ++ if !vswhere_path.exists() { ++ return None; ++ } ++ ++ let arch = target.split('-').next().unwrap(); ++ let tools_arch = match arch { ++ "i586" | "i686" | "x86_64" => Some("x86.x64"), ++ "arm" | "thumbv7a" => Some("ARM"), ++ "aarch64" => Some("ARM64"), ++ _ => None, ++ }; ++ ++ let vswhere_output = Command::new(vswhere_path) ++ .args(&[ ++ "-latest", ++ "-products", ++ "*", ++ "-requires", ++ &format!("Microsoft.VisualStudio.Component.VC.Tools.{}", tools_arch?), ++ "-format", ++ "text", ++ "-nologo", ++ ]) ++ .stderr(std::process::Stdio::inherit()) ++ .output() ++ .ok()?; ++ ++ let vs_instances = ++ VsInstances::VswhereBased(VswhereInstance::try_from(&vswhere_output.stdout).ok()?); ++ ++ Some(vs_instances) ++ } ++ ++ // Inspired from official microsoft/vswhere ParseVersionString ++ // i.e. at most four u16 numbers separated by '.' ++ fn parse_version(version: &str) -> Option> { ++ version ++ .split('.') ++ .map(|chunk| u16::from_str(chunk).ok()) ++ .collect() ++ } ++ ++ pub fn find_msvc_15plus(tool: &str, target: &str) -> Option { ++ let iter = vs15plus_instances(target)?; ++ iter.into_iter() ++ .filter_map(|instance| { ++ let version = parse_version(&instance.installation_version()?)?; ++ let instance_path = instance.installation_path()?; ++ let tool = tool_from_vs15plus_instance(tool, target, &instance_path)?; ++ Some((version, tool)) ++ }) ++ .max_by(|(a_version, _), (b_version, _)| a_version.cmp(b_version)) ++ .map(|(_version, tool)| tool) ++ } ++ ++ // While the paths to Visual Studio 2017's devenv and MSBuild could ++ // potentially be retrieved from the registry, finding them via ++ // SetupConfiguration has shown to be [more reliable], and is preferred ++ // according to Microsoft. To help head off potential regressions though, ++ // we keep the registry method as a fallback option. ++ // ++ // [more reliable]: https://github.com/rust-lang/cc-rs/pull/331 ++ fn find_tool_in_vs15_path(tool: &str, target: &str) -> Option { ++ let mut path = match vs15plus_instances(target) { ++ Some(instances) => instances ++ .into_iter() ++ .filter_map(|instance| instance.installation_path()) ++ .map(|path| path.join(tool)) ++ .find(|ref path| path.is_file()), ++ None => None, ++ }; ++ ++ if path.is_none() { ++ let key = r"SOFTWARE\WOW6432Node\Microsoft\VisualStudio\SxS\VS7"; ++ path = LOCAL_MACHINE ++ .open(key.as_ref()) ++ .ok() ++ .and_then(|key| key.query_str("15.0").ok()) ++ .map(|path| PathBuf::from(path).join(tool)) ++ .and_then(|path| if path.is_file() { Some(path) } else { None }); ++ } ++ ++ path.map(|path| { ++ let mut tool = Tool::with_family(path, MSVC_FAMILY); ++ if target.contains("x86_64") { ++ tool.env.push(("Platform".into(), "X64".into())); ++ } ++ if target.contains("aarch64") { ++ tool.env.push(("Platform".into(), "ARM64".into())); ++ } ++ tool ++ }) ++ } ++ ++ fn tool_from_vs15plus_instance( ++ tool: &str, ++ target: &str, ++ instance_path: &PathBuf, ++ ) -> Option { ++ let (root_path, bin_path, host_dylib_path, lib_path, include_path) = ++ vs15plus_vc_paths(target, instance_path)?; ++ let tool_path = bin_path.join(tool); ++ if !tool_path.exists() { ++ return None; ++ }; ++ ++ let mut tool = MsvcTool::new(tool_path); ++ tool.path.push(bin_path.clone()); ++ tool.path.push(host_dylib_path); ++ tool.libs.push(lib_path); ++ tool.include.push(include_path); ++ ++ if let Some((atl_lib_path, atl_include_path)) = atl_paths(target, &root_path) { ++ tool.libs.push(atl_lib_path); ++ tool.include.push(atl_include_path); ++ } ++ ++ add_sdks(&mut tool, target)?; ++ ++ Some(tool.into_tool()) ++ } ++ ++ fn vs15plus_vc_paths( ++ target: &str, ++ instance_path: &PathBuf, ++ ) -> Option<(PathBuf, PathBuf, PathBuf, PathBuf, PathBuf)> { ++ let version_path = ++ instance_path.join(r"VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt"); ++ let mut version_file = File::open(version_path).ok()?; ++ let mut version = String::new(); ++ version_file.read_to_string(&mut version).ok()?; ++ let version = version.trim(); ++ let host = match host_arch() { ++ X86 => "X86", ++ X86_64 => "X64", ++ // There is no natively hosted compiler on ARM64. ++ // Instead, use the x86 toolchain under emulation (there is no x64 emulation). ++ AARCH64 => "X86", ++ _ => return None, ++ }; ++ let target = lib_subdir(target)?; ++ // The directory layout here is MSVC/bin/Host$host/$target/ ++ let path = instance_path.join(r"VC\Tools\MSVC").join(version); ++ // This is the path to the toolchain for a particular target, running ++ // on a given host ++ let bin_path = path ++ .join("bin") ++ .join(&format!("Host{}", host)) ++ .join(&target); ++ // But! we also need PATH to contain the target directory for the host ++ // architecture, because it contains dlls like mspdb140.dll compiled for ++ // the host architecture. ++ let host_dylib_path = path ++ .join("bin") ++ .join(&format!("Host{}", host)) ++ .join(&host.to_lowercase()); ++ let lib_path = path.join("lib").join(&target); ++ let include_path = path.join("include"); ++ Some((path, bin_path, host_dylib_path, lib_path, include_path)) ++ } ++ ++ fn atl_paths(target: &str, path: &Path) -> Option<(PathBuf, PathBuf)> { ++ let atl_path = path.join("atlmfc"); ++ let sub = lib_subdir(target)?; ++ if atl_path.exists() { ++ Some((atl_path.join("lib").join(sub), atl_path.join("include"))) ++ } else { ++ None ++ } ++ } ++ ++ // For MSVC 14 we need to find the Universal CRT as well as either ++ // the Windows 10 SDK or Windows 8.1 SDK. ++ pub fn find_msvc_14(tool: &str, target: &str) -> Option { ++ let vcdir = get_vc_dir("14.0")?; ++ let mut tool = get_tool(tool, &vcdir, target)?; ++ add_sdks(&mut tool, target)?; ++ Some(tool.into_tool()) ++ } ++ ++ fn add_sdks(tool: &mut MsvcTool, target: &str) -> Option<()> { ++ let sub = lib_subdir(target)?; ++ let (ucrt, ucrt_version) = get_ucrt_dir()?; ++ ++ let host = match host_arch() { ++ X86 => "x86", ++ X86_64 => "x64", ++ AARCH64 => "arm64", ++ _ => return None, ++ }; ++ ++ tool.path ++ .push(ucrt.join("bin").join(&ucrt_version).join(host)); ++ ++ let ucrt_include = ucrt.join("include").join(&ucrt_version); ++ tool.include.push(ucrt_include.join("ucrt")); ++ ++ let ucrt_lib = ucrt.join("lib").join(&ucrt_version); ++ tool.libs.push(ucrt_lib.join("ucrt").join(sub)); ++ ++ if let Some((sdk, version)) = get_sdk10_dir() { ++ tool.path.push(sdk.join("bin").join(host)); ++ let sdk_lib = sdk.join("lib").join(&version); ++ tool.libs.push(sdk_lib.join("um").join(sub)); ++ let sdk_include = sdk.join("include").join(&version); ++ tool.include.push(sdk_include.join("um")); ++ tool.include.push(sdk_include.join("cppwinrt")); ++ tool.include.push(sdk_include.join("winrt")); ++ tool.include.push(sdk_include.join("shared")); ++ } else if let Some(sdk) = get_sdk81_dir() { ++ tool.path.push(sdk.join("bin").join(host)); ++ let sdk_lib = sdk.join("lib").join("winv6.3"); ++ tool.libs.push(sdk_lib.join("um").join(sub)); ++ let sdk_include = sdk.join("include"); ++ tool.include.push(sdk_include.join("um")); ++ tool.include.push(sdk_include.join("winrt")); ++ tool.include.push(sdk_include.join("shared")); ++ } ++ ++ Some(()) ++ } ++ ++ // For MSVC 12 we need to find the Windows 8.1 SDK. ++ pub fn find_msvc_12(tool: &str, target: &str) -> Option { ++ let vcdir = get_vc_dir("12.0")?; ++ let mut tool = get_tool(tool, &vcdir, target)?; ++ let sub = lib_subdir(target)?; ++ let sdk81 = get_sdk81_dir()?; ++ tool.path.push(sdk81.join("bin").join(sub)); ++ let sdk_lib = sdk81.join("lib").join("winv6.3"); ++ tool.libs.push(sdk_lib.join("um").join(sub)); ++ let sdk_include = sdk81.join("include"); ++ tool.include.push(sdk_include.join("shared")); ++ tool.include.push(sdk_include.join("um")); ++ tool.include.push(sdk_include.join("winrt")); ++ Some(tool.into_tool()) ++ } ++ ++ // For MSVC 11 we need to find the Windows 8 SDK. ++ pub fn find_msvc_11(tool: &str, target: &str) -> Option { ++ let vcdir = get_vc_dir("11.0")?; ++ let mut tool = get_tool(tool, &vcdir, target)?; ++ let sub = lib_subdir(target)?; ++ let sdk8 = get_sdk8_dir()?; ++ tool.path.push(sdk8.join("bin").join(sub)); ++ let sdk_lib = sdk8.join("lib").join("win8"); ++ tool.libs.push(sdk_lib.join("um").join(sub)); ++ let sdk_include = sdk8.join("include"); ++ tool.include.push(sdk_include.join("shared")); ++ tool.include.push(sdk_include.join("um")); ++ tool.include.push(sdk_include.join("winrt")); ++ Some(tool.into_tool()) ++ } ++ ++ fn add_env(tool: &mut Tool, env: &str, paths: Vec) { ++ let prev = env::var_os(env).unwrap_or(OsString::new()); ++ let prev = env::split_paths(&prev); ++ let new = paths.into_iter().chain(prev); ++ tool.env ++ .push((env.to_string().into(), env::join_paths(new).unwrap())); ++ } ++ ++ // Given a possible MSVC installation directory, we look for the linker and ++ // then add the MSVC library path. ++ fn get_tool(tool: &str, path: &Path, target: &str) -> Option { ++ bin_subdir(target) ++ .into_iter() ++ .map(|(sub, host)| { ++ ( ++ path.join("bin").join(sub).join(tool), ++ path.join("bin").join(host), ++ ) ++ }) ++ .filter(|&(ref path, _)| path.is_file()) ++ .map(|(path, host)| { ++ let mut tool = MsvcTool::new(path); ++ tool.path.push(host); ++ tool ++ }) ++ .filter_map(|mut tool| { ++ let sub = vc_lib_subdir(target)?; ++ tool.libs.push(path.join("lib").join(sub)); ++ tool.include.push(path.join("include")); ++ let atlmfc_path = path.join("atlmfc"); ++ if atlmfc_path.exists() { ++ tool.libs.push(atlmfc_path.join("lib").join(sub)); ++ tool.include.push(atlmfc_path.join("include")); ++ } ++ Some(tool) ++ }) ++ .next() ++ } ++ ++ // To find MSVC we look in a specific registry key for the version we are ++ // trying to find. ++ fn get_vc_dir(ver: &str) -> Option { ++ let key = r"SOFTWARE\Microsoft\VisualStudio\SxS\VC7"; ++ let key = LOCAL_MACHINE.open(key.as_ref()).ok()?; ++ let path = key.query_str(ver).ok()?; ++ Some(path.into()) ++ } ++ ++ // To find the Universal CRT we look in a specific registry key for where ++ // all the Universal CRTs are located and then sort them asciibetically to ++ // find the newest version. While this sort of sorting isn't ideal, it is ++ // what vcvars does so that's good enough for us. ++ // ++ // Returns a pair of (root, version) for the ucrt dir if found ++ fn get_ucrt_dir() -> Option<(PathBuf, String)> { ++ let key = r"SOFTWARE\Microsoft\Windows Kits\Installed Roots"; ++ let key = LOCAL_MACHINE.open(key.as_ref()).ok()?; ++ let root = key.query_str("KitsRoot10").ok()?; ++ let readdir = Path::new(&root).join("lib").read_dir().ok()?; ++ let max_libdir = readdir ++ .filter_map(|dir| dir.ok()) ++ .map(|dir| dir.path()) ++ .filter(|dir| { ++ dir.components() ++ .last() ++ .and_then(|c| c.as_os_str().to_str()) ++ .map(|c| c.starts_with("10.") && dir.join("ucrt").is_dir()) ++ .unwrap_or(false) ++ }) ++ .max()?; ++ let version = max_libdir.components().last().unwrap(); ++ let version = version.as_os_str().to_str().unwrap().to_string(); ++ Some((root.into(), version)) ++ } ++ ++ // Vcvars finds the correct version of the Windows 10 SDK by looking ++ // for the include `um\Windows.h` because sometimes a given version will ++ // only have UCRT bits without the rest of the SDK. Since we only care about ++ // libraries and not includes, we instead look for `um\x64\kernel32.lib`. ++ // Since the 32-bit and 64-bit libraries are always installed together we ++ // only need to bother checking x64, making this code a tiny bit simpler. ++ // Like we do for the Universal CRT, we sort the possibilities ++ // asciibetically to find the newest one as that is what vcvars does. ++ // Before doing that, we check the "WindowsSdkDir" and "WindowsSDKVersion" ++ // environment variables set by vcvars to use the environment sdk version ++ // if one is already configured. ++ fn get_sdk10_dir() -> Option<(PathBuf, String)> { ++ if let (Ok(root), Ok(version)) = (env::var("WindowsSdkDir"), env::var("WindowsSDKVersion")) ++ { ++ return Some((root.into(), version.trim_end_matches('\\').to_string())); ++ } ++ ++ let key = r"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0"; ++ let key = LOCAL_MACHINE.open(key.as_ref()).ok()?; ++ let root = key.query_str("InstallationFolder").ok()?; ++ let readdir = Path::new(&root).join("lib").read_dir().ok()?; ++ let mut dirs = readdir ++ .filter_map(|dir| dir.ok()) ++ .map(|dir| dir.path()) ++ .collect::>(); ++ dirs.sort(); ++ let dir = dirs ++ .into_iter() ++ .rev() ++ .filter(|dir| dir.join("um").join("x64").join("kernel32.lib").is_file()) ++ .next()?; ++ let version = dir.components().last().unwrap(); ++ let version = version.as_os_str().to_str().unwrap().to_string(); ++ Some((root.into(), version)) ++ } ++ ++ // Interestingly there are several subdirectories, `win7` `win8` and ++ // `winv6.3`. Vcvars seems to only care about `winv6.3` though, so the same ++ // applies to us. Note that if we were targeting kernel mode drivers ++ // instead of user mode applications, we would care. ++ fn get_sdk81_dir() -> Option { ++ let key = r"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1"; ++ let key = LOCAL_MACHINE.open(key.as_ref()).ok()?; ++ let root = key.query_str("InstallationFolder").ok()?; ++ Some(root.into()) ++ } ++ ++ fn get_sdk8_dir() -> Option { ++ let key = r"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0"; ++ let key = LOCAL_MACHINE.open(key.as_ref()).ok()?; ++ let root = key.query_str("InstallationFolder").ok()?; ++ Some(root.into()) ++ } ++ ++ const PROCESSOR_ARCHITECTURE_INTEL: u16 = 0; ++ const PROCESSOR_ARCHITECTURE_AMD64: u16 = 9; ++ const PROCESSOR_ARCHITECTURE_ARM64: u16 = 12; ++ const X86: u16 = PROCESSOR_ARCHITECTURE_INTEL; ++ const X86_64: u16 = PROCESSOR_ARCHITECTURE_AMD64; ++ const AARCH64: u16 = PROCESSOR_ARCHITECTURE_ARM64; ++ ++ // When choosing the tool to use, we have to choose the one which matches ++ // the target architecture. Otherwise we end up in situations where someone ++ // on 32-bit Windows is trying to cross compile to 64-bit and it tries to ++ // invoke the native 64-bit compiler which won't work. ++ // ++ // For the return value of this function, the first member of the tuple is ++ // the folder of the tool we will be invoking, while the second member is ++ // the folder of the host toolchain for that tool which is essential when ++ // using a cross linker. We return a Vec since on x64 there are often two ++ // linkers that can target the architecture we desire. The 64-bit host ++ // linker is preferred, and hence first, due to 64-bit allowing it more ++ // address space to work with and potentially being faster. ++ fn bin_subdir(target: &str) -> Vec<(&'static str, &'static str)> { ++ let arch = target.split('-').next().unwrap(); ++ match (arch, host_arch()) { ++ ("i586", X86) | ("i686", X86) => vec![("", "")], ++ ("i586", X86_64) | ("i686", X86_64) => vec![("amd64_x86", "amd64"), ("", "")], ++ ("x86_64", X86) => vec![("x86_amd64", "")], ++ ("x86_64", X86_64) => vec![("amd64", "amd64"), ("x86_amd64", "")], ++ ("arm", X86) | ("thumbv7a", X86) => vec![("x86_arm", "")], ++ ("arm", X86_64) | ("thumbv7a", X86_64) => vec![("amd64_arm", "amd64"), ("x86_arm", "")], ++ _ => vec![], ++ } ++ } ++ ++ fn lib_subdir(target: &str) -> Option<&'static str> { ++ let arch = target.split('-').next().unwrap(); ++ match arch { ++ "i586" | "i686" => Some("x86"), ++ "x86_64" => Some("x64"), ++ "arm" | "thumbv7a" => Some("arm"), ++ "aarch64" => Some("arm64"), ++ _ => None, ++ } ++ } ++ ++ // MSVC's x86 libraries are not in a subfolder ++ fn vc_lib_subdir(target: &str) -> Option<&'static str> { ++ let arch = target.split('-').next().unwrap(); ++ match arch { ++ "i586" | "i686" => Some(""), ++ "x86_64" => Some("amd64"), ++ "arm" | "thumbv7a" => Some("arm"), ++ "aarch64" => Some("arm64"), ++ _ => None, ++ } ++ } ++ ++ #[allow(bad_style)] ++ fn host_arch() -> u16 { ++ type DWORD = u32; ++ type WORD = u16; ++ type LPVOID = *mut u8; ++ type DWORD_PTR = usize; ++ ++ #[repr(C)] ++ struct SYSTEM_INFO { ++ wProcessorArchitecture: WORD, ++ _wReserved: WORD, ++ _dwPageSize: DWORD, ++ _lpMinimumApplicationAddress: LPVOID, ++ _lpMaximumApplicationAddress: LPVOID, ++ _dwActiveProcessorMask: DWORD_PTR, ++ _dwNumberOfProcessors: DWORD, ++ _dwProcessorType: DWORD, ++ _dwAllocationGranularity: DWORD, ++ _wProcessorLevel: WORD, ++ _wProcessorRevision: WORD, ++ } ++ ++ extern "system" { ++ fn GetNativeSystemInfo(lpSystemInfo: *mut SYSTEM_INFO); ++ } ++ ++ unsafe { ++ let mut info = mem::zeroed(); ++ GetNativeSystemInfo(&mut info); ++ info.wProcessorArchitecture ++ } ++ } ++ ++ // Given a registry key, look at all the sub keys and find the one which has ++ // the maximal numeric value. ++ // ++ // Returns the name of the maximal key as well as the opened maximal key. ++ fn max_version(key: &RegistryKey) -> Option<(OsString, RegistryKey)> { ++ let mut max_vers = 0; ++ let mut max_key = None; ++ for subkey in key.iter().filter_map(|k| k.ok()) { ++ let val = subkey ++ .to_str() ++ .and_then(|s| s.trim_left_matches("v").replace(".", "").parse().ok()); ++ let val = match val { ++ Some(s) => s, ++ None => continue, ++ }; ++ if val > max_vers { ++ if let Ok(k) = key.open(&subkey) { ++ max_vers = val; ++ max_key = Some((subkey, k)); ++ } ++ } ++ } ++ max_key ++ } ++ ++ pub fn has_msbuild_version(version: &str) -> bool { ++ match version { ++ "17.0" => { ++ find_msbuild_vs17("x86_64-pc-windows-msvc").is_some() ++ || find_msbuild_vs17("i686-pc-windows-msvc").is_some() ++ || find_msbuild_vs17("aarch64-pc-windows-msvc").is_some() ++ } ++ "16.0" => { ++ find_msbuild_vs16("x86_64-pc-windows-msvc").is_some() ++ || find_msbuild_vs16("i686-pc-windows-msvc").is_some() ++ || find_msbuild_vs16("aarch64-pc-windows-msvc").is_some() ++ } ++ "15.0" => { ++ find_msbuild_vs15("x86_64-pc-windows-msvc").is_some() ++ || find_msbuild_vs15("i686-pc-windows-msvc").is_some() ++ || find_msbuild_vs15("aarch64-pc-windows-msvc").is_some() ++ } ++ "12.0" | "14.0" => LOCAL_MACHINE ++ .open(&OsString::from(format!( ++ "SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\{}", ++ version ++ ))) ++ .is_ok(), ++ _ => false, ++ } ++ } ++ ++ pub fn find_devenv(target: &str) -> Option { ++ find_devenv_vs15(&target) ++ } ++ ++ fn find_devenv_vs15(target: &str) -> Option { ++ find_tool_in_vs15_path(r"Common7\IDE\devenv.exe", target) ++ } ++ ++ // see http://stackoverflow.com/questions/328017/path-to-msbuild ++ pub fn find_msbuild(target: &str) -> Option { ++ // VS 15 (2017) changed how to locate msbuild ++ if let Some(r) = find_msbuild_vs17(target) { ++ return Some(r); ++ } else if let Some(r) = find_msbuild_vs16(target) { ++ return Some(r); ++ } else if let Some(r) = find_msbuild_vs15(target) { ++ return Some(r); ++ } else { ++ find_old_msbuild(target) ++ } ++ } ++ ++ fn find_msbuild_vs15(target: &str) -> Option { ++ find_tool_in_vs15_path(r"MSBuild\15.0\Bin\MSBuild.exe", target) ++ } ++ ++ fn find_old_msbuild(target: &str) -> Option { ++ let key = r"SOFTWARE\Microsoft\MSBuild\ToolsVersions"; ++ LOCAL_MACHINE ++ .open(key.as_ref()) ++ .ok() ++ .and_then(|key| { ++ max_version(&key).and_then(|(_vers, key)| key.query_str("MSBuildToolsPath").ok()) ++ }) ++ .map(|path| { ++ let mut path = PathBuf::from(path); ++ path.push("MSBuild.exe"); ++ let mut tool = Tool::with_family(path, MSVC_FAMILY); ++ if target.contains("x86_64") { ++ tool.env.push(("Platform".into(), "X64".into())); ++ } ++ tool ++ }) ++ } ++} +diff --git a/vendor/cc-1.0.79/tests/cc_env.rs b/vendor/cc-1.0.79/tests/cc_env.rs +new file mode 100644 +index 000000000..43eb689f0 +--- /dev/null ++++ b/vendor/cc-1.0.79/tests/cc_env.rs +@@ -0,0 +1,118 @@ ++use std::env; ++use std::ffi::OsString; ++use std::path::Path; ++ ++mod support; ++use crate::support::Test; ++ ++#[test] ++fn main() { ++ ccache(); ++ distcc(); ++ ccache_spaces(); ++ ccache_env_flags(); ++ leading_spaces(); ++ extra_flags(); ++ path_to_ccache(); ++ more_spaces(); ++} ++ ++fn ccache() { ++ let test = Test::gnu(); ++ ++ env::set_var("CC", "ccache cc"); ++ let compiler = test.gcc().file("foo.c").get_compiler(); ++ ++ assert_eq!(compiler.path(), Path::new("cc")); ++} ++ ++fn ccache_spaces() { ++ let test = Test::gnu(); ++ test.shim("ccache"); ++ ++ env::set_var("CC", "ccache cc"); ++ let compiler = test.gcc().file("foo.c").get_compiler(); ++ assert_eq!(compiler.path(), Path::new("cc")); ++} ++ ++fn distcc() { ++ let test = Test::gnu(); ++ test.shim("distcc"); ++ ++ env::set_var("CC", "distcc cc"); ++ let compiler = test.gcc().file("foo.c").get_compiler(); ++ assert_eq!(compiler.path(), Path::new("cc")); ++} ++ ++fn ccache_env_flags() { ++ let test = Test::gnu(); ++ test.shim("ccache"); ++ ++ env::set_var("CC", "ccache lol-this-is-not-a-compiler"); ++ let compiler = test.gcc().file("foo.c").get_compiler(); ++ assert_eq!(compiler.path(), Path::new("lol-this-is-not-a-compiler")); ++ assert_eq!( ++ compiler.cc_env(), ++ OsString::from("ccache lol-this-is-not-a-compiler") ++ ); ++ assert!( ++ compiler ++ .cflags_env() ++ .into_string() ++ .unwrap() ++ .contains("ccache") ++ == false ++ ); ++ assert!( ++ compiler ++ .cflags_env() ++ .into_string() ++ .unwrap() ++ .contains(" lol-this-is-not-a-compiler") ++ == false ++ ); ++ ++ env::set_var("CC", ""); ++} ++ ++fn leading_spaces() { ++ let test = Test::gnu(); ++ test.shim("ccache"); ++ ++ env::set_var("CC", " test "); ++ let compiler = test.gcc().file("foo.c").get_compiler(); ++ assert_eq!(compiler.path(), Path::new("test")); ++ ++ env::set_var("CC", ""); ++} ++ ++fn extra_flags() { ++ let test = Test::gnu(); ++ test.shim("ccache"); ++ ++ env::set_var("CC", "ccache cc -m32"); ++ let compiler = test.gcc().file("foo.c").get_compiler(); ++ assert_eq!(compiler.path(), Path::new("cc")); ++} ++ ++fn path_to_ccache() { ++ let test = Test::gnu(); ++ test.shim("ccache"); ++ ++ env::set_var("CC", "/path/to/ccache.exe cc -m32"); ++ let compiler = test.gcc().file("foo.c").get_compiler(); ++ assert_eq!(compiler.path(), Path::new("cc")); ++ assert_eq!( ++ compiler.cc_env(), ++ OsString::from("/path/to/ccache.exe cc -m32"), ++ ); ++} ++ ++fn more_spaces() { ++ let test = Test::gnu(); ++ test.shim("ccache"); ++ ++ env::set_var("CC", "cc -m32"); ++ let compiler = test.gcc().file("foo.c").get_compiler(); ++ assert_eq!(compiler.path(), Path::new("cc")); ++} +diff --git a/vendor/cc-1.0.79/tests/cflags.rs b/vendor/cc-1.0.79/tests/cflags.rs +new file mode 100644 +index 000000000..caec6ea4e +--- /dev/null ++++ b/vendor/cc-1.0.79/tests/cflags.rs +@@ -0,0 +1,15 @@ ++mod support; ++ ++use crate::support::Test; ++use std::env; ++ ++/// This test is in its own module because it modifies the environment and would affect other tests ++/// when run in parallel with them. ++#[test] ++fn gnu_no_warnings_if_cflags() { ++ env::set_var("CFLAGS", "-arbitrary"); ++ let test = Test::gnu(); ++ test.gcc().file("foo.c").compile("foo"); ++ ++ test.cmd(0).must_not_have("-Wall").must_not_have("-Wextra"); ++} +diff --git a/vendor/cc-1.0.79/tests/cxxflags.rs b/vendor/cc-1.0.79/tests/cxxflags.rs +new file mode 100644 +index 000000000..c524c7da4 +--- /dev/null ++++ b/vendor/cc-1.0.79/tests/cxxflags.rs +@@ -0,0 +1,15 @@ ++mod support; ++ ++use crate::support::Test; ++use std::env; ++ ++/// This test is in its own module because it modifies the environment and would affect other tests ++/// when run in parallel with them. ++#[test] ++fn gnu_no_warnings_if_cxxflags() { ++ env::set_var("CXXFLAGS", "-arbitrary"); ++ let test = Test::gnu(); ++ test.gcc().file("foo.cpp").cpp(true).compile("foo"); ++ ++ test.cmd(0).must_not_have("-Wall").must_not_have("-Wextra"); ++} +diff --git a/vendor/cc-1.0.79/tests/support/mod.rs b/vendor/cc-1.0.79/tests/support/mod.rs +new file mode 100644 +index 000000000..f3c04405a +--- /dev/null ++++ b/vendor/cc-1.0.79/tests/support/mod.rs +@@ -0,0 +1,172 @@ ++#![allow(dead_code)] ++ ++use std::env; ++use std::ffi::{OsStr, OsString}; ++use std::fs::{self, File}; ++use std::io; ++use std::io::prelude::*; ++use std::path::{Path, PathBuf}; ++ ++use cc; ++use tempfile::{Builder, TempDir}; ++ ++pub struct Test { ++ pub td: TempDir, ++ pub gcc: PathBuf, ++ pub msvc: bool, ++} ++ ++pub struct Execution { ++ args: Vec, ++} ++ ++impl Test { ++ pub fn new() -> Test { ++ // This is ugly: `sccache` needs to introspect the compiler it is ++ // executing, as it adjusts its behavior depending on the ++ // language/compiler. This crate's test driver uses mock compilers that ++ // are obviously not supported by sccache, so the tests fail if ++ // RUSTC_WRAPPER is set. rust doesn't build test dependencies with ++ // the `test` feature enabled, so we can't conditionally disable the ++ // usage of `sccache` if running in a test environment, at least not ++ // without setting an environment variable here and testing for it ++ // there. Explicitly deasserting RUSTC_WRAPPER here seems to be the ++ // lesser of the two evils. ++ env::remove_var("RUSTC_WRAPPER"); ++ ++ let mut gcc = PathBuf::from(env::current_exe().unwrap()); ++ gcc.pop(); ++ if gcc.ends_with("deps") { ++ gcc.pop(); ++ } ++ let td = Builder::new().prefix("gcc-test").tempdir_in(&gcc).unwrap(); ++ gcc.push(format!("gcc-shim{}", env::consts::EXE_SUFFIX)); ++ Test { ++ td: td, ++ gcc: gcc, ++ msvc: false, ++ } ++ } ++ ++ pub fn gnu() -> Test { ++ let t = Test::new(); ++ t.shim("cc").shim("c++").shim("ar"); ++ t ++ } ++ ++ pub fn msvc() -> Test { ++ let mut t = Test::new(); ++ t.shim("cl").shim("lib.exe"); ++ t.msvc = true; ++ t ++ } ++ ++ pub fn shim(&self, name: &str) -> &Test { ++ let name = if name.ends_with(env::consts::EXE_SUFFIX) { ++ name.to_string() ++ } else { ++ format!("{}{}", name, env::consts::EXE_SUFFIX) ++ }; ++ link_or_copy(&self.gcc, self.td.path().join(name)).unwrap(); ++ self ++ } ++ ++ pub fn gcc(&self) -> cc::Build { ++ let mut cfg = cc::Build::new(); ++ let target = if self.msvc { ++ "x86_64-pc-windows-msvc" ++ } else { ++ "x86_64-unknown-linux-gnu" ++ }; ++ ++ cfg.target(target) ++ .host(target) ++ .opt_level(2) ++ .debug(false) ++ .out_dir(self.td.path()) ++ .__set_env("PATH", self.path()) ++ .__set_env("GCCTEST_OUT_DIR", self.td.path()); ++ if self.msvc { ++ cfg.compiler(self.td.path().join("cl")); ++ cfg.archiver(self.td.path().join("lib.exe")); ++ } ++ cfg ++ } ++ ++ fn path(&self) -> OsString { ++ let mut path = env::split_paths(&env::var_os("PATH").unwrap()).collect::>(); ++ path.insert(0, self.td.path().to_owned()); ++ env::join_paths(path).unwrap() ++ } ++ ++ pub fn cmd(&self, i: u32) -> Execution { ++ let mut s = String::new(); ++ File::open(self.td.path().join(format!("out{}", i))) ++ .unwrap() ++ .read_to_string(&mut s) ++ .unwrap(); ++ Execution { ++ args: s.lines().map(|s| s.to_string()).collect(), ++ } ++ } ++} ++ ++impl Execution { ++ pub fn must_have>(&self, p: P) -> &Execution { ++ if !self.has(p.as_ref()) { ++ panic!("didn't find {:?} in {:?}", p.as_ref(), self.args); ++ } else { ++ self ++ } ++ } ++ ++ pub fn must_not_have>(&self, p: P) -> &Execution { ++ if self.has(p.as_ref()) { ++ panic!("found {:?}", p.as_ref()); ++ } else { ++ self ++ } ++ } ++ ++ pub fn has(&self, p: &OsStr) -> bool { ++ self.args.iter().any(|arg| OsStr::new(arg) == p) ++ } ++ ++ pub fn must_have_in_order(&self, before: &str, after: &str) -> &Execution { ++ let before_position = self ++ .args ++ .iter() ++ .rposition(|x| OsStr::new(x) == OsStr::new(before)); ++ let after_position = self ++ .args ++ .iter() ++ .rposition(|x| OsStr::new(x) == OsStr::new(after)); ++ match (before_position, after_position) { ++ (Some(b), Some(a)) if b < a => {} ++ (b, a) => panic!( ++ "{:?} (last position: {:?}) did not appear before {:?} (last position: {:?})", ++ before, b, after, a ++ ), ++ }; ++ self ++ } ++} ++ ++/// Hard link an executable or copy it if that fails. ++/// ++/// We first try to hard link an executable to save space. If that fails (as on Windows with ++/// different mount points, issue #60), we copy. ++#[cfg(not(target_os = "macos"))] ++fn link_or_copy, Q: AsRef>(from: P, to: Q) -> io::Result<()> { ++ let from = from.as_ref(); ++ let to = to.as_ref(); ++ fs::hard_link(from, to).or_else(|_| fs::copy(from, to).map(|_| ())) ++} ++ ++/// Copy an executable. ++/// ++/// On macOS, hard linking the executable leads to strange failures (issue #419), so we just copy. ++#[cfg(target_os = "macos")] ++fn link_or_copy, Q: AsRef>(from: P, to: Q) -> io::Result<()> { ++ fs::copy(from, to).map(|_| ()) ++} +diff --git a/vendor/cc-1.0.79/tests/test.rs b/vendor/cc-1.0.79/tests/test.rs +new file mode 100644 +index 000000000..161abd8ab +--- /dev/null ++++ b/vendor/cc-1.0.79/tests/test.rs +@@ -0,0 +1,461 @@ ++use crate::support::Test; ++ ++mod support; ++ ++// Some tests check that a flag is *not* present. These tests might fail if the flag is set in the ++// CFLAGS or CXXFLAGS environment variables. This function clears the CFLAGS and CXXFLAGS ++// variables to make sure that the tests can run correctly. ++fn reset_env() { ++ std::env::set_var("CFLAGS", ""); ++ std::env::set_var("CXXFLAGS", ""); ++} ++ ++#[test] ++fn gnu_smoke() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc().file("foo.c").compile("foo"); ++ ++ test.cmd(0) ++ .must_have("-O2") ++ .must_have("foo.c") ++ .must_not_have("-gdwarf-4") ++ .must_have("-c") ++ .must_have("-ffunction-sections") ++ .must_have("-fdata-sections"); ++ test.cmd(1).must_have(test.td.path().join("foo.o")); ++} ++ ++#[test] ++fn gnu_opt_level_1() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc().opt_level(1).file("foo.c").compile("foo"); ++ ++ test.cmd(0).must_have("-O1").must_not_have("-O2"); ++} ++ ++#[test] ++fn gnu_opt_level_s() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc().opt_level_str("s").file("foo.c").compile("foo"); ++ ++ test.cmd(0) ++ .must_have("-Os") ++ .must_not_have("-O1") ++ .must_not_have("-O2") ++ .must_not_have("-O3") ++ .must_not_have("-Oz"); ++} ++ ++#[test] ++fn gnu_debug() { ++ let test = Test::gnu(); ++ test.gcc().debug(true).file("foo.c").compile("foo"); ++ test.cmd(0).must_have("-gdwarf-4"); ++ ++ let test = Test::gnu(); ++ test.gcc() ++ .target("x86_64-apple-darwin") ++ .debug(true) ++ .file("foo.c") ++ .compile("foo"); ++ test.cmd(0).must_have("-gdwarf-2"); ++} ++ ++#[test] ++fn gnu_debug_fp_auto() { ++ let test = Test::gnu(); ++ test.gcc().debug(true).file("foo.c").compile("foo"); ++ test.cmd(0).must_have("-gdwarf-4"); ++ test.cmd(0).must_have("-fno-omit-frame-pointer"); ++} ++ ++#[test] ++fn gnu_debug_fp() { ++ let test = Test::gnu(); ++ test.gcc().debug(true).file("foo.c").compile("foo"); ++ test.cmd(0).must_have("-gdwarf-4"); ++ test.cmd(0).must_have("-fno-omit-frame-pointer"); ++} ++ ++#[test] ++fn gnu_debug_nofp() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc() ++ .debug(true) ++ .force_frame_pointer(false) ++ .file("foo.c") ++ .compile("foo"); ++ test.cmd(0).must_have("-gdwarf-4"); ++ test.cmd(0).must_not_have("-fno-omit-frame-pointer"); ++ ++ let test = Test::gnu(); ++ test.gcc() ++ .force_frame_pointer(false) ++ .debug(true) ++ .file("foo.c") ++ .compile("foo"); ++ test.cmd(0).must_have("-gdwarf-4"); ++ test.cmd(0).must_not_have("-fno-omit-frame-pointer"); ++} ++ ++#[test] ++fn gnu_warnings_into_errors() { ++ let test = Test::gnu(); ++ test.gcc() ++ .warnings_into_errors(true) ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-Werror"); ++} ++ ++#[test] ++fn gnu_warnings() { ++ let test = Test::gnu(); ++ test.gcc() ++ .warnings(true) ++ .flag("-Wno-missing-field-initializers") ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-Wall").must_have("-Wextra"); ++} ++ ++#[test] ++fn gnu_extra_warnings0() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc() ++ .warnings(true) ++ .extra_warnings(false) ++ .flag("-Wno-missing-field-initializers") ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-Wall").must_not_have("-Wextra"); ++} ++ ++#[test] ++fn gnu_extra_warnings1() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc() ++ .warnings(false) ++ .extra_warnings(true) ++ .flag("-Wno-missing-field-initializers") ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_not_have("-Wall").must_have("-Wextra"); ++} ++ ++#[test] ++fn gnu_warnings_overridable() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc() ++ .warnings(true) ++ .flag("-Wno-missing-field-initializers") ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0) ++ .must_have_in_order("-Wall", "-Wno-missing-field-initializers"); ++} ++ ++#[test] ++fn gnu_x86_64() { ++ for vendor in &["unknown-linux-gnu", "apple-darwin"] { ++ let target = format!("x86_64-{}", vendor); ++ let test = Test::gnu(); ++ test.gcc() ++ .target(&target) ++ .host(&target) ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-fPIC").must_have("-m64"); ++ } ++} ++ ++#[test] ++fn gnu_x86_64_no_pic() { ++ reset_env(); ++ ++ for vendor in &["unknown-linux-gnu", "apple-darwin"] { ++ let target = format!("x86_64-{}", vendor); ++ let test = Test::gnu(); ++ test.gcc() ++ .pic(false) ++ .target(&target) ++ .host(&target) ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_not_have("-fPIC"); ++ } ++} ++ ++#[test] ++fn gnu_i686() { ++ for vendor in &["unknown-linux-gnu", "apple-darwin"] { ++ let target = format!("i686-{}", vendor); ++ let test = Test::gnu(); ++ test.gcc() ++ .target(&target) ++ .host(&target) ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-m32"); ++ } ++} ++ ++#[test] ++fn gnu_i686_pic() { ++ for vendor in &["unknown-linux-gnu", "apple-darwin"] { ++ let target = format!("i686-{}", vendor); ++ let test = Test::gnu(); ++ test.gcc() ++ .pic(true) ++ .target(&target) ++ .host(&target) ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-fPIC"); ++ } ++} ++ ++#[test] ++fn gnu_x86_64_no_plt() { ++ let target = "x86_64-unknown-linux-gnu"; ++ let test = Test::gnu(); ++ test.gcc() ++ .pic(true) ++ .use_plt(false) ++ .target(&target) ++ .host(&target) ++ .file("foo.c") ++ .compile("foo"); ++ test.cmd(0).must_have("-fno-plt"); ++} ++ ++#[test] ++fn gnu_set_stdlib() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc() ++ .cpp_set_stdlib(Some("foo")) ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_not_have("-stdlib=foo"); ++} ++ ++#[test] ++fn gnu_include() { ++ let test = Test::gnu(); ++ test.gcc().include("foo/bar").file("foo.c").compile("foo"); ++ ++ test.cmd(0).must_have("-I").must_have("foo/bar"); ++} ++ ++#[test] ++fn gnu_define() { ++ let test = Test::gnu(); ++ test.gcc() ++ .define("FOO", "bar") ++ .define("BAR", None) ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-DFOO=bar").must_have("-DBAR"); ++} ++ ++#[test] ++fn gnu_compile_assembly() { ++ let test = Test::gnu(); ++ test.gcc().file("foo.S").compile("foo"); ++ test.cmd(0).must_have("foo.S"); ++} ++ ++#[test] ++fn gnu_shared() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc() ++ .file("foo.c") ++ .shared_flag(true) ++ .static_flag(false) ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-shared").must_not_have("-static"); ++} ++ ++#[test] ++fn gnu_flag_if_supported() { ++ reset_env(); ++ ++ if cfg!(windows) { ++ return; ++ } ++ let test = Test::gnu(); ++ test.gcc() ++ .file("foo.c") ++ .flag("-v") ++ .flag_if_supported("-Wall") ++ .flag_if_supported("-Wflag-does-not-exist") ++ .flag_if_supported("-std=c++11") ++ .compile("foo"); ++ ++ test.cmd(0) ++ .must_have("-v") ++ .must_have("-Wall") ++ .must_not_have("-Wflag-does-not-exist") ++ .must_not_have("-std=c++11"); ++} ++ ++#[test] ++fn gnu_flag_if_supported_cpp() { ++ if cfg!(windows) { ++ return; ++ } ++ let test = Test::gnu(); ++ test.gcc() ++ .cpp(true) ++ .file("foo.cpp") ++ .flag_if_supported("-std=c++11") ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-std=c++11"); ++} ++ ++#[test] ++fn gnu_static() { ++ reset_env(); ++ ++ let test = Test::gnu(); ++ test.gcc() ++ .file("foo.c") ++ .shared_flag(false) ++ .static_flag(true) ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-static").must_not_have("-shared"); ++} ++ ++#[test] ++fn gnu_no_dash_dash() { ++ let test = Test::gnu(); ++ test.gcc().file("foo.c").compile("foo"); ++ ++ test.cmd(0).must_not_have("--"); ++} ++ ++#[test] ++fn msvc_smoke() { ++ reset_env(); ++ ++ let test = Test::msvc(); ++ test.gcc().file("foo.c").compile("foo"); ++ ++ test.cmd(0) ++ .must_have("-O2") ++ .must_have("foo.c") ++ .must_not_have("-Z7") ++ .must_have("-c") ++ .must_have("-MD"); ++ test.cmd(1).must_have(test.td.path().join("foo.o")); ++} ++ ++#[test] ++fn msvc_opt_level_0() { ++ reset_env(); ++ ++ let test = Test::msvc(); ++ test.gcc().opt_level(0).file("foo.c").compile("foo"); ++ ++ test.cmd(0).must_not_have("-O2"); ++} ++ ++#[test] ++fn msvc_debug() { ++ let test = Test::msvc(); ++ test.gcc().debug(true).file("foo.c").compile("foo"); ++ test.cmd(0).must_have("-Z7"); ++} ++ ++#[test] ++fn msvc_include() { ++ let test = Test::msvc(); ++ test.gcc().include("foo/bar").file("foo.c").compile("foo"); ++ ++ test.cmd(0).must_have("-I").must_have("foo/bar"); ++} ++ ++#[test] ++fn msvc_define() { ++ let test = Test::msvc(); ++ test.gcc() ++ .define("FOO", "bar") ++ .define("BAR", None) ++ .file("foo.c") ++ .compile("foo"); ++ ++ test.cmd(0).must_have("-DFOO=bar").must_have("-DBAR"); ++} ++ ++#[test] ++fn msvc_static_crt() { ++ let test = Test::msvc(); ++ test.gcc().static_crt(true).file("foo.c").compile("foo"); ++ ++ test.cmd(0).must_have("-MT"); ++} ++ ++#[test] ++fn msvc_no_static_crt() { ++ let test = Test::msvc(); ++ test.gcc().static_crt(false).file("foo.c").compile("foo"); ++ ++ test.cmd(0).must_have("-MD"); ++} ++ ++#[test] ++fn msvc_no_dash_dash() { ++ let test = Test::msvc(); ++ test.gcc().file("foo.c").compile("foo"); ++ ++ test.cmd(0).must_not_have("--"); ++} ++ ++// Disable this test with the parallel feature because the execution ++// order is not deterministic. ++#[cfg(not(feature = "parallel"))] ++#[test] ++fn asm_flags() { ++ let test = Test::gnu(); ++ test.gcc() ++ .file("foo.c") ++ .file("x86_64.asm") ++ .file("x86_64.S") ++ .asm_flag("--abc") ++ .compile("foo"); ++ test.cmd(0).must_not_have("--abc"); ++ test.cmd(1).must_have("--abc"); ++ test.cmd(2).must_have("--abc"); ++} +-- +2.41.0 + diff --git a/0004-vendor-openssl-src-111.25.3-1.1.1t.patch b/0004-vendor-openssl-src-111.25.3-1.1.1t.patch new file mode 100644 index 0000000..5509b87 --- /dev/null +++ b/0004-vendor-openssl-src-111.25.3-1.1.1t.patch @@ -0,0 +1,4522 @@ +From 6764f520f39e127b1bafc3f0679e7c031697cca6 Mon Sep 17 00:00:00 2001 +From: hev +Date: Tue, 8 Aug 2023 15:30:03 +0800 +Subject: [PATCH 4/6] vendor: openssl-src-111.25.3+1.1.1t + +--- + Cargo.lock | 4 +- + vendor/openssl-src/.cargo-checksum.json | 2 +- + vendor/openssl-src/Cargo.toml | 5 +- + vendor/openssl-src/openssl/CHANGES | 120 ++++ + .../openssl/Configurations/10-main.conf | 9 +- + vendor/openssl-src/openssl/Configure | 18 +- + vendor/openssl-src/openssl/NEWS | 17 + + vendor/openssl-src/openssl/README | 2 +- + vendor/openssl-src/openssl/apps/apps.c | 15 +- + vendor/openssl-src/openssl/apps/apps.h | 11 +- + vendor/openssl-src/openssl/apps/ca.c | 8 +- + vendor/openssl-src/openssl/apps/ocsp.c | 4 +- + vendor/openssl-src/openssl/apps/s_cb.c | 28 +- + vendor/openssl-src/openssl/apps/x509.c | 16 +- + .../openssl/crypto/aes/asm/aesv8-armx.pl | 64 +- + .../openssl/crypto/asn1/asn_mime.c | 6 +- + .../openssl/crypto/asn1/bio_asn1.c | 4 +- + .../openssl/crypto/asn1/bio_ndef.c | 41 +- + .../openssl/crypto/asn1/charmap.pl | 9 +- + .../openssl-src/openssl/crypto/bio/b_print.c | 22 +- + .../openssl-src/openssl/crypto/bn/bn_blind.c | 16 +- + vendor/openssl-src/openssl/crypto/bn/bn_err.c | 4 +- + vendor/openssl-src/openssl/crypto/bn/bn_exp.c | 36 +- + .../openssl-src/openssl/crypto/bn/bn_local.h | 36 +- + .../openssl-src/openssl/crypto/bn/bn_mont.c | 4 +- + .../openssl-src/openssl/crypto/bn/bn_nist.c | 35 +- + .../openssl-src/openssl/crypto/bn/bn_prime.pl | 9 +- + .../openssl-src/openssl/crypto/bn/build.info | 3 +- + .../openssl/crypto/bn/rsa_sup_mul.c | 614 ++++++++++++++++++ + .../openssl-src/openssl/crypto/cms/cms_enc.c | 5 + + .../openssl-src/openssl/crypto/cms/cms_err.c | 2 + + .../openssl/crypto/conf/keysets.pl | 10 +- + vendor/openssl-src/openssl/crypto/ec/ec_key.c | 10 + + .../openssl/crypto/err/openssl.txt | 5 +- + .../openssl-src/openssl/crypto/evp/bio_enc.c | 9 +- + .../openssl/crypto/objects/obj_dat.pl | 11 +- + .../openssl/crypto/objects/objects.pl | 13 +- + .../openssl/crypto/objects/objxref.pl | 13 +- + .../openssl-src/openssl/crypto/pem/pem_lib.c | 10 +- + .../openssl/crypto/rand/drbg_lib.c | 20 +- + .../openssl/crypto/rand/rand_lib.c | 8 +- + .../openssl/crypto/rand/rand_vms.c | 90 ++- + .../openssl/crypto/rand/rand_win.c | 6 +- + .../openssl/crypto/rsa/rsa_ameth.c | 1 + + .../openssl-src/openssl/crypto/rsa/rsa_ossl.c | 19 +- + .../openssl/crypto/txt_db/txt_db.c | 4 +- + .../openssl-src/openssl/crypto/x509/by_dir.c | 18 +- + .../openssl/crypto/x509/x509_req.c | 46 +- + .../openssl/crypto/x509/x509_vfy.c | 4 +- + .../openssl-src/openssl/crypto/x509/x_all.c | 11 +- + .../openssl-src/openssl/crypto/x509/x_name.c | 8 +- + .../openssl/crypto/x509v3/v3_addr.c | 17 +- + .../openssl/crypto/x509v3/v3_genn.c | 4 +- + .../openssl/crypto/x509v3/v3_lib.c | 6 +- + .../openssl/crypto/x509v3/v3_utl.c | 9 +- + vendor/openssl-src/openssl/doc/man1/x509.pod | 24 +- + .../openssl/doc/man3/CMS_add0_cert.pod | 32 +- + .../openssl/doc/man3/CMS_verify.pod | 83 +-- + .../openssl/doc/man3/EC_KEY_new.pod | 20 +- + .../openssl/doc/man3/EVP_EncryptInit.pod | 4 +- + .../openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod | 4 +- + .../openssl/doc/man3/OPENSSL_init_crypto.pod | 4 +- + .../openssl/doc/man3/PKCS7_sign.pod | 47 +- + .../doc/man3/PKCS7_sign_add_signer.pod | 55 +- + .../openssl/doc/man3/PKCS7_verify.pod | 104 +-- + .../openssl/doc/man3/X509_STORE_CTX_new.pod | 10 +- + .../openssl/engines/asm/e_padlock-x86.pl | 4 +- + .../openssl/engines/asm/e_padlock-x86_64.pl | 4 +- + .../openssl-src/openssl/include/crypto/bn.h | 7 +- + .../openssl/include/openssl/bnerr.h | 3 +- + .../openssl/include/openssl/cmserr.h | 1 + + .../openssl/include/openssl/opensslv.h | 4 +- + .../openssl/include/openssl/x509v3.h | 4 +- + vendor/openssl-src/openssl/ssl/packet.c | 8 +- + vendor/openssl-src/openssl/ssl/packet_local.h | 39 +- + .../openssl/ssl/record/rec_layer_s3.c | 33 +- + .../openssl/ssl/record/ssl3_buffer.c | 9 +- + vendor/openssl-src/openssl/ssl/ssl_ciph.c | 6 +- + vendor/openssl-src/openssl/ssl/ssl_lib.c | 24 +- + vendor/openssl-src/openssl/ssl/ssl_rsa.c | 83 ++- + .../openssl/ssl/statem/extensions_clnt.c | 5 +- + .../openssl/ssl/statem/extensions_srvr.c | 21 +- + vendor/openssl-src/openssl/ssl/tls13_enc.c | 3 +- + .../openssl/util/perl/OpenSSL/copyright.pm | 41 ++ + vendor/openssl-src/src/lib.rs | 44 +- + 85 files changed, 1768 insertions(+), 483 deletions(-) + create mode 100644 vendor/openssl-src/openssl/crypto/bn/rsa_sup_mul.c + create mode 100644 vendor/openssl-src/openssl/util/perl/OpenSSL/copyright.pm + +diff --git a/Cargo.lock b/Cargo.lock +index e0e8bed51..524d16235 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -2816,9 +2816,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + + [[package]] + name = "openssl-src" +-version = "111.22.0+1.1.1q" ++version = "111.25.3+1.1.1t" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853" ++checksum = "924757a6a226bf60da5f7dd0311a34d2b52283dd82ddeb103208ddc66362f80c" + dependencies = [ + "cc", + ] +diff --git a/vendor/openssl-src/.cargo-checksum.json b/vendor/openssl-src/.cargo-checksum.json +index 6092348e3..d99382b7c 100644 +--- a/vendor/openssl-src/.cargo-checksum.json ++++ b/vendor/openssl-src/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{"Cargo.toml":"10a582edd8fdacd30519b3907aa4709c9d4c32f7266611292dc913bfac379868","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"8fa9e96fb0dc9e278a03285b69784c2904de6fe5ccdb6fb70ba33791bf6bdb5e","ci/docker/aarch64-linux-android/Dockerfile":"b6321433a0886f2e6d9c489fd042137b4da9ce4012d49bea108e9c4fa9064b3e","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"c908701526553756579599caf68f86dfe1f7725ad846cee895eb887a569a7035","ci/docker/arm-linux-androideabi/Dockerfile":"10be394a6196a7904fc04e5b6fac6affd67564897476f9a8c3f4baf827a099b1","ci/docker/arm-unknown-linux-gnueabi/Dockerfile":"ecfe5fef865611dc68bcbbfcb89bdf09dd87599985954f05fd2fff772b816e51","ci/docker/asmjs-unknown-emscripten/Dockerfile":"621d535e7705e1d9d3db5c7d68f7e86fddb849f408efd5a46dd21c1bf3e68f75","ci/docker/i686-linux-android/Dockerfile":"e3aa316c6af0a4559803518cef6bd2c1d90677f9d5d964140266f58369535165","ci/docker/i686-unknown-linux-gnu/Dockerfile":"4e79d9cd661a89b9bba7c2a0cafc51e48fe6ca48da421fa10aeacf600d739d54","ci/docker/x86_64-linux-android/Dockerfile":"bdcaea60bd2151441064a5ace526975aa361d80016e736f9e068d7b479cba9ce","ci/docker/x86_64-pc-windows-gnu/Dockerfile":"54dd42ea91e2adcd98d534abac81c42a0ec7ac40ef1d9d7fb86e33c93bdca23a","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"deaceeb36695cabb94d4078b7008847d68c257f7cb789b634e1c879c557866c4","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"f2d5a414b194a0b2fcf622781c666065a1112296896b82e0f268191d18cb1ab4","ci/run-docker.sh":"d25dbe04ee974cf8a3aad9bc0647e5e152854f8a4af66f59187c63c70795d01a","ci/run.sh":"5e8b2c947650c9dff40cb2fa212c833a9c2e86e760c100d9c60c899372c8b022","openssl/ACKNOWLEDGEMENTS":"e1118418fb157664605bcafd07c25befa2ebe52d001a16f63e2f487c8db79d02","openssl/AUTHORS":"698c66ee18f50ee7daf36e9a4566f9fecbaea4a5c6de94a42f66eb489adc83d8","openssl/CHANGES":"2b26c63cbb8a4e760d9ca7a00974cab1e03d05bf15617976919b157ac75f0249","openssl/CONTRIBUTING":"1fa1178c49210ec027657c8363b5c807e2bc6b40e136b462a6c21ceb45fc43af","openssl/Configurations/00-base-templates.conf":"8a59b4d78963965f01d3abfae92aa76a375515e9115033f2457088e1472b4fed","openssl/Configurations/10-main.conf":"b3c59089fa4151eb978a55f17e2adff6ceb752d579b64962336b49cefe41776b","openssl/Configurations/15-android.conf":"aa261a39414c1e9884e7e81962642310e57a556511696e42eb0cbe02374fafb0","openssl/Configurations/15-ios.conf":"26ad7be0c3826195eddf9c19d3d385fa3dfd90869bb3f46fd452cddefd324ad7","openssl/Configurations/50-djgpp.conf":"a1ce6facf2a76952f9924a2c0e671b750d6822f1b43cf9ddc0f4859eb3fd3435","openssl/Configurations/50-haiku.conf":"a91ffac31fa2fbac0c4ac04cea16d48c5c34129e94bd008eacf2e3ddde3dbe96","openssl/Configurations/50-masm.conf":"45e544fc21dc1ef1945beb8090251f1827ee5a6cad56e4c23d6fd4721205314c","openssl/Configurations/50-win-onecore.conf":"2e2f626d9d60beb243f2cb7aa62161d1cb830aae58cf8e50dccc6ed5efe4008b","openssl/Configurations/90-team.norelease.conf":"c2be1594850a887b2f4d4578c66ce4aaf20ea36ba702b32b2a0a09dee301137e","openssl/Configurations/INTERNALS.Configure":"3d54a61916deb1f715d24df0e10184d6f1ad557bc7addae9e8747e33ae7fa58d","openssl/Configurations/README":"0f61201ab182fc25b22c29cd8322bcb3627c0c15bc2ab009b4456ced19d72ea0","openssl/Configurations/README.design":"74dbfdf425cc4306bc450bbdb8db0143d944627e8044517de1ab5d5e618ae123","openssl/Configurations/common.tmpl":"efb432110f945075caa4dbc8471f903d333a303348bf4b8bf8072fc17208ec23","openssl/Configurations/common0.tmpl":"aa5afd98d4cad920099be90dd991884c21b3f4598bffd2e22c8552872cc5fc88","openssl/Configurations/descrip.mms.tmpl":"ac8534b9b44abecb7c413682c90bdcf2fa8cafc0577634bbb7beecd83f0dbf78","openssl/Configurations/shared-info.pl":"8c9d8a35b536650aec08e192cebddd077dd93f1a2ba8e8e39173649991381b92","openssl/Configurations/unix-Makefile.tmpl":"bd8641183cab699da64ea22d5d41025499ca9c8a69dc4d9da73446e36004ab46","openssl/Configurations/unix-checker.pm":"86716919b8ed8989dbec32b425161ef9950b809c3fe019e426051885e1489776","openssl/Configurations/windows-checker.pm":"59edc790aa4120df7c2aa3214e1f51b0a044190614ba653df2255be286359366","openssl/Configurations/windows-makefile.tmpl":"eedf0a0c8c4f83744f0f73d302f0972e4610ab106338cb3ec4a4c427dd62c394","openssl/Configure":"f0c2aa390e353e572106d9c84ea9ef985abd114baa388b2bbdd6337e7e009c45","openssl/FAQ":"0dcd26c83d90badb57e21b7c8659e2c3919b82c8dcfa058d70f86fa926089c2f","openssl/INSTALL":"dceae9bed597d526a126f95507263563800777f6a1ce218cd0d1b5aaeed8a6d0","openssl/LICENSE":"c32913b33252e71190af2066f08115c69bc9fddadf3bf29296e20c835389841c","openssl/NEWS":"aa8263f3f9af49f10c671cd40347d4ace9893fb6994e327a1ba6a8085eb5cb64","openssl/NOTES.ANDROID":"7b6ea508f8ed8a9acf9b7f2097ed11d98d8f9a162a01ebb0025177441f117bc4","openssl/NOTES.DJGPP":"681eb2565ba66d185f0d7b23538acebacf959d8c23113f3729f567773c4d04e8","openssl/NOTES.PERL":"d191543a4f97ab7df62f25e75138802bf85a31e082d64773da3a50188c493ec7","openssl/NOTES.UNIX":"e1d727530000565d3cd37da881a984b565c67cc9e39a908e77e83532d9a21d9c","openssl/NOTES.VMS":"4b21ff74ab5ed75750657024c8159777e9f64e193b563d07ab9562ba14920edc","openssl/NOTES.WIN":"d63cc8b622130bc05eb6b7dfc0688e70c90da1bb15bd6504081e113a9446fa6f","openssl/README":"c66c7be9de529f329e5ca3bb751a01dffa65dbcbd3375b4e76f5db2498bc3c25","openssl/README.ENGINE":"666adc424b9c8429d49496dd6fd45878c91b56347e139b77978fb60253415547","openssl/README.FIPS":"21d77b48ddf9547ec20de4ee43414f040c08174eb65526bfe46ffe2d4165ea67","openssl/VMS/VMSify-conf.pl":"e7ba8104be58dceea15342d25ef0b3342baa7de9734b67f63f99823cf0f052c3","openssl/VMS/engine.opt":"9622da581af6dd9b906b7d0b0c92c48f50f22632383a08bb335103d0ab86cf2a","openssl/VMS/msg_install.com":"a5e52680fe34a8d8df9968f4270c01be265f768be4eccc3d8086f2e56bfa2cce","openssl/VMS/msg_staging.com":"6a58ac395b7d1bff16c2967b501cd41d296b9e355f2532a1518a8a242bd2a739","openssl/VMS/openssl_ivp.com.in":"fdfccaef699539dc9a772d86ff4457152e874ff0720fde689eff09a3b346b1b2","openssl/VMS/openssl_shutdown.com.in":"934c50cc721507b7fcae17835c0c57f82c55e1ea9914df55ca3e72904cdb64c8","openssl/VMS/openssl_startup.com.in":"d042019383229968fffbcf4e01c190278e7a2479b739d425fe9d770f2ad1312b","openssl/VMS/openssl_utils.com.in":"bf882d08efbe25f8ae46c6fe045a9c9d69790cb5443c8e14d812a8c834ed1e66","openssl/VMS/test-includes.com":"162c56165429a073fa397eda227eae83d575cfcf0b17b6ff7c4e0d900499fa1d","openssl/VMS/translatesyms.pl":"bf9dd82f9487d8b1350e2a330dd125712c2ee1d3390da1b2286fbda3eee5f68f","openssl/apps/CA.pl.in":"880374dbd8e2ad686d48673e8b4d319b2f6e0312d05aaa8018cc0e7862032284","openssl/apps/app_rand.c":"6e52d715808e3ee8d33be50afe2f4a7dcafeefa9754cd9735f722cc61c2c39f2","openssl/apps/apps.c":"751e2757e6412fc581a21052393a1305ab5585cc812bb4c9ed4489e024ab0fe0","openssl/apps/apps.h":"3b52233d7a7233aed678d0025815aaeecac0dc23e564a413f347cca13588664d","openssl/apps/asn1pars.c":"073ca2401664a7157844f6bf73aa85464d359e2134bd56e6b617f3fbcaa37381","openssl/apps/bf_prefix.c":"9ee399824e7f33eae606788ad777af357e307e4b241ea38b4e53dc2b7c8cb0c8","openssl/apps/build.info":"c6e41aa4d47403adc5f3c1382da77052a4e168f423523265be870cabf82cb825","openssl/apps/ca-cert.srl":"8460deb84917c63e1fdb019b02d4332ceaad0821edc248abb69a26fdaf2bb0d8","openssl/apps/ca-key.pem":"3490491a6a38d202a29ba250f717b8e3065eb1ee3e16d9e5e9171d3f8f2bf8b5","openssl/apps/ca-req.pem":"a1d0a69a7260d27a140a311a1f9a6e7364859a007f7a18bbd9681ccaa2c55121","openssl/apps/ca.c":"b801bcbebbb2d3ba26b3f0306ab261e7689ecf95215fc7320ca9aadd9de78d4d","openssl/apps/cert.pem":"a4c9b015f67947c38833fa9b2c0a07d4ee4136955ffa3a28a1e34be048f9b957","openssl/apps/ciphers.c":"c93fcabfc263fc75aad7480007febf3d15c0f792c8e4250983f9d365c8d17f28","openssl/apps/client.pem":"5517423efa9a5cd7ede4604399d1572f271260d2b7214ac4218f499387b18c99","openssl/apps/cms.c":"28bf084e6afdb4efdb5f0af4131b4ac4d207f820cdd5842d28ebb3e05578ad67","openssl/apps/crl.c":"9befa634297700f6001ad1c7eca0d63bb8b1dbfae7bb1ab72bfa53336192832c","openssl/apps/crl2p7.c":"5b0d811d112cd89dfcdf4576ae7b7fe4bd2d6cfab1dac98af25ccd5c32f2ad17","openssl/apps/ct_log_list.cnf":"f1c1803d13d1d0b755b13b23c28bd4e20e07baf9f2b744c9337ba5866aa0ec3b","openssl/apps/demoSRP/srp_verifier.txt":"90eeadfb310fe0dc8e4bae1cc30b202a4ec098ff0dc8d0370a5fa37508ec581f","openssl/apps/demoSRP/srp_verifier.txt.attr":"f185cb1322492dbcb4c2e4dd179bd3c09958fd39287dad4308e2fbd3c569f669","openssl/apps/dgst.c":"607e6fe0e018f8bc40d99ab1e9c9ccc7bf44d91812e16900ca1e7ff4fda8b3a0","openssl/apps/dh1024.pem":"e819c122a1c2834f9f9583b84d40e658bac62c7618560582532a3967e0ee70ea","openssl/apps/dh2048.pem":"accf8e94315c6045756bbbb3d7505993ed9410b93c071fd1f238798f2ad8e10b","openssl/apps/dh4096.pem":"d50f4c0d4339585076895105fe66219cc16d2fb3c8486c4a4b65d954a00412e0","openssl/apps/dhparam.c":"36291335870f26519025cda1c8dbb2fcbb64c35d8a5c0b78d1be16d22e7a0fae","openssl/apps/dsa-ca.pem":"840ab42f5a6754f9ddd6df488410a689e6c10ed37059a9f3ea2f7199458aab15","openssl/apps/dsa-pca.pem":"6551544012b1e3c4c58f0b64200b75f03b2a39eb69681872f41e6793b0d524be","openssl/apps/dsa.c":"e9a10e820f46b35e6d44a5001de482b5a4b7bc64f5c7a47e9e86a0073170ffa3","openssl/apps/dsa1024.pem":"cd2bd5801e45e07d0df2e28d15fc30f13ad473ebd614abcf0bb81f6e508b26bf","openssl/apps/dsa512.pem":"b2abd5916a1a7206e5daff2b73e5faf884c6ec5e53393c08e555887c8ab6f4f2","openssl/apps/dsap.pem":"6cd4f9c195a56c4cd0d801050b4fd2404a72a98d0ed1f5b18cb17ec167cc4f84","openssl/apps/dsaparam.c":"ee7664f99f0ae89302efa47ba098e3254bf2f369c019c31286a6e571a9f470e2","openssl/apps/ec.c":"7fedf07458619ea8d48d203999ee145d5d8a9ce0fa5a490c89d7b3092dfc3e89","openssl/apps/ecparam.c":"f8b3c5c1e461077330e7f5f08973e7fe6a84442dc8c2cd1c67ecd54940e2fbb2","openssl/apps/enc.c":"3bcad7e671df042c2a32de212aed1a29179738bd11cbfd706be6ddc580057500","openssl/apps/engine.c":"445f3491a326e49dfb908fa661cdae908fe950875585947c8b485065d7192fd2","openssl/apps/errstr.c":"53188956eda5015bfedae11762c22857ed781e7ad535472e762d564884de9a69","openssl/apps/gendsa.c":"2b06541a2770ce29ea524741cce83f907bdd4dd6421a2a537ab8937186b374ce","openssl/apps/genpkey.c":"4ec4c0b42debd510133cfdb3f558289c56d58318686b727dfceff2028b1e9f3d","openssl/apps/genrsa.c":"4e083685f5e9bcae19042f8c2d5e597a59b2908090792a95011669c2c69e16d2","openssl/apps/nseq.c":"9340adf4468cdee2ec2c7b32a5bce64291ef675c3e2d34907f8e511af612d04e","openssl/apps/ocsp.c":"f245736d1e959337b1fb87fe475200f1c32360f3df50f35c21bcce981e3d2e46","openssl/apps/openssl-vms.cnf":"a280743343019485f6d9dddbc7e341b5d7a7ecc51f8d97c0842c795b7ef3204d","openssl/apps/openssl.c":"138db506da3374a28608cbd2b4d4c378f613757063f407d2abebdec0ee2f62ea","openssl/apps/openssl.cnf":"f10ba64917b4458fafc1e078c2eb9e6a7602e68fc98c2e9e6df5e1636ae27d6b","openssl/apps/opt.c":"d16922f4d94d39726eafa62ace1a67ee7f10c6d4a7b47e3b872779e25c6fa090","openssl/apps/passwd.c":"733371637089ffe8694e8df92175303146e9cac5f3e17ab0913585b0d102bee8","openssl/apps/pca-cert.srl":"8460deb84917c63e1fdb019b02d4332ceaad0821edc248abb69a26fdaf2bb0d8","openssl/apps/pca-key.pem":"6eba0a092a01ee003a4bf101491de540e4ee03b94075578a67084292581f0430","openssl/apps/pca-req.pem":"f043270a1483e035369e9aa6e7c3ee570f75e443b3a18a0198aed6c5b1f7b0bc","openssl/apps/pkcs12.c":"9f157db41a676ba5393739d3eb89d2e4678ef69c50b6fd541a8522552dfad7c8","openssl/apps/pkcs7.c":"dd8b6b134c82564796d819845abbbb52ee1cbc9b8545e1adc1b49fe8f38b4e98","openssl/apps/pkcs8.c":"856e5911266e6d6c733ccc650400249c3c2b2a684f85aa2375e3c4a7a794d3d0","openssl/apps/pkey.c":"667cb21e1cd7ab16c259b69872c04d694ec442aa74f3c6affa2342dfa4ba67c7","openssl/apps/pkeyparam.c":"01dc6f1fda2af529b7b94acdbe982a5b66586de37b2968e2b569afbbb2f10ca7","openssl/apps/pkeyutl.c":"83771b82d508a341fa34ce67756ffcb1dfd8dffd384c01a4370474f725c59150","openssl/apps/prime.c":"f78a49e29cd624bb4b3e822e7fa904315779b5210ea22317fba2dec552b7b86b","openssl/apps/privkey.pem":"64795d8b4aac68c76ba833da4cfb54e739b7a90161ab3866d441ae0205da6fa9","openssl/apps/progs.pl":"031f57b38fe763c34bd35844d1655e10fb4b0a0a9ee629d2471adf041aaa2b71","openssl/apps/rand.c":"a5789f9f5a69fa1e4e8824c5aa7fc776f1e30b0e581ec371536096fbd9e0fd84","openssl/apps/rehash.c":"54f03091b739cf4a33b6692c442171c7d6a30ec6fc245d7175c9ebd81b508732","openssl/apps/req.c":"487a8015a6230dda2b4cf774365bf27c83109a960425365e6b9aa614ab2dff08","openssl/apps/req.pem":"7e5054bc53334b6723ae688236f94aca50b8a8b87eae44bffb04aa3f971a4d4b","openssl/apps/rsa.c":"8c13dac2a4b2073c63924099695aa0c57cebddf0bd50e4ea4a7d210c61c2f02e","openssl/apps/rsa8192.pem":"24f69b9f93919a7cc85159762f269b3b3a7e807dec24ebf90ccf166e1d63fe6b","openssl/apps/rsautl.c":"c3689f04ed09e06baa5d83a740211479bb2b40f189a81b81f827146ec5385c9d","openssl/apps/s1024key.pem":"dd647f2b3d59c7450bd0693d215355ce93919b0462f4f57c35e4ce292e671a61","openssl/apps/s1024req.pem":"b6475a60576911f5dc510e2dd4aa63e6de82827dd74baf95dbc547a499a8328a","openssl/apps/s512-key.pem":"eabd97ef4ae742dc493633e69d55c477561662ca63a9d914da1cce76d70f562a","openssl/apps/s512-req.pem":"492a3d866747d7495b8966d28641d327116f1f84e965177c213bbf9add182163","openssl/apps/s_apps.h":"f3d2232dcebb504861a59335c1c657ea4a5273b03a68a13ae20e561046ce8c85","openssl/apps/s_cb.c":"4a27cd4ac7f0a8b80f7f437f2059e1611fab762cbbec194be0a6e06b366eb0be","openssl/apps/s_client.c":"1a8e778ef38088b7b2129f99a616af6f0261a91b0a530813a193f7522dd730f3","openssl/apps/s_server.c":"8db7015b975c6a40d8f8aa55d58831f9d72e98da3c35a6fbb11567c38ecff633","openssl/apps/s_socket.c":"50215c9171861d7ac44d1134f48875011472c8c7b45617055e0839006346ae79","openssl/apps/s_time.c":"b97a09c3aabdfe956b629e340786893947f6edda9f62a3aa6d01696b71df822d","openssl/apps/server.pem":"ffdc8d77eb82b815de5235d93d1b733bf7a6934a8276862cd3b0d842b7dcc53d","openssl/apps/server.srl":"43fd56f56bb9bb18bc9c33966325732b2d7e58bfe2504a2c5c164b071c1b8653","openssl/apps/server2.pem":"315a1d925c484b57b5f6b154318c241f49803a627d5dd97a1add7eb5759a16fd","openssl/apps/sess_id.c":"e83c514dce778a4a0571a3aa4be4092332555d18e67bf4886b1214217e017d27","openssl/apps/smime.c":"54d4d7fcea506c7851d4fb490b2159de50fa20a53fd5ec7076102198dcb6dbe6","openssl/apps/speed.c":"1b5e280cb7c0f4b84f68e90854d3b81ca56ac5457acb5d361242d874e4cb0d84","openssl/apps/spkac.c":"76800611dc1e50ae3df5cbcab236a7fd13fddaaec8aa1b8afe58baa519a8e603","openssl/apps/srp.c":"e0c02d90859698a4dec9db38604bf028256a5a25eff8bb9878f447bb6feb8b03","openssl/apps/storeutl.c":"87e65d12dfeaac45a122234d6f692995acbd327ec6df63afe16b9cd0179c6f60","openssl/apps/testCA.pem":"e75c583a194e000b9cae10e3f4224cf305c8be9ba057e3c86192ac008f57fad3","openssl/apps/testdsa.h":"67ec5ef1f45a7e41083ed72548336608893656c379ff01e0b4f42565022c2bf3","openssl/apps/testrsa.h":"bd13d6a56f990a4515241402dc0c9720d47a42b737d4041bdd042a4bc86d2544","openssl/apps/timeouts.h":"33d3a52e11dbe263072a7646cd75fac70252e32dcb997384c9ca1b7b5fb171da","openssl/apps/ts.c":"16b807fd495b19b69ce2da8abef1e8fda99362555db14a2d077801c866dd4c4d","openssl/apps/tsget.in":"8a3fa8dd19db4e6d13fad28438206d765b72fc804201f61e081abd1963792970","openssl/apps/verify.c":"b9eb9429828fc89fe0b3603ee709b6d09d5846c0258bc2eccb5b814ba6e079ec","openssl/apps/version.c":"ac399bc15e845495698e66c9cac09f5ca8f282d82cebffa59fdd9517380a50b0","openssl/apps/vms_decc_argv.c":"188d986cbc8fff8009a113d654465c84fb3631ab4603fb843cc9fc92226db9a5","openssl/apps/vms_decc_init.c":"a997202e7a217e3748afa9a00eaeafc07b7739026fb2787c4775994472ab9ead","openssl/apps/vms_term_sock.c":"bfd258937ee18b21ecb57b3bcd88f18458c3e5960f83854b2a448e96c97084d0","openssl/apps/vms_term_sock.h":"ce3ad480013244ed87fba126098fb730ee807965b97c7b592936e4005c2fd699","openssl/apps/win32_init.c":"f2494d72e25318eae3d57523e3aeace7458187349f92e8287be39ac5fca2b6db","openssl/apps/x509.c":"ae62467a0c7399caa0855b9b6e5dd43a4a2c1922ba8f9c1ae8e485d004d2dc6d","openssl/appveyor.yml":"d71020aed505f851228ae8d5661d8587c17f3e8967e4d38612c8521da522cb7b","openssl/build.info":"1fafb451a7cfabd49372a2485f99acf6a5aefbf1872464a309c9bc79ee1afb31","openssl/config":"a044feed68cbadc64e995f3b2e6847b7a1a1c706b4522b9b23911dc9a313b4c7","openssl/config.com":"9070ebab2d5ebab6428a46673195e6bb9f043b0e9b394f71588c1ad17c9632b7","openssl/crypto/LPdir_nyi.c":"f638ff3001e5dc7ddbb230c288d47737e2d9f85226ea046a604a4259bad07cb0","openssl/crypto/LPdir_unix.c":"320356ac25a50f915697bd9cecab43fad7912420ab1551449422972c878aef7c","openssl/crypto/LPdir_vms.c":"adc0cd123d9c0ddba011876b4d5e0c3665a769cecccd1a5d6c5049ac8030fe93","openssl/crypto/LPdir_win.c":"63087d5abfbe1d49f5076f92ad2f5a5d58cd9f4af6cd21b29514c0326df367f4","openssl/crypto/LPdir_win32.c":"775d02591831f77ffee41beafd0388854e10742af0f27bb94ac2ab7a9597c51b","openssl/crypto/LPdir_wince.c":"2e6a13af735a9b7fb4dafebfce3cb4781b8bd0593b422b49639a756ac49e0a88","openssl/crypto/aes/aes_cbc.c":"34a4fe01fc7363e17a546ad762c0eacf9f3e2e54075f58a5e64a9a904f3a1c64","openssl/crypto/aes/aes_cfb.c":"53d9d10074bf4ac5463a288bb7278a7f8f21dc1143b7ee516afc3e217de20c1d","openssl/crypto/aes/aes_core.c":"30e5c42410e2cd816b35a5f823018ecb265a2da3c2bdd2aad1cdb226ea85a2c3","openssl/crypto/aes/aes_ecb.c":"d686330d81e81903043b0aae0bb5c42ded90c5d36930e93b7fafb1122b3a3a97","openssl/crypto/aes/aes_ige.c":"60ef606508f1e5cfb0bbf7829ea9a5122d6465f10511c0279bf378a3a821044f","openssl/crypto/aes/aes_local.h":"c03a0617d75a234e86f92c57548b630db2182c5ac5a1f42b8d2b7f654bba09c5","openssl/crypto/aes/aes_misc.c":"7662c30dbfa5d6944f0b346694d602a2a80c44ca3db7fd0ff1c0bb3ea3098e84","openssl/crypto/aes/aes_ofb.c":"67531b43a689fbfe5899b745d8f7016e254df0fafedee64af780b55c970274dd","openssl/crypto/aes/aes_wrap.c":"251791087036c02ed6e716dd4188b8b5937365c6c46a03fce55c92936446e9e7","openssl/crypto/aes/aes_x86core.c":"16127de408d69734af652c0fb3762d0a9a22aa0924caaad3e7720d9a4d5c016e","openssl/crypto/aes/asm/aes-armv4.pl":"2643bc76707494fba19c61da6718e595856833cf2e072302124b0dc5adb34760","openssl/crypto/aes/asm/aes-c64xplus.pl":"a9d46af40d5bf7fb09431bc61324dd61d8c502e0621c78118812f854a27dd9c1","openssl/crypto/aes/asm/aes-ia64.S":"3670f1c9503450b3d870b4b7a1f3d7fd09fa33faca0369f994b232b8a0331e81","openssl/crypto/aes/asm/aes-mips.pl":"281ee9e887ac017fe4ab300d062809770eb2c52e1d4a5d9c389c50eb895b8190","openssl/crypto/aes/asm/aes-parisc.pl":"f4cc48b0906233377375a3c839062823dcba4f6a42f319f99f51a1fc7ab10267","openssl/crypto/aes/asm/aes-ppc.pl":"e1f93284e66ab614689f080680fbe952865b862403c7c19c76cbfd3b422a8a3d","openssl/crypto/aes/asm/aes-s390x.pl":"f14c90947cb3f662ffde6c91190b3e28885d5a9bf78fa7e2102ee957e0b1501c","openssl/crypto/aes/asm/aes-sparcv9.pl":"854bee89601f5d1ea6e98cc67cc5f41b720ee025cb05888c6ae1d77fc9da3815","openssl/crypto/aes/asm/aesfx-sparcv9.pl":"b78394799c0e2b3f096394bdf4d3ea9f5678df0d06e0892456273f8d5c2c461a","openssl/crypto/aes/asm/aesni-mb-x86_64.pl":"5beb473ae072df0354243718780fa455621b2221e03fa9c921854a4d180577da","openssl/crypto/aes/asm/aesni-sha1-x86_64.pl":"fbda8b5f3b613f900269d372d91a490f01603dd6a32e417c9212560371002e8c","openssl/crypto/aes/asm/aesni-sha256-x86_64.pl":"f248cd0070544d1a3388247ccfc883b83d9bf6d58b40c5550f189e7223738aad","openssl/crypto/aes/asm/aesni-x86.pl":"d30c646002702a771e4da1d8f59acd779ca630fd4fe0f1318f8dc983b0121c70","openssl/crypto/aes/asm/aesni-x86_64.pl":"f9f949a48ae275aa455f90841406f684499475e960b87daecd9eb9a7a84c976b","openssl/crypto/aes/asm/aesp8-ppc.pl":"d33481726a7432f7e4a247e300b5a85ed5e6bc223fa2c9086c1efb2c25a29bcd","openssl/crypto/aes/asm/aest4-sparcv9.pl":"8030bae72b93e9e22812bef09fc3dc0ea95296a9c2bf0d34735ab5696850a982","openssl/crypto/aes/asm/aesv8-armx.pl":"3a3137a0a7130a61aefb5be06b3117100dd528232f8b70baba4a0dad1cf7e8c5","openssl/crypto/aes/asm/bsaes-armv7.pl":"a570a66cf4461ba6df4e6ca9f18f845455c1dd857518c489f15d05fac8b1cc9a","openssl/crypto/aes/asm/vpaes-armv8.pl":"6bc9a6daa838c106f5236911ad4a1de329f16312f2574ff52343a7ce36d24568","openssl/crypto/aes/asm/vpaes-ppc.pl":"590671c7967c261ab7f1055abe5dbfcce7c7897f42288aebe568d4d9c05dd17a","openssl/crypto/aes/asm/vpaes-x86.pl":"bfd3e7df0eb92c1d32225f1ccafc4cc917b352ba1ce7f5915924f36154aab241","openssl/crypto/aes/asm/vpaes-x86_64.pl":"aae1a01b2c793305227e6757dde739116c95c125bfeda6073ffb60c8aaae71b8","openssl/crypto/aes/build.info":"4fd9b60b8eba57c73ec8037325770b682151c84e5c8c74a8f9f87b27791c2fa8","openssl/crypto/alphacpuid.pl":"54de69fd5d7531b3924ce56e4f31d55a44e01293c73511fa5e80152678940ac9","openssl/crypto/aria/aria.c":"da9d631bb6ae5f11e5ae50ea033082568fe8e84e44f023c3ad087bf12b89664d","openssl/crypto/aria/build.info":"506e26da9ed2bd9dd14a25f593e649c5acf25bd5a56e43ccef16ec59614bb2e4","openssl/crypto/arm64cpuid.pl":"6ed88764bb65b5c2dd4382fc66fcdddc8fd23277679044061eefcfbb96df8c5a","openssl/crypto/arm_arch.h":"7e5614435c2fdf780310858ea0ff7cc524b5bbc112e97d9c861cda095fe07380","openssl/crypto/armcap.c":"28c3c5551a20568eada5375c045aaf74faaec2380828f2100c66f4ce7866f2cb","openssl/crypto/armv4cpuid.pl":"655d50afdfe0388c462f364ef77dd9fdacf1e34c4b9b4f6881959f9c16392734","openssl/crypto/asn1/a_bitstr.c":"0455687ebb68d32e633bf31188fc3fbf3d38e085ba0c717d5ccdb4d849b358f9","openssl/crypto/asn1/a_d2i_fp.c":"efc237e569fbe6c3aa4c993ed9b15cafa6eba03cd0c56b19c1eac3f6beb35354","openssl/crypto/asn1/a_digest.c":"602f45ee0c3cb0c0e713e1d62486740819cdbc4c96bd3256c1ad432448c630b8","openssl/crypto/asn1/a_dup.c":"0b089629598a4569585424c34dd3c67e03995f69b6e574a575cf2c9f998a1bda","openssl/crypto/asn1/a_gentm.c":"fb2e06a39014b803425ca75b10ffc34e24ee90953f893025630f026957f1bf4c","openssl/crypto/asn1/a_i2d_fp.c":"5d98da7ae83ec083f447a42d119a2696d853766f646a7eee0bb1408148f27f88","openssl/crypto/asn1/a_int.c":"b05e27052e97f1a4488f98d90b3b94493a36a33dbc3c1054da92c34d14f6b054","openssl/crypto/asn1/a_mbstr.c":"4e0818e467ad59bba8d0a8156219d61deb4d7db0e3d1b3dcec44d297d9a08a17","openssl/crypto/asn1/a_object.c":"1f34806c1e5c5fc5aa747ed2bdd9974117e0d521d383f0de2c3872747a6dcc87","openssl/crypto/asn1/a_octet.c":"6734764389c1ed27857a07f65abd406dcad0a3bcaf48c9b44bc50c435c493a1f","openssl/crypto/asn1/a_print.c":"9b899dc5579c3d593da651dd9f2c1e9b49dbfbedd197829a2910a03fa6e95024","openssl/crypto/asn1/a_sign.c":"90dc997934166ba2cb7895d184d317d0377ab74aee36f34c50c8b5c0c1c828fc","openssl/crypto/asn1/a_strex.c":"d81afd32a412987522b974036c1ce8baacafdb7e771522a7a3a61ac081c2760f","openssl/crypto/asn1/a_strnid.c":"46e07565ebb5adde365f69e5d8497f044ea9fd83f0b22ae8ecf0338f3f70703f","openssl/crypto/asn1/a_time.c":"3a06e13e97ad57f5e79a0205097665e7c474564f89badfbe747ea4084985ee8a","openssl/crypto/asn1/a_type.c":"fdddffdee9d8f64fc70f36469ba9b7b438f6bda52ca544a55c6d2a645497b561","openssl/crypto/asn1/a_utctm.c":"c713c6836eb1ff49be6f64f89b0d59b28f510c4c3f6206e5c450cc46712782bb","openssl/crypto/asn1/a_utf8.c":"55efd2f1103eb15b8199a5fad63f81b7e6dae98278c04556fa651f5155cf1b01","openssl/crypto/asn1/a_verify.c":"412f08f99c52e255855616ccda616e5390691cfc9d8ec8be04b757bf5fb95c73","openssl/crypto/asn1/ameth_lib.c":"15a82ae8a24481f1bfabb91686d79224d2bc4181eae15a914d729dffeb9968cc","openssl/crypto/asn1/asn1_err.c":"f12c5a109f37dea5e052b6a64ee84096de39614262b6696c4109c7f2aab6cd44","openssl/crypto/asn1/asn1_gen.c":"1c9a643ccf3f0a5c896fb232db91ba1cb4fada81ff895f0af848880f3f8ce17c","openssl/crypto/asn1/asn1_item_list.c":"cafc68db3b9f78fc349256799aed0cf046a0adeb34669d5eb5fe537e2d87da52","openssl/crypto/asn1/asn1_item_list.h":"617843466bf00b81d6f2b56696cfbc52edfed754a48b58a7711e951ac9b29ac0","openssl/crypto/asn1/asn1_lib.c":"085f24e3494e74f8ebef8082240ebc9db21d3cfec3bbff600841f573bc924edf","openssl/crypto/asn1/asn1_local.h":"7f0fb7bf0c589edb119b8a2b387deb12a2ae0caa5564ac07314c684a10340ba8","openssl/crypto/asn1/asn1_par.c":"587b96d03fba5f181e2a3bb986f84bbec7f270b802a7096776cac0a7a7b87da5","openssl/crypto/asn1/asn_mime.c":"31a14151f7ded7c8a25d615f03b782bb86088468c2028d8bbe2c294d13f301eb","openssl/crypto/asn1/asn_moid.c":"8794c22a22c285ed5529cb653ae9bc4a532759556b082df62cf3c7c5a980d65c","openssl/crypto/asn1/asn_mstbl.c":"e5636d0b7070096599c81428620efd8da80806c1469adff5bcee9538b3d3eeb2","openssl/crypto/asn1/asn_pack.c":"34c17431a3e1d5f2870a110316083643d7d2f712cacd773a27be10be8fbc8f7e","openssl/crypto/asn1/bio_asn1.c":"59f92e07f045c0b7caa07691260f5fbf9743734c29b011dcc81c0c1de80fe7b6","openssl/crypto/asn1/bio_ndef.c":"6eec68dc672f561e4d105353eebc943698d7304470bcae441d6c11e6fc12877d","openssl/crypto/asn1/build.info":"fa44195e9e9134c468cd6cc4dc319a10b42efdfad2afc0c24c6c09ab03fe6244","openssl/crypto/asn1/charmap.h":"6d9e96b1ab0db007151e9cee71d5c4284cbf6820f668ae70ade18fd3e77b50e2","openssl/crypto/asn1/charmap.pl":"c8f68c7552750671a6aead3adce1edc24f6209b5b9a912a66e5c3ed97f36cee2","openssl/crypto/asn1/d2i_pr.c":"7c2f7f1aefc3a017595034d6bb5a1c47c4928bd08ae061059b62d9c6ea50ee6d","openssl/crypto/asn1/d2i_pu.c":"db03265276649bbff5d13e00833a1d7afe370ecdae6ea3b8636fa66d6bc04d21","openssl/crypto/asn1/evp_asn1.c":"13e62fc5ec5f2389ed73b4c36764df7dfac8f9ca5d6ad4b9af4d5a40ffb3e834","openssl/crypto/asn1/f_int.c":"c31ad783d4102c01e1c356db25703ebad9ecbc4076be03671ebdf0dce77bbfa8","openssl/crypto/asn1/f_string.c":"ca8bcbe18111761b9d7051c28dc8c3a517f12ef09b07f7d18e95b09b1cea8463","openssl/crypto/asn1/i2d_pr.c":"6d5d69947533950f56b2a1ea9914e9a6263c89e3dd6e0bc580fac91c144a4418","openssl/crypto/asn1/i2d_pu.c":"6a4dea59d8f2a292a2e56d9d0dd7c1e5face5611b8cd464acd482f352bcbf7e8","openssl/crypto/asn1/n_pkey.c":"7a806728ae2fc2ac07c6403da406cfa1939dacca640bb44a265b5b3ba40bbb97","openssl/crypto/asn1/nsseq.c":"9d12f391ef3a96d4c49263876834fd3e55953ad182b8a50af67b9985fd0ae69c","openssl/crypto/asn1/p5_pbe.c":"b5bf15dc48ba22546910fbc45b8deb4f16f702b2079001d8bfab52e796586370","openssl/crypto/asn1/p5_pbev2.c":"75db91088cf53ef8ecf16096a273263dc1b8f1b305d34642fee9a3375eda264f","openssl/crypto/asn1/p5_scrypt.c":"2ee170bcd3a3f74020359645c556e148c2bdee58cf8eb5aa9e3d16549a236991","openssl/crypto/asn1/p8_pkey.c":"3a6bd5462179c020db34cb3856a351ca72cdb2c67aaaaa4b93490a4b5fc4f2ff","openssl/crypto/asn1/standard_methods.h":"b24ba0bd23ff748cc8198a20061b4ed786bd23b726b8863b0a9aab43ce4940dd","openssl/crypto/asn1/t_bitst.c":"3e3d70f8b000bae8d22df59d06d618636c4475bc74c5cf6496222ee362df2d87","openssl/crypto/asn1/t_pkey.c":"3c0b19d47d16ee69fd4cf9e254f18942ec60738153d777af58cc92dc36f85b1f","openssl/crypto/asn1/t_spki.c":"fa1ff7cc324e77da57523a31d43f4ee4bdd283233197a07d49b98167318f1075","openssl/crypto/asn1/tasn_dec.c":"d6ee6e8d5088d41e7c57b4b2ee722fc4887f0f303ba818b4068a8df4f95f2cbd","openssl/crypto/asn1/tasn_enc.c":"9923263ae81335b0185aa75529c75a328a7ce23205f79e2e6e2ab4d5ad14a31f","openssl/crypto/asn1/tasn_fre.c":"180a6caf40524dba99f5c59c5aa027111c5b4e2bd36f9f4023532d87ce9d0572","openssl/crypto/asn1/tasn_new.c":"a68ca3d8fb25b7d738ad0fe3e0fe89d04b666e8bda27205c0a29391ad236f06b","openssl/crypto/asn1/tasn_prn.c":"87104fe0b0cb61b15b29ed9ff0a87ee0322a7d8afb96fb5814947778736e49b9","openssl/crypto/asn1/tasn_scn.c":"bfee8c5ce3596ca8424d86d79d6629b9a10ec5e638f01a3a41190f6a997a0cfa","openssl/crypto/asn1/tasn_typ.c":"1b2ef7de83c4cdd6814a7ff51b7887ec0fbdaa491239fcb53ae099809ed93950","openssl/crypto/asn1/tasn_utl.c":"555ebc1deccb5fb32b8fabebc9dd5f7ec8c08ccddf55089f125313ffb86302be","openssl/crypto/asn1/tbl_standard.h":"d218819087369d116e0cb1a09a1d18d62e3b8d81f1097f51bda64d4d2632276d","openssl/crypto/asn1/x_algor.c":"6251fd9cde962a870fb99ad9efec2e92056bcae56f11b6a006099b58dddfbc1b","openssl/crypto/asn1/x_bignum.c":"86cf198543ed64b9aab374c68a9e6126621ea822f36be6e799d98b429703dfcb","openssl/crypto/asn1/x_info.c":"0c7b475e7ff24be19a93799988a8285a4fcff54948dcdcad56d5d15832697d2b","openssl/crypto/asn1/x_int64.c":"e07b3a84a97486aeb8cabe2fce3f310cc26dd4ed0f253d8bfbfea34829ae8671","openssl/crypto/asn1/x_long.c":"b7196b0ad11e30e2c3eb2b3fc87ecd7ee23e70337a561a1b004b8d8310696270","openssl/crypto/asn1/x_pkey.c":"dd38a57de88a305d3d91b67c2546a1dbdd19626242f4c2aca7589a5c43ca4d5b","openssl/crypto/asn1/x_sig.c":"3ad785d142245924ece45b57287508a337f4e6a17ff0171b8dcc29fdfe9987d2","openssl/crypto/asn1/x_spki.c":"9f360d8664aca7e8df445bb14e67aef5b8c6ebf96902d0d17f434de2760dd045","openssl/crypto/asn1/x_val.c":"16cf6f2ec27d2b0a6e5670f507a2e9838f449ba354b4ef8c3d3870624c78e000","openssl/crypto/async/arch/async_null.c":"fda3f2108e56457e67e90672cee85a88ed3be9c0ae8c48be3c311d3af4b1cb4f","openssl/crypto/async/arch/async_null.h":"b1584fbd40feaad7cdbcaa0f37634f6a3bb6151c8d3a1ea775407d2492bffbf1","openssl/crypto/async/arch/async_posix.c":"0559b3649322a5ca8a8327a5697d3a760b6cfe4ab583e04e77e405d1291becbe","openssl/crypto/async/arch/async_posix.h":"aa3c2f8b400c9c5055473dec40dd70397be774875b45b877de628b626269c625","openssl/crypto/async/arch/async_win.c":"f6e1c968ee12455407d45a98d797a20bb670ef54206101e8322b8b129bc0bca2","openssl/crypto/async/arch/async_win.h":"e44cf8ed835324cfca32677619cc086cab40464a556ed6877b16a48d64ccc314","openssl/crypto/async/async.c":"81ae3029a88776ae82430d2e62d8fd2cbd37ee882e6e454fc6e44b043462905f","openssl/crypto/async/async_err.c":"9dc8db44323ac3875af45c9e252c07b57e9414153eef799227cb62e3bf275817","openssl/crypto/async/async_local.h":"c1de46865fa89e0e3b091c2d0d1e636277e7a17b767a0bf832e9a6d4467de6a1","openssl/crypto/async/async_wait.c":"31a751120c1e124e15e5443d4f241d020136475c50224019fc6f17941e3f23be","openssl/crypto/async/build.info":"0f207664fd179f0da32133b314a3a12d882ca0767bd933223987e512f38b6559","openssl/crypto/bf/asm/bf-586.pl":"e2a70151810a9c072f339fb79a547d40518c9ad291b4b861bfe150accdbb9736","openssl/crypto/bf/bf_cfb64.c":"65bc70248cb9873a57035726be7c4daab7088edf3e0444f20ff3edeaa0bd00e7","openssl/crypto/bf/bf_ecb.c":"bb667d96213ce99df938ff6faf05fd6c8d8de41377e0138718bbe154e35402b3","openssl/crypto/bf/bf_enc.c":"007d64c1c42ab76f752dce1bce9e4d76a1d9b502b5ac38ab2ffd11a3bbfab872","openssl/crypto/bf/bf_local.h":"d5caa7b411eddd3325b5e44ee6aa98f7fb0aaae90afb266b95ff82ddc8dc6ce8","openssl/crypto/bf/bf_ofb64.c":"5fec279245aea9091befe01784509c0811bba300f4f4ae831c5b10d2c245de2b","openssl/crypto/bf/bf_pi.h":"9100be951fae338f952bcd373fdae299db340004a560d4a8e2522d94d126937b","openssl/crypto/bf/bf_skey.c":"5abf32cd325f89702f542ef125b837e94182478b4e88fc8dc9ba959670494304","openssl/crypto/bf/build.info":"18fc244655787eba13a938e63be44df66237ff9c61c652f9373abf0e1944de2d","openssl/crypto/bio/b_addr.c":"affd6e27dbb0a88c2b44d8a01975445efb417602b45549d7a1dd518c745b9e96","openssl/crypto/bio/b_dump.c":"23636615ed57398b183859bfc644b3ed6a6e4ea767a4b0510f384fc22d3174a3","openssl/crypto/bio/b_print.c":"37598da04c8b2d79954a13934c1415bb0b1bfb2aa26b92fb9ba7d05efd739426","openssl/crypto/bio/b_sock.c":"7fac000db37431a216998c55b37f7cedf7da8e93e95e87a2870eb636001d541e","openssl/crypto/bio/b_sock2.c":"2ccab53d243f274b5227b013bb5460f78992bff04286b1c4a3f25d5212bb19d9","openssl/crypto/bio/bf_buff.c":"93f4d8b64f77a78bd3b75899524da4fd377bf1843fa436e121f7a4e8fac70f6f","openssl/crypto/bio/bf_lbuf.c":"556acdbc6aec55d7dd154cc91d58d30e27cc26447cd0580e5bf5e62e0fdfbaf2","openssl/crypto/bio/bf_nbio.c":"20de24180dd8768d4236b072fe6fbded3e4c2f046138b82c196829210f83e6f9","openssl/crypto/bio/bf_null.c":"1d9d2aee3c3345fd1f9fa6a7c61bd0a7210296c16bb8e430db6eb96f986d4daa","openssl/crypto/bio/bio_cb.c":"36a248185aff251569cf313e027df36e7ddd2f040011c7df120e763fd374013b","openssl/crypto/bio/bio_err.c":"a076d1a372dd188ac2d0b2d85aec7fd092615304eb750a7dc7f35171d83e0b12","openssl/crypto/bio/bio_lib.c":"d3768371c6f66104a0cbbbe79a78d3bf6b9211f51b9361d496efee7d492c3e7d","openssl/crypto/bio/bio_local.h":"372e5162c3276036c8afec0d831c8fa799b9b40c585a950dee9c684c100e4503","openssl/crypto/bio/bio_meth.c":"909b7c1fbffa3f3652c06e781f68888fe32921bb0864f2edf0cf11f81c57206e","openssl/crypto/bio/bss_acpt.c":"a9d2e85a836f783e3a8b0bb43e91c98a8bea13be248547f41e8efdc112c6dded","openssl/crypto/bio/bss_bio.c":"0fbbf25cc71727b70d69cdaf54e33c1edff88dfda9c6135c3ffb903bc2a16158","openssl/crypto/bio/bss_conn.c":"763ba60a50f5ce0436ca6f7d2ae4012ad64c08d4a7206bcf46f6215e0c87e0b0","openssl/crypto/bio/bss_dgram.c":"7c3485a79715b78c600f73f1ee10cc6aaf8abb83c74ae3068112cd0421f7a518","openssl/crypto/bio/bss_fd.c":"a1d09b6f537ae1cd91b78747064bf6e0bf1480d2081fd49520bf68b8bc6f9c8e","openssl/crypto/bio/bss_file.c":"a6b7fae08a9ade223189c131d9cf791e665d07c096f72c81222d3914b6febd77","openssl/crypto/bio/bss_log.c":"57800ced38e095cbfab4978b135c987d198e23577e0b1ece7b9f9ec09ad134d6","openssl/crypto/bio/bss_mem.c":"991b241b2c01e70fb65862743474b27294f489db0157eed9bcd9f84eb2f46683","openssl/crypto/bio/bss_null.c":"5c69c5ef64fba87209ce6732daa442179147f58ed182b0ffae2c810d1a1f9246","openssl/crypto/bio/bss_sock.c":"291ec483d46ce4c84d6e27767b5024e8b46c545a9337440040044698b77a5185","openssl/crypto/bio/build.info":"c06b0ab353777e854ec2e3fb06da384d5feacf7b6a7a793a86f953f75727f9df","openssl/crypto/blake2/blake2_impl.h":"43d57951c44208b9c739ea55268ad32537bd69cb6996142aa9fba1fc73156546","openssl/crypto/blake2/blake2_local.h":"3b65f381c00259a7e9ae4c99804129d0be1da85883171f7a7e03770b6d19c182","openssl/crypto/blake2/blake2b.c":"a270a88442ff7a5ad50aeb98f201631733ecd94b3d16ccf4e293f326069870f4","openssl/crypto/blake2/blake2s.c":"3127b5f1e4b7c86b4b3f98906be4e02cbf6c6ddb76ec562df22bb90f8dc703e3","openssl/crypto/blake2/build.info":"32d94885a66457adde2492c1f54d8eff2470fabc56714ff452656d26e0dc5dd2","openssl/crypto/blake2/m_blake2b.c":"15ae3e3e588732702f387aa72bcbf83da1c6699be5fff50bd43ad6823f6a2ea7","openssl/crypto/blake2/m_blake2s.c":"86328f420a7255f5356e213e066c0ea159620556a6d0f4809a01af1d749a326d","openssl/crypto/bn/README.pod":"f9a09a797a9bb17b25582b1ec93f630ed6fce7e1e7d7bca660cdaceb93f7e18f","openssl/crypto/bn/asm/alpha-mont.pl":"9a965fc05099cad8166dd2139a369797b76b86f5a3ff649c2d769c809e43f49b","openssl/crypto/bn/asm/armv4-gf2m.pl":"59d4382de548cfe64a537ff06d7cc2f853267c374b362112e7c56f604d097295","openssl/crypto/bn/asm/armv4-mont.pl":"033cf96aeb2d944ed8216f6428b50f0c1342effe795eead230780fee09c1b81b","openssl/crypto/bn/asm/armv8-mont.pl":"74e3e61fae844a76899b271096ad959126ace8a44c6b423b49b5c60644183846","openssl/crypto/bn/asm/bn-586.pl":"48bf56c13b07e72dab0758458edb8fb91d405ea66be51ba2cbe0b8d7ad66a1ea","openssl/crypto/bn/asm/bn-c64xplus.asm":"2ccfc9e32f973733286f929efaba733ef221a2a525baca902d10b43f37e5c316","openssl/crypto/bn/asm/c64xplus-gf2m.pl":"6baf33b426d15ba5f1932354803c207ffbaac02a8ca0a297f1f1887f7d9e3ac4","openssl/crypto/bn/asm/co-586.pl":"a6e32d465555356f8d94ba60502f989571014e259578d8b7ecf08b8d550f2d49","openssl/crypto/bn/asm/ia64-mont.pl":"38c66ea37a612cbdae9ec76653ccf5f88639f2c83a4ccc7b68f1a07885925f39","openssl/crypto/bn/asm/ia64.S":"bb03f1210151f611b289d26275dfa4ec04858c3f6b8e44f6a134ae43134ecd4e","openssl/crypto/bn/asm/mips-mont.pl":"695fe1bfe46aadeedd9370ed36052d2f46744e220aae1bacdaf609d565f83d62","openssl/crypto/bn/asm/mips.pl":"f44b6353ac641daf2d1a75c3fc66dd04c29f8e7f9a9f0740fcc9bdf11d9747d0","openssl/crypto/bn/asm/parisc-mont.pl":"0618fd3e42cbb86c80f9a442df30eb5ab03fbaba85bf60e305f1e8a7b0303011","openssl/crypto/bn/asm/ppc-mont.pl":"1c74d887826dd16230de9da9379143b585030a723c7c77e1a8ceaf67fd431d86","openssl/crypto/bn/asm/ppc.pl":"e5fc7d5df29159aa04884e787586ede7e3daf38dd1aca187d277987f6ce4f30e","openssl/crypto/bn/asm/ppc64-mont.pl":"d71870e9fa8fa2d7b8132f43e9619c1016f24669aaf0e4fcc5b49b10069bf9d4","openssl/crypto/bn/asm/rsaz-avx2.pl":"d1c58913d6a27eed2bca23b623640767356b4bd63a0253b7c665fd364a8b6137","openssl/crypto/bn/asm/rsaz-x86_64.pl":"2b988945d8e2c352c739ec7a816cf06fb41eb7b5666ccfa13e504ed489513246","openssl/crypto/bn/asm/s390x-gf2m.pl":"ff56c23a2625a1d7203558c930795d53e7aae96edf79dff9b425399f3bcf88c3","openssl/crypto/bn/asm/s390x-mont.pl":"5f42262e655b2f0864c888076b9e92003364787f840dfd7fe6821d1f0ab20b75","openssl/crypto/bn/asm/s390x.S":"3bbc49704aa816f558c053615e554f5dc5727f0d8faf5731569409968419e3f1","openssl/crypto/bn/asm/sparct4-mont.pl":"90072ba1eade122f422edf8c22d9f8b9dea38288f644bc83d7606a2899717472","openssl/crypto/bn/asm/sparcv8.S":"5ea77201a1d3d910c4f9a6e46d84497a101888e1a88221df37e0b938b3b7fb27","openssl/crypto/bn/asm/sparcv8plus.S":"9a06de2127cb76904210100b84593545ce85ace4a1683508560ded0df5e458c5","openssl/crypto/bn/asm/sparcv9-gf2m.pl":"46eacdb7fa8a1e456a2f189236c29da071243465d3e5dddeab216195a0b7330c","openssl/crypto/bn/asm/sparcv9-mont.pl":"c110a9ffe20fb2df17788f18f4378fe658c65c5ef3e0132eba55b49e6b30c990","openssl/crypto/bn/asm/sparcv9a-mont.pl":"2a41e7e980b947e74e4f904d2f73f5eb3cf6fcf33aed719a8c54f2829af80d18","openssl/crypto/bn/asm/via-mont.pl":"39b3d4fe10f57f762bc04a3d4c007228a27b733ca822626b4fa318bcef9a6603","openssl/crypto/bn/asm/vis3-mont.pl":"8905a111cf37dafab244fef8328a1880e2767dec450d3f14bc9a94b0e962995a","openssl/crypto/bn/asm/x86-gf2m.pl":"5d67351d8ab90a1f9bc27442790b38e8b5af3adb2ea808f1c538e302b63292e3","openssl/crypto/bn/asm/x86-mont.pl":"ed70f06b72ee5b7952382450d271048c1ea90b8b1a7f2b54725c418d010e2a92","openssl/crypto/bn/asm/x86_64-gcc.c":"b26f0475d8edfc4d29f144ae1bd2509656519a65909ba935a6ab8e028730c41a","openssl/crypto/bn/asm/x86_64-gf2m.pl":"093190e7d1cca46563423663eec16612c27b5baafb1045085837c7e0bb92a771","openssl/crypto/bn/asm/x86_64-mont.pl":"daef157ec69e2ee356eff9b886f493c0c06727de42c53a6bc9e52609bd1ee27a","openssl/crypto/bn/asm/x86_64-mont5.pl":"b25979f80e2ac7383c31c213185da51c1246a9cc247fc356160df9d1737fe51d","openssl/crypto/bn/bn_add.c":"997a8198a4162b709bef9f539c83e0eee985b95e048a6880f800f1c87fc66983","openssl/crypto/bn/bn_asm.c":"8ca1fc49cf63552b9eba95f3337d23d4d850df16b6c8023b0e0ff3ee51a8eed0","openssl/crypto/bn/bn_blind.c":"f7ca8bb9482532cc2bae51c6c6a98cb7a9285c73bdbde80b6e6f5b3db57ddd7c","openssl/crypto/bn/bn_const.c":"2976d9b82e2f804a139dfc23b93c24174835f2c0b5205a9714c15e6f9dab06da","openssl/crypto/bn/bn_ctx.c":"53e5d709712fdce65572c27121a770655d55741d86fbd762eee86d2f81c2e4f2","openssl/crypto/bn/bn_depr.c":"a1c0cb167ce107a0dc1a65d605371fdf350616592b601420a3ccc92722ccedc6","openssl/crypto/bn/bn_dh.c":"c3d5ef28fc5967c871616c14aee75efcb245cb1bf537ca3d7b4483fe4c6e66e6","openssl/crypto/bn/bn_div.c":"5bf0b670f06f9681b6010adf6d9a49e8c3d97a2a975400136ea7c95585b63986","openssl/crypto/bn/bn_err.c":"0bfac66fbf810f30e4da7f8781c851e4e40688bef16c1d4e854d39cf1c286821","openssl/crypto/bn/bn_exp.c":"aed8249dc0160ba0b58c7fafdbcb143a12430a7f8feb74487a9aebd7566ee96b","openssl/crypto/bn/bn_exp2.c":"4af438a26a19d9ff251e74aec242cabd6f802e1777d27dd565b6d14c665ea3c9","openssl/crypto/bn/bn_gcd.c":"6f57490d3965afce7bca8d12809720470b3105e94d4e7b22671a5183323ec66c","openssl/crypto/bn/bn_gf2m.c":"933f0dee1e86e2d2bc128a14e361e95f62a9b044315686e7d9544036724a91f2","openssl/crypto/bn/bn_intern.c":"e9fdb85c35674c4ea10b8a435402f449009a201b1e792ea938c55b43ac14a2e7","openssl/crypto/bn/bn_kron.c":"e53f88fb97342946e40eb40b1bb796f269c00ae7c9c08da6f0ff1dab92ff1d08","openssl/crypto/bn/bn_lib.c":"def99b81926fa50477f38f368e3bed9072e5b6fc471238719a4b5c2c773c0fae","openssl/crypto/bn/bn_local.h":"1d0667f22eed00b4d6cf2f19aaea84b073cdb35cd8a15c8b09650978749b9d86","openssl/crypto/bn/bn_mod.c":"ab67f5a59f39426f7746298d36f1a2dd0218e6bbe5337e5b8f3308969e6fbc43","openssl/crypto/bn/bn_mont.c":"29e10ca123e5782b2c0f86431420fd4a189b0e1492027d0ae30ba2bc2f213676","openssl/crypto/bn/bn_mpi.c":"414317c7cc164eb976cba211be80c47c10c317f6e5510c7488a26b3eeac7439a","openssl/crypto/bn/bn_mul.c":"adb75d2e053af57f50b556e314058fdb1f07de5f73b9330084e9e62a1b47e6d8","openssl/crypto/bn/bn_nist.c":"38cc4b28a758daf1e4685b791b8c12d0297b0847a06ced49b524e37e44952108","openssl/crypto/bn/bn_prime.c":"4a9c72c0e6e04369f81c9fae730c588487882b68c9bfd3b55a9ca416c632860d","openssl/crypto/bn/bn_prime.h":"b5c13fd1a813ef9d8d7d3516b0ff85af1e646c70d0656b6a18266cc60d5f2514","openssl/crypto/bn/bn_prime.pl":"3c2b7b7050c667f3db49b042844033760c5be6d0a622c3519f573e4fe559fe4d","openssl/crypto/bn/bn_print.c":"f24845ac92715ce67f038491ae06eff2f70821023c6905c9927f2a23a0a902a6","openssl/crypto/bn/bn_rand.c":"8ac00fab08a188260e02b17caf25d48552d29db278f6fd7bfe63d5086d4f4417","openssl/crypto/bn/bn_recp.c":"e1459f1a51e7c29aed0be014069fb143e707e1e94930e5c0d3c53684aaf928a2","openssl/crypto/bn/bn_shift.c":"20f682e6765fa62b1a24535a438fc4f3bfd09a95c84882b794ee325a3ed30800","openssl/crypto/bn/bn_sqr.c":"febfe487629fb06da8541ed72a1bc020130e054aed978509afaf082f4689eb4f","openssl/crypto/bn/bn_sqrt.c":"3a63bf7ba6f5c4399fa4ee92176234d745723b158074387dec6ec419a4f072c8","openssl/crypto/bn/bn_srp.c":"2cc2dd53d107360b02a46df479e56dbcef76173284c90787a6034711ad0d20ef","openssl/crypto/bn/bn_word.c":"80a6785f781de09007b0a38c07cb1fe6f95da91a7c5d7719fd393b473272922a","openssl/crypto/bn/bn_x931p.c":"95916c4578c8a924c2a4ab40e221beb5ef39724f8c5acc0eb0cf446a059b36a9","openssl/crypto/bn/build.info":"c8caf83e7eae6fef8838b21f1d49b3036d877a5d60c9c9466d35fffe71679bb9","openssl/crypto/bn/rsaz_exp.c":"a2ede83b4e4c5aab1462be70f080ca4dcca3cdac6e0c1f089f0c505a9528a5f4","openssl/crypto/bn/rsaz_exp.h":"915ef12888f45d28f6cd39e103a2f801ccf444c11b5d57ada5a4bff43a52cc50","openssl/crypto/buffer/buf_err.c":"077e32ee5b2554f2ef88c2e2e431cd502f4b6564a4562ad6ca7f4ef2d93719d0","openssl/crypto/buffer/buffer.c":"c8e85cfe68a2a0b8c240c7d253bef08370d8c5d6beb8306317d5c13b9d894457","openssl/crypto/buffer/build.info":"a49cd5c09fa81fe79c92a2746795f4ab03664edb564fe967e02ab630051fbb65","openssl/crypto/build.info":"01a8fcab56106ee83cdab9aa3d57c014e2794e7f973bb164c98dbd1f6252fda4","openssl/crypto/c64xpluscpuid.pl":"bc7734ba0a8a8a9b6522f8522cac953fcb55f7ca9291d9470ff42eae28ffe624","openssl/crypto/camellia/asm/cmll-x86.pl":"fff9bc31ea47c39ff3d29d5f500bbee2be5f99ae33c85a42f50261519a1ca58d","openssl/crypto/camellia/asm/cmll-x86_64.pl":"a39992cc95db61459d6ba3b4fc4469b468ec5cc65c8b0e140f8541146eeaea2d","openssl/crypto/camellia/asm/cmllt4-sparcv9.pl":"057db0662cac6d2910c9b0df404aad0149c9bfed7edb2b606c1a65063b800262","openssl/crypto/camellia/build.info":"c329591bf1ddf3b43874ba5f16edc771dfc3609b59692a67ab9be5329ebc2984","openssl/crypto/camellia/camellia.c":"0b89bdc95099441a27eba170d8a18715b0de111ab258c857cd7bc470c44c7065","openssl/crypto/camellia/cmll_cbc.c":"3d8730494a197898020547aac319cf993d984ac12a7caf05769ab4f3d5542127","openssl/crypto/camellia/cmll_cfb.c":"3bcd9e4d94df8fef19f6c878dafe390869070b0a915b903dd7c124fe4ff29eeb","openssl/crypto/camellia/cmll_ctr.c":"b118ed55ff15ba0ba23f8d1509f82c05469538914354a00b29fc4b13d9fdb138","openssl/crypto/camellia/cmll_ecb.c":"6fb0a9e82c7a88efd6e21b8a7ffbc2bb5ca2389d9cd090854b52432666f00dbf","openssl/crypto/camellia/cmll_local.h":"0a9a4626d21afee3bf75df5141d9cb5df16843135dc52588ed6ae5db9db57520","openssl/crypto/camellia/cmll_misc.c":"d612139def8070bbc0eeee703e10620b55b74e92bdb66cb0cadef32640eebd4d","openssl/crypto/camellia/cmll_ofb.c":"95d00adc90c3abc0244c90863643c1c972c7b72e1a89ded3e9be78961d7b5ace","openssl/crypto/cast/asm/cast-586.pl":"db4eeab4c805f9283ad642eeb9bd4f15b2fd274aae04be9e6108df432ea841ec","openssl/crypto/cast/build.info":"d50ce511fda2f776ef1b01ab2904a95105177b8e220d16ec08823ad4003c568e","openssl/crypto/cast/c_cfb64.c":"ef480ba12d67983b33d836b4c23a894825663f934e3cca35a758ac02dc3b7299","openssl/crypto/cast/c_ecb.c":"2a64c4f6ab8dd81fe8fae14aed324740725b736de13d33ef53b8cb75aa816287","openssl/crypto/cast/c_enc.c":"1aad93cdbec46cd6decef3aefe6ed6c0d4ac35458c3277d9feaf72a3554d5237","openssl/crypto/cast/c_ofb64.c":"314c96f3cf57fb5e6c3dc80dc04487e1d9679279b5726adbe7ace25311789136","openssl/crypto/cast/c_skey.c":"03c78ef44da509b4f83d13523ed842eff9415ad9fea3874f99d3c304f7c01f42","openssl/crypto/cast/cast_local.h":"66eed6779089997ded5323031123a0597f9cb1e7dd4e8ea0acaef3f8cf33800e","openssl/crypto/cast/cast_s.h":"3d8771f99d09b7e75ba8ee54015cec6a87e56851a49b7ba733d5e05cd31d8c90","openssl/crypto/chacha/asm/chacha-armv4.pl":"99f5da3bed7a9983c75e2507d70f4ff1a098a6e8f043bf041be91b3629ae422c","openssl/crypto/chacha/asm/chacha-armv8.pl":"b7d01513fecbde9fbc790d2602397de122474163fccddb1ef5cfa122d2015d09","openssl/crypto/chacha/asm/chacha-c64xplus.pl":"7fc7c87c75801b38bbd10e1da71e8d23e63cfdb9b25696155ef4831f4bea6aeb","openssl/crypto/chacha/asm/chacha-ppc.pl":"8201e4b04f17b94f63fd1632e33c443d82651a188356ecce215b05002d29c07a","openssl/crypto/chacha/asm/chacha-s390x.pl":"92145fd451e8b90dc3060b4b6cbb781c29ea76ebadf1af278f54f210b24877cd","openssl/crypto/chacha/asm/chacha-x86.pl":"0c0b923503045c50339fa62ea5f23f2896d36a5afa5d92d328ba122ada4d5245","openssl/crypto/chacha/asm/chacha-x86_64.pl":"5a8d0031c7baecc3c816b775f59d871835e7effb040c13e9e24d1afc5a334c31","openssl/crypto/chacha/build.info":"9fc715460c418da09ed9b1f3b0c2955d05e1a601ea08c722e03cd3e093d21355","openssl/crypto/chacha/chacha_enc.c":"3537109a7cbf8cbcb891fadf1187fd18bfc4697244d9f454863edf0efc935747","openssl/crypto/cmac/build.info":"4cab4dd7922065b919ea2fab534ea5b2425671a385a9bcc339b034b90b18a1a3","openssl/crypto/cmac/cm_ameth.c":"2485363b94018ee4bcb9c26ae556e0da6bd976c7aa2a74cc6eee25dddcff4839","openssl/crypto/cmac/cm_pmeth.c":"a651591b1d044ce06d3fd3d04685de16da3ffb832edbb23de2c62bfcef1437ae","openssl/crypto/cmac/cmac.c":"23c517f53442658958ccbd35324621074e9e1ff6aefc76f1734b3e8a15276e2b","openssl/crypto/cms/build.info":"b60b5fcd1a7bdd099d8d6ad6dff76d38a2f2f6d69206f606e7b31f2512ed8c78","openssl/crypto/cms/cms_asn1.c":"039c1090f3dca16886efcc692f098c6757df4bfb7ab3a8d5d861e039a1bdb5c8","openssl/crypto/cms/cms_att.c":"e4fef52bc7a42fb4418dcd3af56ad69c2eda39fee3173cf5c81a2bb09b4f1c99","openssl/crypto/cms/cms_cd.c":"9a054626d20f06907e587f28626faaba4a6c246c3e46c46161bf740fd40ae823","openssl/crypto/cms/cms_dd.c":"a20f210ba25d1e39b3d2c3689fc403cf1d26e95b56ba63ddeb953170b1c46a7b","openssl/crypto/cms/cms_enc.c":"cebb206fc3f2770245fee217c728e1a4bc36f48dd727cd43ed71689a01048949","openssl/crypto/cms/cms_env.c":"57d7a1370174ebd951b67e0f8aa580502e19761502b56320dcd52341e5552daa","openssl/crypto/cms/cms_err.c":"98895b0546291e85cfa5b046dc3637b839f463398ba7f8f1f7a302a290f549c0","openssl/crypto/cms/cms_ess.c":"1c214bf9ed990141a0fe9b2bd6d75c0abe13f7a3972fcc9e8546c6cfb61fd774","openssl/crypto/cms/cms_io.c":"b0f7efc22758684e682ce4d4084c5a9c92f2be85337472b4cb2b0877dc97b9a8","openssl/crypto/cms/cms_kari.c":"5cfa5f47a8c1a68548cc5056c3acf5dbdd6863add51540d31bd9f3febe158305","openssl/crypto/cms/cms_lib.c":"02fb5868d86f55d6fd22925bc1179ee6e30bd33d8c03bb9d17f3c1f32b5e8a2d","openssl/crypto/cms/cms_local.h":"fd4c2c08265477861e764df58596e6f46e4e1c1edf44b83dd756c30a11e4378d","openssl/crypto/cms/cms_pwri.c":"ec89b18f85b2d54e7685eba3e025d5c80bef96a6342647e75a38e7ce2d05421e","openssl/crypto/cms/cms_sd.c":"4b5d481625e094458ea8f305abf4f135929c4e8953f52c8a095ac1c4190ea80a","openssl/crypto/cms/cms_smime.c":"4b39921aa3cc3a75de8ff249bafd5f14fa7fb2f87ee5fbdb5965be16a701de9b","openssl/crypto/comp/build.info":"85bf6e692117dae30cbc494d4eba2d702cd3cae6f89fa09b7ca0fd4456a7ce2f","openssl/crypto/comp/c_zlib.c":"91cd791e519dce9e72bd1c95850bbfb28948314f72c89d186c1cf31018a4118c","openssl/crypto/comp/comp_err.c":"57076955737d79c2a7c3770fd2cc34f23d5eb871d464d2fcdb824a430b241f52","openssl/crypto/comp/comp_lib.c":"400c8ec3deef4c53bf6a04d6a56b3306085adfd7c26b7f30a1c81dbf2ca14c1c","openssl/crypto/comp/comp_local.h":"017673a53ffcd90fc07054e2f2b58bb19cf7dd662972b77a522880be4df748a7","openssl/crypto/conf/build.info":"b43b86c91fce5501f6f7f3be1ae0563ad61a11a6dc923d51b1cbfd38642b69d4","openssl/crypto/conf/conf_api.c":"ddd6ba576e40e1ae38be2da7e9c650a831bd6cd3e457b1103dfaad4e38db3945","openssl/crypto/conf/conf_def.c":"42b346407771dd21fb8e53fb7f1f6510e8b0ee18fd1e84711afa728835b0f846","openssl/crypto/conf/conf_def.h":"67478967ca8702192f137127ab1f7fada1ac5cb7fce3747431744cc161a8e70b","openssl/crypto/conf/conf_err.c":"b7ad98807619b2338608b0b678af3e9ba552968c1a62e4dc7f596fa22c967489","openssl/crypto/conf/conf_lib.c":"03830ff1f426c2017809c8a5ce2fc1f6c0cdd4e3f4ead3724af49619ced93197","openssl/crypto/conf/conf_local.h":"21f6604347cfb6f65ebd57a2baa57a594c90f2c2d553d04110a481e533dc932e","openssl/crypto/conf/conf_mall.c":"8c749bcd6b98aac509a55ba3ae6c85b7a7576d19a48fe351116b84f13a4bc9b7","openssl/crypto/conf/conf_mod.c":"1f9bfefdced4c28189a5a401e60c981bc21f2c2cc630ab16c14104161433544c","openssl/crypto/conf/conf_sap.c":"3a55841a7cb9466b3520fe5ecdc18a0de441517fed3864a0c6ec501c60d2bcbe","openssl/crypto/conf/conf_ssl.c":"9a915457c88510105b1ee96b63ba18a7a395f16e1228f6dc3d300c09a29da965","openssl/crypto/conf/keysets.pl":"3fb8dc12b0c38b0bc10c28e8f63fff7067c15f628d0c4e0aa4eeb332ab80a3ee","openssl/crypto/cpt_err.c":"0582ec85ea86920e9c54f61b8c896766da5178ed76d943927e54f0cc5aeaff37","openssl/crypto/cryptlib.c":"071e82aec2a79c3165cc40af4e40f4f0b9cd7f903d6d342cd0b2bcbf120f0808","openssl/crypto/ct/build.info":"cba8cc48d6e1afd7524a791dd853ab68b711e20242e53d34f7bc69cfddfb58a1","openssl/crypto/ct/ct_b64.c":"3f496457a333d2ee14330174497621a3dc0d7226584f028323ed3f74ab5eb059","openssl/crypto/ct/ct_err.c":"38c768cee2bd24a73056ef3b6b11c9ee2b521b4549472bf2814da6783b3237d1","openssl/crypto/ct/ct_local.h":"b646fbbe542dab91575dcfd70d753f97829cd30b8cc6d20ff43cf6b180a5fda4","openssl/crypto/ct/ct_log.c":"fafaabfaebb95a7830629c278eae9ef41474abf74bf4a192a40ed688ab857d99","openssl/crypto/ct/ct_oct.c":"cc15a402c4910fc8e2fc3e4e2696159164324170d7aa314b705084ae3e5fe1f5","openssl/crypto/ct/ct_policy.c":"761b4246d70c58cd5ef169b7e6495fb4ae98095de55db952865321b53026a9da","openssl/crypto/ct/ct_prn.c":"c61e1e516cc7f2c6e56d744dc9d2eb34e265a3033dcdd5594bddd389d92cb849","openssl/crypto/ct/ct_sct.c":"2053d098f8067761f883dc37b5e9f32a88f8efd8e838c7bfd30dfbeb8b2c213f","openssl/crypto/ct/ct_sct_ctx.c":"384be165ab6ab299ea1fb20a8f71549b52c11a62f48354557d9df795dad0a615","openssl/crypto/ct/ct_vfy.c":"dd9fd14491f0be632c2c9a4e3f64f2c9e7212077318585cdeb0be083c9b9d16c","openssl/crypto/ct/ct_x509v3.c":"f6fd221ccdb7233b57d7e2e2200f70f74415bc1a50d71f3f3db54573323ef5c3","openssl/crypto/ctype.c":"6ee2e82b4b35a0ff31e652a41a215e22183f27227629c3dd9ef29dee5ef72235","openssl/crypto/cversion.c":"e025275b671266d567e01588bc06f5953f9801ccab837f747444a7fd4deb2d21","openssl/crypto/des/asm/crypt586.pl":"ea344cbacc0c1782c86a5cd8e59850b15ec7b992af758944177b5a8d06f731f0","openssl/crypto/des/asm/des-586.pl":"7087fa7f11206b134cd19b706c6dea47244cc4dfa02eacb34f5be64f1596c59c","openssl/crypto/des/asm/des_enc.m4":"fc01ac73663cf6a379f2f5b9bfb4656180904d3dbeb1a1332981c65536b57537","openssl/crypto/des/asm/desboth.pl":"9ee2f65db79acb719d97d7a9a023b5966e043de565c296d91fcf9fa22c8d66c3","openssl/crypto/des/asm/dest4-sparcv9.pl":"af3aeb58563b500da64826b8b242879be45a25492b35416a64dd8f2d261b54ed","openssl/crypto/des/build.info":"e9313f6656218289223c13eded0ee42c0ef2a907ba1cad0d921895d5897f6033","openssl/crypto/des/cbc_cksm.c":"5d206f71869bd8f991aa0cc6e59dfdfb0d32332a3ddcc5fbc1e53dd434182dbe","openssl/crypto/des/cbc_enc.c":"516db95c905c16f248b0a77110f5112bc4b11c1bf7c22ec00015afeba4a59775","openssl/crypto/des/cfb64ede.c":"9eaf1da7ec5ee3d418962153b20609ac35ce2a7791d0e89f67af6743ec3ec1bd","openssl/crypto/des/cfb64enc.c":"01adae8089de85462097168450a1e8da6b883f40ffdf16f71328b4f27c295d8b","openssl/crypto/des/cfb_enc.c":"77d937e722323246ffbbfb90236cc4db0eb97f0e3094703136b13e3f5ac96cd3","openssl/crypto/des/des_enc.c":"e6ca2ab1d3ecea8d7bb237249c4b2e3c4b3341fb7117c103b923425547d18ce5","openssl/crypto/des/des_local.h":"65a67352a112d223c1a5e86014f9bb35f2801a7facdec761e84ed0fd84453f0f","openssl/crypto/des/ecb3_enc.c":"9c0390b6d31ba0210770c99825d134ea383b0ff6786a17901cc9e8d29a1be271","openssl/crypto/des/ecb_enc.c":"ed826a2ea841d55e73ef7b4c18ce0e3f3a7fc2ce1f66114ef304116ceb797f8d","openssl/crypto/des/fcrypt.c":"8722ce9353d34a091718240262350f71da8d219a6e5735f7452cf6cd6a513e12","openssl/crypto/des/fcrypt_b.c":"17687bbece11cf0d69d20c8e2a161e3e8cb8c6cc954e98e4be89b2fec1229433","openssl/crypto/des/ncbc_enc.c":"7c699d1d1382865f134a66ae6102a1579311d923a867a9689f1938cf6cec16c3","openssl/crypto/des/ofb64ede.c":"a80c89c3c3aca3061d374a5719e7fbf34de6aabada2a33dd3ca227f71154b46f","openssl/crypto/des/ofb64enc.c":"f6778fc3903629332792169d1eda2a66983102927d4ed3960f897ac3e4340dd9","openssl/crypto/des/ofb_enc.c":"1dab1cd28dadd9d50c929bb733050114da777eb16a0881bf73a346e741aa4cbf","openssl/crypto/des/pcbc_enc.c":"30566f7d37c7370ff3877c3ed546012158447f26f3f252bca81464c97584d613","openssl/crypto/des/qud_cksm.c":"866fa600186d5ec9a9453a1913415b8ce6f3f10aca9dda468ac598a43f45ecf4","openssl/crypto/des/rand_key.c":"087fcbb52d8c335222758edb7068b9d4126b1480882539824795a06d9b61ac81","openssl/crypto/des/set_key.c":"72121d5af75f56b90476e3b0801df350e245e106bf2f4d3b807d7197b7db26af","openssl/crypto/des/spr.h":"716d8fa9cfba26ba57bbbfe471b2179b0788907c0f6ce831ca25c1f88692968c","openssl/crypto/des/str2key.c":"b981915490f07bd96a1ee7bc47176cd0b502021245b0d9a3ce5624f53f87a8b3","openssl/crypto/des/xcbc_enc.c":"b827a25f0e027ccb260fc580ca679fa517cd3f31984f1d23aeb537d35cbb6a8d","openssl/crypto/dh/build.info":"e2bcc399874d63bd088982f115a561fffb4e0dbb441bb7b594d5599e9c65a718","openssl/crypto/dh/dh1024.pem":"e8e1acddd3b19d70ba25308970888a2ea046f951b9e055eb4ed039ad873b56c0","openssl/crypto/dh/dh192.pem":"58077024ed24a21542f46e2fa71872b920925d7878e70ee260f7e12c3acd6c49","openssl/crypto/dh/dh2048.pem":"8ef0bceef3550a6a252553e157a8f72286a26688d429fcf8659b0fd62e64049d","openssl/crypto/dh/dh4096.pem":"b5efe13f7908d0c8dd358b97e9fc449aab144bb9f5db480dd6a59787733e6475","openssl/crypto/dh/dh512.pem":"16f824bb92c255eb62cfb1146014049be68b8ea46273ad7c3afb585c47555689","openssl/crypto/dh/dh_ameth.c":"e76f256774450486365456d2fdf46de247e631a1ff7723842b972b0e4dd734cc","openssl/crypto/dh/dh_asn1.c":"98f73ca5addf73a7cc65f719a9957995efe2d776f7b9fbf93b6ef089095993b4","openssl/crypto/dh/dh_check.c":"24a505a328422c0c6f1186fdb69d927e6cfc0923f5dcfcfee8e75501f4796485","openssl/crypto/dh/dh_depr.c":"3acb7d89701c08aec293c9a8f72c8564d2ed438008a156dd65f2110007d6941c","openssl/crypto/dh/dh_err.c":"78358e127d64f41a453dda8b14c29a86c127b9eae3b6673b81c8d1f1f0f1c37d","openssl/crypto/dh/dh_gen.c":"217882ada635b4cb3826bec6d5038e57d319d6461b15f3db2b898cb063a86686","openssl/crypto/dh/dh_kdf.c":"363b9b80e8002df14e9944a07ef2cafc7a1657e937c73ab0fee1729e15b82700","openssl/crypto/dh/dh_key.c":"0924f57cab2390c8642fd44c36e9bbae46f5040a6b031c85a157c5649f5a6239","openssl/crypto/dh/dh_lib.c":"b0b2596db218d7d4799bb645e91e96d8deebe9c29fb91be3557ec4daf09af2c4","openssl/crypto/dh/dh_local.h":"7d416db8510cb01d015816fd3cfe48e8c31f7130d9339084a32969f2cfa05b23","openssl/crypto/dh/dh_meth.c":"d06db6b0c7076e8783311606b5736799f271bfe96e82a34282f38fae7527e598","openssl/crypto/dh/dh_pmeth.c":"8e253377cf60e4c6951414d7032a476bd8f5b39b8dd73e6be7aa5f31dc70de93","openssl/crypto/dh/dh_prn.c":"52d6c69a3079ff431c1f0c4fba4561b3b35e3c8e3b864e837b36fe04b229376e","openssl/crypto/dh/dh_rfc5114.c":"ec521e03c0d46750d6ab81bc3f9ea563010cdd4105654292add4963c43f34ba7","openssl/crypto/dh/dh_rfc7919.c":"bb50a469470ac7e0e0464919f2b1a4525fdca2024082ea71906e08412083e6b8","openssl/crypto/dllmain.c":"8fac31d2a5be44be12783f486a0c947b34f537706e9679041025e3cbc4f1e86a","openssl/crypto/dsa/build.info":"085045ec79ec9a5862b89a021c7489ddcdcfbcd11282a5427c261f607799b003","openssl/crypto/dsa/dsa_ameth.c":"2d2d71bd13c7f03f9471e7e097a1121e620acfe9602102ec98b63bc02bbe4c9f","openssl/crypto/dsa/dsa_asn1.c":"7fc0c381019990d20c3f17d30189bd25b0bbce4dc6076ff82bec14aa242fcd1a","openssl/crypto/dsa/dsa_depr.c":"e8842ccab520759650fdf8f11fd9671eadd76a84a3dd99cbcea144d7a62d477d","openssl/crypto/dsa/dsa_err.c":"cf4d169cf5d725929d4642e2b9e0d364ade8a9bd6f3ed7588face74a761f83a6","openssl/crypto/dsa/dsa_gen.c":"da779bca293f86ba7fff0eba0ab1123dc1da92076cc5b17d74ca2457afb29a33","openssl/crypto/dsa/dsa_key.c":"994f194ebf96a3f508fddda63c202fb62a865011342ef7ca67fcc0e61b307751","openssl/crypto/dsa/dsa_lib.c":"7b4046813db5765108923a203582dcec87edcf4eda828c73faebd93d5e6d4fb7","openssl/crypto/dsa/dsa_local.h":"e5bab35bd60b618d6701f39fd2cae327ce1022216de6e7e7bbb3db33a56a04b7","openssl/crypto/dsa/dsa_meth.c":"3bfb2d0a05d9b1996464f36335f0ca18e8ddfc7e5fb0c823f35b0d9f634edf73","openssl/crypto/dsa/dsa_ossl.c":"401fc60603f2c2f4ea07df3ee9947f053d59579ba6a5c29af0e6ff46c476e4ac","openssl/crypto/dsa/dsa_pmeth.c":"75d81c26461dee4880598d315e4a3e5d8f14669374e0a4cff76ac1b29e21da3c","openssl/crypto/dsa/dsa_prn.c":"d7e3b0d7f192837d71683d71def73e0f59c472e22c3c6e8bfefd28c5ce4d7f3b","openssl/crypto/dsa/dsa_sign.c":"6ea0f5fa257c78daa400a3241875a50fca357722a982d634fcfacfccbeb7a850","openssl/crypto/dsa/dsa_vrf.c":"8bac622f0dcc0cf8ef4169cc0bbaac675f0fe0a44d13a8ddddfb23279674cc0f","openssl/crypto/dso/build.info":"f3ac516f673b6627cdd424b8a0187dc1204454b9c8ad7f3921e54fcf4c2b7d63","openssl/crypto/dso/dso_dl.c":"b0c47090ceccfc5eaee122bc081b2eecc57525ac2f9e16ff7ea5615b9834e67e","openssl/crypto/dso/dso_dlfcn.c":"1096fb62171b74e3c5e479bb013874286d23a52c8b55af8da6097849ff837809","openssl/crypto/dso/dso_err.c":"65da64f7372a8c3c941ac500388ed6b236c1c0587df47331efe0ee83a7094b0a","openssl/crypto/dso/dso_lib.c":"a4ce4fe5108efc8bea3548fa0e4cc377bbf5dc41b473d454abcedd195fc12b7b","openssl/crypto/dso/dso_local.h":"c8fb9be8ee8505ceb47d18959c53018949e68882a983bc6b155500824adead2a","openssl/crypto/dso/dso_openssl.c":"128e45bc40d044ecc31999d5ddc8a3bff7458984b394750e2512d6e63f288f56","openssl/crypto/dso/dso_vms.c":"b6b23417f7ebc775fd6cd6213e48430fea7aae71581b1b4b9f66134710c27549","openssl/crypto/dso/dso_win32.c":"c0a959463d6b39eb3de5be8e36aee2bb94eb0a02b17d16ad513851c0d97e2b77","openssl/crypto/ebcdic.c":"08ca75b55c1a19689de35f6826eb45d60096f9f61bfb177f4d47c6e7b164bd5b","openssl/crypto/ec/asm/ecp_nistz256-armv4.pl":"40ba05324054d59b0ff73206960b52fd98af1aefb527fc0653d88f66aa1f8075","openssl/crypto/ec/asm/ecp_nistz256-armv8.pl":"5d56ec0425c7e072fd47af26bc6a42c5b96831e7a5386233cbe9211d0c8384d7","openssl/crypto/ec/asm/ecp_nistz256-ppc64.pl":"bab3bd37522b68ebf4306d4a8611a9b9984c18af2502f133b1a45671c788bdf8","openssl/crypto/ec/asm/ecp_nistz256-sparcv9.pl":"0d5960e38388ebfb979259345a96d3e5c5a1eb01a1d307d04e46a01776c33c64","openssl/crypto/ec/asm/ecp_nistz256-x86.pl":"166cf499864dfb17509b744af27bd04f6c62553ca57a907f65247aebc7bd2033","openssl/crypto/ec/asm/ecp_nistz256-x86_64.pl":"3826ef600d5dea5ab791ea812a1499a768bd9d57f6fc194f752fe89942007ef3","openssl/crypto/ec/asm/x25519-ppc64.pl":"48a8881f53d115b750338ff3f5ea2b00b3c8cb12bfe3497ffe7efc14e7663c04","openssl/crypto/ec/asm/x25519-x86_64.pl":"b058c37ca6fd2e9ba6cd03dfa4925e43cfef8243388d3b906cc9eacbf515d42d","openssl/crypto/ec/build.info":"fdabcfbb5d33c483abc06efd155649d50d46a23ad330e9db93e53fa8fab7c95e","openssl/crypto/ec/curve25519.c":"804cccc55744600342c506be8ebfb89297f233994b42c1a6df43254da9be90e0","openssl/crypto/ec/curve448/arch_32/arch_intrinsics.h":"b6d5ddcba24f8724091b0f4e8ffb4eba3501050d7b56514040e9e35cd4d2dc28","openssl/crypto/ec/curve448/arch_32/f_impl.c":"8f2711a771d2de4e28e1af000972a97632b84dbbeca98200bff75bd4de9c68ce","openssl/crypto/ec/curve448/arch_32/f_impl.h":"8c4146a1896235ac63ea2c02ff368b485811efadc530e4e55a7772a5be3df0f5","openssl/crypto/ec/curve448/curve448.c":"edf001e0b4f388144a815d2a91c9e1196f444279e45ccb0e350958bb12830c94","openssl/crypto/ec/curve448/curve448_local.h":"45859eb89631a801785f23fd084372df5c6a9886f63b7a8c327a5a1da2c32835","openssl/crypto/ec/curve448/curve448_tables.c":"6a244fdb0e907bab2415ca902277c53e347ed4446d89a8cd96cb1f6d422851aa","openssl/crypto/ec/curve448/curve448utils.h":"14590b6c857ca26f8f4d902aa959d22f939b5c8c233d4dd1dafef44f8345480d","openssl/crypto/ec/curve448/ed448.h":"162ffa623f582675f30cd07397e8127acb65ad50dab864f0690ad01169070e01","openssl/crypto/ec/curve448/eddsa.c":"5fbd57402b93953751db5b0d877183c455acd4e5a799bad1b4c04eca476c25f4","openssl/crypto/ec/curve448/f_generic.c":"07e9c3ffec06daa1493b77afa3d929627f8e104b6a7068a5ce8c82cf2abe0530","openssl/crypto/ec/curve448/field.h":"2d3bcdad69091dce8556e854f9ef8b480966b2422f07d8d62d15dbf1102e9a81","openssl/crypto/ec/curve448/point_448.h":"7934398d93fa3c4e1586e88ce30e9ab9e7fa6cd5bee469c7e266d6c008276e52","openssl/crypto/ec/curve448/scalar.c":"d6b59d4271c2b689a137c5329779f48437d89c0dd420331b0dcd19c07e8d1bbc","openssl/crypto/ec/curve448/word.h":"e6c2a871e623d231d86330622a30172e39189b9d0d6de01ef3349373592fad1d","openssl/crypto/ec/ec2_oct.c":"4c816014a4a39e5b5d783cb644ebce73326cf7d4102fbd5ed3173e0c47c41f47","openssl/crypto/ec/ec2_smpl.c":"3a1d9eb3215d1aae80f5a97b9a70cbea244a17aa32ff31547a3750c27f91c6f7","openssl/crypto/ec/ec_ameth.c":"f037546edeef994b2161c337cda66ed526b6fb2dbd7680350d3c88feb08f8a56","openssl/crypto/ec/ec_asn1.c":"52ef18d4f3e2b283c79b5ce5288ffe203bbb59043c7ad3ecd6ec5f28bd96751f","openssl/crypto/ec/ec_check.c":"968eacf0ec42ab6ea40d9b4e7bfe92d8839e7650fc6c4cafdb5526e24db93bda","openssl/crypto/ec/ec_curve.c":"6b5854395edfb6500537ae22c3da66592158cabbbf3d982198c10cae74e11390","openssl/crypto/ec/ec_cvt.c":"21751232ee7f55c78b27297d1748d1694bd0444503ecd1e4da5ef28e0ec2c06c","openssl/crypto/ec/ec_err.c":"822f407e3bb07bbd155532cb2d318445f75a4c23dc51d839cc572f063b8c3b31","openssl/crypto/ec/ec_key.c":"6f9e2a1f87011c811c09ba0905cb3d83f58584dd8c1bd10f8fc3bf9d4632c2c5","openssl/crypto/ec/ec_kmeth.c":"c8873b9c502b2ec7ca701b75f179a03b17e1d0f232ceaf93a7e8b2a9dc09ed51","openssl/crypto/ec/ec_lib.c":"3b90b027406fa37e449a29ef5fda8d618050264b20ac72cb443afe3cb41a8ca5","openssl/crypto/ec/ec_local.h":"2bd3d1770f28940ae353c7967d67a868717c131360611fd29e1c8ab4759c8d15","openssl/crypto/ec/ec_mult.c":"e5af943eb7b22d20c2924040cc82780a5db6f28adb034b932b68fe63ccb050fe","openssl/crypto/ec/ec_oct.c":"e6bc6cc8381d7b6f2e3db9c4e80f8c7f7a256e4955bd639e256a6fba4ec8e235","openssl/crypto/ec/ec_pmeth.c":"fa5ade19d352740ec048bcf20789ff225f2f7752dcb1b166005c24a47983425a","openssl/crypto/ec/ec_print.c":"35731d346565725e5fe6663d76c4b7552ada501c8ac154ca0364674e5ab4b249","openssl/crypto/ec/ecdh_kdf.c":"9483709aac20fd03d9a602f933b9623c4e01343a8a9ebca269cf765f28ca839a","openssl/crypto/ec/ecdh_ossl.c":"6771ed31fcc563d61455896d49592f73de249a4a02ab919f2e2dc61c6e32a069","openssl/crypto/ec/ecdsa_ossl.c":"e9d540bf9e98f823ff8b94d077fd42683bd52471a1b2f0e27af839b22e7b2bac","openssl/crypto/ec/ecdsa_sign.c":"ef0aba33c4d785892e8b04bc215818dd79346f12198b86e926306bbb82906540","openssl/crypto/ec/ecdsa_vrf.c":"9144435f6f8da7b6787302332fd512817f1351e648d6aad8b97f66dab750410c","openssl/crypto/ec/eck_prn.c":"2a61e56b81eca251023e6def47349289a25a71028d3cac71392720514bbaff37","openssl/crypto/ec/ecp_mont.c":"413f82245a3ef45776c928c96b539cd02a40c7f11610f5ae8657aa9e1268125a","openssl/crypto/ec/ecp_nist.c":"695fdbe3f4c21d3c9860e7433ad506c39473e702fa69ed1a9d6814de5a1652b0","openssl/crypto/ec/ecp_nistp224.c":"133ba08c45fbdcb9cc7003e6965a43a40c3b8edde14d8014ffb17b3e3dd1588b","openssl/crypto/ec/ecp_nistp256.c":"8d63ee38a1a20c6f0704a724a1638aea565c74e58e13ee9ec5965736ce90b60f","openssl/crypto/ec/ecp_nistp521.c":"47c3e20705cd7c9deecf527f90374270a30a49e33573d4d7e99463405f0c7f5b","openssl/crypto/ec/ecp_nistputil.c":"d9aec2730f8921bfe6f4bd8ad09859a89e717d79c5a5c116143f403a57dd8fd2","openssl/crypto/ec/ecp_nistz256.c":"276e7da97fd9317268a8edb5a05670672f2811116733f76ed4eda8dbec1891b3","openssl/crypto/ec/ecp_nistz256_table.c":"d811f3e5e3d6a188fd33da7366daef81d8e69d083963033a6b8468d42fe99855","openssl/crypto/ec/ecp_oct.c":"5b572e7ebf6eb4888042fb3e7a0cc84e3bab4ba954fa79a4fb3de6d7c8a3562d","openssl/crypto/ec/ecp_smpl.c":"3ccb53c7c5836497174a69dd6d47edb061c1986ccd52bdc70a036c3f76b87064","openssl/crypto/ec/ecx_meth.c":"a3ae62fb9c7c9243e610a1b258c31810999bfcf734abd3d0b618dd4a5673363c","openssl/crypto/engine/README":"75f83cd826e3d844a982830cfe3dd40a9745680f598823dc6c20483433e7496c","openssl/crypto/engine/build.info":"bc69605adbffb3f6e78073735a304007ac70c302c1cdadda0598475077a0b06f","openssl/crypto/engine/eng_all.c":"4019d9ef5b8070769666bb06d9673067039f222f29c34f988c8f18cc2f52e507","openssl/crypto/engine/eng_cnf.c":"c5776261e20cd6e2b01c9faa98ac27920748652ff8870b50e93c9dc43e33eb40","openssl/crypto/engine/eng_ctrl.c":"cc4295f6d8aae029a526f909a949c99d1798e766e662f1af36788b587aefd02e","openssl/crypto/engine/eng_devcrypto.c":"5930b4aed3a176d9448f2d792229727c103554861b7cd93fb534448d5fd608f6","openssl/crypto/engine/eng_dyn.c":"d623360f1c99214646d595ed18440395d9a8a8031ab2179ab303d79d503d1469","openssl/crypto/engine/eng_err.c":"f7528c6b2e12cba00592e138292428653b6d67f82d119ed274210459fae8e96c","openssl/crypto/engine/eng_fat.c":"dade309980fd6ff737918439cd5f4cbbe2ceb6bd685f57162836e874bdcb09f5","openssl/crypto/engine/eng_init.c":"ce7c7a5abbbb4ce3755d88b49e3ae9051c9364988bcdce82e9714e7b1f50eb6b","openssl/crypto/engine/eng_lib.c":"9b27cbe36d2fcdf93e4c3000b2f746b7536ba5f13f9329555d8eecca80c235ce","openssl/crypto/engine/eng_list.c":"0e622b37a07f38a7a1230225aa2dea99b05007040a770a95d22f3496d1714a46","openssl/crypto/engine/eng_local.h":"d2f5992e26df3cac6bec6d92999aca767a75991e428427bbd18f4a359724c9d4","openssl/crypto/engine/eng_openssl.c":"f0b6d2784744f4de19b58415a32f0311016826bf2b942de683275d099adad5bc","openssl/crypto/engine/eng_pkey.c":"5980b2e7d788172ca7363a9e599efc60978e0e01e27f2eb5a20ff72177908a4c","openssl/crypto/engine/eng_rdrand.c":"00c500e3ab162d6ebebd05a35969e8cf87e666056493c27005e1056ac08a9681","openssl/crypto/engine/eng_table.c":"0119fd35633708e5b3d3eb84affe6567e859bcb25b2ee803ee296d9ca7e377f7","openssl/crypto/engine/tb_asnmth.c":"697b41214c83500a5d6a24db15349047d861af1fb9698cbf4a1ea583b7e4c34f","openssl/crypto/engine/tb_cipher.c":"a0a78c49864bfa6a12e51aec865ada99c8f2b6d6173f95c131091f14f5596434","openssl/crypto/engine/tb_dh.c":"44df00bbfe79beb277bdaf5ab6b5b67e7a42c7aeb41d78282cb066b2845ec1c3","openssl/crypto/engine/tb_digest.c":"7f91c40451ec2af39e1589c99798c03227267b52ac2137656fe764a030030138","openssl/crypto/engine/tb_dsa.c":"11d608eb60f707236c12b2342d6e46e78a35546f5080d24fc2bec5fc93d5da8d","openssl/crypto/engine/tb_eckey.c":"d01e2e757b633478d735813aa7f11d7ea840b57993919c9ade502e0bd3623177","openssl/crypto/engine/tb_pkmeth.c":"cdb64c39295890bc8f513910cc4e99366c77551e3d58f1b15f33eac953025a14","openssl/crypto/engine/tb_rand.c":"8a3db3bdee6b44a706e58a27b9f2b77000a3397251fcd3c0b3069e50d1e92061","openssl/crypto/engine/tb_rsa.c":"cc36a9a7deb850d6a68ae963accb17cd27fa22aa842c3e72ab02ffa2444cae49","openssl/crypto/err/README":"c5ed5efd4e5ace164c73404aa86a8dc1c86da1838f78ebd69488fbe29ee907e5","openssl/crypto/err/build.info":"d6041997113bd776a1d2a0e997b2c222f289e4c3f3b7709b3034b8389721395f","openssl/crypto/err/err.c":"b48fea983074c51a5025790995b2826f40132d454e8f4a7ceb5bfbcc776a11c6","openssl/crypto/err/err_all.c":"dc089a12d9e7a982c53f8a823f920dc02d8a20ee70591f00e2994df3f440b0fc","openssl/crypto/err/err_prn.c":"78864cf84d5e6a3e88fa8095a8ef2b8d17ef5254d85c405e86964ec68445881e","openssl/crypto/err/openssl.ec":"2b72f95498562d1cba12ede9d176cb78f7cc952471e09121c05a14677b89d3f6","openssl/crypto/err/openssl.txt":"b4d1530c7c28a0664b887ee5680dc2302a98bef602405cb7646f45c05aaea602","openssl/crypto/evp/bio_b64.c":"52cffad34f8a36d8783399304aeeac3a31ad76738ffad067cd148d82e311980c","openssl/crypto/evp/bio_enc.c":"5789bae803d56f7242285af82ee7397bfe9bc41c99dbe56f3391554295a6ffa2","openssl/crypto/evp/bio_md.c":"bb69f5c9e0115d6f6193e415966078b74bf13030ecbc9bb496bb10a51492397f","openssl/crypto/evp/bio_ok.c":"5738ef882340cb88dc8e6b3690c098bc84666c1bdc46f92581157151aeb1982f","openssl/crypto/evp/build.info":"31b20792b825dc95e34adce28499a555871514b73767f57af30911d6ec42be46","openssl/crypto/evp/c_allc.c":"9b0317fad52f722d505c9e7124fb802b7e9b9ba4e592f6c53c181bd72cdf4ea1","openssl/crypto/evp/c_alld.c":"7b91fae290bd3e84b44cf8d273dd47cb52dc7a190278c0a7770253a5b92f67c4","openssl/crypto/evp/cmeth_lib.c":"454c5c511e1b11ec9bccd9eb81b13bf7fe3b9b49aab1d4e2af9431fdf4685384","openssl/crypto/evp/digest.c":"fc10a2d452722ebe09117f51286ce7dc36bd21e75352ec4e5551b69d78da4400","openssl/crypto/evp/e_aes.c":"1c59ecbf4eafcf124ace1993effa8eab8980bb009519db6ceb8698f52a200f61","openssl/crypto/evp/e_aes_cbc_hmac_sha1.c":"ab83f218805953b0c69b333bd715408fa33355aea73d19f5cfd65c4e5803ae9d","openssl/crypto/evp/e_aes_cbc_hmac_sha256.c":"dc7d54bc7aebda2e046eb232a0697ac2199d38c401336dc6ff8bbcab203013f4","openssl/crypto/evp/e_aria.c":"3e84d9441695d57ebc53359bd859409825b8ff4129f556854d30850cbb0b7db5","openssl/crypto/evp/e_bf.c":"a7f1835f01ce60ae0930e96d5794ef9627645a8133d40f8156035b1ca7f9f912","openssl/crypto/evp/e_camellia.c":"f17a6450ed62768127fdc476ca7c4ecc3b13036a158428c9ac4c7a3998044929","openssl/crypto/evp/e_cast.c":"777149f3560cbafa09db82529c62e229821fcd9b8d0cd52ccce1911059ddc002","openssl/crypto/evp/e_chacha20_poly1305.c":"e3b0340460cff799fa31dde2fd243efbe491243cd3fd45785aa754a9e58aaaed","openssl/crypto/evp/e_des.c":"ed58fe7034f20460ae033009948cbff82f4c29cf759c7a5c20ef16fb939a8fb2","openssl/crypto/evp/e_des3.c":"9870e2d940343976bef9f0dfb9ed472e6f9b13c7a088ac0f642e81a13fb9b023","openssl/crypto/evp/e_idea.c":"9367d350ee726882edef664b36be5ffb087bcd5784c188e3c1eab80b0f9b61ea","openssl/crypto/evp/e_null.c":"d4fd2e9d7ffbd334d0698f33688001c6d83d416179dfaecf0da158a51cfb1dfb","openssl/crypto/evp/e_old.c":"c5d4176d9f86eb7030fb37044abda9e15484ebd40917f5203fdbd27820642b83","openssl/crypto/evp/e_rc2.c":"271a9892ec2c9fb5d5ac19549bba713f9d1cc7533a6c4729b8855b2086756c75","openssl/crypto/evp/e_rc4.c":"7b651e12cf17d62c54c5e77f14e2dc4a330e09f0ca16bb15a7b88661f97f754b","openssl/crypto/evp/e_rc4_hmac_md5.c":"f31b8b2f34dd55c4888e7f3f832159e0f0f121334f89123177465d5766274eb5","openssl/crypto/evp/e_rc5.c":"cdbb95bd98f94046b2948b5afccb39af8ecca3f8678e75ae323785f6a6ddc158","openssl/crypto/evp/e_seed.c":"90a6cf552de0fed01659500527a20836c9459f5cabc37996a1b350493ea7a4e7","openssl/crypto/evp/e_sm4.c":"90040528209db9a1f93ead632b1dfee44393754c31cd4f8c02afdf36f1257a85","openssl/crypto/evp/e_xcbc_d.c":"9e50d87e3a83f9a12cc7529f2e9d92616b1f3592ea52c9621b26fa3051c49c22","openssl/crypto/evp/encode.c":"00bb9baa416979e8d4fdc3a8d035f974747d6fb707a874a0a5f5504a4ad27dfb","openssl/crypto/evp/evp_cnf.c":"010e9619d2fdc706cbe9d6fd7af598455de26f3d98d8e4dc0ae6a8b9672f6c03","openssl/crypto/evp/evp_enc.c":"cce46922626fddde89b293e57d9618ade8162fba396dd3219cc05101a71b0d69","openssl/crypto/evp/evp_err.c":"d9defec02b27e2a146b6eca952dc8442c817e976c80904866f57b73d524341b8","openssl/crypto/evp/evp_key.c":"e6607a748ad0f59bcb41fb65341f3092ef6f776596c4e757e3467c4d6eb23835","openssl/crypto/evp/evp_lib.c":"04e61c90c042d423532d0991f68894394dd7ace7348b1f8de97eaad684d5d540","openssl/crypto/evp/evp_local.h":"1125de0e536f93ab744e580cf86350977681f93d6f6f3756c86725a74d7e9e76","openssl/crypto/evp/evp_pbe.c":"d35b96f74c9a4abfbaed7b4331047ce2b74374d2ee1f253fe8f7ad1aa859a178","openssl/crypto/evp/evp_pkey.c":"47223df9ca9ae75ae9288f66bb2f705dcc20673295595e5aa1b98256c69b717f","openssl/crypto/evp/m_md2.c":"cc3d0201ae7928dfb8488e06c9238cd75cd6d1c8afdc3748d66d097bcee82e20","openssl/crypto/evp/m_md4.c":"dbb59fd4839783fc0f27bcdb7072bf9603ecbd111f60e86e117561af46e8b04b","openssl/crypto/evp/m_md5.c":"bf7492079876e0a628b82f8b6bdc71563f4d4501ec169c071eec2d0074d6d642","openssl/crypto/evp/m_md5_sha1.c":"9ea3a96f8fae43da1fd0c4a821b68495a52b253c93ac529c9e60f19659483b3a","openssl/crypto/evp/m_mdc2.c":"347d2e4e7466904b60a016f99ac167772ec1c548ff13375b89b18842e7c91ce3","openssl/crypto/evp/m_null.c":"93396bdcb42c7ca0a32a4708c3a17d6d659c123dc70def32d572468f5eae6f12","openssl/crypto/evp/m_ripemd.c":"169cf92c735f5dcf6b4ba901c99e9daad9067770ae188f54dea2cb26f45e7344","openssl/crypto/evp/m_sha1.c":"3d8bd7f232cc5d373ed6f23ec16d0e36711e92eff1ba9db514a11ea536d65b72","openssl/crypto/evp/m_sha3.c":"094ef2a430dddea20b997dd39bb77742e274ddd5f20ce229d1313f490caffe67","openssl/crypto/evp/m_sigver.c":"27ebe435751097a40f6984bd8f2271eeb7cf357a87ac6d4ccc011058245a8b87","openssl/crypto/evp/m_wp.c":"dfca1381ae8eb6c5595c8ae96ac3619cdc1aed0fff6dbc4c3586d946943b659b","openssl/crypto/evp/names.c":"813349cdfbb70dd2d25e8441408f0ca4da42c14fd79806ea0159b1b6666babd7","openssl/crypto/evp/p5_crpt.c":"1adb6d06b8f335a704917885f79a0c0c587c78f481c6666f86d9284d893f86e2","openssl/crypto/evp/p5_crpt2.c":"daa3a33108d10b4233bb52b86a972318467bf6ec43bd8e242a60e2318a921d3e","openssl/crypto/evp/p_dec.c":"67a9a619393b8aa0229734ed9be6127ee28fdfbf0a22897ad71b69c608058d1f","openssl/crypto/evp/p_enc.c":"1c53c74c5db4ffaca90bc2958415298f99a88ce3c4b2f512a4bc631fb14515a6","openssl/crypto/evp/p_lib.c":"1533075e83fa9acb3eb8eb88f6bfae6981abbfa9ed3cdbf5cfd47dcbefb9610e","openssl/crypto/evp/p_open.c":"77b6849c6aaabd4e1eea6cbf4109fe563f94ae953f316ebbd18fdaa8c20c6640","openssl/crypto/evp/p_seal.c":"b00d90129b20cec822bfa52c8f46931d58e45a552dbe15f3f49df112a3c0729a","openssl/crypto/evp/p_sign.c":"d5dcf61a03bf789b27d95d0c7977be687776b478c915a0001ce9f744ad0fbdd2","openssl/crypto/evp/p_verify.c":"9bddcb790cb0c5f6af76c2447de2fd8e02a402e2c18c229782045e0f25dc1b2f","openssl/crypto/evp/pbe_scrypt.c":"c85cfc008e7b092df14f1f1de6086bb828c9086ea1d05c3a821d2d70abe8bab3","openssl/crypto/evp/pmeth_fn.c":"a4b2bbc946bb4d2f66384139a8cbf4e78d96151991544d9bc228a8600da9b325","openssl/crypto/evp/pmeth_gn.c":"3466a34a86030d86e7083d3b387d4db85d95fb2f80c99649724019efb50d85c1","openssl/crypto/evp/pmeth_lib.c":"6447da66b25fc86fec36e7726e169de8c62a3ff7fb9e0a19b6a94c3d042b74e8","openssl/crypto/ex_data.c":"5623bb2a73d34b936fdea2beac22ad046b9369506c9d31397a09d82fd83de9b7","openssl/crypto/getenv.c":"9f0b7d2434aee9963a2614b9e27a214fba6249b513050ab34985e7aa37ee759a","openssl/crypto/hmac/build.info":"bb9af1e0035a0cf7208f4ba6100365554be8ac10f1d5d0eece723d0fac44753b","openssl/crypto/hmac/hm_ameth.c":"56c2c30d57ba4443eaaa92dbe14c7d15cf34a824fd23bdb901034420404f0996","openssl/crypto/hmac/hm_pmeth.c":"8872aadd35ff9f8597a3a4d62e2f086544c2763279bff4eb191c1e06c48f792e","openssl/crypto/hmac/hmac.c":"db86ce730a7cdbe6ef9ee57353ff039b70e71aada2d09cbd42c43eac729a7bed","openssl/crypto/hmac/hmac_local.h":"67a3495876f2b776f84c7bb646105265bbe7c74f67c3f4c7820b9d6d022fcbb8","openssl/crypto/ia64cpuid.S":"f34b5edb66e3b16a8dedb0dff9067d197ec999b33c8870884ab7532015b1307a","openssl/crypto/idea/build.info":"6f12243caa237b8840094e485d046b787d390eea3e8e1df4274d2e29d22c1f65","openssl/crypto/idea/i_cbc.c":"2515d3804eafd96bf0fef5c47d49061606a995d5f6319a85240af3bcff1fe8c2","openssl/crypto/idea/i_cfb64.c":"253523f60a8ebd14a33ad86129dca3d080467c74a2d51e8ba91a7bfe2d7702b0","openssl/crypto/idea/i_ecb.c":"2083cd6bc4f4516734ab7352db2eaeb2066b2e1065881c8a4348e7c4d0da67bc","openssl/crypto/idea/i_ofb64.c":"c38bf911e6e1361615c76c6a462766c3e7cdcccabddec04e18819b6bf3ad9d7a","openssl/crypto/idea/i_skey.c":"2145c01e4c4741016678397aed68dedcdf1fb1b5c1ad1709168e6e5e58a6080f","openssl/crypto/idea/idea_local.h":"440ad054c70c6fee42667331c4536d8372caf2049ef76e58732f366ec9da894e","openssl/crypto/init.c":"2bb263f93706325c61f2d2ecef19b592021809a3ffd83e77fb6612d4c055fb6e","openssl/crypto/kdf/build.info":"eee49c5e0a5099bc7ba1994cced8d073e0438e590400cc303a19c17e3a311202","openssl/crypto/kdf/hkdf.c":"0fe71bcb78f768eb065f09a3d925fe2763c3e28fec4671d726dd0e3cb2c9cf0e","openssl/crypto/kdf/kdf_err.c":"0fedb61ca4b0a3bfdfb0f889ef489080c438046283c7af4573092c3ef0ca84cc","openssl/crypto/kdf/scrypt.c":"99b292f19298191695c2e9b893437f5642106ed1affe5cfdde68f03758c5ec76","openssl/crypto/kdf/tls1_prf.c":"a519d3ff721d4ec59befac8586e24624fa87d9d8f6479327f7af58d652b6e4e5","openssl/crypto/lhash/build.info":"6934ebf844a1756ef7ad6c13a94786fab5b6b4aca73492f90c4e9a342beb787e","openssl/crypto/lhash/lh_stats.c":"3b12d7c2ba46b9739ee6035b6d7d8fdec3d337e2cd87ec0ce1f179c5a370f9bd","openssl/crypto/lhash/lhash.c":"f5bf379f9681ebe9f1144828b9763f1095ec2b5f3d791110ef6b60056117fcb9","openssl/crypto/lhash/lhash_local.h":"c4295080821d4dc647b56b0c4128e8676728eeb88e22b2868a73156105034266","openssl/crypto/md2/build.info":"ff114b6e07a281adee13fb6d0d15f64cb7cc14143af8617164908f3dddb9e88a","openssl/crypto/md2/md2_dgst.c":"d47b4a0a99f9d630589c51c1b628c322aaf1e7fb55446ef0633681fb25d158c1","openssl/crypto/md2/md2_one.c":"1d37c2b974f9a41bce8ddd0a3b8bc3a3eaa11afc3ecb1d937b3d5ec1b0af7355","openssl/crypto/md4/build.info":"947373b325c169c3c8e7f232e254ecc16b2cb87ecd5bce73e758bd81625c7d73","openssl/crypto/md4/md4_dgst.c":"c89d489bded3fc498e48d9516dd9e1089c2a432a35a42bbe66c3159dd8fe6148","openssl/crypto/md4/md4_local.h":"e30870635cb21dc5119422daf19330f864542758e45d3f5c6b88a9c0567d2f89","openssl/crypto/md4/md4_one.c":"872416f5e31d003951e5b62e6f2f7a5166caccc63ba41cceb0b2219f107f1442","openssl/crypto/md5/asm/md5-586.pl":"6c23a2dd3325f7fda3d84d5d31fd2450c722e471a1c19a49e23315656441008a","openssl/crypto/md5/asm/md5-sparcv9.pl":"4194570443a6b459e56848d681dc93a78a504585c4e2bbb95126d07b3bb0f078","openssl/crypto/md5/asm/md5-x86_64.pl":"96a6669432191059e706c30139bf688c5f7acdb44bdbf1aef86d812c72bf49e0","openssl/crypto/md5/build.info":"9c78923fcaf42ed7e04a9e57ab643d3530c001352d833d0dd36c414b7f1b2ed1","openssl/crypto/md5/md5_dgst.c":"29ef7ffc6454efd1f76de31f485fcbad696a5e5ab866617b0ab23d2fade68bc2","openssl/crypto/md5/md5_local.h":"fb5941cb742c7c01dcc1382d47cbe8472d34fdaa24b3bca41cb291940fc5d982","openssl/crypto/md5/md5_one.c":"4e1110d587e7369c18b91bbe7d433b88d01a68454e54568d0d4fb1947879a120","openssl/crypto/mdc2/build.info":"ec3d4b9949842d5ff0b2372f3323f4b129dab1f55a97bfb399518e19381b5747","openssl/crypto/mdc2/mdc2_one.c":"2e7948368f07b0f02c517f59f73a3973e196940f02926c7290419da6252e98ab","openssl/crypto/mdc2/mdc2dgst.c":"11eaf3f8e718fca75d5364d31633e59ede1473e9bdbbfaaf04eef088bc78b2c5","openssl/crypto/mem.c":"85dd1c69a5b878a3cc98de20b6a927ce945823c6ffd2359e0d508e4ef0869255","openssl/crypto/mem_clr.c":"374d9f79d0c51ee855d40e816fbe2cca17030162d8f9866ebfc68e2a1c0f2a1a","openssl/crypto/mem_dbg.c":"20af715997e1336b3a66be3d0370bbdf01290ab551f5cff468588864141e3f43","openssl/crypto/mem_sec.c":"b69dc9a9290dd9568d0e90ca93a168c5106b8258a8e880afbb84279e4f44bfa5","openssl/crypto/mips_arch.h":"0c1160b6bb82104e8267f6d6f5de9e66df6fd3455dc90132b1c2de631512d39b","openssl/crypto/modes/asm/aesni-gcm-x86_64.pl":"e2a5b29a625159dd9a6c23f880eb1736b607e4918c1af8fc83529e046296d16c","openssl/crypto/modes/asm/ghash-alpha.pl":"3c33c85ca98065c1208d3c7e2005e436f7f2deb810bfc91b69736d4940d881a6","openssl/crypto/modes/asm/ghash-armv4.pl":"c54f94bfa356dee899ce78aec9d4381431f19e9862550a443ebbab1b83c23822","openssl/crypto/modes/asm/ghash-c64xplus.pl":"ba3e68b6a74bf2767acea24097d19c58d28f23dd898f06eac4e4fb47f07131c6","openssl/crypto/modes/asm/ghash-ia64.pl":"23d1d1359b8eb97f00f61a68a68ed4a982a7eba1a198b59060127d337237a312","openssl/crypto/modes/asm/ghash-parisc.pl":"7f0997ff284ef46222397a7302e894deac61dd3618058869a4cd285eb26e9228","openssl/crypto/modes/asm/ghash-s390x.pl":"8aff7b4902484e77c76b48be8b7cf6a4cd381be4a96e7c3de87ca49214903160","openssl/crypto/modes/asm/ghash-sparcv9.pl":"d3ac07ae68a3818e04f4c1a4ea3eed9ac2f950e046660e7156010e805dc53e25","openssl/crypto/modes/asm/ghash-x86.pl":"02ce4df864d0137ab32b488e5c3f79c3b92f43603bb5ca8be6cbc3d5f3ac7a5f","openssl/crypto/modes/asm/ghash-x86_64.pl":"260aa24d4546b6646690445ba0b38edba403d7913c09e5399f4ac5eafce7eda6","openssl/crypto/modes/asm/ghashp8-ppc.pl":"e0f1064d81d64f236dd5a729406838d90b08c27e2121096c52c413c670907e2b","openssl/crypto/modes/asm/ghashv8-armx.pl":"cb5854d36d240364c6fec6671c3db141e74687bcc5d88dbf94a1bf5cf7527e79","openssl/crypto/modes/build.info":"c5a0c305c1d3b6ca947c7987302a1d2d38f0f22fae1d3675205826c3d23575c7","openssl/crypto/modes/cbc128.c":"029978aa09c2d5349bcf62e75d0f3070950053724dd94dca6da940c0195e6617","openssl/crypto/modes/ccm128.c":"7ea24c0a5373ec9f4732954f4bae27875378c248c1f1cc1bfda3fbc2c1cd27b6","openssl/crypto/modes/cfb128.c":"83e1967f7dfcf6d03ac7f0da52ed01f4eb10e52ee106c6191a4098f9a74d96e7","openssl/crypto/modes/ctr128.c":"bf15a34551c348142d30f18f6d6c4e8e55bba35df3833d6076e5ea25e6740b6d","openssl/crypto/modes/cts128.c":"353952f605011761858ebdc8c0a9f56c449b81df2d1d4045158290f519fb9f8a","openssl/crypto/modes/gcm128.c":"ff6d62dd2a5aba155f6007d5cdfd0b0d4c86a23f6f7c2edc97e89535307902f9","openssl/crypto/modes/modes_local.h":"e9eb6afc0101d645d06a49c76cd91dc922d8b537224f130d339ba0a2761c3fc1","openssl/crypto/modes/ocb128.c":"c4f2df501f93702acc375a5f12630c62e95b81f8a2737483969472d9a377d6b7","openssl/crypto/modes/ofb128.c":"2cfeeb9562763a1b662f06b8c8beebae22b9453e77ac50ff6c379afeb1a189ef","openssl/crypto/modes/wrap128.c":"e1a966397a1ca4dcc16813367ca786409225cf8eac6038df0ad59c3a80e07962","openssl/crypto/modes/xts128.c":"174f626aad1d8bbd18f57b7d689d832401c9e51c1b4f999feffd682bed20ce2d","openssl/crypto/o_dir.c":"c62dd0f9bf71744ba93906522a39ebd1678ef102eac315c8661c36bd46fd3291","openssl/crypto/o_fips.c":"90917fc13bb8faa86f5c442bc650808330e3684a56cc4a54e0834678a70e7c02","openssl/crypto/o_fopen.c":"849a9fe62b26add36b65231c0e9faa1436d0f7f61bb921994f7a05d43fc9b66e","openssl/crypto/o_init.c":"71faba14f840d84ac595b4bb07f2a02b714c5a1ea28a72873b265765268e2625","openssl/crypto/o_str.c":"58f3c1b0c70b860a973145a4e2ed049cacc4ad09b4dffebf0af1c13ee0ed972b","openssl/crypto/o_time.c":"33e4971f94b1e6577a580e78ca16a3b9b40a5f6874e860aaa1ba95bae0462b25","openssl/crypto/objects/README":"ea1cb7962ba3ec620e533d2ae20de9d31e637ee8335886a8e9867e52ab0f3215","openssl/crypto/objects/build.info":"e8684ea0bdafbc725d38a799848bc2ee106bef9eeb75794790bb55779fa5fdfe","openssl/crypto/objects/o_names.c":"58c4a330bf6820c7c3e9ef6d163834449d1216ffde7faf2babb366ea785b1e85","openssl/crypto/objects/obj_dat.c":"7291e67ae242bb59dffa0bddb5a4efc24fea27dac94bf08d16014d3767bfed32","openssl/crypto/objects/obj_dat.h":"03456c2351cd0669e6166a735df81d2d3854f9181769f4e21ea90eaefedae90f","openssl/crypto/objects/obj_dat.pl":"863b2ffdd2cc5d5eb328632eaee2225a53c5314460155915b7adb50f72ad4c23","openssl/crypto/objects/obj_err.c":"dd742c38b0b28d04d7b39e163236513b589f6b7780bafb57fd2997abbfe17cfe","openssl/crypto/objects/obj_lib.c":"c1f5721213e0d9466a9d61fc482a2ecee9b87277eead6095e0872c7ae509ba43","openssl/crypto/objects/obj_local.h":"c0a87d694fafba3b8fe96b184a77d9107c55f30e239cf93d8f89cb09bf6d827d","openssl/crypto/objects/obj_mac.num":"95ae10336125c0b5d5d618c24be928d3aa2b97ed7219ebb607b42a8d5720db61","openssl/crypto/objects/obj_xref.c":"4843391d202580b48bd01c603c595dcc4a8bdcb2e40cc67c53680d609ffe9f1c","openssl/crypto/objects/obj_xref.h":"ff0d0aceb9f65ce5a650504e8fd056b2528f9386b26d07208e7e09f8423e8d8c","openssl/crypto/objects/obj_xref.txt":"a7a6cf5147be047cd235cd63702e611c270ab8cb482e6210801188185ae2886d","openssl/crypto/objects/objects.pl":"6c538d5c2e4e97bbda5fef8ae60004c397f9a536987e8ecde988442107d01276","openssl/crypto/objects/objects.txt":"99b4c494e35bbf182979b922d62301f3c93e38069efcc41f91711cfe194ee237","openssl/crypto/objects/objxref.pl":"a6c1903f5814eaaa89d2e9fbb009bef2f8c4144cc53bf74fe07e407eb876ada2","openssl/crypto/ocsp/build.info":"c376f4387ed224b780503c83cc11c022896ceefd487649d83dad3c3f12e8a91b","openssl/crypto/ocsp/ocsp_asn.c":"3a1357b0fda1a0013736f2ea9b9174025893bc72c376b61ad18e97db6435697c","openssl/crypto/ocsp/ocsp_cl.c":"3696a5f991086053d2f7b913aaadb9425ef23ea3b26059a5ec2dff5a31e782b6","openssl/crypto/ocsp/ocsp_err.c":"3807ee304722a187d02114de43a5af6ad7e5bccc58f35bcbdfaeeb27a412f07b","openssl/crypto/ocsp/ocsp_ext.c":"70ad06e65b00be76733516bc413064604e740564014c0888a30ee11ceb9f2fc0","openssl/crypto/ocsp/ocsp_ht.c":"ae3c7b41ee3f1908eddacedcf114064e6f3d3cf178d0b1b589a917f1d2526d3f","openssl/crypto/ocsp/ocsp_lib.c":"87f1026201007222533ecaafc39d2e33018d422d336251080aaf26f03c833b02","openssl/crypto/ocsp/ocsp_local.h":"78752d1015577f36373c8d1f43ec1892a18004edccaa942e8c0835ac8a5cfb06","openssl/crypto/ocsp/ocsp_prn.c":"9c2367f405e1b112cff4147806897d24a40c34c0465564d14aa12b9bbcf4891b","openssl/crypto/ocsp/ocsp_srv.c":"71c8bd2bcf5eaeffc148ab8f7c95a7b1fdbb5a3e789577a4ec4bf6e9aba5cf50","openssl/crypto/ocsp/ocsp_vfy.c":"3c5a3068ba3c45aab7a45bb17ae1b549205af725222c3e3aa9e55cc0e12cb668","openssl/crypto/ocsp/v3_ocsp.c":"04c9cb4c315ebfdc57f1a0efc6e4831a08c14b679e8e48a4b2c3c930f78cb61e","openssl/crypto/pariscid.pl":"671157af7edf4eb831310affc0d44cc51a17b35d6baaa7f35b95c86e11900ea9","openssl/crypto/pem/build.info":"c419f3165a3ff2cc9e5998a03117291c1183585c2b8823b37a5298ae9914b04e","openssl/crypto/pem/pem_all.c":"5a16e9192d90974de9dbd1553dd09fa373d64366d8a90a6ac4f07b0a0af76c79","openssl/crypto/pem/pem_err.c":"bc491849f68e5f3e9c10106193a8975a4aeca7b43298098a5a81ec2191fedaf9","openssl/crypto/pem/pem_info.c":"32ee97a3aeaf487e544adcfc18e540c9b54a693fcd3aa57150271f89e906d791","openssl/crypto/pem/pem_lib.c":"4a1383e11f427cf2c67177d33f22c5ebf096630cf02532d2389b1b8e8b1cb99a","openssl/crypto/pem/pem_oth.c":"530c99308fabff37b4b130b09754ed542705603a7666ea5133416e0cdaf0bbfc","openssl/crypto/pem/pem_pk8.c":"14447690b2c5e469466853d1b5b1d0b36bf4808861f1f074ed2f93bfe8b9bdc2","openssl/crypto/pem/pem_pkey.c":"72eca65bfed5eb61191f3f5bf7a49397fa7aa132824b9cab7c7a67b9a3d518c1","openssl/crypto/pem/pem_sign.c":"7792b412f4a8910211c8cdd40e05aeb54e614e7716522dd10c834f1908f9a4dc","openssl/crypto/pem/pem_x509.c":"74ff5cbc40207a656e02e8fc7c5f28f64576e8cb8959334031db3cf0f5ebd9b9","openssl/crypto/pem/pem_xaux.c":"c44765e20101d33853fd8f34dc9bf62a479a7015047c0a5cb341ce522d501b6e","openssl/crypto/pem/pvkfmt.c":"77fe4e179c5899330fd61e3ada9e6a2ae0f17118515b7004efced31c620afcfd","openssl/crypto/perlasm/README":"a397f0f820309ccd1a25143fa8bde5c6e5512de53add775214cafc45eb3e594d","openssl/crypto/perlasm/arm-xlate.pl":"50f1d3fda02dd7b00a529b9087e55dce3d4c58fcae7c1508fe4dfa546dfd1e41","openssl/crypto/perlasm/cbc.pl":"73a0364ae97d052f89ba7f83283fa9893a0b7b76b0555ec4033c1357f9188add","openssl/crypto/perlasm/ppc-xlate.pl":"964569804a05f76630898a070bc7399c45ac968599cb2a438a3a0f3d1266f3f7","openssl/crypto/perlasm/sparcv9_modes.pl":"0c7ac5079c3863f13bb467d0b6402b0edb13fba04dc669e27e0989d0632f1144","openssl/crypto/perlasm/x86_64-xlate.pl":"0a1377240e2560d4628e29fc533c086b07144ffe414bb5c7d2ee614351062dca","openssl/crypto/perlasm/x86asm.pl":"fa62e615e89ca1e0775e7e8913a911726a0e4651322e9c33b040714aa20d8f71","openssl/crypto/perlasm/x86gas.pl":"ccf9de7a5e7eefa00d7cdf23f2d73538c0ba48ea75544d0ae6040ab20323209a","openssl/crypto/perlasm/x86masm.pl":"3b57d38f24c2193b4ab5c7ff603666846122198336ad1939cad482120b4f41a1","openssl/crypto/perlasm/x86nasm.pl":"5a89241db3f2532b8daca0392d32b21b6f9420a1e4b6839b2c17c80e1874146f","openssl/crypto/pkcs12/build.info":"2f59a1c0bbb1ceea9edeb66b36c8e7bba49dd64a94e8e2f16cad52c36729559c","openssl/crypto/pkcs12/p12_add.c":"1022c183931f02d204d65b44fa0886a826bfa9799e8eaf8c0e7b0f6f8da3ac56","openssl/crypto/pkcs12/p12_asn.c":"05803d4b8467c5bdb1b06da8fe40388c347bea9f2f8e54584f1e754a04f7332e","openssl/crypto/pkcs12/p12_attr.c":"f7a31189a46ac43f2a64271fc3a5ec793d79c2906b24397456e67ea930f3c0d7","openssl/crypto/pkcs12/p12_crpt.c":"baff5b7231306d2254013fdf0ea8a1798fff3051633fed729d044f938b5c9a99","openssl/crypto/pkcs12/p12_crt.c":"aa6ca363eb66d526ac24b3f126b5abd776e98ee23a5141ee159e0217e381efac","openssl/crypto/pkcs12/p12_decr.c":"0ef74163429c1e8797e5f7ff26fc9f56fb55600f02cb2d6f639cc50202bd02b2","openssl/crypto/pkcs12/p12_init.c":"fae385643529f9567d691927438ec92c8125cdead2aefe88ccabe5c8af1bea45","openssl/crypto/pkcs12/p12_key.c":"2f3e58ef6b443c0548a206dee3e611c10e22651ca7dbf7ef1157b2e201106a24","openssl/crypto/pkcs12/p12_kiss.c":"b8a6f89466d45ec6f6581db37b215383b1a84038f4f2e10ca9cdad038e90fafa","openssl/crypto/pkcs12/p12_local.h":"8a84fd4f012af5f8ab4fccc309cef6dbb9061646abfacb0d41b36441e3b2827b","openssl/crypto/pkcs12/p12_mutl.c":"f239c7d4451263b413dd507f0c374fda8080db717bb7204400eda0106b04fe35","openssl/crypto/pkcs12/p12_npas.c":"d01010c0f8dbdd3beda7964d4e68cf6c1fdd93181c77ecc4c5582facfcbd9d51","openssl/crypto/pkcs12/p12_p8d.c":"d1dcb6931499e9f7cc838e69efa9e1617b249cb0515d2ba8b45043b75b918e9d","openssl/crypto/pkcs12/p12_p8e.c":"e2ad27c98cf187843985aa71315875a207d137b3bc38d59df2da56a4ed58f554","openssl/crypto/pkcs12/p12_sbag.c":"5af3f68a0c3de9e7a6b9d8a11f3d0de577bf61d9d0b0b9590e28cb0cd75da9b7","openssl/crypto/pkcs12/p12_utl.c":"0f10379d12ade7fb5bfd5278dc75923dcfe2f52f11d8823f1a530c22fd53e839","openssl/crypto/pkcs12/pk12err.c":"738150847fbec69e993de2e8b0d226c20081e425995f64eec317b245ad175f03","openssl/crypto/pkcs7/bio_pk7.c":"d35d599d846ad941d02aea02b1031c90edbffcebaa81eea0e55caf875d6e32a0","openssl/crypto/pkcs7/build.info":"0f56496c6125fd0e2ff6e5cecdd26073f0d491a73ad96492b403936f8aee3c54","openssl/crypto/pkcs7/pk7_asn1.c":"5fad3d3ef8435214916a1a313b541480de9b233531505a3f6e0cf07d39c77852","openssl/crypto/pkcs7/pk7_attr.c":"bb9f4f93286952e70c4fbd33dd4446533a20f474227ad7fd149ac050f6637e3a","openssl/crypto/pkcs7/pk7_doit.c":"f58d3d3674c9bf0bfc4571d105552ead7366aba58d183f2792c62132be233bea","openssl/crypto/pkcs7/pk7_lib.c":"de60d7d8447e11844e0eff90f50e8008b3565cf030e805d6c47224721cbe5763","openssl/crypto/pkcs7/pk7_mime.c":"cbc67561cca2e1904d234dd7f25d4c57b42e4825e52890a7928162df3072281a","openssl/crypto/pkcs7/pk7_smime.c":"ffbe7cc41984ee7160f01a20faa341df78b9c7f652362eb03d253212a5bfc786","openssl/crypto/pkcs7/pkcs7err.c":"09607257508d8b105ecb4dfd28a929eb001eb822ad9cbacaeb5706b2efd2fa54","openssl/crypto/poly1305/asm/poly1305-armv4.pl":"d0ff864669d1706928b27aec378665cb0e3b307eee5b482ebf29abf1ca5bc067","openssl/crypto/poly1305/asm/poly1305-armv8.pl":"71288a9d6e7eef64333d9b89319fa40d149733e358c7e9eadced0a1d7d12b2c6","openssl/crypto/poly1305/asm/poly1305-c64xplus.pl":"0107057c401a6ff2b0838aab9b704736550c08fbc81971834c6f4f202de41430","openssl/crypto/poly1305/asm/poly1305-mips.pl":"cd135a12be9c47277cba5e2fcb1b27289cde632584a1e2808f8d9d3222aa3ea4","openssl/crypto/poly1305/asm/poly1305-ppc.pl":"3da40be700562136d1b935479e35d46b31295de5b45317f3ca10d327ab8f2e92","openssl/crypto/poly1305/asm/poly1305-ppcfp.pl":"af455460399ea65fa61beeb46d7a0faf1b128ca5070929b361084daaf72b19ba","openssl/crypto/poly1305/asm/poly1305-s390x.pl":"c879cb3c6b632d3cef3eba411ea0d1668491c0353585cecc8a004f30544a955d","openssl/crypto/poly1305/asm/poly1305-sparcv9.pl":"0ee8746f475278a6c7a24b5e338fdfa4225c1907a4ba677f9475db7fa3135251","openssl/crypto/poly1305/asm/poly1305-x86.pl":"1998c110caa1ea62d7bd41b0b7918dd2dae3d2b02207699773b203dec1729bd1","openssl/crypto/poly1305/asm/poly1305-x86_64.pl":"e9ed59a5ca1a014016fda2a08878b1cbc98a72f603b5031e05a2fc138b03658f","openssl/crypto/poly1305/build.info":"e4c61fef5095fa4b702b6719eeb0e5b2e68783994c84fb551a47e67990d65237","openssl/crypto/poly1305/poly1305.c":"33660bdb9e65ea21d5b76b846b79e717085fd45213b490787b48b8cceefe10f7","openssl/crypto/poly1305/poly1305_ameth.c":"1c437f1a9a51aac872479ab435fb325af2689435000df0581000195de74eb1a7","openssl/crypto/poly1305/poly1305_base2_44.c":"0ea8bc267535c740255678e404481446800c81e6aa26b21803d9311c55689557","openssl/crypto/poly1305/poly1305_ieee754.c":"c0e41ea950a69d0ee82287a6734248e3963d8918620be45c8f9ab87f7f45a2f8","openssl/crypto/poly1305/poly1305_local.h":"9ade03dbc325f7e454abbc1657c7a737a6204fd2ee158302bf8cb2b7ce64215b","openssl/crypto/poly1305/poly1305_pmeth.c":"9b871e64dac49a70d62625cacfd0717280739808cd7a4f7b37185ac01265558c","openssl/crypto/ppc_arch.h":"44a38287a18609ae24322d52ef488ba0f2b96763f324c085e29d9995934b7978","openssl/crypto/ppccap.c":"1e1064b647d738212da2175491c8d3af5c3c78c7532be3c234fd331f4de65277","openssl/crypto/ppccpuid.pl":"413d6d1e5c0049ed6a0b813ad80df78277ffcd3724884a6852d92916ccb967c8","openssl/crypto/rand/build.info":"eb3f32ca6d3d5e5b26f96ff8457afcea31bfef12b580dc4c3c4775551be9f0e3","openssl/crypto/rand/drbg_ctr.c":"e7cf60d6ff5ed2862ec84f47723a99dc624132dd5dea10b2953068a937c853a9","openssl/crypto/rand/drbg_lib.c":"a24e75e6663f6e02e74bf20cf17389c2d1319f1048c476a667a4a06dad127251","openssl/crypto/rand/rand_egd.c":"6e946fcf002b1a30e138ef0628e2a09175a86555bbd1741b6bc16b3371b04d31","openssl/crypto/rand/rand_err.c":"4d0b0226dd530be3cfc62d9f5192477bc19194347c0c53a8b29523b7519422fb","openssl/crypto/rand/rand_lib.c":"16f5557d20594ec24b400184d87314af0f0bc51e4b3b807537243443b28e5e92","openssl/crypto/rand/rand_local.h":"7df626ee2d36af077feecd4069c9e1c1929f528db37c1f42404f67a2aadfc534","openssl/crypto/rand/rand_unix.c":"b832b69d852b501fbd8fee7e9c57fc2ba7a841b3d53fd27dfaa29964ad0c47a5","openssl/crypto/rand/rand_vms.c":"0a5fd47947dfb98f92d7fa6dab810407e34cb5a8cd2dc86eda6b81ab17455ebc","openssl/crypto/rand/rand_win.c":"4e47837161c307895f84cd79b0cc74370a30a26793e22fd9d18eee25da159b23","openssl/crypto/rand/randfile.c":"fe187941caae09dda34edcaf5b52281f427f9f11dfd0ca77c4fcdb64f3bfb186","openssl/crypto/rc2/build.info":"fa9fad30f2000390e0b060b1c029ac28a5e8e6d715bf06cc05de1c804aa97401","openssl/crypto/rc2/rc2_cbc.c":"5d17a12887305f3e4651cac47756621be09efc1e8333e138856bd5fd477bf0c9","openssl/crypto/rc2/rc2_ecb.c":"28c2940e21dba06419be3ed19afca706e65f311bc7e418f970b02c7fb24abd29","openssl/crypto/rc2/rc2_local.h":"ed44dacd7fdf91b264373b3c9977abaa754c0df32e5fa21060261478ed7eb4dd","openssl/crypto/rc2/rc2_skey.c":"84896df1395bb27f8dd7cb7c23411eff6c80aaa081fabc8c757aab0f26ec05d1","openssl/crypto/rc2/rc2cfb64.c":"d856c9d9208df29fc204f4efa2239c94ba12e4ca686b2760ace8b8e4210bc685","openssl/crypto/rc2/rc2ofb64.c":"4de9c653f5b5136e239b61ef047f1a97af043ea95cc83486290dc76c398378ce","openssl/crypto/rc4/asm/rc4-586.pl":"e6d6ce4a453540cce69e560f598fe5e8712cf0d341de46bc02c995a73486303b","openssl/crypto/rc4/asm/rc4-c64xplus.pl":"fc651da99f08db21512898fd642212751959a58bc8450d848968f3231ee1209a","openssl/crypto/rc4/asm/rc4-md5-x86_64.pl":"84af0ad1878af80af48799fb258b424e014d34fb572903f336a66d43d2e4f0f8","openssl/crypto/rc4/asm/rc4-parisc.pl":"3fe4d93256af08b1f9357d63a48d9d9da894cc80647142cf7aaecdef02b64f8a","openssl/crypto/rc4/asm/rc4-s390x.pl":"289518afc7db683a8da31c85033f1376d574140a1a050330b88e1415fba767ee","openssl/crypto/rc4/asm/rc4-x86_64.pl":"42f8e2f8834e371c9fd78fcead28a04699e9ce13a8c0cc6033f8ad6739e38ff8","openssl/crypto/rc4/build.info":"dafb5e92c1c67dbceb1346e0ca7f9593ee0d32b565f6deec78115575882d71ac","openssl/crypto/rc4/rc4_enc.c":"698568b5fe0dcaa6f82bd2bcfa8314063857a41c52f72ce2b0d89ad785883493","openssl/crypto/rc4/rc4_local.h":"82f57383610c6462ff3c4462e4ff539e5bf66f6683d8d65c888bb6a1328c3cf6","openssl/crypto/rc4/rc4_skey.c":"fbeb154e752081d08688dba213b005f97dd269b8354bb80ea3bb03ecb429d0f0","openssl/crypto/rc5/asm/rc5-586.pl":"ea6781b05166f25ce2e23df9e6d803456bad08d3864e3947bfc6837090d999ee","openssl/crypto/rc5/build.info":"9697a4327aeaf8c8934683c3987baac00b7ddd22a5442a47f14e4bf24eba8ba2","openssl/crypto/rc5/rc5_ecb.c":"86c967263189d6e5a6ebeed489f333fb40135d1db5aab739524fd63068a3fc58","openssl/crypto/rc5/rc5_enc.c":"6a979a8f1083f257ed4baf7cd1d79888a3d56cf99dba9594fb87c4a58c7b2ff6","openssl/crypto/rc5/rc5_local.h":"363648f7b8d0a5f5ef008ab6444741a39ec5391e456f765aa6d3c1c226bd2c66","openssl/crypto/rc5/rc5_skey.c":"f42620aecc4ebf937620f848e2fb011257ca46819fd2d31ae98e4ce8345a2947","openssl/crypto/rc5/rc5cfb64.c":"7d09168e9473d4448266c0d428509233ba0d9cdf40251f801827ba67485ac920","openssl/crypto/rc5/rc5ofb64.c":"114c7a7ecb408f6b4552cc2460c0a386cef4cd823a877a6058bd9f3ebd235a20","openssl/crypto/ripemd/asm/rmd-586.pl":"707a70e32309d4e55867e57908f6202e281427a1a917a31239afa4ef7b799410","openssl/crypto/ripemd/build.info":"8659770d9841882138787c31161f0caaf5659daa1ab6ee51446825f69fed0d5d","openssl/crypto/ripemd/rmd_dgst.c":"c845d74a5629fac28a1646ab8bbb07152db302dd89d117b7b133836638d38cae","openssl/crypto/ripemd/rmd_local.h":"b6c8dca828d8187e44350a3430ea373fd0f386e088ee0bcc65da2e0baf41bd6f","openssl/crypto/ripemd/rmd_one.c":"de45dad151221a755b1912337b048c0828b7ea9803e2f2700e55c02f6d7c2bfd","openssl/crypto/ripemd/rmdconst.h":"b4f908f84addb2c1b1fe09261d26b87ef5a20d434ae8ae42dd078addd71ad467","openssl/crypto/rsa/build.info":"257b566ae3ecacad27d828d5bfe447e9f1e0aad0e8efd3c212f15df49ee913cb","openssl/crypto/rsa/rsa_ameth.c":"307abc673ffb80d45a011b551b2a918f98589365ac3d246e401c5c984009f383","openssl/crypto/rsa/rsa_asn1.c":"81a5a98914b8e2dedec487b3ef98c9f003d6bef33005e191322f2cd4f04330ff","openssl/crypto/rsa/rsa_chk.c":"7bfa882a20fced60b03b287230d4549abfb282cdf24a2b0f570edef80a169697","openssl/crypto/rsa/rsa_crpt.c":"da9b2f71971479da56e4f39a345ed2fbb020ef12737d417c9b68c11a7d50196b","openssl/crypto/rsa/rsa_depr.c":"d7421a277b8a98658c74261388c3628856f56e262ee97dbf41f6584a5594f81e","openssl/crypto/rsa/rsa_err.c":"4a84e10c082ec1c3986fea95fa62189e217cff91a3bf705bdc8a0bc904c6c781","openssl/crypto/rsa/rsa_gen.c":"abd456b06e48f0bfaef44e064f3fd62db6bc0fb445d23627e5ca784b93af3e70","openssl/crypto/rsa/rsa_lib.c":"b711e363b57782b03f657b372bd6311458255704ea06071e6a1dbf3f22b7a5bf","openssl/crypto/rsa/rsa_local.h":"51245a3f0b7350a846ed851692ac63bb09af2584681b31b1552bbf99241bb647","openssl/crypto/rsa/rsa_meth.c":"d51d459ccd362102bb5a4f64ad6144f077d2014a9f0cf6201fd77c3f05a1e757","openssl/crypto/rsa/rsa_mp.c":"832bea3c81f5d7d1e41daa1ae1eb4989908796f2d9574738671e9462419b008f","openssl/crypto/rsa/rsa_none.c":"f3a8bc1ba22ecef6701b80db01557078e2cf12f2b61a16b0892423ae43d854c5","openssl/crypto/rsa/rsa_oaep.c":"c938fe57f010f532552676fa9b58f0d6d742ab5feca031c754a95a9bcda6464e","openssl/crypto/rsa/rsa_ossl.c":"37645b993d30a14fcc916455bc113fb23d3f78da6b94c6cfca52aa89176e5837","openssl/crypto/rsa/rsa_pk1.c":"413f63a20d5ebdf688537cecd1904f13756b297c0f26c899906a309af63ce879","openssl/crypto/rsa/rsa_pmeth.c":"d6147a88868e540d78987e6b140ac5008fe4c94276bf49287da377faac248496","openssl/crypto/rsa/rsa_prn.c":"a9199be1c948aa3f5309307c97ecf2277bfb52e811b4f9bd16d20e3b58d96eb9","openssl/crypto/rsa/rsa_pss.c":"dfb509cd579f114cadd7eacc82554481088c5f01345f090f4cc9600df9a0055a","openssl/crypto/rsa/rsa_saos.c":"888c46b976fcc6af3ccf850883fa87ad43306e872a2a705e278481e50437b212","openssl/crypto/rsa/rsa_sign.c":"396019b0a9987e4e5f5be1fb2d7c2ac6ed62ab645b68b977669d0806c2ec381e","openssl/crypto/rsa/rsa_ssl.c":"8e070af202016dd7f216ade45a5a5c777185011d726dfc9ad486b31907f46b7b","openssl/crypto/rsa/rsa_x931.c":"a3f7a315506d4e26a050d764df2eb8f5a5177d31e4d62d48d1a6abc857a862ee","openssl/crypto/rsa/rsa_x931g.c":"2bf3eb27bf4394f7f34235f51db3c3e9eebb8a8711ee6507de6a3b90c4c32131","openssl/crypto/s390x_arch.h":"e30389a761b807be21d45ac87f11abd4aba434a10e217a2c7f271d50e67450a5","openssl/crypto/s390xcap.c":"25b0f1ec4ed1a02d021a4ce6d27bac38634abc0c2b853f53df49881858c07325","openssl/crypto/s390xcpuid.pl":"1d8a4694b69b32ab56b031e997dc8802b20380fe078fb56d7e8f62da575907b9","openssl/crypto/seed/build.info":"11a58534ceff43757cf9dbed58c94ddee01789b3992a70e3601e37637bc49ccd","openssl/crypto/seed/seed.c":"80618242c9d0f75a5ab1c7c080e857c69710854ec06329e7434bc83438e0fd96","openssl/crypto/seed/seed_cbc.c":"b775e571021fe9d348f836a010f6a5489e7f2a0596dcc5b52c1be10a91639741","openssl/crypto/seed/seed_cfb.c":"480a01e3ce4b95992b62c5a63cfb7a244122caade4845785ff92e3f8b655d062","openssl/crypto/seed/seed_ecb.c":"b6f8a61c77174d96f7857350f626f83796f34de7de6c2fa83a228811c690a74b","openssl/crypto/seed/seed_local.h":"a7f2e5ea85f994f62450a0056de9116982291a8abc12d3e971537d89229c4106","openssl/crypto/seed/seed_ofb.c":"e1897c1c4af729d102daee7121e585b77189e22afd8ab095b98689f629023ae0","openssl/crypto/sha/asm/keccak1600-armv4.pl":"542e8f46ede74eb9cd19c72a49071bdf91ad78b75c7500481d5c59c65afcda25","openssl/crypto/sha/asm/keccak1600-armv8.pl":"4b3770611981a2832588c9f35e4f02e38b2f9ecef3ca23db62a5a25f4a17bd96","openssl/crypto/sha/asm/keccak1600-avx2.pl":"c12ee719d061ed159fcba309237af8c11deb2a19606320f7a9bd96c97467ca81","openssl/crypto/sha/asm/keccak1600-avx512.pl":"6b60549e38f1d414fa7a6b22ac3425676f3dc13da2076b3cb1ab83fc9b007dc4","openssl/crypto/sha/asm/keccak1600-avx512vl.pl":"b7162d20919c3677c0ba5b9c15f32a7b93da382a8772db9e9c01d96dfcd59b09","openssl/crypto/sha/asm/keccak1600-c64x.pl":"612b74de8eb0be8773a0b06738a39deeb3897059fdd8a85c64cfd910dbba0fa5","openssl/crypto/sha/asm/keccak1600-mmx.pl":"b0e6895f1c1b2c32387c7d3b06fd474506a6017e55734e4975b0643c6bcd108d","openssl/crypto/sha/asm/keccak1600-ppc64.pl":"b22b70e115f4c24e0c17e916954e0e6afd0c9593e65207a3735ad89aeb97402d","openssl/crypto/sha/asm/keccak1600-s390x.pl":"85a7715a8edbdc5636a638da798ffa8b0a99320f1252e6222f2d3099b722b6fa","openssl/crypto/sha/asm/keccak1600-x86_64.pl":"a14915e8a91fb4a15054ed7c1ba6e508e86fc69c3ff5b9073e0600c4846e0656","openssl/crypto/sha/asm/keccak1600p8-ppc.pl":"a8c7a781949b77ac99f175a345c773343818e21c7fc9984f0e7199d301e67c22","openssl/crypto/sha/asm/sha1-586.pl":"eeb0fc4fbcb984038ab1b1c15dc5afcffb11913f9fca00f8d4b915d9798bb400","openssl/crypto/sha/asm/sha1-alpha.pl":"cd51ce6fca67e62b73cac97ab23fe72ce9cc611135517a3ddc1eed5c31fcd87b","openssl/crypto/sha/asm/sha1-armv4-large.pl":"0a06172fa5a03fdb7b99c7515b87a508d83f2dbe319cd44bdd52a9d5cff96ae4","openssl/crypto/sha/asm/sha1-armv8.pl":"6596faa8e1a8a6472ecab5638b39554077451901f2fff8f51eec38ffbc9cff5c","openssl/crypto/sha/asm/sha1-c64xplus.pl":"f92bca18470640470899a721878a6b70bc5791a30da8129d9de88bbd2a55a79a","openssl/crypto/sha/asm/sha1-ia64.pl":"f8a627a74526c3cbc258af9084971ef1c5f88bea15ea78d1dff8bd249a73c01d","openssl/crypto/sha/asm/sha1-mb-x86_64.pl":"800cc6d88fb5663b7f150eb3d7c4902b65c4814308b969803b41588a6ab12236","openssl/crypto/sha/asm/sha1-mips.pl":"6be7c374df5c4fa5f54170a785aecdb9fa0a254e9a4a9add71e00cc71b2bf7e3","openssl/crypto/sha/asm/sha1-parisc.pl":"84e61839ebbe074f1eb9af7091afee054d2915c8d37d49ab744e5644d2ee3753","openssl/crypto/sha/asm/sha1-ppc.pl":"e13e35de483cd2205d94524bd56c459fcf079e038bc7392fcbe3a8086b297a70","openssl/crypto/sha/asm/sha1-s390x.pl":"119b51be4107546b803fdf4f4903c2dac5153ded1903388c8f73415eb8980f7c","openssl/crypto/sha/asm/sha1-sparcv9.pl":"34662072f7db2945d9291cc84ef51a308e6aead68e500d24dfce744dab4b9cbd","openssl/crypto/sha/asm/sha1-sparcv9a.pl":"e23a82eb0fad844f4e150112948a07748033f819a7fdd6a17465ddc3af9b77b1","openssl/crypto/sha/asm/sha1-thumb.pl":"4e49b02927a01e6448717e71647ceac30dddfd9f86532cbc16fa9a1281ae239e","openssl/crypto/sha/asm/sha1-x86_64.pl":"ba4b88674f454bf022b838d93ef5b2434c4e618c32836687afa00a0ec636d426","openssl/crypto/sha/asm/sha256-586.pl":"1202d1efbd245d5dcb1f5bdab86ce95a60f97c86f2bf79e8cf011e2005d7e826","openssl/crypto/sha/asm/sha256-armv4.pl":"d0c38f7f021c358624d6845fda1cc2e278b4e8523efbf59de627afae31a69954","openssl/crypto/sha/asm/sha256-c64xplus.pl":"65fc995ad25e0e22cdc1d429c02d27ed88495350093b3256ece3adbe6fbe7817","openssl/crypto/sha/asm/sha256-mb-x86_64.pl":"bc2549bba79c9367e749da71ab40f0b9a1434b87fd3209fdf414c9342ab7cbf2","openssl/crypto/sha/asm/sha512-586.pl":"8ce885933bf41c9624a7a51e42abcb32fc915d61a1e7de3d595281d3d2592af0","openssl/crypto/sha/asm/sha512-armv4.pl":"956283d9ad4de0489cab2e32135826c3fcc14d7c0efb991a0fc72b8cc37ec666","openssl/crypto/sha/asm/sha512-armv8.pl":"effd9a393a181e0595d42d1c5d4a249051a0c62b1ab6e36cb472c9b3dba05567","openssl/crypto/sha/asm/sha512-c64xplus.pl":"09f9b9e042cc8f848eb852e156bd6892187eab8ce3edad8f1db29db3541d9248","openssl/crypto/sha/asm/sha512-ia64.pl":"4342a9b491a46747edab0ff7bd0f762b1f70b16f374fb415ab6abc588e4e129c","openssl/crypto/sha/asm/sha512-mips.pl":"a8a3a342b55e3fc29a55bc01d22c9426a61b62d54221f98f7e271d5307f21644","openssl/crypto/sha/asm/sha512-parisc.pl":"a86a41d9c116c552f23a6b3aff1ee0f2e5973cbd5086e04eb37db3c42acbbf64","openssl/crypto/sha/asm/sha512-ppc.pl":"129c4638fdfb3459d804bd9755c998a9f995e90c56825ad6f8c4c02261351489","openssl/crypto/sha/asm/sha512-s390x.pl":"7d35d2bba8dea8fe33027bf8ca132c6c23f13b34de3c4aee7e8b3e61b065ca2c","openssl/crypto/sha/asm/sha512-sparcv9.pl":"2148a9ab469e01ea394db0d3382839b47a61c7532d0dc328af661084b965712b","openssl/crypto/sha/asm/sha512-x86_64.pl":"20411ddd8a77be94515ebf5352936839ff698ae2b39d565b66fc1827c3be3922","openssl/crypto/sha/asm/sha512p8-ppc.pl":"a4bdbebb7cb5bc0b259b1f25e2afacd821cdbf99ffe3012772250ea16fe97adf","openssl/crypto/sha/build.info":"d40aac1bb358e2936547b3f40ee445b49c48fce159b51f74545feabac0dc6ca5","openssl/crypto/sha/keccak1600.c":"4596e079f5bbc172204cde849e4d1e5e4cab78b507a86294030d97c3a0173f33","openssl/crypto/sha/sha1_one.c":"18bf57d4750e234f7074375609a9f9aae32c5872a7fe0c16a61e2a3848483708","openssl/crypto/sha/sha1dgst.c":"ae0dab96e2b0d8b89fd47bd6049e70fde583dcb4a16e5372a2745f7e1fa74a4b","openssl/crypto/sha/sha256.c":"3c03556ebd787b018f747ff3c6d84ac08a1d458b6367a172560ce20a114e8109","openssl/crypto/sha/sha512.c":"4bc230ca6efecf8391b0c7c114d6096f7aeb0dd09bb573d98db2b71df788b855","openssl/crypto/sha/sha_local.h":"604eb9ba98aec825f308ae0ef400aad2331513df7d47f1604ff524a4915c501d","openssl/crypto/siphash/build.info":"380f0a4c8fcd9697eea92f2b5004050d32a55bd6893a6ec8d03bc316107c8f67","openssl/crypto/siphash/siphash.c":"9da8a7c5156f78546629c115fc21ab5478ffb249fdc6e797ac93fac05313bf70","openssl/crypto/siphash/siphash_ameth.c":"17f0f6bce14518f7a7ed4c269fecb66d6bce4149e49c576e39c54bfc89017088","openssl/crypto/siphash/siphash_local.h":"d6325eb9c432f35d9b9f3c0ee9c7785f70078d95986e3bfc3010634d76a026ac","openssl/crypto/siphash/siphash_pmeth.c":"dca7f5df1fcd2fc457918df9eea7388a9709f92994c22ce2a8d5c50f3d02c803","openssl/crypto/sm2/build.info":"a0ea4917c09e9f2153eb4f722a4a419b1437e358d6dd5a8b52ad3cd6e99b45cb","openssl/crypto/sm2/sm2_crypt.c":"ad218bc77938bd3f1aec54d1b0c2bc369ac8ad74df619da4ac68f6f9937535a7","openssl/crypto/sm2/sm2_err.c":"9dd7b6bcabdfe8ca1eb66374370bc1708efb0db5dccf7cd296174740fcf2f771","openssl/crypto/sm2/sm2_pmeth.c":"e19cc4e2799eed41a4302057ffcf16fa34b1d930edf80d1cc733b0b40887a916","openssl/crypto/sm2/sm2_sign.c":"203260b46105abc1525125e5a83438c7c5a6bf19ad216246b55e3609ec58c1d4","openssl/crypto/sm3/build.info":"619763e5cd74bb7c9556ba97dc559ff219a7e0fa25a704579a2b9b1bda1f3610","openssl/crypto/sm3/m_sm3.c":"102b12f8382f33279c763aaa1ef6ee0923723dfbcea41b07e465c01cd2cd72cc","openssl/crypto/sm3/sm3.c":"192aa39e787fa67d2ad800cc5b8d1c80d5c6cc6384786680d8eeb14185c057e9","openssl/crypto/sm3/sm3_local.h":"02cee467d273f55810be185590e1026b1fda6f47c526fd66f449864fcf4d83ec","openssl/crypto/sm4/build.info":"e447c13dcad1e3a3cb2d582b4979be34f1dd852cdee1e325c87a8f5f3658138c","openssl/crypto/sm4/sm4.c":"287c8e298c63cf935bbd7f767abeee1a6a9c84fd5930253627bc8466fc1651ed","openssl/crypto/sparc_arch.h":"210a902b386e5a3ffb43f1e634d9a8c0069c84c572fee3285dfbe446643dde95","openssl/crypto/sparccpuid.S":"9f67d1aa1a9c642198abb67ab2394fe7c9375017822f8117679d14c49e1c0ad1","openssl/crypto/sparcv9cap.c":"50bd953eabbcaa6263185495b0500f481dc223944868ee8d1a80d8e19617b408","openssl/crypto/srp/build.info":"117640a1010ab716e020ac03b532c763a7fa3c2289633098504ecbe94995f376","openssl/crypto/srp/srp_lib.c":"0f2f0ca489d8e5417fce0f76e13d732e77451c106f39b4d6a4551826ba5945b5","openssl/crypto/srp/srp_vfy.c":"c867463872f22da52b531ff8d18efa779df69788dab8409d4ea870c59d9ae278","openssl/crypto/stack/build.info":"08ddcbc25f8fef0aff834fdf79a514eb23ee9ce8b3075499e2f446870ab11ec3","openssl/crypto/stack/stack.c":"61df807a619658bef83d8d02942a22e6885a877469a1083ef12115d9a15476ac","openssl/crypto/store/build.info":"411fc258658218b167097415f8d086d2543dbe580ba03ac8f6c9b6b0d3cf2d49","openssl/crypto/store/loader_file.c":"32373d4a54279da6a2838eb903f67f75ba376b083d58d63921c5768099c2d576","openssl/crypto/store/store_err.c":"c5a0e3525c808c54a44866279a2e23cbb32a0ee057b22045de66a6bca9e5d345","openssl/crypto/store/store_init.c":"c77b777ba036a9ebdc6916608455eaa9db23eb5168ae2be94b23c13c697086fa","openssl/crypto/store/store_lib.c":"99fa9efd46a8177fa44155e6986ca01d80ad1fc841b30ce72981e62bb65a126c","openssl/crypto/store/store_local.h":"f9faa746e26e8f8efd1c2d52d6845f00f7e16e15f80e7e112a5029f531b365f8","openssl/crypto/store/store_register.c":"69d36d882b2137f51672f461dba5bdbb697dcd22f8c6c36035e8c4f92fa2c96b","openssl/crypto/store/store_strings.c":"a926f46d67fbe57747a3dfc5ac8aa01c52a196e8359db44be88dd391f1b0c045","openssl/crypto/threads_none.c":"ce84a6a047a1d5bd4dad0947b3d6e8a166a1f8daa2b40aaef30292bd0736a952","openssl/crypto/threads_pthread.c":"27955f2f4be96cc85e661c9998940f84bd03532b08eb1f49825cb480bb11715e","openssl/crypto/threads_win.c":"e813a198a1a0304781d936eb79132ad09b9578e4702b59f8c3d3ca3c7d3de56b","openssl/crypto/ts/build.info":"f9908ee4ca6a1b8a13a050e2864f99ded2871603aef152b80dede8cb7d23a1d1","openssl/crypto/ts/ts_asn1.c":"6a4ad1328934a8686e43d2a5d5b98b7aaf022ce31fb2240fa503d2b55c0f6159","openssl/crypto/ts/ts_conf.c":"9f58af31f6003c52a4940358e4a429a5274b7abafa6b4f08e5ca8457cf1e10ac","openssl/crypto/ts/ts_err.c":"c0de1090451540dfc4266afe1fcbe348e659f554067f79397d934955123df1db","openssl/crypto/ts/ts_lib.c":"1799c88472a43a977b5e3b481e1f5a68611f3fd40c5711287af8c7dd67f8f6b2","openssl/crypto/ts/ts_local.h":"e74f27519c9ab2dd9e76a6913f0645b034872a011dac5028aeefcb0d3814f828","openssl/crypto/ts/ts_req_print.c":"3ccc050fe21d386022d0d830f6eabfe2a4f5ddbee93e7792620dc6d5f7e55653","openssl/crypto/ts/ts_req_utils.c":"36ca2e7fe8dadee3e1869aae453afc14f212f62591282accda69acef8d035f08","openssl/crypto/ts/ts_rsp_print.c":"c575672e3ccaa71d7049be21f9fbf26b68a5c644538ccb0a3998ad856fb3b214","openssl/crypto/ts/ts_rsp_sign.c":"30fc28979a34af230d114c57b5eeb5eef339e9ae9cce816962cbf6a57b170acf","openssl/crypto/ts/ts_rsp_utils.c":"1e621128663bd333f579603633e14d865ddcb4a9cefbaca7de38a473413ccf31","openssl/crypto/ts/ts_rsp_verify.c":"0114d77d534ac878fb08c7b464e233a910f8fa43758d7e9b5e844ad674d2495a","openssl/crypto/ts/ts_verify_ctx.c":"e76bfd9e4086c03f271b50c87d442eb7e0b9eee40e65cd35a3855b676c49a8bb","openssl/crypto/txt_db/build.info":"799c270bfbc9d07d6f8b395ad253c0a8a2f20550328fad5a6691e79af4694819","openssl/crypto/txt_db/txt_db.c":"4fe9150f5665f46ac2c9949a676b5251e15b51106ad62a57fe11b9fc8af2305b","openssl/crypto/ui/build.info":"5a483732ca46036c608b7e20ddd080f9a4b2a171c85ed85c87933d398b6b4514","openssl/crypto/ui/ui_err.c":"027d5bcb2cbb2302b2a61936f79f9eccd9a06700bd2cc41a3485bbd554eeea8a","openssl/crypto/ui/ui_lib.c":"946edaa4b9ede3bad15da10c64d0e4a1ee5d639efd8102365450a5ae4e36355e","openssl/crypto/ui/ui_local.h":"e07419f8321ca0234282df11a6a616e7710194753b46aa84102c34cd7d40f46e","openssl/crypto/ui/ui_null.c":"803d2ae023fb6d6c3aacb4a2cca0165f90e545260d9fd544af8d1a9a751b243b","openssl/crypto/ui/ui_openssl.c":"cfb4eef526d429de853ae26736cd97f873cc2a9170a8fd4df69eeea2d6b95e35","openssl/crypto/ui/ui_util.c":"c6350ba9b1a59660e04ac1a9670b5c387d470d0d9ebcd77aa722f2a66e551199","openssl/crypto/uid.c":"5857bbc5fc7d03372d9c783e7f2af90c8860f1274e75363a976677a8b1f934d5","openssl/crypto/vms_rms.h":"d8a9dea1f7d6d2d47b4f8e13b44300c240b4215724d019459f537f0ee8de65cb","openssl/crypto/whrlpool/asm/wp-mmx.pl":"887038977e3f1fce6ce2d687ea7a40323213ab43b0ef95eb5b2c60f0dfaea948","openssl/crypto/whrlpool/asm/wp-x86_64.pl":"c758c6d370f26c614b05321069ec0678dda7c993f8a1864b1e01c12e52264512","openssl/crypto/whrlpool/build.info":"af3bc2b6c3963c272a6eb1fc015578e3b13c8edfc3a857ea7817fe5337704e9d","openssl/crypto/whrlpool/wp_block.c":"884f1ec2247d0f1426e4201ff7f0f7c9a24419bb2bac3ee5c6fadaec213f861b","openssl/crypto/whrlpool/wp_dgst.c":"1af49127d90372f8cce04f89d8c8153f053ada1383382a01d2eca73ba3faa32a","openssl/crypto/whrlpool/wp_local.h":"ca85102a6f440eb9c3d0958b79a3266fd6f94fd8da49dcfc607719183c57bd78","openssl/crypto/x509/build.info":"2cc54f328ca08c22601f6098db0ea39519b0ae34c5823eb84455c31523c9ed4d","openssl/crypto/x509/by_dir.c":"17d9bd9c10c7873bbf263f5aba1c104b09a2fb6f323919ac08f2e8a27648074a","openssl/crypto/x509/by_file.c":"12c78263f35836fab4b23445bf93f7a454d12931cbb0d19e7dff56ea01c14593","openssl/crypto/x509/t_crl.c":"e929cedbafba5ec1de7062a8d9517521a58aa5ca30f0e58f92022dfb14fc2a1d","openssl/crypto/x509/t_req.c":"e63b47be322906b4016172cf06c495f846de9433684bba212d6fad17e2068075","openssl/crypto/x509/t_x509.c":"ed54bdf66877a48bca8e1e83a2a80d63e7e78b23d68a475b88db1c8ea5ca647f","openssl/crypto/x509/x509_att.c":"d510f09e9621a1a2c0705f97707d897dd64e8bb0ede440e819a742f45ded8148","openssl/crypto/x509/x509_cmp.c":"cb6507a2cf06f60e3423074f4f1b719d53a6cb85620ab326288dafe1819fdd9a","openssl/crypto/x509/x509_d2.c":"0992dfc3f6b6352c81d19c81b82d2b0783ca07d0928e141a86ce3464c586d19a","openssl/crypto/x509/x509_def.c":"131c4ae5d99af123f2e1dc06702a8de35db096b3b447dc45b17c00125ae9f3be","openssl/crypto/x509/x509_err.c":"dff444901a4b74160a763714e7aa015c4851468cccb0fb3168c63e20f901b9ad","openssl/crypto/x509/x509_ext.c":"5eae60eddf4390506a3a2ffa44efab9b7ccee5a6bf884aaef88d4a39815b6472","openssl/crypto/x509/x509_local.h":"c9bce0ef40ad7144218e5fa315fc74572827624c717d89abedb0667bdc86ef06","openssl/crypto/x509/x509_lu.c":"c3d06f8a32bdd302933c10f453803a845f45200e921155607b753be949dbcf7c","openssl/crypto/x509/x509_meth.c":"6796892127d4f8c2ef720cea7696cd21de308a776c75392b1b5c6dcb2b9b77e9","openssl/crypto/x509/x509_obj.c":"85d5382a42ed915057618ae6b835244b8ec5ea6997449b1e7b737fd7a51dbafa","openssl/crypto/x509/x509_r2x.c":"20d19f6acc837f8ffb4a3b2de311a581fa471d52b10a376286bab49026ddf42e","openssl/crypto/x509/x509_req.c":"caabf10b9c6e62ddbbd66269a26a6f4595f4bad08eeff91365384fa149c4ce3c","openssl/crypto/x509/x509_set.c":"f9fb63e0eb93644263fe325a5a2a94ceccc7c2eb21da23139158d18ccc265bd2","openssl/crypto/x509/x509_trs.c":"e2a1b8bfd56d6db5ea950815d4e85555164032c352de15188cfcb9af785bf49f","openssl/crypto/x509/x509_txt.c":"a680a1fdf94210072ca35dab8df36995ccc5af544e504f39d2ab5c321147385d","openssl/crypto/x509/x509_v3.c":"d92b87f23dbc501babd1c5508ca59d79e932a2a3be6df4abcd781ab621dcbbd8","openssl/crypto/x509/x509_vfy.c":"7a3f1b418babebe58ccd02c7fbdeec67799f5a056263e267753ab22a51bbdd62","openssl/crypto/x509/x509_vpm.c":"d3c55c73b8211ba0cd5ca25c7e27a87ba1dc87a2b28ec8e25eddd4d7fa7cdfa7","openssl/crypto/x509/x509cset.c":"2c02e058ec0805af5ef8aeaa4567c367a1851648d6fc333a9a22bb5a7d6030d6","openssl/crypto/x509/x509name.c":"b5d38d5b6bc0b8bf4b01e49d65c45f5638b548f288cd11d73e0b1ee09218672b","openssl/crypto/x509/x509rset.c":"51a81f7d7243738732b1cac8d98fff07593c9b6413e72cbd37eb96e18ded5145","openssl/crypto/x509/x509spki.c":"aa04f3f9a2f742262d4b9ff64b398d62f05c5a11e48f89955ca0b6f876365dcb","openssl/crypto/x509/x509type.c":"41dd92e873e38a474c52aad7c9964135439a68427b79dd4b2ddc2cbb728fad5f","openssl/crypto/x509/x_all.c":"69875ed3eeeb462b2a8e19af652108a73efcf93a984c997c57a086b458062308","openssl/crypto/x509/x_attrib.c":"3e20fbc5e8660a515ae0a137e4c507c51834e21f79d9a5e1c4effb1ad16f58db","openssl/crypto/x509/x_crl.c":"18fe6639ea4a53105a334084fede231274000f939004721ffeb1bc971c3d7c8a","openssl/crypto/x509/x_exten.c":"693247d2361c016badffa8417994f6fc8ea20e2c5b0a3e9574d11ac707175fcb","openssl/crypto/x509/x_name.c":"e71ce9fbd4742b86fbe7ad53999c7beccf7744caefda66f299beb81be7b6a60a","openssl/crypto/x509/x_pubkey.c":"e9a5df4a43624b038d308037c4f3004410690aedb03952e0942f9830e5664921","openssl/crypto/x509/x_req.c":"e10b418b414865ffe52d871e6b73511505f1eaccdb1beaa1e4aee75229dce8d8","openssl/crypto/x509/x_x509.c":"0d94d9578d50b37bfd7518385f4b3de376805811709fb362e5f6592e3d3dc9fb","openssl/crypto/x509/x_x509a.c":"15c9d3212720ba734fe72ffe68958ecaa38b85aca4c0b2d1c081540badf42fb1","openssl/crypto/x509v3/build.info":"ac99cdfc6def24ae8d87e06165d78f76e6db2de52a84e273aa65c1b68ee4aec8","openssl/crypto/x509v3/ext_dat.h":"5594f35d016d77119f3381d09ef25d278b8bd0999a9a8c84fee44211c48f5c33","openssl/crypto/x509v3/pcy_cache.c":"6610d69659376ddc88c7778f2430fe7771a3c96156f677cdd03414ddd028ca64","openssl/crypto/x509v3/pcy_data.c":"b310afb45c06650fb89324289474962e8f87aa8555387e456280d1ea8f723ab6","openssl/crypto/x509v3/pcy_lib.c":"d5dabfc31ed80dc2f4bd2774c3d5e66763924efe9a055fde0f863610d38b1577","openssl/crypto/x509v3/pcy_local.h":"920fb9c6d96f0c8b22b784d372c7c63bb498647f6b7b90881062eec2e78c346e","openssl/crypto/x509v3/pcy_map.c":"7ee7e0359e5f50415ba878e8f73b4f2f7a451f716b74a91253d18cd23b05b4c3","openssl/crypto/x509v3/pcy_node.c":"4b0aafb158e95253c809155f7c579c5b8d4ea54476e86112e923c9a8b69754c1","openssl/crypto/x509v3/pcy_tree.c":"91c5d0c135784dc9d1da4d586f2e49f6c386c0d0eab1271317361396987a6f18","openssl/crypto/x509v3/standard_exts.h":"561a315dfed93c1c074b2288210afb3a2a163db9389e281e866a19ae2f8c05e6","openssl/crypto/x509v3/v3_addr.c":"02a4bfeac51d192ccabc4b8c56ec49c35b0938bb862c752e3239c23f59321ae0","openssl/crypto/x509v3/v3_admis.c":"b2090e98e684f0fca9f016f20c959f1c630c8eafa38b850494ada0a8c191fe87","openssl/crypto/x509v3/v3_admis.h":"8dc121a741f2345d3ea1cd1258821b83bf99950d7590f0e8e157d5ff3f673592","openssl/crypto/x509v3/v3_akey.c":"3d50125fb6e479a7fb59e3a0afe91abeaafafd5c5ef3896536a21658a07894ba","openssl/crypto/x509v3/v3_akeya.c":"181c9116647979b27ffa2833c2423e48948e865d56d18d6cc2eefb5c31b32ac0","openssl/crypto/x509v3/v3_alt.c":"cac155e95186cee104cab537c82de01162f1296402b95e76d5510921849cf79b","openssl/crypto/x509v3/v3_asid.c":"5547bff1f478dcf55619ee0578cf72ef16defcbb11b7c51b93c5e01cc3b6113a","openssl/crypto/x509v3/v3_bcons.c":"647b5cf5cb8443d071d33fc0bf4e324ce232664c2e2db4aed2ddfaf1dd504ce4","openssl/crypto/x509v3/v3_bitst.c":"a1d385a3aa75f9f43252d80ea6d5d0949520910d40f5262efdcf730b7dcc68c9","openssl/crypto/x509v3/v3_conf.c":"a68af11573fbdf678c010cde17d2dab26645c3c1901b5685cf2ba60421656bc5","openssl/crypto/x509v3/v3_cpols.c":"d6398b7d6ed5f65f6dc1cd30e5f4d275d86c31088437f5328b8fd4777abe123e","openssl/crypto/x509v3/v3_crld.c":"0d1b5df4977c278b76ea5d560afe93d99d0b3d54d1dff54a9563f39404d20e1e","openssl/crypto/x509v3/v3_enum.c":"dbfc84f80c93e5c2cc6908ed66f5288c57346785a5228a2772a540f6d77a8d5a","openssl/crypto/x509v3/v3_extku.c":"8d515314dc30aa17016e8a3ea96dc633df24507a88180cc81e8629592959c6c8","openssl/crypto/x509v3/v3_genn.c":"df01b46d706e5efa369474cb35c55ef215ca26744c9bf0a68e39d1f4ff14c5b6","openssl/crypto/x509v3/v3_ia5.c":"03b7078100cbb644ae1587095fd90fb9fd81c014fbb14b5880acb0bd4d369cf5","openssl/crypto/x509v3/v3_info.c":"a704352335f9ce19b84d9e064ad2bfc76a538c8d6473ded006ce58f8769c0d03","openssl/crypto/x509v3/v3_int.c":"a8d9b35e0d9b4b9e5ea9c665c19a3d9293b375b3064b94bd85206f6ef5c57a14","openssl/crypto/x509v3/v3_lib.c":"a3e4ba890b2bcfacb5a0a6279420256b6fc2fe5ed84e51496c7f59855d110af6","openssl/crypto/x509v3/v3_ncons.c":"62b6cefaf3d957f132745560be7afe23286dee509daae43323b7c4b6c1fdabff","openssl/crypto/x509v3/v3_pci.c":"9c350ee6a263e6524211bcc01f3d682bb4c9cf42f024f219405a9c077a0d12ef","openssl/crypto/x509v3/v3_pcia.c":"1f03c6643126ce61047b25730a43136cd957ed545b0bb3955f3add35b6142b18","openssl/crypto/x509v3/v3_pcons.c":"6bae7cb1bf646774af20eb4e7bd307e2f0915ee2b67a0e5f20e4ab72d7d6ff37","openssl/crypto/x509v3/v3_pku.c":"38fdbd7c25f247cd67bc2b65a88bed20b806d9de59bf95aace8f3a05b9a56964","openssl/crypto/x509v3/v3_pmaps.c":"7c66d9ec0fc5f7285002ed589d51f75beec9c9d9f9343e1e0f4721d00454ad65","openssl/crypto/x509v3/v3_prn.c":"3e0466448d6e7a8547d57c3266e069cdebe9b227a1766b989490c00f86fcee9c","openssl/crypto/x509v3/v3_purp.c":"803111de281e23a11904942114ba9ada725f1145884e6f87985364e15b2e747d","openssl/crypto/x509v3/v3_skey.c":"4b09cca8fc2a3c8d48aced50af76bae6b8e2363401d5f00a0f349867a1a6a41a","openssl/crypto/x509v3/v3_sxnet.c":"511d8eca602a1a6bfc2813449fe2973bdb81715fd92eb06cbc5700b312f7ea33","openssl/crypto/x509v3/v3_tlsf.c":"93435b658dcb57ce4d9c09de0210d17db26e64cb490a16107c7c6dcdaef35abd","openssl/crypto/x509v3/v3_utl.c":"5f29bd7618ee9440296fa045ce899f99c43646b868e5c9776357ae2d1cd1c041","openssl/crypto/x509v3/v3err.c":"a034feaf8bff0db295a4074ed7c3448e885c0d4234fb458bce9c0df23fd8c548","openssl/crypto/x86_64cpuid.pl":"45435886ac3894284a39a26dd700602e4b5bd7f63d3defa9e9aef908ef7578ff","openssl/crypto/x86cpuid.pl":"2801d3febb337a6632e9cfdf347a55711de3e59df0f5f04fe74414163ac0ed93","openssl/demos/README":"dd75e8bf6efa43f84576fb0ab2e52c17bcc3565feff860ab9262087bd336e874","openssl/demos/bio/Makefile":"117f672c377e6d6a589361119be2e9741836ceee127a84155ca19b27f3e03a23","openssl/demos/bio/README":"9e9fc749bb331abeaa5347529f6bd04d0c91a8a6d932bebfec16b4cc72f1caae","openssl/demos/bio/accept.cnf":"3446ea01ca3623b6438dd067f5a4557566dbbd8d208ae2241eb2a6b6f98098ae","openssl/demos/bio/client-arg.c":"0609805e79b17696f1baf766b77a116a026c7cf1ed954bbe8aaca24a011a30ba","openssl/demos/bio/client-conf.c":"176e114d7d6a1ab0a0eaf34b9bde6cba41f2eeb415a56fcddcc996d45321c332","openssl/demos/bio/cmod.cnf":"bb075cc2f6e2880f67450b2125186a0d40a2519651e12113ac4bc60d87b779ba","openssl/demos/bio/connect.cnf":"6aa9d12d5718ecd640b6d71b22abc332853943e4f4690b6d5ec2f992f90721ad","openssl/demos/bio/descrip.mms":"45d5237b66935b9602ea9ae998c9dd147998a00b21ba017ea3c6f5363ce6f1c4","openssl/demos/bio/intca.pem":"876ac7a17992346c11205a5e55972347eb76486e30bcc218c3a4954545e4e282","openssl/demos/bio/root.pem":"3a33842a19657f72d1a14818cd53d845e578a7bcc3a55c0ff93a911d7d7b82c8","openssl/demos/bio/saccept.c":"e3aa04980d7e3f5aad196b53bb97d467910eef289aeb0936e72287234511511a","openssl/demos/bio/sconnect.c":"3cc1c8044f13fafb93dfb395abaf8f5e6395a2bc5e1dfbe44d1fcdcf23a0e325","openssl/demos/bio/server-arg.c":"f18754bccd974016f621e417d82a7ee548ac0ede019df1278ccf51920143e011","openssl/demos/bio/server-cmod.c":"221f2aa36c686cc007c2a2385700f4684b8d43a4999b48ff918ebbf5734e5470","openssl/demos/bio/server-conf.c":"ebaf1a312465915b9606a6185bb59e5136929c4c220ddb9a4de501d36a198e25","openssl/demos/bio/server-ec.pem":"ceaf699619734a8696d669b0b5534a63a416f9cf0b7da1def7a71b45f5f252e2","openssl/demos/bio/server.pem":"57d7d62587cb493806f09fee4f8da1b0a9ea7b6e77aa43879a5fdcc85ff63a4e","openssl/demos/bio/shared.opt":"2d85fd326a716bfd18bf535d7701ae4d19416d11a460fbcc01f5c0ab344cfe62","openssl/demos/bio/static.opt":"54b4d25d172a692a062d0cf88280bf0a1728779c1227f08b5d920ec28523adf6","openssl/demos/certs/README":"c62177cd495b1692f97f3571844b1b4f873f4d811b75fe17b67bf1daa9897558","openssl/demos/certs/apps/apps.cnf":"d9386d7f5eba2af4830f4f5a4da20ef4de1bff11f4a1f209aeda513a80b52bf0","openssl/demos/certs/apps/ckey.pem":"c261be75344e362cacc629218eadcfbdd96823c869685959a3ba7af79fc3f6b5","openssl/demos/certs/apps/intkey.pem":"cba3a56ebf13674fef79721d16fbd3404b991107884b1aa628a43b6538c00429","openssl/demos/certs/apps/mkacerts.sh":"f21e64c6244d7e66d2caca5911ed9fad024f19088125d00bd9912a32c8db86d1","openssl/demos/certs/apps/mkxcerts.sh":"45dee54df9d305f719a833bdc92a5af92fa70f93f7fa9cdb1996bbfbcf0778b7","openssl/demos/certs/apps/rootkey.pem":"49c67aac894bac4cacf8891fefc5dc99126ecec6948c5c51ed31443c9cf5cf12","openssl/demos/certs/apps/skey.pem":"d0bcbe9a9ff18061856a684670a40e82d5fbd57d3c95f35d886c392ce1bc4929","openssl/demos/certs/apps/skey2.pem":"48f1d94844d0d276e8c41fc9ce9e37485bc5551e939f57ba7a4893d0d8d98971","openssl/demos/certs/ca.cnf":"751796c86aa25148cb62a05a0c95fc68271c9a5429672c72c254cf8cdf852891","openssl/demos/certs/mkcerts.sh":"2e3afbbfa11141e2f6b1db6e64f518196f43e34638399dfbf2205a34ef6b25f8","openssl/demos/certs/ocspquery.sh":"2d04b40e04d895f6ea27fcd08bc71e6e857c9954d22572ec63c2d8ddd2373f10","openssl/demos/certs/ocsprun.sh":"a669f8a3e1c0f1279307b097ec809b25a44a4d4f6de613d5d9d5e9c73ce4f559","openssl/demos/cms/cacert.pem":"a648d3e421b0c2a1bf65414158c8472b24e7684488d8b4bf6ee45de32f3d4cae","openssl/demos/cms/cakey.pem":"c7ed282861c32151a60a9aa62b860d81ed7c906532b6eaa6606b77af241703ed","openssl/demos/cms/cms_comp.c":"ba7c5bb1d344f42619748a54cce24f00f52fb0f203775d02a999b2c22243708c","openssl/demos/cms/cms_ddec.c":"cb52b2389d60413f046cd9c639b1d789dcfb664530db977b6e0c728e7a0638e8","openssl/demos/cms/cms_dec.c":"08454e874c1efedc366dfd023b691133afeffbc8531cd03f5624329c8ef5ce43","openssl/demos/cms/cms_denc.c":"86349746ba3befd25c41c1011ef3a867eff6c49cb4ec88debc1211b14229287d","openssl/demos/cms/cms_enc.c":"ea86580d64b378b5f3ea38c43e1e431b7f04d5fd9ffed63af143ec3c4cb79868","openssl/demos/cms/cms_sign.c":"014cdd3058cf2465dca51d1c8d71daaa44312fb2af0a334ac86571deae13ac37","openssl/demos/cms/cms_sign2.c":"bd6d177ef1a95870f2a2df6c2e062b5c1ddaa616b2bf0c6f1e1c78302bd29f85","openssl/demos/cms/cms_uncomp.c":"fd1da2917b323ccb45c16070ed2a965aa961d6d803a2ad01245fa34cf8b48a2d","openssl/demos/cms/cms_ver.c":"f0032ed4fdb8b6324bf28bfbf567af67e9c4c079b2c79d453adb3cfdc7c9585c","openssl/demos/cms/comp.txt":"baf5807c5d1d1cdfd0d076538509b21358c0ab2e888b51a391258c729c640b06","openssl/demos/cms/encr.txt":"f79fa5e249dbd8fc6be362b77541e48d514a88ddd60825b81f74f8bedbdb2253","openssl/demos/cms/sign.txt":"d0f8790d669a88e0401215fbf2fd36a5307783612a65cec65d9c7110daedb997","openssl/demos/cms/signer.pem":"3a2a367baf036df9f8cae8f6abf59818a6695a513b6c453e86b0c5b2cec5d246","openssl/demos/cms/signer2.pem":"adcb64407c7a6aa0b027b584197d7ca2c6606a12fc638a0c6ba532c54b80d65e","openssl/demos/engines/e_chil.txt":"a7a199c58dfe8868de7a1b0be9ae2b109c48bf11f6ac14a0cf3a2523af2c22c4","openssl/demos/evp/Makefile":"743fbbfaae2829921d9c9f76d37a8ba08f73bb3f6b322388320c480dbaa4f66a","openssl/demos/evp/aesccm.c":"0e98fd498ff2df1e1e94488afe68c925d89e38574a86b2290486e2003f5f8e0c","openssl/demos/evp/aesgcm.c":"525952c5aaf76c5b9d0a261f4a158f009fc67020dd8a6339219e00811237fdf5","openssl/demos/pkcs12/pkread.c":"d52bfacedb3f4fece2b6af661a09f66374b88506341f807f19b524b9c3bbb96b","openssl/demos/pkcs12/pkwrite.c":"bd2b804cb9d6f04b36815f5721120647771c7860109397ccc9fb33ceeb1d3294","openssl/demos/smime/cacert.pem":"a648d3e421b0c2a1bf65414158c8472b24e7684488d8b4bf6ee45de32f3d4cae","openssl/demos/smime/cakey.pem":"c7ed282861c32151a60a9aa62b860d81ed7c906532b6eaa6606b77af241703ed","openssl/demos/smime/encr.txt":"435ed2485336e5e5a35e1c03241ba1d98ab1a10b754395e014244afde90cfad7","openssl/demos/smime/sign.txt":"8a62e6d85601452162cb5c4b6a544d651b5d21e3fb9133b534e43c8088f89021","openssl/demos/smime/signer.pem":"3a2a367baf036df9f8cae8f6abf59818a6695a513b6c453e86b0c5b2cec5d246","openssl/demos/smime/signer2.pem":"adcb64407c7a6aa0b027b584197d7ca2c6606a12fc638a0c6ba532c54b80d65e","openssl/demos/smime/smdec.c":"69507f4c8124bc7cab79f61d347cc63b67ab9edaed3604f9bd0f3295f2ef7a7b","openssl/demos/smime/smenc.c":"da25fab0c1f98194bb150f45f20cb1ca9993bf17289c109def009e3a4930116c","openssl/demos/smime/smsign.c":"1ad9d5bbee5c5452be286d10754a290b78288f0c8041123de66c9c0c858837b0","openssl/demos/smime/smsign2.c":"289a8111a998a45fa59433816a23c8fe06505c4369fd9a4beb1810172f83a80b","openssl/demos/smime/smver.c":"6e09b1f8f636a0178bb82b289e434373e4f2fad02c583544d7db844a0a35a96c","openssl/doc/HOWTO/certificates.txt":"5924021ee2ddb3408212b77a918075b4d53f0fdfe5b6aa0f10aff82e58df6b6d","openssl/doc/HOWTO/keys.txt":"f1243eb87db2b3ed7d311e4eef174b8e08e6350f3c9ad13003f08df9b54be9c3","openssl/doc/README":"06848c1e90ba335bdaf9283725ed7eff467551212fb4ea701006317281f11389","openssl/doc/dir-locals.example.el":"d4d533c35de16586239014d1907eaf3d064b3f8f83e9d64aece6d0b1f730f0b0","openssl/doc/fingerprints.txt":"150faa5fb7c025f81ec510f2091dc34e3d6c36d2751ffbc38b10b127bc4bdb45","openssl/doc/man1/CA.pl.pod":"c9ff465a4fc35b9f96fd7c4969f502fc39b6b7bd10759c054baab95d726d2199","openssl/doc/man1/asn1parse.pod":"37caf9092a1256e45780be842a61ed570b21f7a527eb88ffecd862df9afafe37","openssl/doc/man1/ca.pod":"2277d2fc30b46a44256f7815043d5628bb5de6456b439bfdeb4777526d6bf6dd","openssl/doc/man1/ciphers.pod":"516d7a0512049475c71c170366e7bb5b79e1e5677cb1a8a40236127993d3b161","openssl/doc/man1/cms.pod":"92cd8fd544bbbe143521df3b5915b0f902c82cf2ef86194f22da5a3f4a6a7108","openssl/doc/man1/crl.pod":"810d4de260c4da6decf285ac39abe3c584d3599c1b7be79ab6d7e14636fded7f","openssl/doc/man1/crl2pkcs7.pod":"b268e620e4c73cfb1ba6344e41426ae361ab3ccad1757fc288c2b0cb867f2f93","openssl/doc/man1/dgst.pod":"c6b4493087df02c21c6ad204aa57e7241764a2f2babeb085d765d9fac91f359b","openssl/doc/man1/dhparam.pod":"6c536d3828fdcebd4314acb692523bbfd81d3a380b09085b6bd624094e39dace","openssl/doc/man1/dsa.pod":"3b9e19de709c8af3b9dbfda71ad9c4470c9296fcfbc7e9eb9b0c41366a2ad659","openssl/doc/man1/dsaparam.pod":"14d6e77d1a8082be208cd3423ac5ea06889559c3f5d952e79a5c4752d27207e6","openssl/doc/man1/ec.pod":"3ca0c2fd9e648ac45c720d201d975f2e836a4e150fe9178fe423b03cc9a18af4","openssl/doc/man1/ecparam.pod":"acdd81bfb533b283a6fcb49c80cbd4ca7540c44496583a3ca20bfd3458d2cdb4","openssl/doc/man1/enc.pod":"44b1492a1d6045430443aad2dccc20e775fefd48052b1a518b8257d79efef18d","openssl/doc/man1/engine.pod":"956f40b58d88348040c05de3b4b717826d2105981a0a150068afd1df9035a25b","openssl/doc/man1/errstr.pod":"f378decd1e49529aee4e3e57cbaf810fc6dfbb735c2a5d1722fcecf6e0103e32","openssl/doc/man1/gendsa.pod":"086bad15f6e6e7b35d890aafa0b96be9fbbeb1cd238cab5daad41a5c65686c71","openssl/doc/man1/genpkey.pod":"19e1b8a4f87b10f6d5c5f0bef195c862b28a1ac56b78e08515dac5d5599be1d0","openssl/doc/man1/genrsa.pod":"d72a1a8009fb4a082bca8ad29382ff9f84198d32aa56b685b7a49ca05ff7c591","openssl/doc/man1/list.pod":"e92acd0bed1ff5d77705667c87e206f0517031273abefead26e6eb1b73d64c84","openssl/doc/man1/nseq.pod":"0d8d6e396a2b821b2473b23ca51b6d72bc321d2a19933b18ee5960fe51508ba7","openssl/doc/man1/ocsp.pod":"aa271208f076f3919559a6e6a6b922404a674c076b654d3a20802c77ff44365d","openssl/doc/man1/openssl.pod":"bdc08295a016259f9980a9dc840d8987b9f556745cf927fe23fc8551e2c6e712","openssl/doc/man1/passwd.pod":"34befccc6591bb2aba468c3af879458446158d2c5bea1cdf86e80479dfb1c9e0","openssl/doc/man1/pkcs12.pod":"d67519deb1f2273bd12d979af01f5121e6ea276109d601b3740662f8d09e6c0c","openssl/doc/man1/pkcs7.pod":"8901f6dd53ef0d83c9f236c2d896d04ba0ae09e19300435f95751c72cf148ea5","openssl/doc/man1/pkcs8.pod":"ac2968265a97d647812d4bf23011cd0c47e8f1a40c9a162d4687c989fc009c79","openssl/doc/man1/pkey.pod":"c7b15453ba2c6a4bb4b0c541d0d96f37f49af7a0df6bcc9ea6d7c32d3a4652ba","openssl/doc/man1/pkeyparam.pod":"2ea25538484191e0dca7112a8aa3b25aca5a12fd1697121aae59a2619acd1d51","openssl/doc/man1/pkeyutl.pod":"f992efc685ed5b5bd4d141780eed4d6fc349ec401b037813abe0eefeae6a6cd3","openssl/doc/man1/prime.pod":"f8280e24245f07a77fda976740e0c038a424f9124b32da974e369401b4b688fc","openssl/doc/man1/rand.pod":"a696ce5df831a9d531cd6bb652e86ce7986d3fe4a56976028780435a0ccede41","openssl/doc/man1/rehash.pod":"5ccd3e337ba0d6f440f4bc60729e374788d1f7fa986a50ed0185c53da4821587","openssl/doc/man1/req.pod":"ccbe1b6c26f231434b2eeb6f0db715cbf144fad4d34d32b937dafcdaff6d87c4","openssl/doc/man1/rsa.pod":"d4d3c706a1bf6410da61cb7730517b06b93a831b90392d1a1477008e5eb140a6","openssl/doc/man1/rsautl.pod":"722c01fd7945b7f038c13d250c1faf1a7eac51e4582b9859429523d1d9f3de47","openssl/doc/man1/s_client.pod":"b36ff3cf3cd179b0e59bd3f4af0785e5d185618275fb911ae26de38214ee2f7f","openssl/doc/man1/s_server.pod":"637eb5bab15cbe0e07c77adf25188ada63d0d8472e2d6ec72c0df2e4e24d4592","openssl/doc/man1/s_time.pod":"c8cb6a1e343a06fe20046f07a523ee92273b07b67da6457e30e95a33c44dea68","openssl/doc/man1/sess_id.pod":"4184f0eea825ea06e9fec3744e853566333c25f802f780d8c54e5bf883ab9f59","openssl/doc/man1/smime.pod":"5c61834179ca1f1ee611ce46dc9c4c1bcaba4ee2a7015e896c189d5c5f4882ef","openssl/doc/man1/speed.pod":"6293b599b5c08bee8c5126d5f4a31eb08f67e4bf11b9222d80b466add0b0784e","openssl/doc/man1/spkac.pod":"b4413cee8b653a2d7969fefc55e4ddd32a7b380915b6be37549b7e4e5271ad68","openssl/doc/man1/srp.pod":"99fe0c81640a18655c5ab8e56d41bbd64e45a061e33a394299869e241fb1489f","openssl/doc/man1/storeutl.pod":"c7db7043ffa90a54c660312660d60b2ade5e141902faceb1e6729558b3f4877e","openssl/doc/man1/ts.pod":"e778f20a14dc98b4fb21060353e5d690d6d2b06bfd8f18102dca2cde63582aae","openssl/doc/man1/tsget.pod":"a0e814408835f766ece5811c783687905d86a96c53fefebcc5c943f219d876b1","openssl/doc/man1/verify.pod":"32afc1b00816faa9e382188398022fe34f5530db5473ea1f39d96cbd416df0cc","openssl/doc/man1/version.pod":"9e1979cc0c8dffd2330d99e2387c1954dc9d5985485add35660f157267062078","openssl/doc/man1/x509.pod":"b7b16dbf4530a8c1d14eca1177a7120a2bba47f0b1b2182c02239ed4c14bbc08","openssl/doc/man3/ADMISSIONS.pod":"0e47448d30d675413854b2a6cb4c62054129f142a9ca5a131bbb5994acaf84e5","openssl/doc/man3/ASN1_INTEGER_get_int64.pod":"f45317514145f3f959520236d27e8469234b600587b333261f2cd45b74978962","openssl/doc/man3/ASN1_ITEM_lookup.pod":"52056b94798838216bbdb47c5c735ad6805c01332f20747ba7ad299d930cd0fd","openssl/doc/man3/ASN1_OBJECT_new.pod":"1a16a3048bdd841bce92a48677db293a78419bd487126085024ebcf056a1ce91","openssl/doc/man3/ASN1_STRING_TABLE_add.pod":"eff5457b59194fa1707ae5f544bfa10418c12921899e4c2b6031649f488f06cd","openssl/doc/man3/ASN1_STRING_length.pod":"20e8a297f425a09ab543715fa99f60bc03850aaef70dcf3ed4fa29bd30160786","openssl/doc/man3/ASN1_STRING_new.pod":"8d88d413502add013edee187cd9ad1b57af51cc11782da2e9c865bb4a641e605","openssl/doc/man3/ASN1_STRING_print_ex.pod":"21946f10f99781a2d3301f12acf53d8112925375a2085c01cb475772518b6166","openssl/doc/man3/ASN1_TIME_set.pod":"7f3f81980694d321f45bb45fbcc42c77c05771d316b146c0639ce2fa5c55eebe","openssl/doc/man3/ASN1_TYPE_get.pod":"539214daf11857c02b88ab0f2911c7fb74426934ac47040b807e1f48b0cc8777","openssl/doc/man3/ASN1_generate_nconf.pod":"171bb2a07a7cec062437a0613da7d147e025635a77714992295196eebd777bf1","openssl/doc/man3/ASYNC_WAIT_CTX_new.pod":"fc2f03f854f7ce0ba1365a6cdda6be9517b0f5cf9bff2846e943cace5d63a594","openssl/doc/man3/ASYNC_start_job.pod":"81015f757d1dcc902f70e809f4ef68a08f70f5f9e22d60d3d906bcfa52e6ea4b","openssl/doc/man3/BF_encrypt.pod":"94a8c4d9b6dc278bcc5c34789eeb086ddc0ee4a76d71f48ebf1292ae2a623cad","openssl/doc/man3/BIO_ADDR.pod":"0cfce6be0de80b728e9e997c7787de7f08a606d6ae18e6d6f46a1a8a6eb29c85","openssl/doc/man3/BIO_ADDRINFO.pod":"d0bb976134561aea384f6d6198a9e65383475a06f3694f530f165125db8c68e9","openssl/doc/man3/BIO_connect.pod":"9ba374b343d094bf57210c15cb5a9eafd8fce65d57c0b3d85d3905361e7de984","openssl/doc/man3/BIO_ctrl.pod":"0b940fe22b3f6d52211f239a93822976c532227812848f388be8ed5a5b8be329","openssl/doc/man3/BIO_f_base64.pod":"5d22df36626adddd5b12551586943355d2b88e44483fdf39e44af61d06267dc1","openssl/doc/man3/BIO_f_buffer.pod":"4b46af048133c3062b68768b817eb1d134b721b16b1fcd9b21804d6af78f97df","openssl/doc/man3/BIO_f_cipher.pod":"bdf7ff799a66c12659fff0c48904053b4525740341d142eea10799929f0fc3cf","openssl/doc/man3/BIO_f_md.pod":"6fe4c50b0500ef7fb758985b9671c920d9b95cc12af40b4357924935a6b05112","openssl/doc/man3/BIO_f_null.pod":"4c6cd77a55188c983d2a91bd8b64073de37d0e8c662de780de68dd87a34b0ce7","openssl/doc/man3/BIO_f_ssl.pod":"090d258b7d7df965b107c4bea93f33ca6a53b6ff97c7c1a979397c46d63f9ffc","openssl/doc/man3/BIO_find_type.pod":"fcf5357f5529ed3df6d3ae454a8cb944a24f98b2c9b088ae0b326b07d6178111","openssl/doc/man3/BIO_get_data.pod":"7d4656acd2494e1229c3f0f7fbc7ca313f69e7e5afd43736acc93ac58f7ebba7","openssl/doc/man3/BIO_get_ex_new_index.pod":"56d5cd2469bae856b77669d4a416ab0b6e42d622128ad5b5c6ae10178ef33284","openssl/doc/man3/BIO_meth_new.pod":"5c7e859c14648fabebf81873de311127424bed0e6db40411e6d7b734f96d16c0","openssl/doc/man3/BIO_new.pod":"4adbd6353586dde668b645a13cb9dc34c615d85d4312c493dc082064dcc075de","openssl/doc/man3/BIO_new_CMS.pod":"768b0de763b920189521a86497c07ebcfd22383a39bd92acc64d37c28c1a5925","openssl/doc/man3/BIO_parse_hostserv.pod":"7ecea4ecfa32d705bf4cb7038896fce0d83d360a6ab8f7e3b8b7159261aa74f4","openssl/doc/man3/BIO_printf.pod":"f5fc563636de300e191cb79d3265e219d540452c94870aef8611fcc905bf2178","openssl/doc/man3/BIO_push.pod":"e37076a2b88830d2f49b7c803a2ae295d8ec8728d076552a5379f59c4c066a21","openssl/doc/man3/BIO_read.pod":"3798d92f798cda03cf261187da338fe9eef3fbd36a2d5b9553632c373a5e8189","openssl/doc/man3/BIO_s_accept.pod":"7c6e3ab07bb088cd8814c8e5727834c667b4aa509b6ee88606338fd210edb6a9","openssl/doc/man3/BIO_s_bio.pod":"1becfc7e3c67bc7721e371628f9cf035ae39d28749acd8b1ba267f61cba12c00","openssl/doc/man3/BIO_s_connect.pod":"79623a97b5e4e33f3fcd1ee8a09e074d386bd54995896fa43b653f6a5a817d33","openssl/doc/man3/BIO_s_fd.pod":"5726d2ef68b96b2d01f2803d563a1a0300ae9aed1c133307eba1e86c804b73db","openssl/doc/man3/BIO_s_file.pod":"56cf9dfd449a4508bb1e6b8787ffa0697a46c92cee1f4ccb64a097849f89f762","openssl/doc/man3/BIO_s_mem.pod":"84f3342b7ea398478a39314dff2d82217357fc913595ec0f7be90ded69fe65c8","openssl/doc/man3/BIO_s_null.pod":"238c7f139d367977908644b92b1e4a674c9e43f9357a1334ae23327859bae9f3","openssl/doc/man3/BIO_s_socket.pod":"3ad6e926a104e7614d431ff830660263dd6b2e63241bd4c67f9f906d687596a5","openssl/doc/man3/BIO_set_callback.pod":"c3d0050e3e10414a89149f1141719190c76c3a2fd755d2fb09d82895b6d58449","openssl/doc/man3/BIO_should_retry.pod":"d4c7f036fb3f7c148e63a1106fff4e1a387cbe0d86689e561bdfe40e37e1520a","openssl/doc/man3/BN_BLINDING_new.pod":"d234055a3d363fbf60bff965a1653ffbbd2c9b77f1a2ea417f8294029b9cfb26","openssl/doc/man3/BN_CTX_new.pod":"60dabfa0a4558ee3896896ab4d0f94e786bf0f9934ac0db8af2cc9a1550760a7","openssl/doc/man3/BN_CTX_start.pod":"e44cc9208720c706eeb5111ac2e6437104694cf8f1448bac264fc65c7171791b","openssl/doc/man3/BN_add.pod":"f839971ea3618be74946f8ec9c2acafd7e96c272e1bf7ad44877a1f40d6e6526","openssl/doc/man3/BN_add_word.pod":"05fec916d3aadfd9f7bc8d89b33b76dd8e209b8a85b328eb72bf5e1dbb9f1a89","openssl/doc/man3/BN_bn2bin.pod":"b794b15c0c4e029d3c14bbf0784a92ad7f7ea1bbcb176f7d18114435074e3199","openssl/doc/man3/BN_cmp.pod":"150668b20f5a946e6615de45dc3f6b5d7917abf0ad9b7083fc983d931e621635","openssl/doc/man3/BN_copy.pod":"e38cc0fd535af136f52c2d3e726f03e91a16ab19c6064eb6df44e546597d2238","openssl/doc/man3/BN_generate_prime.pod":"3a864bf07e5369b3c212e42207b872b9aaf8c9cff83d455e5a618f3e4712afec","openssl/doc/man3/BN_mod_inverse.pod":"9e539642132fd30dbc5d3de75c0a8394858987b0185e01c7499265cca175e501","openssl/doc/man3/BN_mod_mul_montgomery.pod":"667bd4c69fc3b235370e48434874df19f5e095202bc42cfc7a6f1f13e4c286bb","openssl/doc/man3/BN_mod_mul_reciprocal.pod":"f05e308970e1a3a818f7235184853460e615d97467a386c070c3d7739369af17","openssl/doc/man3/BN_new.pod":"b1f6ab481d2bcbb0f3dcf87e3d7c477b77cbad453daa16e43222e862d269c7dd","openssl/doc/man3/BN_num_bytes.pod":"f3505483afb503cd27891c8bce713124863ba8ce764406ffbf26c661729f18bf","openssl/doc/man3/BN_rand.pod":"09ac7848995e5b716b786cdf6c942ea1cba30401a1078000b7c97d71c095f023","openssl/doc/man3/BN_security_bits.pod":"bf0d1d1fc14efff28f970e916fef140d6f01c24426e11724c413bc1171e5107f","openssl/doc/man3/BN_set_bit.pod":"6e3cdc6952d4937303f874fb6c32e5dd91e390917ea144d906e507220c24b679","openssl/doc/man3/BN_swap.pod":"5ec80972fbdfbfffccef9e4fe3e69b7e9a3444674d58ebd5d5d8ff68a64b1be3","openssl/doc/man3/BN_zero.pod":"de18d59b5794437a2a10fb68f5154719f841442d8d4250489e13598b9c4bd755","openssl/doc/man3/BUF_MEM_new.pod":"317e636b930c1ef0db349b5e1851f2429148a113e2c7919df89e15596587a558","openssl/doc/man3/CMS_add0_cert.pod":"29712e051a0755523458cccb9c7437faf2ff24114efa31417342978dcb008cea","openssl/doc/man3/CMS_add1_recipient_cert.pod":"2e378848b5e155b1c5a5c3e4a734b26cc3f080d2bb044b972f1dd1782a4af14f","openssl/doc/man3/CMS_add1_signer.pod":"963b52dff6097d7393d39a90e7d7ee567b9bd4b36df476721d290098ae87f5f4","openssl/doc/man3/CMS_compress.pod":"7fc48fa2318babdb85461e800b34e8d53bd6a2da9bedf3c4264f42e61ba9da60","openssl/doc/man3/CMS_decrypt.pod":"2fb641f3d335d85fa96788cc1d1efbfe0803c84621c45b127e633d201e74c919","openssl/doc/man3/CMS_encrypt.pod":"4e34cd4df8943d2d278a57904ba99aad50afafc759868cd2ae8a453b8776f6ee","openssl/doc/man3/CMS_final.pod":"9a5c5001a1a2b8404221f1639bc5576e13ad4d7d411c085fd746d82f77b1faf0","openssl/doc/man3/CMS_get0_RecipientInfos.pod":"d06fbe3fd9f2bdbc4243dc50f7d2efd8228d103ee430f0202832e26edfd491d0","openssl/doc/man3/CMS_get0_SignerInfos.pod":"1282cf2e6dc3d9a6dbfba9b3994015f8029af065d8a03c223ec5b2615da5b057","openssl/doc/man3/CMS_get0_type.pod":"544f392b7432a3ad812e6b5d2afc9d5f5aec4144a91bfcc891cc9d5721cea045","openssl/doc/man3/CMS_get1_ReceiptRequest.pod":"304864e369450ebb03c764f36138ee07c9820e9f672d2780a47d969e68a86174","openssl/doc/man3/CMS_sign.pod":"d3494ff58523487f0e7ad2e24c71c467f34fa46bea6e7870402a7d4a089ca874","openssl/doc/man3/CMS_sign_receipt.pod":"789743ff3440f5e6793b8b7558d31a2d1e2a1b79822cf09380cf907879ed2d04","openssl/doc/man3/CMS_uncompress.pod":"3eedc42c074cb37c9c1e8c16ede2bcc57863ff8a8e488875b6a66f4e039c1e7d","openssl/doc/man3/CMS_verify.pod":"dbb6224770e5c1a24b4089e9cb1438d5fde1b4ccbe88d1dea4486d0817e0f59c","openssl/doc/man3/CMS_verify_receipt.pod":"4e74724f074c9254a05b153eee469a9cdf6b322496ec7b18c19bccee0a3ddf0f","openssl/doc/man3/CONF_modules_free.pod":"42f3d8211c7022ae823c0fa05173c1cb2038658ab392d9fd7124dcf5f590733b","openssl/doc/man3/CONF_modules_load_file.pod":"4c8fb2a920962f2aa1663122cb43f1520450d7d753e36db39a2fe38da3510657","openssl/doc/man3/CRYPTO_THREAD_run_once.pod":"797a3d74e255f8fd5ce0adb56fef357ec963e4805b2345cd56e31a4531c47e0f","openssl/doc/man3/CRYPTO_get_ex_new_index.pod":"9d63dfe936be09bc546ec4e65d35b0e9e056e44d22faf6bfdd33bc75f137c5a2","openssl/doc/man3/CRYPTO_memcmp.pod":"dadad3db32833f23b6239a22af22794f36ae60d5979356ab85934ad5bd0b8425","openssl/doc/man3/CTLOG_STORE_get0_log_by_id.pod":"d5dff2f8e4b974ddeab059b82c596931012e1fbeccbe4c548614017eec487f02","openssl/doc/man3/CTLOG_STORE_new.pod":"28559ea6b4616b147133d494a9395285db773f1374290c834b1bf478761d4682","openssl/doc/man3/CTLOG_new.pod":"d59c7b823ae4028a38c44eb7b871f74654742358b822ff4a5d7b46f59e67f12f","openssl/doc/man3/CT_POLICY_EVAL_CTX_new.pod":"25d166c38e5a308675853a9efc68f8e61778f4beef0910db98fa8e309d261f6a","openssl/doc/man3/DEFINE_STACK_OF.pod":"526d9d7b7d7b817fba349d093badbdb9fc116532d720d168e3ee27a9e57a0905","openssl/doc/man3/DES_random_key.pod":"7f989d0d1f18f8891f6a43f29351370159b16bb4624c8c3510328aab8b95266d","openssl/doc/man3/DH_generate_key.pod":"235a5260ee379912961e9796803b676d82a125199a757102fcbbe8bd20602bac","openssl/doc/man3/DH_generate_parameters.pod":"a81b0968f27e40faec8551fa288d5dd618ee21dfb65faf97c579da66b0ebaa8f","openssl/doc/man3/DH_get0_pqg.pod":"a021c04f8cf4c655616a65dd7f34728565fa51b66f1db1c4edfcc553e938e5b1","openssl/doc/man3/DH_get_1024_160.pod":"64124df4465d5d3eef28429b46699f657d574200d50446d9805d574f83a86811","openssl/doc/man3/DH_meth_new.pod":"eec607ed0e3516870ed3a441bf9711cf5cdb6fd1fd5afa9c054ff39f35a03044","openssl/doc/man3/DH_new.pod":"26ea8071e356b98e512cff1e3a7409bd1089b2018638ac57c9f18899ed85b92d","openssl/doc/man3/DH_new_by_nid.pod":"47ce456b14a300c0fa4ef41b7c7d3a70f3a4738d129586d4dc63227f0a2a77fc","openssl/doc/man3/DH_set_method.pod":"7947122b8228ea23a388f0e1bf99a8f5a9ea1feecb71d7da54f42e92d653c05b","openssl/doc/man3/DH_size.pod":"95434d66fd4e4f680384c2b9b10dbcdb10f5bd8f1c5ba6ee7bfe8d1c66686429","openssl/doc/man3/DSA_SIG_new.pod":"607f8aa941508739d1aba4154f6b5e3232a9cd71eb626e58839819996f728fb0","openssl/doc/man3/DSA_do_sign.pod":"e5071a56133f1da4aec76b8548885f9133433fc9c37a24de6ce0197efeeb5b69","openssl/doc/man3/DSA_dup_DH.pod":"6f81979049c4fa72dbe3bec84ff8e5fe72180da021e88cb4e76e132a8f3ada23","openssl/doc/man3/DSA_generate_key.pod":"9246c4a9351f072ec084b6c36bfda48b41dc6d5bd3dfd46c9a4c76b7775161b1","openssl/doc/man3/DSA_generate_parameters.pod":"e7f7686f7ae2c04411625e7eee092429a0a79a1c641269d292d4f4657e697aab","openssl/doc/man3/DSA_get0_pqg.pod":"a2d2e564ea441cd476fb27183c7a933b533002d1dd6018f0974be7cab08962d3","openssl/doc/man3/DSA_meth_new.pod":"bae93a4a147aff44202d1cbc65f07d83f7623400f1010ac68c7aa82583e057a6","openssl/doc/man3/DSA_new.pod":"c3afb59163fbee4bd561cd252753f762cda3245c99f72b9bc16f287efa3009d6","openssl/doc/man3/DSA_set_method.pod":"4adda74b7c4add094ae47b4bfa262ffa3ac5d98cc924a8093d98832cc50ed949","openssl/doc/man3/DSA_sign.pod":"f0da4d4d0cb32e83d57f0a75dec6a18e89a9d6ed0ec8763e5f95bfd95dcca869","openssl/doc/man3/DSA_size.pod":"ead3b991b833a03cb5025a8c62a579d429fd46c238f029116ed63f712d15850b","openssl/doc/man3/DTLS_get_data_mtu.pod":"dcc951c6a80f647362b6f57ad3d5d1b394d71f5d2d1f0713a564959a55a352a5","openssl/doc/man3/DTLS_set_timer_cb.pod":"6961cb7724044d54c1f545176fbc3a73d5f1c22f02448aed592dba5de7618be4","openssl/doc/man3/DTLSv1_listen.pod":"5d91cbd45490fc5713b5201b6b81e3a59a36edb81ae82580e3f2b04ccd06954e","openssl/doc/man3/ECDSA_SIG_new.pod":"a4db3f3662b197438490faa382a13223170750b85db8be9b9a6a86a63a1444dc","openssl/doc/man3/ECPKParameters_print.pod":"6a319d10c2d10a69a99bcc53adb912023639882d79b7ba6f63f4b06808e49c21","openssl/doc/man3/EC_GFp_simple_method.pod":"468f55c16a4c3ebcc4980e118e365ce5e669551844374b9886a1432069a87412","openssl/doc/man3/EC_GROUP_copy.pod":"7e7a51864e469862da38fc83ec794bfe51a80689a34a20feb2409854b737dacb","openssl/doc/man3/EC_GROUP_new.pod":"201d6eace6aed85bd124ac2c2482163936960872d6b6b06f1ae1501ebad8b7ec","openssl/doc/man3/EC_KEY_get_enc_flags.pod":"68b5b562fd8b3d307efc8f2e8d03abc46921f68357fccd98bb4889bc791825e0","openssl/doc/man3/EC_KEY_new.pod":"da19640a90108255a9a4f476229c3d3b6b42276c1fed3b31f3792fa6e5f6b17d","openssl/doc/man3/EC_POINT_add.pod":"62a1ed0d32b4db17808e8f4f87b3f7881e20622fcc01049b336723e50f5d74ac","openssl/doc/man3/EC_POINT_new.pod":"27a1d9ffcdf3ee7daa69aefc50faa34143224cfec09fbff6202a5765db38bf01","openssl/doc/man3/ENGINE_add.pod":"67129edbb61f68ff10ec94c3a0848c5baca8bfcf25533604f9ec3100029cad26","openssl/doc/man3/ERR_GET_LIB.pod":"6ee80946e3c3f2c4f50f4a8e73a55e16738923dab0f9cccbcad13aa415d20756","openssl/doc/man3/ERR_clear_error.pod":"a788808dddeb9993eef2963b9fdc00da9fdd77e6b9f841b95c0b9c4e5ad8e4a8","openssl/doc/man3/ERR_error_string.pod":"b8580a4083e3df8b4e77ba89728e765d52140b6020b71165e35e44437010153a","openssl/doc/man3/ERR_get_error.pod":"d0c803ed299e58019dcacdfcee791464965fb01456fd3ac11cf2e3a195cb75c7","openssl/doc/man3/ERR_load_crypto_strings.pod":"6424ee5f48c7af1621cf49231bda12591b6baa40da263d412d9bb3106ff2053c","openssl/doc/man3/ERR_load_strings.pod":"b96d1b5eee4fbc5da7dd0e3f50139cb38d0ff1d8dc9e08b0a67ef923315e923b","openssl/doc/man3/ERR_print_errors.pod":"34c86302401fc249cc967e429e6cc754445d4973ba733b7c44c7bb77e9ac72a6","openssl/doc/man3/ERR_put_error.pod":"d3e07bd8beb65dc939c3feb1c6d19616c3f909b63e0157cbef691c22217e4b17","openssl/doc/man3/ERR_remove_state.pod":"8fd62a9dc14e5d7ddba087450b2ec3d15724399dd64ed32c3d1852c35461301f","openssl/doc/man3/ERR_set_mark.pod":"d8ec32e78ff45187e3a23d56e2659d0db40178f0d7af192f4817efc9573e394d","openssl/doc/man3/EVP_BytesToKey.pod":"d6546465d79d7ae7070f6364c55cb88d751e7430ae9eb2e24858f68459e733d6","openssl/doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod":"72cced6510bbe15bb5f197ea1ff98a36c79e46212a296d8db5daf42d454bc420","openssl/doc/man3/EVP_CIPHER_meth_new.pod":"670bdd4d76065209b7014ffd3f63dc9ca3443fc9328eaee70662e370cb9b0f98","openssl/doc/man3/EVP_DigestInit.pod":"777ff51cfa9174b4c17c8cf60559ba5d170e24fb9a86ac842fc8e78576a40fe0","openssl/doc/man3/EVP_DigestSignInit.pod":"4938d5bda105167f47de5c1fd3d1c66deaf0230754512c8496c100e2b8324b8a","openssl/doc/man3/EVP_DigestVerifyInit.pod":"a0535d3012855d5ca2ba45bc7f62234f2c031c12d02cf90af9f6a8d9cad3e688","openssl/doc/man3/EVP_EncodeInit.pod":"71e10220a926a97cc6dd5766d01207a074a203338bb961f7da64192f493b926f","openssl/doc/man3/EVP_EncryptInit.pod":"d99c4c4619a7142deec5d6740f359e050d44575cb4637d1b5d6d270d5af4f2b6","openssl/doc/man3/EVP_MD_meth_new.pod":"7fb5fdea0aa29c4e348dd42a8544d8c4ee54676b14efed888b73e5a4d6369e7a","openssl/doc/man3/EVP_OpenInit.pod":"109d61803c1785b17c4e2592c804244a8aa9fbb57ddd52ce07009f67993a17fa","openssl/doc/man3/EVP_PKEY_ASN1_METHOD.pod":"5b4d6c9c5ba2924d0aa34d2e1e929936fe9a36373496960726adc0179602ab15","openssl/doc/man3/EVP_PKEY_CTX_ctrl.pod":"e9c09ebb53b26780418617763e45c2d4a036f25087b95fc72b04df06f538005d","openssl/doc/man3/EVP_PKEY_CTX_new.pod":"33f4660ed2843869bb2a5a3100a3103d980c9f89ded89cae7b2039b5373a9e2e","openssl/doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod":"d13281607e846b72e51a9999e7e5269ef8f72b006fe1df385cb74a50a99861ce","openssl/doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod":"a02969e04b738e3867bc976d30726f42083a192a0bb03751527a9187734d3dca","openssl/doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod":"37f8bc105e30cb0e08dec4080dddc51ac681b678807731252a75e7fee6f46f85","openssl/doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod":"9b8b0a726f5805ca8b05b4ae0999b4a5856a3e109ef5d956da466f32ed039192","openssl/doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod":"ca849639096c80ca2a71781a72e5cfca8302d037912f4905c213ab748afe95cb","openssl/doc/man3/EVP_PKEY_asn1_get_count.pod":"8e4fdf6685bc4bb39944dced1b4a48d88bb129aeaa5da9ff93b420978805a86c","openssl/doc/man3/EVP_PKEY_cmp.pod":"ee34265cd2b481820820cdf4b0d48f78ec8d805c754e2c882a02024683fea898","openssl/doc/man3/EVP_PKEY_decrypt.pod":"7cc2126855283018c7f213c1a02f7d2f31cd3c989f08f181cbe6dda784063c6c","openssl/doc/man3/EVP_PKEY_derive.pod":"b2cc409128eff8d8846677b931b1c6089e70103aba8c41449356e0799428a848","openssl/doc/man3/EVP_PKEY_encrypt.pod":"7966b6453b2146b91feffe453f385001eeecee78d3144a41cd9104b3c48ccfb3","openssl/doc/man3/EVP_PKEY_get_default_digest_nid.pod":"8007c64183f80dbbbe2914832ca33b79de0c6d3b8452ccdc5c853d1115bc75ec","openssl/doc/man3/EVP_PKEY_keygen.pod":"e31f91a808aa9c1894da2adb4fbc21e80a891c8e33c438da3cb15687bfb0e448","openssl/doc/man3/EVP_PKEY_meth_get_count.pod":"9636411e438dd91940c29da59bc102852e1623226bbe96f2a88959650b6a8295","openssl/doc/man3/EVP_PKEY_meth_new.pod":"da2a63792e8669d354dd6aed5ff0896677d51c3aeb0d2a710394f894e57cd145","openssl/doc/man3/EVP_PKEY_new.pod":"dba614cf8efe02b58d2a854d77d443ea3f11835b65a92a3e4a4314cb358f4306","openssl/doc/man3/EVP_PKEY_print_private.pod":"a2ef795f5dded00e0e4fa12d99d3cc1258e06f897f7c3c0295f23e18db553b40","openssl/doc/man3/EVP_PKEY_set1_RSA.pod":"0c8941fa8e5caa3aea611e56a14aa406ccd50292a1d357343621baf7385f0dce","openssl/doc/man3/EVP_PKEY_sign.pod":"ec1275468506aeefcb92b9c5921c041c011bb47297b1ed4f0b0ddda4a75aaa43","openssl/doc/man3/EVP_PKEY_size.pod":"2058f9c6a888f90376896b81f2b8eebcf1285f25dd6c1c69105d69766c033f07","openssl/doc/man3/EVP_PKEY_verify.pod":"041224bf1b8f7a6ce50bbfc101fb4f754ce77956da1a24b5b78436d1e3c9af2d","openssl/doc/man3/EVP_PKEY_verify_recover.pod":"9ab8f2248459cf32040b59c24abe9210d2119d0092ae1bb61059e374618e796b","openssl/doc/man3/EVP_SealInit.pod":"2c0189305828b2ad23c3e725dd1d9859cc291625fc30f65641fa5236bd758c33","openssl/doc/man3/EVP_SignInit.pod":"f403a331b370723d754cdb0be00859307113f82a91d42f8235c48c2b2d7816e4","openssl/doc/man3/EVP_VerifyInit.pod":"c1c831bba68ea606fc2b78bcb4a5f04a04c177661019a3e2af68466a7e069976","openssl/doc/man3/EVP_aes.pod":"98ba2680248a394df2748ffbffe5c1fc521a2c1b8916ffc03ee5457ce58edc05","openssl/doc/man3/EVP_aria.pod":"4711e2bdc8e258e626f59be8787e8af9c32b5dc7fc52a48663eb19c4026eeda8","openssl/doc/man3/EVP_bf_cbc.pod":"16fc065c3b43dea4e0ba1c90e6c820d0dd8213389022fda742c89c9b81974518","openssl/doc/man3/EVP_blake2b512.pod":"ce80eda0dac29f0a70260822648bb65f9d41d754a337f7e1dde7044194704e88","openssl/doc/man3/EVP_camellia.pod":"3e758556d49e3e4287ea87e53b98e267cb5eb427e486c9bd0d840610088ee961","openssl/doc/man3/EVP_cast5_cbc.pod":"fe07c76b5030261a3f360098e17cdcb870dc45c4a7192b30a16adbdeae248ff1","openssl/doc/man3/EVP_chacha20.pod":"8b1c51f6ada9bbc2bb4ef6f21def9a04bce1985bf5ce5df53e334f9105d10276","openssl/doc/man3/EVP_des.pod":"1a7eb48fec0e81c132ca35e0311aed364d21518dba956559a3b154b089ecd324","openssl/doc/man3/EVP_desx_cbc.pod":"2169a824f23f859e1f60a410a2c981958b291a2b512701b2806c2eb272c51763","openssl/doc/man3/EVP_idea_cbc.pod":"17ef6e19964a0aae4bf206f858d67e2d88ca1ffaebdea712fd1e83fdc697e577","openssl/doc/man3/EVP_md2.pod":"bb9131a736dbb0c49e8689c27ccb3b5c2f8ee317e2f87f7364d0be8874edbfca","openssl/doc/man3/EVP_md4.pod":"29475e538f4d8e8b437209f182682bea9a828f23ec686bf56bbde2c6d3bbf14e","openssl/doc/man3/EVP_md5.pod":"9e07eb7d806d6f0863eaea694d6b8c43de4b23eb76807b8fe7a47cbda2039375","openssl/doc/man3/EVP_mdc2.pod":"e21a8c709077cb86fb5651c221a10f79ab0f6db5633de2f3f32a85c13f252e78","openssl/doc/man3/EVP_rc2_cbc.pod":"b2bae952b3885653d15e0245488f8499a97c8e961bc33bc0d5d97eea5c914acd","openssl/doc/man3/EVP_rc4.pod":"523c9b62ff12f932232e225d4043f303ee22f6feab266582e77db4e548397cd8","openssl/doc/man3/EVP_rc5_32_12_16_cbc.pod":"e300f8941d3e6692a3b7eac1fbf34ae9d1e3e8b4a40f45b08c253ff0945ab9fa","openssl/doc/man3/EVP_ripemd160.pod":"4a7a55483a4a12ddcb76662325a4ea15af981c3a9c2cf0dda2755271487efe8b","openssl/doc/man3/EVP_seed_cbc.pod":"cd7d186acde78bde571b6688b9ceab6e21f48a3cf267177a66196fe41240ddb8","openssl/doc/man3/EVP_sha1.pod":"4a99e8c41316006f3454f9d08958fa5fb2586a7ab0ff7b512b198053c98bc764","openssl/doc/man3/EVP_sha224.pod":"c8807d17df0f691a71a0cc1d443b112a582d61dbf5f0b8c0c29225c1f0b74bbd","openssl/doc/man3/EVP_sha3_224.pod":"a301b85ef186554665cfd3ad06d78f2e88da5fe6c17bdc89eaee5a810571f373","openssl/doc/man3/EVP_sm3.pod":"d6ec07d83d0d76d3c30cae2f0ae9e9110e034b1572b9306d39ddc3c4e796f2e4","openssl/doc/man3/EVP_sm4_cbc.pod":"15ffea2c2002cd2787945dfee5fd9b27d217d19c6308f08f4cb631904c163027","openssl/doc/man3/EVP_whirlpool.pod":"f226d7bacf85f39017c84de58e3365e80e4adcf6ad72acd6a5bb10b06ab25665","openssl/doc/man3/HMAC.pod":"c82340e03cec6510179abebea23b26ca884ae150c7852a881c2f266f72c66036","openssl/doc/man3/MD5.pod":"39e49ea8b629f3bc74059cc3e690cda807bb9280ced796174a59fc5c3a7e3c9d","openssl/doc/man3/MDC2_Init.pod":"7486153080fab599338d10a847391f0991953418f011c05e3b68a3c49c228183","openssl/doc/man3/OBJ_nid2obj.pod":"5608c62693834a4b55fa65b932b57e8fa0ab777e3baa71add5a3394311513cb3","openssl/doc/man3/OCSP_REQUEST_new.pod":"741beb80de05b151220bcc435054ecfef24511905e1db48243c0931fb8bee14e","openssl/doc/man3/OCSP_cert_to_id.pod":"ef4df2aaaa50749484720add4dfd62c898d274b420d5e5f8400b16621dfe928c","openssl/doc/man3/OCSP_request_add1_nonce.pod":"75a6f7ba5905afe3eb9f585eb0b10deb39b2d0c2d8f8d806cc78add8c3b8c001","openssl/doc/man3/OCSP_resp_find_status.pod":"24263deae0e9868da649489372c23aed8bd2f83fa591802fbc5cb8ceedaad9b4","openssl/doc/man3/OCSP_response_status.pod":"dcc2e6a0038c739ac8b1ebbea4e08f72fc15e728963ef1442556a3661aa3035c","openssl/doc/man3/OCSP_sendreq_new.pod":"ca9a81e51a37ae00134f476f922f62be74847d9a9fb562602a8a073e333e122d","openssl/doc/man3/OPENSSL_Applink.pod":"a0db63d4885f4e0f0de231ca73718e6a685129dfe51a003cbed8baf372a3a06d","openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod":"230bd99ae26ad48907db207950005f0b3b75fc906c7e442f5c84db5d518879d3","openssl/doc/man3/OPENSSL_LH_stats.pod":"3ed8b9be73fde6823b5763b0f11aef4993a78ff4a48764d4811662db65ed4cb7","openssl/doc/man3/OPENSSL_VERSION_NUMBER.pod":"5a03bd0f8bc83dbfeec72c59c4b81ab7f1d8a82180c4b31b4bcaf6968da00baa","openssl/doc/man3/OPENSSL_config.pod":"f26fddf66589d2ecdd405c2d7a94d0f63e23996ca2dd8a3cdd1a3c97b9b695c5","openssl/doc/man3/OPENSSL_fork_prepare.pod":"e41b80f3cd0bfdaa05706dcd32403c164300fffea6ecc9204a4ce5262999b847","openssl/doc/man3/OPENSSL_ia32cap.pod":"54fc46befd3c081a2a48bf97c87f7914d4e4e226948497111d84b385d5c9ff3a","openssl/doc/man3/OPENSSL_init_crypto.pod":"20a6925f66a4797d1ba1f6eef2ef70ef9ae140b9faf15b2ef8750d899f9e02c7","openssl/doc/man3/OPENSSL_init_ssl.pod":"e658828fa3b9d467a02c771411a581d9a281f39ddf6231ca5c609a21acd53104","openssl/doc/man3/OPENSSL_instrument_bus.pod":"dcf311426ca6b4e4ea3502d34c72aa0e897f792389232ab06fcaf3d7833623c4","openssl/doc/man3/OPENSSL_load_builtin_modules.pod":"2d874f7b5f90d6515f2af29dd6ab3a4b1b57b4a66517a1ac606285853257f9e5","openssl/doc/man3/OPENSSL_malloc.pod":"0bc14b05c59ab4931b962ed97e4d9cecca050bae06f21199fcc48808ed3924bb","openssl/doc/man3/OPENSSL_secure_malloc.pod":"da7db09b14e8c5aa70f0870393d145bc73d24667aef3b2f56af9dacef0ad72da","openssl/doc/man3/OSSL_STORE_INFO.pod":"848862de44d58e3641fe9699967667d5375f6eb2486edd21753aa5055a3ee9e3","openssl/doc/man3/OSSL_STORE_LOADER.pod":"c939ed2132cf112f722635934734334e7c641350ff676df4574db69eb2c59aa0","openssl/doc/man3/OSSL_STORE_SEARCH.pod":"74f7cc9d63823af599c0efa126a21e6d42842efecf45e4b093e3485c1a97d07d","openssl/doc/man3/OSSL_STORE_expect.pod":"c4cef70674633017f3b9735b9e4a4eed07ed4eaead847337ef8c0d94d65472c8","openssl/doc/man3/OSSL_STORE_open.pod":"1d2a045839b904c32c2cc588f612996de9fd341d8ba464e57d3bf8c5af07a6cd","openssl/doc/man3/OpenSSL_add_all_algorithms.pod":"49b86f88fcd2bf4182c98477fbcc93ba08523d6994b922ccf77ed8ab8fec40bb","openssl/doc/man3/PEM_bytes_read_bio.pod":"48ea0c0bc7e4cd4b0a8a936f90cec50f11337f4a60f7c80ffc4fcfa33a60b877","openssl/doc/man3/PEM_read.pod":"1bdb0e48e0faf6e41f6f8b0507bac01d27f6c8016bab38c2e7958f08e980b78e","openssl/doc/man3/PEM_read_CMS.pod":"ecd9bf55b556a4e35878b646432263cd8838b4f8db1301bd3fde77980c1242f3","openssl/doc/man3/PEM_read_bio_PrivateKey.pod":"b8c09381346c4d8baddc9b29bd071d8491ddd019e260ccff8a0f6f152bf61fb9","openssl/doc/man3/PEM_read_bio_ex.pod":"71c78d14f7d2a91ba384a46ff374db7474309d59cba5fe985526b5e3039a1fa8","openssl/doc/man3/PEM_write_bio_CMS_stream.pod":"26fcf66cf1d2efc12499ea44ec99359b742989d3f7bc303128bcde7e4936c9da","openssl/doc/man3/PEM_write_bio_PKCS7_stream.pod":"0fad1e10061979328ef38dfcce7acd18c1e13a233c899887bb71e8a0474f875d","openssl/doc/man3/PKCS12_create.pod":"81b7f6be4c979f75c29f5af3e26de09a2325c83bedf979d3d0ab2fa1370ee1b8","openssl/doc/man3/PKCS12_newpass.pod":"4152f50460501aa543dea8904a41ac6bd057f14a5616246dedc036c5fc1b9898","openssl/doc/man3/PKCS12_parse.pod":"d922a981c27e69635072126e8a7e92a40eb0cde7382755d19348bdb6b0e32573","openssl/doc/man3/PKCS5_PBKDF2_HMAC.pod":"3877fec0e7d6f9ac05b0a9cede809f7e863e9bf24a595ad1c21c67e07f267d83","openssl/doc/man3/PKCS7_decrypt.pod":"222f4ddc4b049f8fe7fd9985f792ad456e4b562f16218e72deb45d20ca589654","openssl/doc/man3/PKCS7_encrypt.pod":"20c877ef00fdc262dbaabb7515246fe0594954fef9b0e5507c39765f4002a2b0","openssl/doc/man3/PKCS7_sign.pod":"572c1fef570d56b12cf5a5dd37a945002f4ee405c9ad26bf0e15f598be188a6c","openssl/doc/man3/PKCS7_sign_add_signer.pod":"56a91263508e8819c0a5f6b165ac98316ec4c8aade010f5a0862238dff48245b","openssl/doc/man3/PKCS7_verify.pod":"ae1fbcffa9b806f09e01a8657d5ed72f5ef246fb60702537e429b42fa9747e3f","openssl/doc/man3/RAND_DRBG_generate.pod":"17d2a008a9890ba1cb494900c248e5da1e886a11af3a7163ebdb67d28505cc6b","openssl/doc/man3/RAND_DRBG_get0_master.pod":"b17158470b2a4bcdc111a95b99fc86a33ee35c6b6e1a7cabda2c0166228c4673","openssl/doc/man3/RAND_DRBG_new.pod":"329b6237144c2731bae481891961d488cd5411186f9bb1f34eaf8486478d2e37","openssl/doc/man3/RAND_DRBG_reseed.pod":"26a8967c199d4f6c2290bb8523dae044242234462481b932bf7f53de7e881c56","openssl/doc/man3/RAND_DRBG_set_callbacks.pod":"cdafd1922ac7c7bf0ea6c9f7fef9133a693319f9687b1956daaa476199c9e532","openssl/doc/man3/RAND_DRBG_set_ex_data.pod":"b07169d49e6ac993e13b3f885c69895fca7d76946df5c0239ddeed77ddfdabc2","openssl/doc/man3/RAND_add.pod":"335e0955afe9ea0dd7875d1d20acd41b7c064752ce8664b094d2baf71c928b22","openssl/doc/man3/RAND_bytes.pod":"ca93ca9f1f3291a7a052d611283f52d677edd34cadb94b98d29f84a2d0ab3f20","openssl/doc/man3/RAND_cleanup.pod":"a97d7e4d8284c9f14d18ff52daf7a3334562dcc37e9be32667cb14e12a6b3051","openssl/doc/man3/RAND_egd.pod":"2bfc028cb0577b89c295b3f9822bfe0344bcd1298d7ba6a37076517c33cb3f86","openssl/doc/man3/RAND_load_file.pod":"f4dd213002d26ae4c1b11e18b89eb992e0442d7ea9312d8e2d5d2a19ce74f317","openssl/doc/man3/RAND_set_rand_method.pod":"7c3ebec8ad5acc03b274da7215e272889f7696800d9dd5345bf1b18bb72fce6b","openssl/doc/man3/RC4_set_key.pod":"3934e2567aada5692824f9466929d3b0fff3a6eab49c722318629a670c1fecc5","openssl/doc/man3/RIPEMD160_Init.pod":"ea958a1b7a02f92bf69ee70262d92d499eb4fe09132491eaaa5ec47721cd2fee","openssl/doc/man3/RSA_blinding_on.pod":"f5178d4d103f9c4afa69f4236707e3b43ed25a650628816a64938286577b825c","openssl/doc/man3/RSA_check_key.pod":"c07fbab30e1f043c7cc09319a75dce5b7b9856ea8192191f1b88b416c6f18d8e","openssl/doc/man3/RSA_generate_key.pod":"ffa62bfc47c407ae8f531da4ebffd3ddb19e14502267f9edc55105966f130840","openssl/doc/man3/RSA_get0_key.pod":"58cce39081cf2e6756a8bba145e96c23724a3306357bffe7d1960039abb6ee90","openssl/doc/man3/RSA_meth_new.pod":"c9ac9009502b8ca0540637f10ffeec689ea5b4ceb5c8ce9bfb48e783f2ffa54e","openssl/doc/man3/RSA_new.pod":"bf80bb587fae400c903cb970c1f3a7497c7b213dce4fbb94ec4faa03467e0dd1","openssl/doc/man3/RSA_padding_add_PKCS1_type_1.pod":"1a9efdca67fb7b933f9728128db08ecc84b83dc4886a6b8cc18dc7078574f838","openssl/doc/man3/RSA_print.pod":"4169f2d929a5348c3ae8db491277f232ef3a877d7bc9b400b3df13a707537b29","openssl/doc/man3/RSA_private_encrypt.pod":"38d57c8998a171586d098f0cdb3ed9eb9baf489b1b5564501a8a092418f5b8d0","openssl/doc/man3/RSA_public_encrypt.pod":"3ff5cdd751df2b5555f220927828481e57d310e5b875f6cce1ec2670a4d3debd","openssl/doc/man3/RSA_set_method.pod":"d7a55487bbe6dd5eeea29adf3ae3c05dc62d4bb5d774c45b2c85a8f53a95fd3c","openssl/doc/man3/RSA_sign.pod":"8f59b240737d04aad9aa8cb35a1bc02f88824259f607a2345c74a8185fabafba","openssl/doc/man3/RSA_sign_ASN1_OCTET_STRING.pod":"d3b6aec65ad46576bc4c15ebd6f0ab08db9dc86a96752c19442dc5b6a34305aa","openssl/doc/man3/RSA_size.pod":"02033009b3f2d52145a90b70c20cdb6b9e151fd0a5ae1e40a3fba09ff8677e60","openssl/doc/man3/SCT_new.pod":"b506b791dc1c6c7c1e47c8722f53c6ce51df9c60bc81da759c8bda2da83e7c32","openssl/doc/man3/SCT_print.pod":"c5dfd5c5f28585b4fd8db18cb9ce66ff582d0e8a3c12e4f521cb1f27c02364da","openssl/doc/man3/SCT_validate.pod":"36106502782bc9d2a512902fada06a7eeabf27068cc3dfdbc918799e2915d20b","openssl/doc/man3/SHA256_Init.pod":"0c816af790b1d88e7a3cc708bba420ba265c53b7a0eab31437c0ba77401c57a6","openssl/doc/man3/SMIME_read_CMS.pod":"3ac16031a274c4095c664106895c7ac57f9372b5040c2e2dd52d6970b7b08dcd","openssl/doc/man3/SMIME_read_PKCS7.pod":"5a7a5660105501d860fe63ad5c8566b980f2a01d269f5845b2181149e199de04","openssl/doc/man3/SMIME_write_CMS.pod":"ea711d47b144ec2d7331c1f50553619007315f547f8b2f7661a845d6958d3214","openssl/doc/man3/SMIME_write_PKCS7.pod":"71ffa71cfcdcccd671d6bb0f3baf2ae7f966fc2cbe8dc85be1438b8402f5c7a8","openssl/doc/man3/SSL_CIPHER_get_name.pod":"c587a7c6f52ee7a530a229132b5881c2da6a5ec620fbd69ce5d8f7ca0a618d68","openssl/doc/man3/SSL_COMP_add_compression_method.pod":"9b59a012d658b140d2687c9911230a451218ab4e0370cbcfeb2d732d5cea910b","openssl/doc/man3/SSL_CONF_CTX_new.pod":"31027f827a134015230703da9c56f5c62440c3ab8b09d4d112559a1f8d16cdc8","openssl/doc/man3/SSL_CONF_CTX_set1_prefix.pod":"71260ff34ff577c45d1d903c4ce377d3913b634a825bc528691977b293777d06","openssl/doc/man3/SSL_CONF_CTX_set_flags.pod":"e188f2696c62e16e30e6f6d71e44503a2e1607c7a4cfed20a0203d08f5f75d22","openssl/doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod":"ea231fc93bd4df19b54456d3bc7f8429a34f3c57eded62515ae4c91397f97cbf","openssl/doc/man3/SSL_CONF_cmd.pod":"62f1e168032b0d6911fa2ac9880da01f575bcd962fd1115c77a00999d860a997","openssl/doc/man3/SSL_CONF_cmd_argv.pod":"9d12224f2bc09dd67737996da4dbaf727cd2e6182b6e2db58d9033c7c2fa64af","openssl/doc/man3/SSL_CTX_add1_chain_cert.pod":"3ffb34b36b7b345a91332399af9e45c387218e8c4ec451222688e3f763a809df","openssl/doc/man3/SSL_CTX_add_extra_chain_cert.pod":"0d2ee70099b5ec881535fb813ef553a7d0051de659ca0c2009f9a3e5e79062f3","openssl/doc/man3/SSL_CTX_add_session.pod":"bec5e3483ced8ce89a527c01143bfb8e7551768eadba6da3a4abe875220822e9","openssl/doc/man3/SSL_CTX_config.pod":"a2c5542cfffd35eea979b4e3d9902763ce1296b495611d40c60450e1ebf53e18","openssl/doc/man3/SSL_CTX_ctrl.pod":"b8b78960b3cef7b09b64ad14aeaad9f5e0e815cbf5cf973a91c7955dfc3b2272","openssl/doc/man3/SSL_CTX_dane_enable.pod":"a90ddd5809acd5ea1be2ca803450bfae5380a07278ce3e6107ca459554928361","openssl/doc/man3/SSL_CTX_flush_sessions.pod":"ce4a997e4ae4171780043fc86c9e82c18ba6cda6a9576f36aeb59c30140b56c3","openssl/doc/man3/SSL_CTX_free.pod":"6499830839485a4f82a5496d363dbced5087abc4739dce9aff6a92bfad444af3","openssl/doc/man3/SSL_CTX_get0_param.pod":"ced535f7155efe76a8e2beab42ff20dc9c2b2981db08b424c719ba6cdb341ec2","openssl/doc/man3/SSL_CTX_get_verify_mode.pod":"28a4dc0c047c2fb347e46e9a005f260f9227f4f875f2082c7af3d54c85fdfc48","openssl/doc/man3/SSL_CTX_has_client_custom_ext.pod":"ddddbd7df4fd974a749a70970d85461224d41c815f518a843c94d15320bd0a18","openssl/doc/man3/SSL_CTX_load_verify_locations.pod":"21022d6f47c6ec5f7d6d76761fa8987ca136c7d782861707ced2d929089f5b91","openssl/doc/man3/SSL_CTX_new.pod":"dcfb546e8a7b702428a85ea480977995223ae2188c1ed3d1e24cd27804c89aa0","openssl/doc/man3/SSL_CTX_sess_number.pod":"dbb65ae74b674838e50c26b912064ff3a2e4fbab74785c15dadb903fa43df70c","openssl/doc/man3/SSL_CTX_sess_set_cache_size.pod":"77f6adb29332bb212d117faf47983466aa60aa733f04dc3ee8f973253a5898e4","openssl/doc/man3/SSL_CTX_sess_set_get_cb.pod":"0d6136d9a75c15951ddb67610c7f08e67a7dc424115eaf9ad4035971e76b5771","openssl/doc/man3/SSL_CTX_sessions.pod":"1223bb83bea15d0a5357c8e6608b98e41c1f7b62036e2681c67745ca59cd8ba8","openssl/doc/man3/SSL_CTX_set0_CA_list.pod":"1932df3801f3767252d08544b125b14c596fd0d13a7f1633427a7030ada7cb03","openssl/doc/man3/SSL_CTX_set1_curves.pod":"e0ce7947080129badd5ed256ad6804b30ad456a2a0da697cdcd3f255cfddc563","openssl/doc/man3/SSL_CTX_set1_sigalgs.pod":"095a1160eb41fdcd14c6cfbac2498c09f6e98a324fcd0a377a6a49314c10f294","openssl/doc/man3/SSL_CTX_set1_verify_cert_store.pod":"f3ad802127f882ed1ca07d762da29e51fe2278cfe85ece696ae1af07983d4ddb","openssl/doc/man3/SSL_CTX_set_alpn_select_cb.pod":"1cb7e5bdb3d7e91db5ad550e2d51c7490f3379ee3c8ed852d14ce4e2ec4b5374","openssl/doc/man3/SSL_CTX_set_cert_cb.pod":"53f7dc014eebf63a09d8d2dda05ef46b7a66a39e314c4064a3a2c5f5bf0496c5","openssl/doc/man3/SSL_CTX_set_cert_store.pod":"a4f850ae8ff976053e0ed7726e36d9072f0554f9281132de3227aafeb3db9f4b","openssl/doc/man3/SSL_CTX_set_cert_verify_callback.pod":"0594c50e59a4c11c807270302c3c325d39ca57fccdb82cb0e0bd6c34f4755b7c","openssl/doc/man3/SSL_CTX_set_cipher_list.pod":"3df94109693d91e9ffc145dacc23e430fab4b460c8c8a27bc90577af5c622fa1","openssl/doc/man3/SSL_CTX_set_client_cert_cb.pod":"022a0492b6e96568db2be53e08ad343e10c7b4fc67b3b5db541cd2f503dc1a12","openssl/doc/man3/SSL_CTX_set_client_hello_cb.pod":"44454b894afe8e07bf14e9af1aec39aa0c1c7e2cc252a9e3963737e62a336662","openssl/doc/man3/SSL_CTX_set_ct_validation_callback.pod":"60d38e73044fdc0bb7e7bbe16036a11d48a3e0ceacb3817f298a78706e687dc2","openssl/doc/man3/SSL_CTX_set_ctlog_list_file.pod":"f7593c7bdaa4b43b83e4922fcfa645a6217acfc74f896de09664f44fe4ed9ca1","openssl/doc/man3/SSL_CTX_set_default_passwd_cb.pod":"0ddaeee16505288ac676ce640dbe85335cc3249211689e83bd5082664cf77798","openssl/doc/man3/SSL_CTX_set_ex_data.pod":"910c37abc33c0590e8c4d7f748aaf72c66f0c9032e8754051de8c359b507a32f","openssl/doc/man3/SSL_CTX_set_generate_session_id.pod":"75802eb57ed2d6d7f791a6e68aecfb010e1d625af02ffc2d764f49bf02e940f2","openssl/doc/man3/SSL_CTX_set_info_callback.pod":"58c7cfb0d2119327ac0c43653884f0ba6b93c5d5855392ee4f954d94cd335f72","openssl/doc/man3/SSL_CTX_set_keylog_callback.pod":"7722c9aa8a61b1cdd1f0cea75ecc6412747f17a9bb348a411acfc3b225ba3e24","openssl/doc/man3/SSL_CTX_set_max_cert_list.pod":"86b5bc163b99a67ff72e5296a61f826809ebd764f976a1c3deb4996c1b3e62a1","openssl/doc/man3/SSL_CTX_set_min_proto_version.pod":"a0de5e8055272cc35044545d301cc7818fb9a86cad38e7441721ac839501f910","openssl/doc/man3/SSL_CTX_set_mode.pod":"ea3a8bee7989f77a907d60f4e62c200f366c0be856639513b137d25fb71e41f6","openssl/doc/man3/SSL_CTX_set_msg_callback.pod":"87c10f79b408672cf15e6ce75e1c08513609867068bb4caa6c49b7e72d731c39","openssl/doc/man3/SSL_CTX_set_num_tickets.pod":"bab0e4b399c349230324cc2cd7ed42cd56bddb4c2747f587819e90f98143f75e","openssl/doc/man3/SSL_CTX_set_options.pod":"36cd07d554a66cff5a07f7f8f2b5cf2157d5e008b293e59683bd29bbb013115e","openssl/doc/man3/SSL_CTX_set_psk_client_callback.pod":"8b12f99d32fffccebf235434b19b5f1211f6de42f08c87371dd15c6322dad3cc","openssl/doc/man3/SSL_CTX_set_quiet_shutdown.pod":"e668e7c764ef67d66de7d575aab821d7c68ba95d383d40e960a316d28944290e","openssl/doc/man3/SSL_CTX_set_read_ahead.pod":"1f2b0e5a8a626271b65c9a53bf10a2edf5ed5bed3f46595c7d6ee280c61d97bd","openssl/doc/man3/SSL_CTX_set_record_padding_callback.pod":"cce583a3e71fbadb5c5729236a48639ecb2b2614acb9d23608e70f8278daf782","openssl/doc/man3/SSL_CTX_set_security_level.pod":"18d32a592444185272aac8c2261a94321d7a6568c7331a922e2f1f3f30cb36eb","openssl/doc/man3/SSL_CTX_set_session_cache_mode.pod":"64210089697ac6bc32d99ec7a41c1cb7c45b111ff427f6b1303a9afc288f0967","openssl/doc/man3/SSL_CTX_set_session_id_context.pod":"3eb931703e5919ce4228b9018d541973069a6b796e12eb795bff9f41da2a3a8f","openssl/doc/man3/SSL_CTX_set_session_ticket_cb.pod":"bc134518148ff374aa5a5bcd004678124bc76c2863e6153b6ef1b82fdcb10e04","openssl/doc/man3/SSL_CTX_set_split_send_fragment.pod":"6604503373b79017a6fe457c24f6a6f79b93073001ca41787856598cc48fd75d","openssl/doc/man3/SSL_CTX_set_ssl_version.pod":"06d8684f35d9b31f5048750d52dea848ad07a54a5c6efe883e35bf901e259428","openssl/doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod":"9e3ba9fee42697428bb9e48d537b8f05d3c6c74cc0ac793db6615575df4d8662","openssl/doc/man3/SSL_CTX_set_timeout.pod":"11acf52343adc7ea2b024e278a49d5300677b4816c25871d81b37bcb7200f185","openssl/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod":"e07e53bc49b3938a8844a2782c7a446780a23104f6f81de05f877c5516cf7acf","openssl/doc/man3/SSL_CTX_set_tlsext_status_cb.pod":"8efea6a299309aa622a1a35b272e6a9fe6f2cf31fe3ebcb1faf4bccede1f1160","openssl/doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod":"fc541fe8770e7ff8bf805d6728ea0ea48e368c57937803cf25407906cfe3b815","openssl/doc/man3/SSL_CTX_set_tlsext_use_srtp.pod":"49e00bcc3ac93f10bb367e2ad300c676fd630505c3a1d314c52bfacd4276dd16","openssl/doc/man3/SSL_CTX_set_tmp_dh_callback.pod":"6ef9394ec04927bdb4ac3fd0fc5dc22e589dd5431215767b91ae8941a22776fa","openssl/doc/man3/SSL_CTX_set_verify.pod":"ac8a4987600f41b06c9d03f8062c904bb1c9bc5054c34e2107efb32da8af0988","openssl/doc/man3/SSL_CTX_use_certificate.pod":"ad02bc374ba5e5bf2b029ee5c8043abcd60cc50811452741dd9f0d5e94c76d31","openssl/doc/man3/SSL_CTX_use_psk_identity_hint.pod":"ff25874925a52807e773a15db1f92570d23f9b22a7b4a4a59525d0bf20bb878e","openssl/doc/man3/SSL_CTX_use_serverinfo.pod":"0c59baa6ddb81bc09184a7cd7426de81c9d38e315e93c48dccba09a00a2dd934","openssl/doc/man3/SSL_SESSION_free.pod":"2b920d74e18f2ed8805575ca0cffdafffea2452f79449be9e8e23fac370b8125","openssl/doc/man3/SSL_SESSION_get0_cipher.pod":"7fbeea414a5c74a6682ee0239152ee09091e210e840b7365576bb751fd7af0f7","openssl/doc/man3/SSL_SESSION_get0_hostname.pod":"1e81dfd8ebc653b6d4d4cdde0d15967f7eda6c17d08b8d4437134c4be279af54","openssl/doc/man3/SSL_SESSION_get0_id_context.pod":"ef11a0f1335b2007fc960520d91a3df1c9ac2e59675e6cd1f53bae02a5da5616","openssl/doc/man3/SSL_SESSION_get0_peer.pod":"133d6ae6ccefa1cfa57fca7e1c6952f5ce1cc799c6d63e0584265980a6237505","openssl/doc/man3/SSL_SESSION_get_compress_id.pod":"07fb8cce6c50b966b66107ac36c22c1b94777c1a99b4d5a43f61e359b7722bb8","openssl/doc/man3/SSL_SESSION_get_ex_data.pod":"8b97be70166cf27a451c189c3d2767bb1c9b6b1e9f2c6b02fe7b340dbb592d1d","openssl/doc/man3/SSL_SESSION_get_protocol_version.pod":"cb70d67a1cf5f976d53b95ace040d4e19a8dbf6ff24f058a3a82637ea36dd782","openssl/doc/man3/SSL_SESSION_get_time.pod":"fef94d441fa1265ddbb54b6af2a7bba833e712301c671d4f290a1e16a8214e68","openssl/doc/man3/SSL_SESSION_has_ticket.pod":"529bd51417b3373bb181f10b7ad17afdff5a49c1e179028cc6d7751c499da73e","openssl/doc/man3/SSL_SESSION_is_resumable.pod":"396c988fda7bc03cfca63f908a7d65aedf4a0f1e95cc9e7c97b35732d647748f","openssl/doc/man3/SSL_SESSION_print.pod":"908e234e2e5414cc1f7fe239506c42e266e9a1dcf7a1fd51583a5b8f6daf7ca8","openssl/doc/man3/SSL_SESSION_set1_id.pod":"0c89d29765a4be61745251be6ec0f297e636e975b690bac4713db1ff8980d1af","openssl/doc/man3/SSL_accept.pod":"394d5c0d4f87b997e687aec50614f6fd0818a4511d9865b98abe12475d9c3780","openssl/doc/man3/SSL_alert_type_string.pod":"e878e16b1bc3a5bc478fccad7bb32a41277dcd370d0b287b29b2227dad3f7b97","openssl/doc/man3/SSL_alloc_buffers.pod":"adfc9fc4fb9f13445d40f6dd2cfb6cb217dd5cbfad7684c12abdd419dea2f89e","openssl/doc/man3/SSL_check_chain.pod":"6f5767fa1a1aa97a348f7faa324d59180934a2d061799d5c67fed2d5f817fa07","openssl/doc/man3/SSL_clear.pod":"7e870b0990741451b75e1d4d8fa539e03bbcc7f9f1b719ce57156999cdc946da","openssl/doc/man3/SSL_connect.pod":"8b9de6c2aaedc52619681458275444db2c66c2e2b72934e2089d19a92fb91f3e","openssl/doc/man3/SSL_do_handshake.pod":"299b29a9fbfa7a48895e85a57690b32c5c9579db147362283b31108cffce3a1e","openssl/doc/man3/SSL_export_keying_material.pod":"2acb6d096b31ec8fafa653f7e87cd597127a9e689d65083f22bc384961af3d70","openssl/doc/man3/SSL_extension_supported.pod":"e676ee943435ed9c9148481468b9217e693fcf538e999d852dfdd2fbc07caee1","openssl/doc/man3/SSL_free.pod":"4f6cc5c3b6d7677295e8b89dc4de699899a3e760d5b1ce5b78d917573c0493ad","openssl/doc/man3/SSL_get0_peer_scts.pod":"e126b6deebc3f24c731a930c42ddc7e0dd6b76e89dc33266aa4349334967ae9f","openssl/doc/man3/SSL_get_SSL_CTX.pod":"c6c6bec96e375583efc447fede87876f97da5cd0b92e57f1d658e2b66c3c1551","openssl/doc/man3/SSL_get_all_async_fds.pod":"6ea3e4b338f225e31b83210727d4028d9f6a1bff056e336ec4401558302f07b8","openssl/doc/man3/SSL_get_ciphers.pod":"3487a64ec366c5aa925ba9e40ba254566449013275e3879a1c2e221f030023e1","openssl/doc/man3/SSL_get_client_random.pod":"0b4fcc3396b1d7cf97c69334a62847d9934b4dfc084d9e157fe046e7bf82bfe7","openssl/doc/man3/SSL_get_current_cipher.pod":"4b2e9b3f34d7e65baf4e7cacf148b05d3ce7742d81adef63a0506256a6845d81","openssl/doc/man3/SSL_get_default_timeout.pod":"7eff4e2d544b864b301e2a92f827dc5edf98a4de7c7e8abf7d6b988ae6fd13e9","openssl/doc/man3/SSL_get_error.pod":"14550520010f9d63fc097b4879893b5e1912148ac943ba76776c11ea81e566e6","openssl/doc/man3/SSL_get_extms_support.pod":"8f276a1fb14347c3590b919c0b5e6d65a204eadb15a88726ab094638b963440d","openssl/doc/man3/SSL_get_fd.pod":"baa009aa87139009071cce433eb3a09e3cb6e64ac2d952e6b2ce1131169ba39f","openssl/doc/man3/SSL_get_peer_cert_chain.pod":"8356388380053cb13b6e09ad3a471608a30a9e43bf7f2d87836a36b3d2fb55ec","openssl/doc/man3/SSL_get_peer_certificate.pod":"d601fcd0b6a607c1f2a77578cda877532fce9324dfb7def48ffadfb8ec4ce244","openssl/doc/man3/SSL_get_peer_signature_nid.pod":"d9e1ade1fa9509da21222af7e33257f1aeaff9c02cb0b2804c5d0ccab444f3a1","openssl/doc/man3/SSL_get_peer_tmp_key.pod":"0bbaac7787c739c1d5b5d67277ba1b7dfe9a3261ecf0a1cef6a2373a9d712884","openssl/doc/man3/SSL_get_psk_identity.pod":"f44137b49e863d0577ac696832cc2062f28997af8a4acd151d4f807d93a750f7","openssl/doc/man3/SSL_get_rbio.pod":"c85c26efe281ec61aa08f9b906f48531b97e9d43bc8d8d87d235c371a47e4c1d","openssl/doc/man3/SSL_get_session.pod":"ea413ebec24f78fc1d24da12615c382c06fa5772b38eaf3d1693a857fc881615","openssl/doc/man3/SSL_get_shared_sigalgs.pod":"d23ea6dc2ee08770d8526b829a95fda5bfe5e93587136d7f0ef458c0daedb4e4","openssl/doc/man3/SSL_get_verify_result.pod":"aa1571db0fb36e175b38389bc9fdc997f6649eaa6bee6a20c2f815a760b74faa","openssl/doc/man3/SSL_get_version.pod":"acd757055af280f337c94b91b965e2e473f93444d82d5951995ef98ffb014014","openssl/doc/man3/SSL_in_init.pod":"1574aaa908f8922ba23290e19906a4731770755436edd879a45df45c824e6c0a","openssl/doc/man3/SSL_key_update.pod":"615f544558314aaa3bf081414194a056bf70f10fdbda1a0b165a9e8e1af6ef62","openssl/doc/man3/SSL_library_init.pod":"fa072f418bf6091d30ca2625c3c87692b6a9b21f8bba3ab1ef844d9c97601b77","openssl/doc/man3/SSL_load_client_CA_file.pod":"eb51dbe483743c954c0497519398b753be2eb9fb9355af5320883a1ee1052bb6","openssl/doc/man3/SSL_new.pod":"325a9beb776259495c4fd9ea3dbc4613d9786e44ae69d598e8ad6dcc2773aeb7","openssl/doc/man3/SSL_pending.pod":"2baee7bd0084c86db08af4600b11a3e3bf48715b8c46fc6e23c711519e23c8ef","openssl/doc/man3/SSL_read.pod":"8b731c1080bfaeaab6e886dc4ad61a6427212913d237807b5f45eddcec361b5a","openssl/doc/man3/SSL_read_early_data.pod":"e0ff03f9b4358c8e12728a366088909e1551dfcbcb729b70dab02c96e638734f","openssl/doc/man3/SSL_rstate_string.pod":"023964a6c1ce28e063baff5cf8328d0c609407f793a839b9f519776b97c3bc91","openssl/doc/man3/SSL_session_reused.pod":"372667c4805628c3d0288c25d8caca78c928ec09bff212af977fde7f682aa335","openssl/doc/man3/SSL_set1_host.pod":"db7d71292569f96cdbe0d242a7fe62db1697a7d51e6ebf23bddf0a6a5b242e73","openssl/doc/man3/SSL_set_bio.pod":"6ba552c633f6e81e2941995f512023b1d91dd6c9533e16170d74ee0b5f75d66b","openssl/doc/man3/SSL_set_connect_state.pod":"2c1545479df3d68046b44b3af203405020830fb980a851ae988694a317905531","openssl/doc/man3/SSL_set_fd.pod":"df13b04c990306ff46e8316afe115bf40472d2f99c1c887633ea4879f068206d","openssl/doc/man3/SSL_set_session.pod":"f1c565df21199f9bb9f22ff81478238e1fe498dfa990613a529d302d9df360ff","openssl/doc/man3/SSL_set_shutdown.pod":"e21d4a6187b06df0b3ef7da18b397ef36692973af19334d5bdbbc9e4ebe82bfc","openssl/doc/man3/SSL_set_verify_result.pod":"dd2040ebf36d0dfec55c4a8e2969f6c2585ecf3f7b23b106b04858230dda1d65","openssl/doc/man3/SSL_shutdown.pod":"9d53331571e37726ac56139ff7b66f10f08420d1df728002beea7fbd31b07633","openssl/doc/man3/SSL_state_string.pod":"4db20f3c0aa03f62ddcbaeddadfd44c8bba703faf363e76994da3b9cb030cdbe","openssl/doc/man3/SSL_want.pod":"305bc0a806621b8b017278b9730946a7115c81b95a00d2b084a1d2e53986a276","openssl/doc/man3/SSL_write.pod":"3f2a76428e9c691d3c968c5f00949b5075425eda529cd25a366e018a3275ee4d","openssl/doc/man3/UI_STRING.pod":"25378107283a87316a74259e19d67e836c212be739cd5f60f4fddd2dbbc2f151","openssl/doc/man3/UI_UTIL_read_pw.pod":"c0fc481fd69923bad9539a754090c7540f361b6c3b524583ecad559d6d56deea","openssl/doc/man3/UI_create_method.pod":"a45774e406ce7a57184e62df20597df23919654b561feb6d46288fbedaf75b0f","openssl/doc/man3/UI_new.pod":"da09d8770e7904e4045107d31a7dc08e7aa751eaaa0a0d03658be87cdb6a26e5","openssl/doc/man3/X509V3_get_d2i.pod":"835ffcba4795c13db5079aba4db321b72c01fdb8eb36357deee0855cdac135d9","openssl/doc/man3/X509_ALGOR_dup.pod":"5b049392fe92e7b0e8007fe8cb607181c28a9b61a60bfa8a14c13126af5ccc76","openssl/doc/man3/X509_CRL_get0_by_serial.pod":"57954e092d37e19f57e456aec46fc041d3f7881496a7ac82594ad0d73a627bfb","openssl/doc/man3/X509_EXTENSION_set_object.pod":"765f9d2f6c7f0f62c3ff83cdaa063b9ff34610cb0734c29e2a737d58ad00ebf8","openssl/doc/man3/X509_LOOKUP.pod":"cdd0d25df89aa2d0574f0b878e064c0e12cb918fa86128159411926f2eb576a5","openssl/doc/man3/X509_LOOKUP_hash_dir.pod":"37d2395323dc9b319bcad77c4aeecdb27f7314a6490a7a39e8988aaa75710d9e","openssl/doc/man3/X509_LOOKUP_meth_new.pod":"38bb0d0fdbb31c0410e96f81c057d4f8336b90c289a66f631513049238779671","openssl/doc/man3/X509_NAME_ENTRY_get_object.pod":"0d5a67f03dcffe8c40cef439dab7e6e89fce60aa2222f4ea8f01c9ac3f2409cf","openssl/doc/man3/X509_NAME_add_entry_by_txt.pod":"9c0100e44bde9eda0b7c55b81c421666024a4fddea2f74ae71ffc81d7cedc2b0","openssl/doc/man3/X509_NAME_get0_der.pod":"14db4a7ab337e3e2315ee57b56e155185248bea3a9bc360d6e21cf82344a7a82","openssl/doc/man3/X509_NAME_get_index_by_NID.pod":"e44f82e4a7c46c24291c022d4159506f5a9d275747b5fd7c79a3e999beedd12f","openssl/doc/man3/X509_NAME_print_ex.pod":"ceb2c5ee0e0059fb8d2c83a7769a54d6eead6dfbdc75664c5891fe3781c39100","openssl/doc/man3/X509_PUBKEY_new.pod":"665eb733a696acbe5dc9871a2fa06d5c34ec9a1b8d92e7f1a9f9ff82e3232383","openssl/doc/man3/X509_SIG_get0.pod":"18d70f17d6a516b72f67e3137856a8c22cbe89cbd0734af7a9ba5933d9ed69b2","openssl/doc/man3/X509_STORE_CTX_get_error.pod":"920225d3f396dc13390db5ea02433c3662358ae90f7af37739324093994fef3c","openssl/doc/man3/X509_STORE_CTX_new.pod":"054168f53ad71e33e8c42e7c3877206897c6b0eae77c4d2e70e0da3bb0b8518f","openssl/doc/man3/X509_STORE_CTX_set_verify_cb.pod":"acb6a12e45d92b1865906c82bac24138df9ec88ec68f6e427f0890290b807bc7","openssl/doc/man3/X509_STORE_add_cert.pod":"f62a0351ebb347b140244ce044977a2cc74b01b035661656a53eb07ccfb54be4","openssl/doc/man3/X509_STORE_get0_param.pod":"d550b0aba2821b175b98f4c6b10863841eb705eb238ce992eee3c10ed505a11a","openssl/doc/man3/X509_STORE_new.pod":"3ed802babb15f251e5de008ba067000b06a59224878469154b46ef51b0d0dadc","openssl/doc/man3/X509_STORE_set_verify_cb_func.pod":"b33e3e94836369fc3c9151e3e413067606dcab0fe75ac2ef3cf0630fcf1da222","openssl/doc/man3/X509_VERIFY_PARAM_set_flags.pod":"e0cdefb210eaf03c458e30b471975432d7a34fa1d322260790ee4f2ae19c5a31","openssl/doc/man3/X509_check_ca.pod":"b52cb429aa0b9416f9189e78e4cfc0eac26efb42d86b4c5c18ba626425ad0858","openssl/doc/man3/X509_check_host.pod":"d650728411df302db7e622e20e567b5110f7e6af0fc06086550bdc46362e1f1e","openssl/doc/man3/X509_check_issued.pod":"6c17b2588117d268d9c6c0b2efcfbb92222aa3cfd179fce4d49356421466ea6a","openssl/doc/man3/X509_check_private_key.pod":"edf307f7df63cacb1d23aa4f4f34565df534cde48318480cb5ee95f0c7f1fa27","openssl/doc/man3/X509_check_purpose.pod":"fedce0b259365a9bb0390c5423b688d9876012b1347e1627066de0d3993f12c2","openssl/doc/man3/X509_cmp.pod":"aad2f01c0457d96db4f84de4e5e1924e7572c538f0b6a0d6666a6c8e377a62d9","openssl/doc/man3/X509_cmp_time.pod":"b981da40f3f68a578db29a66f2570e55cdc99daa819268d15d7c626f6e1c230a","openssl/doc/man3/X509_digest.pod":"f4f1bedd97852b9bbe82afc6e4c573125f684714590b42b064787ae821d62d04","openssl/doc/man3/X509_dup.pod":"7caa371b8da0812b7fcb8f54e57136e41fb81f80115088dac25082fe84301159","openssl/doc/man3/X509_get0_notBefore.pod":"66cdd9be36c3bc13680918927af2a80b06f92871449be70ebef477348e687801","openssl/doc/man3/X509_get0_signature.pod":"d83bdee1efda4fede8ea60887eaa45315ebeb9ebfc822b7e60db79768fd92eca","openssl/doc/man3/X509_get0_uids.pod":"04549206bc888e9da9c4bc4bce5521f0da25b1c280bf66a3fd08773dd695c46f","openssl/doc/man3/X509_get_extension_flags.pod":"19e7da3eb1e54e6b2625a53c71aa8ab74c89c405ff3a20ce8c60f2a9d4ce02cc","openssl/doc/man3/X509_get_pubkey.pod":"0d1b2fbdae4528648c0a70632d6fce285a5ee5c1bbd5bc4be28373ebd11c5644","openssl/doc/man3/X509_get_serialNumber.pod":"25c71d0e201e9eb12a73f9d80d6c4cb6a3c46d89efa8da10a432caf2908936a0","openssl/doc/man3/X509_get_subject_name.pod":"35e20b0e6a7cd1de5c5325b62af3a494f59a4a3e9b2f5b7f71ec90ee90844ffb","openssl/doc/man3/X509_get_version.pod":"abf7010b232e4c36e8c18bd2363c3eba41d1807052b862753cd1832d7add03f8","openssl/doc/man3/X509_new.pod":"22ff44332adb2856832c706039baf9884b54dc4ed90ac9c6cb33958f31968acb","openssl/doc/man3/X509_sign.pod":"937a6de441cb1c8c084d1a78fa91aee9e4b281adc46bad08bc1e4f4ede49d603","openssl/doc/man3/X509_verify_cert.pod":"e4ea4d7e7532d86f7cee5404412b6f2530e16d518850346d4cf45bfbdab5afc2","openssl/doc/man3/X509v3_get_ext_by_NID.pod":"5faf535447941465dcb4dba4527bc036030218f4a3f3cb31fce49091d6447789","openssl/doc/man3/d2i_DHparams.pod":"4f0ed00d8ba4d77edc38cbb99b3e16dc1d3ae9ff498e89baec764343b418aec0","openssl/doc/man3/d2i_PKCS8PrivateKey_bio.pod":"d1cdb811d88ba557c6783727f784a63c041a02f075db7b93302e0277a5eeb441","openssl/doc/man3/d2i_PrivateKey.pod":"c7853fc738802f1db4a172871d86c7b8a7d0b5d98243881ce395ac12f295d208","openssl/doc/man3/d2i_SSL_SESSION.pod":"bc21bc24e88352a7fa7960b018c2431aea3b0371775a9722641709ad23e2e62a","openssl/doc/man3/d2i_X509.pod":"4f08f3fd0a4e71e83e6291073ba778db7b5d588e89f1b669990e66bc8eeda9f4","openssl/doc/man3/i2d_CMS_bio_stream.pod":"57ff21edf5e057b5186ca8b616087a7f8fdfa1293cac59ae0bb72a740a4d008a","openssl/doc/man3/i2d_PKCS7_bio_stream.pod":"616ff7934af6cef7209f9e0ab2343a0668de210562e20affa4d9b02aad36da67","openssl/doc/man3/i2d_re_X509_tbs.pod":"aaca697edb4b5c7139cceba8aeb5609d4a18d7606dde52a66256bff5c8d680d6","openssl/doc/man3/o2i_SCT_LIST.pod":"82f5f749eb71d3b694869a53f060c3f9ac20e380b62d7f4a908fac406423d68f","openssl/doc/man5/config.pod":"831ba6dab308e1c0923929089be0c187a9dca9cccead33bfbfecc00885274908","openssl/doc/man5/x509v3_config.pod":"57787903148c11ba7470b477ebdf91098dbd5cfdc1cf176c3fb26f6c6d4e9aaa","openssl/doc/man7/Ed25519.pod":"0f19e6e4a06a6508e57c09a6b2c7890cdb6f51ec5806ea91e06db4be60e7c137","openssl/doc/man7/RAND.pod":"05d139307366ae6b646a292bca0862ceefecf7720297380635770c9545d938df","openssl/doc/man7/RAND_DRBG.pod":"d4efd07d231b501525970899ff911ba7f8036f724e00ea8704c06194e4fdc794","openssl/doc/man7/RSA-PSS.pod":"e302eda9bc0e90889f498d834ebf4059d44b4fc7f5e3edfb292e81d7df35bf27","openssl/doc/man7/SM2.pod":"aca4dae0e2d24d5d1c0987d698922390d9b3cf638f77a838cdadaeb645b7d2d7","openssl/doc/man7/X25519.pod":"674e80ff397706e9c6fa83c85ede868a07c3ec7eb46bf4f18fb13572e73c4814","openssl/doc/man7/bio.pod":"5a6b943aa56e79f8d9c97eed0511def267a38410bf841b230994164e3b39e425","openssl/doc/man7/crypto.pod":"426f6f3a4300d4b9928341227d5630e932f41001e2f0f9cb73e46650b3d11081","openssl/doc/man7/ct.pod":"4d458e58daf08b7b528fb72de6c9838a89fffcc3740b1438cc3b8e30bfd2a192","openssl/doc/man7/des_modes.pod":"fff878fa997b37163dd31713c796d1574490b0a3223dbe11ced01298b1c3b737","openssl/doc/man7/evp.pod":"3588d0b8355739a8b8ef48149c16b0e4625ed3798d9399528daf850c41a81314","openssl/doc/man7/ossl_store-file.pod":"b68fb7f166585d643aeabf5ad66968a9e1bb9a0f51848f9351e00e7993f3cc81","openssl/doc/man7/ossl_store.pod":"34cab23c4fe33340e705d8ff2b437c1489cac2d8757df8dbee81c8b5a148dd4d","openssl/doc/man7/passphrase-encoding.pod":"640502a7b0407c9e8a2c0332cfa6fefe3cebd6cf774f5ac8f24d2f22c8908d8c","openssl/doc/man7/proxy-certificates.pod":"bc563175f718b7efa53757019af9985440739489b9bba84b4bc203e2439f0669","openssl/doc/man7/scrypt.pod":"72dec00db94199c8a1e6fbc867d92505362456de3d07f199d07bb35c6826b238","openssl/doc/man7/ssl.pod":"170a8a7177e45dfe4c4515169e29b794445b6163e8360f1f691d0695ac9e2cb2","openssl/doc/man7/x509.pod":"b5ba0901b6aeb6e7a6ed090e061e6368aface651e928f22de2e02db1b25e1c02","openssl/doc/openssl-c-indent.el":"7d9a49b0d41e201adaa2e1b336f2073e23cb3ad8962c187dccc5dcdb3037e652","openssl/e_os.h":"c8154926e3e19c448c290142e933c40df58b262f3dfbc0c0c8832d70645dd547","openssl/engines/asm/e_padlock-x86.pl":"296feedf92fc9daaaa78f6939fdcb3a50e691b1dceaa153af45b03385b988983","openssl/engines/asm/e_padlock-x86_64.pl":"7d11ad2bdb53bcf0a815f21250d69ee7e9778690a26d6e2f40a990682f34c42e","openssl/engines/build.info":"40a72aac066ce902cadb25477c73e57848542699e1949e100e6bd1e26744d396","openssl/engines/e_afalg.c":"12238f9d45cee11f1135272d781eccfa51ac02736bee5171c22a1d16670936cd","openssl/engines/e_afalg.ec":"e4f35d834586b49d89983d1d45d63cc8f03c6ad9b23edab4da035b8cb7b9f6b3","openssl/engines/e_afalg.h":"2c099fc3edc2a8013b7a7d8be233ccc61131bd417822940b805a0fe54a9c9c24","openssl/engines/e_afalg.txt":"9da1e6ea1d14326a3667263017868ece1c7ee56b134986ce7b73f70a49b6ced0","openssl/engines/e_afalg_err.c":"c0e61757b1f83104dc35d0f9446b61c493473a2d12314a3ae71ba579c0037b15","openssl/engines/e_afalg_err.h":"6ac228237a4e3cee9b6acb22205df48c87d72055dc24119c24f637d072e358fd","openssl/engines/e_capi.c":"94d98515cf5bc239f4f712ec6c1d46f34c9d61aa90bd36726f87641addd600e4","openssl/engines/e_capi.ec":"f321a020da40d25763685beeea504d39d7ee729a78760a160586b3ea06855674","openssl/engines/e_capi.txt":"61b251d2b29b2b2a269621a194187dfb4409803bcee4ed06a19641351b50b01a","openssl/engines/e_capi_err.c":"649eefd0de78cb8d421ca31b56216df68a567b225e933fea0a81f0527dce9d2a","openssl/engines/e_capi_err.h":"70e10eee7a1a6a60a97efab2a1a4d1e9a63fb3c270c416911176dbe0e917dd3c","openssl/engines/e_dasync.c":"d7d7122645935e9a93d4c1f335a163cee0ee02fc0ecc6828baeaf3668c937504","openssl/engines/e_dasync.ec":"9d72d081179b0c8917b9ed5ffae64b43988d6273139ba402ad54b6da030752df","openssl/engines/e_dasync.txt":"4bfedb638226e82d694653ae7d12ac7c292a0da53bedc8d5206733597c3d16e4","openssl/engines/e_dasync_err.c":"59386ee77e72f4de83d8803f17d1609d6cf8bedd60743825259f485fd16a8b89","openssl/engines/e_dasync_err.h":"2affd0fd7a474b7b42533d3894446c589024778f7de19bf44cb75eef6899a8e5","openssl/engines/e_ossltest.c":"cd84c18c208efe2a472ba76a248aab31a6f72c4319fe18a96fbd26c894792bac","openssl/engines/e_ossltest.ec":"a8bea88a6bdac1f2757a2edd3509f1cb6726fc416a75dd8393abfb8cd76ab7aa","openssl/engines/e_ossltest.txt":"dfe08eb4bfc84eb3e26d5f1a998a346df3f1972dcfe372a45439e0e47d47fdae","openssl/engines/e_ossltest_err.c":"1f373f1fc169f0af13b942beca5e596e83eb0719764ddeb86809498364e3d1ed","openssl/engines/e_ossltest_err.h":"2c45ed3593c3e319f6b195720c0fc04af0d1dac6c515366d25dd13508903719d","openssl/engines/e_padlock.c":"4a0299e184d7465389db2ed6eabf16fd4ed4dc943cf3c0eb8498d5aa1dd4de1b","openssl/external/perl/Downloaded.txt":"9c7b05b336f8a2f171c296535d37bab34c2597c773afc9627ecd2d85980e3ad5","openssl/external/perl/Text-Template-1.46/Artistic":"b7fd9b73ea99602016a326e0b62e6646060d18febdd065ceca8bb482208c3d88","openssl/external/perl/Text-Template-1.46/COPYING":"4d23c8c814e5baf007d854f01d8502e77dc56a41144934e003fb32c4e052d20f","openssl/external/perl/Text-Template-1.46/INSTALL":"d2f84dc3b27915516d16694b00ec29d20d1b427b2c54a85e7691f4caeae0ca67","openssl/external/perl/Text-Template-1.46/MANIFEST":"3b667017874fc2df25ae3100962fdd3026615795b0ce60fdd47f02b0f545c688","openssl/external/perl/Text-Template-1.46/META.json":"e52d6f14b9990553dcc5baa16be1edee348ab890dd065c9677db246fb44a7b42","openssl/external/perl/Text-Template-1.46/META.yml":"566a7700ce6679cfa949b46119d3f103f1e3f5b891782903b087b096cd5c13e6","openssl/external/perl/Text-Template-1.46/Makefile.PL":"dcd15f8fddea6bd866d4de9ff5be0f49b69e37c34165b0a8dc570e9b99adea45","openssl/external/perl/Text-Template-1.46/README":"04cb0c7eceb19919260fecc5d617783cfbd39b5bcf676730a5757cbd0eeda01b","openssl/external/perl/Text-Template-1.46/lib/Text/Template.pm":"ebe5111b20332dcb62b52a6c023dc6cf80bf42f3193fd14f8708239e5ec30f3a","openssl/external/perl/Text-Template-1.46/lib/Text/Template/Preprocess.pm":"829f63d0c273b77c7232fa1fea02a76f076dc4e4c3070c840a9125296503de5d","openssl/external/perl/Text-Template-1.46/t/00-version.t":"c5e0f7d0e5dd616a3415528ce2c1d86389546852233ea9697944e21d770a6109","openssl/external/perl/Text-Template-1.46/t/01-basic.t":"a012eddaadcdaae932f769c3987290a0c95dd6f822d933afb529125e0975be4b","openssl/external/perl/Text-Template-1.46/t/02-hash.t":"bbcbd9546cb771107a258831a137e31ee68e2e68bb1d69200f3f7c46302fd9b5","openssl/external/perl/Text-Template-1.46/t/03-out.t":"7f47cb646abb093e287ffb7ea0182ab346a41941f5f32324c2464ba08f8561f1","openssl/external/perl/Text-Template-1.46/t/04-safe.t":"3b20d194cfe1476e6cf088e0b6d1094275021dd5737a8687598c49d920d10167","openssl/external/perl/Text-Template-1.46/t/05-safe2.t":"e0f0eee46e23f0141705b9af769c551a6191ff76b8b75ee4dfd8963404d4a316","openssl/external/perl/Text-Template-1.46/t/06-ofh.t":"7d3781023c0f210376a8650825f89799f53ef457b457feda99d02475e9a744e5","openssl/external/perl/Text-Template-1.46/t/07-safe3.t":"af4a2c1b81b038352f1411e4c4e0115e1f0b023510e5276ad69452a859a1e30e","openssl/external/perl/Text-Template-1.46/t/08-exported.t":"9dce4da9343dab7cdeb9f2799556e6a49f4231916c4db4971eacc3151cf41da1","openssl/external/perl/Text-Template-1.46/t/09-error.t":"01781f28bfff4e88678e6a17e3b50b1cd90b76ffa358a7c2c56058cd0852a8ab","openssl/external/perl/Text-Template-1.46/t/10-delimiters.t":"0a203b734fd67f83b3a1c138024443cb6270dd247d90739a345ef46271c0cc80","openssl/external/perl/Text-Template-1.46/t/11-prepend.t":"c11cb95d3583368ebfd315e8e5a6dafd75ec60debf41b8898492d7e913dea0a8","openssl/external/perl/Text-Template-1.46/t/12-preprocess.t":"422781f1e64771ef8421f32e8ca954a8e4f0a4639d77c4cccbb64e6fab6950ff","openssl/external/perl/Text-Template-1.46/t/13-taint.t":"f044f17e8fc390046118710afd041eecb69b00b81dbc50ac4aac6df359d5a2b8","openssl/external/perl/Text-Template-1.46/t/14-broken.t":"86bce79fffeb080659eb11f381f6a26c34f007028e34882f0badb194a9cc3881","openssl/external/perl/transfer/Text/Template.pm":"806ea72d6560cdcee7f9ded9527c51bd7264e17a4f191339e1d2587f801db3ae","openssl/include/crypto/__DECC_INCLUDE_EPILOGUE.H":"53cb536a751a1a309e098aa662ed2f4b8e0dabe94a6274b9e513135179e6458a","openssl/include/crypto/__DECC_INCLUDE_PROLOGUE.H":"021f571eef8cbe45c0cd6520aeb12499ac31154fee331955e5a505fbc3762570","openssl/include/crypto/aria.h":"bb5c3570c4a8086452a37d505d17f86d94173cacbf44e20de6233b4cc503a38f","openssl/include/crypto/asn1.h":"32519a422642025af212db876a62d7ec9ecbe6b56fac7bdc107e526f388469d5","openssl/include/crypto/async.h":"be1fe19da7f3163477ea57a75ac71a7d2b85a90e01cd9bd589084394f242900b","openssl/include/crypto/bn.h":"29da2f844a66930db32d124eac0f79878e3ef8e61cc6e7035c59f8b9647a9654","openssl/include/crypto/bn_conf.h.in":"eda1bac34faba99d491f2d5c28328997a94b4f59db06b65b45e91387ce00c0ac","openssl/include/crypto/bn_dh.h":"2e34e268912af61b71ed8216c7f0cccb760994e0e3c47b0ec50daa29b46dfb89","openssl/include/crypto/bn_srp.h":"d08141769d222ce60d977563fd0f6d653d2fe92e1be210a4cfb4c903db932fcd","openssl/include/crypto/chacha.h":"0e5e743174154a7d46d90c82a3dd252c1b1831ff3adfd2fa3ac5d237801ee5da","openssl/include/crypto/cryptlib.h":"8cfdf6c5319fdffc8a64d6ef0844fea3b9fcc270e314f078342b1e26a51b568c","openssl/include/crypto/ctype.h":"5265229633ff6c80ef8c5e5cb5e919bb1f837913f9e48ef4301987b2a2f49d73","openssl/include/crypto/dso_conf.h.in":"469e89dc01b73dd5bb56fb6fa4f3ade57ddc8f9ab2495f7b83ca4bb3c03fdb16","openssl/include/crypto/ec.h":"eef8c8d5561e74c0a6aac33e989f284726b44b324311acfdb4dff16451eea944","openssl/include/crypto/engine.h":"139ddc0e469424cf51722848a7befab0ce1cb4bfc336d42b36d6edb3a54bd69c","openssl/include/crypto/err.h":"bf28991eb0d4bb8ca09f7db06034549509001352db8fa75a0e9b95d6829df22e","openssl/include/crypto/evp.h":"c7e98d995cae553a3149a52bfa0ae5e76f1d9c989c6193076d526cfa7129c246","openssl/include/crypto/lhash.h":"027fd181f9effaa0f398a856c9bf423ef2b6439d2a717a63f5445546ebc2aa62","openssl/include/crypto/md32_common.h":"d89b9c7ddcf20793eb2211c1335c87053bbaa7bc685bdc639ed861a3bd4ffd4e","openssl/include/crypto/objects.h":"2c49e60754e30ebe4447d45e8856f07fcf2eb00998f2931d6522193155b2eebf","openssl/include/crypto/poly1305.h":"16e9d65921e61f0be7c160522c5505d261b17fab81f6cedc93184e8d23f0e30a","openssl/include/crypto/rand.h":"a0cbf21a749de36ea5266de5246a6226441ef967ce27022db00245f87f68be1b","openssl/include/crypto/sha.h":"bba5f6f4c1c2d2a7c00c380223fd56c5a82a039f7e8ca35ef53bd0c99ce04cc4","openssl/include/crypto/siphash.h":"1bad4bf41ffd54408532b42d3b806ebbb0b31de408d8a1795ae4b39cb7aa522d","openssl/include/crypto/sm2.h":"2bb14af67c25f1c247c482c29c76ceb955b2704a2aa4c154ddf88b3d263cff4e","openssl/include/crypto/sm2err.h":"fc350f1001162921f5e914a0cdc81220639d6e2a4477325ffb54f5455d41cf31","openssl/include/crypto/sm3.h":"44348ac98ef8a9df7c97b0d4b25b7c23988f8cfdb84735a26a42af16c3e86665","openssl/include/crypto/sm4.h":"aa3d6e0b83ac31f0d872f01998c77599cfc495a354df7eae6077b944a7b98daf","openssl/include/crypto/store.h":"efc483671c0eaac885fcc08e7c276d3e4b5d7b96ffc21aa36b2eb41ef400ccef","openssl/include/crypto/x509.h":"85366be4487887074f6664102a10b945e566b43a12879d165cb938a11777238d","openssl/include/internal/__DECC_INCLUDE_EPILOGUE.H":"53cb536a751a1a309e098aa662ed2f4b8e0dabe94a6274b9e513135179e6458a","openssl/include/internal/__DECC_INCLUDE_PROLOGUE.H":"021f571eef8cbe45c0cd6520aeb12499ac31154fee331955e5a505fbc3762570","openssl/include/internal/bio.h":"a59fe352fef0747629706586a703f2bed34ad576be4de75b44c7a88641435f5b","openssl/include/internal/comp.h":"0bf68d4852d8387bb24b3c6b2129c56070c84f9841fe53e747cde57bbfe61da8","openssl/include/internal/conf.h":"5fb5edab92a21ebf3387f975f8030b702ae306c000c9933c5a1893dd6c5d47cd","openssl/include/internal/constant_time.h":"fba4e88378e1a76418dce375f88a94726671fda5161026f68d4ee398673c48d7","openssl/include/internal/cryptlib.h":"d85479ea9a0f508c944b3f0eac1c7bd9d55d1a9de990cd1379c8b645591f4fc5","openssl/include/internal/dane.h":"2b15667713ae1dff795754cfeddd45dcb497db6720bb6bef1512ad9d761cd77e","openssl/include/internal/dso.h":"c2aecbb40f3b210aa7401b6f3eefc4ce94bcc4b2313917c6ff9ea2b1a8e5fb8b","openssl/include/internal/dsoerr.h":"5c8a57e223879f21d50e9275512e7e0c45a959273ab9932bb8acace1fa625782","openssl/include/internal/err.h":"ecfe3e47674b053c612631cedf1739dfd4f2548ea14e2909539d8c8c38958780","openssl/include/internal/nelem.h":"aa9604f58d464853c47ec7d6beaf09ddeee04dedcbdf7ee8b5132ce5aca19863","openssl/include/internal/numbers.h":"dd67067fc220a479fd1e57936803c8149a6dfde46fb45fc1998bfe51b0f5d9f9","openssl/include/internal/o_dir.h":"1676a17c45a6a8b98290640bc57f2bc6fbaf89a54a01342e65f40d3cf9a7f02f","openssl/include/internal/o_str.h":"661d9dff184260ecd9705dcb72011934314ca0f9103723c4238397dad1333c3e","openssl/include/internal/refcount.h":"cafaf8eefa9690f3e6a0f49f7fa5900bd486099a5c67436012bd7b4f06c4201a","openssl/include/internal/sockets.h":"2330702255ede77c8e8ec9e8a09d476f2d701d3ad900dafdf3cbcf1ae8ec4bc8","openssl/include/internal/sslconf.h":"8f643e91886fb1fa9aaa4f7106aa360e31051fbfa4d78ae2440caa44203093d2","openssl/include/internal/thread_once.h":"76a3408ae6a68a59fe6d0ccab432644ae3d4dbee5a35973e2466d323720b974a","openssl/include/internal/tsan_assist.h":"23841bbbe658bca580f743db285dd6d0d1ce8af8ce5fe755df11995060591cdb","openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H":"797eeebf0fefaf464c6b16b02883cae3bf629de7610d48e9c4ba5efeefd67842","openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H":"57b996ee571c00c298204b878fae1506e594655c15b6b751ec26b292f9d58337","openssl/include/openssl/aes.h":"f6ba27e87d97ea578f01540a8f84b7eab05d42c178badce712d0cc668d8a9981","openssl/include/openssl/asn1.h":"851313b1176baa3d6896aaeeebef56216ebdd38dcdabb39b3eca36b6645352bc","openssl/include/openssl/asn1_mac.h":"db4883ed3aa74e07338001b31ec7e3e68546521c54bbdfe68c473b33f8511ca6","openssl/include/openssl/asn1err.h":"b89b16216ddd35f028f5bfd3fe0db4f2ead6c9415e7749b7115b0393b427ef2f","openssl/include/openssl/asn1t.h":"2702f569302248b8228e493177cf0a469f127f1ce5c76bc684bc90fbdfc45743","openssl/include/openssl/async.h":"ef96c716cac393f2cd6da304af029155ecd9f021869cd5a4c341ebdf249036bc","openssl/include/openssl/asyncerr.h":"cacc9ca951aa523d3ed6b9df2366022633925a6729d30cd134a05d2ffe5fb156","openssl/include/openssl/bio.h":"78b055555957eec2bfb4ce5f91b27bdcfdf73128026be9ce85fcca0126fdcd3d","openssl/include/openssl/bioerr.h":"ad29fe4ef37fd7c4b256b690caf9371a74e29981f6561b94436dac54a61bf74b","openssl/include/openssl/blowfish.h":"813b2c7cff888b5b709b90d4da584afef59b5ce1ea888617d682f1af48578faf","openssl/include/openssl/bn.h":"8f79b29c5ad479186acaae962a598d9868dc434fd5fa49a008eecfaff1b998ca","openssl/include/openssl/bnerr.h":"daacb00f416075ae470723f764d0ff9703f4a5fc31e881e1be8937631de7efff","openssl/include/openssl/buffer.h":"a4fa292b903cb8c2ce1761ba4980cf5bdfb66dcadcbb5c8aecc45b012bc64c23","openssl/include/openssl/buffererr.h":"722f6ea87711b7c0cb6ee29c15762c2839e5ad17b9ef579b6e81b6121f035c30","openssl/include/openssl/camellia.h":"561bdb2e985458e809e656c60e4bc83e1d6707746dd8b5badbc10b64198d4770","openssl/include/openssl/cast.h":"a14c51a129b3ae5795dafd98065be0bb0cbf00b4d4528e85adbf629966f42f53","openssl/include/openssl/cmac.h":"75bf95d1da118ff1e2f143ccb7a564d949de440097b97a49725c03976e167b52","openssl/include/openssl/cms.h":"07e4b0a779c957ef9026d69c0cb5a621ddc2060af967e0dd5e91ac861fdfbdb2","openssl/include/openssl/cmserr.h":"086aa0b661ba9de9618afc948a4d1a82df970a406f6c5bb6fa60572a720a62f0","openssl/include/openssl/comp.h":"98a877c62723e6042e4e4740cd1a6e7799df752d9234386d73a28a098e6eb31c","openssl/include/openssl/comperr.h":"f64be205d08af2557187ec19c03678aa9e29f66e428de29cebdd62cd7c3b5515","openssl/include/openssl/conf.h":"e54341e30523dadc09d821366f5afb13c9286d540b34c1945406918ed588fa21","openssl/include/openssl/conf_api.h":"175f86b69b58b0cd1da6c9b27d87ab4e4ed52f37dc76b7895c210c43469504eb","openssl/include/openssl/conferr.h":"abfe26485cd43a80e0c476e628979612ad28a635577baf68eee476850425a498","openssl/include/openssl/crypto.h":"d2cd84e695e68051fe67fa7cf901ccba4fadccc71a6b30090df20a01b91d3ec7","openssl/include/openssl/cryptoerr.h":"e752d7d3da32a6c009cf264450726367fd69e7c2a4c185d580ce650021d68e7a","openssl/include/openssl/ct.h":"b27aaf0d39609500b4fce3b3b65f6752116acb30420de1d53943074a481043f0","openssl/include/openssl/cterr.h":"ab6e70b52e341247c4b217883980ff1e98e4453d1020b0b038cdbf096c4ab8a5","openssl/include/openssl/des.h":"3cb68fbb498e34e19e46f9d41561596ab69ccf78b1d8bdf2f312e892c060015f","openssl/include/openssl/dh.h":"f56e0c29c124017c815c6f3d0c2413e03c81cadae2e84c2c325fc2c6719fd559","openssl/include/openssl/dherr.h":"9b1f7019d8d95e1d5fc5268089e8331829af7416b18a8908266ab60027aae0e3","openssl/include/openssl/dsa.h":"1525e5adf242643a7d36312580314f5ce61ecadf82223a49ff5c32220d78f9b9","openssl/include/openssl/dsaerr.h":"65ea8b47cb25ae82d611337cd47da7c1c5cdb9451982beec9d841413d4a923a9","openssl/include/openssl/dtls1.h":"7304f17cc9998bd7c16539ae9a5ea545f2e0c64086d5e688caba104b6a7ffecc","openssl/include/openssl/e_os2.h":"87c55abdb4755ffc04cd5e35a36d8b1ff2f19f3d8b9c7ef10357a78ff887503b","openssl/include/openssl/ebcdic.h":"2289f14f11e75ac739d1123651d16e841f3c74e36daa483c1fed9f8c5c144720","openssl/include/openssl/ec.h":"4e624064531986560789f8509dfd10bc5ed82eb65599e03ed3bfed57be6df199","openssl/include/openssl/ecdh.h":"95fb89add3bd32b6d43dcf1a51d1839b915e774d7138afaf618e690efbf414bb","openssl/include/openssl/ecdsa.h":"95fb89add3bd32b6d43dcf1a51d1839b915e774d7138afaf618e690efbf414bb","openssl/include/openssl/ecerr.h":"85a3b64c0644420a18295c8001a06bad5d7c3e84d4f871c925a1b45fb89ef182","openssl/include/openssl/engine.h":"a98df07aeac579293b186ea61c35edce3eebde1fd03d8553563f18023de47c95","openssl/include/openssl/engineerr.h":"6f3d1e91ba1b7971929530cb8ac3ef934c0b82a8cd459caf224e241a3e5ad6e9","openssl/include/openssl/err.h":"1447263f0a840e8135c586e16c3d858cee939deddf4fd905e391869809b4daa2","openssl/include/openssl/evp.h":"9d963bdda81802988170663ccfcef437aea69042f42aef3a11ab4a217b800aef","openssl/include/openssl/evperr.h":"45d68b462f25239488c020bee5fbf69700b0cd7b4dc2b3ba7015bddc499476a4","openssl/include/openssl/hmac.h":"76386c2273f105f54c5749f2fc854573c371ab185f9248ce295a748e126caae8","openssl/include/openssl/idea.h":"bab682c5cc06027c82d126ed8e65d7dd9dcc75fa464ccbc95d7f168bd69c732d","openssl/include/openssl/kdf.h":"aaafd4a962ba9b9f2a2462076c7f7b4991d9d87e7bef71d87e9308125e0e29c0","openssl/include/openssl/kdferr.h":"e406cbc8a8a7956bcb0e06a949454b48d2702339caf4a2e621ac0cde9c2463e3","openssl/include/openssl/lhash.h":"1036e20aba00e0585b96b91a00ae7792dc12501160e117d1f824833de7fe3752","openssl/include/openssl/md2.h":"9e28f0a8d5e2297649af298f5e3209d32fe9486edb1793cc698a757c91270662","openssl/include/openssl/md4.h":"03d3fc9dceec6c168d219eb9f404ca08b478d5521622834bc24b7d45945702e4","openssl/include/openssl/md5.h":"a0612a8f7e69e3bc166fc186ca44be1e5b1d020b5da8b5be021f73d48c270b82","openssl/include/openssl/mdc2.h":"f13b01ec09c45c2634673d1b9b1a79adbd6ec32bdff94287308e2bb27408e537","openssl/include/openssl/modes.h":"f4e527987e296a26fc1c06f4f896baa5f457b7e67f94957d176eed469b0fe602","openssl/include/openssl/obj_mac.h":"81ebca20cc370ccf72f3103d1231c6a42e064730bb22261a97d86ddd0e7bc08a","openssl/include/openssl/objects.h":"4018d7c54e6f19c3230af063f4dbc8523f1450528a4af15a97a0a1ff3fb3ba38","openssl/include/openssl/objectserr.h":"0ec7330c122ae2b3174df95ddecea65ff661a6152cd0192529dd1411ef3f62a1","openssl/include/openssl/ocsp.h":"cfbbc3434b56c4671080326aeb8c3d007dab7d2c3621d5146c11aba347158b80","openssl/include/openssl/ocsperr.h":"c73a57b1919601ff8c04f2dc9c62dbd130ef2d3ae39bb0fcdf25bc9e6eaf327a","openssl/include/openssl/opensslconf.h.in":"012ddfa5b7930fb023588ee96e777a7ccb7e1eb5c3d984e9f1cc4eb90314cf1c","openssl/include/openssl/opensslv.h":"26b256cff90a00f9115bff9cfef6d0265d4baeb42798c516bc9221324f112511","openssl/include/openssl/ossl_typ.h":"46f541a1cc49bf08908ab3bde05e2683fc56ea268ca3e7f2e27628653ecb4a14","openssl/include/openssl/pem.h":"32d62036d0c35d03fe7f7ddaaffe3caeafcf984ec16e4db7ed19d3e202e9d7ba","openssl/include/openssl/pem2.h":"6833ee5712125d1ce8f7b52437a752e40c2f4793276859a8228c0de71d35c3e0","openssl/include/openssl/pemerr.h":"d91c6016f3c1ba70683b92fde55500ec334777defb6486c41b0a9c4e402aa295","openssl/include/openssl/pkcs12.h":"97c129c6c9a493d7e5d3af123d96040d87c4e54fc5e41aec450832cb32a634d6","openssl/include/openssl/pkcs12err.h":"b7340727a0480f351823b669f55cd3989c065d373c8cf6ff8745b8356f61d5ff","openssl/include/openssl/pkcs7.h":"cdc3505c9bb9168a6fad434dd9d9a49ad630b9ae9216bd665b11051e04a709bc","openssl/include/openssl/pkcs7err.h":"ecee11e9fbddab20f78a018009e6a2daf287ff5df00679298b137fe9996d9386","openssl/include/openssl/rand.h":"5a91abcbdd14dcf2fc62761ccc58ee9407274ea558c292fa77ad625204ac2bd7","openssl/include/openssl/rand_drbg.h":"12379cc0a7f168cbff8e08828da72dc0e87773bc6c3bd14c4b57506339b61fa5","openssl/include/openssl/randerr.h":"41fcebfb0767afa03f3de2732d3f0ce46cd2367ec34b2016cdb5c9e84a9a8994","openssl/include/openssl/rc2.h":"ec2b9196898bbc45ff2ab00204f93a6f20c974225510f29097ad69a6eeebcdfe","openssl/include/openssl/rc4.h":"6fc023442f524349685d13d50854ad773b12b8c7a153d72d615ab27dd4a3d609","openssl/include/openssl/rc5.h":"c238954a1df23f52362d6e5fa78df2c7a5a2ad6ef9536e489f0a23295efa0cab","openssl/include/openssl/ripemd.h":"8c74b93c10a9e83abc17ced3a8021af7506f39a0fadab07b5db2d4faebcf68b6","openssl/include/openssl/rsa.h":"509c4db9081195cf6c9e5fd4683890aeb39509f2997a1989dd5a57cf43039bc2","openssl/include/openssl/rsaerr.h":"e032a933b1a4c13ec901d7561ad23ace01881b60cdcc86af0e4cb0a25a2a3252","openssl/include/openssl/safestack.h":"57665dabb37f4f0bd853539d93c64cb8adf37fd9552dc9fad215cc8f47a991c4","openssl/include/openssl/seed.h":"6bf2373dfb10dc5cbc626cf2fe86b9b1c82373d799bdd6be13eedaf7d4540d55","openssl/include/openssl/sha.h":"0bb6745481ac56b67f450d09033e813bf8f6a5f2025e90d5eb539eab1ad5e323","openssl/include/openssl/srp.h":"82a08bf9a866dec1b7deb66b4077690cee0f6caf91eb00136c5eed4e8d943d06","openssl/include/openssl/srtp.h":"e50e2dd5df6a0db219091cd1c6768a6d319ef6485b16e1f361fce43067847626","openssl/include/openssl/ssl.h":"67e8553fa3a5a723f3b0f29f7f6dd51ff75b4a3d4e799eb1d98ef5d1af609e52","openssl/include/openssl/ssl2.h":"7fb557a32488ad44a25420abff8279abd0bd1f4ab768e73d3e1d5c2dab36c0c5","openssl/include/openssl/ssl3.h":"d04cfec2a9f9da2aa299f55884215e200b490a6e0a9423255262648bd8a6d1c0","openssl/include/openssl/sslerr.h":"54a3c784ebfab631d21bb9b7db3ce38167acc0299e8920b5ce6e419a3736930a","openssl/include/openssl/stack.h":"45ba803bbe14007e494bb24b2ca954f6362ef700a10480efa3d2f3acb159deec","openssl/include/openssl/store.h":"1105bad1a309d3122a2cfbdc4098a33e33d50c8118e70bb332f3b7d6ef2bbb58","openssl/include/openssl/storeerr.h":"071c66bcc03ed5c2a24f1964f45e8d1a633f3cb4b183c718ded3e25312f8c4e0","openssl/include/openssl/symhacks.h":"0c9e026a5932a2432e3cdf7defb789610c4272010e51e5ff0471809eabb7aa2d","openssl/include/openssl/tls1.h":"d4104ca8720332b9852f4725d4660a6cf77a52b587e7d96ec263e996c1d0ae2f","openssl/include/openssl/ts.h":"9bd039ebce7bf6b6e71fc9667e44e017fc0cb7c79c023be1c965894e61b79238","openssl/include/openssl/tserr.h":"b6e1bbc8c53e4f7c054768dec55272d001dfbfee788a85ba8b0c069e08cbbe85","openssl/include/openssl/txt_db.h":"903696bd5b9908530f8a8578fef47721f47f3fe8507bac7761473e925e942159","openssl/include/openssl/ui.h":"f5ea3f5d2e7beb3e81db8c23c6e618e38e511c213fd93a11ef51b9ae4ad03619","openssl/include/openssl/uierr.h":"bb39377c702d9765547ce95f9e758b46a54ee4e2689f892033cf2a4ea57d5d0b","openssl/include/openssl/whrlpool.h":"38750722d1737083fa8caedfccd3bce574080e35692010d2f91dd303b154af69","openssl/include/openssl/x509.h":"f1b8b356d649da24236d5aabdfafe047b516b2008d8d5d09da5e99fbc4b4a98c","openssl/include/openssl/x509_vfy.h":"f621ac4c38a89bd010656ca00937773126a7ef348b29a14b04cc5ec5c095b531","openssl/include/openssl/x509err.h":"622499b9aaa546957c802da9aee36794c24c9c7d2e105ae69b47841ecdac6b7a","openssl/include/openssl/x509v3.h":"18648fb56b57553ab0c42597609a8f8963516d73f9b787db188020d5ca87f3ba","openssl/include/openssl/x509v3err.h":"3d17dcca277cd6f6373a30a6e07e1a2c44024a0b980ccccc2533d78bf0c22776","openssl/ms/applink.c":"461a11e8c465d61de2357631e7e8367eca3da7f11ad744f490cb56a1ae80115d","openssl/ms/cmp.pl":"e9df8d951dbccb63ea68cdff2c925cbcb7b06764e6b3d74497c7b19e15a8622c","openssl/ms/uplink-common.pl":"7001833c39f8a008d3a0d645347ac0ccc1d15da7c7a571e36bb32710bdfdd413","openssl/ms/uplink-ia64.pl":"51661e5c5d95e674821483ab1c45adb96396911e974a531a1032e480259dac78","openssl/ms/uplink-x86.pl":"ea08cabfe289d4cce9393f9ea586cc468a35f99559aaba6bc98fcb67a5481558","openssl/ms/uplink-x86_64.pl":"58b78e367a56ab276e412a0268a0a88d3ac1e3b62a550ada222e8db6f211a4d8","openssl/ms/uplink.c":"c584dfff58d520c04022e32440ff66d4a19706831478a63c677d835e0eb2d999","openssl/ms/uplink.h":"9e372fe99a844954b80396b6487a6612f41ce4a67aea99507b15f8eab9cf2a8d","openssl/os-dep/haiku.h":"a3623a1ab97b62e79877ea7b54c1e9718ecce68b840b71fdb717c0c5f3bad04e","openssl/ssl/bio_ssl.c":"4e12e3e2f85d1cf773c34dbcb1c234282722e5a9f884ed8404e0aa5a9f76eb6b","openssl/ssl/build.info":"150b3b41dc79f23250be61fc6adc9d1e041dc4589f8f60ae1f975ea3e1dfc5df","openssl/ssl/d1_lib.c":"1b220dc2e2beccdded497420ae909a9385af0c13fef0181cae3c9cac53211910","openssl/ssl/d1_msg.c":"b5370bafab09971437eef70f2380583e1f405908e8622c66ac699a9924d2bf5b","openssl/ssl/d1_srtp.c":"a5a5762a5609b3c705f04730b7860c10a77e4903b6a4d58f4d0c7d94abeaf487","openssl/ssl/methods.c":"704f7ed24dace6561b5179dfa5aaa7258e9599c49f24b8f8a47c37a80109086b","openssl/ssl/packet.c":"920b71e2ca4cbbc70d4e844a47d5101fe0b0e82300d0154a823b8879c2e8731b","openssl/ssl/packet_local.h":"496df2d06fcd70f7c1b77a44b777ba0f856b44e745da9570ec10ffc312da359a","openssl/ssl/pqueue.c":"7a2cc45afa28e7d72fc2f4ca66fb17cce54c2064ce4613975b0b2c1eaeaa05fc","openssl/ssl/record/README":"daa21a1309c257a48a089abd2f65f521ef442aef1428c5cce50af24ae4b586c8","openssl/ssl/record/dtls1_bitmap.c":"be1e12c5b264d22aeea4a3538968f4865339f1cf3f93c9eb9127d85ceef1115e","openssl/ssl/record/rec_layer_d1.c":"376e22d7f9bae9ee68bde03ff01584bcb90b42aa8d94a6df9c5783cf79f209e0","openssl/ssl/record/rec_layer_s3.c":"e5be5c770874840433b3f21ce063d846502b5d7a5b2a409191b88f5eab309b1e","openssl/ssl/record/record.h":"53f3e73b8849b2a6460cd85252da7a7b58df4e9ac7e7871859621285c20be85e","openssl/ssl/record/record_local.h":"6569f176c637367a206f2c645c9d3f95b8dfc212a2e4ba824ef8cef11699b72f","openssl/ssl/record/ssl3_buffer.c":"893f86054c63de62a23948e49f4329a703127607ab89ff91deba34522b72d3dc","openssl/ssl/record/ssl3_record.c":"c3d8ecaf800dabdcac3de4c71953b77f1f38f763244ab348d878294f6759451f","openssl/ssl/record/ssl3_record_tls13.c":"3b8801561edc994eee91c7f6a05a850fc653c066ee0b9ce37e4ddfafe69b52ba","openssl/ssl/s3_cbc.c":"9378deaf185268fe28765e801aacca1f06f7369e5bbacaf4fa887d2b94567276","openssl/ssl/s3_enc.c":"a34687325700316e62441bced6e959a29d7135adb99d967337a0eb3f77d226f0","openssl/ssl/s3_lib.c":"560db641eb4e0e26413200c55ddb2ee5533e51ab266274a5605a77e60d585ed0","openssl/ssl/s3_msg.c":"4214a537d49ccab981ea79bf4dbb24c2791c619a72e0ad2e551f4a3a0f1919b7","openssl/ssl/ssl_asn1.c":"f58e255ddc1c9aa256ba15024ca437f07b1a94b937cbf16d0a2ad6744d676d3b","openssl/ssl/ssl_cert.c":"ffaf20a21ed388c2a8f897ea3ce6e8e0a319a6b22d8eb4174c84e430374449a3","openssl/ssl/ssl_cert_table.h":"3a4eb66c0ee057b35cfd4ef370af76534d4ee3e73067e0b6cd557d3be6de97e5","openssl/ssl/ssl_ciph.c":"456e37414571e95183e69004b9f2010c8d791448fa7178515bcd4213aad36bf0","openssl/ssl/ssl_conf.c":"a0cf59e3376cede23fe0252beea1b146d10c018bb0dc69f68000e136e5dfffa0","openssl/ssl/ssl_err.c":"bc5e7b735588f64505edf0c5bc80b80302f6322e4f2af9762768e4b699eaf568","openssl/ssl/ssl_init.c":"e752118745f0789df86f09fdb449c6bd62a8bb26ea72bac9829e6953d317947a","openssl/ssl/ssl_lib.c":"aa35f71ef043ef27b84c208326a72ba2ce4d589d4c503c0a4d063529efe71c24","openssl/ssl/ssl_local.h":"7390427f23ea2e3e334b7c8ad2d48938aac649438966adc0fa9249f2e4a085f8","openssl/ssl/ssl_mcnf.c":"4192f0c8da609fef9f19ec4b5c4c6bd3713a33ff28c2f076c662c2dbf0a1eeac","openssl/ssl/ssl_rsa.c":"3bce84b4619f07adb900d210e432e1c5c49a4cbe3b12cf89ac2276b928b15719","openssl/ssl/ssl_sess.c":"e12d08d823477f0a29b8cafd153ba8992075cfcfd4567d1e3a5d93ef09d62f13","openssl/ssl/ssl_stat.c":"032df59c03043acb5c7b4a5ec6926461e39d1bafd5b52f855e6016db16f156e1","openssl/ssl/ssl_txt.c":"5cec58dc9cd421a53349edf0bca8ec4cc052ba129543eb810b94fc9b449c1770","openssl/ssl/ssl_utst.c":"69295713d556992c0bb615ea09f15e4618ae98c9b703c42efec88d1a228bf43f","openssl/ssl/statem/README":"5dd5871050b02fdde174e60c923412f6e53289ac992f244b9b8ec62d5ca29a0b","openssl/ssl/statem/extensions.c":"beaaa396d1d9f543d92f59af5c35a65a2dc55d18e6eca278ebc1d9e931e87610","openssl/ssl/statem/extensions_clnt.c":"cc5c39833fcb3d9844e192755385c22e45894e64d4a9ffa7748fe08a7acbfb1a","openssl/ssl/statem/extensions_cust.c":"f587e49956497da7033c43d47c69090c10f0c02c4fa3a2ef4e12bd9d94d87bb7","openssl/ssl/statem/extensions_srvr.c":"4bf68d447d597998de82caf208b0dde6415647ace5c481b090c018636a163f00","openssl/ssl/statem/statem.c":"ea1ff60c9a1053f275568758ffad59ab3c3dc1073d54ba006154c6e6fb1b6af6","openssl/ssl/statem/statem.h":"28fb0cc332ab8222ea7c0087fc99aee4a9b049de6c6ccecbfa9aed80dfb89b8f","openssl/ssl/statem/statem_clnt.c":"597cb663225a3664deac3727cb8383964b4a98a941675415a592a12d805c1169","openssl/ssl/statem/statem_dtls.c":"4d7bc19001714a3dc143fd325ea584ee7940a6deaef261ed72485d1f3d0b6d16","openssl/ssl/statem/statem_lib.c":"285bd7ac04bd90452a429ccd564a63a2fd3cfbd7efd06fbdcf4d33e51952c73f","openssl/ssl/statem/statem_local.h":"1f787e9d09cb7bc872d1adcb6525834145ab87d0db3f99d45c77bc699c3f30c3","openssl/ssl/statem/statem_srvr.c":"cd9d5a8cf15dd15733e3794c19565700dc862be3d49966456ad1aa746238e5e9","openssl/ssl/t1_enc.c":"1b054601ddf168d008b28eb1dd2b9feaeaf7c5bcbc1e182168f6ff2a68081b57","openssl/ssl/t1_lib.c":"895490cf5fdfcf27708fab508c0b14e7d7cba15bcda43ccd1c1079daedea3615","openssl/ssl/t1_trce.c":"585bd13faf56b2eb5b853e873b58ee4bef7b46560c532a9d5947aa8402f42a9a","openssl/ssl/tls13_enc.c":"c9569dbbbf430780aee2a919a943c3530ffd379bb8c849b35320e7b3b125c0e4","openssl/ssl/tls_srp.c":"0f863a2373bdba22d2186373c1a9a5c3a0ac4ba421731e36f0980be2c20c103d","openssl/tools/build.info":"4ead731019edb0b0dbd7b72993c59498e3a645d0472e54b0c41cbb11c20eaebd","openssl/tools/c_rehash.in":"18b371208730667555995259b9151ae4c2a893cd4dafb3437db5ec9c128ec261","openssl/util/add-depends.pl":"d2803c17b68414cc6be7d00ce0051d6f362f72cc7089826817d9f4b65fd6d38c","openssl/util/build.info":"f65db6fe6a0ad3669696a3f5717e8291fd8ab510963febaee8009cb2974bc175","openssl/util/cavs-to-evptest.pl":"fecd65d728fa532e8ef3552f25a838092432be90d52e86346bbc635dba01f414","openssl/util/check-malloc-errs":"b8cc85a985270733195081b0d682a8b89c5342e26ee61a4d794b082844381bac","openssl/util/ck_errf.pl":"acaba574c5b151f4d252dc4adc4741660cc83f0a3d6cae5f2b5faf0401864db9","openssl/util/copy.pl":"e2dcac32a8cb1618e0909cceeb674689fef22805687187d31a235ccb10a6534e","openssl/util/dofile.pl":"61c0a8ec7b57c34e12999908bcdf2671025750dad95c1697bb6cafa8f853f9e5","openssl/util/echo.pl":"d8a0f4766d83ea8aecdd8e361c8866b9d48f40fd50ab15968d35fd54ef521648","openssl/util/find-doc-nits":"eb9b0be06de855af7d557e25f028acdb5f6de4c17c1f0a1db14157ba48d60481","openssl/util/find-unused-errs":"2b904dc493480c41d9799120870edb9e0c28c243a91029d46e0aece8cc5ec4c2","openssl/util/fix-includes":"f9449e929856883f67a89a5d4fe281cd9014412647d739b533832ec80de05098","openssl/util/fix-includes.sed":"68bf0c81208821f306504679015b873881518d7850c699d4f296778aadcb259a","openssl/util/indent.pro":"3eb0261eae9a79d889074d893fd5690e6d46ee55e5b59a819b14a093f6269725","openssl/util/libcrypto.num":"4ce1907d53f783902093eea555b2c7808b523ae0f17058a5b5fb093100d6772e","openssl/util/libssl.num":"673d0209d71fe17c4cf0da2757603f3c1c10b33408a95d196cf9b14c15f79af1","openssl/util/local_shlib.com.in":"f267e61b6cec87c33bfebfbb68629952117c0f78b299781d47deb73a887e7257","openssl/util/mkbuildinf.pl":"855b17d7158e1a556fda698a179c9ccb193339f7757c2a491b3ab07a1a446614","openssl/util/mkdef.pl":"2017340e077b0de03007e8a802ef1508091fe5a9d7abf5ed9a89bf011781b699","openssl/util/mkdir-p.pl":"65c167a1b75a426fd971403c1841450b7c094cffca3b9075e900108c5ab9d4d7","openssl/util/mkerr.pl":"ac7c8be131ef1ad3ebbb9ec5efd2b07fb9ed8726c2a9edf19c6e0e3ac63d3ecf","openssl/util/mkrc.pl":"62bc9b3dea2536c73498a9a7e0a21fe2ebdb5504888175dbcae3715e285df26a","openssl/util/mktar.sh":"67843c53a1f595020d029a2fd32a5097d07b11886f1ffa642af18ecd45038d9f","openssl/util/openssl-format-source":"9933005b6d8a87777cd4290d5b928970d870d73439c69b75b66b4c5965dfdd57","openssl/util/openssl-update-copyright":"a07ca62389f204668d4768a5eaf722e3260fe1d0a46a5174ead31d3a1a102d39","openssl/util/opensslwrap.sh":"761e5ea2463e754ad9f326cbf3571b8c0f1a0002706a24c393354e4f48c444bf","openssl/util/perl/OpenSSL/Glob.pm":"4100606067f0b577d3e6d2d2aaca93d826fb66105639eb94ff76c70ae8c526c9","openssl/util/perl/OpenSSL/Test.pm":"7731f2f84da59f641039b82bcfaca312a0ed23eea5e7ae2b748ed188bd26b0ed","openssl/util/perl/OpenSSL/Test/Simple.pm":"20f978dce212a8631ce0e6b133e26d55ff3043b84a4b2cd19ba45f3da306b1cb","openssl/util/perl/OpenSSL/Test/Utils.pm":"1e31fa3ea00ff98b3457a3ad98af046f33549bd2466da29bdb00f0d5516aaf87","openssl/util/perl/OpenSSL/Util/Pod.pm":"78c4cfdc2141d24e28e5972003d8a3c437d2d47e049a47bd2f63217da261168d","openssl/util/perl/TLSProxy/Alert.pm":"23a9d02adf3f04d93b5357952a823487f4e6bf6685e655f9f640f1b588f89e79","openssl/util/perl/TLSProxy/Certificate.pm":"bba9c1ecdc254560be9fd55ff2aa576dde3e52a4482668516eb899b448e5b222","openssl/util/perl/TLSProxy/CertificateRequest.pm":"c893eddba002f097a2c48743795842b6c7fe663d4196a8066aabbb452e7d0214","openssl/util/perl/TLSProxy/CertificateVerify.pm":"97c5e987444f7e368cbcd774f0fe71597e852b0c081b3318c1c51ae6c74d5ea9","openssl/util/perl/TLSProxy/ClientHello.pm":"3a135c1f736b85d964ba9b9b011f8216cc65563d258e60c0c163b99d2e032e2f","openssl/util/perl/TLSProxy/EncryptedExtensions.pm":"ce1b5f1a43a33d80bbc726011e5c5f8973ac3cc7b07708a8af47ca9ac1e1a371","openssl/util/perl/TLSProxy/Message.pm":"a1df25e8a4233b7cc61bec81ae9bcda03f2ab4e631241bf30574e1c011ee036d","openssl/util/perl/TLSProxy/NewSessionTicket.pm":"6630a0f249c0a5a429be1fb690b0d1d36d6363d39aa7607f799d6dced0cbe9d1","openssl/util/perl/TLSProxy/Proxy.pm":"ca621a4ba020cdfb2d2fc2e7911c08a770f967f55855b7f38eeec3c4c158a688","openssl/util/perl/TLSProxy/Record.pm":"a878d1b039efb4a2f3c2868d20e568170816c4bdb824b56c822ca6cbe6e26428","openssl/util/perl/TLSProxy/ServerHello.pm":"ece612e81f27fce4b8106f82829f224f6b384d3d99eb21770b81e6daaf959d33","openssl/util/perl/TLSProxy/ServerKeyExchange.pm":"48754f76d9ff1be6a4c0f6f27b6bf0fc91c5c3594636332870a25c4590267493","openssl/util/perl/checkhandshake.pm":"e625a1c11f358dcb9e2d292ba36ebfa7b14a5494fc1c8020e8a082770dd98aea","openssl/util/perl/with_fallback.pm":"332618a0267a1a5145d82c8e37b663e5bf555d861e3f2851e0f2a25ca2cc90dc","openssl/util/private.num":"019f1bbe90ac30cd9086473360c7cc5885a090419f89cfdbb383c06c9150383f","openssl/util/process_docs.pl":"a731d563140e90c91e07132183f7c41b3c5b9ce12460880b14ffa3d738f72d98","openssl/util/shlib_wrap.sh.in":"517e70558005286dbeb506ce57a416934560a2f2ff27f5bb48d4472ff8c5ca7c","openssl/util/su-filter.pl":"892daa1ba38762cc5cfd94a204618a0abb2a539a821e237946c93e774fd35f47","openssl/util/unlocal_shlib.com.in":"21e064aad7466030be7a452982a21bb50059a9634185d312b18a5d3a5582ee5d","src/lib.rs":"40cd1069246b552b04fcdfd13eb77b3a89194192f18c426b77377a78abbfd72f"},"package":"8f31f0d509d1c1ae9cada2f9539ff8f37933831fd5098879e482aa687d659853"} +\ No newline at end of file ++{"files":{"Cargo.toml":"52ef8d9353e9d1455c45b72fda1535e10238796069624029b30a63edaeb7705a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"8fa9e96fb0dc9e278a03285b69784c2904de6fe5ccdb6fb70ba33791bf6bdb5e","ci/docker/aarch64-linux-android/Dockerfile":"b6321433a0886f2e6d9c489fd042137b4da9ce4012d49bea108e9c4fa9064b3e","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"c908701526553756579599caf68f86dfe1f7725ad846cee895eb887a569a7035","ci/docker/arm-linux-androideabi/Dockerfile":"10be394a6196a7904fc04e5b6fac6affd67564897476f9a8c3f4baf827a099b1","ci/docker/arm-unknown-linux-gnueabi/Dockerfile":"ecfe5fef865611dc68bcbbfcb89bdf09dd87599985954f05fd2fff772b816e51","ci/docker/asmjs-unknown-emscripten/Dockerfile":"621d535e7705e1d9d3db5c7d68f7e86fddb849f408efd5a46dd21c1bf3e68f75","ci/docker/i686-linux-android/Dockerfile":"e3aa316c6af0a4559803518cef6bd2c1d90677f9d5d964140266f58369535165","ci/docker/i686-unknown-linux-gnu/Dockerfile":"4e79d9cd661a89b9bba7c2a0cafc51e48fe6ca48da421fa10aeacf600d739d54","ci/docker/x86_64-linux-android/Dockerfile":"bdcaea60bd2151441064a5ace526975aa361d80016e736f9e068d7b479cba9ce","ci/docker/x86_64-pc-windows-gnu/Dockerfile":"54dd42ea91e2adcd98d534abac81c42a0ec7ac40ef1d9d7fb86e33c93bdca23a","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"deaceeb36695cabb94d4078b7008847d68c257f7cb789b634e1c879c557866c4","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"f2d5a414b194a0b2fcf622781c666065a1112296896b82e0f268191d18cb1ab4","ci/run-docker.sh":"d25dbe04ee974cf8a3aad9bc0647e5e152854f8a4af66f59187c63c70795d01a","ci/run.sh":"5e8b2c947650c9dff40cb2fa212c833a9c2e86e760c100d9c60c899372c8b022","openssl/ACKNOWLEDGEMENTS":"e1118418fb157664605bcafd07c25befa2ebe52d001a16f63e2f487c8db79d02","openssl/AUTHORS":"698c66ee18f50ee7daf36e9a4566f9fecbaea4a5c6de94a42f66eb489adc83d8","openssl/CHANGES":"a1f4b47e8ea8a66650c0d677ceb81c99cde6f23a55b509d0bf65edb6aa12f51b","openssl/CONTRIBUTING":"1fa1178c49210ec027657c8363b5c807e2bc6b40e136b462a6c21ceb45fc43af","openssl/Configurations/00-base-templates.conf":"8a59b4d78963965f01d3abfae92aa76a375515e9115033f2457088e1472b4fed","openssl/Configurations/10-main.conf":"090744f85cf99a9b8412c23fca1eabb61eb45d830f0f9f0e7309be2572c1e827","openssl/Configurations/15-android.conf":"aa261a39414c1e9884e7e81962642310e57a556511696e42eb0cbe02374fafb0","openssl/Configurations/15-ios.conf":"26ad7be0c3826195eddf9c19d3d385fa3dfd90869bb3f46fd452cddefd324ad7","openssl/Configurations/50-djgpp.conf":"a1ce6facf2a76952f9924a2c0e671b750d6822f1b43cf9ddc0f4859eb3fd3435","openssl/Configurations/50-haiku.conf":"a91ffac31fa2fbac0c4ac04cea16d48c5c34129e94bd008eacf2e3ddde3dbe96","openssl/Configurations/50-masm.conf":"45e544fc21dc1ef1945beb8090251f1827ee5a6cad56e4c23d6fd4721205314c","openssl/Configurations/50-win-onecore.conf":"2e2f626d9d60beb243f2cb7aa62161d1cb830aae58cf8e50dccc6ed5efe4008b","openssl/Configurations/90-team.norelease.conf":"c2be1594850a887b2f4d4578c66ce4aaf20ea36ba702b32b2a0a09dee301137e","openssl/Configurations/INTERNALS.Configure":"3d54a61916deb1f715d24df0e10184d6f1ad557bc7addae9e8747e33ae7fa58d","openssl/Configurations/README":"0f61201ab182fc25b22c29cd8322bcb3627c0c15bc2ab009b4456ced19d72ea0","openssl/Configurations/README.design":"74dbfdf425cc4306bc450bbdb8db0143d944627e8044517de1ab5d5e618ae123","openssl/Configurations/common.tmpl":"efb432110f945075caa4dbc8471f903d333a303348bf4b8bf8072fc17208ec23","openssl/Configurations/common0.tmpl":"aa5afd98d4cad920099be90dd991884c21b3f4598bffd2e22c8552872cc5fc88","openssl/Configurations/descrip.mms.tmpl":"ac8534b9b44abecb7c413682c90bdcf2fa8cafc0577634bbb7beecd83f0dbf78","openssl/Configurations/shared-info.pl":"8c9d8a35b536650aec08e192cebddd077dd93f1a2ba8e8e39173649991381b92","openssl/Configurations/unix-Makefile.tmpl":"bd8641183cab699da64ea22d5d41025499ca9c8a69dc4d9da73446e36004ab46","openssl/Configurations/unix-checker.pm":"86716919b8ed8989dbec32b425161ef9950b809c3fe019e426051885e1489776","openssl/Configurations/windows-checker.pm":"59edc790aa4120df7c2aa3214e1f51b0a044190614ba653df2255be286359366","openssl/Configurations/windows-makefile.tmpl":"eedf0a0c8c4f83744f0f73d302f0972e4610ab106338cb3ec4a4c427dd62c394","openssl/Configure":"e2388836a8c5e6d0786963b4f85f3b26f0beb1387a8dbedde09e868865afeb56","openssl/FAQ":"0dcd26c83d90badb57e21b7c8659e2c3919b82c8dcfa058d70f86fa926089c2f","openssl/INSTALL":"dceae9bed597d526a126f95507263563800777f6a1ce218cd0d1b5aaeed8a6d0","openssl/LICENSE":"c32913b33252e71190af2066f08115c69bc9fddadf3bf29296e20c835389841c","openssl/NEWS":"7a4870a30c809265ad6d46fe4eec7564cd0e8233888fe7bc68196cc5f75d24a6","openssl/NOTES.ANDROID":"7b6ea508f8ed8a9acf9b7f2097ed11d98d8f9a162a01ebb0025177441f117bc4","openssl/NOTES.DJGPP":"681eb2565ba66d185f0d7b23538acebacf959d8c23113f3729f567773c4d04e8","openssl/NOTES.PERL":"d191543a4f97ab7df62f25e75138802bf85a31e082d64773da3a50188c493ec7","openssl/NOTES.UNIX":"e1d727530000565d3cd37da881a984b565c67cc9e39a908e77e83532d9a21d9c","openssl/NOTES.VMS":"4b21ff74ab5ed75750657024c8159777e9f64e193b563d07ab9562ba14920edc","openssl/NOTES.WIN":"d63cc8b622130bc05eb6b7dfc0688e70c90da1bb15bd6504081e113a9446fa6f","openssl/README":"1e2db0324394dbd166596036e7fe4583af834030f96343839baa241c63c5176b","openssl/README.ENGINE":"666adc424b9c8429d49496dd6fd45878c91b56347e139b77978fb60253415547","openssl/README.FIPS":"21d77b48ddf9547ec20de4ee43414f040c08174eb65526bfe46ffe2d4165ea67","openssl/VMS/VMSify-conf.pl":"e7ba8104be58dceea15342d25ef0b3342baa7de9734b67f63f99823cf0f052c3","openssl/VMS/engine.opt":"9622da581af6dd9b906b7d0b0c92c48f50f22632383a08bb335103d0ab86cf2a","openssl/VMS/msg_install.com":"a5e52680fe34a8d8df9968f4270c01be265f768be4eccc3d8086f2e56bfa2cce","openssl/VMS/msg_staging.com":"6a58ac395b7d1bff16c2967b501cd41d296b9e355f2532a1518a8a242bd2a739","openssl/VMS/openssl_ivp.com.in":"fdfccaef699539dc9a772d86ff4457152e874ff0720fde689eff09a3b346b1b2","openssl/VMS/openssl_shutdown.com.in":"934c50cc721507b7fcae17835c0c57f82c55e1ea9914df55ca3e72904cdb64c8","openssl/VMS/openssl_startup.com.in":"d042019383229968fffbcf4e01c190278e7a2479b739d425fe9d770f2ad1312b","openssl/VMS/openssl_utils.com.in":"bf882d08efbe25f8ae46c6fe045a9c9d69790cb5443c8e14d812a8c834ed1e66","openssl/VMS/test-includes.com":"162c56165429a073fa397eda227eae83d575cfcf0b17b6ff7c4e0d900499fa1d","openssl/VMS/translatesyms.pl":"bf9dd82f9487d8b1350e2a330dd125712c2ee1d3390da1b2286fbda3eee5f68f","openssl/apps/CA.pl.in":"880374dbd8e2ad686d48673e8b4d319b2f6e0312d05aaa8018cc0e7862032284","openssl/apps/app_rand.c":"6e52d715808e3ee8d33be50afe2f4a7dcafeefa9754cd9735f722cc61c2c39f2","openssl/apps/apps.c":"814b65f7b017469c50271c7b8034859f427062c047432fa72250fd48a66b142d","openssl/apps/apps.h":"b37940a6f86f7946440bae7b726b79f420c49411f1c0943bf3ba6773a9583de6","openssl/apps/asn1pars.c":"073ca2401664a7157844f6bf73aa85464d359e2134bd56e6b617f3fbcaa37381","openssl/apps/bf_prefix.c":"9ee399824e7f33eae606788ad777af357e307e4b241ea38b4e53dc2b7c8cb0c8","openssl/apps/build.info":"c6e41aa4d47403adc5f3c1382da77052a4e168f423523265be870cabf82cb825","openssl/apps/ca-cert.srl":"8460deb84917c63e1fdb019b02d4332ceaad0821edc248abb69a26fdaf2bb0d8","openssl/apps/ca-key.pem":"3490491a6a38d202a29ba250f717b8e3065eb1ee3e16d9e5e9171d3f8f2bf8b5","openssl/apps/ca-req.pem":"a1d0a69a7260d27a140a311a1f9a6e7364859a007f7a18bbd9681ccaa2c55121","openssl/apps/ca.c":"774e663269a9d12a4668d3c096889b4dfe429f231474f184227c1352f0ffdaab","openssl/apps/cert.pem":"a4c9b015f67947c38833fa9b2c0a07d4ee4136955ffa3a28a1e34be048f9b957","openssl/apps/ciphers.c":"c93fcabfc263fc75aad7480007febf3d15c0f792c8e4250983f9d365c8d17f28","openssl/apps/client.pem":"5517423efa9a5cd7ede4604399d1572f271260d2b7214ac4218f499387b18c99","openssl/apps/cms.c":"28bf084e6afdb4efdb5f0af4131b4ac4d207f820cdd5842d28ebb3e05578ad67","openssl/apps/crl.c":"9befa634297700f6001ad1c7eca0d63bb8b1dbfae7bb1ab72bfa53336192832c","openssl/apps/crl2p7.c":"5b0d811d112cd89dfcdf4576ae7b7fe4bd2d6cfab1dac98af25ccd5c32f2ad17","openssl/apps/ct_log_list.cnf":"f1c1803d13d1d0b755b13b23c28bd4e20e07baf9f2b744c9337ba5866aa0ec3b","openssl/apps/demoSRP/srp_verifier.txt":"90eeadfb310fe0dc8e4bae1cc30b202a4ec098ff0dc8d0370a5fa37508ec581f","openssl/apps/demoSRP/srp_verifier.txt.attr":"f185cb1322492dbcb4c2e4dd179bd3c09958fd39287dad4308e2fbd3c569f669","openssl/apps/dgst.c":"607e6fe0e018f8bc40d99ab1e9c9ccc7bf44d91812e16900ca1e7ff4fda8b3a0","openssl/apps/dh1024.pem":"e819c122a1c2834f9f9583b84d40e658bac62c7618560582532a3967e0ee70ea","openssl/apps/dh2048.pem":"accf8e94315c6045756bbbb3d7505993ed9410b93c071fd1f238798f2ad8e10b","openssl/apps/dh4096.pem":"d50f4c0d4339585076895105fe66219cc16d2fb3c8486c4a4b65d954a00412e0","openssl/apps/dhparam.c":"36291335870f26519025cda1c8dbb2fcbb64c35d8a5c0b78d1be16d22e7a0fae","openssl/apps/dsa-ca.pem":"840ab42f5a6754f9ddd6df488410a689e6c10ed37059a9f3ea2f7199458aab15","openssl/apps/dsa-pca.pem":"6551544012b1e3c4c58f0b64200b75f03b2a39eb69681872f41e6793b0d524be","openssl/apps/dsa.c":"e9a10e820f46b35e6d44a5001de482b5a4b7bc64f5c7a47e9e86a0073170ffa3","openssl/apps/dsa1024.pem":"cd2bd5801e45e07d0df2e28d15fc30f13ad473ebd614abcf0bb81f6e508b26bf","openssl/apps/dsa512.pem":"b2abd5916a1a7206e5daff2b73e5faf884c6ec5e53393c08e555887c8ab6f4f2","openssl/apps/dsap.pem":"6cd4f9c195a56c4cd0d801050b4fd2404a72a98d0ed1f5b18cb17ec167cc4f84","openssl/apps/dsaparam.c":"ee7664f99f0ae89302efa47ba098e3254bf2f369c019c31286a6e571a9f470e2","openssl/apps/ec.c":"7fedf07458619ea8d48d203999ee145d5d8a9ce0fa5a490c89d7b3092dfc3e89","openssl/apps/ecparam.c":"f8b3c5c1e461077330e7f5f08973e7fe6a84442dc8c2cd1c67ecd54940e2fbb2","openssl/apps/enc.c":"3bcad7e671df042c2a32de212aed1a29179738bd11cbfd706be6ddc580057500","openssl/apps/engine.c":"445f3491a326e49dfb908fa661cdae908fe950875585947c8b485065d7192fd2","openssl/apps/errstr.c":"53188956eda5015bfedae11762c22857ed781e7ad535472e762d564884de9a69","openssl/apps/gendsa.c":"2b06541a2770ce29ea524741cce83f907bdd4dd6421a2a537ab8937186b374ce","openssl/apps/genpkey.c":"4ec4c0b42debd510133cfdb3f558289c56d58318686b727dfceff2028b1e9f3d","openssl/apps/genrsa.c":"4e083685f5e9bcae19042f8c2d5e597a59b2908090792a95011669c2c69e16d2","openssl/apps/nseq.c":"9340adf4468cdee2ec2c7b32a5bce64291ef675c3e2d34907f8e511af612d04e","openssl/apps/ocsp.c":"4fb914195063a2be77b8949a4578fcb4b68dedce9c83f3f45ded58bf3cd171d2","openssl/apps/openssl-vms.cnf":"a280743343019485f6d9dddbc7e341b5d7a7ecc51f8d97c0842c795b7ef3204d","openssl/apps/openssl.c":"138db506da3374a28608cbd2b4d4c378f613757063f407d2abebdec0ee2f62ea","openssl/apps/openssl.cnf":"f10ba64917b4458fafc1e078c2eb9e6a7602e68fc98c2e9e6df5e1636ae27d6b","openssl/apps/opt.c":"d16922f4d94d39726eafa62ace1a67ee7f10c6d4a7b47e3b872779e25c6fa090","openssl/apps/passwd.c":"733371637089ffe8694e8df92175303146e9cac5f3e17ab0913585b0d102bee8","openssl/apps/pca-cert.srl":"8460deb84917c63e1fdb019b02d4332ceaad0821edc248abb69a26fdaf2bb0d8","openssl/apps/pca-key.pem":"6eba0a092a01ee003a4bf101491de540e4ee03b94075578a67084292581f0430","openssl/apps/pca-req.pem":"f043270a1483e035369e9aa6e7c3ee570f75e443b3a18a0198aed6c5b1f7b0bc","openssl/apps/pkcs12.c":"9f157db41a676ba5393739d3eb89d2e4678ef69c50b6fd541a8522552dfad7c8","openssl/apps/pkcs7.c":"dd8b6b134c82564796d819845abbbb52ee1cbc9b8545e1adc1b49fe8f38b4e98","openssl/apps/pkcs8.c":"856e5911266e6d6c733ccc650400249c3c2b2a684f85aa2375e3c4a7a794d3d0","openssl/apps/pkey.c":"667cb21e1cd7ab16c259b69872c04d694ec442aa74f3c6affa2342dfa4ba67c7","openssl/apps/pkeyparam.c":"01dc6f1fda2af529b7b94acdbe982a5b66586de37b2968e2b569afbbb2f10ca7","openssl/apps/pkeyutl.c":"83771b82d508a341fa34ce67756ffcb1dfd8dffd384c01a4370474f725c59150","openssl/apps/prime.c":"f78a49e29cd624bb4b3e822e7fa904315779b5210ea22317fba2dec552b7b86b","openssl/apps/privkey.pem":"64795d8b4aac68c76ba833da4cfb54e739b7a90161ab3866d441ae0205da6fa9","openssl/apps/progs.pl":"031f57b38fe763c34bd35844d1655e10fb4b0a0a9ee629d2471adf041aaa2b71","openssl/apps/rand.c":"a5789f9f5a69fa1e4e8824c5aa7fc776f1e30b0e581ec371536096fbd9e0fd84","openssl/apps/rehash.c":"54f03091b739cf4a33b6692c442171c7d6a30ec6fc245d7175c9ebd81b508732","openssl/apps/req.c":"487a8015a6230dda2b4cf774365bf27c83109a960425365e6b9aa614ab2dff08","openssl/apps/req.pem":"7e5054bc53334b6723ae688236f94aca50b8a8b87eae44bffb04aa3f971a4d4b","openssl/apps/rsa.c":"8c13dac2a4b2073c63924099695aa0c57cebddf0bd50e4ea4a7d210c61c2f02e","openssl/apps/rsa8192.pem":"24f69b9f93919a7cc85159762f269b3b3a7e807dec24ebf90ccf166e1d63fe6b","openssl/apps/rsautl.c":"c3689f04ed09e06baa5d83a740211479bb2b40f189a81b81f827146ec5385c9d","openssl/apps/s1024key.pem":"dd647f2b3d59c7450bd0693d215355ce93919b0462f4f57c35e4ce292e671a61","openssl/apps/s1024req.pem":"b6475a60576911f5dc510e2dd4aa63e6de82827dd74baf95dbc547a499a8328a","openssl/apps/s512-key.pem":"eabd97ef4ae742dc493633e69d55c477561662ca63a9d914da1cce76d70f562a","openssl/apps/s512-req.pem":"492a3d866747d7495b8966d28641d327116f1f84e965177c213bbf9add182163","openssl/apps/s_apps.h":"f3d2232dcebb504861a59335c1c657ea4a5273b03a68a13ae20e561046ce8c85","openssl/apps/s_cb.c":"116f94ab2abd5b72fd73d152c8fa5c239b0d7311018f0e4df79bad08303c323d","openssl/apps/s_client.c":"1a8e778ef38088b7b2129f99a616af6f0261a91b0a530813a193f7522dd730f3","openssl/apps/s_server.c":"8db7015b975c6a40d8f8aa55d58831f9d72e98da3c35a6fbb11567c38ecff633","openssl/apps/s_socket.c":"50215c9171861d7ac44d1134f48875011472c8c7b45617055e0839006346ae79","openssl/apps/s_time.c":"b97a09c3aabdfe956b629e340786893947f6edda9f62a3aa6d01696b71df822d","openssl/apps/server.pem":"ffdc8d77eb82b815de5235d93d1b733bf7a6934a8276862cd3b0d842b7dcc53d","openssl/apps/server.srl":"43fd56f56bb9bb18bc9c33966325732b2d7e58bfe2504a2c5c164b071c1b8653","openssl/apps/server2.pem":"315a1d925c484b57b5f6b154318c241f49803a627d5dd97a1add7eb5759a16fd","openssl/apps/sess_id.c":"e83c514dce778a4a0571a3aa4be4092332555d18e67bf4886b1214217e017d27","openssl/apps/smime.c":"54d4d7fcea506c7851d4fb490b2159de50fa20a53fd5ec7076102198dcb6dbe6","openssl/apps/speed.c":"1b5e280cb7c0f4b84f68e90854d3b81ca56ac5457acb5d361242d874e4cb0d84","openssl/apps/spkac.c":"76800611dc1e50ae3df5cbcab236a7fd13fddaaec8aa1b8afe58baa519a8e603","openssl/apps/srp.c":"e0c02d90859698a4dec9db38604bf028256a5a25eff8bb9878f447bb6feb8b03","openssl/apps/storeutl.c":"87e65d12dfeaac45a122234d6f692995acbd327ec6df63afe16b9cd0179c6f60","openssl/apps/testCA.pem":"e75c583a194e000b9cae10e3f4224cf305c8be9ba057e3c86192ac008f57fad3","openssl/apps/testdsa.h":"67ec5ef1f45a7e41083ed72548336608893656c379ff01e0b4f42565022c2bf3","openssl/apps/testrsa.h":"bd13d6a56f990a4515241402dc0c9720d47a42b737d4041bdd042a4bc86d2544","openssl/apps/timeouts.h":"33d3a52e11dbe263072a7646cd75fac70252e32dcb997384c9ca1b7b5fb171da","openssl/apps/ts.c":"16b807fd495b19b69ce2da8abef1e8fda99362555db14a2d077801c866dd4c4d","openssl/apps/tsget.in":"8a3fa8dd19db4e6d13fad28438206d765b72fc804201f61e081abd1963792970","openssl/apps/verify.c":"b9eb9429828fc89fe0b3603ee709b6d09d5846c0258bc2eccb5b814ba6e079ec","openssl/apps/version.c":"ac399bc15e845495698e66c9cac09f5ca8f282d82cebffa59fdd9517380a50b0","openssl/apps/vms_decc_argv.c":"188d986cbc8fff8009a113d654465c84fb3631ab4603fb843cc9fc92226db9a5","openssl/apps/vms_decc_init.c":"a997202e7a217e3748afa9a00eaeafc07b7739026fb2787c4775994472ab9ead","openssl/apps/vms_term_sock.c":"bfd258937ee18b21ecb57b3bcd88f18458c3e5960f83854b2a448e96c97084d0","openssl/apps/vms_term_sock.h":"ce3ad480013244ed87fba126098fb730ee807965b97c7b592936e4005c2fd699","openssl/apps/win32_init.c":"f2494d72e25318eae3d57523e3aeace7458187349f92e8287be39ac5fca2b6db","openssl/apps/x509.c":"b4e23928ce3ea86de05d2751a681c181d3eb7cd1638af16fc025c0c8716e8196","openssl/appveyor.yml":"d71020aed505f851228ae8d5661d8587c17f3e8967e4d38612c8521da522cb7b","openssl/build.info":"1fafb451a7cfabd49372a2485f99acf6a5aefbf1872464a309c9bc79ee1afb31","openssl/config":"a044feed68cbadc64e995f3b2e6847b7a1a1c706b4522b9b23911dc9a313b4c7","openssl/config.com":"9070ebab2d5ebab6428a46673195e6bb9f043b0e9b394f71588c1ad17c9632b7","openssl/crypto/LPdir_nyi.c":"f638ff3001e5dc7ddbb230c288d47737e2d9f85226ea046a604a4259bad07cb0","openssl/crypto/LPdir_unix.c":"320356ac25a50f915697bd9cecab43fad7912420ab1551449422972c878aef7c","openssl/crypto/LPdir_vms.c":"adc0cd123d9c0ddba011876b4d5e0c3665a769cecccd1a5d6c5049ac8030fe93","openssl/crypto/LPdir_win.c":"63087d5abfbe1d49f5076f92ad2f5a5d58cd9f4af6cd21b29514c0326df367f4","openssl/crypto/LPdir_win32.c":"775d02591831f77ffee41beafd0388854e10742af0f27bb94ac2ab7a9597c51b","openssl/crypto/LPdir_wince.c":"2e6a13af735a9b7fb4dafebfce3cb4781b8bd0593b422b49639a756ac49e0a88","openssl/crypto/aes/aes_cbc.c":"34a4fe01fc7363e17a546ad762c0eacf9f3e2e54075f58a5e64a9a904f3a1c64","openssl/crypto/aes/aes_cfb.c":"53d9d10074bf4ac5463a288bb7278a7f8f21dc1143b7ee516afc3e217de20c1d","openssl/crypto/aes/aes_core.c":"30e5c42410e2cd816b35a5f823018ecb265a2da3c2bdd2aad1cdb226ea85a2c3","openssl/crypto/aes/aes_ecb.c":"d686330d81e81903043b0aae0bb5c42ded90c5d36930e93b7fafb1122b3a3a97","openssl/crypto/aes/aes_ige.c":"60ef606508f1e5cfb0bbf7829ea9a5122d6465f10511c0279bf378a3a821044f","openssl/crypto/aes/aes_local.h":"c03a0617d75a234e86f92c57548b630db2182c5ac5a1f42b8d2b7f654bba09c5","openssl/crypto/aes/aes_misc.c":"7662c30dbfa5d6944f0b346694d602a2a80c44ca3db7fd0ff1c0bb3ea3098e84","openssl/crypto/aes/aes_ofb.c":"67531b43a689fbfe5899b745d8f7016e254df0fafedee64af780b55c970274dd","openssl/crypto/aes/aes_wrap.c":"251791087036c02ed6e716dd4188b8b5937365c6c46a03fce55c92936446e9e7","openssl/crypto/aes/aes_x86core.c":"16127de408d69734af652c0fb3762d0a9a22aa0924caaad3e7720d9a4d5c016e","openssl/crypto/aes/asm/aes-armv4.pl":"2643bc76707494fba19c61da6718e595856833cf2e072302124b0dc5adb34760","openssl/crypto/aes/asm/aes-c64xplus.pl":"a9d46af40d5bf7fb09431bc61324dd61d8c502e0621c78118812f854a27dd9c1","openssl/crypto/aes/asm/aes-ia64.S":"3670f1c9503450b3d870b4b7a1f3d7fd09fa33faca0369f994b232b8a0331e81","openssl/crypto/aes/asm/aes-mips.pl":"281ee9e887ac017fe4ab300d062809770eb2c52e1d4a5d9c389c50eb895b8190","openssl/crypto/aes/asm/aes-parisc.pl":"f4cc48b0906233377375a3c839062823dcba4f6a42f319f99f51a1fc7ab10267","openssl/crypto/aes/asm/aes-ppc.pl":"e1f93284e66ab614689f080680fbe952865b862403c7c19c76cbfd3b422a8a3d","openssl/crypto/aes/asm/aes-s390x.pl":"f14c90947cb3f662ffde6c91190b3e28885d5a9bf78fa7e2102ee957e0b1501c","openssl/crypto/aes/asm/aes-sparcv9.pl":"854bee89601f5d1ea6e98cc67cc5f41b720ee025cb05888c6ae1d77fc9da3815","openssl/crypto/aes/asm/aesfx-sparcv9.pl":"b78394799c0e2b3f096394bdf4d3ea9f5678df0d06e0892456273f8d5c2c461a","openssl/crypto/aes/asm/aesni-mb-x86_64.pl":"5beb473ae072df0354243718780fa455621b2221e03fa9c921854a4d180577da","openssl/crypto/aes/asm/aesni-sha1-x86_64.pl":"fbda8b5f3b613f900269d372d91a490f01603dd6a32e417c9212560371002e8c","openssl/crypto/aes/asm/aesni-sha256-x86_64.pl":"f248cd0070544d1a3388247ccfc883b83d9bf6d58b40c5550f189e7223738aad","openssl/crypto/aes/asm/aesni-x86.pl":"d30c646002702a771e4da1d8f59acd779ca630fd4fe0f1318f8dc983b0121c70","openssl/crypto/aes/asm/aesni-x86_64.pl":"f9f949a48ae275aa455f90841406f684499475e960b87daecd9eb9a7a84c976b","openssl/crypto/aes/asm/aesp8-ppc.pl":"d33481726a7432f7e4a247e300b5a85ed5e6bc223fa2c9086c1efb2c25a29bcd","openssl/crypto/aes/asm/aest4-sparcv9.pl":"8030bae72b93e9e22812bef09fc3dc0ea95296a9c2bf0d34735ab5696850a982","openssl/crypto/aes/asm/aesv8-armx.pl":"63306475fd12b273e3faec19284dc5ba1263d726bd2e895673f00ac93b09e230","openssl/crypto/aes/asm/bsaes-armv7.pl":"a570a66cf4461ba6df4e6ca9f18f845455c1dd857518c489f15d05fac8b1cc9a","openssl/crypto/aes/asm/vpaes-armv8.pl":"6bc9a6daa838c106f5236911ad4a1de329f16312f2574ff52343a7ce36d24568","openssl/crypto/aes/asm/vpaes-ppc.pl":"590671c7967c261ab7f1055abe5dbfcce7c7897f42288aebe568d4d9c05dd17a","openssl/crypto/aes/asm/vpaes-x86.pl":"bfd3e7df0eb92c1d32225f1ccafc4cc917b352ba1ce7f5915924f36154aab241","openssl/crypto/aes/asm/vpaes-x86_64.pl":"aae1a01b2c793305227e6757dde739116c95c125bfeda6073ffb60c8aaae71b8","openssl/crypto/aes/build.info":"4fd9b60b8eba57c73ec8037325770b682151c84e5c8c74a8f9f87b27791c2fa8","openssl/crypto/alphacpuid.pl":"54de69fd5d7531b3924ce56e4f31d55a44e01293c73511fa5e80152678940ac9","openssl/crypto/aria/aria.c":"da9d631bb6ae5f11e5ae50ea033082568fe8e84e44f023c3ad087bf12b89664d","openssl/crypto/aria/build.info":"506e26da9ed2bd9dd14a25f593e649c5acf25bd5a56e43ccef16ec59614bb2e4","openssl/crypto/arm64cpuid.pl":"6ed88764bb65b5c2dd4382fc66fcdddc8fd23277679044061eefcfbb96df8c5a","openssl/crypto/arm_arch.h":"7e5614435c2fdf780310858ea0ff7cc524b5bbc112e97d9c861cda095fe07380","openssl/crypto/armcap.c":"28c3c5551a20568eada5375c045aaf74faaec2380828f2100c66f4ce7866f2cb","openssl/crypto/armv4cpuid.pl":"655d50afdfe0388c462f364ef77dd9fdacf1e34c4b9b4f6881959f9c16392734","openssl/crypto/asn1/a_bitstr.c":"0455687ebb68d32e633bf31188fc3fbf3d38e085ba0c717d5ccdb4d849b358f9","openssl/crypto/asn1/a_d2i_fp.c":"efc237e569fbe6c3aa4c993ed9b15cafa6eba03cd0c56b19c1eac3f6beb35354","openssl/crypto/asn1/a_digest.c":"602f45ee0c3cb0c0e713e1d62486740819cdbc4c96bd3256c1ad432448c630b8","openssl/crypto/asn1/a_dup.c":"0b089629598a4569585424c34dd3c67e03995f69b6e574a575cf2c9f998a1bda","openssl/crypto/asn1/a_gentm.c":"fb2e06a39014b803425ca75b10ffc34e24ee90953f893025630f026957f1bf4c","openssl/crypto/asn1/a_i2d_fp.c":"5d98da7ae83ec083f447a42d119a2696d853766f646a7eee0bb1408148f27f88","openssl/crypto/asn1/a_int.c":"b05e27052e97f1a4488f98d90b3b94493a36a33dbc3c1054da92c34d14f6b054","openssl/crypto/asn1/a_mbstr.c":"4e0818e467ad59bba8d0a8156219d61deb4d7db0e3d1b3dcec44d297d9a08a17","openssl/crypto/asn1/a_object.c":"1f34806c1e5c5fc5aa747ed2bdd9974117e0d521d383f0de2c3872747a6dcc87","openssl/crypto/asn1/a_octet.c":"6734764389c1ed27857a07f65abd406dcad0a3bcaf48c9b44bc50c435c493a1f","openssl/crypto/asn1/a_print.c":"9b899dc5579c3d593da651dd9f2c1e9b49dbfbedd197829a2910a03fa6e95024","openssl/crypto/asn1/a_sign.c":"90dc997934166ba2cb7895d184d317d0377ab74aee36f34c50c8b5c0c1c828fc","openssl/crypto/asn1/a_strex.c":"d81afd32a412987522b974036c1ce8baacafdb7e771522a7a3a61ac081c2760f","openssl/crypto/asn1/a_strnid.c":"46e07565ebb5adde365f69e5d8497f044ea9fd83f0b22ae8ecf0338f3f70703f","openssl/crypto/asn1/a_time.c":"3a06e13e97ad57f5e79a0205097665e7c474564f89badfbe747ea4084985ee8a","openssl/crypto/asn1/a_type.c":"fdddffdee9d8f64fc70f36469ba9b7b438f6bda52ca544a55c6d2a645497b561","openssl/crypto/asn1/a_utctm.c":"c713c6836eb1ff49be6f64f89b0d59b28f510c4c3f6206e5c450cc46712782bb","openssl/crypto/asn1/a_utf8.c":"55efd2f1103eb15b8199a5fad63f81b7e6dae98278c04556fa651f5155cf1b01","openssl/crypto/asn1/a_verify.c":"412f08f99c52e255855616ccda616e5390691cfc9d8ec8be04b757bf5fb95c73","openssl/crypto/asn1/ameth_lib.c":"15a82ae8a24481f1bfabb91686d79224d2bc4181eae15a914d729dffeb9968cc","openssl/crypto/asn1/asn1_err.c":"f12c5a109f37dea5e052b6a64ee84096de39614262b6696c4109c7f2aab6cd44","openssl/crypto/asn1/asn1_gen.c":"1c9a643ccf3f0a5c896fb232db91ba1cb4fada81ff895f0af848880f3f8ce17c","openssl/crypto/asn1/asn1_item_list.c":"cafc68db3b9f78fc349256799aed0cf046a0adeb34669d5eb5fe537e2d87da52","openssl/crypto/asn1/asn1_item_list.h":"617843466bf00b81d6f2b56696cfbc52edfed754a48b58a7711e951ac9b29ac0","openssl/crypto/asn1/asn1_lib.c":"085f24e3494e74f8ebef8082240ebc9db21d3cfec3bbff600841f573bc924edf","openssl/crypto/asn1/asn1_local.h":"7f0fb7bf0c589edb119b8a2b387deb12a2ae0caa5564ac07314c684a10340ba8","openssl/crypto/asn1/asn1_par.c":"587b96d03fba5f181e2a3bb986f84bbec7f270b802a7096776cac0a7a7b87da5","openssl/crypto/asn1/asn_mime.c":"0b31d4dd4092a64b3196b36c4d8c5cf4c8ee2bc8091b352fefa651ed547e25c0","openssl/crypto/asn1/asn_moid.c":"8794c22a22c285ed5529cb653ae9bc4a532759556b082df62cf3c7c5a980d65c","openssl/crypto/asn1/asn_mstbl.c":"e5636d0b7070096599c81428620efd8da80806c1469adff5bcee9538b3d3eeb2","openssl/crypto/asn1/asn_pack.c":"34c17431a3e1d5f2870a110316083643d7d2f712cacd773a27be10be8fbc8f7e","openssl/crypto/asn1/bio_asn1.c":"b5d6c62028f072ff28c2721c216bfb03554ee4f8f273cb818d3bed165f4fbade","openssl/crypto/asn1/bio_ndef.c":"1523d46a502c0767bcddd4950401f40a300871e6782c302948436ee227851568","openssl/crypto/asn1/build.info":"fa44195e9e9134c468cd6cc4dc319a10b42efdfad2afc0c24c6c09ab03fe6244","openssl/crypto/asn1/charmap.h":"6d9e96b1ab0db007151e9cee71d5c4284cbf6820f668ae70ade18fd3e77b50e2","openssl/crypto/asn1/charmap.pl":"80b16f37f7c211286e0b8d8957339917d5995d3099b96bb5d42e8fec671895e7","openssl/crypto/asn1/d2i_pr.c":"7c2f7f1aefc3a017595034d6bb5a1c47c4928bd08ae061059b62d9c6ea50ee6d","openssl/crypto/asn1/d2i_pu.c":"db03265276649bbff5d13e00833a1d7afe370ecdae6ea3b8636fa66d6bc04d21","openssl/crypto/asn1/evp_asn1.c":"13e62fc5ec5f2389ed73b4c36764df7dfac8f9ca5d6ad4b9af4d5a40ffb3e834","openssl/crypto/asn1/f_int.c":"c31ad783d4102c01e1c356db25703ebad9ecbc4076be03671ebdf0dce77bbfa8","openssl/crypto/asn1/f_string.c":"ca8bcbe18111761b9d7051c28dc8c3a517f12ef09b07f7d18e95b09b1cea8463","openssl/crypto/asn1/i2d_pr.c":"6d5d69947533950f56b2a1ea9914e9a6263c89e3dd6e0bc580fac91c144a4418","openssl/crypto/asn1/i2d_pu.c":"6a4dea59d8f2a292a2e56d9d0dd7c1e5face5611b8cd464acd482f352bcbf7e8","openssl/crypto/asn1/n_pkey.c":"7a806728ae2fc2ac07c6403da406cfa1939dacca640bb44a265b5b3ba40bbb97","openssl/crypto/asn1/nsseq.c":"9d12f391ef3a96d4c49263876834fd3e55953ad182b8a50af67b9985fd0ae69c","openssl/crypto/asn1/p5_pbe.c":"b5bf15dc48ba22546910fbc45b8deb4f16f702b2079001d8bfab52e796586370","openssl/crypto/asn1/p5_pbev2.c":"75db91088cf53ef8ecf16096a273263dc1b8f1b305d34642fee9a3375eda264f","openssl/crypto/asn1/p5_scrypt.c":"2ee170bcd3a3f74020359645c556e148c2bdee58cf8eb5aa9e3d16549a236991","openssl/crypto/asn1/p8_pkey.c":"3a6bd5462179c020db34cb3856a351ca72cdb2c67aaaaa4b93490a4b5fc4f2ff","openssl/crypto/asn1/standard_methods.h":"b24ba0bd23ff748cc8198a20061b4ed786bd23b726b8863b0a9aab43ce4940dd","openssl/crypto/asn1/t_bitst.c":"3e3d70f8b000bae8d22df59d06d618636c4475bc74c5cf6496222ee362df2d87","openssl/crypto/asn1/t_pkey.c":"3c0b19d47d16ee69fd4cf9e254f18942ec60738153d777af58cc92dc36f85b1f","openssl/crypto/asn1/t_spki.c":"fa1ff7cc324e77da57523a31d43f4ee4bdd283233197a07d49b98167318f1075","openssl/crypto/asn1/tasn_dec.c":"d6ee6e8d5088d41e7c57b4b2ee722fc4887f0f303ba818b4068a8df4f95f2cbd","openssl/crypto/asn1/tasn_enc.c":"9923263ae81335b0185aa75529c75a328a7ce23205f79e2e6e2ab4d5ad14a31f","openssl/crypto/asn1/tasn_fre.c":"180a6caf40524dba99f5c59c5aa027111c5b4e2bd36f9f4023532d87ce9d0572","openssl/crypto/asn1/tasn_new.c":"a68ca3d8fb25b7d738ad0fe3e0fe89d04b666e8bda27205c0a29391ad236f06b","openssl/crypto/asn1/tasn_prn.c":"87104fe0b0cb61b15b29ed9ff0a87ee0322a7d8afb96fb5814947778736e49b9","openssl/crypto/asn1/tasn_scn.c":"bfee8c5ce3596ca8424d86d79d6629b9a10ec5e638f01a3a41190f6a997a0cfa","openssl/crypto/asn1/tasn_typ.c":"1b2ef7de83c4cdd6814a7ff51b7887ec0fbdaa491239fcb53ae099809ed93950","openssl/crypto/asn1/tasn_utl.c":"555ebc1deccb5fb32b8fabebc9dd5f7ec8c08ccddf55089f125313ffb86302be","openssl/crypto/asn1/tbl_standard.h":"d218819087369d116e0cb1a09a1d18d62e3b8d81f1097f51bda64d4d2632276d","openssl/crypto/asn1/x_algor.c":"6251fd9cde962a870fb99ad9efec2e92056bcae56f11b6a006099b58dddfbc1b","openssl/crypto/asn1/x_bignum.c":"86cf198543ed64b9aab374c68a9e6126621ea822f36be6e799d98b429703dfcb","openssl/crypto/asn1/x_info.c":"0c7b475e7ff24be19a93799988a8285a4fcff54948dcdcad56d5d15832697d2b","openssl/crypto/asn1/x_int64.c":"e07b3a84a97486aeb8cabe2fce3f310cc26dd4ed0f253d8bfbfea34829ae8671","openssl/crypto/asn1/x_long.c":"b7196b0ad11e30e2c3eb2b3fc87ecd7ee23e70337a561a1b004b8d8310696270","openssl/crypto/asn1/x_pkey.c":"dd38a57de88a305d3d91b67c2546a1dbdd19626242f4c2aca7589a5c43ca4d5b","openssl/crypto/asn1/x_sig.c":"3ad785d142245924ece45b57287508a337f4e6a17ff0171b8dcc29fdfe9987d2","openssl/crypto/asn1/x_spki.c":"9f360d8664aca7e8df445bb14e67aef5b8c6ebf96902d0d17f434de2760dd045","openssl/crypto/asn1/x_val.c":"16cf6f2ec27d2b0a6e5670f507a2e9838f449ba354b4ef8c3d3870624c78e000","openssl/crypto/async/arch/async_null.c":"fda3f2108e56457e67e90672cee85a88ed3be9c0ae8c48be3c311d3af4b1cb4f","openssl/crypto/async/arch/async_null.h":"b1584fbd40feaad7cdbcaa0f37634f6a3bb6151c8d3a1ea775407d2492bffbf1","openssl/crypto/async/arch/async_posix.c":"0559b3649322a5ca8a8327a5697d3a760b6cfe4ab583e04e77e405d1291becbe","openssl/crypto/async/arch/async_posix.h":"aa3c2f8b400c9c5055473dec40dd70397be774875b45b877de628b626269c625","openssl/crypto/async/arch/async_win.c":"f6e1c968ee12455407d45a98d797a20bb670ef54206101e8322b8b129bc0bca2","openssl/crypto/async/arch/async_win.h":"e44cf8ed835324cfca32677619cc086cab40464a556ed6877b16a48d64ccc314","openssl/crypto/async/async.c":"81ae3029a88776ae82430d2e62d8fd2cbd37ee882e6e454fc6e44b043462905f","openssl/crypto/async/async_err.c":"9dc8db44323ac3875af45c9e252c07b57e9414153eef799227cb62e3bf275817","openssl/crypto/async/async_local.h":"c1de46865fa89e0e3b091c2d0d1e636277e7a17b767a0bf832e9a6d4467de6a1","openssl/crypto/async/async_wait.c":"31a751120c1e124e15e5443d4f241d020136475c50224019fc6f17941e3f23be","openssl/crypto/async/build.info":"0f207664fd179f0da32133b314a3a12d882ca0767bd933223987e512f38b6559","openssl/crypto/bf/asm/bf-586.pl":"e2a70151810a9c072f339fb79a547d40518c9ad291b4b861bfe150accdbb9736","openssl/crypto/bf/bf_cfb64.c":"65bc70248cb9873a57035726be7c4daab7088edf3e0444f20ff3edeaa0bd00e7","openssl/crypto/bf/bf_ecb.c":"bb667d96213ce99df938ff6faf05fd6c8d8de41377e0138718bbe154e35402b3","openssl/crypto/bf/bf_enc.c":"007d64c1c42ab76f752dce1bce9e4d76a1d9b502b5ac38ab2ffd11a3bbfab872","openssl/crypto/bf/bf_local.h":"d5caa7b411eddd3325b5e44ee6aa98f7fb0aaae90afb266b95ff82ddc8dc6ce8","openssl/crypto/bf/bf_ofb64.c":"5fec279245aea9091befe01784509c0811bba300f4f4ae831c5b10d2c245de2b","openssl/crypto/bf/bf_pi.h":"9100be951fae338f952bcd373fdae299db340004a560d4a8e2522d94d126937b","openssl/crypto/bf/bf_skey.c":"5abf32cd325f89702f542ef125b837e94182478b4e88fc8dc9ba959670494304","openssl/crypto/bf/build.info":"18fc244655787eba13a938e63be44df66237ff9c61c652f9373abf0e1944de2d","openssl/crypto/bio/b_addr.c":"affd6e27dbb0a88c2b44d8a01975445efb417602b45549d7a1dd518c745b9e96","openssl/crypto/bio/b_dump.c":"23636615ed57398b183859bfc644b3ed6a6e4ea767a4b0510f384fc22d3174a3","openssl/crypto/bio/b_print.c":"da8d5eea314158de3feced3bac1f06e7d465b1c879122c045f46e637a55e496c","openssl/crypto/bio/b_sock.c":"7fac000db37431a216998c55b37f7cedf7da8e93e95e87a2870eb636001d541e","openssl/crypto/bio/b_sock2.c":"2ccab53d243f274b5227b013bb5460f78992bff04286b1c4a3f25d5212bb19d9","openssl/crypto/bio/bf_buff.c":"93f4d8b64f77a78bd3b75899524da4fd377bf1843fa436e121f7a4e8fac70f6f","openssl/crypto/bio/bf_lbuf.c":"556acdbc6aec55d7dd154cc91d58d30e27cc26447cd0580e5bf5e62e0fdfbaf2","openssl/crypto/bio/bf_nbio.c":"20de24180dd8768d4236b072fe6fbded3e4c2f046138b82c196829210f83e6f9","openssl/crypto/bio/bf_null.c":"1d9d2aee3c3345fd1f9fa6a7c61bd0a7210296c16bb8e430db6eb96f986d4daa","openssl/crypto/bio/bio_cb.c":"36a248185aff251569cf313e027df36e7ddd2f040011c7df120e763fd374013b","openssl/crypto/bio/bio_err.c":"a076d1a372dd188ac2d0b2d85aec7fd092615304eb750a7dc7f35171d83e0b12","openssl/crypto/bio/bio_lib.c":"d3768371c6f66104a0cbbbe79a78d3bf6b9211f51b9361d496efee7d492c3e7d","openssl/crypto/bio/bio_local.h":"372e5162c3276036c8afec0d831c8fa799b9b40c585a950dee9c684c100e4503","openssl/crypto/bio/bio_meth.c":"909b7c1fbffa3f3652c06e781f68888fe32921bb0864f2edf0cf11f81c57206e","openssl/crypto/bio/bss_acpt.c":"a9d2e85a836f783e3a8b0bb43e91c98a8bea13be248547f41e8efdc112c6dded","openssl/crypto/bio/bss_bio.c":"0fbbf25cc71727b70d69cdaf54e33c1edff88dfda9c6135c3ffb903bc2a16158","openssl/crypto/bio/bss_conn.c":"763ba60a50f5ce0436ca6f7d2ae4012ad64c08d4a7206bcf46f6215e0c87e0b0","openssl/crypto/bio/bss_dgram.c":"7c3485a79715b78c600f73f1ee10cc6aaf8abb83c74ae3068112cd0421f7a518","openssl/crypto/bio/bss_fd.c":"a1d09b6f537ae1cd91b78747064bf6e0bf1480d2081fd49520bf68b8bc6f9c8e","openssl/crypto/bio/bss_file.c":"a6b7fae08a9ade223189c131d9cf791e665d07c096f72c81222d3914b6febd77","openssl/crypto/bio/bss_log.c":"57800ced38e095cbfab4978b135c987d198e23577e0b1ece7b9f9ec09ad134d6","openssl/crypto/bio/bss_mem.c":"991b241b2c01e70fb65862743474b27294f489db0157eed9bcd9f84eb2f46683","openssl/crypto/bio/bss_null.c":"5c69c5ef64fba87209ce6732daa442179147f58ed182b0ffae2c810d1a1f9246","openssl/crypto/bio/bss_sock.c":"291ec483d46ce4c84d6e27767b5024e8b46c545a9337440040044698b77a5185","openssl/crypto/bio/build.info":"c06b0ab353777e854ec2e3fb06da384d5feacf7b6a7a793a86f953f75727f9df","openssl/crypto/blake2/blake2_impl.h":"43d57951c44208b9c739ea55268ad32537bd69cb6996142aa9fba1fc73156546","openssl/crypto/blake2/blake2_local.h":"3b65f381c00259a7e9ae4c99804129d0be1da85883171f7a7e03770b6d19c182","openssl/crypto/blake2/blake2b.c":"a270a88442ff7a5ad50aeb98f201631733ecd94b3d16ccf4e293f326069870f4","openssl/crypto/blake2/blake2s.c":"3127b5f1e4b7c86b4b3f98906be4e02cbf6c6ddb76ec562df22bb90f8dc703e3","openssl/crypto/blake2/build.info":"32d94885a66457adde2492c1f54d8eff2470fabc56714ff452656d26e0dc5dd2","openssl/crypto/blake2/m_blake2b.c":"15ae3e3e588732702f387aa72bcbf83da1c6699be5fff50bd43ad6823f6a2ea7","openssl/crypto/blake2/m_blake2s.c":"86328f420a7255f5356e213e066c0ea159620556a6d0f4809a01af1d749a326d","openssl/crypto/bn/README.pod":"f9a09a797a9bb17b25582b1ec93f630ed6fce7e1e7d7bca660cdaceb93f7e18f","openssl/crypto/bn/asm/alpha-mont.pl":"9a965fc05099cad8166dd2139a369797b76b86f5a3ff649c2d769c809e43f49b","openssl/crypto/bn/asm/armv4-gf2m.pl":"59d4382de548cfe64a537ff06d7cc2f853267c374b362112e7c56f604d097295","openssl/crypto/bn/asm/armv4-mont.pl":"033cf96aeb2d944ed8216f6428b50f0c1342effe795eead230780fee09c1b81b","openssl/crypto/bn/asm/armv8-mont.pl":"74e3e61fae844a76899b271096ad959126ace8a44c6b423b49b5c60644183846","openssl/crypto/bn/asm/bn-586.pl":"48bf56c13b07e72dab0758458edb8fb91d405ea66be51ba2cbe0b8d7ad66a1ea","openssl/crypto/bn/asm/bn-c64xplus.asm":"2ccfc9e32f973733286f929efaba733ef221a2a525baca902d10b43f37e5c316","openssl/crypto/bn/asm/c64xplus-gf2m.pl":"6baf33b426d15ba5f1932354803c207ffbaac02a8ca0a297f1f1887f7d9e3ac4","openssl/crypto/bn/asm/co-586.pl":"a6e32d465555356f8d94ba60502f989571014e259578d8b7ecf08b8d550f2d49","openssl/crypto/bn/asm/ia64-mont.pl":"38c66ea37a612cbdae9ec76653ccf5f88639f2c83a4ccc7b68f1a07885925f39","openssl/crypto/bn/asm/ia64.S":"bb03f1210151f611b289d26275dfa4ec04858c3f6b8e44f6a134ae43134ecd4e","openssl/crypto/bn/asm/mips-mont.pl":"695fe1bfe46aadeedd9370ed36052d2f46744e220aae1bacdaf609d565f83d62","openssl/crypto/bn/asm/mips.pl":"f44b6353ac641daf2d1a75c3fc66dd04c29f8e7f9a9f0740fcc9bdf11d9747d0","openssl/crypto/bn/asm/parisc-mont.pl":"0618fd3e42cbb86c80f9a442df30eb5ab03fbaba85bf60e305f1e8a7b0303011","openssl/crypto/bn/asm/ppc-mont.pl":"1c74d887826dd16230de9da9379143b585030a723c7c77e1a8ceaf67fd431d86","openssl/crypto/bn/asm/ppc.pl":"e5fc7d5df29159aa04884e787586ede7e3daf38dd1aca187d277987f6ce4f30e","openssl/crypto/bn/asm/ppc64-mont.pl":"d71870e9fa8fa2d7b8132f43e9619c1016f24669aaf0e4fcc5b49b10069bf9d4","openssl/crypto/bn/asm/rsaz-avx2.pl":"d1c58913d6a27eed2bca23b623640767356b4bd63a0253b7c665fd364a8b6137","openssl/crypto/bn/asm/rsaz-x86_64.pl":"2b988945d8e2c352c739ec7a816cf06fb41eb7b5666ccfa13e504ed489513246","openssl/crypto/bn/asm/s390x-gf2m.pl":"ff56c23a2625a1d7203558c930795d53e7aae96edf79dff9b425399f3bcf88c3","openssl/crypto/bn/asm/s390x-mont.pl":"5f42262e655b2f0864c888076b9e92003364787f840dfd7fe6821d1f0ab20b75","openssl/crypto/bn/asm/s390x.S":"3bbc49704aa816f558c053615e554f5dc5727f0d8faf5731569409968419e3f1","openssl/crypto/bn/asm/sparct4-mont.pl":"90072ba1eade122f422edf8c22d9f8b9dea38288f644bc83d7606a2899717472","openssl/crypto/bn/asm/sparcv8.S":"5ea77201a1d3d910c4f9a6e46d84497a101888e1a88221df37e0b938b3b7fb27","openssl/crypto/bn/asm/sparcv8plus.S":"9a06de2127cb76904210100b84593545ce85ace4a1683508560ded0df5e458c5","openssl/crypto/bn/asm/sparcv9-gf2m.pl":"46eacdb7fa8a1e456a2f189236c29da071243465d3e5dddeab216195a0b7330c","openssl/crypto/bn/asm/sparcv9-mont.pl":"c110a9ffe20fb2df17788f18f4378fe658c65c5ef3e0132eba55b49e6b30c990","openssl/crypto/bn/asm/sparcv9a-mont.pl":"2a41e7e980b947e74e4f904d2f73f5eb3cf6fcf33aed719a8c54f2829af80d18","openssl/crypto/bn/asm/via-mont.pl":"39b3d4fe10f57f762bc04a3d4c007228a27b733ca822626b4fa318bcef9a6603","openssl/crypto/bn/asm/vis3-mont.pl":"8905a111cf37dafab244fef8328a1880e2767dec450d3f14bc9a94b0e962995a","openssl/crypto/bn/asm/x86-gf2m.pl":"5d67351d8ab90a1f9bc27442790b38e8b5af3adb2ea808f1c538e302b63292e3","openssl/crypto/bn/asm/x86-mont.pl":"ed70f06b72ee5b7952382450d271048c1ea90b8b1a7f2b54725c418d010e2a92","openssl/crypto/bn/asm/x86_64-gcc.c":"b26f0475d8edfc4d29f144ae1bd2509656519a65909ba935a6ab8e028730c41a","openssl/crypto/bn/asm/x86_64-gf2m.pl":"093190e7d1cca46563423663eec16612c27b5baafb1045085837c7e0bb92a771","openssl/crypto/bn/asm/x86_64-mont.pl":"daef157ec69e2ee356eff9b886f493c0c06727de42c53a6bc9e52609bd1ee27a","openssl/crypto/bn/asm/x86_64-mont5.pl":"b25979f80e2ac7383c31c213185da51c1246a9cc247fc356160df9d1737fe51d","openssl/crypto/bn/bn_add.c":"997a8198a4162b709bef9f539c83e0eee985b95e048a6880f800f1c87fc66983","openssl/crypto/bn/bn_asm.c":"8ca1fc49cf63552b9eba95f3337d23d4d850df16b6c8023b0e0ff3ee51a8eed0","openssl/crypto/bn/bn_blind.c":"e1a6431495bc8e0ab9c632f145d504a47b220e39f3b86a768e2bc08beb648174","openssl/crypto/bn/bn_const.c":"2976d9b82e2f804a139dfc23b93c24174835f2c0b5205a9714c15e6f9dab06da","openssl/crypto/bn/bn_ctx.c":"53e5d709712fdce65572c27121a770655d55741d86fbd762eee86d2f81c2e4f2","openssl/crypto/bn/bn_depr.c":"a1c0cb167ce107a0dc1a65d605371fdf350616592b601420a3ccc92722ccedc6","openssl/crypto/bn/bn_dh.c":"c3d5ef28fc5967c871616c14aee75efcb245cb1bf537ca3d7b4483fe4c6e66e6","openssl/crypto/bn/bn_div.c":"5bf0b670f06f9681b6010adf6d9a49e8c3d97a2a975400136ea7c95585b63986","openssl/crypto/bn/bn_err.c":"8911e2047dba7c48b1c25b2c3e12bce52644cf7cda6f101807af3e2f27c6e787","openssl/crypto/bn/bn_exp.c":"18d091d395e713e0267e0bae4f7d148766021e9f4d6a796751fd0f753da2571a","openssl/crypto/bn/bn_exp2.c":"4af438a26a19d9ff251e74aec242cabd6f802e1777d27dd565b6d14c665ea3c9","openssl/crypto/bn/bn_gcd.c":"6f57490d3965afce7bca8d12809720470b3105e94d4e7b22671a5183323ec66c","openssl/crypto/bn/bn_gf2m.c":"933f0dee1e86e2d2bc128a14e361e95f62a9b044315686e7d9544036724a91f2","openssl/crypto/bn/bn_intern.c":"e9fdb85c35674c4ea10b8a435402f449009a201b1e792ea938c55b43ac14a2e7","openssl/crypto/bn/bn_kron.c":"e53f88fb97342946e40eb40b1bb796f269c00ae7c9c08da6f0ff1dab92ff1d08","openssl/crypto/bn/bn_lib.c":"def99b81926fa50477f38f368e3bed9072e5b6fc471238719a4b5c2c773c0fae","openssl/crypto/bn/bn_local.h":"a48fcfc83f8e357f00cf58b6ab06be311434521dbaca6310f43dce588115c23d","openssl/crypto/bn/bn_mod.c":"ab67f5a59f39426f7746298d36f1a2dd0218e6bbe5337e5b8f3308969e6fbc43","openssl/crypto/bn/bn_mont.c":"9ff006f832121489d171cc628ae6641fd97b6539c8ec95bfc7d6509c44153574","openssl/crypto/bn/bn_mpi.c":"414317c7cc164eb976cba211be80c47c10c317f6e5510c7488a26b3eeac7439a","openssl/crypto/bn/bn_mul.c":"adb75d2e053af57f50b556e314058fdb1f07de5f73b9330084e9e62a1b47e6d8","openssl/crypto/bn/bn_nist.c":"77abb07e5ca2fa4cfe755d3084db654bd1a69588e2d1be60c53f8626ccdfe61a","openssl/crypto/bn/bn_prime.c":"4a9c72c0e6e04369f81c9fae730c588487882b68c9bfd3b55a9ca416c632860d","openssl/crypto/bn/bn_prime.h":"b5c13fd1a813ef9d8d7d3516b0ff85af1e646c70d0656b6a18266cc60d5f2514","openssl/crypto/bn/bn_prime.pl":"7ea309f1f2cd8a96b87d74b9f5b2ac11ffab671a6c639ec0675b12e52bd24366","openssl/crypto/bn/bn_print.c":"f24845ac92715ce67f038491ae06eff2f70821023c6905c9927f2a23a0a902a6","openssl/crypto/bn/bn_rand.c":"8ac00fab08a188260e02b17caf25d48552d29db278f6fd7bfe63d5086d4f4417","openssl/crypto/bn/bn_recp.c":"e1459f1a51e7c29aed0be014069fb143e707e1e94930e5c0d3c53684aaf928a2","openssl/crypto/bn/bn_shift.c":"20f682e6765fa62b1a24535a438fc4f3bfd09a95c84882b794ee325a3ed30800","openssl/crypto/bn/bn_sqr.c":"febfe487629fb06da8541ed72a1bc020130e054aed978509afaf082f4689eb4f","openssl/crypto/bn/bn_sqrt.c":"3a63bf7ba6f5c4399fa4ee92176234d745723b158074387dec6ec419a4f072c8","openssl/crypto/bn/bn_srp.c":"2cc2dd53d107360b02a46df479e56dbcef76173284c90787a6034711ad0d20ef","openssl/crypto/bn/bn_word.c":"80a6785f781de09007b0a38c07cb1fe6f95da91a7c5d7719fd393b473272922a","openssl/crypto/bn/bn_x931p.c":"95916c4578c8a924c2a4ab40e221beb5ef39724f8c5acc0eb0cf446a059b36a9","openssl/crypto/bn/build.info":"2833272df8b6e2a69c0813fd03a724b5ff3dcb7935e13cb5eae4ed0235009d39","openssl/crypto/bn/rsa_sup_mul.c":"408a4497b67520e6a8c6f6578843e95667a1ecc2e548aacb9166ef2e4367552f","openssl/crypto/bn/rsaz_exp.c":"a2ede83b4e4c5aab1462be70f080ca4dcca3cdac6e0c1f089f0c505a9528a5f4","openssl/crypto/bn/rsaz_exp.h":"915ef12888f45d28f6cd39e103a2f801ccf444c11b5d57ada5a4bff43a52cc50","openssl/crypto/buffer/buf_err.c":"077e32ee5b2554f2ef88c2e2e431cd502f4b6564a4562ad6ca7f4ef2d93719d0","openssl/crypto/buffer/buffer.c":"c8e85cfe68a2a0b8c240c7d253bef08370d8c5d6beb8306317d5c13b9d894457","openssl/crypto/buffer/build.info":"a49cd5c09fa81fe79c92a2746795f4ab03664edb564fe967e02ab630051fbb65","openssl/crypto/build.info":"01a8fcab56106ee83cdab9aa3d57c014e2794e7f973bb164c98dbd1f6252fda4","openssl/crypto/c64xpluscpuid.pl":"bc7734ba0a8a8a9b6522f8522cac953fcb55f7ca9291d9470ff42eae28ffe624","openssl/crypto/camellia/asm/cmll-x86.pl":"fff9bc31ea47c39ff3d29d5f500bbee2be5f99ae33c85a42f50261519a1ca58d","openssl/crypto/camellia/asm/cmll-x86_64.pl":"a39992cc95db61459d6ba3b4fc4469b468ec5cc65c8b0e140f8541146eeaea2d","openssl/crypto/camellia/asm/cmllt4-sparcv9.pl":"057db0662cac6d2910c9b0df404aad0149c9bfed7edb2b606c1a65063b800262","openssl/crypto/camellia/build.info":"c329591bf1ddf3b43874ba5f16edc771dfc3609b59692a67ab9be5329ebc2984","openssl/crypto/camellia/camellia.c":"0b89bdc95099441a27eba170d8a18715b0de111ab258c857cd7bc470c44c7065","openssl/crypto/camellia/cmll_cbc.c":"3d8730494a197898020547aac319cf993d984ac12a7caf05769ab4f3d5542127","openssl/crypto/camellia/cmll_cfb.c":"3bcd9e4d94df8fef19f6c878dafe390869070b0a915b903dd7c124fe4ff29eeb","openssl/crypto/camellia/cmll_ctr.c":"b118ed55ff15ba0ba23f8d1509f82c05469538914354a00b29fc4b13d9fdb138","openssl/crypto/camellia/cmll_ecb.c":"6fb0a9e82c7a88efd6e21b8a7ffbc2bb5ca2389d9cd090854b52432666f00dbf","openssl/crypto/camellia/cmll_local.h":"0a9a4626d21afee3bf75df5141d9cb5df16843135dc52588ed6ae5db9db57520","openssl/crypto/camellia/cmll_misc.c":"d612139def8070bbc0eeee703e10620b55b74e92bdb66cb0cadef32640eebd4d","openssl/crypto/camellia/cmll_ofb.c":"95d00adc90c3abc0244c90863643c1c972c7b72e1a89ded3e9be78961d7b5ace","openssl/crypto/cast/asm/cast-586.pl":"db4eeab4c805f9283ad642eeb9bd4f15b2fd274aae04be9e6108df432ea841ec","openssl/crypto/cast/build.info":"d50ce511fda2f776ef1b01ab2904a95105177b8e220d16ec08823ad4003c568e","openssl/crypto/cast/c_cfb64.c":"ef480ba12d67983b33d836b4c23a894825663f934e3cca35a758ac02dc3b7299","openssl/crypto/cast/c_ecb.c":"2a64c4f6ab8dd81fe8fae14aed324740725b736de13d33ef53b8cb75aa816287","openssl/crypto/cast/c_enc.c":"1aad93cdbec46cd6decef3aefe6ed6c0d4ac35458c3277d9feaf72a3554d5237","openssl/crypto/cast/c_ofb64.c":"314c96f3cf57fb5e6c3dc80dc04487e1d9679279b5726adbe7ace25311789136","openssl/crypto/cast/c_skey.c":"03c78ef44da509b4f83d13523ed842eff9415ad9fea3874f99d3c304f7c01f42","openssl/crypto/cast/cast_local.h":"66eed6779089997ded5323031123a0597f9cb1e7dd4e8ea0acaef3f8cf33800e","openssl/crypto/cast/cast_s.h":"3d8771f99d09b7e75ba8ee54015cec6a87e56851a49b7ba733d5e05cd31d8c90","openssl/crypto/chacha/asm/chacha-armv4.pl":"99f5da3bed7a9983c75e2507d70f4ff1a098a6e8f043bf041be91b3629ae422c","openssl/crypto/chacha/asm/chacha-armv8.pl":"b7d01513fecbde9fbc790d2602397de122474163fccddb1ef5cfa122d2015d09","openssl/crypto/chacha/asm/chacha-c64xplus.pl":"7fc7c87c75801b38bbd10e1da71e8d23e63cfdb9b25696155ef4831f4bea6aeb","openssl/crypto/chacha/asm/chacha-ppc.pl":"8201e4b04f17b94f63fd1632e33c443d82651a188356ecce215b05002d29c07a","openssl/crypto/chacha/asm/chacha-s390x.pl":"92145fd451e8b90dc3060b4b6cbb781c29ea76ebadf1af278f54f210b24877cd","openssl/crypto/chacha/asm/chacha-x86.pl":"0c0b923503045c50339fa62ea5f23f2896d36a5afa5d92d328ba122ada4d5245","openssl/crypto/chacha/asm/chacha-x86_64.pl":"5a8d0031c7baecc3c816b775f59d871835e7effb040c13e9e24d1afc5a334c31","openssl/crypto/chacha/build.info":"9fc715460c418da09ed9b1f3b0c2955d05e1a601ea08c722e03cd3e093d21355","openssl/crypto/chacha/chacha_enc.c":"3537109a7cbf8cbcb891fadf1187fd18bfc4697244d9f454863edf0efc935747","openssl/crypto/cmac/build.info":"4cab4dd7922065b919ea2fab534ea5b2425671a385a9bcc339b034b90b18a1a3","openssl/crypto/cmac/cm_ameth.c":"2485363b94018ee4bcb9c26ae556e0da6bd976c7aa2a74cc6eee25dddcff4839","openssl/crypto/cmac/cm_pmeth.c":"a651591b1d044ce06d3fd3d04685de16da3ffb832edbb23de2c62bfcef1437ae","openssl/crypto/cmac/cmac.c":"23c517f53442658958ccbd35324621074e9e1ff6aefc76f1734b3e8a15276e2b","openssl/crypto/cms/build.info":"b60b5fcd1a7bdd099d8d6ad6dff76d38a2f2f6d69206f606e7b31f2512ed8c78","openssl/crypto/cms/cms_asn1.c":"039c1090f3dca16886efcc692f098c6757df4bfb7ab3a8d5d861e039a1bdb5c8","openssl/crypto/cms/cms_att.c":"e4fef52bc7a42fb4418dcd3af56ad69c2eda39fee3173cf5c81a2bb09b4f1c99","openssl/crypto/cms/cms_cd.c":"9a054626d20f06907e587f28626faaba4a6c246c3e46c46161bf740fd40ae823","openssl/crypto/cms/cms_dd.c":"a20f210ba25d1e39b3d2c3689fc403cf1d26e95b56ba63ddeb953170b1c46a7b","openssl/crypto/cms/cms_enc.c":"f798273e3d960f8a811a68a7e416bc09c9d62cd0f0986115f2762f6e60578d0f","openssl/crypto/cms/cms_env.c":"57d7a1370174ebd951b67e0f8aa580502e19761502b56320dcd52341e5552daa","openssl/crypto/cms/cms_err.c":"146a39b1b9fe17c449abdc377d3647611bef8294bae55c807c8493064de572a5","openssl/crypto/cms/cms_ess.c":"1c214bf9ed990141a0fe9b2bd6d75c0abe13f7a3972fcc9e8546c6cfb61fd774","openssl/crypto/cms/cms_io.c":"b0f7efc22758684e682ce4d4084c5a9c92f2be85337472b4cb2b0877dc97b9a8","openssl/crypto/cms/cms_kari.c":"5cfa5f47a8c1a68548cc5056c3acf5dbdd6863add51540d31bd9f3febe158305","openssl/crypto/cms/cms_lib.c":"02fb5868d86f55d6fd22925bc1179ee6e30bd33d8c03bb9d17f3c1f32b5e8a2d","openssl/crypto/cms/cms_local.h":"fd4c2c08265477861e764df58596e6f46e4e1c1edf44b83dd756c30a11e4378d","openssl/crypto/cms/cms_pwri.c":"ec89b18f85b2d54e7685eba3e025d5c80bef96a6342647e75a38e7ce2d05421e","openssl/crypto/cms/cms_sd.c":"4b5d481625e094458ea8f305abf4f135929c4e8953f52c8a095ac1c4190ea80a","openssl/crypto/cms/cms_smime.c":"4b39921aa3cc3a75de8ff249bafd5f14fa7fb2f87ee5fbdb5965be16a701de9b","openssl/crypto/comp/build.info":"85bf6e692117dae30cbc494d4eba2d702cd3cae6f89fa09b7ca0fd4456a7ce2f","openssl/crypto/comp/c_zlib.c":"91cd791e519dce9e72bd1c95850bbfb28948314f72c89d186c1cf31018a4118c","openssl/crypto/comp/comp_err.c":"57076955737d79c2a7c3770fd2cc34f23d5eb871d464d2fcdb824a430b241f52","openssl/crypto/comp/comp_lib.c":"400c8ec3deef4c53bf6a04d6a56b3306085adfd7c26b7f30a1c81dbf2ca14c1c","openssl/crypto/comp/comp_local.h":"017673a53ffcd90fc07054e2f2b58bb19cf7dd662972b77a522880be4df748a7","openssl/crypto/conf/build.info":"b43b86c91fce5501f6f7f3be1ae0563ad61a11a6dc923d51b1cbfd38642b69d4","openssl/crypto/conf/conf_api.c":"ddd6ba576e40e1ae38be2da7e9c650a831bd6cd3e457b1103dfaad4e38db3945","openssl/crypto/conf/conf_def.c":"42b346407771dd21fb8e53fb7f1f6510e8b0ee18fd1e84711afa728835b0f846","openssl/crypto/conf/conf_def.h":"67478967ca8702192f137127ab1f7fada1ac5cb7fce3747431744cc161a8e70b","openssl/crypto/conf/conf_err.c":"b7ad98807619b2338608b0b678af3e9ba552968c1a62e4dc7f596fa22c967489","openssl/crypto/conf/conf_lib.c":"03830ff1f426c2017809c8a5ce2fc1f6c0cdd4e3f4ead3724af49619ced93197","openssl/crypto/conf/conf_local.h":"21f6604347cfb6f65ebd57a2baa57a594c90f2c2d553d04110a481e533dc932e","openssl/crypto/conf/conf_mall.c":"8c749bcd6b98aac509a55ba3ae6c85b7a7576d19a48fe351116b84f13a4bc9b7","openssl/crypto/conf/conf_mod.c":"1f9bfefdced4c28189a5a401e60c981bc21f2c2cc630ab16c14104161433544c","openssl/crypto/conf/conf_sap.c":"3a55841a7cb9466b3520fe5ecdc18a0de441517fed3864a0c6ec501c60d2bcbe","openssl/crypto/conf/conf_ssl.c":"9a915457c88510105b1ee96b63ba18a7a395f16e1228f6dc3d300c09a29da965","openssl/crypto/conf/keysets.pl":"da70030cd1f05d0168d01cbd432170fac8c97d03ed91deb20ef17a9624c49be9","openssl/crypto/cpt_err.c":"0582ec85ea86920e9c54f61b8c896766da5178ed76d943927e54f0cc5aeaff37","openssl/crypto/cryptlib.c":"071e82aec2a79c3165cc40af4e40f4f0b9cd7f903d6d342cd0b2bcbf120f0808","openssl/crypto/ct/build.info":"cba8cc48d6e1afd7524a791dd853ab68b711e20242e53d34f7bc69cfddfb58a1","openssl/crypto/ct/ct_b64.c":"3f496457a333d2ee14330174497621a3dc0d7226584f028323ed3f74ab5eb059","openssl/crypto/ct/ct_err.c":"38c768cee2bd24a73056ef3b6b11c9ee2b521b4549472bf2814da6783b3237d1","openssl/crypto/ct/ct_local.h":"b646fbbe542dab91575dcfd70d753f97829cd30b8cc6d20ff43cf6b180a5fda4","openssl/crypto/ct/ct_log.c":"fafaabfaebb95a7830629c278eae9ef41474abf74bf4a192a40ed688ab857d99","openssl/crypto/ct/ct_oct.c":"cc15a402c4910fc8e2fc3e4e2696159164324170d7aa314b705084ae3e5fe1f5","openssl/crypto/ct/ct_policy.c":"761b4246d70c58cd5ef169b7e6495fb4ae98095de55db952865321b53026a9da","openssl/crypto/ct/ct_prn.c":"c61e1e516cc7f2c6e56d744dc9d2eb34e265a3033dcdd5594bddd389d92cb849","openssl/crypto/ct/ct_sct.c":"2053d098f8067761f883dc37b5e9f32a88f8efd8e838c7bfd30dfbeb8b2c213f","openssl/crypto/ct/ct_sct_ctx.c":"384be165ab6ab299ea1fb20a8f71549b52c11a62f48354557d9df795dad0a615","openssl/crypto/ct/ct_vfy.c":"dd9fd14491f0be632c2c9a4e3f64f2c9e7212077318585cdeb0be083c9b9d16c","openssl/crypto/ct/ct_x509v3.c":"f6fd221ccdb7233b57d7e2e2200f70f74415bc1a50d71f3f3db54573323ef5c3","openssl/crypto/ctype.c":"6ee2e82b4b35a0ff31e652a41a215e22183f27227629c3dd9ef29dee5ef72235","openssl/crypto/cversion.c":"e025275b671266d567e01588bc06f5953f9801ccab837f747444a7fd4deb2d21","openssl/crypto/des/asm/crypt586.pl":"ea344cbacc0c1782c86a5cd8e59850b15ec7b992af758944177b5a8d06f731f0","openssl/crypto/des/asm/des-586.pl":"7087fa7f11206b134cd19b706c6dea47244cc4dfa02eacb34f5be64f1596c59c","openssl/crypto/des/asm/des_enc.m4":"fc01ac73663cf6a379f2f5b9bfb4656180904d3dbeb1a1332981c65536b57537","openssl/crypto/des/asm/desboth.pl":"9ee2f65db79acb719d97d7a9a023b5966e043de565c296d91fcf9fa22c8d66c3","openssl/crypto/des/asm/dest4-sparcv9.pl":"af3aeb58563b500da64826b8b242879be45a25492b35416a64dd8f2d261b54ed","openssl/crypto/des/build.info":"e9313f6656218289223c13eded0ee42c0ef2a907ba1cad0d921895d5897f6033","openssl/crypto/des/cbc_cksm.c":"5d206f71869bd8f991aa0cc6e59dfdfb0d32332a3ddcc5fbc1e53dd434182dbe","openssl/crypto/des/cbc_enc.c":"516db95c905c16f248b0a77110f5112bc4b11c1bf7c22ec00015afeba4a59775","openssl/crypto/des/cfb64ede.c":"9eaf1da7ec5ee3d418962153b20609ac35ce2a7791d0e89f67af6743ec3ec1bd","openssl/crypto/des/cfb64enc.c":"01adae8089de85462097168450a1e8da6b883f40ffdf16f71328b4f27c295d8b","openssl/crypto/des/cfb_enc.c":"77d937e722323246ffbbfb90236cc4db0eb97f0e3094703136b13e3f5ac96cd3","openssl/crypto/des/des_enc.c":"e6ca2ab1d3ecea8d7bb237249c4b2e3c4b3341fb7117c103b923425547d18ce5","openssl/crypto/des/des_local.h":"65a67352a112d223c1a5e86014f9bb35f2801a7facdec761e84ed0fd84453f0f","openssl/crypto/des/ecb3_enc.c":"9c0390b6d31ba0210770c99825d134ea383b0ff6786a17901cc9e8d29a1be271","openssl/crypto/des/ecb_enc.c":"ed826a2ea841d55e73ef7b4c18ce0e3f3a7fc2ce1f66114ef304116ceb797f8d","openssl/crypto/des/fcrypt.c":"8722ce9353d34a091718240262350f71da8d219a6e5735f7452cf6cd6a513e12","openssl/crypto/des/fcrypt_b.c":"17687bbece11cf0d69d20c8e2a161e3e8cb8c6cc954e98e4be89b2fec1229433","openssl/crypto/des/ncbc_enc.c":"7c699d1d1382865f134a66ae6102a1579311d923a867a9689f1938cf6cec16c3","openssl/crypto/des/ofb64ede.c":"a80c89c3c3aca3061d374a5719e7fbf34de6aabada2a33dd3ca227f71154b46f","openssl/crypto/des/ofb64enc.c":"f6778fc3903629332792169d1eda2a66983102927d4ed3960f897ac3e4340dd9","openssl/crypto/des/ofb_enc.c":"1dab1cd28dadd9d50c929bb733050114da777eb16a0881bf73a346e741aa4cbf","openssl/crypto/des/pcbc_enc.c":"30566f7d37c7370ff3877c3ed546012158447f26f3f252bca81464c97584d613","openssl/crypto/des/qud_cksm.c":"866fa600186d5ec9a9453a1913415b8ce6f3f10aca9dda468ac598a43f45ecf4","openssl/crypto/des/rand_key.c":"087fcbb52d8c335222758edb7068b9d4126b1480882539824795a06d9b61ac81","openssl/crypto/des/set_key.c":"72121d5af75f56b90476e3b0801df350e245e106bf2f4d3b807d7197b7db26af","openssl/crypto/des/spr.h":"716d8fa9cfba26ba57bbbfe471b2179b0788907c0f6ce831ca25c1f88692968c","openssl/crypto/des/str2key.c":"b981915490f07bd96a1ee7bc47176cd0b502021245b0d9a3ce5624f53f87a8b3","openssl/crypto/des/xcbc_enc.c":"b827a25f0e027ccb260fc580ca679fa517cd3f31984f1d23aeb537d35cbb6a8d","openssl/crypto/dh/build.info":"e2bcc399874d63bd088982f115a561fffb4e0dbb441bb7b594d5599e9c65a718","openssl/crypto/dh/dh1024.pem":"e8e1acddd3b19d70ba25308970888a2ea046f951b9e055eb4ed039ad873b56c0","openssl/crypto/dh/dh192.pem":"58077024ed24a21542f46e2fa71872b920925d7878e70ee260f7e12c3acd6c49","openssl/crypto/dh/dh2048.pem":"8ef0bceef3550a6a252553e157a8f72286a26688d429fcf8659b0fd62e64049d","openssl/crypto/dh/dh4096.pem":"b5efe13f7908d0c8dd358b97e9fc449aab144bb9f5db480dd6a59787733e6475","openssl/crypto/dh/dh512.pem":"16f824bb92c255eb62cfb1146014049be68b8ea46273ad7c3afb585c47555689","openssl/crypto/dh/dh_ameth.c":"e76f256774450486365456d2fdf46de247e631a1ff7723842b972b0e4dd734cc","openssl/crypto/dh/dh_asn1.c":"98f73ca5addf73a7cc65f719a9957995efe2d776f7b9fbf93b6ef089095993b4","openssl/crypto/dh/dh_check.c":"24a505a328422c0c6f1186fdb69d927e6cfc0923f5dcfcfee8e75501f4796485","openssl/crypto/dh/dh_depr.c":"3acb7d89701c08aec293c9a8f72c8564d2ed438008a156dd65f2110007d6941c","openssl/crypto/dh/dh_err.c":"78358e127d64f41a453dda8b14c29a86c127b9eae3b6673b81c8d1f1f0f1c37d","openssl/crypto/dh/dh_gen.c":"217882ada635b4cb3826bec6d5038e57d319d6461b15f3db2b898cb063a86686","openssl/crypto/dh/dh_kdf.c":"363b9b80e8002df14e9944a07ef2cafc7a1657e937c73ab0fee1729e15b82700","openssl/crypto/dh/dh_key.c":"0924f57cab2390c8642fd44c36e9bbae46f5040a6b031c85a157c5649f5a6239","openssl/crypto/dh/dh_lib.c":"b0b2596db218d7d4799bb645e91e96d8deebe9c29fb91be3557ec4daf09af2c4","openssl/crypto/dh/dh_local.h":"7d416db8510cb01d015816fd3cfe48e8c31f7130d9339084a32969f2cfa05b23","openssl/crypto/dh/dh_meth.c":"d06db6b0c7076e8783311606b5736799f271bfe96e82a34282f38fae7527e598","openssl/crypto/dh/dh_pmeth.c":"8e253377cf60e4c6951414d7032a476bd8f5b39b8dd73e6be7aa5f31dc70de93","openssl/crypto/dh/dh_prn.c":"52d6c69a3079ff431c1f0c4fba4561b3b35e3c8e3b864e837b36fe04b229376e","openssl/crypto/dh/dh_rfc5114.c":"ec521e03c0d46750d6ab81bc3f9ea563010cdd4105654292add4963c43f34ba7","openssl/crypto/dh/dh_rfc7919.c":"bb50a469470ac7e0e0464919f2b1a4525fdca2024082ea71906e08412083e6b8","openssl/crypto/dllmain.c":"8fac31d2a5be44be12783f486a0c947b34f537706e9679041025e3cbc4f1e86a","openssl/crypto/dsa/build.info":"085045ec79ec9a5862b89a021c7489ddcdcfbcd11282a5427c261f607799b003","openssl/crypto/dsa/dsa_ameth.c":"2d2d71bd13c7f03f9471e7e097a1121e620acfe9602102ec98b63bc02bbe4c9f","openssl/crypto/dsa/dsa_asn1.c":"7fc0c381019990d20c3f17d30189bd25b0bbce4dc6076ff82bec14aa242fcd1a","openssl/crypto/dsa/dsa_depr.c":"e8842ccab520759650fdf8f11fd9671eadd76a84a3dd99cbcea144d7a62d477d","openssl/crypto/dsa/dsa_err.c":"cf4d169cf5d725929d4642e2b9e0d364ade8a9bd6f3ed7588face74a761f83a6","openssl/crypto/dsa/dsa_gen.c":"da779bca293f86ba7fff0eba0ab1123dc1da92076cc5b17d74ca2457afb29a33","openssl/crypto/dsa/dsa_key.c":"994f194ebf96a3f508fddda63c202fb62a865011342ef7ca67fcc0e61b307751","openssl/crypto/dsa/dsa_lib.c":"7b4046813db5765108923a203582dcec87edcf4eda828c73faebd93d5e6d4fb7","openssl/crypto/dsa/dsa_local.h":"e5bab35bd60b618d6701f39fd2cae327ce1022216de6e7e7bbb3db33a56a04b7","openssl/crypto/dsa/dsa_meth.c":"3bfb2d0a05d9b1996464f36335f0ca18e8ddfc7e5fb0c823f35b0d9f634edf73","openssl/crypto/dsa/dsa_ossl.c":"401fc60603f2c2f4ea07df3ee9947f053d59579ba6a5c29af0e6ff46c476e4ac","openssl/crypto/dsa/dsa_pmeth.c":"75d81c26461dee4880598d315e4a3e5d8f14669374e0a4cff76ac1b29e21da3c","openssl/crypto/dsa/dsa_prn.c":"d7e3b0d7f192837d71683d71def73e0f59c472e22c3c6e8bfefd28c5ce4d7f3b","openssl/crypto/dsa/dsa_sign.c":"6ea0f5fa257c78daa400a3241875a50fca357722a982d634fcfacfccbeb7a850","openssl/crypto/dsa/dsa_vrf.c":"8bac622f0dcc0cf8ef4169cc0bbaac675f0fe0a44d13a8ddddfb23279674cc0f","openssl/crypto/dso/build.info":"f3ac516f673b6627cdd424b8a0187dc1204454b9c8ad7f3921e54fcf4c2b7d63","openssl/crypto/dso/dso_dl.c":"b0c47090ceccfc5eaee122bc081b2eecc57525ac2f9e16ff7ea5615b9834e67e","openssl/crypto/dso/dso_dlfcn.c":"1096fb62171b74e3c5e479bb013874286d23a52c8b55af8da6097849ff837809","openssl/crypto/dso/dso_err.c":"65da64f7372a8c3c941ac500388ed6b236c1c0587df47331efe0ee83a7094b0a","openssl/crypto/dso/dso_lib.c":"a4ce4fe5108efc8bea3548fa0e4cc377bbf5dc41b473d454abcedd195fc12b7b","openssl/crypto/dso/dso_local.h":"c8fb9be8ee8505ceb47d18959c53018949e68882a983bc6b155500824adead2a","openssl/crypto/dso/dso_openssl.c":"128e45bc40d044ecc31999d5ddc8a3bff7458984b394750e2512d6e63f288f56","openssl/crypto/dso/dso_vms.c":"b6b23417f7ebc775fd6cd6213e48430fea7aae71581b1b4b9f66134710c27549","openssl/crypto/dso/dso_win32.c":"c0a959463d6b39eb3de5be8e36aee2bb94eb0a02b17d16ad513851c0d97e2b77","openssl/crypto/ebcdic.c":"08ca75b55c1a19689de35f6826eb45d60096f9f61bfb177f4d47c6e7b164bd5b","openssl/crypto/ec/asm/ecp_nistz256-armv4.pl":"40ba05324054d59b0ff73206960b52fd98af1aefb527fc0653d88f66aa1f8075","openssl/crypto/ec/asm/ecp_nistz256-armv8.pl":"5d56ec0425c7e072fd47af26bc6a42c5b96831e7a5386233cbe9211d0c8384d7","openssl/crypto/ec/asm/ecp_nistz256-ppc64.pl":"bab3bd37522b68ebf4306d4a8611a9b9984c18af2502f133b1a45671c788bdf8","openssl/crypto/ec/asm/ecp_nistz256-sparcv9.pl":"0d5960e38388ebfb979259345a96d3e5c5a1eb01a1d307d04e46a01776c33c64","openssl/crypto/ec/asm/ecp_nistz256-x86.pl":"166cf499864dfb17509b744af27bd04f6c62553ca57a907f65247aebc7bd2033","openssl/crypto/ec/asm/ecp_nistz256-x86_64.pl":"3826ef600d5dea5ab791ea812a1499a768bd9d57f6fc194f752fe89942007ef3","openssl/crypto/ec/asm/x25519-ppc64.pl":"48a8881f53d115b750338ff3f5ea2b00b3c8cb12bfe3497ffe7efc14e7663c04","openssl/crypto/ec/asm/x25519-x86_64.pl":"b058c37ca6fd2e9ba6cd03dfa4925e43cfef8243388d3b906cc9eacbf515d42d","openssl/crypto/ec/build.info":"fdabcfbb5d33c483abc06efd155649d50d46a23ad330e9db93e53fa8fab7c95e","openssl/crypto/ec/curve25519.c":"804cccc55744600342c506be8ebfb89297f233994b42c1a6df43254da9be90e0","openssl/crypto/ec/curve448/arch_32/arch_intrinsics.h":"b6d5ddcba24f8724091b0f4e8ffb4eba3501050d7b56514040e9e35cd4d2dc28","openssl/crypto/ec/curve448/arch_32/f_impl.c":"8f2711a771d2de4e28e1af000972a97632b84dbbeca98200bff75bd4de9c68ce","openssl/crypto/ec/curve448/arch_32/f_impl.h":"8c4146a1896235ac63ea2c02ff368b485811efadc530e4e55a7772a5be3df0f5","openssl/crypto/ec/curve448/curve448.c":"edf001e0b4f388144a815d2a91c9e1196f444279e45ccb0e350958bb12830c94","openssl/crypto/ec/curve448/curve448_local.h":"45859eb89631a801785f23fd084372df5c6a9886f63b7a8c327a5a1da2c32835","openssl/crypto/ec/curve448/curve448_tables.c":"6a244fdb0e907bab2415ca902277c53e347ed4446d89a8cd96cb1f6d422851aa","openssl/crypto/ec/curve448/curve448utils.h":"14590b6c857ca26f8f4d902aa959d22f939b5c8c233d4dd1dafef44f8345480d","openssl/crypto/ec/curve448/ed448.h":"162ffa623f582675f30cd07397e8127acb65ad50dab864f0690ad01169070e01","openssl/crypto/ec/curve448/eddsa.c":"5fbd57402b93953751db5b0d877183c455acd4e5a799bad1b4c04eca476c25f4","openssl/crypto/ec/curve448/f_generic.c":"07e9c3ffec06daa1493b77afa3d929627f8e104b6a7068a5ce8c82cf2abe0530","openssl/crypto/ec/curve448/field.h":"2d3bcdad69091dce8556e854f9ef8b480966b2422f07d8d62d15dbf1102e9a81","openssl/crypto/ec/curve448/point_448.h":"7934398d93fa3c4e1586e88ce30e9ab9e7fa6cd5bee469c7e266d6c008276e52","openssl/crypto/ec/curve448/scalar.c":"d6b59d4271c2b689a137c5329779f48437d89c0dd420331b0dcd19c07e8d1bbc","openssl/crypto/ec/curve448/word.h":"e6c2a871e623d231d86330622a30172e39189b9d0d6de01ef3349373592fad1d","openssl/crypto/ec/ec2_oct.c":"4c816014a4a39e5b5d783cb644ebce73326cf7d4102fbd5ed3173e0c47c41f47","openssl/crypto/ec/ec2_smpl.c":"3a1d9eb3215d1aae80f5a97b9a70cbea244a17aa32ff31547a3750c27f91c6f7","openssl/crypto/ec/ec_ameth.c":"f037546edeef994b2161c337cda66ed526b6fb2dbd7680350d3c88feb08f8a56","openssl/crypto/ec/ec_asn1.c":"52ef18d4f3e2b283c79b5ce5288ffe203bbb59043c7ad3ecd6ec5f28bd96751f","openssl/crypto/ec/ec_check.c":"968eacf0ec42ab6ea40d9b4e7bfe92d8839e7650fc6c4cafdb5526e24db93bda","openssl/crypto/ec/ec_curve.c":"6b5854395edfb6500537ae22c3da66592158cabbbf3d982198c10cae74e11390","openssl/crypto/ec/ec_cvt.c":"21751232ee7f55c78b27297d1748d1694bd0444503ecd1e4da5ef28e0ec2c06c","openssl/crypto/ec/ec_err.c":"822f407e3bb07bbd155532cb2d318445f75a4c23dc51d839cc572f063b8c3b31","openssl/crypto/ec/ec_key.c":"8b2ad465fff773a540b3d8dc02aa290a542bf6b5baf19a27a39fea9aaf8eb31a","openssl/crypto/ec/ec_kmeth.c":"c8873b9c502b2ec7ca701b75f179a03b17e1d0f232ceaf93a7e8b2a9dc09ed51","openssl/crypto/ec/ec_lib.c":"3b90b027406fa37e449a29ef5fda8d618050264b20ac72cb443afe3cb41a8ca5","openssl/crypto/ec/ec_local.h":"2bd3d1770f28940ae353c7967d67a868717c131360611fd29e1c8ab4759c8d15","openssl/crypto/ec/ec_mult.c":"e5af943eb7b22d20c2924040cc82780a5db6f28adb034b932b68fe63ccb050fe","openssl/crypto/ec/ec_oct.c":"e6bc6cc8381d7b6f2e3db9c4e80f8c7f7a256e4955bd639e256a6fba4ec8e235","openssl/crypto/ec/ec_pmeth.c":"fa5ade19d352740ec048bcf20789ff225f2f7752dcb1b166005c24a47983425a","openssl/crypto/ec/ec_print.c":"35731d346565725e5fe6663d76c4b7552ada501c8ac154ca0364674e5ab4b249","openssl/crypto/ec/ecdh_kdf.c":"9483709aac20fd03d9a602f933b9623c4e01343a8a9ebca269cf765f28ca839a","openssl/crypto/ec/ecdh_ossl.c":"6771ed31fcc563d61455896d49592f73de249a4a02ab919f2e2dc61c6e32a069","openssl/crypto/ec/ecdsa_ossl.c":"e9d540bf9e98f823ff8b94d077fd42683bd52471a1b2f0e27af839b22e7b2bac","openssl/crypto/ec/ecdsa_sign.c":"ef0aba33c4d785892e8b04bc215818dd79346f12198b86e926306bbb82906540","openssl/crypto/ec/ecdsa_vrf.c":"9144435f6f8da7b6787302332fd512817f1351e648d6aad8b97f66dab750410c","openssl/crypto/ec/eck_prn.c":"2a61e56b81eca251023e6def47349289a25a71028d3cac71392720514bbaff37","openssl/crypto/ec/ecp_mont.c":"413f82245a3ef45776c928c96b539cd02a40c7f11610f5ae8657aa9e1268125a","openssl/crypto/ec/ecp_nist.c":"695fdbe3f4c21d3c9860e7433ad506c39473e702fa69ed1a9d6814de5a1652b0","openssl/crypto/ec/ecp_nistp224.c":"133ba08c45fbdcb9cc7003e6965a43a40c3b8edde14d8014ffb17b3e3dd1588b","openssl/crypto/ec/ecp_nistp256.c":"8d63ee38a1a20c6f0704a724a1638aea565c74e58e13ee9ec5965736ce90b60f","openssl/crypto/ec/ecp_nistp521.c":"47c3e20705cd7c9deecf527f90374270a30a49e33573d4d7e99463405f0c7f5b","openssl/crypto/ec/ecp_nistputil.c":"d9aec2730f8921bfe6f4bd8ad09859a89e717d79c5a5c116143f403a57dd8fd2","openssl/crypto/ec/ecp_nistz256.c":"276e7da97fd9317268a8edb5a05670672f2811116733f76ed4eda8dbec1891b3","openssl/crypto/ec/ecp_nistz256_table.c":"d811f3e5e3d6a188fd33da7366daef81d8e69d083963033a6b8468d42fe99855","openssl/crypto/ec/ecp_oct.c":"5b572e7ebf6eb4888042fb3e7a0cc84e3bab4ba954fa79a4fb3de6d7c8a3562d","openssl/crypto/ec/ecp_smpl.c":"3ccb53c7c5836497174a69dd6d47edb061c1986ccd52bdc70a036c3f76b87064","openssl/crypto/ec/ecx_meth.c":"a3ae62fb9c7c9243e610a1b258c31810999bfcf734abd3d0b618dd4a5673363c","openssl/crypto/engine/README":"75f83cd826e3d844a982830cfe3dd40a9745680f598823dc6c20483433e7496c","openssl/crypto/engine/build.info":"bc69605adbffb3f6e78073735a304007ac70c302c1cdadda0598475077a0b06f","openssl/crypto/engine/eng_all.c":"4019d9ef5b8070769666bb06d9673067039f222f29c34f988c8f18cc2f52e507","openssl/crypto/engine/eng_cnf.c":"c5776261e20cd6e2b01c9faa98ac27920748652ff8870b50e93c9dc43e33eb40","openssl/crypto/engine/eng_ctrl.c":"cc4295f6d8aae029a526f909a949c99d1798e766e662f1af36788b587aefd02e","openssl/crypto/engine/eng_devcrypto.c":"5930b4aed3a176d9448f2d792229727c103554861b7cd93fb534448d5fd608f6","openssl/crypto/engine/eng_dyn.c":"d623360f1c99214646d595ed18440395d9a8a8031ab2179ab303d79d503d1469","openssl/crypto/engine/eng_err.c":"f7528c6b2e12cba00592e138292428653b6d67f82d119ed274210459fae8e96c","openssl/crypto/engine/eng_fat.c":"dade309980fd6ff737918439cd5f4cbbe2ceb6bd685f57162836e874bdcb09f5","openssl/crypto/engine/eng_init.c":"ce7c7a5abbbb4ce3755d88b49e3ae9051c9364988bcdce82e9714e7b1f50eb6b","openssl/crypto/engine/eng_lib.c":"9b27cbe36d2fcdf93e4c3000b2f746b7536ba5f13f9329555d8eecca80c235ce","openssl/crypto/engine/eng_list.c":"0e622b37a07f38a7a1230225aa2dea99b05007040a770a95d22f3496d1714a46","openssl/crypto/engine/eng_local.h":"d2f5992e26df3cac6bec6d92999aca767a75991e428427bbd18f4a359724c9d4","openssl/crypto/engine/eng_openssl.c":"f0b6d2784744f4de19b58415a32f0311016826bf2b942de683275d099adad5bc","openssl/crypto/engine/eng_pkey.c":"5980b2e7d788172ca7363a9e599efc60978e0e01e27f2eb5a20ff72177908a4c","openssl/crypto/engine/eng_rdrand.c":"00c500e3ab162d6ebebd05a35969e8cf87e666056493c27005e1056ac08a9681","openssl/crypto/engine/eng_table.c":"0119fd35633708e5b3d3eb84affe6567e859bcb25b2ee803ee296d9ca7e377f7","openssl/crypto/engine/tb_asnmth.c":"697b41214c83500a5d6a24db15349047d861af1fb9698cbf4a1ea583b7e4c34f","openssl/crypto/engine/tb_cipher.c":"a0a78c49864bfa6a12e51aec865ada99c8f2b6d6173f95c131091f14f5596434","openssl/crypto/engine/tb_dh.c":"44df00bbfe79beb277bdaf5ab6b5b67e7a42c7aeb41d78282cb066b2845ec1c3","openssl/crypto/engine/tb_digest.c":"7f91c40451ec2af39e1589c99798c03227267b52ac2137656fe764a030030138","openssl/crypto/engine/tb_dsa.c":"11d608eb60f707236c12b2342d6e46e78a35546f5080d24fc2bec5fc93d5da8d","openssl/crypto/engine/tb_eckey.c":"d01e2e757b633478d735813aa7f11d7ea840b57993919c9ade502e0bd3623177","openssl/crypto/engine/tb_pkmeth.c":"cdb64c39295890bc8f513910cc4e99366c77551e3d58f1b15f33eac953025a14","openssl/crypto/engine/tb_rand.c":"8a3db3bdee6b44a706e58a27b9f2b77000a3397251fcd3c0b3069e50d1e92061","openssl/crypto/engine/tb_rsa.c":"cc36a9a7deb850d6a68ae963accb17cd27fa22aa842c3e72ab02ffa2444cae49","openssl/crypto/err/README":"c5ed5efd4e5ace164c73404aa86a8dc1c86da1838f78ebd69488fbe29ee907e5","openssl/crypto/err/build.info":"d6041997113bd776a1d2a0e997b2c222f289e4c3f3b7709b3034b8389721395f","openssl/crypto/err/err.c":"b48fea983074c51a5025790995b2826f40132d454e8f4a7ceb5bfbcc776a11c6","openssl/crypto/err/err_all.c":"dc089a12d9e7a982c53f8a823f920dc02d8a20ee70591f00e2994df3f440b0fc","openssl/crypto/err/err_prn.c":"78864cf84d5e6a3e88fa8095a8ef2b8d17ef5254d85c405e86964ec68445881e","openssl/crypto/err/openssl.ec":"2b72f95498562d1cba12ede9d176cb78f7cc952471e09121c05a14677b89d3f6","openssl/crypto/err/openssl.txt":"4aa88c53a93977a357db59c529c78e585df1319e446267033b486551766bb98a","openssl/crypto/evp/bio_b64.c":"52cffad34f8a36d8783399304aeeac3a31ad76738ffad067cd148d82e311980c","openssl/crypto/evp/bio_enc.c":"5c696d962ccdfee8f50765c903948fdf5ecafb9661176e6fb8f53609af97f21b","openssl/crypto/evp/bio_md.c":"bb69f5c9e0115d6f6193e415966078b74bf13030ecbc9bb496bb10a51492397f","openssl/crypto/evp/bio_ok.c":"5738ef882340cb88dc8e6b3690c098bc84666c1bdc46f92581157151aeb1982f","openssl/crypto/evp/build.info":"31b20792b825dc95e34adce28499a555871514b73767f57af30911d6ec42be46","openssl/crypto/evp/c_allc.c":"9b0317fad52f722d505c9e7124fb802b7e9b9ba4e592f6c53c181bd72cdf4ea1","openssl/crypto/evp/c_alld.c":"7b91fae290bd3e84b44cf8d273dd47cb52dc7a190278c0a7770253a5b92f67c4","openssl/crypto/evp/cmeth_lib.c":"454c5c511e1b11ec9bccd9eb81b13bf7fe3b9b49aab1d4e2af9431fdf4685384","openssl/crypto/evp/digest.c":"fc10a2d452722ebe09117f51286ce7dc36bd21e75352ec4e5551b69d78da4400","openssl/crypto/evp/e_aes.c":"1c59ecbf4eafcf124ace1993effa8eab8980bb009519db6ceb8698f52a200f61","openssl/crypto/evp/e_aes_cbc_hmac_sha1.c":"ab83f218805953b0c69b333bd715408fa33355aea73d19f5cfd65c4e5803ae9d","openssl/crypto/evp/e_aes_cbc_hmac_sha256.c":"dc7d54bc7aebda2e046eb232a0697ac2199d38c401336dc6ff8bbcab203013f4","openssl/crypto/evp/e_aria.c":"3e84d9441695d57ebc53359bd859409825b8ff4129f556854d30850cbb0b7db5","openssl/crypto/evp/e_bf.c":"a7f1835f01ce60ae0930e96d5794ef9627645a8133d40f8156035b1ca7f9f912","openssl/crypto/evp/e_camellia.c":"f17a6450ed62768127fdc476ca7c4ecc3b13036a158428c9ac4c7a3998044929","openssl/crypto/evp/e_cast.c":"777149f3560cbafa09db82529c62e229821fcd9b8d0cd52ccce1911059ddc002","openssl/crypto/evp/e_chacha20_poly1305.c":"e3b0340460cff799fa31dde2fd243efbe491243cd3fd45785aa754a9e58aaaed","openssl/crypto/evp/e_des.c":"ed58fe7034f20460ae033009948cbff82f4c29cf759c7a5c20ef16fb939a8fb2","openssl/crypto/evp/e_des3.c":"9870e2d940343976bef9f0dfb9ed472e6f9b13c7a088ac0f642e81a13fb9b023","openssl/crypto/evp/e_idea.c":"9367d350ee726882edef664b36be5ffb087bcd5784c188e3c1eab80b0f9b61ea","openssl/crypto/evp/e_null.c":"d4fd2e9d7ffbd334d0698f33688001c6d83d416179dfaecf0da158a51cfb1dfb","openssl/crypto/evp/e_old.c":"c5d4176d9f86eb7030fb37044abda9e15484ebd40917f5203fdbd27820642b83","openssl/crypto/evp/e_rc2.c":"271a9892ec2c9fb5d5ac19549bba713f9d1cc7533a6c4729b8855b2086756c75","openssl/crypto/evp/e_rc4.c":"7b651e12cf17d62c54c5e77f14e2dc4a330e09f0ca16bb15a7b88661f97f754b","openssl/crypto/evp/e_rc4_hmac_md5.c":"f31b8b2f34dd55c4888e7f3f832159e0f0f121334f89123177465d5766274eb5","openssl/crypto/evp/e_rc5.c":"cdbb95bd98f94046b2948b5afccb39af8ecca3f8678e75ae323785f6a6ddc158","openssl/crypto/evp/e_seed.c":"90a6cf552de0fed01659500527a20836c9459f5cabc37996a1b350493ea7a4e7","openssl/crypto/evp/e_sm4.c":"90040528209db9a1f93ead632b1dfee44393754c31cd4f8c02afdf36f1257a85","openssl/crypto/evp/e_xcbc_d.c":"9e50d87e3a83f9a12cc7529f2e9d92616b1f3592ea52c9621b26fa3051c49c22","openssl/crypto/evp/encode.c":"00bb9baa416979e8d4fdc3a8d035f974747d6fb707a874a0a5f5504a4ad27dfb","openssl/crypto/evp/evp_cnf.c":"010e9619d2fdc706cbe9d6fd7af598455de26f3d98d8e4dc0ae6a8b9672f6c03","openssl/crypto/evp/evp_enc.c":"cce46922626fddde89b293e57d9618ade8162fba396dd3219cc05101a71b0d69","openssl/crypto/evp/evp_err.c":"d9defec02b27e2a146b6eca952dc8442c817e976c80904866f57b73d524341b8","openssl/crypto/evp/evp_key.c":"e6607a748ad0f59bcb41fb65341f3092ef6f776596c4e757e3467c4d6eb23835","openssl/crypto/evp/evp_lib.c":"04e61c90c042d423532d0991f68894394dd7ace7348b1f8de97eaad684d5d540","openssl/crypto/evp/evp_local.h":"1125de0e536f93ab744e580cf86350977681f93d6f6f3756c86725a74d7e9e76","openssl/crypto/evp/evp_pbe.c":"d35b96f74c9a4abfbaed7b4331047ce2b74374d2ee1f253fe8f7ad1aa859a178","openssl/crypto/evp/evp_pkey.c":"47223df9ca9ae75ae9288f66bb2f705dcc20673295595e5aa1b98256c69b717f","openssl/crypto/evp/m_md2.c":"cc3d0201ae7928dfb8488e06c9238cd75cd6d1c8afdc3748d66d097bcee82e20","openssl/crypto/evp/m_md4.c":"dbb59fd4839783fc0f27bcdb7072bf9603ecbd111f60e86e117561af46e8b04b","openssl/crypto/evp/m_md5.c":"bf7492079876e0a628b82f8b6bdc71563f4d4501ec169c071eec2d0074d6d642","openssl/crypto/evp/m_md5_sha1.c":"9ea3a96f8fae43da1fd0c4a821b68495a52b253c93ac529c9e60f19659483b3a","openssl/crypto/evp/m_mdc2.c":"347d2e4e7466904b60a016f99ac167772ec1c548ff13375b89b18842e7c91ce3","openssl/crypto/evp/m_null.c":"93396bdcb42c7ca0a32a4708c3a17d6d659c123dc70def32d572468f5eae6f12","openssl/crypto/evp/m_ripemd.c":"169cf92c735f5dcf6b4ba901c99e9daad9067770ae188f54dea2cb26f45e7344","openssl/crypto/evp/m_sha1.c":"3d8bd7f232cc5d373ed6f23ec16d0e36711e92eff1ba9db514a11ea536d65b72","openssl/crypto/evp/m_sha3.c":"094ef2a430dddea20b997dd39bb77742e274ddd5f20ce229d1313f490caffe67","openssl/crypto/evp/m_sigver.c":"27ebe435751097a40f6984bd8f2271eeb7cf357a87ac6d4ccc011058245a8b87","openssl/crypto/evp/m_wp.c":"dfca1381ae8eb6c5595c8ae96ac3619cdc1aed0fff6dbc4c3586d946943b659b","openssl/crypto/evp/names.c":"813349cdfbb70dd2d25e8441408f0ca4da42c14fd79806ea0159b1b6666babd7","openssl/crypto/evp/p5_crpt.c":"1adb6d06b8f335a704917885f79a0c0c587c78f481c6666f86d9284d893f86e2","openssl/crypto/evp/p5_crpt2.c":"daa3a33108d10b4233bb52b86a972318467bf6ec43bd8e242a60e2318a921d3e","openssl/crypto/evp/p_dec.c":"67a9a619393b8aa0229734ed9be6127ee28fdfbf0a22897ad71b69c608058d1f","openssl/crypto/evp/p_enc.c":"1c53c74c5db4ffaca90bc2958415298f99a88ce3c4b2f512a4bc631fb14515a6","openssl/crypto/evp/p_lib.c":"1533075e83fa9acb3eb8eb88f6bfae6981abbfa9ed3cdbf5cfd47dcbefb9610e","openssl/crypto/evp/p_open.c":"77b6849c6aaabd4e1eea6cbf4109fe563f94ae953f316ebbd18fdaa8c20c6640","openssl/crypto/evp/p_seal.c":"b00d90129b20cec822bfa52c8f46931d58e45a552dbe15f3f49df112a3c0729a","openssl/crypto/evp/p_sign.c":"d5dcf61a03bf789b27d95d0c7977be687776b478c915a0001ce9f744ad0fbdd2","openssl/crypto/evp/p_verify.c":"9bddcb790cb0c5f6af76c2447de2fd8e02a402e2c18c229782045e0f25dc1b2f","openssl/crypto/evp/pbe_scrypt.c":"c85cfc008e7b092df14f1f1de6086bb828c9086ea1d05c3a821d2d70abe8bab3","openssl/crypto/evp/pmeth_fn.c":"a4b2bbc946bb4d2f66384139a8cbf4e78d96151991544d9bc228a8600da9b325","openssl/crypto/evp/pmeth_gn.c":"3466a34a86030d86e7083d3b387d4db85d95fb2f80c99649724019efb50d85c1","openssl/crypto/evp/pmeth_lib.c":"6447da66b25fc86fec36e7726e169de8c62a3ff7fb9e0a19b6a94c3d042b74e8","openssl/crypto/ex_data.c":"5623bb2a73d34b936fdea2beac22ad046b9369506c9d31397a09d82fd83de9b7","openssl/crypto/getenv.c":"9f0b7d2434aee9963a2614b9e27a214fba6249b513050ab34985e7aa37ee759a","openssl/crypto/hmac/build.info":"bb9af1e0035a0cf7208f4ba6100365554be8ac10f1d5d0eece723d0fac44753b","openssl/crypto/hmac/hm_ameth.c":"56c2c30d57ba4443eaaa92dbe14c7d15cf34a824fd23bdb901034420404f0996","openssl/crypto/hmac/hm_pmeth.c":"8872aadd35ff9f8597a3a4d62e2f086544c2763279bff4eb191c1e06c48f792e","openssl/crypto/hmac/hmac.c":"db86ce730a7cdbe6ef9ee57353ff039b70e71aada2d09cbd42c43eac729a7bed","openssl/crypto/hmac/hmac_local.h":"67a3495876f2b776f84c7bb646105265bbe7c74f67c3f4c7820b9d6d022fcbb8","openssl/crypto/ia64cpuid.S":"f34b5edb66e3b16a8dedb0dff9067d197ec999b33c8870884ab7532015b1307a","openssl/crypto/idea/build.info":"6f12243caa237b8840094e485d046b787d390eea3e8e1df4274d2e29d22c1f65","openssl/crypto/idea/i_cbc.c":"2515d3804eafd96bf0fef5c47d49061606a995d5f6319a85240af3bcff1fe8c2","openssl/crypto/idea/i_cfb64.c":"253523f60a8ebd14a33ad86129dca3d080467c74a2d51e8ba91a7bfe2d7702b0","openssl/crypto/idea/i_ecb.c":"2083cd6bc4f4516734ab7352db2eaeb2066b2e1065881c8a4348e7c4d0da67bc","openssl/crypto/idea/i_ofb64.c":"c38bf911e6e1361615c76c6a462766c3e7cdcccabddec04e18819b6bf3ad9d7a","openssl/crypto/idea/i_skey.c":"2145c01e4c4741016678397aed68dedcdf1fb1b5c1ad1709168e6e5e58a6080f","openssl/crypto/idea/idea_local.h":"440ad054c70c6fee42667331c4536d8372caf2049ef76e58732f366ec9da894e","openssl/crypto/init.c":"2bb263f93706325c61f2d2ecef19b592021809a3ffd83e77fb6612d4c055fb6e","openssl/crypto/kdf/build.info":"eee49c5e0a5099bc7ba1994cced8d073e0438e590400cc303a19c17e3a311202","openssl/crypto/kdf/hkdf.c":"0fe71bcb78f768eb065f09a3d925fe2763c3e28fec4671d726dd0e3cb2c9cf0e","openssl/crypto/kdf/kdf_err.c":"0fedb61ca4b0a3bfdfb0f889ef489080c438046283c7af4573092c3ef0ca84cc","openssl/crypto/kdf/scrypt.c":"99b292f19298191695c2e9b893437f5642106ed1affe5cfdde68f03758c5ec76","openssl/crypto/kdf/tls1_prf.c":"a519d3ff721d4ec59befac8586e24624fa87d9d8f6479327f7af58d652b6e4e5","openssl/crypto/lhash/build.info":"6934ebf844a1756ef7ad6c13a94786fab5b6b4aca73492f90c4e9a342beb787e","openssl/crypto/lhash/lh_stats.c":"3b12d7c2ba46b9739ee6035b6d7d8fdec3d337e2cd87ec0ce1f179c5a370f9bd","openssl/crypto/lhash/lhash.c":"f5bf379f9681ebe9f1144828b9763f1095ec2b5f3d791110ef6b60056117fcb9","openssl/crypto/lhash/lhash_local.h":"c4295080821d4dc647b56b0c4128e8676728eeb88e22b2868a73156105034266","openssl/crypto/md2/build.info":"ff114b6e07a281adee13fb6d0d15f64cb7cc14143af8617164908f3dddb9e88a","openssl/crypto/md2/md2_dgst.c":"d47b4a0a99f9d630589c51c1b628c322aaf1e7fb55446ef0633681fb25d158c1","openssl/crypto/md2/md2_one.c":"1d37c2b974f9a41bce8ddd0a3b8bc3a3eaa11afc3ecb1d937b3d5ec1b0af7355","openssl/crypto/md4/build.info":"947373b325c169c3c8e7f232e254ecc16b2cb87ecd5bce73e758bd81625c7d73","openssl/crypto/md4/md4_dgst.c":"c89d489bded3fc498e48d9516dd9e1089c2a432a35a42bbe66c3159dd8fe6148","openssl/crypto/md4/md4_local.h":"e30870635cb21dc5119422daf19330f864542758e45d3f5c6b88a9c0567d2f89","openssl/crypto/md4/md4_one.c":"872416f5e31d003951e5b62e6f2f7a5166caccc63ba41cceb0b2219f107f1442","openssl/crypto/md5/asm/md5-586.pl":"6c23a2dd3325f7fda3d84d5d31fd2450c722e471a1c19a49e23315656441008a","openssl/crypto/md5/asm/md5-sparcv9.pl":"4194570443a6b459e56848d681dc93a78a504585c4e2bbb95126d07b3bb0f078","openssl/crypto/md5/asm/md5-x86_64.pl":"96a6669432191059e706c30139bf688c5f7acdb44bdbf1aef86d812c72bf49e0","openssl/crypto/md5/build.info":"9c78923fcaf42ed7e04a9e57ab643d3530c001352d833d0dd36c414b7f1b2ed1","openssl/crypto/md5/md5_dgst.c":"29ef7ffc6454efd1f76de31f485fcbad696a5e5ab866617b0ab23d2fade68bc2","openssl/crypto/md5/md5_local.h":"fb5941cb742c7c01dcc1382d47cbe8472d34fdaa24b3bca41cb291940fc5d982","openssl/crypto/md5/md5_one.c":"4e1110d587e7369c18b91bbe7d433b88d01a68454e54568d0d4fb1947879a120","openssl/crypto/mdc2/build.info":"ec3d4b9949842d5ff0b2372f3323f4b129dab1f55a97bfb399518e19381b5747","openssl/crypto/mdc2/mdc2_one.c":"2e7948368f07b0f02c517f59f73a3973e196940f02926c7290419da6252e98ab","openssl/crypto/mdc2/mdc2dgst.c":"11eaf3f8e718fca75d5364d31633e59ede1473e9bdbbfaaf04eef088bc78b2c5","openssl/crypto/mem.c":"85dd1c69a5b878a3cc98de20b6a927ce945823c6ffd2359e0d508e4ef0869255","openssl/crypto/mem_clr.c":"374d9f79d0c51ee855d40e816fbe2cca17030162d8f9866ebfc68e2a1c0f2a1a","openssl/crypto/mem_dbg.c":"20af715997e1336b3a66be3d0370bbdf01290ab551f5cff468588864141e3f43","openssl/crypto/mem_sec.c":"b69dc9a9290dd9568d0e90ca93a168c5106b8258a8e880afbb84279e4f44bfa5","openssl/crypto/mips_arch.h":"0c1160b6bb82104e8267f6d6f5de9e66df6fd3455dc90132b1c2de631512d39b","openssl/crypto/modes/asm/aesni-gcm-x86_64.pl":"e2a5b29a625159dd9a6c23f880eb1736b607e4918c1af8fc83529e046296d16c","openssl/crypto/modes/asm/ghash-alpha.pl":"3c33c85ca98065c1208d3c7e2005e436f7f2deb810bfc91b69736d4940d881a6","openssl/crypto/modes/asm/ghash-armv4.pl":"c54f94bfa356dee899ce78aec9d4381431f19e9862550a443ebbab1b83c23822","openssl/crypto/modes/asm/ghash-c64xplus.pl":"ba3e68b6a74bf2767acea24097d19c58d28f23dd898f06eac4e4fb47f07131c6","openssl/crypto/modes/asm/ghash-ia64.pl":"23d1d1359b8eb97f00f61a68a68ed4a982a7eba1a198b59060127d337237a312","openssl/crypto/modes/asm/ghash-parisc.pl":"7f0997ff284ef46222397a7302e894deac61dd3618058869a4cd285eb26e9228","openssl/crypto/modes/asm/ghash-s390x.pl":"8aff7b4902484e77c76b48be8b7cf6a4cd381be4a96e7c3de87ca49214903160","openssl/crypto/modes/asm/ghash-sparcv9.pl":"d3ac07ae68a3818e04f4c1a4ea3eed9ac2f950e046660e7156010e805dc53e25","openssl/crypto/modes/asm/ghash-x86.pl":"02ce4df864d0137ab32b488e5c3f79c3b92f43603bb5ca8be6cbc3d5f3ac7a5f","openssl/crypto/modes/asm/ghash-x86_64.pl":"260aa24d4546b6646690445ba0b38edba403d7913c09e5399f4ac5eafce7eda6","openssl/crypto/modes/asm/ghashp8-ppc.pl":"e0f1064d81d64f236dd5a729406838d90b08c27e2121096c52c413c670907e2b","openssl/crypto/modes/asm/ghashv8-armx.pl":"cb5854d36d240364c6fec6671c3db141e74687bcc5d88dbf94a1bf5cf7527e79","openssl/crypto/modes/build.info":"c5a0c305c1d3b6ca947c7987302a1d2d38f0f22fae1d3675205826c3d23575c7","openssl/crypto/modes/cbc128.c":"029978aa09c2d5349bcf62e75d0f3070950053724dd94dca6da940c0195e6617","openssl/crypto/modes/ccm128.c":"7ea24c0a5373ec9f4732954f4bae27875378c248c1f1cc1bfda3fbc2c1cd27b6","openssl/crypto/modes/cfb128.c":"83e1967f7dfcf6d03ac7f0da52ed01f4eb10e52ee106c6191a4098f9a74d96e7","openssl/crypto/modes/ctr128.c":"bf15a34551c348142d30f18f6d6c4e8e55bba35df3833d6076e5ea25e6740b6d","openssl/crypto/modes/cts128.c":"353952f605011761858ebdc8c0a9f56c449b81df2d1d4045158290f519fb9f8a","openssl/crypto/modes/gcm128.c":"ff6d62dd2a5aba155f6007d5cdfd0b0d4c86a23f6f7c2edc97e89535307902f9","openssl/crypto/modes/modes_local.h":"e9eb6afc0101d645d06a49c76cd91dc922d8b537224f130d339ba0a2761c3fc1","openssl/crypto/modes/ocb128.c":"c4f2df501f93702acc375a5f12630c62e95b81f8a2737483969472d9a377d6b7","openssl/crypto/modes/ofb128.c":"2cfeeb9562763a1b662f06b8c8beebae22b9453e77ac50ff6c379afeb1a189ef","openssl/crypto/modes/wrap128.c":"e1a966397a1ca4dcc16813367ca786409225cf8eac6038df0ad59c3a80e07962","openssl/crypto/modes/xts128.c":"174f626aad1d8bbd18f57b7d689d832401c9e51c1b4f999feffd682bed20ce2d","openssl/crypto/o_dir.c":"c62dd0f9bf71744ba93906522a39ebd1678ef102eac315c8661c36bd46fd3291","openssl/crypto/o_fips.c":"90917fc13bb8faa86f5c442bc650808330e3684a56cc4a54e0834678a70e7c02","openssl/crypto/o_fopen.c":"849a9fe62b26add36b65231c0e9faa1436d0f7f61bb921994f7a05d43fc9b66e","openssl/crypto/o_init.c":"71faba14f840d84ac595b4bb07f2a02b714c5a1ea28a72873b265765268e2625","openssl/crypto/o_str.c":"58f3c1b0c70b860a973145a4e2ed049cacc4ad09b4dffebf0af1c13ee0ed972b","openssl/crypto/o_time.c":"33e4971f94b1e6577a580e78ca16a3b9b40a5f6874e860aaa1ba95bae0462b25","openssl/crypto/objects/README":"ea1cb7962ba3ec620e533d2ae20de9d31e637ee8335886a8e9867e52ab0f3215","openssl/crypto/objects/build.info":"e8684ea0bdafbc725d38a799848bc2ee106bef9eeb75794790bb55779fa5fdfe","openssl/crypto/objects/o_names.c":"58c4a330bf6820c7c3e9ef6d163834449d1216ffde7faf2babb366ea785b1e85","openssl/crypto/objects/obj_dat.c":"7291e67ae242bb59dffa0bddb5a4efc24fea27dac94bf08d16014d3767bfed32","openssl/crypto/objects/obj_dat.h":"03456c2351cd0669e6166a735df81d2d3854f9181769f4e21ea90eaefedae90f","openssl/crypto/objects/obj_dat.pl":"5b1adc9c32ed9cb0931525ebcac88cb13eca635d01082215d02a3773ff93a761","openssl/crypto/objects/obj_err.c":"dd742c38b0b28d04d7b39e163236513b589f6b7780bafb57fd2997abbfe17cfe","openssl/crypto/objects/obj_lib.c":"c1f5721213e0d9466a9d61fc482a2ecee9b87277eead6095e0872c7ae509ba43","openssl/crypto/objects/obj_local.h":"c0a87d694fafba3b8fe96b184a77d9107c55f30e239cf93d8f89cb09bf6d827d","openssl/crypto/objects/obj_mac.num":"95ae10336125c0b5d5d618c24be928d3aa2b97ed7219ebb607b42a8d5720db61","openssl/crypto/objects/obj_xref.c":"4843391d202580b48bd01c603c595dcc4a8bdcb2e40cc67c53680d609ffe9f1c","openssl/crypto/objects/obj_xref.h":"ff0d0aceb9f65ce5a650504e8fd056b2528f9386b26d07208e7e09f8423e8d8c","openssl/crypto/objects/obj_xref.txt":"a7a6cf5147be047cd235cd63702e611c270ab8cb482e6210801188185ae2886d","openssl/crypto/objects/objects.pl":"fd7c47a264e5c8d2f0712b5b8e8795da3c92ce7a79e5e477857c401665630cf0","openssl/crypto/objects/objects.txt":"99b4c494e35bbf182979b922d62301f3c93e38069efcc41f91711cfe194ee237","openssl/crypto/objects/objxref.pl":"24e85bf7fbf91b8b1bb6cb35d300610d0ccc11cfb146f931a0d39a8999937fda","openssl/crypto/ocsp/build.info":"c376f4387ed224b780503c83cc11c022896ceefd487649d83dad3c3f12e8a91b","openssl/crypto/ocsp/ocsp_asn.c":"3a1357b0fda1a0013736f2ea9b9174025893bc72c376b61ad18e97db6435697c","openssl/crypto/ocsp/ocsp_cl.c":"3696a5f991086053d2f7b913aaadb9425ef23ea3b26059a5ec2dff5a31e782b6","openssl/crypto/ocsp/ocsp_err.c":"3807ee304722a187d02114de43a5af6ad7e5bccc58f35bcbdfaeeb27a412f07b","openssl/crypto/ocsp/ocsp_ext.c":"70ad06e65b00be76733516bc413064604e740564014c0888a30ee11ceb9f2fc0","openssl/crypto/ocsp/ocsp_ht.c":"ae3c7b41ee3f1908eddacedcf114064e6f3d3cf178d0b1b589a917f1d2526d3f","openssl/crypto/ocsp/ocsp_lib.c":"87f1026201007222533ecaafc39d2e33018d422d336251080aaf26f03c833b02","openssl/crypto/ocsp/ocsp_local.h":"78752d1015577f36373c8d1f43ec1892a18004edccaa942e8c0835ac8a5cfb06","openssl/crypto/ocsp/ocsp_prn.c":"9c2367f405e1b112cff4147806897d24a40c34c0465564d14aa12b9bbcf4891b","openssl/crypto/ocsp/ocsp_srv.c":"71c8bd2bcf5eaeffc148ab8f7c95a7b1fdbb5a3e789577a4ec4bf6e9aba5cf50","openssl/crypto/ocsp/ocsp_vfy.c":"3c5a3068ba3c45aab7a45bb17ae1b549205af725222c3e3aa9e55cc0e12cb668","openssl/crypto/ocsp/v3_ocsp.c":"04c9cb4c315ebfdc57f1a0efc6e4831a08c14b679e8e48a4b2c3c930f78cb61e","openssl/crypto/pariscid.pl":"671157af7edf4eb831310affc0d44cc51a17b35d6baaa7f35b95c86e11900ea9","openssl/crypto/pem/build.info":"c419f3165a3ff2cc9e5998a03117291c1183585c2b8823b37a5298ae9914b04e","openssl/crypto/pem/pem_all.c":"5a16e9192d90974de9dbd1553dd09fa373d64366d8a90a6ac4f07b0a0af76c79","openssl/crypto/pem/pem_err.c":"bc491849f68e5f3e9c10106193a8975a4aeca7b43298098a5a81ec2191fedaf9","openssl/crypto/pem/pem_info.c":"32ee97a3aeaf487e544adcfc18e540c9b54a693fcd3aa57150271f89e906d791","openssl/crypto/pem/pem_lib.c":"061eb5b7f2ad8960ed36eb0dc082aefa650fae21a5c3326f9a125f77fcc94c67","openssl/crypto/pem/pem_oth.c":"530c99308fabff37b4b130b09754ed542705603a7666ea5133416e0cdaf0bbfc","openssl/crypto/pem/pem_pk8.c":"14447690b2c5e469466853d1b5b1d0b36bf4808861f1f074ed2f93bfe8b9bdc2","openssl/crypto/pem/pem_pkey.c":"72eca65bfed5eb61191f3f5bf7a49397fa7aa132824b9cab7c7a67b9a3d518c1","openssl/crypto/pem/pem_sign.c":"7792b412f4a8910211c8cdd40e05aeb54e614e7716522dd10c834f1908f9a4dc","openssl/crypto/pem/pem_x509.c":"74ff5cbc40207a656e02e8fc7c5f28f64576e8cb8959334031db3cf0f5ebd9b9","openssl/crypto/pem/pem_xaux.c":"c44765e20101d33853fd8f34dc9bf62a479a7015047c0a5cb341ce522d501b6e","openssl/crypto/pem/pvkfmt.c":"77fe4e179c5899330fd61e3ada9e6a2ae0f17118515b7004efced31c620afcfd","openssl/crypto/perlasm/README":"a397f0f820309ccd1a25143fa8bde5c6e5512de53add775214cafc45eb3e594d","openssl/crypto/perlasm/arm-xlate.pl":"50f1d3fda02dd7b00a529b9087e55dce3d4c58fcae7c1508fe4dfa546dfd1e41","openssl/crypto/perlasm/cbc.pl":"73a0364ae97d052f89ba7f83283fa9893a0b7b76b0555ec4033c1357f9188add","openssl/crypto/perlasm/ppc-xlate.pl":"964569804a05f76630898a070bc7399c45ac968599cb2a438a3a0f3d1266f3f7","openssl/crypto/perlasm/sparcv9_modes.pl":"0c7ac5079c3863f13bb467d0b6402b0edb13fba04dc669e27e0989d0632f1144","openssl/crypto/perlasm/x86_64-xlate.pl":"0a1377240e2560d4628e29fc533c086b07144ffe414bb5c7d2ee614351062dca","openssl/crypto/perlasm/x86asm.pl":"fa62e615e89ca1e0775e7e8913a911726a0e4651322e9c33b040714aa20d8f71","openssl/crypto/perlasm/x86gas.pl":"ccf9de7a5e7eefa00d7cdf23f2d73538c0ba48ea75544d0ae6040ab20323209a","openssl/crypto/perlasm/x86masm.pl":"3b57d38f24c2193b4ab5c7ff603666846122198336ad1939cad482120b4f41a1","openssl/crypto/perlasm/x86nasm.pl":"5a89241db3f2532b8daca0392d32b21b6f9420a1e4b6839b2c17c80e1874146f","openssl/crypto/pkcs12/build.info":"2f59a1c0bbb1ceea9edeb66b36c8e7bba49dd64a94e8e2f16cad52c36729559c","openssl/crypto/pkcs12/p12_add.c":"1022c183931f02d204d65b44fa0886a826bfa9799e8eaf8c0e7b0f6f8da3ac56","openssl/crypto/pkcs12/p12_asn.c":"05803d4b8467c5bdb1b06da8fe40388c347bea9f2f8e54584f1e754a04f7332e","openssl/crypto/pkcs12/p12_attr.c":"f7a31189a46ac43f2a64271fc3a5ec793d79c2906b24397456e67ea930f3c0d7","openssl/crypto/pkcs12/p12_crpt.c":"baff5b7231306d2254013fdf0ea8a1798fff3051633fed729d044f938b5c9a99","openssl/crypto/pkcs12/p12_crt.c":"aa6ca363eb66d526ac24b3f126b5abd776e98ee23a5141ee159e0217e381efac","openssl/crypto/pkcs12/p12_decr.c":"0ef74163429c1e8797e5f7ff26fc9f56fb55600f02cb2d6f639cc50202bd02b2","openssl/crypto/pkcs12/p12_init.c":"fae385643529f9567d691927438ec92c8125cdead2aefe88ccabe5c8af1bea45","openssl/crypto/pkcs12/p12_key.c":"2f3e58ef6b443c0548a206dee3e611c10e22651ca7dbf7ef1157b2e201106a24","openssl/crypto/pkcs12/p12_kiss.c":"b8a6f89466d45ec6f6581db37b215383b1a84038f4f2e10ca9cdad038e90fafa","openssl/crypto/pkcs12/p12_local.h":"8a84fd4f012af5f8ab4fccc309cef6dbb9061646abfacb0d41b36441e3b2827b","openssl/crypto/pkcs12/p12_mutl.c":"f239c7d4451263b413dd507f0c374fda8080db717bb7204400eda0106b04fe35","openssl/crypto/pkcs12/p12_npas.c":"d01010c0f8dbdd3beda7964d4e68cf6c1fdd93181c77ecc4c5582facfcbd9d51","openssl/crypto/pkcs12/p12_p8d.c":"d1dcb6931499e9f7cc838e69efa9e1617b249cb0515d2ba8b45043b75b918e9d","openssl/crypto/pkcs12/p12_p8e.c":"e2ad27c98cf187843985aa71315875a207d137b3bc38d59df2da56a4ed58f554","openssl/crypto/pkcs12/p12_sbag.c":"5af3f68a0c3de9e7a6b9d8a11f3d0de577bf61d9d0b0b9590e28cb0cd75da9b7","openssl/crypto/pkcs12/p12_utl.c":"0f10379d12ade7fb5bfd5278dc75923dcfe2f52f11d8823f1a530c22fd53e839","openssl/crypto/pkcs12/pk12err.c":"738150847fbec69e993de2e8b0d226c20081e425995f64eec317b245ad175f03","openssl/crypto/pkcs7/bio_pk7.c":"d35d599d846ad941d02aea02b1031c90edbffcebaa81eea0e55caf875d6e32a0","openssl/crypto/pkcs7/build.info":"0f56496c6125fd0e2ff6e5cecdd26073f0d491a73ad96492b403936f8aee3c54","openssl/crypto/pkcs7/pk7_asn1.c":"5fad3d3ef8435214916a1a313b541480de9b233531505a3f6e0cf07d39c77852","openssl/crypto/pkcs7/pk7_attr.c":"bb9f4f93286952e70c4fbd33dd4446533a20f474227ad7fd149ac050f6637e3a","openssl/crypto/pkcs7/pk7_doit.c":"f58d3d3674c9bf0bfc4571d105552ead7366aba58d183f2792c62132be233bea","openssl/crypto/pkcs7/pk7_lib.c":"de60d7d8447e11844e0eff90f50e8008b3565cf030e805d6c47224721cbe5763","openssl/crypto/pkcs7/pk7_mime.c":"cbc67561cca2e1904d234dd7f25d4c57b42e4825e52890a7928162df3072281a","openssl/crypto/pkcs7/pk7_smime.c":"ffbe7cc41984ee7160f01a20faa341df78b9c7f652362eb03d253212a5bfc786","openssl/crypto/pkcs7/pkcs7err.c":"09607257508d8b105ecb4dfd28a929eb001eb822ad9cbacaeb5706b2efd2fa54","openssl/crypto/poly1305/asm/poly1305-armv4.pl":"d0ff864669d1706928b27aec378665cb0e3b307eee5b482ebf29abf1ca5bc067","openssl/crypto/poly1305/asm/poly1305-armv8.pl":"71288a9d6e7eef64333d9b89319fa40d149733e358c7e9eadced0a1d7d12b2c6","openssl/crypto/poly1305/asm/poly1305-c64xplus.pl":"0107057c401a6ff2b0838aab9b704736550c08fbc81971834c6f4f202de41430","openssl/crypto/poly1305/asm/poly1305-mips.pl":"cd135a12be9c47277cba5e2fcb1b27289cde632584a1e2808f8d9d3222aa3ea4","openssl/crypto/poly1305/asm/poly1305-ppc.pl":"3da40be700562136d1b935479e35d46b31295de5b45317f3ca10d327ab8f2e92","openssl/crypto/poly1305/asm/poly1305-ppcfp.pl":"af455460399ea65fa61beeb46d7a0faf1b128ca5070929b361084daaf72b19ba","openssl/crypto/poly1305/asm/poly1305-s390x.pl":"c879cb3c6b632d3cef3eba411ea0d1668491c0353585cecc8a004f30544a955d","openssl/crypto/poly1305/asm/poly1305-sparcv9.pl":"0ee8746f475278a6c7a24b5e338fdfa4225c1907a4ba677f9475db7fa3135251","openssl/crypto/poly1305/asm/poly1305-x86.pl":"1998c110caa1ea62d7bd41b0b7918dd2dae3d2b02207699773b203dec1729bd1","openssl/crypto/poly1305/asm/poly1305-x86_64.pl":"e9ed59a5ca1a014016fda2a08878b1cbc98a72f603b5031e05a2fc138b03658f","openssl/crypto/poly1305/build.info":"e4c61fef5095fa4b702b6719eeb0e5b2e68783994c84fb551a47e67990d65237","openssl/crypto/poly1305/poly1305.c":"33660bdb9e65ea21d5b76b846b79e717085fd45213b490787b48b8cceefe10f7","openssl/crypto/poly1305/poly1305_ameth.c":"1c437f1a9a51aac872479ab435fb325af2689435000df0581000195de74eb1a7","openssl/crypto/poly1305/poly1305_base2_44.c":"0ea8bc267535c740255678e404481446800c81e6aa26b21803d9311c55689557","openssl/crypto/poly1305/poly1305_ieee754.c":"c0e41ea950a69d0ee82287a6734248e3963d8918620be45c8f9ab87f7f45a2f8","openssl/crypto/poly1305/poly1305_local.h":"9ade03dbc325f7e454abbc1657c7a737a6204fd2ee158302bf8cb2b7ce64215b","openssl/crypto/poly1305/poly1305_pmeth.c":"9b871e64dac49a70d62625cacfd0717280739808cd7a4f7b37185ac01265558c","openssl/crypto/ppc_arch.h":"44a38287a18609ae24322d52ef488ba0f2b96763f324c085e29d9995934b7978","openssl/crypto/ppccap.c":"1e1064b647d738212da2175491c8d3af5c3c78c7532be3c234fd331f4de65277","openssl/crypto/ppccpuid.pl":"413d6d1e5c0049ed6a0b813ad80df78277ffcd3724884a6852d92916ccb967c8","openssl/crypto/rand/build.info":"eb3f32ca6d3d5e5b26f96ff8457afcea31bfef12b580dc4c3c4775551be9f0e3","openssl/crypto/rand/drbg_ctr.c":"e7cf60d6ff5ed2862ec84f47723a99dc624132dd5dea10b2953068a937c853a9","openssl/crypto/rand/drbg_lib.c":"2b49eeb9a9ba68f314a75a25f3b92222a9ba1238920e6418647759aae750bbf6","openssl/crypto/rand/rand_egd.c":"6e946fcf002b1a30e138ef0628e2a09175a86555bbd1741b6bc16b3371b04d31","openssl/crypto/rand/rand_err.c":"4d0b0226dd530be3cfc62d9f5192477bc19194347c0c53a8b29523b7519422fb","openssl/crypto/rand/rand_lib.c":"f5b7aa9fc4c01bc9264dc6749e5896b3232206fdbad58feca8e968d53d45a963","openssl/crypto/rand/rand_local.h":"7df626ee2d36af077feecd4069c9e1c1929f528db37c1f42404f67a2aadfc534","openssl/crypto/rand/rand_unix.c":"b832b69d852b501fbd8fee7e9c57fc2ba7a841b3d53fd27dfaa29964ad0c47a5","openssl/crypto/rand/rand_vms.c":"88b66b6e5f4d92709cd2c75ea8977df6ba22c65e1c111f7b5ddf39d0b03e06f6","openssl/crypto/rand/rand_win.c":"7e21412bfb9e04e2cf04cb6fbda165a2bd38a4d09830729c99baf0de2762b49b","openssl/crypto/rand/randfile.c":"fe187941caae09dda34edcaf5b52281f427f9f11dfd0ca77c4fcdb64f3bfb186","openssl/crypto/rc2/build.info":"fa9fad30f2000390e0b060b1c029ac28a5e8e6d715bf06cc05de1c804aa97401","openssl/crypto/rc2/rc2_cbc.c":"5d17a12887305f3e4651cac47756621be09efc1e8333e138856bd5fd477bf0c9","openssl/crypto/rc2/rc2_ecb.c":"28c2940e21dba06419be3ed19afca706e65f311bc7e418f970b02c7fb24abd29","openssl/crypto/rc2/rc2_local.h":"ed44dacd7fdf91b264373b3c9977abaa754c0df32e5fa21060261478ed7eb4dd","openssl/crypto/rc2/rc2_skey.c":"84896df1395bb27f8dd7cb7c23411eff6c80aaa081fabc8c757aab0f26ec05d1","openssl/crypto/rc2/rc2cfb64.c":"d856c9d9208df29fc204f4efa2239c94ba12e4ca686b2760ace8b8e4210bc685","openssl/crypto/rc2/rc2ofb64.c":"4de9c653f5b5136e239b61ef047f1a97af043ea95cc83486290dc76c398378ce","openssl/crypto/rc4/asm/rc4-586.pl":"e6d6ce4a453540cce69e560f598fe5e8712cf0d341de46bc02c995a73486303b","openssl/crypto/rc4/asm/rc4-c64xplus.pl":"fc651da99f08db21512898fd642212751959a58bc8450d848968f3231ee1209a","openssl/crypto/rc4/asm/rc4-md5-x86_64.pl":"84af0ad1878af80af48799fb258b424e014d34fb572903f336a66d43d2e4f0f8","openssl/crypto/rc4/asm/rc4-parisc.pl":"3fe4d93256af08b1f9357d63a48d9d9da894cc80647142cf7aaecdef02b64f8a","openssl/crypto/rc4/asm/rc4-s390x.pl":"289518afc7db683a8da31c85033f1376d574140a1a050330b88e1415fba767ee","openssl/crypto/rc4/asm/rc4-x86_64.pl":"42f8e2f8834e371c9fd78fcead28a04699e9ce13a8c0cc6033f8ad6739e38ff8","openssl/crypto/rc4/build.info":"dafb5e92c1c67dbceb1346e0ca7f9593ee0d32b565f6deec78115575882d71ac","openssl/crypto/rc4/rc4_enc.c":"698568b5fe0dcaa6f82bd2bcfa8314063857a41c52f72ce2b0d89ad785883493","openssl/crypto/rc4/rc4_local.h":"82f57383610c6462ff3c4462e4ff539e5bf66f6683d8d65c888bb6a1328c3cf6","openssl/crypto/rc4/rc4_skey.c":"fbeb154e752081d08688dba213b005f97dd269b8354bb80ea3bb03ecb429d0f0","openssl/crypto/rc5/asm/rc5-586.pl":"ea6781b05166f25ce2e23df9e6d803456bad08d3864e3947bfc6837090d999ee","openssl/crypto/rc5/build.info":"9697a4327aeaf8c8934683c3987baac00b7ddd22a5442a47f14e4bf24eba8ba2","openssl/crypto/rc5/rc5_ecb.c":"86c967263189d6e5a6ebeed489f333fb40135d1db5aab739524fd63068a3fc58","openssl/crypto/rc5/rc5_enc.c":"6a979a8f1083f257ed4baf7cd1d79888a3d56cf99dba9594fb87c4a58c7b2ff6","openssl/crypto/rc5/rc5_local.h":"363648f7b8d0a5f5ef008ab6444741a39ec5391e456f765aa6d3c1c226bd2c66","openssl/crypto/rc5/rc5_skey.c":"f42620aecc4ebf937620f848e2fb011257ca46819fd2d31ae98e4ce8345a2947","openssl/crypto/rc5/rc5cfb64.c":"7d09168e9473d4448266c0d428509233ba0d9cdf40251f801827ba67485ac920","openssl/crypto/rc5/rc5ofb64.c":"114c7a7ecb408f6b4552cc2460c0a386cef4cd823a877a6058bd9f3ebd235a20","openssl/crypto/ripemd/asm/rmd-586.pl":"707a70e32309d4e55867e57908f6202e281427a1a917a31239afa4ef7b799410","openssl/crypto/ripemd/build.info":"8659770d9841882138787c31161f0caaf5659daa1ab6ee51446825f69fed0d5d","openssl/crypto/ripemd/rmd_dgst.c":"c845d74a5629fac28a1646ab8bbb07152db302dd89d117b7b133836638d38cae","openssl/crypto/ripemd/rmd_local.h":"b6c8dca828d8187e44350a3430ea373fd0f386e088ee0bcc65da2e0baf41bd6f","openssl/crypto/ripemd/rmd_one.c":"de45dad151221a755b1912337b048c0828b7ea9803e2f2700e55c02f6d7c2bfd","openssl/crypto/ripemd/rmdconst.h":"b4f908f84addb2c1b1fe09261d26b87ef5a20d434ae8ae42dd078addd71ad467","openssl/crypto/rsa/build.info":"257b566ae3ecacad27d828d5bfe447e9f1e0aad0e8efd3c212f15df49ee913cb","openssl/crypto/rsa/rsa_ameth.c":"64eb87f86a8179f268ffd82e269cf9a0cee6670ac63504261f67a708c7bdcac5","openssl/crypto/rsa/rsa_asn1.c":"81a5a98914b8e2dedec487b3ef98c9f003d6bef33005e191322f2cd4f04330ff","openssl/crypto/rsa/rsa_chk.c":"7bfa882a20fced60b03b287230d4549abfb282cdf24a2b0f570edef80a169697","openssl/crypto/rsa/rsa_crpt.c":"da9b2f71971479da56e4f39a345ed2fbb020ef12737d417c9b68c11a7d50196b","openssl/crypto/rsa/rsa_depr.c":"d7421a277b8a98658c74261388c3628856f56e262ee97dbf41f6584a5594f81e","openssl/crypto/rsa/rsa_err.c":"4a84e10c082ec1c3986fea95fa62189e217cff91a3bf705bdc8a0bc904c6c781","openssl/crypto/rsa/rsa_gen.c":"abd456b06e48f0bfaef44e064f3fd62db6bc0fb445d23627e5ca784b93af3e70","openssl/crypto/rsa/rsa_lib.c":"b711e363b57782b03f657b372bd6311458255704ea06071e6a1dbf3f22b7a5bf","openssl/crypto/rsa/rsa_local.h":"51245a3f0b7350a846ed851692ac63bb09af2584681b31b1552bbf99241bb647","openssl/crypto/rsa/rsa_meth.c":"d51d459ccd362102bb5a4f64ad6144f077d2014a9f0cf6201fd77c3f05a1e757","openssl/crypto/rsa/rsa_mp.c":"832bea3c81f5d7d1e41daa1ae1eb4989908796f2d9574738671e9462419b008f","openssl/crypto/rsa/rsa_none.c":"f3a8bc1ba22ecef6701b80db01557078e2cf12f2b61a16b0892423ae43d854c5","openssl/crypto/rsa/rsa_oaep.c":"c938fe57f010f532552676fa9b58f0d6d742ab5feca031c754a95a9bcda6464e","openssl/crypto/rsa/rsa_ossl.c":"0f5d7ea188103175789c6b3573d9963b16809bdf57f0546ec68e2fada0b6fdaa","openssl/crypto/rsa/rsa_pk1.c":"413f63a20d5ebdf688537cecd1904f13756b297c0f26c899906a309af63ce879","openssl/crypto/rsa/rsa_pmeth.c":"d6147a88868e540d78987e6b140ac5008fe4c94276bf49287da377faac248496","openssl/crypto/rsa/rsa_prn.c":"a9199be1c948aa3f5309307c97ecf2277bfb52e811b4f9bd16d20e3b58d96eb9","openssl/crypto/rsa/rsa_pss.c":"dfb509cd579f114cadd7eacc82554481088c5f01345f090f4cc9600df9a0055a","openssl/crypto/rsa/rsa_saos.c":"888c46b976fcc6af3ccf850883fa87ad43306e872a2a705e278481e50437b212","openssl/crypto/rsa/rsa_sign.c":"396019b0a9987e4e5f5be1fb2d7c2ac6ed62ab645b68b977669d0806c2ec381e","openssl/crypto/rsa/rsa_ssl.c":"8e070af202016dd7f216ade45a5a5c777185011d726dfc9ad486b31907f46b7b","openssl/crypto/rsa/rsa_x931.c":"a3f7a315506d4e26a050d764df2eb8f5a5177d31e4d62d48d1a6abc857a862ee","openssl/crypto/rsa/rsa_x931g.c":"2bf3eb27bf4394f7f34235f51db3c3e9eebb8a8711ee6507de6a3b90c4c32131","openssl/crypto/s390x_arch.h":"e30389a761b807be21d45ac87f11abd4aba434a10e217a2c7f271d50e67450a5","openssl/crypto/s390xcap.c":"25b0f1ec4ed1a02d021a4ce6d27bac38634abc0c2b853f53df49881858c07325","openssl/crypto/s390xcpuid.pl":"1d8a4694b69b32ab56b031e997dc8802b20380fe078fb56d7e8f62da575907b9","openssl/crypto/seed/build.info":"11a58534ceff43757cf9dbed58c94ddee01789b3992a70e3601e37637bc49ccd","openssl/crypto/seed/seed.c":"80618242c9d0f75a5ab1c7c080e857c69710854ec06329e7434bc83438e0fd96","openssl/crypto/seed/seed_cbc.c":"b775e571021fe9d348f836a010f6a5489e7f2a0596dcc5b52c1be10a91639741","openssl/crypto/seed/seed_cfb.c":"480a01e3ce4b95992b62c5a63cfb7a244122caade4845785ff92e3f8b655d062","openssl/crypto/seed/seed_ecb.c":"b6f8a61c77174d96f7857350f626f83796f34de7de6c2fa83a228811c690a74b","openssl/crypto/seed/seed_local.h":"a7f2e5ea85f994f62450a0056de9116982291a8abc12d3e971537d89229c4106","openssl/crypto/seed/seed_ofb.c":"e1897c1c4af729d102daee7121e585b77189e22afd8ab095b98689f629023ae0","openssl/crypto/sha/asm/keccak1600-armv4.pl":"542e8f46ede74eb9cd19c72a49071bdf91ad78b75c7500481d5c59c65afcda25","openssl/crypto/sha/asm/keccak1600-armv8.pl":"4b3770611981a2832588c9f35e4f02e38b2f9ecef3ca23db62a5a25f4a17bd96","openssl/crypto/sha/asm/keccak1600-avx2.pl":"c12ee719d061ed159fcba309237af8c11deb2a19606320f7a9bd96c97467ca81","openssl/crypto/sha/asm/keccak1600-avx512.pl":"6b60549e38f1d414fa7a6b22ac3425676f3dc13da2076b3cb1ab83fc9b007dc4","openssl/crypto/sha/asm/keccak1600-avx512vl.pl":"b7162d20919c3677c0ba5b9c15f32a7b93da382a8772db9e9c01d96dfcd59b09","openssl/crypto/sha/asm/keccak1600-c64x.pl":"612b74de8eb0be8773a0b06738a39deeb3897059fdd8a85c64cfd910dbba0fa5","openssl/crypto/sha/asm/keccak1600-mmx.pl":"b0e6895f1c1b2c32387c7d3b06fd474506a6017e55734e4975b0643c6bcd108d","openssl/crypto/sha/asm/keccak1600-ppc64.pl":"b22b70e115f4c24e0c17e916954e0e6afd0c9593e65207a3735ad89aeb97402d","openssl/crypto/sha/asm/keccak1600-s390x.pl":"85a7715a8edbdc5636a638da798ffa8b0a99320f1252e6222f2d3099b722b6fa","openssl/crypto/sha/asm/keccak1600-x86_64.pl":"a14915e8a91fb4a15054ed7c1ba6e508e86fc69c3ff5b9073e0600c4846e0656","openssl/crypto/sha/asm/keccak1600p8-ppc.pl":"a8c7a781949b77ac99f175a345c773343818e21c7fc9984f0e7199d301e67c22","openssl/crypto/sha/asm/sha1-586.pl":"eeb0fc4fbcb984038ab1b1c15dc5afcffb11913f9fca00f8d4b915d9798bb400","openssl/crypto/sha/asm/sha1-alpha.pl":"cd51ce6fca67e62b73cac97ab23fe72ce9cc611135517a3ddc1eed5c31fcd87b","openssl/crypto/sha/asm/sha1-armv4-large.pl":"0a06172fa5a03fdb7b99c7515b87a508d83f2dbe319cd44bdd52a9d5cff96ae4","openssl/crypto/sha/asm/sha1-armv8.pl":"6596faa8e1a8a6472ecab5638b39554077451901f2fff8f51eec38ffbc9cff5c","openssl/crypto/sha/asm/sha1-c64xplus.pl":"f92bca18470640470899a721878a6b70bc5791a30da8129d9de88bbd2a55a79a","openssl/crypto/sha/asm/sha1-ia64.pl":"f8a627a74526c3cbc258af9084971ef1c5f88bea15ea78d1dff8bd249a73c01d","openssl/crypto/sha/asm/sha1-mb-x86_64.pl":"800cc6d88fb5663b7f150eb3d7c4902b65c4814308b969803b41588a6ab12236","openssl/crypto/sha/asm/sha1-mips.pl":"6be7c374df5c4fa5f54170a785aecdb9fa0a254e9a4a9add71e00cc71b2bf7e3","openssl/crypto/sha/asm/sha1-parisc.pl":"84e61839ebbe074f1eb9af7091afee054d2915c8d37d49ab744e5644d2ee3753","openssl/crypto/sha/asm/sha1-ppc.pl":"e13e35de483cd2205d94524bd56c459fcf079e038bc7392fcbe3a8086b297a70","openssl/crypto/sha/asm/sha1-s390x.pl":"119b51be4107546b803fdf4f4903c2dac5153ded1903388c8f73415eb8980f7c","openssl/crypto/sha/asm/sha1-sparcv9.pl":"34662072f7db2945d9291cc84ef51a308e6aead68e500d24dfce744dab4b9cbd","openssl/crypto/sha/asm/sha1-sparcv9a.pl":"e23a82eb0fad844f4e150112948a07748033f819a7fdd6a17465ddc3af9b77b1","openssl/crypto/sha/asm/sha1-thumb.pl":"4e49b02927a01e6448717e71647ceac30dddfd9f86532cbc16fa9a1281ae239e","openssl/crypto/sha/asm/sha1-x86_64.pl":"ba4b88674f454bf022b838d93ef5b2434c4e618c32836687afa00a0ec636d426","openssl/crypto/sha/asm/sha256-586.pl":"1202d1efbd245d5dcb1f5bdab86ce95a60f97c86f2bf79e8cf011e2005d7e826","openssl/crypto/sha/asm/sha256-armv4.pl":"d0c38f7f021c358624d6845fda1cc2e278b4e8523efbf59de627afae31a69954","openssl/crypto/sha/asm/sha256-c64xplus.pl":"65fc995ad25e0e22cdc1d429c02d27ed88495350093b3256ece3adbe6fbe7817","openssl/crypto/sha/asm/sha256-mb-x86_64.pl":"bc2549bba79c9367e749da71ab40f0b9a1434b87fd3209fdf414c9342ab7cbf2","openssl/crypto/sha/asm/sha512-586.pl":"8ce885933bf41c9624a7a51e42abcb32fc915d61a1e7de3d595281d3d2592af0","openssl/crypto/sha/asm/sha512-armv4.pl":"956283d9ad4de0489cab2e32135826c3fcc14d7c0efb991a0fc72b8cc37ec666","openssl/crypto/sha/asm/sha512-armv8.pl":"effd9a393a181e0595d42d1c5d4a249051a0c62b1ab6e36cb472c9b3dba05567","openssl/crypto/sha/asm/sha512-c64xplus.pl":"09f9b9e042cc8f848eb852e156bd6892187eab8ce3edad8f1db29db3541d9248","openssl/crypto/sha/asm/sha512-ia64.pl":"4342a9b491a46747edab0ff7bd0f762b1f70b16f374fb415ab6abc588e4e129c","openssl/crypto/sha/asm/sha512-mips.pl":"a8a3a342b55e3fc29a55bc01d22c9426a61b62d54221f98f7e271d5307f21644","openssl/crypto/sha/asm/sha512-parisc.pl":"a86a41d9c116c552f23a6b3aff1ee0f2e5973cbd5086e04eb37db3c42acbbf64","openssl/crypto/sha/asm/sha512-ppc.pl":"129c4638fdfb3459d804bd9755c998a9f995e90c56825ad6f8c4c02261351489","openssl/crypto/sha/asm/sha512-s390x.pl":"7d35d2bba8dea8fe33027bf8ca132c6c23f13b34de3c4aee7e8b3e61b065ca2c","openssl/crypto/sha/asm/sha512-sparcv9.pl":"2148a9ab469e01ea394db0d3382839b47a61c7532d0dc328af661084b965712b","openssl/crypto/sha/asm/sha512-x86_64.pl":"20411ddd8a77be94515ebf5352936839ff698ae2b39d565b66fc1827c3be3922","openssl/crypto/sha/asm/sha512p8-ppc.pl":"a4bdbebb7cb5bc0b259b1f25e2afacd821cdbf99ffe3012772250ea16fe97adf","openssl/crypto/sha/build.info":"d40aac1bb358e2936547b3f40ee445b49c48fce159b51f74545feabac0dc6ca5","openssl/crypto/sha/keccak1600.c":"4596e079f5bbc172204cde849e4d1e5e4cab78b507a86294030d97c3a0173f33","openssl/crypto/sha/sha1_one.c":"18bf57d4750e234f7074375609a9f9aae32c5872a7fe0c16a61e2a3848483708","openssl/crypto/sha/sha1dgst.c":"ae0dab96e2b0d8b89fd47bd6049e70fde583dcb4a16e5372a2745f7e1fa74a4b","openssl/crypto/sha/sha256.c":"3c03556ebd787b018f747ff3c6d84ac08a1d458b6367a172560ce20a114e8109","openssl/crypto/sha/sha512.c":"4bc230ca6efecf8391b0c7c114d6096f7aeb0dd09bb573d98db2b71df788b855","openssl/crypto/sha/sha_local.h":"604eb9ba98aec825f308ae0ef400aad2331513df7d47f1604ff524a4915c501d","openssl/crypto/siphash/build.info":"380f0a4c8fcd9697eea92f2b5004050d32a55bd6893a6ec8d03bc316107c8f67","openssl/crypto/siphash/siphash.c":"9da8a7c5156f78546629c115fc21ab5478ffb249fdc6e797ac93fac05313bf70","openssl/crypto/siphash/siphash_ameth.c":"17f0f6bce14518f7a7ed4c269fecb66d6bce4149e49c576e39c54bfc89017088","openssl/crypto/siphash/siphash_local.h":"d6325eb9c432f35d9b9f3c0ee9c7785f70078d95986e3bfc3010634d76a026ac","openssl/crypto/siphash/siphash_pmeth.c":"dca7f5df1fcd2fc457918df9eea7388a9709f92994c22ce2a8d5c50f3d02c803","openssl/crypto/sm2/build.info":"a0ea4917c09e9f2153eb4f722a4a419b1437e358d6dd5a8b52ad3cd6e99b45cb","openssl/crypto/sm2/sm2_crypt.c":"ad218bc77938bd3f1aec54d1b0c2bc369ac8ad74df619da4ac68f6f9937535a7","openssl/crypto/sm2/sm2_err.c":"9dd7b6bcabdfe8ca1eb66374370bc1708efb0db5dccf7cd296174740fcf2f771","openssl/crypto/sm2/sm2_pmeth.c":"e19cc4e2799eed41a4302057ffcf16fa34b1d930edf80d1cc733b0b40887a916","openssl/crypto/sm2/sm2_sign.c":"203260b46105abc1525125e5a83438c7c5a6bf19ad216246b55e3609ec58c1d4","openssl/crypto/sm3/build.info":"619763e5cd74bb7c9556ba97dc559ff219a7e0fa25a704579a2b9b1bda1f3610","openssl/crypto/sm3/m_sm3.c":"102b12f8382f33279c763aaa1ef6ee0923723dfbcea41b07e465c01cd2cd72cc","openssl/crypto/sm3/sm3.c":"192aa39e787fa67d2ad800cc5b8d1c80d5c6cc6384786680d8eeb14185c057e9","openssl/crypto/sm3/sm3_local.h":"02cee467d273f55810be185590e1026b1fda6f47c526fd66f449864fcf4d83ec","openssl/crypto/sm4/build.info":"e447c13dcad1e3a3cb2d582b4979be34f1dd852cdee1e325c87a8f5f3658138c","openssl/crypto/sm4/sm4.c":"287c8e298c63cf935bbd7f767abeee1a6a9c84fd5930253627bc8466fc1651ed","openssl/crypto/sparc_arch.h":"210a902b386e5a3ffb43f1e634d9a8c0069c84c572fee3285dfbe446643dde95","openssl/crypto/sparccpuid.S":"9f67d1aa1a9c642198abb67ab2394fe7c9375017822f8117679d14c49e1c0ad1","openssl/crypto/sparcv9cap.c":"50bd953eabbcaa6263185495b0500f481dc223944868ee8d1a80d8e19617b408","openssl/crypto/srp/build.info":"117640a1010ab716e020ac03b532c763a7fa3c2289633098504ecbe94995f376","openssl/crypto/srp/srp_lib.c":"0f2f0ca489d8e5417fce0f76e13d732e77451c106f39b4d6a4551826ba5945b5","openssl/crypto/srp/srp_vfy.c":"c867463872f22da52b531ff8d18efa779df69788dab8409d4ea870c59d9ae278","openssl/crypto/stack/build.info":"08ddcbc25f8fef0aff834fdf79a514eb23ee9ce8b3075499e2f446870ab11ec3","openssl/crypto/stack/stack.c":"61df807a619658bef83d8d02942a22e6885a877469a1083ef12115d9a15476ac","openssl/crypto/store/build.info":"411fc258658218b167097415f8d086d2543dbe580ba03ac8f6c9b6b0d3cf2d49","openssl/crypto/store/loader_file.c":"32373d4a54279da6a2838eb903f67f75ba376b083d58d63921c5768099c2d576","openssl/crypto/store/store_err.c":"c5a0e3525c808c54a44866279a2e23cbb32a0ee057b22045de66a6bca9e5d345","openssl/crypto/store/store_init.c":"c77b777ba036a9ebdc6916608455eaa9db23eb5168ae2be94b23c13c697086fa","openssl/crypto/store/store_lib.c":"99fa9efd46a8177fa44155e6986ca01d80ad1fc841b30ce72981e62bb65a126c","openssl/crypto/store/store_local.h":"f9faa746e26e8f8efd1c2d52d6845f00f7e16e15f80e7e112a5029f531b365f8","openssl/crypto/store/store_register.c":"69d36d882b2137f51672f461dba5bdbb697dcd22f8c6c36035e8c4f92fa2c96b","openssl/crypto/store/store_strings.c":"a926f46d67fbe57747a3dfc5ac8aa01c52a196e8359db44be88dd391f1b0c045","openssl/crypto/threads_none.c":"ce84a6a047a1d5bd4dad0947b3d6e8a166a1f8daa2b40aaef30292bd0736a952","openssl/crypto/threads_pthread.c":"27955f2f4be96cc85e661c9998940f84bd03532b08eb1f49825cb480bb11715e","openssl/crypto/threads_win.c":"e813a198a1a0304781d936eb79132ad09b9578e4702b59f8c3d3ca3c7d3de56b","openssl/crypto/ts/build.info":"f9908ee4ca6a1b8a13a050e2864f99ded2871603aef152b80dede8cb7d23a1d1","openssl/crypto/ts/ts_asn1.c":"6a4ad1328934a8686e43d2a5d5b98b7aaf022ce31fb2240fa503d2b55c0f6159","openssl/crypto/ts/ts_conf.c":"9f58af31f6003c52a4940358e4a429a5274b7abafa6b4f08e5ca8457cf1e10ac","openssl/crypto/ts/ts_err.c":"c0de1090451540dfc4266afe1fcbe348e659f554067f79397d934955123df1db","openssl/crypto/ts/ts_lib.c":"1799c88472a43a977b5e3b481e1f5a68611f3fd40c5711287af8c7dd67f8f6b2","openssl/crypto/ts/ts_local.h":"e74f27519c9ab2dd9e76a6913f0645b034872a011dac5028aeefcb0d3814f828","openssl/crypto/ts/ts_req_print.c":"3ccc050fe21d386022d0d830f6eabfe2a4f5ddbee93e7792620dc6d5f7e55653","openssl/crypto/ts/ts_req_utils.c":"36ca2e7fe8dadee3e1869aae453afc14f212f62591282accda69acef8d035f08","openssl/crypto/ts/ts_rsp_print.c":"c575672e3ccaa71d7049be21f9fbf26b68a5c644538ccb0a3998ad856fb3b214","openssl/crypto/ts/ts_rsp_sign.c":"30fc28979a34af230d114c57b5eeb5eef339e9ae9cce816962cbf6a57b170acf","openssl/crypto/ts/ts_rsp_utils.c":"1e621128663bd333f579603633e14d865ddcb4a9cefbaca7de38a473413ccf31","openssl/crypto/ts/ts_rsp_verify.c":"0114d77d534ac878fb08c7b464e233a910f8fa43758d7e9b5e844ad674d2495a","openssl/crypto/ts/ts_verify_ctx.c":"e76bfd9e4086c03f271b50c87d442eb7e0b9eee40e65cd35a3855b676c49a8bb","openssl/crypto/txt_db/build.info":"799c270bfbc9d07d6f8b395ad253c0a8a2f20550328fad5a6691e79af4694819","openssl/crypto/txt_db/txt_db.c":"e4d09cbfbe769ca22ff1eeb7a258955418565993f9c27c8968e8b5580b2ee529","openssl/crypto/ui/build.info":"5a483732ca46036c608b7e20ddd080f9a4b2a171c85ed85c87933d398b6b4514","openssl/crypto/ui/ui_err.c":"027d5bcb2cbb2302b2a61936f79f9eccd9a06700bd2cc41a3485bbd554eeea8a","openssl/crypto/ui/ui_lib.c":"946edaa4b9ede3bad15da10c64d0e4a1ee5d639efd8102365450a5ae4e36355e","openssl/crypto/ui/ui_local.h":"e07419f8321ca0234282df11a6a616e7710194753b46aa84102c34cd7d40f46e","openssl/crypto/ui/ui_null.c":"803d2ae023fb6d6c3aacb4a2cca0165f90e545260d9fd544af8d1a9a751b243b","openssl/crypto/ui/ui_openssl.c":"cfb4eef526d429de853ae26736cd97f873cc2a9170a8fd4df69eeea2d6b95e35","openssl/crypto/ui/ui_util.c":"c6350ba9b1a59660e04ac1a9670b5c387d470d0d9ebcd77aa722f2a66e551199","openssl/crypto/uid.c":"5857bbc5fc7d03372d9c783e7f2af90c8860f1274e75363a976677a8b1f934d5","openssl/crypto/vms_rms.h":"d8a9dea1f7d6d2d47b4f8e13b44300c240b4215724d019459f537f0ee8de65cb","openssl/crypto/whrlpool/asm/wp-mmx.pl":"887038977e3f1fce6ce2d687ea7a40323213ab43b0ef95eb5b2c60f0dfaea948","openssl/crypto/whrlpool/asm/wp-x86_64.pl":"c758c6d370f26c614b05321069ec0678dda7c993f8a1864b1e01c12e52264512","openssl/crypto/whrlpool/build.info":"af3bc2b6c3963c272a6eb1fc015578e3b13c8edfc3a857ea7817fe5337704e9d","openssl/crypto/whrlpool/wp_block.c":"884f1ec2247d0f1426e4201ff7f0f7c9a24419bb2bac3ee5c6fadaec213f861b","openssl/crypto/whrlpool/wp_dgst.c":"1af49127d90372f8cce04f89d8c8153f053ada1383382a01d2eca73ba3faa32a","openssl/crypto/whrlpool/wp_local.h":"ca85102a6f440eb9c3d0958b79a3266fd6f94fd8da49dcfc607719183c57bd78","openssl/crypto/x509/build.info":"2cc54f328ca08c22601f6098db0ea39519b0ae34c5823eb84455c31523c9ed4d","openssl/crypto/x509/by_dir.c":"75cb278fa053382bbdabdd446a023dd598a4c52450b3677b37235dfdda0933f7","openssl/crypto/x509/by_file.c":"12c78263f35836fab4b23445bf93f7a454d12931cbb0d19e7dff56ea01c14593","openssl/crypto/x509/t_crl.c":"e929cedbafba5ec1de7062a8d9517521a58aa5ca30f0e58f92022dfb14fc2a1d","openssl/crypto/x509/t_req.c":"e63b47be322906b4016172cf06c495f846de9433684bba212d6fad17e2068075","openssl/crypto/x509/t_x509.c":"ed54bdf66877a48bca8e1e83a2a80d63e7e78b23d68a475b88db1c8ea5ca647f","openssl/crypto/x509/x509_att.c":"d510f09e9621a1a2c0705f97707d897dd64e8bb0ede440e819a742f45ded8148","openssl/crypto/x509/x509_cmp.c":"cb6507a2cf06f60e3423074f4f1b719d53a6cb85620ab326288dafe1819fdd9a","openssl/crypto/x509/x509_d2.c":"0992dfc3f6b6352c81d19c81b82d2b0783ca07d0928e141a86ce3464c586d19a","openssl/crypto/x509/x509_def.c":"131c4ae5d99af123f2e1dc06702a8de35db096b3b447dc45b17c00125ae9f3be","openssl/crypto/x509/x509_err.c":"dff444901a4b74160a763714e7aa015c4851468cccb0fb3168c63e20f901b9ad","openssl/crypto/x509/x509_ext.c":"5eae60eddf4390506a3a2ffa44efab9b7ccee5a6bf884aaef88d4a39815b6472","openssl/crypto/x509/x509_local.h":"c9bce0ef40ad7144218e5fa315fc74572827624c717d89abedb0667bdc86ef06","openssl/crypto/x509/x509_lu.c":"c3d06f8a32bdd302933c10f453803a845f45200e921155607b753be949dbcf7c","openssl/crypto/x509/x509_meth.c":"6796892127d4f8c2ef720cea7696cd21de308a776c75392b1b5c6dcb2b9b77e9","openssl/crypto/x509/x509_obj.c":"85d5382a42ed915057618ae6b835244b8ec5ea6997449b1e7b737fd7a51dbafa","openssl/crypto/x509/x509_r2x.c":"20d19f6acc837f8ffb4a3b2de311a581fa471d52b10a376286bab49026ddf42e","openssl/crypto/x509/x509_req.c":"fe4991b7353ade023f6180dd7d7d045cd67f65996cb37b1e01a3fa0c520953c6","openssl/crypto/x509/x509_set.c":"f9fb63e0eb93644263fe325a5a2a94ceccc7c2eb21da23139158d18ccc265bd2","openssl/crypto/x509/x509_trs.c":"e2a1b8bfd56d6db5ea950815d4e85555164032c352de15188cfcb9af785bf49f","openssl/crypto/x509/x509_txt.c":"a680a1fdf94210072ca35dab8df36995ccc5af544e504f39d2ab5c321147385d","openssl/crypto/x509/x509_v3.c":"d92b87f23dbc501babd1c5508ca59d79e932a2a3be6df4abcd781ab621dcbbd8","openssl/crypto/x509/x509_vfy.c":"31cfed8b018850592704e5f606f6c5b8cf908e04873e4adcf5cb94750403dda5","openssl/crypto/x509/x509_vpm.c":"d3c55c73b8211ba0cd5ca25c7e27a87ba1dc87a2b28ec8e25eddd4d7fa7cdfa7","openssl/crypto/x509/x509cset.c":"2c02e058ec0805af5ef8aeaa4567c367a1851648d6fc333a9a22bb5a7d6030d6","openssl/crypto/x509/x509name.c":"b5d38d5b6bc0b8bf4b01e49d65c45f5638b548f288cd11d73e0b1ee09218672b","openssl/crypto/x509/x509rset.c":"51a81f7d7243738732b1cac8d98fff07593c9b6413e72cbd37eb96e18ded5145","openssl/crypto/x509/x509spki.c":"aa04f3f9a2f742262d4b9ff64b398d62f05c5a11e48f89955ca0b6f876365dcb","openssl/crypto/x509/x509type.c":"41dd92e873e38a474c52aad7c9964135439a68427b79dd4b2ddc2cbb728fad5f","openssl/crypto/x509/x_all.c":"8343939c8374f0b8d984bccb938ef3efafcc67c785dccdd99aa24ecbfd8ebc64","openssl/crypto/x509/x_attrib.c":"3e20fbc5e8660a515ae0a137e4c507c51834e21f79d9a5e1c4effb1ad16f58db","openssl/crypto/x509/x_crl.c":"18fe6639ea4a53105a334084fede231274000f939004721ffeb1bc971c3d7c8a","openssl/crypto/x509/x_exten.c":"693247d2361c016badffa8417994f6fc8ea20e2c5b0a3e9574d11ac707175fcb","openssl/crypto/x509/x_name.c":"9f3ac9da6d139a9c5ca5e8570e8f7ac8e38847bf4220bf6eecf97eb08fd47458","openssl/crypto/x509/x_pubkey.c":"e9a5df4a43624b038d308037c4f3004410690aedb03952e0942f9830e5664921","openssl/crypto/x509/x_req.c":"e10b418b414865ffe52d871e6b73511505f1eaccdb1beaa1e4aee75229dce8d8","openssl/crypto/x509/x_x509.c":"0d94d9578d50b37bfd7518385f4b3de376805811709fb362e5f6592e3d3dc9fb","openssl/crypto/x509/x_x509a.c":"15c9d3212720ba734fe72ffe68958ecaa38b85aca4c0b2d1c081540badf42fb1","openssl/crypto/x509v3/build.info":"ac99cdfc6def24ae8d87e06165d78f76e6db2de52a84e273aa65c1b68ee4aec8","openssl/crypto/x509v3/ext_dat.h":"5594f35d016d77119f3381d09ef25d278b8bd0999a9a8c84fee44211c48f5c33","openssl/crypto/x509v3/pcy_cache.c":"6610d69659376ddc88c7778f2430fe7771a3c96156f677cdd03414ddd028ca64","openssl/crypto/x509v3/pcy_data.c":"b310afb45c06650fb89324289474962e8f87aa8555387e456280d1ea8f723ab6","openssl/crypto/x509v3/pcy_lib.c":"d5dabfc31ed80dc2f4bd2774c3d5e66763924efe9a055fde0f863610d38b1577","openssl/crypto/x509v3/pcy_local.h":"920fb9c6d96f0c8b22b784d372c7c63bb498647f6b7b90881062eec2e78c346e","openssl/crypto/x509v3/pcy_map.c":"7ee7e0359e5f50415ba878e8f73b4f2f7a451f716b74a91253d18cd23b05b4c3","openssl/crypto/x509v3/pcy_node.c":"4b0aafb158e95253c809155f7c579c5b8d4ea54476e86112e923c9a8b69754c1","openssl/crypto/x509v3/pcy_tree.c":"91c5d0c135784dc9d1da4d586f2e49f6c386c0d0eab1271317361396987a6f18","openssl/crypto/x509v3/standard_exts.h":"561a315dfed93c1c074b2288210afb3a2a163db9389e281e866a19ae2f8c05e6","openssl/crypto/x509v3/v3_addr.c":"ecf3a81f723ab0b1bd17389c6a398d6dc51ec1be58c2a05886989f53310d549a","openssl/crypto/x509v3/v3_admis.c":"b2090e98e684f0fca9f016f20c959f1c630c8eafa38b850494ada0a8c191fe87","openssl/crypto/x509v3/v3_admis.h":"8dc121a741f2345d3ea1cd1258821b83bf99950d7590f0e8e157d5ff3f673592","openssl/crypto/x509v3/v3_akey.c":"3d50125fb6e479a7fb59e3a0afe91abeaafafd5c5ef3896536a21658a07894ba","openssl/crypto/x509v3/v3_akeya.c":"181c9116647979b27ffa2833c2423e48948e865d56d18d6cc2eefb5c31b32ac0","openssl/crypto/x509v3/v3_alt.c":"cac155e95186cee104cab537c82de01162f1296402b95e76d5510921849cf79b","openssl/crypto/x509v3/v3_asid.c":"5547bff1f478dcf55619ee0578cf72ef16defcbb11b7c51b93c5e01cc3b6113a","openssl/crypto/x509v3/v3_bcons.c":"647b5cf5cb8443d071d33fc0bf4e324ce232664c2e2db4aed2ddfaf1dd504ce4","openssl/crypto/x509v3/v3_bitst.c":"a1d385a3aa75f9f43252d80ea6d5d0949520910d40f5262efdcf730b7dcc68c9","openssl/crypto/x509v3/v3_conf.c":"a68af11573fbdf678c010cde17d2dab26645c3c1901b5685cf2ba60421656bc5","openssl/crypto/x509v3/v3_cpols.c":"d6398b7d6ed5f65f6dc1cd30e5f4d275d86c31088437f5328b8fd4777abe123e","openssl/crypto/x509v3/v3_crld.c":"0d1b5df4977c278b76ea5d560afe93d99d0b3d54d1dff54a9563f39404d20e1e","openssl/crypto/x509v3/v3_enum.c":"dbfc84f80c93e5c2cc6908ed66f5288c57346785a5228a2772a540f6d77a8d5a","openssl/crypto/x509v3/v3_extku.c":"8d515314dc30aa17016e8a3ea96dc633df24507a88180cc81e8629592959c6c8","openssl/crypto/x509v3/v3_genn.c":"4aabfce928a6f13155ac87205e17918ad92f9aa20228344cd8d8674930c9c4fb","openssl/crypto/x509v3/v3_ia5.c":"03b7078100cbb644ae1587095fd90fb9fd81c014fbb14b5880acb0bd4d369cf5","openssl/crypto/x509v3/v3_info.c":"a704352335f9ce19b84d9e064ad2bfc76a538c8d6473ded006ce58f8769c0d03","openssl/crypto/x509v3/v3_int.c":"a8d9b35e0d9b4b9e5ea9c665c19a3d9293b375b3064b94bd85206f6ef5c57a14","openssl/crypto/x509v3/v3_lib.c":"3a1b9823a2df628db2324cb6315f48269410649be33cc84a68f3531d2504b173","openssl/crypto/x509v3/v3_ncons.c":"62b6cefaf3d957f132745560be7afe23286dee509daae43323b7c4b6c1fdabff","openssl/crypto/x509v3/v3_pci.c":"9c350ee6a263e6524211bcc01f3d682bb4c9cf42f024f219405a9c077a0d12ef","openssl/crypto/x509v3/v3_pcia.c":"1f03c6643126ce61047b25730a43136cd957ed545b0bb3955f3add35b6142b18","openssl/crypto/x509v3/v3_pcons.c":"6bae7cb1bf646774af20eb4e7bd307e2f0915ee2b67a0e5f20e4ab72d7d6ff37","openssl/crypto/x509v3/v3_pku.c":"38fdbd7c25f247cd67bc2b65a88bed20b806d9de59bf95aace8f3a05b9a56964","openssl/crypto/x509v3/v3_pmaps.c":"7c66d9ec0fc5f7285002ed589d51f75beec9c9d9f9343e1e0f4721d00454ad65","openssl/crypto/x509v3/v3_prn.c":"3e0466448d6e7a8547d57c3266e069cdebe9b227a1766b989490c00f86fcee9c","openssl/crypto/x509v3/v3_purp.c":"803111de281e23a11904942114ba9ada725f1145884e6f87985364e15b2e747d","openssl/crypto/x509v3/v3_skey.c":"4b09cca8fc2a3c8d48aced50af76bae6b8e2363401d5f00a0f349867a1a6a41a","openssl/crypto/x509v3/v3_sxnet.c":"511d8eca602a1a6bfc2813449fe2973bdb81715fd92eb06cbc5700b312f7ea33","openssl/crypto/x509v3/v3_tlsf.c":"93435b658dcb57ce4d9c09de0210d17db26e64cb490a16107c7c6dcdaef35abd","openssl/crypto/x509v3/v3_utl.c":"340022ff7c6ae71765e46d2bb4d613bd07a75e14e22d71f57753941ab135ca4b","openssl/crypto/x509v3/v3err.c":"a034feaf8bff0db295a4074ed7c3448e885c0d4234fb458bce9c0df23fd8c548","openssl/crypto/x86_64cpuid.pl":"45435886ac3894284a39a26dd700602e4b5bd7f63d3defa9e9aef908ef7578ff","openssl/crypto/x86cpuid.pl":"2801d3febb337a6632e9cfdf347a55711de3e59df0f5f04fe74414163ac0ed93","openssl/demos/README":"dd75e8bf6efa43f84576fb0ab2e52c17bcc3565feff860ab9262087bd336e874","openssl/demos/bio/Makefile":"117f672c377e6d6a589361119be2e9741836ceee127a84155ca19b27f3e03a23","openssl/demos/bio/README":"9e9fc749bb331abeaa5347529f6bd04d0c91a8a6d932bebfec16b4cc72f1caae","openssl/demos/bio/accept.cnf":"3446ea01ca3623b6438dd067f5a4557566dbbd8d208ae2241eb2a6b6f98098ae","openssl/demos/bio/client-arg.c":"0609805e79b17696f1baf766b77a116a026c7cf1ed954bbe8aaca24a011a30ba","openssl/demos/bio/client-conf.c":"176e114d7d6a1ab0a0eaf34b9bde6cba41f2eeb415a56fcddcc996d45321c332","openssl/demos/bio/cmod.cnf":"bb075cc2f6e2880f67450b2125186a0d40a2519651e12113ac4bc60d87b779ba","openssl/demos/bio/connect.cnf":"6aa9d12d5718ecd640b6d71b22abc332853943e4f4690b6d5ec2f992f90721ad","openssl/demos/bio/descrip.mms":"45d5237b66935b9602ea9ae998c9dd147998a00b21ba017ea3c6f5363ce6f1c4","openssl/demos/bio/intca.pem":"876ac7a17992346c11205a5e55972347eb76486e30bcc218c3a4954545e4e282","openssl/demos/bio/root.pem":"3a33842a19657f72d1a14818cd53d845e578a7bcc3a55c0ff93a911d7d7b82c8","openssl/demos/bio/saccept.c":"e3aa04980d7e3f5aad196b53bb97d467910eef289aeb0936e72287234511511a","openssl/demos/bio/sconnect.c":"3cc1c8044f13fafb93dfb395abaf8f5e6395a2bc5e1dfbe44d1fcdcf23a0e325","openssl/demos/bio/server-arg.c":"f18754bccd974016f621e417d82a7ee548ac0ede019df1278ccf51920143e011","openssl/demos/bio/server-cmod.c":"221f2aa36c686cc007c2a2385700f4684b8d43a4999b48ff918ebbf5734e5470","openssl/demos/bio/server-conf.c":"ebaf1a312465915b9606a6185bb59e5136929c4c220ddb9a4de501d36a198e25","openssl/demos/bio/server-ec.pem":"ceaf699619734a8696d669b0b5534a63a416f9cf0b7da1def7a71b45f5f252e2","openssl/demos/bio/server.pem":"57d7d62587cb493806f09fee4f8da1b0a9ea7b6e77aa43879a5fdcc85ff63a4e","openssl/demos/bio/shared.opt":"2d85fd326a716bfd18bf535d7701ae4d19416d11a460fbcc01f5c0ab344cfe62","openssl/demos/bio/static.opt":"54b4d25d172a692a062d0cf88280bf0a1728779c1227f08b5d920ec28523adf6","openssl/demos/certs/README":"c62177cd495b1692f97f3571844b1b4f873f4d811b75fe17b67bf1daa9897558","openssl/demos/certs/apps/apps.cnf":"d9386d7f5eba2af4830f4f5a4da20ef4de1bff11f4a1f209aeda513a80b52bf0","openssl/demos/certs/apps/ckey.pem":"c261be75344e362cacc629218eadcfbdd96823c869685959a3ba7af79fc3f6b5","openssl/demos/certs/apps/intkey.pem":"cba3a56ebf13674fef79721d16fbd3404b991107884b1aa628a43b6538c00429","openssl/demos/certs/apps/mkacerts.sh":"f21e64c6244d7e66d2caca5911ed9fad024f19088125d00bd9912a32c8db86d1","openssl/demos/certs/apps/mkxcerts.sh":"45dee54df9d305f719a833bdc92a5af92fa70f93f7fa9cdb1996bbfbcf0778b7","openssl/demos/certs/apps/rootkey.pem":"49c67aac894bac4cacf8891fefc5dc99126ecec6948c5c51ed31443c9cf5cf12","openssl/demos/certs/apps/skey.pem":"d0bcbe9a9ff18061856a684670a40e82d5fbd57d3c95f35d886c392ce1bc4929","openssl/demos/certs/apps/skey2.pem":"48f1d94844d0d276e8c41fc9ce9e37485bc5551e939f57ba7a4893d0d8d98971","openssl/demos/certs/ca.cnf":"751796c86aa25148cb62a05a0c95fc68271c9a5429672c72c254cf8cdf852891","openssl/demos/certs/mkcerts.sh":"2e3afbbfa11141e2f6b1db6e64f518196f43e34638399dfbf2205a34ef6b25f8","openssl/demos/certs/ocspquery.sh":"2d04b40e04d895f6ea27fcd08bc71e6e857c9954d22572ec63c2d8ddd2373f10","openssl/demos/certs/ocsprun.sh":"a669f8a3e1c0f1279307b097ec809b25a44a4d4f6de613d5d9d5e9c73ce4f559","openssl/demos/cms/cacert.pem":"a648d3e421b0c2a1bf65414158c8472b24e7684488d8b4bf6ee45de32f3d4cae","openssl/demos/cms/cakey.pem":"c7ed282861c32151a60a9aa62b860d81ed7c906532b6eaa6606b77af241703ed","openssl/demos/cms/cms_comp.c":"ba7c5bb1d344f42619748a54cce24f00f52fb0f203775d02a999b2c22243708c","openssl/demos/cms/cms_ddec.c":"cb52b2389d60413f046cd9c639b1d789dcfb664530db977b6e0c728e7a0638e8","openssl/demos/cms/cms_dec.c":"08454e874c1efedc366dfd023b691133afeffbc8531cd03f5624329c8ef5ce43","openssl/demos/cms/cms_denc.c":"86349746ba3befd25c41c1011ef3a867eff6c49cb4ec88debc1211b14229287d","openssl/demos/cms/cms_enc.c":"ea86580d64b378b5f3ea38c43e1e431b7f04d5fd9ffed63af143ec3c4cb79868","openssl/demos/cms/cms_sign.c":"014cdd3058cf2465dca51d1c8d71daaa44312fb2af0a334ac86571deae13ac37","openssl/demos/cms/cms_sign2.c":"bd6d177ef1a95870f2a2df6c2e062b5c1ddaa616b2bf0c6f1e1c78302bd29f85","openssl/demos/cms/cms_uncomp.c":"fd1da2917b323ccb45c16070ed2a965aa961d6d803a2ad01245fa34cf8b48a2d","openssl/demos/cms/cms_ver.c":"f0032ed4fdb8b6324bf28bfbf567af67e9c4c079b2c79d453adb3cfdc7c9585c","openssl/demos/cms/comp.txt":"baf5807c5d1d1cdfd0d076538509b21358c0ab2e888b51a391258c729c640b06","openssl/demos/cms/encr.txt":"f79fa5e249dbd8fc6be362b77541e48d514a88ddd60825b81f74f8bedbdb2253","openssl/demos/cms/sign.txt":"d0f8790d669a88e0401215fbf2fd36a5307783612a65cec65d9c7110daedb997","openssl/demos/cms/signer.pem":"3a2a367baf036df9f8cae8f6abf59818a6695a513b6c453e86b0c5b2cec5d246","openssl/demos/cms/signer2.pem":"adcb64407c7a6aa0b027b584197d7ca2c6606a12fc638a0c6ba532c54b80d65e","openssl/demos/engines/e_chil.txt":"a7a199c58dfe8868de7a1b0be9ae2b109c48bf11f6ac14a0cf3a2523af2c22c4","openssl/demos/evp/Makefile":"743fbbfaae2829921d9c9f76d37a8ba08f73bb3f6b322388320c480dbaa4f66a","openssl/demos/evp/aesccm.c":"0e98fd498ff2df1e1e94488afe68c925d89e38574a86b2290486e2003f5f8e0c","openssl/demos/evp/aesgcm.c":"525952c5aaf76c5b9d0a261f4a158f009fc67020dd8a6339219e00811237fdf5","openssl/demos/pkcs12/pkread.c":"d52bfacedb3f4fece2b6af661a09f66374b88506341f807f19b524b9c3bbb96b","openssl/demos/pkcs12/pkwrite.c":"bd2b804cb9d6f04b36815f5721120647771c7860109397ccc9fb33ceeb1d3294","openssl/demos/smime/cacert.pem":"a648d3e421b0c2a1bf65414158c8472b24e7684488d8b4bf6ee45de32f3d4cae","openssl/demos/smime/cakey.pem":"c7ed282861c32151a60a9aa62b860d81ed7c906532b6eaa6606b77af241703ed","openssl/demos/smime/encr.txt":"435ed2485336e5e5a35e1c03241ba1d98ab1a10b754395e014244afde90cfad7","openssl/demos/smime/sign.txt":"8a62e6d85601452162cb5c4b6a544d651b5d21e3fb9133b534e43c8088f89021","openssl/demos/smime/signer.pem":"3a2a367baf036df9f8cae8f6abf59818a6695a513b6c453e86b0c5b2cec5d246","openssl/demos/smime/signer2.pem":"adcb64407c7a6aa0b027b584197d7ca2c6606a12fc638a0c6ba532c54b80d65e","openssl/demos/smime/smdec.c":"69507f4c8124bc7cab79f61d347cc63b67ab9edaed3604f9bd0f3295f2ef7a7b","openssl/demos/smime/smenc.c":"da25fab0c1f98194bb150f45f20cb1ca9993bf17289c109def009e3a4930116c","openssl/demos/smime/smsign.c":"1ad9d5bbee5c5452be286d10754a290b78288f0c8041123de66c9c0c858837b0","openssl/demos/smime/smsign2.c":"289a8111a998a45fa59433816a23c8fe06505c4369fd9a4beb1810172f83a80b","openssl/demos/smime/smver.c":"6e09b1f8f636a0178bb82b289e434373e4f2fad02c583544d7db844a0a35a96c","openssl/doc/HOWTO/certificates.txt":"5924021ee2ddb3408212b77a918075b4d53f0fdfe5b6aa0f10aff82e58df6b6d","openssl/doc/HOWTO/keys.txt":"f1243eb87db2b3ed7d311e4eef174b8e08e6350f3c9ad13003f08df9b54be9c3","openssl/doc/README":"06848c1e90ba335bdaf9283725ed7eff467551212fb4ea701006317281f11389","openssl/doc/dir-locals.example.el":"d4d533c35de16586239014d1907eaf3d064b3f8f83e9d64aece6d0b1f730f0b0","openssl/doc/fingerprints.txt":"150faa5fb7c025f81ec510f2091dc34e3d6c36d2751ffbc38b10b127bc4bdb45","openssl/doc/man1/CA.pl.pod":"c9ff465a4fc35b9f96fd7c4969f502fc39b6b7bd10759c054baab95d726d2199","openssl/doc/man1/asn1parse.pod":"37caf9092a1256e45780be842a61ed570b21f7a527eb88ffecd862df9afafe37","openssl/doc/man1/ca.pod":"2277d2fc30b46a44256f7815043d5628bb5de6456b439bfdeb4777526d6bf6dd","openssl/doc/man1/ciphers.pod":"516d7a0512049475c71c170366e7bb5b79e1e5677cb1a8a40236127993d3b161","openssl/doc/man1/cms.pod":"92cd8fd544bbbe143521df3b5915b0f902c82cf2ef86194f22da5a3f4a6a7108","openssl/doc/man1/crl.pod":"810d4de260c4da6decf285ac39abe3c584d3599c1b7be79ab6d7e14636fded7f","openssl/doc/man1/crl2pkcs7.pod":"b268e620e4c73cfb1ba6344e41426ae361ab3ccad1757fc288c2b0cb867f2f93","openssl/doc/man1/dgst.pod":"c6b4493087df02c21c6ad204aa57e7241764a2f2babeb085d765d9fac91f359b","openssl/doc/man1/dhparam.pod":"6c536d3828fdcebd4314acb692523bbfd81d3a380b09085b6bd624094e39dace","openssl/doc/man1/dsa.pod":"3b9e19de709c8af3b9dbfda71ad9c4470c9296fcfbc7e9eb9b0c41366a2ad659","openssl/doc/man1/dsaparam.pod":"14d6e77d1a8082be208cd3423ac5ea06889559c3f5d952e79a5c4752d27207e6","openssl/doc/man1/ec.pod":"3ca0c2fd9e648ac45c720d201d975f2e836a4e150fe9178fe423b03cc9a18af4","openssl/doc/man1/ecparam.pod":"acdd81bfb533b283a6fcb49c80cbd4ca7540c44496583a3ca20bfd3458d2cdb4","openssl/doc/man1/enc.pod":"44b1492a1d6045430443aad2dccc20e775fefd48052b1a518b8257d79efef18d","openssl/doc/man1/engine.pod":"956f40b58d88348040c05de3b4b717826d2105981a0a150068afd1df9035a25b","openssl/doc/man1/errstr.pod":"f378decd1e49529aee4e3e57cbaf810fc6dfbb735c2a5d1722fcecf6e0103e32","openssl/doc/man1/gendsa.pod":"086bad15f6e6e7b35d890aafa0b96be9fbbeb1cd238cab5daad41a5c65686c71","openssl/doc/man1/genpkey.pod":"19e1b8a4f87b10f6d5c5f0bef195c862b28a1ac56b78e08515dac5d5599be1d0","openssl/doc/man1/genrsa.pod":"d72a1a8009fb4a082bca8ad29382ff9f84198d32aa56b685b7a49ca05ff7c591","openssl/doc/man1/list.pod":"e92acd0bed1ff5d77705667c87e206f0517031273abefead26e6eb1b73d64c84","openssl/doc/man1/nseq.pod":"0d8d6e396a2b821b2473b23ca51b6d72bc321d2a19933b18ee5960fe51508ba7","openssl/doc/man1/ocsp.pod":"aa271208f076f3919559a6e6a6b922404a674c076b654d3a20802c77ff44365d","openssl/doc/man1/openssl.pod":"bdc08295a016259f9980a9dc840d8987b9f556745cf927fe23fc8551e2c6e712","openssl/doc/man1/passwd.pod":"34befccc6591bb2aba468c3af879458446158d2c5bea1cdf86e80479dfb1c9e0","openssl/doc/man1/pkcs12.pod":"d67519deb1f2273bd12d979af01f5121e6ea276109d601b3740662f8d09e6c0c","openssl/doc/man1/pkcs7.pod":"8901f6dd53ef0d83c9f236c2d896d04ba0ae09e19300435f95751c72cf148ea5","openssl/doc/man1/pkcs8.pod":"ac2968265a97d647812d4bf23011cd0c47e8f1a40c9a162d4687c989fc009c79","openssl/doc/man1/pkey.pod":"c7b15453ba2c6a4bb4b0c541d0d96f37f49af7a0df6bcc9ea6d7c32d3a4652ba","openssl/doc/man1/pkeyparam.pod":"2ea25538484191e0dca7112a8aa3b25aca5a12fd1697121aae59a2619acd1d51","openssl/doc/man1/pkeyutl.pod":"f992efc685ed5b5bd4d141780eed4d6fc349ec401b037813abe0eefeae6a6cd3","openssl/doc/man1/prime.pod":"f8280e24245f07a77fda976740e0c038a424f9124b32da974e369401b4b688fc","openssl/doc/man1/rand.pod":"a696ce5df831a9d531cd6bb652e86ce7986d3fe4a56976028780435a0ccede41","openssl/doc/man1/rehash.pod":"5ccd3e337ba0d6f440f4bc60729e374788d1f7fa986a50ed0185c53da4821587","openssl/doc/man1/req.pod":"ccbe1b6c26f231434b2eeb6f0db715cbf144fad4d34d32b937dafcdaff6d87c4","openssl/doc/man1/rsa.pod":"d4d3c706a1bf6410da61cb7730517b06b93a831b90392d1a1477008e5eb140a6","openssl/doc/man1/rsautl.pod":"722c01fd7945b7f038c13d250c1faf1a7eac51e4582b9859429523d1d9f3de47","openssl/doc/man1/s_client.pod":"b36ff3cf3cd179b0e59bd3f4af0785e5d185618275fb911ae26de38214ee2f7f","openssl/doc/man1/s_server.pod":"637eb5bab15cbe0e07c77adf25188ada63d0d8472e2d6ec72c0df2e4e24d4592","openssl/doc/man1/s_time.pod":"c8cb6a1e343a06fe20046f07a523ee92273b07b67da6457e30e95a33c44dea68","openssl/doc/man1/sess_id.pod":"4184f0eea825ea06e9fec3744e853566333c25f802f780d8c54e5bf883ab9f59","openssl/doc/man1/smime.pod":"5c61834179ca1f1ee611ce46dc9c4c1bcaba4ee2a7015e896c189d5c5f4882ef","openssl/doc/man1/speed.pod":"6293b599b5c08bee8c5126d5f4a31eb08f67e4bf11b9222d80b466add0b0784e","openssl/doc/man1/spkac.pod":"b4413cee8b653a2d7969fefc55e4ddd32a7b380915b6be37549b7e4e5271ad68","openssl/doc/man1/srp.pod":"99fe0c81640a18655c5ab8e56d41bbd64e45a061e33a394299869e241fb1489f","openssl/doc/man1/storeutl.pod":"c7db7043ffa90a54c660312660d60b2ade5e141902faceb1e6729558b3f4877e","openssl/doc/man1/ts.pod":"e778f20a14dc98b4fb21060353e5d690d6d2b06bfd8f18102dca2cde63582aae","openssl/doc/man1/tsget.pod":"a0e814408835f766ece5811c783687905d86a96c53fefebcc5c943f219d876b1","openssl/doc/man1/verify.pod":"32afc1b00816faa9e382188398022fe34f5530db5473ea1f39d96cbd416df0cc","openssl/doc/man1/version.pod":"9e1979cc0c8dffd2330d99e2387c1954dc9d5985485add35660f157267062078","openssl/doc/man1/x509.pod":"d0b149bd5e0d7a5e37d1f8122fd4e8707adda570203b4aae2a9590cecf6bcf91","openssl/doc/man3/ADMISSIONS.pod":"0e47448d30d675413854b2a6cb4c62054129f142a9ca5a131bbb5994acaf84e5","openssl/doc/man3/ASN1_INTEGER_get_int64.pod":"f45317514145f3f959520236d27e8469234b600587b333261f2cd45b74978962","openssl/doc/man3/ASN1_ITEM_lookup.pod":"52056b94798838216bbdb47c5c735ad6805c01332f20747ba7ad299d930cd0fd","openssl/doc/man3/ASN1_OBJECT_new.pod":"1a16a3048bdd841bce92a48677db293a78419bd487126085024ebcf056a1ce91","openssl/doc/man3/ASN1_STRING_TABLE_add.pod":"eff5457b59194fa1707ae5f544bfa10418c12921899e4c2b6031649f488f06cd","openssl/doc/man3/ASN1_STRING_length.pod":"20e8a297f425a09ab543715fa99f60bc03850aaef70dcf3ed4fa29bd30160786","openssl/doc/man3/ASN1_STRING_new.pod":"8d88d413502add013edee187cd9ad1b57af51cc11782da2e9c865bb4a641e605","openssl/doc/man3/ASN1_STRING_print_ex.pod":"21946f10f99781a2d3301f12acf53d8112925375a2085c01cb475772518b6166","openssl/doc/man3/ASN1_TIME_set.pod":"7f3f81980694d321f45bb45fbcc42c77c05771d316b146c0639ce2fa5c55eebe","openssl/doc/man3/ASN1_TYPE_get.pod":"539214daf11857c02b88ab0f2911c7fb74426934ac47040b807e1f48b0cc8777","openssl/doc/man3/ASN1_generate_nconf.pod":"171bb2a07a7cec062437a0613da7d147e025635a77714992295196eebd777bf1","openssl/doc/man3/ASYNC_WAIT_CTX_new.pod":"fc2f03f854f7ce0ba1365a6cdda6be9517b0f5cf9bff2846e943cace5d63a594","openssl/doc/man3/ASYNC_start_job.pod":"81015f757d1dcc902f70e809f4ef68a08f70f5f9e22d60d3d906bcfa52e6ea4b","openssl/doc/man3/BF_encrypt.pod":"94a8c4d9b6dc278bcc5c34789eeb086ddc0ee4a76d71f48ebf1292ae2a623cad","openssl/doc/man3/BIO_ADDR.pod":"0cfce6be0de80b728e9e997c7787de7f08a606d6ae18e6d6f46a1a8a6eb29c85","openssl/doc/man3/BIO_ADDRINFO.pod":"d0bb976134561aea384f6d6198a9e65383475a06f3694f530f165125db8c68e9","openssl/doc/man3/BIO_connect.pod":"9ba374b343d094bf57210c15cb5a9eafd8fce65d57c0b3d85d3905361e7de984","openssl/doc/man3/BIO_ctrl.pod":"0b940fe22b3f6d52211f239a93822976c532227812848f388be8ed5a5b8be329","openssl/doc/man3/BIO_f_base64.pod":"5d22df36626adddd5b12551586943355d2b88e44483fdf39e44af61d06267dc1","openssl/doc/man3/BIO_f_buffer.pod":"4b46af048133c3062b68768b817eb1d134b721b16b1fcd9b21804d6af78f97df","openssl/doc/man3/BIO_f_cipher.pod":"bdf7ff799a66c12659fff0c48904053b4525740341d142eea10799929f0fc3cf","openssl/doc/man3/BIO_f_md.pod":"6fe4c50b0500ef7fb758985b9671c920d9b95cc12af40b4357924935a6b05112","openssl/doc/man3/BIO_f_null.pod":"4c6cd77a55188c983d2a91bd8b64073de37d0e8c662de780de68dd87a34b0ce7","openssl/doc/man3/BIO_f_ssl.pod":"090d258b7d7df965b107c4bea93f33ca6a53b6ff97c7c1a979397c46d63f9ffc","openssl/doc/man3/BIO_find_type.pod":"fcf5357f5529ed3df6d3ae454a8cb944a24f98b2c9b088ae0b326b07d6178111","openssl/doc/man3/BIO_get_data.pod":"7d4656acd2494e1229c3f0f7fbc7ca313f69e7e5afd43736acc93ac58f7ebba7","openssl/doc/man3/BIO_get_ex_new_index.pod":"56d5cd2469bae856b77669d4a416ab0b6e42d622128ad5b5c6ae10178ef33284","openssl/doc/man3/BIO_meth_new.pod":"5c7e859c14648fabebf81873de311127424bed0e6db40411e6d7b734f96d16c0","openssl/doc/man3/BIO_new.pod":"4adbd6353586dde668b645a13cb9dc34c615d85d4312c493dc082064dcc075de","openssl/doc/man3/BIO_new_CMS.pod":"768b0de763b920189521a86497c07ebcfd22383a39bd92acc64d37c28c1a5925","openssl/doc/man3/BIO_parse_hostserv.pod":"7ecea4ecfa32d705bf4cb7038896fce0d83d360a6ab8f7e3b8b7159261aa74f4","openssl/doc/man3/BIO_printf.pod":"f5fc563636de300e191cb79d3265e219d540452c94870aef8611fcc905bf2178","openssl/doc/man3/BIO_push.pod":"e37076a2b88830d2f49b7c803a2ae295d8ec8728d076552a5379f59c4c066a21","openssl/doc/man3/BIO_read.pod":"3798d92f798cda03cf261187da338fe9eef3fbd36a2d5b9553632c373a5e8189","openssl/doc/man3/BIO_s_accept.pod":"7c6e3ab07bb088cd8814c8e5727834c667b4aa509b6ee88606338fd210edb6a9","openssl/doc/man3/BIO_s_bio.pod":"1becfc7e3c67bc7721e371628f9cf035ae39d28749acd8b1ba267f61cba12c00","openssl/doc/man3/BIO_s_connect.pod":"79623a97b5e4e33f3fcd1ee8a09e074d386bd54995896fa43b653f6a5a817d33","openssl/doc/man3/BIO_s_fd.pod":"5726d2ef68b96b2d01f2803d563a1a0300ae9aed1c133307eba1e86c804b73db","openssl/doc/man3/BIO_s_file.pod":"56cf9dfd449a4508bb1e6b8787ffa0697a46c92cee1f4ccb64a097849f89f762","openssl/doc/man3/BIO_s_mem.pod":"84f3342b7ea398478a39314dff2d82217357fc913595ec0f7be90ded69fe65c8","openssl/doc/man3/BIO_s_null.pod":"238c7f139d367977908644b92b1e4a674c9e43f9357a1334ae23327859bae9f3","openssl/doc/man3/BIO_s_socket.pod":"3ad6e926a104e7614d431ff830660263dd6b2e63241bd4c67f9f906d687596a5","openssl/doc/man3/BIO_set_callback.pod":"c3d0050e3e10414a89149f1141719190c76c3a2fd755d2fb09d82895b6d58449","openssl/doc/man3/BIO_should_retry.pod":"d4c7f036fb3f7c148e63a1106fff4e1a387cbe0d86689e561bdfe40e37e1520a","openssl/doc/man3/BN_BLINDING_new.pod":"d234055a3d363fbf60bff965a1653ffbbd2c9b77f1a2ea417f8294029b9cfb26","openssl/doc/man3/BN_CTX_new.pod":"60dabfa0a4558ee3896896ab4d0f94e786bf0f9934ac0db8af2cc9a1550760a7","openssl/doc/man3/BN_CTX_start.pod":"e44cc9208720c706eeb5111ac2e6437104694cf8f1448bac264fc65c7171791b","openssl/doc/man3/BN_add.pod":"f839971ea3618be74946f8ec9c2acafd7e96c272e1bf7ad44877a1f40d6e6526","openssl/doc/man3/BN_add_word.pod":"05fec916d3aadfd9f7bc8d89b33b76dd8e209b8a85b328eb72bf5e1dbb9f1a89","openssl/doc/man3/BN_bn2bin.pod":"b794b15c0c4e029d3c14bbf0784a92ad7f7ea1bbcb176f7d18114435074e3199","openssl/doc/man3/BN_cmp.pod":"150668b20f5a946e6615de45dc3f6b5d7917abf0ad9b7083fc983d931e621635","openssl/doc/man3/BN_copy.pod":"e38cc0fd535af136f52c2d3e726f03e91a16ab19c6064eb6df44e546597d2238","openssl/doc/man3/BN_generate_prime.pod":"3a864bf07e5369b3c212e42207b872b9aaf8c9cff83d455e5a618f3e4712afec","openssl/doc/man3/BN_mod_inverse.pod":"9e539642132fd30dbc5d3de75c0a8394858987b0185e01c7499265cca175e501","openssl/doc/man3/BN_mod_mul_montgomery.pod":"667bd4c69fc3b235370e48434874df19f5e095202bc42cfc7a6f1f13e4c286bb","openssl/doc/man3/BN_mod_mul_reciprocal.pod":"f05e308970e1a3a818f7235184853460e615d97467a386c070c3d7739369af17","openssl/doc/man3/BN_new.pod":"b1f6ab481d2bcbb0f3dcf87e3d7c477b77cbad453daa16e43222e862d269c7dd","openssl/doc/man3/BN_num_bytes.pod":"f3505483afb503cd27891c8bce713124863ba8ce764406ffbf26c661729f18bf","openssl/doc/man3/BN_rand.pod":"09ac7848995e5b716b786cdf6c942ea1cba30401a1078000b7c97d71c095f023","openssl/doc/man3/BN_security_bits.pod":"bf0d1d1fc14efff28f970e916fef140d6f01c24426e11724c413bc1171e5107f","openssl/doc/man3/BN_set_bit.pod":"6e3cdc6952d4937303f874fb6c32e5dd91e390917ea144d906e507220c24b679","openssl/doc/man3/BN_swap.pod":"5ec80972fbdfbfffccef9e4fe3e69b7e9a3444674d58ebd5d5d8ff68a64b1be3","openssl/doc/man3/BN_zero.pod":"de18d59b5794437a2a10fb68f5154719f841442d8d4250489e13598b9c4bd755","openssl/doc/man3/BUF_MEM_new.pod":"317e636b930c1ef0db349b5e1851f2429148a113e2c7919df89e15596587a558","openssl/doc/man3/CMS_add0_cert.pod":"42d161fdf7c8a94f84dff434c1af8ba3369b565815bf16bce3f12292871c3393","openssl/doc/man3/CMS_add1_recipient_cert.pod":"2e378848b5e155b1c5a5c3e4a734b26cc3f080d2bb044b972f1dd1782a4af14f","openssl/doc/man3/CMS_add1_signer.pod":"963b52dff6097d7393d39a90e7d7ee567b9bd4b36df476721d290098ae87f5f4","openssl/doc/man3/CMS_compress.pod":"7fc48fa2318babdb85461e800b34e8d53bd6a2da9bedf3c4264f42e61ba9da60","openssl/doc/man3/CMS_decrypt.pod":"2fb641f3d335d85fa96788cc1d1efbfe0803c84621c45b127e633d201e74c919","openssl/doc/man3/CMS_encrypt.pod":"4e34cd4df8943d2d278a57904ba99aad50afafc759868cd2ae8a453b8776f6ee","openssl/doc/man3/CMS_final.pod":"9a5c5001a1a2b8404221f1639bc5576e13ad4d7d411c085fd746d82f77b1faf0","openssl/doc/man3/CMS_get0_RecipientInfos.pod":"d06fbe3fd9f2bdbc4243dc50f7d2efd8228d103ee430f0202832e26edfd491d0","openssl/doc/man3/CMS_get0_SignerInfos.pod":"1282cf2e6dc3d9a6dbfba9b3994015f8029af065d8a03c223ec5b2615da5b057","openssl/doc/man3/CMS_get0_type.pod":"544f392b7432a3ad812e6b5d2afc9d5f5aec4144a91bfcc891cc9d5721cea045","openssl/doc/man3/CMS_get1_ReceiptRequest.pod":"304864e369450ebb03c764f36138ee07c9820e9f672d2780a47d969e68a86174","openssl/doc/man3/CMS_sign.pod":"d3494ff58523487f0e7ad2e24c71c467f34fa46bea6e7870402a7d4a089ca874","openssl/doc/man3/CMS_sign_receipt.pod":"789743ff3440f5e6793b8b7558d31a2d1e2a1b79822cf09380cf907879ed2d04","openssl/doc/man3/CMS_uncompress.pod":"3eedc42c074cb37c9c1e8c16ede2bcc57863ff8a8e488875b6a66f4e039c1e7d","openssl/doc/man3/CMS_verify.pod":"8c977fe7667671ddc1364d5a78a89e5beb51c4be510a215ddfc859239c67d26b","openssl/doc/man3/CMS_verify_receipt.pod":"4e74724f074c9254a05b153eee469a9cdf6b322496ec7b18c19bccee0a3ddf0f","openssl/doc/man3/CONF_modules_free.pod":"42f3d8211c7022ae823c0fa05173c1cb2038658ab392d9fd7124dcf5f590733b","openssl/doc/man3/CONF_modules_load_file.pod":"4c8fb2a920962f2aa1663122cb43f1520450d7d753e36db39a2fe38da3510657","openssl/doc/man3/CRYPTO_THREAD_run_once.pod":"797a3d74e255f8fd5ce0adb56fef357ec963e4805b2345cd56e31a4531c47e0f","openssl/doc/man3/CRYPTO_get_ex_new_index.pod":"9d63dfe936be09bc546ec4e65d35b0e9e056e44d22faf6bfdd33bc75f137c5a2","openssl/doc/man3/CRYPTO_memcmp.pod":"dadad3db32833f23b6239a22af22794f36ae60d5979356ab85934ad5bd0b8425","openssl/doc/man3/CTLOG_STORE_get0_log_by_id.pod":"d5dff2f8e4b974ddeab059b82c596931012e1fbeccbe4c548614017eec487f02","openssl/doc/man3/CTLOG_STORE_new.pod":"28559ea6b4616b147133d494a9395285db773f1374290c834b1bf478761d4682","openssl/doc/man3/CTLOG_new.pod":"d59c7b823ae4028a38c44eb7b871f74654742358b822ff4a5d7b46f59e67f12f","openssl/doc/man3/CT_POLICY_EVAL_CTX_new.pod":"25d166c38e5a308675853a9efc68f8e61778f4beef0910db98fa8e309d261f6a","openssl/doc/man3/DEFINE_STACK_OF.pod":"526d9d7b7d7b817fba349d093badbdb9fc116532d720d168e3ee27a9e57a0905","openssl/doc/man3/DES_random_key.pod":"7f989d0d1f18f8891f6a43f29351370159b16bb4624c8c3510328aab8b95266d","openssl/doc/man3/DH_generate_key.pod":"235a5260ee379912961e9796803b676d82a125199a757102fcbbe8bd20602bac","openssl/doc/man3/DH_generate_parameters.pod":"a81b0968f27e40faec8551fa288d5dd618ee21dfb65faf97c579da66b0ebaa8f","openssl/doc/man3/DH_get0_pqg.pod":"a021c04f8cf4c655616a65dd7f34728565fa51b66f1db1c4edfcc553e938e5b1","openssl/doc/man3/DH_get_1024_160.pod":"64124df4465d5d3eef28429b46699f657d574200d50446d9805d574f83a86811","openssl/doc/man3/DH_meth_new.pod":"eec607ed0e3516870ed3a441bf9711cf5cdb6fd1fd5afa9c054ff39f35a03044","openssl/doc/man3/DH_new.pod":"26ea8071e356b98e512cff1e3a7409bd1089b2018638ac57c9f18899ed85b92d","openssl/doc/man3/DH_new_by_nid.pod":"47ce456b14a300c0fa4ef41b7c7d3a70f3a4738d129586d4dc63227f0a2a77fc","openssl/doc/man3/DH_set_method.pod":"7947122b8228ea23a388f0e1bf99a8f5a9ea1feecb71d7da54f42e92d653c05b","openssl/doc/man3/DH_size.pod":"95434d66fd4e4f680384c2b9b10dbcdb10f5bd8f1c5ba6ee7bfe8d1c66686429","openssl/doc/man3/DSA_SIG_new.pod":"607f8aa941508739d1aba4154f6b5e3232a9cd71eb626e58839819996f728fb0","openssl/doc/man3/DSA_do_sign.pod":"e5071a56133f1da4aec76b8548885f9133433fc9c37a24de6ce0197efeeb5b69","openssl/doc/man3/DSA_dup_DH.pod":"6f81979049c4fa72dbe3bec84ff8e5fe72180da021e88cb4e76e132a8f3ada23","openssl/doc/man3/DSA_generate_key.pod":"9246c4a9351f072ec084b6c36bfda48b41dc6d5bd3dfd46c9a4c76b7775161b1","openssl/doc/man3/DSA_generate_parameters.pod":"e7f7686f7ae2c04411625e7eee092429a0a79a1c641269d292d4f4657e697aab","openssl/doc/man3/DSA_get0_pqg.pod":"a2d2e564ea441cd476fb27183c7a933b533002d1dd6018f0974be7cab08962d3","openssl/doc/man3/DSA_meth_new.pod":"bae93a4a147aff44202d1cbc65f07d83f7623400f1010ac68c7aa82583e057a6","openssl/doc/man3/DSA_new.pod":"c3afb59163fbee4bd561cd252753f762cda3245c99f72b9bc16f287efa3009d6","openssl/doc/man3/DSA_set_method.pod":"4adda74b7c4add094ae47b4bfa262ffa3ac5d98cc924a8093d98832cc50ed949","openssl/doc/man3/DSA_sign.pod":"f0da4d4d0cb32e83d57f0a75dec6a18e89a9d6ed0ec8763e5f95bfd95dcca869","openssl/doc/man3/DSA_size.pod":"ead3b991b833a03cb5025a8c62a579d429fd46c238f029116ed63f712d15850b","openssl/doc/man3/DTLS_get_data_mtu.pod":"dcc951c6a80f647362b6f57ad3d5d1b394d71f5d2d1f0713a564959a55a352a5","openssl/doc/man3/DTLS_set_timer_cb.pod":"6961cb7724044d54c1f545176fbc3a73d5f1c22f02448aed592dba5de7618be4","openssl/doc/man3/DTLSv1_listen.pod":"5d91cbd45490fc5713b5201b6b81e3a59a36edb81ae82580e3f2b04ccd06954e","openssl/doc/man3/ECDSA_SIG_new.pod":"a4db3f3662b197438490faa382a13223170750b85db8be9b9a6a86a63a1444dc","openssl/doc/man3/ECPKParameters_print.pod":"6a319d10c2d10a69a99bcc53adb912023639882d79b7ba6f63f4b06808e49c21","openssl/doc/man3/EC_GFp_simple_method.pod":"468f55c16a4c3ebcc4980e118e365ce5e669551844374b9886a1432069a87412","openssl/doc/man3/EC_GROUP_copy.pod":"7e7a51864e469862da38fc83ec794bfe51a80689a34a20feb2409854b737dacb","openssl/doc/man3/EC_GROUP_new.pod":"201d6eace6aed85bd124ac2c2482163936960872d6b6b06f1ae1501ebad8b7ec","openssl/doc/man3/EC_KEY_get_enc_flags.pod":"68b5b562fd8b3d307efc8f2e8d03abc46921f68357fccd98bb4889bc791825e0","openssl/doc/man3/EC_KEY_new.pod":"a330d8f68a14b822a6c8b23f9ae70231dbe585e17ffe4ac5e0cda51164f03dcd","openssl/doc/man3/EC_POINT_add.pod":"62a1ed0d32b4db17808e8f4f87b3f7881e20622fcc01049b336723e50f5d74ac","openssl/doc/man3/EC_POINT_new.pod":"27a1d9ffcdf3ee7daa69aefc50faa34143224cfec09fbff6202a5765db38bf01","openssl/doc/man3/ENGINE_add.pod":"67129edbb61f68ff10ec94c3a0848c5baca8bfcf25533604f9ec3100029cad26","openssl/doc/man3/ERR_GET_LIB.pod":"6ee80946e3c3f2c4f50f4a8e73a55e16738923dab0f9cccbcad13aa415d20756","openssl/doc/man3/ERR_clear_error.pod":"a788808dddeb9993eef2963b9fdc00da9fdd77e6b9f841b95c0b9c4e5ad8e4a8","openssl/doc/man3/ERR_error_string.pod":"b8580a4083e3df8b4e77ba89728e765d52140b6020b71165e35e44437010153a","openssl/doc/man3/ERR_get_error.pod":"d0c803ed299e58019dcacdfcee791464965fb01456fd3ac11cf2e3a195cb75c7","openssl/doc/man3/ERR_load_crypto_strings.pod":"6424ee5f48c7af1621cf49231bda12591b6baa40da263d412d9bb3106ff2053c","openssl/doc/man3/ERR_load_strings.pod":"b96d1b5eee4fbc5da7dd0e3f50139cb38d0ff1d8dc9e08b0a67ef923315e923b","openssl/doc/man3/ERR_print_errors.pod":"34c86302401fc249cc967e429e6cc754445d4973ba733b7c44c7bb77e9ac72a6","openssl/doc/man3/ERR_put_error.pod":"d3e07bd8beb65dc939c3feb1c6d19616c3f909b63e0157cbef691c22217e4b17","openssl/doc/man3/ERR_remove_state.pod":"8fd62a9dc14e5d7ddba087450b2ec3d15724399dd64ed32c3d1852c35461301f","openssl/doc/man3/ERR_set_mark.pod":"d8ec32e78ff45187e3a23d56e2659d0db40178f0d7af192f4817efc9573e394d","openssl/doc/man3/EVP_BytesToKey.pod":"d6546465d79d7ae7070f6364c55cb88d751e7430ae9eb2e24858f68459e733d6","openssl/doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod":"72cced6510bbe15bb5f197ea1ff98a36c79e46212a296d8db5daf42d454bc420","openssl/doc/man3/EVP_CIPHER_meth_new.pod":"670bdd4d76065209b7014ffd3f63dc9ca3443fc9328eaee70662e370cb9b0f98","openssl/doc/man3/EVP_DigestInit.pod":"777ff51cfa9174b4c17c8cf60559ba5d170e24fb9a86ac842fc8e78576a40fe0","openssl/doc/man3/EVP_DigestSignInit.pod":"4938d5bda105167f47de5c1fd3d1c66deaf0230754512c8496c100e2b8324b8a","openssl/doc/man3/EVP_DigestVerifyInit.pod":"a0535d3012855d5ca2ba45bc7f62234f2c031c12d02cf90af9f6a8d9cad3e688","openssl/doc/man3/EVP_EncodeInit.pod":"71e10220a926a97cc6dd5766d01207a074a203338bb961f7da64192f493b926f","openssl/doc/man3/EVP_EncryptInit.pod":"a30515729b378be0c26aaccceb3b1c97745edc9e32a41602e8a49132c3706c36","openssl/doc/man3/EVP_MD_meth_new.pod":"7fb5fdea0aa29c4e348dd42a8544d8c4ee54676b14efed888b73e5a4d6369e7a","openssl/doc/man3/EVP_OpenInit.pod":"109d61803c1785b17c4e2592c804244a8aa9fbb57ddd52ce07009f67993a17fa","openssl/doc/man3/EVP_PKEY_ASN1_METHOD.pod":"5b4d6c9c5ba2924d0aa34d2e1e929936fe9a36373496960726adc0179602ab15","openssl/doc/man3/EVP_PKEY_CTX_ctrl.pod":"e9c09ebb53b26780418617763e45c2d4a036f25087b95fc72b04df06f538005d","openssl/doc/man3/EVP_PKEY_CTX_new.pod":"33f4660ed2843869bb2a5a3100a3103d980c9f89ded89cae7b2039b5373a9e2e","openssl/doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod":"d13281607e846b72e51a9999e7e5269ef8f72b006fe1df385cb74a50a99861ce","openssl/doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod":"a02969e04b738e3867bc976d30726f42083a192a0bb03751527a9187734d3dca","openssl/doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod":"37f8bc105e30cb0e08dec4080dddc51ac681b678807731252a75e7fee6f46f85","openssl/doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod":"9b8b0a726f5805ca8b05b4ae0999b4a5856a3e109ef5d956da466f32ed039192","openssl/doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod":"ca849639096c80ca2a71781a72e5cfca8302d037912f4905c213ab748afe95cb","openssl/doc/man3/EVP_PKEY_asn1_get_count.pod":"8e4fdf6685bc4bb39944dced1b4a48d88bb129aeaa5da9ff93b420978805a86c","openssl/doc/man3/EVP_PKEY_cmp.pod":"ee34265cd2b481820820cdf4b0d48f78ec8d805c754e2c882a02024683fea898","openssl/doc/man3/EVP_PKEY_decrypt.pod":"7cc2126855283018c7f213c1a02f7d2f31cd3c989f08f181cbe6dda784063c6c","openssl/doc/man3/EVP_PKEY_derive.pod":"b2cc409128eff8d8846677b931b1c6089e70103aba8c41449356e0799428a848","openssl/doc/man3/EVP_PKEY_encrypt.pod":"7966b6453b2146b91feffe453f385001eeecee78d3144a41cd9104b3c48ccfb3","openssl/doc/man3/EVP_PKEY_get_default_digest_nid.pod":"8007c64183f80dbbbe2914832ca33b79de0c6d3b8452ccdc5c853d1115bc75ec","openssl/doc/man3/EVP_PKEY_keygen.pod":"e31f91a808aa9c1894da2adb4fbc21e80a891c8e33c438da3cb15687bfb0e448","openssl/doc/man3/EVP_PKEY_meth_get_count.pod":"9636411e438dd91940c29da59bc102852e1623226bbe96f2a88959650b6a8295","openssl/doc/man3/EVP_PKEY_meth_new.pod":"da2a63792e8669d354dd6aed5ff0896677d51c3aeb0d2a710394f894e57cd145","openssl/doc/man3/EVP_PKEY_new.pod":"dba614cf8efe02b58d2a854d77d443ea3f11835b65a92a3e4a4314cb358f4306","openssl/doc/man3/EVP_PKEY_print_private.pod":"a2ef795f5dded00e0e4fa12d99d3cc1258e06f897f7c3c0295f23e18db553b40","openssl/doc/man3/EVP_PKEY_set1_RSA.pod":"0c8941fa8e5caa3aea611e56a14aa406ccd50292a1d357343621baf7385f0dce","openssl/doc/man3/EVP_PKEY_sign.pod":"ec1275468506aeefcb92b9c5921c041c011bb47297b1ed4f0b0ddda4a75aaa43","openssl/doc/man3/EVP_PKEY_size.pod":"2058f9c6a888f90376896b81f2b8eebcf1285f25dd6c1c69105d69766c033f07","openssl/doc/man3/EVP_PKEY_verify.pod":"041224bf1b8f7a6ce50bbfc101fb4f754ce77956da1a24b5b78436d1e3c9af2d","openssl/doc/man3/EVP_PKEY_verify_recover.pod":"9ab8f2248459cf32040b59c24abe9210d2119d0092ae1bb61059e374618e796b","openssl/doc/man3/EVP_SealInit.pod":"2c0189305828b2ad23c3e725dd1d9859cc291625fc30f65641fa5236bd758c33","openssl/doc/man3/EVP_SignInit.pod":"f403a331b370723d754cdb0be00859307113f82a91d42f8235c48c2b2d7816e4","openssl/doc/man3/EVP_VerifyInit.pod":"c1c831bba68ea606fc2b78bcb4a5f04a04c177661019a3e2af68466a7e069976","openssl/doc/man3/EVP_aes.pod":"98ba2680248a394df2748ffbffe5c1fc521a2c1b8916ffc03ee5457ce58edc05","openssl/doc/man3/EVP_aria.pod":"4711e2bdc8e258e626f59be8787e8af9c32b5dc7fc52a48663eb19c4026eeda8","openssl/doc/man3/EVP_bf_cbc.pod":"16fc065c3b43dea4e0ba1c90e6c820d0dd8213389022fda742c89c9b81974518","openssl/doc/man3/EVP_blake2b512.pod":"ce80eda0dac29f0a70260822648bb65f9d41d754a337f7e1dde7044194704e88","openssl/doc/man3/EVP_camellia.pod":"3e758556d49e3e4287ea87e53b98e267cb5eb427e486c9bd0d840610088ee961","openssl/doc/man3/EVP_cast5_cbc.pod":"fe07c76b5030261a3f360098e17cdcb870dc45c4a7192b30a16adbdeae248ff1","openssl/doc/man3/EVP_chacha20.pod":"8b1c51f6ada9bbc2bb4ef6f21def9a04bce1985bf5ce5df53e334f9105d10276","openssl/doc/man3/EVP_des.pod":"1a7eb48fec0e81c132ca35e0311aed364d21518dba956559a3b154b089ecd324","openssl/doc/man3/EVP_desx_cbc.pod":"2169a824f23f859e1f60a410a2c981958b291a2b512701b2806c2eb272c51763","openssl/doc/man3/EVP_idea_cbc.pod":"17ef6e19964a0aae4bf206f858d67e2d88ca1ffaebdea712fd1e83fdc697e577","openssl/doc/man3/EVP_md2.pod":"bb9131a736dbb0c49e8689c27ccb3b5c2f8ee317e2f87f7364d0be8874edbfca","openssl/doc/man3/EVP_md4.pod":"29475e538f4d8e8b437209f182682bea9a828f23ec686bf56bbde2c6d3bbf14e","openssl/doc/man3/EVP_md5.pod":"9e07eb7d806d6f0863eaea694d6b8c43de4b23eb76807b8fe7a47cbda2039375","openssl/doc/man3/EVP_mdc2.pod":"e21a8c709077cb86fb5651c221a10f79ab0f6db5633de2f3f32a85c13f252e78","openssl/doc/man3/EVP_rc2_cbc.pod":"b2bae952b3885653d15e0245488f8499a97c8e961bc33bc0d5d97eea5c914acd","openssl/doc/man3/EVP_rc4.pod":"523c9b62ff12f932232e225d4043f303ee22f6feab266582e77db4e548397cd8","openssl/doc/man3/EVP_rc5_32_12_16_cbc.pod":"e300f8941d3e6692a3b7eac1fbf34ae9d1e3e8b4a40f45b08c253ff0945ab9fa","openssl/doc/man3/EVP_ripemd160.pod":"4a7a55483a4a12ddcb76662325a4ea15af981c3a9c2cf0dda2755271487efe8b","openssl/doc/man3/EVP_seed_cbc.pod":"cd7d186acde78bde571b6688b9ceab6e21f48a3cf267177a66196fe41240ddb8","openssl/doc/man3/EVP_sha1.pod":"4a99e8c41316006f3454f9d08958fa5fb2586a7ab0ff7b512b198053c98bc764","openssl/doc/man3/EVP_sha224.pod":"c8807d17df0f691a71a0cc1d443b112a582d61dbf5f0b8c0c29225c1f0b74bbd","openssl/doc/man3/EVP_sha3_224.pod":"a301b85ef186554665cfd3ad06d78f2e88da5fe6c17bdc89eaee5a810571f373","openssl/doc/man3/EVP_sm3.pod":"d6ec07d83d0d76d3c30cae2f0ae9e9110e034b1572b9306d39ddc3c4e796f2e4","openssl/doc/man3/EVP_sm4_cbc.pod":"15ffea2c2002cd2787945dfee5fd9b27d217d19c6308f08f4cb631904c163027","openssl/doc/man3/EVP_whirlpool.pod":"f226d7bacf85f39017c84de58e3365e80e4adcf6ad72acd6a5bb10b06ab25665","openssl/doc/man3/HMAC.pod":"c82340e03cec6510179abebea23b26ca884ae150c7852a881c2f266f72c66036","openssl/doc/man3/MD5.pod":"39e49ea8b629f3bc74059cc3e690cda807bb9280ced796174a59fc5c3a7e3c9d","openssl/doc/man3/MDC2_Init.pod":"7486153080fab599338d10a847391f0991953418f011c05e3b68a3c49c228183","openssl/doc/man3/OBJ_nid2obj.pod":"5608c62693834a4b55fa65b932b57e8fa0ab777e3baa71add5a3394311513cb3","openssl/doc/man3/OCSP_REQUEST_new.pod":"741beb80de05b151220bcc435054ecfef24511905e1db48243c0931fb8bee14e","openssl/doc/man3/OCSP_cert_to_id.pod":"ef4df2aaaa50749484720add4dfd62c898d274b420d5e5f8400b16621dfe928c","openssl/doc/man3/OCSP_request_add1_nonce.pod":"75a6f7ba5905afe3eb9f585eb0b10deb39b2d0c2d8f8d806cc78add8c3b8c001","openssl/doc/man3/OCSP_resp_find_status.pod":"24263deae0e9868da649489372c23aed8bd2f83fa591802fbc5cb8ceedaad9b4","openssl/doc/man3/OCSP_response_status.pod":"dcc2e6a0038c739ac8b1ebbea4e08f72fc15e728963ef1442556a3661aa3035c","openssl/doc/man3/OCSP_sendreq_new.pod":"ca9a81e51a37ae00134f476f922f62be74847d9a9fb562602a8a073e333e122d","openssl/doc/man3/OPENSSL_Applink.pod":"a0db63d4885f4e0f0de231ca73718e6a685129dfe51a003cbed8baf372a3a06d","openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod":"60aa5c7cd4801d8dec5ae054851e8fc744eb2ade6896827e2e82555fcfc4c625","openssl/doc/man3/OPENSSL_LH_stats.pod":"3ed8b9be73fde6823b5763b0f11aef4993a78ff4a48764d4811662db65ed4cb7","openssl/doc/man3/OPENSSL_VERSION_NUMBER.pod":"5a03bd0f8bc83dbfeec72c59c4b81ab7f1d8a82180c4b31b4bcaf6968da00baa","openssl/doc/man3/OPENSSL_config.pod":"f26fddf66589d2ecdd405c2d7a94d0f63e23996ca2dd8a3cdd1a3c97b9b695c5","openssl/doc/man3/OPENSSL_fork_prepare.pod":"e41b80f3cd0bfdaa05706dcd32403c164300fffea6ecc9204a4ce5262999b847","openssl/doc/man3/OPENSSL_ia32cap.pod":"54fc46befd3c081a2a48bf97c87f7914d4e4e226948497111d84b385d5c9ff3a","openssl/doc/man3/OPENSSL_init_crypto.pod":"f096e4881f7eac53098ba1be9d0cc8bacf0e094009dcaa78c772b4334a94f7ba","openssl/doc/man3/OPENSSL_init_ssl.pod":"e658828fa3b9d467a02c771411a581d9a281f39ddf6231ca5c609a21acd53104","openssl/doc/man3/OPENSSL_instrument_bus.pod":"dcf311426ca6b4e4ea3502d34c72aa0e897f792389232ab06fcaf3d7833623c4","openssl/doc/man3/OPENSSL_load_builtin_modules.pod":"2d874f7b5f90d6515f2af29dd6ab3a4b1b57b4a66517a1ac606285853257f9e5","openssl/doc/man3/OPENSSL_malloc.pod":"0bc14b05c59ab4931b962ed97e4d9cecca050bae06f21199fcc48808ed3924bb","openssl/doc/man3/OPENSSL_secure_malloc.pod":"da7db09b14e8c5aa70f0870393d145bc73d24667aef3b2f56af9dacef0ad72da","openssl/doc/man3/OSSL_STORE_INFO.pod":"848862de44d58e3641fe9699967667d5375f6eb2486edd21753aa5055a3ee9e3","openssl/doc/man3/OSSL_STORE_LOADER.pod":"c939ed2132cf112f722635934734334e7c641350ff676df4574db69eb2c59aa0","openssl/doc/man3/OSSL_STORE_SEARCH.pod":"74f7cc9d63823af599c0efa126a21e6d42842efecf45e4b093e3485c1a97d07d","openssl/doc/man3/OSSL_STORE_expect.pod":"c4cef70674633017f3b9735b9e4a4eed07ed4eaead847337ef8c0d94d65472c8","openssl/doc/man3/OSSL_STORE_open.pod":"1d2a045839b904c32c2cc588f612996de9fd341d8ba464e57d3bf8c5af07a6cd","openssl/doc/man3/OpenSSL_add_all_algorithms.pod":"49b86f88fcd2bf4182c98477fbcc93ba08523d6994b922ccf77ed8ab8fec40bb","openssl/doc/man3/PEM_bytes_read_bio.pod":"48ea0c0bc7e4cd4b0a8a936f90cec50f11337f4a60f7c80ffc4fcfa33a60b877","openssl/doc/man3/PEM_read.pod":"1bdb0e48e0faf6e41f6f8b0507bac01d27f6c8016bab38c2e7958f08e980b78e","openssl/doc/man3/PEM_read_CMS.pod":"ecd9bf55b556a4e35878b646432263cd8838b4f8db1301bd3fde77980c1242f3","openssl/doc/man3/PEM_read_bio_PrivateKey.pod":"b8c09381346c4d8baddc9b29bd071d8491ddd019e260ccff8a0f6f152bf61fb9","openssl/doc/man3/PEM_read_bio_ex.pod":"71c78d14f7d2a91ba384a46ff374db7474309d59cba5fe985526b5e3039a1fa8","openssl/doc/man3/PEM_write_bio_CMS_stream.pod":"26fcf66cf1d2efc12499ea44ec99359b742989d3f7bc303128bcde7e4936c9da","openssl/doc/man3/PEM_write_bio_PKCS7_stream.pod":"0fad1e10061979328ef38dfcce7acd18c1e13a233c899887bb71e8a0474f875d","openssl/doc/man3/PKCS12_create.pod":"81b7f6be4c979f75c29f5af3e26de09a2325c83bedf979d3d0ab2fa1370ee1b8","openssl/doc/man3/PKCS12_newpass.pod":"4152f50460501aa543dea8904a41ac6bd057f14a5616246dedc036c5fc1b9898","openssl/doc/man3/PKCS12_parse.pod":"d922a981c27e69635072126e8a7e92a40eb0cde7382755d19348bdb6b0e32573","openssl/doc/man3/PKCS5_PBKDF2_HMAC.pod":"3877fec0e7d6f9ac05b0a9cede809f7e863e9bf24a595ad1c21c67e07f267d83","openssl/doc/man3/PKCS7_decrypt.pod":"222f4ddc4b049f8fe7fd9985f792ad456e4b562f16218e72deb45d20ca589654","openssl/doc/man3/PKCS7_encrypt.pod":"20c877ef00fdc262dbaabb7515246fe0594954fef9b0e5507c39765f4002a2b0","openssl/doc/man3/PKCS7_sign.pod":"68c01c90c6204e01ca8bf19c492451e935de4a6b936cfdd3bf64f3b0e8c5a77c","openssl/doc/man3/PKCS7_sign_add_signer.pod":"93b56dde4cb1348b9cd36fc449540c1a21bbb3c44537d6274dfbfff78f62d0a5","openssl/doc/man3/PKCS7_verify.pod":"218a8419c525417628212ad06c8356b516503c2a39bc307968a55605692b81a5","openssl/doc/man3/RAND_DRBG_generate.pod":"17d2a008a9890ba1cb494900c248e5da1e886a11af3a7163ebdb67d28505cc6b","openssl/doc/man3/RAND_DRBG_get0_master.pod":"b17158470b2a4bcdc111a95b99fc86a33ee35c6b6e1a7cabda2c0166228c4673","openssl/doc/man3/RAND_DRBG_new.pod":"329b6237144c2731bae481891961d488cd5411186f9bb1f34eaf8486478d2e37","openssl/doc/man3/RAND_DRBG_reseed.pod":"26a8967c199d4f6c2290bb8523dae044242234462481b932bf7f53de7e881c56","openssl/doc/man3/RAND_DRBG_set_callbacks.pod":"cdafd1922ac7c7bf0ea6c9f7fef9133a693319f9687b1956daaa476199c9e532","openssl/doc/man3/RAND_DRBG_set_ex_data.pod":"b07169d49e6ac993e13b3f885c69895fca7d76946df5c0239ddeed77ddfdabc2","openssl/doc/man3/RAND_add.pod":"335e0955afe9ea0dd7875d1d20acd41b7c064752ce8664b094d2baf71c928b22","openssl/doc/man3/RAND_bytes.pod":"ca93ca9f1f3291a7a052d611283f52d677edd34cadb94b98d29f84a2d0ab3f20","openssl/doc/man3/RAND_cleanup.pod":"a97d7e4d8284c9f14d18ff52daf7a3334562dcc37e9be32667cb14e12a6b3051","openssl/doc/man3/RAND_egd.pod":"2bfc028cb0577b89c295b3f9822bfe0344bcd1298d7ba6a37076517c33cb3f86","openssl/doc/man3/RAND_load_file.pod":"f4dd213002d26ae4c1b11e18b89eb992e0442d7ea9312d8e2d5d2a19ce74f317","openssl/doc/man3/RAND_set_rand_method.pod":"7c3ebec8ad5acc03b274da7215e272889f7696800d9dd5345bf1b18bb72fce6b","openssl/doc/man3/RC4_set_key.pod":"3934e2567aada5692824f9466929d3b0fff3a6eab49c722318629a670c1fecc5","openssl/doc/man3/RIPEMD160_Init.pod":"ea958a1b7a02f92bf69ee70262d92d499eb4fe09132491eaaa5ec47721cd2fee","openssl/doc/man3/RSA_blinding_on.pod":"f5178d4d103f9c4afa69f4236707e3b43ed25a650628816a64938286577b825c","openssl/doc/man3/RSA_check_key.pod":"c07fbab30e1f043c7cc09319a75dce5b7b9856ea8192191f1b88b416c6f18d8e","openssl/doc/man3/RSA_generate_key.pod":"ffa62bfc47c407ae8f531da4ebffd3ddb19e14502267f9edc55105966f130840","openssl/doc/man3/RSA_get0_key.pod":"58cce39081cf2e6756a8bba145e96c23724a3306357bffe7d1960039abb6ee90","openssl/doc/man3/RSA_meth_new.pod":"c9ac9009502b8ca0540637f10ffeec689ea5b4ceb5c8ce9bfb48e783f2ffa54e","openssl/doc/man3/RSA_new.pod":"bf80bb587fae400c903cb970c1f3a7497c7b213dce4fbb94ec4faa03467e0dd1","openssl/doc/man3/RSA_padding_add_PKCS1_type_1.pod":"1a9efdca67fb7b933f9728128db08ecc84b83dc4886a6b8cc18dc7078574f838","openssl/doc/man3/RSA_print.pod":"4169f2d929a5348c3ae8db491277f232ef3a877d7bc9b400b3df13a707537b29","openssl/doc/man3/RSA_private_encrypt.pod":"38d57c8998a171586d098f0cdb3ed9eb9baf489b1b5564501a8a092418f5b8d0","openssl/doc/man3/RSA_public_encrypt.pod":"3ff5cdd751df2b5555f220927828481e57d310e5b875f6cce1ec2670a4d3debd","openssl/doc/man3/RSA_set_method.pod":"d7a55487bbe6dd5eeea29adf3ae3c05dc62d4bb5d774c45b2c85a8f53a95fd3c","openssl/doc/man3/RSA_sign.pod":"8f59b240737d04aad9aa8cb35a1bc02f88824259f607a2345c74a8185fabafba","openssl/doc/man3/RSA_sign_ASN1_OCTET_STRING.pod":"d3b6aec65ad46576bc4c15ebd6f0ab08db9dc86a96752c19442dc5b6a34305aa","openssl/doc/man3/RSA_size.pod":"02033009b3f2d52145a90b70c20cdb6b9e151fd0a5ae1e40a3fba09ff8677e60","openssl/doc/man3/SCT_new.pod":"b506b791dc1c6c7c1e47c8722f53c6ce51df9c60bc81da759c8bda2da83e7c32","openssl/doc/man3/SCT_print.pod":"c5dfd5c5f28585b4fd8db18cb9ce66ff582d0e8a3c12e4f521cb1f27c02364da","openssl/doc/man3/SCT_validate.pod":"36106502782bc9d2a512902fada06a7eeabf27068cc3dfdbc918799e2915d20b","openssl/doc/man3/SHA256_Init.pod":"0c816af790b1d88e7a3cc708bba420ba265c53b7a0eab31437c0ba77401c57a6","openssl/doc/man3/SMIME_read_CMS.pod":"3ac16031a274c4095c664106895c7ac57f9372b5040c2e2dd52d6970b7b08dcd","openssl/doc/man3/SMIME_read_PKCS7.pod":"5a7a5660105501d860fe63ad5c8566b980f2a01d269f5845b2181149e199de04","openssl/doc/man3/SMIME_write_CMS.pod":"ea711d47b144ec2d7331c1f50553619007315f547f8b2f7661a845d6958d3214","openssl/doc/man3/SMIME_write_PKCS7.pod":"71ffa71cfcdcccd671d6bb0f3baf2ae7f966fc2cbe8dc85be1438b8402f5c7a8","openssl/doc/man3/SSL_CIPHER_get_name.pod":"c587a7c6f52ee7a530a229132b5881c2da6a5ec620fbd69ce5d8f7ca0a618d68","openssl/doc/man3/SSL_COMP_add_compression_method.pod":"9b59a012d658b140d2687c9911230a451218ab4e0370cbcfeb2d732d5cea910b","openssl/doc/man3/SSL_CONF_CTX_new.pod":"31027f827a134015230703da9c56f5c62440c3ab8b09d4d112559a1f8d16cdc8","openssl/doc/man3/SSL_CONF_CTX_set1_prefix.pod":"71260ff34ff577c45d1d903c4ce377d3913b634a825bc528691977b293777d06","openssl/doc/man3/SSL_CONF_CTX_set_flags.pod":"e188f2696c62e16e30e6f6d71e44503a2e1607c7a4cfed20a0203d08f5f75d22","openssl/doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod":"ea231fc93bd4df19b54456d3bc7f8429a34f3c57eded62515ae4c91397f97cbf","openssl/doc/man3/SSL_CONF_cmd.pod":"62f1e168032b0d6911fa2ac9880da01f575bcd962fd1115c77a00999d860a997","openssl/doc/man3/SSL_CONF_cmd_argv.pod":"9d12224f2bc09dd67737996da4dbaf727cd2e6182b6e2db58d9033c7c2fa64af","openssl/doc/man3/SSL_CTX_add1_chain_cert.pod":"3ffb34b36b7b345a91332399af9e45c387218e8c4ec451222688e3f763a809df","openssl/doc/man3/SSL_CTX_add_extra_chain_cert.pod":"0d2ee70099b5ec881535fb813ef553a7d0051de659ca0c2009f9a3e5e79062f3","openssl/doc/man3/SSL_CTX_add_session.pod":"bec5e3483ced8ce89a527c01143bfb8e7551768eadba6da3a4abe875220822e9","openssl/doc/man3/SSL_CTX_config.pod":"a2c5542cfffd35eea979b4e3d9902763ce1296b495611d40c60450e1ebf53e18","openssl/doc/man3/SSL_CTX_ctrl.pod":"b8b78960b3cef7b09b64ad14aeaad9f5e0e815cbf5cf973a91c7955dfc3b2272","openssl/doc/man3/SSL_CTX_dane_enable.pod":"a90ddd5809acd5ea1be2ca803450bfae5380a07278ce3e6107ca459554928361","openssl/doc/man3/SSL_CTX_flush_sessions.pod":"ce4a997e4ae4171780043fc86c9e82c18ba6cda6a9576f36aeb59c30140b56c3","openssl/doc/man3/SSL_CTX_free.pod":"6499830839485a4f82a5496d363dbced5087abc4739dce9aff6a92bfad444af3","openssl/doc/man3/SSL_CTX_get0_param.pod":"ced535f7155efe76a8e2beab42ff20dc9c2b2981db08b424c719ba6cdb341ec2","openssl/doc/man3/SSL_CTX_get_verify_mode.pod":"28a4dc0c047c2fb347e46e9a005f260f9227f4f875f2082c7af3d54c85fdfc48","openssl/doc/man3/SSL_CTX_has_client_custom_ext.pod":"ddddbd7df4fd974a749a70970d85461224d41c815f518a843c94d15320bd0a18","openssl/doc/man3/SSL_CTX_load_verify_locations.pod":"21022d6f47c6ec5f7d6d76761fa8987ca136c7d782861707ced2d929089f5b91","openssl/doc/man3/SSL_CTX_new.pod":"dcfb546e8a7b702428a85ea480977995223ae2188c1ed3d1e24cd27804c89aa0","openssl/doc/man3/SSL_CTX_sess_number.pod":"dbb65ae74b674838e50c26b912064ff3a2e4fbab74785c15dadb903fa43df70c","openssl/doc/man3/SSL_CTX_sess_set_cache_size.pod":"77f6adb29332bb212d117faf47983466aa60aa733f04dc3ee8f973253a5898e4","openssl/doc/man3/SSL_CTX_sess_set_get_cb.pod":"0d6136d9a75c15951ddb67610c7f08e67a7dc424115eaf9ad4035971e76b5771","openssl/doc/man3/SSL_CTX_sessions.pod":"1223bb83bea15d0a5357c8e6608b98e41c1f7b62036e2681c67745ca59cd8ba8","openssl/doc/man3/SSL_CTX_set0_CA_list.pod":"1932df3801f3767252d08544b125b14c596fd0d13a7f1633427a7030ada7cb03","openssl/doc/man3/SSL_CTX_set1_curves.pod":"e0ce7947080129badd5ed256ad6804b30ad456a2a0da697cdcd3f255cfddc563","openssl/doc/man3/SSL_CTX_set1_sigalgs.pod":"095a1160eb41fdcd14c6cfbac2498c09f6e98a324fcd0a377a6a49314c10f294","openssl/doc/man3/SSL_CTX_set1_verify_cert_store.pod":"f3ad802127f882ed1ca07d762da29e51fe2278cfe85ece696ae1af07983d4ddb","openssl/doc/man3/SSL_CTX_set_alpn_select_cb.pod":"1cb7e5bdb3d7e91db5ad550e2d51c7490f3379ee3c8ed852d14ce4e2ec4b5374","openssl/doc/man3/SSL_CTX_set_cert_cb.pod":"53f7dc014eebf63a09d8d2dda05ef46b7a66a39e314c4064a3a2c5f5bf0496c5","openssl/doc/man3/SSL_CTX_set_cert_store.pod":"a4f850ae8ff976053e0ed7726e36d9072f0554f9281132de3227aafeb3db9f4b","openssl/doc/man3/SSL_CTX_set_cert_verify_callback.pod":"0594c50e59a4c11c807270302c3c325d39ca57fccdb82cb0e0bd6c34f4755b7c","openssl/doc/man3/SSL_CTX_set_cipher_list.pod":"3df94109693d91e9ffc145dacc23e430fab4b460c8c8a27bc90577af5c622fa1","openssl/doc/man3/SSL_CTX_set_client_cert_cb.pod":"022a0492b6e96568db2be53e08ad343e10c7b4fc67b3b5db541cd2f503dc1a12","openssl/doc/man3/SSL_CTX_set_client_hello_cb.pod":"44454b894afe8e07bf14e9af1aec39aa0c1c7e2cc252a9e3963737e62a336662","openssl/doc/man3/SSL_CTX_set_ct_validation_callback.pod":"60d38e73044fdc0bb7e7bbe16036a11d48a3e0ceacb3817f298a78706e687dc2","openssl/doc/man3/SSL_CTX_set_ctlog_list_file.pod":"f7593c7bdaa4b43b83e4922fcfa645a6217acfc74f896de09664f44fe4ed9ca1","openssl/doc/man3/SSL_CTX_set_default_passwd_cb.pod":"0ddaeee16505288ac676ce640dbe85335cc3249211689e83bd5082664cf77798","openssl/doc/man3/SSL_CTX_set_ex_data.pod":"910c37abc33c0590e8c4d7f748aaf72c66f0c9032e8754051de8c359b507a32f","openssl/doc/man3/SSL_CTX_set_generate_session_id.pod":"75802eb57ed2d6d7f791a6e68aecfb010e1d625af02ffc2d764f49bf02e940f2","openssl/doc/man3/SSL_CTX_set_info_callback.pod":"58c7cfb0d2119327ac0c43653884f0ba6b93c5d5855392ee4f954d94cd335f72","openssl/doc/man3/SSL_CTX_set_keylog_callback.pod":"7722c9aa8a61b1cdd1f0cea75ecc6412747f17a9bb348a411acfc3b225ba3e24","openssl/doc/man3/SSL_CTX_set_max_cert_list.pod":"86b5bc163b99a67ff72e5296a61f826809ebd764f976a1c3deb4996c1b3e62a1","openssl/doc/man3/SSL_CTX_set_min_proto_version.pod":"a0de5e8055272cc35044545d301cc7818fb9a86cad38e7441721ac839501f910","openssl/doc/man3/SSL_CTX_set_mode.pod":"ea3a8bee7989f77a907d60f4e62c200f366c0be856639513b137d25fb71e41f6","openssl/doc/man3/SSL_CTX_set_msg_callback.pod":"87c10f79b408672cf15e6ce75e1c08513609867068bb4caa6c49b7e72d731c39","openssl/doc/man3/SSL_CTX_set_num_tickets.pod":"bab0e4b399c349230324cc2cd7ed42cd56bddb4c2747f587819e90f98143f75e","openssl/doc/man3/SSL_CTX_set_options.pod":"36cd07d554a66cff5a07f7f8f2b5cf2157d5e008b293e59683bd29bbb013115e","openssl/doc/man3/SSL_CTX_set_psk_client_callback.pod":"8b12f99d32fffccebf235434b19b5f1211f6de42f08c87371dd15c6322dad3cc","openssl/doc/man3/SSL_CTX_set_quiet_shutdown.pod":"e668e7c764ef67d66de7d575aab821d7c68ba95d383d40e960a316d28944290e","openssl/doc/man3/SSL_CTX_set_read_ahead.pod":"1f2b0e5a8a626271b65c9a53bf10a2edf5ed5bed3f46595c7d6ee280c61d97bd","openssl/doc/man3/SSL_CTX_set_record_padding_callback.pod":"cce583a3e71fbadb5c5729236a48639ecb2b2614acb9d23608e70f8278daf782","openssl/doc/man3/SSL_CTX_set_security_level.pod":"18d32a592444185272aac8c2261a94321d7a6568c7331a922e2f1f3f30cb36eb","openssl/doc/man3/SSL_CTX_set_session_cache_mode.pod":"64210089697ac6bc32d99ec7a41c1cb7c45b111ff427f6b1303a9afc288f0967","openssl/doc/man3/SSL_CTX_set_session_id_context.pod":"3eb931703e5919ce4228b9018d541973069a6b796e12eb795bff9f41da2a3a8f","openssl/doc/man3/SSL_CTX_set_session_ticket_cb.pod":"bc134518148ff374aa5a5bcd004678124bc76c2863e6153b6ef1b82fdcb10e04","openssl/doc/man3/SSL_CTX_set_split_send_fragment.pod":"6604503373b79017a6fe457c24f6a6f79b93073001ca41787856598cc48fd75d","openssl/doc/man3/SSL_CTX_set_ssl_version.pod":"06d8684f35d9b31f5048750d52dea848ad07a54a5c6efe883e35bf901e259428","openssl/doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod":"9e3ba9fee42697428bb9e48d537b8f05d3c6c74cc0ac793db6615575df4d8662","openssl/doc/man3/SSL_CTX_set_timeout.pod":"11acf52343adc7ea2b024e278a49d5300677b4816c25871d81b37bcb7200f185","openssl/doc/man3/SSL_CTX_set_tlsext_servername_callback.pod":"e07e53bc49b3938a8844a2782c7a446780a23104f6f81de05f877c5516cf7acf","openssl/doc/man3/SSL_CTX_set_tlsext_status_cb.pod":"8efea6a299309aa622a1a35b272e6a9fe6f2cf31fe3ebcb1faf4bccede1f1160","openssl/doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod":"fc541fe8770e7ff8bf805d6728ea0ea48e368c57937803cf25407906cfe3b815","openssl/doc/man3/SSL_CTX_set_tlsext_use_srtp.pod":"49e00bcc3ac93f10bb367e2ad300c676fd630505c3a1d314c52bfacd4276dd16","openssl/doc/man3/SSL_CTX_set_tmp_dh_callback.pod":"6ef9394ec04927bdb4ac3fd0fc5dc22e589dd5431215767b91ae8941a22776fa","openssl/doc/man3/SSL_CTX_set_verify.pod":"ac8a4987600f41b06c9d03f8062c904bb1c9bc5054c34e2107efb32da8af0988","openssl/doc/man3/SSL_CTX_use_certificate.pod":"ad02bc374ba5e5bf2b029ee5c8043abcd60cc50811452741dd9f0d5e94c76d31","openssl/doc/man3/SSL_CTX_use_psk_identity_hint.pod":"ff25874925a52807e773a15db1f92570d23f9b22a7b4a4a59525d0bf20bb878e","openssl/doc/man3/SSL_CTX_use_serverinfo.pod":"0c59baa6ddb81bc09184a7cd7426de81c9d38e315e93c48dccba09a00a2dd934","openssl/doc/man3/SSL_SESSION_free.pod":"2b920d74e18f2ed8805575ca0cffdafffea2452f79449be9e8e23fac370b8125","openssl/doc/man3/SSL_SESSION_get0_cipher.pod":"7fbeea414a5c74a6682ee0239152ee09091e210e840b7365576bb751fd7af0f7","openssl/doc/man3/SSL_SESSION_get0_hostname.pod":"1e81dfd8ebc653b6d4d4cdde0d15967f7eda6c17d08b8d4437134c4be279af54","openssl/doc/man3/SSL_SESSION_get0_id_context.pod":"ef11a0f1335b2007fc960520d91a3df1c9ac2e59675e6cd1f53bae02a5da5616","openssl/doc/man3/SSL_SESSION_get0_peer.pod":"133d6ae6ccefa1cfa57fca7e1c6952f5ce1cc799c6d63e0584265980a6237505","openssl/doc/man3/SSL_SESSION_get_compress_id.pod":"07fb8cce6c50b966b66107ac36c22c1b94777c1a99b4d5a43f61e359b7722bb8","openssl/doc/man3/SSL_SESSION_get_ex_data.pod":"8b97be70166cf27a451c189c3d2767bb1c9b6b1e9f2c6b02fe7b340dbb592d1d","openssl/doc/man3/SSL_SESSION_get_protocol_version.pod":"cb70d67a1cf5f976d53b95ace040d4e19a8dbf6ff24f058a3a82637ea36dd782","openssl/doc/man3/SSL_SESSION_get_time.pod":"fef94d441fa1265ddbb54b6af2a7bba833e712301c671d4f290a1e16a8214e68","openssl/doc/man3/SSL_SESSION_has_ticket.pod":"529bd51417b3373bb181f10b7ad17afdff5a49c1e179028cc6d7751c499da73e","openssl/doc/man3/SSL_SESSION_is_resumable.pod":"396c988fda7bc03cfca63f908a7d65aedf4a0f1e95cc9e7c97b35732d647748f","openssl/doc/man3/SSL_SESSION_print.pod":"908e234e2e5414cc1f7fe239506c42e266e9a1dcf7a1fd51583a5b8f6daf7ca8","openssl/doc/man3/SSL_SESSION_set1_id.pod":"0c89d29765a4be61745251be6ec0f297e636e975b690bac4713db1ff8980d1af","openssl/doc/man3/SSL_accept.pod":"394d5c0d4f87b997e687aec50614f6fd0818a4511d9865b98abe12475d9c3780","openssl/doc/man3/SSL_alert_type_string.pod":"e878e16b1bc3a5bc478fccad7bb32a41277dcd370d0b287b29b2227dad3f7b97","openssl/doc/man3/SSL_alloc_buffers.pod":"adfc9fc4fb9f13445d40f6dd2cfb6cb217dd5cbfad7684c12abdd419dea2f89e","openssl/doc/man3/SSL_check_chain.pod":"6f5767fa1a1aa97a348f7faa324d59180934a2d061799d5c67fed2d5f817fa07","openssl/doc/man3/SSL_clear.pod":"7e870b0990741451b75e1d4d8fa539e03bbcc7f9f1b719ce57156999cdc946da","openssl/doc/man3/SSL_connect.pod":"8b9de6c2aaedc52619681458275444db2c66c2e2b72934e2089d19a92fb91f3e","openssl/doc/man3/SSL_do_handshake.pod":"299b29a9fbfa7a48895e85a57690b32c5c9579db147362283b31108cffce3a1e","openssl/doc/man3/SSL_export_keying_material.pod":"2acb6d096b31ec8fafa653f7e87cd597127a9e689d65083f22bc384961af3d70","openssl/doc/man3/SSL_extension_supported.pod":"e676ee943435ed9c9148481468b9217e693fcf538e999d852dfdd2fbc07caee1","openssl/doc/man3/SSL_free.pod":"4f6cc5c3b6d7677295e8b89dc4de699899a3e760d5b1ce5b78d917573c0493ad","openssl/doc/man3/SSL_get0_peer_scts.pod":"e126b6deebc3f24c731a930c42ddc7e0dd6b76e89dc33266aa4349334967ae9f","openssl/doc/man3/SSL_get_SSL_CTX.pod":"c6c6bec96e375583efc447fede87876f97da5cd0b92e57f1d658e2b66c3c1551","openssl/doc/man3/SSL_get_all_async_fds.pod":"6ea3e4b338f225e31b83210727d4028d9f6a1bff056e336ec4401558302f07b8","openssl/doc/man3/SSL_get_ciphers.pod":"3487a64ec366c5aa925ba9e40ba254566449013275e3879a1c2e221f030023e1","openssl/doc/man3/SSL_get_client_random.pod":"0b4fcc3396b1d7cf97c69334a62847d9934b4dfc084d9e157fe046e7bf82bfe7","openssl/doc/man3/SSL_get_current_cipher.pod":"4b2e9b3f34d7e65baf4e7cacf148b05d3ce7742d81adef63a0506256a6845d81","openssl/doc/man3/SSL_get_default_timeout.pod":"7eff4e2d544b864b301e2a92f827dc5edf98a4de7c7e8abf7d6b988ae6fd13e9","openssl/doc/man3/SSL_get_error.pod":"14550520010f9d63fc097b4879893b5e1912148ac943ba76776c11ea81e566e6","openssl/doc/man3/SSL_get_extms_support.pod":"8f276a1fb14347c3590b919c0b5e6d65a204eadb15a88726ab094638b963440d","openssl/doc/man3/SSL_get_fd.pod":"baa009aa87139009071cce433eb3a09e3cb6e64ac2d952e6b2ce1131169ba39f","openssl/doc/man3/SSL_get_peer_cert_chain.pod":"8356388380053cb13b6e09ad3a471608a30a9e43bf7f2d87836a36b3d2fb55ec","openssl/doc/man3/SSL_get_peer_certificate.pod":"d601fcd0b6a607c1f2a77578cda877532fce9324dfb7def48ffadfb8ec4ce244","openssl/doc/man3/SSL_get_peer_signature_nid.pod":"d9e1ade1fa9509da21222af7e33257f1aeaff9c02cb0b2804c5d0ccab444f3a1","openssl/doc/man3/SSL_get_peer_tmp_key.pod":"0bbaac7787c739c1d5b5d67277ba1b7dfe9a3261ecf0a1cef6a2373a9d712884","openssl/doc/man3/SSL_get_psk_identity.pod":"f44137b49e863d0577ac696832cc2062f28997af8a4acd151d4f807d93a750f7","openssl/doc/man3/SSL_get_rbio.pod":"c85c26efe281ec61aa08f9b906f48531b97e9d43bc8d8d87d235c371a47e4c1d","openssl/doc/man3/SSL_get_session.pod":"ea413ebec24f78fc1d24da12615c382c06fa5772b38eaf3d1693a857fc881615","openssl/doc/man3/SSL_get_shared_sigalgs.pod":"d23ea6dc2ee08770d8526b829a95fda5bfe5e93587136d7f0ef458c0daedb4e4","openssl/doc/man3/SSL_get_verify_result.pod":"aa1571db0fb36e175b38389bc9fdc997f6649eaa6bee6a20c2f815a760b74faa","openssl/doc/man3/SSL_get_version.pod":"acd757055af280f337c94b91b965e2e473f93444d82d5951995ef98ffb014014","openssl/doc/man3/SSL_in_init.pod":"1574aaa908f8922ba23290e19906a4731770755436edd879a45df45c824e6c0a","openssl/doc/man3/SSL_key_update.pod":"615f544558314aaa3bf081414194a056bf70f10fdbda1a0b165a9e8e1af6ef62","openssl/doc/man3/SSL_library_init.pod":"fa072f418bf6091d30ca2625c3c87692b6a9b21f8bba3ab1ef844d9c97601b77","openssl/doc/man3/SSL_load_client_CA_file.pod":"eb51dbe483743c954c0497519398b753be2eb9fb9355af5320883a1ee1052bb6","openssl/doc/man3/SSL_new.pod":"325a9beb776259495c4fd9ea3dbc4613d9786e44ae69d598e8ad6dcc2773aeb7","openssl/doc/man3/SSL_pending.pod":"2baee7bd0084c86db08af4600b11a3e3bf48715b8c46fc6e23c711519e23c8ef","openssl/doc/man3/SSL_read.pod":"8b731c1080bfaeaab6e886dc4ad61a6427212913d237807b5f45eddcec361b5a","openssl/doc/man3/SSL_read_early_data.pod":"e0ff03f9b4358c8e12728a366088909e1551dfcbcb729b70dab02c96e638734f","openssl/doc/man3/SSL_rstate_string.pod":"023964a6c1ce28e063baff5cf8328d0c609407f793a839b9f519776b97c3bc91","openssl/doc/man3/SSL_session_reused.pod":"372667c4805628c3d0288c25d8caca78c928ec09bff212af977fde7f682aa335","openssl/doc/man3/SSL_set1_host.pod":"db7d71292569f96cdbe0d242a7fe62db1697a7d51e6ebf23bddf0a6a5b242e73","openssl/doc/man3/SSL_set_bio.pod":"6ba552c633f6e81e2941995f512023b1d91dd6c9533e16170d74ee0b5f75d66b","openssl/doc/man3/SSL_set_connect_state.pod":"2c1545479df3d68046b44b3af203405020830fb980a851ae988694a317905531","openssl/doc/man3/SSL_set_fd.pod":"df13b04c990306ff46e8316afe115bf40472d2f99c1c887633ea4879f068206d","openssl/doc/man3/SSL_set_session.pod":"f1c565df21199f9bb9f22ff81478238e1fe498dfa990613a529d302d9df360ff","openssl/doc/man3/SSL_set_shutdown.pod":"e21d4a6187b06df0b3ef7da18b397ef36692973af19334d5bdbbc9e4ebe82bfc","openssl/doc/man3/SSL_set_verify_result.pod":"dd2040ebf36d0dfec55c4a8e2969f6c2585ecf3f7b23b106b04858230dda1d65","openssl/doc/man3/SSL_shutdown.pod":"9d53331571e37726ac56139ff7b66f10f08420d1df728002beea7fbd31b07633","openssl/doc/man3/SSL_state_string.pod":"4db20f3c0aa03f62ddcbaeddadfd44c8bba703faf363e76994da3b9cb030cdbe","openssl/doc/man3/SSL_want.pod":"305bc0a806621b8b017278b9730946a7115c81b95a00d2b084a1d2e53986a276","openssl/doc/man3/SSL_write.pod":"3f2a76428e9c691d3c968c5f00949b5075425eda529cd25a366e018a3275ee4d","openssl/doc/man3/UI_STRING.pod":"25378107283a87316a74259e19d67e836c212be739cd5f60f4fddd2dbbc2f151","openssl/doc/man3/UI_UTIL_read_pw.pod":"c0fc481fd69923bad9539a754090c7540f361b6c3b524583ecad559d6d56deea","openssl/doc/man3/UI_create_method.pod":"a45774e406ce7a57184e62df20597df23919654b561feb6d46288fbedaf75b0f","openssl/doc/man3/UI_new.pod":"da09d8770e7904e4045107d31a7dc08e7aa751eaaa0a0d03658be87cdb6a26e5","openssl/doc/man3/X509V3_get_d2i.pod":"835ffcba4795c13db5079aba4db321b72c01fdb8eb36357deee0855cdac135d9","openssl/doc/man3/X509_ALGOR_dup.pod":"5b049392fe92e7b0e8007fe8cb607181c28a9b61a60bfa8a14c13126af5ccc76","openssl/doc/man3/X509_CRL_get0_by_serial.pod":"57954e092d37e19f57e456aec46fc041d3f7881496a7ac82594ad0d73a627bfb","openssl/doc/man3/X509_EXTENSION_set_object.pod":"765f9d2f6c7f0f62c3ff83cdaa063b9ff34610cb0734c29e2a737d58ad00ebf8","openssl/doc/man3/X509_LOOKUP.pod":"cdd0d25df89aa2d0574f0b878e064c0e12cb918fa86128159411926f2eb576a5","openssl/doc/man3/X509_LOOKUP_hash_dir.pod":"37d2395323dc9b319bcad77c4aeecdb27f7314a6490a7a39e8988aaa75710d9e","openssl/doc/man3/X509_LOOKUP_meth_new.pod":"38bb0d0fdbb31c0410e96f81c057d4f8336b90c289a66f631513049238779671","openssl/doc/man3/X509_NAME_ENTRY_get_object.pod":"0d5a67f03dcffe8c40cef439dab7e6e89fce60aa2222f4ea8f01c9ac3f2409cf","openssl/doc/man3/X509_NAME_add_entry_by_txt.pod":"9c0100e44bde9eda0b7c55b81c421666024a4fddea2f74ae71ffc81d7cedc2b0","openssl/doc/man3/X509_NAME_get0_der.pod":"14db4a7ab337e3e2315ee57b56e155185248bea3a9bc360d6e21cf82344a7a82","openssl/doc/man3/X509_NAME_get_index_by_NID.pod":"e44f82e4a7c46c24291c022d4159506f5a9d275747b5fd7c79a3e999beedd12f","openssl/doc/man3/X509_NAME_print_ex.pod":"ceb2c5ee0e0059fb8d2c83a7769a54d6eead6dfbdc75664c5891fe3781c39100","openssl/doc/man3/X509_PUBKEY_new.pod":"665eb733a696acbe5dc9871a2fa06d5c34ec9a1b8d92e7f1a9f9ff82e3232383","openssl/doc/man3/X509_SIG_get0.pod":"18d70f17d6a516b72f67e3137856a8c22cbe89cbd0734af7a9ba5933d9ed69b2","openssl/doc/man3/X509_STORE_CTX_get_error.pod":"920225d3f396dc13390db5ea02433c3662358ae90f7af37739324093994fef3c","openssl/doc/man3/X509_STORE_CTX_new.pod":"978ea0ef33be08be051310e36c4865c4b24de0a47682da937810e4ef066d7885","openssl/doc/man3/X509_STORE_CTX_set_verify_cb.pod":"acb6a12e45d92b1865906c82bac24138df9ec88ec68f6e427f0890290b807bc7","openssl/doc/man3/X509_STORE_add_cert.pod":"f62a0351ebb347b140244ce044977a2cc74b01b035661656a53eb07ccfb54be4","openssl/doc/man3/X509_STORE_get0_param.pod":"d550b0aba2821b175b98f4c6b10863841eb705eb238ce992eee3c10ed505a11a","openssl/doc/man3/X509_STORE_new.pod":"3ed802babb15f251e5de008ba067000b06a59224878469154b46ef51b0d0dadc","openssl/doc/man3/X509_STORE_set_verify_cb_func.pod":"b33e3e94836369fc3c9151e3e413067606dcab0fe75ac2ef3cf0630fcf1da222","openssl/doc/man3/X509_VERIFY_PARAM_set_flags.pod":"e0cdefb210eaf03c458e30b471975432d7a34fa1d322260790ee4f2ae19c5a31","openssl/doc/man3/X509_check_ca.pod":"b52cb429aa0b9416f9189e78e4cfc0eac26efb42d86b4c5c18ba626425ad0858","openssl/doc/man3/X509_check_host.pod":"d650728411df302db7e622e20e567b5110f7e6af0fc06086550bdc46362e1f1e","openssl/doc/man3/X509_check_issued.pod":"6c17b2588117d268d9c6c0b2efcfbb92222aa3cfd179fce4d49356421466ea6a","openssl/doc/man3/X509_check_private_key.pod":"edf307f7df63cacb1d23aa4f4f34565df534cde48318480cb5ee95f0c7f1fa27","openssl/doc/man3/X509_check_purpose.pod":"fedce0b259365a9bb0390c5423b688d9876012b1347e1627066de0d3993f12c2","openssl/doc/man3/X509_cmp.pod":"aad2f01c0457d96db4f84de4e5e1924e7572c538f0b6a0d6666a6c8e377a62d9","openssl/doc/man3/X509_cmp_time.pod":"b981da40f3f68a578db29a66f2570e55cdc99daa819268d15d7c626f6e1c230a","openssl/doc/man3/X509_digest.pod":"f4f1bedd97852b9bbe82afc6e4c573125f684714590b42b064787ae821d62d04","openssl/doc/man3/X509_dup.pod":"7caa371b8da0812b7fcb8f54e57136e41fb81f80115088dac25082fe84301159","openssl/doc/man3/X509_get0_notBefore.pod":"66cdd9be36c3bc13680918927af2a80b06f92871449be70ebef477348e687801","openssl/doc/man3/X509_get0_signature.pod":"d83bdee1efda4fede8ea60887eaa45315ebeb9ebfc822b7e60db79768fd92eca","openssl/doc/man3/X509_get0_uids.pod":"04549206bc888e9da9c4bc4bce5521f0da25b1c280bf66a3fd08773dd695c46f","openssl/doc/man3/X509_get_extension_flags.pod":"19e7da3eb1e54e6b2625a53c71aa8ab74c89c405ff3a20ce8c60f2a9d4ce02cc","openssl/doc/man3/X509_get_pubkey.pod":"0d1b2fbdae4528648c0a70632d6fce285a5ee5c1bbd5bc4be28373ebd11c5644","openssl/doc/man3/X509_get_serialNumber.pod":"25c71d0e201e9eb12a73f9d80d6c4cb6a3c46d89efa8da10a432caf2908936a0","openssl/doc/man3/X509_get_subject_name.pod":"35e20b0e6a7cd1de5c5325b62af3a494f59a4a3e9b2f5b7f71ec90ee90844ffb","openssl/doc/man3/X509_get_version.pod":"abf7010b232e4c36e8c18bd2363c3eba41d1807052b862753cd1832d7add03f8","openssl/doc/man3/X509_new.pod":"22ff44332adb2856832c706039baf9884b54dc4ed90ac9c6cb33958f31968acb","openssl/doc/man3/X509_sign.pod":"937a6de441cb1c8c084d1a78fa91aee9e4b281adc46bad08bc1e4f4ede49d603","openssl/doc/man3/X509_verify_cert.pod":"e4ea4d7e7532d86f7cee5404412b6f2530e16d518850346d4cf45bfbdab5afc2","openssl/doc/man3/X509v3_get_ext_by_NID.pod":"5faf535447941465dcb4dba4527bc036030218f4a3f3cb31fce49091d6447789","openssl/doc/man3/d2i_DHparams.pod":"4f0ed00d8ba4d77edc38cbb99b3e16dc1d3ae9ff498e89baec764343b418aec0","openssl/doc/man3/d2i_PKCS8PrivateKey_bio.pod":"d1cdb811d88ba557c6783727f784a63c041a02f075db7b93302e0277a5eeb441","openssl/doc/man3/d2i_PrivateKey.pod":"c7853fc738802f1db4a172871d86c7b8a7d0b5d98243881ce395ac12f295d208","openssl/doc/man3/d2i_SSL_SESSION.pod":"bc21bc24e88352a7fa7960b018c2431aea3b0371775a9722641709ad23e2e62a","openssl/doc/man3/d2i_X509.pod":"4f08f3fd0a4e71e83e6291073ba778db7b5d588e89f1b669990e66bc8eeda9f4","openssl/doc/man3/i2d_CMS_bio_stream.pod":"57ff21edf5e057b5186ca8b616087a7f8fdfa1293cac59ae0bb72a740a4d008a","openssl/doc/man3/i2d_PKCS7_bio_stream.pod":"616ff7934af6cef7209f9e0ab2343a0668de210562e20affa4d9b02aad36da67","openssl/doc/man3/i2d_re_X509_tbs.pod":"aaca697edb4b5c7139cceba8aeb5609d4a18d7606dde52a66256bff5c8d680d6","openssl/doc/man3/o2i_SCT_LIST.pod":"82f5f749eb71d3b694869a53f060c3f9ac20e380b62d7f4a908fac406423d68f","openssl/doc/man5/config.pod":"831ba6dab308e1c0923929089be0c187a9dca9cccead33bfbfecc00885274908","openssl/doc/man5/x509v3_config.pod":"57787903148c11ba7470b477ebdf91098dbd5cfdc1cf176c3fb26f6c6d4e9aaa","openssl/doc/man7/Ed25519.pod":"0f19e6e4a06a6508e57c09a6b2c7890cdb6f51ec5806ea91e06db4be60e7c137","openssl/doc/man7/RAND.pod":"05d139307366ae6b646a292bca0862ceefecf7720297380635770c9545d938df","openssl/doc/man7/RAND_DRBG.pod":"d4efd07d231b501525970899ff911ba7f8036f724e00ea8704c06194e4fdc794","openssl/doc/man7/RSA-PSS.pod":"e302eda9bc0e90889f498d834ebf4059d44b4fc7f5e3edfb292e81d7df35bf27","openssl/doc/man7/SM2.pod":"aca4dae0e2d24d5d1c0987d698922390d9b3cf638f77a838cdadaeb645b7d2d7","openssl/doc/man7/X25519.pod":"674e80ff397706e9c6fa83c85ede868a07c3ec7eb46bf4f18fb13572e73c4814","openssl/doc/man7/bio.pod":"5a6b943aa56e79f8d9c97eed0511def267a38410bf841b230994164e3b39e425","openssl/doc/man7/crypto.pod":"426f6f3a4300d4b9928341227d5630e932f41001e2f0f9cb73e46650b3d11081","openssl/doc/man7/ct.pod":"4d458e58daf08b7b528fb72de6c9838a89fffcc3740b1438cc3b8e30bfd2a192","openssl/doc/man7/des_modes.pod":"fff878fa997b37163dd31713c796d1574490b0a3223dbe11ced01298b1c3b737","openssl/doc/man7/evp.pod":"3588d0b8355739a8b8ef48149c16b0e4625ed3798d9399528daf850c41a81314","openssl/doc/man7/ossl_store-file.pod":"b68fb7f166585d643aeabf5ad66968a9e1bb9a0f51848f9351e00e7993f3cc81","openssl/doc/man7/ossl_store.pod":"34cab23c4fe33340e705d8ff2b437c1489cac2d8757df8dbee81c8b5a148dd4d","openssl/doc/man7/passphrase-encoding.pod":"640502a7b0407c9e8a2c0332cfa6fefe3cebd6cf774f5ac8f24d2f22c8908d8c","openssl/doc/man7/proxy-certificates.pod":"bc563175f718b7efa53757019af9985440739489b9bba84b4bc203e2439f0669","openssl/doc/man7/scrypt.pod":"72dec00db94199c8a1e6fbc867d92505362456de3d07f199d07bb35c6826b238","openssl/doc/man7/ssl.pod":"170a8a7177e45dfe4c4515169e29b794445b6163e8360f1f691d0695ac9e2cb2","openssl/doc/man7/x509.pod":"b5ba0901b6aeb6e7a6ed090e061e6368aface651e928f22de2e02db1b25e1c02","openssl/doc/openssl-c-indent.el":"7d9a49b0d41e201adaa2e1b336f2073e23cb3ad8962c187dccc5dcdb3037e652","openssl/e_os.h":"c8154926e3e19c448c290142e933c40df58b262f3dfbc0c0c8832d70645dd547","openssl/engines/asm/e_padlock-x86.pl":"66bb5e99e694a423f373d4bb86e55566951e1a0ba31853630f6c3e61e7c03075","openssl/engines/asm/e_padlock-x86_64.pl":"e135d82621905b8b77d8c406ac4bf0df6bfcbcea0092a186fb05180247f16b2c","openssl/engines/build.info":"40a72aac066ce902cadb25477c73e57848542699e1949e100e6bd1e26744d396","openssl/engines/e_afalg.c":"12238f9d45cee11f1135272d781eccfa51ac02736bee5171c22a1d16670936cd","openssl/engines/e_afalg.ec":"e4f35d834586b49d89983d1d45d63cc8f03c6ad9b23edab4da035b8cb7b9f6b3","openssl/engines/e_afalg.h":"2c099fc3edc2a8013b7a7d8be233ccc61131bd417822940b805a0fe54a9c9c24","openssl/engines/e_afalg.txt":"9da1e6ea1d14326a3667263017868ece1c7ee56b134986ce7b73f70a49b6ced0","openssl/engines/e_afalg_err.c":"c0e61757b1f83104dc35d0f9446b61c493473a2d12314a3ae71ba579c0037b15","openssl/engines/e_afalg_err.h":"6ac228237a4e3cee9b6acb22205df48c87d72055dc24119c24f637d072e358fd","openssl/engines/e_capi.c":"94d98515cf5bc239f4f712ec6c1d46f34c9d61aa90bd36726f87641addd600e4","openssl/engines/e_capi.ec":"f321a020da40d25763685beeea504d39d7ee729a78760a160586b3ea06855674","openssl/engines/e_capi.txt":"61b251d2b29b2b2a269621a194187dfb4409803bcee4ed06a19641351b50b01a","openssl/engines/e_capi_err.c":"649eefd0de78cb8d421ca31b56216df68a567b225e933fea0a81f0527dce9d2a","openssl/engines/e_capi_err.h":"70e10eee7a1a6a60a97efab2a1a4d1e9a63fb3c270c416911176dbe0e917dd3c","openssl/engines/e_dasync.c":"d7d7122645935e9a93d4c1f335a163cee0ee02fc0ecc6828baeaf3668c937504","openssl/engines/e_dasync.ec":"9d72d081179b0c8917b9ed5ffae64b43988d6273139ba402ad54b6da030752df","openssl/engines/e_dasync.txt":"4bfedb638226e82d694653ae7d12ac7c292a0da53bedc8d5206733597c3d16e4","openssl/engines/e_dasync_err.c":"59386ee77e72f4de83d8803f17d1609d6cf8bedd60743825259f485fd16a8b89","openssl/engines/e_dasync_err.h":"2affd0fd7a474b7b42533d3894446c589024778f7de19bf44cb75eef6899a8e5","openssl/engines/e_ossltest.c":"cd84c18c208efe2a472ba76a248aab31a6f72c4319fe18a96fbd26c894792bac","openssl/engines/e_ossltest.ec":"a8bea88a6bdac1f2757a2edd3509f1cb6726fc416a75dd8393abfb8cd76ab7aa","openssl/engines/e_ossltest.txt":"dfe08eb4bfc84eb3e26d5f1a998a346df3f1972dcfe372a45439e0e47d47fdae","openssl/engines/e_ossltest_err.c":"1f373f1fc169f0af13b942beca5e596e83eb0719764ddeb86809498364e3d1ed","openssl/engines/e_ossltest_err.h":"2c45ed3593c3e319f6b195720c0fc04af0d1dac6c515366d25dd13508903719d","openssl/engines/e_padlock.c":"4a0299e184d7465389db2ed6eabf16fd4ed4dc943cf3c0eb8498d5aa1dd4de1b","openssl/external/perl/Downloaded.txt":"9c7b05b336f8a2f171c296535d37bab34c2597c773afc9627ecd2d85980e3ad5","openssl/external/perl/Text-Template-1.46/Artistic":"b7fd9b73ea99602016a326e0b62e6646060d18febdd065ceca8bb482208c3d88","openssl/external/perl/Text-Template-1.46/COPYING":"4d23c8c814e5baf007d854f01d8502e77dc56a41144934e003fb32c4e052d20f","openssl/external/perl/Text-Template-1.46/INSTALL":"d2f84dc3b27915516d16694b00ec29d20d1b427b2c54a85e7691f4caeae0ca67","openssl/external/perl/Text-Template-1.46/MANIFEST":"3b667017874fc2df25ae3100962fdd3026615795b0ce60fdd47f02b0f545c688","openssl/external/perl/Text-Template-1.46/META.json":"e52d6f14b9990553dcc5baa16be1edee348ab890dd065c9677db246fb44a7b42","openssl/external/perl/Text-Template-1.46/META.yml":"566a7700ce6679cfa949b46119d3f103f1e3f5b891782903b087b096cd5c13e6","openssl/external/perl/Text-Template-1.46/Makefile.PL":"dcd15f8fddea6bd866d4de9ff5be0f49b69e37c34165b0a8dc570e9b99adea45","openssl/external/perl/Text-Template-1.46/README":"04cb0c7eceb19919260fecc5d617783cfbd39b5bcf676730a5757cbd0eeda01b","openssl/external/perl/Text-Template-1.46/lib/Text/Template.pm":"ebe5111b20332dcb62b52a6c023dc6cf80bf42f3193fd14f8708239e5ec30f3a","openssl/external/perl/Text-Template-1.46/lib/Text/Template/Preprocess.pm":"829f63d0c273b77c7232fa1fea02a76f076dc4e4c3070c840a9125296503de5d","openssl/external/perl/Text-Template-1.46/t/00-version.t":"c5e0f7d0e5dd616a3415528ce2c1d86389546852233ea9697944e21d770a6109","openssl/external/perl/Text-Template-1.46/t/01-basic.t":"a012eddaadcdaae932f769c3987290a0c95dd6f822d933afb529125e0975be4b","openssl/external/perl/Text-Template-1.46/t/02-hash.t":"bbcbd9546cb771107a258831a137e31ee68e2e68bb1d69200f3f7c46302fd9b5","openssl/external/perl/Text-Template-1.46/t/03-out.t":"7f47cb646abb093e287ffb7ea0182ab346a41941f5f32324c2464ba08f8561f1","openssl/external/perl/Text-Template-1.46/t/04-safe.t":"3b20d194cfe1476e6cf088e0b6d1094275021dd5737a8687598c49d920d10167","openssl/external/perl/Text-Template-1.46/t/05-safe2.t":"e0f0eee46e23f0141705b9af769c551a6191ff76b8b75ee4dfd8963404d4a316","openssl/external/perl/Text-Template-1.46/t/06-ofh.t":"7d3781023c0f210376a8650825f89799f53ef457b457feda99d02475e9a744e5","openssl/external/perl/Text-Template-1.46/t/07-safe3.t":"af4a2c1b81b038352f1411e4c4e0115e1f0b023510e5276ad69452a859a1e30e","openssl/external/perl/Text-Template-1.46/t/08-exported.t":"9dce4da9343dab7cdeb9f2799556e6a49f4231916c4db4971eacc3151cf41da1","openssl/external/perl/Text-Template-1.46/t/09-error.t":"01781f28bfff4e88678e6a17e3b50b1cd90b76ffa358a7c2c56058cd0852a8ab","openssl/external/perl/Text-Template-1.46/t/10-delimiters.t":"0a203b734fd67f83b3a1c138024443cb6270dd247d90739a345ef46271c0cc80","openssl/external/perl/Text-Template-1.46/t/11-prepend.t":"c11cb95d3583368ebfd315e8e5a6dafd75ec60debf41b8898492d7e913dea0a8","openssl/external/perl/Text-Template-1.46/t/12-preprocess.t":"422781f1e64771ef8421f32e8ca954a8e4f0a4639d77c4cccbb64e6fab6950ff","openssl/external/perl/Text-Template-1.46/t/13-taint.t":"f044f17e8fc390046118710afd041eecb69b00b81dbc50ac4aac6df359d5a2b8","openssl/external/perl/Text-Template-1.46/t/14-broken.t":"86bce79fffeb080659eb11f381f6a26c34f007028e34882f0badb194a9cc3881","openssl/external/perl/transfer/Text/Template.pm":"806ea72d6560cdcee7f9ded9527c51bd7264e17a4f191339e1d2587f801db3ae","openssl/include/crypto/__DECC_INCLUDE_EPILOGUE.H":"53cb536a751a1a309e098aa662ed2f4b8e0dabe94a6274b9e513135179e6458a","openssl/include/crypto/__DECC_INCLUDE_PROLOGUE.H":"021f571eef8cbe45c0cd6520aeb12499ac31154fee331955e5a505fbc3762570","openssl/include/crypto/aria.h":"bb5c3570c4a8086452a37d505d17f86d94173cacbf44e20de6233b4cc503a38f","openssl/include/crypto/asn1.h":"32519a422642025af212db876a62d7ec9ecbe6b56fac7bdc107e526f388469d5","openssl/include/crypto/async.h":"be1fe19da7f3163477ea57a75ac71a7d2b85a90e01cd9bd589084394f242900b","openssl/include/crypto/bn.h":"ecaa2d75b87a202add8731cd61b6038921c9c8eaa17e75b380d4167470f7bb6f","openssl/include/crypto/bn_conf.h.in":"eda1bac34faba99d491f2d5c28328997a94b4f59db06b65b45e91387ce00c0ac","openssl/include/crypto/bn_dh.h":"2e34e268912af61b71ed8216c7f0cccb760994e0e3c47b0ec50daa29b46dfb89","openssl/include/crypto/bn_srp.h":"d08141769d222ce60d977563fd0f6d653d2fe92e1be210a4cfb4c903db932fcd","openssl/include/crypto/chacha.h":"0e5e743174154a7d46d90c82a3dd252c1b1831ff3adfd2fa3ac5d237801ee5da","openssl/include/crypto/cryptlib.h":"8cfdf6c5319fdffc8a64d6ef0844fea3b9fcc270e314f078342b1e26a51b568c","openssl/include/crypto/ctype.h":"5265229633ff6c80ef8c5e5cb5e919bb1f837913f9e48ef4301987b2a2f49d73","openssl/include/crypto/dso_conf.h.in":"469e89dc01b73dd5bb56fb6fa4f3ade57ddc8f9ab2495f7b83ca4bb3c03fdb16","openssl/include/crypto/ec.h":"eef8c8d5561e74c0a6aac33e989f284726b44b324311acfdb4dff16451eea944","openssl/include/crypto/engine.h":"139ddc0e469424cf51722848a7befab0ce1cb4bfc336d42b36d6edb3a54bd69c","openssl/include/crypto/err.h":"bf28991eb0d4bb8ca09f7db06034549509001352db8fa75a0e9b95d6829df22e","openssl/include/crypto/evp.h":"c7e98d995cae553a3149a52bfa0ae5e76f1d9c989c6193076d526cfa7129c246","openssl/include/crypto/lhash.h":"027fd181f9effaa0f398a856c9bf423ef2b6439d2a717a63f5445546ebc2aa62","openssl/include/crypto/md32_common.h":"d89b9c7ddcf20793eb2211c1335c87053bbaa7bc685bdc639ed861a3bd4ffd4e","openssl/include/crypto/objects.h":"2c49e60754e30ebe4447d45e8856f07fcf2eb00998f2931d6522193155b2eebf","openssl/include/crypto/poly1305.h":"16e9d65921e61f0be7c160522c5505d261b17fab81f6cedc93184e8d23f0e30a","openssl/include/crypto/rand.h":"a0cbf21a749de36ea5266de5246a6226441ef967ce27022db00245f87f68be1b","openssl/include/crypto/sha.h":"bba5f6f4c1c2d2a7c00c380223fd56c5a82a039f7e8ca35ef53bd0c99ce04cc4","openssl/include/crypto/siphash.h":"1bad4bf41ffd54408532b42d3b806ebbb0b31de408d8a1795ae4b39cb7aa522d","openssl/include/crypto/sm2.h":"2bb14af67c25f1c247c482c29c76ceb955b2704a2aa4c154ddf88b3d263cff4e","openssl/include/crypto/sm2err.h":"fc350f1001162921f5e914a0cdc81220639d6e2a4477325ffb54f5455d41cf31","openssl/include/crypto/sm3.h":"44348ac98ef8a9df7c97b0d4b25b7c23988f8cfdb84735a26a42af16c3e86665","openssl/include/crypto/sm4.h":"aa3d6e0b83ac31f0d872f01998c77599cfc495a354df7eae6077b944a7b98daf","openssl/include/crypto/store.h":"efc483671c0eaac885fcc08e7c276d3e4b5d7b96ffc21aa36b2eb41ef400ccef","openssl/include/crypto/x509.h":"85366be4487887074f6664102a10b945e566b43a12879d165cb938a11777238d","openssl/include/internal/__DECC_INCLUDE_EPILOGUE.H":"53cb536a751a1a309e098aa662ed2f4b8e0dabe94a6274b9e513135179e6458a","openssl/include/internal/__DECC_INCLUDE_PROLOGUE.H":"021f571eef8cbe45c0cd6520aeb12499ac31154fee331955e5a505fbc3762570","openssl/include/internal/bio.h":"a59fe352fef0747629706586a703f2bed34ad576be4de75b44c7a88641435f5b","openssl/include/internal/comp.h":"0bf68d4852d8387bb24b3c6b2129c56070c84f9841fe53e747cde57bbfe61da8","openssl/include/internal/conf.h":"5fb5edab92a21ebf3387f975f8030b702ae306c000c9933c5a1893dd6c5d47cd","openssl/include/internal/constant_time.h":"fba4e88378e1a76418dce375f88a94726671fda5161026f68d4ee398673c48d7","openssl/include/internal/cryptlib.h":"d85479ea9a0f508c944b3f0eac1c7bd9d55d1a9de990cd1379c8b645591f4fc5","openssl/include/internal/dane.h":"2b15667713ae1dff795754cfeddd45dcb497db6720bb6bef1512ad9d761cd77e","openssl/include/internal/dso.h":"c2aecbb40f3b210aa7401b6f3eefc4ce94bcc4b2313917c6ff9ea2b1a8e5fb8b","openssl/include/internal/dsoerr.h":"5c8a57e223879f21d50e9275512e7e0c45a959273ab9932bb8acace1fa625782","openssl/include/internal/err.h":"ecfe3e47674b053c612631cedf1739dfd4f2548ea14e2909539d8c8c38958780","openssl/include/internal/nelem.h":"aa9604f58d464853c47ec7d6beaf09ddeee04dedcbdf7ee8b5132ce5aca19863","openssl/include/internal/numbers.h":"dd67067fc220a479fd1e57936803c8149a6dfde46fb45fc1998bfe51b0f5d9f9","openssl/include/internal/o_dir.h":"1676a17c45a6a8b98290640bc57f2bc6fbaf89a54a01342e65f40d3cf9a7f02f","openssl/include/internal/o_str.h":"661d9dff184260ecd9705dcb72011934314ca0f9103723c4238397dad1333c3e","openssl/include/internal/refcount.h":"cafaf8eefa9690f3e6a0f49f7fa5900bd486099a5c67436012bd7b4f06c4201a","openssl/include/internal/sockets.h":"2330702255ede77c8e8ec9e8a09d476f2d701d3ad900dafdf3cbcf1ae8ec4bc8","openssl/include/internal/sslconf.h":"8f643e91886fb1fa9aaa4f7106aa360e31051fbfa4d78ae2440caa44203093d2","openssl/include/internal/thread_once.h":"76a3408ae6a68a59fe6d0ccab432644ae3d4dbee5a35973e2466d323720b974a","openssl/include/internal/tsan_assist.h":"23841bbbe658bca580f743db285dd6d0d1ce8af8ce5fe755df11995060591cdb","openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H":"797eeebf0fefaf464c6b16b02883cae3bf629de7610d48e9c4ba5efeefd67842","openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H":"57b996ee571c00c298204b878fae1506e594655c15b6b751ec26b292f9d58337","openssl/include/openssl/aes.h":"f6ba27e87d97ea578f01540a8f84b7eab05d42c178badce712d0cc668d8a9981","openssl/include/openssl/asn1.h":"851313b1176baa3d6896aaeeebef56216ebdd38dcdabb39b3eca36b6645352bc","openssl/include/openssl/asn1_mac.h":"db4883ed3aa74e07338001b31ec7e3e68546521c54bbdfe68c473b33f8511ca6","openssl/include/openssl/asn1err.h":"b89b16216ddd35f028f5bfd3fe0db4f2ead6c9415e7749b7115b0393b427ef2f","openssl/include/openssl/asn1t.h":"2702f569302248b8228e493177cf0a469f127f1ce5c76bc684bc90fbdfc45743","openssl/include/openssl/async.h":"ef96c716cac393f2cd6da304af029155ecd9f021869cd5a4c341ebdf249036bc","openssl/include/openssl/asyncerr.h":"cacc9ca951aa523d3ed6b9df2366022633925a6729d30cd134a05d2ffe5fb156","openssl/include/openssl/bio.h":"78b055555957eec2bfb4ce5f91b27bdcfdf73128026be9ce85fcca0126fdcd3d","openssl/include/openssl/bioerr.h":"ad29fe4ef37fd7c4b256b690caf9371a74e29981f6561b94436dac54a61bf74b","openssl/include/openssl/blowfish.h":"813b2c7cff888b5b709b90d4da584afef59b5ce1ea888617d682f1af48578faf","openssl/include/openssl/bn.h":"8f79b29c5ad479186acaae962a598d9868dc434fd5fa49a008eecfaff1b998ca","openssl/include/openssl/bnerr.h":"8098ab9545307d6e2c9cc28ae995d6fda0e8959b6167cc03d67716b02abb27ff","openssl/include/openssl/buffer.h":"a4fa292b903cb8c2ce1761ba4980cf5bdfb66dcadcbb5c8aecc45b012bc64c23","openssl/include/openssl/buffererr.h":"722f6ea87711b7c0cb6ee29c15762c2839e5ad17b9ef579b6e81b6121f035c30","openssl/include/openssl/camellia.h":"561bdb2e985458e809e656c60e4bc83e1d6707746dd8b5badbc10b64198d4770","openssl/include/openssl/cast.h":"a14c51a129b3ae5795dafd98065be0bb0cbf00b4d4528e85adbf629966f42f53","openssl/include/openssl/cmac.h":"75bf95d1da118ff1e2f143ccb7a564d949de440097b97a49725c03976e167b52","openssl/include/openssl/cms.h":"07e4b0a779c957ef9026d69c0cb5a621ddc2060af967e0dd5e91ac861fdfbdb2","openssl/include/openssl/cmserr.h":"7e0fddaba85fb3d11262aee2c60272592dee1a6234a52a94b06bafd1c0a54350","openssl/include/openssl/comp.h":"98a877c62723e6042e4e4740cd1a6e7799df752d9234386d73a28a098e6eb31c","openssl/include/openssl/comperr.h":"f64be205d08af2557187ec19c03678aa9e29f66e428de29cebdd62cd7c3b5515","openssl/include/openssl/conf.h":"e54341e30523dadc09d821366f5afb13c9286d540b34c1945406918ed588fa21","openssl/include/openssl/conf_api.h":"175f86b69b58b0cd1da6c9b27d87ab4e4ed52f37dc76b7895c210c43469504eb","openssl/include/openssl/conferr.h":"abfe26485cd43a80e0c476e628979612ad28a635577baf68eee476850425a498","openssl/include/openssl/crypto.h":"d2cd84e695e68051fe67fa7cf901ccba4fadccc71a6b30090df20a01b91d3ec7","openssl/include/openssl/cryptoerr.h":"e752d7d3da32a6c009cf264450726367fd69e7c2a4c185d580ce650021d68e7a","openssl/include/openssl/ct.h":"b27aaf0d39609500b4fce3b3b65f6752116acb30420de1d53943074a481043f0","openssl/include/openssl/cterr.h":"ab6e70b52e341247c4b217883980ff1e98e4453d1020b0b038cdbf096c4ab8a5","openssl/include/openssl/des.h":"3cb68fbb498e34e19e46f9d41561596ab69ccf78b1d8bdf2f312e892c060015f","openssl/include/openssl/dh.h":"f56e0c29c124017c815c6f3d0c2413e03c81cadae2e84c2c325fc2c6719fd559","openssl/include/openssl/dherr.h":"9b1f7019d8d95e1d5fc5268089e8331829af7416b18a8908266ab60027aae0e3","openssl/include/openssl/dsa.h":"1525e5adf242643a7d36312580314f5ce61ecadf82223a49ff5c32220d78f9b9","openssl/include/openssl/dsaerr.h":"65ea8b47cb25ae82d611337cd47da7c1c5cdb9451982beec9d841413d4a923a9","openssl/include/openssl/dtls1.h":"7304f17cc9998bd7c16539ae9a5ea545f2e0c64086d5e688caba104b6a7ffecc","openssl/include/openssl/e_os2.h":"87c55abdb4755ffc04cd5e35a36d8b1ff2f19f3d8b9c7ef10357a78ff887503b","openssl/include/openssl/ebcdic.h":"2289f14f11e75ac739d1123651d16e841f3c74e36daa483c1fed9f8c5c144720","openssl/include/openssl/ec.h":"4e624064531986560789f8509dfd10bc5ed82eb65599e03ed3bfed57be6df199","openssl/include/openssl/ecdh.h":"95fb89add3bd32b6d43dcf1a51d1839b915e774d7138afaf618e690efbf414bb","openssl/include/openssl/ecdsa.h":"95fb89add3bd32b6d43dcf1a51d1839b915e774d7138afaf618e690efbf414bb","openssl/include/openssl/ecerr.h":"85a3b64c0644420a18295c8001a06bad5d7c3e84d4f871c925a1b45fb89ef182","openssl/include/openssl/engine.h":"a98df07aeac579293b186ea61c35edce3eebde1fd03d8553563f18023de47c95","openssl/include/openssl/engineerr.h":"6f3d1e91ba1b7971929530cb8ac3ef934c0b82a8cd459caf224e241a3e5ad6e9","openssl/include/openssl/err.h":"1447263f0a840e8135c586e16c3d858cee939deddf4fd905e391869809b4daa2","openssl/include/openssl/evp.h":"9d963bdda81802988170663ccfcef437aea69042f42aef3a11ab4a217b800aef","openssl/include/openssl/evperr.h":"45d68b462f25239488c020bee5fbf69700b0cd7b4dc2b3ba7015bddc499476a4","openssl/include/openssl/hmac.h":"76386c2273f105f54c5749f2fc854573c371ab185f9248ce295a748e126caae8","openssl/include/openssl/idea.h":"bab682c5cc06027c82d126ed8e65d7dd9dcc75fa464ccbc95d7f168bd69c732d","openssl/include/openssl/kdf.h":"aaafd4a962ba9b9f2a2462076c7f7b4991d9d87e7bef71d87e9308125e0e29c0","openssl/include/openssl/kdferr.h":"e406cbc8a8a7956bcb0e06a949454b48d2702339caf4a2e621ac0cde9c2463e3","openssl/include/openssl/lhash.h":"1036e20aba00e0585b96b91a00ae7792dc12501160e117d1f824833de7fe3752","openssl/include/openssl/md2.h":"9e28f0a8d5e2297649af298f5e3209d32fe9486edb1793cc698a757c91270662","openssl/include/openssl/md4.h":"03d3fc9dceec6c168d219eb9f404ca08b478d5521622834bc24b7d45945702e4","openssl/include/openssl/md5.h":"a0612a8f7e69e3bc166fc186ca44be1e5b1d020b5da8b5be021f73d48c270b82","openssl/include/openssl/mdc2.h":"f13b01ec09c45c2634673d1b9b1a79adbd6ec32bdff94287308e2bb27408e537","openssl/include/openssl/modes.h":"f4e527987e296a26fc1c06f4f896baa5f457b7e67f94957d176eed469b0fe602","openssl/include/openssl/obj_mac.h":"81ebca20cc370ccf72f3103d1231c6a42e064730bb22261a97d86ddd0e7bc08a","openssl/include/openssl/objects.h":"4018d7c54e6f19c3230af063f4dbc8523f1450528a4af15a97a0a1ff3fb3ba38","openssl/include/openssl/objectserr.h":"0ec7330c122ae2b3174df95ddecea65ff661a6152cd0192529dd1411ef3f62a1","openssl/include/openssl/ocsp.h":"cfbbc3434b56c4671080326aeb8c3d007dab7d2c3621d5146c11aba347158b80","openssl/include/openssl/ocsperr.h":"c73a57b1919601ff8c04f2dc9c62dbd130ef2d3ae39bb0fcdf25bc9e6eaf327a","openssl/include/openssl/opensslconf.h.in":"012ddfa5b7930fb023588ee96e777a7ccb7e1eb5c3d984e9f1cc4eb90314cf1c","openssl/include/openssl/opensslv.h":"6b009b0eb1c012c437e13d3b9d07807e63ba78458cc94d72d75115191a1cc26b","openssl/include/openssl/ossl_typ.h":"46f541a1cc49bf08908ab3bde05e2683fc56ea268ca3e7f2e27628653ecb4a14","openssl/include/openssl/pem.h":"32d62036d0c35d03fe7f7ddaaffe3caeafcf984ec16e4db7ed19d3e202e9d7ba","openssl/include/openssl/pem2.h":"6833ee5712125d1ce8f7b52437a752e40c2f4793276859a8228c0de71d35c3e0","openssl/include/openssl/pemerr.h":"d91c6016f3c1ba70683b92fde55500ec334777defb6486c41b0a9c4e402aa295","openssl/include/openssl/pkcs12.h":"97c129c6c9a493d7e5d3af123d96040d87c4e54fc5e41aec450832cb32a634d6","openssl/include/openssl/pkcs12err.h":"b7340727a0480f351823b669f55cd3989c065d373c8cf6ff8745b8356f61d5ff","openssl/include/openssl/pkcs7.h":"cdc3505c9bb9168a6fad434dd9d9a49ad630b9ae9216bd665b11051e04a709bc","openssl/include/openssl/pkcs7err.h":"ecee11e9fbddab20f78a018009e6a2daf287ff5df00679298b137fe9996d9386","openssl/include/openssl/rand.h":"5a91abcbdd14dcf2fc62761ccc58ee9407274ea558c292fa77ad625204ac2bd7","openssl/include/openssl/rand_drbg.h":"12379cc0a7f168cbff8e08828da72dc0e87773bc6c3bd14c4b57506339b61fa5","openssl/include/openssl/randerr.h":"41fcebfb0767afa03f3de2732d3f0ce46cd2367ec34b2016cdb5c9e84a9a8994","openssl/include/openssl/rc2.h":"ec2b9196898bbc45ff2ab00204f93a6f20c974225510f29097ad69a6eeebcdfe","openssl/include/openssl/rc4.h":"6fc023442f524349685d13d50854ad773b12b8c7a153d72d615ab27dd4a3d609","openssl/include/openssl/rc5.h":"c238954a1df23f52362d6e5fa78df2c7a5a2ad6ef9536e489f0a23295efa0cab","openssl/include/openssl/ripemd.h":"8c74b93c10a9e83abc17ced3a8021af7506f39a0fadab07b5db2d4faebcf68b6","openssl/include/openssl/rsa.h":"509c4db9081195cf6c9e5fd4683890aeb39509f2997a1989dd5a57cf43039bc2","openssl/include/openssl/rsaerr.h":"e032a933b1a4c13ec901d7561ad23ace01881b60cdcc86af0e4cb0a25a2a3252","openssl/include/openssl/safestack.h":"57665dabb37f4f0bd853539d93c64cb8adf37fd9552dc9fad215cc8f47a991c4","openssl/include/openssl/seed.h":"6bf2373dfb10dc5cbc626cf2fe86b9b1c82373d799bdd6be13eedaf7d4540d55","openssl/include/openssl/sha.h":"0bb6745481ac56b67f450d09033e813bf8f6a5f2025e90d5eb539eab1ad5e323","openssl/include/openssl/srp.h":"82a08bf9a866dec1b7deb66b4077690cee0f6caf91eb00136c5eed4e8d943d06","openssl/include/openssl/srtp.h":"e50e2dd5df6a0db219091cd1c6768a6d319ef6485b16e1f361fce43067847626","openssl/include/openssl/ssl.h":"67e8553fa3a5a723f3b0f29f7f6dd51ff75b4a3d4e799eb1d98ef5d1af609e52","openssl/include/openssl/ssl2.h":"7fb557a32488ad44a25420abff8279abd0bd1f4ab768e73d3e1d5c2dab36c0c5","openssl/include/openssl/ssl3.h":"d04cfec2a9f9da2aa299f55884215e200b490a6e0a9423255262648bd8a6d1c0","openssl/include/openssl/sslerr.h":"54a3c784ebfab631d21bb9b7db3ce38167acc0299e8920b5ce6e419a3736930a","openssl/include/openssl/stack.h":"45ba803bbe14007e494bb24b2ca954f6362ef700a10480efa3d2f3acb159deec","openssl/include/openssl/store.h":"1105bad1a309d3122a2cfbdc4098a33e33d50c8118e70bb332f3b7d6ef2bbb58","openssl/include/openssl/storeerr.h":"071c66bcc03ed5c2a24f1964f45e8d1a633f3cb4b183c718ded3e25312f8c4e0","openssl/include/openssl/symhacks.h":"0c9e026a5932a2432e3cdf7defb789610c4272010e51e5ff0471809eabb7aa2d","openssl/include/openssl/tls1.h":"d4104ca8720332b9852f4725d4660a6cf77a52b587e7d96ec263e996c1d0ae2f","openssl/include/openssl/ts.h":"9bd039ebce7bf6b6e71fc9667e44e017fc0cb7c79c023be1c965894e61b79238","openssl/include/openssl/tserr.h":"b6e1bbc8c53e4f7c054768dec55272d001dfbfee788a85ba8b0c069e08cbbe85","openssl/include/openssl/txt_db.h":"903696bd5b9908530f8a8578fef47721f47f3fe8507bac7761473e925e942159","openssl/include/openssl/ui.h":"f5ea3f5d2e7beb3e81db8c23c6e618e38e511c213fd93a11ef51b9ae4ad03619","openssl/include/openssl/uierr.h":"bb39377c702d9765547ce95f9e758b46a54ee4e2689f892033cf2a4ea57d5d0b","openssl/include/openssl/whrlpool.h":"38750722d1737083fa8caedfccd3bce574080e35692010d2f91dd303b154af69","openssl/include/openssl/x509.h":"f1b8b356d649da24236d5aabdfafe047b516b2008d8d5d09da5e99fbc4b4a98c","openssl/include/openssl/x509_vfy.h":"f621ac4c38a89bd010656ca00937773126a7ef348b29a14b04cc5ec5c095b531","openssl/include/openssl/x509err.h":"622499b9aaa546957c802da9aee36794c24c9c7d2e105ae69b47841ecdac6b7a","openssl/include/openssl/x509v3.h":"a7e78a1858697e75940b416ba1fb6f4e135722e88c0c280af8a979975c5443da","openssl/include/openssl/x509v3err.h":"3d17dcca277cd6f6373a30a6e07e1a2c44024a0b980ccccc2533d78bf0c22776","openssl/ms/applink.c":"461a11e8c465d61de2357631e7e8367eca3da7f11ad744f490cb56a1ae80115d","openssl/ms/cmp.pl":"e9df8d951dbccb63ea68cdff2c925cbcb7b06764e6b3d74497c7b19e15a8622c","openssl/ms/uplink-common.pl":"7001833c39f8a008d3a0d645347ac0ccc1d15da7c7a571e36bb32710bdfdd413","openssl/ms/uplink-ia64.pl":"51661e5c5d95e674821483ab1c45adb96396911e974a531a1032e480259dac78","openssl/ms/uplink-x86.pl":"ea08cabfe289d4cce9393f9ea586cc468a35f99559aaba6bc98fcb67a5481558","openssl/ms/uplink-x86_64.pl":"58b78e367a56ab276e412a0268a0a88d3ac1e3b62a550ada222e8db6f211a4d8","openssl/ms/uplink.c":"c584dfff58d520c04022e32440ff66d4a19706831478a63c677d835e0eb2d999","openssl/ms/uplink.h":"9e372fe99a844954b80396b6487a6612f41ce4a67aea99507b15f8eab9cf2a8d","openssl/os-dep/haiku.h":"a3623a1ab97b62e79877ea7b54c1e9718ecce68b840b71fdb717c0c5f3bad04e","openssl/ssl/bio_ssl.c":"4e12e3e2f85d1cf773c34dbcb1c234282722e5a9f884ed8404e0aa5a9f76eb6b","openssl/ssl/build.info":"150b3b41dc79f23250be61fc6adc9d1e041dc4589f8f60ae1f975ea3e1dfc5df","openssl/ssl/d1_lib.c":"1b220dc2e2beccdded497420ae909a9385af0c13fef0181cae3c9cac53211910","openssl/ssl/d1_msg.c":"b5370bafab09971437eef70f2380583e1f405908e8622c66ac699a9924d2bf5b","openssl/ssl/d1_srtp.c":"a5a5762a5609b3c705f04730b7860c10a77e4903b6a4d58f4d0c7d94abeaf487","openssl/ssl/methods.c":"704f7ed24dace6561b5179dfa5aaa7258e9599c49f24b8f8a47c37a80109086b","openssl/ssl/packet.c":"cef15662a2d7f48b6007f1a3cf540921d302faad938a837306aea91cffc498d9","openssl/ssl/packet_local.h":"27dc561b8f712621ba07a04164c2f74ad91642f9ca71d620e383741c29cfc658","openssl/ssl/pqueue.c":"7a2cc45afa28e7d72fc2f4ca66fb17cce54c2064ce4613975b0b2c1eaeaa05fc","openssl/ssl/record/README":"daa21a1309c257a48a089abd2f65f521ef442aef1428c5cce50af24ae4b586c8","openssl/ssl/record/dtls1_bitmap.c":"be1e12c5b264d22aeea4a3538968f4865339f1cf3f93c9eb9127d85ceef1115e","openssl/ssl/record/rec_layer_d1.c":"376e22d7f9bae9ee68bde03ff01584bcb90b42aa8d94a6df9c5783cf79f209e0","openssl/ssl/record/rec_layer_s3.c":"d5bc568e6914051c36723073d59f8ea851e27bdfe65ddf70fc6f1cbe1b65ac45","openssl/ssl/record/record.h":"53f3e73b8849b2a6460cd85252da7a7b58df4e9ac7e7871859621285c20be85e","openssl/ssl/record/record_local.h":"6569f176c637367a206f2c645c9d3f95b8dfc212a2e4ba824ef8cef11699b72f","openssl/ssl/record/ssl3_buffer.c":"d0f4ca96e718d4b3a19d519e898521129b6021e2deb472aaa78f49767ffab9db","openssl/ssl/record/ssl3_record.c":"c3d8ecaf800dabdcac3de4c71953b77f1f38f763244ab348d878294f6759451f","openssl/ssl/record/ssl3_record_tls13.c":"3b8801561edc994eee91c7f6a05a850fc653c066ee0b9ce37e4ddfafe69b52ba","openssl/ssl/s3_cbc.c":"9378deaf185268fe28765e801aacca1f06f7369e5bbacaf4fa887d2b94567276","openssl/ssl/s3_enc.c":"a34687325700316e62441bced6e959a29d7135adb99d967337a0eb3f77d226f0","openssl/ssl/s3_lib.c":"560db641eb4e0e26413200c55ddb2ee5533e51ab266274a5605a77e60d585ed0","openssl/ssl/s3_msg.c":"4214a537d49ccab981ea79bf4dbb24c2791c619a72e0ad2e551f4a3a0f1919b7","openssl/ssl/ssl_asn1.c":"f58e255ddc1c9aa256ba15024ca437f07b1a94b937cbf16d0a2ad6744d676d3b","openssl/ssl/ssl_cert.c":"ffaf20a21ed388c2a8f897ea3ce6e8e0a319a6b22d8eb4174c84e430374449a3","openssl/ssl/ssl_cert_table.h":"3a4eb66c0ee057b35cfd4ef370af76534d4ee3e73067e0b6cd557d3be6de97e5","openssl/ssl/ssl_ciph.c":"d9dd7c578d3dba4e74e52ff4fcd65610938feffd5d9d94de7879089ebab2a286","openssl/ssl/ssl_conf.c":"a0cf59e3376cede23fe0252beea1b146d10c018bb0dc69f68000e136e5dfffa0","openssl/ssl/ssl_err.c":"bc5e7b735588f64505edf0c5bc80b80302f6322e4f2af9762768e4b699eaf568","openssl/ssl/ssl_init.c":"e752118745f0789df86f09fdb449c6bd62a8bb26ea72bac9829e6953d317947a","openssl/ssl/ssl_lib.c":"b91de70cb91010d99bf95907780f672b306c3dabd864f6bccd60c9a30cf273c6","openssl/ssl/ssl_local.h":"7390427f23ea2e3e334b7c8ad2d48938aac649438966adc0fa9249f2e4a085f8","openssl/ssl/ssl_mcnf.c":"4192f0c8da609fef9f19ec4b5c4c6bd3713a33ff28c2f076c662c2dbf0a1eeac","openssl/ssl/ssl_rsa.c":"25b34654dfe2710d9d91b33ef6cff72af08fb270f1b0c1941573e85e8ebeafe5","openssl/ssl/ssl_sess.c":"e12d08d823477f0a29b8cafd153ba8992075cfcfd4567d1e3a5d93ef09d62f13","openssl/ssl/ssl_stat.c":"032df59c03043acb5c7b4a5ec6926461e39d1bafd5b52f855e6016db16f156e1","openssl/ssl/ssl_txt.c":"5cec58dc9cd421a53349edf0bca8ec4cc052ba129543eb810b94fc9b449c1770","openssl/ssl/ssl_utst.c":"69295713d556992c0bb615ea09f15e4618ae98c9b703c42efec88d1a228bf43f","openssl/ssl/statem/README":"5dd5871050b02fdde174e60c923412f6e53289ac992f244b9b8ec62d5ca29a0b","openssl/ssl/statem/extensions.c":"beaaa396d1d9f543d92f59af5c35a65a2dc55d18e6eca278ebc1d9e931e87610","openssl/ssl/statem/extensions_clnt.c":"65c490778ed543a412464b9373bc0f4a07a905b361e041aa327e36f9e6207a69","openssl/ssl/statem/extensions_cust.c":"f587e49956497da7033c43d47c69090c10f0c02c4fa3a2ef4e12bd9d94d87bb7","openssl/ssl/statem/extensions_srvr.c":"d167c44daa4d28b6fdd9dd41b6742ecdf68fda94abdcd3eefdfdb6bc8faf6e7a","openssl/ssl/statem/statem.c":"ea1ff60c9a1053f275568758ffad59ab3c3dc1073d54ba006154c6e6fb1b6af6","openssl/ssl/statem/statem.h":"28fb0cc332ab8222ea7c0087fc99aee4a9b049de6c6ccecbfa9aed80dfb89b8f","openssl/ssl/statem/statem_clnt.c":"597cb663225a3664deac3727cb8383964b4a98a941675415a592a12d805c1169","openssl/ssl/statem/statem_dtls.c":"4d7bc19001714a3dc143fd325ea584ee7940a6deaef261ed72485d1f3d0b6d16","openssl/ssl/statem/statem_lib.c":"285bd7ac04bd90452a429ccd564a63a2fd3cfbd7efd06fbdcf4d33e51952c73f","openssl/ssl/statem/statem_local.h":"1f787e9d09cb7bc872d1adcb6525834145ab87d0db3f99d45c77bc699c3f30c3","openssl/ssl/statem/statem_srvr.c":"cd9d5a8cf15dd15733e3794c19565700dc862be3d49966456ad1aa746238e5e9","openssl/ssl/t1_enc.c":"1b054601ddf168d008b28eb1dd2b9feaeaf7c5bcbc1e182168f6ff2a68081b57","openssl/ssl/t1_lib.c":"895490cf5fdfcf27708fab508c0b14e7d7cba15bcda43ccd1c1079daedea3615","openssl/ssl/t1_trce.c":"585bd13faf56b2eb5b853e873b58ee4bef7b46560c532a9d5947aa8402f42a9a","openssl/ssl/tls13_enc.c":"a308e8d36e761ffe7bd3e58b22fba071d158b796b03d7db9b81d66dfb2415600","openssl/ssl/tls_srp.c":"0f863a2373bdba22d2186373c1a9a5c3a0ac4ba421731e36f0980be2c20c103d","openssl/tools/build.info":"4ead731019edb0b0dbd7b72993c59498e3a645d0472e54b0c41cbb11c20eaebd","openssl/tools/c_rehash.in":"18b371208730667555995259b9151ae4c2a893cd4dafb3437db5ec9c128ec261","openssl/util/add-depends.pl":"d2803c17b68414cc6be7d00ce0051d6f362f72cc7089826817d9f4b65fd6d38c","openssl/util/build.info":"f65db6fe6a0ad3669696a3f5717e8291fd8ab510963febaee8009cb2974bc175","openssl/util/cavs-to-evptest.pl":"fecd65d728fa532e8ef3552f25a838092432be90d52e86346bbc635dba01f414","openssl/util/check-malloc-errs":"b8cc85a985270733195081b0d682a8b89c5342e26ee61a4d794b082844381bac","openssl/util/ck_errf.pl":"acaba574c5b151f4d252dc4adc4741660cc83f0a3d6cae5f2b5faf0401864db9","openssl/util/copy.pl":"e2dcac32a8cb1618e0909cceeb674689fef22805687187d31a235ccb10a6534e","openssl/util/dofile.pl":"61c0a8ec7b57c34e12999908bcdf2671025750dad95c1697bb6cafa8f853f9e5","openssl/util/echo.pl":"d8a0f4766d83ea8aecdd8e361c8866b9d48f40fd50ab15968d35fd54ef521648","openssl/util/find-doc-nits":"eb9b0be06de855af7d557e25f028acdb5f6de4c17c1f0a1db14157ba48d60481","openssl/util/find-unused-errs":"2b904dc493480c41d9799120870edb9e0c28c243a91029d46e0aece8cc5ec4c2","openssl/util/fix-includes":"f9449e929856883f67a89a5d4fe281cd9014412647d739b533832ec80de05098","openssl/util/fix-includes.sed":"68bf0c81208821f306504679015b873881518d7850c699d4f296778aadcb259a","openssl/util/indent.pro":"3eb0261eae9a79d889074d893fd5690e6d46ee55e5b59a819b14a093f6269725","openssl/util/libcrypto.num":"4ce1907d53f783902093eea555b2c7808b523ae0f17058a5b5fb093100d6772e","openssl/util/libssl.num":"673d0209d71fe17c4cf0da2757603f3c1c10b33408a95d196cf9b14c15f79af1","openssl/util/local_shlib.com.in":"f267e61b6cec87c33bfebfbb68629952117c0f78b299781d47deb73a887e7257","openssl/util/mkbuildinf.pl":"855b17d7158e1a556fda698a179c9ccb193339f7757c2a491b3ab07a1a446614","openssl/util/mkdef.pl":"2017340e077b0de03007e8a802ef1508091fe5a9d7abf5ed9a89bf011781b699","openssl/util/mkdir-p.pl":"65c167a1b75a426fd971403c1841450b7c094cffca3b9075e900108c5ab9d4d7","openssl/util/mkerr.pl":"ac7c8be131ef1ad3ebbb9ec5efd2b07fb9ed8726c2a9edf19c6e0e3ac63d3ecf","openssl/util/mkrc.pl":"62bc9b3dea2536c73498a9a7e0a21fe2ebdb5504888175dbcae3715e285df26a","openssl/util/mktar.sh":"67843c53a1f595020d029a2fd32a5097d07b11886f1ffa642af18ecd45038d9f","openssl/util/openssl-format-source":"9933005b6d8a87777cd4290d5b928970d870d73439c69b75b66b4c5965dfdd57","openssl/util/openssl-update-copyright":"a07ca62389f204668d4768a5eaf722e3260fe1d0a46a5174ead31d3a1a102d39","openssl/util/opensslwrap.sh":"761e5ea2463e754ad9f326cbf3571b8c0f1a0002706a24c393354e4f48c444bf","openssl/util/perl/OpenSSL/Glob.pm":"4100606067f0b577d3e6d2d2aaca93d826fb66105639eb94ff76c70ae8c526c9","openssl/util/perl/OpenSSL/Test.pm":"7731f2f84da59f641039b82bcfaca312a0ed23eea5e7ae2b748ed188bd26b0ed","openssl/util/perl/OpenSSL/Test/Simple.pm":"20f978dce212a8631ce0e6b133e26d55ff3043b84a4b2cd19ba45f3da306b1cb","openssl/util/perl/OpenSSL/Test/Utils.pm":"1e31fa3ea00ff98b3457a3ad98af046f33549bd2466da29bdb00f0d5516aaf87","openssl/util/perl/OpenSSL/Util/Pod.pm":"78c4cfdc2141d24e28e5972003d8a3c437d2d47e049a47bd2f63217da261168d","openssl/util/perl/OpenSSL/copyright.pm":"748b449de0564cd2b85e5d96bd41a2b624ef1c4bfab254af34a63c1a2fe88798","openssl/util/perl/TLSProxy/Alert.pm":"23a9d02adf3f04d93b5357952a823487f4e6bf6685e655f9f640f1b588f89e79","openssl/util/perl/TLSProxy/Certificate.pm":"bba9c1ecdc254560be9fd55ff2aa576dde3e52a4482668516eb899b448e5b222","openssl/util/perl/TLSProxy/CertificateRequest.pm":"c893eddba002f097a2c48743795842b6c7fe663d4196a8066aabbb452e7d0214","openssl/util/perl/TLSProxy/CertificateVerify.pm":"97c5e987444f7e368cbcd774f0fe71597e852b0c081b3318c1c51ae6c74d5ea9","openssl/util/perl/TLSProxy/ClientHello.pm":"3a135c1f736b85d964ba9b9b011f8216cc65563d258e60c0c163b99d2e032e2f","openssl/util/perl/TLSProxy/EncryptedExtensions.pm":"ce1b5f1a43a33d80bbc726011e5c5f8973ac3cc7b07708a8af47ca9ac1e1a371","openssl/util/perl/TLSProxy/Message.pm":"a1df25e8a4233b7cc61bec81ae9bcda03f2ab4e631241bf30574e1c011ee036d","openssl/util/perl/TLSProxy/NewSessionTicket.pm":"6630a0f249c0a5a429be1fb690b0d1d36d6363d39aa7607f799d6dced0cbe9d1","openssl/util/perl/TLSProxy/Proxy.pm":"ca621a4ba020cdfb2d2fc2e7911c08a770f967f55855b7f38eeec3c4c158a688","openssl/util/perl/TLSProxy/Record.pm":"a878d1b039efb4a2f3c2868d20e568170816c4bdb824b56c822ca6cbe6e26428","openssl/util/perl/TLSProxy/ServerHello.pm":"ece612e81f27fce4b8106f82829f224f6b384d3d99eb21770b81e6daaf959d33","openssl/util/perl/TLSProxy/ServerKeyExchange.pm":"48754f76d9ff1be6a4c0f6f27b6bf0fc91c5c3594636332870a25c4590267493","openssl/util/perl/checkhandshake.pm":"e625a1c11f358dcb9e2d292ba36ebfa7b14a5494fc1c8020e8a082770dd98aea","openssl/util/perl/with_fallback.pm":"332618a0267a1a5145d82c8e37b663e5bf555d861e3f2851e0f2a25ca2cc90dc","openssl/util/private.num":"019f1bbe90ac30cd9086473360c7cc5885a090419f89cfdbb383c06c9150383f","openssl/util/process_docs.pl":"a731d563140e90c91e07132183f7c41b3c5b9ce12460880b14ffa3d738f72d98","openssl/util/shlib_wrap.sh.in":"517e70558005286dbeb506ce57a416934560a2f2ff27f5bb48d4472ff8c5ca7c","openssl/util/su-filter.pl":"892daa1ba38762cc5cfd94a204618a0abb2a539a821e237946c93e774fd35f47","openssl/util/unlocal_shlib.com.in":"21e064aad7466030be7a452982a21bb50059a9634185d312b18a5d3a5582ee5d","src/lib.rs":"683c9ed1a7953f7f9da43412010de95ba733860a18bc28a4fc3cbcc6ac93c4d7"},"package":"924757a6a226bf60da5f7dd0311a34d2b52283dd82ddeb103208ddc66362f80c"} +\ No newline at end of file +diff --git a/vendor/openssl-src/Cargo.toml b/vendor/openssl-src/Cargo.toml +index 64708847c..e94c239ec 100644 +--- a/vendor/openssl-src/Cargo.toml ++++ b/vendor/openssl-src/Cargo.toml +@@ -11,7 +11,7 @@ + + [package] + name = "openssl-src" +-version = "111.22.0+1.1.1q" ++version = "111.25.3+1.1.1t" + authors = ["Alex Crichton "] + exclude = [ + "openssl/boringssl/*", +@@ -29,11 +29,12 @@ license = "MIT/Apache-2.0" + repository = "https://github.com/alexcrichton/openssl-src-rs" + + [dependencies.cc] +-version = "1.0" ++version = "1.0.79" + + [features] + camellia = [] + default = [] ++force-engine = [] + idea = [] + seed = [] + weak-crypto = [] +diff --git a/vendor/openssl-src/openssl/CHANGES b/vendor/openssl-src/openssl/CHANGES +index c18a1f514..1e2d651b7 100644 +--- a/vendor/openssl-src/openssl/CHANGES ++++ b/vendor/openssl-src/openssl/CHANGES +@@ -7,6 +7,126 @@ + https://github.com/openssl/openssl/commits/ and pick the appropriate + release branch. + ++ Changes between 1.1.1s and 1.1.1t [7 Feb 2023] ++ ++ *) Fixed X.400 address type confusion in X.509 GeneralName. ++ ++ There is a type confusion vulnerability relating to X.400 address processing ++ inside an X.509 GeneralName. X.400 addresses were parsed as an ASN1_STRING ++ but subsequently interpreted by GENERAL_NAME_cmp as an ASN1_TYPE. This ++ vulnerability may allow an attacker who can provide a certificate chain and ++ CRL (neither of which need have a valid signature) to pass arbitrary ++ pointers to a memcmp call, creating a possible read primitive, subject to ++ some constraints. Refer to the advisory for more information. Thanks to ++ David Benjamin for discovering this issue. (CVE-2023-0286) ++ ++ This issue has been fixed by changing the public header file definition of ++ GENERAL_NAME so that x400Address reflects the implementation. It was not ++ possible for any existing application to successfully use the existing ++ definition; however, if any application references the x400Address field ++ (e.g. in dead code), note that the type of this field has changed. There is ++ no ABI change. ++ [Hugo Landau] ++ ++ *) Fixed Use-after-free following BIO_new_NDEF. ++ ++ The public API function BIO_new_NDEF is a helper function used for ++ streaming ASN.1 data via a BIO. It is primarily used internally to OpenSSL ++ to support the SMIME, CMS and PKCS7 streaming capabilities, but may also ++ be called directly by end user applications. ++ ++ The function receives a BIO from the caller, prepends a new BIO_f_asn1 ++ filter BIO onto the front of it to form a BIO chain, and then returns ++ the new head of the BIO chain to the caller. Under certain conditions, ++ for example if a CMS recipient public key is invalid, the new filter BIO ++ is freed and the function returns a NULL result indicating a failure. ++ However, in this case, the BIO chain is not properly cleaned up and the ++ BIO passed by the caller still retains internal pointers to the previously ++ freed filter BIO. If the caller then goes on to call BIO_pop() on the BIO ++ then a use-after-free will occur. This will most likely result in a crash. ++ (CVE-2023-0215) ++ [Viktor Dukhovni, Matt Caswell] ++ ++ *) Fixed Double free after calling PEM_read_bio_ex. ++ ++ The function PEM_read_bio_ex() reads a PEM file from a BIO and parses and ++ decodes the "name" (e.g. "CERTIFICATE"), any header data and the payload ++ data. If the function succeeds then the "name_out", "header" and "data" ++ arguments are populated with pointers to buffers containing the relevant ++ decoded data. The caller is responsible for freeing those buffers. It is ++ possible to construct a PEM file that results in 0 bytes of payload data. ++ In this case PEM_read_bio_ex() will return a failure code but will populate ++ the header argument with a pointer to a buffer that has already been freed. ++ If the caller also frees this buffer then a double free will occur. This ++ will most likely lead to a crash. ++ ++ The functions PEM_read_bio() and PEM_read() are simple wrappers around ++ PEM_read_bio_ex() and therefore these functions are also directly affected. ++ ++ These functions are also called indirectly by a number of other OpenSSL ++ functions including PEM_X509_INFO_read_bio_ex() and ++ SSL_CTX_use_serverinfo_file() which are also vulnerable. Some OpenSSL ++ internal uses of these functions are not vulnerable because the caller does ++ not free the header argument if PEM_read_bio_ex() returns a failure code. ++ (CVE-2022-4450) ++ [Kurt Roeckx, Matt Caswell] ++ ++ *) Fixed Timing Oracle in RSA Decryption. ++ ++ A timing based side channel exists in the OpenSSL RSA Decryption ++ implementation which could be sufficient to recover a plaintext across ++ a network in a Bleichenbacher style attack. To achieve a successful ++ decryption an attacker would have to be able to send a very large number ++ of trial messages for decryption. The vulnerability affects all RSA padding ++ modes: PKCS#1 v1.5, RSA-OEAP and RSASVE. ++ (CVE-2022-4304) ++ [Dmitry Belyavsky, Hubert Kario] ++ ++ Changes between 1.1.1r and 1.1.1s [1 Nov 2022] ++ ++ *) Fixed a regression introduced in 1.1.1r version not refreshing the ++ certificate data to be signed before signing the certificate. ++ [Gibeom Gwon] ++ ++ Changes between 1.1.1q and 1.1.1r [11 Oct 2022] ++ ++ *) Fixed the linux-mips64 Configure target which was missing the ++ SIXTY_FOUR_BIT bn_ops flag. This was causing heap corruption on that ++ platform. ++ [Adam Joseph] ++ ++ *) Fixed a strict aliasing problem in bn_nist. Clang-14 optimisation was ++ causing incorrect results in some cases as a result. ++ [Paul Dale] ++ ++ *) Fixed SSL_pending() and SSL_has_pending() with DTLS which were failing to ++ report correct results in some cases ++ [Matt Caswell] ++ ++ *) Fixed a regression introduced in 1.1.1o for re-signing certificates with ++ different key sizes ++ [Todd Short] ++ ++ *) Added the loongarch64 target ++ [Shi Pujin] ++ ++ *) Fixed a DRBG seed propagation thread safety issue ++ [Bernd Edlinger] ++ ++ *) Fixed a memory leak in tls13_generate_secret ++ [Bernd Edlinger] ++ ++ *) Fixed reported performance degradation on aarch64. Restored the ++ implementation prior to commit 2621751 ("aes/asm/aesv8-armx.pl: avoid ++ 32-bit lane assignment in CTR mode") for 64bit targets only, since it is ++ reportedly 2-17% slower and the silicon errata only affects 32bit targets. ++ The new algorithm is still used for 32 bit targets. ++ [Bernd Edlinger] ++ ++ *) Added a missing header for memcmp that caused compilation failure on some ++ platforms ++ [Gregor Jasny] ++ + Changes between 1.1.1p and 1.1.1q [5 Jul 2022] + + *) AES OCB mode for 32-bit x86 platforms using the AES-NI assembly optimised +diff --git a/vendor/openssl-src/openssl/Configurations/10-main.conf b/vendor/openssl-src/openssl/Configurations/10-main.conf +index 2fcb96a04..f815a09b2 100644 +--- a/vendor/openssl-src/openssl/Configurations/10-main.conf ++++ b/vendor/openssl-src/openssl/Configurations/10-main.conf +@@ -742,7 +742,7 @@ my %targets = ( + inherit_from => [ "linux-generic32", asm("mips64_asm") ], + cflags => add("-mabi=n32"), + cxxflags => add("-mabi=n32"), +- bn_ops => "RC4_CHAR", ++ bn_ops => "RC4_CHAR SIXTY_FOUR_BIT", + perlasm_scheme => "n32", + multilib => "32", + }, +@@ -761,6 +761,13 @@ my %targets = ( + perlasm_scheme => "linux64", + }, + ++ # loongarch64 below refers to contemporary LoongArch Architecture ++ # specifications, ++ "linux64-loongarch64" => { ++ inherit_from => [ "linux-generic64"], ++ perlasm_scheme => "linux64", ++ }, ++ + #### IA-32 targets... + #### These two targets are a bit aged and are to be used on older Linux + #### machines where gcc doesn't understand -m32 and -m64 +diff --git a/vendor/openssl-src/openssl/Configure b/vendor/openssl-src/openssl/Configure +index 4bea49d7d..6cb1a84f4 100755 +--- a/vendor/openssl-src/openssl/Configure ++++ b/vendor/openssl-src/openssl/Configure +@@ -1,6 +1,6 @@ + #! /usr/bin/env perl + # -*- mode: perl; -*- +-# Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -1215,7 +1215,7 @@ $target{build_scheme} = [ $target{build_scheme} ] + my ($builder, $builder_platform, @builder_opts) = + @{$target{build_scheme}}; + +-foreach my $checker (($builder_platform."-".$target{build_file}."-checker.pm", ++foreach my $checker (($builder_platform."-".$config{build_file}."-checker.pm", + $builder_platform."-checker.pm")) { + my $checker_path = catfile($srcdir, "Configurations", $checker); + if (-f $checker_path) { +@@ -1712,8 +1712,8 @@ if ($builder eq "unified") { + # Store the name of the template file we will build the build file from + # in %config. This may be useful for the build file itself. + my @build_file_template_names = +- ( $builder_platform."-".$target{build_file}.".tmpl", +- $target{build_file}.".tmpl" ); ++ ( $builder_platform."-".$config{build_file}.".tmpl", ++ $config{build_file}.".tmpl" ); + my @build_file_templates = (); + + # First, look in the user provided directory, if given +@@ -1937,8 +1937,8 @@ if ($builder eq "unified") { + } + next if @skip && $skip[$#skip] <= 0; + push @rawlines, $_ +- if ($target_kind eq $target{build_file} +- || $target_kind eq $target{build_file}."(".$builder_platform.")"); ++ if ($target_kind eq $config{build_file} ++ || $target_kind eq $config{build_file}."(".$builder_platform.")"); + } + }, + qr/^\s*(?:#.*)?$/ => sub { }, +@@ -2813,8 +2813,8 @@ if ($builder_platform eq 'unix') { + + my %builders = ( + unified => sub { +- print 'Creating ',$target{build_file},"\n"; +- run_dofile(catfile($blddir, $target{build_file}), ++ print 'Creating ',$config{build_file},"\n"; ++ run_dofile(catfile($blddir, $config{build_file}), + @{$config{build_file_templates}}); + }, + ); +@@ -2868,7 +2868,7 @@ exit(0); + # + sub death_handler { + die @_ if $^S; # To prevent the added message in eval blocks +- my $build_file = $target{build_file} // "build file"; ++ my $build_file = $config{build_file} // "build file"; + my @message = ( <<"_____", @_ ); + + Failure! $build_file wasn't produced. +diff --git a/vendor/openssl-src/openssl/NEWS b/vendor/openssl-src/openssl/NEWS +index 75e9ba062..2724fc4d8 100644 +--- a/vendor/openssl-src/openssl/NEWS ++++ b/vendor/openssl-src/openssl/NEWS +@@ -5,6 +5,23 @@ + This file gives a brief overview of the major changes between each OpenSSL + release. For more details please read the CHANGES file. + ++ Major changes between OpenSSL 1.1.1s and OpenSSL 1.1.1t [7 Feb 2023] ++ ++ o Fixed X.400 address type confusion in X.509 GeneralName (CVE-2023-0286) ++ o Fixed Use-after-free following BIO_new_NDEF (CVE-2023-0215) ++ o Fixed Double free after calling PEM_read_bio_ex (CVE-2022-4450) ++ o Fixed Timing Oracle in RSA Decryption (CVE-2022-4304) ++ ++ Major changes between OpenSSL 1.1.1r and OpenSSL 1.1.1s [1 Nov 2022] ++ ++ o Fixed a regression introduced in OpenSSL 1.1.1r not refreshing the ++ certificate data to be signed before signing the certificate. ++ ++ Major changes between OpenSSL 1.1.1q and OpenSSL 1.1.1r [11 Oct 2022] ++ ++ o Added a missing header for memcmp that caused compilation failure on ++ some platforms ++ + Major changes between OpenSSL 1.1.1p and OpenSSL 1.1.1q [5 Jul 2022] + + o Fixed AES OCB failure to encrypt some bytes on 32-bit x86 platforms +diff --git a/vendor/openssl-src/openssl/README b/vendor/openssl-src/openssl/README +index 79f9c611a..b2f806be3 100644 +--- a/vendor/openssl-src/openssl/README ++++ b/vendor/openssl-src/openssl/README +@@ -1,5 +1,5 @@ + +- OpenSSL 1.1.1q 5 Jul 2022 ++ OpenSSL 1.1.1t 7 Feb 2023 + + Copyright (c) 1998-2022 The OpenSSL Project + Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson +diff --git a/vendor/openssl-src/openssl/apps/apps.c b/vendor/openssl-src/openssl/apps/apps.c +index db5b48e4c..f2447fb0b 100644 +--- a/vendor/openssl-src/openssl/apps/apps.c ++++ b/vendor/openssl-src/openssl/apps/apps.c +@@ -1376,7 +1376,8 @@ static IMPLEMENT_LHASH_HASH_FN(index_name, OPENSSL_CSTRING) + static IMPLEMENT_LHASH_COMP_FN(index_name, OPENSSL_CSTRING) + #undef BSIZE + #define BSIZE 256 +-BIGNUM *load_serial(const char *serialfile, int create, ASN1_INTEGER **retai) ++BIGNUM *load_serial(const char *serialfile, int *exists, int create, ++ ASN1_INTEGER **retai) + { + BIO *in = NULL; + BIGNUM *ret = NULL; +@@ -1388,6 +1389,8 @@ BIGNUM *load_serial(const char *serialfile, int create, ASN1_INTEGER **retai) + goto err; + + in = BIO_new_file(serialfile, "r"); ++ if (exists != NULL) ++ *exists = in != NULL; + if (in == NULL) { + if (!create) { + perror(serialfile); +@@ -1395,8 +1398,14 @@ BIGNUM *load_serial(const char *serialfile, int create, ASN1_INTEGER **retai) + } + ERR_clear_error(); + ret = BN_new(); +- if (ret == NULL || !rand_serial(ret, ai)) ++ if (ret == NULL) { + BIO_printf(bio_err, "Out of memory\n"); ++ } else if (!rand_serial(ret, ai)) { ++ BIO_printf(bio_err, "Error creating random number to store in %s\n", ++ serialfile); ++ BN_free(ret); ++ ret = NULL; ++ } + } else { + if (!a2i_ASN1_INTEGER(in, ai, buf, 1024)) { + BIO_printf(bio_err, "unable to load number from %s\n", +@@ -1416,6 +1425,8 @@ BIGNUM *load_serial(const char *serialfile, int create, ASN1_INTEGER **retai) + ai = NULL; + } + err: ++ if (ret == NULL) ++ ERR_print_errors(bio_err); + BIO_free(in); + ASN1_INTEGER_free(ai); + return ret; +diff --git a/vendor/openssl-src/openssl/apps/apps.h b/vendor/openssl-src/openssl/apps/apps.h +index 34c3fd863..3e8f50fda 100644 +--- a/vendor/openssl-src/openssl/apps/apps.h ++++ b/vendor/openssl-src/openssl/apps/apps.h +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -527,9 +527,12 @@ typedef struct ca_db_st { + } CA_DB; + + void* app_malloc(int sz, const char *what); +-BIGNUM *load_serial(const char *serialfile, int create, ASN1_INTEGER **retai); +-int save_serial(const char *serialfile, const char *suffix, const BIGNUM *serial, +- ASN1_INTEGER **retai); ++ ++/* load_serial, save_serial, and rotate_serial are also used for CRL numbers */ ++BIGNUM *load_serial(const char *serialfile, int *exists, int create, ++ ASN1_INTEGER **retai); ++int save_serial(const char *serialfile, const char *suffix, ++ const BIGNUM *serial, ASN1_INTEGER **retai); + int rotate_serial(const char *serialfile, const char *new_suffix, + const char *old_suffix); + int rand_serial(BIGNUM *b, ASN1_INTEGER *ai); +diff --git a/vendor/openssl-src/openssl/apps/ca.c b/vendor/openssl-src/openssl/apps/ca.c +index 390ac3749..ea375ca0b 100755 +--- a/vendor/openssl-src/openssl/apps/ca.c ++++ b/vendor/openssl-src/openssl/apps/ca.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -842,7 +842,8 @@ end_of_options: + goto end; + } + } else { +- if ((serial = load_serial(serialfile, create_ser, NULL)) == NULL) { ++ serial = load_serial(serialfile, NULL, create_ser, NULL); ++ if (serial == NULL) { + BIO_printf(bio_err, "error while loading serial number\n"); + goto end; + } +@@ -1078,7 +1079,8 @@ end_of_options: + + if ((crlnumberfile = NCONF_get_string(conf, section, ENV_CRLNUMBER)) + != NULL) +- if ((crlnumber = load_serial(crlnumberfile, 0, NULL)) == NULL) { ++ if ((crlnumber = load_serial(crlnumberfile, NULL, 0, NULL)) ++ == NULL) { + BIO_printf(bio_err, "error while loading CRL number\n"); + goto end; + } +diff --git a/vendor/openssl-src/openssl/apps/ocsp.c b/vendor/openssl-src/openssl/apps/ocsp.c +index 27ec94fa6..8f20864ce 100644 +--- a/vendor/openssl-src/openssl/apps/ocsp.c ++++ b/vendor/openssl-src/openssl/apps/ocsp.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -176,7 +176,7 @@ const OPTIONS ocsp_options[] = { + {"no_intern", OPT_NO_INTERN, '-', + "Don't search certificates contained in response for signer"}, + {"badsig", OPT_BADSIG, '-', +- "Corrupt last byte of loaded OSCP response signature (for test)"}, ++ "Corrupt last byte of loaded OCSP response signature (for test)"}, + {"text", OPT_TEXT, '-', "Print text form of request and response"}, + {"req_text", OPT_REQ_TEXT, '-', "Print text form of request"}, + {"resp_text", OPT_RESP_TEXT, '-', "Print text form of response"}, +diff --git a/vendor/openssl-src/openssl/apps/s_cb.c b/vendor/openssl-src/openssl/apps/s_cb.c +index d066a423d..2f94c1339 100644 +--- a/vendor/openssl-src/openssl/apps/s_cb.c ++++ b/vendor/openssl-src/openssl/apps/s_cb.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -74,22 +74,28 @@ int verify_callback(int ok, X509_STORE_CTX *ctx) + } + switch (err) { + case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: +- BIO_puts(bio_err, "issuer= "); +- X509_NAME_print_ex(bio_err, X509_get_issuer_name(err_cert), +- 0, get_nameopt()); +- BIO_puts(bio_err, "\n"); ++ if (err_cert != NULL) { ++ BIO_puts(bio_err, "issuer= "); ++ X509_NAME_print_ex(bio_err, X509_get_issuer_name(err_cert), ++ 0, get_nameopt()); ++ BIO_puts(bio_err, "\n"); ++ } + break; + case X509_V_ERR_CERT_NOT_YET_VALID: + case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: +- BIO_printf(bio_err, "notBefore="); +- ASN1_TIME_print(bio_err, X509_get0_notBefore(err_cert)); +- BIO_printf(bio_err, "\n"); ++ if (err_cert != NULL) { ++ BIO_printf(bio_err, "notBefore="); ++ ASN1_TIME_print(bio_err, X509_get0_notBefore(err_cert)); ++ BIO_printf(bio_err, "\n"); ++ } + break; + case X509_V_ERR_CERT_HAS_EXPIRED: + case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD: +- BIO_printf(bio_err, "notAfter="); +- ASN1_TIME_print(bio_err, X509_get0_notAfter(err_cert)); +- BIO_printf(bio_err, "\n"); ++ if (err_cert != NULL) { ++ BIO_printf(bio_err, "notAfter="); ++ ASN1_TIME_print(bio_err, X509_get0_notAfter(err_cert)); ++ BIO_printf(bio_err, "\n"); ++ } + break; + case X509_V_ERR_NO_EXPLICIT_POLICY: + if (!verify_args.quiet) +diff --git a/vendor/openssl-src/openssl/apps/x509.c b/vendor/openssl-src/openssl/apps/x509.c +index 1f5350420..8d4bf71a0 100644 +--- a/vendor/openssl-src/openssl/apps/x509.c ++++ b/vendor/openssl-src/openssl/apps/x509.c +@@ -400,7 +400,7 @@ int x509_main(int argc, char **argv) + aliasout = ++num; + break; + case OPT_CACREATESERIAL: +- CA_createserial = ++num; ++ CA_createserial = 1; + break; + case OPT_CLREXT: + clrext = 1; +@@ -590,7 +590,7 @@ int x509_main(int argc, char **argv) + xca = load_cert(CAfile, CAformat, "CA Certificate"); + if (xca == NULL) + goto end; +- if (!X509_set_issuer_name(x, X509_get_subject_name(xca))) ++ if (reqfile && !X509_set_issuer_name(x, X509_get_subject_name(xca))) + goto end; + } + +@@ -916,6 +916,7 @@ static ASN1_INTEGER *x509_load_serial(const char *CAfile, + char *buf = NULL; + ASN1_INTEGER *bs = NULL; + BIGNUM *serial = NULL; ++ int defaultfile = 0, file_exists; + + if (serialfile == NULL) { + const char *p = strrchr(CAfile, '.'); +@@ -925,9 +926,10 @@ static ASN1_INTEGER *x509_load_serial(const char *CAfile, + memcpy(buf, CAfile, len); + memcpy(buf + len, POSTFIX, sizeof(POSTFIX)); + serialfile = buf; ++ defaultfile = 1; + } + +- serial = load_serial(serialfile, create, NULL); ++ serial = load_serial(serialfile, &file_exists, create || defaultfile, NULL); + if (serial == NULL) + goto end; + +@@ -936,8 +938,10 @@ static ASN1_INTEGER *x509_load_serial(const char *CAfile, + goto end; + } + +- if (!save_serial(serialfile, NULL, serial, &bs)) +- goto end; ++ if (file_exists || create) ++ save_serial(serialfile, NULL, serial, &bs); ++ else ++ bs = BN_to_ASN1_INTEGER(serial, NULL); + + end: + OPENSSL_free(buf); +@@ -989,6 +993,8 @@ static int x509_certify(X509_STORE *ctx, const char *CAfile, const EVP_MD *diges + goto end; + } + ++ if (!X509_set_issuer_name(x, X509_get_subject_name(xca))) ++ goto end; + if (!X509_set_serialNumber(x, bs)) + goto end; + +diff --git a/vendor/openssl-src/openssl/crypto/aes/asm/aesv8-armx.pl b/vendor/openssl-src/openssl/crypto/aes/asm/aesv8-armx.pl +index 2b0e98299..7edc436a5 100755 +--- a/vendor/openssl-src/openssl/crypto/aes/asm/aesv8-armx.pl ++++ b/vendor/openssl-src/openssl/crypto/aes/asm/aesv8-armx.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/env perl +-# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 2014-2022 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -740,6 +740,21 @@ $code.=<<___; + #ifndef __ARMEB__ + rev $ctr, $ctr + #endif ++___ ++$code.=<<___ if ($flavour =~ /64/); ++ vorr $dat1,$dat0,$dat0 ++ add $tctr1, $ctr, #1 ++ vorr $dat2,$dat0,$dat0 ++ add $ctr, $ctr, #2 ++ vorr $ivec,$dat0,$dat0 ++ rev $tctr1, $tctr1 ++ vmov.32 ${dat1}[3],$tctr1 ++ b.ls .Lctr32_tail ++ rev $tctr2, $ctr ++ sub $len,$len,#3 // bias ++ vmov.32 ${dat2}[3],$tctr2 ++___ ++$code.=<<___ if ($flavour !~ /64/); + add $tctr1, $ctr, #1 + vorr $ivec,$dat0,$dat0 + rev $tctr1, $tctr1 +@@ -751,6 +766,8 @@ $code.=<<___; + vmov.32 ${ivec}[3],$tctr2 + sub $len,$len,#3 // bias + vorr $dat2,$ivec,$ivec ++___ ++$code.=<<___; + b .Loop3x_ctr32 + + .align 4 +@@ -777,11 +794,25 @@ $code.=<<___; + aese $dat1,q8 + aesmc $tmp1,$dat1 + vld1.8 {$in0},[$inp],#16 ++___ ++$code.=<<___ if ($flavour =~ /64/); ++ vorr $dat0,$ivec,$ivec ++___ ++$code.=<<___ if ($flavour !~ /64/); + add $tctr0,$ctr,#1 ++___ ++$code.=<<___; + aese $dat2,q8 + aesmc $dat2,$dat2 + vld1.8 {$in1},[$inp],#16 ++___ ++$code.=<<___ if ($flavour =~ /64/); ++ vorr $dat1,$ivec,$ivec ++___ ++$code.=<<___ if ($flavour !~ /64/); + rev $tctr0,$tctr0 ++___ ++$code.=<<___; + aese $tmp0,q9 + aesmc $tmp0,$tmp0 + aese $tmp1,q9 +@@ -790,6 +821,12 @@ $code.=<<___; + mov $key_,$key + aese $dat2,q9 + aesmc $tmp2,$dat2 ++___ ++$code.=<<___ if ($flavour =~ /64/); ++ vorr $dat2,$ivec,$ivec ++ add $tctr0,$ctr,#1 ++___ ++$code.=<<___; + aese $tmp0,q12 + aesmc $tmp0,$tmp0 + aese $tmp1,q12 +@@ -805,22 +842,47 @@ $code.=<<___; + aese $tmp1,q13 + aesmc $tmp1,$tmp1 + veor $in2,$in2,$rndlast ++___ ++$code.=<<___ if ($flavour =~ /64/); ++ rev $tctr0,$tctr0 ++ aese $tmp2,q13 ++ aesmc $tmp2,$tmp2 ++ vmov.32 ${dat0}[3], $tctr0 ++___ ++$code.=<<___ if ($flavour !~ /64/); + vmov.32 ${ivec}[3], $tctr0 + aese $tmp2,q13 + aesmc $tmp2,$tmp2 + vorr $dat0,$ivec,$ivec ++___ ++$code.=<<___; + rev $tctr1,$tctr1 + aese $tmp0,q14 + aesmc $tmp0,$tmp0 ++___ ++$code.=<<___ if ($flavour !~ /64/); + vmov.32 ${ivec}[3], $tctr1 + rev $tctr2,$ctr ++___ ++$code.=<<___; + aese $tmp1,q14 + aesmc $tmp1,$tmp1 ++___ ++$code.=<<___ if ($flavour =~ /64/); ++ vmov.32 ${dat1}[3], $tctr1 ++ rev $tctr2,$ctr ++ aese $tmp2,q14 ++ aesmc $tmp2,$tmp2 ++ vmov.32 ${dat2}[3], $tctr2 ++___ ++$code.=<<___ if ($flavour !~ /64/); + vorr $dat1,$ivec,$ivec + vmov.32 ${ivec}[3], $tctr2 + aese $tmp2,q14 + aesmc $tmp2,$tmp2 + vorr $dat2,$ivec,$ivec ++___ ++$code.=<<___; + subs $len,$len,#3 + aese $tmp0,q15 + aese $tmp1,q15 +diff --git a/vendor/openssl-src/openssl/crypto/asn1/asn_mime.c b/vendor/openssl-src/openssl/crypto/asn1/asn_mime.c +index 38735cd86..36853612b 100644 +--- a/vendor/openssl-src/openssl/crypto/asn1/asn_mime.c ++++ b/vendor/openssl-src/openssl/crypto/asn1/asn_mime.c +@@ -489,6 +489,7 @@ int SMIME_crlf_copy(BIO *in, BIO *out, int flags) + char eol; + int len; + char linebuf[MAX_SMLEN]; ++ int ret; + /* + * Buffer output so we don't write one line at a time. This is useful + * when streaming as we don't end up with one OCTET STRING per line. +@@ -523,9 +524,12 @@ int SMIME_crlf_copy(BIO *in, BIO *out, int flags) + BIO_write(out, "\r\n", 2); + } + } +- (void)BIO_flush(out); ++ ret = BIO_flush(out); + BIO_pop(out); + BIO_free(bf); ++ if (ret <= 0) ++ return 0; ++ + return 1; + } + +diff --git a/vendor/openssl-src/openssl/crypto/asn1/bio_asn1.c b/vendor/openssl-src/openssl/crypto/asn1/bio_asn1.c +index 914d77c86..17b0d1aa6 100644 +--- a/vendor/openssl-src/openssl/crypto/asn1/bio_asn1.c ++++ b/vendor/openssl-src/openssl/crypto/asn1/bio_asn1.c +@@ -172,7 +172,7 @@ static int asn1_bio_write(BIO *b, const char *in, int inl) + case ASN1_STATE_START: + if (!asn1_bio_setup_ex(b, ctx, ctx->prefix, + ASN1_STATE_PRE_COPY, ASN1_STATE_HEADER)) +- return 0; ++ return -1; + break; + + /* Copy any pre data first */ +@@ -189,7 +189,7 @@ static int asn1_bio_write(BIO *b, const char *in, int inl) + case ASN1_STATE_HEADER: + ctx->buflen = ASN1_object_size(0, inl, ctx->asn1_tag) - inl; + if (!ossl_assert(ctx->buflen <= ctx->bufsize)) +- return 0; ++ return -1; + p = ctx->buf; + ASN1_put_object(&p, 0, inl, ctx->asn1_tag, ctx->asn1_class); + ctx->copylen = inl; +diff --git a/vendor/openssl-src/openssl/crypto/asn1/bio_ndef.c b/vendor/openssl-src/openssl/crypto/asn1/bio_ndef.c +index 760e4846a..c8a776b48 100644 +--- a/vendor/openssl-src/openssl/crypto/asn1/bio_ndef.c ++++ b/vendor/openssl-src/openssl/crypto/asn1/bio_ndef.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2008-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -49,12 +49,19 @@ static int ndef_suffix(BIO *b, unsigned char **pbuf, int *plen, void *parg); + static int ndef_suffix_free(BIO *b, unsigned char **pbuf, int *plen, + void *parg); + ++/* ++ * On success, the returned BIO owns the input BIO as part of its BIO chain. ++ * On failure, NULL is returned and the input BIO is owned by the caller. ++ * ++ * Unfortunately cannot constify this due to CMS_stream() and PKCS7_stream() ++ */ + BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it) + { + NDEF_SUPPORT *ndef_aux = NULL; + BIO *asn_bio = NULL; + const ASN1_AUX *aux = it->funcs; + ASN1_STREAM_ARG sarg; ++ BIO *pop_bio = NULL; + + if (!aux || !aux->asn1_cb) { + ASN1err(ASN1_F_BIO_NEW_NDEF, ASN1_R_STREAMING_NOT_SUPPORTED); +@@ -69,21 +76,39 @@ BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it) + out = BIO_push(asn_bio, out); + if (out == NULL) + goto err; ++ pop_bio = asn_bio; + +- BIO_asn1_set_prefix(asn_bio, ndef_prefix, ndef_prefix_free); +- BIO_asn1_set_suffix(asn_bio, ndef_suffix, ndef_suffix_free); ++ if (BIO_asn1_set_prefix(asn_bio, ndef_prefix, ndef_prefix_free) <= 0 ++ || BIO_asn1_set_suffix(asn_bio, ndef_suffix, ndef_suffix_free) <= 0 ++ || BIO_ctrl(asn_bio, BIO_C_SET_EX_ARG, 0, ndef_aux) <= 0) ++ goto err; + + /* +- * Now let callback prepends any digest, cipher etc BIOs ASN1 structure +- * needs. ++ * Now let the callback prepend any digest, cipher, etc., that the BIO's ++ * ASN1 structure needs. + */ + + sarg.out = out; + sarg.ndef_bio = NULL; + sarg.boundary = NULL; + +- if (aux->asn1_cb(ASN1_OP_STREAM_PRE, &val, it, &sarg) <= 0) ++ /* ++ * The asn1_cb(), must not have mutated asn_bio on error, leaving it in the ++ * middle of some partially built, but not returned BIO chain. ++ */ ++ if (aux->asn1_cb(ASN1_OP_STREAM_PRE, &val, it, &sarg) <= 0) { ++ /* ++ * ndef_aux is now owned by asn_bio so we must not free it in the err ++ * clean up block ++ */ ++ ndef_aux = NULL; + goto err; ++ } ++ ++ /* ++ * We must not fail now because the callback has prepended additional ++ * BIOs to the chain ++ */ + + ndef_aux->val = val; + ndef_aux->it = it; +@@ -91,11 +116,11 @@ BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it) + ndef_aux->boundary = sarg.boundary; + ndef_aux->out = out; + +- BIO_ctrl(asn_bio, BIO_C_SET_EX_ARG, 0, ndef_aux); +- + return sarg.ndef_bio; + + err: ++ /* BIO_pop() is NULL safe */ ++ (void)BIO_pop(pop_bio); + BIO_free(asn_bio); + OPENSSL_free(ndef_aux); + return NULL; +diff --git a/vendor/openssl-src/openssl/crypto/asn1/charmap.pl b/vendor/openssl-src/openssl/crypto/asn1/charmap.pl +index dadd8df77..52fa5a790 100644 +--- a/vendor/openssl-src/openssl/crypto/asn1/charmap.pl ++++ b/vendor/openssl-src/openssl/crypto/asn1/charmap.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/env perl +-# Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -7,6 +7,9 @@ + # https://www.openssl.org/source/license.html + + use strict; ++use FindBin; ++use lib "$FindBin::Bin/../../util/perl"; ++use OpenSSL::copyright; + + my ($i, @arr); + +@@ -82,8 +85,8 @@ $arr[ord("?")] |= $PSTRING_CHAR; + + # Now generate the C code + +-# Output year depends on the year of the script. +-my $YEAR = [localtime([stat($0)]->[9])]->[5] + 1900; ++# Year the file was generated. ++my $YEAR = OpenSSL::copyright::year_of($0); + print < ++#include + + /* + * Copyright Patrick Powell 1995 +@@ -31,8 +32,10 @@ static int fmtstr(char **, char **, size_t *, size_t *, + const char *, int, int, int); + static int fmtint(char **, char **, size_t *, size_t *, + int64_t, int, int, int, int); ++#ifndef OPENSSL_SYS_UEFI + static int fmtfp(char **, char **, size_t *, size_t *, + LDOUBLE, int, int, int, int); ++#endif + static int doapr_outch(char **, char **, size_t *, size_t *, int); + static int _dopr(char **sbuffer, char **buffer, + size_t *maxlen, size_t *retlen, int *truncated, +@@ -88,7 +91,9 @@ _dopr(char **sbuffer, + { + char ch; + int64_t value; ++#ifndef OPENSSL_SYS_UEFI + LDOUBLE fvalue; ++#endif + char *strvalue; + int min; + int max; +@@ -259,6 +264,7 @@ _dopr(char **sbuffer, + min, max, flags)) + return 0; + break; ++#ifndef OPENSSL_SYS_UEFI + case 'f': + if (cflags == DP_C_LDOUBLE) + fvalue = va_arg(args, LDOUBLE); +@@ -292,6 +298,16 @@ _dopr(char **sbuffer, + flags, G_FORMAT)) + return 0; + break; ++#else ++ case 'f': ++ case 'E': ++ case 'e': ++ case 'G': ++ case 'g': ++ /* not implemented for UEFI */ ++ ERR_raise(ERR_LIB_BIO, ERR_R_UNSUPPORTED); ++ return 0; ++#endif + case 'c': + if (!doapr_outch(sbuffer, buffer, &currlen, maxlen, + va_arg(args, int))) +@@ -512,6 +528,8 @@ fmtint(char **sbuffer, + return 1; + } + ++#ifndef OPENSSL_SYS_UEFI ++ + static LDOUBLE abs_val(LDOUBLE value) + { + LDOUBLE result = value; +@@ -803,6 +821,8 @@ fmtfp(char **sbuffer, + return 1; + } + ++#endif /* OPENSSL_SYS_UEFI */ ++ + #define BUFFER_INC 1024 + + static int +diff --git a/vendor/openssl-src/openssl/crypto/bn/bn_blind.c b/vendor/openssl-src/openssl/crypto/bn/bn_blind.c +index 76fc7ebcf..dd5beea7c 100644 +--- a/vendor/openssl-src/openssl/crypto/bn/bn_blind.c ++++ b/vendor/openssl-src/openssl/crypto/bn/bn_blind.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1998-2018 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1998-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -13,20 +13,6 @@ + + #define BN_BLINDING_COUNTER 32 + +-struct bn_blinding_st { +- BIGNUM *A; +- BIGNUM *Ai; +- BIGNUM *e; +- BIGNUM *mod; /* just a reference */ +- CRYPTO_THREAD_ID tid; +- int counter; +- unsigned long flags; +- BN_MONT_CTX *m_ctx; +- int (*bn_mod_exp) (BIGNUM *r, const BIGNUM *a, const BIGNUM *p, +- const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +- CRYPTO_RWLOCK *lock; +-}; +- + BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod) + { + BN_BLINDING *ret = NULL; +diff --git a/vendor/openssl-src/openssl/crypto/bn/bn_err.c b/vendor/openssl-src/openssl/crypto/bn/bn_err.c +index dd87c152c..6f5464b54 100644 +--- a/vendor/openssl-src/openssl/crypto/bn/bn_err.c ++++ b/vendor/openssl-src/openssl/crypto/bn/bn_err.c +@@ -1,6 +1,6 @@ + /* + * Generated by util/mkerr.pl DO NOT EDIT +- * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -73,6 +73,8 @@ static const ERR_STRING_DATA BN_str_functs[] = { + {ERR_PACK(ERR_LIB_BN, BN_F_BN_SET_WORDS, 0), "bn_set_words"}, + {ERR_PACK(ERR_LIB_BN, BN_F_BN_STACK_PUSH, 0), "BN_STACK_push"}, + {ERR_PACK(ERR_LIB_BN, BN_F_BN_USUB, 0), "BN_usub"}, ++ {ERR_PACK(ERR_LIB_BN, BN_F_OSSL_BN_RSA_DO_UNBLIND, 0), ++ "ossl_bn_rsa_do_unblind"}, + {0, NULL} + }; + +diff --git a/vendor/openssl-src/openssl/crypto/bn/bn_exp.c b/vendor/openssl-src/openssl/crypto/bn/bn_exp.c +index e21dcff02..517e3c29f 100644 +--- a/vendor/openssl-src/openssl/crypto/bn/bn_exp.c ++++ b/vendor/openssl-src/openssl/crypto/bn/bn_exp.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -37,6 +37,15 @@ extern unsigned int OPENSSL_sparcv9cap_P[]; + /* maximum precomputation table size for *variable* sliding windows */ + #define TABLE_SIZE 32 + ++/* ++ * Beyond this limit the constant time code is disabled due to ++ * the possible overflow in the computation of powerbufLen in ++ * BN_mod_exp_mont_consttime. ++ * When this limit is exceeded, the computation will be done using ++ * non-constant time code, but it will take very long. ++ */ ++#define BN_CONSTTIME_SIZE_LIMIT (INT_MAX / BN_BYTES / 256) ++ + /* this one works - simple but works */ + int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) + { +@@ -305,12 +314,6 @@ int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + BIGNUM *val[TABLE_SIZE]; + BN_MONT_CTX *mont = NULL; + +- if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0 +- || BN_get_flags(a, BN_FLG_CONSTTIME) != 0 +- || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) { +- return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont); +- } +- + bn_check_top(a); + bn_check_top(p); + bn_check_top(m); +@@ -319,6 +322,14 @@ int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + BNerr(BN_F_BN_MOD_EXP_MONT, BN_R_CALLED_WITH_EVEN_MODULUS); + return 0; + } ++ ++ if (m->top <= BN_CONSTTIME_SIZE_LIMIT ++ && (BN_get_flags(p, BN_FLG_CONSTTIME) != 0 ++ || BN_get_flags(a, BN_FLG_CONSTTIME) != 0 ++ || BN_get_flags(m, BN_FLG_CONSTTIME) != 0)) { ++ return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont); ++ } ++ + bits = BN_num_bits(p); + if (bits == 0) { + /* x**0 mod 1, or x**0 mod -1 is still zero. */ +@@ -618,6 +629,11 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + + top = m->top; + ++ if (top > BN_CONSTTIME_SIZE_LIMIT) { ++ /* Prevent overflowing the powerbufLen computation below */ ++ return BN_mod_exp_mont(rr, a, p, m, ctx, in_mont); ++ } ++ + /* + * Use all bits stored in |p|, rather than |BN_num_bits|, so we do not leak + * whether the top bits are zero. +@@ -697,7 +713,7 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + else + #endif + #if defined(OPENSSL_BN_ASM_MONT5) +- if (window >= 5) { ++ if (window >= 5 && top <= BN_SOFT_LIMIT) { + window = 5; /* ~5% improvement for RSA2048 sign, and even + * for RSA4096 */ + /* reserve space for mont->N.d[] copy */ +@@ -758,6 +774,9 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + if (!bn_to_mont_fixed_top(&am, a, mont, ctx)) + goto err; + ++ if (top > BN_SOFT_LIMIT) ++ goto fallback; ++ + #if defined(SPARC_T4_MONT) + if (t4) { + typedef int (*bn_pwr5_mont_f) (BN_ULONG *tp, const BN_ULONG *np, +@@ -1029,6 +1048,7 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + } else + #endif + { ++ fallback: + if (!MOD_EXP_CTIME_COPY_TO_PREBUF(&tmp, top, powerbuf, 0, window)) + goto err; + if (!MOD_EXP_CTIME_COPY_TO_PREBUF(&am, top, powerbuf, 1, window)) +diff --git a/vendor/openssl-src/openssl/crypto/bn/bn_local.h b/vendor/openssl-src/openssl/crypto/bn/bn_local.h +index 8ad69ccd3..30b7614fd 100644 +--- a/vendor/openssl-src/openssl/crypto/bn/bn_local.h ++++ b/vendor/openssl-src/openssl/crypto/bn/bn_local.h +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -35,6 +35,26 @@ + /* #define BN_DEBUG */ + /* #define BN_DEBUG_RAND */ + ++/* ++ * This should limit the stack usage due to alloca to about 4K. ++ * BN_SOFT_LIMIT is a soft limit equivalent to 2*OPENSSL_RSA_MAX_MODULUS_BITS. ++ * Beyond that size bn_mul_mont is no longer used, and the constant time ++ * assembler code is disabled, due to the blatant alloca and bn_mul_mont usage. ++ * Note that bn_mul_mont does an alloca that is hidden away in assembly. ++ * It is not recommended to do computations with numbers exceeding this limit, ++ * since the result will be highly version dependent: ++ * While the current OpenSSL version will use non-optimized, but safe code, ++ * previous versions will use optimized code, that may crash due to unexpected ++ * stack overflow, and future versions may very well turn this into a hard ++ * limit. ++ * Note however, that it is possible to override the size limit using ++ * "./config -DBN_SOFT_LIMIT=" if necessary, and the O/S specific ++ * stack limit is known and taken into consideration. ++ */ ++# ifndef BN_SOFT_LIMIT ++# define BN_SOFT_LIMIT (4096 / BN_BYTES) ++# endif ++ + # ifndef OPENSSL_SMALL_FOOTPRINT + # define BN_MUL_COMBA + # define BN_SQR_COMBA +@@ -263,6 +283,20 @@ struct bn_gencb_st { + } cb; + }; + ++struct bn_blinding_st { ++ BIGNUM *A; ++ BIGNUM *Ai; ++ BIGNUM *e; ++ BIGNUM *mod; /* just a reference */ ++ CRYPTO_THREAD_ID tid; ++ int counter; ++ unsigned long flags; ++ BN_MONT_CTX *m_ctx; ++ int (*bn_mod_exp) (BIGNUM *r, const BIGNUM *a, const BIGNUM *p, ++ const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); ++ CRYPTO_RWLOCK *lock; ++}; ++ + /*- + * BN_window_bits_for_exponent_size -- macro for sliding window mod_exp functions + * +diff --git a/vendor/openssl-src/openssl/crypto/bn/bn_mont.c b/vendor/openssl-src/openssl/crypto/bn/bn_mont.c +index 1e5045a01..7617b0df5 100644 +--- a/vendor/openssl-src/openssl/crypto/bn/bn_mont.c ++++ b/vendor/openssl-src/openssl/crypto/bn/bn_mont.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -42,7 +42,7 @@ int bn_mul_mont_fixed_top(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + int num = mont->N.top; + + #if defined(OPENSSL_BN_ASM_MONT) && defined(MONT_WORD) +- if (num > 1 && a->top == num && b->top == num) { ++ if (num > 1 && num <= BN_SOFT_LIMIT && a->top == num && b->top == num) { + if (bn_wexpand(r, num) == NULL) + return 0; + if (bn_mul_mont(r->d, a->d, b->d, mont->N.d, mont->n0, num)) { +diff --git a/vendor/openssl-src/openssl/crypto/bn/bn_nist.c b/vendor/openssl-src/openssl/crypto/bn/bn_nist.c +index 325dc2284..c29e62ed3 100644 +--- a/vendor/openssl-src/openssl/crypto/bn/bn_nist.c ++++ b/vendor/openssl-src/openssl/crypto/bn/bn_nist.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -249,17 +249,28 @@ const BIGNUM *BN_get0_nist_prime_521(void) + return &_bignum_nist_p_521; + } + +-static void nist_cp_bn_0(BN_ULONG *dst, const BN_ULONG *src, int top, int max) +-{ +- int i; +- +-#ifdef BN_DEBUG +- (void)ossl_assert(top <= max); +-#endif +- for (i = 0; i < top; i++) +- dst[i] = src[i]; +- for (; i < max; i++) +- dst[i] = 0; ++/* ++ * To avoid more recent compilers (specifically clang-14) from treating this ++ * code as a violation of the strict aliasing conditions and omiting it, this ++ * cannot be declared as a function. Moreover, the dst parameter cannot be ++ * cached in a local since this no longer references the union and again falls ++ * foul of the strict aliasing criteria. Refer to #18225 for the initial ++ * diagnostics and llvm/llvm-project#55255 for the later discussions with the ++ * LLVM developers. The problem boils down to if an array in the union is ++ * converted to a pointer or if it is used directly. ++ * ++ * This function was inlined regardless, so there is no space cost to be ++ * paid for making it a macro. ++ */ ++#define nist_cp_bn_0(dst, src_in, top, max) \ ++{ \ ++ int ii; \ ++ const BN_ULONG *src = src_in; \ ++ \ ++ for (ii = 0; ii < top; ii++) \ ++ (dst)[ii] = src[ii]; \ ++ for (; ii < max; ii++) \ ++ (dst)[ii] = 0; \ + } + + static void nist_cp_bn(BN_ULONG *dst, const BN_ULONG *src, int top) +diff --git a/vendor/openssl-src/openssl/crypto/bn/bn_prime.pl b/vendor/openssl-src/openssl/crypto/bn/bn_prime.pl +index b0b160874..d2eaac656 100644 +--- a/vendor/openssl-src/openssl/crypto/bn/bn_prime.pl ++++ b/vendor/openssl-src/openssl/crypto/bn/bn_prime.pl +@@ -1,13 +1,16 @@ + #! /usr/bin/env perl +-# Copyright 1998-2019 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 1998-2022 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy + # in the file LICENSE in the source distribution or at + # https://www.openssl.org/source/license.html ++use FindBin; ++use lib "$FindBin::Bin/../../util/perl"; ++use OpenSSL::copyright; + +-# Output year depends on the year of the script. +-my $YEAR = [localtime([stat($0)]->[9])]->[5] + 1900; ++# The year the output file is generated. ++my $YEAR = OpenSSL::copyright::year_of($0); + print <<"EOF"; + /* + * WARNING: do not edit! +diff --git a/vendor/openssl-src/openssl/crypto/bn/build.info b/vendor/openssl-src/openssl/crypto/bn/build.info +index b9ed5322f..c9fe2fdad 100644 +--- a/vendor/openssl-src/openssl/crypto/bn/build.info ++++ b/vendor/openssl-src/openssl/crypto/bn/build.info +@@ -5,7 +5,8 @@ SOURCE[../../libcrypto]=\ + bn_kron.c bn_sqrt.c bn_gcd.c bn_prime.c bn_err.c bn_sqr.c \ + {- $target{bn_asm_src} -} \ + bn_recp.c bn_mont.c bn_mpi.c bn_exp2.c bn_gf2m.c bn_nist.c \ +- bn_depr.c bn_const.c bn_x931p.c bn_intern.c bn_dh.c bn_srp.c ++ bn_depr.c bn_const.c bn_x931p.c bn_intern.c bn_dh.c bn_srp.c \ ++ rsa_sup_mul.c + + INCLUDE[bn_exp.o]=.. + +diff --git a/vendor/openssl-src/openssl/crypto/bn/rsa_sup_mul.c b/vendor/openssl-src/openssl/crypto/bn/rsa_sup_mul.c +new file mode 100644 +index 000000000..acafefd5f +--- /dev/null ++++ b/vendor/openssl-src/openssl/crypto/bn/rsa_sup_mul.c +@@ -0,0 +1,614 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "internal/numbers.h" ++#include "internal/constant_time.h" ++#include "bn_local.h" ++ ++# if BN_BYTES == 8 ++typedef uint64_t limb_t; ++# if defined(__SIZEOF_INT128__) && __SIZEOF_INT128__ == 16 ++/* nonstandard; implemented by gcc on 64-bit platforms */ ++typedef __uint128_t limb2_t; ++# define HAVE_LIMB2_T ++# endif ++# define LIMB_BIT_SIZE 64 ++# define LIMB_BYTE_SIZE 8 ++# elif BN_BYTES == 4 ++typedef uint32_t limb_t; ++typedef uint64_t limb2_t; ++# define LIMB_BIT_SIZE 32 ++# define LIMB_BYTE_SIZE 4 ++# define HAVE_LIMB2_T ++# else ++# error "Not supported" ++# endif ++ ++/* ++ * For multiplication we're using schoolbook multiplication, ++ * so if we have two numbers, each with 6 "digits" (words) ++ * the multiplication is calculated as follows: ++ * A B C D E F ++ * x I J K L M N ++ * -------------- ++ * N*F ++ * N*E ++ * N*D ++ * N*C ++ * N*B ++ * N*A ++ * M*F ++ * M*E ++ * M*D ++ * M*C ++ * M*B ++ * M*A ++ * L*F ++ * L*E ++ * L*D ++ * L*C ++ * L*B ++ * L*A ++ * K*F ++ * K*E ++ * K*D ++ * K*C ++ * K*B ++ * K*A ++ * J*F ++ * J*E ++ * J*D ++ * J*C ++ * J*B ++ * J*A ++ * I*F ++ * I*E ++ * I*D ++ * I*C ++ * I*B ++ * + I*A ++ * ========================== ++ * N*B N*D N*F ++ * + N*A N*C N*E ++ * + M*B M*D M*F ++ * + M*A M*C M*E ++ * + L*B L*D L*F ++ * + L*A L*C L*E ++ * + K*B K*D K*F ++ * + K*A K*C K*E ++ * + J*B J*D J*F ++ * + J*A J*C J*E ++ * + I*B I*D I*F ++ * + I*A I*C I*E ++ * ++ * 1+1 1+3 1+5 ++ * 1+0 1+2 1+4 ++ * 0+1 0+3 0+5 ++ * 0+0 0+2 0+4 ++ * ++ * 0 1 2 3 4 5 6 ++ * which requires n^2 multiplications and 2n full length additions ++ * as we can keep every other result of limb multiplication in two separate ++ * limbs ++ */ ++ ++#if defined HAVE_LIMB2_T ++static ossl_inline void _mul_limb(limb_t *hi, limb_t *lo, limb_t a, limb_t b) ++{ ++ limb2_t t; ++ /* ++ * this is idiomatic code to tell compiler to use the native mul ++ * those three lines will actually compile to single instruction ++ */ ++ ++ t = (limb2_t)a * b; ++ *hi = t >> LIMB_BIT_SIZE; ++ *lo = (limb_t)t; ++} ++#elif (BN_BYTES == 8) && (defined _MSC_VER) ++/* https://learn.microsoft.com/en-us/cpp/intrinsics/umul128?view=msvc-170 */ ++#pragma intrinsic(_umul128) ++static ossl_inline void _mul_limb(limb_t *hi, limb_t *lo, limb_t a, limb_t b) ++{ ++ *lo = _umul128(a, b, hi); ++} ++#else ++/* ++ * if the compiler doesn't have either a 128bit data type nor a "return ++ * high 64 bits of multiplication" ++ */ ++static ossl_inline void _mul_limb(limb_t *hi, limb_t *lo, limb_t a, limb_t b) ++{ ++ limb_t a_low = (limb_t)(uint32_t)a; ++ limb_t a_hi = a >> 32; ++ limb_t b_low = (limb_t)(uint32_t)b; ++ limb_t b_hi = b >> 32; ++ ++ limb_t p0 = a_low * b_low; ++ limb_t p1 = a_low * b_hi; ++ limb_t p2 = a_hi * b_low; ++ limb_t p3 = a_hi * b_hi; ++ ++ uint32_t cy = (uint32_t)(((p0 >> 32) + (uint32_t)p1 + (uint32_t)p2) >> 32); ++ ++ *lo = p0 + (p1 << 32) + (p2 << 32); ++ *hi = p3 + (p1 >> 32) + (p2 >> 32) + cy; ++} ++#endif ++ ++/* add two limbs with carry in, return carry out */ ++static ossl_inline limb_t _add_limb(limb_t *ret, limb_t a, limb_t b, limb_t carry) ++{ ++ limb_t carry1, carry2, t; ++ /* ++ * `c = a + b; if (c < a)` is idiomatic code that makes compilers ++ * use add with carry on assembly level ++ */ ++ ++ *ret = a + carry; ++ if (*ret < a) ++ carry1 = 1; ++ else ++ carry1 = 0; ++ ++ t = *ret; ++ *ret = t + b; ++ if (*ret < t) ++ carry2 = 1; ++ else ++ carry2 = 0; ++ ++ return carry1 + carry2; ++} ++ ++/* ++ * add two numbers of the same size, return overflow ++ * ++ * add a to b, place result in ret; all arrays need to be n limbs long ++ * return overflow from addition (0 or 1) ++ */ ++static ossl_inline limb_t add(limb_t *ret, limb_t *a, limb_t *b, size_t n) ++{ ++ limb_t c = 0; ++ ossl_ssize_t i; ++ ++ for(i = n - 1; i > -1; i--) ++ c = _add_limb(&ret[i], a[i], b[i], c); ++ ++ return c; ++} ++ ++/* ++ * return number of limbs necessary for temporary values ++ * when multiplying numbers n limbs large ++ */ ++static ossl_inline size_t mul_limb_numb(size_t n) ++{ ++ return 2 * n * 2; ++} ++ ++/* ++ * multiply two numbers of the same size ++ * ++ * multiply a by b, place result in ret; a and b need to be n limbs long ++ * ret needs to be 2*n limbs long, tmp needs to be mul_limb_numb(n) limbs ++ * long ++ */ ++static void limb_mul(limb_t *ret, limb_t *a, limb_t *b, size_t n, limb_t *tmp) ++{ ++ limb_t *r_odd, *r_even; ++ size_t i, j, k; ++ ++ r_odd = tmp; ++ r_even = &tmp[2 * n]; ++ ++ memset(ret, 0, 2 * n * sizeof(limb_t)); ++ ++ for (i = 0; i < n; i++) { ++ for (k = 0; k < i + n + 1; k++) { ++ r_even[k] = 0; ++ r_odd[k] = 0; ++ } ++ for (j = 0; j < n; j++) { ++ /* ++ * place results from even and odd limbs in separate arrays so that ++ * we don't have to calculate overflow every time we get individual ++ * limb multiplication result ++ */ ++ if (j % 2 == 0) ++ _mul_limb(&r_even[i + j], &r_even[i + j + 1], a[i], b[j]); ++ else ++ _mul_limb(&r_odd[i + j], &r_odd[i + j + 1], a[i], b[j]); ++ } ++ /* ++ * skip the least significant limbs when adding multiples of ++ * more significant limbs (they're zero anyway) ++ */ ++ add(ret, ret, r_even, n + i + 1); ++ add(ret, ret, r_odd, n + i + 1); ++ } ++} ++ ++/* modifies the value in place by performing a right shift by one bit */ ++static ossl_inline void rshift1(limb_t *val, size_t n) ++{ ++ limb_t shift_in = 0, shift_out = 0; ++ size_t i; ++ ++ for (i = 0; i < n; i++) { ++ shift_out = val[i] & 1; ++ val[i] = shift_in << (LIMB_BIT_SIZE - 1) | (val[i] >> 1); ++ shift_in = shift_out; ++ } ++} ++ ++/* extend the LSB of flag to all bits of limb */ ++static ossl_inline limb_t mk_mask(limb_t flag) ++{ ++ flag |= flag << 1; ++ flag |= flag << 2; ++ flag |= flag << 4; ++ flag |= flag << 8; ++ flag |= flag << 16; ++#if (LIMB_BYTE_SIZE == 8) ++ flag |= flag << 32; ++#endif ++ return flag; ++} ++ ++/* ++ * copy from either a or b to ret based on flag ++ * when flag == 0, then copies from b ++ * when flag == 1, then copies from a ++ */ ++static ossl_inline void cselect(limb_t flag, limb_t *ret, limb_t *a, limb_t *b, size_t n) ++{ ++ /* ++ * would be more efficient with non volatile mask, but then gcc ++ * generates code with jumps ++ */ ++ volatile limb_t mask; ++ size_t i; ++ ++ mask = mk_mask(flag); ++ for (i = 0; i < n; i++) { ++#if (LIMB_BYTE_SIZE == 8) ++ ret[i] = constant_time_select_64(mask, a[i], b[i]); ++#else ++ ret[i] = constant_time_select_32(mask, a[i], b[i]); ++#endif ++ } ++} ++ ++static limb_t _sub_limb(limb_t *ret, limb_t a, limb_t b, limb_t borrow) ++{ ++ limb_t borrow1, borrow2, t; ++ /* ++ * while it doesn't look constant-time, this is idiomatic code ++ * to tell compilers to use the carry bit from subtraction ++ */ ++ ++ *ret = a - borrow; ++ if (*ret > a) ++ borrow1 = 1; ++ else ++ borrow1 = 0; ++ ++ t = *ret; ++ *ret = t - b; ++ if (*ret > t) ++ borrow2 = 1; ++ else ++ borrow2 = 0; ++ ++ return borrow1 + borrow2; ++} ++ ++/* ++ * place the result of a - b into ret, return the borrow bit. ++ * All arrays need to be n limbs long ++ */ ++static limb_t sub(limb_t *ret, limb_t *a, limb_t *b, size_t n) ++{ ++ limb_t borrow = 0; ++ ossl_ssize_t i; ++ ++ for (i = n - 1; i > -1; i--) ++ borrow = _sub_limb(&ret[i], a[i], b[i], borrow); ++ ++ return borrow; ++} ++ ++/* return the number of limbs necessary to allocate for the mod() tmp operand */ ++static ossl_inline size_t mod_limb_numb(size_t anum, size_t modnum) ++{ ++ return (anum + modnum) * 3; ++} ++ ++/* ++ * calculate a % mod, place the result in ret ++ * size of a is defined by anum, size of ret and mod is modnum, ++ * size of tmp is returned by mod_limb_numb() ++ */ ++static void mod(limb_t *ret, limb_t *a, size_t anum, limb_t *mod, ++ size_t modnum, limb_t *tmp) ++{ ++ limb_t *atmp, *modtmp, *rettmp; ++ limb_t res; ++ size_t i; ++ ++ memset(tmp, 0, mod_limb_numb(anum, modnum) * LIMB_BYTE_SIZE); ++ ++ atmp = tmp; ++ modtmp = &tmp[anum + modnum]; ++ rettmp = &tmp[(anum + modnum) * 2]; ++ ++ for (i = modnum; i 0; i--, rp--) { ++ v = _mul_add_limb(rp, mod, modnum, rp[modnum - 1] * ni0, tmp2); ++ v = v + carry + rp[-1]; ++ carry |= (v != rp[-1]); ++ carry &= (v <= rp[-1]); ++ rp[-1] = v; ++ } ++ ++ /* perform the final reduction by mod... */ ++ carry -= sub(ret, rp, mod, modnum); ++ ++ /* ...conditionally */ ++ cselect(carry, ret, rp, ret, modnum); ++} ++ ++/* allocated buffer should be freed afterwards */ ++static void BN_to_limb(const BIGNUM *bn, limb_t *buf, size_t limbs) ++{ ++ int i; ++ int real_limbs = (BN_num_bytes(bn) + LIMB_BYTE_SIZE - 1) / LIMB_BYTE_SIZE; ++ limb_t *ptr = buf + (limbs - real_limbs); ++ ++ for (i = 0; i < real_limbs; i++) ++ ptr[i] = bn->d[real_limbs - i - 1]; ++} ++ ++#if LIMB_BYTE_SIZE == 8 ++static ossl_inline uint64_t be64(uint64_t host) ++{ ++ const union { ++ long one; ++ char little; ++ } is_endian = { 1 }; ++ ++ if (is_endian.little) { ++ uint64_t big = 0; ++ ++ big |= (host & 0xff00000000000000) >> 56; ++ big |= (host & 0x00ff000000000000) >> 40; ++ big |= (host & 0x0000ff0000000000) >> 24; ++ big |= (host & 0x000000ff00000000) >> 8; ++ big |= (host & 0x00000000ff000000) << 8; ++ big |= (host & 0x0000000000ff0000) << 24; ++ big |= (host & 0x000000000000ff00) << 40; ++ big |= (host & 0x00000000000000ff) << 56; ++ return big; ++ } else { ++ return host; ++ } ++} ++ ++#else ++/* Not all platforms have htobe32(). */ ++static ossl_inline uint32_t be32(uint32_t host) ++{ ++ const union { ++ long one; ++ char little; ++ } is_endian = { 1 }; ++ ++ if (is_endian.little) { ++ uint32_t big = 0; ++ ++ big |= (host & 0xff000000) >> 24; ++ big |= (host & 0x00ff0000) >> 8; ++ big |= (host & 0x0000ff00) << 8; ++ big |= (host & 0x000000ff) << 24; ++ return big; ++ } else { ++ return host; ++ } ++} ++#endif ++ ++/* ++ * We assume that intermediate, possible_arg2, blinding, and ctx are used ++ * similar to BN_BLINDING_invert_ex() arguments. ++ * to_mod is RSA modulus. ++ * buf and num is the serialization buffer and its length. ++ * ++ * Here we use classic/Montgomery multiplication and modulo. After the calculation finished ++ * we serialize the new structure instead of BIGNUMs taking endianness into account. ++ */ ++int ossl_bn_rsa_do_unblind(const BIGNUM *intermediate, ++ const BN_BLINDING *blinding, ++ const BIGNUM *possible_arg2, ++ const BIGNUM *to_mod, BN_CTX *ctx, ++ unsigned char *buf, int num) ++{ ++ limb_t *l_im = NULL, *l_mul = NULL, *l_mod = NULL; ++ limb_t *l_ret = NULL, *l_tmp = NULL, l_buf; ++ size_t l_im_count = 0, l_mul_count = 0, l_size = 0, l_mod_count = 0; ++ size_t l_tmp_count = 0; ++ int ret = 0; ++ size_t i; ++ unsigned char *tmp; ++ const BIGNUM *arg1 = intermediate; ++ const BIGNUM *arg2 = (possible_arg2 == NULL) ? blinding->Ai : possible_arg2; ++ ++ l_im_count = (BN_num_bytes(arg1) + LIMB_BYTE_SIZE - 1) / LIMB_BYTE_SIZE; ++ l_mul_count = (BN_num_bytes(arg2) + LIMB_BYTE_SIZE - 1) / LIMB_BYTE_SIZE; ++ l_mod_count = (BN_num_bytes(to_mod) + LIMB_BYTE_SIZE - 1) / LIMB_BYTE_SIZE; ++ ++ l_size = l_im_count > l_mul_count ? l_im_count : l_mul_count; ++ l_im = OPENSSL_zalloc(l_size * LIMB_BYTE_SIZE); ++ l_mul = OPENSSL_zalloc(l_size * LIMB_BYTE_SIZE); ++ l_mod = OPENSSL_zalloc(l_mod_count * LIMB_BYTE_SIZE); ++ ++ if ((l_im == NULL) || (l_mul == NULL) || (l_mod == NULL)) ++ goto err; ++ ++ BN_to_limb(arg1, l_im, l_size); ++ BN_to_limb(arg2, l_mul, l_size); ++ BN_to_limb(to_mod, l_mod, l_mod_count); ++ ++ l_ret = OPENSSL_malloc(2 * l_size * LIMB_BYTE_SIZE); ++ ++ if (blinding->m_ctx != NULL) { ++ l_tmp_count = mul_limb_numb(l_size) > mod_montgomery_limb_numb(l_mod_count) ? ++ mul_limb_numb(l_size) : mod_montgomery_limb_numb(l_mod_count); ++ l_tmp = OPENSSL_malloc(l_tmp_count * LIMB_BYTE_SIZE); ++ } else { ++ l_tmp_count = mul_limb_numb(l_size) > mod_limb_numb(2 * l_size, l_mod_count) ? ++ mul_limb_numb(l_size) : mod_limb_numb(2 * l_size, l_mod_count); ++ l_tmp = OPENSSL_malloc(l_tmp_count * LIMB_BYTE_SIZE); ++ } ++ ++ if ((l_ret == NULL) || (l_tmp == NULL)) ++ goto err; ++ ++ if (blinding->m_ctx != NULL) { ++ limb_mul(l_ret, l_im, l_mul, l_size, l_tmp); ++ mod_montgomery(l_ret, l_ret, 2 * l_size, l_mod, l_mod_count, ++ blinding->m_ctx->n0[0], l_tmp); ++ } else { ++ limb_mul(l_ret, l_im, l_mul, l_size, l_tmp); ++ mod(l_ret, l_ret, 2 * l_size, l_mod, l_mod_count, l_tmp); ++ } ++ ++ /* modulus size in bytes can be equal to num but after limbs conversion it becomes bigger */ ++ if (num < BN_num_bytes(to_mod)) { ++ BNerr(BN_F_OSSL_BN_RSA_DO_UNBLIND, ERR_R_PASSED_INVALID_ARGUMENT); ++ goto err; ++ } ++ ++ memset(buf, 0, num); ++ tmp = buf + num - BN_num_bytes(to_mod); ++ for (i = 0; i < l_mod_count; i++) { ++#if LIMB_BYTE_SIZE == 8 ++ l_buf = be64(l_ret[i]); ++#else ++ l_buf = be32(l_ret[i]); ++#endif ++ if (i == 0) { ++ int delta = LIMB_BYTE_SIZE - ((l_mod_count * LIMB_BYTE_SIZE) - num); ++ ++ memcpy(tmp, ((char *)&l_buf) + LIMB_BYTE_SIZE - delta, delta); ++ tmp += delta; ++ } else { ++ memcpy(tmp, &l_buf, LIMB_BYTE_SIZE); ++ tmp += LIMB_BYTE_SIZE; ++ } ++ } ++ ret = num; ++ ++ err: ++ OPENSSL_free(l_im); ++ OPENSSL_free(l_mul); ++ OPENSSL_free(l_mod); ++ OPENSSL_free(l_tmp); ++ OPENSSL_free(l_ret); ++ ++ return ret; ++} +diff --git a/vendor/openssl-src/openssl/crypto/cms/cms_enc.c b/vendor/openssl-src/openssl/crypto/cms/cms_enc.c +index fc490303d..6f077b339 100644 +--- a/vendor/openssl-src/openssl/crypto/cms/cms_enc.c ++++ b/vendor/openssl-src/openssl/crypto/cms/cms_enc.c +@@ -68,7 +68,12 @@ BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec) + + if (enc) { + int ivlen; ++ + calg->algorithm = OBJ_nid2obj(EVP_CIPHER_CTX_type(ctx)); ++ if (calg->algorithm == NULL) { ++ CMSerr(ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM); ++ goto err; ++ } + /* Generate a random IV if we need one */ + ivlen = EVP_CIPHER_CTX_iv_length(ctx); + if (ivlen > 0) { +diff --git a/vendor/openssl-src/openssl/crypto/cms/cms_err.c b/vendor/openssl-src/openssl/crypto/cms/cms_err.c +index a211f4954..408fe13b8 100644 +--- a/vendor/openssl-src/openssl/crypto/cms/cms_err.c ++++ b/vendor/openssl-src/openssl/crypto/cms/cms_err.c +@@ -264,6 +264,8 @@ static const ERR_STRING_DATA CMS_str_reasons[] = { + {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNKNOWN_ID), "unknown id"}, + {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM), + "unsupported compression algorithm"}, ++ {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM), ++ "unsupported content encryption algorithm"}, + {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_CONTENT_TYPE), + "unsupported content type"}, + {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_KEK_ALGORITHM), +diff --git a/vendor/openssl-src/openssl/crypto/conf/keysets.pl b/vendor/openssl-src/openssl/crypto/conf/keysets.pl +index 27a7214cc..9c9a00dea 100644 +--- a/vendor/openssl-src/openssl/crypto/conf/keysets.pl ++++ b/vendor/openssl-src/openssl/crypto/conf/keysets.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/env perl +-# Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -8,6 +8,9 @@ + + use strict; + use warnings; ++use FindBin; ++use lib "$FindBin::Bin/../../util/perl"; ++use OpenSSL::copyright; + + my $NUMBER = 0x0001; + my $UPPER = 0x0002; +@@ -54,9 +57,8 @@ foreach (0 .. 127) { + push(@V_w32, $v); + } + +-# Output year depends on the year of the script. +-my $YEAR = [localtime([stat($0)]->[9])]->[5] + 1900; +- ++# The year the output file is generated. ++my $YEAR = OpenSSL::copyright::year_of($0); + print <<"EOF"; + /* + * WARNING: do not edit! +diff --git a/vendor/openssl-src/openssl/crypto/ec/ec_key.c b/vendor/openssl-src/openssl/crypto/ec/ec_key.c +index 3017f0936..63799002b 100644 +--- a/vendor/openssl-src/openssl/crypto/ec/ec_key.c ++++ b/vendor/openssl-src/openssl/crypto/ec/ec_key.c +@@ -443,6 +443,16 @@ int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *priv_key) + && key->meth->set_private(key, priv_key) == 0) + return 0; + ++ /* ++ * Return `0` to comply with legacy behavior for this function, see ++ * https://github.com/openssl/openssl/issues/18744#issuecomment-1195175696 ++ */ ++ if (priv_key == NULL) { ++ BN_clear_free(key->priv_key); ++ key->priv_key = NULL; ++ return 0; /* intentional for legacy compatibility */ ++ } ++ + /* + * We should never leak the bit length of the secret scalar in the key, + * so we always set the `BN_FLG_CONSTTIME` flag on the internal `BIGNUM` +diff --git a/vendor/openssl-src/openssl/crypto/err/openssl.txt b/vendor/openssl-src/openssl/crypto/err/openssl.txt +index 902e97b84..ba3a46d5b 100644 +--- a/vendor/openssl-src/openssl/crypto/err/openssl.txt ++++ b/vendor/openssl-src/openssl/crypto/err/openssl.txt +@@ -1,4 +1,4 @@ +-# Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -232,6 +232,7 @@ BN_F_BN_RSHIFT:146:BN_rshift + BN_F_BN_SET_WORDS:144:bn_set_words + BN_F_BN_STACK_PUSH:148:BN_STACK_push + BN_F_BN_USUB:115:BN_usub ++BN_F_OSSL_BN_RSA_DO_UNBLIND:151:ossl_bn_rsa_do_unblind + BUF_F_BUF_MEM_GROW:100:BUF_MEM_grow + BUF_F_BUF_MEM_GROW_CLEAN:105:BUF_MEM_grow_clean + BUF_F_BUF_MEM_NEW:101:BUF_MEM_new +@@ -2023,6 +2024,8 @@ CMS_R_UNKNOWN_CIPHER:148:unknown cipher + CMS_R_UNKNOWN_DIGEST_ALGORITHM:149:unknown digest algorithm + CMS_R_UNKNOWN_ID:150:unknown id + CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM:151:unsupported compression algorithm ++CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM:194:\ ++ unsupported content encryption algorithm + CMS_R_UNSUPPORTED_CONTENT_TYPE:152:unsupported content type + CMS_R_UNSUPPORTED_KEK_ALGORITHM:153:unsupported kek algorithm + CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM:179:\ +diff --git a/vendor/openssl-src/openssl/crypto/evp/bio_enc.c b/vendor/openssl-src/openssl/crypto/evp/bio_enc.c +index 6639061ea..9afce7c08 100644 +--- a/vendor/openssl-src/openssl/crypto/evp/bio_enc.c ++++ b/vendor/openssl-src/openssl/crypto/evp/bio_enc.c +@@ -299,6 +299,7 @@ static long enc_ctrl(BIO *b, int cmd, long num, void *ptr) + int i; + EVP_CIPHER_CTX **c_ctx; + BIO *next; ++ int pend; + + ctx = BIO_get_data(b); + next = BIO_next(b); +@@ -334,8 +335,14 @@ static long enc_ctrl(BIO *b, int cmd, long num, void *ptr) + /* do a final write */ + again: + while (ctx->buf_len != ctx->buf_off) { ++ pend = ctx->buf_len - ctx->buf_off; + i = enc_write(b, NULL, 0); +- if (i < 0) ++ /* ++ * i should never be > 0 here because we didn't ask to write any ++ * new data. We stop if we get an error or we failed to make any ++ * progress writing pending data. ++ */ ++ if (i < 0 || (ctx->buf_len - ctx->buf_off) == pend) + return i; + } + +diff --git a/vendor/openssl-src/openssl/crypto/objects/obj_dat.pl b/vendor/openssl-src/openssl/crypto/objects/obj_dat.pl +index e5d38147e..e1b4a02f2 100644 +--- a/vendor/openssl-src/openssl/crypto/objects/obj_dat.pl ++++ b/vendor/openssl-src/openssl/crypto/objects/obj_dat.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/env perl +-# Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -9,6 +9,9 @@ + use integer; + use strict; + use warnings; ++use FindBin; ++use lib "$FindBin::Bin/../../util/perl"; ++use OpenSSL::copyright; + + # Generate the DER encoding for the given OID. + sub der_it +@@ -36,10 +39,8 @@ sub der_it + return $ret; + } + +-# Output year depends on the year of the script and the input file. +-my $YEAR = [localtime([stat($0)]->[9])]->[5] + 1900; +-my $iYEAR = [localtime([stat($ARGV[0])]->[9])]->[5] + 1900; +-$YEAR = $iYEAR if $iYEAR > $YEAR; ++# The year the output file is generated. ++my $YEAR = OpenSSL::copyright::latest(($0, $ARGV[0])); + + # Read input, parse all #define's into OID name and value. + # Populate %ln and %sn with long and short names (%dupln and %dupsn) +diff --git a/vendor/openssl-src/openssl/crypto/objects/objects.pl b/vendor/openssl-src/openssl/crypto/objects/objects.pl +index d7d1962c9..8b258d4df 100644 +--- a/vendor/openssl-src/openssl/crypto/objects/objects.pl ++++ b/vendor/openssl-src/openssl/crypto/objects/objects.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/env perl +-# Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -7,16 +7,15 @@ + # https://www.openssl.org/source/license.html + + use Getopt::Std; ++use FindBin; ++use lib "$FindBin::Bin/../../util/perl"; ++use OpenSSL::copyright; + + our($opt_n); + getopts('n'); + +-# Output year depends on the year of the script and the input file. +-my $YEAR = [localtime([stat($0)]->[9])]->[5] + 1900; +-my $iYEAR = [localtime([stat($ARGV[0])]->[9])]->[5] + 1900; +-$YEAR = $iYEAR if $iYEAR > $YEAR; +-$iYEAR = [localtime([stat($ARGV[1])]->[9])]->[5] + 1900; +-$YEAR = $iYEAR if $iYEAR > $YEAR; ++# The year the output file is generated. ++my $YEAR = OpenSSL::copyright::latest(($0, $ARGV[1], $ARGV[0])); + + open (NUMIN,"$ARGV[1]") || die "Can't open number file $ARGV[1]"; + $max_nid=0; +diff --git a/vendor/openssl-src/openssl/crypto/objects/objxref.pl b/vendor/openssl-src/openssl/crypto/objects/objxref.pl +index ce76cadae..4d4b9074f 100644 +--- a/vendor/openssl-src/openssl/crypto/objects/objxref.pl ++++ b/vendor/openssl-src/openssl/crypto/objects/objxref.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/env perl +-# Copyright 1998-2019 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 1998-2022 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -8,18 +8,17 @@ + + + use strict; ++use FindBin; ++use lib "$FindBin::Bin/../../util/perl"; ++use OpenSSL::copyright; + + my %xref_tbl; + my %oid_tbl; + + my ($mac_file, $xref_file) = @ARGV; + +-# Output year depends on the year of the script and the input file. +-my $YEAR = [localtime([stat($0)]->[9])]->[5] + 1900; +-my $iYEAR = [localtime([stat($mac_file)]->[9])]->[5] + 1900; +-$YEAR = $iYEAR if $iYEAR > $YEAR; +-$iYEAR = [localtime([stat($xref_file)]->[9])]->[5] + 1900; +-$YEAR = $iYEAR if $iYEAR > $YEAR; ++# The year the output file is generated. ++my $YEAR = OpenSSL::copyright::latest(($0, $mac_file, $xref_file)); + + open(IN, $mac_file) || die "Can't open $mac_file, $!\n"; + +diff --git a/vendor/openssl-src/openssl/crypto/pem/pem_lib.c b/vendor/openssl-src/openssl/crypto/pem/pem_lib.c +index 2de093595..14f9ca4aa 100644 +--- a/vendor/openssl-src/openssl/crypto/pem/pem_lib.c ++++ b/vendor/openssl-src/openssl/crypto/pem/pem_lib.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -621,7 +621,7 @@ int PEM_write_bio(BIO *bp, const char *name, const char *header, + (BIO_write(bp, "-----\n", 6) != 6)) + goto err; + +- i = strlen(header); ++ i = header != NULL ? strlen(header) : 0; + if (i > 0) { + if ((BIO_write(bp, header, i) != i) || (BIO_write(bp, "\n", 1) != 1)) + goto err; +@@ -791,7 +791,7 @@ static int get_header_and_data(BIO *bp, BIO **header, BIO **data, char *name, + { + BIO *tmp = *header; + char *linebuf, *p; +- int len, line, ret = 0, end = 0, prev_partial_line_read = 0, partial_line_read = 0; ++ int len, ret = 0, end = 0, prev_partial_line_read = 0, partial_line_read = 0; + /* 0 if not seen (yet), 1 if reading header, 2 if finished header */ + enum header_status got_header = MAYBE_HEADER; + unsigned int flags_mask; +@@ -805,7 +805,7 @@ static int get_header_and_data(BIO *bp, BIO **header, BIO **data, char *name, + return 0; + } + +- for (line = 0; ; line++) { ++ for (;;) { + flags_mask = ~0u; + len = BIO_gets(bp, linebuf, LINESIZE); + if (len <= 0) { +@@ -957,7 +957,9 @@ int PEM_read_bio_ex(BIO *bp, char **name_out, char **header, + *data = pem_malloc(len, flags); + if (*header == NULL || *data == NULL) { + pem_free(*header, flags, 0); ++ *header = NULL; + pem_free(*data, flags, 0); ++ *data = NULL; + goto end; + } + BIO_read(headerB, *header, headerlen); +diff --git a/vendor/openssl-src/openssl/crypto/rand/drbg_lib.c b/vendor/openssl-src/openssl/crypto/rand/drbg_lib.c +index 8c7c28c97..d32fa80cf 100644 +--- a/vendor/openssl-src/openssl/crypto/rand/drbg_lib.c ++++ b/vendor/openssl-src/openssl/crypto/rand/drbg_lib.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2011-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -354,13 +354,8 @@ int RAND_DRBG_instantiate(RAND_DRBG *drbg, + drbg->state = DRBG_READY; + drbg->generate_counter = 1; + drbg->reseed_time = time(NULL); +- if (drbg->enable_reseed_propagation) { +- if (drbg->parent == NULL) +- tsan_counter(&drbg->reseed_counter); +- else +- tsan_store(&drbg->reseed_counter, +- tsan_load(&drbg->parent->reseed_counter)); +- } ++ if (drbg->enable_reseed_propagation && drbg->parent == NULL) ++ tsan_counter(&drbg->reseed_counter); + + end: + if (entropy != NULL && drbg->cleanup_entropy != NULL) +@@ -444,13 +439,8 @@ int RAND_DRBG_reseed(RAND_DRBG *drbg, + drbg->state = DRBG_READY; + drbg->generate_counter = 1; + drbg->reseed_time = time(NULL); +- if (drbg->enable_reseed_propagation) { +- if (drbg->parent == NULL) +- tsan_counter(&drbg->reseed_counter); +- else +- tsan_store(&drbg->reseed_counter, +- tsan_load(&drbg->parent->reseed_counter)); +- } ++ if (drbg->enable_reseed_propagation && drbg->parent == NULL) ++ tsan_counter(&drbg->reseed_counter); + + end: + if (entropy != NULL && drbg->cleanup_entropy != NULL) +diff --git a/vendor/openssl-src/openssl/crypto/rand/rand_lib.c b/vendor/openssl-src/openssl/crypto/rand/rand_lib.c +index 5c72fad8c..3fdb56cb0 100644 +--- a/vendor/openssl-src/openssl/crypto/rand/rand_lib.c ++++ b/vendor/openssl-src/openssl/crypto/rand/rand_lib.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -172,8 +172,12 @@ size_t rand_drbg_get_entropy(RAND_DRBG *drbg, + if (RAND_DRBG_generate(drbg->parent, + buffer, bytes_needed, + prediction_resistance, +- (unsigned char *)&drbg, sizeof(drbg)) != 0) ++ (unsigned char *)&drbg, sizeof(drbg)) != 0) { + bytes = bytes_needed; ++ if (drbg->enable_reseed_propagation) ++ tsan_store(&drbg->reseed_counter, ++ tsan_load(&drbg->parent->reseed_counter)); ++ } + rand_drbg_unlock(drbg->parent); + + rand_pool_add_end(pool, bytes, 8 * bytes); +diff --git a/vendor/openssl-src/openssl/crypto/rand/rand_vms.c b/vendor/openssl-src/openssl/crypto/rand/rand_vms.c +index a00f83bcc..969473730 100644 +--- a/vendor/openssl-src/openssl/crypto/rand/rand_vms.c ++++ b/vendor/openssl-src/openssl/crypto/rand/rand_vms.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 2001-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -479,31 +479,6 @@ size_t data_collect_method(RAND_POOL *pool) + return rand_pool_entropy_available(pool); + } + +-int rand_pool_add_nonce_data(RAND_POOL *pool) +-{ +- struct { +- pid_t pid; +- CRYPTO_THREAD_ID tid; +- unsigned __int64 time; +- } data = { 0 }; +- +- /* +- * Add process id, thread id, and a high resolution timestamp +- * (where available, which is OpenVMS v8.4 and up) to ensure that +- * the nonce is unique with high probability for different process +- * instances. +- */ +- data.pid = getpid(); +- data.tid = CRYPTO_THREAD_get_current_id(); +-#if __CRTL_VER >= 80400000 +- sys$gettim_prec(&data.time); +-#else +- sys$gettim((void*)&data.time); +-#endif +- +- return rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0); +-} +- + /* + * SYS$GET_ENTROPY METHOD + * ====================== +@@ -577,6 +552,59 @@ size_t rand_pool_acquire_entropy(RAND_POOL *pool) + return data_collect_method(pool); + } + ++int rand_pool_add_nonce_data(RAND_POOL *pool) ++{ ++ /* ++ * Two variables to ensure that two nonces won't ever be the same ++ */ ++ static unsigned __int64 last_time = 0; ++ static unsigned __int32 last_seq = 0; ++ ++ struct { ++ pid_t pid; ++ CRYPTO_THREAD_ID tid; ++ unsigned __int64 time; ++ unsigned __int32 seq; ++ } data; ++ ++ /* Erase the entire structure including any padding */ ++ memset(&data, 0, sizeof(data)); ++ ++ /* ++ * Add process id, thread id, a timestamp, and a sequence number in case ++ * the same time stamp is repeated, to ensure that the nonce is unique ++ * with high probability for different process instances. ++ * ++ * The normal OpenVMS time is specified to be high granularity (100ns), ++ * but the time update granularity given by sys$gettim() may be lower. ++ * ++ * OpenVMS version 8.4 (which is the latest for Alpha and Itanium) and ++ * on have sys$gettim_prec() as well, which is supposedly having a better ++ * time update granularity, but tests on Itanium (and even Alpha) have ++ * shown that compared with sys$gettim(), the difference is marginal, ++ * so of very little significance in terms of entropy. ++ * Given that, and that it's a high ask to expect everyone to have ++ * upgraded to OpenVMS version 8.4, only sys$gettim() is used, and a ++ * sequence number is added as well, in case sys$gettim() returns the ++ * same time value more than once. ++ * ++ * This function is assumed to be called under thread lock, and does ++ * therefore not take concurrency into account. ++ */ ++ data.pid = getpid(); ++ data.tid = CRYPTO_THREAD_get_current_id(); ++ data.seq = 0; ++ sys$gettim((void*)&data.time); ++ ++ if (data.time == last_time) { ++ data.seq = ++last_seq; ++ } else { ++ last_time = data.time; ++ last_seq = 0; ++ } ++ ++ return rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0); ++} + + int rand_pool_add_additional_data(RAND_POOL *pool) + { +@@ -586,16 +614,12 @@ int rand_pool_add_additional_data(RAND_POOL *pool) + } data = { 0 }; + + /* +- * Add some noise from the thread id and a high resolution timer. +- * The thread id adds a little randomness if the drbg is accessed +- * concurrently (which is the case for the drbg). ++ * Add some noise from the thread id and a timer. The thread id adds a ++ * little randomness if the drbg is accessed concurrently (which is the ++ * case for the drbg). + */ + data.tid = CRYPTO_THREAD_get_current_id(); +-#if __CRTL_VER >= 80400000 +- sys$gettim_prec(&data.time); +-#else + sys$gettim((void*)&data.time); +-#endif + + return rand_pool_add(pool, (unsigned char *)&data, sizeof(data), 0); + } +diff --git a/vendor/openssl-src/openssl/crypto/rand/rand_win.c b/vendor/openssl-src/openssl/crypto/rand/rand_win.c +index 903654600..cdcd70103 100644 +--- a/vendor/openssl-src/openssl/crypto/rand/rand_win.c ++++ b/vendor/openssl-src/openssl/crypto/rand/rand_win.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -26,7 +26,9 @@ + + # ifdef USE_BCRYPTGENRANDOM + # include +-# pragma comment(lib, "bcrypt.lib") ++# ifdef _MSC_VER ++# pragma comment(lib, "bcrypt.lib") ++# endif + # ifndef STATUS_SUCCESS + # define STATUS_SUCCESS ((NTSTATUS)0x00000000L) + # endif +diff --git a/vendor/openssl-src/openssl/crypto/rsa/rsa_ameth.c b/vendor/openssl-src/openssl/crypto/rsa/rsa_ameth.c +index fb045544a..2c9c46ea5 100644 +--- a/vendor/openssl-src/openssl/crypto/rsa/rsa_ameth.c ++++ b/vendor/openssl-src/openssl/crypto/rsa/rsa_ameth.c +@@ -172,6 +172,7 @@ static int rsa_priv_encode(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pkey) + strtype, str, rk, rklen)) { + RSAerr(RSA_F_RSA_PRIV_ENCODE, ERR_R_MALLOC_FAILURE); + ASN1_STRING_free(str); ++ OPENSSL_clear_free(rk, rklen); + return 0; + } + +diff --git a/vendor/openssl-src/openssl/crypto/rsa/rsa_ossl.c b/vendor/openssl-src/openssl/crypto/rsa/rsa_ossl.c +index b52a66f6a..2e3ee4ab3 100644 +--- a/vendor/openssl-src/openssl/crypto/rsa/rsa_ossl.c ++++ b/vendor/openssl-src/openssl/crypto/rsa/rsa_ossl.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -465,11 +465,20 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from, + BN_free(d); + } + +- if (blinding) +- if (!rsa_blinding_invert(blinding, ret, unblind, ctx)) ++ if (blinding) { ++ /* ++ * ossl_bn_rsa_do_unblind() combines blinding inversion and ++ * 0-padded BN BE serialization ++ */ ++ j = ossl_bn_rsa_do_unblind(ret, blinding, unblind, rsa->n, ctx, ++ buf, num); ++ if (j == 0) + goto err; +- +- j = BN_bn2binpad(ret, buf, num); ++ } else { ++ j = BN_bn2binpad(ret, buf, num); ++ if (j < 0) ++ goto err; ++ } + + switch (padding) { + case RSA_PKCS1_PADDING: +diff --git a/vendor/openssl-src/openssl/crypto/txt_db/txt_db.c b/vendor/openssl-src/openssl/crypto/txt_db/txt_db.c +index c4e178251..cbb81905a 100644 +--- a/vendor/openssl-src/openssl/crypto/txt_db/txt_db.c ++++ b/vendor/openssl-src/openssl/crypto/txt_db/txt_db.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -21,7 +21,6 @@ TXT_DB *TXT_DB_read(BIO *in, int num) + { + TXT_DB *ret = NULL; + int esc = 0; +- long ln = 0; + int i, add, n; + int size = BUFSIZE; + int offset = 0; +@@ -61,7 +60,6 @@ TXT_DB *TXT_DB_read(BIO *in, int num) + } + buf->data[offset] = '\0'; + BIO_gets(in, &(buf->data[offset]), size - offset); +- ln++; + if (buf->data[offset] == '\0') + break; + if ((offset == 0) && (buf->data[0] == '#')) +diff --git a/vendor/openssl-src/openssl/crypto/x509/by_dir.c b/vendor/openssl-src/openssl/crypto/x509/by_dir.c +index 238c2519a..46a861e90 100644 +--- a/vendor/openssl-src/openssl/crypto/x509/by_dir.c ++++ b/vendor/openssl-src/openssl/crypto/x509/by_dir.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -332,9 +332,13 @@ static int get_cert_by_subject(X509_LOOKUP *xl, X509_LOOKUP_TYPE type, + tmp = sk_X509_OBJECT_value(xl->store_ctx->objs, j); + X509_STORE_unlock(xl->store_ctx); + +- /* If a CRL, update the last file suffix added for this */ +- +- if (type == X509_LU_CRL) { ++ /* ++ * If a CRL, update the last file suffix added for this. ++ * We don't need to add an entry if k is 0 as this is the initial value. ++ * This avoids the need for a write lock and sort operation in the ++ * simple case where no CRL is present for a hash. ++ */ ++ if (type == X509_LU_CRL && k > 0) { + CRYPTO_THREAD_write_lock(ctx->lock); + /* + * Look for entry again in case another thread added an entry +@@ -362,6 +366,12 @@ static int get_cert_by_subject(X509_LOOKUP *xl, X509_LOOKUP_TYPE type, + ok = 0; + goto finish; + } ++ ++ /* ++ * Ensure stack is sorted so that subsequent sk_BY_DIR_HASH_find ++ * will not mutate the stack and therefore require a write lock. ++ */ ++ sk_BY_DIR_HASH_sort(ent->hashes); + } else if (hent->suffix < k) { + hent->suffix = k; + } +diff --git a/vendor/openssl-src/openssl/crypto/x509/x509_req.c b/vendor/openssl-src/openssl/crypto/x509/x509_req.c +index dd674926d..c2b8cb9f3 100644 +--- a/vendor/openssl-src/openssl/crypto/x509/x509_req.c ++++ b/vendor/openssl-src/openssl/crypto/x509/x509_req.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -167,7 +167,9 @@ STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req) + ext = X509_ATTRIBUTE_get0_type(attr, 0); + break; + } +- if (!ext || (ext->type != V_ASN1_SEQUENCE)) ++ if (ext == NULL) /* no extensions is not an error */ ++ return sk_X509_EXTENSION_new_null(); ++ if (ext->type != V_ASN1_SEQUENCE) + return NULL; + p = ext->value.sequence->data; + return (STACK_OF(X509_EXTENSION) *) +@@ -227,44 +229,52 @@ X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc) + + X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc) + { +- return X509at_delete_attr(req->req_info.attributes, loc); ++ X509_ATTRIBUTE *attr = X509at_delete_attr(req->req_info.attributes, loc); ++ ++ if (attr != NULL) ++ req->req_info.enc.modified = 1; ++ return attr; + } + + int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr) + { +- if (X509at_add1_attr(&req->req_info.attributes, attr)) +- return 1; +- return 0; ++ if (!X509at_add1_attr(&req->req_info.attributes, attr)) ++ return 0; ++ req->req_info.enc.modified = 1; ++ return 1; + } + + int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len) + { +- if (X509at_add1_attr_by_OBJ(&req->req_info.attributes, obj, +- type, bytes, len)) +- return 1; +- return 0; ++ if (!X509at_add1_attr_by_OBJ(&req->req_info.attributes, obj, ++ type, bytes, len)) ++ return 0; ++ req->req_info.enc.modified = 1; ++ return 1; + } + + int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len) + { +- if (X509at_add1_attr_by_NID(&req->req_info.attributes, nid, +- type, bytes, len)) +- return 1; +- return 0; ++ if (!X509at_add1_attr_by_NID(&req->req_info.attributes, nid, ++ type, bytes, len)) ++ return 0; ++ req->req_info.enc.modified = 1; ++ return 1; + } + + int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len) + { +- if (X509at_add1_attr_by_txt(&req->req_info.attributes, attrname, +- type, bytes, len)) +- return 1; +- return 0; ++ if (!X509at_add1_attr_by_txt(&req->req_info.attributes, attrname, ++ type, bytes, len)) ++ return 0; ++ req->req_info.enc.modified = 1; ++ return 1; + } + + long X509_REQ_get_version(const X509_REQ *req) +diff --git a/vendor/openssl-src/openssl/crypto/x509/x509_vfy.c b/vendor/openssl-src/openssl/crypto/x509/x509_vfy.c +index b18489f67..925fbb541 100644 +--- a/vendor/openssl-src/openssl/crypto/x509/x509_vfy.c ++++ b/vendor/openssl-src/openssl/crypto/x509/x509_vfy.c +@@ -973,14 +973,14 @@ static int check_crl_time(X509_STORE_CTX *ctx, X509_CRL *crl, int notify) + time_t *ptime; + int i; + +- if (notify) +- ctx->current_crl = crl; + if (ctx->param->flags & X509_V_FLAG_USE_CHECK_TIME) + ptime = &ctx->param->check_time; + else if (ctx->param->flags & X509_V_FLAG_NO_CHECK_TIME) + return 1; + else + ptime = NULL; ++ if (notify) ++ ctx->current_crl = crl; + + i = X509_cmp_time(X509_CRL_get0_lastUpdate(crl), ptime); + if (i == 0) { +diff --git a/vendor/openssl-src/openssl/crypto/x509/x_all.c b/vendor/openssl-src/openssl/crypto/x509/x_all.c +index a4e9cdaee..fcf6b5ba3 100644 +--- a/vendor/openssl-src/openssl/crypto/x509/x_all.c ++++ b/vendor/openssl-src/openssl/crypto/x509/x_all.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -41,6 +41,13 @@ int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r) + + int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) + { ++ /* ++ * Setting the modified flag before signing it. This makes the cached ++ * encoding to be ignored, so even if the certificate fields have changed, ++ * they are signed correctly. ++ * The X509_sign_ctx, X509_REQ_sign{,_ctx}, X509_CRL_sign{,_ctx} functions ++ * which exist below are the same. ++ */ + x->cert_info.enc.modified = 1; + return (ASN1_item_sign(ASN1_ITEM_rptr(X509_CINF), &x->cert_info.signature, + &x->sig_alg, &x->signature, &x->cert_info, pkey, +@@ -65,12 +72,14 @@ int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert) + + int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md) + { ++ x->req_info.enc.modified = 1; + return (ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO), &x->sig_alg, NULL, + x->signature, &x->req_info, pkey, md)); + } + + int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx) + { ++ x->req_info.enc.modified = 1; + return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_REQ_INFO), + &x->sig_alg, NULL, x->signature, &x->req_info, + ctx); +diff --git a/vendor/openssl-src/openssl/crypto/x509/x_name.c b/vendor/openssl-src/openssl/crypto/x509/x_name.c +index 59ac6895b..dc4a494fb 100644 +--- a/vendor/openssl-src/openssl/crypto/x509/x_name.c ++++ b/vendor/openssl-src/openssl/crypto/x509/x_name.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -493,9 +493,7 @@ int X509_NAME_set(X509_NAME **xn, X509_NAME *name) + int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase) + { + char *s, *c, *b; +- int l, i; +- +- l = 80 - 2 - obase; ++ int i; + + b = X509_NAME_oneline(name, NULL, 0); + if (!b) +@@ -521,12 +519,10 @@ int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase) + if (BIO_write(bp, ", ", 2) != 2) + goto err; + } +- l--; + } + if (*s == '\0') + break; + s++; +- l--; + } + + OPENSSL_free(b); +diff --git a/vendor/openssl-src/openssl/crypto/x509v3/v3_addr.c b/vendor/openssl-src/openssl/crypto/x509v3/v3_addr.c +index ccce34ef2..f9c368bea 100644 +--- a/vendor/openssl-src/openssl/crypto/x509v3/v3_addr.c ++++ b/vendor/openssl-src/openssl/crypto/x509v3/v3_addr.c +@@ -392,12 +392,14 @@ static int range_should_be_prefix(const unsigned char *min, + /* + * Construct a prefix. + */ +-static int make_addressPrefix(IPAddressOrRange **result, +- unsigned char *addr, const int prefixlen) ++static int make_addressPrefix(IPAddressOrRange **result, unsigned char *addr, ++ const int prefixlen, const int afilen) + { + int bytelen = (prefixlen + 7) / 8, bitlen = prefixlen % 8; + IPAddressOrRange *aor = IPAddressOrRange_new(); + ++ if (prefixlen < 0 || prefixlen > (afilen * 8)) ++ return 0; + if (aor == NULL) + return 0; + aor->type = IPAddressOrRange_addressPrefix; +@@ -437,7 +439,7 @@ static int make_addressRange(IPAddressOrRange **result, + return 0; + + if ((prefixlen = range_should_be_prefix(min, max, length)) >= 0) +- return make_addressPrefix(result, min, prefixlen); ++ return make_addressPrefix(result, min, prefixlen, length); + + if ((aor = IPAddressOrRange_new()) == NULL) + return 0; +@@ -599,7 +601,9 @@ int X509v3_addr_add_prefix(IPAddrBlocks *addr, + { + IPAddressOrRanges *aors = make_prefix_or_range(addr, afi, safi); + IPAddressOrRange *aor; +- if (aors == NULL || !make_addressPrefix(&aor, a, prefixlen)) ++ ++ if (aors == NULL ++ || !make_addressPrefix(&aor, a, prefixlen, length_from_afi(afi))) + return 0; + if (sk_IPAddressOrRange_push(aors, aor)) + return 1; +@@ -996,7 +1000,10 @@ static void *v2i_IPAddrBlocks(const struct v3_ext_method *method, + switch (delim) { + case '/': + prefixlen = (int)strtoul(s + i2, &t, 10); +- if (t == s + i2 || *t != '\0') { ++ if (t == s + i2 ++ || *t != '\0' ++ || prefixlen > (length * 8) ++ || prefixlen < 0) { + X509V3err(X509V3_F_V2I_IPADDRBLOCKS, + X509V3_R_EXTENSION_VALUE_ERROR); + X509V3_conf_err(val); +diff --git a/vendor/openssl-src/openssl/crypto/x509v3/v3_genn.c b/vendor/openssl-src/openssl/crypto/x509v3/v3_genn.c +index 87a5eff47..fd307c43c 100644 +--- a/vendor/openssl-src/openssl/crypto/x509v3/v3_genn.c ++++ b/vendor/openssl-src/openssl/crypto/x509v3/v3_genn.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -98,7 +98,7 @@ int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b) + return -1; + switch (a->type) { + case GEN_X400: +- result = ASN1_TYPE_cmp(a->d.x400Address, b->d.x400Address); ++ result = ASN1_STRING_cmp(a->d.x400Address, b->d.x400Address); + break; + + case GEN_EDIPARTY: +diff --git a/vendor/openssl-src/openssl/crypto/x509v3/v3_lib.c b/vendor/openssl-src/openssl/crypto/x509v3/v3_lib.c +index 97c1cbc20..ea88ff2ac 100644 +--- a/vendor/openssl-src/openssl/crypto/x509v3/v3_lib.c ++++ b/vendor/openssl-src/openssl/crypto/x509v3/v3_lib.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -242,8 +242,10 @@ int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, + } + /* If delete, just delete it */ + if (ext_op == X509V3_ADD_DELETE) { +- if (!sk_X509_EXTENSION_delete(*x, extidx)) ++ extmp = sk_X509_EXTENSION_delete(*x, extidx); ++ if (extmp == NULL) + return -1; ++ X509_EXTENSION_free(extmp); + return 1; + } + } else { +diff --git a/vendor/openssl-src/openssl/crypto/x509v3/v3_utl.c b/vendor/openssl-src/openssl/crypto/x509v3/v3_utl.c +index a7ff4b4fb..eac78259f 100644 +--- a/vendor/openssl-src/openssl/crypto/x509v3/v3_utl.c ++++ b/vendor/openssl-src/openssl/crypto/x509v3/v3_utl.c +@@ -1087,12 +1087,17 @@ int a2i_ipadd(unsigned char *ipout, const char *ipasc) + + static int ipv4_from_asc(unsigned char *v4, const char *in) + { +- int a0, a1, a2, a3; +- if (sscanf(in, "%d.%d.%d.%d", &a0, &a1, &a2, &a3) != 4) ++ const char *p; ++ int a0, a1, a2, a3, n; ++ ++ if (sscanf(in, "%d.%d.%d.%d%n", &a0, &a1, &a2, &a3, &n) != 4) + return 0; + if ((a0 < 0) || (a0 > 255) || (a1 < 0) || (a1 > 255) + || (a2 < 0) || (a2 > 255) || (a3 < 0) || (a3 > 255)) + return 0; ++ p = in + n; ++ if (!(*p == '\0' || ossl_isspace(*p))) ++ return 0; + v4[0] = a0; + v4[1] = a1; + v4[2] = a2; +diff --git a/vendor/openssl-src/openssl/doc/man1/x509.pod b/vendor/openssl-src/openssl/doc/man1/x509.pod +index 3c9b2f226..a94f099b3 100644 +--- a/vendor/openssl-src/openssl/doc/man1/x509.pod ++++ b/vendor/openssl-src/openssl/doc/man1/x509.pod +@@ -434,22 +434,26 @@ the CA certificate file. + + Sets the CA serial number file to use. + +-When the B<-CA> option is used to sign a certificate it uses a serial +-number specified in a file. This file consists of one line containing +-an even number of hex digits with the serial number to use. After each +-use the serial number is incremented and written out to the file again. ++When creating a certificate with this option, and with the B<-CA> option, ++the certificate serial number is stored in the given file. ++This file consists of one line containing ++an even number of hex digits with the serial number used last time. ++After reading this number, it is incremented and used, and the file is updated. + + The default filename consists of the CA certificate file base name with + ".srl" appended. For example if the CA certificate file is called + "mycacert.pem" it expects to find a serial number file called "mycacert.srl". + ++If the B<-CA> option is specified and neither <-CAserial> or <-CAcreateserial> ++is given and the default serial number file does not exist, ++a random number is generated; this is the recommended practice. ++ + =item B<-CAcreateserial> + +-With this option the CA serial number file is created if it does not exist: +-it will contain the serial number "02" and the certificate being signed will +-have the 1 as its serial number. If the B<-CA> option is specified +-and the serial number file does not exist a random number is generated; +-this is the recommended practice. ++With this option and the B<-CA> option ++the CA serial number file is created if it does not exist. ++A random number is generated, used for the certificate, ++and saved into the serial number file determined as described above. + + =item B<-extfile filename> + +@@ -932,7 +936,7 @@ the old form must have their links rebuilt using B or similar. + + =head1 COPYRIGHT + +-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/CMS_add0_cert.pod b/vendor/openssl-src/openssl/doc/man3/CMS_add0_cert.pod +index 9fbbe9d86..944f99874 100644 +--- a/vendor/openssl-src/openssl/doc/man3/CMS_add0_cert.pod ++++ b/vendor/openssl-src/openssl/doc/man3/CMS_add0_cert.pod +@@ -19,25 +19,33 @@ CMS_add0_cert, CMS_add1_cert, CMS_get1_certs, CMS_add0_crl, CMS_add1_crl, CMS_ge + + =head1 DESCRIPTION + +-CMS_add0_cert() and CMS_add1_cert() add certificate B to B. +-must be of type signed data or enveloped data. ++CMS_add0_cert() and CMS_add1_cert() add certificate I to I. ++I must be of type signed data or (authenticated) enveloped data. ++For signed data, such a certificate can be used when signing or verifying ++to fill in the signer certificate or to provide an extra CA certificate ++that may be needed for chain building in certificate validation. + +-CMS_get1_certs() returns all certificates in B. ++CMS_get1_certs() returns all certificates in I. + +-CMS_add0_crl() and CMS_add1_crl() add CRL B to B. CMS_get1_crls() +-returns any CRLs in B. ++CMS_add0_crl() and CMS_add1_crl() add CRL I to I. ++I must be of type signed data or (authenticated) enveloped data. ++For signed data, such a CRL may be used in certificate validation. ++It may be given both for inclusion when signing a CMS message ++and when verifying a signed CMS message. ++ ++CMS_get1_crls() returns all CRLs in I. + + =head1 NOTES + +-The CMS_ContentInfo structure B must be of type signed data or enveloped ++The CMS_ContentInfo structure I must be of type signed data or enveloped + data or an error will be returned. + +-For signed data certificates and CRLs are added to the B and +-B fields of SignedData structure. For enveloped data they are added to ++For signed data certificates and CRLs are added to the I and ++I fields of SignedData structure. For enveloped data they are added to + B. + +-As the B<0> implies CMS_add0_cert() adds B internally to B and it +-must not be freed up after the call as opposed to CMS_add1_cert() where B ++As the I<0> implies CMS_add0_cert() adds I internally to I and it ++must not be freed up after the call as opposed to CMS_add1_cert() where I + must be freed up. + + The same certificate or CRL must not be added to the same cms structure more +@@ -50,7 +58,7 @@ CMS_add0_cert(), CMS_add1_cert() and CMS_add0_crl() and CMS_add1_crl() return + + CMS_get1_certs() and CMS_get1_crls() return the STACK of certificates or CRLs + or NULL if there are none or an error occurs. The only error which will occur +-in practice is if the B type is invalid. ++in practice is if the I type is invalid. + + =head1 SEE ALSO + +@@ -60,7 +68,7 @@ L + + =head1 COPYRIGHT + +-Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2008-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/CMS_verify.pod b/vendor/openssl-src/openssl/doc/man3/CMS_verify.pod +index c7dbb6b6c..d7a423c30 100644 +--- a/vendor/openssl-src/openssl/doc/man3/CMS_verify.pod ++++ b/vendor/openssl-src/openssl/doc/man3/CMS_verify.pod +@@ -15,50 +15,58 @@ CMS_verify, CMS_get0_signers - verify a CMS SignedData structure + + =head1 DESCRIPTION + +-CMS_verify() verifies a CMS SignedData structure. B is the CMS_ContentInfo +-structure to verify. B is a set of certificates in which to search for +-the signing certificate(s). B is a trusted certificate store used for +-chain verification. B is the detached content if the content is not +-present in B. The content is written to B if it is not NULL. +- +-B is an optional set of flags, which can be used to modify the verify +-operation. +- +-CMS_get0_signers() retrieves the signing certificate(s) from B, it may only ++CMS_verify() is very similar to L. It verifies a ++B structure contained in a structure of type B. ++I points to the B structure to verify. ++The optional I parameter refers to a set of certificates ++in which to search for signing certificates. ++I may contain extra untrusted CA certificates that may be used for ++chain building as well as CRLs that may be used for certificate validation. ++I may be NULL or point to ++the trusted certificate store to use for chain verification. ++I refers to the signed data if the content is detached from I. ++Otherwise I should be NULL and the signed data must be in I. ++The content is written to the BIO I unless it is NULL. ++I is an optional set of flags, which can be used to modify the operation. ++ ++CMS_get0_signers() retrieves the signing certificate(s) from I, it may only + be called after a successful CMS_verify() operation. + + =head1 VERIFY PROCESS + + Normally the verify process proceeds as follows. + +-Initially some sanity checks are performed on B. The type of B must ++Initially some sanity checks are performed on I. The type of I must + be SignedData. There must be at least one signature on the data and if +-the content is detached B cannot be B. ++the content is detached I cannot be NULL. + + An attempt is made to locate all the signing certificate(s), first looking in +-the B parameter (if it is not NULL) and then looking in any +-certificates contained in the B structure itself. If any signing +-certificate cannot be located the operation fails. ++the I parameter (if it is not NULL) and then looking in any ++certificates contained in the I structure unless B is set. ++If any signing certificate cannot be located the operation fails. + +-Each signing certificate is chain verified using the B purpose and +-the supplied trusted certificate store. Any internal certificates in the message +-are used as untrusted CAs. If CRL checking is enabled in B any internal +-CRLs are used in addition to attempting to look them up in B. If any +-chain verify fails an error code is returned. ++Each signing certificate is chain verified using the I purpose and ++using the trusted certificate store I if supplied. ++Any internal certificates in the message, which may have been added using ++L, are used as untrusted CAs. ++If CRL checking is enabled in I and B is not set, ++any internal CRLs, which may have been added using L, ++are used in addition to attempting to look them up in I. ++If I is not NULL and any chain verify fails an error code is returned. + +-Finally the signed content is read (and written to B if it is not NULL) +-and the signature's checked. ++Finally the signed content is read (and written to I unless it is NULL) ++and the signature is checked. + +-If all signature's verify correctly then the function is successful. ++If all signatures verify correctly then the function is successful. + +-Any of the following flags (ored together) can be passed in the B ++Any of the following flags (ored together) can be passed in the I + parameter to change the default verify behaviour. + + If B is set the certificates in the message itself are not +-searched when locating the signing certificate(s). This means that all the +-signing certificates must be in the B parameter. ++searched when locating the signing certificate(s). ++This means that all the signing certificates must be in the I parameter. + +-If B is set and CRL checking is enabled in B then any ++If B is set and CRL checking is enabled in I then any + CRLs in the message itself are ignored. + + If the B flag is set MIME headers for type B are deleted +@@ -66,7 +74,7 @@ from the content. If the content is not of type B then an error is + returned. + + If B is set the signing certificates are not +-verified. ++chain verified. + + If B is set the signed attributes signature is not + verified. +@@ -77,20 +85,20 @@ If B is set then the content digest is not checked. + + One application of B is to only accept messages signed by + a small number of certificates. The acceptable certificates would be passed +-in the B parameter. In this case if the signer is not one of the +-certificates supplied in B then the verify will fail because the ++in the I parameter. In this case if the signer certificate is not one ++of the certificates supplied in I then the verify will fail because the + signer cannot be found. + + In some cases the standard techniques for looking up and validating + certificates are not appropriate: for example an application may wish to + lookup certificates in a database or perform customised verification. This +-can be achieved by setting and verifying the signers certificates manually ++can be achieved by setting and verifying the signer certificates manually + using the signed data utility functions. + + Care should be taken when modifying the default verify behaviour, for example + setting B will totally disable all content verification + and any modified content will be considered valid. This combination is however +-useful if one merely wishes to write the content to B and its validity ++useful if one merely wishes to write the content to I and its validity + is not considered important. + + Chain verification should arguably be performed using the signing time rather +@@ -100,8 +108,7 @@ timestamp). + + =head1 RETURN VALUES + +-CMS_verify() returns 1 for a successful verification and zero if an error +-occurred. ++CMS_verify() returns 1 for a successful verification and 0 if an error occurred. + + CMS_get0_signers() returns all signers or NULL if an error occurred. + +@@ -109,8 +116,8 @@ The error can be obtained from L + + =head1 BUGS + +-The trusted certificate store is not searched for the signing certificate, +-this is primarily due to the inadequacies of the current B ++The trusted certificate store is not searched for the signing certificate. ++This is primarily due to the inadequacies of the current B + functionality. + + The lack of single pass processing means that the signed content must all +@@ -118,11 +125,13 @@ be held in memory if it is not detached. + + =head1 SEE ALSO + ++L, L, L, ++L, + L, L + + =head1 COPYRIGHT + +-Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2008-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/EC_KEY_new.pod b/vendor/openssl-src/openssl/doc/man3/EC_KEY_new.pod +index 6507dc95c..2fdb4659b 100644 +--- a/vendor/openssl-src/openssl/doc/man3/EC_KEY_new.pod ++++ b/vendor/openssl-src/openssl/doc/man3/EC_KEY_new.pod +@@ -33,7 +33,7 @@ EC_KEY objects + const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); +- int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); ++ int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *priv_key); + const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +@@ -102,7 +102,9 @@ that it is valid. + The functions EC_KEY_get0_group(), EC_KEY_set_group(), + EC_KEY_get0_private_key(), EC_KEY_set_private_key(), EC_KEY_get0_public_key(), + and EC_KEY_set_public_key() get and set the EC_GROUP object, the private key, +-and the EC_POINT public key for the B respectively. ++and the EC_POINT public key for the B respectively. The function ++EC_KEY_set_private_key() accepts NULL as the priv_key argument to securely clear ++the private key component from the EC_KEY. + + The functions EC_KEY_get_conv_form() and EC_KEY_set_conv_form() get and set the + point_conversion_form for the B. For a description of +@@ -160,10 +162,14 @@ EC_KEY_copy() returns a pointer to the destination key, or NULL on error. + + EC_KEY_get0_engine() returns a pointer to an ENGINE, or NULL if it wasn't set. + +-EC_KEY_up_ref(), EC_KEY_set_group(), EC_KEY_set_private_key(), +-EC_KEY_set_public_key(), EC_KEY_precompute_mult(), EC_KEY_generate_key(), +-EC_KEY_check_key(), EC_KEY_set_public_key_affine_coordinates(), +-EC_KEY_oct2key() and EC_KEY_oct2priv() return 1 on success or 0 on error. ++EC_KEY_up_ref(), EC_KEY_set_group(), EC_KEY_set_public_key(), ++EC_KEY_precompute_mult(), EC_KEY_generate_key(), EC_KEY_check_key(), ++EC_KEY_set_public_key_affine_coordinates(), EC_KEY_oct2key() and ++EC_KEY_oct2priv() return 1 on success or 0 on error. ++ ++EC_KEY_set_private_key() returns 1 on success or 0 on error except when the ++priv_key argument is NULL, in that case it returns 0, for legacy compatibility, ++and should not be treated as an error. + + EC_KEY_get0_group() returns the EC_GROUP associated with the EC_KEY. + +@@ -184,7 +190,7 @@ L + + =head1 COPYRIGHT + +-Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2013-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/EVP_EncryptInit.pod b/vendor/openssl-src/openssl/doc/man3/EVP_EncryptInit.pod +index 392ce5dbc..a17459a06 100644 +--- a/vendor/openssl-src/openssl/doc/man3/EVP_EncryptInit.pod ++++ b/vendor/openssl-src/openssl/doc/man3/EVP_EncryptInit.pod +@@ -313,7 +313,7 @@ length. + EVP_CIPHER_CTX_set_padding() always returns 1. + + EVP_CIPHER_iv_length() and EVP_CIPHER_CTX_iv_length() return the IV +-length or zero if the cipher does not use an IV. ++length, zero if the cipher does not use an IV and a negative value on error. + + EVP_CIPHER_type() and EVP_CIPHER_CTX_type() return the NID of the cipher's + OBJECT IDENTIFIER or NID_undef if it has no defined OBJECT IDENTIFIER. +@@ -661,7 +661,7 @@ EVP_CIPHER_CTX_reset(). + + =head1 COPYRIGHT + +-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod b/vendor/openssl-src/openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod +index ae0a4bbf9..29702aa0b 100644 +--- a/vendor/openssl-src/openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod ++++ b/vendor/openssl-src/openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod +@@ -23,7 +23,7 @@ lh_TYPE_doall, lh_TYPE_doall_arg, lh_TYPE_error - dynamic hash table + + TYPE *lh_TYPE_insert(LHASH_OF(TYPE) *table, TYPE *data); + TYPE *lh_TYPE_delete(LHASH_OF(TYPE) *table, TYPE *data); +- TYPE *lh_retrieve(LHASH_OF(TYPE) *table, TYPE *data); ++ TYPE *lh_TYPE_retrieve(LHASH_OF(TYPE) *table, TYPE *data); + + void lh_TYPE_doall(LHASH_OF(TYPE) *table, OPENSSL_LH_DOALL_FUNC func); + void lh_TYPE_doall_arg(LHASH_OF(TYPE) *table, OPENSSL_LH_DOALL_FUNCARG func, +@@ -229,7 +229,7 @@ type checking. + + =head1 COPYRIGHT + +-Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/OPENSSL_init_crypto.pod b/vendor/openssl-src/openssl/doc/man3/OPENSSL_init_crypto.pod +index 3447f5f11..d01dba3d2 100644 +--- a/vendor/openssl-src/openssl/doc/man3/OPENSSL_init_crypto.pod ++++ b/vendor/openssl-src/openssl/doc/man3/OPENSSL_init_crypto.pod +@@ -81,7 +81,7 @@ B will be ignored. + With this option the library will automatically load and make available all + libcrypto digests. This option is a default option. Once selected subsequent + calls to OPENSSL_init_crypto() with the option +-B will be ignored. ++B will be ignored. + + =item OPENSSL_INIT_NO_ADD_ALL_CIPHERS + +@@ -264,7 +264,7 @@ and OPENSSL_INIT_free() functions were added in OpenSSL 1.1.0. + + =head1 COPYRIGHT + +-Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/PKCS7_sign.pod b/vendor/openssl-src/openssl/doc/man3/PKCS7_sign.pod +index 6fd54777d..11b626191 100644 +--- a/vendor/openssl-src/openssl/doc/man3/PKCS7_sign.pod ++++ b/vendor/openssl-src/openssl/doc/man3/PKCS7_sign.pod +@@ -13,29 +13,26 @@ PKCS7_sign - create a PKCS#7 signedData structure + + =head1 DESCRIPTION + +-PKCS7_sign() creates and returns a PKCS#7 signedData structure. B is +-the certificate to sign with, B is the corresponding private key. +-B is an optional additional set of certificates to include in the PKCS#7 +-structure (for example any intermediate CAs in the chain). ++PKCS7_sign() creates and returns a PKCS#7 signedData structure. ++I is the certificate to sign with, I is the corresponding ++private key. I is an optional set of extra certificates to include ++in the PKCS#7 structure (for example any intermediate CAs in the chain). + +-The data to be signed is read from BIO B. ++The data to be signed is read from BIO I. + +-B is an optional set of flags. ++I is an optional set of flags. + +-=head1 NOTES +- +-Any of the following flags (ored together) can be passed in the B +-parameter. ++Any of the following flags (ored together) can be passed in the I + + Many S/MIME clients expect the signed content to include valid MIME headers. If +-the B flag is set MIME headers for type B are prepended ++the B flag is set MIME headers for type C are prepended + to the data. + +-If B is set the signer's certificate will not be included in the +-PKCS7 structure, the signer's certificate must still be supplied in the +-B parameter though. This can reduce the size of the signature if the +-signers certificate can be obtained by other means: for example a previously +-signed message. ++If B is set the signer's certificate and the extra I ++will not be included in the PKCS7 structure. ++The signer's certificate must still be supplied in the I parameter ++though. This can reduce the size of the signatures if the signer's certificates ++can be obtained by other means: for example a previously signed message. + + The data being signed is included in the PKCS7 structure, unless + B is set in which case it is omitted. This is used for PKCS7 +@@ -59,7 +56,7 @@ these algorithms is disabled then it will not be included. + + If the flags B is set then the returned B structure is + just initialized ready to perform the signing operation. The signing is however +-B performed and the data to be signed is not read from the B ++B performed and the data to be signed is not read from the I + parameter. Signing is deferred until after the data has been written. In this + way data can be signed in a single pass. + +@@ -80,17 +77,17 @@ BIO_new_PKCS7(). + If a signer is specified it will use the default digest for the signing + algorithm. This is B for both RSA and DSA keys. + +-The B, B and B parameters can all be +-B if the B flag is set. One or more signers can be added ++The I, I and I parameters can all be ++NULL if the B flag is set. One or more signers can be added + using the function PKCS7_sign_add_signer(). PKCS7_final() must also be + called to finalize the structure if streaming is not enabled. Alternative + signing digests can also be specified using this method. + +-If B and B are NULL then a certificates only ++If I and I are NULL then a certificates only + PKCS#7 structure is output. + +-In versions of OpenSSL before 1.0.0 the B and B parameters must +-B be NULL. ++In versions of OpenSSL before 1.0.0 the I and I parameters must ++not be NULL. + + =head1 BUGS + +@@ -107,14 +104,14 @@ L, L + + =head1 HISTORY + +-The B flag, and the ability for B, B, +-and B parameters to be B were added in OpenSSL 1.0.0. ++The B flag, and the ability for I, I, ++and I parameters to be NULL were added in OpenSSL 1.0.0. + + The B flag was added in OpenSSL 1.0.0. + + =head1 COPYRIGHT + +-Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/PKCS7_sign_add_signer.pod b/vendor/openssl-src/openssl/doc/man3/PKCS7_sign_add_signer.pod +index d4a27a2f6..0bbd6d8dc 100644 +--- a/vendor/openssl-src/openssl/doc/man3/PKCS7_sign_add_signer.pod ++++ b/vendor/openssl-src/openssl/doc/man3/PKCS7_sign_add_signer.pod +@@ -2,7 +2,8 @@ + + =head1 NAME + +-PKCS7_sign_add_signer - add a signer PKCS7 signed data structure ++PKCS7_sign_add_signer, ++PKCS7_add_certificate, PKCS7_add_crl - add information to PKCS7 structure + + =head1 SYNOPSIS + +@@ -10,22 +11,22 @@ PKCS7_sign_add_signer - add a signer PKCS7 signed data structure + + PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, X509 *signcert, + EVP_PKEY *pkey, const EVP_MD *md, int flags); +- ++ int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); ++ int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); + + =head1 DESCRIPTION + +-PKCS7_sign_add_signer() adds a signer with certificate B and private +-key B using message digest B to a PKCS7 signed data structure +-B. ++PKCS7_sign_add_signer() adds a signer with certificate I and private ++key I using message digest I to a PKCS7 signed data structure I. + +-The PKCS7 structure should be obtained from an initial call to PKCS7_sign() +-with the flag B set or in the case or re-signing a valid PKCS7 ++The B structure should be obtained from an initial call to PKCS7_sign() ++with the flag B set or in the case or re-signing a valid PKCS#7 + signed data structure. + +-If the B parameter is B then the default digest for the public ++If the I parameter is NULL then the default digest for the public + key algorithm will be used. + +-Unless the B flag is set the returned PKCS7 structure ++Unless the B flag is set the returned B structure + is not complete and must be finalized either by streaming (if applicable) or + a call to PKCS7_final(). + +@@ -37,13 +38,13 @@ signed data structure where the simpler PKCS7_sign() function defaults are + not appropriate. For example if multiple signers or non default digest + algorithms are needed. + +-Any of the following flags (ored together) can be passed in the B ++Any of the following flags (ored together) can be passed in the I + parameter. + + If B is set then an attempt is made to copy the content +-digest value from the PKCS7 structure: to add a signer to an existing structure. ++digest value from the B structure: to add a signer to an existing structure. + An error occurs if a matching digest value cannot be found to copy. The +-returned PKCS7 structure will be valid and finalized when this flag is set. ++returned B structure will be valid and finalized when this flag is set. + + If B is set in addition to B then the + B structure will not be finalized so additional attributes +@@ -51,8 +52,8 @@ can be added. In this case an explicit call to PKCS7_SIGNER_INFO_sign() is + needed to finalize it. + + If B is set the signer's certificate will not be included in the +-PKCS7 structure, the signer's certificate must still be supplied in the +-B parameter though. This can reduce the size of the signature if the ++B structure, the signer's certificate must still be supplied in the ++I parameter though. This can reduce the size of the signature if the + signers certificate can be obtained by other means: for example a previously + signed message. + +@@ -66,20 +67,32 @@ If present the SMIMECapabilities attribute indicates support for the following + algorithms: triple DES, 128 bit RC2, 64 bit RC2, DES and 40 bit RC2. If any of + these algorithms is disabled then it will not be included. + +- +-PKCS7_sign_add_signers() returns an internal pointer to the PKCS7_SIGNER_INFO +-structure just added, this can be used to set additional attributes ++PKCS7_sign_add_signers() returns an internal pointer to the B ++structure just added, which can be used to set additional attributes + before it is finalized. + ++PKCS7_add_certificate() adds to the B structure I the certificate ++I, which may be an end-entity (signer) certificate ++or a CA certificate useful for chain building. ++This is done internally by L and similar signing functions. ++It may have to be used before calling L ++in order to provide any missing certificate(s) needed for verification. ++ ++PKCS7_add_crl() adds the CRL I to the B structure I. ++This may be called to provide certificate status information ++to be included when signing or to use when verifying the B structure. ++ + =head1 RETURN VALUES + +-PKCS7_sign_add_signers() returns an internal pointer to the PKCS7_SIGNER_INFO ++PKCS7_sign_add_signers() returns an internal pointer to the B + structure just added or NULL if an error occurs. + ++PKCS7_add_certificate() and PKCS7_add_crl() return 1 on success, 0 on error. ++ + =head1 SEE ALSO + +-L, L, +-L, ++L, L, ++L, L + + =head1 HISTORY + +@@ -87,7 +100,7 @@ The PPKCS7_sign_add_signer() function was added in OpenSSL 1.0.0. + + =head1 COPYRIGHT + +-Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2007-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/PKCS7_verify.pod b/vendor/openssl-src/openssl/doc/man3/PKCS7_verify.pod +index 9e238c565..4418e5489 100644 +--- a/vendor/openssl-src/openssl/doc/man3/PKCS7_verify.pod ++++ b/vendor/openssl-src/openssl/doc/man3/PKCS7_verify.pod +@@ -15,64 +15,76 @@ PKCS7_verify, PKCS7_get0_signers - verify a PKCS#7 signedData structure + + =head1 DESCRIPTION + +-PKCS7_verify() verifies a PKCS#7 signedData structure. B is the PKCS7 +-structure to verify. B is a set of certificates in which to search for +-the signer's certificate. B is a trusted certificate store (used for +-chain verification). B is the signed data if the content is not +-present in B (that is it is detached). The content is written to B +-if it is not NULL. +- +-B is an optional set of flags, which can be used to modify the verify +-operation. +- +-PKCS7_get0_signers() retrieves the signer's certificates from B, it does +-B check their validity or whether any signatures are valid. The B +-and B parameters have the same meanings as in PKCS7_verify(). ++PKCS7_verify() is very similar to L. ++It verifies a PKCS#7 signedData structure given in I. ++The optional I parameter refers to a set of certificates ++in which to search for signer's certificates. ++I may contain extra untrusted CA certificates that may be used for ++chain building as well as CRLs that may be used for certificate validation. ++I may be NULL or point to ++the trusted certificate store to use for chain verification. ++I refers to the signed data if the content is detached from I. ++Otherwise I should be NULL, and then the signed data must be in I. ++The content is written to the BIO I unless it is NULL. ++I is an optional set of flags, which can be used to modify the operation. ++ ++PKCS7_get0_signers() retrieves the signer's certificates from I, it does ++B check their validity or whether any signatures are valid. The I ++and I parameters have the same meanings as in PKCS7_verify(). + + =head1 VERIFY PROCESS + + Normally the verify process proceeds as follows. + +-Initially some sanity checks are performed on B. The type of B must +-be signedData. There must be at least one signature on the data and if +-the content is detached B cannot be B. If the content is +-not detached and B is not B, then the structure has both ++Initially some sanity checks are performed on I. The type of I must ++be SignedData. There must be at least one signature on the data and if ++the content is detached I cannot be NULL. If the content is ++not detached and I is not NULL then the structure has both + embedded and external content. To treat this as an error, use the flag + B. + The default behavior allows this, for compatibility with older + versions of OpenSSL. + + An attempt is made to locate all the signer's certificates, first looking in +-the B parameter (if it is not B) and then looking in any certificates +-contained in the B structure itself. If any signer's certificates cannot be +-located the operation fails. ++the I parameter (if it is not NULL). Then they are looked up in any ++certificates contained in the I structure unless B is set. ++If any signer's certificates cannot be located the operation fails. + + Each signer's certificate is chain verified using the B purpose and +-the supplied trusted certificate store. Any internal certificates in the message +-are used as untrusted CAs. If any chain verify fails an error code is returned. ++using the trusted certificate store I if supplied. ++Any internal certificates in the message, which may have been added using ++L, are used as untrusted CAs unless B ++is set. ++If CRL checking is enabled in I and B is not set, ++any internal CRLs, which may have been added using L, ++are used in addition to attempting to look them up in I. ++If I is not NULL and any chain verify fails an error code is returned. + +-Finally the signed content is read (and written to B is it is not NULL) and +-the signature's checked. ++Finally the signed content is read (and written to I unless it is NULL) ++and the signature is checked. + +-If all signature's verify correctly then the function is successful. ++If all signatures verify correctly then the function is successful. + +-Any of the following flags (ored together) can be passed in the B parameter +-to change the default verify behaviour. Only the flag B is +-meaningful to PKCS7_get0_signers(). ++Any of the following flags (ored together) can be passed in the I ++parameter to change the default verify behaviour. ++Only the flag B is meaningful to PKCS7_get0_signers(). + + If B is set the certificates in the message itself are not +-searched when locating the signer's certificate. This means that all the signers +-certificates must be in the B parameter. ++searched when locating the signer's certificates. ++This means that all the signer's certificates must be in the I parameter. ++ ++If B is set and CRL checking is enabled in I then any ++CRLs in the message itself are ignored. + +-If the B flag is set MIME headers for type B are deleted +-from the content. If the content is not of type B then an error is ++If the B flag is set MIME headers for type C are deleted ++from the content. If the content is not of type C then an error is + returned. + + If B is set the signer's certificates are not chain verified. + + If B is set then the certificates contained in the message are + not used as untrusted CAs. This means that the whole verify chain (apart from +-the signer's certificate) must be contained in the trusted store. ++the signer's certificates) must be contained in the trusted store. + + If B is set then the signatures on the data are not checked. + +@@ -80,46 +92,46 @@ If B is set then the signatures on the data are not checked. + + One application of B is to only accept messages signed by + a small number of certificates. The acceptable certificates would be passed +-in the B parameter. In this case if the signer is not one of the +-certificates supplied in B then the verify will fail because the ++in the I parameter. In this case if the signer's certificate is not one ++of the certificates supplied in I then the verify will fail because the + signer cannot be found. + + Care should be taken when modifying the default verify behaviour, for example + setting B will totally disable all verification + and any signed message will be considered valid. This combination is however +-useful if one merely wishes to write the content to B and its validity ++useful if one merely wishes to write the content to I and its validity + is not considered important. + +-Chain verification should arguably be performed using the signing time rather ++Chain verification should arguably be performed using the signing time rather + than the current time. However, since the signing time is supplied by the + signer it cannot be trusted without additional evidence (such as a trusted + timestamp). + + =head1 RETURN VALUES + +-PKCS7_verify() returns one for a successful verification and zero +-if an error occurs. ++PKCS7_verify() returns 1 for a successful verification and 0 if an error occurs. + +-PKCS7_get0_signers() returns all signers or B if an error occurred. ++PKCS7_get0_signers() returns all signers or NULL if an error occurred. + +-The error can be obtained from L ++The error can be obtained from L. + + =head1 BUGS + +-The trusted certificate store is not searched for the signers certificate, +-this is primarily due to the inadequacies of the current B ++The trusted certificate store is not searched for the signer's certificates. ++This is primarily due to the inadequacies of the current B + functionality. + +-The lack of single pass processing and need to hold all data in memory as +-mentioned in PKCS7_sign() also applies to PKCS7_verify(). ++The lack of single pass processing means that the signed content must all ++be held in memory if it is not detached. + + =head1 SEE ALSO + ++L, L, L, + L, L + + =head1 COPYRIGHT + +-Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. ++Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved. + + Licensed under the OpenSSL license (the "License"). You may not use + this file except in compliance with the License. You can obtain a copy +diff --git a/vendor/openssl-src/openssl/doc/man3/X509_STORE_CTX_new.pod b/vendor/openssl-src/openssl/doc/man3/X509_STORE_CTX_new.pod +index b8024dc4a..bf16c1ece 100644 +--- a/vendor/openssl-src/openssl/doc/man3/X509_STORE_CTX_new.pod ++++ b/vendor/openssl-src/openssl/doc/man3/X509_STORE_CTX_new.pod +@@ -175,14 +175,18 @@ It should not normally be necessary for end user applications to call + X509_STORE_CTX_purpose_inherit() directly. Typically applications should call + X509_STORE_CTX_set_purpose() or X509_STORE_CTX_set_trust() instead. Using this + function it is possible to set the purpose and trust values for the I at +-the same time. The I and I arguments can have the same ++the same time. ++Both I and its internal verification parameter pointer must not be NULL. ++The I and I arguments can have the same + purpose values as described for X509_STORE_CTX_set_purpose() above. The I + argument can have the same trust values as described in + X509_STORE_CTX_set_trust() above. Any of the I, I or + I values may also have the value 0 to indicate that the supplied + parameter should be ignored. After calling this function the purpose to be used +-for verification is set from the I argument, and the trust is set from +-the I argument. If I is 0 then the trust value will be set from ++for verification is set from the I argument unless the purpose was ++already set in I before, and the trust is set from the I argument ++unless the trust was already set in I before. ++If I is 0 then the trust value will be set from + the default trust value for I. If the default trust value for the + purpose is I and I is 0 then the default trust value + associated with the I value is used for the trust setting instead. +diff --git a/vendor/openssl-src/openssl/engines/asm/e_padlock-x86.pl b/vendor/openssl-src/openssl/engines/asm/e_padlock-x86.pl +index 5b097ce3e..7d5c92d98 100644 +--- a/vendor/openssl-src/openssl/engines/asm/e_padlock-x86.pl ++++ b/vendor/openssl-src/openssl/engines/asm/e_padlock-x86.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/env perl +-# Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 2011-2023 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -116,6 +116,8 @@ $chunk="ebx"; + &function_begin_B("padlock_key_bswap"); + &mov ("edx",&wparam(0)); + &mov ("ecx",&DWP(240,"edx")); ++ &inc ("ecx"); ++ &shl ("ecx",2); + &set_label("bswap_loop"); + &mov ("eax",&DWP(0,"edx")); + &bswap ("eax"); +diff --git a/vendor/openssl-src/openssl/engines/asm/e_padlock-x86_64.pl b/vendor/openssl-src/openssl/engines/asm/e_padlock-x86_64.pl +index 09b0aaa48..f60bec1e7 100644 +--- a/vendor/openssl-src/openssl/engines/asm/e_padlock-x86_64.pl ++++ b/vendor/openssl-src/openssl/engines/asm/e_padlock-x86_64.pl +@@ -1,5 +1,5 @@ + #! /usr/bin/env perl +-# Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. ++# Copyright 2011-2023 The OpenSSL Project Authors. All Rights Reserved. + # + # Licensed under the OpenSSL license (the "License"). You may not use + # this file except in compliance with the License. You can obtain a copy +@@ -92,6 +92,8 @@ padlock_capability: + .align 16 + padlock_key_bswap: + mov 240($arg1),%edx ++ inc %edx ++ shl \$2,%edx + .Lbswap_loop: + mov ($arg1),%eax + bswap %eax +diff --git a/vendor/openssl-src/openssl/include/crypto/bn.h b/vendor/openssl-src/openssl/include/crypto/bn.h +index 60afda1da..9f866ed71 100644 +--- a/vendor/openssl-src/openssl/include/crypto/bn.h ++++ b/vendor/openssl-src/openssl/include/crypto/bn.h +@@ -1,5 +1,5 @@ + /* +- * Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2014-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -86,5 +86,10 @@ int bn_lshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n); + int bn_rshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n); + int bn_div_fixed_top(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, + const BIGNUM *d, BN_CTX *ctx); ++int ossl_bn_rsa_do_unblind(const BIGNUM *intermediate, ++ const BN_BLINDING *blinding, ++ const BIGNUM *possible_arg2, ++ const BIGNUM *to_mod, BN_CTX *ctx, ++ unsigned char *buf, int num); + + #endif +diff --git a/vendor/openssl-src/openssl/include/openssl/bnerr.h b/vendor/openssl-src/openssl/include/openssl/bnerr.h +index 9f3c7cfaa..5c83777f9 100644 +--- a/vendor/openssl-src/openssl/include/openssl/bnerr.h ++++ b/vendor/openssl-src/openssl/include/openssl/bnerr.h +@@ -1,6 +1,6 @@ + /* + * Generated by util/mkerr.pl DO NOT EDIT +- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -72,6 +72,7 @@ int ERR_load_BN_strings(void); + # define BN_F_BN_SET_WORDS 144 + # define BN_F_BN_STACK_PUSH 148 + # define BN_F_BN_USUB 115 ++# define BN_F_OSSL_BN_RSA_DO_UNBLIND 151 + + /* + * BN reason codes. +diff --git a/vendor/openssl-src/openssl/include/openssl/cmserr.h b/vendor/openssl-src/openssl/include/openssl/cmserr.h +index 7dbc13dc9..d589f592c 100644 +--- a/vendor/openssl-src/openssl/include/openssl/cmserr.h ++++ b/vendor/openssl-src/openssl/include/openssl/cmserr.h +@@ -187,6 +187,7 @@ int ERR_load_CMS_strings(void); + # define CMS_R_UNKNOWN_DIGEST_ALGORITHM 149 + # define CMS_R_UNKNOWN_ID 150 + # define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151 ++# define CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM 194 + # define CMS_R_UNSUPPORTED_CONTENT_TYPE 152 + # define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153 + # define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179 +diff --git a/vendor/openssl-src/openssl/include/openssl/opensslv.h b/vendor/openssl-src/openssl/include/openssl/opensslv.h +index fec5f5796..7b6c212fa 100644 +--- a/vendor/openssl-src/openssl/include/openssl/opensslv.h ++++ b/vendor/openssl-src/openssl/include/openssl/opensslv.h +@@ -39,8 +39,8 @@ extern "C" { + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +-# define OPENSSL_VERSION_NUMBER 0x1010111fL +-# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1q 5 Jul 2022" ++# define OPENSSL_VERSION_NUMBER 0x1010114fL ++# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1t 7 Feb 2023" + + /*- + * The macros below are to be used for shared library (.so, .dll, ...) +diff --git a/vendor/openssl-src/openssl/include/openssl/x509v3.h b/vendor/openssl-src/openssl/include/openssl/x509v3.h +index 90fa3592c..3a4f04c18 100644 +--- a/vendor/openssl-src/openssl/include/openssl/x509v3.h ++++ b/vendor/openssl-src/openssl/include/openssl/x509v3.h +@@ -1,5 +1,5 @@ + /* +- * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -136,7 +136,7 @@ typedef struct GENERAL_NAME_st { + OTHERNAME *otherName; /* otherName */ + ASN1_IA5STRING *rfc822Name; + ASN1_IA5STRING *dNSName; +- ASN1_TYPE *x400Address; ++ ASN1_STRING *x400Address; + X509_NAME *directoryName; + EDIPARTYNAME *ediPartyName; + ASN1_IA5STRING *uniformResourceIdentifier; +diff --git a/vendor/openssl-src/openssl/ssl/packet.c b/vendor/openssl-src/openssl/ssl/packet.c +index 1ddde969f..d6357495f 100644 +--- a/vendor/openssl-src/openssl/ssl/packet.c ++++ b/vendor/openssl-src/openssl/ssl/packet.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -161,7 +161,7 @@ int WPACKET_set_flags(WPACKET *pkt, unsigned int flags) + } + + /* Store the |value| of length |len| at location |data| */ +-static int put_value(unsigned char *data, size_t value, size_t len) ++static int put_value(unsigned char *data, uint64_t value, size_t len) + { + for (data += len - 1; len > 0; len--) { + *data = (unsigned char)(value & 0xff); +@@ -306,12 +306,12 @@ int WPACKET_start_sub_packet(WPACKET *pkt) + return WPACKET_start_sub_packet_len__(pkt, 0); + } + +-int WPACKET_put_bytes__(WPACKET *pkt, unsigned int val, size_t size) ++int WPACKET_put_bytes__(WPACKET *pkt, uint64_t val, size_t size) + { + unsigned char *data; + + /* Internal API, so should not fail */ +- if (!ossl_assert(size <= sizeof(unsigned int)) ++ if (!ossl_assert(size <= sizeof(uint64_t)) + || !WPACKET_allocate_bytes(pkt, size, &data) + || !put_value(data, val, size)) + return 0; +diff --git a/vendor/openssl-src/openssl/ssl/packet_local.h b/vendor/openssl-src/openssl/ssl/packet_local.h +index 1b6c2fb9b..5b1d3fe56 100644 +--- a/vendor/openssl-src/openssl/ssl/packet_local.h ++++ b/vendor/openssl-src/openssl/ssl/packet_local.h +@@ -1,5 +1,5 @@ + /* +- * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -227,6 +227,28 @@ __owur static ossl_inline int PACKET_peek_net_4(const PACKET *pkt, + return 1; + } + ++/* ++ * Peek ahead at 8 bytes in network order from |pkt| and store the value in ++ * |*data| ++ */ ++__owur static ossl_inline int PACKET_peek_net_8(const PACKET *pkt, ++ uint64_t *data) ++{ ++ if (PACKET_remaining(pkt) < 8) ++ return 0; ++ ++ *data = ((uint64_t)(*pkt->curr)) << 56; ++ *data |= ((uint64_t)(*(pkt->curr + 1))) << 48; ++ *data |= ((uint64_t)(*(pkt->curr + 2))) << 40; ++ *data |= ((uint64_t)(*(pkt->curr + 3))) << 32; ++ *data |= ((uint64_t)(*(pkt->curr + 4))) << 24; ++ *data |= ((uint64_t)(*(pkt->curr + 5))) << 16; ++ *data |= ((uint64_t)(*(pkt->curr + 6))) << 8; ++ *data |= *(pkt->curr + 7); ++ ++ return 1; ++} ++ + /* Equivalent of n2l */ + /* Get 4 bytes in network order from |pkt| and store the value in |*data| */ + __owur static ossl_inline int PACKET_get_net_4(PACKET *pkt, unsigned long *data) +@@ -250,6 +272,17 @@ __owur static ossl_inline int PACKET_get_net_4_len(PACKET *pkt, size_t *data) + + return ret; + } ++ ++/* Get 8 bytes in network order from |pkt| and store the value in |*data| */ ++__owur static ossl_inline int PACKET_get_net_8(PACKET *pkt, uint64_t *data) ++{ ++ if (!PACKET_peek_net_8(pkt, data)) ++ return 0; ++ ++ packet_forward(pkt, 8); ++ ++ return 1; ++} + + /* Peek ahead at 1 byte from |pkt| and store the value in |*data| */ + __owur static ossl_inline int PACKET_peek_1(const PACKET *pkt, +@@ -808,7 +841,7 @@ int WPACKET_sub_reserve_bytes__(WPACKET *pkt, size_t len, + * 1 byte will fail. Don't call this directly. Use the convenience macros below + * instead. + */ +-int WPACKET_put_bytes__(WPACKET *pkt, unsigned int val, size_t bytes); ++int WPACKET_put_bytes__(WPACKET *pkt, uint64_t val, size_t bytes); + + /* + * Convenience macros for calling WPACKET_put_bytes with different +@@ -822,6 +855,8 @@ int WPACKET_put_bytes__(WPACKET *pkt, unsigned int val, size_t bytes); + WPACKET_put_bytes__((pkt), (val), 3) + #define WPACKET_put_bytes_u32(pkt, val) \ + WPACKET_put_bytes__((pkt), (val), 4) ++#define WPACKET_put_bytes_u64(pkt, val) \ ++ WPACKET_put_bytes__((pkt), (val), 8) + + /* Set a maximum size that we will not allow the WPACKET to grow beyond */ + int WPACKET_set_max_size(WPACKET *pkt, size_t maxsize); +diff --git a/vendor/openssl-src/openssl/ssl/record/rec_layer_s3.c b/vendor/openssl-src/openssl/ssl/record/rec_layer_s3.c +index 8249b4ace..1db1712a0 100644 +--- a/vendor/openssl-src/openssl/ssl/record/rec_layer_s3.c ++++ b/vendor/openssl-src/openssl/ssl/record/rec_layer_s3.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -16,6 +16,7 @@ + #include + #include "record_local.h" + #include "../packet_local.h" ++#include "internal/cryptlib.h" + + #if defined(OPENSSL_SMALL_FOOTPRINT) || \ + !( defined(AESNI_ASM) && ( \ +@@ -115,10 +116,22 @@ size_t ssl3_pending(const SSL *s) + if (s->rlayer.rstate == SSL_ST_READ_BODY) + return 0; + ++ /* Take into account DTLS buffered app data */ ++ if (SSL_IS_DTLS(s)) { ++ DTLS1_RECORD_DATA *rdata; ++ pitem *item, *iter; ++ ++ iter = pqueue_iterator(s->rlayer.d->buffered_app_data.q); ++ while ((item = pqueue_next(&iter)) != NULL) { ++ rdata = item->data; ++ num += rdata->rrec.length; ++ } ++ } ++ + for (i = 0; i < RECORD_LAYER_get_numrpipes(&s->rlayer); i++) { + if (SSL3_RECORD_get_type(&s->rlayer.rrec[i]) + != SSL3_RT_APPLICATION_DATA) +- return 0; ++ return num; + num += SSL3_RECORD_get_length(&s->rlayer.rrec[i]); + } + +@@ -971,11 +984,14 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf, + } + + /* +- * Reserve some bytes for any growth that may occur during encryption. +- * This will be at most one cipher block or the tag length if using +- * AEAD. SSL_RT_MAX_CIPHER_BLOCK_SIZE covers either case. +- */ +- if (!WPACKET_reserve_bytes(thispkt, SSL_RT_MAX_CIPHER_BLOCK_SIZE, ++ * Reserve some bytes for any growth that may occur during encryption. If ++ * we are adding the MAC independently of the cipher algorithm, then the ++ * max encrypted overhead does not need to include an allocation for that ++ * MAC ++ */ ++ if (!WPACKET_reserve_bytes(thispkt, ++ SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD ++ - mac_size, + NULL) + /* + * We also need next the amount of bytes written to this +@@ -1025,6 +1041,9 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf, + + /* Allocate bytes for the encryption overhead */ + if (!WPACKET_get_length(thispkt, &origlen) ++ /* Check we allowed enough room for the encryption growth */ ++ || !ossl_assert(origlen + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD ++ - mac_size >= thiswr->length) + /* Encryption should never shrink the data! */ + || origlen > thiswr->length + || (thiswr->length > origlen +diff --git a/vendor/openssl-src/openssl/ssl/record/ssl3_buffer.c b/vendor/openssl-src/openssl/ssl/record/ssl3_buffer.c +index b9ba25e0c..fa597c274 100644 +--- a/vendor/openssl-src/openssl/ssl/record/ssl3_buffer.c ++++ b/vendor/openssl-src/openssl/ssl/record/ssl3_buffer.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -97,11 +97,16 @@ int ssl3_setup_write_buffer(SSL *s, size_t numwpipes, size_t len) + #endif + + len = ssl_get_max_send_fragment(s) +- + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD + headerlen + align; ++ + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD + headerlen + align ++ + SSL_RT_MAX_CIPHER_BLOCK_SIZE /* Explicit IV allowance */; + #ifndef OPENSSL_NO_COMP + if (ssl_allow_compression(s)) + len += SSL3_RT_MAX_COMPRESSED_OVERHEAD; + #endif ++ /* ++ * We don't need to add an allowance for eivlen here since empty ++ * fragments only occur when we don't have an explicit IV ++ */ + if (!(s->options & SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS)) + len += headerlen + align + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD; + } +diff --git a/vendor/openssl-src/openssl/ssl/ssl_ciph.c b/vendor/openssl-src/openssl/ssl/ssl_ciph.c +index 55f919fcd..a3ca5294b 100644 +--- a/vendor/openssl-src/openssl/ssl/ssl_ciph.c ++++ b/vendor/openssl-src/openssl/ssl/ssl_ciph.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * +@@ -1026,9 +1026,7 @@ static int ssl_cipher_process_rulestr(const char *rule_str, + * alphanumeric, so we call this an error. + */ + SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR, SSL_R_INVALID_COMMAND); +- retval = found = 0; +- l++; +- break; ++ return 0; + } + + if (rule == CIPHER_SPECIAL) { +diff --git a/vendor/openssl-src/openssl/ssl/ssl_lib.c b/vendor/openssl-src/openssl/ssl/ssl_lib.c +index 25a1a4478..47adc3211 100644 +--- a/vendor/openssl-src/openssl/ssl/ssl_lib.c ++++ b/vendor/openssl-src/openssl/ssl/ssl_lib.c +@@ -1510,12 +1510,26 @@ int SSL_has_pending(const SSL *s) + { + /* + * Similar to SSL_pending() but returns a 1 to indicate that we have +- * unprocessed data available or 0 otherwise (as opposed to the number of +- * bytes available). Unlike SSL_pending() this will take into account +- * read_ahead data. A 1 return simply indicates that we have unprocessed +- * data. That data may not result in any application data, or we may fail +- * to parse the records for some reason. ++ * processed or unprocessed data available or 0 otherwise (as opposed to the ++ * number of bytes available). Unlike SSL_pending() this will take into ++ * account read_ahead data. A 1 return simply indicates that we have data. ++ * That data may not result in any application data, or we may fail to parse ++ * the records for some reason. + */ ++ ++ /* Check buffered app data if any first */ ++ if (SSL_IS_DTLS(s)) { ++ DTLS1_RECORD_DATA *rdata; ++ pitem *item, *iter; ++ ++ iter = pqueue_iterator(s->rlayer.d->buffered_app_data.q); ++ while ((item = pqueue_next(&iter)) != NULL) { ++ rdata = item->data; ++ if (rdata->rrec.length > 0) ++ return 1; ++ } ++ } ++ + if (RECORD_LAYER_processed_read_pending(&s->rlayer)) + return 1; + +diff --git a/vendor/openssl-src/openssl/ssl/ssl_rsa.c b/vendor/openssl-src/openssl/ssl/ssl_rsa.c +index 6457c0c0e..2df07bea6 100644 +--- a/vendor/openssl-src/openssl/ssl/ssl_rsa.c ++++ b/vendor/openssl-src/openssl/ssl/ssl_rsa.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -727,6 +727,34 @@ static int serverinfoex_srv_parse_cb(SSL *s, unsigned int ext_type, + return 1; + } + ++static size_t extension_contextoff(unsigned int version) ++{ ++ return version == SSL_SERVERINFOV1 ? 4 : 0; ++} ++ ++static size_t extension_append_length(unsigned int version, size_t extension_length) ++{ ++ return extension_length + extension_contextoff(version); ++} ++ ++static void extension_append(unsigned int version, ++ const unsigned char *extension, ++ const size_t extension_length, ++ unsigned char *serverinfo) ++{ ++ const size_t contextoff = extension_contextoff(version); ++ ++ if (contextoff > 0) { ++ /* We know this only uses the last 2 bytes */ ++ serverinfo[0] = 0; ++ serverinfo[1] = 0; ++ serverinfo[2] = (SYNTHV1CONTEXT >> 8) & 0xff; ++ serverinfo[3] = SYNTHV1CONTEXT & 0xff; ++ } ++ ++ memcpy(serverinfo + contextoff, extension, extension_length); ++} ++ + static int serverinfo_srv_parse_cb(SSL *s, unsigned int ext_type, + const unsigned char *in, + size_t inlen, int *al, void *arg) +@@ -842,12 +870,36 @@ int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length) + { +- unsigned char *new_serverinfo; ++ unsigned char *new_serverinfo = NULL; + + if (ctx == NULL || serverinfo == NULL || serverinfo_length == 0) { + SSLerr(SSL_F_SSL_CTX_USE_SERVERINFO_EX, ERR_R_PASSED_NULL_PARAMETER); + return 0; + } ++ if (version == SSL_SERVERINFOV1) { ++ /* ++ * Convert serverinfo version v1 to v2 and call yourself recursively ++ * over the converted serverinfo. ++ */ ++ const size_t sinfo_length = extension_append_length(SSL_SERVERINFOV1, ++ serverinfo_length); ++ unsigned char *sinfo; ++ int ret; ++ ++ sinfo = OPENSSL_malloc(sinfo_length); ++ if (sinfo == NULL) { ++ SSLerr(SSL_F_SSL_CTX_USE_SERVERINFO_EX, ERR_R_MALLOC_FAILURE); ++ return 0; ++ } ++ ++ extension_append(SSL_SERVERINFOV1, serverinfo, serverinfo_length, sinfo); ++ ++ ret = SSL_CTX_use_serverinfo_ex(ctx, SSL_SERVERINFOV2, sinfo, ++ sinfo_length); ++ ++ OPENSSL_free(sinfo); ++ return ret; ++ } + if (!serverinfo_process_buffer(version, serverinfo, serverinfo_length, + NULL)) { + SSLerr(SSL_F_SSL_CTX_USE_SERVERINFO_EX, SSL_R_INVALID_SERVERINFO_DATA); +@@ -899,7 +951,7 @@ int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file) + char namePrefix2[] = "SERVERINFOV2 FOR "; + int ret = 0; + BIO *bin = NULL; +- size_t num_extensions = 0, contextoff = 0; ++ size_t num_extensions = 0; + + if (ctx == NULL || file == NULL) { + SSLerr(SSL_F_SSL_CTX_USE_SERVERINFO_FILE, ERR_R_PASSED_NULL_PARAMETER); +@@ -918,6 +970,7 @@ int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file) + + for (num_extensions = 0;; num_extensions++) { + unsigned int version; ++ size_t append_length; + + if (PEM_read_bio(bin, &name, &header, &extension, &extension_length) + == 0) { +@@ -962,11 +1015,6 @@ int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file) + SSLerr(SSL_F_SSL_CTX_USE_SERVERINFO_FILE, SSL_R_BAD_DATA); + goto end; + } +- /* +- * File does not have a context value so we must take account of +- * this later. +- */ +- contextoff = 4; + } else { + /* 8 byte header: 4 bytes context, 2 bytes type, 2 bytes len */ + if (extension_length < 8 +@@ -977,25 +1025,16 @@ int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file) + } + } + /* Append the decoded extension to the serverinfo buffer */ +- tmp = OPENSSL_realloc(serverinfo, serverinfo_length + extension_length +- + contextoff); ++ append_length = extension_append_length(version, extension_length); ++ tmp = OPENSSL_realloc(serverinfo, serverinfo_length + append_length); + if (tmp == NULL) { + SSLerr(SSL_F_SSL_CTX_USE_SERVERINFO_FILE, ERR_R_MALLOC_FAILURE); + goto end; + } + serverinfo = tmp; +- if (contextoff > 0) { +- unsigned char *sinfo = serverinfo + serverinfo_length; +- +- /* We know this only uses the last 2 bytes */ +- sinfo[0] = 0; +- sinfo[1] = 0; +- sinfo[2] = (SYNTHV1CONTEXT >> 8) & 0xff; +- sinfo[3] = SYNTHV1CONTEXT & 0xff; +- } +- memcpy(serverinfo + serverinfo_length + contextoff, +- extension, extension_length); +- serverinfo_length += extension_length + contextoff; ++ extension_append(version, extension, extension_length, ++ serverinfo + serverinfo_length); ++ serverinfo_length += append_length; + + OPENSSL_free(name); + name = NULL; +diff --git a/vendor/openssl-src/openssl/ssl/statem/extensions_clnt.c b/vendor/openssl-src/openssl/ssl/statem/extensions_clnt.c +index b6f72d685..1cbaefa9f 100644 +--- a/vendor/openssl-src/openssl/ssl/statem/extensions_clnt.c ++++ b/vendor/openssl-src/openssl/ssl/statem/extensions_clnt.c +@@ -1002,7 +1002,7 @@ EXT_RETURN tls_construct_ctos_psk(SSL *s, WPACKET *pkt, unsigned int context, + X509 *x, size_t chainidx) + { + #ifndef OPENSSL_NO_TLS1_3 +- uint32_t now, agesec, agems = 0; ++ uint32_t agesec, agems = 0; + size_t reshashsize = 0, pskhashsize = 0, binderoffset, msglen; + unsigned char *resbinder = NULL, *pskbinder = NULL, *msgstart = NULL; + const EVP_MD *handmd = NULL, *mdres = NULL, *mdpsk = NULL; +@@ -1059,8 +1059,7 @@ EXT_RETURN tls_construct_ctos_psk(SSL *s, WPACKET *pkt, unsigned int context, + * this in multiple places in the code, so portability shouldn't be an + * issue. + */ +- now = (uint32_t)time(NULL); +- agesec = now - (uint32_t)s->session->time; ++ agesec = (uint32_t)(time(NULL) - s->session->time); + /* + * We calculate the age in seconds but the server may work in ms. Due to + * rounding errors we could overestimate the age by up to 1s. It is +diff --git a/vendor/openssl-src/openssl/ssl/statem/extensions_srvr.c b/vendor/openssl-src/openssl/ssl/statem/extensions_srvr.c +index 04f64f810..47541101d 100644 +--- a/vendor/openssl-src/openssl/ssl/statem/extensions_srvr.c ++++ b/vendor/openssl-src/openssl/ssl/statem/extensions_srvr.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -12,16 +12,16 @@ + #include "statem_local.h" + #include "internal/cryptlib.h" + +-#define COOKIE_STATE_FORMAT_VERSION 0 ++#define COOKIE_STATE_FORMAT_VERSION 1 + + /* + * 2 bytes for packet length, 2 bytes for format version, 2 bytes for + * protocol version, 2 bytes for group id, 2 bytes for cipher id, 1 byte for +- * key_share present flag, 4 bytes for timestamp, 2 bytes for the hashlen, ++ * key_share present flag, 8 bytes for timestamp, 2 bytes for the hashlen, + * EVP_MAX_MD_SIZE for transcript hash, 1 byte for app cookie length, app cookie + * length bytes, SHA256_DIGEST_LENGTH bytes for the HMAC of the whole thing. + */ +-#define MAX_COOKIE_SIZE (2 + 2 + 2 + 2 + 2 + 1 + 4 + 2 + EVP_MAX_MD_SIZE + 1 \ ++#define MAX_COOKIE_SIZE (2 + 2 + 2 + 2 + 2 + 1 + 8 + 2 + EVP_MAX_MD_SIZE + 1 \ + + SSL_COOKIE_LENGTH + SHA256_DIGEST_LENGTH) + + /* +@@ -741,7 +741,7 @@ int tls_parse_ctos_cookie(SSL *s, PACKET *pkt, unsigned int context, X509 *x, + unsigned char hmac[SHA256_DIGEST_LENGTH]; + unsigned char hrr[MAX_HRR_SIZE]; + size_t rawlen, hmaclen, hrrlen, ciphlen; +- unsigned long tm, now; ++ uint64_t tm, now; + + /* Ignore any cookie if we're not set up to verify it */ + if (s->ctx->verify_stateless_cookie_cb == NULL +@@ -851,7 +851,7 @@ int tls_parse_ctos_cookie(SSL *s, PACKET *pkt, unsigned int context, X509 *x, + } + + if (!PACKET_get_1(&cookie, &key_share) +- || !PACKET_get_net_4(&cookie, &tm) ++ || !PACKET_get_net_8(&cookie, &tm) + || !PACKET_get_length_prefixed_2(&cookie, &chhash) + || !PACKET_get_length_prefixed_1(&cookie, &appcookie) + || PACKET_remaining(&cookie) != SHA256_DIGEST_LENGTH) { +@@ -861,7 +861,7 @@ int tls_parse_ctos_cookie(SSL *s, PACKET *pkt, unsigned int context, X509 *x, + } + + /* We tolerate a cookie age of up to 10 minutes (= 60 * 10 seconds) */ +- now = (unsigned long)time(NULL); ++ now = time(NULL); + if (tm > now || (now - tm) > 600) { + /* Cookie is stale. Ignore it */ + return 1; +@@ -1167,7 +1167,7 @@ int tls_parse_ctos_psk(SSL *s, PACKET *pkt, unsigned int context, X509 *x, + s->ext.early_data_ok = 1; + s->ext.ticket_expected = 1; + } else { +- uint32_t ticket_age = 0, now, agesec, agems; ++ uint32_t ticket_age = 0, agesec, agems; + int ret; + + /* +@@ -1209,8 +1209,7 @@ int tls_parse_ctos_psk(SSL *s, PACKET *pkt, unsigned int context, X509 *x, + } + + ticket_age = (uint32_t)ticket_agel; +- now = (uint32_t)time(NULL); +- agesec = now - (uint32_t)sess->time; ++ agesec = (uint32_t)(time(NULL) - sess->time); + agems = agesec * (uint32_t)1000; + ticket_age -= sess->ext.tick_age_add; + +@@ -1800,7 +1799,7 @@ EXT_RETURN tls_construct_stoc_cookie(SSL *s, WPACKET *pkt, unsigned int context, + &ciphlen) + /* Is there a key_share extension present in this HRR? */ + || !WPACKET_put_bytes_u8(pkt, s->s3->peer_tmp == NULL) +- || !WPACKET_put_bytes_u32(pkt, (unsigned int)time(NULL)) ++ || !WPACKET_put_bytes_u64(pkt, time(NULL)) + || !WPACKET_start_sub_packet_u16(pkt) + || !WPACKET_reserve_bytes(pkt, EVP_MAX_MD_SIZE, &hashval1)) { + SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS_CONSTRUCT_STOC_COOKIE, +diff --git a/vendor/openssl-src/openssl/ssl/tls13_enc.c b/vendor/openssl-src/openssl/ssl/tls13_enc.c +index b8fb07f21..ff85df448 100644 +--- a/vendor/openssl-src/openssl/ssl/tls13_enc.c ++++ b/vendor/openssl-src/openssl/ssl/tls13_enc.c +@@ -1,5 +1,5 @@ + /* +- * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy +@@ -190,6 +190,7 @@ int tls13_generate_secret(SSL *s, const EVP_MD *md, + if (!ossl_assert(mdleni >= 0)) { + SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_TLS13_GENERATE_SECRET, + ERR_R_INTERNAL_ERROR); ++ EVP_PKEY_CTX_free(pctx); + return 0; + } + mdlen = (size_t)mdleni; +diff --git a/vendor/openssl-src/openssl/util/perl/OpenSSL/copyright.pm b/vendor/openssl-src/openssl/util/perl/OpenSSL/copyright.pm +new file mode 100644 +index 000000000..f560f9d9d +--- /dev/null ++++ b/vendor/openssl-src/openssl/util/perl/OpenSSL/copyright.pm +@@ -0,0 +1,41 @@ ++#! /usr/bin/env perl ++# Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. ++# ++# Licensed under the Apache License 2.0 (the "License"). You may not use ++# this file except in compliance with the License. You can obtain a copy ++# in the file LICENSE in the source distribution or at ++# https://www.openssl.org/source/license.html ++ ++use strict; ++use warnings; ++ ++package OpenSSL::copyright; ++ ++sub year_of { ++ my $file = shift; ++ ++ return $ENV{'OSSL_COPYRIGHT_YEAR'} if defined $ENV{'OSSL_COPYRIGHT_YEAR'}; ++ ++ # Use the file date for backward compatibility. ++ my $YEAR = [localtime([stat($file)]->[9])]->[5] + 1900; ++ ++ # See if git's available ++ open my $FH, ++ "git log -1 --date=short --format=format:%cd $file 2>/dev/null|" ++ or return $YEAR; ++ my $LINE = <$FH>; ++ close $FH; ++ $LINE =~ s/^([0-9]*)-.*/$1/ if $LINE; ++ $YEAR = $LINE if $LINE; ++ return $YEAR; ++} ++ ++sub latest { ++ my $l = 0; ++ foreach my $f (@_ ) { ++ my $y = year_of($f); ++ $l = $y if $y > $l; ++ } ++ return $l ++} ++1; +diff --git a/vendor/openssl-src/src/lib.rs b/vendor/openssl-src/src/lib.rs +index bc62dd1f8..b085fb5f8 100644 +--- a/vendor/openssl-src/src/lib.rs ++++ b/vendor/openssl-src/src/lib.rs +@@ -1,6 +1,7 @@ + extern crate cc; + + use std::env; ++use std::ffi::OsStr; + use std::fs; + use std::path::{Path, PathBuf}; + use std::process::Command; +@@ -165,7 +166,12 @@ impl Build { + .arg("no-zlib") + .arg("no-zlib-dynamic"); + +- if cfg!(not(feature = "weak-crypto")) { ++ if cfg!(feature = "weak-crypto") { ++ configure ++ .arg("enable-md2") ++ .arg("enable-rc5") ++ .arg("enable-weak-ssl-ciphers"); ++ } else { + configure + .arg("no-md2") + .arg("no-rc5") +@@ -185,10 +191,13 @@ impl Build { + } + + if target.contains("musl") || target.contains("windows") { +- // This actually fails to compile on musl (it needs linux/version.h ++ // Engine module fails to compile on musl (it needs linux/version.h + // right now) but we don't actually need this most of the time. + // API of engine.c ld fail in Windows. +- configure.arg("no-engine"); ++ // Disable engine module unless force-engine feature specified ++ if !cfg!(feature = "force-engine") { ++ configure.arg("no-engine"); ++ } + } + + if target.contains("musl") { +@@ -255,6 +264,7 @@ impl Build { + "i686-unknown-freebsd" => "BSD-x86-elf", + "i686-unknown-linux-gnu" => "linux-elf", + "i686-unknown-linux-musl" => "linux-elf", ++ "loongarch64-unknown-linux-gnu" => "linux64-loongarch64", + "mips-unknown-linux-gnu" => "linux-mips32", + "mips-unknown-linux-musl" => "linux-mips32", + "mips64-unknown-linux-gnuabi64" => "linux64-mips64", +@@ -265,6 +275,7 @@ impl Build { + "mipsel-unknown-linux-musl" => "linux-mips32", + "powerpc-unknown-freebsd" => "BSD-generic32", + "powerpc-unknown-linux-gnu" => "linux-ppc", ++ "powerpc-unknown-linux-gnuspe" => "linux-ppc", + "powerpc64-unknown-freebsd" => "BSD-generic64", + "powerpc64-unknown-linux-gnu" => "linux-ppc64", + "powerpc64-unknown-linux-musl" => "linux-ppc64", +@@ -291,6 +302,7 @@ impl Build { + "wasm32-wasi" => "gcc", + "aarch64-apple-ios" => "ios64-cross", + "x86_64-apple-ios" => "iossimulator-xcrun", ++ "aarch64-apple-ios-sim" => "iossimulator-xcrun", + _ => panic!("don't know how to configure OpenSSL for {}", target), + }; + +@@ -313,18 +325,22 @@ impl Build { + // prefix, we unset `CROSS_COMPILE` for `./Configure`. + configure.env_remove("CROSS_COMPILE"); + +- // Infer ar/ranlib tools from cross compilers if the it looks like +- // we're doing something like `foo-gcc` route that to `foo-ranlib` +- // as well. +- if path.ends_with("-gcc") && !target.contains("unknown-linux-musl") { +- let path = &path[..path.len() - 4]; +- if env::var_os("RANLIB").is_none() { +- configure.env("RANLIB", format!("{}-ranlib", path)); +- } +- if env::var_os("AR").is_none() { +- configure.env("AR", format!("{}-ar", path)); +- } ++ let ar = cc.get_archiver(); ++ configure.env("AR", ar.get_program()); ++ if ar.get_args().count() != 0 { ++ // On some platforms (like emscripten on windows), the ar to use may not be a ++ // single binary, but instead a multi-argument command like `cmd /c emar.bar`. ++ // We can't convey that through `AR` alone, and so also need to set ARFLAGS. ++ configure.env( ++ "ARFLAGS", ++ ar.get_args().collect::>().join(OsStr::new(" ")), ++ ); + } ++ let ranlib = cc.get_ranlib(); ++ // OpenSSL does not support RANLIBFLAGS. Jam the flags in RANLIB. ++ let mut args = vec![ranlib.get_program()]; ++ args.extend(ranlib.get_args()); ++ configure.env("RANLIB", args.join(OsStr::new(" "))); + + // Make sure we pass extra flags like `-ffunction-sections` and + // other things like ARM codegen flags. +-- +2.41.0 + diff --git a/0005-vendor-libffi-sys-2.3.0.patch b/0005-vendor-libffi-sys-2.3.0.patch new file mode 100644 index 0000000..442ccaf --- /dev/null +++ b/0005-vendor-libffi-sys-2.3.0.patch @@ -0,0 +1,34958 @@ +From 88acd27a72f9987c3b278bdd773089b013e3985c Mon Sep 17 00:00:00 2001 +From: hev +Date: Tue, 8 Aug 2023 17:21:54 +0800 +Subject: [PATCH 5/6] vendor: libffi-sys-2.3.0 + +--- + Cargo.lock | 4 +- + vendor/libffi-sys/.cargo-checksum.json | 2 +- + vendor/libffi-sys/CHANGELOG.md | 23 + + vendor/libffi-sys/Cargo.toml | 11 +- + vendor/libffi-sys/README.md | 4 +- + vendor/libffi-sys/build/msvc.rs | 93 +- + vendor/libffi-sys/build/not_msvc.rs | 23 +- + vendor/libffi-sys/libffi/ChangeLog | 1734 ++++ + vendor/libffi-sys/libffi/LICENSE | 2 +- + vendor/libffi-sys/libffi/Makefile.am | 10 +- + vendor/libffi-sys/libffi/Makefile.in | 65 +- + vendor/libffi-sys/libffi/README.md | 101 +- + vendor/libffi-sys/libffi/acinclude.m4 | 122 +- + vendor/libffi-sys/libffi/aclocal.m4 | 90 +- + vendor/libffi-sys/libffi/compile | 2 +- + vendor/libffi-sys/libffi/config.guess | 1179 +-- + vendor/libffi-sys/libffi/config.sub | 105 +- + vendor/libffi-sys/libffi/configure | 8200 +++++++++-------- + vendor/libffi-sys/libffi/configure.ac | 73 +- + vendor/libffi-sys/libffi/configure.host | 15 +- + vendor/libffi-sys/libffi/depcomp | 2 +- + vendor/libffi-sys/libffi/doc/Makefile.in | 13 +- + vendor/libffi-sys/libffi/doc/libffi.info | 54 +- + vendor/libffi-sys/libffi/doc/libffi.texi | 39 +- + vendor/libffi-sys/libffi/doc/mdate-sh | 2 +- + vendor/libffi-sys/libffi/doc/stamp-vti | 8 +- + vendor/libffi-sys/libffi/doc/texinfo.tex | 774 +- + vendor/libffi-sys/libffi/doc/version.texi | 8 +- + vendor/libffi-sys/libffi/fficonfig.h.in | 25 +- + .../generate-darwin-source-and-headers.py | 169 +- + vendor/libffi-sys/libffi/include/Makefile.in | 15 +- + vendor/libffi-sys/libffi/include/ffi.h.in | 59 +- + vendor/libffi-sys/libffi/install-sh | 148 +- + vendor/libffi-sys/libffi/libtool-version | 4 +- + vendor/libffi-sys/libffi/ltmain.sh | 866 +- + vendor/libffi-sys/libffi/m4/ax_cc_maxopt.m4 | 12 +- + .../libffi/m4/ax_cflags_warn_all.m4 | 180 +- + .../libffi/m4/ax_compiler_vendor.m4 | 121 +- + .../{ax_append_flag.m4 => ax_prepend_flag.m4} | 19 +- + vendor/libffi-sys/libffi/m4/libtool.m4 | 227 +- + vendor/libffi-sys/libffi/m4/ltoptions.m4 | 4 +- + vendor/libffi-sys/libffi/m4/ltsugar.m4 | 2 +- + vendor/libffi-sys/libffi/m4/ltversion.m4 | 13 +- + vendor/libffi-sys/libffi/m4/lt~obsolete.m4 | 4 +- + vendor/libffi-sys/libffi/man/Makefile.in | 13 +- + vendor/libffi-sys/libffi/missing | 2 +- + .../msvc_build/aarch64/aarch64_include/ffi.h | 2 +- + vendor/libffi-sys/libffi/src/aarch64/ffi.c | 125 +- + vendor/libffi-sys/libffi/src/arm/ffi.c | 34 +- + vendor/libffi-sys/libffi/src/closures.c | 105 +- + vendor/libffi-sys/libffi/src/dlmalloc.c | 5 + + vendor/libffi-sys/libffi/src/kvx/asm.h | 5 + + .../libffi-sys/libffi/src/loongarch64/ffi.c | 621 ++ + .../libffi/src/loongarch64/ffitarget.h | 82 + + .../libffi-sys/libffi/src/loongarch64/sysv.S | 327 + + vendor/libffi-sys/libffi/src/m32r/ffi.c | 45 +- + vendor/libffi-sys/libffi/src/mips/ffi.c | 305 +- + vendor/libffi-sys/libffi/src/mips/ffitarget.h | 7 + + vendor/libffi-sys/libffi/src/mips/n32.S | 163 +- + vendor/libffi-sys/libffi/src/mips/o32.S | 65 +- + vendor/libffi-sys/libffi/src/moxie/ffi.c | 69 +- + vendor/libffi-sys/libffi/src/or1k/ffi.c | 37 +- + .../libffi/src/powerpc/ffi_linux64.c | 2 +- + .../libffi-sys/libffi/src/powerpc/linux64.S | 2 + + .../libffi/src/powerpc/linux64_closure.S | 2 + + vendor/libffi-sys/libffi/src/powerpc/t-aix | 5 + + vendor/libffi-sys/libffi/src/prep_cif.c | 3 +- + vendor/libffi-sys/libffi/src/riscv/ffi.c | 41 +- + vendor/libffi-sys/libffi/src/sparc/ffi64.c | 16 + + vendor/libffi-sys/libffi/src/tramp.c | 56 +- + vendor/libffi-sys/libffi/src/x86/ffi.c | 71 +- + vendor/libffi-sys/libffi/src/x86/ffi64.c | 39 +- + vendor/libffi-sys/libffi/src/x86/ffitarget.h | 8 +- + vendor/libffi-sys/libffi/src/x86/ffiw64.c | 18 + + vendor/libffi-sys/libffi/src/x86/sysv_intel.S | 179 +- + vendor/libffi-sys/libffi/src/x86/unix64.S | 35 +- + vendor/libffi-sys/libffi/src/x86/win64.S | 13 +- + vendor/libffi-sys/libffi/src/xtensa/ffi.c | 24 +- + .../libffi-sys/libffi/src/xtensa/ffitarget.h | 4 + + vendor/libffi-sys/libffi/src/xtensa/sysv.S | 42 +- + .../libffi-sys/libffi/testsuite/Makefile.am | 243 +- + .../libffi-sys/libffi/testsuite/Makefile.in | 258 +- + .../libffi/testsuite/lib/libffi.exp | 43 +- + .../libffi/testsuite/lib/target-libpath.exp | 4 +- + .../testsuite/libffi.bhaible/test-call.c | 1 + + .../libffi/testsuite/libffi.call/bpo-38748.c | 41 + + .../libffi/testsuite/libffi.call/ffitest.h | 23 +- + .../libffi/testsuite/libffi.call/float_va.c | 3 + + .../libffi.call/{pyobjc-tc.c => pyobjc_tc.c} | 0 + .../libffi/testsuite/libffi.call/return_ll1.c | 5 + + .../libffi/testsuite/libffi.call/return_sl.c | 4 + + .../libffi/testsuite/libffi.call/return_ul.c | 4 + + .../libffi/testsuite/libffi.call/s55.c | 60 + + .../libffi/testsuite/libffi.call/strlen.c | 17 +- + .../libffi/testsuite/libffi.call/strlen2.c | 4 +- + .../libffi/testsuite/libffi.call/strlen3.c | 4 +- + .../libffi/testsuite/libffi.call/strlen4.c | 4 +- + .../libffi/testsuite/libffi.call/struct10.c | 2 +- + .../testsuite/libffi.call/struct_by_value_2.c | 63 + + .../testsuite/libffi.call/struct_by_value_3.c | 65 + + .../testsuite/libffi.call/struct_by_value_4.c | 67 + + .../libffi.call/struct_by_value_big.c | 93 + + .../libffi.call/struct_by_value_small.c | 61 + + .../libffi/testsuite/libffi.call/va_2.c | 26 +- + .../libffi/testsuite/libffi.call/va_3.c | 154 + + .../libffi/testsuite/libffi.call/va_struct1.c | 13 + + .../libffi/testsuite/libffi.call/va_struct2.c | 11 + + .../libffi/testsuite/libffi.call/va_struct3.c | 15 + + .../testsuite/libffi.closures/closure_fn0.c | 5 +- + .../testsuite/libffi.closures/closure_fn1.c | 2 + + .../testsuite/libffi.closures/closure_fn2.c | 2 + + .../testsuite/libffi.closures/closure_fn3.c | 22 +- + .../testsuite/libffi.closures/closure_fn4.c | 2 + + .../testsuite/libffi.closures/closure_fn5.c | 2 + + .../testsuite/libffi.closures/closure_fn6.c | 2 + + .../libffi.closures/closure_loc_fn0.c | 7 +- + .../libffi.closures/closure_simple.c | 6 + + .../testsuite/libffi.closures/cls_12byte.c | 18 + + .../testsuite/libffi.closures/cls_16byte.c | 22 + + .../testsuite/libffi.closures/cls_18byte.c | 24 + + .../testsuite/libffi.closures/cls_19byte.c | 29 + + .../testsuite/libffi.closures/cls_1_1byte.c | 4 + + .../testsuite/libffi.closures/cls_20byte.c | 18 + + .../testsuite/libffi.closures/cls_20byte1.c | 20 + + .../testsuite/libffi.closures/cls_24byte.c | 32 + + .../testsuite/libffi.closures/cls_2byte.c | 13 + + .../testsuite/libffi.closures/cls_3_1byte.c | 19 + + .../testsuite/libffi.closures/cls_3byte1.c | 13 + + .../testsuite/libffi.closures/cls_3byte2.c | 13 + + .../testsuite/libffi.closures/cls_3float.c | 18 + + .../testsuite/libffi.closures/cls_4_1byte.c | 22 + + .../testsuite/libffi.closures/cls_4byte.c | 13 + + .../testsuite/libffi.closures/cls_5_1_byte.c | 28 + + .../testsuite/libffi.closures/cls_5byte.c | 18 + + .../testsuite/libffi.closures/cls_64byte.c | 24 + + .../testsuite/libffi.closures/cls_6_1_byte.c | 27 + + .../testsuite/libffi.closures/cls_6byte.c | 24 +- + .../testsuite/libffi.closures/cls_7_1_byte.c | 38 + + .../testsuite/libffi.closures/cls_7byte.c | 24 + + .../testsuite/libffi.closures/cls_8byte.c | 14 + + .../testsuite/libffi.closures/cls_9byte1.c | 13 + + .../testsuite/libffi.closures/cls_9byte2.c | 14 +- + .../libffi.closures/cls_align_double.c | 18 + + .../libffi.closures/cls_align_float.c | 18 + + .../libffi.closures/cls_align_longdouble.c | 19 + + .../cls_align_longdouble_split.c | 63 +- + .../cls_align_longdouble_split2.c | 41 +- + .../libffi.closures/cls_align_pointer.c | 18 + + .../libffi.closures/cls_align_sint16.c | 17 + + .../libffi.closures/cls_align_sint32.c | 19 +- + .../libffi.closures/cls_align_sint64.c | 17 + + .../libffi.closures/cls_align_uint16.c | 17 + + .../libffi.closures/cls_align_uint32.c | 18 + + .../libffi.closures/cls_align_uint64.c | 18 + + .../libffi.closures/cls_dbls_struct.c | 2 + + .../testsuite/libffi.closures/cls_double_va.c | 10 +- + .../testsuite/libffi.closures/cls_float.c | 4 + + .../libffi.closures/cls_longdouble.c | 12 +- + .../libffi.closures/cls_longdouble_va.c | 12 +- + .../libffi.closures/cls_multi_schar.c | 4 + + .../libffi.closures/cls_multi_sshort.c | 5 + + .../libffi.closures/cls_multi_sshortchar.c | 8 + + .../libffi.closures/cls_multi_uchar.c | 8 + + .../libffi.closures/cls_multi_ushort.c | 6 +- + .../libffi.closures/cls_multi_ushortchar.c | 8 + + .../testsuite/libffi.closures/cls_pointer.c | 5 + + .../libffi.closures/cls_pointer_stack.c | 10 + + .../testsuite/libffi.closures/cls_schar.c | 3 + + .../testsuite/libffi.closures/cls_sint.c | 2 + + .../testsuite/libffi.closures/cls_sshort.c | 3 + + .../libffi.closures/cls_struct_va1.c | 11 + + .../testsuite/libffi.closures/cls_uchar.c | 3 + + .../testsuite/libffi.closures/cls_uint.c | 4 + + .../testsuite/libffi.closures/cls_uint_va.c | 4 + + .../testsuite/libffi.closures/cls_ulong_va.c | 4 + + .../testsuite/libffi.closures/cls_ulonglong.c | 2 + + .../testsuite/libffi.closures/cls_ushort.c | 3 + + .../testsuite/libffi.closures/ffitest.h | 145 +- + .../testsuite/libffi.closures/huge_struct.c | 44 +- + .../testsuite/libffi.closures/nested_struct.c | 39 +- + .../libffi.closures/nested_struct10.c | 12 + + .../libffi.closures/nested_struct11.c | 26 +- + .../libffi.closures/nested_struct12.c | 2 +- + .../libffi.closures/nested_struct13.c | 20 +- + .../libffi.closures/nested_struct2.c | 9 + + .../libffi.closures/nested_struct3.c | 9 + + .../libffi.closures/nested_struct4.c | 9 + + .../libffi.closures/nested_struct5.c | 9 + + .../libffi.closures/nested_struct6.c | 11 + + .../libffi.closures/nested_struct7.c | 9 + + .../libffi.closures/nested_struct8.c | 11 + + .../libffi.closures/nested_struct9.c | 11 + + .../testsuite/libffi.closures/testclosure.c | 5 + + .../testsuite/libffi.closures/unwindtest.cc | 2 +- + vendor/libffi-sys/src/arch.rs | 38 + + vendor/libffi-sys/src/lib.rs | 10 +- + 196 files changed, 13292 insertions(+), 6583 deletions(-) + rename vendor/libffi-sys/libffi/m4/{ax_append_flag.m4 => ax_prepend_flag.m4} (74%) + create mode 100644 vendor/libffi-sys/libffi/src/kvx/asm.h + create mode 100644 vendor/libffi-sys/libffi/src/loongarch64/ffi.c + create mode 100644 vendor/libffi-sys/libffi/src/loongarch64/ffitarget.h + create mode 100644 vendor/libffi-sys/libffi/src/loongarch64/sysv.S + create mode 100644 vendor/libffi-sys/libffi/src/powerpc/t-aix + create mode 100644 vendor/libffi-sys/libffi/testsuite/libffi.call/bpo-38748.c + rename vendor/libffi-sys/libffi/testsuite/libffi.call/{pyobjc-tc.c => pyobjc_tc.c} (100%) + create mode 100644 vendor/libffi-sys/libffi/testsuite/libffi.call/s55.c + create mode 100644 vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_2.c + create mode 100644 vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_3.c + create mode 100644 vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_4.c + create mode 100644 vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_big.c + create mode 100644 vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_small.c + create mode 100644 vendor/libffi-sys/libffi/testsuite/libffi.call/va_3.c + +diff --git a/Cargo.lock b/Cargo.lock +index 524d16235..bcae5ae76 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -2338,9 +2338,9 @@ dependencies = [ + + [[package]] + name = "libffi-sys" +-version = "2.0.0" ++version = "2.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ab4106b7f09d7b87d021334d5618fac1dfcfb824d4c5fe111ff0074dfd242e15" ++checksum = "f36115160c57e8529781b4183c2bb51fdc1f6d6d1ed345591d84be7703befb3c" + dependencies = [ + "cc", + ] +diff --git a/vendor/libffi-sys/.cargo-checksum.json b/vendor/libffi-sys/.cargo-checksum.json +index 520d45154..a01afd6af 100644 +--- a/vendor/libffi-sys/.cargo-checksum.json ++++ b/vendor/libffi-sys/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{"CHANGELOG.md":"5a56b240db595297eef137de664cd1a1033f46c072884b5f61089fa48c57a9e9","Cargo.toml":"553a5e14ada9946248e458e9f03a1ffb16a9a6307406ed3e3d7f07ad1a444fab","README.md":"5b821d5108894ac8652ed5df6a96d0ec3feec1c70443384f7a23bc2303879660","build/build.rs":"dd746bfc0899ca5fe1cf79b12aee942ae4826c2292cac2ef5569b7bfdbd4ec3d","build/common.rs":"5d96a8263e7c251744f16dfc937aec7e7ecad1c2c093d72b0f041191e09fe98b","build/msvc.rs":"5a0803173a549c7fdc0bc8e49b8e42198aecb28d6ed49579cea0844512c50c9c","build/not_msvc.rs":"1aded4f33037fc61553d84408667d9717d95d1185842469c297ea1e26fcd1454","include/msvc/ffi.h":"b0e28fd4fbfad275c8dcea5a5808ed9171a0e0e334e489c3d3c71681b32f27fa","include/msvc/fficonfig.h":"8bfe55a95c3fe2e9f54373779a10e95fc1b39316640abea9eecae741349a1897","libffi/ChangeLog":"ee222bfe3e0c73b8706494cf5f4895bcf1b3736f5ae5608cdaa2669292e4d64d","libffi/ChangeLog.old":"277de718097504206029f3b40a92928132df49b2dbbf1f116c21ee735c199499","libffi/LICENSE":"a61d06e8f7be57928e71e800eb9273b05cb8868c484108afe41e4305bb320dde","libffi/LICENSE-BUILDTOOLS":"e67978cd18816c0cb7d29aaaacde7b7447402c2fb321a051698890a8eaedda94","libffi/Makefile.am":"54a0d2b79b2e63ecd6cc6a688c49252b7269a4d574094a41b3ed50c5e4487699","libffi/Makefile.in":"4b716507db645ede78a5f73cfd51e3523677451b18c0c9582b3870ff0a4cd000","libffi/README.md":"9af1653375df542dffe0c746bfa37f3e6dee78f7655ba417f9a6403ff79bf8bf","libffi/acinclude.m4":"29bb8bdff8fcbb35a11be7a71e5ef96b19f96d5aae3e9a3382ac3f6727a4b654","libffi/aclocal.m4":"7f4b549c91757ccb372ebf53ed42c8b6efdd11966193f16ec9b2a6ff6da38f00","libffi/compile":"1b643a22784ba0da62eb09bccb5f4da476f7e5aa2250b2fa488538564539b11e","libffi/config.guess":"42f9e80c88168de121f6826b68d6b0e653967190e072d53278a5660b4e5dcb50","libffi/config.sub":"9361d9fe163230a43901581e53fc55c4edff04dbbf8c8550241a8adb14531c25","libffi/configure":"fbe7702927567a608ecc60b2c9d8526cd5e5ee733946b12ac79b396be526daed","libffi/configure.ac":"36d02f0ffdfab27bb88905e02cdd9f629b6c872e0af3a7427a8c41211d902d92","libffi/configure.host":"9a1a5d18097a9877494a512e62312697c306169ebb27ce6ec942a9e133b2026d","libffi/depcomp":"b31b449b11f40156b18d2e2a989d78ca3f89be0b96ca0a160455b3299b82d2e6","libffi/doc/Makefile.am":"9a56679034cebf73189c4d4d689cdeeaed2f6af68945cc9d52a3846dece0567b","libffi/doc/Makefile.in":"8010cc7e9ffb1e8df1c3d36de1db700a6def3fefce3d7c5b06c4c73f23490c59","libffi/doc/libffi.info":"59d293758be54f369906d16de77f96aea2be15f1bfb690016068f2f42e4eb445","libffi/doc/libffi.pdf":"aadafc0dd1ba974f62e680b06eb56dce8639afe9d6f2cd88d224404048331a1b","libffi/doc/libffi.texi":"e46b365ad9180ffa354d50479f1b683a744f123e6a1bca51192f311136804202","libffi/doc/mdate-sh":"4e8fa843d3195a6e14ff129e1b92cbd23b2476c4c6403d15a83e8783a0ef3c8f","libffi/doc/stamp-vti":"e9aa411f0bdfada8a2aafa0bb2d5f275cfed385810140e8458fa983fee8254c2","libffi/doc/texinfo.tex":"838b43ddf0ac7972632636edc585ae96c92cd0e7c83b5f0ab0456986576f365c","libffi/doc/version.texi":"e9aa411f0bdfada8a2aafa0bb2d5f275cfed385810140e8458fa983fee8254c2","libffi/fficonfig.h.in":"411f6fe671f0b6694be38464c2a29971ba157523068434fb77abc836cf9085a4","libffi/generate-darwin-source-and-headers.py":"e59d9bf1ab8c5094e3590292342b9d92f9777589359ab74f6f540c14cc55dd64","libffi/include/Makefile.am":"8871b1d64ee11480512d1aa05b6fb0c41d2778e46bc2c3f3bdc3a28bd97417fc","libffi/include/Makefile.in":"3503d0d06660bffd830450ece859cc5b795a8993b56054e224c1cb8f4ec35055","libffi/include/ffi.h.in":"71feea76419fd3e7ee4e624a36c4ba0d6487c32fc04c8a1412dcf8f71fa75d2a","libffi/include/ffi_cfi.h":"165495aafcdb15ad48340b8b9906514032c284db3db372c31e3f4d6b35888dc5","libffi/include/ffi_common.h":"2b3f3d2ca1b16d6ae98d6b27ca0467fcd7605847b14cb681e844e51dea11527d","libffi/include/tramp.h":"ef20dace99925672167a5f3b3898299d462ace170f0b90ca47fd36b30cfc7fbf","libffi/install-sh":"c2fd71953b47c19c62db69cbf739504aca8b47a40dbdc8c83bbc4cc7664a1779","libffi/libffi.map.in":"e723c6bc3576b203d5d50bd6f1c9922b11c1fbe33ebb278958145692facd78e8","libffi/libffi.pc.in":"0828aa34e7d8bf5c8007e897ce12459912e7ee491e1c17377432c8bf204704be","libffi/libffi.xcodeproj/project.pbxproj":"c6882d75d392276a42e58a92917a59533a1f9b7c03d99074b05c1706d4d4d71a","libffi/libtool-ldflags":"953d3a071dd9c49b5b066bd9aa6cabf8b003219f0419e211574964272672e1f5","libffi/libtool-version":"55212a6909eebe647abc5c10f2f268a388ef2e12474ed70bffd242fccb60cb28","libffi/ltmain.sh":"f03f3f556004e494c16ef260d2e4fb275f991016824b015452fef31d6f48a77b","libffi/m4/asmcfi.m4":"370d6bd9896c51201bec2da86cba7034b1f61e224d9e2ab255aa4b61b04af8fb","libffi/m4/ax_append_flag.m4":"392cb0e965351b1d6a9847cf165dc4092fb1853fd63dbe010ac8b21c286f5e16","libffi/m4/ax_cc_maxopt.m4":"fd0075591fde5262619370597dbbeb3b6fa0fb78b097d69246acde723ad6a1d8","libffi/m4/ax_cflags_warn_all.m4":"f698bd1b561a4e0ee1987b92cb77bb32e4f260319e44d677470dd3f8c82ccf58","libffi/m4/ax_check_compile_flag.m4":"629dc6835eb1e2bd586fd842a4db66541bc442bcc2b13d6f24907631c5a688b0","libffi/m4/ax_compiler_vendor.m4":"2f440c236d5ec743713c5608d84f9d337fb596f45f873cd5420c495094fd6e60","libffi/m4/ax_configure_args.m4":"6b03141f467ea653eed74bb4551db6e376527426684a243a8e723d1ad11e30e9","libffi/m4/ax_enable_builddir.m4":"e63154501a33a7dba2621e14744f490482e1bc59ae7c7de2e53915ba8642f30d","libffi/m4/ax_gcc_archflag.m4":"14fae97a5f044e8b5125638a54ed43be2e090c52771aa4955262727437e78fdb","libffi/m4/ax_gcc_x86_cpuid.m4":"eba1884e575cb1e6e4174777fd708893982c355ff9d07f6cb0aa59d0fd66de0b","libffi/m4/ax_require_defined.m4":"d870b21e817747c6a61a9dd72e06ea45f87e012c7a1a9aa5ff90cd3af89b3774","libffi/m4/libtool.m4":"8441b05b4236b9d8e9a6ce1fa540496d1ef75d38e24ef2cb3bf3c70960555d17","libffi/m4/ltoptions.m4":"e77ebba8361b36f14b4d0927173a034b98c5d05049697a9ded84d85eb99a7990","libffi/m4/ltsugar.m4":"5a6735cda60e0ba0d1b706c0ef648f5d096298da46daefd9cdecdb6a0f4584d3","libffi/m4/ltversion.m4":"a27b754709de61575197bf5a980696c98ae49da3f92f0de8ee7f42dd543b7465","libffi/m4/lt~obsolete.m4":"26fa3285c35dd6ab00ed1e466ba92a17e4655e01897731ec18a587a4cf5e4f8d","libffi/make_sunver.pl":"ca40d3458893e03a90807be87d720a59e921ee6bf678c6696779d635004a261f","libffi/man/Makefile.am":"d9cbd9cf52fec3d4e9f1b4694ce1915d05dee93d8d9817447dd63648b4577df9","libffi/man/Makefile.in":"9b00fa4cd8466b1d0426d123e684e96d03d0c4a55e74684cf89013e5dc2ff854","libffi/man/ffi.3":"aa4730e114c305943a2226a524ed8447dc6b66a184523999868e5433c2c9de74","libffi/man/ffi_call.3":"2817ce7b78cb737d7b85b18b45899470f5f565f990d056d3d8cfabf6d779477f","libffi/man/ffi_prep_cif.3":"f60c5bb9d04b55988da13511a2c3edfa0f39fb6f51abfb8ac24d0b161c4169c0","libffi/man/ffi_prep_cif_var.3":"9365685252f33f13627c9303bc01883b764227132069260c19e94100ff442a51","libffi/missing":"7b3b653a3b256dec2d25ffaa12ce557dcade2b8fe57c969b3e53f025a5a806a4","libffi/msvc_build/aarch64/Ffi_staticLib.sln":"9c51feeb87823789da9b95cfcac5681c7d04a4e5dea5415cce8e63ea46376486","libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj":"a7993ac76d009e432e5875f658aa10799ba293e04e6ddc4f730b18b4428fce1c","libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters":"a6b2881fffc3b5eef61acf2ff07fad467a96de3891cdb57152c4f7a7f5dd9e66","libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user":"9a5aed43a84c940beb8aeff1073c56889a1a1c5b170452188e86cf11040460b2","libffi/msvc_build/aarch64/aarch64_include/ffi.h":"b04ab245e6935172d1f4e27151d048b9d212d45934414cc262823f8ab2535fd7","libffi/msvc_build/aarch64/aarch64_include/fficonfig.h":"58d7bd9c9eceb66c97f56daf69cc6d0e1397ae4655533814b73a7f678a6f55f7","libffi/msvcc.sh":"a1663d73f5cce3d7c1bc5d87c5fa1bc2ddf1e0798f5157ac115f353264acc318","libffi/src/aarch64/ffi.c":"4746fb52cf95d47da0ee2b77d5e866fdb9c8570c7683576c31afa1fe9706d101","libffi/src/aarch64/ffitarget.h":"f416ed82c7c3a024433bfa269f4aeaae3b2880f9f82eb46cacb43e388e94a0f2","libffi/src/aarch64/internal.h":"449e978d4d211d5ae3c1a72ebbf364f3a704f9f1316ae71bf6c935397a9ee4a0","libffi/src/aarch64/sysv.S":"bf10254d73f8feb0b335e081ffcbf3df86d6259b0a671e05b8704165a60f05c1","libffi/src/aarch64/win64_armasm.S":"a675f9159ebb0c57fd0ea52e17ade39e045161b09a5a372d6a0dcd1b91ce6aaa","libffi/src/alpha/ffi.c":"26d079a724e4aa495ba8f5a9d5dab012228060bc97477ea322ec04d01e5199a3","libffi/src/alpha/ffitarget.h":"d3056edb82319f6cb2b45f3a52fae5fa9ef39e2d679fac4da3f3a4729bcb78e3","libffi/src/alpha/internal.h":"163e8a0f0a8810bcce8a0777e2adbb6147033e49e14c60711738384d5ffbb658","libffi/src/alpha/osf.S":"c3e2c75a16396b5f49f41d2e2bba6760ddf5b96dc97401a06e2262220077ad78","libffi/src/arc/arcompact.S":"d82ad0f32da7626f5eca676c45d80f4c4e6da54dd6322f84034b6d143353afe7","libffi/src/arc/ffi.c":"09d47a68802d803355026b2185e3294613485e88efaaa1a9da682b8d80091e0e","libffi/src/arc/ffitarget.h":"6cbf168e4deef40eb76044b377312277901ee89590154e2b48702ba4c2399ce3","libffi/src/arm/ffi.c":"83ddfdb3808549f65833eb6ca9fd113e95292f5657aca1a0ef5c7927f3db6af8","libffi/src/arm/ffitarget.h":"6e8478a81677d0a7da1f22b8ad05b256d0598bf7810e13612aab5ffd83bae9a6","libffi/src/arm/internal.h":"b32c5ab851956989fe42004ea05dfca120920fc2cd1e87d047c1da848be0df68","libffi/src/arm/sysv.S":"ce6e873a450e00599bf856a4e7beb192a1b923d1b5e603bac3dc946544d1dcfb","libffi/src/arm/sysv_msvc_arm32.S":"3a16c408994c829f8ddf2a8af147c425927e2a45433b15a46bfd92c25d10b333","libffi/src/avr32/ffi.c":"9697a0c6b2664bb98751781b638212d4828a130af87eeef821660a0940ea59de","libffi/src/avr32/ffitarget.h":"cd17c077b7b038b9027d373cbf82d42eb12cd1e3f0b39c3b54f43600dc0a7bef","libffi/src/avr32/sysv.S":"577635cd665853c100d8cc033cf3129d7c57b95230fe1238a7426450c6467840","libffi/src/bfin/ffi.c":"a84dde009955ed8ef2893dfcb767e7610abe33e47ce89e222350f053c53bc8fb","libffi/src/bfin/ffitarget.h":"8b337edb35aa4ce7ecddd02ccd87c4843a1a3fdd5b0407f092e558d8f7b0cd21","libffi/src/bfin/sysv.S":"4cdd351ba871adce4561aee319379ad51fbc77c066441d32364623c1c964eb8f","libffi/src/closures.c":"ca2df19ffb706baedcb585422dd1e19145598f74efb297f699ee1929863c1276","libffi/src/cris/ffi.c":"958eeb4f9b1d07d3aa2d7b9d26ee61b04ad749ffea393a8f0446ba45377ad650","libffi/src/cris/ffitarget.h":"75d665f103a9d20df7167b0e3171b31eda6fa237e9c08cf5843471f2caa4d445","libffi/src/cris/sysv.S":"8a3f9bea4a554a58102d09b2a6ea0c340a8c9a35e2d67a9eca47e12b75bf1348","libffi/src/csky/ffi.c":"54f9333b389dd4c29a376e8c4631756a77eb734740266a4b75b2bb1115b573db","libffi/src/csky/ffitarget.h":"ebc05a9555618329fe34793c6f6060938f222a8441bc8b5187dc8d11e4785b4c","libffi/src/csky/sysv.S":"96600e824dd9170e6b19b184aa3bf41dce955db3d988f21950b270f26a889618","libffi/src/debug.c":"5160a3877b65490aa30fa92a44a66c3bdf093d5ab75b9502adb729038efb3e5f","libffi/src/dlmalloc.c":"0f28533acfc8acf41cd4f9452e862344850be30e62ec55b6791225d8ae120209","libffi/src/frv/eabi.S":"4f5f724c88c240c2e4f748d35dc9e90bee9b3e15b01255d464c423e72bae7c08","libffi/src/frv/ffi.c":"b8546dff59db5f3d329227b766860c648c93fb2657c93258f4600dc85e7db77d","libffi/src/frv/ffitarget.h":"3edb1e12945a284c7f7305c42df2bbc49ccefbe91ddbdcb98ece4ff6508e266f","libffi/src/ia64/ffi.c":"bb91f285c018acd50666a85a236375bdbfa3081bd3f8d79efc3dd60a361f2905","libffi/src/ia64/ffitarget.h":"e8ae27c307732effe4075c548984638b1869225bf8c28664f2bf17bd6b7a838e","libffi/src/ia64/ia64_flags.h":"4715a00493bfb913b2d1f1779f1ff812633b3bb2a20f9a4b88df6ca97a86b768","libffi/src/ia64/unix.S":"ce96b09c8497aa07ea0dec7ed245a295a715ff0f175fc7cd3b022bafe2f6a72f","libffi/src/java_raw_api.c":"5c3886d8c20ba1238135835aa132ad9c017af5f9e5c55e2167d3ad047def1bd6","libffi/src/kvx/ffi.c":"c501b6006dea54d4af0d5a4bb50aa534bdb59ce314b32b131343094626e4bcee","libffi/src/kvx/ffitarget.h":"c83e987cf3726d9fb079b9ae61fd207e7907e714782887b50a994e664537f27f","libffi/src/kvx/sysv.S":"8ae2f992d4d95d06ef64d719f24cf95b8b0a37f9d6d89544b2837e2902f5d95e","libffi/src/m32r/ffi.c":"998e91fd9182798eb2d19421edef8b284d7d3bdb911e57aad71b12331353489d","libffi/src/m32r/ffitarget.h":"c6f77c82604629d48a4ba26731c883eb3d7a0d2938a72e2bbcd2da7fb314f811","libffi/src/m32r/sysv.S":"c5ffc450f8a17b7d0d3b7a9d30c4857a7ff05a4d5c5c7095ae9ce1ded60f727f","libffi/src/m68k/ffi.c":"8c3254a9bcd3b1b19a899cc42208a44934e356f872f9e8f3686b0dc70a979a73","libffi/src/m68k/ffitarget.h":"f29c86e1277d33c63b3e477c8660644fc00c491ad4dc59e7e7e3a86e47bda327","libffi/src/m68k/sysv.S":"be73b16b527ff02da8ca5a99c7505f8cfaa7cd61ae4bda77dd7bf97fa47d6a35","libffi/src/m88k/ffi.c":"b68709d814f848ac7c5e78e09e6fc5c7f7f05dd8d42db46fa6924838d4c8ff0e","libffi/src/m88k/ffitarget.h":"1bc2c3a5c2fdc46b0ae12cc74451fbf03213eebdc358eb545dccfc8c07d5dc63","libffi/src/m88k/obsd.S":"e0d08715e7b04238c6512c1dfc5531672d1e363aca5fdb405cb3b584026bfed7","libffi/src/metag/ffi.c":"0bb7d95ed390bbcdf952b7cf8c601718781d07f6eefad73b71e70ee060169bd9","libffi/src/metag/ffitarget.h":"3526869debe2c001b92571ddc2d1bc425acda9642c6b553f3f1fa59c55022ef5","libffi/src/metag/sysv.S":"bd79b3250234634c66103208f742f54cdd459c4eee6c18f0869344ca069deadc","libffi/src/microblaze/ffi.c":"f23f150fc464c3e6b87661cbbea1429054e0223e6523f0903a20a950c5f9a770","libffi/src/microblaze/ffitarget.h":"9a975da19167890d9fa2ed10bc9d9f570c48d284c736e6c8a2f89d2a147c4e44","libffi/src/microblaze/sysv.S":"9611afe6a3b16f43ba7b5f9bec1516bbc9f84607d2fcd461e551bc11b8d992ea","libffi/src/mips/ffi.c":"f08f4ff705b4fe21862a9585594dbe7a8b098e7c8132ff3db4bb3f5cd7bcc171","libffi/src/mips/ffitarget.h":"5bde188e23b6311b48f71bf8843ea70a5538d1af4fb1a2a1899486d69da43b7b","libffi/src/mips/n32.S":"b24a8c358e90d55a3de13965388bf1fbee37daad878886256ee3d13377e78be3","libffi/src/mips/o32.S":"ad724cef1be5081fd67b0a0167ab5e8211763722fd1712c210cced2908ecb2cf","libffi/src/moxie/eabi.S":"2cd0ab9cce028ceaed5fa9914ce01f9d3b8b2760b7f8eb11e1c4a685ddb079ba","libffi/src/moxie/ffi.c":"119c236cc6ce14ef62ef04bf6f87509750db9235840baa5a55e3b1f9184e56f2","libffi/src/moxie/ffitarget.h":"615c90a132d06a74c931971ace552b875a688c6d553a6b4ebfd88d1d7d39f96a","libffi/src/nios2/ffi.c":"b6db6e41debb710a08248cab6bc36ec92a8e1c3fd223d6eb154a8f96dac560da","libffi/src/nios2/ffitarget.h":"5d2c95eff324c1ac90c39fc1b289d1a1e09ba77d38e35407b13f40eaf458953a","libffi/src/nios2/sysv.S":"89e6ec064f16250c2e297632f83ec22add6df9ecb87eeaba9fc5bd4b62aa484e","libffi/src/or1k/ffi.c":"cd23dc722e1aa7b2d46594fe9e4c5e8788c64896592cae8470eb1a2afe247764","libffi/src/or1k/ffitarget.h":"5fb35aa442aa3cabca8ae8b2f29f849ab3e16376533184dbd87bf996253363cb","libffi/src/or1k/sysv.S":"c2613e5db24220b0db69eca54c411aaf6a9dfd9366affde065c355e81a0a80ed","libffi/src/pa/ffi.c":"3492a0f7ea75e3d6c508d3841bef8878f467386d9e206b98afb2784afeefcce4","libffi/src/pa/ffitarget.h":"d5563419c2647c3bc3f53b943b547ef38699fcb2ffdf9c891dd25a630db5d0c3","libffi/src/pa/hpux32.S":"9c64c6b493ca6f6c48e627f729cdf40cacd71fd9034f89910340209298163d75","libffi/src/pa/linux.S":"c04b741784e4bc697e82eb8be04bbcd54c49710234eaf443efbcce74327652a0","libffi/src/powerpc/aix.S":"4626e4cb0fefe1b81bfa110c65c2be79f4d5c4d7066fbb9d857bee01ec319c97","libffi/src/powerpc/aix_closure.S":"2e4f0e8e11137c9bba06c2c6493790b502bdf0c5d57e9a2367745ef09f5bb75e","libffi/src/powerpc/asm.h":"88ae9590e5880128d80b5b44e78a08a3a19027adc4d54d061e2ce0eb24db977b","libffi/src/powerpc/darwin.S":"db3504bd96da9e5e49032ebe72d718e1336f7476b6046c804f5e0e5d2a976252","libffi/src/powerpc/darwin_closure.S":"895e17b7737462dce957be858ec4fa9421abfa258e7f1d674b347e2decc2f9ba","libffi/src/powerpc/ffi.c":"e71ddf26c51e4fa6905da7540bd60b3e84b8b1c45a2593bebdb87ef3024293d0","libffi/src/powerpc/ffi_darwin.c":"da00c4af7f65dc57c091ffd3eef8809b7cc5c79d3f998750544fc209db335dff","libffi/src/powerpc/ffi_linux64.c":"f0734725bed3ab148ada7e70a8bea27c54f4752d269e7dae1421add0e90b3099","libffi/src/powerpc/ffi_powerpc.h":"4867559a7af98033b5e70cab0883d0f60ca002d2f551cb88f4d3fb789c0aa841","libffi/src/powerpc/ffi_sysv.c":"3feda390184634474602e5e231fcad9072c5a93d931f13b979cc460a911f83fc","libffi/src/powerpc/ffitarget.h":"302e085cf78c8a08ecd75a763710a63457a405c6b9d7dd9dc1c004a942a536e9","libffi/src/powerpc/linux64.S":"dadf29dc0e47eed6be85c4e5ae2fd452acd158edd6688971925d98fc04f7d942","libffi/src/powerpc/linux64_closure.S":"26ada4d38cd473380c18291e264be569ce9cc573a36b45f1742e174670e1d33a","libffi/src/powerpc/ppc_closure.S":"6df911de61a58e2e003db4bc5c6076c9e2da18244805c92edbc57586e8d74aec","libffi/src/powerpc/sysv.S":"07e60b40bb9aac673e80a841993e5bb0a66588bc286c275e4bdaffb1129da266","libffi/src/prep_cif.c":"0699a33c031704099440630d0c718cd7c4d051ccdcf64559bb4b138b6f4e2074","libffi/src/raw_api.c":"d7ea1c81fc13e9fceb0dc431bc865e224d7be1e84483039eb4ad79144ef29c34","libffi/src/riscv/ffi.c":"121dfe2d01dc27aeaf3c20941923f43edf4cbc8da1196fa8c3882f73231acad8","libffi/src/riscv/ffitarget.h":"e99d39a6622a5c1b3b0f164a89c45e53e60da2719ef15781b25e8fefcbef1a43","libffi/src/riscv/sysv.S":"20e6cd75b24b3e3061b4fdce2f6fef88b32fa33a89f01b623977ebf4c56f5195","libffi/src/s390/ffi.c":"75c81d7329e261dc1177b5c7b7817fe894f06ae66130ff295c2b41c93c2bf134","libffi/src/s390/ffitarget.h":"dc96f638d83a5678232a6a7e6a65334cfbf3f1acdec2e3572ecdf3ad1ddf2b5c","libffi/src/s390/internal.h":"357b4f5bc87ac38b5ed5a07767e2e72fb67096301f32721a385d6f573826f2b1","libffi/src/s390/sysv.S":"a49f55011bbf142097414a32395bd5050f361fca5f8d4264c96e9cde3a40e18c","libffi/src/sh/ffi.c":"b91b3b17d9f1a6587af6fe0c4d59a45c3f467f93cca552d464a0c1b4d8b2c50e","libffi/src/sh/ffitarget.h":"fb4105b6087d88b03a6d6d991e3f6f3c47c1006f0d9311262b3dd5ff76339542","libffi/src/sh/sysv.S":"aec8da0ba9c1792923ec9e937b41af529da8959448d45826bf907d0703b1b0c6","libffi/src/sh64/ffi.c":"7aa411c675749189389e88d4047dc95495c4bb159330e9ccc13c6bac0a4e182a","libffi/src/sh64/ffitarget.h":"200cdeff23918f5684a1a6ea20452fdeb74f891f81a2984a7907b97237718745","libffi/src/sh64/sysv.S":"332a0d1b527dc7e02f4abb2afed63a21d0ee89de6fd0e1c62940d5ebaebd4402","libffi/src/sparc/ffi.c":"97e79944e54749353d0477365bbf41c2e98ac159cee661943938cb0270460587","libffi/src/sparc/ffi64.c":"919f7159c80692abc7833b243f40e754fb6cb0195acb6865e20caef42d3e6b63","libffi/src/sparc/ffitarget.h":"255bcdf721e066d91f5dd20ad4868dcb3a5f523b0d8a74328f25d5d44d7dbef4","libffi/src/sparc/internal.h":"e526b44e6c13fba4931b4c2f7e398a17459ee5179a12184d06b9a5d53184670a","libffi/src/sparc/v8.S":"76d81e84943a95cd71011757a362be5c80e9efda2fc202ab03fa34696cea6785","libffi/src/sparc/v9.S":"d776dcdf2ba9063c040b9d96a761624a12e4cbdbbe79c27199d2f112016536fe","libffi/src/tile/ffi.c":"b4720cda72947c595a9c882cc9ea525a3dd648ac57043cd65f01819aeab9a558","libffi/src/tile/ffitarget.h":"8a6663cd30dfefeebfe022ce6c79e06da47a25b338bbf39ca58d506647f5cd19","libffi/src/tile/tile.S":"d9b2437e3e3d05622383caaffc7116d59d01adad8dd0cf30fcfb02785a7b1c44","libffi/src/tramp.c":"9a703c8fe8fff23bdbd02e519f9128deb82772c66b4c2e4c69565a7de380f992","libffi/src/types.c":"466735ab14f3f53b3f147c6f3ab245105e8c262e89daed8426e6e9fa569f792a","libffi/src/vax/elfbsd.S":"5b9ff613fe7061aa53dc0d058a00ef75a05c18e758741f4e37d0ea2c7ba795f8","libffi/src/vax/ffi.c":"ce63755c5a8bc7439c6b10e0c20d3f2ca6c435423583c29df43918269a9ac746","libffi/src/vax/ffitarget.h":"5861dde94d1a722b911e7ccedfca87c3a55bd90df6641075563364a5ad521101","libffi/src/x86/asmnames.h":"b1a0c704a97aa9bb3a998f7d55cae8bf8181e355249da19a53269a10d03edb8e","libffi/src/x86/ffi.c":"3e6139846fe9f13f3a3d8b89e8475da65e6f9f4253a036042dc77cdd95c98870","libffi/src/x86/ffi64.c":"1ffc5231a1a1169e74adb3e3761f7c8d24b4ed0cf131e0ade6520efcae834f1c","libffi/src/x86/ffitarget.h":"c83585125f3b244a1fe4551366f464734b97c11139ce2e2b5b4141183ba7ebb2","libffi/src/x86/ffiw64.c":"11001141251283a5626f0417860fe671a0b43e9b4c87e330e5afe68c246f43ed","libffi/src/x86/internal.h":"faf2d20939ecf17ce73e288e38162de47119bb5f7bdd4994aa434b4b7dea6591","libffi/src/x86/internal64.h":"6618077c8aa7874ee279bb1f6a2aeae50c9d2828a16befeba59af27b1c4b489c","libffi/src/x86/sysv.S":"088483db5f5a4813af965adf3a9e8f83a292db9db040852d08648370d8c1e54e","libffi/src/x86/sysv_intel.S":"4754da0aa4ace314e1d595132136f2c97dfa1572cfe4a8d284b9b8e9c476b1f4","libffi/src/x86/unix64.S":"6a842cf5a952a5a9be387e035611080685edeb723d553c2ea6d93ecf74ec0d9c","libffi/src/x86/win64.S":"1a4a1117b196094cb37fbe982e53f4c8a670bb998fdd8debedee0e74f7bafb68","libffi/src/x86/win64_intel.S":"90866da412a9b58fc60e7ee2f0bfcbc167156a78c605217c0edbbdad7532ac76","libffi/src/xtensa/ffi.c":"41845299e801c198258ec9c31bf1cce8b9d97859cd9d7055855d7b67c5cb6c40","libffi/src/xtensa/ffitarget.h":"7f883ed4ebdcbb364ce61aaef49856c538e5f4f2695fbdd3d994f0b9d26af93c","libffi/src/xtensa/sysv.S":"419107efce381aef3ebd2f4fa2015f63510b1c0fada188f5cc0f9a63947cbb1e","libffi/testsuite/Makefile.am":"8472946f6bba92359db74b6e8c222a85476ebb688c8074af5fa4cf5e89281b32","libffi/testsuite/Makefile.in":"fb3f77146bb3996c583897353195bc7db3b2c39c1e81cfa975c181723511740f","libffi/testsuite/config/default.exp":"ba6d7acd9e5eb26ec2d22a59e0e8a08c91c6dbc1a249ccf11ef00602f568834e","libffi/testsuite/lib/libffi.exp":"88d737bbbfb9b3a33a8336e156f94d3c68f8dd8a80b986de17a7a84461826c76","libffi/testsuite/lib/target-libpath.exp":"370d3aa607af39ef98fe7f5ce7655344bec8995fd6fde3edffd8a5584b374241","libffi/testsuite/lib/wrapper.exp":"405ed3691640face11e6def6a99c768d3c187570869e3d7ff70c214a36f64347","libffi/testsuite/libffi.bhaible/Makefile":"ed4de8ddf3ef14e4fd6f323a45b2b11c1f05aa079dfc8969e6942a2e92b164a2","libffi/testsuite/libffi.bhaible/README":"22e6507a2126ce03afb8254533f10992b76d91ae90edfae26d097c3453fb611e","libffi/testsuite/libffi.bhaible/alignof.h":"45027b8e0a5ed7797786d7e4a7c8585fbb08e57e1079bfdf89af2e5e98e06090","libffi/testsuite/libffi.bhaible/bhaible.exp":"8fae824122822de954e2e5c837260149aa9463d18b27544313dc097288ec5708","libffi/testsuite/libffi.bhaible/test-call.c":"ac55cd764480d7b06099ffdcffc3789c0bf617f73012dc1857647703ab7a9b66","libffi/testsuite/libffi.bhaible/test-callback.c":"59568947874d22fb76e172d687bd9135f32fb55cb75bbcbcbfd68ab11dbb9410","libffi/testsuite/libffi.bhaible/testcases.c":"9dd5d34f45aec66442012034ea99eddadae680691b0ac1ce66e9dc819e150e48","libffi/testsuite/libffi.call/align_mixed.c":"34a62c0a4043f0a30f899157d8ea9441a65f59f8a21fe06a04f038b9fc3c63ac","libffi/testsuite/libffi.call/align_stdcall.c":"a93d34762f4c4220e43b0dfd8380d5991cab9f621cb1cd3f73a34d972b9d724c","libffi/testsuite/libffi.call/call.exp":"78533a0f27c8e466beef7487a9aa19694a009b5002b542c585f47b28d3abd8cf","libffi/testsuite/libffi.call/err_bad_typedef.c":"122d7771c6aadf0ce1bb3fd6c396dd69fd5480969eb87908347321935dd11a6a","libffi/testsuite/libffi.call/ffitest.h":"ed29e1778289771194c71283d792c3ae333eaa92db92dd4bc836eaedd1ee60c8","libffi/testsuite/libffi.call/float.c":"217e42ae48c9ac82fa36015fa447a9e76ed6a1ff5da1d9dddd686bcee6619688","libffi/testsuite/libffi.call/float1.c":"1e228846e8ea9e5d193656eafc354cd3bb18f1e09c85c5ff0347162856f73515","libffi/testsuite/libffi.call/float2.c":"24caa884d8d36cc977ae35f19719adca6f9094a4ddb8f01030199f87cd615988","libffi/testsuite/libffi.call/float3.c":"2fb9ec6eb1995519bef68a53e90da89de638eca5759eefa7b6a34e130dc8a79d","libffi/testsuite/libffi.call/float4.c":"d7be087b7ccbe4861d21d97587521ec742f520fe5eb4f215419440213053a799","libffi/testsuite/libffi.call/float_va.c":"a7b602782ec356cf3fe5eaeafc8885c7d4a92ba1e938ce4c7696405eafff82d7","libffi/testsuite/libffi.call/many.c":"0d4124c1e1e7255d3a444a2eddcd1ce9db3ba3438062eaafbccd2f7a3bf98852","libffi/testsuite/libffi.call/many2.c":"df2a91dbe5fa712bfc065361ca9d77a56e2571c7bdd5a762c3053608e88674f9","libffi/testsuite/libffi.call/many_double.c":"6aa60fdcde639efdb5a8eb2517c53a37c5141c15b4772fca2af318d5472093e7","libffi/testsuite/libffi.call/many_mixed.c":"e2287d01c135aab6d2c4489da3e5b7f16587f951f5dbc9e71e4e2a96bd4d21d2","libffi/testsuite/libffi.call/negint.c":"289922cb9b505ae70a479b48c59b262d982b095e2fad2893dfa34cbbb1a620df","libffi/testsuite/libffi.call/offsets.c":"09472384a5887ee9c7ad9eaf826d59cdc0f91016a2ded82da7513abd043c574e","libffi/testsuite/libffi.call/pr1172638.c":"ad8668b52e39c6f2881c3406e71ce71ced0fff496f5c122c66bbd0b2322b64d8","libffi/testsuite/libffi.call/promotion.c":"1821acd2d2a8f3e7e6de3b0268f39c36012efb0e8911d8cf501844dee790af61","libffi/testsuite/libffi.call/pyobjc-tc.c":"1f4be8e5d0b8d74ff9ea4ea260751921ab5dcec0e9aea76bff56fe821d21b106","libffi/testsuite/libffi.call/return_dbl.c":"26362268cae344db05544550dc862596630e4643e677bfd69f152ca7cea1cb5f","libffi/testsuite/libffi.call/return_dbl1.c":"54fe8dffec639adab8452a35cfe0dbf6131a55f39623fcb7bec7d8895907a9b1","libffi/testsuite/libffi.call/return_dbl2.c":"6df0c8364ba4f41534387a01a2acbdeb4b7f4fb29393ce3c096d46b6ae473b3f","libffi/testsuite/libffi.call/return_fl.c":"3e6eab49a51ff5af9e37d33fa674fa586688b8da9f3cab04d01dd35bde73504c","libffi/testsuite/libffi.call/return_fl1.c":"c0a43a777276013a730e52c8023a063c920028a98de59a05809643ff112d86ad","libffi/testsuite/libffi.call/return_fl2.c":"eb0213894f6562b2cf55520c98c035dd602b1f13d0910010a0a2f33778b8e9e8","libffi/testsuite/libffi.call/return_fl3.c":"42a644bde778521f12be47c8b3d02637b5d2f14f895da8a249a5fb0bcdef19ea","libffi/testsuite/libffi.call/return_ldl.c":"f667b34f44f0576189d0170a373e76d1796f1077068da233a61eaff2a0d2f850","libffi/testsuite/libffi.call/return_ll.c":"0cfa1b19658a5fb944fc4a998161188303be4790f400756a33daf752d3249878","libffi/testsuite/libffi.call/return_ll1.c":"6d78b46ff6db8dbf3108c03d1d3f762566f423e76c1c5bc6b6589726923aab3a","libffi/testsuite/libffi.call/return_sc.c":"acbe68c6576d6d09eab78a226f0b0f7a80c42fed9a16ffc7a6f3ee2fe3e2597c","libffi/testsuite/libffi.call/return_sl.c":"a40b7485b2a111024b40f80e87c28af448af463658c79beedfb9a564eb2debc3","libffi/testsuite/libffi.call/return_uc.c":"0fd5566a9aa8aef8da387a6db65a357623b5c33bf90f16bdf79c0bdae00cfa55","libffi/testsuite/libffi.call/return_ul.c":"67af865e1d05fa1c6bb4b20d264a36522306f003d6a7980fabb863b6717ce9ee","libffi/testsuite/libffi.call/strlen.c":"486173b2247f5fecfec0771cfe4128ebdb463a31a4e3eeb939802d9f02f7fe3e","libffi/testsuite/libffi.call/strlen2.c":"efca20df5614c011e4d099ee9a713caa285073bf95571f7e84a0d8a9839f5b6e","libffi/testsuite/libffi.call/strlen3.c":"0257d850eb75cc4619ccc71979be9c4697d5117e513c9dca35ed1cf22d2809c1","libffi/testsuite/libffi.call/strlen4.c":"e43db36ba668f4f364c72e9920d8f40b512a36206fe71e79eb223d8e8277fc0f","libffi/testsuite/libffi.call/struct1.c":"1e5977ef0e8967c882dd6028a447ae693323a674bba52766d0bd5270dd1d9aae","libffi/testsuite/libffi.call/struct10.c":"9eff70a5e26f415f5e888c8cd1e52d9f9a652295210cd69bf3b4d031dc57809a","libffi/testsuite/libffi.call/struct2.c":"efb7ba14e478a0774b174e2e6d0660ba55536bd67ae2c0e36e732d3d3b3acd3c","libffi/testsuite/libffi.call/struct3.c":"3fddda95e560b115c4c92f3d9180d258a8c43ff72d1092cdd7726f49c9046dbf","libffi/testsuite/libffi.call/struct4.c":"4a4d83e800e1fe58ac99e00e4c5043fe0d91ca32613e966817d2f8871beff2cb","libffi/testsuite/libffi.call/struct5.c":"489a0fe2a1188f2f38cbd48ac42796907cb48a3519e18e2713b3121e81fee0df","libffi/testsuite/libffi.call/struct6.c":"fccc4060da3ddd2c4a94482bf049dbd19956f9d202db7bfbe57acbf2d45fae1e","libffi/testsuite/libffi.call/struct7.c":"0c261365d2dd64af05069be92ebfbc114b0bca1294a1277841d799f4f8f11cef","libffi/testsuite/libffi.call/struct8.c":"77604032b9b67aaf2ac96c61d959aaf59b0a9da8b9cd1c43c8d53701bf3d31b6","libffi/testsuite/libffi.call/struct9.c":"1070395e78175c93b43f25a677abe104c5de0a697a04b879c7d1bc12c9b49f7b","libffi/testsuite/libffi.call/uninitialized.c":"87bd46aa7db3937e5fd775b972986516b3907af7aa932ecec950a9df91269eda","libffi/testsuite/libffi.call/va_1.c":"9cbf272c3c5514023f5f23182a1402e4e5ae92f8edf7cdafb4202a1665d7da52","libffi/testsuite/libffi.call/va_2.c":"65e7f0647e4c4eb4be87fe19baf7d01c849db3580bd1c6959fd8048bc97a23d3","libffi/testsuite/libffi.call/va_struct1.c":"b40591c7de5412a4a575d9e7f96aac21dfcb2c4d94ac557804fe39102a07d7bb","libffi/testsuite/libffi.call/va_struct2.c":"eea32b1dc4f4837b9225fef90dac9fe2b4b752ee7ba63b3e3893a9d26fc7f303","libffi/testsuite/libffi.call/va_struct3.c":"9ab6a696d5c4aaaba6b7bc1b775b9b3462e6b7c7b26b6a1a6d643ed2dc51ceb7","libffi/testsuite/libffi.closures/closure.exp":"89a24bf7dd4cc583738da5a1297810b294fa8fb47264a59c0ca5f48a417b6b4a","libffi/testsuite/libffi.closures/closure_fn0.c":"856e1acc1f0a4068bd1a44f6c6179e42019c55d3e422ef28e4f2d406c00d5e99","libffi/testsuite/libffi.closures/closure_fn1.c":"0685203e159b44388ce63dd4ea86887febb31c7a46dd7b3e00a55dc972cd115c","libffi/testsuite/libffi.closures/closure_fn2.c":"5a51a966e23d18aca911dc321560093025571d2c2be3bb5ca0238d4fa8049d71","libffi/testsuite/libffi.closures/closure_fn3.c":"870861c2df4f07aba46816cd8023debd5ae937d7ca66dc5c30f83b616a0a7070","libffi/testsuite/libffi.closures/closure_fn4.c":"e62902d14643204403d9195a57f2da8ad348bf4c0a114be55a8978cc0a66de2a","libffi/testsuite/libffi.closures/closure_fn5.c":"141e4c2434392a639ada3daef28947b5b15db282cbc1f469d796ba9006b6f593","libffi/testsuite/libffi.closures/closure_fn6.c":"707b03ccf6cc836bd565e4e565d06b0950d05d52a74bd59804b878f170452d85","libffi/testsuite/libffi.closures/closure_loc_fn0.c":"b3edae2a6a27231330c555edbbdc66f9e1993f1701f14cf5d12e981273ca480f","libffi/testsuite/libffi.closures/closure_simple.c":"2f2023e51bb7c6bdc1ea2abedc32ec35ba0191e733994328419350475c610a8e","libffi/testsuite/libffi.closures/cls_12byte.c":"d079bf4fd04a501eaeed273e172c698c502cd5d8a5d43b826864225e391a0e61","libffi/testsuite/libffi.closures/cls_16byte.c":"6453a6f302d814249c2e0a6a29234b8b03bdc4e273cabe54280f20193c0bc0bd","libffi/testsuite/libffi.closures/cls_18byte.c":"219264582d099590a0f9caff47b4d6911f4cdcd118a96b02b34f0846789d81bc","libffi/testsuite/libffi.closures/cls_19byte.c":"ddf35a3b3cf53a2d5c40f6458a1d297f6cc5286e14f709a6d0f2712500cb5960","libffi/testsuite/libffi.closures/cls_1_1byte.c":"a4a04bf283e8805a8554d6d5fae373bdb727b1bdbb503cc6e97efc43fc347eca","libffi/testsuite/libffi.closures/cls_20byte.c":"6d9174b1ac18e7ca0e6373dfb94654539368b6d6c08a1401068341a76fdb77ca","libffi/testsuite/libffi.closures/cls_20byte1.c":"a54fa19c5a02495df10c1684f49edac4424f3c96491e57a04b345febcdab823a","libffi/testsuite/libffi.closures/cls_24byte.c":"0fbff7c1db4478c25547e56656c039d012e26278c10914505d090d6d68a72057","libffi/testsuite/libffi.closures/cls_2byte.c":"268e49d3bdba53b10ea1b31e7db68d0d6010067ac15d3bd8b985388185888bf0","libffi/testsuite/libffi.closures/cls_3_1byte.c":"66be57d80b9b424b755a7a47982a87df22a2f0afd8d1fcaf68625acd1d722c66","libffi/testsuite/libffi.closures/cls_3byte1.c":"0cf03630371a76b40acc53ebf4c23318a4bbaf96cc2e32e690c7035e1281d030","libffi/testsuite/libffi.closures/cls_3byte2.c":"2dc56ebe102db45c139270980d4133a8daa57d2808c7f1b3a683617c186cc9a9","libffi/testsuite/libffi.closures/cls_3float.c":"897f4a41986f7bbc1bcd9e8a0bec2572442192246a7e8a41903fc5ab351dd708","libffi/testsuite/libffi.closures/cls_4_1byte.c":"22b02c05fe39664ff9b74c7cec5685b66d83e4c651734ddfff2e7dbd46d473be","libffi/testsuite/libffi.closures/cls_4byte.c":"08174a7a85f1e7338d7307a0be62ee626eb70bebc8772037334124fae0648e9a","libffi/testsuite/libffi.closures/cls_5_1_byte.c":"ff7d907ad4f58eb91273a753c2ef625c67452ab107da2d6bbc5fd9a997346033","libffi/testsuite/libffi.closures/cls_5byte.c":"5b005de20877285e651a6e7447774def2a4dc26d8bda38e111d1a39da467e9e2","libffi/testsuite/libffi.closures/cls_64byte.c":"b3f1f0b98f82bedd4ad3279e8ce322c57ae0c76bcb9a3ce4f537e7fe8899cd9e","libffi/testsuite/libffi.closures/cls_6_1_byte.c":"020f12ff9ef45f21b218e8034f17a5d13b4aade8e17d3595ede38044618b88a6","libffi/testsuite/libffi.closures/cls_6byte.c":"eaf31aaee94219885e8acda24479cc125328b612c9cda62f1b007783868c9294","libffi/testsuite/libffi.closures/cls_7_1_byte.c":"b1349d06713e63cdfb919e6698bcce2213b8d7d1b37e6518ee8868139f0e9a4b","libffi/testsuite/libffi.closures/cls_7byte.c":"5ae557d33a5097c64c65822c9aa484e148fd415add4651a75883e8aa3f7e6de5","libffi/testsuite/libffi.closures/cls_8byte.c":"87e7104e14e6d8ee0507b09a5fe82450ec80589cd68abcb9f6080d27e1433e68","libffi/testsuite/libffi.closures/cls_9byte1.c":"bc4a69197cbabd18120101a4e448b4b0a0400149812073ee5db8bffc579615b8","libffi/testsuite/libffi.closures/cls_9byte2.c":"e5ee3ac43fd88b5601bf390c545b058281d06b209725bc1fe8c7d1f2fffad561","libffi/testsuite/libffi.closures/cls_align_double.c":"368ee2df030fc5766986c9361f6a3298708ebff6a4981428af9a62e98cc3c114","libffi/testsuite/libffi.closures/cls_align_float.c":"d1f9abc023af2425ff129f3d62f200619b17bf0d4c1103bf19d2ab7d52af7962","libffi/testsuite/libffi.closures/cls_align_longdouble.c":"6664124a5fef9f42dae77af940f8b7d855003c0a48a7a9fef09d2d94b3932a80","libffi/testsuite/libffi.closures/cls_align_longdouble_split.c":"ef9b3a79e8db161b81f3e896285049eba7f2fe02f21c2946ccc7f064bef512b1","libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c":"44bf979002488ecdb2fb22e6a1962743aeea9079259d670be1b62adf8ad4f950","libffi/testsuite/libffi.closures/cls_align_pointer.c":"56358dcc17812f6fb8dda00d4a5e1a51f5eb401e2a7c046161f7db081aefe4ad","libffi/testsuite/libffi.closures/cls_align_sint16.c":"7f44ab9aa6c766a3827f1a8fd93429d3be02d0182d4a8367240ae4a6f4c1779c","libffi/testsuite/libffi.closures/cls_align_sint32.c":"603d1f3dcf34bbf32b84d286ab3a37b11740fe55627f9a49d5325934dfc4a42a","libffi/testsuite/libffi.closures/cls_align_sint64.c":"41ec9a55eb0d35c2d59d2fa168cde5756f1553c6cf3289ff0db0544b399b9969","libffi/testsuite/libffi.closures/cls_align_uint16.c":"2178672b8c7bb205c615e1f26404f81b92ccafbaf426027a21f0228cfd62a2a9","libffi/testsuite/libffi.closures/cls_align_uint32.c":"771235190d0f75ba3355373c8c31562357108f7a6a42268edb187e6838adbb2f","libffi/testsuite/libffi.closures/cls_align_uint64.c":"2114882f9e65192fd9db0f4235ce33af50da5d0b5d529e02a111646bcefbbafd","libffi/testsuite/libffi.closures/cls_dbls_struct.c":"25985f6684039cd124c55adfebc68b7836959a235483523cc34cc80a9e068479","libffi/testsuite/libffi.closures/cls_double.c":"9222406230bd89d001ecbb6480577594b11e1349e36fff4575993002cce8e052","libffi/testsuite/libffi.closures/cls_double_va.c":"986ba40b433450cbfde12a85a9098f34432c5b6b0f2255fff8848256d424bce0","libffi/testsuite/libffi.closures/cls_float.c":"990fe5579a8ea1c1afc59002b4f91c6cc1b553c831a197f37f64d74ead52a2eb","libffi/testsuite/libffi.closures/cls_longdouble.c":"05488c722a4f2b042f19db09de2c29d79a6760ba72612eac87d6cb4d7b45ee40","libffi/testsuite/libffi.closures/cls_longdouble_va.c":"50bf5a7ffec5bf49556fd3fa609a44583868a8350ad3f2b263c37ddc645a84b7","libffi/testsuite/libffi.closures/cls_many_mixed_args.c":"1aa7f241f87554ec03f6cb68c2f3082fae158de4cd9f632d72815d2562dded93","libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c":"e4d77d7429534df9a6e265ebac43dd25ea5fb3f5a4d5f740472245f78938830c","libffi/testsuite/libffi.closures/cls_multi_schar.c":"b4edfaea6f2629a1b54050d038789dfb11a7fd4b556e36c09e88542bf60425b5","libffi/testsuite/libffi.closures/cls_multi_sshort.c":"2e17179cf8bfef70a305154bcf3ab6f197c279d15b7d5f0e89c20ef54eedbd0f","libffi/testsuite/libffi.closures/cls_multi_sshortchar.c":"16f33c7a49b2abb7eaac15bcf5b75e948ff153f99b00d3777393982fcc4543e9","libffi/testsuite/libffi.closures/cls_multi_uchar.c":"d3d5ba3895db7b4eb64610e4028d83ec591893e13501efc38aff2a60af0a9dc3","libffi/testsuite/libffi.closures/cls_multi_ushort.c":"40d038906e71d2ecd1d92c47ff92ef136ee7e41552c3b1f46648c7f0db193f98","libffi/testsuite/libffi.closures/cls_multi_ushortchar.c":"ee7ae0dfdb1d1ab0c500d72aad70d81a8b2b4baa4a474cc3db76fb087400f825","libffi/testsuite/libffi.closures/cls_pointer.c":"09f7b0f5a8d31adeb697c3b86105670de5a9801795af9a0251da1308e0a7f6b4","libffi/testsuite/libffi.closures/cls_pointer_stack.c":"5ca2f303fa2b6b74fcce7882cf085a54d269cbfb031227289dc6247d4bb39dae","libffi/testsuite/libffi.closures/cls_schar.c":"91378edb40b70acd1d255fca7f9fe9520b907a415033b78cf505320566dc48a2","libffi/testsuite/libffi.closures/cls_sint.c":"75633476981041e5522c9c66449874ffecd8b6a92c57cb7d73ab5532a9d06e6a","libffi/testsuite/libffi.closures/cls_sshort.c":"67d616368335a73f3f0c85314398b3af472317519869f7b80286302f8ec06525","libffi/testsuite/libffi.closures/cls_struct_va1.c":"5465f274668a6ebf69a8236a399a57caeb553775379a26258211b1a5efe723d3","libffi/testsuite/libffi.closures/cls_uchar.c":"a796a7314238e8dd606c245ecc186040820c2a588142dfda9c09da77a3f9ba15","libffi/testsuite/libffi.closures/cls_uint.c":"565549dbb3ac4ac8cc01727889ebebd9cd4da646efda8b3cefc40532acc1a959","libffi/testsuite/libffi.closures/cls_uint_va.c":"cb37554559dcbe54c05201cf8699823c67572819eeb55690497261a51d1def23","libffi/testsuite/libffi.closures/cls_ulong_va.c":"58e3d220d60d7082fb16858fac88cd3eaca71c11ec08a85d4b1d601cf637c2dc","libffi/testsuite/libffi.closures/cls_ulonglong.c":"dfb40e4223315c913b765c46ee68d4ccc63674070a1f3dbda423fe9bd96dde0d","libffi/testsuite/libffi.closures/cls_ushort.c":"eb8885e7858b7269667f5c4a45eca0dbea08b865e688c73c5a2ea191d200b107","libffi/testsuite/libffi.closures/err_bad_abi.c":"8b91e09447f99fbeacd4c73936622be3cda89a1337df928cd8aa4fefa95a53fe","libffi/testsuite/libffi.closures/ffitest.h":"ed29e1778289771194c71283d792c3ae333eaa92db92dd4bc836eaedd1ee60c8","libffi/testsuite/libffi.closures/huge_struct.c":"f656e7ce2a1f9d806444e49909b6f30048e126d5607614f0a08cb384dac7b0da","libffi/testsuite/libffi.closures/nested_struct.c":"09ee5d0ac4ee1bdf83923a8832348b50a4e04e8a91eeb06ef28af99bebbf789e","libffi/testsuite/libffi.closures/nested_struct1.c":"69ee0db5d9f1291e66ea23d4c35ac23c3b52f34964c8c64605f2c18dfa07d0c3","libffi/testsuite/libffi.closures/nested_struct10.c":"9b1fa1126342551ce8d8f24946ebdbd83b66d249cff689f73b21e051e8afeb1e","libffi/testsuite/libffi.closures/nested_struct11.c":"aa5f7d10f2995a38b90aaa98a92677306550cbe3474dde58547057a3a3d4519e","libffi/testsuite/libffi.closures/nested_struct12.c":"95ef7b8e6c32a8cc88d92bd56b767df8fa8636ad2df304fdacdca58fa710786e","libffi/testsuite/libffi.closures/nested_struct13.c":"60e950cf6fdd5ff97a1bb902749f094d5a75a561d3205e0de54edb5ab80f07b6","libffi/testsuite/libffi.closures/nested_struct2.c":"d0be86fca766a94e83e8b75597ae1d5ed0890c6bd6f0101938830bf5fd9021e4","libffi/testsuite/libffi.closures/nested_struct3.c":"e96c92ebe423f51acdab5542e953704c2277b051fb5ddc1915184a37cd93c55c","libffi/testsuite/libffi.closures/nested_struct4.c":"9267d93d93f246ca8132c30189694b5b1c1e59d0a8d09e418d05c1fc7f2416ef","libffi/testsuite/libffi.closures/nested_struct5.c":"4d8c4adb124206b317f9555dbb725c63614f317b105e7afee6682ce3dfcf1218","libffi/testsuite/libffi.closures/nested_struct6.c":"44bd261fc6144fc7346aef3bf13b0629198ee95348e4845ece0e0d7fd48854a4","libffi/testsuite/libffi.closures/nested_struct7.c":"bab9981f0bbe5eca4213d14c8759d0a826a8ad363506e69864efa3d194e56314","libffi/testsuite/libffi.closures/nested_struct8.c":"fd27d751765c06dd507f7daefbc57cd8012ec540f97f96d48035612a4ce61a58","libffi/testsuite/libffi.closures/nested_struct9.c":"1e721cab668da970814deea3253ee3949063695137d1d2855918be44da8259be","libffi/testsuite/libffi.closures/problem1.c":"1d559c27e0cf2c44da6c18636ccdcb5456af2b0dd633b8907725cf6380a7f3d2","libffi/testsuite/libffi.closures/single_entry_structs1.c":"2834fe712124f352c56e5831d4ce09856b3ea8943b282d703883fa4281643a96","libffi/testsuite/libffi.closures/single_entry_structs2.c":"e7eefc28755c2c3e81880913f4a204e67c25ca417d95871b3dfe110425967abc","libffi/testsuite/libffi.closures/single_entry_structs3.c":"fadfbf2746a8fa1b432181175fabd750ed9ebdf3337c5b6a47f82ae6861bae2a","libffi/testsuite/libffi.closures/stret_large.c":"d711e83fdf28845c031ad3c349610d6d0e87d0711cd0d05f1a53422003d18aeb","libffi/testsuite/libffi.closures/stret_large2.c":"730c5fc454e296748557d7f90ffbd090cade6b6f9e02fc2df7760f9130a63805","libffi/testsuite/libffi.closures/stret_medium.c":"37c33f6761accbbd61dd84fa477626a308b212fb756b6b81a9888d8c61fef18b","libffi/testsuite/libffi.closures/stret_medium2.c":"f83ed4cd9ee2ecc99ae07af56b7cbc2bf38fc4fc6cb90969d06bd2b38362cbe8","libffi/testsuite/libffi.closures/testclosure.c":"00b0919174cb025a3a7548725ae70a5854f18850a3506406a44f7f15fb9119ba","libffi/testsuite/libffi.closures/unwindtest.cc":"8cc4df0e3c00c4bddfa71afb97dcaa9aa06aac29b55441f884b7ba523d761a39","libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc":"04dee690a23bb135cabd8ef133deda35d879e1f520cef197899d8bacfe37483c","libffi/testsuite/libffi.complex/cls_align_complex.inc":"8f16fa6b099b91b9ee9b17ce48764c9316a21e0ac6f0d4c558f38b786046ec2c","libffi/testsuite/libffi.complex/cls_align_complex_double.c":"1d7b390c946dd82d5b589878cd7dbcd51d4745aa7dd6b911200e86023d25447f","libffi/testsuite/libffi.complex/cls_align_complex_float.c":"e731e5e97859d92ddb3b35b40f19b29c728a7a6785f62276d4c77f17cbc3931f","libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c":"529249c43e55c62fe05419aede98fda5d37760e1e8a758b46cc4f419f44d29d9","libffi/testsuite/libffi.complex/cls_complex.inc":"7d39f073da37e5dc888af4eab0903225a8406ac2ca2dfed426c10b2b76ca9d82","libffi/testsuite/libffi.complex/cls_complex_double.c":"9363097ea0942d1e187191045e370d1a7ce38f9ef7507ad97685256d239dac0e","libffi/testsuite/libffi.complex/cls_complex_float.c":"c5840699a27c6a00af3a8166843401fd7e331eaa3e95ea8c894d49c7cde6a956","libffi/testsuite/libffi.complex/cls_complex_longdouble.c":"7cb2cf513c87f7ec84ac1004d71f5fb1eade769550c8966992ad0ad7881e1133","libffi/testsuite/libffi.complex/cls_complex_struct.inc":"80ef750dfc3444b703e1a36daeacb3fb00e8fa99b32273790d71a9a26b733260","libffi/testsuite/libffi.complex/cls_complex_struct_double.c":"bb6b3f66a0addde784a52f1aa83dca918cd1083cea5769bf9d24e86a4ccbe537","libffi/testsuite/libffi.complex/cls_complex_struct_float.c":"a98bd896a8b5cfef33fbba595e1fe9be5fb6ad72918809d13f43181762e1cc74","libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c":"371418e03f4fe162d484866662df75e4bdceebcc1189925c85c21f7d39386ced","libffi/testsuite/libffi.complex/cls_complex_va.inc":"4275e6e4ab6a7567b5918f459cb2abb38f5c0859f288c0a2973aec405590127a","libffi/testsuite/libffi.complex/cls_complex_va_double.c":"023b67dfbcf760a4cb063da0b027a5995166665ca5487548499275907dbc2298","libffi/testsuite/libffi.complex/cls_complex_va_float.c":"6c1875b8ef67b48471e6abfa9f37d2d63a4aaa5225dfd2d515cabfd96c3011e6","libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c":"1bd7de83d4c0a80aa3dc2631a57909cf0290d8a5dc3677a174938736ede1c614","libffi/testsuite/libffi.complex/complex.exp":"cca150ff76198152d2b2cab3b8369b5af46ef69b312421ca1559398fdda328d8","libffi/testsuite/libffi.complex/complex.inc":"cc99177798ecb57ec45b791809806454460d2a3800d516b355101b4f23e2680d","libffi/testsuite/libffi.complex/complex_defs_double.inc":"15546188e5a06871098b5771c98151af22aefd01994d015f3f484369e1320fac","libffi/testsuite/libffi.complex/complex_defs_float.inc":"b74338a2b1ee2dea91d5bc3a551f5380a9dad0a79ddaeb9c7190dfc15f6dc027","libffi/testsuite/libffi.complex/complex_defs_longdouble.inc":"d50b1665657ce8386a33883450765a659a9e048d3bc66caa51438fd2fe4c91e7","libffi/testsuite/libffi.complex/complex_double.c":"5f9728631636700ec358d15d7b728639854c6b11c68942d934a1d43746b6f5a5","libffi/testsuite/libffi.complex/complex_float.c":"8b338e72735a326e44c5e4bdd298be09fe83f6bbd50bc1cd6adae910f2aa7eb8","libffi/testsuite/libffi.complex/complex_int.c":"5a2db2bade15d626020ef4ab79dbd5da38b89d2f9d4bd3a54ca183e2caac8f3d","libffi/testsuite/libffi.complex/complex_longdouble.c":"4aa805d660ab74199467c43f091b20d46a1d7e029eafc14cf82cde82927c6783","libffi/testsuite/libffi.complex/ffitest.h":"7f5bae05440e1ca8be4259a8b2a28958ed76d78b6fd77df401ac5d669c3dc877","libffi/testsuite/libffi.complex/many_complex.inc":"e8f2557af7513191d27425e562519095031a619830cac9bbcd0b36a9f5d3d9bc","libffi/testsuite/libffi.complex/many_complex_double.c":"5b9059dd34ff8fdb5f7cb0fb351e5feeab538596281f9ac204389396cac239b7","libffi/testsuite/libffi.complex/many_complex_float.c":"cef6f14295c99313bcd05105b9ca43360f8fe7532f7494bb8f629caf71176367","libffi/testsuite/libffi.complex/many_complex_longdouble.c":"d59c3ab56654d83563ee162b07faa4628038a7f776f9b3cbd50c078d7b95dd15","libffi/testsuite/libffi.complex/return_complex.inc":"93915a0c784c3383bb8480f96871384a2ac1847b097cbe69d619ab307c5fc2d6","libffi/testsuite/libffi.complex/return_complex1.inc":"3cc27239e2f5e0fbeff661b1f59c4325dca27702b3b805471f842ff14d3995a7","libffi/testsuite/libffi.complex/return_complex1_double.c":"0d1268b6e8bc6af5d1b8aa0249749f8f405ccb6b8464559dfbf500f5032af481","libffi/testsuite/libffi.complex/return_complex1_float.c":"fae681c372b0c3acf67685e3276629c3908f05b47ef7ac7601bf051bbbea3c9b","libffi/testsuite/libffi.complex/return_complex1_longdouble.c":"38db54c312c994be3ba90d932753211fe5d7cea24a60e516ebb8bc2f30eca310","libffi/testsuite/libffi.complex/return_complex2.inc":"86b98bec9ffa3f3a0c1359d0245c02f01068eb82246cc1d3cee22f80324117ee","libffi/testsuite/libffi.complex/return_complex2_double.c":"74663e04a8f9e0b6c1ff1607de1d36ae08ffd9512978847b74a8104b5e2b0e6d","libffi/testsuite/libffi.complex/return_complex2_float.c":"4f86a6a7cf4b901cf5aa282b0d8cf5f95e292eea3d6e39582fe863c12e95c365","libffi/testsuite/libffi.complex/return_complex2_longdouble.c":"6a58d12076d4674182f5a9fb10172c2d4de220775e8c3ace93fa68590a8f2cc5","libffi/testsuite/libffi.complex/return_complex_double.c":"d99cc7da897f116e0f129c69097a7dda4a48029e1a9caa61f0b3f3fd0597fc9d","libffi/testsuite/libffi.complex/return_complex_float.c":"0439d4c1204361227f0d628a4e749554bf0799608af7056b85336dcc323f1dbb","libffi/testsuite/libffi.complex/return_complex_longdouble.c":"9ba9b81867e143eea96ae1088d83304201d7a9c15b850aa5f32c6db98148707e","libffi/testsuite/libffi.go/aa-direct.c":"dfd5ada446cbe8d4b13f9109cd685014788752eeb24870023dc0de57dc7f9081","libffi/testsuite/libffi.go/closure1.c":"71653402f2e619a328822293df880432be8a99075463af1b612f13d0652d99ce","libffi/testsuite/libffi.go/ffitest.h":"7f5bae05440e1ca8be4259a8b2a28958ed76d78b6fd77df401ac5d669c3dc877","libffi/testsuite/libffi.go/go.exp":"b8c688a6151c1ee7814232cda1c073041d3b85e2f65a45db7402362752533070","libffi/testsuite/libffi.go/static-chain.h":"b3f47ddb1deebf38bddc38f2a66ce648c569a1e794b05d5071211d9490868a9b","release.toml":"49c9c5af260601acda8f67b11963727c809657a78add3747607e422f336e6aca","src/arch.rs":"71dedcec4200da68454193d6ad3203f52d49c35836c3044eb98cd7e8332dfcec","src/lib.rs":"7679c752ff948c3f32baf09ee12c0342a46f5a4ae2ac37307b7d93db1321300b"},"package":"ab4106b7f09d7b87d021334d5618fac1dfcfb824d4c5fe111ff0074dfd242e15"} +\ No newline at end of file ++{"files":{"CHANGELOG.md":"dd4d2984112b9aee0a80b437126f02665e6e23ae8d0696a647ecac1137311271","Cargo.toml":"a0f9a273fe63246e24833e61a9629875194b932c4136b50c17e6db78cc5a9c75","README.md":"bacc6094b142784d9a0575b58a91aee5b4f515910d436cb230d958584df78e11","build/build.rs":"dd746bfc0899ca5fe1cf79b12aee942ae4826c2292cac2ef5569b7bfdbd4ec3d","build/common.rs":"5d96a8263e7c251744f16dfc937aec7e7ecad1c2c093d72b0f041191e09fe98b","build/msvc.rs":"da15ac684d90e5aa141ffc9849a0907bb2ecbca2c7819e2c63e70584fa1aef8f","build/not_msvc.rs":"fc6447cdedacd0895f40ab6dc0072e7feb2c33bd3d9db34866586c6fc887dd7a","include/msvc/ffi.h":"b0e28fd4fbfad275c8dcea5a5808ed9171a0e0e334e489c3d3c71681b32f27fa","include/msvc/fficonfig.h":"8bfe55a95c3fe2e9f54373779a10e95fc1b39316640abea9eecae741349a1897","libffi/ChangeLog":"79562174e734e897a96f9c6157ea74109c040f7bb006deb43f04db2f6ca9f3f1","libffi/ChangeLog.old":"277de718097504206029f3b40a92928132df49b2dbbf1f116c21ee735c199499","libffi/LICENSE":"2c9c2acb9743e6b007b91350475308aee44691d96aa20eacef8e199988c8c388","libffi/LICENSE-BUILDTOOLS":"e67978cd18816c0cb7d29aaaacde7b7447402c2fb321a051698890a8eaedda94","libffi/Makefile.am":"276a13eec5a9ad3fd854f37a0a71e94ef1c252f89f41f02b1e2897ae93ac96ca","libffi/Makefile.in":"ec034025e470579658c07224f289231ae505346ed63060145a4347945b84f11c","libffi/README.md":"cbda19337f164ab49f601aeb4cf5e0cd6eb96fc6f32bc82e8654a63f90f56e00","libffi/acinclude.m4":"6bcd54d4989aa371355c27b34c9e6887ddd726b342bea046ddf39bce23e76ccd","libffi/aclocal.m4":"a01a2a7649a675e07e2fc901826f994c4765d7055f808ae526610436442508a5","libffi/compile":"c207b390aac6323062b982214a6c63448e53e6911107993abe96f35fe7a30a18","libffi/config.guess":"cf610daf8afdedbf2110abd79bdd4121d59080cab5ec46deaf67f97273bb6bda","libffi/config.sub":"deb02c26f43b2ea64276c9ede77ec0f53d08e6256710f3c0a12275712085c348","libffi/configure":"0327c5c52f18eb75957e9122e5d5768479450b58dd28aad97eb86580db427480","libffi/configure.ac":"b78dbea3292cbe4454c778009dda02b0a41a39fea218f850fd40949e1454e86a","libffi/configure.host":"3fca6a2bc2b89bb1aba326268e35684d8f3230aa2cb08ff88a38f530347b1e83","libffi/depcomp":"e44b49f71b265788187993090027193a6cd2b4718f9aa7be34412f537bce6873","libffi/doc/Makefile.am":"9a56679034cebf73189c4d4d689cdeeaed2f6af68945cc9d52a3846dece0567b","libffi/doc/Makefile.in":"8a47edd5bb2c5d40a6c0dfa7d2cdd5a45f36be2ce2e09af59831dc404a6ac818","libffi/doc/libffi.info":"f7481e5e3817a91d6c746b69f0b2708470b802bb2a6834b9a82e9f71b661fb62","libffi/doc/libffi.pdf":"aadafc0dd1ba974f62e680b06eb56dce8639afe9d6f2cd88d224404048331a1b","libffi/doc/libffi.texi":"f4c2ce3f2aff75b357506e5416d10fbc426d566f91721a549fd0308e3c1db50e","libffi/doc/mdate-sh":"d2cdc464a268dfa3039f3c7f32f3d0901f8be3dab26645abe45a1a25c05a5a20","libffi/doc/stamp-vti":"a49ca9a0083e6ecc1ac95ea84aaf3bbf6addc0a3aa3e4f55f5e8452875a8c900","libffi/doc/texinfo.tex":"1d33f69c72e9bcd880fd02f2153c6475fc887042ae87569256cd8be009ce83b4","libffi/doc/version.texi":"a49ca9a0083e6ecc1ac95ea84aaf3bbf6addc0a3aa3e4f55f5e8452875a8c900","libffi/fficonfig.h.in":"e4d016c7690f82469d7eb52487e56c3c26429c5400f7f86e056b12e54a746ad3","libffi/generate-darwin-source-and-headers.py":"0c18007a44b1f6d2409b569316e90372d1994c3858508c3503d76a0561ebedc3","libffi/include/Makefile.am":"8871b1d64ee11480512d1aa05b6fb0c41d2778e46bc2c3f3bdc3a28bd97417fc","libffi/include/Makefile.in":"b442f7c8293141cb36d3e660741058e30be961534f86a175164eb98bc00dc84a","libffi/include/ffi.h.in":"f1b72e1162a55ab007cb7756d2bd6f68ae1a99e7dc7177ea6201aee8790e908d","libffi/include/ffi_cfi.h":"165495aafcdb15ad48340b8b9906514032c284db3db372c31e3f4d6b35888dc5","libffi/include/ffi_common.h":"2b3f3d2ca1b16d6ae98d6b27ca0467fcd7605847b14cb681e844e51dea11527d","libffi/include/tramp.h":"ef20dace99925672167a5f3b3898299d462ace170f0b90ca47fd36b30cfc7fbf","libffi/install-sh":"3d7488bebd0cfc9b5c440c55d5b44f1c6e2e3d3e19894821bae4a27f9307f1d2","libffi/libffi.map.in":"e723c6bc3576b203d5d50bd6f1c9922b11c1fbe33ebb278958145692facd78e8","libffi/libffi.pc.in":"0828aa34e7d8bf5c8007e897ce12459912e7ee491e1c17377432c8bf204704be","libffi/libffi.xcodeproj/project.pbxproj":"c6882d75d392276a42e58a92917a59533a1f9b7c03d99074b05c1706d4d4d71a","libffi/libtool-ldflags":"953d3a071dd9c49b5b066bd9aa6cabf8b003219f0419e211574964272672e1f5","libffi/libtool-version":"61706b83474fd1849b09cdda735556f686b9a26fb6eb5b0f91ba18dc91bdad19","libffi/ltmain.sh":"081520d00d2d90421cd2756efd0e28aae8fb64f76c3f431270a12f1d646897f5","libffi/m4/asmcfi.m4":"370d6bd9896c51201bec2da86cba7034b1f61e224d9e2ab255aa4b61b04af8fb","libffi/m4/ax_cc_maxopt.m4":"5d8cfaa4d8df0f358d147cfd65ab425b0698076fc1256ffe49dd0ca50349974b","libffi/m4/ax_cflags_warn_all.m4":"6b7e9262cb6c09096f8d41760903e27c9b32168eef8f6a90e2e85d440e7d6623","libffi/m4/ax_check_compile_flag.m4":"629dc6835eb1e2bd586fd842a4db66541bc442bcc2b13d6f24907631c5a688b0","libffi/m4/ax_compiler_vendor.m4":"24b2b62d04eba03d112d49d8917c4c8c74d3958f01b49ddee0cb8937c9622352","libffi/m4/ax_configure_args.m4":"6b03141f467ea653eed74bb4551db6e376527426684a243a8e723d1ad11e30e9","libffi/m4/ax_enable_builddir.m4":"e63154501a33a7dba2621e14744f490482e1bc59ae7c7de2e53915ba8642f30d","libffi/m4/ax_gcc_archflag.m4":"14fae97a5f044e8b5125638a54ed43be2e090c52771aa4955262727437e78fdb","libffi/m4/ax_gcc_x86_cpuid.m4":"eba1884e575cb1e6e4174777fd708893982c355ff9d07f6cb0aa59d0fd66de0b","libffi/m4/ax_prepend_flag.m4":"aeee27590bf7125f7c2efa3c9b4ee13b48b9651efbda73cbfc56d54e4dc738b7","libffi/m4/ax_require_defined.m4":"d870b21e817747c6a61a9dd72e06ea45f87e012c7a1a9aa5ff90cd3af89b3774","libffi/m4/libtool.m4":"a0d44f9e9c469b70be2eb28b6f127c8fa5d771d60fa5ea31bf0f5e98ce184cdf","libffi/m4/ltoptions.m4":"f3d4ed0426501308028dd7690cf343cb280479d637a2ebee6c289ec2e708df3b","libffi/m4/ltsugar.m4":"0896f153a5a40546566028a4272642ae291532f3e65c25fcae950c8812b8c265","libffi/m4/ltversion.m4":"2a6baf40b64f34234e0b76c7ff62b01a1f6bbf60089f4f74506b49f800ffaf9e","libffi/m4/lt~obsolete.m4":"8533006830e1ea9625fc5e4c060e653eedf9d5464a9b2f5f494244ee272e2e2f","libffi/make_sunver.pl":"ca40d3458893e03a90807be87d720a59e921ee6bf678c6696779d635004a261f","libffi/man/Makefile.am":"d9cbd9cf52fec3d4e9f1b4694ce1915d05dee93d8d9817447dd63648b4577df9","libffi/man/Makefile.in":"8a7838fa3d82cc76e89b7af47a3ac9261ea71ea10fcecae45f8b9f812833668c","libffi/man/ffi.3":"aa4730e114c305943a2226a524ed8447dc6b66a184523999868e5433c2c9de74","libffi/man/ffi_call.3":"2817ce7b78cb737d7b85b18b45899470f5f565f990d056d3d8cfabf6d779477f","libffi/man/ffi_prep_cif.3":"f60c5bb9d04b55988da13511a2c3edfa0f39fb6f51abfb8ac24d0b161c4169c0","libffi/man/ffi_prep_cif_var.3":"9365685252f33f13627c9303bc01883b764227132069260c19e94100ff442a51","libffi/missing":"a9865db4f39574ff128c0312c367f070d20f81847817021ecce95fd70a610c9d","libffi/msvc_build/aarch64/Ffi_staticLib.sln":"e23ef14e6baa2785fce0a8e9f9759f9380a1034ee7c0fcb9514e0b633e88fae5","libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj":"8171504c3712e969101fd723e24b287a60261593e214bcedbb886c37e3f6543a","libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.filters":"46b406c298fbbdba6212e8d8aabae0bda2d5a2ffe337c77b85ecf8dd3055ee0d","libffi/msvc_build/aarch64/Ffi_staticLib.vcxproj.user":"e953b026d0f383188c753487df0a4d879fa5da5ba82ac979aa877db84e89a060","libffi/msvc_build/aarch64/aarch64_include/ffi.h":"6fd99c824d4463987a82298ea8b4e2e2d8dcbace6c7147dcd7def9b0a9cc53c8","libffi/msvc_build/aarch64/aarch64_include/fficonfig.h":"58d7bd9c9eceb66c97f56daf69cc6d0e1397ae4655533814b73a7f678a6f55f7","libffi/msvcc.sh":"a1663d73f5cce3d7c1bc5d87c5fa1bc2ddf1e0798f5157ac115f353264acc318","libffi/src/aarch64/ffi.c":"bfc8f82aeb2f6a6d26f81cc9c4caf57a4957405c032f986e88bfe08d0a356e0c","libffi/src/aarch64/ffitarget.h":"f416ed82c7c3a024433bfa269f4aeaae3b2880f9f82eb46cacb43e388e94a0f2","libffi/src/aarch64/internal.h":"449e978d4d211d5ae3c1a72ebbf364f3a704f9f1316ae71bf6c935397a9ee4a0","libffi/src/aarch64/sysv.S":"bf10254d73f8feb0b335e081ffcbf3df86d6259b0a671e05b8704165a60f05c1","libffi/src/aarch64/win64_armasm.S":"a675f9159ebb0c57fd0ea52e17ade39e045161b09a5a372d6a0dcd1b91ce6aaa","libffi/src/alpha/ffi.c":"26d079a724e4aa495ba8f5a9d5dab012228060bc97477ea322ec04d01e5199a3","libffi/src/alpha/ffitarget.h":"d3056edb82319f6cb2b45f3a52fae5fa9ef39e2d679fac4da3f3a4729bcb78e3","libffi/src/alpha/internal.h":"163e8a0f0a8810bcce8a0777e2adbb6147033e49e14c60711738384d5ffbb658","libffi/src/alpha/osf.S":"c3e2c75a16396b5f49f41d2e2bba6760ddf5b96dc97401a06e2262220077ad78","libffi/src/arc/arcompact.S":"d82ad0f32da7626f5eca676c45d80f4c4e6da54dd6322f84034b6d143353afe7","libffi/src/arc/ffi.c":"09d47a68802d803355026b2185e3294613485e88efaaa1a9da682b8d80091e0e","libffi/src/arc/ffitarget.h":"6cbf168e4deef40eb76044b377312277901ee89590154e2b48702ba4c2399ce3","libffi/src/arm/ffi.c":"6dac3517308979cac7a053f95b671cfcfa8a5d59e3effe9bd9488ce3a146e05c","libffi/src/arm/ffitarget.h":"6e8478a81677d0a7da1f22b8ad05b256d0598bf7810e13612aab5ffd83bae9a6","libffi/src/arm/internal.h":"b32c5ab851956989fe42004ea05dfca120920fc2cd1e87d047c1da848be0df68","libffi/src/arm/sysv.S":"ce6e873a450e00599bf856a4e7beb192a1b923d1b5e603bac3dc946544d1dcfb","libffi/src/arm/sysv_msvc_arm32.S":"3a16c408994c829f8ddf2a8af147c425927e2a45433b15a46bfd92c25d10b333","libffi/src/avr32/ffi.c":"9697a0c6b2664bb98751781b638212d4828a130af87eeef821660a0940ea59de","libffi/src/avr32/ffitarget.h":"cd17c077b7b038b9027d373cbf82d42eb12cd1e3f0b39c3b54f43600dc0a7bef","libffi/src/avr32/sysv.S":"577635cd665853c100d8cc033cf3129d7c57b95230fe1238a7426450c6467840","libffi/src/bfin/ffi.c":"a84dde009955ed8ef2893dfcb767e7610abe33e47ce89e222350f053c53bc8fb","libffi/src/bfin/ffitarget.h":"8b337edb35aa4ce7ecddd02ccd87c4843a1a3fdd5b0407f092e558d8f7b0cd21","libffi/src/bfin/sysv.S":"4cdd351ba871adce4561aee319379ad51fbc77c066441d32364623c1c964eb8f","libffi/src/closures.c":"8b83d1b65271d601b66323d4d650d7f240f16407b9843f41467ddf836e5d3d72","libffi/src/cris/ffi.c":"958eeb4f9b1d07d3aa2d7b9d26ee61b04ad749ffea393a8f0446ba45377ad650","libffi/src/cris/ffitarget.h":"75d665f103a9d20df7167b0e3171b31eda6fa237e9c08cf5843471f2caa4d445","libffi/src/cris/sysv.S":"8a3f9bea4a554a58102d09b2a6ea0c340a8c9a35e2d67a9eca47e12b75bf1348","libffi/src/csky/ffi.c":"54f9333b389dd4c29a376e8c4631756a77eb734740266a4b75b2bb1115b573db","libffi/src/csky/ffitarget.h":"ebc05a9555618329fe34793c6f6060938f222a8441bc8b5187dc8d11e4785b4c","libffi/src/csky/sysv.S":"96600e824dd9170e6b19b184aa3bf41dce955db3d988f21950b270f26a889618","libffi/src/debug.c":"5160a3877b65490aa30fa92a44a66c3bdf093d5ab75b9502adb729038efb3e5f","libffi/src/dlmalloc.c":"962edeb826b66f9ae3462226ee89cd9d9afdcdeb533e53529e0612f2fea22ebd","libffi/src/frv/eabi.S":"4f5f724c88c240c2e4f748d35dc9e90bee9b3e15b01255d464c423e72bae7c08","libffi/src/frv/ffi.c":"b8546dff59db5f3d329227b766860c648c93fb2657c93258f4600dc85e7db77d","libffi/src/frv/ffitarget.h":"3edb1e12945a284c7f7305c42df2bbc49ccefbe91ddbdcb98ece4ff6508e266f","libffi/src/ia64/ffi.c":"bb91f285c018acd50666a85a236375bdbfa3081bd3f8d79efc3dd60a361f2905","libffi/src/ia64/ffitarget.h":"e8ae27c307732effe4075c548984638b1869225bf8c28664f2bf17bd6b7a838e","libffi/src/ia64/ia64_flags.h":"4715a00493bfb913b2d1f1779f1ff812633b3bb2a20f9a4b88df6ca97a86b768","libffi/src/ia64/unix.S":"ce96b09c8497aa07ea0dec7ed245a295a715ff0f175fc7cd3b022bafe2f6a72f","libffi/src/java_raw_api.c":"5c3886d8c20ba1238135835aa132ad9c017af5f9e5c55e2167d3ad047def1bd6","libffi/src/kvx/asm.h":"74ccb06144db76d9ab51a5f22d4072fd5fc7879f9a0505b2b775dcefee6f19ee","libffi/src/kvx/ffi.c":"c501b6006dea54d4af0d5a4bb50aa534bdb59ce314b32b131343094626e4bcee","libffi/src/kvx/ffitarget.h":"c83e987cf3726d9fb079b9ae61fd207e7907e714782887b50a994e664537f27f","libffi/src/kvx/sysv.S":"8ae2f992d4d95d06ef64d719f24cf95b8b0a37f9d6d89544b2837e2902f5d95e","libffi/src/loongarch64/ffi.c":"67bd92f9ede776c7e8ff5a168fb0ff343b1268e7ab85362a4fe9425bf40ebdde","libffi/src/loongarch64/ffitarget.h":"daa56da624b80ffaf138788d1c0be4a5e10345bec46851824d4a7cf2f53cf98f","libffi/src/loongarch64/sysv.S":"852251065245fecc4b30e67900482205c9c07f488551a40ec83a3310058e6943","libffi/src/m32r/ffi.c":"b8380500a2095095faa6279a7232fa2c5d1682341497524dd9775d71d4517026","libffi/src/m32r/ffitarget.h":"c6f77c82604629d48a4ba26731c883eb3d7a0d2938a72e2bbcd2da7fb314f811","libffi/src/m32r/sysv.S":"c5ffc450f8a17b7d0d3b7a9d30c4857a7ff05a4d5c5c7095ae9ce1ded60f727f","libffi/src/m68k/ffi.c":"8c3254a9bcd3b1b19a899cc42208a44934e356f872f9e8f3686b0dc70a979a73","libffi/src/m68k/ffitarget.h":"f29c86e1277d33c63b3e477c8660644fc00c491ad4dc59e7e7e3a86e47bda327","libffi/src/m68k/sysv.S":"be73b16b527ff02da8ca5a99c7505f8cfaa7cd61ae4bda77dd7bf97fa47d6a35","libffi/src/m88k/ffi.c":"b68709d814f848ac7c5e78e09e6fc5c7f7f05dd8d42db46fa6924838d4c8ff0e","libffi/src/m88k/ffitarget.h":"1bc2c3a5c2fdc46b0ae12cc74451fbf03213eebdc358eb545dccfc8c07d5dc63","libffi/src/m88k/obsd.S":"e0d08715e7b04238c6512c1dfc5531672d1e363aca5fdb405cb3b584026bfed7","libffi/src/metag/ffi.c":"0bb7d95ed390bbcdf952b7cf8c601718781d07f6eefad73b71e70ee060169bd9","libffi/src/metag/ffitarget.h":"3526869debe2c001b92571ddc2d1bc425acda9642c6b553f3f1fa59c55022ef5","libffi/src/metag/sysv.S":"bd79b3250234634c66103208f742f54cdd459c4eee6c18f0869344ca069deadc","libffi/src/microblaze/ffi.c":"f23f150fc464c3e6b87661cbbea1429054e0223e6523f0903a20a950c5f9a770","libffi/src/microblaze/ffitarget.h":"9a975da19167890d9fa2ed10bc9d9f570c48d284c736e6c8a2f89d2a147c4e44","libffi/src/microblaze/sysv.S":"9611afe6a3b16f43ba7b5f9bec1516bbc9f84607d2fcd461e551bc11b8d992ea","libffi/src/mips/ffi.c":"5d59b968aa844663108006a0feb9228ad03df89f555b4c87f6ed3b937cf5eb63","libffi/src/mips/ffitarget.h":"9750b30896a5376a12e7ad92ea52f7b3231d9a5a636f89f21bb366d95af36a30","libffi/src/mips/n32.S":"90621b017aa2d951105ea5e480b4db98644abd3dfb6786954ca359d90bbaa818","libffi/src/mips/o32.S":"b4a336f597cb2d20ef157436b05a994d5fc874e2f80e12e7286ef1167b0409cd","libffi/src/moxie/eabi.S":"2cd0ab9cce028ceaed5fa9914ce01f9d3b8b2760b7f8eb11e1c4a685ddb079ba","libffi/src/moxie/ffi.c":"7b34f2a640f8f86ee30bf518a7066b7b6f34c57ede9a690354457db87ed106f7","libffi/src/moxie/ffitarget.h":"615c90a132d06a74c931971ace552b875a688c6d553a6b4ebfd88d1d7d39f96a","libffi/src/nios2/ffi.c":"b6db6e41debb710a08248cab6bc36ec92a8e1c3fd223d6eb154a8f96dac560da","libffi/src/nios2/ffitarget.h":"5d2c95eff324c1ac90c39fc1b289d1a1e09ba77d38e35407b13f40eaf458953a","libffi/src/nios2/sysv.S":"89e6ec064f16250c2e297632f83ec22add6df9ecb87eeaba9fc5bd4b62aa484e","libffi/src/or1k/ffi.c":"b1df3df02ee37ae4de19b5e623c75a9cda2cfb4f04aace0a05afdaa5a036678d","libffi/src/or1k/ffitarget.h":"5fb35aa442aa3cabca8ae8b2f29f849ab3e16376533184dbd87bf996253363cb","libffi/src/or1k/sysv.S":"c2613e5db24220b0db69eca54c411aaf6a9dfd9366affde065c355e81a0a80ed","libffi/src/pa/ffi.c":"3492a0f7ea75e3d6c508d3841bef8878f467386d9e206b98afb2784afeefcce4","libffi/src/pa/ffitarget.h":"d5563419c2647c3bc3f53b943b547ef38699fcb2ffdf9c891dd25a630db5d0c3","libffi/src/pa/hpux32.S":"9c64c6b493ca6f6c48e627f729cdf40cacd71fd9034f89910340209298163d75","libffi/src/pa/linux.S":"c04b741784e4bc697e82eb8be04bbcd54c49710234eaf443efbcce74327652a0","libffi/src/powerpc/aix.S":"4626e4cb0fefe1b81bfa110c65c2be79f4d5c4d7066fbb9d857bee01ec319c97","libffi/src/powerpc/aix_closure.S":"2e4f0e8e11137c9bba06c2c6493790b502bdf0c5d57e9a2367745ef09f5bb75e","libffi/src/powerpc/asm.h":"88ae9590e5880128d80b5b44e78a08a3a19027adc4d54d061e2ce0eb24db977b","libffi/src/powerpc/darwin.S":"db3504bd96da9e5e49032ebe72d718e1336f7476b6046c804f5e0e5d2a976252","libffi/src/powerpc/darwin_closure.S":"895e17b7737462dce957be858ec4fa9421abfa258e7f1d674b347e2decc2f9ba","libffi/src/powerpc/ffi.c":"e71ddf26c51e4fa6905da7540bd60b3e84b8b1c45a2593bebdb87ef3024293d0","libffi/src/powerpc/ffi_darwin.c":"da00c4af7f65dc57c091ffd3eef8809b7cc5c79d3f998750544fc209db335dff","libffi/src/powerpc/ffi_linux64.c":"f5dee7aee51f9888b71087fdf463650dca3259d0e532166382189af016ebd4b9","libffi/src/powerpc/ffi_powerpc.h":"4867559a7af98033b5e70cab0883d0f60ca002d2f551cb88f4d3fb789c0aa841","libffi/src/powerpc/ffi_sysv.c":"3feda390184634474602e5e231fcad9072c5a93d931f13b979cc460a911f83fc","libffi/src/powerpc/ffitarget.h":"302e085cf78c8a08ecd75a763710a63457a405c6b9d7dd9dc1c004a942a536e9","libffi/src/powerpc/linux64.S":"cebd433c621e79f538fffea0ee5cb4ab866507a381c260fd25d7a22908f13d81","libffi/src/powerpc/linux64_closure.S":"6d8e78cda0386a37e21bf6efa7c56bd8743c177daa2d814add9c8cc0dc30730b","libffi/src/powerpc/ppc_closure.S":"6df911de61a58e2e003db4bc5c6076c9e2da18244805c92edbc57586e8d74aec","libffi/src/powerpc/sysv.S":"07e60b40bb9aac673e80a841993e5bb0a66588bc286c275e4bdaffb1129da266","libffi/src/powerpc/t-aix":"000ac1ffeefaebbddb37c3dac3ca5856a7624b073f6a78e8c5dec8ff3c88babe","libffi/src/prep_cif.c":"68fca3e5b7a49055787f0de50317c016481511eaa59361d7e00da11901f9a7a7","libffi/src/raw_api.c":"d7ea1c81fc13e9fceb0dc431bc865e224d7be1e84483039eb4ad79144ef29c34","libffi/src/riscv/ffi.c":"e97433bee810984aa1cb89d700d0f329e89abe8f0005770ceaa747d22f8854fb","libffi/src/riscv/ffitarget.h":"e99d39a6622a5c1b3b0f164a89c45e53e60da2719ef15781b25e8fefcbef1a43","libffi/src/riscv/sysv.S":"20e6cd75b24b3e3061b4fdce2f6fef88b32fa33a89f01b623977ebf4c56f5195","libffi/src/s390/ffi.c":"75c81d7329e261dc1177b5c7b7817fe894f06ae66130ff295c2b41c93c2bf134","libffi/src/s390/ffitarget.h":"dc96f638d83a5678232a6a7e6a65334cfbf3f1acdec2e3572ecdf3ad1ddf2b5c","libffi/src/s390/internal.h":"357b4f5bc87ac38b5ed5a07767e2e72fb67096301f32721a385d6f573826f2b1","libffi/src/s390/sysv.S":"a49f55011bbf142097414a32395bd5050f361fca5f8d4264c96e9cde3a40e18c","libffi/src/sh/ffi.c":"b91b3b17d9f1a6587af6fe0c4d59a45c3f467f93cca552d464a0c1b4d8b2c50e","libffi/src/sh/ffitarget.h":"fb4105b6087d88b03a6d6d991e3f6f3c47c1006f0d9311262b3dd5ff76339542","libffi/src/sh/sysv.S":"aec8da0ba9c1792923ec9e937b41af529da8959448d45826bf907d0703b1b0c6","libffi/src/sh64/ffi.c":"7aa411c675749189389e88d4047dc95495c4bb159330e9ccc13c6bac0a4e182a","libffi/src/sh64/ffitarget.h":"200cdeff23918f5684a1a6ea20452fdeb74f891f81a2984a7907b97237718745","libffi/src/sh64/sysv.S":"332a0d1b527dc7e02f4abb2afed63a21d0ee89de6fd0e1c62940d5ebaebd4402","libffi/src/sparc/ffi.c":"97e79944e54749353d0477365bbf41c2e98ac159cee661943938cb0270460587","libffi/src/sparc/ffi64.c":"fd8f203d4728e5382ef15fc6e46a5f713dba44317b1a31dd54eea35c0b4b90b4","libffi/src/sparc/ffitarget.h":"255bcdf721e066d91f5dd20ad4868dcb3a5f523b0d8a74328f25d5d44d7dbef4","libffi/src/sparc/internal.h":"e526b44e6c13fba4931b4c2f7e398a17459ee5179a12184d06b9a5d53184670a","libffi/src/sparc/v8.S":"76d81e84943a95cd71011757a362be5c80e9efda2fc202ab03fa34696cea6785","libffi/src/sparc/v9.S":"d776dcdf2ba9063c040b9d96a761624a12e4cbdbbe79c27199d2f112016536fe","libffi/src/tile/ffi.c":"b4720cda72947c595a9c882cc9ea525a3dd648ac57043cd65f01819aeab9a558","libffi/src/tile/ffitarget.h":"8a6663cd30dfefeebfe022ce6c79e06da47a25b338bbf39ca58d506647f5cd19","libffi/src/tile/tile.S":"d9b2437e3e3d05622383caaffc7116d59d01adad8dd0cf30fcfb02785a7b1c44","libffi/src/tramp.c":"a6326218ad11f485120083497aef1518fd758b6f80390733b3d254bf78d15efc","libffi/src/types.c":"466735ab14f3f53b3f147c6f3ab245105e8c262e89daed8426e6e9fa569f792a","libffi/src/vax/elfbsd.S":"5b9ff613fe7061aa53dc0d058a00ef75a05c18e758741f4e37d0ea2c7ba795f8","libffi/src/vax/ffi.c":"ce63755c5a8bc7439c6b10e0c20d3f2ca6c435423583c29df43918269a9ac746","libffi/src/vax/ffitarget.h":"5861dde94d1a722b911e7ccedfca87c3a55bd90df6641075563364a5ad521101","libffi/src/x86/asmnames.h":"b1a0c704a97aa9bb3a998f7d55cae8bf8181e355249da19a53269a10d03edb8e","libffi/src/x86/ffi.c":"8770cc52d2af84cf2a51f8c9dc6d14973cd91b70b89979f19800c13cd63840b2","libffi/src/x86/ffi64.c":"125d9a406408c187fd8890b66c3a019b313899017d9b065f38eaccbe96913c17","libffi/src/x86/ffitarget.h":"45e4fd2585aaed711e4fa3d1377b70c8e54dcdc56bdf402fa23a8816d19cc58a","libffi/src/x86/ffiw64.c":"b6630b509aa28c57d9a5f93cd710fa0a2d20907cf1703f4085d0eeb602060c9c","libffi/src/x86/internal.h":"faf2d20939ecf17ce73e288e38162de47119bb5f7bdd4994aa434b4b7dea6591","libffi/src/x86/internal64.h":"6618077c8aa7874ee279bb1f6a2aeae50c9d2828a16befeba59af27b1c4b489c","libffi/src/x86/sysv.S":"088483db5f5a4813af965adf3a9e8f83a292db9db040852d08648370d8c1e54e","libffi/src/x86/sysv_intel.S":"e1d0f8d30b46706d867b5fb391435fe1ba37eee73d35f4d8f861684c8707113d","libffi/src/x86/unix64.S":"8a3686659532c51af9cc9b27ef2566068a4eb9b2bce02e3c738df5c339a1efd0","libffi/src/x86/win64.S":"456f93fb44eb8a669baf615db1043d57721191d801c5c5ccbdab05dae085de82","libffi/src/x86/win64_intel.S":"90866da412a9b58fc60e7ee2f0bfcbc167156a78c605217c0edbbdad7532ac76","libffi/src/xtensa/ffi.c":"ceef5d90f319ca2ccc498751fba6077c7ab4b87aa26ed561a20cf5047919e18b","libffi/src/xtensa/ffitarget.h":"48336927a5240905401951a5d63b71f8c628175e5c225fb288dce38b1fcc46ad","libffi/src/xtensa/sysv.S":"8c5a8644be7982d7c661a846fbc76731d95fa2f0e9861f8c41e495ab5c6b9fdd","libffi/testsuite/Makefile.am":"9dce2d99654463fc2c73d44b309720e5f3faa4abc92564b7352785bbc3d8d6b4","libffi/testsuite/Makefile.in":"f9a6085a97570ddfe78d982bd958f0f52ccd9799db37461d431e5a2db45b9f7e","libffi/testsuite/config/default.exp":"ba6d7acd9e5eb26ec2d22a59e0e8a08c91c6dbc1a249ccf11ef00602f568834e","libffi/testsuite/lib/libffi.exp":"a1dce295aabf4017946242c64fdd0e252783e971ce82cb6721ef1ed3b573a257","libffi/testsuite/lib/target-libpath.exp":"e3c0a928e03a0f171abe998fa2a3b5ba23f9fc988a6ed1e08924afc69e40304d","libffi/testsuite/lib/wrapper.exp":"405ed3691640face11e6def6a99c768d3c187570869e3d7ff70c214a36f64347","libffi/testsuite/libffi.bhaible/Makefile":"ed4de8ddf3ef14e4fd6f323a45b2b11c1f05aa079dfc8969e6942a2e92b164a2","libffi/testsuite/libffi.bhaible/README":"22e6507a2126ce03afb8254533f10992b76d91ae90edfae26d097c3453fb611e","libffi/testsuite/libffi.bhaible/alignof.h":"45027b8e0a5ed7797786d7e4a7c8585fbb08e57e1079bfdf89af2e5e98e06090","libffi/testsuite/libffi.bhaible/bhaible.exp":"8fae824122822de954e2e5c837260149aa9463d18b27544313dc097288ec5708","libffi/testsuite/libffi.bhaible/test-call.c":"9ba5749815772415cfdf2e8d1ddfaf206791087d9ce6fe60333e1f52fd2a5ab4","libffi/testsuite/libffi.bhaible/test-callback.c":"59568947874d22fb76e172d687bd9135f32fb55cb75bbcbcbfd68ab11dbb9410","libffi/testsuite/libffi.bhaible/testcases.c":"9dd5d34f45aec66442012034ea99eddadae680691b0ac1ce66e9dc819e150e48","libffi/testsuite/libffi.call/align_mixed.c":"34a62c0a4043f0a30f899157d8ea9441a65f59f8a21fe06a04f038b9fc3c63ac","libffi/testsuite/libffi.call/align_stdcall.c":"a93d34762f4c4220e43b0dfd8380d5991cab9f621cb1cd3f73a34d972b9d724c","libffi/testsuite/libffi.call/bpo-38748.c":"af6d9b7f6ca0d308a0d51dd82a931db32b2e8038eb0e5858cd9fd9d49c0be734","libffi/testsuite/libffi.call/call.exp":"78533a0f27c8e466beef7487a9aa19694a009b5002b542c585f47b28d3abd8cf","libffi/testsuite/libffi.call/err_bad_typedef.c":"122d7771c6aadf0ce1bb3fd6c396dd69fd5480969eb87908347321935dd11a6a","libffi/testsuite/libffi.call/ffitest.h":"c5541ba1460144b66821e9860c23324e0ac6148f43673d05965bd5a654cd77d7","libffi/testsuite/libffi.call/float.c":"217e42ae48c9ac82fa36015fa447a9e76ed6a1ff5da1d9dddd686bcee6619688","libffi/testsuite/libffi.call/float1.c":"1e228846e8ea9e5d193656eafc354cd3bb18f1e09c85c5ff0347162856f73515","libffi/testsuite/libffi.call/float2.c":"24caa884d8d36cc977ae35f19719adca6f9094a4ddb8f01030199f87cd615988","libffi/testsuite/libffi.call/float3.c":"2fb9ec6eb1995519bef68a53e90da89de638eca5759eefa7b6a34e130dc8a79d","libffi/testsuite/libffi.call/float4.c":"d7be087b7ccbe4861d21d97587521ec742f520fe5eb4f215419440213053a799","libffi/testsuite/libffi.call/float_va.c":"25e8ed20bea9255ae8238ae182c8cc122b1405e3106d9cab1d6dc96824ca6e3d","libffi/testsuite/libffi.call/many.c":"0d4124c1e1e7255d3a444a2eddcd1ce9db3ba3438062eaafbccd2f7a3bf98852","libffi/testsuite/libffi.call/many2.c":"df2a91dbe5fa712bfc065361ca9d77a56e2571c7bdd5a762c3053608e88674f9","libffi/testsuite/libffi.call/many_double.c":"6aa60fdcde639efdb5a8eb2517c53a37c5141c15b4772fca2af318d5472093e7","libffi/testsuite/libffi.call/many_mixed.c":"e2287d01c135aab6d2c4489da3e5b7f16587f951f5dbc9e71e4e2a96bd4d21d2","libffi/testsuite/libffi.call/negint.c":"289922cb9b505ae70a479b48c59b262d982b095e2fad2893dfa34cbbb1a620df","libffi/testsuite/libffi.call/offsets.c":"09472384a5887ee9c7ad9eaf826d59cdc0f91016a2ded82da7513abd043c574e","libffi/testsuite/libffi.call/pr1172638.c":"ad8668b52e39c6f2881c3406e71ce71ced0fff496f5c122c66bbd0b2322b64d8","libffi/testsuite/libffi.call/promotion.c":"1821acd2d2a8f3e7e6de3b0268f39c36012efb0e8911d8cf501844dee790af61","libffi/testsuite/libffi.call/pyobjc_tc.c":"1f4be8e5d0b8d74ff9ea4ea260751921ab5dcec0e9aea76bff56fe821d21b106","libffi/testsuite/libffi.call/return_dbl.c":"26362268cae344db05544550dc862596630e4643e677bfd69f152ca7cea1cb5f","libffi/testsuite/libffi.call/return_dbl1.c":"54fe8dffec639adab8452a35cfe0dbf6131a55f39623fcb7bec7d8895907a9b1","libffi/testsuite/libffi.call/return_dbl2.c":"6df0c8364ba4f41534387a01a2acbdeb4b7f4fb29393ce3c096d46b6ae473b3f","libffi/testsuite/libffi.call/return_fl.c":"3e6eab49a51ff5af9e37d33fa674fa586688b8da9f3cab04d01dd35bde73504c","libffi/testsuite/libffi.call/return_fl1.c":"c0a43a777276013a730e52c8023a063c920028a98de59a05809643ff112d86ad","libffi/testsuite/libffi.call/return_fl2.c":"eb0213894f6562b2cf55520c98c035dd602b1f13d0910010a0a2f33778b8e9e8","libffi/testsuite/libffi.call/return_fl3.c":"42a644bde778521f12be47c8b3d02637b5d2f14f895da8a249a5fb0bcdef19ea","libffi/testsuite/libffi.call/return_ldl.c":"f667b34f44f0576189d0170a373e76d1796f1077068da233a61eaff2a0d2f850","libffi/testsuite/libffi.call/return_ll.c":"0cfa1b19658a5fb944fc4a998161188303be4790f400756a33daf752d3249878","libffi/testsuite/libffi.call/return_ll1.c":"e206b38b3ef0405e5024254ee1a0c084dfc1de75457b33e804c7a28723c9378c","libffi/testsuite/libffi.call/return_sc.c":"acbe68c6576d6d09eab78a226f0b0f7a80c42fed9a16ffc7a6f3ee2fe3e2597c","libffi/testsuite/libffi.call/return_sl.c":"d83cc2dcd7b8e81ef0c3d183f132c5f73f0ad2904829bd045578d2fc79fb2e6c","libffi/testsuite/libffi.call/return_uc.c":"0fd5566a9aa8aef8da387a6db65a357623b5c33bf90f16bdf79c0bdae00cfa55","libffi/testsuite/libffi.call/return_ul.c":"0d75b46950cdfd00c6a8d014a2003af3d78ce2061d9cfe1ffe610b38ff80987d","libffi/testsuite/libffi.call/s55.c":"d4fde2abab766080818f3950967c1d1c4e9cf09506687d609dfe1d24d23879bf","libffi/testsuite/libffi.call/strlen.c":"344959533fc8a678e794c532d8ed5c64cf7d86b3c4ed0b0ba8e306ca2e44820c","libffi/testsuite/libffi.call/strlen2.c":"81a9a183a4e3803dec33cf77302dca8b1ccae3a2f9d11766a822df88225e15b5","libffi/testsuite/libffi.call/strlen3.c":"f6cb741c2c921b337729a7b7e975ccf6c494db0ce95d0822f0d6a30a037b2410","libffi/testsuite/libffi.call/strlen4.c":"c9da8b599f17526220adfb68117b6302709ba3f17d6db4c5393de185d3504422","libffi/testsuite/libffi.call/struct1.c":"1e5977ef0e8967c882dd6028a447ae693323a674bba52766d0bd5270dd1d9aae","libffi/testsuite/libffi.call/struct10.c":"52c8c953db75b5012591d77c5e693e89e172d3fd18eb832a8ac3de7d20eb174d","libffi/testsuite/libffi.call/struct2.c":"efb7ba14e478a0774b174e2e6d0660ba55536bd67ae2c0e36e732d3d3b3acd3c","libffi/testsuite/libffi.call/struct3.c":"3fddda95e560b115c4c92f3d9180d258a8c43ff72d1092cdd7726f49c9046dbf","libffi/testsuite/libffi.call/struct4.c":"4a4d83e800e1fe58ac99e00e4c5043fe0d91ca32613e966817d2f8871beff2cb","libffi/testsuite/libffi.call/struct5.c":"489a0fe2a1188f2f38cbd48ac42796907cb48a3519e18e2713b3121e81fee0df","libffi/testsuite/libffi.call/struct6.c":"fccc4060da3ddd2c4a94482bf049dbd19956f9d202db7bfbe57acbf2d45fae1e","libffi/testsuite/libffi.call/struct7.c":"0c261365d2dd64af05069be92ebfbc114b0bca1294a1277841d799f4f8f11cef","libffi/testsuite/libffi.call/struct8.c":"77604032b9b67aaf2ac96c61d959aaf59b0a9da8b9cd1c43c8d53701bf3d31b6","libffi/testsuite/libffi.call/struct9.c":"1070395e78175c93b43f25a677abe104c5de0a697a04b879c7d1bc12c9b49f7b","libffi/testsuite/libffi.call/struct_by_value_2.c":"a46ec7828b4acab6458afdb51f4ca80956d23b1d830c4f92130af9c81dc6cc1c","libffi/testsuite/libffi.call/struct_by_value_3.c":"636bc63b6960efa754818cb75b36911c5a61d4ee10ff7757d9732c17bd15876a","libffi/testsuite/libffi.call/struct_by_value_4.c":"2fc7c3a779da8c52cffad288c0a9fca0969143f6226b0427e0f38e275027e85f","libffi/testsuite/libffi.call/struct_by_value_big.c":"e81926fc9745a98a626fea463f0bdf2a5ae3e7f599229b2f807957535b059f62","libffi/testsuite/libffi.call/struct_by_value_small.c":"933923667330b79c64a6c02c71098f5d7c6f5bde9d23c3418101569c0ea0bb21","libffi/testsuite/libffi.call/uninitialized.c":"87bd46aa7db3937e5fd775b972986516b3907af7aa932ecec950a9df91269eda","libffi/testsuite/libffi.call/va_1.c":"9cbf272c3c5514023f5f23182a1402e4e5ae92f8edf7cdafb4202a1665d7da52","libffi/testsuite/libffi.call/va_2.c":"db000d4d0935b4e219ef6ef46cc555bb5473831b36392a6f92c471534da19545","libffi/testsuite/libffi.call/va_3.c":"0c6c024ab72c62942d34fbad06cb880d7e9d1d21adb8b5391f3105af88658375","libffi/testsuite/libffi.call/va_struct1.c":"05ddfa6f64a5d1aa212838107adde6314f97fcefbf12b796d27443d5600499f2","libffi/testsuite/libffi.call/va_struct2.c":"5cd8f01919f1e7403dda6e25558469b5f838beba1e0faffe2aed6889be4b12b4","libffi/testsuite/libffi.call/va_struct3.c":"3823657d102d096768cfda1ba0cd58a287d1f8bbfa98ea99d7cd03a46f297898","libffi/testsuite/libffi.closures/closure.exp":"89a24bf7dd4cc583738da5a1297810b294fa8fb47264a59c0ca5f48a417b6b4a","libffi/testsuite/libffi.closures/closure_fn0.c":"5ec6c8780d3563d5ef3a85c27d3fa871b66b2d51f466c56eba65216439c0003e","libffi/testsuite/libffi.closures/closure_fn1.c":"4870abe76af359c0bbb974243f48262f94d1c5e1eb19a55010226ce56e84b248","libffi/testsuite/libffi.closures/closure_fn2.c":"854dad048332faf217ca78d6f71c34f8faa142c260d0e13ddd9a94226c2de7f9","libffi/testsuite/libffi.closures/closure_fn3.c":"fa792a9dafe41c17c3a180d56e40b64e4d2008cd7b88a368d36deca6105d547e","libffi/testsuite/libffi.closures/closure_fn4.c":"fc1a08f3f9888c4f54dbb12dd529056f1cfd7202094492fb65a40a67432e5413","libffi/testsuite/libffi.closures/closure_fn5.c":"eb698a971fbf77a1ab570f0e4f78f848cd71ddaeb5b2bc302d2bb8fd63b2cfb7","libffi/testsuite/libffi.closures/closure_fn6.c":"be6f25c9b4feb75d3ba545eafad5d86fddd24b6a220dafc42ab2be58142ceb6b","libffi/testsuite/libffi.closures/closure_loc_fn0.c":"45cb19a709e67137b42802533b022d9a0be9d9acc69110f86680e3d73f6c681d","libffi/testsuite/libffi.closures/closure_simple.c":"bcccecf2d61f5f3476b83c02bf6755811ea2edc2c52b6a12b85a870ed6ace8aa","libffi/testsuite/libffi.closures/cls_12byte.c":"c4e8cd77fe4912cae569b9fd2204a5fd83fa19318ab0ccb24331f4e91b320d50","libffi/testsuite/libffi.closures/cls_16byte.c":"a819a7c783d4d6af9f1cbfbd82d700fc6af1e1f3d515cdb22a4d5951bf1b80a9","libffi/testsuite/libffi.closures/cls_18byte.c":"f2b767c84ca3cfaf33a77d2527a8fded8184d0d67fe1d1f5f14d5d87b17a350b","libffi/testsuite/libffi.closures/cls_19byte.c":"a5f27076cd3eb35e5b7ab2be9bcc0a430382824d97f792f48544ba3c7308ccb3","libffi/testsuite/libffi.closures/cls_1_1byte.c":"4ec40cb64ae26541c84e63a3f901785c27a55ee2c4435df8d082d90ef25e0a93","libffi/testsuite/libffi.closures/cls_20byte.c":"fc4862fa54282a9873e3a78c9d0b3761b2c1a1421f5b12ba7df2fd5f05f23148","libffi/testsuite/libffi.closures/cls_20byte1.c":"7409c01b5d11de6c3460ee396444bed50fe8b77430ccd523897ec31d698d4488","libffi/testsuite/libffi.closures/cls_24byte.c":"b41c113ab1a99e081cde38e7538f4343649cfd8db6d582589531b51ce74de394","libffi/testsuite/libffi.closures/cls_2byte.c":"7b27f119138e6299fc21b49831677c4e8ebb10e13b02c23f8028d2d73780829c","libffi/testsuite/libffi.closures/cls_3_1byte.c":"415a0aaa329e89ddf62ad66f75117ecf331881cb810c9306986a195b3e274c78","libffi/testsuite/libffi.closures/cls_3byte1.c":"fb2b06ba72c82691d8504bcd952aa38cef6eaa0479916f8e671f36164bdf2683","libffi/testsuite/libffi.closures/cls_3byte2.c":"f6d8385f793149269593683cc5fbb999c045d91f41ad8bcb1c56e44aa0fec55b","libffi/testsuite/libffi.closures/cls_3float.c":"45faf33d5205324eb5d9281f7647bbb09f82d4788bcd9c537da2905e51b59267","libffi/testsuite/libffi.closures/cls_4_1byte.c":"15e7fc7c9ddd06e6dec78d4ae592a3bb7bde26c7142ae3d2998c65a574218a64","libffi/testsuite/libffi.closures/cls_4byte.c":"310cb98089592a790bf2e835efbd508c9b5d942a1ce9d0a6f71950a4e244fcbc","libffi/testsuite/libffi.closures/cls_5_1_byte.c":"7d7fb18e11a2253d099c93b6fa4953f7b8fce44dd7a0d22e6bd84bbd015b6e79","libffi/testsuite/libffi.closures/cls_5byte.c":"a519c29b5ebc0616745fc02572edf249b3dd5456daf850f9c1288ea11785768d","libffi/testsuite/libffi.closures/cls_64byte.c":"cd1376f3ebb0313e884cf7abdc4cd463b97b805f105a89084858e843537266c6","libffi/testsuite/libffi.closures/cls_6_1_byte.c":"54dcc15ee54efa579ab440eccfffca676fe6e1004d08dcea02569c96c6c98991","libffi/testsuite/libffi.closures/cls_6byte.c":"a348f40560105696261a729c8e2d4a19a189bbc499a863bf62adf97d0f362639","libffi/testsuite/libffi.closures/cls_7_1_byte.c":"348885c5450bacb1b15aed6e2d0ebfc29640634d7e8284820ab1dbb5b5329f48","libffi/testsuite/libffi.closures/cls_7byte.c":"601f4bc9828c3505a34197a3d775e1cc992aa829ebd0bd68d2b988bef026e4a8","libffi/testsuite/libffi.closures/cls_8byte.c":"9abedc91477d27f2b526cbbadb4b5f35a74a31e6dcbd4779375f8f2f580c3d9a","libffi/testsuite/libffi.closures/cls_9byte1.c":"39c0783fff81bd1f5bd12ee8734e026861d5c7e30844c5af9e9c21363c4673eb","libffi/testsuite/libffi.closures/cls_9byte2.c":"fc612d517686689ac72dfe33399a8e05929d9ef4015d7a5ac593e53fd681d519","libffi/testsuite/libffi.closures/cls_align_double.c":"2bdb22979686646bae245c0e9900a509c7829d36e921e57c02517e5cad12b4dc","libffi/testsuite/libffi.closures/cls_align_float.c":"84ecaf5ad051ad786c312826f1bf76940161c56d8b17c83d0aff1aa62931d123","libffi/testsuite/libffi.closures/cls_align_longdouble.c":"b47d5c32a43fbdf5acfc5b8be50546dab5026401d7a9f2ccfcb2381d1d5ab795","libffi/testsuite/libffi.closures/cls_align_longdouble_split.c":"980a08a59bb5aa5aec21d9ac1b00381313489b2f6e19b75ce57a09d84859dbce","libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c":"d341f20a5cb6399a296309466fb765a2af373787b6e6280d28bf405e64639923","libffi/testsuite/libffi.closures/cls_align_pointer.c":"0bc54bc4092d091e2b144fe4d4566dc2eb65b6fe8be768f5d20a1cb8b68f90bc","libffi/testsuite/libffi.closures/cls_align_sint16.c":"fbd974ba20e8afabef5f0657ec6d5e1757de413bd6e9700e890d3c431a059292","libffi/testsuite/libffi.closures/cls_align_sint32.c":"3ab501d843998ec217f8964c942598b31d2f2b65f4a935e718c38bd83183b2b0","libffi/testsuite/libffi.closures/cls_align_sint64.c":"3d9d64bf040668a0ffed78156518d585922f6097b2a83ccadc25b66f6387135e","libffi/testsuite/libffi.closures/cls_align_uint16.c":"52fdee6b9c38ba6a4852081e230fb1de6474cb62aabe67ab10eb51cb4cf2a7ea","libffi/testsuite/libffi.closures/cls_align_uint32.c":"599ed6d2811874777c1d1405069c9678425bbe556928da97b084666e5cb60449","libffi/testsuite/libffi.closures/cls_align_uint64.c":"6b538e970d4539b89f167aadfb55681f58e5d2f2e34d213e8b6989f8a4de7070","libffi/testsuite/libffi.closures/cls_dbls_struct.c":"276faef139c455bd13eefa54d6c04da399a2c0ae7ac3a6c4a9f329c08b9176ff","libffi/testsuite/libffi.closures/cls_double.c":"9222406230bd89d001ecbb6480577594b11e1349e36fff4575993002cce8e052","libffi/testsuite/libffi.closures/cls_double_va.c":"7ef282ec7c2579b0a1751531120b0ae416916c42bddf190ce3b55504c94bbc10","libffi/testsuite/libffi.closures/cls_float.c":"bfff7bbf9dbe071e301f055dd425c69affaa920cab981c046d6f5d14b6325abd","libffi/testsuite/libffi.closures/cls_longdouble.c":"84af2ec238502dd4e6ada71b13e07454d913cf5654d72c4984abefd055fccedf","libffi/testsuite/libffi.closures/cls_longdouble_va.c":"cd268a14bd2261924e5bdc3b64d74a44a2b32b34b3ea91eba1106cedfa98612d","libffi/testsuite/libffi.closures/cls_many_mixed_args.c":"1aa7f241f87554ec03f6cb68c2f3082fae158de4cd9f632d72815d2562dded93","libffi/testsuite/libffi.closures/cls_many_mixed_float_double.c":"e4d77d7429534df9a6e265ebac43dd25ea5fb3f5a4d5f740472245f78938830c","libffi/testsuite/libffi.closures/cls_multi_schar.c":"9869090287f4fcc291b1f7483825e8653fe9b462410037ae9c4e636c0975cae3","libffi/testsuite/libffi.closures/cls_multi_sshort.c":"412ce740f05fb96fb7ec27982914c0b944ed5a337fe72c0837e9bff78351d300","libffi/testsuite/libffi.closures/cls_multi_sshortchar.c":"0befbc1b7dd2ebd736b1d6f27b6aa485efdbc6ab667095edbf25d1eb1445ff83","libffi/testsuite/libffi.closures/cls_multi_uchar.c":"cad577afe9fe86303674b1d093e8c36b22468471130cc4c2d73713c2301df952","libffi/testsuite/libffi.closures/cls_multi_ushort.c":"0d0bda3ced70cc32cabdb0e470438c5666dbbbc6900c8e4f2d5f77f06a55917a","libffi/testsuite/libffi.closures/cls_multi_ushortchar.c":"8f7e0bc72f89b0d5528166b82b4aca05f829258e5aa8bf8ca2c128234e87c95a","libffi/testsuite/libffi.closures/cls_pointer.c":"eb416f549aac1a769c405748acd312c8bb7d981d41fed93bc06c007dbc57c18a","libffi/testsuite/libffi.closures/cls_pointer_stack.c":"844f2d277d3f4fe14bcc36082fc6f92169452b50f0bf05e31f16019ced3c294e","libffi/testsuite/libffi.closures/cls_schar.c":"4736693cbcc8e1520ea15ddb3485b1d4447634185bad1b452caa7da6a5606c5d","libffi/testsuite/libffi.closures/cls_sint.c":"17cc544afca2b64df72321c1e4eb261ad2171367ea117ad1bc87c83939a3f274","libffi/testsuite/libffi.closures/cls_sshort.c":"a886f615682b8578c5d471c32e6217eff90024e4dda1d7b60e9230f71641198f","libffi/testsuite/libffi.closures/cls_struct_va1.c":"a39f0c3ed903dac59bcf5b9b37c0a4e7771d6253329706e04cee4e56accf76f5","libffi/testsuite/libffi.closures/cls_uchar.c":"41ee03b508e6d4a63db78928187621e2de400b0b25c0aec5468c5489f92d281b","libffi/testsuite/libffi.closures/cls_uint.c":"76de1be670f4ed135ee9be216e788173a8e54575a421d04188073b5836ba3df6","libffi/testsuite/libffi.closures/cls_uint_va.c":"9f98f288aba0da4410c6f0b41757170b12ff49b488ce15b377eb896154f17985","libffi/testsuite/libffi.closures/cls_ulong_va.c":"6744293d9d4a49982c4ca688c49563cb57da03d5a3304641eca8269a73e37403","libffi/testsuite/libffi.closures/cls_ulonglong.c":"fc8ad5727de9d10839c1dace4d8d075ce1f282ca5ccfee4071a9170128f1fa05","libffi/testsuite/libffi.closures/cls_ushort.c":"7d132a63ac15e6fe3f2bdcd73563ccaea2b9857437017118348da5aa58cacd8d","libffi/testsuite/libffi.closures/err_bad_abi.c":"8b91e09447f99fbeacd4c73936622be3cda89a1337df928cd8aa4fefa95a53fe","libffi/testsuite/libffi.closures/ffitest.h":"7f5bae05440e1ca8be4259a8b2a28958ed76d78b6fd77df401ac5d669c3dc877","libffi/testsuite/libffi.closures/huge_struct.c":"9f1be431fcdca761b4c6b6897205cc15fd30ad3b8642beec7d8d67effc14876a","libffi/testsuite/libffi.closures/nested_struct.c":"ac232fe3268a577124e5596d125dada1f8832e2696b4b7487ee0081a23c02611","libffi/testsuite/libffi.closures/nested_struct1.c":"69ee0db5d9f1291e66ea23d4c35ac23c3b52f34964c8c64605f2c18dfa07d0c3","libffi/testsuite/libffi.closures/nested_struct10.c":"a771b301f8401fb4e4450b7db30f2f3a41b5658e2041ed12246ca6478a380234","libffi/testsuite/libffi.closures/nested_struct11.c":"6ef27837e69078c8e48d9c4a80443d1c1994612c3544cbeee430d37015b4d2dd","libffi/testsuite/libffi.closures/nested_struct12.c":"afdd301c76707c624a7cf8e8f6109b529f7091555008e1991a2329b06c6c77cd","libffi/testsuite/libffi.closures/nested_struct13.c":"f0b5786c1838218a868d28ed6b2a4be695eddb574d0dd86848516df9778cb38d","libffi/testsuite/libffi.closures/nested_struct2.c":"9ccf0431af58de9d90cd9985ad60fac21305404c18309bd135a762a0a29529e5","libffi/testsuite/libffi.closures/nested_struct3.c":"f99ed651b473a6fc27bfa65e74ddb4eaba0cf204afee8e8b1899e875f2103300","libffi/testsuite/libffi.closures/nested_struct4.c":"299eb2239c761f7d3e29df913d2d7e4db357b4a58ea01ae484b3b06d84ba7faa","libffi/testsuite/libffi.closures/nested_struct5.c":"a3e6be5cbaada62005747e037d62025c2068769a515e57c674d09228948f1f8e","libffi/testsuite/libffi.closures/nested_struct6.c":"d4817ed0922626e4bfc818aef2ce88132ef2f5b6dd10255bc8a593afc457aa83","libffi/testsuite/libffi.closures/nested_struct7.c":"2153f48a38dbc11926ecb3bb1d5c5bc56b35a3ec09910abd44e91d3a637b2e86","libffi/testsuite/libffi.closures/nested_struct8.c":"e6a353a614c4b123377a4daac4eea7ff3606e19f2529e0a637609cdbbf14488e","libffi/testsuite/libffi.closures/nested_struct9.c":"3620ff09a5f1f56ddff4253c99c49f752c2914b9868896d377ce1b2d543e7832","libffi/testsuite/libffi.closures/problem1.c":"1d559c27e0cf2c44da6c18636ccdcb5456af2b0dd633b8907725cf6380a7f3d2","libffi/testsuite/libffi.closures/single_entry_structs1.c":"2834fe712124f352c56e5831d4ce09856b3ea8943b282d703883fa4281643a96","libffi/testsuite/libffi.closures/single_entry_structs2.c":"e7eefc28755c2c3e81880913f4a204e67c25ca417d95871b3dfe110425967abc","libffi/testsuite/libffi.closures/single_entry_structs3.c":"fadfbf2746a8fa1b432181175fabd750ed9ebdf3337c5b6a47f82ae6861bae2a","libffi/testsuite/libffi.closures/stret_large.c":"d711e83fdf28845c031ad3c349610d6d0e87d0711cd0d05f1a53422003d18aeb","libffi/testsuite/libffi.closures/stret_large2.c":"730c5fc454e296748557d7f90ffbd090cade6b6f9e02fc2df7760f9130a63805","libffi/testsuite/libffi.closures/stret_medium.c":"37c33f6761accbbd61dd84fa477626a308b212fb756b6b81a9888d8c61fef18b","libffi/testsuite/libffi.closures/stret_medium2.c":"f83ed4cd9ee2ecc99ae07af56b7cbc2bf38fc4fc6cb90969d06bd2b38362cbe8","libffi/testsuite/libffi.closures/testclosure.c":"f124edbd32f7b253d3cbfd5362cb54d43fef45aa801525dd68d5e9ad52d27bbf","libffi/testsuite/libffi.closures/unwindtest.cc":"305f66a04eb7e4442e67c3cac42b7bdf1f8cf58df45d64b46b1e405bee8096fd","libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc":"04dee690a23bb135cabd8ef133deda35d879e1f520cef197899d8bacfe37483c","libffi/testsuite/libffi.complex/cls_align_complex.inc":"8f16fa6b099b91b9ee9b17ce48764c9316a21e0ac6f0d4c558f38b786046ec2c","libffi/testsuite/libffi.complex/cls_align_complex_double.c":"1d7b390c946dd82d5b589878cd7dbcd51d4745aa7dd6b911200e86023d25447f","libffi/testsuite/libffi.complex/cls_align_complex_float.c":"e731e5e97859d92ddb3b35b40f19b29c728a7a6785f62276d4c77f17cbc3931f","libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c":"529249c43e55c62fe05419aede98fda5d37760e1e8a758b46cc4f419f44d29d9","libffi/testsuite/libffi.complex/cls_complex.inc":"7d39f073da37e5dc888af4eab0903225a8406ac2ca2dfed426c10b2b76ca9d82","libffi/testsuite/libffi.complex/cls_complex_double.c":"9363097ea0942d1e187191045e370d1a7ce38f9ef7507ad97685256d239dac0e","libffi/testsuite/libffi.complex/cls_complex_float.c":"c5840699a27c6a00af3a8166843401fd7e331eaa3e95ea8c894d49c7cde6a956","libffi/testsuite/libffi.complex/cls_complex_longdouble.c":"7cb2cf513c87f7ec84ac1004d71f5fb1eade769550c8966992ad0ad7881e1133","libffi/testsuite/libffi.complex/cls_complex_struct.inc":"80ef750dfc3444b703e1a36daeacb3fb00e8fa99b32273790d71a9a26b733260","libffi/testsuite/libffi.complex/cls_complex_struct_double.c":"bb6b3f66a0addde784a52f1aa83dca918cd1083cea5769bf9d24e86a4ccbe537","libffi/testsuite/libffi.complex/cls_complex_struct_float.c":"a98bd896a8b5cfef33fbba595e1fe9be5fb6ad72918809d13f43181762e1cc74","libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c":"371418e03f4fe162d484866662df75e4bdceebcc1189925c85c21f7d39386ced","libffi/testsuite/libffi.complex/cls_complex_va.inc":"4275e6e4ab6a7567b5918f459cb2abb38f5c0859f288c0a2973aec405590127a","libffi/testsuite/libffi.complex/cls_complex_va_double.c":"023b67dfbcf760a4cb063da0b027a5995166665ca5487548499275907dbc2298","libffi/testsuite/libffi.complex/cls_complex_va_float.c":"6c1875b8ef67b48471e6abfa9f37d2d63a4aaa5225dfd2d515cabfd96c3011e6","libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c":"1bd7de83d4c0a80aa3dc2631a57909cf0290d8a5dc3677a174938736ede1c614","libffi/testsuite/libffi.complex/complex.exp":"cca150ff76198152d2b2cab3b8369b5af46ef69b312421ca1559398fdda328d8","libffi/testsuite/libffi.complex/complex.inc":"cc99177798ecb57ec45b791809806454460d2a3800d516b355101b4f23e2680d","libffi/testsuite/libffi.complex/complex_defs_double.inc":"15546188e5a06871098b5771c98151af22aefd01994d015f3f484369e1320fac","libffi/testsuite/libffi.complex/complex_defs_float.inc":"b74338a2b1ee2dea91d5bc3a551f5380a9dad0a79ddaeb9c7190dfc15f6dc027","libffi/testsuite/libffi.complex/complex_defs_longdouble.inc":"d50b1665657ce8386a33883450765a659a9e048d3bc66caa51438fd2fe4c91e7","libffi/testsuite/libffi.complex/complex_double.c":"5f9728631636700ec358d15d7b728639854c6b11c68942d934a1d43746b6f5a5","libffi/testsuite/libffi.complex/complex_float.c":"8b338e72735a326e44c5e4bdd298be09fe83f6bbd50bc1cd6adae910f2aa7eb8","libffi/testsuite/libffi.complex/complex_int.c":"5a2db2bade15d626020ef4ab79dbd5da38b89d2f9d4bd3a54ca183e2caac8f3d","libffi/testsuite/libffi.complex/complex_longdouble.c":"4aa805d660ab74199467c43f091b20d46a1d7e029eafc14cf82cde82927c6783","libffi/testsuite/libffi.complex/ffitest.h":"7f5bae05440e1ca8be4259a8b2a28958ed76d78b6fd77df401ac5d669c3dc877","libffi/testsuite/libffi.complex/many_complex.inc":"e8f2557af7513191d27425e562519095031a619830cac9bbcd0b36a9f5d3d9bc","libffi/testsuite/libffi.complex/many_complex_double.c":"5b9059dd34ff8fdb5f7cb0fb351e5feeab538596281f9ac204389396cac239b7","libffi/testsuite/libffi.complex/many_complex_float.c":"cef6f14295c99313bcd05105b9ca43360f8fe7532f7494bb8f629caf71176367","libffi/testsuite/libffi.complex/many_complex_longdouble.c":"d59c3ab56654d83563ee162b07faa4628038a7f776f9b3cbd50c078d7b95dd15","libffi/testsuite/libffi.complex/return_complex.inc":"93915a0c784c3383bb8480f96871384a2ac1847b097cbe69d619ab307c5fc2d6","libffi/testsuite/libffi.complex/return_complex1.inc":"3cc27239e2f5e0fbeff661b1f59c4325dca27702b3b805471f842ff14d3995a7","libffi/testsuite/libffi.complex/return_complex1_double.c":"0d1268b6e8bc6af5d1b8aa0249749f8f405ccb6b8464559dfbf500f5032af481","libffi/testsuite/libffi.complex/return_complex1_float.c":"fae681c372b0c3acf67685e3276629c3908f05b47ef7ac7601bf051bbbea3c9b","libffi/testsuite/libffi.complex/return_complex1_longdouble.c":"38db54c312c994be3ba90d932753211fe5d7cea24a60e516ebb8bc2f30eca310","libffi/testsuite/libffi.complex/return_complex2.inc":"86b98bec9ffa3f3a0c1359d0245c02f01068eb82246cc1d3cee22f80324117ee","libffi/testsuite/libffi.complex/return_complex2_double.c":"74663e04a8f9e0b6c1ff1607de1d36ae08ffd9512978847b74a8104b5e2b0e6d","libffi/testsuite/libffi.complex/return_complex2_float.c":"4f86a6a7cf4b901cf5aa282b0d8cf5f95e292eea3d6e39582fe863c12e95c365","libffi/testsuite/libffi.complex/return_complex2_longdouble.c":"6a58d12076d4674182f5a9fb10172c2d4de220775e8c3ace93fa68590a8f2cc5","libffi/testsuite/libffi.complex/return_complex_double.c":"d99cc7da897f116e0f129c69097a7dda4a48029e1a9caa61f0b3f3fd0597fc9d","libffi/testsuite/libffi.complex/return_complex_float.c":"0439d4c1204361227f0d628a4e749554bf0799608af7056b85336dcc323f1dbb","libffi/testsuite/libffi.complex/return_complex_longdouble.c":"9ba9b81867e143eea96ae1088d83304201d7a9c15b850aa5f32c6db98148707e","libffi/testsuite/libffi.go/aa-direct.c":"dfd5ada446cbe8d4b13f9109cd685014788752eeb24870023dc0de57dc7f9081","libffi/testsuite/libffi.go/closure1.c":"71653402f2e619a328822293df880432be8a99075463af1b612f13d0652d99ce","libffi/testsuite/libffi.go/ffitest.h":"7f5bae05440e1ca8be4259a8b2a28958ed76d78b6fd77df401ac5d669c3dc877","libffi/testsuite/libffi.go/go.exp":"b8c688a6151c1ee7814232cda1c073041d3b85e2f65a45db7402362752533070","libffi/testsuite/libffi.go/static-chain.h":"b3f47ddb1deebf38bddc38f2a66ce648c569a1e794b05d5071211d9490868a9b","release.toml":"49c9c5af260601acda8f67b11963727c809657a78add3747607e422f336e6aca","src/arch.rs":"dc7c8e86fd38edcb9bd5f9d3d323b0cd76a4fd4997b8320ed4464e54aa6518e0","src/lib.rs":"5171a918b4a3b518222fcf6672b059047a97b8cd61a2bede08d5d8c1a34990d0"},"package":"f36115160c57e8529781b4183c2bb51fdc1f6d6d1ed345591d84be7703befb3c"} +diff --git a/vendor/libffi-sys/CHANGELOG.md b/vendor/libffi-sys/CHANGELOG.md +index 1a9e953e5..01352d119 100644 +--- a/vendor/libffi-sys/CHANGELOG.md ++++ b/vendor/libffi-sys/CHANGELOG.md +@@ -8,6 +8,29 @@ The format is based on [Keep a Changelog] and this project adheres to + [Keep a Changelog]: http://keepachangelog.com/en/1.0.0/ + [Semantic Versioning]: http://semver.org/spec/v2.0.0.html + ++## [2.3.0] - 2023-04-26 ++ ++- Add support for loongarch64: https://github.com/tov/libffi-rs/pull/75 ++- Fix the build process to always use the local "configure" script: https://github.com/tov/libffi-rs/pull/76 ++ ++## [2.2.1] - 2023-04-02 ++ ++- Fix building with clang 16 and newer: https://github.com/tov/libffi-rs/pull/74 ++ ++## [2.2.0] - 2023-03-28 ++ ++- Add support for aarch64-apple-ios-sim: https://github.com/tov/libffi-rs/pull/64 ++- Support aarch64 MSVC target: https://github.com/tov/libffi-rs/pull/65 ++- Add support for the s390x architecture: https://github.com/tov/libffi-rs/pull/70 ++ ++## [2.1.0] - 2023-01-02 ++ ++- Update libffi to 3.4.4: https://github.com/tov/libffi-rs/pull/63 ++ ++## [2.0.1] - 2022-10-20 ++ ++- Fix cross-compiling to Illumos: https://github.com/tov/libffi-rs/pull/59 ++ + ## [2.0.0] - 2022-03-07 + + - Improve cross-compilation support: https://github.com/tov/libffi-rs/pull/53 +diff --git a/vendor/libffi-sys/Cargo.toml b/vendor/libffi-sys/Cargo.toml +index f479b5ce7..00052e190 100644 +--- a/vendor/libffi-sys/Cargo.toml ++++ b/vendor/libffi-sys/Cargo.toml +@@ -12,17 +12,24 @@ + [package] + edition = "2018" + name = "libffi-sys" +-version = "2.0.0" ++version = "2.3.0" + authors = ["Jesse A. Tov "] + build = "build/build.rs" + links = "ffi" + description = "Raw Rust bindings for libffi" + readme = "README.md" +-keywords = ["ffi", "libffi", "closure", "c"] ++keywords = [ ++ "ffi", ++ "libffi", ++ "closure", ++ "c", ++] + license = "MIT/Apache-2.0" + repository = "https://github.com/tov/libffi-rs" ++ + [package.metadata.docs.rs] + features = ["system"] ++ + [build-dependencies.cc] + version = "1.0" + +diff --git a/vendor/libffi-sys/README.md b/vendor/libffi-sys/README.md +index 7561506eb..f8dd84a16 100644 +--- a/vendor/libffi-sys/README.md ++++ b/vendor/libffi-sys/README.md +@@ -31,14 +31,14 @@ a C libffi for you, add + + ```toml + [dependencies] +-libffi-sys = "2.0.0" ++libffi-sys = "2.3.0" + ``` + + to your `Cargo.toml`. If you want to use your system C libffi, then + + ```toml + [dependencies.libffi-sys] +-version = "2.0.0" ++version = "2.3.0" + features = ["system"] + ``` + +diff --git a/vendor/libffi-sys/build/msvc.rs b/vendor/libffi-sys/build/msvc.rs +index 44942ed98..51dba9f58 100644 +--- a/vendor/libffi-sys/build/msvc.rs ++++ b/vendor/libffi-sys/build/msvc.rs +@@ -1,6 +1,11 @@ + use crate::common::*; + +-const INCLUDE_DIRS: &[&str] = &["libffi", "libffi/include", "include/msvc", "libffi/src/x86"]; ++const INCLUDE_DIRS: &[&str] = &["libffi", "libffi/include", "include/msvc"]; ++ ++// libffi expects us to include the same folder in case of x86 and x86_64 architectures ++const INCLUDE_DIRS_X86: &[&str] = &["libffi/src/x86"]; ++const INCLUDE_DIRS_X86_64: &[&str] = &["libffi/src/x86"]; ++const INCLUDE_DIRS_AARCH64: &[&str] = &["libffi/src/aarch64"]; + + const BUILD_FILES: &[&str] = &[ + "tramp.c", +@@ -8,33 +13,55 @@ const BUILD_FILES: &[&str] = &[ + "prep_cif.c", + "raw_api.c", + "types.c", +- "x86/ffi.c", + ]; +- +-const BUILD_FILES_X64: &[&str] = &["x86/ffiw64.c"]; ++const BUILD_FILES_X86: &[&str] = &["x86/ffi.c"]; ++const BUILD_FILES_X86_64: &[&str] = &["x86/ffi.c", "x86/ffiw64.c"]; ++const BUILD_FILES_AARCH64: &[&str] = &["aarch64/ffi.c"]; + + fn add_file(build: &mut cc::Build, file: &str) { + build.file(format!("libffi/src/{}", file)); + } + ++fn unsupported(arch: &str) -> ! { ++ panic!("Unsupported architecture: {}", arch) ++} ++ + pub fn build_and_link() { + let target = env::var("TARGET").unwrap(); +- let is_x64 = target.contains("x86_64"); +- let asm_path = pre_process_asm(INCLUDE_DIRS, &target, is_x64); +- let mut build = cc::Build::new(); ++ let target_arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap(); + +- for inc in INCLUDE_DIRS { +- build.include(inc); ++ // we should collect all include dirs together with platform specific ones ++ // to pass them over to the asm pre-processing step ++ let mut all_includes = vec![]; ++ for each_include in INCLUDE_DIRS { ++ all_includes.push(*each_include); ++ } ++ for each_include in match target_arch.as_str() { ++ "x86" => INCLUDE_DIRS_X86, ++ "x86_64" => INCLUDE_DIRS_X86_64, ++ "aarch64" => INCLUDE_DIRS_AARCH64, ++ _ => unsupported(&target_arch), ++ } { ++ all_includes.push(*each_include); + } + +- for file in BUILD_FILES { +- add_file(&mut build, file); ++ let asm_path = pre_process_asm(all_includes.as_slice(), &target, &target_arch); ++ let mut build = cc::Build::new(); ++ ++ for each_include in all_includes { ++ build.include(each_include); + } + +- if is_x64 { +- for file in BUILD_FILES_X64 { +- add_file(&mut build, file); +- } ++ for each_source in BUILD_FILES { ++ add_file(&mut build, each_source); ++ } ++ for each_source in match target_arch.as_str() { ++ "x86" => BUILD_FILES_X86, ++ "x86_64" => BUILD_FILES_X86_64, ++ "aarch64" => BUILD_FILES_AARCH64, ++ _ => unsupported(&target_arch), ++ } { ++ add_file(&mut build, each_source); + } + + build +@@ -54,16 +81,38 @@ pub fn probe_and_link() { + build_and_link(); + } + +-pub fn pre_process_asm(include_dirs: &[&str], target: &str, is_x64: bool) -> String { +- let file_name = if is_x64 { "win64_intel" } else { "sysv_intel" }; +- +- let mut cmd = cc::windows_registry::find(&target, "cl.exe").expect("Could not locate cl.exe"); +- cmd.env("INCLUDE", include_dirs.join(";")); ++pub fn pre_process_asm(include_dirs: &[&str], target: &str, target_arch: &str) -> String { ++ let folder_name = match target_arch { ++ "x86" => "x86", ++ "x86_64" => "x86", ++ "aarch64" => "aarch64", ++ _ => unsupported(target_arch), ++ }; ++ ++ let file_name = match target_arch { ++ "x86" => "sysv_intel", ++ "x86_64" => "win64_intel", ++ "aarch64" => "win64_armasm", ++ _ => unsupported(target_arch), ++ }; ++ ++ let mut cmd = cc::windows_registry::find(target, "cl.exe").expect("Could not locate cl.exe"); ++ ++ // When cross-compiling we should provide MSVC includes as part of the INCLUDE env.var ++ let build = cc::Build::new(); ++ for (key, value) in build.get_compiler().env() { ++ if key.to_string_lossy() == "INCLUDE" { ++ cmd.env( ++ "INCLUDE", ++ format!("{};{}", value.to_string_lossy(), include_dirs.join(";")), ++ ); ++ } ++ } + + cmd.arg("/EP"); +- cmd.arg(format!("libffi/src/x86/{}.S", file_name)); ++ cmd.arg(format!("libffi/src/{}/{}.S", folder_name, file_name)); + +- let out_path = format!("libffi/src/x86/{}.asm", file_name); ++ let out_path = format!("libffi/src/{}/{}.asm", folder_name, file_name); + let asm_file = fs::File::create(&out_path).expect("Could not create output file"); + + cmd.stdout(asm_file); +diff --git a/vendor/libffi-sys/build/not_msvc.rs b/vendor/libffi-sys/build/not_msvc.rs +index e6fedf360..48dcfbe32 100644 +--- a/vendor/libffi-sys/build/not_msvc.rs ++++ b/vendor/libffi-sys/build/not_msvc.rs +@@ -47,7 +47,7 @@ pub fn configure_libffi(prefix: PathBuf, build_dir: &Path) { + let mut command = Command::new("sh"); + + command +- .arg("configure") ++ .arg("./configure") + .arg("--with-pic") + .arg("--disable-shared") + .arg("--disable-docs"); +@@ -55,12 +55,18 @@ pub fn configure_libffi(prefix: PathBuf, build_dir: &Path) { + let target = std::env::var("TARGET").unwrap(); + let host = std::env::var("HOST").unwrap(); + if target != host { +- // Autoconf uses riscv64 while Rust uses riscv64gc for the architecture +- if target == "riscv64gc-unknown-linux-gnu" { +- command.arg("--host=riscv64-unknown-linux-gnu"); +- } else { +- command.arg(format!("--host={}", target)); +- } ++ let cross_host = match target.as_str() { ++ // Autoconf uses riscv64 while Rust uses riscv64gc for the architecture ++ "riscv64gc-unknown-linux-gnu" => "riscv64-unknown-linux-gnu", ++ // Autoconf does not yet recognize illumos, but Solaris should be fine ++ "x86_64-unknown-illumos" => "x86_64-unknown-solaris", ++ // configure.host does not extract `ios-sim` as OS. ++ // The sources for `ios-sim` should be the same as `ios`. ++ "aarch64-apple-ios-sim" => "aarch64-apple-ios", ++ // Everything else should be fine to pass straight through ++ other => other, ++ }; ++ command.arg(format!("--host={}", cross_host)); + } + + let mut c_cfg = cc::Build::new(); +@@ -68,6 +74,9 @@ pub fn configure_libffi(prefix: PathBuf, build_dir: &Path) { + .cargo_metadata(false) + .target(&target) + .warnings(false) ++ // Work around a build failure with clang-16 and newer. Can be removed ++ // once https://github.com/libffi/libffi/pull/764 is merged. ++ .flag_if_supported("-Wno-implicit-function-declaration") + .host(&host); + let c_compiler = c_cfg.get_compiler(); + +diff --git a/vendor/libffi-sys/libffi/ChangeLog b/vendor/libffi-sys/libffi/ChangeLog +index e766a7472..1ca669ec4 100644 +--- a/vendor/libffi-sys/libffi/ChangeLog ++++ b/vendor/libffi-sys/libffi/ChangeLog +@@ -1,3 +1,1737 @@ ++commit f24180be1367f942824365b131ae894b9c769c7d ++Author: Anthony Green ++Date: Sun Oct 23 20:17:29 2022 -0400 ++ ++ Update to version 3.4.4 ++ ++commit 848052fabb207d6f56485c8c2c3509eddecbe828 ++Author: Anthony Green ++Date: Sun Oct 23 11:25:10 2022 -0400 ++ ++ More aarch64 fixes ++ ++commit af0f14cd6d932bd1c2f7c39c01e2df3b0ad19ea9 ++Author: Icecream95 ++Date: Mon Oct 24 04:08:10 2022 +1300 ++ ++ Fix types of temporary variables in aarch64 extend_integer_type (#745) ++ ++ Fixes truncated values in weston-info output. ++ ++commit f7233db2a781b43e419a30edbec7639f74fa2a00 ++Author: musvaage <112724366+musvaage@users.noreply.github.com> ++Date: Mon Oct 17 17:26:17 2022 -0500 ++ ++ typos (#742) ++ ++commit 45e492952e9f984a105ab281fb9433a4bbc12146 ++Author: Anthony Green ++Date: Sun Oct 16 12:41:56 2022 -0400 ++ ++ Add 32-bit cygwin test ++ ++commit 93cfb655200f34ab1b2b7d8955291c457b91ee9f ++Author: Anthony Green ++Date: Mon Oct 10 14:32:35 2022 -0400 ++ ++ Correction for older compilers ++ ++commit 77a0fb82b53087647a12334c6ddd590ea6215199 ++Author: Andreas Schwab ++Date: Mon Oct 10 17:59:04 2022 +0200 ++ ++ Flush output before aborting (#740) ++ ++ Co-authored-by: Andreas Schwab ++ ++commit 3874fd9865eef72a5cf5a761781b51f8db9fa267 ++Author: Andreas Schwab ++Date: Mon Oct 10 17:58:48 2022 +0200 ++ ++ Fix strict aliasing problem in aarch64 ffi_call (#739) ++ ++ The assignment a = &dest in ffi_call_int may be moved after the call to ++ extend_integer_type because that function accesses the assigned value with ++ a different type. ++ ++ Co-authored-by: Andreas Schwab ++ ++commit 4b0c358e28fae22164bf0d423f183dfed8a1ba10 ++Author: Andreas Schwab ++Date: Mon Oct 10 17:57:47 2022 +0200 ++ ++ riscv: make copies of structs passed by reference (#738) ++ ++ Co-authored-by: Andreas Schwab ++ ++commit c163d93ac032a101cda1818855d681430f7af89a ++Author: Anthony Green ++Date: Sat Oct 8 18:35:38 2022 -0400 ++ ++ Add gcc-12 testing for aarch64 linux ++ ++commit 62fd1f218be35976858a9f3a0b36fe0d38146bc9 ++Author: Anthony Green ++Date: Sun Oct 2 13:03:37 2022 -0400 ++ ++ Tweak quotes ++ ++commit e1d1b094d31dbf97bd53c09736be97e1e9812d6a ++Author: Anthony Green ++Date: Wed Sep 28 10:16:45 2022 -0400 ++ ++ Add . ++ ++commit b45f68949d7d1b705eb5e26f58a09972ad70a9c4 ++Author: Anthony Green ++Date: Wed Sep 28 10:16:01 2022 -0400 ++ ++ Update README for 3.4.4. ++ ++commit 817a43fbc1d6d1c702c492e926f158b17ae988e4 ++Author: Anthony Green ++Date: Wed Sep 28 09:05:45 2022 -0400 ++ ++ Revert to previous cfi check. (#735) ++ ++commit 963c4a969326192a2a0ad536d3943f21dbbb0eaa ++Author: Anthony Green ++Date: Tue Sep 27 22:05:42 2022 -0400 ++ ++ Remove nested comments ++ ++commit e9e44157526c00bfd1142175ed6a7eb936ea0ede ++Author: Anthony Green ++Date: Tue Sep 27 21:25:30 2022 -0400 ++ ++ Don't tweak path ++ ++commit 4594dcc98770b4fa60fce313abf557f090f8a0fd ++Author: Anthony Green ++Date: Tue Sep 27 21:05:26 2022 -0400 ++ ++ Fix find ++ ++commit fe68a7b998329f471c3c0c5726073b9cb1a5a126 ++Author: Anthony Green ++Date: Tue Sep 27 20:29:17 2022 -0400 ++ ++ Locate tools ++ ++commit cfb3f4c255cda534d1dc5de6a31cff70f02f9d69 ++Author: Anthony Green ++Date: Tue Sep 27 20:13:42 2022 -0400 ++ ++ Use cross tools for Windows ++ ++commit ae544e0043079d778fdf0e16408db3b7a6d723bd ++Author: Anthony Green ++Date: Tue Sep 27 18:23:06 2022 -0400 ++ ++ Fix shell ++ ++commit b8d849bd85294253787bbe1838de354ad2f54201 ++Author: Anthony Green ++Date: Tue Sep 27 17:58:31 2022 -0400 ++ ++ Find ms tools ++ ++commit 9785eee066782d7575023f94b64402963b55aa8c ++Author: Anthony Green ++Date: Tue Sep 27 17:39:44 2022 -0400 ++ ++ 32- and 64-bit Windows ++ ++commit 1421717effc7b5052e3c26e2b715a83a8a61355c ++Author: Anthony Green ++Date: Tue Sep 27 08:13:17 2022 -0400 ++ ++ Add "lto" to triple to identify lto builds ++ ++commit 425acd4c2f217b00868ec1577c20b73de032c114 ++Author: Anthony Green ++Date: Tue Sep 27 07:57:37 2022 -0400 ++ ++ Try aarch64 linux with -flto ++ ++commit c4261a0588fa997837e44f8417fc8577b37cd461 ++Author: Anthony Green ++Date: Mon Sep 26 16:45:00 2022 -0400 ++ ++ Show compiler version ++ ++commit a1467200c36ce80dacb8d9d0d50049765809b6f4 ++Author: Anthony Green ++Date: Mon Sep 26 11:41:48 2022 -0400 ++ ++ Never link pthread for android ++ ++commit 5ce26a0e03eacb483709189e8cbb05509fa68612 ++Author: Frederik Seiffert ++Date: Mon Sep 26 13:43:40 2022 +0200 ++ ++ CI: add Android builds (#732) ++ ++commit 55bcc47717bb0f9c5276a45710d757cda7a61f8e ++Author: Anthony Green ++Date: Sat Sep 24 22:03:52 2022 -0400 ++ ++ Test idea borrowed from cpython ++ ++commit a2473cde0a02c096dc3e0b57f0cb73f598765570 ++Author: Anthony Green ++Date: Sat Sep 24 21:41:02 2022 -0400 ++ ++ or1k: All struct args are passed in memory ++ ++commit f93224d38662a8cdc33ca56fe6f2d5650a86d690 ++Author: Anthony Green ++Date: Sat Sep 24 21:38:57 2022 -0400 ++ ++ moxie: All struct args are passed in memory ++ ++commit e79f19489bb294ce60bef5cdba5e56c3e7d84382 ++Author: Anthony Green ++Date: Sat Sep 24 17:11:30 2022 -0400 ++ ++ Add test case transcribed from cpython ++ ++commit ab96038772ec4f4ccfaf49d621cd20f58742c401 ++Author: Anthony Green ++Date: Mon Sep 19 19:42:35 2022 -0400 ++ ++ Set host triplet for native builds ++ ++commit a6fc81653d6ce649a6bc29675baa112c68a21df0 ++Author: Anthony Green ++Date: Mon Sep 19 19:25:09 2022 -0400 ++ ++ Update job names ++ ++commit 6b7fb6ce9eb4751ed3179de256566971c9d46cb7 ++Author: Anthony Green ++Date: Mon Sep 19 18:23:42 2022 -0400 ++ ++ Give better names to CI workflows ++ ++commit f0675ab7e85ca31095b51db5a5c955f1005240cb ++Author: Anthony Green ++Date: Mon Sep 19 17:30:51 2022 -0400 ++ ++ Update version to 3.4.4-experimental ++ ++commit e3eaa609882fbcffb6c1b21270b6ff46fb57699f ++Author: Hans ++Date: Mon Sep 19 23:26:59 2022 +0200 ++ ++ Suppress error console output duing configure in case not an ELF file (#729) ++ ++ On Cygwin, MSYS and MinGW readelf is available, but files generated are no ++ ELF files. This results in an Error output on console: ++ 'checking whether .eh_frame section should be read-only... readelf: Error: Not an ELF file - it has the wrong magic bytes at the start ++ yes' ++ With this patch the error output is suppressed resulting in only ++ 'checking whether .eh_frame section should be read-only... yes' ++ Setting of related variables is not changed. ++ ++ Co-authored-by: Hannes Müller <> ++ ++commit 84817695eab13c282436fca278bde2384ca955e5 ++Author: Anthony Green ++Date: Mon Sep 19 13:31:46 2022 -0400 ++ ++ Fix typo ++ ++commit 53338d2bbf547682b2461a6e4199276e24ec5c85 ++Author: Anthony Green ++Date: Mon Sep 19 13:07:50 2022 -0400 ++ ++ Update version ++ ++commit 0bd41b75df49f002f3fee9f4d5df225d742d3f1b ++Author: Anthony Green ++Date: Mon Sep 19 12:26:05 2022 -0400 ++ ++ Update libtool version ++ ++commit 9b1dd8f2d5af8c76d120ffd566bf3c821580c96c ++Author: Anthony Green ++Date: Mon Sep 19 12:22:04 2022 -0400 ++ ++ Update version to 3.4.3 ++ ++commit 0a769ccc0f7a4a7e3e76a79b61c28341fc47e3be ++Author: Anthony Green ++Date: Mon Sep 19 08:17:15 2022 -0400 ++ ++ Update release dates ++ ++commit f26b56e1c547d2b4d8c9303275ecea47b5936184 ++Author: Anthony Green ++Date: Mon Sep 19 08:15:22 2022 -0400 ++ ++ Add new files for distribution ++ ++commit b801b54b667340867441e922c14230a93832c8e2 ++Author: Anthony Green ++Date: Mon Sep 19 06:49:32 2022 -0400 ++ ++ Mention AIX with GCC ++ ++commit ff34df233c863371912881516eae039f850fcad6 ++Author: Anthony Green ++Date: Mon Sep 19 06:45:19 2022 -0400 ++ ++ Update comment about platform support ++ ++commit 598ea692b81ac8116bd9907d2b498c16fc92bde7 ++Author: Anthony Green ++Date: Mon Sep 19 06:43:41 2022 -0400 ++ ++ Clean ups, preparing for new release ++ ++commit fc6b939066f211b99eed3c8111e446ec95d51ca6 ++Author: Anthony Green ++Date: Mon Sep 19 06:42:29 2022 -0400 ++ ++ Standardize temp exec file creation ++ ++commit 4c2984c43fbb3db8e65b2b5702b27944eb0ed343 ++Author: Anthony Green ++Date: Sun Sep 18 15:06:57 2022 -0400 ++ ++ Handle win32 ABIs for struct return ++ ++commit b05dc51bbe9aef6fcac66a8e68b59472bfaff126 ++Author: Anthony Green ++Date: Sun Sep 18 13:03:10 2022 -0400 ++ ++ Debug x86 ++ ++commit cafdb8377a8be2eadac05c318fae9ef6786c36c2 ++Author: Anthony Green ++Date: Sun Sep 18 12:05:12 2022 -0400 ++ ++ Revert ++ ++commit acf0ce9e9b0bcd73d39f599a53e9924ba74c13c1 ++Author: Anthony Green ++Date: Sun Sep 18 11:04:54 2022 -0400 ++ ++ Add test case ++ ++commit b49308eaac7288e01a36894598fb62bfaf61b238 ++Author: Anthony Green ++Date: Sun Sep 18 08:26:23 2022 -0400 ++ ++ Add missing ABI_ATTR ++ ++commit 735e7be4fb2a0401a9ca66cc64004b8b3418feb3 ++Author: Anthony Green ++Date: Sun Sep 18 08:21:34 2022 -0400 ++ ++ X86 is never defined. ++ ++commit ee22ecbd11f52f8de1adbb2a6561aee2125a576a ++Author: Hans ++Date: Sun Sep 18 01:56:25 2022 +0200 ++ ++ Add MSYS configuration files (#728) ++ ++ * Add MSYS configuration files ++ ++ MSYS behaves very similiar to Cygwin, e.g. also __CYGWIN__ is defined. ++ Now 'make check' passes on MSYS without extra patches. ++ ++ * Fix warning extra tokens at end of #endif in closures.c ++ ++ Extra tokens converted into a comment. Also nearby indentations corrected. ++ ++ * Fix missing prototype warning mkostemp() on Cygwin ++ ++ Cygwin requires also _GNU_SOURCE to be defined to enable mkostemp() prototype. ++ ++ * Fix warning label ‘out’ defined but not used in ffi functions ++ ++ Define same preprocessor conditions for goto and label visibility. ++ ++ * Fix warning label ‘out’ defined but not used and related indentations. ++ ++ Define same preprocessor conditions for goto and label visibility. Correct also ++ related indentations. ++ ++ Co-authored-by: Hannes Müller <> ++ ++commit 5e010474cf2e30fa053f0a1a460a752f06438cf7 ++Author: Anthony Green ++Date: Thu Sep 15 16:57:59 2022 -0400 ++ ++ Fix test case for 64-bit mingw ++ ++commit 305cde7904ab676b7974ae68acb40b788b4c484e ++Author: Anthony Green ++Date: Thu Sep 15 15:50:35 2022 -0400 ++ ++ Passes on 64bit mingw ++ ++commit 05785cafcf584d80c6b48651e1d33c4a3feca75c ++Author: Anthony Green ++Date: Thu Sep 15 15:18:09 2022 -0400 ++ ++ Fix arg alignment for STDCALL ++ ++commit 98d4ad65e9933ed4878ef4aacfaa8299e467a903 ++Author: Anthony Green ++Date: Thu Sep 15 09:42:53 2022 -0400 ++ ++ Fix test headers ++ ++commit 2abf00a6c61f4cf6232dc50f28204be020bef05d ++Author: Anthony Green ++Date: Thu Sep 15 08:25:39 2022 -0400 ++ ++ Tweak msys2 tools again ++ ++commit d1b31536af74590b74236a00254e77617a8d50b0 ++Author: Anthony Green ++Date: Thu Sep 15 08:16:26 2022 -0400 ++ ++ Fix msys2 tool selection ++ ++commit d352ed366722d5dfce0c1581c3820124c0bbafed ++Author: Anthony Green ++Date: Thu Sep 15 08:10:53 2022 -0400 ++ ++ Build 32- and 64-bit msys2 ++ ++commit 4d0a0384ce11446e02fb7f233aae5c19c8082fb1 ++Author: Anthony Green ++Date: Thu Sep 15 07:58:26 2022 -0400 ++ ++ msvc requires the printf change, not mingw ++ ++commit a509abf6b0ef9045b8df05b0c3663969b21290c4 ++Author: Anthony Green ++Date: Thu Sep 15 06:45:00 2022 -0400 ++ ++ Install unzip ++ ++commit 950ed4a75384c4e7b0a512cb49f71f4d99c50a5d ++Author: Anthony Green ++Date: Thu Sep 15 06:33:14 2022 -0400 ++ ++ Don't make msys2 default shell ++ ++commit 5d02c0cca3750c7aac61971b9e4cb94940793303 ++Author: Anthony Green ++Date: Thu Sep 15 06:28:23 2022 -0400 ++ ++ Try msys2 ++ ++commit 64a78fa760c581f9c70199abb34aef1e0d086bd2 ++Author: Anthony Green ++Date: Thu Sep 15 06:08:30 2022 -0400 ++ ++ Try new path ++ ++commit 77fdeae859f3ab96bc936f0a967d34a5609af40d ++Author: Anthony Green ++Date: Thu Sep 15 01:37:31 2022 -0400 ++ ++ Find mingw32 ++ ++commit bb4e7278b7f362afd03d128e7cb68a5e0e2efaf7 ++Author: Anthony Green ++Date: Thu Sep 15 01:28:58 2022 -0400 ++ ++ DEbug ++ ++commit 7443b421d39087cad2e607d00b845c670b18920f ++Author: Anthony Green ++Date: Wed Sep 14 23:17:21 2022 -0400 ++ ++ Try new shell ++ ++commit 2ebc36f4be835437fa5d6c4c2b796fc22f769323 ++Author: Anthony Green ++Date: Wed Sep 14 23:11:52 2022 -0400 ++ ++ Fix indentation ++ ++commit 3740b243277c6dc210d45bd0b4f8abe8c2e1cb29 ++Author: Anthony Green ++Date: Wed Sep 14 23:10:43 2022 -0400 ++ ++ set mingw32 path ++ ++commit 7bf23f899cef435d023ecc8afde34d9e83829c2f ++Author: Anthony Green ++Date: Wed Sep 14 23:04:42 2022 -0400 ++ ++ Rename job ++ ++commit ce5b2208121667236874181360ca91aaa285b528 ++Author: Anthony Green ++Date: Wed Sep 14 23:02:32 2022 -0400 ++ ++ Fix mingw32 github actions ++ ++commit 317c9b6a13d3414c510b27bdc7ce57be56399df5 ++Author: Anthony Green ++Date: Wed Sep 14 22:54:10 2022 -0400 ++ ++ Add mingw32 testing ++ ++commit 19e8354ff9b608b5410451caef6a9773375de005 ++Author: Anthony Green ++Date: Wed Sep 14 07:36:06 2022 -0400 ++ ++ Fix test case ++ ++commit 4932f351579fb722e1e0b58a173b1571a6dfae79 ++Author: Anthony Green ++Date: Wed Sep 14 07:08:06 2022 -0400 ++ ++ Improve test case ++ ++commit 819b01ced894028d41a34ec0178de9e7637b23de ++Author: Anthony Green ++Date: Wed Sep 14 07:07:15 2022 -0400 ++ ++ Add test case ++ ++commit b577a5b801b1d1aef1aec5920d34fd1fd6597122 ++Author: Anthony Green ++Date: Mon Sep 12 10:23:59 2022 -0400 ++ ++ Mention Cygwin static trampoline support. ++ ++commit 4b54a6471a8f98eb8bc1ea1694a8f3a3a433e538 ++Author: Anthony Green ++Date: Mon Sep 12 09:02:08 2022 -0400 ++ ++ Fix limits.h inclusion for cygwin ++ ++commit a1130f37712c03957c9b0adf316cd006fa92a60b ++Author: Anthony Green ++Date: Mon Sep 12 08:53:06 2022 -0400 ++ ++ Add static trampoline support for Cygwin ++ ++commit 26cc9a6c73c80e8459c25da3718c91cf5a36cbd8 ++Author: Anthony Green ++Date: Sat Sep 10 20:36:45 2022 -0400 ++ ++ Remove stray }} ++ ++commit 078184887d65bf4a3ecd2f78f6cdbf4c91ccc357 ++Author: Anthony Green ++Date: Sat Sep 10 11:45:28 2022 -0400 ++ ++ Update rlgl usage (switch from player ID to labels) ++ ++commit 6e7caacb9c94efba6775825df2479be389da51f1 ++Author: Anthony Green ++Date: Sat Sep 10 10:31:37 2022 -0400 ++ ++ Label rlgl reports ++ ++commit d9a19e21c2b86e03b6acb8a2d73d992c8e4974e8 ++Author: Anthony Green ++Date: Wed Sep 7 07:58:03 2022 -0400 ++ ++ The right kind of quotes ++ ++commit 2b2644969cbeeaee50938fbea591ea7f85df809e ++Author: Anthony Green ++Date: Wed Sep 7 07:57:26 2022 -0400 ++ ++ More quotes ++ ++commit eb9eb1f6f041548fe670c76f7a90d1c53c75d620 ++Author: Anthony Green ++Date: Wed Sep 7 07:49:51 2022 -0400 ++ ++ Fix random build dir ++ ++commit ea124a99da9efb3bde86a1706e15f62be7e68a66 ++Author: Anthony Green ++Date: Wed Sep 7 07:21:21 2022 -0400 ++ ++ Remove bogus sparc compiler flag ++ ++commit cca77833fd53ffec93a4962d1e9cd7ea5a38f13f ++Author: Anthony Green ++Date: Wed Sep 7 07:20:59 2022 -0400 ++ ++ Fix typo ++ ++commit 8ee64076f1b7cc654ff24adaffff25ddb3d57484 ++Author: Anthony Green ++Date: Wed Sep 7 07:14:13 2022 -0400 ++ ++ Fix typo ++ ++commit 086935029d23dad133c97dfaf68749b7726460a1 ++Author: Anthony Green ++Date: Wed Sep 7 07:12:10 2022 -0400 ++ ++ Set CC and CXX for GCC compile farm builds ++ ++commit da905276850342df0f9dfe2c775f6c649d4eed6b ++Author: Anthony Green ++Date: Tue Sep 6 21:15:58 2022 -0400 ++ ++ dlmmap fix and always check for PaX MPROTECT on linux ++ ++ Also make EMUTRAMP experimental ++ From Stefan Bühler ++ https://github.com/libffi/libffi/pull/282 ++ ++commit b86c3dc0950ad5d8991e3970d56daeb409650d60 ++Author: Anthony Green ++Date: Tue Sep 6 14:25:09 2022 -0400 ++ ++ Fix typos ++ ++commit c9be1378c709586f264dd643f92f71b9f1a842b2 ++Author: Anthony Green ++Date: Tue Sep 6 14:12:21 2022 -0400 ++ ++ Retry autoconf downloads ++ ++commit 62471fd078db7ef66ca8b3118187a2911f2bb3e7 ++Author: Anthony Green ++Date: Tue Sep 6 13:00:02 2022 -0400 ++ ++ Fix typo ++ ++commit b2344575569bc3bd129ad0ff92b49dc220fb287b ++Author: Anthony Green ++Date: Tue Sep 6 12:43:08 2022 -0400 ++ ++ Fix unwindtest on macos ++ ++commit fc4e7c4a10dff3c99d7ea9be33d47e6d5f0efda7 ++Author: Anthony Green ++Date: Mon Sep 5 22:13:58 2022 -0400 ++ ++ Install automake on macos ++ ++commit 5a6c94f7d49bcd64c85bde04c2d1f10b59d5797c ++Author: Anthony Green ++Date: Mon Sep 5 22:04:52 2022 -0400 ++ ++ Test with gcc and clang on macos 11 and 12. ++ ++commit 351318e3bde9ac90c6d5eddbaa7f26ee3e7bcc6c ++Author: Anthony Green ++Date: Mon Sep 5 15:45:53 2022 -0400 ++ ++ Switch to 7 char SHA IDs. Fix windows crlf at git clone time. ++ ++commit 2a024088801403ca0c579d20c3decb8dc1453df1 ++Author: Anthony Green ++Date: Mon Sep 5 12:56:19 2022 -0400 ++ ++ Use GitHub SHA for rlgl ID ++ ++commit e4c5d46b0abaa8a12e97f0e0673e3efdda59fab8 ++Author: Anthony Green ++Date: Mon Sep 5 12:19:57 2022 -0400 ++ ++ Pass large structs by value ++ ++commit 4b79267be359b42e7a4cbf95068abe805aae0061 ++Author: Anthony Green ++Date: Mon Sep 5 08:11:45 2022 -0400 ++ ++ outputs vs output ++ ++commit 3020ad832144e35d2a42fb8782ddbd3ed69fdbaf ++Author: Anthony Green ++Date: Mon Sep 5 08:07:57 2022 -0400 ++ ++ Use single quotes ++ ++commit f969a50aadfdf288797d5492dfb768d9916b9477 ++Author: Anthony Green ++Date: Mon Sep 5 08:06:53 2022 -0400 ++ ++ Try {{}} ++ ++commit 8df671a35e517f27da78b1b933f19294cfc7224f ++Author: Anthony Green ++Date: Mon Sep 5 08:05:39 2022 -0400 ++ ++ Fix compares ++ ++commit 6a9bbc85a95a8a6d314452c8c5ef4add61e7b280 ++Author: Anthony Green ++Date: Mon Sep 5 07:54:47 2022 -0400 ++ ++ Show host availability ++ ++commit 49a361c35b3d826c02e6dc3f15c86555e62ed933 ++Author: Anthony Green ++Date: Mon Sep 5 07:51:34 2022 -0400 ++ ++ Fix conditionals? ++ ++commit d9189beb6e61b20ff4b84fd994d895a29351c422 ++Author: Anthony Green ++Date: Mon Sep 5 07:47:46 2022 -0400 ++ ++ Use boolean values ++ ++commit 2bcdcda8eda82cce594d2c821fc6a87069041bcc ++Author: Anthony Green ++Date: Mon Sep 5 07:44:01 2022 -0400 ++ ++ Try conditional steps ++ ++commit d86d55e51fc2d35ff3a829d41c8ec1c83570cd40 ++Author: Anthony Green ++Date: Mon Sep 5 07:15:38 2022 -0400 ++ ++ Tweak test for host availability ++ ++commit 5b4d5f2b3a3f3f9fb71ce40e3be00ae6191ffc37 ++Author: Anthony Green ++Date: Mon Sep 5 07:11:12 2022 -0400 ++ ++ Fix triples ++ ++commit 02e6a894cbb1d851ec1a31b3277f2414c4a1370f ++Author: Anthony Green ++Date: Mon Sep 5 06:55:08 2022 -0400 ++ ++ Add missing paren ++ ++commit fcaa8ebbccf2e2e4e0317164b624b683ac95c474 ++Author: Anthony Green ++Date: Mon Sep 5 06:47:40 2022 -0400 ++ ++ Unnest quotes ++ ++commit f4009ed4f0351c6c8e8f410dac7c558fe9996e7e ++Author: Anthony Green ++Date: Mon Sep 5 06:40:00 2022 -0400 ++ ++ Fix syntax error ++ ++commit f92e32cfacdbf82172b06ce13d63eab65f205598 ++Author: Anthony Green ++Date: Mon Sep 5 06:17:38 2022 -0400 ++ ++ Try dribbling output during make check ++ ++commit ef57e08aa34dc9f55abb493a554a957ca358d931 ++Author: Anthony Green ++Date: Sun Sep 4 22:35:32 2022 -0400 ++ ++ Split up build into multiple steps ++ ++commit 2480cc48def54eb155429710187452e0d495b773 ++Author: Anthony Green ++Date: Sun Sep 4 21:09:06 2022 -0400 ++ ++ Try to fix ssh issues ++ ++commit 1105db1ce6cf1f7ab5a254cd04453b0c5e9dad30 ++Author: Anthony Green ++Date: Sun Sep 4 09:52:28 2022 -0400 ++ ++ Try forcing exit upon completion ++ ++commit 92a7775150978b3e98b0d47280dd6dd6580dbd07 ++Author: Anthony Green ++Date: Sun Sep 4 09:17:01 2022 -0400 ++ ++ Source .profile on remote host if it exists ++ ++commit 8e3ea879a9e538c9237c34ae113babe078565da9 ++Author: Anthony Green ++Date: Sun Sep 4 09:07:13 2022 -0400 ++ ++ Only ignore errors when testing for ssh connectivity. ++ ++commit a643db6c1f1bd7594e42a03865b7a9063cfbf1c1 ++Author: Anthony Green ++Date: Sun Sep 4 08:28:50 2022 -0400 ++ ++ Don't fail on error ++ ++commit 33f1f19a7da022a7d8dba59bb97c28cb4fd6aadf ++Author: Anthony Green ++Date: Sun Sep 4 08:24:06 2022 -0400 ++ ++ Add POWER hosts ++ ++commit 7a300f3d657ee7b94bda5296b3b366b5915a5c79 ++Author: Anthony Green ++Date: Sun Sep 4 08:08:47 2022 -0400 ++ ++ Fix the setting of the host ++ ++commit b104dd621f9d2b298ede781f0bd289ce8a0c20ee ++Author: Anthony Green ++Date: Sun Sep 4 08:07:12 2022 -0400 ++ ++ If a remote host is unavailable, don't fail the build. ++ ++commit 7194e11832ad9609bd38c2a1fd4995d749443ee0 ++Author: Anthony Green ++Date: Sun Sep 4 08:01:47 2022 -0400 ++ ++ Debug build ++ ++commit 6fccf95b4f97335eda1d8bfe2e12fc38bea571d2 ++Author: Anthony Green ++Date: Sun Sep 4 07:57:53 2022 -0400 ++ ++ Add connection timeouts and retries ++ ++commit b4cf3d64b1807667eba7863701b6fcae68c65e68 ++Author: Anthony Green ++Date: Sun Sep 4 07:32:18 2022 -0400 ++ ++ Prune warnings from sparc64 linux ld ++ ++commit 807283704a4a77187103f9d4d73c9feb75f3c757 ++Author: Anthony Green ++Date: Sun Sep 4 07:21:02 2022 -0400 ++ ++ For host triples to distinguish m1 arm64 from others. ++ ++commit 4cba6c1858e842ef674ed41b5d79bc981fdfc411 ++Author: Anthony Green ++Date: Sat Sep 3 11:42:11 2022 -0400 ++ ++ Don't exit if runtest fails ++ ++commit 439dfa1f7f96aec5689d5b28511e0162bc0ae3f9 ++Author: Anthony Green ++Date: Sat Sep 3 10:42:46 2022 -0400 ++ ++ Fix spaces ++ ++commit b7d9e3a1a0c3138df513cd5df49a0e14584c7556 ++Author: Anthony Green ++Date: Sat Sep 3 10:41:45 2022 -0400 ++ ++ Run rlgl ++ ++commit e85b55c2d30783db52d148f2691c8a3afd3d4ec3 ++Author: Anthony Green ++Date: Sat Sep 3 10:16:01 2022 -0400 ++ ++ Fix recursive copy flag ++ ++commit 98168532a22615bd2aab0f3bf08e8a5f8abcd375 ++Author: Anthony Green ++Date: Sat Sep 3 10:14:56 2022 -0400 ++ ++ Fix typo ++ ++commit 943219e3281d4f9f3ae416ca3bf9fd3482cf8c63 ++Author: Anthony Green ++Date: Sat Sep 3 10:13:04 2022 -0400 ++ ++ Use scp, as rsync isn't available on all hosts ++ ++commit 0e912017c96afe6bf6500e90075df6b7366c337a ++Author: Anthony Green ++Date: Sat Sep 3 10:04:54 2022 -0400 ++ ++ Use ssh port numbers and copy dejagnu results back ++ ++commit c8fe3d3d440d46b7b465e8d11ea8461a5ae86462 ++Author: Anthony Green ++Date: Sat Sep 3 09:58:43 2022 -0400 ++ ++ Use username ++ ++commit 3e75f9554f06bab33e022276d320a301f1b04e44 ++Author: Anthony Green ++Date: Sat Sep 3 09:56:13 2022 -0400 ++ ++ Tighten permissions on key ++ ++commit d893eda74196ecc39f1d839b340d0b158fc536eb ++Author: Anthony Green ++Date: Sat Sep 3 09:55:01 2022 -0400 ++ ++ Disable host key checking ++ ++commit da35cf0fb693b6f93a745119c777b3c4aa6d779b ++Author: Anthony Green ++Date: Sat Sep 3 09:52:26 2022 -0400 ++ ++ Add quotes ++ ++commit 128d57ab940a3a76658a8c8b4b98cd80fb602d65 ++Author: Anthony Green ++Date: Sat Sep 3 09:51:00 2022 -0400 ++ ++ Remove bad command ++ ++commit 5b34bed4ff0a5c1c0257f4d586b868ded173dc67 ++Author: Anthony Green ++Date: Sat Sep 3 09:49:45 2022 -0400 ++ ++ Debug ++ ++commit 77b32cb1533e5166bebf2a7cd1465e3a1eef55ad ++Author: Anthony Green ++Date: Sat Sep 3 09:43:41 2022 -0400 ++ ++ Fix typo ++ ++commit 22c1ceb27597d21779c7565c94c444dadc606478 ++Author: Anthony Green ++Date: Sat Sep 3 09:42:01 2022 -0400 ++ ++ Simplify remote tests ++ ++commit dde8e81deba0c2ef3edca804f34347bfae0e88bd ++Author: Anthony Green ++Date: Sat Sep 3 09:22:19 2022 -0400 ++ ++ Revert to old file copy ++ ++commit 3cd913c8dafa71c1bb14ca5e1f4208343cc3a194 ++Author: Anthony Green ++Date: Sat Sep 3 09:19:08 2022 -0400 ++ ++ Remove SHA256 ++ ++commit 3127a25df827f2afa3f6bdfdfceff169fe241fcf ++Author: Anthony Green ++Date: Sat Sep 3 09:13:16 2022 -0400 ++ ++ Try new fingerprint ++ ++commit f095b747423806b44c2ef883ec65a7ce5230fbf7 ++Author: Anthony Green ++Date: Sat Sep 3 09:11:47 2022 -0400 ++ ++ Use correct fingerprint ++ ++commit 1f44118157a005661b55f1747cfd15773214e458 ++Author: Anthony Green ++Date: Sat Sep 3 08:55:20 2022 -0400 ++ ++ Ignore fingerprints ++ ++commit 8fd73fe61f496a24a4093ba1d195a884f86d547e ++Author: Anthony Green ++Date: Sat Sep 3 08:51:33 2022 -0400 ++ ++ Use rsa fingerprints ++ ++commit 09c3908a4279f4c9e2c4a8282efb29c412964119 ++Author: Anthony Green ++Date: Sat Sep 3 08:43:23 2022 -0400 ++ ++ Use host fingerprints ++ ++commit caa793a3401b92b0ef2006ab90c4dd30b7ab7d5c ++Author: Anthony Green ++Date: Sat Sep 3 08:35:56 2022 -0400 ++ ++ Try new scp ++ ++commit 0cbffe5ef542641170b8cbe588fb703e7410cb13 ++Author: Anthony Green ++Date: Sat Sep 3 08:23:35 2022 -0400 ++ ++ Fix GITHUB_RUN_NUMBER usage ++ ++commit 628cc2f675c6df35213d74388aac69c5c165b1f4 ++Author: Anthony Green ++Date: Sat Sep 3 08:16:47 2022 -0400 ++ ++ Fix loongarch64 server port. Try GITHUB_RUN_NUMBER. ++ ++commit 9382d7955f80aaa6fc0ca036956fe4e14a0d45b6 ++Author: Anthony Green ++Date: Sat Sep 3 08:06:11 2022 -0400 ++ ++ Reference matrix variables properly ++ ++commit e081b2cec74253b48a0d09d8a0d309f60e8f82e5 ++Author: Anthony Green ++Date: Sat Sep 3 07:58:27 2022 -0400 ++ ++ List cfarm servers explicitly ++ ++commit 074e9c79e36e63a9cc8c8fca6c76dd927778dc54 ++Author: Anthony Green ++Date: Sat Sep 3 07:46:02 2022 -0400 ++ ++ Try multiple hosts ++ ++commit 6002b2ad639f9125da56834e4b0a1b12fa232c57 ++Author: Anthony Green ++Date: Sat Sep 3 07:10:58 2022 -0400 ++ ++ Use correct version of scp-action ++ ++commit a990426c5f4114c85f6cfc190276786ef5c49521 ++Author: Anthony Green ++Date: Sat Sep 3 07:09:33 2022 -0400 ++ ++ Use scp instead of rsync ++ ++commit 0fabd777d91e13bb4795d0b9db0b2201f9298904 ++Author: Anthony Green ++Date: Sat Sep 3 07:02:34 2022 -0400 ++ ++ Remove extra debug ++ ++commit 1922870fe3baf41991670db81b35c1ab0b482895 ++Author: Anthony Green ++Date: Sat Sep 3 06:53:52 2022 -0400 ++ ++ Debug rsync ++ ++commit aee50966ca85d777271cd7e14714b916264cb190 ++Author: Anthony Green ++Date: Sat Sep 3 06:47:49 2022 -0400 ++ ++ Change remote path ++ ++commit 73552c2e732df17c7f9008fecfc448c1d6397cfe ++Author: Anthony Green ++Date: Fri Sep 2 20:03:02 2022 -0400 ++ ++ Tweak ++ ++commit 904424fe82bd6d4a498fee84b3f26d55426ff75f ++Author: Anthony Green ++Date: Fri Sep 2 19:58:19 2022 -0400 ++ ++ Work in actions dir ++ ++commit 31c31db079b054270a19cc710f06fbb84e805511 ++Author: Anthony Green ++Date: Fri Sep 2 19:48:33 2022 -0400 ++ ++ Run autogen before copying files to remote server ++ ++commit d84f2ea0ea760b8e63f50eb6c3583aeb38d89d0e ++Author: Anthony Green ++Date: Fri Sep 2 19:44:34 2022 -0400 ++ ++ Install autoconf ++ ++commit 78beb4aee5386cd4ea14cfa753a778eafcc3ec2d ++Author: Anthony Green ++Date: Fri Sep 2 19:34:50 2022 -0400 ++ ++ Try more remote testing ++ ++commit 16f17cd8418ce2239f8b9b31e5f3b5414298292f ++Author: Anthony Green ++Date: Fri Sep 2 19:16:12 2022 -0400 ++ ++ Fix ssh ++ ++commit badccc01c84ee38f5f443c910ba06b3792029d8b ++Author: Anthony Green ++Date: Fri Sep 2 19:11:53 2022 -0400 ++ ++ Add platform ++ ++commit 0eae6af297d9a34bd6adcbf43fbbd27e5feebc53 ++Author: Anthony Green ++Date: Fri Sep 2 19:09:43 2022 -0400 ++ ++ Missing colon ++ ++commit ce8cec023499d8da04936e2dc40111f8d6a1783e ++Author: Anthony Green ++Date: Fri Sep 2 19:04:39 2022 -0400 ++ ++ Try cfarm access ++ ++commit 9b58d4bad688820fa9bb077c0ec5f5949ac18bd2 ++Author: Anthony Green ++Date: Thu Sep 1 08:57:13 2022 -0400 ++ ++ GCC_AS_CFI_PSEUDO_OP passes on msvc, although it's not sufficient. ++ ++commit e6d05bea0b4c350edaaf215a81f49298f34b10e4 ++Author: Ole André Vadla Ravnås ++Date: Thu Sep 1 14:51:15 2022 +0200 ++ ++ Fix struct padding warning reported by MSVC (#613) ++ ++ When building on 32-bit x86. ++ ++commit 80912f2f09f4c06b2f720ff243d7b9b6795093f9 ++Author: Clément Chigot ++Date: Thu Sep 1 14:47:16 2022 +0200 ++ ++ Makefile: enable target overridings. (#661) ++ ++ This patch allows target to provide extra files enabling the ++ override of Makefile rules. ++ This patch is not needed for libffi itself but only for GCC on AIX. The ++ t-aix file which is here empty will be replaced in GCC repository. We cannot ++ include GCC version directly here because it has no sense for a standalone ++ libffi. ++ ++ Co-authored-by: Clement ++ ++commit 1fa7d96cdf7bba354f61337854210f060ea56b9f ++Author: Anthony Green ++Date: Thu Sep 1 08:28:59 2022 -0400 ++ ++ Don't use cached configure test result ++ ++commit bcb42e432b5372b1876e8c8db68837d92d1f94ae ++Author: Anthony Green ++Date: Thu Sep 1 08:05:01 2022 -0400 ++ ++ Fix .cfi pseudo-ops test. ++ ++ The existing tests were failing because the GCC was wrapping the test ++ asm in cfi directives, which gas doesn't like. So now we test if the ++ compiler emits them first, and assume that the assembler will accept ++ them. If that doesn't work, then we test if the assembler will accept ++ them assuming the compiler doesn't emit them. ++ ++commit 0eb91425f355be19939507d4d4d056bdad12c9dd ++Author: Anthony Green ++Date: Wed Aug 31 20:46:24 2022 -0400 ++ ++ Change comment style ++ ++commit ca76ab3b8551d9e7cee6f533ecd1e89fee70e16a ++Author: Anthony Green ++Date: Wed Aug 31 10:30:26 2022 -0400 ++ ++ Fix exports for tests ++ ++commit 7b1dd8ce10e6bef043088896136105b8aabbb882 ++Author: Anthony Green ++Date: Wed Aug 31 09:49:21 2022 -0400 ++ ++ Don't -malign-double for x86-32 ++ ++commit 41d0851fc545ff1ffd8377236d193268c8a10740 ++Author: Anthony Green ++Date: Wed Aug 31 07:36:43 2022 -0400 ++ ++ Update copyright year ++ ++commit 5a4774cd4d90f9ea7e7f9e34b15de29463aba4c4 ++Author: Xi Ruoyao ++Date: Fri Jul 22 05:56:30 2022 +0800 ++ ++ static trampoline for LoongArch (#723) ++ ++ For the benefit and technical details of static trampoline, see ++ https://github.com/libffi/libffi/pull/624. As a new architecture, let's ++ be "safer" from the start. ++ ++ The change survived libffi testsuite on loongarch64-linux-gnu. ++ ++commit 5264a7c5cd3460465326ebd347559828196dceb1 ++Author: matoro ++Date: Thu Jul 21 17:54:19 2022 -0400 ++ ++ Move FFI_TYPE definitions above include (#722) ++ ++ For powerpc at least, these definitions are referenced in the ++ target-specific ffitarget.h. Discovered in the jffi project. Should ++ close https://github.com/libffi/libffi/issues/637. Downstream jffi bug ++ https://github.com/jnr/jffi/issues/107. Downstream distro bug ++ https://bugs.gentoo.org/827215. ++ ++ Testing - both libffi and jffi test suites pass with this patch applied, ++ at least on ppc64le linux. I did not see any warnings about ++ redefinitions. ++ ++ Tested versions - libffi 3.4.2, jffi 1.3.6 and 1.3.9. ++ ++commit ddc6764386b29449d941b2b18d000f2987a9d848 ++Author: Anthony Green ++Date: Sat Jun 25 22:04:53 2022 -0400 ++ ++ Add missing file ++ ++commit 2b4728a21f9a36c6567df8dd27fc8a665264019c ++Author: Anthony Green ++Date: Sat Jun 25 21:58:51 2022 -0400 ++ ++ Fix path ++ ++commit 37cc25bb25344ee33c5b7ff06c6804d31374a544 ++Author: Anthony Green ++Date: Sat Jun 25 21:56:40 2022 -0400 ++ ++ Install and use autoconf from special dir ++ ++commit 2f2eab957d3acbf571c570ab2ccf894e3c85b033 ++Author: Anthony Green ++Date: Sat Jun 25 21:53:00 2022 -0400 ++ ++ Fix autoconf version number ++ ++commit 4b1465495c9d6e5ef95bacc38b86483fd910f887 ++Author: Anthony Green ++Date: Sat Jun 25 21:51:25 2022 -0400 ++ ++ Fix wget ++ ++commit 398b7534d97b2b642492fbb024e15be3df564da8 ++Author: Anthony Green ++Date: Sat Jun 25 21:49:09 2022 -0400 ++ ++ Fix wget ++ ++commit 2c047eb7b108fba1203ba6122e830a7ae17721ca ++Author: Anthony Green ++Date: Sat Jun 25 21:46:54 2022 -0400 ++ ++ Fix untar ++ ++commit 446c092f409bd37c21b5b986c2be8f87a1cb1dec ++Author: Anthony Green ++Date: Sat Jun 25 21:45:32 2022 -0400 ++ ++ Install autoconf-2.71 ++ ++commit 5c76ac1ff55c4ed6faa145b395e9a14cdb834708 ++Author: Anthony Green ++Date: Sat Jun 25 21:22:01 2022 -0400 ++ ++ Update autoconf? ++ ++commit 4a46f35ba5a4bbb3ea396e1fa836535d338f8930 ++Author: Anthony Green ++Date: Sat Jun 25 21:14:30 2022 -0400 ++ ++ Update configury ++ ++commit fc8c8c1e2c31321b38dc079e549bc7748da4159d ++Author: Anthony Green ++Date: Sat Jun 25 11:06:00 2022 -0400 ++ ++ Fix ILP32 for aarch64 ++ ++commit b5abc4f6478147ce72fa6b2eb95296883d5ef3ef ++Author: Anthony Green ++Date: Sat Jun 25 10:43:00 2022 -0400 ++ ++ Remove duplicate macro definition. ++ ++commit 280fe78d37f58927b280e2e316a2ae19201f2b83 ++Author: Xi Ruoyao ++Date: Sat Jun 25 18:58:53 2022 +0800 ++ ++ configure.ac: use grep -E instead of egrep if possible (#720) ++ ++ Upstream will start to emit a warning if egrep is invoked in the next ++ grep release. Stop invoking it explicitly. Use AC_PROG_EGREP to try ++ "grep -E" first, and fallback to egrep if "grep -E" does not work. We ++ need this fallback for some non-GNU grep implementations (like Solaris). ++ ++ Url: https://git.savannah.gnu.org/cgit/grep.git/commit/?id=a951562 ++ ++commit 1f14b3fa92d4442a60233e9596ddec428a985e3c ++Author: Russell Keith-Magee ++Date: Fri Jun 3 02:46:35 2022 +0800 ++ ++ Ensure that VM_PROT_EXECUTE is set on the trampoline page. (#718) ++ ++commit 000ecd01cb534fd8bb593422013a79c8497263ff ++Author: Sergei Trofimovich ++Date: Thu Jun 2 18:43:53 2022 +0000 ++ ++ powerpc64: fix build on gcc-12 (assembly requires AltiVec) (#719) ++ ++ Without the change build fails on powerpc64-gcc-12 as: ++ ++ src/powerpc/linux64_closure.S: Assembler messages: ++ src/powerpc/linux64_closure.S:363: Error: unrecognized opcode: `lvx' ++ ++ It's a 90205f67 "rs6000: Fix bootstrap (libffi)" patch by ++ Segher Boessenkool from gcc upstream repository. It's enough to get ++ libffi build on powerpc64. ++ ++commit c528d5b45e248f47b5af6f16bfcafc779b196ed1 ++Author: Anthony Green ++Date: Sun May 29 11:22:38 2022 -0400 ++ ++ Fix windows arg passing ++ ++commit aa2c4141722ec8b8b014b97e049ffa2d140d0c0d ++Author: Anthony Green ++Date: Sun May 29 10:28:10 2022 -0400 ++ ++ 64-bit cygwin: fix struct args. Document change. ++ ++commit 36b265ae438a364722c98136ba79cb450a48fca3 ++Author: Anthony Green ++Date: Sun May 29 10:12:30 2022 -0400 ++ ++ m32r: pass copies of large structs ++ ++commit c248764d3391a460cdd31a1cae82281fd6dfbecd ++Author: Anthony Green ++Date: Sun May 29 07:27:32 2022 -0400 ++ ++ Update testsuite Makefile ++ ++commit fd1fe195e1d98b65ac3b0735cc0d0df95fc1b27b ++Author: Martin Storsjö ++Date: Sun May 29 14:16:49 2022 +0300 ++ ++ Fix building on aarch64 after e409225b41b60c490a094bb068e639a2364202fd (#716) ++ ++ The ALIGN_DOWN macro was renamed in 2018 in ++ e6eac7863e2bf1a009ea863041b354bdb4af6b67. ++ ++commit c1e237b22ee6042e2d4229008acea8f38c3d0109 ++Author: Anthony Green ++Date: Sat May 28 20:46:14 2022 -0400 ++ ++ Pass large structs by value on the stack ++ ++commit 769b7366d2312c7efdfa605cf1fc1156b94ba2e0 ++Author: Anthony Green ++Date: Sat May 28 19:59:35 2022 -0400 ++ ++ Fix for MS x64 ABI ++ ++commit faafcb9df9aebdde1415a73d17fe9e943d97d455 ++Author: Anthony Green ++Date: Sat May 28 17:24:43 2022 -0400 ++ ++ Fix moxie struct passing ++ ++commit f55d7ff1a24e9c678dac3397175772a9914c02b0 ++Author: Anthony Green ++Date: Sat May 28 14:30:13 2022 -0400 ++ ++ moxie: structs > 8 go on stack ++ ++commit 55f80b026c2ac854086a2770d324fa55188f0f81 ++Author: Anthony Green ++Date: Sat May 28 14:17:53 2022 -0400 ++ ++ New test cases ++ ++commit 72c3192773fe483f6517e343ecc3ea468ce73a4f ++Author: Anthony Green ++Date: Sat May 28 13:53:26 2022 -0400 ++ ++ Pass copies of large structs on the stack ++ ++commit e409225b41b60c490a094bb068e639a2364202fd ++Author: Anthony Green ++Date: Sat May 28 09:42:13 2022 -0400 ++ ++ Pass large structs by value for Linux x86_64 and Aarch64. ++ ++ Aarch patch by Andreas Schwab. https://github.com/libffi/libffi/commit/482b37f00467325e3389bab322525099860dd9aa ++ ++commit 01d54435c9f9e22345cb2f7d482fcfb42fd11416 ++Author: Anthony Green ++Date: Tue May 24 21:38:51 2022 -0400 ++ ++ Mention loongson64 ++ ++commit f259a6f6deff9bdc7dd998b8b6bdbb4c166b33c3 ++Author: zhangwenlong ++Date: Wed May 25 09:31:08 2022 +0800 ++ ++ Support loongarch64 (#678) ++ ++ * update config.{guess,sub} ++ ++ * Support loongarch64 ++ ++ Co-Authored-By: Cheng Lulu ++ Co-Authored-By: Xi Ruoyao ++ Co-Authored-By: Xu Hao ++ Co-Authored-By: Zhang Wenlong ++ Co-Authored-By: Pan Xuefeng ++ ++ Co-authored-by: panxuefeng ++ Co-authored-by: Cheng Lulu ++ Co-authored-by: Xi Ruoyao ++ ++commit d02d46607b5ba62510ddab5fa89303dfa09a7853 ++Author: Anthony Green ++Date: Tue May 24 12:28:08 2022 -0400 ++ ++ Debug cygwin builds ++ ++commit 7e93ded9302d7e6e3cc77b39e8eec4b323e63585 ++Author: Anthony Green ++Date: Mon May 23 21:42:52 2022 -0400 ++ ++ Revert "Don't dereference beyond the last array entry. (#667)" (#715) ++ ++ This reverts commit 92d77d0e87a5f2a8c9c9b2431ffd264cb664e17a. ++ ++commit 432384b6d47087d144d3e947b62c48ddc6e4740b ++Author: Russell Keith-Magee ++Date: Tue May 24 09:06:19 2022 +0800 ++ ++ Add support for ARM64 as an Apple simulator platform. (#712) ++ ++commit 9af445fd70e4d7f2b3bdfc511cc3cc76a6b84c9a ++Author: Kevin Bowling ++Date: Mon May 23 18:05:01 2022 -0700 ++ ++ Upstream FreeBSD riscv patch (#708) ++ ++ Like 8276f812a99b10d1f2c387dbd6ef2ca4f597c733 commit message: ++ > devel/libffi: Fix abort() on ARM related to __clear_cache() ++ > ++ > The current FreeBSD __clear_cache() implementation does nothing #if ++ > __i386__ || __x86_64__ #else abort(); ++ > ++ > cognet@ advises this is an issue for anything !Apple that is using the ++ > libcompiler_rt provided by Clang on ARM, and requires upstreaming. ++ ++ Co-authored-by: Kristof Provost ++ ++commit de95947ae5db07e4589bb16bab30b6c8ba2b3106 ++Author: Roland Schatz ++Date: Tue May 24 03:04:43 2022 +0200 ++ ++ Fix check for invalid varargs arguments. (#707) ++ ++commit 92d77d0e87a5f2a8c9c9b2431ffd264cb664e17a ++Author: Anthony Green ++Date: Mon May 23 21:03:00 2022 -0400 ++ ++ Don't dereference beyond the last array entry. (#667) ++ ++commit e504f90fe9123d256f6bc556badb25d1d0aa7046 ++Author: A. Wilcox ++Date: Mon May 23 18:42:32 2022 -0500 ++ ++ testsuite/libffi.closures: Fix PowerPC 64 (#709) ++ ++ -mlong-double-128 is only supported on glibc. ++ ++ This test still passes on glibc targets, and now passes on musl targets ++ as well (which uses 64-bit ldbl). ++ ++commit f3e61d497a5ddc3bbe506e0554a0be421f6f0f35 ++Author: Anthony Green ++Date: Mon May 23 09:11:42 2022 -0400 ++ ++ Remove debug code ++ ++commit a36880e710f2ec37c0cc50d436facd7c2d282e7b ++Author: Anthony Green ++Date: Mon May 23 08:35:21 2022 -0400 ++ ++ Remove stray export command ++ ++commit 5f98afe802e189584e5649f53a7dd07280516efd ++Author: Anthony Green ++Date: Mon May 23 08:11:26 2022 -0400 ++ ++ Debug cygwin builds ++ ++commit abaacbf8cdf80ddd9303fda5d9be4312d52b531c ++Author: Anthony Green ++Date: Mon May 23 07:57:26 2022 -0400 ++ ++ Debug cygwin tests ++ ++commit e770fb76a781c642f185c23e686bf2af0429ce4c ++Author: Anthony Green ++Date: Sun May 22 20:43:41 2022 -0400 ++ ++ Clean up types ++ ++commit 2e825e219fa06d308b9a9863d70320606d67490d ++Author: YunQiang Su ++Date: Mon May 16 09:47:11 2022 +0800 ++ ++ MIPS: fix some N32 test failure (#701) ++ ++ Some go closure and pointer testcase fails. ++ These failures is not introduced by the complex support code. ++ ++commit 1f1c33753b65a75216770928018e8932168e8908 ++Author: YunQiang Su ++Date: Mon May 16 09:45:27 2022 +0800 ++ ++ MIPS: fix O32 softfloat support (#702) ++ ++commit 3ac265d5c0e038e324bae29131dbc4bacb4935ea ++Author: hjl-tools ++Date: Sun May 15 18:43:56 2022 -0700 ++ ++ x86-64: Always double jump table slot size for CET (#710) (#711) ++ ++ When CET is enabled, double jump table slot size to add 4 bytes of ENDBR64 ++ for CET. Since CET enabled clang doesn't have the LLVM assembler bug: ++ ++ https://bugs.llvm.org/show_bug.cgi?id=21501 ++ ++ fixed by ++ ++ commit 04d39260d64e08b8bfb3844109ad43d4055b2e8d ++ Author: Rafael Espindola ++ Date: Wed Nov 4 23:50:29 2015 +0000 ++ ++ Simplify .org processing and make it a bit more powerful. ++ ++ we can use .org to allocate jump table slot size to 16 bytes. ++ ++commit e67697c370e8875f28b2bf62fac25edad7558eca ++Author: YunQiang Su ++Date: Thu Mar 31 20:44:49 2022 +0800 ++ ++ MIPS: add Complex support (#698) ++ ++commit e3cf8b806c3ca919f95b9d33d6037869a059c035 ++Author: Ole André Vadla Ravnås ++Date: Thu Mar 31 14:42:03 2022 +0200 ++ ++ Allow system to have overlapping mallopt defines (#700) ++ ++ Which is the case on some OSes, such as QNX. ++ ++commit c086cacb8b9665fab0c046fc92959fc8af5239b8 ++Author: Ole André Vadla Ravnås ++Date: Thu Mar 31 14:40:59 2022 +0200 ++ ++ Clean up the QNX ARM bits (#699) ++ ++ - Add missing include. ++ - Use constants instead of magic values. ++ ++commit ab1677106605aba1c27665964ff90bea59612ce3 ++Author: Max Filippov ++Date: Sun Feb 20 16:01:38 2022 -0800 ++ ++ Xtensa cleanups and XEA3 support (#677) ++ ++ * xtensa: clean up stack usage in ffi_trampoline call ++ ++ Space for outgoing call arguments reserved in the stack frame of the ++ function ffi_trampoline overlaps register spill overflow area at the ++ top of the frame. In xtensa XEA2 exception architecture the layout of ++ overlapping areas is identical so that even if the ffi_trampoline ++ registers frame gets spilled the memory contents doesn't change. ++ This is not so with the xtensa XEA3 exception architecture, where ++ registers a0 - a7 of a different function are spilled in that location. ++ ++ Reserve spill area for 8 registers to avoid overlapping of the spill ++ area with the outgoing call arguments area in the ffi_trampoline. ++ ++ Signed-off-by: Max Filippov ++ ++ * xtensa: support xtensa XEA3 exception architecture ++ ++ XEA3 requires that 32 bytes of register spill area is reserved in all ++ functions. Fix ffi_cacheflush entry instruction to satisfy this ++ requirement. ++ ++ Signed-off-by: Max Filippov ++ ++ * xtensa: maintain stack alignment ++ ++ xtensa ABI requires stack alignment on 16 byte boundary and passing ++ up to 6 arguments in registers. To simplify stack alignment maintenance ++ fixed amount of stack space is reserved for arguments passed in ++ registers and variable but correctly aligned amount is reserved for the ++ remaining arguments. After copying arguments to the stack and loading ++ registers the fixed part of the stack reservation is freed. ++ ++ Signed-off-by: Max Filippov ++ ++ * xtensa: fix err_bad_abi tests ++ ++ Check ffi_cif::abi value in the ffi_prep_closure_loc and return ++ FFI_BAD_ABI error if it's not one of the supported values. ++ ++ Signed-off-by: Max Filippov ++ ++commit aa3fce08ba620c50db17215a9f14dd0f1facf741 ++Author: Andreas Schwab ++Date: Sun Feb 13 21:04:33 2022 +0100 ++ ++ riscv: extend return types smaller than ffi_arg (#680) ++ ++ Co-authored-by: Andreas Schwab ++ ++commit 464b4b66e3cf3b5489e730c1466ee1bf825560e0 ++Author: Dan Horák ++Date: Mon Jan 31 14:08:09 2022 +0100 ++ ++ powerpc64: fix handling of homogeneous float128 structs (#689) ++ ++ If there is a homogeneous struct with float128 members, they should be ++ copied to vector register save area. The current code incorrectly copies ++ only the value of the first member, not increasing the pointer with each ++ iteration. Fix this. ++ ++commit b60d4fc7bb4419021bf566e09de55ed1d9b041db ++Author: rorth ++Date: Thu Dec 23 14:32:46 2021 +0100 ++ ++ src/x86/win64.S: Use #define instead of .macro (#665) (#669) ++ ++ The Solaris/x86 assembler doesn't support .macro/.endm, so use #define since ++ win64.S is passed through cpp anyway. ++ ++commit 4fa6239f42ddc7df12e40da9ae25ba715312239c ++Author: Andreas Schwab ++Date: Thu Dec 23 14:27:32 2021 +0100 ++ ++ testsuite/libffi.call: fix mismatching return types (#679) ++ ++ Co-authored-by: Andreas Schwab ++ ++commit 0f2dd369cd5edcefad29b3fca4e1d08cb34f8f19 ++Author: Jules Maselbas <54854023+jmaselbas@users.noreply.github.com> ++Date: Wed Sep 22 21:39:56 2021 +0200 ++ ++ Makefile: Add missing kvx/asm.h to dist headers (#660) ++ ++ The header kvx/asm.h is required to build libffi and is missing from ++ the dist tarball. ++ ++ Signed-off-by: Jules Maselbas ++ ++commit ee1263f7d43bd29b15fc72c4d9520a824e8004df ++Author: Anthony Green ++Date: Thu Jul 29 17:46:17 2021 -0400 ++ ++ Fix 'type'-o ++ ++commit 86d5ecc5e84fbbc79fcff6a307310630d9d68549 ++Author: Anthony Green ++Date: Thu Jul 29 16:58:32 2021 -0400 ++ ++ Fix struct arg passing ++ ++commit 03596285ed36b94bb3e1d8bdebfe58590e2766df ++Author: Anthony Green ++Date: Thu Jul 29 10:16:42 2021 -0400 ++ ++ No more xfail for alpha ++ ++commit 4ac18f26ed16588377b1482208212aaa39624e21 ++Author: Anthony Green ++Date: Thu Jul 29 10:01:40 2021 -0400 ++ ++ Add alpha CPU ++ ++commit 7643c6ee68e376810b4185e5f38e156c97bcc090 ++Author: Anthony Green ++Date: Thu Jul 29 08:51:35 2021 -0400 ++ ++ Try to fix ARM QEMU tests ++ ++commit a04f57bce057604f38bb7c1bf32b7f671d2b56d5 ++Author: Anthony Green ++Date: Thu Jul 29 08:47:53 2021 -0400 ++ ++ Fix m32r testing ++ ++commit 339acf3d8f049d296dafac3f482c1b7db29c0bae ++Author: Anthony Green ++Date: Thu Jul 29 08:38:18 2021 -0400 ++ ++ Debug cross-in-containers builds ++ ++commit 43e4ad4d7b4bcc87ee447736a1172b2801a47908 ++Author: Anthony Green ++Date: Thu Jul 29 07:55:59 2021 -0400 ++ ++ Test passing structs by value ++ ++commit 68485e33a413c3d91fbfd7ec270803ae6bd3d3db ++Author: Anthony Green ++Date: Thu Jul 29 07:13:35 2021 -0400 ++ ++ Mention x32 static tramponline fix ++ ++commit 07f826fdd4d8a23a190f107f7ec6ad830a4864a0 ++Author: Harald van Dijk ++Date: Sun Jul 25 02:39:37 2021 +0100 ++ ++ Fix trampoline_code_table for x32. (#657) ++ ++ x32's struct tramp_parm has 32-bit pointers. This change adjusts the ++ loads and offsets accordingly. ++ ++commit be0b3b6e75d4890fe18ba4164b91387beaebee06 ++Author: Anthony Green ++Date: Fri Jul 16 21:51:03 2021 -0400 ++ ++ Fix CHECK ++ ++commit 7db17442a6c9f1399065748b7d5b9fbcac203344 ++Author: Anthony Green ++Date: Fri Jul 16 11:30:01 2021 -0400 ++ ++ Don't check the whole buffer, just what we printed. ++ ++commit 8bcf594749882e9e4966fec2e3d6009d08a554ab ++Author: Anthony Green ++Date: Fri Jul 16 11:26:02 2021 -0400 ++ ++ Fix test case ++ ++commit c96b057757446fe4277f30e8423f09851ae5d0fa ++Author: Anthony Green ++Date: Fri Jul 16 11:16:39 2021 -0400 ++ ++ Fix test check ++ ++commit 4ed23be8e2a59e438c201ca1ba5affc0b0477b15 ++Author: Anthony Green ++Date: Fri Jul 16 11:08:01 2021 -0400 ++ ++ Fix test check ++ ++commit eb2447249540ca568b0b464f6107501dcc0f65ab ++Author: Hood Chatham ++Date: Fri Jul 16 14:33:04 2021 +0000 ++ ++ Use CHECK to assert more things in test suite (#654) ++ ++ * Use CHECK to assert more things in test suite ++ ++ * Use snprintf instead of sprintf ++ ++ * Fix va_struct1 and va_struct3 ++ ++commit a541fc600f4418441f91073a0834ea47b0989de9 ++Author: Anthony Green ++Date: Fri Jul 16 08:56:30 2021 -0400 ++ ++ Update README for next release. ++ ++commit b4cf80ab54b6d9d31ef2135036e471388cf026df ++Author: Anthony Green ++Date: Fri Jul 16 08:55:02 2021 -0400 ++ ++ Trigger actions on master branch ++ ++commit d1eef904766dbd647de6c240a57dbc98d46e33dd ++Author: Anthony Green ++Date: Fri Jul 16 08:29:08 2021 -0400 ++ ++ Migrate from travis-ci to github actions. ++ + commit f9ea41683444ebe11cfa45b05223899764df28fb + Author: Anthony Green + Date: Mon Jun 28 21:10:49 2021 -0400 +diff --git a/vendor/libffi-sys/libffi/LICENSE b/vendor/libffi-sys/libffi/LICENSE +index e4034b09a..75d1bce11 100644 +--- a/vendor/libffi-sys/libffi/LICENSE ++++ b/vendor/libffi-sys/libffi/LICENSE +@@ -1,4 +1,4 @@ +-libffi - Copyright (c) 1996-2021 Anthony Green, Red Hat, Inc and others. ++libffi - Copyright (c) 1996-2022 Anthony Green, Red Hat, Inc and others. + See source files for details. + + Permission is hereby granted, free of charge, to any person obtaining +diff --git a/vendor/libffi-sys/libffi/Makefile.am b/vendor/libffi-sys/libffi/Makefile.am +index 1b18198ad..a4a4887cb 100644 +--- a/vendor/libffi-sys/libffi/Makefile.am ++++ b/vendor/libffi-sys/libffi/Makefile.am +@@ -20,8 +20,9 @@ EXTRA_DIST = LICENSE ChangeLog.old \ + m4/ltversion.m4 src/debug.c msvcc.sh \ + generate-darwin-source-and-headers.py \ + libffi.xcodeproj/project.pbxproj \ ++ src/powerpc/t-aix \ + libtool-ldflags libtool-version configure.host README.md \ +- libffi.map.in LICENSE-BUILDTOOLS msvc_build make_sunver.pl ++ libffi.map.in LICENSE-BUILDTOOLS msvc_build make_sunver.pl + + # local.exp is generated by configure + DISTCLEANFILES = local.exp +@@ -63,7 +64,8 @@ noinst_HEADERS = src/aarch64/ffitarget.h src/aarch64/internal.h \ + src/sparc/internal.h src/tile/ffitarget.h src/vax/ffitarget.h \ + src/x86/ffitarget.h src/x86/internal.h src/x86/internal64.h \ + src/x86/asmnames.h src/xtensa/ffitarget.h src/dlmalloc.c \ +- src/kvx/ffitarget.h ++ src/kvx/ffitarget.h src/kvx/asm.h \ ++ src/loongarch64/ffitarget.h + + EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \ + src/aarch64/win64_armasm.S src/alpha/ffi.c src/alpha/osf.S \ +@@ -93,7 +95,7 @@ EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \ + src/x86/ffiw64.c src/x86/win64.S src/x86/ffi64.c \ + src/x86/unix64.S src/x86/sysv_intel.S src/x86/win64_intel.S \ + src/xtensa/ffi.c src/xtensa/sysv.S src/kvx/ffi.c \ +- src/kvx/sysv.S ++ src/kvx/sysv.S src/loongarch64/ffi.c src/loongarch64/sysv.S + + TARGET_OBJ = @TARGET_OBJ@ + libffi_la_LIBADD = $(TARGET_OBJ) +@@ -149,3 +151,5 @@ dist-hook: + if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog + s=`awk '/was released on/{ print NR; exit}' $(top_srcdir)/README.md`; tail -n +$$(($$s-1)) $(top_srcdir)/README.md > $(distdir)/README.md + ++# target overrides ++-include $(tmake_file) +diff --git a/vendor/libffi-sys/libffi/Makefile.in b/vendor/libffi-sys/libffi/Makefile.in +index a4b67a773..86eb4a549 100644 +--- a/vendor/libffi-sys/libffi/Makefile.in ++++ b/vendor/libffi-sys/libffi/Makefile.in +@@ -1,7 +1,7 @@ +-# Makefile.in generated by automake 1.16.2 from Makefile.am. ++# Makefile.in generated by automake 1.16.5 from Makefile.am. + # @configure_input@ + +-# Copyright (C) 1994-2020 Free Software Foundation, Inc. ++# Copyright (C) 1994-2021 Free Software Foundation, Inc. + + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -99,7 +99,6 @@ target_triplet = @target@ + subdir = . + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ +- $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_cc_maxopt.m4 \ + $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ +@@ -108,6 +107,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ + $(top_srcdir)/m4/ax_enable_builddir.m4 \ + $(top_srcdir)/m4/ax_gcc_archflag.m4 \ + $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ ++ $(top_srcdir)/m4/ax_prepend_flag.m4 \ + $(top_srcdir)/m4/ax_require_defined.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ +@@ -212,11 +212,12 @@ am__depfiles_remade = src/$(DEPDIR)/closures.Plo \ + src/frv/$(DEPDIR)/eabi.Plo src/frv/$(DEPDIR)/ffi.Plo \ + src/ia64/$(DEPDIR)/ffi.Plo src/ia64/$(DEPDIR)/unix.Plo \ + src/kvx/$(DEPDIR)/ffi.Plo src/kvx/$(DEPDIR)/sysv.Plo \ +- src/m32r/$(DEPDIR)/ffi.Plo src/m32r/$(DEPDIR)/sysv.Plo \ +- src/m68k/$(DEPDIR)/ffi.Plo src/m68k/$(DEPDIR)/sysv.Plo \ +- src/m88k/$(DEPDIR)/ffi.Plo src/m88k/$(DEPDIR)/obsd.Plo \ +- src/metag/$(DEPDIR)/ffi.Plo src/metag/$(DEPDIR)/sysv.Plo \ +- src/microblaze/$(DEPDIR)/ffi.Plo \ ++ src/loongarch64/$(DEPDIR)/ffi.Plo \ ++ src/loongarch64/$(DEPDIR)/sysv.Plo src/m32r/$(DEPDIR)/ffi.Plo \ ++ src/m32r/$(DEPDIR)/sysv.Plo src/m68k/$(DEPDIR)/ffi.Plo \ ++ src/m68k/$(DEPDIR)/sysv.Plo src/m88k/$(DEPDIR)/ffi.Plo \ ++ src/m88k/$(DEPDIR)/obsd.Plo src/metag/$(DEPDIR)/ffi.Plo \ ++ src/metag/$(DEPDIR)/sysv.Plo src/microblaze/$(DEPDIR)/ffi.Plo \ + src/microblaze/$(DEPDIR)/sysv.Plo src/mips/$(DEPDIR)/ffi.Plo \ + src/mips/$(DEPDIR)/n32.Plo src/mips/$(DEPDIR)/o32.Plo \ + src/moxie/$(DEPDIR)/eabi.Plo src/moxie/$(DEPDIR)/ffi.Plo \ +@@ -326,12 +327,9 @@ am__define_uniq_tagged_files = \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +-ETAGS = etags +-CTAGS = ctags +-CSCOPE = cscope + DIST_SUBDIRS = include testsuite man doc + am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/fficonfig.h.in \ +- $(srcdir)/libffi.pc.in ChangeLog compile config.guess \ ++ $(srcdir)/libffi.pc.in README.md compile config.guess \ + config.sub depcomp install-sh ltmain.sh missing + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + distdir = $(PACKAGE)-$(VERSION) +@@ -371,6 +369,8 @@ am__relativize = \ + DIST_ARCHIVES = $(distdir).tar.gz + GZIP_ENV = --best + DIST_TARGETS = dist-gzip ++# Exists only to be overridden by the user if desired. ++AM_DISTCHECK_DVI_TARGET = dvi + distuninstallcheck_listfiles = find . -type f -print + am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +@@ -392,8 +392,9 @@ CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ + CFLAGS = @CFLAGS@ +-CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ ++CSCOPE = @CSCOPE@ ++CTAGS = @CTAGS@ + CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXDEPMODE = @CXXDEPMODE@ +@@ -408,9 +409,11 @@ ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ ++ETAGS = @ETAGS@ + EXEEXT = @EXEEXT@ + FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ + FGREP = @FGREP@ ++FILECMD = @FILECMD@ + GREP = @GREP@ + HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ + HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ +@@ -516,6 +519,7 @@ target_alias = @target_alias@ + target_cpu = @target_cpu@ + target_os = @target_os@ + target_vendor = @target_vendor@ ++tmake_file = @tmake_file@ + toolexecdir = @toolexecdir@ + toolexeclibdir = @toolexeclibdir@ + top_build_prefix = @top_build_prefix@ +@@ -530,8 +534,9 @@ EXTRA_DIST = LICENSE ChangeLog.old \ + m4/ltversion.m4 src/debug.c msvcc.sh \ + generate-darwin-source-and-headers.py \ + libffi.xcodeproj/project.pbxproj \ ++ src/powerpc/t-aix \ + libtool-ldflags libtool-version configure.host README.md \ +- libffi.map.in LICENSE-BUILDTOOLS msvc_build make_sunver.pl ++ libffi.map.in LICENSE-BUILDTOOLS msvc_build make_sunver.pl + + + # local.exp is generated by configure +@@ -564,7 +569,8 @@ noinst_HEADERS = src/aarch64/ffitarget.h src/aarch64/internal.h \ + src/sparc/internal.h src/tile/ffitarget.h src/vax/ffitarget.h \ + src/x86/ffitarget.h src/x86/internal.h src/x86/internal64.h \ + src/x86/asmnames.h src/xtensa/ffitarget.h src/dlmalloc.c \ +- src/kvx/ffitarget.h ++ src/kvx/ffitarget.h src/kvx/asm.h \ ++ src/loongarch64/ffitarget.h + + EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \ + src/aarch64/win64_armasm.S src/alpha/ffi.c src/alpha/osf.S \ +@@ -594,7 +600,7 @@ EXTRA_libffi_la_SOURCES = src/aarch64/ffi.c src/aarch64/sysv.S \ + src/x86/ffiw64.c src/x86/win64.S src/x86/ffi64.c \ + src/x86/unix64.S src/x86/sysv_intel.S src/x86/win64_intel.S \ + src/xtensa/ffi.c src/xtensa/sysv.S src/kvx/ffi.c \ +- src/kvx/sysv.S ++ src/kvx/sysv.S src/loongarch64/ffi.c src/loongarch64/sysv.S + + libffi_la_LIBADD = $(TARGET_OBJ) + libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) +@@ -1081,6 +1087,16 @@ src/kvx/ffi.lo: src/kvx/$(am__dirstamp) \ + src/kvx/$(DEPDIR)/$(am__dirstamp) + src/kvx/sysv.lo: src/kvx/$(am__dirstamp) \ + src/kvx/$(DEPDIR)/$(am__dirstamp) ++src/loongarch64/$(am__dirstamp): ++ @$(MKDIR_P) src/loongarch64 ++ @: > src/loongarch64/$(am__dirstamp) ++src/loongarch64/$(DEPDIR)/$(am__dirstamp): ++ @$(MKDIR_P) src/loongarch64/$(DEPDIR) ++ @: > src/loongarch64/$(DEPDIR)/$(am__dirstamp) ++src/loongarch64/ffi.lo: src/loongarch64/$(am__dirstamp) \ ++ src/loongarch64/$(DEPDIR)/$(am__dirstamp) ++src/loongarch64/sysv.lo: src/loongarch64/$(am__dirstamp) \ ++ src/loongarch64/$(DEPDIR)/$(am__dirstamp) + + libffi.la: $(libffi_la_OBJECTS) $(libffi_la_DEPENDENCIES) $(EXTRA_libffi_la_DEPENDENCIES) + $(AM_V_CCLD)$(libffi_la_LINK) -rpath $(toolexeclibdir) $(libffi_la_OBJECTS) $(libffi_la_LIBADD) $(LIBS) +@@ -1114,6 +1130,8 @@ mostlyclean-compile: + -rm -f src/ia64/*.lo + -rm -f src/kvx/*.$(OBJEXT) + -rm -f src/kvx/*.lo ++ -rm -f src/loongarch64/*.$(OBJEXT) ++ -rm -f src/loongarch64/*.lo + -rm -f src/m32r/*.$(OBJEXT) + -rm -f src/m32r/*.lo + -rm -f src/m68k/*.$(OBJEXT) +@@ -1189,6 +1207,8 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@src/ia64/$(DEPDIR)/unix.Plo@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@src/kvx/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@src/kvx/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@src/loongarch64/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@src/loongarch64/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@src/m32r/$(DEPDIR)/sysv.Plo@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@src/m68k/$(DEPDIR)/ffi.Plo@am__quote@ # am--include-marker +@@ -1321,6 +1341,7 @@ clean-libtool: + -rm -rf src/frv/.libs src/frv/_libs + -rm -rf src/ia64/.libs src/ia64/_libs + -rm -rf src/kvx/.libs src/kvx/_libs ++ -rm -rf src/loongarch64/.libs src/loongarch64/_libs + -rm -rf src/m32r/.libs src/m32r/_libs + -rm -rf src/m68k/.libs src/m68k/_libs + -rm -rf src/m88k/.libs src/m88k/_libs +@@ -1471,7 +1492,6 @@ cscopelist-am: $(am__tagged_files) + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files +- + distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +@@ -1621,7 +1641,7 @@ distcheck: dist + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ +- && $(MAKE) $(AM_MAKEFLAGS) dvi \ ++ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ +@@ -1730,6 +1750,8 @@ distclean-generic: + -rm -f src/ia64/$(am__dirstamp) + -rm -f src/kvx/$(DEPDIR)/$(am__dirstamp) + -rm -f src/kvx/$(am__dirstamp) ++ -rm -f src/loongarch64/$(DEPDIR)/$(am__dirstamp) ++ -rm -f src/loongarch64/$(am__dirstamp) + -rm -f src/m32r/$(DEPDIR)/$(am__dirstamp) + -rm -f src/m32r/$(am__dirstamp) + -rm -f src/m68k/$(DEPDIR)/$(am__dirstamp) +@@ -1813,6 +1835,8 @@ distclean: distclean-recursive + -rm -f src/ia64/$(DEPDIR)/unix.Plo + -rm -f src/kvx/$(DEPDIR)/ffi.Plo + -rm -f src/kvx/$(DEPDIR)/sysv.Plo ++ -rm -f src/loongarch64/$(DEPDIR)/ffi.Plo ++ -rm -f src/loongarch64/$(DEPDIR)/sysv.Plo + -rm -f src/m32r/$(DEPDIR)/ffi.Plo + -rm -f src/m32r/$(DEPDIR)/sysv.Plo + -rm -f src/m68k/$(DEPDIR)/ffi.Plo +@@ -1951,6 +1975,8 @@ maintainer-clean: maintainer-clean-recursive + -rm -f src/ia64/$(DEPDIR)/unix.Plo + -rm -f src/kvx/$(DEPDIR)/ffi.Plo + -rm -f src/kvx/$(DEPDIR)/sysv.Plo ++ -rm -f src/loongarch64/$(DEPDIR)/ffi.Plo ++ -rm -f src/loongarch64/$(DEPDIR)/sysv.Plo + -rm -f src/m32r/$(DEPDIR)/ffi.Plo + -rm -f src/m32r/$(DEPDIR)/sysv.Plo + -rm -f src/m68k/$(DEPDIR)/ffi.Plo +@@ -2070,6 +2096,9 @@ dist-hook: + if [ -d $(top_srcdir)/.git ] ; then (cd $(top_srcdir); git log --no-decorate) ; else echo 'See git log for history.' ; fi > $(distdir)/ChangeLog + s=`awk '/was released on/{ print NR; exit}' $(top_srcdir)/README.md`; tail -n +$$(($$s-1)) $(top_srcdir)/README.md > $(distdir)/README.md + ++# target overrides ++-include $(tmake_file) ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: +diff --git a/vendor/libffi-sys/libffi/README.md b/vendor/libffi-sys/libffi/README.md +index b3cf4282d..f24a0f7b8 100644 +--- a/vendor/libffi-sys/libffi/README.md ++++ b/vendor/libffi-sys/libffi/README.md +@@ -1,6 +1,6 @@ + +-libffi-3.4.1 was released on June 28, 2021. Check the libffi web page +-for updates: . ++libffi-3.4.4 was released on October 23, 2022. Check the libffi web ++page for updates: . + + + What is libffi? +@@ -59,6 +59,7 @@ tested: + | HPPA | HPUX | GCC | + | KVX | Linux | GCC | + | IA-64 | Linux | GCC | ++| LoongArch64 | Linux | GCC | + | M68K | FreeMiNT | GCC | + | M68K | Linux | GCC | + | M68K | RTEMS | GCC | +@@ -72,6 +73,7 @@ tested: + | Moxie | Bare metal | GCC | + | Nios II | Linux | GCC | + | OpenRISC | Linux | GCC | ++| PowerPC 32-bit | AIX | GCC | + | PowerPC 32-bit | AIX | IBM XL C | + | PowerPC 64-bit | AIX | IBM XL C | + | PowerPC | AMIGA | GCC | +@@ -193,7 +195,22 @@ History + + See the git log for details at http://github.com/libffi/libffi. + +- 3.4.2 Jun-28-21 ++ 3.4.4 Oct-23-2022 ++ Important aarch64 fixes, including support for linux builds ++ with Link Time Optimization (-flto). ++ Fix x86 stdcall stack alignment. ++ Fix x86 Windows msvc assembler compatibility. ++ Fix moxie and or1k small structure args. ++ ++ 3.4.3 Sep-19-2022 ++ All struct args are passed by value, regardless of size, as per ABIs. ++ Enable static trampolines for Cygwin. ++ Add support for Loongson's LoongArch64 architecture. ++ Fix x32 static trampolines. ++ Fix 32-bit x86 stdcall stack corruption. ++ Fix ILP32 aarch64 support. ++ ++ 3.4.2 Jun-28-2021 + Add static trampoline support for Linux on x86_64 and ARM64. + Add support for Alibaba's CSKY architecture. + Add support for Kalray's KVX architecture. +@@ -206,7 +223,7 @@ See the git log for details at http://github.com/libffi/libffi. + Reject float and small integer argument in ffi_prep_cif_var(). + Callers must promote these types themselves. + +- 3.3 Nov-23-19 ++ 3.3 Nov-23-2019 + Add RISC-V support. + New API in support of GO closures. + Add IEEE754 binary128 long double support for 64-bit Power +@@ -218,10 +235,10 @@ See the git log for details at http://github.com/libffi/libffi. + Add pre-built PDF documentation to source distribution. + Many new test cases and bug fixes. + +- 3.2.1 Nov-12-14 ++ 3.2.1 Nov-12-2014 + Build fix for non-iOS AArch64 targets. + +- 3.2 Nov-11-14 ++ 3.2 Nov-11-2014 + Add C99 Complex Type support (currently only supported on + s390). + Add support for PASCAL and REGISTER calling conventions on x86 +@@ -229,7 +246,7 @@ See the git log for details at http://github.com/libffi/libffi. + Add OpenRISC and Cygwin-64 support. + Bug fixes. + +- 3.1 May-19-14 ++ 3.1 May-19-2014 + Add AArch64 (ARM64) iOS support. + Add Nios II support. + Add m88k and DEC VAX support. +@@ -242,7 +259,7 @@ See the git log for details at http://github.com/libffi/libffi. + Archive off the manually maintained ChangeLog in favor of git + log. + +- 3.0.13 Mar-17-13 ++ 3.0.13 Mar-17-2013 + Add Meta support. + Add missing Moxie bits. + Fix stack alignment bug on 32-bit x86. +@@ -252,7 +269,7 @@ See the git log for details at http://github.com/libffi/libffi. + with GCC (OS X, Solaris). + Fix Cygwin regression. + +- 3.0.12 Feb-11-13 ++ 3.0.12 Feb-11-2013 + Add Moxie support. + Add AArch64 support. + Add Blackfin support. +@@ -264,7 +281,7 @@ See the git log for details at http://github.com/libffi/libffi. + Solaris and AIX. + Work around LLVM/GCC interoperability issue on x86_64. + +- 3.0.11 Apr-11-12 ++ 3.0.11 Apr-11-2012 + Lots of build fixes. + Add support for variadic functions (ffi_prep_cif_var). + Add Linux/x32 support. +@@ -275,7 +292,7 @@ See the git log for details at http://github.com/libffi/libffi. + Fix Octeon and MC68881 support. + Fix code pessimizations. + +- 3.0.10 Aug-23-11 ++ 3.0.10 Aug-23-2011 + Add support for Apple's iOS. + Add support for ARM VFP ABI. + Add RTEMS support for MIPS and M68K. +@@ -289,71 +306,71 @@ See the git log for details at http://github.com/libffi/libffi. + Testsuite fixes for Tru64 Unix. + Additional platform support. + +- 3.0.9 Dec-31-09 ++ 3.0.9 Dec-31-2009 + Add AVR32 and win64 ports. Add ARM softfp support. + Many fixes for AIX, Solaris, HP-UX, *BSD. + Several PowerPC and x86-64 bug fixes. + Build DLL for windows. + +- 3.0.8 Dec-19-08 ++ 3.0.8 Dec-19-2008 + Add *BSD, BeOS, and PA-Linux support. + +- 3.0.7 Nov-11-08 ++ 3.0.7 Nov-11-2008 + Fix for ppc FreeBSD. + (thanks to Andreas Tobler) + +- 3.0.6 Jul-17-08 ++ 3.0.6 Jul-17-2008 + Fix for closures on sh. + Mark the sh/sh64 stack as non-executable. + (both thanks to Kaz Kojima) + +- 3.0.5 Apr-3-08 ++ 3.0.5 Apr-3-2008 + Fix libffi.pc file. + Fix #define ARM for IcedTea users. + Fix x86 closure bug. + +- 3.0.4 Feb-24-08 ++ 3.0.4 Feb-24-2008 + Fix x86 OpenBSD configury. + +- 3.0.3 Feb-22-08 ++ 3.0.3 Feb-22-2008 + Enable x86 OpenBSD thanks to Thomas Heller, and + x86-64 FreeBSD thanks to Björn König and Andreas Tobler. + Clean up test instruction in README. + +- 3.0.2 Feb-21-08 ++ 3.0.2 Feb-21-2008 + Improved x86 FreeBSD support. + Thanks to Björn König. + +- 3.0.1 Feb-15-08 ++ 3.0.1 Feb-15-2008 + Fix instruction cache flushing bug on MIPS. + Thanks to David Daney. + +- 3.0.0 Feb-15-08 ++ 3.0.0 Feb-15-2008 + Many changes, mostly thanks to the GCC project. + Cygnus Solutions is now Red Hat. + + [10 years go by...] + +- 1.20 Oct-5-98 ++ 1.20 Oct-5-1998 + Raffaele Sena produces ARM port. + +- 1.19 Oct-5-98 ++ 1.19 Oct-5-1998 + Fixed x86 long double and long long return support. + m68k bug fixes from Andreas Schwab. + Patch for DU assembler compatibility for the Alpha from Richard + Henderson. + +- 1.18 Apr-17-98 ++ 1.18 Apr-17-1998 + Bug fixes and MIPS configuration changes. + +- 1.17 Feb-24-98 ++ 1.17 Feb-24-1998 + Bug fixes and m68k port from Andreas Schwab. PowerPC port from + Geoffrey Keating. Various bug x86, Sparc and MIPS bug fixes. + +- 1.16 Feb-11-98 ++ 1.16 Feb-11-1998 + Richard Henderson produces Alpha port. + +- 1.15 Dec-4-97 ++ 1.15 Dec-4-1997 + Fixed an n32 ABI bug. New libtool, auto* support. + + 1.14 May-13-97 +@@ -361,56 +378,56 @@ See the git log for details at http://github.com/libffi/libffi. + Fixed a minor portability problem reported by Russ McManus + . + +- 1.13 Dec-2-96 ++ 1.13 Dec-2-1996 + Added --enable-purify-safety to keep Purify from complaining + about certain low level code. + Sparc fix for calling functions with < 6 args. + Linux x86 a.out fix. + +- 1.12 Nov-22-96 ++ 1.12 Nov-22-1996 + Added missing ffi_type_void, needed for supporting void return + types. Fixed test case for non MIPS machines. Cygnus Support + is now Cygnus Solutions. + +- 1.11 Oct-30-96 ++ 1.11 Oct-30-1996 + Added notes about GNU make. + +- 1.10 Oct-29-96 ++ 1.10 Oct-29-1996 + Added configuration fix for non GNU compilers. + +- 1.09 Oct-29-96 ++ 1.09 Oct-29-1996 + Added --enable-debug configure switch. Clean-ups based on LCLint + feedback. ffi_mips.h is always installed. Many configuration + fixes. Fixed ffitest.c for sparc builds. + +- 1.08 Oct-15-96 ++ 1.08 Oct-15-1996 + Fixed n32 problem. Many clean-ups. + +- 1.07 Oct-14-96 ++ 1.07 Oct-14-1996 + Gordon Irlam rewrites v8.S again. Bug fixes. + +- 1.06 Oct-14-96 ++ 1.06 Oct-14-1996 + Gordon Irlam improved the sparc port. + +- 1.05 Oct-14-96 ++ 1.05 Oct-14-1996 + Interface changes based on feedback. + +- 1.04 Oct-11-96 ++ 1.04 Oct-11-1996 + Sparc port complete (modulo struct passing bug). + +- 1.03 Oct-10-96 ++ 1.03 Oct-10-1996 + Passing struct args, and returning struct values works for + all architectures/calling conventions. Expanded tests. + +- 1.02 Oct-9-96 ++ 1.02 Oct-9-1996 + Added SGI n32 support. Fixed bugs in both o32 and Linux support. + Added "make test". + +- 1.01 Oct-8-96 ++ 1.01 Oct-8-1996 + Fixed float passing bug in mips version. Restructured some + of the code. Builds cleanly with SGI tools. + +- 1.00 Oct-7-96 ++ 1.00 Oct-7-1996 + First release. No public announcement. + + Authors & Credits +@@ -442,6 +459,8 @@ developers: + frv Anthony Green + ia64 Hans Boehm + kvx Yann Sionneau ++ loongarch64 Cheng Lulu, Xi Ruoyao, Xu Hao, ++ Zhang Wenlong, Pan Xuefeng + m32r Kazuhiro Inaoka + m68k Andreas Schwab + m88k Miod Vallat +diff --git a/vendor/libffi-sys/libffi/acinclude.m4 b/vendor/libffi-sys/libffi/acinclude.m4 +index 1a70efb01..9ef93a898 100644 +--- a/vendor/libffi-sys/libffi/acinclude.m4 ++++ b/vendor/libffi-sys/libffi/acinclude.m4 +@@ -45,16 +45,16 @@ else + + # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. + AC_CACHE_CHECK([for MAP_ANON(YMOUS)], ac_cv_decl_map_anon, +- [AC_TRY_COMPILE( +-[#include ++ [AC_COMPILE_IFELSE( ++[AC_LANG_PROGRAM([[#include + #include + #include + + #ifndef MAP_ANONYMOUS + #define MAP_ANONYMOUS MAP_ANON + #endif +-], +-[int n = MAP_ANONYMOUS;], ++]], ++[[int n = MAP_ANONYMOUS;]])], + ac_cv_decl_map_anon=yes, + ac_cv_decl_map_anon=no)]) + +@@ -104,7 +104,7 @@ dnl See docs/html/17_intro/configury.html#enable for documentation. + dnl + m4_define([LIBFFI_ENABLE],[dnl + m4_define([_g_switch],[--enable-$1])dnl +-m4_define([_g_help],[AC_HELP_STRING(_g_switch$3,[$4 @<:@default=$2@:>@])])dnl ++m4_define([_g_help],[AS_HELP_STRING([_g_switch$3],[$4 @<:@default=$2@:>@])])dnl + AC_ARG_ENABLE($1,_g_help, + m4_bmatch([$5], + [^permit ], +@@ -152,109 +152,7 @@ AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [ + # by now (in libtool), but require it now just to be safe... + test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' + test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' +- AC_REQUIRE([AC_PROG_LD]) +- AC_REQUIRE([AC_PROG_AWK]) +- +- # The name set by libtool depends on the version of libtool. Shame on us +- # for depending on an impl detail, but c'est la vie. Older versions used +- # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on +- # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually +- # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't +- # set (hence we're using an older libtool), then set it. +- if test x${with_gnu_ld+set} != xset; then +- if test x${ac_cv_prog_gnu_ld+set} != xset; then +- # We got through "ac_require(ac_prog_ld)" and still not set? Huh? +- with_gnu_ld=no +- else +- with_gnu_ld=$ac_cv_prog_gnu_ld +- fi +- fi +- +- # Start by getting the version number. I think the libtool test already +- # does some of this, but throws away the result. +- libat_ld_is_gold=no +- if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then +- libat_ld_is_gold=yes +- fi +- changequote(,) +- ldver=`$LD --version 2>/dev/null | +- sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'` +- changequote([,]) +- libat_gnu_ld_version=`echo $ldver | \ +- $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'` +- +- # Set --gc-sections. +- if test "$with_gnu_ld" = "notbroken"; then +- # GNU ld it is! Joy and bunny rabbits! +- +- # All these tests are for C++; save the language and the compiler flags. +- # Need to do this so that g++ won't try to link in libstdc++ +- ac_test_CFLAGS="${CFLAGS+set}" +- ac_save_CFLAGS="$CFLAGS" +- CFLAGS='-x c++ -Wl,--gc-sections' +- +- # Check for -Wl,--gc-sections +- # XXX This test is broken at the moment, as symbols required for linking +- # are now in libsupc++ (not built yet). In addition, this test has +- # cored on solaris in the past. In addition, --gc-sections doesn't +- # really work at the moment (keeps on discarding used sections, first +- # .eh_frame and now some of the glibc sections for iconv). +- # Bzzzzt. Thanks for playing, maybe next time. +- AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) +- AC_TRY_RUN([ +- int main(void) +- { +- try { throw 1; } +- catch (...) { }; +- return 0; +- } +- ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes]) +- if test "$ac_test_CFLAGS" = set; then +- CFLAGS="$ac_save_CFLAGS" +- else +- # this is the suspicious part +- CFLAGS='' +- fi +- if test "$ac_sectionLDflags" = "yes"; then +- SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" +- fi +- AC_MSG_RESULT($ac_sectionLDflags) +- fi +- +- # Set linker optimization flags. +- if test x"$with_gnu_ld" = x"yes"; then +- OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" +- fi +- +- AC_SUBST(SECTION_LDFLAGS) +- AC_SUBST(OPT_LDFLAGS) +-]) +- +- +-dnl +-dnl If GNU ld is in use, check to see if tricky linker opts can be used. If +-dnl the native linker is in use, all variables will be defined to something +-dnl safe (like an empty string). +-dnl +-dnl Defines: +-dnl SECTION_LDFLAGS='-Wl,--gc-sections' if possible +-dnl OPT_LDFLAGS='-Wl,-O1' if possible +-dnl LD (as a side effect of testing) +-dnl Sets: +-dnl with_gnu_ld +-dnl libat_ld_is_gold (possibly) +-dnl libat_gnu_ld_version (possibly) +-dnl +-dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will +-dnl set libat_gnu_ld_version to 12345. Zeros cause problems. +-dnl +-AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [ +- # If we're not using GNU ld, then there's no point in even trying these +- # tests. Check for that first. We should have already tested for gld +- # by now (in libtool), but require it now just to be safe... +- test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' +- test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' +- AC_REQUIRE([AC_PROG_LD]) ++ AC_REQUIRE([LT_PATH_LD]) + AC_REQUIRE([AC_PROG_AWK]) + + # The name set by libtool depends on the version of libtool. Shame on us +@@ -307,14 +205,14 @@ AC_DEFUN([LIBFFI_CHECK_LINKER_FEATURES], [ + # .eh_frame and now some of the glibc sections for iconv). + # Bzzzzt. Thanks for playing, maybe next time. + AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections]) +- AC_TRY_RUN([ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ + int main(void) + { + try { throw 1; } + catch (...) { }; + return 0; + } +- ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes]) ++ ]])],[ac_sectionLDflags=yes],[ac_sectionLDflags=no],[ac_sectionLDflags=yes]) + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + else +@@ -401,7 +299,7 @@ if test $enable_symvers != no; then + AC_MSG_CHECKING([for shared libgcc]) + ac_save_CFLAGS="$CFLAGS" + CFLAGS=' -lgcc_s' +- AC_TRY_LINK(, [return 0;], libat_shared_libgcc=yes, libat_shared_libgcc=no) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[libat_shared_libgcc=yes],[libat_shared_libgcc=no]) + CFLAGS="$ac_save_CFLAGS" + if test $libat_shared_libgcc = no; then + cat > conftest.c <`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +-# Copyright (C) 2001-2020 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1548,7 +1567,7 @@ if test x"${install_sh+set}" != xset; then + fi + AC_SUBST([install_sh])]) + +-# Copyright (C) 2003-2020 Free Software Foundation, Inc. ++# Copyright (C) 2003-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1570,7 +1589,7 @@ AC_SUBST([am__leading_dot])]) + # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- + # From Jim Meyering + +-# Copyright (C) 1996-2020 Free Software Foundation, Inc. ++# Copyright (C) 1996-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1605,7 +1624,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + + # Check to see how 'make' treats includes. -*- Autoconf -*- + +-# Copyright (C) 2001-2020 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1648,7 +1667,7 @@ AC_SUBST([am__quote])]) + + # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +-# Copyright (C) 1997-2020 Free Software Foundation, Inc. ++# Copyright (C) 1997-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1669,12 +1688,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN], + [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl + AC_REQUIRE_AUX_FILE([missing])dnl + if test x"${MISSING+set}" != xset; then +- case $am_aux_dir in +- *\ * | *\ *) +- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; +- *) +- MISSING="\${SHELL} $am_aux_dir/missing" ;; +- esac ++ MISSING="\${SHELL} '$am_aux_dir/missing'" + fi + # Use eval to expand $SHELL + if eval "$MISSING --is-lightweight"; then +@@ -1687,7 +1701,7 @@ fi + + # Helper functions for option handling. -*- Autoconf -*- + +-# Copyright (C) 2001-2020 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1716,7 +1730,7 @@ AC_DEFUN([_AM_SET_OPTIONS], + AC_DEFUN([_AM_IF_OPTION], + [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +-# Copyright (C) 1999-2020 Free Software Foundation, Inc. ++# Copyright (C) 1999-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1763,7 +1777,7 @@ AC_LANG_POP([C])]) + # For backward compatibility. + AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +-# Copyright (C) 2001-2020 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1782,7 +1796,7 @@ AC_DEFUN([AM_RUN_LOG], + + # Check to make sure that the build environment is sane. -*- Autoconf -*- + +-# Copyright (C) 1996-2020 Free Software Foundation, Inc. ++# Copyright (C) 1996-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1863,7 +1877,7 @@ AC_CONFIG_COMMANDS_PRE( + rm -f conftest.file + ]) + +-# Copyright (C) 2009-2020 Free Software Foundation, Inc. ++# Copyright (C) 2009-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1923,7 +1937,7 @@ AC_SUBST([AM_BACKSLASH])dnl + _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl + ]) + +-# Copyright (C) 2001-2020 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1951,7 +1965,7 @@ fi + INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +-# Copyright (C) 2006-2020 Free Software Foundation, Inc. ++# Copyright (C) 2006-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1970,7 +1984,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + + # Check how to create a tarball. -*- Autoconf -*- + +-# Copyright (C) 2004-2020 Free Software Foundation, Inc. ++# Copyright (C) 2004-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -2102,7 +2116,6 @@ AC_SUBST([am__untar]) + ]) # _AM_PROG_TAR + + m4_include([m4/asmcfi.m4]) +-m4_include([m4/ax_append_flag.m4]) + m4_include([m4/ax_cc_maxopt.m4]) + m4_include([m4/ax_cflags_warn_all.m4]) + m4_include([m4/ax_check_compile_flag.m4]) +@@ -2111,6 +2124,7 @@ m4_include([m4/ax_configure_args.m4]) + m4_include([m4/ax_enable_builddir.m4]) + m4_include([m4/ax_gcc_archflag.m4]) + m4_include([m4/ax_gcc_x86_cpuid.m4]) ++m4_include([m4/ax_prepend_flag.m4]) + m4_include([m4/ax_require_defined.m4]) + m4_include([m4/libtool.m4]) + m4_include([m4/ltoptions.m4]) +diff --git a/vendor/libffi-sys/libffi/compile b/vendor/libffi-sys/libffi/compile +index 23fcba011..df363c8fb 100755 +--- a/vendor/libffi-sys/libffi/compile ++++ b/vendor/libffi-sys/libffi/compile +@@ -3,7 +3,7 @@ + + scriptversion=2018-03-07.03; # UTC + +-# Copyright (C) 1999-2020 Free Software Foundation, Inc. ++# Copyright (C) 1999-2021 Free Software Foundation, Inc. + # Written by Tom Tromey . + # + # This program is free software; you can redistribute it and/or modify +diff --git a/vendor/libffi-sys/libffi/config.guess b/vendor/libffi-sys/libffi/config.guess +index e94095c5f..7f76b6228 100644 +--- a/vendor/libffi-sys/libffi/config.guess ++++ b/vendor/libffi-sys/libffi/config.guess +@@ -1,12 +1,14 @@ + #! /bin/sh + # Attempt to guess a canonical system name. +-# Copyright 1992-2020 Free Software Foundation, Inc. ++# Copyright 1992-2022 Free Software Foundation, Inc. + +-timestamp='2020-07-12' ++# shellcheck disable=SC2006,SC2268 # see below for rationale ++ ++timestamp='2022-01-09' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 3 of the License, or ++# the Free Software Foundation, either version 3 of the License, or + # (at your option) any later version. + # + # This program is distributed in the hope that it will be useful, but +@@ -27,11 +29,19 @@ timestamp='2020-07-12' + # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. + # + # You can get the latest version of this script from: +-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess ++# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess + # + # Please send patches to . + + ++# The "shellcheck disable" line above the timestamp inhibits complaints ++# about features and limitations of the classic Bourne shell that were ++# superseded or lifted in POSIX. However, this script identifies a wide ++# variety of pre-POSIX systems that do not have POSIX shells at all, and ++# even some reasonably current systems (Solaris 10 as case-in-point) still ++# have a pre-POSIX /bin/sh. ++ ++ + me=`echo "$0" | sed -e 's,.*/,,'` + + usage="\ +@@ -50,7 +60,7 @@ version="\ + GNU config.guess ($timestamp) + + Originally written by Per Bothner. +-Copyright 1992-2020 Free Software Foundation, Inc. ++Copyright 1992-2022 Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +@@ -84,6 +94,9 @@ if test $# != 0; then + exit 1 + fi + ++# Just in case it came from the environment. ++GUESS= ++ + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a + # compiler to aid in system detection is discouraged as it requires + # temporary files to be created and, as you can see below, it is a +@@ -102,7 +115,7 @@ set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" +- # shellcheck disable=SC2039 ++ # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || +@@ -112,7 +125,7 @@ set_cc_for_build() { + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then +- CC_FOR_BUILD="$driver" ++ CC_FOR_BUILD=$driver + break + fi + done +@@ -133,14 +146,12 @@ fi + + UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown + UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown ++UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown + UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +-case "$UNAME_SYSTEM" in ++case $UNAME_SYSTEM in + Linux|GNU|GNU/*) +- # If the system lacks a compiler, then just pick glibc. +- # We could probably try harder. +- LIBC=gnu ++ LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" +@@ -149,24 +160,37 @@ Linux|GNU|GNU/*) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc +- #else ++ #elif defined(__GLIBC__) + LIBC=gnu ++ #else ++ #include ++ /* First heuristic to detect musl libc. */ ++ #ifdef __DEFINED_va_list ++ LIBC=musl ++ #endif + #endif + EOF +- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" ++ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ++ eval "$cc_set_libc" + +- # If ldd exists, use it to detect musl libc. +- if command -v ldd >/dev/null && \ +- ldd --version 2>&1 | grep -q ^musl +- then +- LIBC=musl ++ # Second heuristic to detect musl libc. ++ if [ "$LIBC" = unknown ] && ++ command -v ldd >/dev/null && ++ ldd --version 2>&1 | grep -q ^musl; then ++ LIBC=musl ++ fi ++ ++ # If the system lacks a compiler, then just pick glibc. ++ # We could probably try harder. ++ if [ "$LIBC" = unknown ]; then ++ LIBC=gnu + fi + ;; + esac + + # Note: order is significant - the case branches are not exclusive. + +-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ++case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, +@@ -178,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". +- sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ +- "/sbin/$sysctl" 2>/dev/null || \ +- "/usr/sbin/$sysctl" 2>/dev/null || \ ++ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ ++ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` +- case "$UNAME_MACHINE_ARCH" in ++ case $UNAME_MACHINE_ARCH in ++ aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; +@@ -192,13 +216,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` +- machine="${arch}${endian}"-unknown ++ machine=${arch}${endian}-unknown + ;; +- *) machine="$UNAME_MACHINE_ARCH"-unknown ;; ++ *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. +- case "$UNAME_MACHINE_ARCH" in ++ case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; +@@ -219,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + ;; + esac + # Determine ABI tags. +- case "$UNAME_MACHINE_ARCH" in ++ case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` +@@ -230,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. +- case "$UNAME_VERSION" in ++ case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; +@@ -241,51 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. +- echo "$machine-${os}${release}${abi-}" +- exit ;; ++ GUESS=$machine-${os}${release}${abi-} ++ ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` +- echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE ++ ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` +- echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE ++ ;; ++ *:SecBSD:*:*) ++ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` ++ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE ++ ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` +- echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE ++ ;; + *:MidnightBSD:*:*) +- echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE ++ ;; + *:ekkoBSD:*:*) +- echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE ++ ;; + *:SolidBSD:*:*) +- echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE ++ ;; + *:OS108:*:*) +- echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE ++ ;; + macppc:MirBSD:*:*) +- echo powerpc-unknown-mirbsd"$UNAME_RELEASE" +- exit ;; ++ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE ++ ;; + *:MirBSD:*:*) +- echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE ++ ;; + *:Sortix:*:*) +- echo "$UNAME_MACHINE"-unknown-sortix +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-sortix ++ ;; + *:Twizzler:*:*) +- echo "$UNAME_MACHINE"-unknown-twizzler +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-twizzler ++ ;; + *:Redox:*:*) +- echo "$UNAME_MACHINE"-unknown-redox +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-redox ++ ;; + mips:OSF1:*.*) +- echo mips-dec-osf1 +- exit ;; ++ GUESS=mips-dec-osf1 ++ ;; + alpha:OSF1:*:*) ++ # Reset EXIT trap before exiting to avoid spurious non-zero exit code. ++ trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` +@@ -299,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` +- case "$ALPHA_CPU_TYPE" in ++ case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") +@@ -336,117 +366,121 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. +- echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" +- # Reset EXIT trap before exiting to avoid spurious non-zero exit code. +- exitcode=$? +- trap '' 0 +- exit $exitcode ;; ++ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` ++ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL ++ ;; + Amiga*:UNIX_System_V:4.0:*) +- echo m68k-unknown-sysv4 +- exit ;; ++ GUESS=m68k-unknown-sysv4 ++ ;; + *:[Aa]miga[Oo][Ss]:*:*) +- echo "$UNAME_MACHINE"-unknown-amigaos +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-amigaos ++ ;; + *:[Mm]orph[Oo][Ss]:*:*) +- echo "$UNAME_MACHINE"-unknown-morphos +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-morphos ++ ;; + *:OS/390:*:*) +- echo i370-ibm-openedition +- exit ;; ++ GUESS=i370-ibm-openedition ++ ;; + *:z/VM:*:*) +- echo s390-ibm-zvmoe +- exit ;; ++ GUESS=s390-ibm-zvmoe ++ ;; + *:OS400:*:*) +- echo powerpc-ibm-os400 +- exit ;; ++ GUESS=powerpc-ibm-os400 ++ ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) +- echo arm-acorn-riscix"$UNAME_RELEASE" +- exit ;; ++ GUESS=arm-acorn-riscix$UNAME_RELEASE ++ ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) +- echo arm-unknown-riscos +- exit ;; ++ GUESS=arm-unknown-riscos ++ ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) +- echo hppa1.1-hitachi-hiuxmpp +- exit ;; ++ GUESS=hppa1.1-hitachi-hiuxmpp ++ ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. +- if test "`(/bin/universe) 2>/dev/null`" = att ; then +- echo pyramid-pyramid-sysv3 +- else +- echo pyramid-pyramid-bsd +- fi +- exit ;; ++ case `(/bin/universe) 2>/dev/null` in ++ att) GUESS=pyramid-pyramid-sysv3 ;; ++ *) GUESS=pyramid-pyramid-bsd ;; ++ esac ++ ;; + NILE*:*:*:dcosx) +- echo pyramid-pyramid-svr4 +- exit ;; ++ GUESS=pyramid-pyramid-svr4 ++ ;; + DRS?6000:unix:4.0:6*) +- echo sparc-icl-nx6 +- exit ;; ++ GUESS=sparc-icl-nx6 ++ ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in +- sparc) echo sparc-icl-nx7; exit ;; +- esac ;; ++ sparc) GUESS=sparc-icl-nx7 ;; ++ esac ++ ;; + s390x:SunOS:*:*) +- echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" +- exit ;; ++ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` ++ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL ++ ;; + sun4H:SunOS:5.*:*) +- echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" +- exit ;; ++ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` ++ GUESS=sparc-hal-solaris2$SUN_REL ++ ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) +- echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" +- exit ;; ++ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` ++ GUESS=sparc-sun-solaris2$SUN_REL ++ ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) +- echo i386-pc-auroraux"$UNAME_RELEASE" +- exit ;; ++ GUESS=i386-pc-auroraux$UNAME_RELEASE ++ ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. +- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then ++ if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ +- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ ++ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi +- echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" +- exit ;; ++ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` ++ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL ++ ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. +- echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" +- exit ;; ++ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` ++ GUESS=sparc-sun-solaris3$SUN_REL ++ ;; + sun4*:SunOS:*:*) +- case "`/usr/bin/arch -k`" in ++ case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. +- echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" +- exit ;; ++ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` ++ GUESS=sparc-sun-sunos$SUN_REL ++ ;; + sun3*:SunOS:*:*) +- echo m68k-sun-sunos"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-sun-sunos$UNAME_RELEASE ++ ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 +- case "`/bin/arch`" in ++ case `/bin/arch` in + sun3) +- echo m68k-sun-sunos"$UNAME_RELEASE" ++ GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) +- echo sparc-sun-sunos"$UNAME_RELEASE" ++ GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac +- exit ;; ++ ;; + aushp:SunOS:*:*) +- echo sparc-auspex-sunos"$UNAME_RELEASE" +- exit ;; ++ GUESS=sparc-auspex-sunos$UNAME_RELEASE ++ ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor +@@ -456,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) +- echo m68k-atari-mint"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-atari-mint$UNAME_RELEASE ++ ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) +- echo m68k-atari-mint"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-atari-mint$UNAME_RELEASE ++ ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) +- echo m68k-atari-mint"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-atari-mint$UNAME_RELEASE ++ ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) +- echo m68k-milan-mint"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-milan-mint$UNAME_RELEASE ++ ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) +- echo m68k-hades-mint"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-hades-mint$UNAME_RELEASE ++ ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) +- echo m68k-unknown-mint"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-unknown-mint$UNAME_RELEASE ++ ;; + m68k:machten:*:*) +- echo m68k-apple-machten"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-apple-machten$UNAME_RELEASE ++ ;; + powerpc:machten:*:*) +- echo powerpc-apple-machten"$UNAME_RELEASE" +- exit ;; ++ GUESS=powerpc-apple-machten$UNAME_RELEASE ++ ;; + RISC*:Mach:*:*) +- echo mips-dec-mach_bsd4.3 +- exit ;; ++ GUESS=mips-dec-mach_bsd4.3 ++ ;; + RISC*:ULTRIX:*:*) +- echo mips-dec-ultrix"$UNAME_RELEASE" +- exit ;; ++ GUESS=mips-dec-ultrix$UNAME_RELEASE ++ ;; + VAX*:ULTRIX*:*:*) +- echo vax-dec-ultrix"$UNAME_RELEASE" +- exit ;; ++ GUESS=vax-dec-ultrix$UNAME_RELEASE ++ ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) +- echo clipper-intergraph-clix"$UNAME_RELEASE" +- exit ;; ++ GUESS=clipper-intergraph-clix$UNAME_RELEASE ++ ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +@@ -518,75 +552,76 @@ EOF + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } +- echo mips-mips-riscos"$UNAME_RELEASE" +- exit ;; ++ GUESS=mips-mips-riscos$UNAME_RELEASE ++ ;; + Motorola:PowerMAX_OS:*:*) +- echo powerpc-motorola-powermax +- exit ;; ++ GUESS=powerpc-motorola-powermax ++ ;; + Motorola:*:4.3:PL8-*) +- echo powerpc-harris-powermax +- exit ;; ++ GUESS=powerpc-harris-powermax ++ ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) +- echo powerpc-harris-powermax +- exit ;; ++ GUESS=powerpc-harris-powermax ++ ;; + Night_Hawk:Power_UNIX:*:*) +- echo powerpc-harris-powerunix +- exit ;; ++ GUESS=powerpc-harris-powerunix ++ ;; + m88k:CX/UX:7*:*) +- echo m88k-harris-cxux7 +- exit ;; ++ GUESS=m88k-harris-cxux7 ++ ;; + m88k:*:4*:R4*) +- echo m88k-motorola-sysv4 +- exit ;; ++ GUESS=m88k-motorola-sysv4 ++ ;; + m88k:*:3*:R3*) +- echo m88k-motorola-sysv3 +- exit ;; ++ GUESS=m88k-motorola-sysv3 ++ ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` +- if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] ++ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then +- if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ +- [ "$TARGET_BINARY_INTERFACE"x = x ] ++ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ ++ test "$TARGET_BINARY_INTERFACE"x = x + then +- echo m88k-dg-dgux"$UNAME_RELEASE" ++ GUESS=m88k-dg-dgux$UNAME_RELEASE + else +- echo m88k-dg-dguxbcs"$UNAME_RELEASE" ++ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else +- echo i586-dg-dgux"$UNAME_RELEASE" ++ GUESS=i586-dg-dgux$UNAME_RELEASE + fi +- exit ;; ++ ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) +- echo m88k-dolphin-sysv3 +- exit ;; ++ GUESS=m88k-dolphin-sysv3 ++ ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 +- echo m88k-motorola-sysv3 +- exit ;; ++ GUESS=m88k-motorola-sysv3 ++ ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) +- echo m88k-tektronix-sysv3 +- exit ;; ++ GUESS=m88k-tektronix-sysv3 ++ ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) +- echo m68k-tektronix-bsd +- exit ;; ++ GUESS=m68k-tektronix-bsd ++ ;; + *:IRIX*:*:*) +- echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" +- exit ;; ++ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` ++ GUESS=mips-sgi-irix$IRIX_REL ++ ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. +- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id +- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' ++ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id ++ ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) +- echo i386-ibm-aix +- exit ;; ++ GUESS=i386-ibm-aix ++ ;; + ia64:AIX:*:*) +- if [ -x /usr/bin/oslevel ] ; then ++ if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else +- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" ++ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi +- echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" +- exit ;; ++ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV ++ ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build +@@ -603,16 +638,16 @@ EOF + EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then +- echo "$SYSTEM_NAME" ++ GUESS=$SYSTEM_NAME + else +- echo rs6000-ibm-aix3.2.5 ++ GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then +- echo rs6000-ibm-aix3.2.4 ++ GUESS=rs6000-ibm-aix3.2.4 + else +- echo rs6000-ibm-aix3.2 ++ GUESS=rs6000-ibm-aix3.2 + fi +- exit ;; ++ ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then +@@ -620,56 +655,56 @@ EOF + else + IBM_ARCH=powerpc + fi +- if [ -x /usr/bin/lslpp ] ; then +- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | ++ if test -x /usr/bin/lslpp ; then ++ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else +- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" ++ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi +- echo "$IBM_ARCH"-ibm-aix"$IBM_REV" +- exit ;; ++ GUESS=$IBM_ARCH-ibm-aix$IBM_REV ++ ;; + *:AIX:*:*) +- echo rs6000-ibm-aix +- exit ;; ++ GUESS=rs6000-ibm-aix ++ ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) +- echo romp-ibm-bsd4.4 +- exit ;; ++ GUESS=romp-ibm-bsd4.4 ++ ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and +- echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to +- exit ;; # report: romp-ibm BSD 4.3 ++ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to ++ ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) +- echo rs6000-bull-bosx +- exit ;; ++ GUESS=rs6000-bull-bosx ++ ;; + DPX/2?00:B.O.S.:*:*) +- echo m68k-bull-sysv3 +- exit ;; ++ GUESS=m68k-bull-sysv3 ++ ;; + 9000/[34]??:4.3bsd:1.*:*) +- echo m68k-hp-bsd +- exit ;; ++ GUESS=m68k-hp-bsd ++ ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) +- echo m68k-hp-bsd4.4 +- exit ;; ++ GUESS=m68k-hp-bsd4.4 ++ ;; + 9000/[34678]??:HP-UX:*:*) +- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` +- case "$UNAME_MACHINE" in ++ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` ++ case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) +- if [ -x /usr/bin/getconf ]; then ++ if test -x /usr/bin/getconf; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` +- case "$sc_cpu_version" in ++ case $sc_cpu_version in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 +- case "$sc_kernel_bits" in ++ case $sc_kernel_bits in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi +- if [ "$HP_ARCH" = "" ]; then ++ if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + +@@ -708,7 +743,7 @@ EOF + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac +- if [ "$HP_ARCH" = hppa2.0w ] ++ if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + +@@ -729,12 +764,12 @@ EOF + HP_ARCH=hppa64 + fi + fi +- echo "$HP_ARCH"-hp-hpux"$HPUX_REV" +- exit ;; ++ GUESS=$HP_ARCH-hp-hpux$HPUX_REV ++ ;; + ia64:HP-UX:*:*) +- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` +- echo ia64-hp-hpux"$HPUX_REV" +- exit ;; ++ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` ++ GUESS=ia64-hp-hpux$HPUX_REV ++ ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +@@ -764,36 +799,36 @@ EOF + EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } +- echo unknown-hitachi-hiuxwe2 +- exit ;; ++ GUESS=unknown-hitachi-hiuxwe2 ++ ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) +- echo hppa1.1-hp-bsd +- exit ;; ++ GUESS=hppa1.1-hp-bsd ++ ;; + 9000/8??:4.3bsd:*:*) +- echo hppa1.0-hp-bsd +- exit ;; ++ GUESS=hppa1.0-hp-bsd ++ ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) +- echo hppa1.0-hp-mpeix +- exit ;; ++ GUESS=hppa1.0-hp-mpeix ++ ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) +- echo hppa1.1-hp-osf +- exit ;; ++ GUESS=hppa1.1-hp-osf ++ ;; + hp8??:OSF1:*:*) +- echo hppa1.0-hp-osf +- exit ;; ++ GUESS=hppa1.0-hp-osf ++ ;; + i*86:OSF1:*:*) +- if [ -x /usr/sbin/sysversion ] ; then +- echo "$UNAME_MACHINE"-unknown-osf1mk ++ if test -x /usr/sbin/sysversion ; then ++ GUESS=$UNAME_MACHINE-unknown-osf1mk + else +- echo "$UNAME_MACHINE"-unknown-osf1 ++ GUESS=$UNAME_MACHINE-unknown-osf1 + fi +- exit ;; ++ ;; + parisc*:Lites*:*:*) +- echo hppa1.1-hp-lites +- exit ;; ++ GUESS=hppa1.1-hp-lites ++ ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) +- echo c1-convex-bsd +- exit ;; ++ GUESS=c1-convex-bsd ++ ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd +@@ -801,17 +836,18 @@ EOF + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) +- echo c34-convex-bsd +- exit ;; ++ GUESS=c34-convex-bsd ++ ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) +- echo c38-convex-bsd +- exit ;; ++ GUESS=c38-convex-bsd ++ ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) +- echo c4-convex-bsd +- exit ;; ++ GUESS=c4-convex-bsd ++ ;; + CRAY*Y-MP:*:*:*) +- echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' +- exit ;; ++ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` ++ GUESS=ymp-cray-unicos$CRAY_REL ++ ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ +@@ -819,112 +855,127 @@ EOF + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) +- echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' +- exit ;; ++ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` ++ GUESS=t90-cray-unicos$CRAY_REL ++ ;; + CRAY*T3E:*:*:*) +- echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' +- exit ;; ++ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` ++ GUESS=alphaev5-cray-unicosmk$CRAY_REL ++ ;; + CRAY*SV1:*:*:*) +- echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' +- exit ;; ++ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` ++ GUESS=sv1-cray-unicos$CRAY_REL ++ ;; + *:UNICOS/mp:*:*) +- echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' +- exit ;; ++ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` ++ GUESS=craynv-cray-unicosmp$CRAY_REL ++ ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` +- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" +- exit ;; ++ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ++ ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` +- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" +- exit ;; ++ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} ++ ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) +- echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE ++ ;; + sparc*:BSD/OS:*:*) +- echo sparc-unknown-bsdi"$UNAME_RELEASE" +- exit ;; ++ GUESS=sparc-unknown-bsdi$UNAME_RELEASE ++ ;; + *:BSD/OS:*:*) +- echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE ++ ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then +- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi ++ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` ++ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else +- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf ++ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` ++ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi +- exit ;; ++ ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` +- case "$UNAME_PROCESSOR" in ++ case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac +- echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" +- exit ;; ++ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` ++ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL ++ ;; + i*:CYGWIN*:*) +- echo "$UNAME_MACHINE"-pc-cygwin +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-cygwin ++ ;; + *:MINGW64*:*) +- echo "$UNAME_MACHINE"-pc-mingw64 +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-mingw64 ++ ;; + *:MINGW*:*) +- echo "$UNAME_MACHINE"-pc-mingw32 +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-mingw32 ++ ;; + *:MSYS*:*) +- echo "$UNAME_MACHINE"-pc-msys +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-msys ++ ;; + i*:PW*:*) +- echo "$UNAME_MACHINE"-pc-pw32 +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-pw32 ++ ;; ++ *:SerenityOS:*:*) ++ GUESS=$UNAME_MACHINE-pc-serenity ++ ;; + *:Interix*:*) +- case "$UNAME_MACHINE" in ++ case $UNAME_MACHINE in + x86) +- echo i586-pc-interix"$UNAME_RELEASE" +- exit ;; ++ GUESS=i586-pc-interix$UNAME_RELEASE ++ ;; + authenticamd | genuineintel | EM64T) +- echo x86_64-unknown-interix"$UNAME_RELEASE" +- exit ;; ++ GUESS=x86_64-unknown-interix$UNAME_RELEASE ++ ;; + IA64) +- echo ia64-unknown-interix"$UNAME_RELEASE" +- exit ;; ++ GUESS=ia64-unknown-interix$UNAME_RELEASE ++ ;; + esac ;; + i*:UWIN*:*) +- echo "$UNAME_MACHINE"-pc-uwin +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-uwin ++ ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) +- echo x86_64-pc-cygwin +- exit ;; ++ GUESS=x86_64-pc-cygwin ++ ;; + prep*:SunOS:5.*:*) +- echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" +- exit ;; ++ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` ++ GUESS=powerpcle-unknown-solaris2$SUN_REL ++ ;; + *:GNU:*:*) + # the GNU system +- echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" +- exit ;; ++ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` ++ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` ++ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL ++ ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland +- echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" +- exit ;; ++ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` ++ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` ++ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ++ ;; + *:Minix:*:*) +- echo "$UNAME_MACHINE"-unknown-minix +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-minix ++ ;; + aarch64:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; +@@ -937,60 +988,63 @@ EOF + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; +- arc:Linux:*:* | arceb:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; ++ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi ++ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf ++ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi +- exit ;; ++ ;; + avr32*:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + cris:Linux:*:*) +- echo "$UNAME_MACHINE"-axis-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-axis-linux-$LIBC ++ ;; + crisv32:Linux:*:*) +- echo "$UNAME_MACHINE"-axis-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-axis-linux-$LIBC ++ ;; + e2k:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + frv:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + hexagon:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + i*86:Linux:*:*) +- echo "$UNAME_MACHINE"-pc-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-linux-$LIBC ++ ;; + ia64:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + k1om:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; ++ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + m32r*:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + m68*:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 +@@ -1035,123 +1089,124 @@ EOF + #endif + #endif + EOF +- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" ++ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` ++ eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + openrisc*:Linux:*:*) +- echo or1k-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=or1k-unknown-linux-$LIBC ++ ;; + or32:Linux:*:* | or1k*:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + padre:Linux:*:*) +- echo sparc-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=sparc-unknown-linux-$LIBC ++ ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) +- echo hppa64-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=hppa64-unknown-linux-$LIBC ++ ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in +- PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; +- PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; +- *) echo hppa-unknown-linux-"$LIBC" ;; ++ PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; ++ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; ++ *) GUESS=hppa-unknown-linux-$LIBC ;; + esac +- exit ;; ++ ;; + ppc64:Linux:*:*) +- echo powerpc64-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=powerpc64-unknown-linux-$LIBC ++ ;; + ppc:Linux:*:*) +- echo powerpc-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=powerpc-unknown-linux-$LIBC ++ ;; + ppc64le:Linux:*:*) +- echo powerpc64le-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=powerpc64le-unknown-linux-$LIBC ++ ;; + ppcle:Linux:*:*) +- echo powerpcle-unknown-linux-"$LIBC" +- exit ;; +- riscv32:Linux:*:* | riscv64:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=powerpcle-unknown-linux-$LIBC ++ ;; ++ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + s390:Linux:*:* | s390x:Linux:*:*) +- echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC ++ ;; + sh64*:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + sh*:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + sparc:Linux:*:* | sparc64:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + tile*:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + vax:Linux:*:*) +- echo "$UNAME_MACHINE"-dec-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-dec-linux-$LIBC ++ ;; + x86_64:Linux:*:*) + set_cc_for_build + LIBCABI=$LIBC +- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then ++ if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then +- LIBCABI="$LIBC"x32 ++ LIBCABI=${LIBC}x32 + fi + fi +- echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI ++ ;; + xtensa*:Linux:*:*) +- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ++ ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. +- echo i386-sequent-sysv4 +- exit ;; ++ GUESS=i386-sequent-sysv4 ++ ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. +- echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ++ ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. +- echo "$UNAME_MACHINE"-pc-os2-emx +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-os2-emx ++ ;; + i*86:XTS-300:*:STOP) +- echo "$UNAME_MACHINE"-unknown-stop +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-stop ++ ;; + i*86:atheos:*:*) +- echo "$UNAME_MACHINE"-unknown-atheos +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-atheos ++ ;; + i*86:syllable:*:*) +- echo "$UNAME_MACHINE"-pc-syllable +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-syllable ++ ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) +- echo i386-unknown-lynxos"$UNAME_RELEASE" +- exit ;; ++ GUESS=i386-unknown-lynxos$UNAME_RELEASE ++ ;; + i*86:*DOS:*:*) +- echo "$UNAME_MACHINE"-pc-msdosdjgpp +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-msdosdjgpp ++ ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then +- echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" ++ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else +- echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" ++ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi +- exit ;; ++ ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in +@@ -1159,12 +1214,12 @@ EOF + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac +- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} ++ ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 +@@ -1174,11 +1229,11 @@ EOF + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 +- echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" ++ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else +- echo "$UNAME_MACHINE"-pc-sysv32 ++ GUESS=$UNAME_MACHINE-pc-sysv32 + fi +- exit ;; ++ ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about +@@ -1186,31 +1241,31 @@ EOF + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. +- echo i586-pc-msdosdjgpp +- exit ;; ++ GUESS=i586-pc-msdosdjgpp ++ ;; + Intel:Mach:3*:*) +- echo i386-pc-mach3 +- exit ;; ++ GUESS=i386-pc-mach3 ++ ;; + paragon:*:*:*) +- echo i860-intel-osf1 +- exit ;; ++ GUESS=i860-intel-osf1 ++ ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then +- echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 ++ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. +- echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 ++ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi +- exit ;; ++ ;; + mini*:CTIX:SYS*5:*) + # "miniframe" +- echo m68010-convergent-sysv +- exit ;; ++ GUESS=m68010-convergent-sysv ++ ;; + mc68k:UNIX:SYSTEM5:3.51m) +- echo m68k-convergent-sysv +- exit ;; ++ GUESS=m68k-convergent-sysv ++ ;; + M680?0:D-NIX:5.3:*) +- echo m68k-diab-dnix +- exit ;; ++ GUESS=m68k-diab-dnix ++ ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) +@@ -1235,116 +1290,116 @@ EOF + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) +- echo m68k-unknown-lynxos"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-unknown-lynxos$UNAME_RELEASE ++ ;; + mc68030:UNIX_System_V:4.*:*) +- echo m68k-atari-sysv4 +- exit ;; ++ GUESS=m68k-atari-sysv4 ++ ;; + TSUNAMI:LynxOS:2.*:*) +- echo sparc-unknown-lynxos"$UNAME_RELEASE" +- exit ;; ++ GUESS=sparc-unknown-lynxos$UNAME_RELEASE ++ ;; + rs6000:LynxOS:2.*:*) +- echo rs6000-unknown-lynxos"$UNAME_RELEASE" +- exit ;; ++ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE ++ ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) +- echo powerpc-unknown-lynxos"$UNAME_RELEASE" +- exit ;; ++ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE ++ ;; + SM[BE]S:UNIX_SV:*:*) +- echo mips-dde-sysv"$UNAME_RELEASE" +- exit ;; ++ GUESS=mips-dde-sysv$UNAME_RELEASE ++ ;; + RM*:ReliantUNIX-*:*:*) +- echo mips-sni-sysv4 +- exit ;; ++ GUESS=mips-sni-sysv4 ++ ;; + RM*:SINIX-*:*:*) +- echo mips-sni-sysv4 +- exit ;; ++ GUESS=mips-sni-sysv4 ++ ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` +- echo "$UNAME_MACHINE"-sni-sysv4 ++ GUESS=$UNAME_MACHINE-sni-sysv4 + else +- echo ns32k-sni-sysv ++ GUESS=ns32k-sni-sysv + fi +- exit ;; ++ ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says +- echo i586-unisys-sysv4 +- exit ;; ++ GUESS=i586-unisys-sysv4 ++ ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm +- echo hppa1.1-stratus-sysv4 +- exit ;; ++ GUESS=hppa1.1-stratus-sysv4 ++ ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. +- echo i860-stratus-sysv4 +- exit ;; ++ GUESS=i860-stratus-sysv4 ++ ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. +- echo "$UNAME_MACHINE"-stratus-vos +- exit ;; ++ GUESS=$UNAME_MACHINE-stratus-vos ++ ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. +- echo hppa1.1-stratus-vos +- exit ;; ++ GUESS=hppa1.1-stratus-vos ++ ;; + mc68*:A/UX:*:*) +- echo m68k-apple-aux"$UNAME_RELEASE" +- exit ;; ++ GUESS=m68k-apple-aux$UNAME_RELEASE ++ ;; + news*:NEWS-OS:6*:*) +- echo mips-sony-newsos6 +- exit ;; ++ GUESS=mips-sony-newsos6 ++ ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) +- if [ -d /usr/nec ]; then +- echo mips-nec-sysv"$UNAME_RELEASE" ++ if test -d /usr/nec; then ++ GUESS=mips-nec-sysv$UNAME_RELEASE + else +- echo mips-unknown-sysv"$UNAME_RELEASE" ++ GUESS=mips-unknown-sysv$UNAME_RELEASE + fi +- exit ;; ++ ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. +- echo powerpc-be-beos +- exit ;; ++ GUESS=powerpc-be-beos ++ ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. +- echo powerpc-apple-beos +- exit ;; ++ GUESS=powerpc-apple-beos ++ ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. +- echo i586-pc-beos +- exit ;; ++ GUESS=i586-pc-beos ++ ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. +- echo i586-pc-haiku +- exit ;; ++ GUESS=i586-pc-haiku ++ ;; + x86_64:Haiku:*:*) +- echo x86_64-unknown-haiku +- exit ;; ++ GUESS=x86_64-unknown-haiku ++ ;; + SX-4:SUPER-UX:*:*) +- echo sx4-nec-superux"$UNAME_RELEASE" +- exit ;; ++ GUESS=sx4-nec-superux$UNAME_RELEASE ++ ;; + SX-5:SUPER-UX:*:*) +- echo sx5-nec-superux"$UNAME_RELEASE" +- exit ;; ++ GUESS=sx5-nec-superux$UNAME_RELEASE ++ ;; + SX-6:SUPER-UX:*:*) +- echo sx6-nec-superux"$UNAME_RELEASE" +- exit ;; ++ GUESS=sx6-nec-superux$UNAME_RELEASE ++ ;; + SX-7:SUPER-UX:*:*) +- echo sx7-nec-superux"$UNAME_RELEASE" +- exit ;; ++ GUESS=sx7-nec-superux$UNAME_RELEASE ++ ;; + SX-8:SUPER-UX:*:*) +- echo sx8-nec-superux"$UNAME_RELEASE" +- exit ;; ++ GUESS=sx8-nec-superux$UNAME_RELEASE ++ ;; + SX-8R:SUPER-UX:*:*) +- echo sx8r-nec-superux"$UNAME_RELEASE" +- exit ;; ++ GUESS=sx8r-nec-superux$UNAME_RELEASE ++ ;; + SX-ACE:SUPER-UX:*:*) +- echo sxace-nec-superux"$UNAME_RELEASE" +- exit ;; ++ GUESS=sxace-nec-superux$UNAME_RELEASE ++ ;; + Power*:Rhapsody:*:*) +- echo powerpc-apple-rhapsody"$UNAME_RELEASE" +- exit ;; ++ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE ++ ;; + *:Rhapsody:*:*) +- echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE ++ ;; + arm64:Darwin:*:*) +- echo aarch64-apple-darwin"$UNAME_RELEASE" +- exit ;; ++ GUESS=aarch64-apple-darwin$UNAME_RELEASE ++ ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in +@@ -1359,7 +1414,7 @@ EOF + else + set_cc_for_build + fi +- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then ++ if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null +@@ -1380,109 +1435,119 @@ EOF + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi +- echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE ++ ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi +- echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE ++ ;; + *:QNX:*:4*) +- echo i386-pc-qnx +- exit ;; ++ GUESS=i386-pc-qnx ++ ;; + NEO-*:NONSTOP_KERNEL:*:*) +- echo neo-tandem-nsk"$UNAME_RELEASE" +- exit ;; ++ GUESS=neo-tandem-nsk$UNAME_RELEASE ++ ;; + NSE-*:NONSTOP_KERNEL:*:*) +- echo nse-tandem-nsk"$UNAME_RELEASE" +- exit ;; ++ GUESS=nse-tandem-nsk$UNAME_RELEASE ++ ;; + NSR-*:NONSTOP_KERNEL:*:*) +- echo nsr-tandem-nsk"$UNAME_RELEASE" +- exit ;; ++ GUESS=nsr-tandem-nsk$UNAME_RELEASE ++ ;; + NSV-*:NONSTOP_KERNEL:*:*) +- echo nsv-tandem-nsk"$UNAME_RELEASE" +- exit ;; ++ GUESS=nsv-tandem-nsk$UNAME_RELEASE ++ ;; + NSX-*:NONSTOP_KERNEL:*:*) +- echo nsx-tandem-nsk"$UNAME_RELEASE" +- exit ;; ++ GUESS=nsx-tandem-nsk$UNAME_RELEASE ++ ;; + *:NonStop-UX:*:*) +- echo mips-compaq-nonstopux +- exit ;; ++ GUESS=mips-compaq-nonstopux ++ ;; + BS2000:POSIX*:*:*) +- echo bs2000-siemens-sysv +- exit ;; ++ GUESS=bs2000-siemens-sysv ++ ;; + DS/*:UNIX_System_V:*:*) +- echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE ++ ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. +- # shellcheck disable=SC2154 +- if test "$cputype" = 386; then ++ if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 +- else +- UNAME_MACHINE="$cputype" ++ elif test "x${cputype-}" != x; then ++ UNAME_MACHINE=$cputype + fi +- echo "$UNAME_MACHINE"-unknown-plan9 +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-plan9 ++ ;; + *:TOPS-10:*:*) +- echo pdp10-unknown-tops10 +- exit ;; ++ GUESS=pdp10-unknown-tops10 ++ ;; + *:TENEX:*:*) +- echo pdp10-unknown-tenex +- exit ;; ++ GUESS=pdp10-unknown-tenex ++ ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) +- echo pdp10-dec-tops20 +- exit ;; ++ GUESS=pdp10-dec-tops20 ++ ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) +- echo pdp10-xkl-tops20 +- exit ;; ++ GUESS=pdp10-xkl-tops20 ++ ;; + *:TOPS-20:*:*) +- echo pdp10-unknown-tops20 +- exit ;; ++ GUESS=pdp10-unknown-tops20 ++ ;; + *:ITS:*:*) +- echo pdp10-unknown-its +- exit ;; ++ GUESS=pdp10-unknown-its ++ ;; + SEI:*:*:SEIUX) +- echo mips-sei-seiux"$UNAME_RELEASE" +- exit ;; ++ GUESS=mips-sei-seiux$UNAME_RELEASE ++ ;; + *:DragonFly:*:*) +- echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" +- exit ;; ++ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` ++ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL ++ ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` +- case "$UNAME_MACHINE" in +- A*) echo alpha-dec-vms ; exit ;; +- I*) echo ia64-dec-vms ; exit ;; +- V*) echo vax-dec-vms ; exit ;; ++ case $UNAME_MACHINE in ++ A*) GUESS=alpha-dec-vms ;; ++ I*) GUESS=ia64-dec-vms ;; ++ V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) +- echo i386-pc-xenix +- exit ;; ++ GUESS=i386-pc-xenix ++ ;; + i*86:skyos:*:*) +- echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" +- exit ;; ++ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` ++ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL ++ ;; + i*86:rdos:*:*) +- echo "$UNAME_MACHINE"-pc-rdos +- exit ;; +- i*86:AROS:*:*) +- echo "$UNAME_MACHINE"-pc-aros +- exit ;; ++ GUESS=$UNAME_MACHINE-pc-rdos ++ ;; ++ i*86:Fiwix:*:*) ++ GUESS=$UNAME_MACHINE-pc-fiwix ++ ;; ++ *:AROS:*:*) ++ GUESS=$UNAME_MACHINE-unknown-aros ++ ;; + x86_64:VMkernel:*:*) +- echo "$UNAME_MACHINE"-unknown-esx +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-esx ++ ;; + amd64:Isilon\ OneFS:*:*) +- echo x86_64-unknown-onefs +- exit ;; ++ GUESS=x86_64-unknown-onefs ++ ;; + *:Unleashed:*:*) +- echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" +- exit ;; ++ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ++ ;; + esac + ++# Do we have a guess based on uname results? ++if test "x$GUESS" != x; then ++ echo "$GUESS" ++ exit ++fi ++ + # No uname command or uname output not recognized. + set_cc_for_build + cat > "$dummy.c" </dev/null && SYSTEM_NAME=`$dummy` && ++$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + + # Apollos put the system type in the environment. +@@ -1622,7 +1687,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + + echo "$0: unable to guess system type" >&2 + +-case "$UNAME_MACHINE:$UNAME_SYSTEM" in ++case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 +@@ -1749,8 +1784,12 @@ case $kernel-$os in + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; ++ vxworks-simlinux | vxworks-simwindows | vxworks-spe) ++ ;; + nto-qnx*) + ;; ++ os2-emx) ++ ;; + *-eabi* | *-gnueabi*) + ;; + -*) +diff --git a/vendor/libffi-sys/libffi/configure b/vendor/libffi-sys/libffi/configure +index 94e149c35..a43e342a9 100755 +--- a/vendor/libffi-sys/libffi/configure ++++ b/vendor/libffi-sys/libffi/configure +@@ -1,11 +1,12 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.69 for libffi 3.4.2. ++# Generated by GNU Autoconf 2.71 for libffi 3.4.4. + # + # Report bugs to . + # + # +-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. ++# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, ++# Inc. + # + # + # This configure script is free software; the Free Software Foundation +@@ -16,14 +17,16 @@ + + # Be more Bourne compatible + DUALCASE=1; export DUALCASE # for MKS sh +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : ++as_nop=: ++if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 ++then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +-else ++else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( +@@ -33,46 +36,46 @@ esac + fi + + ++ ++# Reset variables that may have inherited troublesome values from ++# the environment. ++ ++# IFS needs to be set, to space, tab, and newline, in precisely that order. ++# (If _AS_PATH_WALK were called with IFS unset, it would have the ++# side effect of setting IFS to empty, thus disabling word splitting.) ++# Quoting is to prevent editors from complaining about space-tab. + as_nl=' + ' + export as_nl +-# Printing a long string crashes Solaris 7 /usr/bin/printf. +-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +-# Prefer a ksh shell builtin over an external printf program on Solaris, +-# but without wasting forks for bash or zsh. +-if test -z "$BASH_VERSION$ZSH_VERSION" \ +- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then +- as_echo='print -r --' +- as_echo_n='print -rn --' +-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then +- as_echo='printf %s\n' +- as_echo_n='printf %s' +-else +- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then +- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' +- as_echo_n='/usr/ucb/echo -n' +- else +- as_echo_body='eval expr "X$1" : "X\\(.*\\)"' +- as_echo_n_body='eval +- arg=$1; +- case $arg in #( +- *"$as_nl"*) +- expr "X$arg" : "X\\(.*\\)$as_nl"; +- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; +- esac; +- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" +- ' +- export as_echo_n_body +- as_echo_n='sh -c $as_echo_n_body as_echo' +- fi +- export as_echo_body +- as_echo='sh -c $as_echo_body as_echo' +-fi ++IFS=" "" $as_nl" ++ ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# Ensure predictable behavior from utilities with locale-dependent output. ++LC_ALL=C ++export LC_ALL ++LANGUAGE=C ++export LANGUAGE ++ ++# We cannot yet rely on "unset" to work, but we need these variables ++# to be unset--not just set to an empty or harmless value--now, to ++# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct ++# also avoids known problems related to "unset" and subshell syntax ++# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). ++for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH ++do eval test \${$as_var+y} \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : ++done ++ ++# Ensure that fds 0, 1, and 2 are open. ++if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi ++if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + + # The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then ++if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || +@@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then + fi + + +-# IFS +-# We need space, tab and new line, in precisely that order. Quoting is +-# there to prevent editors from complaining about space-tab. +-# (If _AS_PATH_WALK were called with IFS unset, it would disable word +-# splitting by setting IFS to empty value.) +-IFS=" "" $as_nl" +- + # Find who we are. Look in the path if we contain no directory separator. + as_myself= + case $0 in #(( +@@ -96,8 +92,12 @@ case $0 in #(( + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done + IFS=$as_save_IFS + +@@ -109,30 +109,10 @@ if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then +- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 + fi + +-# Unset variables that we do not need and which cause bugs (e.g. in +-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +-# suppresses any "Segmentation fault" message there. '((' could +-# trigger a bug in pdksh 5.2.14. +-for as_var in BASH_ENV ENV MAIL MAILPATH +-do eval test x\${$as_var+set} = xset \ +- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +-done +-PS1='$ ' +-PS2='> ' +-PS4='+ ' +- +-# NLS nuisances. +-LC_ALL=C +-export LC_ALL +-LANGUAGE=C +-export LANGUAGE +- +-# CDPATH. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + # Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. +@@ -154,20 +134,22 @@ esac + exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} + # Admittedly, this is quite paranoid, since all the known shells bail + # out after a failed `exec'. +-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +-as_fn_exit 255 ++printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 ++exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} + if test "x$CONFIG_SHELL" = x; then +- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : ++ as_bourne_compatible="as_nop=: ++if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 ++then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +-else ++else \$as_nop + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( +@@ -187,17 +169,21 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } + as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } + as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } + as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : ++if ( set x; as_fn_ret_success y && test x = \"\$1\" ) ++then : + +-else ++else \$as_nop + exitcode=1; echo positional parameters were not saved. + fi + test x\$exitcode = x0 || exit 1 ++blah=\$(echo \$(echo blah)) ++test x\"\$blah\" = xblah || exit 1 + test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 ++test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +@@ -205,32 +191,39 @@ test -x / || exit 1" + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ +- || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +-test \$(( 1 + 1 )) = 2 || exit 1" +- if (eval "$as_required") 2>/dev/null; then : ++ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" ++ if (eval "$as_required") 2>/dev/null ++then : + as_have_required=yes +-else ++else $as_nop + as_have_required=no + fi +- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : ++ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null ++then : + +-else ++else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + as_found=false + for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. +- as_shell=$as_dir/$as_base ++ as_shell=$as_dir$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && +- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null ++then : + CONFIG_SHELL=$as_shell as_have_required=yes +- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null ++then : + break 2 + fi + fi +@@ -238,14 +231,21 @@ fi + esac + as_found=false + done +-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : +- CONFIG_SHELL=$SHELL as_have_required=yes +-fi; } + IFS=$as_save_IFS ++if $as_found ++then : ++ ++else $as_nop ++ if { test -f "$SHELL" || test -f "$SHELL.exe"; } && ++ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null ++then : ++ CONFIG_SHELL=$SHELL as_have_required=yes ++fi ++fi + + +- if test "x$CONFIG_SHELL" != x; then : ++ if test "x$CONFIG_SHELL" != x ++then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also +@@ -263,18 +263,19 @@ esac + exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} + # Admittedly, this is quite paranoid, since all the known shells bail + # out after a failed `exec'. +-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 ++printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 + exit 255 + fi + +- if test x$as_have_required = xno; then : +- $as_echo "$0: This script requires a shell more modern than all" +- $as_echo "$0: the shells that I found on your system." +- if test x${ZSH_VERSION+set} = xset ; then +- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" +- $as_echo "$0: be upgraded to zsh 4.3.4 or later." ++ if test x$as_have_required = xno ++then : ++ printf "%s\n" "$0: This script requires a shell more modern than all" ++ printf "%s\n" "$0: the shells that I found on your system." ++ if test ${ZSH_VERSION+y} ; then ++ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" ++ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else +- $as_echo "$0: Please tell bug-autoconf@gnu.org and ++ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and + $0: http://github.com/libffi/libffi/issues about your + $0: system, including any error possibly output before this + $0: message. Then install a modern shell, or manually run +@@ -302,6 +303,7 @@ as_fn_unset () + } + as_unset=as_fn_unset + ++ + # as_fn_set_status STATUS + # ----------------------- + # Set $? to STATUS, without forking. +@@ -319,6 +321,14 @@ as_fn_exit () + as_fn_set_status $1 + exit $1 + } # as_fn_exit ++# as_fn_nop ++# --------- ++# Do nothing but, unlike ":", preserve the value of $?. ++as_fn_nop () ++{ ++ return $? ++} ++as_nop=as_fn_nop + + # as_fn_mkdir_p + # ------------- +@@ -333,7 +343,7 @@ as_fn_mkdir_p () + as_dirs= + while :; do + case $as_dir in #( +- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" +@@ -342,7 +352,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X"$as_dir" | ++printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q +@@ -381,12 +391,13 @@ as_fn_executable_p () + # advantage of any shell optimizations that allow amortized linear growth over + # repeated appends, instead of the typical quadratic growth present in naive + # implementations. +-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null ++then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +-else ++else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 +@@ -398,18 +409,27 @@ fi # as_fn_append + # Perform arithmetic evaluation on the ARGs, and store the result in the + # global $as_val. Take advantage of shells that can avoid forks. The arguments + # must be portable across $(()) and expr. +-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null ++then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +-else ++else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } + fi # as_fn_arith + ++# as_fn_nop ++# --------- ++# Do nothing but, unlike ":", preserve the value of $?. ++as_fn_nop () ++{ ++ return $? ++} ++as_nop=as_fn_nop + + # as_fn_error STATUS ERROR [LINENO LOG_FD] + # ---------------------------------------- +@@ -421,9 +441,9 @@ as_fn_error () + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi +- $as_echo "$as_me: error: $2" >&2 ++ printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status + } # as_fn_error + +@@ -450,7 +470,7 @@ as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X/"$0" | ++printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q +@@ -494,7 +514,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || +- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } ++ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall +@@ -508,6 +528,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits + exit + } + ++ ++# Determine whether it's possible to make 'echo' print without a newline. ++# These variables are no longer used directly by Autoconf, but are AC_SUBSTed ++# for compatibility with existing Makefiles. + ECHO_C= ECHO_N= ECHO_T= + case `echo -n x` in #((((( + -n*) +@@ -521,6 +545,13 @@ case `echo -n x` in #((((( + ECHO_N='-n';; + esac + ++# For backward compatibility with old third-party macros, we provide ++# the shell variables $as_echo and $as_echo_n. New code should use ++# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. ++as_echo='printf %s\n' ++as_echo_n='printf %s' ++ ++ + rm -f conf$$ conf$$.exe conf$$.file + if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +@@ -590,47 +621,43 @@ MAKEFLAGS= + # Identity of this package. + PACKAGE_NAME='libffi' + PACKAGE_TARNAME='libffi' +-PACKAGE_VERSION='3.4.2' +-PACKAGE_STRING='libffi 3.4.2' ++PACKAGE_VERSION='3.4.4' ++PACKAGE_STRING='libffi 3.4.4' + PACKAGE_BUGREPORT='http://github.com/libffi/libffi/issues' + PACKAGE_URL='' + + # Factoring default headers for most tests. + ac_includes_default="\ +-#include +-#ifdef HAVE_SYS_TYPES_H +-# include ++#include ++#ifdef HAVE_STDIO_H ++# include + #endif +-#ifdef HAVE_SYS_STAT_H +-# include +-#endif +-#ifdef STDC_HEADERS ++#ifdef HAVE_STDLIB_H + # include +-# include +-#else +-# ifdef HAVE_STDLIB_H +-# include +-# endif + #endif + #ifdef HAVE_STRING_H +-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +-# include +-# endif + # include + #endif +-#ifdef HAVE_STRINGS_H +-# include +-#endif + #ifdef HAVE_INTTYPES_H + # include + #endif + #ifdef HAVE_STDINT_H + # include + #endif ++#ifdef HAVE_STRINGS_H ++# include ++#endif ++#ifdef HAVE_SYS_TYPES_H ++# include ++#endif ++#ifdef HAVE_SYS_STAT_H ++# include ++#endif + #ifdef HAVE_UNISTD_H + # include + #endif" + ++ac_header_c_list= + ac_subst_vars='am__EXEEXT_FALSE + am__EXEEXT_TRUE + LTLIBOBJS +@@ -643,6 +670,7 @@ LIBFFI_BUILD_VERSIONED_SHLIB_FALSE + LIBFFI_BUILD_VERSIONED_SHLIB_TRUE + OPT_LDFLAGS + SECTION_LDFLAGS ++tmake_file + toolexeclibdir + toolexecdir + FFI_DEBUG_FALSE +@@ -669,7 +697,6 @@ MAINTAINER_MODE_TRUE + PRTDIAG + READELF + CXXCPP +-CPP + LT_SYS_LIBRARY_PATH + OTOOL64 + OTOOL +@@ -682,16 +709,17 @@ ac_ct_AR + AR + DLLTOOL + OBJDUMP ++FILECMD + LN_S + NM + ac_ct_DUMPBIN + DUMPBIN + LD + FGREP +-EGREP +-GREP + SED + LIBTOOL ++EGREP ++GREP + am__fastdepCCAS_FALSE + am__fastdepCCAS_TRUE + CCASDEPMODE +@@ -723,6 +751,9 @@ AM_BACKSLASH + AM_DEFAULT_VERBOSITY + AM_DEFAULT_V + AM_V ++CSCOPE ++ETAGS ++CTAGS + am__untar + am__tar + AMTAR +@@ -832,9 +863,8 @@ target_alias + CCAS + CCASFLAGS + LT_SYS_LIBRARY_PATH +-CPP +-CPPFLAGS +-CXXCPP' ++CXXCPP ++CPPFLAGS' + + + # Initialize some variables set by options. +@@ -903,8 +933,6 @@ do + *) ac_optarg=yes ;; + esac + +- # Accept the important Cygnus configure options, so we can diagnose typos. +- + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; +@@ -945,9 +973,9 @@ do + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- as_fn_error $? "invalid feature name: $ac_useropt" ++ as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt +- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" + "enable_$ac_useropt" +@@ -971,9 +999,9 @@ do + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- as_fn_error $? "invalid feature name: $ac_useropt" ++ as_fn_error $? "invalid feature name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt +- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" + "enable_$ac_useropt" +@@ -1184,9 +1212,9 @@ do + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- as_fn_error $? "invalid package name: $ac_useropt" ++ as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt +- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" + "with_$ac_useropt" +@@ -1200,9 +1228,9 @@ do + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +- as_fn_error $? "invalid package name: $ac_useropt" ++ as_fn_error $? "invalid package name: \`$ac_useropt'" + ac_useropt_orig=$ac_useropt +- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" + "with_$ac_useropt" +@@ -1246,9 +1274,9 @@ Try \`$0 --help' for more information" + + *) + # FIXME: should be removed in autoconf 3.0. +- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 ++ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && +- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 ++ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + +@@ -1264,7 +1292,7 @@ if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; +- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; ++ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac + fi + +@@ -1328,7 +1356,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X"$as_myself" | ++printf "%s\n" X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q +@@ -1385,7 +1413,7 @@ if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +-\`configure' configures libffi 3.4.2 to adapt to many kinds of systems. ++\`configure' configures libffi 3.4.4 to adapt to many kinds of systems. + + Usage: $0 [OPTION]... [VAR=VALUE]... + +@@ -1457,7 +1485,7 @@ fi + + if test -n "$ac_init_help"; then + case $ac_init_help in +- short | recursive ) echo "Configuration of libffi 3.4.2:";; ++ short | recursive ) echo "Configuration of libffi 3.4.4:";; + esac + cat <<\_ACEOF + +@@ -1484,7 +1512,7 @@ Optional Features: + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer +- --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC ++ --enable-pax_emutramp enable pax emulated trampolines (experimental) + --disable-docs Disable building of docs (default: no) + --enable-debug debugging mode + --disable-structs omit code for struct support +@@ -1524,7 +1552,6 @@ Some influential environment variables: + CCASFLAGS assembler compiler flags (defaults to CFLAGS) + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. +- CPP C preprocessor + CXXCPP C++ preprocessor + + Use these variables to override the choices made by `configure' or to help +@@ -1546,9 +1573,9 @@ if test "$ac_init_help" = "recursive"; then + case "$ac_dir" in + .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) +- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` ++ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. +- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` ++ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; +@@ -1576,7 +1603,8 @@ esac + ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } +- # Check for guested configure. ++ # Check for configure.gnu first; this name is used for a wrapper for ++ # Metaconfig's "Configure" on case-insensitive file systems. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive +@@ -1584,7 +1612,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else +- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 ++ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +@@ -1593,10 +1621,10 @@ fi + test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF +-libffi configure 3.4.2 +-generated by GNU Autoconf 2.69 ++libffi configure 3.4.4 ++generated by GNU Autoconf 2.71 + +-Copyright (C) 2012 Free Software Foundation, Inc. ++Copyright (C) 2021 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. + _ACEOF +@@ -1613,14 +1641,14 @@ fi + ac_fn_c_try_compile () + { + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- rm -f conftest.$ac_objext ++ rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then +@@ -1628,14 +1656,15 @@ $as_echo "$ac_try_echo"; } >&5 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err +- } && test -s conftest.$ac_objext; then : ++ } && test -s conftest.$ac_objext ++then : + ac_retval=0 +-else +- $as_echo "$as_me: failed program was:" >&5 ++else $as_nop ++ printf "%s\n" "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +@@ -1651,14 +1680,14 @@ fi + ac_fn_cxx_try_compile () + { + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- rm -f conftest.$ac_objext ++ rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then +@@ -1666,14 +1695,15 @@ $as_echo "$ac_try_echo"; } >&5 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err +- } && test -s conftest.$ac_objext; then : ++ } && test -s conftest.$ac_objext ++then : + ac_retval=0 +-else +- $as_echo "$as_me: failed program was:" >&5 ++else $as_nop ++ printf "%s\n" "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +@@ -1689,14 +1719,14 @@ fi + ac_fn_c_try_link () + { + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- rm -f conftest.$ac_objext conftest$ac_exeext ++ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then +@@ -1704,17 +1734,18 @@ $as_echo "$ac_try_echo"; } >&5 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext +- }; then : ++ } ++then : + ac_retval=0 +-else +- $as_echo "$as_me: failed program was:" >&5 ++else $as_nop ++ printf "%s\n" "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +@@ -1736,120 +1767,44 @@ fi + ac_fn_c_check_header_compile () + { + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +-$as_echo_n "checking for $2... " >&6; } +-if eval \${$3+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++printf %s "checking for $2... " >&6; } ++if eval test \${$3+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $4 + #include <$2> + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + eval "$3=yes" +-else ++else $as_nop + eval "$3=no" + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + eval ac_res=\$$3 +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + + } # ac_fn_c_check_header_compile + +-# ac_fn_c_try_cpp LINENO +-# ---------------------- +-# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +-ac_fn_c_try_cpp () +-{ +- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- if { { ac_try="$ac_cpp conftest.$ac_ext" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 +- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err +- ac_status=$? +- if test -s conftest.err; then +- grep -v '^ *+' conftest.err >conftest.er1 +- cat conftest.er1 >&5 +- mv -f conftest.er1 conftest.err +- fi +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +- test $ac_status = 0; } > conftest.i && { +- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +- test ! -s conftest.err +- }; then : +- ac_retval=0 +-else +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_retval=1 +-fi +- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +- as_fn_set_status $ac_retval +- +-} # ac_fn_c_try_cpp +- +-# ac_fn_c_try_run LINENO +-# ---------------------- +-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +-# that executables *can* be run. +-ac_fn_c_try_run () +-{ +- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- if { { ac_try="$ac_link" +-case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 +- (eval "$ac_link") 2>&5 +- ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' +- { { case "(($ac_try" in +- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +- *) ac_try_echo=$ac_try;; +-esac +-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 +- (eval "$ac_try") 2>&5 +- ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +- test $ac_status = 0; }; }; then : +- ac_retval=0 +-else +- $as_echo "$as_me: program exited with status $ac_status" >&5 +- $as_echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +- ac_retval=$ac_status +-fi +- rm -rf conftest.dSYM conftest_ipa8_conftest.oo +- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +- as_fn_set_status $ac_retval +- +-} # ac_fn_c_try_run +- + # ac_fn_c_check_func LINENO FUNC VAR + # ---------------------------------- + # Tests whether FUNC exists, setting the cache variable VAR accordingly + ac_fn_c_check_func () + { + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +-$as_echo_n "checking for $2... " >&6; } +-if eval \${$3+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++printf %s "checking for $2... " >&6; } ++if eval test \${$3+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + /* Define $2 to an innocuous variant, in case declares $2. +@@ -1857,16 +1812,9 @@ else + #define $2 innocuous_$2 + + /* System header to define __stub macros and hopefully few prototypes, +- which can conflict with char $2 (); below. +- Prefer to if __STDC__ is defined, since +- exists even on freestanding compilers. */ +- +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++ which can conflict with char $2 (); below. */ + ++#include + #undef $2 + + /* Override any GCC internal prototype to avoid an error. +@@ -1884,24 +1832,25 @@ choke me + #endif + + int +-main () ++main (void) + { + return $2 (); + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + eval "$3=yes" +-else ++else $as_nop + eval "$3=no" + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi + eval ac_res=\$$3 +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + + } # ac_fn_c_check_func +@@ -1918,7 +1867,7 @@ case "(($ac_try" in + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then +@@ -1926,14 +1875,15 @@ $as_echo "$ac_try_echo"; } >&5 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err +- }; then : ++ } ++then : + ac_retval=0 +-else +- $as_echo "$as_me: failed program was:" >&5 ++else $as_nop ++ printf "%s\n" "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +@@ -1949,14 +1899,14 @@ fi + ac_fn_cxx_try_link () + { + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- rm -f conftest.$ac_objext conftest$ac_exeext ++ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + if { { ac_try="$ac_link" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then +@@ -1964,17 +1914,18 @@ $as_echo "$ac_try_echo"; } >&5 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext +- }; then : ++ } ++then : + ac_retval=0 +-else +- $as_echo "$as_me: failed program was:" >&5 ++else $as_nop ++ printf "%s\n" "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +@@ -1989,6 +1940,49 @@ fi + + } # ac_fn_cxx_try_link + ++# ac_fn_c_try_run LINENO ++# ---------------------- ++# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that ++# executables *can* be run. ++ac_fn_c_try_run () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++printf "%s\n" "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' ++ { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++printf "%s\n" "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; } ++then : ++ ac_retval=0 ++else $as_nop ++ printf "%s\n" "$as_me: program exited with status $ac_status" >&5 ++ printf "%s\n" "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=$ac_status ++fi ++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_run ++ + # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES + # -------------------------------------------- + # Tries to find the compile-time value of EXPR in a program that includes +@@ -2003,7 +1997,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $4 + int +-main () ++main (void) + { + static int test_array [1 - 2 * !(($2) >= 0)]; + test_array [0] = 0; +@@ -2013,14 +2007,15 @@ return test_array [0]; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $4 + int +-main () ++main (void) + { + static int test_array [1 - 2 * !(($2) <= $ac_mid)]; + test_array [0] = 0; +@@ -2030,9 +2025,10 @@ return test_array [0]; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_hi=$ac_mid; break +-else ++else $as_nop + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= +@@ -2040,14 +2036,14 @@ else + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done +-else ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $4 + int +-main () ++main (void) + { + static int test_array [1 - 2 * !(($2) < 0)]; + test_array [0] = 0; +@@ -2057,14 +2053,15 @@ return test_array [0]; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $4 + int +-main () ++main (void) + { + static int test_array [1 - 2 * !(($2) >= $ac_mid)]; + test_array [0] = 0; +@@ -2074,9 +2071,10 @@ return test_array [0]; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_lo=$ac_mid; break +-else ++else $as_nop + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= +@@ -2084,14 +2082,14 @@ else + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done +-else ++else $as_nop + ac_lo= ac_hi= + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + # Binary search between lo and hi bounds. + while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val +@@ -2099,7 +2097,7 @@ while test "x$ac_lo" != "x$ac_hi"; do + /* end confdefs.h. */ + $4 + int +-main () ++main (void) + { + static int test_array [1 - 2 * !(($2) <= $ac_mid)]; + test_array [0] = 0; +@@ -2109,12 +2107,13 @@ return test_array [0]; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_hi=$ac_mid +-else ++else $as_nop + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + case $ac_lo in #(( + ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +@@ -2124,12 +2123,12 @@ esac + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $4 +-static long int longval () { return $2; } +-static unsigned long int ulongval () { return $2; } ++static long int longval (void) { return $2; } ++static unsigned long int ulongval (void) { return $2; } + #include + #include + int +-main () ++main (void) + { + + FILE *f = fopen ("conftest.val", "w"); +@@ -2157,9 +2156,10 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_run "$LINENO" ++then : + echo >>conftest.val; read $3 &5 +-$as_echo_n "checking for $2... " >&6; } +-if eval \${$3+:} false; then : +- $as_echo_n "(cached) " >&6 +-fi +-eval ac_res=\$$3 +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-else +- # Is the header compilable? +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +-$as_echo_n "checking $2 usability... " >&6; } +-cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-$4 +-#include <$2> +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- ac_header_compiler=yes +-else +- ac_header_compiler=no +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +-$as_echo "$ac_header_compiler" >&6; } +- +-# Is the header present? +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +-$as_echo_n "checking $2 presence... " >&6; } +-cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include <$2> +-_ACEOF +-if ac_fn_c_try_cpp "$LINENO"; then : +- ac_header_preproc=yes +-else +- ac_header_preproc=no +-fi +-rm -f conftest.err conftest.i conftest.$ac_ext +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +-$as_echo "$ac_header_preproc" >&6; } +- +-# So? What about this header? +-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( +- yes:no: ) +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +- ;; +- no:yes:* ) +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +-( $as_echo "## ----------------------------------------------------- ## +-## Report this to http://github.com/libffi/libffi/issues ## +-## ----------------------------------------------------- ##" +- ) | sed "s/^/$as_me: WARNING: /" >&2 +- ;; +-esac +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +-$as_echo_n "checking for $2... " >&6; } +-if eval \${$3+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- eval "$3=\$ac_header_compiler" +-fi +-eval ac_res=\$$3 +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-fi +- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +- +-} # ac_fn_c_check_header_mongrel +- + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES + # ------------------------------------------- + # Tests whether TYPE exists after having included INCLUDES, setting cache +@@ -2270,17 +2179,18 @@ fi + ac_fn_c_check_type () + { + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +-$as_echo_n "checking for $2... " >&6; } +-if eval \${$3+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++printf %s "checking for $2... " >&6; } ++if eval test \${$3+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $4 + int +-main () ++main (void) + { + if (sizeof ($2)) + return 0; +@@ -2288,12 +2198,13 @@ if (sizeof ($2)) + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $4 + int +-main () ++main (void) + { + if (sizeof (($2))) + return 0; +@@ -2301,29 +2212,50 @@ if (sizeof (($2))) + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + +-else ++else $as_nop + eval "$3=yes" + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + eval ac_res=\$$3 +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + + } # ac_fn_c_check_type ++ac_configure_args_raw= ++for ac_arg ++do ++ case $ac_arg in ++ *\'*) ++ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ as_fn_append ac_configure_args_raw " '$ac_arg'" ++done ++ ++case $ac_configure_args_raw in ++ *$as_nl*) ++ ac_safe_unquote= ;; ++ *) ++ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ++ ac_unsafe_a="$ac_unsafe_z#~" ++ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ++ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; ++esac ++ + cat >config.log <<_ACEOF + This file contains any messages produced by compilers while + running configure, to aid debugging if configure makes a mistake. + +-It was created by libffi $as_me 3.4.2, which was +-generated by GNU Autoconf 2.69. Invocation command line was ++It was created by libffi $as_me 3.4.4, which was ++generated by GNU Autoconf 2.71. Invocation command line was + +- $ $0 $@ ++ $ $0$ac_configure_args_raw + + _ACEOF + exec 5>>config.log +@@ -2356,8 +2288,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- $as_echo "PATH: $as_dir" ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ printf "%s\n" "PATH: $as_dir" + done + IFS=$as_save_IFS + +@@ -2392,7 +2328,7 @@ do + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) +- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; +@@ -2427,11 +2363,13 @@ done + # WARNING: Use '\'' to represent an apostrophe within the trap. + # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. + trap 'exit_status=$? ++ # Sanitize IFS. ++ IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + +- $as_echo "## ---------------- ## ++ printf "%s\n" "## ---------------- ## + ## Cache variables. ## + ## ---------------- ##" + echo +@@ -2442,8 +2380,8 @@ trap 'exit_status=$? + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( +- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ++ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 ++printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( +@@ -2467,7 +2405,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + ) + echo + +- $as_echo "## ----------------- ## ++ printf "%s\n" "## ----------------- ## + ## Output variables. ## + ## ----------------- ##" + echo +@@ -2475,14 +2413,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + do + eval ac_val=\$$ac_var + case $ac_val in +- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac +- $as_echo "$ac_var='\''$ac_val'\''" ++ printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then +- $as_echo "## ------------------- ## ++ printf "%s\n" "## ------------------- ## + ## File substitutions. ## + ## ------------------- ##" + echo +@@ -2490,15 +2428,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + do + eval ac_val=\$$ac_var + case $ac_val in +- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac +- $as_echo "$ac_var='\''$ac_val'\''" ++ printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then +- $as_echo "## ----------- ## ++ printf "%s\n" "## ----------- ## + ## confdefs.h. ## + ## ----------- ##" + echo +@@ -2506,8 +2444,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + echo + fi + test "$ac_signal" != 0 && +- $as_echo "$as_me: caught signal $ac_signal" +- $as_echo "$as_me: exit $exit_status" ++ printf "%s\n" "$as_me: caught signal $ac_signal" ++ printf "%s\n" "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && +@@ -2521,63 +2459,48 @@ ac_signal=0 + # confdefs.h avoids OS command line length limits that DEFS can exceed. + rm -f -r conftest* confdefs.h + +-$as_echo "/* confdefs.h */" > confdefs.h ++printf "%s\n" "/* confdefs.h */" > confdefs.h + + # Predefined preprocessor variables. + +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_NAME "$PACKAGE_NAME" +-_ACEOF ++printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +-_ACEOF ++printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_VERSION "$PACKAGE_VERSION" +-_ACEOF ++printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_STRING "$PACKAGE_STRING" +-_ACEOF ++printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +-_ACEOF ++printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE_URL "$PACKAGE_URL" +-_ACEOF ++printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + + # Let the site file select an alternate cache file if it wants to. + # Prefer an explicitly selected file to automatically selected ones. +-ac_site_file1=NONE +-ac_site_file2=NONE + if test -n "$CONFIG_SITE"; then +- # We do not want a PATH search for config.site. +- case $CONFIG_SITE in #(( +- -*) ac_site_file1=./$CONFIG_SITE;; +- */*) ac_site_file1=$CONFIG_SITE;; +- *) ac_site_file1=./$CONFIG_SITE;; +- esac ++ ac_site_files="$CONFIG_SITE" + elif test "x$prefix" != xNONE; then +- ac_site_file1=$prefix/share/config.site +- ac_site_file2=$prefix/etc/config.site ++ ac_site_files="$prefix/share/config.site $prefix/etc/config.site" + else +- ac_site_file1=$ac_default_prefix/share/config.site +- ac_site_file2=$ac_default_prefix/etc/config.site ++ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +-for ac_site_file in "$ac_site_file1" "$ac_site_file2" ++ ++for ac_site_file in $ac_site_files + do +- test "x$ac_site_file" = xNONE && continue +- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +-$as_echo "$as_me: loading site script $ac_site_file" >&6;} ++ case $ac_site_file in #( ++ */*) : ++ ;; #( ++ *) : ++ ac_site_file=./$ac_site_file ;; ++esac ++ if test -f "$ac_site_file" && test -r "$ac_site_file"; then ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 ++printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ +- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error $? "failed to load site script $ac_site_file + See \`config.log' for more details" "$LINENO" 5; } + fi +@@ -2587,35 +2510,666 @@ if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +-$as_echo "$as_me: loading cache $cache_file" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 ++printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +-$as_echo "$as_me: creating cache $cache_file" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 ++printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file + fi + +-# Check that the precious variables saved in the cache have kept the same +-# value. +-ac_cache_corrupted=false +-for ac_var in $ac_precious_vars; do +- eval ac_old_set=\$ac_cv_env_${ac_var}_set ++# Test code for whether the C compiler supports C89 (global declarations) ++ac_c_conftest_c89_globals=' ++/* Does the compiler advertise C89 conformance? ++ Do not test the value of __STDC__, because some compilers set it to 0 ++ while being otherwise adequately conformant. */ ++#if !defined __STDC__ ++# error "Compiler does not advertise C89 conformance" ++#endif ++ ++#include ++#include ++struct stat; ++/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ ++struct buf { int x; }; ++struct buf * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not \xHH hex character constants. ++ These do not provoke an error unfortunately, instead are silently treated ++ as an "x". The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously \x00 != x always comes out true, for an ++ array size at least. It is necessary to write \x00 == 0 to get something ++ that is true only with -std. */ ++int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) '\''x'\'' ++int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), ++ int, int);' ++ ++# Test code for whether the C compiler supports C89 (body of main). ++ac_c_conftest_c89_main=' ++ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); ++' ++ ++# Test code for whether the C compiler supports C99 (global declarations) ++ac_c_conftest_c99_globals=' ++// Does the compiler advertise C99 conformance? ++#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L ++# error "Compiler does not advertise C99 conformance" ++#endif ++ ++#include ++extern int puts (const char *); ++extern int printf (const char *, ...); ++extern int dprintf (int, const char *, ...); ++extern void *malloc (size_t); ++ ++// Check varargs macros. These examples are taken from C99 6.10.3.5. ++// dprintf is used instead of fprintf to avoid needing to declare ++// FILE and stderr. ++#define debug(...) dprintf (2, __VA_ARGS__) ++#define showlist(...) puts (#__VA_ARGS__) ++#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) ++static void ++test_varargs_macros (void) ++{ ++ int x = 1234; ++ int y = 5678; ++ debug ("Flag"); ++ debug ("X = %d\n", x); ++ showlist (The first, second, and third items.); ++ report (x>y, "x is %d but y is %d", x, y); ++} ++ ++// Check long long types. ++#define BIG64 18446744073709551615ull ++#define BIG32 4294967295ul ++#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) ++#if !BIG_OK ++ #error "your preprocessor is broken" ++#endif ++#if BIG_OK ++#else ++ #error "your preprocessor is broken" ++#endif ++static long long int bignum = -9223372036854775807LL; ++static unsigned long long int ubignum = BIG64; ++ ++struct incomplete_array ++{ ++ int datasize; ++ double data[]; ++}; ++ ++struct named_init { ++ int number; ++ const wchar_t *name; ++ double average; ++}; ++ ++typedef const char *ccp; ++ ++static inline int ++test_restrict (ccp restrict text) ++{ ++ // See if C++-style comments work. ++ // Iterate through items via the restricted pointer. ++ // Also check for declarations in for loops. ++ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) ++ continue; ++ return 0; ++} ++ ++// Check varargs and va_copy. ++static bool ++test_varargs (const char *format, ...) ++{ ++ va_list args; ++ va_start (args, format); ++ va_list args_copy; ++ va_copy (args_copy, args); ++ ++ const char *str = ""; ++ int number = 0; ++ float fnumber = 0; ++ ++ while (*format) ++ { ++ switch (*format++) ++ { ++ case '\''s'\'': // string ++ str = va_arg (args_copy, const char *); ++ break; ++ case '\''d'\'': // int ++ number = va_arg (args_copy, int); ++ break; ++ case '\''f'\'': // float ++ fnumber = va_arg (args_copy, double); ++ break; ++ default: ++ break; ++ } ++ } ++ va_end (args_copy); ++ va_end (args); ++ ++ return *str && number && fnumber; ++} ++' ++ ++# Test code for whether the C compiler supports C99 (body of main). ++ac_c_conftest_c99_main=' ++ // Check bool. ++ _Bool success = false; ++ success |= (argc != 0); ++ ++ // Check restrict. ++ if (test_restrict ("String literal") == 0) ++ success = true; ++ char *restrict newvar = "Another string"; ++ ++ // Check varargs. ++ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); ++ test_varargs_macros (); ++ ++ // Check flexible array members. ++ struct incomplete_array *ia = ++ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ++ ia->datasize = 10; ++ for (int i = 0; i < ia->datasize; ++i) ++ ia->data[i] = i * 1.234; ++ ++ // Check named initializers. ++ struct named_init ni = { ++ .number = 34, ++ .name = L"Test wide string", ++ .average = 543.34343, ++ }; ++ ++ ni.number = 58; ++ ++ int dynamic_array[ni.number]; ++ dynamic_array[0] = argv[0][0]; ++ dynamic_array[ni.number - 1] = 543; ++ ++ // work around unused variable warnings ++ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' ++ || dynamic_array[ni.number - 1] != 543); ++' ++ ++# Test code for whether the C compiler supports C11 (global declarations) ++ac_c_conftest_c11_globals=' ++// Does the compiler advertise C11 conformance? ++#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L ++# error "Compiler does not advertise C11 conformance" ++#endif ++ ++// Check _Alignas. ++char _Alignas (double) aligned_as_double; ++char _Alignas (0) no_special_alignment; ++extern char aligned_as_int; ++char _Alignas (0) _Alignas (int) aligned_as_int; ++ ++// Check _Alignof. ++enum ++{ ++ int_alignment = _Alignof (int), ++ int_array_alignment = _Alignof (int[100]), ++ char_alignment = _Alignof (char) ++}; ++_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); ++ ++// Check _Noreturn. ++int _Noreturn does_not_return (void) { for (;;) continue; } ++ ++// Check _Static_assert. ++struct test_static_assert ++{ ++ int x; ++ _Static_assert (sizeof (int) <= sizeof (long int), ++ "_Static_assert does not work in struct"); ++ long int y; ++}; ++ ++// Check UTF-8 literals. ++#define u8 syntax error! ++char const utf8_literal[] = u8"happens to be ASCII" "another string"; ++ ++// Check duplicate typedefs. ++typedef long *long_ptr; ++typedef long int *long_ptr; ++typedef long_ptr long_ptr; ++ ++// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. ++struct anonymous ++{ ++ union { ++ struct { int i; int j; }; ++ struct { int k; long int l; } w; ++ }; ++ int m; ++} v1; ++' ++ ++# Test code for whether the C compiler supports C11 (body of main). ++ac_c_conftest_c11_main=' ++ _Static_assert ((offsetof (struct anonymous, i) ++ == offsetof (struct anonymous, w.k)), ++ "Anonymous union alignment botch"); ++ v1.i = 2; ++ v1.w.k = 5; ++ ok |= v1.i != 5; ++' ++ ++# Test code for whether the C compiler supports C11 (complete). ++ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} ++${ac_c_conftest_c99_globals} ++${ac_c_conftest_c11_globals} ++ ++int ++main (int argc, char **argv) ++{ ++ int ok = 0; ++ ${ac_c_conftest_c89_main} ++ ${ac_c_conftest_c99_main} ++ ${ac_c_conftest_c11_main} ++ return ok; ++} ++" ++ ++# Test code for whether the C compiler supports C99 (complete). ++ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} ++${ac_c_conftest_c99_globals} ++ ++int ++main (int argc, char **argv) ++{ ++ int ok = 0; ++ ${ac_c_conftest_c89_main} ++ ${ac_c_conftest_c99_main} ++ return ok; ++} ++" ++ ++# Test code for whether the C compiler supports C89 (complete). ++ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} ++ ++int ++main (int argc, char **argv) ++{ ++ int ok = 0; ++ ${ac_c_conftest_c89_main} ++ return ok; ++} ++" ++ ++# Test code for whether the C++ compiler supports C++98 (global declarations) ++ac_cxx_conftest_cxx98_globals=' ++// Does the compiler advertise C++98 conformance? ++#if !defined __cplusplus || __cplusplus < 199711L ++# error "Compiler does not advertise C++98 conformance" ++#endif ++ ++// These inclusions are to reject old compilers that ++// lack the unsuffixed header files. ++#include ++#include ++ ++// and are *not* freestanding headers in C++98. ++extern void assert (int); ++namespace std { ++ extern int strcmp (const char *, const char *); ++} ++ ++// Namespaces, exceptions, and templates were all added after "C++ 2.0". ++using std::exception; ++using std::strcmp; ++ ++namespace { ++ ++void test_exception_syntax() ++{ ++ try { ++ throw "test"; ++ } catch (const char *s) { ++ // Extra parentheses suppress a warning when building autoconf itself, ++ // due to lint rules shared with more typical C programs. ++ assert (!(strcmp) (s, "test")); ++ } ++} ++ ++template struct test_template ++{ ++ T const val; ++ explicit test_template(T t) : val(t) {} ++ template T add(U u) { return static_cast(u) + val; } ++}; ++ ++} // anonymous namespace ++' ++ ++# Test code for whether the C++ compiler supports C++98 (body of main) ++ac_cxx_conftest_cxx98_main=' ++ assert (argc); ++ assert (! argv[0]); ++{ ++ test_exception_syntax (); ++ test_template tt (2.0); ++ assert (tt.add (4) == 6.0); ++ assert (true && !false); ++} ++' ++ ++# Test code for whether the C++ compiler supports C++11 (global declarations) ++ac_cxx_conftest_cxx11_globals=' ++// Does the compiler advertise C++ 2011 conformance? ++#if !defined __cplusplus || __cplusplus < 201103L ++# error "Compiler does not advertise C++11 conformance" ++#endif ++ ++namespace cxx11test ++{ ++ constexpr int get_val() { return 20; } ++ ++ struct testinit ++ { ++ int i; ++ double d; ++ }; ++ ++ class delegate ++ { ++ public: ++ delegate(int n) : n(n) {} ++ delegate(): delegate(2354) {} ++ ++ virtual int getval() { return this->n; }; ++ protected: ++ int n; ++ }; ++ ++ class overridden : public delegate ++ { ++ public: ++ overridden(int n): delegate(n) {} ++ virtual int getval() override final { return this->n * 2; } ++ }; ++ ++ class nocopy ++ { ++ public: ++ nocopy(int i): i(i) {} ++ nocopy() = default; ++ nocopy(const nocopy&) = delete; ++ nocopy & operator=(const nocopy&) = delete; ++ private: ++ int i; ++ }; ++ ++ // for testing lambda expressions ++ template Ret eval(Fn f, Ret v) ++ { ++ return f(v); ++ } ++ ++ // for testing variadic templates and trailing return types ++ template auto sum(V first) -> V ++ { ++ return first; ++ } ++ template auto sum(V first, Args... rest) -> V ++ { ++ return first + sum(rest...); ++ } ++} ++' ++ ++# Test code for whether the C++ compiler supports C++11 (body of main) ++ac_cxx_conftest_cxx11_main=' ++{ ++ // Test auto and decltype ++ auto a1 = 6538; ++ auto a2 = 48573953.4; ++ auto a3 = "String literal"; ++ ++ int total = 0; ++ for (auto i = a3; *i; ++i) { total += *i; } ++ ++ decltype(a2) a4 = 34895.034; ++} ++{ ++ // Test constexpr ++ short sa[cxx11test::get_val()] = { 0 }; ++} ++{ ++ // Test initializer lists ++ cxx11test::testinit il = { 4323, 435234.23544 }; ++} ++{ ++ // Test range-based for ++ int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, ++ 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; ++ for (auto &x : array) { x += 23; } ++} ++{ ++ // Test lambda expressions ++ using cxx11test::eval; ++ assert (eval ([](int x) { return x*2; }, 21) == 42); ++ double d = 2.0; ++ assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); ++ assert (d == 5.0); ++ assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); ++ assert (d == 5.0); ++} ++{ ++ // Test use of variadic templates ++ using cxx11test::sum; ++ auto a = sum(1); ++ auto b = sum(1, 2); ++ auto c = sum(1.0, 2.0, 3.0); ++} ++{ ++ // Test constructor delegation ++ cxx11test::delegate d1; ++ cxx11test::delegate d2(); ++ cxx11test::delegate d3(45); ++} ++{ ++ // Test override and final ++ cxx11test::overridden o1(55464); ++} ++{ ++ // Test nullptr ++ char *c = nullptr; ++} ++{ ++ // Test template brackets ++ test_template<::test_template> v(test_template(12)); ++} ++{ ++ // Unicode literals ++ char const *utf8 = u8"UTF-8 string \u2500"; ++ char16_t const *utf16 = u"UTF-8 string \u2500"; ++ char32_t const *utf32 = U"UTF-32 string \u2500"; ++} ++' ++ ++# Test code for whether the C compiler supports C++11 (complete). ++ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ++${ac_cxx_conftest_cxx11_globals} ++ ++int ++main (int argc, char **argv) ++{ ++ int ok = 0; ++ ${ac_cxx_conftest_cxx98_main} ++ ${ac_cxx_conftest_cxx11_main} ++ return ok; ++} ++" ++ ++# Test code for whether the C compiler supports C++98 (complete). ++ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} ++int ++main (int argc, char **argv) ++{ ++ int ok = 0; ++ ${ac_cxx_conftest_cxx98_main} ++ return ok; ++} ++" ++ ++as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" ++as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" ++as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" ++as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" ++as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" ++as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" ++as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" ++as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" ++as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" ++ ++# Auxiliary files required by this configure script. ++ac_aux_files="ltmain.sh compile missing install-sh config.guess config.sub" ++ ++# Locations in which to look for auxiliary files. ++ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." ++ ++# Search for a directory containing all of the required auxiliary files, ++# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. ++# If we don't find one directory that contains all the files we need, ++# we report the set of missing files from the *first* directory in ++# $ac_aux_dir_candidates and give up. ++ac_missing_aux_files="" ++ac_first_candidate=: ++printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++as_found=false ++for as_dir in $ac_aux_dir_candidates ++do ++ IFS=$as_save_IFS ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ as_found=: ++ ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ++ ac_aux_dir_found=yes ++ ac_install_sh= ++ for ac_aux in $ac_aux_files ++ do ++ # As a special case, if "install-sh" is required, that requirement ++ # can be satisfied by any of "install-sh", "install.sh", or "shtool", ++ # and $ac_install_sh is set appropriately for whichever one is found. ++ if test x"$ac_aux" = x"install-sh" ++ then ++ if test -f "${as_dir}install-sh"; then ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ++ ac_install_sh="${as_dir}install-sh -c" ++ elif test -f "${as_dir}install.sh"; then ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ++ ac_install_sh="${as_dir}install.sh -c" ++ elif test -f "${as_dir}shtool"; then ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ++ ac_install_sh="${as_dir}shtool install -c" ++ else ++ ac_aux_dir_found=no ++ if $ac_first_candidate; then ++ ac_missing_aux_files="${ac_missing_aux_files} install-sh" ++ else ++ break ++ fi ++ fi ++ else ++ if test -f "${as_dir}${ac_aux}"; then ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 ++ else ++ ac_aux_dir_found=no ++ if $ac_first_candidate; then ++ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" ++ else ++ break ++ fi ++ fi ++ fi ++ done ++ if test "$ac_aux_dir_found" = yes; then ++ ac_aux_dir="$as_dir" ++ break ++ fi ++ ac_first_candidate=false ++ ++ as_found=false ++done ++IFS=$as_save_IFS ++if $as_found ++then : ++ ++else $as_nop ++ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ++fi ++ ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++if test -f "${ac_aux_dir}config.guess"; then ++ ac_config_guess="$SHELL ${ac_aux_dir}config.guess" ++fi ++if test -f "${ac_aux_dir}config.sub"; then ++ ac_config_sub="$SHELL ${ac_aux_dir}config.sub" ++fi ++if test -f "$ac_aux_dir/configure"; then ++ ac_configure="$SHELL ${ac_aux_dir}configure" ++fi ++ ++# Check that the precious variables saved in the cache have kept the same ++# value. ++ac_cache_corrupted=false ++for ac_var in $ac_precious_vars; do ++ eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) +- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) +- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 ++printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) +@@ -2624,24 +3178,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 ++printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 ++printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi +- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 ++printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 ++printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in +@@ -2651,11 +3205,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi + done + if $ac_cache_corrupted; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} +- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 ++printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} ++ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' ++ and start over" "$LINENO" 5 + fi + ## -------------------- ## + ## Main body of script. ## +@@ -2671,55 +3226,30 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + ac_config_headers="$ac_config_headers fficonfig.h" + + +-ac_aux_dir= +-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do +- if test -f "$ac_dir/install-sh"; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install-sh -c" +- break +- elif test -f "$ac_dir/install.sh"; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/install.sh -c" +- break +- elif test -f "$ac_dir/shtool"; then +- ac_aux_dir=$ac_dir +- ac_install_sh="$ac_aux_dir/shtool install -c" +- break +- fi +-done +-if test -z "$ac_aux_dir"; then +- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +-fi + +-# These three variables are undocumented and unsupported, +-# and are intended to be withdrawn in a future Autoconf release. +-# They can cause serious problems if a builder's source tree is in a directory +-# whose full name contains unusual characters. +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +-# Make sure we can run config.sub. +-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || +- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 ++ # Make sure we can run config.sub. ++$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || ++ as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +-$as_echo_n "checking build system type... " >&6; } +-if ${ac_cv_build+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 ++printf %s "checking build system type... " >&6; } ++if test ${ac_cv_build+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_build_alias=$build_alias + test "x$ac_build_alias" = x && +- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` + test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || +- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 ++ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || ++ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +-$as_echo "$ac_cv_build" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 ++printf "%s\n" "$ac_cv_build" >&6; } + case $ac_cv_build in + *-*-*) ;; + *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +@@ -2738,21 +3268,22 @@ IFS=$ac_save_IFS + case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +-$as_echo_n "checking host system type... " >&6; } +-if ${ac_cv_host+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 ++printf %s "checking host system type... " >&6; } ++if test ${ac_cv_host+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build + else +- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || +- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 ++ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || ++ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +-$as_echo "$ac_cv_host" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 ++printf "%s\n" "$ac_cv_host" >&6; } + case $ac_cv_host in + *-*-*) ;; + *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +@@ -2771,21 +3302,22 @@ IFS=$ac_save_IFS + case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +-$as_echo_n "checking target system type... " >&6; } +-if ${ac_cv_target+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 ++printf %s "checking target system type... " >&6; } ++if test ${ac_cv_target+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host + else +- ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || +- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 ++ ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || ++ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +-$as_echo "$ac_cv_target" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 ++printf "%s\n" "$ac_cv_target" >&6; } + case $ac_cv_target in + *-*-*) ;; + *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +@@ -2810,7 +3342,6 @@ test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- +- + target_alias=${target_alias-$host_alias} + + case "${host}" in +@@ -2828,23 +3359,25 @@ esac + done + fi + ++ + # Expand $ac_aux_dir to an absolute path. + am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + ax_enable_builddir="." + # Check whether --enable-builddir was given. +-if test "${enable_builddir+set}" = set; then : ++if test ${enable_builddir+y} ++then : + enableval=$enable_builddir; ax_enable_builddir="$enableval" +-else ++else $as_nop + ax_enable_builddir="auto" + fi + + if test ".$ac_srcdir_defaulted" != ".no" ; then + if test ".$srcdir" = ".." ; then + if test -f config.status ; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5 +-$as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: toplevel srcdir already configured... skipping subdir build" >&5 ++printf "%s\n" "$as_me: toplevel srcdir already configured... skipping subdir build" >&6;} + else + test ".$ax_enable_builddir" = "." && ax_enable_builddir="." + test ".$ax_enable_builddir" = ".no" && ax_enable_builddir="." +@@ -2856,8 +3389,8 @@ $as_echo "$as_me: toplevel srcdir already configured... skipping subdir build" > + cd $ax_enable_builddir + if grep __.$ax_enable_builddir.__ conftest.tmp >/dev/null 2>/dev/null ; then + rm conftest.tmp +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5 +-$as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: continue configure in default builddir \"./$ax_enable_builddir\"" >&5 ++printf "%s\n" "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; } + else + as_fn_error $? "could not change to default builddir \"./$ax_enable_builddir\"" "$LINENO" 5 + fi +@@ -2868,8 +3401,8 @@ $as_echo "continue configure in default builddir \"./$ax_enable_builddir\"" >&6; + test -f $srcdir/confdefs.h && mv $srcdir/confdefs.h . + test -f $srcdir/conftest.log && mv $srcdir/conftest.log . + test -f $srcdir/$cache_file && mv $srcdir/$cache_file . +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5 +-$as_echo "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&5 ++printf "%s\n" "....exec $SHELL $srcdir/$0 \"--srcdir=$srcdir\" \"--enable-builddir=$ax_enable_builddir\" ${1+\"$@\"}" >&6; } + case "$0" in # restart + [\\/]* | ?:[\\/]*) # Absolute name + eval $SHELL "'$0'" "'--srcdir=$srcdir'" "'--enable-builddir=$ax_enable_builddir'" $ac_configure_args ;; +@@ -2881,11 +3414,12 @@ fi fi + test ".$ax_enable_builddir" = ".auto" && ax_enable_builddir="." + # Extract the first word of "gsed sed", so it can be a program name with args. + set dummy gsed sed; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_path_ax_enable_builddir_sed+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_path_ax_enable_builddir_sed+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + case $ax_enable_builddir_sed in + [\\/]* | ?:[\\/]*) + ac_cv_path_ax_enable_builddir_sed="$ax_enable_builddir_sed" # Let the user override the test with a path. +@@ -2895,11 +3429,15 @@ else + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_path_ax_enable_builddir_sed="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ++ ac_cv_path_ax_enable_builddir_sed="$as_dir$ac_word$ac_exec_ext" ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -2912,11 +3450,11 @@ esac + fi + ax_enable_builddir_sed=$ac_cv_path_ax_enable_builddir_sed + if test -n "$ax_enable_builddir_sed"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5 +-$as_echo "$ax_enable_builddir_sed" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_enable_builddir_sed" >&5 ++printf "%s\n" "$ax_enable_builddir_sed" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -2926,7 +3464,8 @@ ac_config_commands="$ac_config_commands buildir" + + am__api_version='1.16' + +-# Find a good install program. We prefer a C program (faster), ++ ++ # Find a good install program. We prefer a C program (faster), + # so one script is as good as another. But avoid the broken or + # incompatible versions: + # SysV /etc/install, /usr/sbin/install +@@ -2940,20 +3479,25 @@ am__api_version='1.16' + # OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. + # Reject install programs that cannot install multiple files. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +-$as_echo_n "checking for a BSD-compatible install... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 ++printf %s "checking for a BSD-compatible install... " >&6; } + if test -z "$INSTALL"; then +-if ${ac_cv_path_install+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++if test ${ac_cv_path_install+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- # Account for people who put trailing slashes in PATH elements. +-case $as_dir/ in #(( +- ./ | .// | /[cC]/* | \ ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ # Account for fact that we put trailing slashes in our PATH walk. ++case $as_dir in #(( ++ ./ | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; +@@ -2963,13 +3507,13 @@ case $as_dir/ in #(( + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && +- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && +- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else +@@ -2977,12 +3521,12 @@ case $as_dir/ in #(( + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir +- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && ++ if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then +- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" + break 3 + fi + fi +@@ -2998,7 +3542,7 @@ IFS=$as_save_IFS + rm -rf conftest.one conftest.two conftest.dir + + fi +- if test "${ac_cv_path_install+set}" = set; then ++ if test ${ac_cv_path_install+y}; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a +@@ -3008,8 +3552,8 @@ fi + INSTALL=$ac_install_sh + fi + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +-$as_echo "$INSTALL" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 ++printf "%s\n" "$INSTALL" >&6; } + + # Use test -z because SunOS4 sh mishandles braces in ${var-val}. + # It thinks the first close brace ends the variable substitution. +@@ -3019,8 +3563,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + + test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +-$as_echo_n "checking whether build environment is sane... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 ++printf %s "checking whether build environment is sane... " >&6; } + # Reject unsafe characters in $srcdir or the absolute working directory + # name. Accept space and tab only in the latter. + am_lf=' +@@ -3074,8 +3618,8 @@ else + as_fn_error $? "newly created file is older than distributed files! + Check your system clock" "$LINENO" 5 + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +-$as_echo "yes" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++printf "%s\n" "yes" >&6; } + # If we didn't sleep, we still need to ensure time stamps of config.status and + # generated files are strictly newer. + am_sleep_pid= +@@ -3094,23 +3638,19 @@ test "$program_suffix" != NONE && + # Double any \ or $. + # By default was `s,x,x', remove it if useless. + ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` ++program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + +-if test x"${MISSING+set}" != xset; then +- case $am_aux_dir in +- *\ * | *\ *) +- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; +- *) +- MISSING="\${SHELL} $am_aux_dir/missing" ;; +- esac ++ ++ if test x"${MISSING+set}" != xset; then ++ MISSING="\${SHELL} '$am_aux_dir/missing'" + fi + # Use eval to expand $SHELL + if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " + else + am_missing_run= +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 ++printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} + fi + + if test x"${install_sh+set}" != xset; then +@@ -3130,11 +3670,12 @@ if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. + set dummy ${ac_tool_prefix}strip; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_STRIP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_STRIP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. + else +@@ -3142,11 +3683,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -3157,11 +3702,11 @@ fi + fi + STRIP=$ac_cv_prog_STRIP + if test -n "$STRIP"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +-$as_echo "$STRIP" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 ++printf "%s\n" "$STRIP" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -3170,11 +3715,12 @@ if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_STRIP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_STRIP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. + else +@@ -3182,11 +3728,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -3197,11 +3747,11 @@ fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +-$as_echo "$ac_ct_STRIP" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 ++printf "%s\n" "$ac_ct_STRIP" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_STRIP" = x; then +@@ -3209,8 +3759,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + STRIP=$ac_ct_STRIP +@@ -3222,25 +3772,31 @@ fi + fi + INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } ++ ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 ++printf %s "checking for a race-free mkdir -p... " >&6; } + if test -z "$MKDIR_P"; then +- if ${ac_cv_path_mkdir+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ if test ${ac_cv_path_mkdir+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do +- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue +- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( +- 'mkdir (GNU coreutils) '* | \ +- 'mkdir (coreutils) '* | \ ++ as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue ++ case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( ++ 'mkdir ('*'coreutils) '* | \ ++ 'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) +- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext ++ ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done +@@ -3251,7 +3807,7 @@ IFS=$as_save_IFS + fi + + test -d ./--version && rmdir ./--version +- if test "${ac_cv_path_mkdir+set}" = set; then ++ if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a +@@ -3261,18 +3817,19 @@ fi + MKDIR_P="$ac_install_sh -d" + fi + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +-$as_echo "$MKDIR_P" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 ++printf "%s\n" "$MKDIR_P" >&6; } + + for ac_prog in gawk mawk nawk awk + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_AWK+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_AWK+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. + else +@@ -3280,11 +3837,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -3295,24 +3856,25 @@ fi + fi + AWK=$ac_cv_prog_AWK + if test -n "$AWK"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +-$as_echo "$AWK" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 ++printf "%s\n" "$AWK" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + + test -n "$AWK" && break + done + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } + set x ${MAKE-make} +-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if eval test \${ac_cv_prog_make_${ac_make}_set+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat >conftest.make <<\_ACEOF + SHELL = /bin/sh + all: +@@ -3328,12 +3890,12 @@ esac + rm -f conftest.make + fi + if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +-$as_echo "yes" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++printf "%s\n" "yes" >&6; } + SET_MAKE= + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" + fi + +@@ -3347,7 +3909,8 @@ fi + rmdir .tst 2>/dev/null + + # Check whether --enable-silent-rules was given. +-if test "${enable_silent_rules+set}" = set; then : ++if test ${enable_silent_rules+y} ++then : + enableval=$enable_silent_rules; + fi + +@@ -3357,12 +3920,13 @@ case $enable_silent_rules in # ((( + *) AM_DEFAULT_VERBOSITY=1;; + esac + am_make=${MAKE-make} +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +-$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +-if ${am_cv_make_support_nested_variables+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if $as_echo 'TRUE=$(BAR$(V)) ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 ++printf %s "checking whether $am_make supports nested variables... " >&6; } ++if test ${am_cv_make_support_nested_variables+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if printf "%s\n" 'TRUE=$(BAR$(V)) + BAR0=false + BAR1=true + V=1 +@@ -3374,8 +3938,8 @@ else + am_cv_make_support_nested_variables=no + fi + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +-$as_echo "$am_cv_make_support_nested_variables" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 ++printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } + if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +@@ -3407,17 +3971,13 @@ fi + + # Define the identity of the package. + PACKAGE='libffi' +- VERSION='3.4.2' ++ VERSION='3.4.4' + + +-cat >>confdefs.h <<_ACEOF +-#define PACKAGE "$PACKAGE" +-_ACEOF ++printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +-cat >>confdefs.h <<_ACEOF +-#define VERSION "$VERSION" +-_ACEOF ++printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h + + # Some tools Automake needs. + +@@ -3457,6 +4017,20 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + ++# Variables for tags utilities; see am/tags.am ++if test -z "$CTAGS"; then ++ CTAGS=ctags ++fi ++ ++if test -z "$ETAGS"; then ++ ETAGS=etags ++fi ++ ++if test -z "$CSCOPE"; then ++ CSCOPE=cscope ++fi ++ ++ + + # POSIX will say in a future version that running "rm -f" with no argument + # is OK; and we want to be able to make that assumption in our Makefile +@@ -3511,6 +4085,15 @@ fi + + + save_CFLAGS=$CFLAGS ++ ++ ++ ++ ++ ++ ++ ++ ++ + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -3519,11 +4102,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_CC+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_CC+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +@@ -3531,11 +4115,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -3546,11 +4134,11 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +-$as_echo "$CC" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++printf "%s\n" "$CC" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -3559,11 +4147,12 @@ if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_CC+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_CC+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + else +@@ -3571,11 +4160,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -3586,11 +4179,11 @@ fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +-$as_echo "$ac_ct_CC" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++printf "%s\n" "$ac_ct_CC" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_CC" = x; then +@@ -3598,8 +4191,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + CC=$ac_ct_CC +@@ -3612,11 +4205,12 @@ if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_CC+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_CC+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +@@ -3624,11 +4218,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -3639,11 +4237,11 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +-$as_echo "$CC" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++printf "%s\n" "$CC" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -3652,11 +4250,12 @@ fi + if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_CC+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_CC+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +@@ -3665,15 +4264,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ++ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -3689,18 +4292,18 @@ if test $ac_prog_rejected = yes; then + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift +- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" ++ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi + fi + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +-$as_echo "$CC" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++printf "%s\n" "$CC" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -3711,11 +4314,12 @@ if test -z "$CC"; then + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_CC+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_CC+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. + else +@@ -3723,11 +4327,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -3738,11 +4346,11 @@ fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +-$as_echo "$CC" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++printf "%s\n" "$CC" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -3755,11 +4363,12 @@ if test -z "$CC"; then + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_CC+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_CC+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. + else +@@ -3767,11 +4376,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -3782,11 +4395,11 @@ fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +-$as_echo "$ac_ct_CC" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++printf "%s\n" "$ac_ct_CC" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -3798,34 +4411,138 @@ done + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++fi ++ ++fi ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. ++set dummy ${ac_tool_prefix}clang; ac_word=$2 ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_CC+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="${ac_tool_prefix}clang" ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++printf "%s\n" "$CC" >&6; } ++else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_CC"; then ++ ac_ct_CC=$CC ++ # Extract the first word of "clang", so it can be a program name with args. ++set dummy clang; ac_word=$2 ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_CC+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_CC="clang" ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++printf "%s\n" "$ac_ct_CC" >&6; } ++else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } ++fi ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + CC=$ac_ct_CC + fi ++else ++ CC="$ac_cv_prog_CC" + fi + + fi + + +-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error $? "no acceptable C compiler found in \$PATH + See \`config.log' for more details" "$LINENO" 5; } + + # Provide some information about the compiler. +-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 ++printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 + set X $ac_compile + ac_compiler=$2 +-for ac_option in --version -v -V -qversion; do ++for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then +@@ -3835,7 +4552,7 @@ $as_echo "$ac_try_echo"; } >&5 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + done + +@@ -3843,7 +4560,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; +@@ -3855,9 +4572,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +-$as_echo_n "checking whether the C compiler works... " >&6; } +-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 ++printf %s "checking whether the C compiler works... " >&6; } ++ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + + # The possible output files: + ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" +@@ -3878,11 +4595,12 @@ case "(($ac_try" in + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +- test $ac_status = 0; }; then : ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. + # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' + # in a Makefile. We should not override ac_cv_exeext if it was cached, +@@ -3899,7 +4617,7 @@ do + # certainly right. + break;; + *.* ) +- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi +@@ -3915,44 +4633,46 @@ do + done + test "$ac_cv_exeext" = no && ac_cv_exeext= + +-else ++else $as_nop + ac_file='' + fi +-if test -z "$ac_file"; then : +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } +-$as_echo "$as_me: failed program was:" >&5 ++if test -z "$ac_file" ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } ++printf "%s\n" "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error 77 "C compiler cannot create executables + See \`config.log' for more details" "$LINENO" 5; } +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +-$as_echo "yes" >&6; } +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +-$as_echo_n "checking for C compiler default output file name... " >&6; } +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +-$as_echo "$ac_file" >&6; } ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++printf "%s\n" "yes" >&6; } ++fi ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 ++printf %s "checking for C compiler default output file name... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 ++printf "%s\n" "$ac_file" >&6; } + ac_exeext=$ac_cv_exeext + + rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +-$as_echo_n "checking for suffix of executables... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 ++printf %s "checking for suffix of executables... " >&6; } + if { { ac_try="$ac_link" + case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +- test $ac_status = 0; }; then : ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) + # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will + # work properly (i.e., refer to `conftest.exe'), while it won't with +@@ -3966,15 +4686,15 @@ for ac_file in conftest.exe conftest conftest.*; do + * ) break;; + esac + done +-else +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++else $as_nop ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error $? "cannot compute suffix of executables: cannot compile and link + See \`config.log' for more details" "$LINENO" 5; } + fi + rm -f conftest conftest$ac_cv_exeext +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +-$as_echo "$ac_cv_exeext" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 ++printf "%s\n" "$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext +@@ -3983,7 +4703,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +-main () ++main (void) + { + FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; +@@ -3995,8 +4715,8 @@ _ACEOF + ac_clean_files="$ac_clean_files conftest.out" + # Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +-$as_echo_n "checking whether we are cross compiling... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 ++printf %s "checking whether we are cross compiling... " >&6; } + if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" + case "(($ac_try" in +@@ -4004,10 +4724,10 @@ case "(($ac_try" in + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in +@@ -4015,39 +4735,40 @@ $as_echo "$ac_try_echo"; } >&5 + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-as_fn_error $? "cannot run C compiled programs. ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error 77 "cannot run C compiled programs. + If you meant to cross compile, use \`--host'. + See \`config.log' for more details" "$LINENO" 5; } + fi + fi + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +-$as_echo "$cross_compiling" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 ++printf "%s\n" "$cross_compiling" >&6; } + + rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out + ac_clean_files=$ac_clean_files_save +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +-$as_echo_n "checking for suffix of object files... " >&6; } +-if ${ac_cv_objext+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 ++printf %s "checking for suffix of object files... " >&6; } ++if test ${ac_cv_objext+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; +@@ -4061,11 +4782,12 @@ case "(($ac_try" in + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +- test $ac_status = 0; }; then : ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in +@@ -4074,31 +4796,32 @@ $as_echo "$ac_try_echo"; } >&5 + break;; + esac + done +-else +- $as_echo "$as_me: failed program was:" >&5 ++else $as_nop ++ printf "%s\n" "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error $? "cannot compute suffix of object files: cannot compile + See \`config.log' for more details" "$LINENO" 5; } + fi + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +-$as_echo "$ac_cv_objext" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 ++printf "%s\n" "$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +-if ${ac_cv_c_compiler_gnu+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 ++printf %s "checking whether the compiler supports GNU C... " >&6; } ++if test ${ac_cv_c_compiler_gnu+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + #ifndef __GNUC__ + choke me +@@ -4108,29 +4831,33 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_compiler_gnu=yes +-else ++else $as_nop + ac_compiler_gnu=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +-$as_echo "$ac_cv_c_compiler_gnu" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 ++printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ + if test $ac_compiler_gnu = yes; then + GCC=yes + else + GCC= + fi +-ac_test_CFLAGS=${CFLAGS+set} ++ac_test_CFLAGS=${CFLAGS+y} + ac_save_CFLAGS=$CFLAGS +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +-$as_echo_n "checking whether $CC accepts -g... " >&6; } +-if ${ac_cv_prog_cc_g+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 ++printf %s "checking whether $CC accepts -g... " >&6; } ++if test ${ac_cv_prog_cc_g+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no +@@ -4139,57 +4866,60 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_cv_prog_cc_g=yes +-else ++else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + +-else ++else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_cv_prog_cc_g=yes + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +-$as_echo "$ac_cv_prog_cc_g" >&6; } +-if test "$ac_test_CFLAGS" = set; then ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 ++printf "%s\n" "$ac_cv_prog_cc_g" >&6; } ++if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS + elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then +@@ -4204,94 +4934,144 @@ else + CFLAGS= + fi + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +-if ${ac_cv_prog_cc_c89+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- ac_cv_prog_cc_c89=no ++ac_prog_cc_stdc=no ++if test x$ac_prog_cc_stdc = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 ++printf %s "checking for $CC option to enable C11 features... " >&6; } ++if test ${ac_cv_prog_cc_c11+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ ac_cv_prog_cc_c11=no + ac_save_CC=$CC + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-#include +-#include +-struct stat; +-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +-struct buf { int x; }; +-FILE * (*rcsopen) (struct buf *, struct stat *, int); +-static char *e (p, i) +- char **p; +- int i; +-{ +- return p[i]; +-} +-static char *f (char * (*g) (char **, int), char **p, ...) +-{ +- char *s; +- va_list v; +- va_start (v,p); +- s = g (p, va_arg (v,int)); +- va_end (v); +- return s; +-} +- +-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has +- function prototypes and stuff, but not '\xHH' hex character constants. +- These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std is added to get +- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an +- array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std. */ +-int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++$ac_c_conftest_c11_program ++_ACEOF ++for ac_arg in '' -std=gnu11 ++do ++ CC="$ac_save_CC $ac_arg" ++ if ac_fn_c_try_compile "$LINENO" ++then : ++ ac_cv_prog_cc_c11=$ac_arg ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.beam ++ test "x$ac_cv_prog_cc_c11" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++fi + +-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters +- inside strings and character constants. */ +-#define FOO(x) 'x' +-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++if test "x$ac_cv_prog_cc_c11" = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 ++printf "%s\n" "unsupported" >&6; } ++else $as_nop ++ if test "x$ac_cv_prog_cc_c11" = x ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 ++printf "%s\n" "none needed" >&6; } ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 ++printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } ++ CC="$CC $ac_cv_prog_cc_c11" ++fi ++ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 ++ ac_prog_cc_stdc=c11 ++fi ++fi ++if test x$ac_prog_cc_stdc = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 ++printf %s "checking for $CC option to enable C99 features... " >&6; } ++if test ${ac_cv_prog_cc_c99+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ ac_cv_prog_cc_c99=no ++ac_save_CC=$CC ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$ac_c_conftest_c99_program ++_ACEOF ++for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= ++do ++ CC="$ac_save_CC $ac_arg" ++ if ac_fn_c_try_compile "$LINENO" ++then : ++ ac_cv_prog_cc_c99=$ac_arg ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.beam ++ test "x$ac_cv_prog_cc_c99" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++fi + +-int test (int i, double x); +-struct s1 {int (*f) (int a);}; +-struct s2 {int (*f) (double a);}; +-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +-int argc; +-char **argv; +-int +-main () +-{ +-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +- ; +- return 0; +-} ++if test "x$ac_cv_prog_cc_c99" = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 ++printf "%s\n" "unsupported" >&6; } ++else $as_nop ++ if test "x$ac_cv_prog_cc_c99" = x ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 ++printf "%s\n" "none needed" >&6; } ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 ++printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } ++ CC="$CC $ac_cv_prog_cc_c99" ++fi ++ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 ++ ac_prog_cc_stdc=c99 ++fi ++fi ++if test x$ac_prog_cc_stdc = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 ++printf %s "checking for $CC option to enable C89 features... " >&6; } ++if test ${ac_cv_prog_cc_c89+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$ac_c_conftest_c89_program + _ACEOF +-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ +- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" +- if ac_fn_c_try_compile "$LINENO"; then : ++ if ac_fn_c_try_compile "$LINENO" ++then : + ac_cv_prog_cc_c89=$ac_arg + fi +-rm -f core conftest.err conftest.$ac_objext ++rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break + done + rm -f conftest.$ac_ext + CC=$ac_save_CC +- + fi +-# AC_CACHE_VAL +-case "x$ac_cv_prog_cc_c89" in +- x) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +-$as_echo "none needed" >&6; } ;; +- xno) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +-$as_echo "unsupported" >&6; } ;; +- *) +- CC="$CC $ac_cv_prog_cc_c89" +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +-esac +-if test "x$ac_cv_prog_cc_c89" != xno; then : + ++if test "x$ac_cv_prog_cc_c89" = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 ++printf "%s\n" "unsupported" >&6; } ++else $as_nop ++ if test "x$ac_cv_prog_cc_c89" = x ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 ++printf "%s\n" "none needed" >&6; } ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 ++printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } ++ CC="$CC $ac_cv_prog_cc_c89" ++fi ++ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 ++ ac_prog_cc_stdc=c89 ++fi + fi + + ac_ext=c +@@ -4300,21 +5080,23 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-ac_ext=c ++ ++ ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +-if ${am_cv_prog_cc_c_o+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 ++printf %s "checking whether $CC understands -c and -o together... " >&6; } ++if test ${am_cv_prog_cc_c_o+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; +@@ -4342,8 +5124,8 @@ _ACEOF + rm -f core conftest* + unset am_i + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +-$as_echo "$am_cv_prog_cc_c_o" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 ++printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } + if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. +@@ -4362,8 +5144,8 @@ DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +-$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 ++printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } + cat > confinc.mk << 'END' + am__doit: + @echo this is the am__doit target >confinc.out +@@ -4399,11 +5181,12 @@ esac + fi + done + rm -f confinc.* confmf.* +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +-$as_echo "${_am_result}" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 ++printf "%s\n" "${_am_result}" >&6; } + + # Check whether --enable-dependency-tracking was given. +-if test "${enable_dependency_tracking+set}" = set; then : ++if test ${enable_dependency_tracking+y} ++then : + enableval=$enable_dependency_tracking; + fi + +@@ -4424,11 +5207,12 @@ fi + + depcc="$CC" am_compiler_list= + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +-$as_echo_n "checking dependency style of $depcc... " >&6; } +-if ${am_cv_CC_dependencies_compiler_type+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 ++printf %s "checking dependency style of $depcc... " >&6; } ++if test ${am_cv_CC_dependencies_compiler_type+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For +@@ -4535,8 +5319,8 @@ else + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 ++printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } + CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if +@@ -4550,6 +5334,12 @@ else + fi + + ++ ++ ++ ++ ++ ++ + ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -4560,15 +5350,16 @@ if test -z "$CXX"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then +- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. + else +@@ -4576,11 +5367,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -4591,11 +5386,11 @@ fi + fi + CXX=$ac_cv_prog_CXX + if test -n "$CXX"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +-$as_echo "$CXX" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 ++printf "%s\n" "$CXX" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -4604,15 +5399,16 @@ fi + fi + if test -z "$CXX"; then + ac_ct_CXX=$CXX +- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC ++ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + else +@@ -4620,11 +5416,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -4635,11 +5435,11 @@ fi + fi + ac_ct_CXX=$ac_cv_prog_ac_ct_CXX + if test -n "$ac_ct_CXX"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +-$as_echo "$ac_ct_CXX" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 ++printf "%s\n" "$ac_ct_CXX" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -4651,8 +5451,8 @@ done + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + CXX=$ac_ct_CXX +@@ -4662,7 +5462,7 @@ fi + fi + fi + # Provide some information about the compiler. +-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 ++printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 + set X $ac_compile + ac_compiler=$2 + for ac_option in --version -v -V -qversion; do +@@ -4672,7 +5472,7 @@ case "(($ac_try" in + *) ac_try_echo=$ac_try;; + esac + eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +-$as_echo "$ac_try_echo"; } >&5 ++printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then +@@ -4682,20 +5482,21 @@ $as_echo "$ac_try_echo"; } >&5 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + done + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +-if ${ac_cv_cxx_compiler_gnu+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 ++printf %s "checking whether the compiler supports GNU C++... " >&6; } ++if test ${ac_cv_cxx_compiler_gnu+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + #ifndef __GNUC__ + choke me +@@ -4705,29 +5506,33 @@ main () + return 0; + } + _ACEOF +-if ac_fn_cxx_try_compile "$LINENO"; then : ++if ac_fn_cxx_try_compile "$LINENO" ++then : + ac_compiler_gnu=yes +-else ++else $as_nop + ac_compiler_gnu=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 ++printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ++ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ++ + if test $ac_compiler_gnu = yes; then + GXX=yes + else + GXX= + fi +-ac_test_CXXFLAGS=${CXXFLAGS+set} ++ac_test_CXXFLAGS=${CXXFLAGS+y} + ac_save_CXXFLAGS=$CXXFLAGS +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +-$as_echo_n "checking whether $CXX accepts -g... " >&6; } +-if ${ac_cv_prog_cxx_g+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 ++printf %s "checking whether $CXX accepts -g... " >&6; } ++if test ${ac_cv_prog_cxx_g+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no +@@ -4736,57 +5541,60 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_cxx_try_compile "$LINENO"; then : ++if ac_fn_cxx_try_compile "$LINENO" ++then : + ac_cv_prog_cxx_g=yes +-else ++else $as_nop + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_cxx_try_compile "$LINENO"; then : ++if ac_fn_cxx_try_compile "$LINENO" ++then : + +-else ++else $as_nop + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_cxx_try_compile "$LINENO"; then : ++if ac_fn_cxx_try_compile "$LINENO" ++then : + ac_cv_prog_cxx_g=yes + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +-$as_echo "$ac_cv_prog_cxx_g" >&6; } +-if test "$ac_test_CXXFLAGS" = set; then ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 ++printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } ++if test $ac_test_CXXFLAGS; then + CXXFLAGS=$ac_save_CXXFLAGS + elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then +@@ -4801,6 +5609,100 @@ else + CXXFLAGS= + fi + fi ++ac_prog_cxx_stdcxx=no ++if test x$ac_prog_cxx_stdcxx = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 ++printf %s "checking for $CXX option to enable C++11 features... " >&6; } ++if test ${ac_cv_prog_cxx_11+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ ac_cv_prog_cxx_11=no ++ac_save_CXX=$CXX ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$ac_cxx_conftest_cxx11_program ++_ACEOF ++for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA ++do ++ CXX="$ac_save_CXX $ac_arg" ++ if ac_fn_cxx_try_compile "$LINENO" ++then : ++ ac_cv_prog_cxx_cxx11=$ac_arg ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.beam ++ test "x$ac_cv_prog_cxx_cxx11" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CXX=$ac_save_CXX ++fi ++ ++if test "x$ac_cv_prog_cxx_cxx11" = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 ++printf "%s\n" "unsupported" >&6; } ++else $as_nop ++ if test "x$ac_cv_prog_cxx_cxx11" = x ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 ++printf "%s\n" "none needed" >&6; } ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 ++printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } ++ CXX="$CXX $ac_cv_prog_cxx_cxx11" ++fi ++ ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ++ ac_prog_cxx_stdcxx=cxx11 ++fi ++fi ++if test x$ac_prog_cxx_stdcxx = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 ++printf %s "checking for $CXX option to enable C++98 features... " >&6; } ++if test ${ac_cv_prog_cxx_98+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ ac_cv_prog_cxx_98=no ++ac_save_CXX=$CXX ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$ac_cxx_conftest_cxx98_program ++_ACEOF ++for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA ++do ++ CXX="$ac_save_CXX $ac_arg" ++ if ac_fn_cxx_try_compile "$LINENO" ++then : ++ ac_cv_prog_cxx_cxx98=$ac_arg ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.beam ++ test "x$ac_cv_prog_cxx_cxx98" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CXX=$ac_save_CXX ++fi ++ ++if test "x$ac_cv_prog_cxx_cxx98" = xno ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 ++printf "%s\n" "unsupported" >&6; } ++else $as_nop ++ if test "x$ac_cv_prog_cxx_cxx98" = x ++then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 ++printf "%s\n" "none needed" >&6; } ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 ++printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } ++ CXX="$CXX $ac_cv_prog_cxx_cxx98" ++fi ++ ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ++ ac_prog_cxx_stdcxx=cxx98 ++fi ++fi ++ + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -4809,11 +5711,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + depcc="$CXX" am_compiler_list= + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +-$as_echo_n "checking dependency style of $depcc... " >&6; } +-if ${am_cv_CXX_dependencies_compiler_type+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 ++printf %s "checking dependency style of $depcc... " >&6; } ++if test ${am_cv_CXX_dependencies_compiler_type+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For +@@ -4920,8 +5823,8 @@ else + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 ++printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } + CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if +@@ -4950,11 +5853,12 @@ test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS + + depcc="$CCAS" am_compiler_list= + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +-$as_echo_n "checking dependency style of $depcc... " >&6; } +-if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 ++printf %s "checking dependency style of $depcc... " >&6; } ++if test ${am_cv_CCAS_dependencies_compiler_type+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For +@@ -5055,36 +5959,179 @@ else + cd .. + rm -rf conftest.dir + else +- am_cv_CCAS_dependencies_compiler_type=none ++ am_cv_CCAS_dependencies_compiler_type=none ++fi ++ ++fi ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 ++printf "%s\n" "$am_cv_CCAS_dependencies_compiler_type" >&6; } ++CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type ++ ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then ++ am__fastdepCCAS_TRUE= ++ am__fastdepCCAS_FALSE='#' ++else ++ am__fastdepCCAS_TRUE='#' ++ am__fastdepCCAS_FALSE= ++fi ++ ++ ++ ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 ++printf %s "checking for grep that handles long lines and -e... " >&6; } ++if test ${ac_cv_path_GREP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test -z "$GREP"; then ++ ac_path_GREP_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_prog in grep ggrep ++ do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_GREP" || continue ++# Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ printf %s 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ printf "%s\n" 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_GREP_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_GREP"; then ++ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 ++ fi ++else ++ ac_cv_path_GREP=$GREP + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +-$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } +-CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 ++printf "%s\n" "$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" + +- if +- test "x$enable_dependency_tracking" != xno \ +- && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then +- am__fastdepCCAS_TRUE= +- am__fastdepCCAS_FALSE='#' ++ ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 ++printf %s "checking for egrep... " >&6; } ++if test ${ac_cv_path_EGREP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ if test -z "$EGREP"; then ++ ac_path_EGREP_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_prog in egrep ++ do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_EGREP" || continue ++# Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ printf %s 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ printf "%s\n" 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_EGREP_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_EGREP"; then ++ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 ++ fi + else +- am__fastdepCCAS_TRUE='#' +- am__fastdepCCAS_FALSE= ++ ac_cv_path_EGREP=$EGREP + fi + ++ fi ++fi ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 ++printf "%s\n" "$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" + + + case `pwd` in + *\ * | *\ *) +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 ++printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; + esac + + + +-macro_version='2.4.6' +-macro_revision='2.4.6' ++macro_version='2.4.7' ++macro_revision='2.4.7' ++ + + + +@@ -5121,8 +6168,8 @@ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +-$as_echo_n "checking how to print strings... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 ++printf %s "checking how to print strings... " >&6; } + # Test print first, because it will be a builtin if present. + if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then +@@ -5148,12 +6195,12 @@ func_echo_all () + } + + case $ECHO in +- printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +-$as_echo "printf" >&6; } ;; +- print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +-$as_echo "print -r" >&6; } ;; +- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +-$as_echo "cat" >&6; } ;; ++ printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 ++printf "%s\n" "printf" >&6; } ;; ++ print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 ++printf "%s\n" "print -r" >&6; } ;; ++ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 ++printf "%s\n" "cat" >&6; } ;; + esac + + +@@ -5169,11 +6216,12 @@ esac + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +-$as_echo_n "checking for a sed that does not truncate output... " >&6; } +-if ${ac_cv_path_SED+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 ++printf %s "checking for a sed that does not truncate output... " >&6; } ++if test ${ac_cv_path_SED+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" +@@ -5187,10 +6235,15 @@ else + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_prog in sed gsed; do ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_prog in sed gsed ++ do + for ac_exec_ext in '' $ac_executable_extensions; do +- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" ++ ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue + # Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +@@ -5199,13 +6252,13 @@ case `"$ac_path_SED" --version 2>&1` in + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; + *) + ac_count=0 +- $as_echo_n 0123456789 >"conftest.in" ++ printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" +- $as_echo '' >> "conftest.nl" ++ printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val +@@ -5233,8 +6286,8 @@ else + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +-$as_echo "$ac_cv_path_SED" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 ++printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +@@ -5251,141 +6304,12 @@ Xsed="$SED -e 1s/^X//" + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +-$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +-if ${ac_cv_path_GREP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if test -z "$GREP"; then +- ac_path_GREP_found=false +- # Loop through the user's path and test for each of PROGNAME-LIST +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_prog in grep ggrep; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" +- as_fn_executable_p "$ac_path_GREP" || continue +-# Check for GNU ac_path_GREP and select it if it is found. +- # Check for GNU $ac_path_GREP +-case `"$ac_path_GREP" --version 2>&1` in +-*GNU*) +- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +-*) +- ac_count=0 +- $as_echo_n 0123456789 >"conftest.in" +- while : +- do +- cat "conftest.in" "conftest.in" >"conftest.tmp" +- mv "conftest.tmp" "conftest.in" +- cp "conftest.in" "conftest.nl" +- $as_echo 'GREP' >> "conftest.nl" +- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break +- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +- as_fn_arith $ac_count + 1 && ac_count=$as_val +- if test $ac_count -gt ${ac_path_GREP_max-0}; then +- # Best one so far, save it but keep looking for a better one +- ac_cv_path_GREP="$ac_path_GREP" +- ac_path_GREP_max=$ac_count +- fi +- # 10*(2^10) chars as input seems more than enough +- test $ac_count -gt 10 && break +- done +- rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +-esac +- +- $ac_path_GREP_found && break 3 +- done +- done +- done +-IFS=$as_save_IFS +- if test -z "$ac_cv_path_GREP"; then +- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 +- fi +-else +- ac_cv_path_GREP=$GREP +-fi +- +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +-$as_echo "$ac_cv_path_GREP" >&6; } +- GREP="$ac_cv_path_GREP" +- +- +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +-$as_echo_n "checking for egrep... " >&6; } +-if ${ac_cv_path_EGREP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 +- then ac_cv_path_EGREP="$GREP -E" +- else +- if test -z "$EGREP"; then +- ac_path_EGREP_found=false +- # Loop through the user's path and test for each of PROGNAME-LIST +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_prog in egrep; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" +- as_fn_executable_p "$ac_path_EGREP" || continue +-# Check for GNU ac_path_EGREP and select it if it is found. +- # Check for GNU $ac_path_EGREP +-case `"$ac_path_EGREP" --version 2>&1` in +-*GNU*) +- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +-*) +- ac_count=0 +- $as_echo_n 0123456789 >"conftest.in" +- while : +- do +- cat "conftest.in" "conftest.in" >"conftest.tmp" +- mv "conftest.tmp" "conftest.in" +- cp "conftest.in" "conftest.nl" +- $as_echo 'EGREP' >> "conftest.nl" +- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break +- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +- as_fn_arith $ac_count + 1 && ac_count=$as_val +- if test $ac_count -gt ${ac_path_EGREP_max-0}; then +- # Best one so far, save it but keep looking for a better one +- ac_cv_path_EGREP="$ac_path_EGREP" +- ac_path_EGREP_max=$ac_count +- fi +- # 10*(2^10) chars as input seems more than enough +- test $ac_count -gt 10 && break +- done +- rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +-esac +- +- $ac_path_EGREP_found && break 3 +- done +- done +- done +-IFS=$as_save_IFS +- if test -z "$ac_cv_path_EGREP"; then +- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 +- fi +-else +- ac_cv_path_EGREP=$EGREP +-fi +- +- fi +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +-$as_echo "$ac_cv_path_EGREP" >&6; } +- EGREP="$ac_cv_path_EGREP" +- +- +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +-$as_echo_n "checking for fgrep... " >&6; } +-if ${ac_cv_path_FGREP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 ++printf %s "checking for fgrep... " >&6; } ++if test ${ac_cv_path_FGREP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else +@@ -5396,10 +6320,15 @@ else + for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_prog in fgrep; do ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_prog in fgrep ++ do + for ac_exec_ext in '' $ac_executable_extensions; do +- ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" ++ ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue + # Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +@@ -5408,13 +6337,13 @@ case `"$ac_path_FGREP" --version 2>&1` in + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; + *) + ac_count=0 +- $as_echo_n 0123456789 >"conftest.in" ++ printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" +- $as_echo 'FGREP' >> "conftest.nl" ++ printf "%s\n" 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val +@@ -5443,8 +6372,8 @@ fi + + fi + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +-$as_echo "$ac_cv_path_FGREP" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 ++printf "%s\n" "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +@@ -5469,17 +6398,18 @@ test -z "$GREP" && GREP=grep + + + # Check whether --with-gnu-ld was given. +-if test "${with_gnu_ld+set}" = set; then : ++if test ${with_gnu_ld+y} ++then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +-else ++else $as_nop + with_gnu_ld=no + fi + + ac_prog=ld + if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +-$as_echo_n "checking for ld used by $CC... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 ++printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw +@@ -5508,15 +6438,16 @@ $as_echo_n "checking for ld used by $CC... " >&6; } + ;; + esac + elif test yes = "$with_gnu_ld"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +-$as_echo_n "checking for GNU ld... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 ++printf %s "checking for GNU ld... " >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +-$as_echo_n "checking for non-GNU ld... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 ++printf %s "checking for non-GNU ld... " >&6; } + fi +-if ${lt_cv_path_LD+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++if test ${lt_cv_path_LD+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do +@@ -5545,18 +6476,19 @@ fi + + LD=$lt_cv_path_LD + if test -n "$LD"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +-$as_echo "$LD" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 ++printf "%s\n" "$LD" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +-if ${lt_cv_prog_gnu_ld+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 ++printf %s "checking if the linker ($LD) is GNU ld... " >&6; } ++if test ${lt_cv_prog_gnu_ld+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + # I'd rather use --version here, but apparently some GNU lds only accept -v. + case `$LD -v 2>&1 &1 &5 +-$as_echo "$lt_cv_prog_gnu_ld" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 ++printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + + +@@ -5579,11 +6511,12 @@ with_gnu_ld=$lt_cv_prog_gnu_ld + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +-if ${lt_cv_path_NM+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 ++printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } ++if test ${lt_cv_path_NM+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +@@ -5608,13 +6541,13 @@ else + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac +- case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in ++ case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) +- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 +@@ -5633,8 +6566,8 @@ else + : ${lt_cv_path_NM=no} + fi + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +-$as_echo "$lt_cv_path_NM" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 ++printf "%s\n" "$lt_cv_path_NM" >&6; } + if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM + else +@@ -5647,11 +6580,12 @@ else + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_DUMPBIN+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_DUMPBIN+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. + else +@@ -5659,11 +6593,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -5674,11 +6612,11 @@ fi + fi + DUMPBIN=$ac_cv_prog_DUMPBIN + if test -n "$DUMPBIN"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +-$as_echo "$DUMPBIN" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 ++printf "%s\n" "$DUMPBIN" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -5691,11 +6629,12 @@ if test -z "$DUMPBIN"; then + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_DUMPBIN+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. + else +@@ -5703,11 +6642,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -5718,11 +6661,11 @@ fi + fi + ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN + if test -n "$ac_ct_DUMPBIN"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +-$as_echo "$ac_ct_DUMPBIN" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 ++printf "%s\n" "$ac_ct_DUMPBIN" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -5734,15 +6677,15 @@ done + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + DUMPBIN=$ac_ct_DUMPBIN + fi + fi + +- case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in ++ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; +@@ -5763,11 +6706,12 @@ test -z "$NM" && NM=nm + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +-$as_echo_n "checking the name lister ($NM) interface... " >&6; } +-if ${lt_cv_nm_interface+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 ++printf %s "checking the name lister ($NM) interface... " >&6; } ++if test ${lt_cv_nm_interface+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) +@@ -5783,26 +6727,27 @@ else + fi + rm -f conftest* + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +-$as_echo "$lt_cv_nm_interface" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 ++printf "%s\n" "$lt_cv_nm_interface" >&6; } + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +-$as_echo_n "checking whether ln -s works... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 ++printf %s "checking whether ln -s works... " >&6; } + LN_S=$as_ln_s + if test "$LN_S" = "ln -s"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +-$as_echo "yes" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++printf "%s\n" "yes" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +-$as_echo "no, using $LN_S" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 ++printf "%s\n" "no, using $LN_S" >&6; } + fi + + # find the maximum length of command line arguments +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +-$as_echo_n "checking the maximum length of command line arguments... " >&6; } +-if ${lt_cv_sys_max_cmd_len+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 ++printf %s "checking the maximum length of command line arguments... " >&6; } ++if test ${lt_cv_sys_max_cmd_len+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + i=0 + teststring=ABCD + +@@ -5844,7 +6789,7 @@ else + lt_cv_sys_max_cmd_len=8192; + ;; + +- bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) ++ bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +@@ -5887,7 +6832,7 @@ else + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then +- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` ++ lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi +@@ -5929,11 +6874,11 @@ else + fi + + if test -n "$lt_cv_sys_max_cmd_len"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +-$as_echo "$lt_cv_sys_max_cmd_len" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 ++printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +-$as_echo "none" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 ++printf "%s\n" "none" >&6; } + fi + max_cmd_len=$lt_cv_sys_max_cmd_len + +@@ -5977,11 +6922,12 @@ esac + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +-$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +-if ${lt_cv_to_host_file_cmd+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 ++printf %s "checking how to convert $build file names to $host format... " >&6; } ++if test ${lt_cv_to_host_file_cmd+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + case $host in + *-*-mingw* ) + case $build in +@@ -6017,18 +6963,19 @@ esac + fi + + to_host_file_cmd=$lt_cv_to_host_file_cmd +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +-$as_echo "$lt_cv_to_host_file_cmd" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 ++printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } + + + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +-if ${lt_cv_to_tool_file_cmd+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 ++printf %s "checking how to convert $build file names to toolchain format... " >&6; } ++if test ${lt_cv_to_tool_file_cmd+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + #assume ordinary cross tools, or native build. + lt_cv_to_tool_file_cmd=func_convert_file_noop + case $host in +@@ -6044,22 +6991,23 @@ esac + fi + + to_tool_file_cmd=$lt_cv_to_tool_file_cmd +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +-$as_echo "$lt_cv_to_tool_file_cmd" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 ++printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +-$as_echo_n "checking for $LD option to reload object files... " >&6; } +-if ${lt_cv_ld_reload_flag+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 ++printf %s "checking for $LD option to reload object files... " >&6; } ++if test ${lt_cv_ld_reload_flag+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_ld_reload_flag='-r' + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +-$as_echo "$lt_cv_ld_reload_flag" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 ++printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } + reload_flag=$lt_cv_ld_reload_flag + case $reload_flag in + "" | " "*) ;; +@@ -6089,14 +7037,123 @@ esac + + + ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. ++set dummy ${ac_tool_prefix}file; ac_word=$2 ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_FILECMD+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test -n "$FILECMD"; then ++ ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ++ ac_cv_prog_FILECMD="${ac_tool_prefix}file" ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++FILECMD=$ac_cv_prog_FILECMD ++if test -n "$FILECMD"; then ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 ++printf "%s\n" "$FILECMD" >&6; } ++else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_FILECMD"; then ++ ac_ct_FILECMD=$FILECMD ++ # Extract the first word of "file", so it can be a program name with args. ++set dummy file; ac_word=$2 ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_FILECMD+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test -n "$ac_ct_FILECMD"; then ++ ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_FILECMD="file" ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD ++if test -n "$ac_ct_FILECMD"; then ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 ++printf "%s\n" "$ac_ct_FILECMD" >&6; } ++else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } ++fi ++ ++ if test "x$ac_ct_FILECMD" = x; then ++ FILECMD=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ FILECMD=$ac_ct_FILECMD ++ fi ++else ++ FILECMD="$ac_cv_prog_FILECMD" ++fi ++ ++ ++ ++ ++ ++ ++ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. + set dummy ${ac_tool_prefix}objdump; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_OBJDUMP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_OBJDUMP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. + else +@@ -6104,11 +7161,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6119,11 +7180,11 @@ fi + fi + OBJDUMP=$ac_cv_prog_OBJDUMP + if test -n "$OBJDUMP"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +-$as_echo "$OBJDUMP" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 ++printf "%s\n" "$OBJDUMP" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -6132,11 +7193,12 @@ if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. + set dummy objdump; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_OBJDUMP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. + else +@@ -6144,11 +7206,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6159,11 +7225,11 @@ fi + fi + ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP + if test -n "$ac_ct_OBJDUMP"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +-$as_echo "$ac_ct_OBJDUMP" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 ++printf "%s\n" "$ac_ct_OBJDUMP" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_OBJDUMP" = x; then +@@ -6171,8 +7237,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + OBJDUMP=$ac_ct_OBJDUMP +@@ -6191,11 +7257,12 @@ test -z "$OBJDUMP" && OBJDUMP=objdump + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +-$as_echo_n "checking how to recognize dependent libraries... " >&6; } +-if ${lt_cv_deplibs_check_method+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 ++printf %s "checking how to recognize dependent libraries... " >&6; } ++if test ${lt_cv_deplibs_check_method+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_file_magic_cmd='$MAGIC_CMD' + lt_cv_file_magic_test_file= + lt_cv_deplibs_check_method='unknown' +@@ -6221,7 +7288,7 @@ beos*) + + bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' +- lt_cv_file_magic_cmd='/usr/bin/file -L' ++ lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +@@ -6255,14 +7322,14 @@ darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* | dragonfly*) ++freebsd* | dragonfly* | midnightbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac +@@ -6276,7 +7343,7 @@ haiku*) + ;; + + hpux10.20* | hpux11*) +- lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_cmd=$FILECMD + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' +@@ -6323,7 +7390,7 @@ netbsd*) + + newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +@@ -6391,8 +7458,8 @@ os2*) + esac + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +-$as_echo "$lt_cv_deplibs_check_method" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 ++printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } + + file_magic_glob= + want_nocaseglob=no +@@ -6436,11 +7503,12 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. + set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_DLLTOOL+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_DLLTOOL+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. + else +@@ -6448,11 +7516,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6463,11 +7535,11 @@ fi + fi + DLLTOOL=$ac_cv_prog_DLLTOOL + if test -n "$DLLTOOL"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +-$as_echo "$DLLTOOL" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 ++printf "%s\n" "$DLLTOOL" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -6476,11 +7548,12 @@ if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. + set dummy dlltool; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_DLLTOOL+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. + else +@@ -6488,11 +7561,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6503,11 +7580,11 @@ fi + fi + ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL + if test -n "$ac_ct_DLLTOOL"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +-$as_echo "$ac_ct_DLLTOOL" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 ++printf "%s\n" "$ac_ct_DLLTOOL" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_DLLTOOL" = x; then +@@ -6515,8 +7592,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + DLLTOOL=$ac_ct_DLLTOOL +@@ -6536,11 +7613,12 @@ test -z "$DLLTOOL" && DLLTOOL=dlltool + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +-$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 ++printf %s "checking how to associate runtime and link libraries... " >&6; } ++if test ${lt_cv_sharedlib_from_linklib_cmd+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_sharedlib_from_linklib_cmd='unknown' + + case $host_os in +@@ -6563,8 +7641,8 @@ cygwin* | mingw* | pw32* | cegcc*) + esac + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 ++printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } + sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd + test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +@@ -6580,11 +7658,12 @@ if test -n "$ac_tool_prefix"; then + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_AR+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_AR+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. + else +@@ -6592,11 +7671,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6607,11 +7690,11 @@ fi + fi + AR=$ac_cv_prog_AR + if test -n "$AR"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +-$as_echo "$AR" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 ++printf "%s\n" "$AR" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -6624,11 +7707,12 @@ if test -z "$AR"; then + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_AR+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_AR+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. + else +@@ -6636,11 +7720,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6651,11 +7739,11 @@ fi + fi + ac_ct_AR=$ac_cv_prog_ac_ct_AR + if test -n "$ac_ct_AR"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +-$as_echo "$ac_ct_AR" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 ++printf "%s\n" "$ac_ct_AR" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -6667,8 +7755,8 @@ done + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + AR=$ac_ct_AR +@@ -6676,42 +7764,60 @@ esac + fi + + : ${AR=ar} +-: ${AR_FLAGS=cru} + + + + + + ++# Use ARFLAGS variable as AR's operation code to sync the variable naming with ++# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have ++# higher priority because thats what people were doing historically (setting ++# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS ++# variable obsoleted/removed. + ++test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} ++lt_ar_flags=$AR_FLAGS + + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +-$as_echo_n "checking for archiver @FILE support... " >&6; } +-if ${lt_cv_ar_at_file+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ ++ ++# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override ++# by AR_FLAGS because that was never working and AR_FLAGS is about to die. ++ ++ ++ ++ ++ ++ ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 ++printf %s "checking for archiver @FILE support... " >&6; } ++if test ${lt_cv_ar_at_file+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. +@@ -6719,7 +7825,7 @@ if ac_fn_c_try_compile "$LINENO"; then : + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ +@@ -6728,11 +7834,11 @@ if ac_fn_c_try_compile "$LINENO"; then : + rm -f conftest.* libconftest.a + + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +-$as_echo "$lt_cv_ar_at_file" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 ++printf "%s\n" "$lt_cv_ar_at_file" >&6; } + + if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +@@ -6749,11 +7855,12 @@ fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. + set dummy ${ac_tool_prefix}strip; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_STRIP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_STRIP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. + else +@@ -6761,11 +7868,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6776,11 +7887,11 @@ fi + fi + STRIP=$ac_cv_prog_STRIP + if test -n "$STRIP"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +-$as_echo "$STRIP" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 ++printf "%s\n" "$STRIP" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -6789,11 +7900,12 @@ if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_STRIP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_STRIP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. + else +@@ -6801,11 +7913,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6816,11 +7932,11 @@ fi + fi + ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP + if test -n "$ac_ct_STRIP"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +-$as_echo "$ac_ct_STRIP" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 ++printf "%s\n" "$ac_ct_STRIP" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_STRIP" = x; then +@@ -6828,8 +7944,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + STRIP=$ac_ct_STRIP +@@ -6848,11 +7964,12 @@ test -z "$STRIP" && STRIP=: + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. + set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_RANLIB+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_RANLIB+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. + else +@@ -6860,11 +7977,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6875,11 +7996,11 @@ fi + fi + RANLIB=$ac_cv_prog_RANLIB + if test -n "$RANLIB"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +-$as_echo "$RANLIB" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 ++printf "%s\n" "$RANLIB" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -6888,11 +8009,12 @@ if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_RANLIB+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. + else +@@ -6900,11 +8022,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -6915,11 +8041,11 @@ fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +-$as_echo "$ac_ct_RANLIB" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 ++printf "%s\n" "$ac_ct_RANLIB" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_RANLIB" = x; then +@@ -6927,8 +8053,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + RANLIB=$ac_ct_RANLIB +@@ -7017,11 +8143,12 @@ compiler=$CC + + + # Check for command to grab the raw symbol name followed by C symbol from nm. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +-if ${lt_cv_sys_global_symbol_pipe+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 ++printf %s "checking command to parse $NM output from $compiler object... " >&6; } ++if test ${lt_cv_sys_global_symbol_pipe+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + # These are sane defaults that work on at least a few old systems. + # [They come from Ultrix. What could be older than Ultrix?!! ;)] +@@ -7076,7 +8203,7 @@ esac + + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. +- lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" ++ lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" +@@ -7094,20 +8221,20 @@ fi + # Transform an extracted symbol line into a proper C declaration. + # Some systems (esp. on ia64) link data and code symbols differently, + # so use this general approach. +-lt_cv_sys_global_symbol_to_cdecl="sed -n"\ ++lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ + $lt_cdecl_hook\ + " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ + " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + + # Transform an extracted symbol line into symbol name and symbol address +-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ ++lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ + $lt_c_name_hook\ + " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ + " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + + # Transform an extracted symbol line into symbol name with lib prefix and + # symbol address. +-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ + $lt_c_name_lib_hook\ + " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ + " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +@@ -7131,7 +8258,7 @@ for ac_symprfx in "" "_"; do + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. +- # Also find C++ and __fastcall symbols from MSVC++, ++ # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ + " {last_section=section; section=\$ 3};"\ +@@ -7149,9 +8276,9 @@ for ac_symprfx in "" "_"; do + " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ + " ' prfx=^$ac_symprfx" + else +- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi +- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" ++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no +@@ -7173,14 +8300,14 @@ _LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then +@@ -7249,7 +8376,7 @@ _LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi +@@ -7284,11 +8411,11 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= + fi + if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +-$as_echo "failed" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 ++printf "%s\n" "failed" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +-$as_echo "ok" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 ++printf "%s\n" "ok" >&6; } + fi + + # Response file support. +@@ -7334,13 +8461,14 @@ fi + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +-$as_echo_n "checking for sysroot... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 ++printf %s "checking for sysroot... " >&6; } + + # Check whether --with-sysroot was given. +-if test "${with_sysroot+set}" = set; then : ++if test ${with_sysroot+y} ++then : + withval=$with_sysroot; +-else ++else $as_nop + with_sysroot=no + fi + +@@ -7353,29 +8481,30 @@ case $with_sysroot in #( + fi + ;; #( + /*) +- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ++ lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +-$as_echo "$with_sysroot" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 ++printf "%s\n" "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; + esac + +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +-$as_echo "${lt_sysroot:-no}" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 ++printf "%s\n" "${lt_sysroot:-no}" >&6; } + + + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +-$as_echo_n "checking for a working dd... " >&6; } +-if ${ac_cv_path_lt_DD+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 ++printf %s "checking for a working dd... " >&6; } ++if test ${ac_cv_path_lt_DD+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + printf 0123456789abcdef0123456789abcdef >conftest.i + cat conftest.i conftest.i >conftest2.i + : ${lt_DD:=$DD} +@@ -7386,10 +8515,15 @@ if test -z "$lt_DD"; then + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_prog in dd; do ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_prog in dd ++ do + for ac_exec_ext in '' $ac_executable_extensions; do +- ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" ++ ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue + if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ +@@ -7409,15 +8543,16 @@ fi + + rm -f conftest.i conftest2.i conftest.out + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +-$as_echo "$ac_cv_path_lt_DD" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 ++printf "%s\n" "$ac_cv_path_lt_DD" >&6; } + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +-$as_echo_n "checking how to truncate binary pipes... " >&6; } +-if ${lt_cv_truncate_bin+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 ++printf %s "checking how to truncate binary pipes... " >&6; } ++if test ${lt_cv_truncate_bin+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + printf 0123456789abcdef0123456789abcdef >conftest.i + cat conftest.i conftest.i >conftest2.i + lt_cv_truncate_bin= +@@ -7428,8 +8563,8 @@ fi + rm -f conftest.i conftest2.i conftest.out + test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +-$as_echo "$lt_cv_truncate_bin" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 ++printf "%s\n" "$lt_cv_truncate_bin" >&6; } + + + +@@ -7452,7 +8587,8 @@ func_cc_basename () + } + + # Check whether --enable-libtool-lock was given. +-if test "${enable_libtool_lock+set}" = set; then : ++if test ${enable_libtool_lock+y} ++then : + enableval=$enable_libtool_lock; + fi + +@@ -7468,9 +8604,9 @@ ia64-*-hpux*) + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; +@@ -7488,10 +8624,10 @@ ia64-*-hpux*) + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; +@@ -7503,7 +8639,7 @@ ia64-*-hpux*) + ;; + esac + else +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; +@@ -7526,10 +8662,10 @@ mips64*-*linux*) + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; +@@ -7537,7 +8673,7 @@ mips64*-*linux*) + emul="${emul}64" + ;; + esac +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; +@@ -7545,7 +8681,7 @@ mips64*-*linux*) + emul="${emul}ltsmip" + ;; + esac +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; +@@ -7567,16 +8703,16 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- case `/usr/bin/file conftest.o` in ++ case `$FILECMD conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) +- case `/usr/bin/file conftest.o` in ++ case `$FILECMD conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; +@@ -7630,11 +8766,12 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +-$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +-if ${lt_cv_cc_needs_belf+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 ++printf %s "checking whether the C compiler needs -belf... " >&6; } ++if test ${lt_cv_cc_needs_belf+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -7645,19 +8782,20 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + lt_cv_cc_needs_belf=yes +-else ++else $as_nop + lt_cv_cc_needs_belf=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' +@@ -7666,8 +8804,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +-$as_echo "$lt_cv_cc_needs_belf" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 ++printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS +@@ -7680,9 +8818,9 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- case `/usr/bin/file conftest.o` in ++ case `$FILECMD conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) +@@ -7717,11 +8855,12 @@ need_locks=$enable_libtool_lock + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. + set dummy ${ac_tool_prefix}mt; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_MANIFEST_TOOL+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. + else +@@ -7729,11 +8868,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -7744,11 +8887,11 @@ fi + fi + MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL + if test -n "$MANIFEST_TOOL"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +-$as_echo "$MANIFEST_TOOL" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 ++printf "%s\n" "$MANIFEST_TOOL" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -7757,11 +8900,12 @@ if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. + set dummy mt; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. + else +@@ -7769,11 +8913,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -7784,11 +8932,11 @@ fi + fi + ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL + if test -n "$ac_ct_MANIFEST_TOOL"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 ++printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then +@@ -7796,8 +8944,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL +@@ -7807,11 +8955,12 @@ else + fi + + test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +-if ${lt_cv_path_mainfest_tool+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 ++printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } ++if test ${lt_cv_path_mainfest_tool+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out +@@ -7821,8 +8970,8 @@ else + fi + rm -f conftest* + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +-$as_echo "$lt_cv_path_mainfest_tool" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 ++printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } + if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: + fi +@@ -7837,11 +8986,12 @@ fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. + set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_DSYMUTIL+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_DSYMUTIL+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. + else +@@ -7849,11 +8999,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -7864,11 +9018,11 @@ fi + fi + DSYMUTIL=$ac_cv_prog_DSYMUTIL + if test -n "$DSYMUTIL"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +-$as_echo "$DSYMUTIL" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 ++printf "%s\n" "$DSYMUTIL" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -7877,11 +9031,12 @@ if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. + set dummy dsymutil; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. + else +@@ -7889,11 +9044,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -7904,11 +9063,11 @@ fi + fi + ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL + if test -n "$ac_ct_DSYMUTIL"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +-$as_echo "$ac_ct_DSYMUTIL" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 ++printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_DSYMUTIL" = x; then +@@ -7916,8 +9075,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + DSYMUTIL=$ac_ct_DSYMUTIL +@@ -7929,11 +9088,12 @@ fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. + set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_NMEDIT+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_NMEDIT+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. + else +@@ -7941,11 +9101,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -7956,11 +9120,11 @@ fi + fi + NMEDIT=$ac_cv_prog_NMEDIT + if test -n "$NMEDIT"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +-$as_echo "$NMEDIT" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 ++printf "%s\n" "$NMEDIT" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -7969,11 +9133,12 @@ if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. + set dummy nmedit; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_NMEDIT+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. + else +@@ -7981,11 +9146,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -7996,11 +9165,11 @@ fi + fi + ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT + if test -n "$ac_ct_NMEDIT"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +-$as_echo "$ac_ct_NMEDIT" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 ++printf "%s\n" "$ac_ct_NMEDIT" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_NMEDIT" = x; then +@@ -8008,8 +9177,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + NMEDIT=$ac_ct_NMEDIT +@@ -8021,11 +9190,12 @@ fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. + set dummy ${ac_tool_prefix}lipo; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_LIPO+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_LIPO+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. + else +@@ -8033,11 +9203,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -8048,11 +9222,11 @@ fi + fi + LIPO=$ac_cv_prog_LIPO + if test -n "$LIPO"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +-$as_echo "$LIPO" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 ++printf "%s\n" "$LIPO" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -8061,11 +9235,12 @@ if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. + set dummy lipo; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_LIPO+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_LIPO+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. + else +@@ -8073,11 +9248,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -8088,11 +9267,11 @@ fi + fi + ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO + if test -n "$ac_ct_LIPO"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +-$as_echo "$ac_ct_LIPO" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 ++printf "%s\n" "$ac_ct_LIPO" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_LIPO" = x; then +@@ -8100,8 +9279,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + LIPO=$ac_ct_LIPO +@@ -8113,11 +9292,12 @@ fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. + set dummy ${ac_tool_prefix}otool; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_OTOOL+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_OTOOL+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. + else +@@ -8125,11 +9305,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -8140,11 +9324,11 @@ fi + fi + OTOOL=$ac_cv_prog_OTOOL + if test -n "$OTOOL"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +-$as_echo "$OTOOL" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 ++printf "%s\n" "$OTOOL" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -8153,11 +9337,12 @@ if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. + set dummy otool; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_OTOOL+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. + else +@@ -8165,11 +9350,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -8180,11 +9369,11 @@ fi + fi + ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL + if test -n "$ac_ct_OTOOL"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +-$as_echo "$ac_ct_OTOOL" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 ++printf "%s\n" "$ac_ct_OTOOL" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_OTOOL" = x; then +@@ -8192,8 +9381,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + OTOOL=$ac_ct_OTOOL +@@ -8205,11 +9394,12 @@ fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. + set dummy ${ac_tool_prefix}otool64; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_OTOOL64+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_OTOOL64+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. + else +@@ -8217,11 +9407,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -8232,11 +9426,11 @@ fi + fi + OTOOL64=$ac_cv_prog_OTOOL64 + if test -n "$OTOOL64"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +-$as_echo "$OTOOL64" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 ++printf "%s\n" "$OTOOL64" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -8245,11 +9439,12 @@ if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. + set dummy otool64; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_OTOOL64+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. + else +@@ -8257,11 +9452,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -8272,11 +9471,11 @@ fi + fi + ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 + if test -n "$ac_ct_OTOOL64"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +-$as_echo "$ac_ct_OTOOL64" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 ++printf "%s\n" "$ac_ct_OTOOL64" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_OTOOL64" = x; then +@@ -8284,8 +9483,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + OTOOL64=$ac_ct_OTOOL64 +@@ -8320,11 +9519,12 @@ fi + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +-$as_echo_n "checking for -single_module linker flag... " >&6; } +-if ${lt_cv_apple_cc_single_mod+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 ++printf %s "checking for -single_module linker flag... " >&6; } ++if test ${lt_cv_apple_cc_single_mod+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override +@@ -8353,14 +9553,15 @@ else + rm -f conftest.* + fi + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +-$as_echo "$lt_cv_apple_cc_single_mod" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 ++printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +-if ${lt_cv_ld_exported_symbols_list+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 ++printf %s "checking for -exported_symbols_list linker flag... " >&6; } ++if test ${lt_cv_ld_exported_symbols_list+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym +@@ -8369,39 +9570,41 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + lt_cv_ld_exported_symbols_list=yes +-else ++else $as_nop + lt_cv_ld_exported_symbols_list=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 ++printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +-$as_echo_n "checking for -force_load linker flag... " >&6; } +-if ${lt_cv_ld_force_load+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 ++printf %s "checking for -force_load linker flag... " >&6; } ++if test ${lt_cv_ld_force_load+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF + int forced_loaded() { return 2;} + _LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 +- echo "$AR cru libconftest.a conftest.o" >&5 +- $AR cru libconftest.a conftest.o 2>&5 ++ echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 ++ $AR $AR_FLAGS libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +@@ -8421,24 +9624,19 @@ _LT_EOF + rm -rf conftest.dSYM + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +-$as_echo "$lt_cv_ld_force_load" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 ++printf "%s\n" "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; +- darwin*) # darwin 5.x on +- # if running on 10.5 or later, the deployment target defaults +- # to the OS version, if on x86, and 10.4, the deployment +- # target defaults to 10.4. Don't you love it? +- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in +- 10.0,*86*-darwin8*|10.0,*-darwin[91]*) +- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; +- 10.[012][,.]*) +- _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; +- 10.*) +- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; ++ darwin*) ++ case $MACOSX_DEPLOYMENT_TARGET,$host in ++ 10.[012],*|,*powerpc*-darwin[5-8]*) ++ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; ++ *) ++ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac +@@ -8493,286 +9691,43 @@ func_munge_path_list () + esac + } + +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +-$as_echo_n "checking how to run the C preprocessor... " >&6; } +-# On Suns, sometimes $CPP names a directory. +-if test -n "$CPP" && test -d "$CPP"; then +- CPP= +-fi +-if test -z "$CPP"; then +- if ${ac_cv_prog_CPP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- # Double quotes because CPP needs to be expanded +- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" +- do +- ac_preproc_ok=false +-for ac_c_preproc_warn_flag in '' yes +-do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- Syntax error +-_ACEOF +-if ac_fn_c_try_cpp "$LINENO"; then : +- +-else +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.i conftest.$ac_ext +- +- # OK, works on sane cases. Now check whether nonexistent headers +- # can be detected and how. +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +-_ACEOF +-if ac_fn_c_try_cpp "$LINENO"; then : +- # Broken: success on invalid input. +-continue +-else +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.i conftest.$ac_ext +- +-done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.i conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then : +- break +-fi +- +- done +- ac_cv_prog_CPP=$CPP +- +-fi +- CPP=$ac_cv_prog_CPP +-else +- ac_cv_prog_CPP=$CPP +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +-$as_echo "$CPP" >&6; } +-ac_preproc_ok=false +-for ac_c_preproc_warn_flag in '' yes ++ac_header= ac_cache= ++for ac_item in $ac_header_c_list + do +- # Use a header file that comes with gcc, so configuring glibc +- # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. +- # On the NeXT, cc -E runs the code through the compiler's parser, +- # not just through cpp. "Syntax error" is here to catch this case. +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif +- Syntax error +-_ACEOF +-if ac_fn_c_try_cpp "$LINENO"; then : +- +-else +- # Broken: fails on valid input. +-continue +-fi +-rm -f conftest.err conftest.i conftest.$ac_ext +- +- # OK, works on sane cases. Now check whether nonexistent headers +- # can be detected and how. +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +-_ACEOF +-if ac_fn_c_try_cpp "$LINENO"; then : +- # Broken: success on invalid input. +-continue +-else +- # Passes both tests. +-ac_preproc_ok=: +-break +-fi +-rm -f conftest.err conftest.i conftest.$ac_ext +- ++ if test $ac_cache; then ++ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" ++ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then ++ printf "%s\n" "#define $ac_item 1" >> confdefs.h ++ fi ++ ac_header= ac_cache= ++ elif test $ac_header; then ++ ac_cache=$ac_item ++ else ++ ac_header=$ac_item ++ fi + done +-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +-rm -f conftest.i conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then : +- +-else +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +-See \`config.log' for more details" "$LINENO" 5; } +-fi +- +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- +- +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +-$as_echo_n "checking for ANSI C header files... " >&6; } +-if ${ac_cv_header_stdc+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +-#include +-#include +-#include +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- ac_cv_header_stdc=yes +-else +- ac_cv_header_stdc=no +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "memchr" >/dev/null 2>&1; then : +- +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "free" >/dev/null 2>&1; then : + +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* + +-fi + +-if test $ac_cv_header_stdc = yes; then +- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then : +- : +-else +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +-#include +-#if ((' ' & 0x0FF) == 0x020) +-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +-#else +-# define ISLOWER(c) \ +- (('a' <= (c) && (c) <= 'i') \ +- || ('j' <= (c) && (c) <= 'r') \ +- || ('s' <= (c) && (c) <= 'z')) +-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +-#endif + +-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +-int +-main () +-{ +- int i; +- for (i = 0; i < 256; i++) +- if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) +- return 2; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_run "$LINENO"; then : + +-else +- ac_cv_header_stdc=no +-fi +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +- conftest.$ac_objext conftest.beam conftest.$ac_ext +-fi + +-fi +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +-$as_echo "$ac_cv_header_stdc" >&6; } +-if test $ac_cv_header_stdc = yes; then + +-$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +-fi ++if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes ++then : + +-# On IRIX 5.3, sys/types and inttypes.h are conflicting. +-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +- inttypes.h stdint.h unistd.h +-do : +- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +-" +-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +-_ACEOF ++printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + + fi +- +-done +- +- +-for ac_header in dlfcn.h +-do : +- ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default ++ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default + " +-if test "x$ac_cv_header_dlfcn_h" = xyes; then : +- cat >>confdefs.h <<_ACEOF +-#define HAVE_DLFCN_H 1 +-_ACEOF ++if test "x$ac_cv_header_dlfcn_h" = xyes ++then : ++ printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h + + fi + +-done +- + + + +@@ -8799,7 +9754,8 @@ func_stripname_cnf () + + + # Check whether --enable-shared was given. +-if test "${enable_shared+set}" = set; then : ++if test ${enable_shared+y} ++then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; +@@ -8817,7 +9773,7 @@ if test "${enable_shared+set}" = set; then : + IFS=$lt_save_ifs + ;; + esac +-else ++else $as_nop + enable_shared=yes + fi + +@@ -8830,7 +9786,8 @@ fi + + + # Check whether --enable-static was given. +-if test "${enable_static+set}" = set; then : ++if test ${enable_static+y} ++then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; +@@ -8848,7 +9805,7 @@ if test "${enable_static+set}" = set; then : + IFS=$lt_save_ifs + ;; + esac +-else ++else $as_nop + enable_static=yes + fi + +@@ -8862,7 +9819,8 @@ fi + + + # Check whether --with-pic was given. +-if test "${with_pic+set}" = set; then : ++if test ${with_pic+y} ++then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; +@@ -8879,7 +9837,7 @@ if test "${with_pic+set}" = set; then : + IFS=$lt_save_ifs + ;; + esac +-else ++else $as_nop + pic_mode=default + fi + +@@ -8891,7 +9849,8 @@ fi + + + # Check whether --enable-fast-install was given. +-if test "${enable_fast_install+set}" = set; then : ++if test ${enable_fast_install+y} ++then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; +@@ -8909,7 +9868,7 @@ if test "${enable_fast_install+set}" = set; then : + IFS=$lt_save_ifs + ;; + esac +-else ++else $as_nop + enable_fast_install=yes + fi + +@@ -8923,11 +9882,12 @@ fi + shared_archive_member_spec= + case $host,$enable_shared in + power*-*-aix[5-9]*,yes) +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +-$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 ++printf %s "checking which variant of shared library versioning to provide... " >&6; } + + # Check whether --with-aix-soname was given. +-if test "${with_aix_soname+set}" = set; then : ++if test ${with_aix_soname+y} ++then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; +@@ -8936,18 +9896,19 @@ if test "${with_aix_soname+set}" = set; then : + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +-else +- if ${lt_cv_with_aix_soname+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++else $as_nop ++ if test ${lt_cv_with_aix_soname+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_with_aix_soname=aix + fi + + with_aix_soname=$lt_cv_with_aix_soname + fi + +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +-$as_echo "$with_aix_soname" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 ++printf "%s\n" "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', +@@ -9029,11 +9990,12 @@ if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +-$as_echo_n "checking for objdir... " >&6; } +-if ${lt_cv_objdir+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 ++printf %s "checking for objdir... " >&6; } ++if test ${lt_cv_objdir+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + rm -f .libs 2>/dev/null + mkdir .libs 2>/dev/null + if test -d .libs; then +@@ -9044,17 +10006,15 @@ else + fi + rmdir .libs 2>/dev/null + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +-$as_echo "$lt_cv_objdir" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 ++printf "%s\n" "$lt_cv_objdir" >&6; } + objdir=$lt_cv_objdir + + + + + +-cat >>confdefs.h <<_ACEOF +-#define LT_OBJDIR "$lt_cv_objdir/" +-_ACEOF ++printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h + + + +@@ -9075,8 +10035,8 @@ esac + ofile=libtool + can_build_shared=yes + +-# All known linkers require a '.a' archive for static linking (except MSVC, +-# which needs '.lib'). ++# All known linkers require a '.a' archive for static linking (except MSVC and ++# ICC, which need '.lib'). + libext=a + + with_gnu_ld=$lt_cv_prog_gnu_ld +@@ -9100,11 +10060,12 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file + case $deplibs_check_method in + file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +-if ${lt_cv_path_MAGIC_CMD+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 ++printf %s "checking for ${ac_tool_prefix}file... " >&6; } ++if test ${lt_cv_path_MAGIC_CMD+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + case $MAGIC_CMD in + [\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. +@@ -9153,11 +10114,11 @@ fi + + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if test -n "$MAGIC_CMD"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +-$as_echo "$MAGIC_CMD" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 ++printf "%s\n" "$MAGIC_CMD" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -9166,11 +10127,12 @@ fi + + if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +-$as_echo_n "checking for file... " >&6; } +-if ${lt_cv_path_MAGIC_CMD+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 ++printf %s "checking for file... " >&6; } ++if test ${lt_cv_path_MAGIC_CMD+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + case $MAGIC_CMD in + [\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. +@@ -9219,11 +10181,11 @@ fi + + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if test -n "$MAGIC_CMD"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +-$as_echo "$MAGIC_CMD" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 ++printf "%s\n" "$MAGIC_CMD" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -9308,11 +10270,12 @@ if test yes = "$GCC"; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } ++if test ${lt_cv_prog_compiler_rtti_exceptions+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext +@@ -9343,8 +10306,8 @@ else + $RM conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + + if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +@@ -9585,7 +10548,7 @@ lt_prog_compiler_static= + lt_prog_compiler_static='-qstaticlink' + ;; + *) +- case `$CC -V 2>&1 | sed 5q` in ++ case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' +@@ -9701,26 +10664,28 @@ case $host_os in + ;; + esac + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +-$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +-if ${lt_cv_prog_compiler_pic+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 ++printf %s "checking for $compiler option to produce PIC... " >&6; } ++if test ${lt_cv_prog_compiler_pic+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +-$as_echo "$lt_cv_prog_compiler_pic" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } + lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + + # + # Check to make sure the PIC flag actually works. + # + if test -n "$lt_prog_compiler_pic"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +-if ${lt_cv_prog_compiler_pic_works+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } ++if test ${lt_cv_prog_compiler_pic_works+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext +@@ -9751,8 +10716,8 @@ else + $RM conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } + + if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in +@@ -9780,11 +10745,12 @@ fi + # Check to make sure the static flag actually works. + # + wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +-if ${lt_cv_prog_compiler_static_works+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } ++if test ${lt_cv_prog_compiler_static_works+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" +@@ -9808,8 +10774,8 @@ else + LDFLAGS=$save_LDFLAGS + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +-$as_echo "$lt_cv_prog_compiler_static_works" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } + + if test yes = "$lt_cv_prog_compiler_static_works"; then + : +@@ -9823,11 +10789,12 @@ fi + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +-if ${lt_cv_prog_compiler_c_o+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 ++printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } ++if test ${lt_cv_prog_compiler_c_o+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest +@@ -9870,19 +10837,20 @@ else + $RM conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +-$as_echo "$lt_cv_prog_compiler_c_o" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +-if ${lt_cv_prog_compiler_c_o+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 ++printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } ++if test ${lt_cv_prog_compiler_c_o+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest +@@ -9925,8 +10893,8 @@ else + $RM conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +-$as_echo "$lt_cv_prog_compiler_c_o" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } + + + +@@ -9934,19 +10902,19 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; } + hard_links=nottested + if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +-$as_echo_n "checking if we can lock with hard links... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 ++printf %s "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +-$as_echo "$hard_links" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 ++printf "%s\n" "$hard_links" >&6; } + if test no = "$hard_links"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 ++printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi + else +@@ -9958,8 +10926,8 @@ fi + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= +@@ -10003,15 +10971,15 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. ++ # Microsoft Visual C++ or Intel C++ Compiler. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) +- # we just hope/assume this is gcc and not c89 (= MSVC++) ++ # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) +@@ -10063,7 +11031,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie + whole_archive_flag_spec= + fi + supports_anon_versioning=no +- case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in ++ case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +@@ -10175,6 +11143,7 @@ _LT_EOF + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes ++ file_list_spec='@' + ;; + + interix[3-9]*) +@@ -10189,7 +11158,7 @@ _LT_EOF + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) +@@ -10232,7 +11201,7 @@ _LT_EOF + compiler_needs_object=yes + ;; + esac +- case `$CC -V 2>&1 | sed 5q` in ++ case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes +@@ -10244,7 +11213,7 @@ _LT_EOF + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi +@@ -10260,7 +11229,7 @@ _LT_EOF + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi +@@ -10392,7 +11361,7 @@ _LT_EOF + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else +- export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' ++ export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + +@@ -10514,21 +11483,23 @@ _LT_EOF + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath + else +- if ${lt_cv_aix_libpath_+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ if test ${lt_cv_aix_libpath_+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { +@@ -10543,7 +11514,7 @@ if ac_fn_c_try_link "$LINENO"; then : + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib +@@ -10567,21 +11538,23 @@ fi + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath + else +- if ${lt_cv_aix_libpath_+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ if test ${lt_cv_aix_libpath_+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { +@@ -10596,7 +11569,7 @@ if ac_fn_c_try_link "$LINENO"; then : + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib +@@ -10659,12 +11632,12 @@ fi + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. ++ # Microsoft Visual C++ or Intel C++ Compiler. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in +- cl*) +- # Native MSVC ++ cl* | icl*) ++ # Native MSVC or ICC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes +@@ -10705,7 +11678,7 @@ fi + fi' + ;; + *) +- # Assume MSVC wrapper ++ # Assume MSVC and ICC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. +@@ -10746,8 +11719,8 @@ fi + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" +- archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" +- module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" ++ archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" ++ module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no +@@ -10781,7 +11754,7 @@ fi + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | dragonfly*) ++ freebsd* | dragonfly* | midnightbsd*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes +@@ -10847,11 +11820,12 @@ fi + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +-$as_echo_n "checking if $CC understands -b... " >&6; } +-if ${lt_cv_prog_compiler__b+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 ++printf %s "checking if $CC understands -b... " >&6; } ++if test ${lt_cv_prog_compiler__b+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" +@@ -10875,8 +11849,8 @@ else + LDFLAGS=$save_LDFLAGS + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +-$as_echo "$lt_cv_prog_compiler__b" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 ++printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } + + if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +@@ -10916,28 +11890,30 @@ fi + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +-if ${lt_cv_irix_exported_symbol+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 ++printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } ++if test ${lt_cv_irix_exported_symbol+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + int foo (void) { return 0; } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + lt_cv_irix_exported_symbol=yes +-else ++else $as_nop + lt_cv_irix_exported_symbol=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +-$as_echo "$lt_cv_irix_exported_symbol" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 ++printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi +@@ -11029,6 +12005,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes ++ file_list_spec='@' + ;; + + osf3*) +@@ -11217,8 +12194,8 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } + fi + fi + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +-$as_echo "$ld_shlibs" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 ++printf "%s\n" "$ld_shlibs" >&6; } + test no = "$ld_shlibs" && can_build_shared=no + + with_gnu_ld=$with_gnu_ld +@@ -11254,18 +12231,19 @@ x|xyes) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +-if ${lt_cv_archive_cmds_need_lc+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 ++printf %s "checking whether -lc should be explicitly linked in... " >&6; } ++if test ${lt_cv_archive_cmds_need_lc+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest +@@ -11283,7 +12261,7 @@ else + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no +@@ -11297,8 +12275,8 @@ else + $RM conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 ++printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac +@@ -11457,8 +12435,8 @@ esac + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +-$as_echo_n "checking dynamic linker characteristics... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 ++printf %s "checking dynamic linker characteristics... " >&6; } + + if test yes = "$GCC"; then + case $host_os in +@@ -11720,7 +12698,7 @@ cygwin* | mingw* | pw32* | cegcc*) + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ++ soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; +@@ -11730,14 +12708,14 @@ cygwin* | mingw* | pw32* | cegcc*) + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ++ library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + +- *,cl*) +- # Native MSVC ++ *,cl* | *,icl*) ++ # Native MSVC or ICC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' +@@ -11756,7 +12734,7 @@ cygwin* | mingw* | pw32* | cegcc*) + done + IFS=$lt_save_ifs + # Convert to MSYS style. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form +@@ -11793,7 +12771,7 @@ cygwin* | mingw* | pw32* | cegcc*) + ;; + + *) +- # Assume MSVC wrapper ++ # Assume MSVC and ICC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; +@@ -11826,7 +12804,7 @@ dgux*) + shlibpath_var=LD_LIBRARY_PATH + ;; + +-freebsd* | dragonfly*) ++freebsd* | dragonfly* | midnightbsd*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then +@@ -12019,9 +12997,10 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH +- if ${lt_cv_shlibpath_overrides_runpath+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ if test ${lt_cv_shlibpath_overrides_runpath+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir +@@ -12031,19 +13010,21 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : +- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : ++if ac_fn_c_try_link "$LINENO" ++then : ++ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null ++then : + lt_cv_shlibpath_overrides_runpath=yes + fi + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir +@@ -12278,8 +13259,8 @@ uts4*) + dynamic_linker=no + ;; + esac +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +-$as_echo "$dynamic_linker" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 ++printf "%s\n" "$dynamic_linker" >&6; } + test no = "$dynamic_linker" && can_build_shared=no + + variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +@@ -12400,8 +13381,8 @@ configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +-$as_echo_n "checking how to hardcode library paths into programs... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 ++printf %s "checking how to hardcode library paths into programs... " >&6; } + hardcode_action= + if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || +@@ -12425,8 +13406,8 @@ else + # directories. + hardcode_action=unsupported + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +-$as_echo "$hardcode_action" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 ++printf "%s\n" "$hardcode_action" >&6; } + + if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then +@@ -12470,11 +13451,12 @@ else + + darwin*) + # if libdl is installed we need to link against it +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +-$as_echo_n "checking for dlopen in -ldl... " >&6; } +-if ${ac_cv_lib_dl_dlopen+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 ++printf %s "checking for dlopen in -ldl... " >&6; } ++if test ${ac_cv_lib_dl_dlopen+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_check_lib_save_LIBS=$LIBS + LIBS="-ldl $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -12483,32 +13465,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif + char dlopen (); + int +-main () ++main (void) + { + return dlopen (); + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + ac_cv_lib_dl_dlopen=yes +-else ++else $as_nop + ac_cv_lib_dl_dlopen=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +-$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +-if test "x$ac_cv_lib_dl_dlopen" = xyes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 ++printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } ++if test "x$ac_cv_lib_dl_dlopen" = xyes ++then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +-else ++else $as_nop + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= +@@ -12528,14 +13509,16 @@ fi + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +-if test "x$ac_cv_func_shl_load" = xyes; then : +- lt_cv_dlopen=shl_load +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +-$as_echo_n "checking for shl_load in -ldld... " >&6; } +-if ${ac_cv_lib_dld_shl_load+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++if test "x$ac_cv_func_shl_load" = xyes ++then : ++ lt_cv_dlopen=shl_load ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 ++printf %s "checking for shl_load in -ldld... " >&6; } ++if test ${ac_cv_lib_dld_shl_load+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_check_lib_save_LIBS=$LIBS + LIBS="-ldld $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -12544,41 +13527,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif + char shl_load (); + int +-main () ++main (void) + { + return shl_load (); + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + ac_cv_lib_dld_shl_load=yes +-else ++else $as_nop + ac_cv_lib_dld_shl_load=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +-$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +-if test "x$ac_cv_lib_dld_shl_load" = xyes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 ++printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } ++if test "x$ac_cv_lib_dld_shl_load" = xyes ++then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +-else ++else $as_nop + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +-if test "x$ac_cv_func_dlopen" = xyes; then : ++if test "x$ac_cv_func_dlopen" = xyes ++then : + lt_cv_dlopen=dlopen +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +-$as_echo_n "checking for dlopen in -ldl... " >&6; } +-if ${ac_cv_lib_dl_dlopen+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 ++printf %s "checking for dlopen in -ldl... " >&6; } ++if test ${ac_cv_lib_dl_dlopen+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_check_lib_save_LIBS=$LIBS + LIBS="-ldl $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -12587,37 +13571,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif + char dlopen (); + int +-main () ++main (void) + { + return dlopen (); + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + ac_cv_lib_dl_dlopen=yes +-else ++else $as_nop + ac_cv_lib_dl_dlopen=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +-$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +-if test "x$ac_cv_lib_dl_dlopen" = xyes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 ++printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } ++if test "x$ac_cv_lib_dl_dlopen" = xyes ++then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +-$as_echo_n "checking for dlopen in -lsvld... " >&6; } +-if ${ac_cv_lib_svld_dlopen+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 ++printf %s "checking for dlopen in -lsvld... " >&6; } ++if test ${ac_cv_lib_svld_dlopen+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_check_lib_save_LIBS=$LIBS + LIBS="-lsvld $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -12626,37 +13610,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif + char dlopen (); + int +-main () ++main (void) + { + return dlopen (); + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + ac_cv_lib_svld_dlopen=yes +-else ++else $as_nop + ac_cv_lib_svld_dlopen=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +-$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +-if test "x$ac_cv_lib_svld_dlopen" = xyes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 ++printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } ++if test "x$ac_cv_lib_svld_dlopen" = xyes ++then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +-$as_echo_n "checking for dld_link in -ldld... " >&6; } +-if ${ac_cv_lib_dld_dld_link+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++else $as_nop ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 ++printf %s "checking for dld_link in -ldld... " >&6; } ++if test ${ac_cv_lib_dld_dld_link+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_check_lib_save_LIBS=$LIBS + LIBS="-ldld $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -12665,30 +13649,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif + char dld_link (); + int +-main () ++main (void) + { + return dld_link (); + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + ac_cv_lib_dld_dld_link=yes +-else ++else $as_nop + ac_cv_lib_dld_dld_link=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +-$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +-if test "x$ac_cv_lib_dld_dld_link" = xyes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 ++printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } ++if test "x$ac_cv_lib_dld_dld_link" = xyes ++then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld + fi + +@@ -12727,11 +13710,12 @@ fi + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +-$as_echo_n "checking whether a program can dlopen itself... " >&6; } +-if ${lt_cv_dlopen_self+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 ++printf %s "checking whether a program can dlopen itself... " >&6; } ++if test ${lt_cv_dlopen_self+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross + else +@@ -12810,7 +13794,7 @@ _LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? +@@ -12828,16 +13812,17 @@ rm -fr conftest* + + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +-$as_echo "$lt_cv_dlopen_self" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 ++printf "%s\n" "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +-if ${lt_cv_dlopen_self_static+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 ++printf %s "checking whether a statically linked program can dlopen itself... " >&6; } ++if test ${lt_cv_dlopen_self_static+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross + else +@@ -12916,7 +13901,7 @@ _LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? +@@ -12934,8 +13919,8 @@ rm -fr conftest* + + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +-$as_echo "$lt_cv_dlopen_self_static" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 ++printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS +@@ -12973,32 +13958,43 @@ fi + + striplib= + old_striplib= +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +-$as_echo_n "checking whether stripping libraries is possible... " >&6; } +-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +-$as_echo "yes" >&6; } +-else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP"; then ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 ++printf %s "checking whether stripping libraries is possible... " >&6; } ++if test -z "$STRIP"; then ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } ++else ++ if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then ++ old_striplib="$STRIP --strip-debug" ++ striplib="$STRIP --strip-unneeded" ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++printf "%s\n" "yes" >&6; } ++ else ++ case $host_os in ++ darwin*) ++ # FIXME - insert some real tests, host_os isn't really good enough + striplib="$STRIP -x" + old_striplib="$STRIP -S" +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +-$as_echo "yes" >&6; } +- else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } +- fi +- ;; +- *) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } +- ;; +- esac ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++printf "%s\n" "yes" >&6; } ++ ;; ++ freebsd*) ++ if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then ++ old_striplib="$STRIP --strip-debug" ++ striplib="$STRIP --strip-unneeded" ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++printf "%s\n" "yes" >&6; } ++ else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } ++ fi ++ ;; ++ *) ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } ++ ;; ++ esac ++ fi + fi + + +@@ -13013,13 +14009,13 @@ fi + + + # Report what library types will actually be built +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +-$as_echo_n "checking if libtool supports shared libraries... " >&6; } +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +-$as_echo "$can_build_shared" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 ++printf %s "checking if libtool supports shared libraries... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 ++printf "%s\n" "$can_build_shared" >&6; } + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +-$as_echo_n "checking whether to build shared libraries... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 ++printf %s "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and +@@ -13043,15 +14039,15 @@ $as_echo_n "checking whether to build shared libraries... " >&6; } + fi + ;; + esac +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +-$as_echo "$enable_shared" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 ++printf "%s\n" "$enable_shared" >&6; } + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +-$as_echo_n "checking whether to build static libraries... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 ++printf %s "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +-$as_echo "$enable_static" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 ++printf "%s\n" "$enable_static" >&6; } + + + +@@ -13073,36 +14069,32 @@ ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +-$as_echo_n "checking how to run the C++ preprocessor... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 ++printf %s "checking how to run the C++ preprocessor... " >&6; } + if test -z "$CXXCPP"; then +- if ${ac_cv_prog_CXXCPP+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- # Double quotes because CXXCPP needs to be expanded +- for CXXCPP in "$CXX -E" "/lib/cpp" ++ if test ${ac_cv_prog_CXXCPP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ # Double quotes because $CXX needs to be expanded ++ for CXXCPP in "$CXX -E" cpp /lib/cpp + do + ac_preproc_ok=false + for ac_cxx_preproc_warn_flag in '' yes + do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++#include + Syntax error + _ACEOF +-if ac_fn_cxx_try_cpp "$LINENO"; then : ++if ac_fn_cxx_try_cpp "$LINENO" ++then : + +-else ++else $as_nop + # Broken: fails on valid input. + continue + fi +@@ -13114,10 +14106,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext + /* end confdefs.h. */ + #include + _ACEOF +-if ac_fn_cxx_try_cpp "$LINENO"; then : ++if ac_fn_cxx_try_cpp "$LINENO" ++then : + # Broken: success on invalid input. + continue +-else ++else $as_nop + # Passes both tests. + ac_preproc_ok=: + break +@@ -13127,7 +14120,8 @@ rm -f conftest.err conftest.i conftest.$ac_ext + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. + rm -f conftest.i conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then : ++if $ac_preproc_ok ++then : + break + fi + +@@ -13139,29 +14133,24 @@ fi + else + ac_cv_prog_CXXCPP=$CXXCPP + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +-$as_echo "$CXXCPP" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 ++printf "%s\n" "$CXXCPP" >&6; } + ac_preproc_ok=false + for ac_cxx_preproc_warn_flag in '' yes + do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. +- # Prefer to if __STDC__ is defined, since +- # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-#ifdef __STDC__ +-# include +-#else +-# include +-#endif ++#include + Syntax error + _ACEOF +-if ac_fn_cxx_try_cpp "$LINENO"; then : ++if ac_fn_cxx_try_cpp "$LINENO" ++then : + +-else ++else $as_nop + # Broken: fails on valid input. + continue + fi +@@ -13173,10 +14162,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext + /* end confdefs.h. */ + #include + _ACEOF +-if ac_fn_cxx_try_cpp "$LINENO"; then : ++if ac_fn_cxx_try_cpp "$LINENO" ++then : + # Broken: success on invalid input. + continue +-else ++else $as_nop + # Passes both tests. + ac_preproc_ok=: + break +@@ -13186,11 +14176,12 @@ rm -f conftest.err conftest.i conftest.$ac_ext + done + # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. + rm -f conftest.i conftest.err conftest.$ac_ext +-if $ac_preproc_ok; then : ++if $ac_preproc_ok ++then : + +-else +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++else $as_nop ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check + See \`config.log' for more details" "$LINENO" 5; } + fi +@@ -13326,17 +14317,18 @@ cc_basename=$func_cc_basename_result + + + # Check whether --with-gnu-ld was given. +-if test "${with_gnu_ld+set}" = set; then : ++if test ${with_gnu_ld+y} ++then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +-else ++else $as_nop + with_gnu_ld=no + fi + + ac_prog=ld + if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +-$as_echo_n "checking for ld used by $CC... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 ++printf %s "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw +@@ -13365,15 +14357,16 @@ $as_echo_n "checking for ld used by $CC... " >&6; } + ;; + esac + elif test yes = "$with_gnu_ld"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +-$as_echo_n "checking for GNU ld... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 ++printf %s "checking for GNU ld... " >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +-$as_echo_n "checking for non-GNU ld... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 ++printf %s "checking for non-GNU ld... " >&6; } + fi +-if ${lt_cv_path_LD+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++if test ${lt_cv_path_LD+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do +@@ -13402,18 +14395,19 @@ fi + + LD=$lt_cv_path_LD + if test -n "$LD"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +-$as_echo "$LD" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 ++printf "%s\n" "$LD" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +-if ${lt_cv_prog_gnu_ld+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 ++printf %s "checking if the linker ($LD) is GNU ld... " >&6; } ++if test ${lt_cv_prog_gnu_ld+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + # I'd rather use --version here, but apparently some GNU lds only accept -v. + case `$LD -v 2>&1 &1 &5 +-$as_echo "$lt_cv_prog_gnu_ld" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 ++printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } + with_gnu_ld=$lt_cv_prog_gnu_ld + + +@@ -13479,8 +14473,8 @@ with_gnu_ld=$lt_cv_prog_gnu_ld + fi + + # PORTME: fill in a description of your system's C++ link characteristics +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) +@@ -13618,21 +14612,23 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath + else +- if ${lt_cv_aix_libpath__CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ if test ${lt_cv_aix_libpath__CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_cxx_try_link "$LINENO"; then : ++if ac_fn_cxx_try_link "$LINENO" ++then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { +@@ -13647,7 +14643,7 @@ if ac_fn_cxx_try_link "$LINENO"; then : + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib +@@ -13672,21 +14668,23 @@ fi + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath + else +- if ${lt_cv_aix_libpath__CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ if test ${lt_cv_aix_libpath__CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_cxx_try_link "$LINENO"; then : ++if ac_fn_cxx_try_link "$LINENO" ++then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { +@@ -13701,7 +14699,7 @@ if ac_fn_cxx_try_link "$LINENO"; then : + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib +@@ -13766,8 +14764,8 @@ fi + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in +- ,cl* | no,cl*) +- # Native MSVC ++ ,cl* | no,cl* | ,icl* | no,icl*) ++ # Native MSVC or ICC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' +@@ -13858,11 +14856,11 @@ fi + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" +- archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" +- module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" ++ archive_expsym_cmds_CXX="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" ++ module_expsym_cmds_CXX="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" +- archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" ++ archive_expsym_cmds_CXX="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + + else +@@ -13897,6 +14895,7 @@ fi + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes_CXX=yes ++ file_list_spec_CXX='@' + ;; + + dgux*) +@@ -13927,7 +14926,7 @@ fi + archive_cmds_need_lc_CXX=no + ;; + +- freebsd* | dragonfly*) ++ freebsd* | dragonfly* | midnightbsd*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes +@@ -14064,7 +15063,7 @@ fi + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds_CXX='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in +@@ -14204,13 +15203,13 @@ fi + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) +- case `$CC -V 2>&1 | sed 5q` in ++ case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' +@@ -14552,8 +15551,8 @@ fi + ;; + esac + +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +-$as_echo "$ld_shlibs_CXX" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 ++printf "%s\n" "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + GCC_CXX=$GXX +@@ -14591,7 +15590,7 @@ esac + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. +@@ -14867,7 +15866,7 @@ lt_prog_compiler_static_CXX= + ;; + esac + ;; +- freebsd* | dragonfly*) ++ freebsd* | dragonfly* | midnightbsd*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) +@@ -14950,7 +15949,7 @@ lt_prog_compiler_static_CXX= + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) +- case `$CC -V 2>&1 | sed 5q` in ++ case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' +@@ -15072,26 +16071,28 @@ case $host_os in + ;; + esac + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +-$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +-if ${lt_cv_prog_compiler_pic_CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 ++printf %s "checking for $compiler option to produce PIC... " >&6; } ++if test ${lt_cv_prog_compiler_pic_CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +-$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_pic_CXX" >&6; } + lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + + # + # Check to make sure the PIC flag actually works. + # + if test -n "$lt_prog_compiler_pic_CXX"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +-if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 ++printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } ++if test ${lt_cv_prog_compiler_pic_works_CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext +@@ -15122,8 +16123,8 @@ else + $RM conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +-$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + + if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then + case $lt_prog_compiler_pic_CXX in +@@ -15145,11 +16146,12 @@ fi + # Check to make sure the static flag actually works. + # + wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +-if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } ++if test ${lt_cv_prog_compiler_static_works_CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" +@@ -15173,8 +16175,8 @@ else + LDFLAGS=$save_LDFLAGS + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +-$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; } + + if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then + : +@@ -15185,11 +16187,12 @@ fi + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 ++printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } ++if test ${lt_cv_prog_compiler_c_o_CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest +@@ -15232,16 +16235,17 @@ else + $RM conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 ++printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } ++if test ${lt_cv_prog_compiler_c_o_CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest +@@ -15284,8 +16288,8 @@ else + $RM conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 ++printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + +@@ -15293,19 +16297,19 @@ $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + hard_links=nottested + if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +-$as_echo_n "checking if we can lock with hard links... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 ++printf %s "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +-$as_echo "$hard_links" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 ++printf "%s\n" "$hard_links" >&6; } + if test no = "$hard_links"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 ++printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi + else +@@ -15314,8 +16318,8 @@ fi + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +@@ -15332,7 +16336,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else +- export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' ++ export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) +@@ -15340,7 +16344,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in +- cl*) ++ cl* | icl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) +@@ -15354,8 +16358,8 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie + ;; + esac + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +-$as_echo "$ld_shlibs_CXX" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 ++printf "%s\n" "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + with_gnu_ld_CXX=$with_gnu_ld +@@ -15382,18 +16386,19 @@ x|xyes) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +-if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 ++printf %s "checking whether -lc should be explicitly linked in... " >&6; } ++if test ${lt_cv_archive_cmds_need_lc_CXX+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest +@@ -15411,7 +16416,7 @@ else + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no +@@ -15425,8 +16430,8 @@ else + $RM conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +-$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 ++printf "%s\n" "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac +@@ -15495,8 +16500,8 @@ esac + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +-$as_echo_n "checking dynamic linker characteristics... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 ++printf %s "checking dynamic linker characteristics... " >&6; } + + library_names_spec= + libname_spec='lib$name' +@@ -15687,7 +16692,7 @@ cygwin* | mingw* | pw32* | cegcc*) + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ++ soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + ;; + mingw* | cegcc*) +@@ -15696,14 +16701,14 @@ cygwin* | mingw* | pw32* | cegcc*) + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ++ library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + +- *,cl*) +- # Native MSVC ++ *,cl* | *,icl*) ++ # Native MSVC or ICC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' +@@ -15722,7 +16727,7 @@ cygwin* | mingw* | pw32* | cegcc*) + done + IFS=$lt_save_ifs + # Convert to MSYS style. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form +@@ -15759,7 +16764,7 @@ cygwin* | mingw* | pw32* | cegcc*) + ;; + + *) +- # Assume MSVC wrapper ++ # Assume MSVC and ICC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; +@@ -15791,7 +16796,7 @@ dgux*) + shlibpath_var=LD_LIBRARY_PATH + ;; + +-freebsd* | dragonfly*) ++freebsd* | dragonfly* | midnightbsd*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then +@@ -15984,9 +16989,10 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH +- if ${lt_cv_shlibpath_overrides_runpath+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ if test ${lt_cv_shlibpath_overrides_runpath+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir +@@ -15996,19 +17002,21 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_cxx_try_link "$LINENO"; then : +- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : ++if ac_fn_cxx_try_link "$LINENO" ++then : ++ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null ++then : + lt_cv_shlibpath_overrides_runpath=yes + fi + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir +@@ -16243,8 +17251,8 @@ uts4*) + dynamic_linker=no + ;; + esac +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +-$as_echo "$dynamic_linker" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 ++printf "%s\n" "$dynamic_linker" >&6; } + test no = "$dynamic_linker" && can_build_shared=no + + variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +@@ -16308,8 +17316,8 @@ configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +-$as_echo_n "checking how to hardcode library paths into programs... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 ++printf %s "checking how to hardcode library paths into programs... " >&6; } + hardcode_action_CXX= + if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || +@@ -16333,8 +17341,8 @@ else + # directories. + hardcode_action_CXX=unsupported + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +-$as_echo "$hardcode_action_CXX" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 ++printf "%s\n" "$hardcode_action_CXX" >&6; } + + if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then +@@ -16399,11 +17407,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}readelf", so it can be a program name with args. + set dummy ${ac_tool_prefix}readelf; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_READELF+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_READELF+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$READELF"; then + ac_cv_prog_READELF="$READELF" # Let the user override the test. + else +@@ -16411,11 +17420,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_READELF="${ac_tool_prefix}readelf" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -16426,11 +17439,11 @@ fi + fi + READELF=$ac_cv_prog_READELF + if test -n "$READELF"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5 +-$as_echo "$READELF" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5 ++printf "%s\n" "$READELF" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -16439,11 +17452,12 @@ if test -z "$ac_cv_prog_READELF"; then + ac_ct_READELF=$READELF + # Extract the first word of "readelf", so it can be a program name with args. + set dummy readelf; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_prog_ac_ct_READELF+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_prog_ac_ct_READELF+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + if test -n "$ac_ct_READELF"; then + ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test. + else +@@ -16451,11 +17465,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_READELF="readelf" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -16466,11 +17484,11 @@ fi + fi + ac_ct_READELF=$ac_cv_prog_ac_ct_READELF + if test -n "$ac_ct_READELF"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_READELF" >&5 +-$as_echo "$ac_ct_READELF" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_READELF" >&5 ++printf "%s\n" "$ac_ct_READELF" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + if test "x$ac_ct_READELF" = x; then +@@ -16478,8 +17496,8 @@ fi + else + case $cross_compiling:$ac_tool_warned in + yes:) +-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} + ac_tool_warned=yes ;; + esac + READELF=$ac_ct_READELF +@@ -16494,17 +17512,19 @@ fi + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 +-$as_echo_n "checking size of size_t... " >&6; } +-if ${ac_cv_sizeof_size_t+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : +- +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 ++printf %s "checking size of size_t... " >&6; } ++if test ${ac_cv_sizeof_size_t+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default" ++then : ++ ++else $as_nop + if test "$ac_cv_type_size_t" = yes; then +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error 77 "cannot compute sizeof (size_t) + See \`config.log' for more details" "$LINENO" 5; } + else +@@ -16513,75 +17533,86 @@ See \`config.log' for more details" "$LINENO" 5; } + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 +-$as_echo "$ac_cv_sizeof_size_t" >&6; } +- +- +- +-cat >>confdefs.h <<_ACEOF +-#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t +-_ACEOF +- +- ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 ++printf "%s\n" "$ac_cv_sizeof_size_t" >&6; } ++ ++ ++ ++printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h ++ ++ ++ ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5 ++printf %s "checking for C compiler vendor... " >&6; } ++if test ${ax_cv_c_compiler_vendor+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ ++ vendors=" ++ intel: __ICC,__ECC,__INTEL_COMPILER ++ ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__,__ibmxl__ ++ pathscale: __PATHCC__,__PATHSCALE__ ++ clang: __clang__ ++ cray: _CRAYC ++ fujitsu: __FUJITSU ++ sdcc: SDCC,__SDCC ++ sx: _SX ++ nvhpc: __NVCOMPILER ++ portland: __PGI ++ gnu: __GNUC__ ++ sun: __SUNPRO_C,__SUNPRO_CC,__SUNPRO_F90,__SUNPRO_F95 ++ hp: __HP_cc,__HP_aCC ++ dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER ++ borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ ++ comeau: __COMO__ ++ kai: __KCC ++ lcc: __LCC__ ++ sgi: __sgi,sgi ++ microsoft: _MSC_VER ++ metrowerks: __MWERKS__ ++ watcom: __WATCOMC__ ++ tcc: __TINYC__ ++ unknown: UNKNOWN ++ " ++ for ventest in $vendors; do ++ case $ventest in ++ *:) ++ vendor=$ventest ++ continue ++ ;; ++ *) ++ vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ++ ;; ++ esac + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5 +-$as_echo_n "checking for C compiler vendor... " >&6; } +-if ${ax_cv_c_compiler_vendor+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- # note: don't check for gcc first since some other compilers define __GNUC__ +- vendors="intel: __ICC,__ECC,__INTEL_COMPILER +- ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ +- pathscale: __PATHCC__,__PATHSCALE__ +- clang: __clang__ +- cray: _CRAYC +- fujitsu: __FUJITSU +- sdcc: SDCC, __SDCC +- gnu: __GNUC__ +- sun: __SUNPRO_C,__SUNPRO_CC +- hp: __HP_cc,__HP_aCC +- dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER +- borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ +- comeau: __COMO__ +- kai: __KCC +- lcc: __LCC__ +- sgi: __sgi,sgi +- microsoft: _MSC_VER +- metrowerks: __MWERKS__ +- watcom: __WATCOMC__ +- portland: __PGI +- tcc: __TINYC__ +- unknown: UNKNOWN" +- for ventest in $vendors; do +- case $ventest in +- *:) vendor=$ventest; continue ;; +- *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; +- esac +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + +- #if !($vencpp) +- thisisanerror; +- #endif ++#if !($vencpp) ++ thisisanerror; ++#endif + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + break + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- done +- ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1` ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ++ done ++ ++ ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1` + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5 +-$as_echo "$ax_cv_c_compiler_vendor" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5 ++printf "%s\n" "$ax_cv_c_compiler_vendor" >&6; } + + + +@@ -16589,15 +17620,16 @@ $as_echo "$ax_cv_c_compiler_vendor" >&6; } + + + # Check whether --enable-portable-binary was given. +-if test "${enable_portable_binary+set}" = set; then : ++if test ${enable_portable_binary+y} ++then : + enableval=$enable_portable_binary; acx_maxopt_portable=$enableval +-else ++else $as_nop + acx_maxopt_portable=no + fi + + + # Try to determine "good" native compiler flags if none specified via CFLAGS +-if test "$ac_test_CFLAGS" != "set"; then ++if test "x$ac_test_CFLAGS" = "x"; then + case $ax_cv_c_compiler_vendor in + dec) CFLAGS="$CFLAGS -newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" + if test "x$acx_maxopt_portable" = xno; then +@@ -16619,12 +17651,13 @@ if test "$ac_test_CFLAGS" != "set"; then + else + xlc_opt="-qtune=auto" + fi +- as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$xlc_opt" | $as_tr_sh` +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5 +-$as_echo_n "checking whether C compiler accepts $xlc_opt... " >&6; } +-if eval \${$as_CACHEVAR+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags__$xlc_opt" | $as_tr_sh` ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $xlc_opt" >&5 ++printf %s "checking whether C compiler accepts $xlc_opt... " >&6; } ++if eval test \${$as_CACHEVAR+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $xlc_opt" +@@ -16632,27 +17665,29 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + eval "$as_CACHEVAR=yes" +-else ++else $as_nop + eval "$as_CACHEVAR=no" + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags + fi + eval ac_res=\$$as_CACHEVAR +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++printf "%s\n" "$ac_res" >&6; } ++if eval test \"x\$"$as_CACHEVAR"\" = x"yes" ++then : + CFLAGS="$CFLAGS -O3 -qansialias -w $xlc_opt" +-else ++else $as_nop + CFLAGS="$CFLAGS -O3 -qansialias -w" + echo "******************************************************" + echo "* You seem to have the IBM C compiler. It is *" +@@ -16682,19 +17717,21 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 +-$as_echo_n "checking for x86 cpuid 0 output... " >&6; } +-if ${ax_cv_gcc_x86_cpuid_0+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if test "$cross_compiling" = yes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 ++printf %s "checking for x86 cpuid 0 output... " >&6; } ++if test ${ax_cv_gcc_x86_cpuid_0+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test "$cross_compiling" = yes ++then : + ax_cv_gcc_x86_cpuid_0=unknown +-else ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +-main () ++main (void) + { + + int op = 0, level = 0, eax, ebx, ecx, edx; +@@ -16714,9 +17751,10 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_run "$LINENO" ++then : + ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid +-else ++else $as_nop + ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +@@ -16724,8 +17762,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 +-$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 ++printf "%s\n" "$ax_cv_gcc_x86_cpuid_0" >&6; } + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -16741,19 +17779,21 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 +-$as_echo_n "checking for x86 cpuid 1 output... " >&6; } +-if ${ax_cv_gcc_x86_cpuid_1+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if test "$cross_compiling" = yes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 ++printf %s "checking for x86 cpuid 1 output... " >&6; } ++if test ${ax_cv_gcc_x86_cpuid_1+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test "$cross_compiling" = yes ++then : + ax_cv_gcc_x86_cpuid_1=unknown +-else ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +-main () ++main (void) + { + + int op = 1, level = 0, eax, ebx, ecx, edx; +@@ -16773,9 +17813,10 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_run "$LINENO" ++then : + ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid +-else ++else $as_nop + ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +@@ -16783,8 +17824,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 +-$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 ++printf "%s\n" "$ax_cv_gcc_x86_cpuid_1" >&6; } + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -16812,12 +17853,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + esac + if test "x$icc_flags" != x; then + for flag in $icc_flags; do +- as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +-$as_echo_n "checking whether C compiler accepts $flag... " >&6; } +-if eval \${$as_CACHEVAR+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags__$flag" | $as_tr_sh` ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 ++printf %s "checking whether C compiler accepts $flag... " >&6; } ++if eval test \${$as_CACHEVAR+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $flag" +@@ -16825,56 +17867,65 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + eval "$as_CACHEVAR=yes" +-else ++else $as_nop + eval "$as_CACHEVAR=no" + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags + fi + eval ac_res=\$$as_CACHEVAR +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++printf "%s\n" "$ac_res" >&6; } ++if eval test \"x\$"$as_CACHEVAR"\" = x"yes" ++then : + icc_archflag=$flag; break +-else ++else $as_nop + : + fi + + done + fi +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5 +-$as_echo_n "checking for icc architecture flag... " >&6; } +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5 +-$as_echo "$icc_archflag" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for icc architecture flag" >&5 ++printf %s "checking for icc architecture flag... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $icc_archflag" >&5 ++printf "%s\n" "$icc_archflag" >&6; } + if test "x$icc_archflag" != xunknown; then + CFLAGS="$CFLAGS $icc_archflag" + fi + fi + ;; + ++ nvhpc) ++ # default optimization flags for nvhpc ++ CFLAGS="$CFLAGS -O3" ++ ;; ++ + gnu) + # default optimization flags for gcc on all systems + CFLAGS="$CFLAGS -O3 -fomit-frame-pointer" + + # -malign-double for x86 systems +- # libffi local change -- don't align double, as it changes the ABI ++ # LIBFFI_LOCAL: don't do this. ++ # The testsuite doesn't use these flags and we'll get test failures. + # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double") + + # -fstrict-aliasing for gcc-2.95+ +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5 +-$as_echo_n "checking whether C compiler accepts -fstrict-aliasing... " >&6; } +-if ${ax_cv_check_cflags___fstrict_aliasing+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstrict-aliasing" >&5 ++printf %s "checking whether C compiler accepts -fstrict-aliasing... " >&6; } ++if test ${ax_cv_check_cflags___fstrict_aliasing+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fstrict-aliasing" +@@ -16882,36 +17933,39 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ax_cv_check_cflags___fstrict_aliasing=yes +-else ++else $as_nop + ax_cv_check_cflags___fstrict_aliasing=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstrict_aliasing" >&5 +-$as_echo "$ax_cv_check_cflags___fstrict_aliasing" >&6; } +-if test "x$ax_cv_check_cflags___fstrict_aliasing" = xyes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstrict_aliasing" >&5 ++printf "%s\n" "$ax_cv_check_cflags___fstrict_aliasing" >&6; } ++if test "x$ax_cv_check_cflags___fstrict_aliasing" = xyes ++then : + CFLAGS="$CFLAGS -fstrict-aliasing" +-else ++else $as_nop + : + fi + + + # note that we enable "unsafe" fp optimization with other compilers, too +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5 +-$as_echo_n "checking whether C compiler accepts -ffast-math... " >&6; } +-if ${ax_cv_check_cflags___ffast_math+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -ffast-math" >&5 ++printf %s "checking whether C compiler accepts -ffast-math... " >&6; } ++if test ${ax_cv_check_cflags___ffast_math+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -ffast-math" +@@ -16919,26 +17973,28 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ax_cv_check_cflags___ffast_math=yes +-else ++else $as_nop + ax_cv_check_cflags___ffast_math=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___ffast_math" >&5 +-$as_echo "$ax_cv_check_cflags___ffast_math" >&6; } +-if test "x$ax_cv_check_cflags___ffast_math" = xyes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___ffast_math" >&5 ++printf "%s\n" "$ax_cv_check_cflags___ffast_math" >&6; } ++if test "x$ax_cv_check_cflags___ffast_math" = xyes ++then : + CFLAGS="$CFLAGS -ffast-math" +-else ++else $as_nop + : + fi + +@@ -16950,20 +18006,22 @@ fi + + + # Check whether --with-gcc-arch was given. +-if test "${with_gcc_arch+set}" = set; then : ++if test ${with_gcc_arch+y} ++then : + withval=$with_gcc_arch; ax_gcc_arch=$withval +-else ++else $as_nop + ax_gcc_arch=yes + fi + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 +-$as_echo_n "checking for gcc architecture flag... " >&6; } +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 +-$as_echo "" >&6; } +-if ${ax_cv_gcc_archflag+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 ++printf %s "checking for gcc architecture flag... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 ++printf "%s\n" "" >&6; } ++if test ${ax_cv_gcc_archflag+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + ax_cv_gcc_archflag="unknown" + +@@ -16981,19 +18039,21 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 +-$as_echo_n "checking for x86 cpuid 0 output... " >&6; } +-if ${ax_cv_gcc_x86_cpuid_0+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if test "$cross_compiling" = yes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 0 output" >&5 ++printf %s "checking for x86 cpuid 0 output... " >&6; } ++if test ${ax_cv_gcc_x86_cpuid_0+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test "$cross_compiling" = yes ++then : + ax_cv_gcc_x86_cpuid_0=unknown +-else ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +-main () ++main (void) + { + + int op = 0, level = 0, eax, ebx, ecx, edx; +@@ -17013,9 +18073,10 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_run "$LINENO" ++then : + ax_cv_gcc_x86_cpuid_0=`cat conftest_cpuid`; rm -f conftest_cpuid +-else ++else $as_nop + ax_cv_gcc_x86_cpuid_0=unknown; rm -f conftest_cpuid + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +@@ -17023,8 +18084,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 +-$as_echo "$ax_cv_gcc_x86_cpuid_0" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0" >&5 ++printf "%s\n" "$ax_cv_gcc_x86_cpuid_0" >&6; } + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -17040,19 +18101,21 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 +-$as_echo_n "checking for x86 cpuid 1 output... " >&6; } +-if ${ax_cv_gcc_x86_cpuid_1+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if test "$cross_compiling" = yes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for x86 cpuid 1 output" >&5 ++printf %s "checking for x86 cpuid 1 output... " >&6; } ++if test ${ax_cv_gcc_x86_cpuid_1+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test "$cross_compiling" = yes ++then : + ax_cv_gcc_x86_cpuid_1=unknown +-else ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +-main () ++main (void) + { + + int op = 1, level = 0, eax, ebx, ecx, edx; +@@ -17072,9 +18135,10 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_run "$LINENO" ++then : + ax_cv_gcc_x86_cpuid_1=`cat conftest_cpuid`; rm -f conftest_cpuid +-else ++else $as_nop + ax_cv_gcc_x86_cpuid_1=unknown; rm -f conftest_cpuid + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +@@ -17082,8 +18146,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 +-$as_echo "$ax_cv_gcc_x86_cpuid_1" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_1" >&5 ++printf "%s\n" "$ax_cv_gcc_x86_cpuid_1" >&6; } + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -17166,11 +18230,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + sparc*) + # Extract the first word of "prtdiag", so it can be a program name with args. + set dummy prtdiag; ac_word=$2 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +-$as_echo_n "checking for $ac_word... " >&6; } +-if ${ac_cv_path_PRTDIAG+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++printf %s "checking for $ac_word... " >&6; } ++if test ${ac_cv_path_PRTDIAG+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + case $PRTDIAG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PRTDIAG="$PRTDIAG" # Let the user override the test with a path. +@@ -17181,11 +18246,15 @@ as_dummy="$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/" + for as_dir in $as_dummy + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac + for ac_exec_ext in '' $ac_executable_extensions; do +- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_path_PRTDIAG="$as_dir/$ac_word$ac_exec_ext" +- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ++ ac_cv_path_PRTDIAG="$as_dir$ac_word$ac_exec_ext" ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi + done +@@ -17198,11 +18267,11 @@ esac + fi + PRTDIAG=$ac_cv_path_PRTDIAG + if test -n "$PRTDIAG"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5 +-$as_echo "$PRTDIAG" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PRTDIAG" >&5 ++printf "%s\n" "$PRTDIAG" >&6; } + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++printf "%s\n" "no" >&6; } + fi + + +@@ -17287,12 +18356,13 @@ fi + for flag_prefix in $flag_prefixes; do + for arch in $ax_gcc_arch; do + flag="$flag_prefix$arch" +- as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh` +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +-$as_echo_n "checking whether C compiler accepts $flag... " >&6; } +-if eval \${$as_CACHEVAR+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags__$flag" | $as_tr_sh` ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 ++printf %s "checking whether C compiler accepts $flag... " >&6; } ++if eval test \${$as_CACHEVAR+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $flag" +@@ -17300,31 +18370,33 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + eval "$as_CACHEVAR=yes" +-else ++else $as_nop + eval "$as_CACHEVAR=no" + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags + fi + eval ac_res=\$$as_CACHEVAR +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++printf "%s\n" "$ac_res" >&6; } ++if eval test \"x\$"$as_CACHEVAR"\" = x"yes" ++then : + if test "x$ax_cv_c_compiler_vendor" = xclang; then + if test "x$acx_maxopt_portable" = xyes; then + if test "x$flag" = "x-march=$arch"; then flag=-mtune=$arch; fi + fi + fi; ax_cv_gcc_archflag=$flag; break +-else ++else $as_nop + : + fi + +@@ -17337,10 +18409,10 @@ fi # $GCC=yes + + fi + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 +-$as_echo_n "checking for gcc architecture flag... " >&6; } +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5 +-$as_echo "$ax_cv_gcc_archflag" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gcc architecture flag" >&5 ++printf %s "checking for gcc architecture flag... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_archflag" >&5 ++printf "%s\n" "$ax_cv_gcc_archflag" >&6; } + if test "x$ax_cv_gcc_archflag" = xunknown; then + : + else +@@ -17366,12 +18438,13 @@ fi + CFLAGS="$CFLAGS -O3" + fi + +- as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$CFLAGS" | $as_tr_sh` +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5 +-$as_echo_n "checking whether C compiler accepts $CFLAGS... " >&6; } +-if eval \${$as_CACHEVAR+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags__$CFLAGS" | $as_tr_sh` ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $CFLAGS" >&5 ++printf %s "checking whether C compiler accepts $CFLAGS... " >&6; } ++if eval test \${$as_CACHEVAR+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS $CFLAGS" +@@ -17379,27 +18452,29 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + eval "$as_CACHEVAR=yes" +-else ++else $as_nop + eval "$as_CACHEVAR=no" + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags + fi + eval ac_res=\$$as_CACHEVAR +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +-$as_echo "$ac_res" >&6; } +-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++printf "%s\n" "$ac_res" >&6; } ++if eval test \"x\$"$as_CACHEVAR"\" = x"yes" ++then : + : +-else ++else $as_nop + + echo "" + echo "********************************************************" +@@ -17417,82 +18492,133 @@ fi + # The AX_CFLAGS_WARN_ALL macro doesn't currently work for sunpro + # compiler. + if test "$ax_cv_c_compiler_vendor" != "sun"; then +- ac_ext=c ++ ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for maximum warnings" >&5 +-$as_echo_n "checking CFLAGS for maximum warnings... " >&6; } +-if ${ac_cv_cflags_warn_all+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- ac_cv_cflags_warn_all="no, unknown" +-ac_save_CFLAGS="$CFLAGS" +-for ac_arg in "-warn all % -warn all" "-pedantic % -Wall" "-xstrconst % -v" "-std1 % -verbose -w0 -warnprotos" "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" "-ansi -ansiE % -fullwarn" "+ESlit % +w1" "-Xc % -pvctl,fullmsg" "-h conform % -h msglevel 2" # +-do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ + +-int +-main () +-{ + +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- ac_cv_cflags_warn_all=`echo $ac_arg | sed -e 's,.*% *,,'` ; break +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-CFLAGS="$ac_save_CFLAGS" + +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5 +-$as_echo "$ac_cv_cflags_warn_all" >&6; } + ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CFLAGS for most reasonable warnings" >&5 ++printf %s "checking CFLAGS for most reasonable warnings... " >&6; } ++if test ${ac_cv_cflags_warn_all+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + +-case ".$ac_cv_cflags_warn_all" in +- .ok|.ok,*) ;; +- .|.no|.no,*) ;; +- *) +-if ${CFLAGS+:} false; then : ++ ac_cv_cflags_warn_all="" ++ ac_save_cflags_warn_all_found="yes" ++ case "$ax_cv_c_compiler_vendor" in #( ++ intel) : ++ ac_cv_cflags_warn_all="-w2" ;; #( ++ ibm) : ++ ac_cv_cflags_warn_all="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" ;; #( ++ pathscale) : ++ ;; #( ++ clang) : ++ ac_cv_cflags_warn_all="-Wall" ;; #( ++ cray) : ++ ac_cv_cflags_warn_all="-h msglevel 2" ;; #( ++ fujitsu) : ++ ;; #( ++ sdcc) : ++ ;; #( ++ sx) : ++ ac_cv_cflags_warn_all="-pvctl,fullmsg" ;; #( ++ portland) : ++ ;; #( ++ gnu) : ++ ac_cv_cflags_warn_all="-Wall" ;; #( ++ sun) : ++ ac_cv_cflags_warn_all="-v" ;; #( ++ hp) : ++ ac_cv_cflags_warn_all="+w1" ;; #( ++ dec) : ++ ac_cv_cflags_warn_all="-verbose -w0 -warnprotos" ;; #( ++ borland) : ++ ;; #( ++ comeau) : ++ ;; #( ++ kai) : ++ ;; #( ++ lcc) : ++ ;; #( ++ sgi) : ++ ac_cv_cflags_warn_all="-fullwarn" ;; #( ++ microsoft) : ++ ;; #( ++ metrowerks) : ++ ;; #( ++ watcom) : ++ ;; #( ++ tcc) : ++ ;; #( ++ unknown) : ++ ++ ac_cv_cflags_warn_all="" ++ ac_save_cflags_warn_all_found="no" ++ ;; #( ++ *) : ++ ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unknown compiler vendor returned by AX_COMPILER_VENDOR" >&5 ++printf "%s\n" "$as_me: WARNING: Unknown compiler vendor returned by AX_COMPILER_VENDOR" >&2;} ++ ac_cv_cflags_warn_all="" ++ ac_save_cflags_warn_all_found="no" ++ ++ ;; ++esac ++ ++ if test "x$ac_save_cflags_warn_all_found" = "xyes" ++then : ++ if test "x$ac_cv_cflags_warn_all" != "x" ++then : ++ ++if test ${CFLAGS+y} ++then : + + case " $CFLAGS " in #( + *" $ac_cv_cflags_warn_all "*) : +- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$ac_cv_cflags_warn_all"; } >&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$ac_cv_cflags_warn_all"; } >&5 + (: CFLAGS already contains $ac_cv_cflags_warn_all) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + +- as_fn_append CFLAGS " $ac_cv_cflags_warn_all" +- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5 ++ CFLAGS="$ac_cv_cflags_warn_all $CFLAGS" ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5 + (: CFLAGS="$CFLAGS") 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; + esac + +-else ++else $as_nop + + CFLAGS=$ac_cv_cflags_warn_all +- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5 + (: CFLAGS="$CFLAGS") 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + + fi +- ;; +-esac + +-ac_ext=c ++fi ++ ++else $as_nop ++ true ++ ++fi ++fi ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_warn_all" >&5 ++printf "%s\n" "$ac_cv_cflags_warn_all" >&6; } ++ ++ ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +@@ -17512,17 +18638,18 @@ set compiler_vendor "$ax_cv_c_compiler_vendor" + EOF + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +-$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +-if test "${enable_maintainer_mode+set}" = set; then : ++if test ${enable_maintainer_mode+y} ++then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +-else ++else $as_nop + USE_MAINTAINER_MODE=no + fi + +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +-$as_echo "$USE_MAINTAINER_MODE" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 ++printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +@@ -17535,67 +18662,61 @@ fi + + + +-for ac_header in sys/memfd.h +-do : +- ac_fn_c_check_header_mongrel "$LINENO" "sys/memfd.h" "ac_cv_header_sys_memfd_h" "$ac_includes_default" +-if test "x$ac_cv_header_sys_memfd_h" = xyes; then : +- cat >>confdefs.h <<_ACEOF +-#define HAVE_SYS_MEMFD_H 1 +-_ACEOF ++ac_fn_c_check_header_compile "$LINENO" "sys/memfd.h" "ac_cv_header_sys_memfd_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_memfd_h" = xyes ++then : ++ printf "%s\n" "#define HAVE_SYS_MEMFD_H 1" >>confdefs.h + + fi + +-done +- +-for ac_func in memfd_create +-do : +- ac_fn_c_check_func "$LINENO" "memfd_create" "ac_cv_func_memfd_create" +-if test "x$ac_cv_func_memfd_create" = xyes; then : +- cat >>confdefs.h <<_ACEOF +-#define HAVE_MEMFD_CREATE 1 +-_ACEOF ++ac_fn_c_check_func "$LINENO" "memfd_create" "ac_cv_func_memfd_create" ++if test "x$ac_cv_func_memfd_create" = xyes ++then : ++ printf "%s\n" "#define HAVE_MEMFD_CREATE 1" >>confdefs.h + + fi +-done + + +-for ac_header in sys/mman.h +-do : +- ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" +-if test "x$ac_cv_header_sys_mman_h" = xyes; then : +- cat >>confdefs.h <<_ACEOF +-#define HAVE_SYS_MMAN_H 1 +-_ACEOF ++ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_mman_h" = xyes ++then : ++ printf "%s\n" "#define HAVE_SYS_MMAN_H 1" >>confdefs.h + + fi + +-done ++ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" ++if test "x$ac_cv_func_mmap" = xyes ++then : ++ printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h + +-for ac_func in mmap mkostemp mkstemp +-do : +- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +-if eval test \"x\$"$as_ac_var"\" = x"yes"; then : +- cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +-_ACEOF ++fi ++ac_fn_c_check_func "$LINENO" "mkostemp" "ac_cv_func_mkostemp" ++if test "x$ac_cv_func_mkostemp" = xyes ++then : ++ printf "%s\n" "#define HAVE_MKOSTEMP 1" >>confdefs.h ++ ++fi ++ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" ++if test "x$ac_cv_func_mkstemp" = xyes ++then : ++ printf "%s\n" "#define HAVE_MKSTEMP 1" >>confdefs.h + + fi +-done + + +-ac_fn_c_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" +-if test "x$ac_cv_header_sys_mman_h" = xyes; then : ++ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_mman_h" = xyes ++then : + libffi_header_sys_mman_h=yes +-else ++else $as_nop + libffi_header_sys_mman_h=no + fi + +- + ac_fn_c_check_func "$LINENO" "mmap" "ac_cv_func_mmap" +-if test "x$ac_cv_func_mmap" = xyes; then : ++if test "x$ac_cv_func_mmap" = xyes ++then : + libffi_func_mmap=yes +-else ++else $as_nop + libffi_func_mmap=no + fi + +@@ -17605,11 +18726,12 @@ if test "$libffi_header_sys_mman_h" != yes \ + ac_cv_func_mmap_dev_zero=no + ac_cv_func_mmap_anon=no + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5 +-$as_echo_n "checking whether read-only mmap of a plain file works... " >&6; } +-if ${ac_cv_func_mmap_file+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether read-only mmap of a plain file works" >&5 ++printf %s "checking whether read-only mmap of a plain file works... " >&6; } ++if test ${ac_cv_func_mmap_file+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + # Add a system to this blacklist if + # mmap(0, stat_size, PROT_READ, MAP_PRIVATE, fd, 0) doesn't return a + # memory area containing the same data that you'd get if you applied +@@ -17622,13 +18744,14 @@ else + ac_cv_func_mmap_file=yes;; + esac + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5 +-$as_echo "$ac_cv_func_mmap_file" >&6; } +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5 +-$as_echo_n "checking whether mmap from /dev/zero works... " >&6; } +-if ${ac_cv_func_mmap_dev_zero+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_file" >&5 ++printf "%s\n" "$ac_cv_func_mmap_file" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mmap from /dev/zero works" >&5 ++printf %s "checking whether mmap from /dev/zero works... " >&6; } ++if test ${ac_cv_func_mmap_dev_zero+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + # Add a system to this blacklist if it has mmap() but /dev/zero + # does not exist, or if mmapping /dev/zero does not give anonymous + # zeroed pages with both the following properties: +@@ -17646,15 +18769,16 @@ else + ac_cv_func_mmap_dev_zero=yes;; + esac + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5 +-$as_echo "$ac_cv_func_mmap_dev_zero" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_dev_zero" >&5 ++printf "%s\n" "$ac_cv_func_mmap_dev_zero" >&6; } + + # Unlike /dev/zero, the MAP_ANON(YMOUS) defines can be probed for. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5 +-$as_echo_n "checking for MAP_ANON(YMOUS)... " >&6; } +-if ${ac_cv_decl_map_anon+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MAP_ANON(YMOUS)" >&5 ++printf %s "checking for MAP_ANON(YMOUS)... " >&6; } ++if test ${ac_cv_decl_map_anon+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include +@@ -17666,31 +18790,33 @@ else + #endif + + int +-main () ++main (void) + { + int n = MAP_ANONYMOUS; + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_cv_decl_map_anon=yes +-else ++else $as_nop + ac_cv_decl_map_anon=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5 +-$as_echo "$ac_cv_decl_map_anon" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_decl_map_anon" >&5 ++printf "%s\n" "$ac_cv_decl_map_anon" >&6; } + + if test $ac_cv_decl_map_anon = no; then + ac_cv_func_mmap_anon=no + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5 +-$as_echo_n "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; } +-if ${ac_cv_func_mmap_anon+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mmap with MAP_ANON(YMOUS) works" >&5 ++printf %s "checking whether mmap with MAP_ANON(YMOUS) works... " >&6; } ++if test ${ac_cv_func_mmap_anon+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + # Add a system to this blacklist if it has mmap() and MAP_ANON or + # MAP_ANONYMOUS, but using mmap(..., MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) + # doesn't give anonymous zeroed pages with the same properties listed +@@ -17703,24 +18829,24 @@ else + ac_cv_func_mmap_anon=yes;; + esac + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_anon" >&5 +-$as_echo "$ac_cv_func_mmap_anon" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_anon" >&5 ++printf "%s\n" "$ac_cv_func_mmap_anon" >&6; } + fi + fi + + if test $ac_cv_func_mmap_file = yes; then + +-$as_echo "#define HAVE_MMAP_FILE 1" >>confdefs.h ++printf "%s\n" "#define HAVE_MMAP_FILE 1" >>confdefs.h + + fi + if test $ac_cv_func_mmap_dev_zero = yes; then + +-$as_echo "#define HAVE_MMAP_DEV_ZERO 1" >>confdefs.h ++printf "%s\n" "#define HAVE_MMAP_DEV_ZERO 1" >>confdefs.h + + fi + if test $ac_cv_func_mmap_anon = yes; then + +-$as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h ++printf "%s\n" "#define HAVE_MMAP_ANON 1" >>confdefs.h + + fi + +@@ -17746,152 +18872,113 @@ fi + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +-$as_echo_n "checking for ANSI C header files... " >&6; } +-if ${ac_cv_header_stdc+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +-#include +-#include +-#include +- +-int +-main () +-{ +- +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- ac_cv_header_stdc=yes +-else +- ac_cv_header_stdc=no +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- +-if test $ac_cv_header_stdc = yes; then +- # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "memchr" >/dev/null 2>&1; then : +- +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "free" >/dev/null 2>&1; then : +- +-else +- ac_cv_header_stdc=no +-fi +-rm -f conftest* +- +-fi +- +-if test $ac_cv_header_stdc = yes; then +- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +- if test "$cross_compiling" = yes; then : +- : +-else +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#include +-#include +-#if ((' ' & 0x0FF) == 0x020) +-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +-#else +-# define ISLOWER(c) \ +- (('a' <= (c) && (c) <= 'i') \ +- || ('j' <= (c) && (c) <= 'r') \ +- || ('s' <= (c) && (c) <= 'z')) +-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +-#endif ++# Autoupdate added the next two lines to ensure that your configure ++# script's behavior did not change. They are probably safe to remove. + +-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +-int +-main () +-{ +- int i; +- for (i = 0; i < 256; i++) +- if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) +- return 2; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 ++printf %s "checking for egrep... " >&6; } ++if test ${ac_cv_path_EGREP+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ if test -z "$EGREP"; then ++ ac_path_EGREP_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ for ac_prog in egrep ++ do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_EGREP" || continue ++# Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ printf %s 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ printf "%s\n" 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac + ++ $ac_path_EGREP_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_EGREP"; then ++ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 ++ fi + else +- ac_cv_header_stdc=no +-fi +-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +- conftest.$ac_objext conftest.beam conftest.$ac_ext ++ ac_cv_path_EGREP=$EGREP + fi + ++ fi + fi +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +-$as_echo "$ac_cv_header_stdc" >&6; } +-if test $ac_cv_header_stdc = yes; then ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 ++printf "%s\n" "$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" + +-$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +-fi + +-for ac_func in memcpy +-do : +- ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy" +-if test "x$ac_cv_func_memcpy" = xyes; then : +- cat >>confdefs.h <<_ACEOF +-#define HAVE_MEMCPY 1 +-_ACEOF ++ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy" ++if test "x$ac_cv_func_memcpy" = xyes ++then : ++ printf "%s\n" "#define HAVE_MEMCPY 1" >>confdefs.h + + fi +-done + + ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +-if test "x$ac_cv_type_size_t" = xyes; then : ++if test "x$ac_cv_type_size_t" = xyes ++then : + +-else ++else $as_nop + +-cat >>confdefs.h <<_ACEOF +-#define size_t unsigned int +-_ACEOF ++printf "%s\n" "#define size_t unsigned int" >>confdefs.h + + fi + + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works + # for constant arguments. Useless! +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +-$as_echo_n "checking for working alloca.h... " >&6; } +-if ${ac_cv_working_alloca_h+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 ++printf %s "checking for working alloca.h... " >&6; } ++if test ${ac_cv_working_alloca_h+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + int +-main () ++main (void) + { + char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; +@@ -17899,52 +18986,52 @@ char *p = (char *) alloca (2 * sizeof (int)); + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + ac_cv_working_alloca_h=yes +-else ++else $as_nop + ac_cv_working_alloca_h=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +-$as_echo "$ac_cv_working_alloca_h" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 ++printf "%s\n" "$ac_cv_working_alloca_h" >&6; } + if test $ac_cv_working_alloca_h = yes; then + +-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h ++printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h + + fi + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +-$as_echo_n "checking for alloca... " >&6; } +-if ${ac_cv_func_alloca_works+:} false; then : +- $as_echo_n "(cached) " >&6 ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 ++printf %s "checking for alloca... " >&6; } ++if test ${ac_cv_func_alloca_works+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test $ac_cv_working_alloca_h = yes; then ++ ac_cv_func_alloca_works=yes + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-#ifdef __GNUC__ +-# define alloca __builtin_alloca +-#else +-# ifdef _MSC_VER ++#include ++#include ++#ifndef alloca ++# ifdef __GNUC__ ++# define alloca __builtin_alloca ++# elif defined _MSC_VER + # include + # define alloca _alloca + # else +-# ifdef HAVE_ALLOCA_H +-# include +-# else +-# ifdef _AIX +- #pragma alloca +-# else +-# ifndef alloca /* predefined by HP cc +Olibcalls */ +-void *alloca (size_t); +-# endif +-# endif ++# ifdef __cplusplus ++extern "C" + # endif ++void *alloca (size_t); + # endif + #endif + + int +-main () ++main (void) + { + char *p = (char *) alloca (1); + if (p) return 0; +@@ -17952,20 +19039,22 @@ char *p = (char *) alloca (1); + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + ac_cv_func_alloca_works=yes +-else ++else $as_nop + ac_cv_func_alloca_works=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +-$as_echo "$ac_cv_func_alloca_works" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 ++printf "%s\n" "$ac_cv_func_alloca_works" >&6; } ++fi + + if test $ac_cv_func_alloca_works = yes; then + +-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h ++printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h + + else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +@@ -17975,58 +19064,19 @@ else + + ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +-$as_echo "#define C_ALLOCA 1" >>confdefs.h +- +- +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +-if ${ac_cv_os_cray+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-#if defined CRAY && ! defined CRAY2 +-webecray +-#else +-wenotbecray +-#endif +- +-_ACEOF +-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +- $EGREP "webecray" >/dev/null 2>&1; then : +- ac_cv_os_cray=yes +-else +- ac_cv_os_cray=no +-fi +-rm -f conftest* +- +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +-$as_echo "$ac_cv_os_cray" >&6; } +-if test $ac_cv_os_cray = yes; then +- for ac_func in _getb67 GETB67 getb67; do +- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +-if eval test \"x\$"$as_ac_var"\" = x"yes"; then : +- +-cat >>confdefs.h <<_ACEOF +-#define CRAY_STACKSEG_END $ac_func +-_ACEOF +- +- break +-fi ++printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h + +- done +-fi + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +-$as_echo_n "checking stack direction for C alloca... " >&6; } +-if ${ac_cv_c_stack_direction+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if test "$cross_compiling" = yes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 ++printf %s "checking stack direction for C alloca... " >&6; } ++if test ${ac_cv_c_stack_direction+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if test "$cross_compiling" = yes ++then : + ac_cv_c_stack_direction=0 +-else ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $ac_includes_default +@@ -18047,9 +19097,10 @@ main (int argc, char **argv) + return find_stack_direction (0, argc + !argv + 20) < 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_run "$LINENO" ++then : + ac_cv_c_stack_direction=1 +-else ++else $as_nop + ac_cv_c_stack_direction=-1 + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +@@ -18057,11 +19108,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +-$as_echo "$ac_cv_c_stack_direction" >&6; } +-cat >>confdefs.h <<_ACEOF +-#define STACK_DIRECTION $ac_cv_c_stack_direction +-_ACEOF ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 ++printf "%s\n" "$ac_cv_c_stack_direction" >&6; } ++printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h + + + fi +@@ -18071,17 +19120,19 @@ fi + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 +-$as_echo_n "checking size of double... " >&6; } +-if ${ac_cv_sizeof_double+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : +- +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 ++printf %s "checking size of double... " >&6; } ++if test ${ac_cv_sizeof_double+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default" ++then : ++ ++else $as_nop + if test "$ac_cv_type_double" = yes; then +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error 77 "cannot compute sizeof (double) + See \`config.log' for more details" "$LINENO" 5; } + else +@@ -18090,31 +19141,31 @@ See \`config.log' for more details" "$LINENO" 5; } + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 +-$as_echo "$ac_cv_sizeof_double" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 ++printf "%s\n" "$ac_cv_sizeof_double" >&6; } + + + +-cat >>confdefs.h <<_ACEOF +-#define SIZEOF_DOUBLE $ac_cv_sizeof_double +-_ACEOF ++printf "%s\n" "#define SIZEOF_DOUBLE $ac_cv_sizeof_double" >>confdefs.h + + + # The cast to long int works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 +-$as_echo_n "checking size of long double... " >&6; } +-if ${ac_cv_sizeof_long_double+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then : +- +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 ++printf %s "checking size of long double... " >&6; } ++if test ${ac_cv_sizeof_long_double+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop ++ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default" ++then : ++ ++else $as_nop + if test "$ac_cv_type_long_double" = yes; then +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error 77 "cannot compute sizeof (long double) + See \`config.log' for more details" "$LINENO" 5; } + else +@@ -18123,14 +19174,12 @@ See \`config.log' for more details" "$LINENO" 5; } + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 +-$as_echo "$ac_cv_sizeof_long_double" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 ++printf "%s\n" "$ac_cv_sizeof_long_double" >&6; } + + + +-cat >>confdefs.h <<_ACEOF +-#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double +-_ACEOF ++printf "%s\n" "#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double" >>confdefs.h + + + +@@ -18140,14 +19189,14 @@ if test -z "$HAVE_LONG_DOUBLE"; then + if test $ac_cv_sizeof_long_double != 0; then + if test $HAVE_LONG_DOUBLE_VARIANT != 0; then + +-$as_echo "#define HAVE_LONG_DOUBLE_VARIANT 1" >>confdefs.h ++printf "%s\n" "#define HAVE_LONG_DOUBLE_VARIANT 1" >>confdefs.h + + HAVE_LONG_DOUBLE=1 + else + if test $ac_cv_sizeof_double != $ac_cv_sizeof_long_double; then + HAVE_LONG_DOUBLE=1 + +-$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h ++printf "%s\n" "#define HAVE_LONG_DOUBLE 1" >>confdefs.h + + fi + fi +@@ -18156,11 +19205,12 @@ fi + + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +-$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +-if ${ac_cv_c_bigendian+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 ++printf %s "checking whether byte ordering is bigendian... " >&6; } ++if test ${ac_cv_c_bigendian+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -18171,7 +19221,8 @@ else + typedef int dummy; + + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. +@@ -18195,7 +19246,7 @@ if ac_fn_c_try_compile "$LINENO"; then : + fi + done + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -18204,7 +19255,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + #include + + int +-main () ++main (void) + { + #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ +@@ -18216,7 +19267,8 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +@@ -18224,7 +19276,7 @@ if ac_fn_c_try_compile "$LINENO"; then : + #include + + int +-main () ++main (void) + { + #if BYTE_ORDER != BIG_ENDIAN + not big endian +@@ -18234,14 +19286,15 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_cv_c_bigendian=yes +-else ++else $as_nop + ac_cv_c_bigendian=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). +@@ -18250,7 +19303,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + #include + + int +-main () ++main (void) + { + #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros +@@ -18260,14 +19313,15 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include + + int +-main () ++main (void) + { + #ifndef _BIG_ENDIAN + not big endian +@@ -18277,31 +19331,33 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ac_cv_c_bigendian=yes +-else ++else $as_nop + ac_cv_c_bigendian=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. +- if test "$cross_compiling" = yes; then : ++ if test "$cross_compiling" = yes ++then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +-short int ascii_mm[] = ++unsigned short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +- short int ascii_ii[] = ++ unsigned short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } +- short int ebcdic_ii[] = ++ unsigned short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +- short int ebcdic_mm[] = ++ unsigned short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; +@@ -18309,14 +19365,15 @@ short int ascii_mm[] = + extern int foo; + + int +-main () ++main (void) + { + return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi +@@ -18329,13 +19386,13 @@ if ac_fn_c_try_compile "$LINENO"; then : + fi + fi + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-else ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + $ac_includes_default + int +-main () ++main (void) + { + + /* Are we little or big endian? From Harbison&Steele. */ +@@ -18351,9 +19408,10 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_run "$LINENO" ++then : + ac_cv_c_bigendian=no +-else ++else $as_nop + ac_cv_c_bigendian=yes + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +@@ -18362,17 +19420,17 @@ fi + + fi + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +-$as_echo "$ac_cv_c_bigendian" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 ++printf "%s\n" "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) +- $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ++ printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h + ;; #( + no) + ;; #( + universal) + +-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ++printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) +@@ -18381,48 +19439,51 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + esac + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .cfi pseudo-op support" >&5 +-$as_echo_n "checking assembler .cfi pseudo-op support... " >&6; } +-if ${gcc_cv_as_cfi_pseudo_op+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking assembler .cfi pseudo-op support" >&5 ++printf %s "checking assembler .cfi pseudo-op support... " >&6; } ++if test ${gcc_cv_as_cfi_pseudo_op+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + gcc_cv_as_cfi_pseudo_op=unknown + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + asm (".cfi_sections\n\t.cfi_startproc\n\t.cfi_endproc"); + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + gcc_cv_as_cfi_pseudo_op=yes +-else ++else $as_nop + gcc_cv_as_cfi_pseudo_op=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_pseudo_op" >&5 +-$as_echo "$gcc_cv_as_cfi_pseudo_op" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_pseudo_op" >&5 ++printf "%s\n" "$gcc_cv_as_cfi_pseudo_op" >&6; } + if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then + +-$as_echo "#define HAVE_AS_CFI_PSEUDO_OP 1" >>confdefs.h ++printf "%s\n" "#define HAVE_AS_CFI_PSEUDO_OP 1" >>confdefs.h + + fi + + + case "$TARGET" in + SPARC) +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5 +-$as_echo_n "checking assembler and linker support unaligned pc related relocs... " >&6; } +-if ${libffi_cv_as_sparc_ua_pcrel+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5 ++printf %s "checking assembler and linker support unaligned pc related relocs... " >&6; } ++if test ${libffi_cv_as_sparc_ua_pcrel+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + save_CFLAGS="$CFLAGS" + save_LDFLAGS="$LDFLAGS" +@@ -18432,36 +19493,38 @@ else + /* end confdefs.h. */ + asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text"); + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + libffi_cv_as_sparc_ua_pcrel=yes +-else ++else $as_nop + libffi_cv_as_sparc_ua_pcrel=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + LDFLAGS="$save_LDFLAGS" + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_sparc_ua_pcrel" >&5 +-$as_echo "$libffi_cv_as_sparc_ua_pcrel" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_sparc_ua_pcrel" >&5 ++printf "%s\n" "$libffi_cv_as_sparc_ua_pcrel" >&6; } + if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then + +-$as_echo "#define HAVE_AS_SPARC_UA_PCREL 1" >>confdefs.h ++printf "%s\n" "#define HAVE_AS_SPARC_UA_PCREL 1" >>confdefs.h + + fi + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .register pseudo-op support" >&5 +-$as_echo_n "checking assembler .register pseudo-op support... " >&6; } +-if ${libffi_cv_as_register_pseudo_op+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking assembler .register pseudo-op support" >&5 ++printf %s "checking assembler .register pseudo-op support... " >&6; } ++if test ${libffi_cv_as_register_pseudo_op+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + libffi_cv_as_register_pseudo_op=unknown + # Check if we have .register +@@ -18469,36 +19532,38 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + asm (".register %g2, #scratch"); + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + libffi_cv_as_register_pseudo_op=yes +-else ++else $as_nop + libffi_cv_as_register_pseudo_op=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_register_pseudo_op" >&5 +-$as_echo "$libffi_cv_as_register_pseudo_op" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_register_pseudo_op" >&5 ++printf "%s\n" "$libffi_cv_as_register_pseudo_op" >&6; } + if test "x$libffi_cv_as_register_pseudo_op" = xyes; then + +-$as_echo "#define HAVE_AS_REGISTER_PSEUDO_OP 1" >>confdefs.h ++printf "%s\n" "#define HAVE_AS_REGISTER_PSEUDO_OP 1" >>confdefs.h + + fi + ;; + + X86*) +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5 +-$as_echo_n "checking assembler supports pc related relocs... " >&6; } +-if ${libffi_cv_as_x86_pcrel+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking assembler supports pc related relocs" >&5 ++printf %s "checking assembler supports pc related relocs... " >&6; } ++if test ${libffi_cv_as_x86_pcrel+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + libffi_cv_as_x86_pcrel=no + echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s +@@ -18507,21 +19572,22 @@ else + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5 +-$as_echo "$libffi_cv_as_x86_pcrel" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_pcrel" >&5 ++printf "%s\n" "$libffi_cv_as_x86_pcrel" >&6; } + if test "x$libffi_cv_as_x86_pcrel" = xyes; then + +-$as_echo "#define HAVE_AS_X86_PCREL 1" >>confdefs.h ++printf "%s\n" "#define HAVE_AS_X86_PCREL 1" >>confdefs.h + + fi + ;; + + S390) +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler uses zarch features" >&5 +-$as_echo_n "checking compiler uses zarch features... " >&6; } +-if ${libffi_cv_as_s390_zarch+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler uses zarch features" >&5 ++printf %s "checking compiler uses zarch features... " >&6; } ++if test ${libffi_cv_as_s390_zarch+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + libffi_cv_as_s390_zarch=no + echo 'void foo(void) { bar(); bar(); }' > conftest.c +@@ -18532,28 +19598,29 @@ else + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_s390_zarch" >&5 +-$as_echo "$libffi_cv_as_s390_zarch" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_s390_zarch" >&5 ++printf "%s\n" "$libffi_cv_as_s390_zarch" >&6; } + if test "x$libffi_cv_as_s390_zarch" = xyes; then + +-$as_echo "#define HAVE_AS_S390_ZARCH 1" >>confdefs.h ++printf "%s\n" "#define HAVE_AS_S390_ZARCH 1" >>confdefs.h + + fi + ;; + esac + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports pointer authentication" >&5 +-$as_echo_n "checking whether compiler supports pointer authentication... " >&6; } +-if ${libffi_cv_as_ptrauth+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiler supports pointer authentication" >&5 ++printf %s "checking whether compiler supports pointer authentication... " >&6; } ++if test ${libffi_cv_as_ptrauth+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + libffi_cv_as_ptrauth=unknown + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + #ifdef __clang__ +@@ -18570,38 +19637,47 @@ main () + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + libffi_cv_as_ptrauth=yes +-else ++else $as_nop + libffi_cv_as_ptrauth=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_ptrauth" >&5 +-$as_echo "$libffi_cv_as_ptrauth" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_ptrauth" >&5 ++printf "%s\n" "$libffi_cv_as_ptrauth" >&6; } + if test "x$libffi_cv_as_ptrauth" = xyes; then + +-$as_echo "#define HAVE_PTRAUTH 1" >>confdefs.h ++printf "%s\n" "#define HAVE_PTRAUTH 1" >>confdefs.h + + fi + +-# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. ++# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC; ++# if EMUTRAMP is active too ffi could try mapping without PROT_EXEC, ++# but the kernel needs to recognize the trampoline generated by ffi. ++# Otherwise fallback to double mmap trick. + # Check whether --enable-pax_emutramp was given. +-if test "${enable_pax_emutramp+set}" = set; then : ++if test ${enable_pax_emutramp+y} ++then : + enableval=$enable_pax_emutramp; if test "$enable_pax_emutramp" = "yes"; then ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: EMUTRAMP is experimental only. Use --enable-pax_emutramp=experimental to enforce." >&5 ++printf "%s\n" "$as_me: WARNING: EMUTRAMP is experimental only. Use --enable-pax_emutramp=experimental to enforce." >&2;} ++ elif test "$enable_pax_emutramp" = "experimental"; then + +-$as_echo "#define FFI_MMAP_EXEC_EMUTRAMP_PAX 1" >>confdefs.h ++printf "%s\n" "#define FFI_MMAP_EXEC_EMUTRAMP_PAX 1" >>confdefs.h + + fi + fi + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5 +-$as_echo_n "checking for _ prefix in compiled symbols... " >&6; } +-if ${lt_cv_sys_symbol_underscore+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _ prefix in compiled symbols" >&5 ++printf %s "checking for _ prefix in compiled symbols... " >&6; } ++if test ${lt_cv_sys_symbol_underscore+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + lt_cv_sys_symbol_underscore=no + cat > conftest.$ac_ext <<_LT_EOF + void nm_test_func(){} +@@ -18610,14 +19686,14 @@ _LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + ac_nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$ac_nlist"; then + # See whether the symbols have a leading underscore. + if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then +@@ -18639,14 +19715,14 @@ _LT_EOF + rm -rf conftest* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5 +-$as_echo "$lt_cv_sys_symbol_underscore" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_symbol_underscore" >&5 ++printf "%s\n" "$lt_cv_sys_symbol_underscore" >&6; } + sys_symbol_underscore=$lt_cv_sys_symbol_underscore + + + if test "x$sys_symbol_underscore" = xyes; then + +-$as_echo "#define SYMBOL_UNDERSCORE 1" >>confdefs.h ++printf "%s\n" "#define SYMBOL_UNDERSCORE 1" >>confdefs.h + + fi + +@@ -18655,12 +19731,12 @@ case "$target" in + *arm*-apple-* | aarch64-apple-*) + FFI_EXEC_TRAMPOLINE_TABLE=1 + +-$as_echo "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h ++printf "%s\n" "#define FFI_EXEC_TRAMPOLINE_TABLE 1" >>confdefs.h + + ;; + *-apple-* | *-*-freebsd* | *-*-kfreebsd* | *-*-openbsd* | *-pc-solaris* | *-linux-android*) + +-$as_echo "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h ++printf "%s\n" "#define FFI_MMAP_EXEC_WRIT 1" >>confdefs.h + + ;; + esac +@@ -18675,11 +19751,12 @@ fi + + + if test x$TARGET = xX86_64; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5 +-$as_echo_n "checking toolchain supports unwind section type... " >&6; } +-if ${libffi_cv_as_x86_64_unwind_section_type+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking toolchain supports unwind section type" >&5 ++printf %s "checking toolchain supports unwind section type... " >&6; } ++if test ${libffi_cv_as_x86_64_unwind_section_type+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + cat > conftest1.s << EOF + .text +@@ -18704,21 +19781,22 @@ EOF + fi + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_64_unwind_section_type" >&5 +-$as_echo "$libffi_cv_as_x86_64_unwind_section_type" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_as_x86_64_unwind_section_type" >&5 ++printf "%s\n" "$libffi_cv_as_x86_64_unwind_section_type" >&6; } + if test "x$libffi_cv_as_x86_64_unwind_section_type" = xyes; then + +-$as_echo "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h ++printf "%s\n" "#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1" >>confdefs.h + + fi + fi + + if test "x$GCC" = "xyes"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-lto" >&5 +-$as_echo_n "checking whether C compiler accepts -fno-lto... " >&6; } +-if ${ax_cv_check_cflags___fno_lto+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-lto" >&5 ++printf %s "checking whether C compiler accepts -fno-lto... " >&6; } ++if test ${ax_cv_check_cflags___fno_lto+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -fno-lto" +@@ -18726,66 +19804,70 @@ else + /* end confdefs.h. */ + + int +-main () ++main (void) + { + + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : ++if ac_fn_c_try_compile "$LINENO" ++then : + ax_cv_check_cflags___fno_lto=yes +-else ++else $as_nop + ax_cv_check_cflags___fno_lto=no + fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_lto" >&5 +-$as_echo "$ax_cv_check_cflags___fno_lto" >&6; } +-if test "x$ax_cv_check_cflags___fno_lto" = xyes; then : ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_lto" >&5 ++printf "%s\n" "$ax_cv_check_cflags___fno_lto" >&6; } ++if test "x$ax_cv_check_cflags___fno_lto" = xyes ++then : + libffi_cv_no_lto=-fno-lto +-else ++else $as_nop + : + fi + + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5 +-$as_echo_n "checking whether .eh_frame section should be read-only... " >&6; } +-if ${libffi_cv_ro_eh_frame+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether .eh_frame section should be read-only" >&5 ++printf %s "checking whether .eh_frame section should be read-only... " >&6; } ++if test ${libffi_cv_ro_eh_frame+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + libffi_cv_ro_eh_frame=yes + echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c + if $CC $CFLAGS -c -fpic -fexceptions $libffi_cv_no_lto -o conftest.o conftest.c > /dev/null 2>&1; then +- if $READELF -WS conftest.o | grep -q -n 'eh_frame .* WA'; then ++ if $READELF -WS conftest.o 2>/dev/null | grep -q -n 'eh_frame .* WA'; then + libffi_cv_ro_eh_frame=no + fi + fi + rm -f conftest.* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5 +-$as_echo "$libffi_cv_ro_eh_frame" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_ro_eh_frame" >&5 ++printf "%s\n" "$libffi_cv_ro_eh_frame" >&6; } + if test "x$libffi_cv_ro_eh_frame" = xyes; then + +-$as_echo "#define HAVE_RO_EH_FRAME 1" >>confdefs.h ++printf "%s\n" "#define HAVE_RO_EH_FRAME 1" >>confdefs.h + + +-$as_echo "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h ++printf "%s\n" "#define EH_FRAME_FLAGS \"a\"" >>confdefs.h + + else + +-$as_echo "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h ++printf "%s\n" "#define EH_FRAME_FLAGS \"aw\"" >>confdefs.h + + fi + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5 +-$as_echo_n "checking for __attribute__((visibility(\"hidden\")))... " >&6; } +-if ${libffi_cv_hidden_visibility_attribute+:} false; then : +- $as_echo_n "(cached) " >&6 +-else ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility(\"hidden\")))" >&5 ++printf %s "checking for __attribute__((visibility(\"hidden\")))... " >&6; } ++if test ${libffi_cv_hidden_visibility_attribute+y} ++then : ++ printf %s "(cached) " >&6 ++else $as_nop + + echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c + libffi_cv_hidden_visibility_attribute=no +@@ -18793,28 +19875,29 @@ else + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? +- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then +- if egrep '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then ++ if $EGREP '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then + libffi_cv_hidden_visibility_attribute=yes + fi + fi + rm -f conftest.* + + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5 +-$as_echo "$libffi_cv_hidden_visibility_attribute" >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libffi_cv_hidden_visibility_attribute" >&5 ++printf "%s\n" "$libffi_cv_hidden_visibility_attribute" >&6; } + if test $libffi_cv_hidden_visibility_attribute = yes; then + +-$as_echo "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h ++printf "%s\n" "#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1" >>confdefs.h + + fi + fi + + # Check whether --enable-docs was given. +-if test "${enable_docs+set}" = set; then : ++if test ${enable_docs+y} ++then : + enableval=$enable_docs; enable_docs=no +-else ++else $as_nop + enable_docs=yes + fi + +@@ -18843,10 +19926,11 @@ done + + + # Check whether --enable-debug was given. +-if test "${enable_debug+set}" = set; then : ++if test ${enable_debug+y} ++then : + enableval=$enable_debug; if test "$enable_debug" = "yes"; then + +-$as_echo "#define FFI_DEBUG 1" >>confdefs.h ++printf "%s\n" "#define FFI_DEBUG 1" >>confdefs.h + + fi + fi +@@ -18861,10 +19945,11 @@ fi + + + # Check whether --enable-structs was given. +-if test "${enable_structs+set}" = set; then : ++if test ${enable_structs+y} ++then : + enableval=$enable_structs; if test "$enable_structs" = "no"; then + +-$as_echo "#define FFI_NO_STRUCTS 1" >>confdefs.h ++printf "%s\n" "#define FFI_NO_STRUCTS 1" >>confdefs.h + + fi + fi +@@ -18879,45 +19964,56 @@ fi + + + # Check whether --enable-raw-api was given. +-if test "${enable_raw_api+set}" = set; then : ++if test ${enable_raw_api+y} ++then : + enableval=$enable_raw_api; if test "$enable_raw_api" = "no"; then + +-$as_echo "#define FFI_NO_RAW_API 1" >>confdefs.h ++printf "%s\n" "#define FFI_NO_RAW_API 1" >>confdefs.h + + fi + fi + + + # Check whether --enable-exec-static-tramp was given. +-if test "${enable_exec_static_tramp+set}" = set; then : ++if test ${enable_exec_static_tramp+y} ++then : + enableval=$enable_exec_static_tramp; + fi + + + if test "$enable_exec_static_tramp" != no; then + case "$target" in +- *-cygwin*) ++ *-cygwin* | *-msys*) ++ # Only define static trampolines if we are using the cygwin runtime. ++ # Will this need to be changed for mingw? ++ if test "x$GCC" = "xyes"; then ++ ++printf "%s\n" "#define FFI_EXEC_STATIC_TRAMP 1" >>confdefs.h ++ ++ fi + ;; +- *arm*-*-linux-* | aarch64*-*-linux-* | i*86-*-linux-* | x86_64-*-linux-*) ++ *arm*-*-linux-* | aarch64*-*-linux-* | i*86-*-linux-* | x86_64-*-linux-* | loongarch*-*-linux-*) + +-$as_echo "#define FFI_EXEC_STATIC_TRAMP 1" >>confdefs.h ++printf "%s\n" "#define FFI_EXEC_STATIC_TRAMP 1" >>confdefs.h + + ;; + esac + fi + + # Check whether --enable-purify-safety was given. +-if test "${enable_purify_safety+set}" = set; then : ++if test ${enable_purify_safety+y} ++then : + enableval=$enable_purify_safety; if test "$enable_purify_safety" = "yes"; then + +-$as_echo "#define USING_PURIFY 1" >>confdefs.h ++printf "%s\n" "#define USING_PURIFY 1" >>confdefs.h + + fi + fi + + + # Check whether --enable-multi-os-directory was given. +-if test "${enable_multi_os_directory+set}" = set; then : ++if test ${enable_multi_os_directory+y} ++then : + enableval=$enable_multi_os_directory; + fi + +@@ -18946,117 +20042,17 @@ else + fi + + +-# Check linker support. +- +- +-# Check whether --with-gnu-ld was given. +-if test "${with_gnu_ld+set}" = set; then : +- withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +-else +- with_gnu_ld=no +-fi +- +-ac_prog=ld +-if test yes = "$GCC"; then +- # Check if gcc -print-prog-name=ld gives a path. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +-$as_echo_n "checking for ld used by $CC... " >&6; } +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return, which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [\\/]* | ?:[\\/]*) +- re_direlt='/[^/][^/]*/\.\./' +- # Canonicalize the pathname of ld +- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` +- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD=$ac_prog +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test yes = "$with_gnu_ld"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +-$as_echo_n "checking for GNU ld... " >&6; } +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +-$as_echo_n "checking for non-GNU ld... " >&6; } +-fi +-if ${lt_cv_path_LD+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- if test -z "$LD"; then +- lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- IFS=$lt_save_ifs +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD=$ac_dir/$ac_prog +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some variants of GNU ld only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- case `"$lt_cv_path_LD" -v 2>&1 &5 +-$as_echo "$LD" >&6; } +-else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +-$as_echo "no" >&6; } +-fi +-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +-if ${lt_cv_prog_gnu_ld+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- # I'd rather use --version here, but apparently some GNU lds only accept -v. +-case `$LD -v 2>&1 &5 +-$as_echo "$lt_cv_prog_gnu_ld" >&6; } +-with_gnu_ld=$lt_cv_prog_gnu_ld +- +- +- +- ++# Conditionalize the makefile for this target machine. ++tmake_file_= ++for f in ${tmake_file}; do ++ if test -f ${srcdir}/src/$TARGETDIR/$f; then ++ tmake_file_="${tmake_file_} \$(srcdir)/src/$TARGETDIR/$f" ++ fi ++done ++tmake_file="${tmake_file_}" + + ++# Check linker support. + + # If we're not using GNU ld, then there's no point in even trying these + # tests. Check for that first. We should have already tested for gld +@@ -19115,11 +20111,12 @@ with_gnu_ld=$lt_cv_prog_gnu_ld + # really work at the moment (keeps on discarding used sections, first + # .eh_frame and now some of the glibc sections for iconv). + # Bzzzzt. Thanks for playing, maybe next time. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5 +-$as_echo_n "checking for ld that supports -Wl,--gc-sections... " >&6; } +- if test "$cross_compiling" = yes; then : ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,--gc-sections" >&5 ++printf %s "checking for ld that supports -Wl,--gc-sections... " >&6; } ++ if test "$cross_compiling" = yes ++then : + ac_sectionLDflags=yes +-else ++else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +@@ -19131,9 +20128,10 @@ else + } + + _ACEOF +-if ac_fn_c_try_run "$LINENO"; then : ++if ac_fn_c_try_run "$LINENO" ++then : + ac_sectionLDflags=yes +-else ++else $as_nop + ac_sectionLDflags=no + fi + rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +@@ -19149,8 +20147,8 @@ fi + if test "$ac_sectionLDflags" = "yes"; then + SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" + fi +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_sectionLDflags" >&5 +-$as_echo "$ac_sectionLDflags" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_sectionLDflags" >&5 ++printf "%s\n" "$ac_sectionLDflags" >&6; } + fi + + # Set linker optimization flags. +@@ -19164,14 +20162,15 @@ $as_echo "$ac_sectionLDflags" >&6; } + + + # Check whether --enable-symvers was given. +-if test "${enable_symvers+set}" = set; then : ++if test ${enable_symvers+y} ++then : + enableval=$enable_symvers; + case "$enableval" in + yes|no|gnu*|sun) ;; + *) as_fn_error $? "Unknown argument to enable/disable symvers" "$LINENO" 5 ;; + esac + +-else ++else $as_nop + enable_symvers=yes + fi + +@@ -19209,12 +20208,12 @@ if test x$enable_symvers = xsun ; then + ;; + *) + # Unlikely to work. +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5 +-$as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5 +-$as_echo "$as_me: WARNING: === you are not targetting Solaris 2." >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 +-$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5 ++printf "%s\n" "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5 ++printf "%s\n" "$as_me: WARNING: === you are not targetting Solaris 2." >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 ++printf "%s\n" "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} + enable_symvers=no + ;; + esac +@@ -19222,27 +20221,28 @@ fi + + # Check to see if libgcc_s exists, indicating that shared libgcc is possible. + if test $enable_symvers != no; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared libgcc" >&5 +-$as_echo_n "checking for shared libgcc... " >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared libgcc" >&5 ++printf %s "checking for shared libgcc... " >&6; } + ac_save_CFLAGS="$CFLAGS" + CFLAGS=' -lgcc_s' + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + + int +-main () ++main (void) + { + return 0; + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + libat_shared_libgcc=yes +-else ++else $as_nop + libat_shared_libgcc=no + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + if test $libat_shared_libgcc = no; then +@@ -19260,23 +20260,24 @@ EOF + /* end confdefs.h. */ + + int +-main () ++main (void) + { + return 0; + ; + return 0; + } + _ACEOF +-if ac_fn_c_try_link "$LINENO"; then : ++if ac_fn_c_try_link "$LINENO" ++then : + libat_shared_libgcc=yes + fi +-rm -f core conftest.err conftest.$ac_objext \ ++rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + fi + fi +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libat_shared_libgcc" >&5 +-$as_echo "$libat_shared_libgcc" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libat_shared_libgcc" >&5 ++printf "%s\n" "$libat_shared_libgcc" >&6; } + fi + + # For GNU ld, we need at least this version. The format is described in +@@ -19296,23 +20297,23 @@ if test $enable_symvers != no && test $libat_shared_libgcc = yes; then + enable_symvers=gnu + else + # The right tools, the right setup, but too old. Fallbacks? +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version $libat_gnu_ld_version is too old for" >&5 +-$as_echo "$as_me: WARNING: === Linker version $libat_gnu_ld_version is too old for" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === full symbol versioning support in this release of GCC." >&5 +-$as_echo "$as_me: WARNING: === full symbol versioning support in this release of GCC." >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You would need to upgrade your binutils to version" >&5 +-$as_echo "$as_me: WARNING: === You would need to upgrade your binutils to version" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === $libat_min_gnu_ld_version or later and rebuild GCC." >&5 +-$as_echo "$as_me: WARNING: === $libat_min_gnu_ld_version or later and rebuild GCC." >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version $libat_gnu_ld_version is too old for" >&5 ++printf "%s\n" "$as_me: WARNING: === Linker version $libat_gnu_ld_version is too old for" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === full symbol versioning support in this release of GCC." >&5 ++printf "%s\n" "$as_me: WARNING: === full symbol versioning support in this release of GCC." >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === You would need to upgrade your binutils to version" >&5 ++printf "%s\n" "$as_me: WARNING: === You would need to upgrade your binutils to version" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === $libat_min_gnu_ld_version or later and rebuild GCC." >&5 ++printf "%s\n" "$as_me: WARNING: === $libat_min_gnu_ld_version or later and rebuild GCC." >&2;} + if test $libat_gnu_ld_version -ge 21200 ; then + # Globbing fix is present, proper block support is not. +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 +-$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 ++printf "%s\n" "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} + enable_symvers=no + else + # 2.11 or older. +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 +-$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 ++printf "%s\n" "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} + enable_symvers=no + fi + fi +@@ -19320,20 +20321,20 @@ $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} + : All interesting versions of Sun ld support sun style symbol versioning. + else + # just fail for now +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested some kind of symbol versioning, but" >&5 +-$as_echo "$as_me: WARNING: === You have requested some kind of symbol versioning, but" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === either you are not using a supported linker, or you are" >&5 +-$as_echo "$as_me: WARNING: === either you are not using a supported linker, or you are" >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === not building a shared libgcc_s (which is required)." >&5 +-$as_echo "$as_me: WARNING: === not building a shared libgcc_s (which is required)." >&2;} +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 +-$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested some kind of symbol versioning, but" >&5 ++printf "%s\n" "$as_me: WARNING: === You have requested some kind of symbol versioning, but" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === either you are not using a supported linker, or you are" >&5 ++printf "%s\n" "$as_me: WARNING: === either you are not using a supported linker, or you are" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === not building a shared libgcc_s (which is required)." >&5 ++printf "%s\n" "$as_me: WARNING: === not building a shared libgcc_s (which is required)." >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 ++printf "%s\n" "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} + enable_symvers=no + fi + fi + if test $enable_symvers = gnu; then + +-$as_echo "#define LIBFFI_GNU_SYMBOL_VERSIONING 1" >>confdefs.h ++printf "%s\n" "#define LIBFFI_GNU_SYMBOL_VERSIONING 1" >>confdefs.h + + fi + +@@ -19361,8 +20362,8 @@ else + LIBFFI_BUILD_VERSIONED_SHLIB_SUN_FALSE= + fi + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: versioning on shared library symbols is $enable_symvers" >&5 +-$as_echo "$as_me: versioning on shared library symbols is $enable_symvers" >&6;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: versioning on shared library symbols is $enable_symvers" >&5 ++printf "%s\n" "$as_me: versioning on shared library symbols is $enable_symvers" >&6;} + + + ac_config_commands="$ac_config_commands include" +@@ -19400,8 +20401,8 @@ _ACEOF + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( +- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ++ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 ++printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( +@@ -19431,15 +20432,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + /^ac_cv_env_/b end + t clear + :clear +- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ ++ s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache + if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +-$as_echo "$as_me: updating cache $cache_file" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 ++printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else +@@ -19453,8 +20454,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} + fi + fi + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 ++printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -19471,7 +20472,7 @@ U= + for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' +- ac_i=`$as_echo "$ac_i" | sed "$ac_script"` ++ ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" +@@ -19482,14 +20483,14 @@ LIBOBJS=$ac_libobjs + LTLIBOBJS=$ac_ltlibobjs + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +-$as_echo_n "checking that generated files are newer than configure... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 ++printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +-$as_echo "done" >&6; } ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 ++printf "%s\n" "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +@@ -19556,8 +20557,8 @@ fi + ac_write_fail=0 + ac_clean_files_save=$ac_clean_files + ac_clean_files="$ac_clean_files $CONFIG_STATUS" +-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 ++printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} + as_write_fail=0 + cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 + #! $SHELL +@@ -19580,14 +20581,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 + + # Be more Bourne compatible + DUALCASE=1; export DUALCASE # for MKS sh +-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : ++as_nop=: ++if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 ++then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +-else ++else $as_nop + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( +@@ -19597,46 +20600,46 @@ esac + fi + + ++ ++# Reset variables that may have inherited troublesome values from ++# the environment. ++ ++# IFS needs to be set, to space, tab, and newline, in precisely that order. ++# (If _AS_PATH_WALK were called with IFS unset, it would have the ++# side effect of setting IFS to empty, thus disabling word splitting.) ++# Quoting is to prevent editors from complaining about space-tab. + as_nl=' + ' + export as_nl +-# Printing a long string crashes Solaris 7 /usr/bin/printf. +-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +-# Prefer a ksh shell builtin over an external printf program on Solaris, +-# but without wasting forks for bash or zsh. +-if test -z "$BASH_VERSION$ZSH_VERSION" \ +- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then +- as_echo='print -r --' +- as_echo_n='print -rn --' +-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then +- as_echo='printf %s\n' +- as_echo_n='printf %s' +-else +- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then +- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' +- as_echo_n='/usr/ucb/echo -n' +- else +- as_echo_body='eval expr "X$1" : "X\\(.*\\)"' +- as_echo_n_body='eval +- arg=$1; +- case $arg in #( +- *"$as_nl"*) +- expr "X$arg" : "X\\(.*\\)$as_nl"; +- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; +- esac; +- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" +- ' +- export as_echo_n_body +- as_echo_n='sh -c $as_echo_n_body as_echo' +- fi +- export as_echo_body +- as_echo='sh -c $as_echo_body as_echo' +-fi ++IFS=" "" $as_nl" ++ ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# Ensure predictable behavior from utilities with locale-dependent output. ++LC_ALL=C ++export LC_ALL ++LANGUAGE=C ++export LANGUAGE ++ ++# We cannot yet rely on "unset" to work, but we need these variables ++# to be unset--not just set to an empty or harmless value--now, to ++# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct ++# also avoids known problems related to "unset" and subshell syntax ++# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). ++for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH ++do eval test \${$as_var+y} \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : ++done ++ ++# Ensure that fds 0, 1, and 2 are open. ++if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi ++if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + + # The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then ++if ${PATH_SEPARATOR+false} :; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || +@@ -19645,13 +20648,6 @@ if test "${PATH_SEPARATOR+set}" != set; then + fi + + +-# IFS +-# We need space, tab and new line, in precisely that order. Quoting is +-# there to prevent editors from complaining about space-tab. +-# (If _AS_PATH_WALK were called with IFS unset, it would disable word +-# splitting by setting IFS to empty value.) +-IFS=" "" $as_nl" +- + # Find who we are. Look in the path if we contain no directory separator. + as_myself= + case $0 in #(( +@@ -19660,8 +20656,12 @@ case $0 in #(( + for as_dir in $PATH + do + IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ case $as_dir in #((( ++ '') as_dir=./ ;; ++ */) ;; ++ *) as_dir=$as_dir/ ;; ++ esac ++ test -r "$as_dir$0" && as_myself=$as_dir$0 && break + done + IFS=$as_save_IFS + +@@ -19673,30 +20673,10 @@ if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then +- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 + fi + +-# Unset variables that we do not need and which cause bugs (e.g. in +-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +-# suppresses any "Segmentation fault" message there. '((' could +-# trigger a bug in pdksh 5.2.14. +-for as_var in BASH_ENV ENV MAIL MAILPATH +-do eval test x\${$as_var+set} = xset \ +- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +-done +-PS1='$ ' +-PS2='> ' +-PS4='+ ' +- +-# NLS nuisances. +-LC_ALL=C +-export LC_ALL +-LANGUAGE=C +-export LANGUAGE +- +-# CDPATH. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + + # as_fn_error STATUS ERROR [LINENO LOG_FD] +@@ -19709,13 +20689,14 @@ as_fn_error () + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi +- $as_echo "$as_me: error: $2" >&2 ++ printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status + } # as_fn_error + + ++ + # as_fn_set_status STATUS + # ----------------------- + # Set $? to STATUS, without forking. +@@ -19742,18 +20723,20 @@ as_fn_unset () + { eval $1=; unset $1;} + } + as_unset=as_fn_unset ++ + # as_fn_append VAR VALUE + # ---------------------- + # Append the text in VALUE to the end of the definition contained in VAR. Take + # advantage of any shell optimizations that allow amortized linear growth over + # repeated appends, instead of the typical quadratic growth present in naive + # implementations. +-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null ++then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +-else ++else $as_nop + as_fn_append () + { + eval $1=\$$1\$2 +@@ -19765,12 +20748,13 @@ fi # as_fn_append + # Perform arithmetic evaluation on the ARGs, and store the result in the + # global $as_val. Take advantage of shells that can avoid forks. The arguments + # must be portable across $(()) and expr. +-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null ++then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +-else ++else $as_nop + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` +@@ -19801,7 +20785,7 @@ as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X/"$0" | ++printf "%s\n" X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q +@@ -19823,6 +20807,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS + as_cr_digits='0123456789' + as_cr_alnum=$as_cr_Letters$as_cr_digits + ++ ++# Determine whether it's possible to make 'echo' print without a newline. ++# These variables are no longer used directly by Autoconf, but are AC_SUBSTed ++# for compatibility with existing Makefiles. + ECHO_C= ECHO_N= ECHO_T= + case `echo -n x` in #((((( + -n*) +@@ -19836,6 +20824,12 @@ case `echo -n x` in #((((( + ECHO_N='-n';; + esac + ++# For backward compatibility with old third-party macros, we provide ++# the shell variables $as_echo and $as_echo_n. New code should use ++# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. ++as_echo='printf %s\n' ++as_echo_n='printf %s' ++ + rm -f conf$$ conf$$.exe conf$$.file + if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +@@ -19877,7 +20871,7 @@ as_fn_mkdir_p () + as_dirs= + while :; do + case $as_dir in #( +- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" +@@ -19886,7 +20880,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X"$as_dir" | ++printf "%s\n" X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q +@@ -19948,8 +20942,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + # report actual input values of CONFIG_FILES etc. instead of their + # values after options handling. + ac_log=" +-This file was extended by libffi $as_me 3.4.2, which was +-generated by GNU Autoconf 2.69. Invocation command line was ++This file was extended by libffi $as_me 3.4.4, which was ++generated by GNU Autoconf 2.71. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -20011,14 +21005,16 @@ $config_commands + Report bugs to ." + + _ACEOF ++ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ++ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ++ac_cs_config='$ac_cs_config_escaped' + ac_cs_version="\\ +-libffi config.status 3.4.2 +-configured by $0, generated by GNU Autoconf 2.69, ++libffi config.status 3.4.4 ++configured by $0, generated by GNU Autoconf 2.71, + with options \\"\$ac_cs_config\\" + +-Copyright (C) 2012 Free Software Foundation, Inc. ++Copyright (C) 2021 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." + +@@ -20058,15 +21054,15 @@ do + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) +- $as_echo "$ac_cs_version"; exit ;; ++ printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) +- $as_echo "$ac_cs_config"; exit ;; ++ printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in +- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" +@@ -20074,7 +21070,7 @@ do + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in +- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; +@@ -20083,7 +21079,7 @@ do + as_fn_error $? "ambiguous option: \`$1' + Try \`$0 --help' for more information.";; + --help | --hel | -h ) +- $as_echo "$ac_cs_usage"; exit ;; ++ printf "%s\n" "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; +@@ -20111,7 +21107,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift +- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 ++ \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +@@ -20125,7 +21121,7 @@ exec 5>>config.log + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX + ## Running $as_me. ## + _ASBOX +- $as_echo "$ac_log" ++ printf "%s\n" "$ac_log" + } >&5 + + _ACEOF +@@ -20185,6 +21181,7 @@ lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_q + lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' + reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' + reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' ++FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' + OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' + deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' + file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +@@ -20193,6 +21190,7 @@ want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' + DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' + sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' + AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' ++lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' + AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' + archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' + STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +@@ -20367,6 +21365,7 @@ LN_S \ + lt_SP2NL \ + lt_NL2SP \ + reload_flag \ ++FILECMD \ + OBJDUMP \ + deplibs_check_method \ + file_magic_cmd \ +@@ -20375,7 +21374,6 @@ want_nocaseglob \ + DLLTOOL \ + sharedlib_from_linklib_cmd \ + AR \ +-AR_FLAGS \ + archiver_list_spec \ + STRIP \ + RANLIB \ +@@ -20557,9 +21555,9 @@ done + # We use the long form for the default assignment because of an extremely + # bizarre bug on SunOS 4.1.3. + if $ac_need_defaults; then +- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands ++ test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files ++ test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers ++ test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands + fi + + # Have a temporary directory for convenience. Make it in the build tree +@@ -20895,7 +21893,7 @@ do + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac +- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ++ case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + +@@ -20903,17 +21901,17 @@ do + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` +- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' ++ printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" +- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +-$as_echo "$as_me: creating $ac_file" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 ++printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) +- ac_sed_conf_input=`$as_echo "$configure_input" | ++ ac_sed_conf_input=`printf "%s\n" "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac +@@ -20930,7 +21928,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X"$ac_file" | ++printf "%s\n" X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q +@@ -20954,9 +21952,9 @@ $as_echo X"$ac_file" | + case "$ac_dir" in + .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) +- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` ++ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. +- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` ++ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; +@@ -21018,8 +22016,8 @@ ac_sed_dataroot=' + case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in + *datarootdir*) ac_datarootdir_seen=yes;; + *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' +@@ -21063,9 +22061,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + which seems to be undefined. Please make sure it is defined" >&5 +-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' + which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" +@@ -21081,20 +22079,20 @@ which seems to be undefined. Please make sure it is defined" >&2;} + # + if test x"$ac_file" != x-; then + { +- $as_echo "/* $configure_input */" \ ++ printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +-$as_echo "$as_me: $ac_file is unchanged" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 ++printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else +- $as_echo "/* $configure_input */" \ ++ printf "%s\n" "/* $configure_input */" >&1 \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +@@ -21114,7 +22112,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X"$_am_arg" | ++printf "%s\n" X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q +@@ -21134,8 +22132,8 @@ $as_echo X"$_am_arg" | + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + +- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +-$as_echo "$as_me: executing $ac_file commands" >&6;} ++ :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 ++printf "%s\n" "$as_me: executing $ac_file commands" >&6;} + ;; + esac + +@@ -21144,11 +22142,11 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} + "buildir":C) ac_top_srcdir="$ax_enable_builddir_srcdir" + if test ".$ax_enable_builddir" = ".." ; then + if test -f "$top_srcdir/Makefile" ; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5 +-$as_echo "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - left untouched" >&5 ++printf "%s\n" "$as_me: skipping top_srcdir/Makefile - left untouched" >&6;} + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5 +-$as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: skipping top_srcdir/Makefile - not created" >&5 ++printf "%s\n" "$as_me: skipping top_srcdir/Makefile - not created" >&6;} + fi + else + if test -f "$ac_top_srcdir/Makefile" ; then +@@ -21164,8 +22162,8 @@ $as_echo "$as_me: skipping top_srcdir/Makefile - not created" >&6;} + cp $tmp/conftemp.mk $ac_top_srcdir/makefiles.mk~ ## DEBUGGING + fi + if test ! -f "$ac_top_srcdir/Makefile" ; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5 +-$as_echo "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: create top_srcdir/Makefile guessed from local Makefile" >&5 ++printf "%s\n" "$as_me: create top_srcdir/Makefile guessed from local Makefile" >&6;} + x='`' ; cat >$tmp/conftemp.sed <<_EOF + /^\$/n + x +@@ -21249,15 +22247,15 @@ _EOF + cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefile.sed~" ## DEBUGGING + $ax_enable_builddir_sed -f $tmp/conftemp.sed Makefile >$ac_top_srcdir/Makefile + if test -f "$ac_top_srcdir/Makefile.mk" ; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5 +-$as_echo "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&5 ++printf "%s\n" "$as_me: extend top_srcdir/Makefile with top_srcdir/Makefile.mk" >&6;} + cat $ac_top_srcdir/Makefile.mk >>$ac_top_srcdir/Makefile + fi ; xxxx="####" + echo "$xxxx CONFIGURATIONS FOR TOPLEVEL MAKEFILE: " >>$ac_top_srcdir/Makefile + # sanity check + if grep '^; echo "MAKE ' $ac_top_srcdir/Makefile >/dev/null ; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5 +-$as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: buggy sed found - it deletes tab in \"a\" text parts" >&5 ++printf "%s\n" "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;} + $ax_enable_builddir_sed -e '/^@ HOST=/s/^/ /' -e '/^; /s/^/ /' $ac_top_srcdir/Makefile \ + >$ac_top_srcdir/Makefile~ + (test -s $ac_top_srcdir/Makefile~ && mv $ac_top_srcdir/Makefile~ $ac_top_srcdir/Makefile) 2>/dev/null +@@ -21270,17 +22268,17 @@ $as_echo "$as_me: buggy sed found - it deletes tab in \"a\" text parts" >&6;} + cp "$tmp/conftemp.sed" "$ac_top_srcdir/makefiles.sed~" ## DEBUGGING + cp "$tmp/mkfile.tmp" "$ac_top_srcdir/makefiles.out~" ## DEBUGGING + if cmp -s "$ac_top_srcdir/Makefile" "$tmp/mkfile.tmp" 2>/dev/null ; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5 +-$as_echo "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: keeping top_srcdir/Makefile from earlier configure" >&5 ++printf "%s\n" "$as_me: keeping top_srcdir/Makefile from earlier configure" >&6;} + rm "$tmp/mkfile.tmp" + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5 +-$as_echo "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: reusing top_srcdir/Makefile from earlier configure" >&5 ++printf "%s\n" "$as_me: reusing top_srcdir/Makefile from earlier configure" >&6;} + mv "$tmp/mkfile.tmp" "$ac_top_srcdir/Makefile" + fi + fi +- { $as_echo "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5 +-$as_echo "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&5 ++printf "%s\n" "$as_me: build in $ax_enable_builddir (HOST=$ax_enable_builddir_host)" >&6;} + xxxx="####" + echo "$xxxx" "$ax_enable_builddir_host" "|$ax_enable_builddir" >>$ac_top_srcdir/Makefile + fi +@@ -21305,7 +22303,7 @@ esac + for am_mf + do + # Strip MF so we end up with the name of the file. +- am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` ++ am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line +@@ -21317,7 +22315,7 @@ $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X"$am_mf" | ++printf "%s\n" X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q +@@ -21339,7 +22337,7 @@ $as_echo X"$am_mf" | + $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +-$as_echo X/"$am_mf" | ++printf "%s\n" X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q +@@ -21364,8 +22362,8 @@ $as_echo X/"$am_mf" | + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is +@@ -21516,6 +22514,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd + # convert \$build files to toolchain format. + to_tool_file_cmd=$lt_cv_to_tool_file_cmd + ++# A file(cmd) program that detects file types. ++FILECMD=$lt_FILECMD ++ + # An object symbol dumper. + OBJDUMP=$lt_OBJDUMP + +@@ -21540,8 +22541,11 @@ sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + # The archiver. + AR=$lt_AR + ++# Flags to create an archive (by configure). ++lt_ar_flags=$lt_ar_flags ++ + # Flags to create an archive. +-AR_FLAGS=$lt_AR_FLAGS ++AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} + + # How to feed a file listing to the archiver. + archiver_list_spec=$lt_archiver_list_spec +@@ -21923,6 +22927,7 @@ _LT_EOF + esac + + ++ + ltmain=$ac_aux_dir/ltmain.sh + + +@@ -21930,7 +22935,7 @@ ltmain=$ac_aux_dir/ltmain.sh + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? +- sed '$q' "$ltmain" >> "$cfgfile" \ ++ $SED '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || +@@ -22130,11 +23135,12 @@ if test "$no_create" != yes; then + $ac_cs_success || as_fn_exit 1 + fi + if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} ++ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 ++printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + fi + + + # Copy this file instead of using AC_CONFIG_LINK in order to support + # compiling with MSVC, which won't understand cygwin style symlinks. + cp ${srcdir}/src/$TARGETDIR/ffitarget.h include/ffitarget.h ++ +diff --git a/vendor/libffi-sys/libffi/configure.ac b/vendor/libffi-sys/libffi/configure.ac +index 70f6d2c2e..7e8cd98a4 100644 +--- a/vendor/libffi-sys/libffi/configure.ac ++++ b/vendor/libffi-sys/libffi/configure.ac +@@ -1,11 +1,11 @@ + dnl Process this with autoconf to create configure + +-AC_PREREQ(2.68) ++AC_PREREQ([2.71]) + +-AC_INIT([libffi], [3.4.2], [http://github.com/libffi/libffi/issues]) ++AC_INIT([libffi],[3.4.4],[http://github.com/libffi/libffi/issues]) + AC_CONFIG_HEADERS([fficonfig.h]) + +-AC_CANONICAL_SYSTEM ++AC_CANONICAL_TARGET + target_alias=${target_alias-$host_alias} + + case "${host}" in +@@ -38,7 +38,8 @@ AC_SUBST(CFLAGS) + + AM_PROG_AS + AM_PROG_CC_C_O +-AC_PROG_LIBTOOL ++AC_PROG_EGREP ++LT_INIT + AC_CONFIG_MACRO_DIR([m4]) + + AC_CHECK_TOOL(READELF, readelf) +@@ -88,7 +89,15 @@ fi + AC_SUBST(AM_RUNTESTFLAGS) + AC_SUBST(AM_LTLDFLAGS) + +-AC_HEADER_STDC ++m4_warn([obsolete], ++[The preprocessor macro `STDC_HEADERS' is obsolete. ++ Except in unusual embedded environments, you can safely include all ++ ISO C90 headers unconditionally.])dnl ++# Autoupdate added the next two lines to ensure that your configure ++# script's behavior did not change. They are probably safe to remove. ++AC_CHECK_INCLUDES_DEFAULT ++AC_PROG_EGREP ++ + AC_CHECK_FUNCS(memcpy) + AC_FUNC_ALLOCA + +@@ -125,9 +134,7 @@ case "$TARGET" in + save_LDFLAGS="$LDFLAGS" + CFLAGS="$CFLAGS -fpic" + LDFLAGS="$LDFLAGS -shared" +- AC_TRY_LINK([asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text");],, +- [libffi_cv_as_sparc_ua_pcrel=yes], +- [libffi_cv_as_sparc_ua_pcrel=no]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[asm (".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo); .text");]], [[]])],[libffi_cv_as_sparc_ua_pcrel=yes],[libffi_cv_as_sparc_ua_pcrel=no]) + CFLAGS="$save_CFLAGS" + LDFLAGS="$save_LDFLAGS"]) + if test "x$libffi_cv_as_sparc_ua_pcrel" = xyes; then +@@ -139,9 +146,7 @@ case "$TARGET" in + libffi_cv_as_register_pseudo_op, [ + libffi_cv_as_register_pseudo_op=unknown + # Check if we have .register +- AC_TRY_COMPILE(,[asm (".register %g2, #scratch");], +- [libffi_cv_as_register_pseudo_op=yes], +- [libffi_cv_as_register_pseudo_op=no]) ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[asm (".register %g2, #scratch");]])],[libffi_cv_as_register_pseudo_op=yes],[libffi_cv_as_register_pseudo_op=no]) + ]) + if test "x$libffi_cv_as_register_pseudo_op" = xyes; then + AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1, +@@ -185,7 +190,7 @@ esac + AC_CACHE_CHECK([whether compiler supports pointer authentication], + libffi_cv_as_ptrauth, [ + libffi_cv_as_ptrauth=unknown +- AC_TRY_COMPILE(,[ ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ + #ifdef __clang__ + # if __has_feature(ptrauth_calls) + # define HAVE_PTRAUTH 1 +@@ -195,21 +200,24 @@ AC_CACHE_CHECK([whether compiler supports pointer authentication], + #ifndef HAVE_PTRAUTH + # error Pointer authentication not supported + #endif +- ], +- [libffi_cv_as_ptrauth=yes], +- [libffi_cv_as_ptrauth=no]) ++ ]])],[libffi_cv_as_ptrauth=yes],[libffi_cv_as_ptrauth=no]) + ]) + if test "x$libffi_cv_as_ptrauth" = xyes; then + AC_DEFINE(HAVE_PTRAUTH, 1, + [Define if your compiler supports pointer authentication.]) + fi + +-# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. ++# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC; ++# if EMUTRAMP is active too ffi could try mapping without PROT_EXEC, ++# but the kernel needs to recognize the trampoline generated by ffi. ++# Otherwise fallback to double mmap trick. + AC_ARG_ENABLE(pax_emutramp, +- [ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC], ++ [ --enable-pax_emutramp enable pax emulated trampolines (experimental)], + if test "$enable_pax_emutramp" = "yes"; then ++ AC_MSG_WARN([EMUTRAMP is experimental only. Use --enable-pax_emutramp=experimental to enforce.]) ++ elif test "$enable_pax_emutramp" = "experimental"; then + AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1, +- [Define this if you want to enable pax emulated trampolines]) ++ [Define this if you want to enable pax emulated trampolines (experimental)]) + fi) + + LT_SYS_SYMBOL_USCORE +@@ -273,7 +281,7 @@ if test "x$GCC" = "xyes"; then + libffi_cv_ro_eh_frame=yes + echo 'extern void foo (void); void bar (void) { foo (); foo (); }' > conftest.c + if $CC $CFLAGS -c -fpic -fexceptions $libffi_cv_no_lto -o conftest.o conftest.c > /dev/null 2>&1; then +- if $READELF -WS conftest.o | grep -q -n 'eh_frame .* WA'; then ++ if $READELF -WS conftest.o 2>/dev/null | grep -q -n 'eh_frame .* WA'; then + libffi_cv_ro_eh_frame=no + fi + fi +@@ -294,7 +302,7 @@ if test "x$GCC" = "xyes"; then + echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1 ; }' > conftest.c + libffi_cv_hidden_visibility_attribute=no + if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then +- if egrep '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then ++ if $EGREP '(\.hidden|\.private_extern).*foo' conftest.s >/dev/null; then + libffi_cv_hidden_visibility_attribute=yes + fi + fi +@@ -307,8 +315,7 @@ if test "x$GCC" = "xyes"; then + fi + + AC_ARG_ENABLE(docs, +- AC_HELP_STRING([--disable-docs], +- [Disable building of docs (default: no)]), ++ AS_HELP_STRING([--disable-docs],[Disable building of docs (default: no)]), + [enable_docs=no], + [enable_docs=yes]) + AM_CONDITIONAL(BUILD_DOCS, [test x$enable_docs = xyes]) +@@ -371,9 +378,15 @@ AC_ARG_ENABLE(exec-static-tramp, + + if test "$enable_exec_static_tramp" != no; then + case "$target" in +- *-cygwin*) ++ *-cygwin* | *-msys*) ++ # Only define static trampolines if we are using the cygwin runtime. ++ # Will this need to be changed for mingw? ++ if test "x$GCC" = "xyes"; then ++ AC_DEFINE(FFI_EXEC_STATIC_TRAMP, 1, ++ [Define this if you want statically defined trampolines]) ++ fi + ;; +- *arm*-*-linux-* | aarch64*-*-linux-* | i*86-*-linux-* | x86_64-*-linux-*) ++ *arm*-*-linux-* | aarch64*-*-linux-* | i*86-*-linux-* | x86_64-*-linux-* | loongarch*-*-linux-*) + AC_DEFINE(FFI_EXEC_STATIC_TRAMP, 1, + [Define this if you want statically defined trampolines]) + ;; +@@ -389,7 +402,7 @@ AC_ARG_ENABLE(purify-safety, + AC_ARG_ENABLE(multi-os-directory, + [ --disable-multi-os-directory + disable use of gcc --print-multi-os-directory to change the library installation directory]) +- ++ + # These variables are only ever used when we cross-build to X86_WIN32. + # And we only support this with GCC, so... + if test "x$GCC" = "xyes"; then +@@ -414,6 +427,16 @@ else + fi + AC_SUBST(toolexeclibdir) + ++# Conditionalize the makefile for this target machine. ++tmake_file_= ++for f in ${tmake_file}; do ++ if test -f ${srcdir}/src/$TARGETDIR/$f; then ++ tmake_file_="${tmake_file_} \$(srcdir)/src/$TARGETDIR/$f" ++ fi ++done ++tmake_file="${tmake_file_}" ++AC_SUBST(tmake_file) ++ + # Check linker support. + LIBFFI_ENABLE_SYMVERS + +diff --git a/vendor/libffi-sys/libffi/configure.host b/vendor/libffi-sys/libffi/configure.host +index 268267183..f23716f75 100644 +--- a/vendor/libffi-sys/libffi/configure.host ++++ b/vendor/libffi-sys/libffi/configure.host +@@ -6,7 +6,7 @@ + # THIS TABLE IS SORTED. KEEP IT THAT WAY. + # Most of the time we can define all the variables all at once... + case "${host}" in +- aarch64*-*-cygwin* | aarch64*-*-mingw* | aarch64*-*-win* ) ++ aarch64*-*-cygwin* | aarch64*-*-msys* | aarch64*-*-mingw* | aarch64*-*-win* ) + TARGET=ARM_WIN64; TARGETDIR=aarch64 + if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then + MSVC=1 +@@ -30,7 +30,7 @@ case "${host}" in + SOURCES="ffi.c arcompact.S" + ;; + +- arm*-*-cygwin* | arm*-*-mingw* | arm*-*-win* ) ++ arm*-*-cygwin* | arm*-*-msys* | arm*-*-mingw* | arm*-*-win* ) + TARGET=ARM_WIN32; TARGETDIR=arm + if test "${ax_cv_c_compiler_vendor}" = "microsoft"; then + MSVC=1 +@@ -83,8 +83,8 @@ case "${host}" in + TARGET=X86_FREEBSD; TARGETDIR=x86 + ;; + +- i?86-*-cygwin* | i?86-*-mingw* | i?86-*-win* | i?86-*-os2* | i?86-*-interix* \ +- | x86_64-*-cygwin* | x86_64-*-mingw* | x86_64-*-win* ) ++ i?86-*-cygwin* | i?86-*-msys* | i?86-*-mingw* | i?86-*-win* | i?86-*-os2* | i?86-*-interix* \ ++ | x86_64-*-cygwin* | x86_64-*-msys* | x86_64-*-mingw* | x86_64-*-win* ) + TARGETDIR=x86 + if test $ac_cv_sizeof_size_t = 4; then + TARGET=X86_WIN32 +@@ -140,6 +140,11 @@ case "${host}" in + SOURCES="ffi.c sysv.S" + ;; + ++ loongarch64-*-*) ++ TARGET=LOONGARCH64; TARGETDIR=loongarch64 ++ SOURCES="ffi.c sysv.S" ++ ;; ++ + m32r*-*-*) + TARGET=M32R; TARGETDIR=m32r + SOURCES="ffi.c sysv.S" +@@ -207,6 +212,8 @@ case "${host}" in + ;; + powerpc-*-aix* | rs6000-*-aix*) + TARGET=POWERPC_AIX; TARGETDIR=powerpc ++ # Create AIX-style "FAT" libraries. ++ tmake_file="t-aix" + ;; + powerpc-*-freebsd* | powerpc-*-openbsd* | powerpc-*-netbsd*) + TARGET=POWERPC_FREEBSD; TARGETDIR=powerpc +diff --git a/vendor/libffi-sys/libffi/depcomp b/vendor/libffi-sys/libffi/depcomp +index 6b391623c..715e34311 100755 +--- a/vendor/libffi-sys/libffi/depcomp ++++ b/vendor/libffi-sys/libffi/depcomp +@@ -3,7 +3,7 @@ + + scriptversion=2018-03-07.03; # UTC + +-# Copyright (C) 1999-2020 Free Software Foundation, Inc. ++# Copyright (C) 1999-2021 Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by +diff --git a/vendor/libffi-sys/libffi/doc/Makefile.in b/vendor/libffi-sys/libffi/doc/Makefile.in +index 98e7c950c..bccd187bb 100644 +--- a/vendor/libffi-sys/libffi/doc/Makefile.in ++++ b/vendor/libffi-sys/libffi/doc/Makefile.in +@@ -1,7 +1,7 @@ +-# Makefile.in generated by automake 1.16.2 from Makefile.am. ++# Makefile.in generated by automake 1.16.5 from Makefile.am. + # @configure_input@ + +-# Copyright (C) 1994-2020 Free Software Foundation, Inc. ++# Copyright (C) 1994-2021 Free Software Foundation, Inc. + + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -91,7 +91,6 @@ target_triplet = @target@ + subdir = doc + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ +- $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_cc_maxopt.m4 \ + $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ +@@ -100,6 +99,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ + $(top_srcdir)/m4/ax_enable_builddir.m4 \ + $(top_srcdir)/m4/ax_gcc_archflag.m4 \ + $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ ++ $(top_srcdir)/m4/ax_prepend_flag.m4 \ + $(top_srcdir)/m4/ax_require_defined.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ +@@ -220,8 +220,9 @@ CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ + CFLAGS = @CFLAGS@ +-CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ ++CSCOPE = @CSCOPE@ ++CTAGS = @CTAGS@ + CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXDEPMODE = @CXXDEPMODE@ +@@ -236,9 +237,11 @@ ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ ++ETAGS = @ETAGS@ + EXEEXT = @EXEEXT@ + FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ + FGREP = @FGREP@ ++FILECMD = @FILECMD@ + GREP = @GREP@ + HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ + HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ +@@ -344,6 +347,7 @@ target_alias = @target_alias@ + target_cpu = @target_cpu@ + target_os = @target_os@ + target_vendor = @target_vendor@ ++tmake_file = @tmake_file@ + toolexecdir = @toolexecdir@ + toolexeclibdir = @toolexeclibdir@ + top_build_prefix = @top_build_prefix@ +@@ -556,7 +560,6 @@ ctags CTAGS: + + cscope cscopelist: + +- + distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +diff --git a/vendor/libffi-sys/libffi/doc/libffi.info b/vendor/libffi-sys/libffi/doc/libffi.info +index 7c61443c5..6b9580ad6 100644 +--- a/vendor/libffi-sys/libffi/doc/libffi.info ++++ b/vendor/libffi-sys/libffi/doc/libffi.info +@@ -1,9 +1,9 @@ +-This is libffi.info, produced by makeinfo version 6.7 from libffi.texi. ++This is libffi.info, produced by makeinfo version 6.8 from libffi.texi. + + This manual is for libffi, a portable foreign function interface + library. + +- Copyright (C) 2008-2019, 2021 Anthony Green and Red Hat, Inc. ++ Copyright (C) 2008-2019, 2021, 2022 Anthony Green and Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the +@@ -38,7 +38,7 @@ libffi + This manual is for libffi, a portable foreign function interface + library. + +- Copyright (C) 2008-2019, 2021 Anthony Green and Red Hat, Inc. ++ Copyright (C) 2008-2019, 2021, 2022 Anthony Green and Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the +@@ -85,7 +85,7 @@ is found. The calling convention is also sometimes called the "ABI" or + Some programs may not know at the time of compilation what arguments + are to be passed to a function. For instance, an interpreter may be + told at run-time about the number and types of arguments used to call a +-given function. 'Libffi' can be used in such programs to provide a ++given function. 'libffi' can be used in such programs to provide a + bridge from the interpreter program to compiled code. + + The 'libffi' library provides a portable, high level programming +@@ -122,7 +122,7 @@ File: libffi.info, Node: The Basics, Next: Simple Example, Up: Using libffi + 2.1 The Basics + ============== + +-'Libffi' assumes that you have a pointer to the function you wish to ++'libffi' assumes that you have a pointer to the function you wish to + call and that you know the number and types of arguments to pass it, as + well as the return type of the function. + +@@ -213,9 +213,7 @@ function: + AVALUES is a vector of 'void *' pointers that point to the memory + locations holding the argument values for a call. If CIF declares + that the function has no arguments (i.e., NARGS was 0), then +- AVALUES is ignored. Note that argument values may be modified by +- the callee (for instance, structs passed by value); the burden of +- copying pass-by-value arguments is placed on the caller. ++ AVALUES is ignored. + + Note that while the return value must be register-sized, arguments + should exactly match their declared type. For example, if an +@@ -1033,26 +1031,26 @@ Index + +  + Tag Table: +-Node: Top1394 +-Node: Introduction2923 +-Node: Using libffi4555 +-Node: The Basics5084 +-Node: Simple Example10191 +-Node: Types11222 +-Node: Primitive Types11733 +-Node: Structures13854 +-Node: Size and Alignment14893 +-Node: Arrays Unions Enums17090 +-Node: Type Example20019 +-Node: Complex21310 +-Node: Complex Type Example22728 +-Node: Multiple ABIs25780 +-Node: The Closure API26151 +-Node: Closure Example29977 +-Node: Thread Safety31609 +-Node: Memory Usage32410 +-Node: Missing Features33605 +-Node: Index33970 ++Node: Top1400 ++Node: Introduction2935 ++Node: Using libffi4567 ++Node: The Basics5096 ++Node: Simple Example10024 ++Node: Types11055 ++Node: Primitive Types11566 ++Node: Structures13687 ++Node: Size and Alignment14726 ++Node: Arrays Unions Enums16923 ++Node: Type Example19852 ++Node: Complex21143 ++Node: Complex Type Example22561 ++Node: Multiple ABIs25613 ++Node: The Closure API25984 ++Node: Closure Example29810 ++Node: Thread Safety31442 ++Node: Memory Usage32243 ++Node: Missing Features33438 ++Node: Index33803 +  + End Tag Table + +diff --git a/vendor/libffi-sys/libffi/doc/libffi.texi b/vendor/libffi-sys/libffi/doc/libffi.texi +index 7fd3625d9..88daab58d 100644 +--- a/vendor/libffi-sys/libffi/doc/libffi.texi ++++ b/vendor/libffi-sys/libffi/doc/libffi.texi +@@ -18,7 +18,7 @@ + This manual is for libffi, a portable foreign function interface + library. + +-Copyright @copyright{} 2008--2019, 2021 Anthony Green and Red Hat, Inc. ++Copyright @copyright{} 2008--2019, 2021, 2022 Anthony Green and Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the +@@ -91,10 +91,10 @@ sometimes called the @dfn{ABI} or @dfn{Application Binary Interface}. + Some programs may not know at the time of compilation what arguments + are to be passed to a function. For instance, an interpreter may be + told at run-time about the number and types of arguments used to call +-a given function. @samp{Libffi} can be used in such programs to ++a given function. @code{libffi} can be used in such programs to + provide a bridge from the interpreter program to compiled code. + +-The @samp{libffi} library provides a portable, high level programming ++The @code{libffi} library provides a portable, high level programming + interface to various calling conventions. This allows a programmer to + call any function specified by a call interface description at run + time. +@@ -102,9 +102,9 @@ time. + @acronym{FFI} stands for Foreign Function Interface. A foreign + function interface is the popular name for the interface that allows + code written in one language to call code written in another language. +-The @samp{libffi} library really only provides the lowest, machine ++The @code{libffi} library really only provides the lowest, machine + dependent layer of a fully featured foreign function interface. A +-layer must exist above @samp{libffi} that handles type conversions for ++layer must exist above @code{libffi} that handles type conversions for + values passed between the two languages. + @cindex FFI + @cindex Foreign Function Interface +@@ -127,7 +127,7 @@ values passed between the two languages. + @node The Basics + @section The Basics + +-@samp{Libffi} assumes that you have a pointer to the function you wish ++@code{libffi} assumes that you have a pointer to the function you wish + to call and that you know the number and types of arguments to pass + it, as well as the return type of the function. + +@@ -213,22 +213,20 @@ to ensure this. If @var{cif} declares that the function returns + @code{void} (using @code{ffi_type_void}), then @var{rvalue} is + ignored. + +-In most situations, @samp{libffi} will handle promotion according to ++In most situations, @code{libffi} will handle promotion according to + the ABI. However, for historical reasons, there is a special case + with return values that must be handled by your code. In particular, + for integral (not @code{struct}) types that are narrower than the + system register size, the return value will be widened by +-@samp{libffi}. @samp{libffi} provides a type, @code{ffi_arg}, that ++@code{libffi}. @code{libffi} provides a type, @code{ffi_arg}, that + can be used as the return type. For example, if the CIF was defined +-with a return type of @code{char}, @samp{libffi} will try to store a ++with a return type of @code{char}, @code{libffi} will try to store a + full @code{ffi_arg} into the return value. + + @var{avalues} is a vector of @code{void *} pointers that point to the + memory locations holding the argument values for a call. If @var{cif} + declares that the function has no arguments (i.e., @var{nargs} was 0), +-then @var{avalues} is ignored. Note that argument values may be +-modified by the callee (for instance, structs passed by value); the +-burden of copying pass-by-value arguments is placed on the caller. ++then @var{avalues} is ignored. + + Note that while the return value must be register-sized, arguments + should exactly match their declared type. For example, if an argument +@@ -412,8 +410,8 @@ when passing to @code{ffi_prep_cif}. + @node Structures + @subsection Structures + +-@samp{libffi} is perfectly happy passing structures back and forth. +-You must first describe the structure to @samp{libffi} by creating a ++@code{libffi} is perfectly happy passing structures back and forth. ++You must first describe the structure to @code{libffi} by creating a + new @code{ffi_type} object for it. + + @tindex ffi_type +@@ -433,7 +431,7 @@ For a structure, this should be set to @code{FFI_TYPE_STRUCT}. + This is a @samp{NULL}-terminated array of pointers to @code{ffi_type} + objects. There is one element per field of the struct. + +-Note that @samp{libffi} has no special support for bit-fields. You ++Note that @code{libffi} has no special support for bit-fields. You + must manage these manually. + @end table + @end deftp +@@ -510,7 +508,7 @@ valid here. + + @subsubsection Arrays + +-@samp{libffi} does not have direct support for arrays or unions. ++@code{libffi} does not have direct support for arrays or unions. + However, they can be emulated using structures. + + To emulate an array, simply create an @code{ffi_type} using +@@ -537,7 +535,7 @@ structure types created like this should only be used to refer to + members of real @code{FFI_TYPE_STRUCT} objects. + + However, a phony array type like this will not cause any errors from +-@samp{libffi} if you use it as an argument or return type. This may ++@code{libffi} if you use it as an argument or return type. This may + be confusing. + + @subsubsection Unions +@@ -646,7 +644,7 @@ Here is the corresponding code to describe this struct to + @node Complex + @subsection Complex Types + +-@samp{libffi} supports the complex types defined by the C99 ++@code{libffi} supports the complex types defined by the C99 + standard (@code{_Complex float}, @code{_Complex double} and + @code{_Complex long double} with the built-in type descriptors + @code{ffi_type_complex_float}, @code{ffi_type_complex_double} and +@@ -654,7 +652,7 @@ standard (@code{_Complex float}, @code{_Complex double} and + + Custom complex types like @code{_Complex int} can also be used. + An @code{ffi_type} object has to be defined to describe the +-complex type to @samp{libffi}. ++complex type to @code{libffi}. + + @tindex ffi_type + @deftp {Data type} ffi_type +@@ -821,7 +819,6 @@ Free memory allocated using @code{ffi_closure_alloc}. The argument is + the writable address that was returned. + @end defun + +- + Once you have allocated the memory for a closure, you must construct a + @code{ffi_cif} describing the function call. Finally you can prepare + the closure function: +@@ -977,7 +974,7 @@ type is @code{long double}. + Note that memory allocated by @code{ffi_closure_alloc} and freed by + @code{ffi_closure_free} does not come from the same general pool of + memory that @code{malloc} and @code{free} use. To accomodate security +-settings, @samp{libffi} may aquire memory, for example, by mapping ++settings, @code{libffi} may aquire memory, for example, by mapping + temporary files into multiple places in the address space (once to + write out the closure, a second to execute it). The search follows + this list, using the first that works: +diff --git a/vendor/libffi-sys/libffi/doc/mdate-sh b/vendor/libffi-sys/libffi/doc/mdate-sh +index 6a6a4bcf2..e6d572d4c 100755 +--- a/vendor/libffi-sys/libffi/doc/mdate-sh ++++ b/vendor/libffi-sys/libffi/doc/mdate-sh +@@ -3,7 +3,7 @@ + + scriptversion=2018-03-07.03; # UTC + +-# Copyright (C) 1995-2020 Free Software Foundation, Inc. ++# Copyright (C) 1995-2021 Free Software Foundation, Inc. + # written by Ulrich Drepper , June 1995 + # + # This program is free software; you can redistribute it and/or modify +diff --git a/vendor/libffi-sys/libffi/doc/stamp-vti b/vendor/libffi-sys/libffi/doc/stamp-vti +index f2b741e87..6056fad8d 100644 +--- a/vendor/libffi-sys/libffi/doc/stamp-vti ++++ b/vendor/libffi-sys/libffi/doc/stamp-vti +@@ -1,4 +1,4 @@ +-@set UPDATED 27 June 2021 +-@set UPDATED-MONTH June 2021 +-@set EDITION 3.4.2 +-@set VERSION 3.4.2 ++@set UPDATED 23 October 2022 ++@set UPDATED-MONTH October 2022 ++@set EDITION 3.4.4 ++@set VERSION 3.4.4 +diff --git a/vendor/libffi-sys/libffi/doc/texinfo.tex b/vendor/libffi-sys/libffi/doc/texinfo.tex +index deca59918..e48383def 100644 +--- a/vendor/libffi-sys/libffi/doc/texinfo.tex ++++ b/vendor/libffi-sys/libffi/doc/texinfo.tex +@@ -3,9 +3,9 @@ + % Load plain if necessary, i.e., if running under initex. + \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi + % +-\def\texinfoversion{2020-02-11.09} ++\def\texinfoversion{2021-04-25.21} + % +-% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. ++% Copyright 1985, 1986, 1988, 1990-2021 Free Software Foundation, Inc. + % + % This texinfo.tex file is free software: you can redistribute it and/or + % modify it under the terms of the GNU General Public License as +@@ -33,7 +33,7 @@ + % The texinfo.tex in any given distribution could well be out + % of date, so if that's what you're using, please check. + % +-% Send bug reports to bug-texinfo@gnu.org. Please include including a ++% Send bug reports to bug-texinfo@gnu.org. Please include a + % complete document in each bug report with which we can reproduce the + % problem. Patches are, of course, greatly appreciated. + % +@@ -349,34 +349,19 @@ + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % ++ \checkchapterpage ++ % + % Retrieve the information for the headings from the marks in the page, + % and call Plain TeX's \makeheadline and \makefootline, which use the + % values in \headline and \footline. + % +- % This is used to check if we are on the first page of a chapter. +- \ifcase1\the\savedtopmark\fi +- \let\prevchaptername\thischaptername +- \ifcase0\firstmark\fi +- \let\curchaptername\thischaptername +- % +- \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi +- % +- \ifx\curchaptername\prevchaptername +- \let\thischapterheading\thischapter +- \else +- % \thischapterheading is the same as \thischapter except it is blank +- % for the first page of a chapter. This is to prevent the chapter name +- % being shown twice. +- \def\thischapterheading{}% +- \fi +- % + % Common context changes for both heading and footing. + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} + % ++ \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% +- % + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + \global\setbox\footlinebox = \vbox{\commonheadfootline \makefootline}% + % +@@ -423,6 +408,22 @@ + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} + } + ++% Check if we are on the first page of a chapter. Used for printing headings. ++\newif\ifchapterpage ++\def\checkchapterpage{% ++ % Get the chapter that was current at the end of the last page ++ \ifcase1\the\savedtopmark\fi ++ \let\prevchaptername\thischaptername ++ % ++ \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi ++ \let\curchaptername\thischaptername ++ % ++ \ifx\curchaptername\prevchaptername ++ \chapterpagefalse ++ \else ++ \chapterpagetrue ++ \fi ++} + + % Argument parsing + +@@ -571,9 +572,8 @@ + \fi + } + +-% @end foo executes the definition of \Efoo. +-% But first, it executes a specialized version of \checkenv +-% ++ ++% @end foo calls \checkenv and executes the definition of \Efoo. + \parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else +@@ -1002,6 +1002,14 @@ where each line of input produces a line of output.} + \global\everypar = {}% + } + ++% leave vertical mode without cancelling any first paragraph indent ++\gdef\imageindent{% ++ \toks0=\everypar ++ \everypar={}% ++ \ptexnoindent ++ \global\everypar=\toks0 ++} ++ + + % @refill is a no-op. + \let\refill=\relax +@@ -1010,7 +1018,7 @@ where each line of input produces a line of output.} + \let\setfilename=\comment + + % @bye. +-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} ++\outer\def\bye{\chappager\pagelabels\tracingstats=1\ptexend} + + + \message{pdf,} +@@ -1137,6 +1145,45 @@ where each line of input produces a line of output.} + \fi + + ++% Output page labels information. ++% See PDF reference v.1.7 p.594, section 8.3.1. ++\ifpdf ++\def\pagelabels{% ++ \def\title{0 << /P (T-) /S /D >>}% ++ \edef\roman{\the\romancount << /S /r >>}% ++ \edef\arabic{\the\arabiccount << /S /D >>}% ++ % ++ % Page label ranges must be increasing. Remove any duplicates. ++ % (There is a slight chance of this being wrong if e.g. there is ++ % a @contents but no @titlepage, etc.) ++ % ++ \ifnum\romancount=0 \def\roman{}\fi ++ \ifnum\arabiccount=0 \def\title{}% ++ \else ++ \ifnum\romancount=\arabiccount \def\roman{}\fi ++ \fi ++ % ++ \ifnum\romancount<\arabiccount ++ \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax ++ \else ++ \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax ++ \fi ++} ++\else ++ \let\pagelabels\relax ++\fi ++ ++\newcount\pagecount \pagecount=0 ++\newcount\romancount \romancount=0 ++\newcount\arabiccount \arabiccount=0 ++\ifpdf ++ \let\ptxadvancepageno\advancepageno ++ \def\advancepageno{% ++ \ptxadvancepageno\global\advance\pagecount by 1 ++ } ++\fi ++ ++ + % PDF uses PostScript string constants for the names of xref targets, + % for display in the outlines, and in other places. Thus, we have to + % double any backslashes. Otherwise, a name like "\node" will be +@@ -1427,7 +1474,13 @@ output) for that.)} + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. ++ % ++ % Currently we prefix the section name with the section number ++ % for chapter and appendix headings only in order to avoid too much ++ % horizontal space being required in the PDF viewer. + \def\numchapentry##1##2##3##4{% ++ \dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}% ++ \def\unnchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% +@@ -1669,9 +1722,13 @@ output) for that.)} + % Therefore, we read toc only once. + % + % We use node names as destinations. ++ % ++ % Currently we prefix the section name with the section number ++ % for chapter and appendix headings only in order to avoid too much ++ % horizontal space being required in the PDF viewer. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% +- \dopdfoutline{##1}{1}{##3}{##4}}% ++ \dopdfoutline{##2 ##1}{1}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{2}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% +@@ -1683,7 +1740,8 @@ output) for that.)} + \let\appsecentry\numsecentry% + \let\appsubsecentry\numsubsecentry% + \let\appsubsubsecentry\numsubsubsecentry% +- \let\unnchapentry\numchapentry% ++ \def\unnchapentry##1##2##3##4{% ++ \dopdfoutline{##1}{1}{##3}{##4}}% + \let\unnsecentry\numsecentry% + \let\unnsubsecentry\numsubsecentry% + \let\unnsubsubsecentry\numsubsubsecentry% +@@ -1812,19 +1870,23 @@ output) for that.)} + \closein 1 + \endgroup + % +- \def\xetexpdfext{pdf}% +- \ifx\xeteximgext\xetexpdfext +- \XeTeXpdffile "#1".\xeteximgext "" +- \else +- \def\xetexpdfext{PDF}% ++ % Putting an \hbox around the image can prevent an over-long line ++ % after the image. ++ \hbox\bgroup ++ \def\xetexpdfext{pdf}% + \ifx\xeteximgext\xetexpdfext + \XeTeXpdffile "#1".\xeteximgext "" + \else +- \XeTeXpicfile "#1".\xeteximgext "" ++ \def\xetexpdfext{PDF}% ++ \ifx\xeteximgext\xetexpdfext ++ \XeTeXpdffile "#1".\xeteximgext "" ++ \else ++ \XeTeXpicfile "#1".\xeteximgext "" ++ \fi + \fi +- \fi +- \ifdim \wd0 >0pt width \xeteximagewidth \fi +- \ifdim \wd2 >0pt height \xeteximageheight \fi \relax ++ \ifdim \wd0 >0pt width \xeteximagewidth \fi ++ \ifdim \wd2 >0pt height \xeteximageheight \fi \relax ++ \egroup + } + \fi + +@@ -2496,7 +2558,7 @@ end + \def\it{\fam=\itfam \setfontstyle{it}} + \def\sl{\fam=\slfam \setfontstyle{sl}} + \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +-\def\tt{\fam=\ttfam \setfontstyle{tt}} ++\def\tt{\fam=\ttfam \setfontstyle{tt}}\def\ttstylename{tt} + + % Texinfo sort of supports the sans serif font style, which plain TeX does not. + % So we set up a \sf. +@@ -2622,8 +2684,6 @@ end + \definetextfontsizexi + + +-\message{markup,} +- + % Check if we are currently using a typewriter font. Since all the + % Computer Modern typewriter fonts have zero interword stretch (and + % shrink), and it is reasonable to expect all typewriter fonts to have +@@ -2631,68 +2691,14 @@ end + % + \def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +-% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will +-% define and register \INITMACRO to be called on markup style changes. +-% \INITMACRO can check \currentmarkupstyle for the innermost +-% style. +- +-\let\currentmarkupstyle\empty +- +-\def\setupmarkupstyle#1{% +- \def\currentmarkupstyle{#1}% +- \markupstylesetup +-} +- +-\let\markupstylesetup\empty +- +-\def\defmarkupstylesetup#1{% +- \expandafter\def\expandafter\markupstylesetup +- \expandafter{\markupstylesetup #1}% +- \def#1% +-} +- +-% Markup style setup for left and right quotes. +-\defmarkupstylesetup\markupsetuplq{% +- \expandafter\let\expandafter \temp +- \csname markupsetuplq\currentmarkupstyle\endcsname +- \ifx\temp\relax \markupsetuplqdefault \else \temp \fi +-} +- +-\defmarkupstylesetup\markupsetuprq{% +- \expandafter\let\expandafter \temp +- \csname markupsetuprq\currentmarkupstyle\endcsname +- \ifx\temp\relax \markupsetuprqdefault \else \temp \fi +-} +- + { + \catcode`\'=\active + \catcode`\`=\active + +-\gdef\markupsetuplqdefault{\let`\lq} +-\gdef\markupsetuprqdefault{\let'\rq} +- +-\gdef\markupsetcodequoteleft{\let`\codequoteleft} +-\gdef\markupsetcodequoteright{\let'\codequoteright} ++\gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright} ++\gdef\setregularquotes{\let`\lq \let'\rq} + } + +-\let\markupsetuplqcode \markupsetcodequoteleft +-\let\markupsetuprqcode \markupsetcodequoteright +-% +-\let\markupsetuplqexample \markupsetcodequoteleft +-\let\markupsetuprqexample \markupsetcodequoteright +-% +-\let\markupsetuplqkbd \markupsetcodequoteleft +-\let\markupsetuprqkbd \markupsetcodequoteright +-% +-\let\markupsetuplqsamp \markupsetcodequoteleft +-\let\markupsetuprqsamp \markupsetcodequoteright +-% +-\let\markupsetuplqverb \markupsetcodequoteleft +-\let\markupsetuprqverb \markupsetcodequoteright +-% +-\let\markupsetuplqverbatim \markupsetcodequoteleft +-\let\markupsetuprqverbatim \markupsetcodequoteright +- + % Allow an option to not use regular directed right quote/apostrophe + % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). + % The undirected quote is ugly, so don't make it the default, but it +@@ -2855,7 +2861,7 @@ end + } + + % @samp. +-\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} ++\def\samp#1{{\setcodequotes\lq\tclose{#1}\rq\null}} + + % @indicateurl is \samp, that is, with quotes. + \let\indicateurl=\samp +@@ -2898,8 +2904,7 @@ end + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup +- \setupmarkupstyle{code}% +- % The following should really be moved into \setupmarkupstyle handlers. ++ \setcodequotes + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash +@@ -2987,10 +2992,18 @@ end + % arg (if given), and not the url (which is then just the link target). + \newif\ifurefurlonlylink + ++% The default \pretolerance setting stops the penalty inserted in ++% \urefallowbreak being a discouragement to line breaking. Set it to ++% a negative value for this paragraph only. Hopefully this does not ++% conflict with redefinitions of \par done elsewhere. ++\def\nopretolerance{% ++\pretolerance=-1 ++\def\par{\endgraf\pretolerance=100 \let\par\endgraf}% ++} ++ + % The main macro is \urefbreak, which allows breaking at expected +-% places within the url. (There used to be another version, which +-% didn't support automatic breaking.) +-\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} ++% places within the url. ++\def\urefbreak{\nopretolerance \begingroup \urefcatcodes \dourefbreak} + \let\uref=\urefbreak + % + \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} +@@ -3045,7 +3058,7 @@ end + \urefcatcodes + % + \global\def\urefcode{\begingroup +- \setupmarkupstyle{code}% ++ \setcodequotes + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot +@@ -3101,14 +3114,14 @@ end + + % Allow a ragged right output to aid breaking long URL's. There can + % be a break at the \allowbreak with no extra glue (if the existing stretch in +-% the line is sufficent), a break at the \penalty100 with extra glue added ++% the line is sufficient), a break at the \penalty with extra glue added + % at the end of the line, or no break at all here. + % Changing the value of the penalty and/or the amount of stretch affects how +-% preferrable one choice is over the other. ++% preferable one choice is over the other. + \def\urefallowbreak{% +- \allowbreak ++ \penalty0\relax + \hskip 0pt plus 2 em\relax +- \penalty300 ++ \penalty1000\relax + \hskip 0pt plus -2 em\relax + } + +@@ -3166,8 +3179,8 @@ end + \def\kbdsub#1#2#3\par{% + \def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% +- \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +- \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi ++ \else{\tclose{\kbdfont\setcodequotes\look}}\fi ++ \else{\tclose{\kbdfont\setcodequotes\look}}\fi + } + + % definition of @key that produces a lozenge. Doesn't adjust to text size. +@@ -3184,7 +3197,7 @@ end + % monospace, don't change it; that way, we respect @kbdinputstyle. But + % if it isn't monospace, then use \tt. + % +-\def\key#1{{\setupmarkupstyle{key}% ++\def\key#1{{\setregularquotes + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} +@@ -3305,6 +3318,29 @@ end + \def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} + \def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}% + ++% provide this command from LaTeX as it is very common ++\def\frac#1#2{{{#1}\over{#2}}} ++ ++% @displaymath. ++% \globaldefs is needed to recognize the end lines in \tex and ++% \end tex. Set \thisenv as @end displaymath is seen before @end tex. ++{\obeylines ++\globaldefs=1 ++\envdef\displaymath{% ++\tex% ++\def\thisenv{\displaymath}% ++\begingroup\let\end\displaymathend% ++$$% ++} ++ ++\def\displaymathend{$$\endgroup\end}% ++ ++\def\Edisplaymath{% ++\def\thisenv{\tex}% ++\end tex ++}} ++ ++ + % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. + % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, + % except specified as a normal braced arg, so no newlines to worry about. +@@ -3509,7 +3545,7 @@ end + + % @pounds{} is a sterling sign, which Knuth put in the CM italic font. + % +-\def\pounds{{\it\$}} ++\def\pounds{\ifmonospace{\ecfont\char"BF}\else{\it\$}\fi} + + % @euro{} comes from a separate font, depending on the current style. + % We use the free feym* fonts from the eurosym package by Henrik +@@ -3658,11 +3694,19 @@ end + \fi + + % Quotes. +-\chardef\quotedblleft="5C +-\chardef\quotedblright=`\" + \chardef\quoteleft=`\` + \chardef\quoteright=`\' + ++% only change font for tt for correct kerning and to avoid using ++% \ecfont unless necessary. ++\def\quotedblleft{% ++ \ifmonospace{\ecfont\char"10}\else{\char"5C}\fi ++} ++ ++\def\quotedblright{% ++ \ifmonospace{\ecfont\char"11}\else{\char`\"}\fi ++} ++ + + \message{page headings,} + +@@ -3784,12 +3828,19 @@ end + + \newtoks\evenheadline % headline on even pages + \newtoks\oddheadline % headline on odd pages ++\newtoks\evenchapheadline% headline on even pages with a new chapter ++\newtoks\oddchapheadline % headline on odd pages with a new chapter + \newtoks\evenfootline % footline on even pages + \newtoks\oddfootline % footline on odd pages + + % Now make \makeheadline and \makefootline in Plain TeX use those variables +-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline +- \else \the\evenheadline \fi}} ++\headline={{\textfonts\rm ++ \ifchapterpage ++ \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi ++ \else ++ \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi ++ \fi}} ++ + \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} + \let\HEADINGShook=\relax +@@ -3805,12 +3856,14 @@ end + \def\evenheading{\parsearg\evenheadingxxx} + \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} + \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% +-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} ++ \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}} ++ \global\evenchapheadline=\evenheadline} + + \def\oddheading{\parsearg\oddheadingxxx} + \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} + \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% +-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} ++ \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}% ++ \global\oddchapheadline=\oddheadline} + + \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +@@ -3877,37 +3930,34 @@ end + \parseargdef\headings{\csname HEADINGS#1\endcsname} + + \def\headingsoff{% non-global headings elimination +- \evenheadline={\hfil}\evenfootline={\hfil}% +- \oddheadline={\hfil}\oddfootline={\hfil}% ++ \evenheadline={\hfil}\evenfootline={\hfil}\evenchapheadline={\hfil}% ++ \oddheadline={\hfil}\oddfootline={\hfil}\oddchapheadline={\hfil}% + } + + \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting + \HEADINGSoff % it's the default + + % When we turn headings on, set the page number to 1. ++\def\pageone{ ++ \global\pageno=1 ++ \global\arabiccount = \pagecount ++} ++ + % For double-sided printing, put current file name in lower left corner, + % chapter name on inside top of right hand pages, document + % title on inside top of left hand pages, and page numbers on outside top + % edge of all pages. + \def\HEADINGSdouble{% +-\global\pageno=1 +-\global\evenfootline={\hfil} +-\global\oddfootline={\hfil} +-\global\evenheadline={\line{\folio\hfil\thistitle}} +-\global\oddheadline={\line{\thischapterheading\hfil\folio}} +-\global\let\contentsalignmacro = \chapoddpage ++\pageone ++\HEADINGSdoublex + } + \let\contentsalignmacro = \chappager + + % For single-sided printing, chapter title goes across top left of page, + % page number on top right. + \def\HEADINGSsingle{% +-\global\pageno=1 +-\global\evenfootline={\hfil} +-\global\oddfootline={\hfil} +-\global\evenheadline={\line{\thischapterheading\hfil\folio}} +-\global\oddheadline={\line{\thischapterheading\hfil\folio}} +-\global\let\contentsalignmacro = \chappager ++\pageone ++\HEADINGSsinglex + } + \def\HEADINGSon{\HEADINGSdouble} + +@@ -3917,7 +3967,9 @@ end + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\folio\hfil\thistitle}} +-\global\oddheadline={\line{\thischapterheading\hfil\folio}} ++\global\oddheadline={\line{\thischapter\hfil\folio}} ++\global\evenchapheadline={\line{\folio\hfil}} ++\global\oddchapheadline={\line{\hfil\folio}} + \global\let\contentsalignmacro = \chapoddpage + } + +@@ -3925,8 +3977,22 @@ end + \def\HEADINGSsinglex{% + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} +-\global\evenheadline={\line{\thischapterheading\hfil\folio}} +-\global\oddheadline={\line{\thischapterheading\hfil\folio}} ++\global\evenheadline={\line{\thischapter\hfil\folio}} ++\global\oddheadline={\line{\thischapter\hfil\folio}} ++\global\evenchapheadline={\line{\hfil\folio}} ++\global\oddchapheadline={\line{\hfil\folio}} ++\global\let\contentsalignmacro = \chappager ++} ++ ++% for @setchapternewpage off ++\def\HEADINGSsinglechapoff{% ++\pageone ++\global\evenfootline={\hfil} ++\global\oddfootline={\hfil} ++\global\evenheadline={\line{\thischapter\hfil\folio}} ++\global\oddheadline={\line{\thischapter\hfil\folio}} ++\global\evenchapheadline=\evenheadline ++\global\oddchapheadline=\oddheadline + \global\let\contentsalignmacro = \chappager + } + +@@ -4235,82 +4301,8 @@ end + \doitemize{#1.}\flushcr + } + +-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg +-% to @enumerate. +-% +-\def\alphaenumerate{\enumerate{a}} +-\def\capsenumerate{\enumerate{A}} +-\def\Ealphaenumerate{\Eenumerate} +-\def\Ecapsenumerate{\Eenumerate} +- + + % @multitable macros +-% Amy Hendrickson, 8/18/94, 3/6/96 +-% +-% @multitable ... @end multitable will make as many columns as desired. +-% Contents of each column will wrap at width given in preamble. Width +-% can be specified either with sample text given in a template line, +-% or in percent of \hsize, the current width of text on page. +- +-% Table can continue over pages but will only break between lines. +- +-% To make preamble: +-% +-% Either define widths of columns in terms of percent of \hsize: +-% @multitable @columnfractions .25 .3 .45 +-% @item ... +-% +-% Numbers following @columnfractions are the percent of the total +-% current hsize to be used for each column. You may use as many +-% columns as desired. +- +- +-% Or use a template: +-% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +-% @item ... +-% using the widest term desired in each column. +- +-% Each new table line starts with @item, each subsequent new column +-% starts with @tab. Empty columns may be produced by supplying @tab's +-% with nothing between them for as many times as empty columns are needed, +-% ie, @tab@tab@tab will produce two empty columns. +- +-% @item, @tab do not need to be on their own lines, but it will not hurt +-% if they are. +- +-% Sample multitable: +- +-% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +-% @item first col stuff @tab second col stuff @tab third col +-% @item +-% first col stuff +-% @tab +-% second col stuff +-% @tab +-% third col +-% @item first col stuff @tab second col stuff +-% @tab Many paragraphs of text may be used in any column. +-% +-% They will wrap at the width determined by the template. +-% @item@tab@tab This will be in third column. +-% @end multitable +- +-% Default dimensions may be reset by user. +-% @multitableparskip is vertical space between paragraphs in table. +-% @multitableparindent is paragraph indent in table. +-% @multitablecolmargin is horizontal space to be left between columns. +-% @multitablelinespace is space to leave between table items, baseline +-% to baseline. +-% 0pt means it depends on current normal line spacing. +-% +-\newskip\multitableparskip +-\newskip\multitableparindent +-\newdimen\multitablecolspace +-\newskip\multitablelinespace +-\multitableparskip=0pt +-\multitableparindent=6pt +-\multitablecolspace=12pt +-\multitablelinespace=0pt + + % Macros used to set up halign preamble: + % +@@ -4358,8 +4350,6 @@ end + \go + } + +-% multitable-only commands. +-% + % @headitem starts a heading row, which we typeset in bold. Assignments + % have to be global since we are inside the implicit group of an + % alignment entry. \everycr below resets \everytab so we don't have to +@@ -4376,14 +4366,8 @@ end + % default for tables with no headings. + \let\headitemcrhook=\relax + % +-% A \tab used to include \hskip1sp. But then the space in a template +-% line is not enough. That is bad. So let's go back to just `&' until +-% we again encounter the problem the 1sp was intended to solve. +-% --karl, nathan@acm.org, 20apr99. + \def\tab{\checkenv\multitable &\the\everytab}% + +-% @multitable ... @end multitable definitions: +-% + \newtoks\everytab % insert after every tab. + % + \envdef\multitable{% +@@ -4398,9 +4382,8 @@ end + % + \tolerance=9500 + \hbadness=9500 +- \setmultitablespacing +- \parskip=\multitableparskip +- \parindent=\multitableparindent ++ \parskip=0pt ++ \parindent=6pt + \overfullrule=0pt + \global\colcount=0 + % +@@ -4430,47 +4413,24 @@ end + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 +- \multistrut ++ \strut + \vtop{% +- % Use the current \colcount to find the correct column width: ++ \advance\hsize by -1\leftskip ++ % Find the correct column width + \hsize=\expandafter\csname col\the\colcount\endcsname + % +- % In order to keep entries from bumping into each other +- % we will add a \leftskip of \multitablecolspace to all columns after +- % the first one. +- % +- % If a template has been used, we will add \multitablecolspace +- % to the width of each template entry. +- % +- % If the user has set preamble in terms of percent of \hsize we will +- % use that dimension as the width of the column, and the \leftskip +- % will keep entries from bumping into each other. Table will start at +- % left margin and final column will justify at right margin. +- % +- % Make sure we don't inherit \rightskip from the outer environment. + \rightskip=0pt + \ifnum\colcount=1 +- % The first column will be indented with the surrounding text. +- \advance\hsize by\leftskip ++ \advance\hsize by\leftskip % Add indent of surrounding text + \else +- \ifsetpercent \else +- % If user has not set preamble in terms of percent of \hsize +- % we will advance \hsize by \multitablecolspace. +- \advance\hsize by \multitablecolspace +- \fi +- % In either case we will make \leftskip=\multitablecolspace: +- \leftskip=\multitablecolspace ++ % In order to keep entries from bumping into each other. ++ \leftskip=12pt ++ \ifsetpercent \else ++ % If a template has been used ++ \advance\hsize by \leftskip ++ \fi + \fi +- % Ignoring space at the beginning and end avoids an occasional spurious +- % blank line, when TeX decides to break the line at the space before the +- % box from the multistrut, so the strut ends up on a line by itself. +- % For example: +- % @multitable @columnfractions .11 .89 +- % @item @code{#} +- % @tab Legal holiday which is valid in major parts of the whole country. +- % Is automatically provided with highlighting sequences respectively +- % marking characters. +- \noindent\ignorespaces##\unskip\multistrut ++ \noindent\ignorespaces##\unskip\strut + }\cr + } + \def\Emultitable{% +@@ -4479,31 +4439,6 @@ end + \global\setpercentfalse + } + +-\def\setmultitablespacing{% +- \def\multistrut{\strut}% just use the standard line spacing +- % +- % Compute \multitablelinespace (if not defined by user) for use in +- % \multitableparskip calculation. We used define \multistrut based on +- % this, but (ironically) that caused the spacing to be off. +- % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. +-\ifdim\multitablelinespace=0pt +-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +-\global\advance\multitablelinespace by-\ht0 +-\fi +-% Test to see if parskip is larger than space between lines of +-% table. If not, do nothing. +-% If so, set to same dimension as multitablelinespace. +-\ifdim\multitableparskip>\multitablelinespace +-\global\multitableparskip=\multitablelinespace +-\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller +- % than skip between lines in the table. +-\fi% +-\ifdim\multitableparskip=0pt +-\global\multitableparskip=\multitablelinespace +-\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller +- % than skip between lines in the table. +-\fi} +- + + \message{conditionals,} + +@@ -4841,7 +4776,7 @@ end + + % like the previous two, but they put @code around the argument. + \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} +-\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} ++\def\docodeindexxxx #1{\docind{\indexname}{#1}} + + + % Used for the aux, toc and index files to prevent expansion of Texinfo +@@ -5138,43 +5073,44 @@ end + \def\ss{ss}% + \def\th{th}% + % +- \def\LaTeX{LaTeX}% +- \def\TeX{TeX}% +- % +- % Assorted special characters. \defglyph gives the control sequence a +- % definition that removes the {} that follows its use. +- \defglyph\atchar{@}% +- \defglyph\arrow{->}% +- \defglyph\bullet{bullet}% +- \defglyph\comma{,}% +- \defglyph\copyright{copyright}% +- \defglyph\dots{...}% +- \defglyph\enddots{...}% +- \defglyph\equiv{==}% +- \defglyph\error{error}% +- \defglyph\euro{euro}% +- \defglyph\expansion{==>}% +- \defglyph\geq{>=}% +- \defglyph\guillemetleft{<<}% +- \defglyph\guillemetright{>>}% +- \defglyph\guilsinglleft{<}% +- \defglyph\guilsinglright{>}% +- \defglyph\leq{<=}% +- \defglyph\lbracechar{\{}% +- \defglyph\minus{-}% +- \defglyph\point{.}% +- \defglyph\pounds{pounds}% +- \defglyph\print{-|}% +- \defglyph\quotedblbase{"}% +- \defglyph\quotedblleft{"}% +- \defglyph\quotedblright{"}% +- \defglyph\quoteleft{`}% +- \defglyph\quoteright{'}% +- \defglyph\quotesinglbase{,}% +- \defglyph\rbracechar{\}}% +- \defglyph\registeredsymbol{R}% +- \defglyph\result{=>}% +- \defglyph\textdegree{o}% ++ \let\do\indexnofontsdef ++ % ++ \do\LaTeX{LaTeX}% ++ \do\TeX{TeX}% ++ % ++ % Assorted special characters. ++ \do\atchar{@}% ++ \do\arrow{->}% ++ \do\bullet{bullet}% ++ \do\comma{,}% ++ \do\copyright{copyright}% ++ \do\dots{...}% ++ \do\enddots{...}% ++ \do\equiv{==}% ++ \do\error{error}% ++ \do\euro{euro}% ++ \do\expansion{==>}% ++ \do\geq{>=}% ++ \do\guillemetleft{<<}% ++ \do\guillemetright{>>}% ++ \do\guilsinglleft{<}% ++ \do\guilsinglright{>}% ++ \do\leq{<=}% ++ \do\lbracechar{\{}% ++ \do\minus{-}% ++ \do\point{.}% ++ \do\pounds{pounds}% ++ \do\print{-|}% ++ \do\quotedblbase{"}% ++ \do\quotedblleft{"}% ++ \do\quotedblright{"}% ++ \do\quoteleft{`}% ++ \do\quoteright{'}% ++ \do\quotesinglbase{,}% ++ \do\rbracechar{\}}% ++ \do\registeredsymbol{R}% ++ \do\result{=>}% ++ \do\textdegree{o}% + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. +@@ -5189,7 +5125,10 @@ end + \macrolist + \let\value\indexnofontsvalue + } +-\def\defglyph#1#2{\def#1##1{#2}} % see above ++ ++% Give the control sequence a definition that removes the {} that follows ++% its use, e.g. @AA{} -> AA ++\def\indexnofontsdef#1#2{\def#1##1{#2}}% + + + +@@ -5208,6 +5147,20 @@ end + \fi + } + ++% Same as \doind, but for code indices ++\def\docind#1#2{% ++ \iflinks ++ {% ++ % ++ \requireopenindexfile{#1}% ++ \edef\writeto{\csname#1indfile\endcsname}% ++ % ++ \def\indextext{#2}% ++ \safewhatsit\docindwrite ++ }% ++ \fi ++} ++ + % Check if an index file has been opened, and if not, open it. + \def\requireopenindexfile#1{% + \ifnum\csname #1indfile\endcsname=0 +@@ -5274,6 +5227,9 @@ end + % trim spaces. + \edef\trimmed{\segment}% + \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% ++ \ifincodeindex ++ \edef\trimmed{\noexpand\code{\trimmed}}% ++ \fi + % + \xdef\bracedtext{\bracedtext{\trimmed}}% + % +@@ -5339,7 +5295,12 @@ end + + % Write the entry in \indextext to the index file. + % +-\def\doindwrite{% ++ ++\newif\ifincodeindex ++\def\doindwrite{\incodeindexfalse\doindwritex} ++\def\docindwrite{\incodeindextrue\doindwritex} ++ ++\def\doindwritex{% + \maybemarginindex + % + \atdummies +@@ -5559,7 +5520,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \else + \begindoublecolumns + \catcode`\\=0\relax +- \catcode`\@=12\relax ++ % ++ % Make @ an escape character to give macros a chance to work. This ++ % should work because we (hopefully) don't otherwise use @ in index files. ++ %\catcode`\@=12\relax ++ \catcode`\@=0\relax + \input \jobname.\indexname s + \enddoublecolumns + \fi +@@ -6401,18 +6366,16 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \def\CHAPPAGoff{% + \global\let\contentsalignmacro = \chappager + \global\let\pchapsepmacro=\chapbreak +-\global\let\pagealignmacro=\chappager} ++\global\def\HEADINGSon{\HEADINGSsinglechapoff}} + + \def\CHAPPAGon{% + \global\let\contentsalignmacro = \chappager + \global\let\pchapsepmacro=\chappager +-\global\let\pagealignmacro=\chappager + \global\def\HEADINGSon{\HEADINGSsingle}} + + \def\CHAPPAGodd{% + \global\let\contentsalignmacro = \chapoddpage + \global\let\pchapsepmacro=\chapoddpage +-\global\let\pagealignmacro=\chapoddpage + \global\def\HEADINGSon{\HEADINGSdouble}} + + \CHAPPAGon +@@ -6777,9 +6740,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % + \def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should +- % start on an odd page, unlike chapters. Thus, we maintain +- % \contentsalignmacro in parallel with \pagealignmacro. +- % From: Torbjorn Granlund ++ % start on an odd page, unlike chapters. + \contentsalignmacro + \immediate\closeout\tocfile + % +@@ -6794,6 +6755,9 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi ++ \def\thistitle{}% no title in double-sided headings ++ % Record where the Roman numerals started. ++ \ifnum\romancount=0 \global\romancount=\pagecount \fi + } + + % redefined for the two-volume lispref. We always output on +@@ -6816,8 +6780,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \fi + \closein 1 + \endgroup +- \lastnegativepageno = \pageno +- \global\pageno = \savepageno ++ \contentsendroman + } + + % And just the chapters. +@@ -6852,10 +6815,20 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup ++ \contentsendroman ++} ++\let\shortcontents = \summarycontents ++ ++% Get ready to use Arabic numerals again ++\def\contentsendroman{% + \lastnegativepageno = \pageno + \global\pageno = \savepageno ++ % ++ % If \romancount > \arabiccount, the contents are at the end of the ++ % document. Otherwise, advance where the Arabic numerals start for ++ % the page numbers. ++ \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi + } +-\let\shortcontents = \summarycontents + + % Typeset the label for a chapter or appendix for the short contents. + % The arg is, e.g., `A' for an appendix, or `3' for a chapter. +@@ -6997,7 +6970,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % But \@ or @@ will get a plain @ character. + + \envdef\tex{% +- \setupmarkupstyle{tex}% ++ \setregularquotes + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie +@@ -7223,7 +7196,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % If you want all examples etc. small: @set dispenvsize small. + % If you want even small examples the full size: @set dispenvsize nosmall. + % This affects the following displayed environments: +-% @example, @display, @format, @lisp ++% @example, @display, @format, @lisp, @verbatim + % + \def\smallword{small} + \def\nosmallword{nosmall} +@@ -7269,9 +7242,9 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % + \maketwodispenvdef{lisp}{example}{% + \nonfillstart +- \tt\setupmarkupstyle{example}% ++ \tt\setcodequotes + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. +- \gobble % eat return ++ \parsearg\gobble + } + % @display/@smalldisplay: same as @lisp except keep current font. + % +@@ -7429,7 +7402,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% +- \setupmarkupstyle{verb}% ++ \setcodequotes + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and +@@ -7444,13 +7417,9 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount + % + % We typeset each line of the verbatim in an \hbox, so we can handle +-% tabs. The \global is in case the verbatim line starts with an accent, +-% or some other command that starts with a begin-group. Otherwise, the +-% entire \verbbox would disappear at the corresponding end-group, before +-% it is typeset. Meanwhile, we can't have nested verbatim commands +-% (can we?), so the \global won't be overwriting itself. ++% tabs. + \newbox\verbbox +-\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} ++\def\starttabbox{\setbox\verbbox=\hbox\bgroup} + % + \begingroup + \catcode`\^^I=\active +@@ -7461,7 +7430,8 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw +- \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox ++ \wd\verbbox=\dimen\verbbox ++ \leavevmode\box\verbbox \starttabbox + }% + } + \endgroup +@@ -7471,17 +7441,14 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \let\nonarrowing = t% + \nonfillstart + \tt % easiest (and conventionally used) font for verbatim +- % The \leavevmode here is for blank lines. Otherwise, we would +- % never \starttabbox and the \egroup would end verbatim mode. +- \def\par{\leavevmode\egroup\box\verbbox\endgraf}% ++ \def\par{\egroup\leavevmode\box\verbbox\endgraf\starttabbox}% + \tabexpand +- \setupmarkupstyle{verbatim}% ++ \setcodequotes + % Respect line breaks, + % print special symbols as themselves, and + % make each space count. + % Must do in this order: + \obeylines \uncatcodespecials \sepspaces +- \everypar{\starttabbox}% + } + + % Do the @verb magic: verbatim text is quoted by unique +@@ -7516,13 +7483,16 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. +- \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% ++ \xdef\doverbatim#1^^M#2@end verbatim{% ++ \starttabbox#2\egroup\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. ++ % The \egroup ends the \verbbox started at the end of the last line in ++ % the block. + \endgroup + % + \envdef\verbatim{% +- \setupverbatim\doverbatim ++ \setnormaldispenv\setupverbatim\doverbatim + } + \let\Everbatim = \afterenvbreak + +@@ -7540,7 +7510,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% + \edef\tmp{\noexpand\input #1 } + \expandafter +- }\tmp ++ }\expandafter\starttabbox\tmp\egroup + \afterenvbreak + }% + } +@@ -7892,7 +7862,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % leave the code in, but it's strange for @var to lead to typewriter. + % Nowadays we recommend @code, since the difference between a ttsl hyphen + % and a tt hyphen is pretty tiny. @code also disables ?` !`. +- \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% ++ \def\var##1{{\setregularquotes\ttslanted{##1}}}% + #1% + \sl\hyphenchar\font=45 + } +@@ -8001,11 +7971,18 @@ might help (with 'rm \jobname.?? \jobname.??s')% + } + \fi + ++\let\E=\expandafter ++ + % Used at the time of macro expansion. + % Argument is macro body with arguments substituted + \def\scanmacro#1{% + \newlinechar`\^^M +- \def\xeatspaces{\eatspaces}% ++ % expand the expansion of \eatleadingcr twice to maybe remove a leading ++ % newline (and \else and \fi tokens), then call \eatspaces on the result. ++ \def\xeatspaces##1{% ++ \E\E\E\E\E\E\E\eatspaces\E\E\E\E\E\E\E{\eatleadingcr##1% ++ }}% ++ \def\xempty##1{}% + % + % Process the macro body under the current catcode regime. + \scantokens{#1@comment}% +@@ -8058,6 +8035,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \unbrace{\gdef\trim@@@ #1 } #2@{#1} + } + ++{\catcode`\^^M=\other% ++\gdef\eatleadingcr#1{\if\noexpand#1\noexpand^^M\else\E#1\fi}}% ++% Warning: this won't work for a delimited argument ++% or for an empty argument ++ + % Trim a single trailing ^^M off a string. + {\catcode`\^^M=\other \catcode`\Q=3% + \gdef\eatcr #1{\eatcra #1Q^^MQ}% +@@ -8224,6 +8206,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \let\hash\relax + % \hash is redefined to `#' later to get it into definitions + \let\xeatspaces\relax ++ \let\xempty\relax + \parsemargdefxxx#1,;,% + \ifnum\paramno<10\relax\else + \paramno0\relax +@@ -8235,9 +8218,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \else \let\next=\parsemargdefxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname +- {\xeatspaces{\hash\the\paramno}}% ++ {\xeatspaces{\hash\the\paramno\noexpand\xempty{}}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} ++% the \xempty{} is to give \eatleadingcr an argument in the case of an ++% empty macro argument. + + % \parsemacbody, \parsermacbody + % +@@ -8826,7 +8811,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \else + \ifhavexrefs + % We (should) know the real title if we have the xref values. +- \def\printedrefname{\refx{#1-title}{}}% ++ \def\printedrefname{\refx{#1-title}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% +@@ -8920,7 +8905,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd\printedrefnamebox = 0pt +- \refx{#1-snt}{}% ++ \refx{#1-snt}% + \else + \printedrefname + \fi +@@ -8955,28 +8940,30 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \else + % Reference within this manual. + % +- % Only output a following space if the -snt ref is nonempty; for +- % @unnumbered and @anchor, it won't be. +- \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% ++ % Only output a following space if the -snt ref is nonempty, as the ref ++ % will be empty for @unnumbered and @anchor. ++ \setbox2 = \hbox{\ignorespaces \refx{#1-snt}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + % + % output the `[mynode]' via the macro below so it can be overridden. + \xrefprintnodename\printedrefname + % +- % But we always want a comma and a space: +- ,\space +- % +- % output the `page 3'. +- \turnoffactive \putwordpage\tie\refx{#1-pg}{}% +- % Add a , if xref followed by a space +- \if\space\noexpand\tokenafterxref ,% +- \else\ifx\ \tokenafterxref ,% @TAB +- \else\ifx\*\tokenafterxref ,% @* +- \else\ifx\ \tokenafterxref ,% @SPACE +- \else\ifx\ +- \tokenafterxref ,% @NL +- \else\ifx\tie\tokenafterxref ,% @tie +- \fi\fi\fi\fi\fi\fi ++ \expandafter\ifx\csname SETtxiomitxrefpg\endcsname\relax ++ % But we always want a comma and a space: ++ ,\space ++ % ++ % output the `page 3'. ++ \turnoffactive \putwordpage\tie\refx{#1-pg}% ++ % Add a , if xref followed by a space ++ \if\space\noexpand\tokenafterxref ,% ++ \else\ifx\ \tokenafterxref ,% @TAB ++ \else\ifx\*\tokenafterxref ,% @* ++ \else\ifx\ \tokenafterxref ,% @SPACE ++ \else\ifx\ ++ \tokenafterxref ,% @NL ++ \else\ifx\tie\tokenafterxref ,% @tie ++ \fi\fi\fi\fi\fi\fi ++ \fi + \fi\fi + \fi + \endlink +@@ -9043,9 +9030,8 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \fi\fi\fi + } + +-% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX +-% is output afterwards if non-empty. +-\def\refx#1#2{% ++% \refx{NAME} - reference a cross-reference string named NAME. ++\def\refx#1{% + \requireauxfile + {% + \indexnofonts +@@ -9072,7 +9058,6 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % It's defined, so just use it. + \thisrefX + \fi +- #2% Output the suffix in any case. + } + + % This is the macro invoked by entries in the aux file. Define a control +@@ -9182,10 +9167,10 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other +- \catcode`\_=\other +- \catcode`\|=\other +- \catcode`\<=\other +- \catcode`\>=\other ++ \catcode`\_=\active ++ \catcode`\|=\active ++ \catcode`\<=\active ++ \catcode`\>=\active + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other +@@ -9406,7 +9391,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names +- \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro ++ \makevalueexpandable + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue +@@ -9432,7 +9417,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% + % On the other hand, if we are in the case of @center @image, we don't + % want to start a paragraph, which will create a hsize-width box and + % eradicate the centering. +- \ifx\centersub\centerV\else \noindent \fi ++ \ifx\centersub\centerV \else \imageindent \fi + % + % Output the image. + \ifpdf +@@ -10706,6 +10691,8 @@ directory should work if nowhere else does.} + \DeclareUnicodeCharacter{0233}{\=y}% + \DeclareUnicodeCharacter{0237}{\dotless{j}}% + % ++ \DeclareUnicodeCharacter{02BC}{'}% ++ % + \DeclareUnicodeCharacter{02DB}{\ogonek{ }}% + % + % Greek letters upper case +@@ -11340,6 +11327,18 @@ directory should work if nowhere else does.} + \globaldefs = 0 + }} + ++\def\bsixpaper{{\globaldefs = 1 ++ \afourpaper ++ \internalpagesizes{140mm}{100mm}% ++ {-6.35mm}{-12.7mm}% ++ {\bindingoffset}{14pt}% ++ {176mm}{125mm}% ++ \let\SETdispenvsize=\smallword ++ \lispnarrowing = 0.2in ++ \globaldefs = 0 ++}} ++ ++ + % @pagesizes TEXTHEIGHT[,TEXTWIDTH] + % Perhaps we should allow setting the margins, \topskip, \parskip, + % and/or leading, also. Or perhaps we should compute them somehow. +@@ -11353,12 +11352,12 @@ directory should work if nowhere else does.} + \setleading{\textleading}% + % + \dimen0 = #1\relax +- \advance\dimen0 by \voffset +- \advance\dimen0 by 1in % reference point for DVI is 1 inch from top of page ++ \advance\dimen0 by 2.5in % default 1in margin above heading line ++ % and 1.5in to include heading, footing and ++ % bottom margin + % + \dimen2 = \hsize +- \advance\dimen2 by \normaloffset +- \advance\dimen2 by 1in % reference point is 1 inch from left edge of page ++ \advance\dimen2 by 2in % default to 1 inch margin on each side + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% +@@ -11445,7 +11444,7 @@ directory should work if nowhere else does.} + \let> = \activegtr + \let~ = \activetilde + \let^ = \activehat +- \markupsetuplqdefault \markupsetuprqdefault ++ \setregularquotes + \let\b = \strong + \let\i = \smartitalic + % in principle, all other definitions in \tex have to be undone too. +@@ -11504,8 +11503,7 @@ directory should work if nowhere else does.} + @let|=@normalverticalbar + @let~=@normaltilde + @let\=@ttbackslash +- @markupsetuplqdefault +- @markupsetuprqdefault ++ @setregularquotes + @unsepspaces + } + } +@@ -11598,8 +11596,7 @@ directory should work if nowhere else does.} + @c Do this last of all since we use ` in the previous @catcode assignments. + @catcode`@'=@active + @catcode`@`=@active +-@markupsetuplqdefault +-@markupsetuprqdefault ++@setregularquotes + + @c Local variables: + @c eval: (add-hook 'before-save-hook 'time-stamp) +@@ -11612,3 +11609,4 @@ directory should work if nowhere else does.} + @c vim:sw=2: + + @enablebackslashhack ++ +diff --git a/vendor/libffi-sys/libffi/doc/version.texi b/vendor/libffi-sys/libffi/doc/version.texi +index f2b741e87..6056fad8d 100644 +--- a/vendor/libffi-sys/libffi/doc/version.texi ++++ b/vendor/libffi-sys/libffi/doc/version.texi +@@ -1,4 +1,4 @@ +-@set UPDATED 27 June 2021 +-@set UPDATED-MONTH June 2021 +-@set EDITION 3.4.2 +-@set VERSION 3.4.2 ++@set UPDATED 23 October 2022 ++@set UPDATED-MONTH October 2022 ++@set EDITION 3.4.4 ++@set VERSION 3.4.4 +diff --git a/vendor/libffi-sys/libffi/fficonfig.h.in b/vendor/libffi-sys/libffi/fficonfig.h.in +index 36ffbfb4e..d38b781ea 100644 +--- a/vendor/libffi-sys/libffi/fficonfig.h.in ++++ b/vendor/libffi-sys/libffi/fficonfig.h.in +@@ -3,12 +3,7 @@ + /* Define if building universal (internal helper macro) */ + #undef AC_APPLE_UNIVERSAL_BUILD + +-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP +- systems. This function is required for `alloca.c' support on those systems. +- */ +-#undef CRAY_STACKSEG_END +- +-/* Define to 1 if using `alloca.c'. */ ++/* Define to 1 if using 'alloca.c'. */ + #undef C_ALLOCA + + /* Define to the flags needed for the .section .eh_frame directive. */ +@@ -23,7 +18,8 @@ + /* Cannot use PROT_EXEC on this target, so, we revert to alternative means */ + #undef FFI_EXEC_TRAMPOLINE_TABLE + +-/* Define this if you want to enable pax emulated trampolines */ ++/* Define this if you want to enable pax emulated trampolines (experimental) ++ */ + #undef FFI_MMAP_EXEC_EMUTRAMP_PAX + + /* Cannot use malloc on this target, so, we revert to alternative means */ +@@ -35,11 +31,10 @@ + /* Define this if you do not want support for aggregate types. */ + #undef FFI_NO_STRUCTS + +-/* Define to 1 if you have `alloca', as a function or macro. */ ++/* Define to 1 if you have 'alloca', as a function or macro. */ + #undef HAVE_ALLOCA + +-/* Define to 1 if you have and it should be used (not on Ultrix). +- */ ++/* Define to 1 if works. */ + #undef HAVE_ALLOCA_H + + /* Define if your assembler supports .cfi_* directives. */ +@@ -82,9 +77,6 @@ + /* Define to 1 if you have the `memfd_create' function. */ + #undef HAVE_MEMFD_CREATE + +-/* Define to 1 if you have the header file. */ +-#undef HAVE_MEMORY_H +- + /* Define to 1 if you have the `mkostemp' function. */ + #undef HAVE_MKOSTEMP + +@@ -112,6 +104,9 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_STDINT_H + ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STDIO_H ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_STDLIB_H + +@@ -180,7 +175,9 @@ + STACK_DIRECTION = 0 => direction of growth unknown */ + #undef STACK_DIRECTION + +-/* Define to 1 if you have the ANSI C header files. */ ++/* Define to 1 if all of the C90 standard headers exist (not just the ones ++ required in a freestanding environment). This macro is provided for ++ backward compatibility; new code need not use it. */ + #undef STDC_HEADERS + + /* Define if symbols are underscored. */ +diff --git a/vendor/libffi-sys/libffi/generate-darwin-source-and-headers.py b/vendor/libffi-sys/libffi/generate-darwin-source-and-headers.py +index 9921b0d99..5b60ccc67 100755 +--- a/vendor/libffi-sys/libffi/generate-darwin-source-and-headers.py ++++ b/vendor/libffi-sys/libffi/generate-darwin-source-and-headers.py +@@ -11,9 +11,8 @@ class Platform(object): + pass + + +-class simulator_platform(Platform): ++class i386_platform(Platform): + arch = 'i386' +- triple = 'i386-apple-darwin11' + + prefix = "#ifdef __i386__\n\n" + suffix = "\n\n#endif" +@@ -21,9 +20,8 @@ class simulator_platform(Platform): + src_files = ['sysv.S', 'ffi.c', 'internal.h'] + + +-class simulator64_platform(Platform): ++class x86_64_platform(Platform): + arch = 'x86_64' +- triple = 'x86_64-apple-darwin13' + + prefix = "#ifdef __x86_64__\n\n" + suffix = "\n\n#endif" +@@ -31,101 +29,146 @@ class simulator64_platform(Platform): + src_files = ['unix64.S', 'ffi64.c', 'ffiw64.c', 'win64.S', 'internal64.h', 'asmnames.h'] + + +-class device_platform(Platform): +- arch = 'armv7' +- triple = 'arm-apple-darwin11' ++class arm64_platform(Platform): ++ arch = 'arm64' + +- prefix = "#ifdef __arm__\n\n" ++ prefix = "#ifdef __arm64__\n\n" + suffix = "\n\n#endif" +- src_dir = 'arm' ++ src_dir = 'aarch64' + src_files = ['sysv.S', 'ffi.c', 'internal.h'] + + +-class device64_platform(Platform): +- arch = 'arm64' +- triple = 'aarch64-apple-darwin13' ++class armv7_platform(Platform): ++ arch = 'armv7' + +- prefix = "#ifdef __arm64__\n\n" ++ prefix = "#ifdef __arm__\n\n" + suffix = "\n\n#endif" +- src_dir = 'aarch64' ++ src_dir = 'arm' + src_files = ['sysv.S', 'ffi.c', 'internal.h'] + + +-class ios_simulator_platform(simulator_platform): ++class ios_simulator_i386_platform(i386_platform): ++ triple = 'i386-apple-darwin11' ++ target = 'i386-apple-ios-simulator' ++ directory = 'darwin_ios' ++ sdk = 'iphonesimulator' ++ version_min = '-miphoneos-version-min=7.0' ++ ++ ++class ios_simulator_x86_64_platform(x86_64_platform): ++ triple = 'x86_64-apple-darwin13' ++ target = 'x86_64-apple-ios-simulator' + directory = 'darwin_ios' + sdk = 'iphonesimulator' + version_min = '-miphoneos-version-min=7.0' + + +-class ios_simulator64_platform(simulator64_platform): ++class ios_simulator_arm64_platform(arm64_platform): ++ triple = 'aarch64-apple-darwin20' ++ target = 'arm64-apple-ios-simulator' + directory = 'darwin_ios' + sdk = 'iphonesimulator' + version_min = '-miphoneos-version-min=7.0' + + +-class ios_device_platform(device_platform): ++class ios_device_armv7_platform(armv7_platform): ++ triple = 'arm-apple-darwin11' ++ target = 'armv7-apple-ios' + directory = 'darwin_ios' + sdk = 'iphoneos' + version_min = '-miphoneos-version-min=7.0' + + +-class ios_device64_platform(device64_platform): ++class ios_device_arm64_platform(arm64_platform): ++ triple = 'aarch64-apple-darwin13' ++ target = 'arm64-apple-ios' + directory = 'darwin_ios' + sdk = 'iphoneos' + version_min = '-miphoneos-version-min=7.0' + + +-class desktop32_platform(Platform): ++class desktop_x86_64_platform(x86_64_platform): ++ triple = 'x86_64-apple-darwin10' ++ target = 'x86_64-apple-macos' + directory = 'darwin_osx' + sdk = 'macosx' +- arch = 'i386' +- triple = 'i386-apple-darwin10' + version_min = '-mmacosx-version-min=10.6' +- src_dir = 'x86' +- src_files = ['sysv.S', 'ffi.c', 'internal.h'] +- +- prefix = "#ifdef __i386__\n\n" +- suffix = "\n\n#endif" + + +-class desktop64_platform(Platform): ++class desktop_arm64_platform(arm64_platform): ++ triple = 'aarch64-apple-darwin20' ++ target = 'arm64-apple-macos' + directory = 'darwin_osx' + sdk = 'macosx' +- arch = 'x86_64' +- triple = 'x86_64-apple-darwin10' +- version_min = '-mmacosx-version-min=10.6' ++ version_min = '-mmacosx-version-min=11.0' + +- prefix = "#ifdef __x86_64__\n\n" +- suffix = "\n\n#endif" +- src_dir = 'x86' +- src_files = ['unix64.S', 'ffi64.c', 'ffiw64.c', 'win64.S', 'internal64.h', 'asmnames.h'] ++ ++class tvos_simulator_x86_64_platform(x86_64_platform): ++ triple = 'x86_64-apple-darwin13' ++ target = 'x86_64-apple-tvos-simulator' ++ directory = 'darwin_tvos' ++ sdk = 'appletvsimulator' ++ version_min = '-mtvos-version-min=9.0' + + +-class tvos_simulator64_platform(simulator64_platform): ++class tvos_simulator_arm64_platform(arm64_platform): ++ triple = 'aarch64-apple-darwin20' ++ target = 'arm64-apple-tvos-simulator' + directory = 'darwin_tvos' + sdk = 'appletvsimulator' + version_min = '-mtvos-version-min=9.0' + + +-class tvos_device64_platform(device64_platform): ++class tvos_device_arm64_platform(arm64_platform): ++ triple = 'aarch64-apple-darwin13' ++ target = 'arm64-apple-tvos' + directory = 'darwin_tvos' + sdk = 'appletvos' + version_min = '-mtvos-version-min=9.0' + + +-class watchos_simulator_platform(simulator_platform): ++class watchos_simulator_i386_platform(i386_platform): ++ triple = 'i386-apple-darwin11' ++ target = 'i386-apple-watchos-simulator' ++ directory = 'darwin_watchos' ++ sdk = 'watchsimulator' ++ version_min = '-mwatchos-version-min=4.0' ++ ++ ++class watchos_simulator_x86_64_platform(x86_64_platform): ++ triple = 'x86_64-apple-darwin13' ++ target = 'x86_64-apple-watchos-simulator' ++ directory = 'darwin_watchos' ++ sdk = 'watchsimulator' ++ version_min = '-mwatchos-version-min=4.0' ++ ++ ++class watchos_simulator_arm64_platform(arm64_platform): ++ triple = 'aarch64-apple-darwin20' ++ target = 'arm64-apple-watchos-simulator' + directory = 'darwin_watchos' + sdk = 'watchsimulator' + version_min = '-mwatchos-version-min=4.0' + + +-class watchos_device_platform(device_platform): ++class watchos_device_armv7k_platform(armv7_platform): ++ triple = 'arm-apple-darwin11' ++ target = 'armv7k-apple-watchos' + directory = 'darwin_watchos' + sdk = 'watchos' + arch = 'armv7k' + version_min = '-mwatchos-version-min=4.0' + + ++class watchos_device_arm64_32_platform(arm64_platform): ++ triple = 'aarch64-apple-darwin13' ++ target = 'arm64_32-apple-watchos' ++ directory = 'darwin_watchos' ++ sdk = 'watchos' ++ arch = 'arm64_32' ++ version_min = '-mwatchos-version-min=4.0' ++ ++ + def mkdir_p(path): + try: + os.makedirs(path) +@@ -175,7 +218,7 @@ def copy_src_platform_files(platform): + + def build_target(platform, platform_headers): + def xcrun_cmd(cmd): +- return 'xcrun -sdk %s %s -arch %s' % (platform.sdk, cmd, platform.arch) ++ return 'xcrun -sdk %s %s -target %s' % (platform.sdk, cmd, platform.target) + + tag='%s-%s' % (platform.sdk, platform.arch) + build_dir = 'build_%s' % tag +@@ -212,34 +255,46 @@ def generate_source_and_headers( + copy_files('include', 'darwin_common/include', pattern='*.h') + + if generate_ios: +- copy_src_platform_files(ios_simulator_platform) +- copy_src_platform_files(ios_simulator64_platform) +- copy_src_platform_files(ios_device_platform) +- copy_src_platform_files(ios_device64_platform) ++ copy_src_platform_files(ios_simulator_i386_platform) ++ copy_src_platform_files(ios_simulator_x86_64_platform) ++ copy_src_platform_files(ios_simulator_arm64_platform) ++ copy_src_platform_files(ios_device_armv7_platform) ++ copy_src_platform_files(ios_device_arm64_platform) + if generate_osx: +- copy_src_platform_files(desktop64_platform) ++ copy_src_platform_files(desktop_x86_64_platform) ++ copy_src_platform_files(desktop_arm64_platform) + if generate_tvos: +- copy_src_platform_files(tvos_simulator64_platform) +- copy_src_platform_files(tvos_device64_platform) ++ copy_src_platform_files(tvos_simulator_x86_64_platform) ++ copy_src_platform_files(tvos_simulator_arm64_platform) ++ copy_src_platform_files(tvos_device_arm64_platform) + if generate_watchos: +- copy_src_platform_files(watchos_simulator_platform) +- copy_src_platform_files(watchos_device_platform) ++ copy_src_platform_files(watchos_simulator_i386_platform) ++ copy_src_platform_files(watchos_simulator_x86_64_platform) ++ copy_src_platform_files(watchos_simulator_arm64_platform) ++ copy_src_platform_files(watchos_device_armv7k_platform) ++ copy_src_platform_files(watchos_device_arm64_32_platform) + + platform_headers = collections.defaultdict(set) + + if generate_ios: +- build_target(ios_simulator_platform, platform_headers) +- build_target(ios_simulator64_platform, platform_headers) +- build_target(ios_device_platform, platform_headers) +- build_target(ios_device64_platform, platform_headers) ++ build_target(ios_simulator_i386_platform, platform_headers) ++ build_target(ios_simulator_x86_64_platform, platform_headers) ++ build_target(ios_simulator_arm64_platform, platform_headers) ++ build_target(ios_device_armv7_platform, platform_headers) ++ build_target(ios_device_arm64_platform, platform_headers) + if generate_osx: +- build_target(desktop64_platform, platform_headers) ++ build_target(desktop_x86_64_platform, platform_headers) ++ build_target(desktop_arm64_platform, platform_headers) + if generate_tvos: +- build_target(tvos_simulator64_platform, platform_headers) +- build_target(tvos_device64_platform, platform_headers) ++ build_target(tvos_simulator_x86_64_platform, platform_headers) ++ build_target(tvos_simulator_arm64_platform, platform_headers) ++ build_target(tvos_device_arm64_platform, platform_headers) + if generate_watchos: +- build_target(watchos_simulator_platform, platform_headers) +- build_target(watchos_device_platform, platform_headers) ++ build_target(watchos_simulator_i386_platform, platform_headers) ++ build_target(watchos_simulator_x86_64_platform, platform_headers) ++ build_target(watchos_simulator_arm64_platform, platform_headers) ++ build_target(watchos_device_armv7k_platform, platform_headers) ++ build_target(watchos_device_arm64_32_platform, platform_headers) + + mkdir_p('darwin_common/include') + for header_name, tag_tuples in platform_headers.items(): +diff --git a/vendor/libffi-sys/libffi/include/Makefile.in b/vendor/libffi-sys/libffi/include/Makefile.in +index a6029fb8e..7e3bbf0c4 100644 +--- a/vendor/libffi-sys/libffi/include/Makefile.in ++++ b/vendor/libffi-sys/libffi/include/Makefile.in +@@ -1,7 +1,7 @@ +-# Makefile.in generated by automake 1.16.2 from Makefile.am. ++# Makefile.in generated by automake 1.16.5 from Makefile.am. + # @configure_input@ + +-# Copyright (C) 1994-2020 Free Software Foundation, Inc. ++# Copyright (C) 1994-2021 Free Software Foundation, Inc. + + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -92,7 +92,6 @@ target_triplet = @target@ + subdir = include + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ +- $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_cc_maxopt.m4 \ + $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ +@@ -101,6 +100,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ + $(top_srcdir)/m4/ax_enable_builddir.m4 \ + $(top_srcdir)/m4/ax_gcc_archflag.m4 \ + $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ ++ $(top_srcdir)/m4/ax_prepend_flag.m4 \ + $(top_srcdir)/m4/ax_require_defined.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ +@@ -179,8 +179,6 @@ am__define_uniq_tagged_files = \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +-ETAGS = etags +-CTAGS = ctags + am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ffi.h.in + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + ACLOCAL = @ACLOCAL@ +@@ -200,8 +198,9 @@ CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ + CFLAGS = @CFLAGS@ +-CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ ++CSCOPE = @CSCOPE@ ++CTAGS = @CTAGS@ + CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXDEPMODE = @CXXDEPMODE@ +@@ -216,9 +215,11 @@ ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ ++ETAGS = @ETAGS@ + EXEEXT = @EXEEXT@ + FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ + FGREP = @FGREP@ ++FILECMD = @FILECMD@ + GREP = @GREP@ + HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ + HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ +@@ -324,6 +325,7 @@ target_alias = @target_alias@ + target_cpu = @target_cpu@ + target_os = @target_os@ + target_vendor = @target_vendor@ ++tmake_file = @tmake_file@ + toolexecdir = @toolexecdir@ + toolexeclibdir = @toolexeclibdir@ + top_build_prefix = @top_build_prefix@ +@@ -447,7 +449,6 @@ cscopelist-am: $(am__tagged_files) + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +- + distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +diff --git a/vendor/libffi-sys/libffi/include/ffi.h.in b/vendor/libffi-sys/libffi/include/ffi.h.in +index d16f307e6..227ac79ca 100644 +--- a/vendor/libffi-sys/libffi/include/ffi.h.in ++++ b/vendor/libffi-sys/libffi/include/ffi.h.in +@@ -1,6 +1,6 @@ + /* -----------------------------------------------------------------*-C-*- + libffi @VERSION@ +- - Copyright (c) 2011, 2014, 2019, 2021 Anthony Green ++ - Copyright (c) 2011, 2014, 2019, 2021, 2022 Anthony Green + - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person +@@ -56,6 +56,31 @@ extern "C" { + + /* ---- System configuration information --------------------------------- */ + ++/* If these change, update src/mips/ffitarget.h. */ ++#define FFI_TYPE_VOID 0 ++#define FFI_TYPE_INT 1 ++#define FFI_TYPE_FLOAT 2 ++#define FFI_TYPE_DOUBLE 3 ++#if @HAVE_LONG_DOUBLE@ ++#define FFI_TYPE_LONGDOUBLE 4 ++#else ++#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE ++#endif ++#define FFI_TYPE_UINT8 5 ++#define FFI_TYPE_SINT8 6 ++#define FFI_TYPE_UINT16 7 ++#define FFI_TYPE_SINT16 8 ++#define FFI_TYPE_UINT32 9 ++#define FFI_TYPE_SINT32 10 ++#define FFI_TYPE_UINT64 11 ++#define FFI_TYPE_SINT64 12 ++#define FFI_TYPE_STRUCT 13 ++#define FFI_TYPE_POINTER 14 ++#define FFI_TYPE_COMPLEX 15 ++ ++/* This should always refer to the last type code (for sanity checks). */ ++#define FFI_TYPE_LAST FFI_TYPE_COMPLEX ++ + #include + + #ifndef LIBFFI_ASM +@@ -320,6 +345,9 @@ typedef struct { + ffi_cif *cif; + void (*fun)(ffi_cif*,void*,void**,void*); + void *user_data; ++#if defined(_MSC_VER) && defined(_M_IX86) ++ void *padding; ++#endif + } ffi_closure + #ifdef __GNUC__ + __attribute__((aligned (8))) +@@ -360,7 +388,7 @@ ffi_prep_closure_loc (ffi_closure*, + ffi_cif *, + void (*fun)(ffi_cif*,void*,void**,void*), + void *user_data, +- void*codeloc); ++ void *codeloc); + + #ifdef __sgi + # pragma pack 8 +@@ -378,7 +406,7 @@ typedef struct { + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate +- handler to do the transaltion, void** -> ffi_raw*. */ ++ handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; +@@ -496,31 +524,6 @@ ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type, + + #endif + +-/* If these change, update src/mips/ffitarget.h. */ +-#define FFI_TYPE_VOID 0 +-#define FFI_TYPE_INT 1 +-#define FFI_TYPE_FLOAT 2 +-#define FFI_TYPE_DOUBLE 3 +-#if @HAVE_LONG_DOUBLE@ +-#define FFI_TYPE_LONGDOUBLE 4 +-#else +-#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE +-#endif +-#define FFI_TYPE_UINT8 5 +-#define FFI_TYPE_SINT8 6 +-#define FFI_TYPE_UINT16 7 +-#define FFI_TYPE_SINT16 8 +-#define FFI_TYPE_UINT32 9 +-#define FFI_TYPE_SINT32 10 +-#define FFI_TYPE_UINT64 11 +-#define FFI_TYPE_SINT64 12 +-#define FFI_TYPE_STRUCT 13 +-#define FFI_TYPE_POINTER 14 +-#define FFI_TYPE_COMPLEX 15 +- +-/* This should always refer to the last type code (for sanity checks). */ +-#define FFI_TYPE_LAST FFI_TYPE_COMPLEX +- + #ifdef __cplusplus + } + #endif +diff --git a/vendor/libffi-sys/libffi/install-sh b/vendor/libffi-sys/libffi/install-sh +index 20d8b2eae..ec298b537 100755 +--- a/vendor/libffi-sys/libffi/install-sh ++++ b/vendor/libffi-sys/libffi/install-sh +@@ -1,7 +1,7 @@ + #!/bin/sh + # install - install a program, script, or datafile + +-scriptversion=2018-03-11.20; # UTC ++scriptversion=2020-11-14.01; # UTC + + # This originates from X11R5 (mit/util/scripts/install.sh), which was + # later released in X11R6 (xc/config/util/install.sh) with the +@@ -69,6 +69,11 @@ posix_mkdir= + # Desired mode of installed file. + mode=0755 + ++# Create dirs (including intermediate dirs) using mode 755. ++# This is like GNU 'install' as of coreutils 8.32 (2020). ++mkdir_umask=22 ++ ++backupsuffix= + chgrpcmd= + chmodcmd=$chmodprog + chowncmd= +@@ -99,18 +104,28 @@ Options: + --version display version info and exit. + + -c (ignored) +- -C install only if different (preserve the last data modification time) ++ -C install only if different (preserve data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. ++ -p pass -p to $cpprog. + -s $stripprog installed files. ++ -S SUFFIX attempt to back up existing files, with suffix SUFFIX. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + + Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG ++ ++By default, rm is invoked with -f; when overridden with RMPROG, ++it's up to you to specify -f if you want it. ++ ++If -S is not specified, no backups are attempted. ++ ++Email bug reports to bug-automake@gnu.org. ++Automake home page: https://www.gnu.org/software/automake/ + " + + while test $# -ne 0; do +@@ -137,8 +152,13 @@ while test $# -ne 0; do + -o) chowncmd="$chownprog $2" + shift;; + ++ -p) cpprog="$cpprog -p";; ++ + -s) stripcmd=$stripprog;; + ++ -S) backupsuffix="$2" ++ shift;; ++ + -t) + is_target_a_directory=always + dst_arg=$2 +@@ -255,6 +275,10 @@ do + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? ++ # Don't chown directories that already exist. ++ if test $dstdir_status = 0; then ++ chowncmd="" ++ fi + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command +@@ -301,22 +325,6 @@ do + if test $dstdir_status != 0; then + case $posix_mkdir in + '') +- # Create intermediate dirs using mode 755 as modified by the umask. +- # This is like FreeBSD 'install' as of 1997-10-28. +- umask=`umask` +- case $stripcmd.$umask in +- # Optimize common cases. +- *[2367][2367]) mkdir_umask=$umask;; +- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; +- +- *[0-7]) +- mkdir_umask=`expr $umask + 22 \ +- - $umask % 100 % 40 + $umask % 20 \ +- - $umask % 10 % 4 + $umask % 2 +- `;; +- *) mkdir_umask=$umask,go-w;; +- esac +- + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then +@@ -326,52 +334,49 @@ do + fi + + posix_mkdir=false +- case $umask in +- *[123567][0-7][0-7]) +- # POSIX mkdir -p sets u+wx bits regardless of umask, which +- # is incompatible with FreeBSD 'install' when (umask & 300) != 0. +- ;; +- *) +- # Note that $RANDOM variable is not portable (e.g. dash); Use it +- # here however when possible just to lower collision chance. +- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ +- +- trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 +- +- # Because "mkdir -p" follows existing symlinks and we likely work +- # directly in world-writeable /tmp, make sure that the '$tmpdir' +- # directory is successfully created first before we actually test +- # 'mkdir -p' feature. +- if (umask $mkdir_umask && +- $mkdirprog $mkdir_mode "$tmpdir" && +- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 +- then +- if test -z "$dir_arg" || { +- # Check for POSIX incompatibilities with -m. +- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or +- # other-writable bit of parent directory when it shouldn't. +- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. +- test_tmpdir="$tmpdir/a" +- ls_ld_tmpdir=`ls -ld "$test_tmpdir"` +- case $ls_ld_tmpdir in +- d????-?r-*) different_mode=700;; +- d????-?--*) different_mode=755;; +- *) false;; +- esac && +- $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { +- ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` +- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" +- } +- } +- then posix_mkdir=: +- fi +- rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" +- else +- # Remove any dirs left behind by ancient mkdir implementations. +- rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null +- fi +- trap '' 0;; +- esac;; ++ # The $RANDOM variable is not portable (e.g., dash). Use it ++ # here however when possible just to lower collision chance. ++ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ ++ ++ trap ' ++ ret=$? ++ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null ++ exit $ret ++ ' 0 ++ ++ # Because "mkdir -p" follows existing symlinks and we likely work ++ # directly in world-writeable /tmp, make sure that the '$tmpdir' ++ # directory is successfully created first before we actually test ++ # 'mkdir -p'. ++ if (umask $mkdir_umask && ++ $mkdirprog $mkdir_mode "$tmpdir" && ++ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 ++ then ++ if test -z "$dir_arg" || { ++ # Check for POSIX incompatibilities with -m. ++ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or ++ # other-writable bit of parent directory when it shouldn't. ++ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ++ test_tmpdir="$tmpdir/a" ++ ls_ld_tmpdir=`ls -ld "$test_tmpdir"` ++ case $ls_ld_tmpdir in ++ d????-?r-*) different_mode=700;; ++ d????-?--*) different_mode=755;; ++ *) false;; ++ esac && ++ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ++ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` ++ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" ++ } ++ } ++ then posix_mkdir=: ++ fi ++ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" ++ else ++ # Remove any dirs left behind by ancient mkdir implementations. ++ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null ++ fi ++ trap '' 0;; + esac + + if +@@ -382,7 +387,7 @@ do + then : + else + +- # The umask is ridiculous, or mkdir does not conform to POSIX, ++ # mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + +@@ -411,7 +416,7 @@ do + prefixes= + else + if $posix_mkdir; then +- (umask=$mkdir_umask && ++ (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 +@@ -488,6 +493,13 @@ do + then + rm -f "$dsttmp" + else ++ # If $backupsuffix is set, and the file being installed ++ # already exists, attempt a backup. Don't worry if it fails, ++ # e.g., if mv doesn't support -f. ++ if test -n "$backupsuffix" && test -f "$dst"; then ++ $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null ++ fi ++ + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + +@@ -502,9 +514,9 @@ do + # file should still install successfully. + { + test ! -f "$dst" || +- $doit $rmcmd -f "$dst" 2>/dev/null || ++ $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && +- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } ++ { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 +diff --git a/vendor/libffi-sys/libffi/libtool-version b/vendor/libffi-sys/libffi/libtool-version +index 607fee558..03f54024b 100644 +--- a/vendor/libffi-sys/libffi/libtool-version ++++ b/vendor/libffi-sys/libffi/libtool-version +@@ -5,7 +5,7 @@ + # + # Here are a set of rules to help you update your library version + # information: +-# ++# + # 1. Start with version information of `0:0:0' for each libtool library. + # + # 2. Update the version information only immediately before a public +@@ -26,4 +26,4 @@ + # release, then set age to 0. + # + # CURRENT:REVISION:AGE +-9:0:1 ++9:2:1 +diff --git a/vendor/libffi-sys/libffi/ltmain.sh b/vendor/libffi-sys/libffi/ltmain.sh +index 7f3523d33..49fcad136 100644 +--- a/vendor/libffi-sys/libffi/ltmain.sh ++++ b/vendor/libffi-sys/libffi/ltmain.sh +@@ -1,12 +1,12 @@ +-#! /bin/sh ++#! /usr/bin/env sh + ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +-## by inline-source v2014-01-03.01 ++## by inline-source v2019-02-19.15 + +-# libtool (GNU libtool) 2.4.6 ++# libtool (GNU libtool) 2.4.7 + # Provide generalized library-building support services. + # Written by Gordon Matzigkeit , 1996 + +-# Copyright (C) 1996-2015 Free Software Foundation, Inc. ++# Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc. + # This is free software; see the source for copying conditions. There is NO + # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +@@ -31,8 +31,8 @@ + + PROGRAM=libtool + PACKAGE=libtool +-VERSION=2.4.6 +-package_revision=2.4.6 ++VERSION=2.4.7 ++package_revision=2.4.7 + + + ## ------ ## +@@ -64,34 +64,25 @@ package_revision=2.4.6 + # libraries, which are installed to $pkgauxdir. + + # Set a version string for this script. +-scriptversion=2015-01-20.17; # UTC ++scriptversion=2019-02-19.15; # UTC + + # General shell script boiler plate, and helper functions. + # Written by Gary V. Vaughan, 2004 + +-# Copyright (C) 2004-2015 Free Software Foundation, Inc. +-# This is free software; see the source for copying conditions. There is NO +-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +- +-# This program is free software; you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation; either version 3 of the License, or +-# (at your option) any later version. +- +-# As a special exception to the GNU General Public License, if you distribute +-# this file as part of a program or library that is built using GNU Libtool, +-# you may include this file under the same distribution terms that you use +-# for the rest of that program. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU +-# General Public License for more details. +- +-# You should have received a copy of the GNU General Public License +-# along with this program. If not, see . ++# This is free software. There is NO warranty; not even for ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++# ++# Copyright (C) 2004-2019, 2021 Bootstrap Authors ++# ++# This file is dual licensed under the terms of the MIT license ++# , and GPL version 2 or later ++# . You must apply one of ++# these licenses when using or redistributing this software or any of ++# the files within it. See the URLs above, or the file `LICENSE` ++# included in the Bootstrap distribution for the full license texts. + +-# Please report bugs or propose patches to gary@gnu.org. ++# Please report bugs or propose patches to: ++# + + + ## ------ ## +@@ -139,9 +130,12 @@ do + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" + done +- +-# CDPATH. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++# These NLS vars are set unconditionally (bootstrap issue #24). Unset those ++# in case the environment reset is needed later and the $save_* variant is not ++# defined (see the code above). ++LC_ALL=C ++LANGUAGE=C ++export LANGUAGE LC_ALL + + # Make sure IFS has a sensible default + sp=' ' +@@ -159,6 +153,26 @@ if test "${PATH_SEPARATOR+set}" != set; then + fi + + ++# func_unset VAR ++# -------------- ++# Portably unset VAR. ++# In some shells, an 'unset VAR' statement leaves a non-zero return ++# status if VAR is already unset, which might be problematic if the ++# statement is used at the end of a function (thus poisoning its return ++# value) or when 'set -e' is active (causing even a spurious abort of ++# the script in this case). ++func_unset () ++{ ++ { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } ++} ++ ++ ++# Make sure CDPATH doesn't cause `cd` commands to output the target dir. ++func_unset CDPATH ++ ++# Make sure ${,E,F}GREP behave sanely. ++func_unset GREP_OPTIONS ++ + + ## ------------------------- ## + ## Locate command utilities. ## +@@ -259,7 +273,7 @@ test -z "$SED" && { + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + +- func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin ++ func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" + rm -f conftest.sed + SED=$func_path_progs_result + } +@@ -295,7 +309,7 @@ test -z "$GREP" && { + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + +- func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin ++ func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" + GREP=$func_path_progs_result + } + +@@ -360,6 +374,35 @@ sed_double_backslash="\ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + ++# require_check_ifs_backslash ++# --------------------------- ++# Check if we can use backslash as IFS='\' separator, and set ++# $check_ifs_backshlash_broken to ':' or 'false'. ++require_check_ifs_backslash=func_require_check_ifs_backslash ++func_require_check_ifs_backslash () ++{ ++ _G_save_IFS=$IFS ++ IFS='\' ++ _G_check_ifs_backshlash='a\\b' ++ for _G_i in $_G_check_ifs_backshlash ++ do ++ case $_G_i in ++ a) ++ check_ifs_backshlash_broken=false ++ ;; ++ '') ++ break ++ ;; ++ *) ++ check_ifs_backshlash_broken=: ++ break ++ ;; ++ esac ++ done ++ IFS=$_G_save_IFS ++ require_check_ifs_backslash=: ++} ++ + + ## ----------------- ## + ## Global variables. ## +@@ -580,16 +623,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then + { + $debug_cmd + +- func_quote_for_eval "$2" +- eval "$1+=\\ \$func_quote_for_eval_result" ++ func_quote_arg pretty "$2" ++ eval "$1+=\\ \$func_quote_arg_result" + }' + else + func_append_quoted () + { + $debug_cmd + +- func_quote_for_eval "$2" +- eval "$1=\$$1\\ \$func_quote_for_eval_result" ++ func_quote_arg pretty "$2" ++ eval "$1=\$$1\\ \$func_quote_arg_result" + } + fi + +@@ -1091,85 +1134,203 @@ func_relative_path () + } + + +-# func_quote_for_eval ARG... +-# -------------------------- +-# Aesthetically quote ARGs to be evaled later. +-# This function returns two values: +-# i) func_quote_for_eval_result +-# double-quoted, suitable for a subsequent eval +-# ii) func_quote_for_eval_unquoted_result +-# has all characters that are still active within double +-# quotes backslashified. +-func_quote_for_eval () ++# func_quote_portable EVAL ARG ++# ---------------------------- ++# Internal function to portably implement func_quote_arg. Note that we still ++# keep attention to performance here so we as much as possible try to avoid ++# calling sed binary (so far O(N) complexity as long as func_append is O(1)). ++func_quote_portable () + { + $debug_cmd + +- func_quote_for_eval_unquoted_result= +- func_quote_for_eval_result= +- while test 0 -lt $#; do +- case $1 in +- *[\\\`\"\$]*) +- _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; +- *) +- _G_unquoted_arg=$1 ;; +- esac +- if test -n "$func_quote_for_eval_unquoted_result"; then +- func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" +- else +- func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" ++ $require_check_ifs_backslash ++ ++ func_quote_portable_result=$2 ++ ++ # one-time-loop (easy break) ++ while true ++ do ++ if $1; then ++ func_quote_portable_result=`$ECHO "$2" | $SED \ ++ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ++ break + fi + +- case $_G_unquoted_arg in +- # Double-quote args containing shell metacharacters to delay +- # word splitting, command substitution and variable expansion +- # for a subsequent eval. +- # Many Bourne shells cannot handle close brackets correctly +- # in scan sets, so we specify it separately. +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") +- _G_quoted_arg=\"$_G_unquoted_arg\" ++ # Quote for eval. ++ case $func_quote_portable_result in ++ *[\\\`\"\$]*) ++ # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string ++ # contains the shell wildcard characters. ++ case $check_ifs_backshlash_broken$func_quote_portable_result in ++ :*|*[\[\*\?]*) ++ func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ ++ | $SED "$sed_quote_subst"` ++ break ++ ;; ++ esac ++ ++ func_quote_portable_old_IFS=$IFS ++ for _G_char in '\' '`' '"' '$' ++ do ++ # STATE($1) PREV($2) SEPARATOR($3) ++ set start "" "" ++ func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy ++ IFS=$_G_char ++ for _G_part in $func_quote_portable_result ++ do ++ case $1 in ++ quote) ++ func_append func_quote_portable_result "$3$2" ++ set quote "$_G_part" "\\$_G_char" ++ ;; ++ start) ++ set first "" "" ++ func_quote_portable_result= ++ ;; ++ first) ++ set quote "$_G_part" "" ++ ;; ++ esac ++ done ++ done ++ IFS=$func_quote_portable_old_IFS + ;; +- *) +- _G_quoted_arg=$_G_unquoted_arg +- ;; ++ *) ;; + esac +- +- if test -n "$func_quote_for_eval_result"; then +- func_append func_quote_for_eval_result " $_G_quoted_arg" +- else +- func_append func_quote_for_eval_result "$_G_quoted_arg" +- fi +- shift ++ break + done ++ ++ func_quote_portable_unquoted_result=$func_quote_portable_result ++ case $func_quote_portable_result in ++ # double-quote args containing shell metacharacters to delay ++ # word splitting, command substitution and variable expansion ++ # for a subsequent eval. ++ # many bourne shells cannot handle close brackets correctly ++ # in scan sets, so we specify it separately. ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ func_quote_portable_result=\"$func_quote_portable_result\" ++ ;; ++ esac + } + + +-# func_quote_for_expand ARG +-# ------------------------- +-# Aesthetically quote ARG to be evaled later; same as above, +-# but do not quote variable references. +-func_quote_for_expand () +-{ +- $debug_cmd ++# func_quotefast_eval ARG ++# ----------------------- ++# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', ++# but optimized for speed. Result is stored in $func_quotefast_eval. ++if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then ++ printf -v _GL_test_printf_tilde %q '~' ++ if test '\~' = "$_GL_test_printf_tilde"; then ++ func_quotefast_eval () ++ { ++ printf -v func_quotefast_eval_result %q "$1" ++ } ++ else ++ # Broken older Bash implementations. Make those faster too if possible. ++ func_quotefast_eval () ++ { ++ case $1 in ++ '~'*) ++ func_quote_portable false "$1" ++ func_quotefast_eval_result=$func_quote_portable_result ++ ;; ++ *) ++ printf -v func_quotefast_eval_result %q "$1" ++ ;; ++ esac ++ } ++ fi ++else ++ func_quotefast_eval () ++ { ++ func_quote_portable false "$1" ++ func_quotefast_eval_result=$func_quote_portable_result ++ } ++fi + +- case $1 in +- *[\\\`\"]*) +- _G_arg=`$ECHO "$1" | $SED \ +- -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; +- *) +- _G_arg=$1 ;; ++ ++# func_quote_arg MODEs ARG ++# ------------------------ ++# Quote one ARG to be evaled later. MODEs argument may contain zero or more ++# specifiers listed below separated by ',' character. This function returns two ++# values: ++# i) func_quote_arg_result ++# double-quoted (when needed), suitable for a subsequent eval ++# ii) func_quote_arg_unquoted_result ++# has all characters that are still active within double ++# quotes backslashified. Available only if 'unquoted' is specified. ++# ++# Available modes: ++# ---------------- ++# 'eval' (default) ++# - escape shell special characters ++# 'expand' ++# - the same as 'eval'; but do not quote variable references ++# 'pretty' ++# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might ++# be used later in func_quote to get output like: 'echo "a b"' instead ++# of 'echo a\ b'. This is slower than default on some shells. ++# 'unquoted' ++# - produce also $func_quote_arg_unquoted_result which does not contain ++# wrapping double-quotes. ++# ++# Examples for 'func_quote_arg pretty,unquoted string': ++# ++# string | *_result | *_unquoted_result ++# ------------+-----------------------+------------------- ++# " | \" | \" ++# a b | "a b" | a b ++# "a b" | "\"a b\"" | \"a b\" ++# * | "*" | * ++# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" ++# ++# Examples for 'func_quote_arg pretty,unquoted,expand string': ++# ++# string | *_result | *_unquoted_result ++# --------------+---------------------+-------------------- ++# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" ++func_quote_arg () ++{ ++ _G_quote_expand=false ++ case ,$1, in ++ *,expand,*) ++ _G_quote_expand=: ++ ;; + esac + +- case $_G_arg in +- # Double-quote args containing shell metacharacters to delay +- # word splitting and command substitution for a subsequent eval. +- # Many Bourne shells cannot handle close brackets correctly +- # in scan sets, so we specify it separately. +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") +- _G_arg=\"$_G_arg\" ++ case ,$1, in ++ *,pretty,*|*,expand,*|*,unquoted,*) ++ func_quote_portable $_G_quote_expand "$2" ++ func_quote_arg_result=$func_quote_portable_result ++ func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result ++ ;; ++ *) ++ # Faster quote-for-eval for some shells. ++ func_quotefast_eval "$2" ++ func_quote_arg_result=$func_quotefast_eval_result + ;; + esac ++} + +- func_quote_for_expand_result=$_G_arg ++ ++# func_quote MODEs ARGs... ++# ------------------------ ++# Quote all ARGs to be evaled later and join them into single command. See ++# func_quote_arg's description for more info. ++func_quote () ++{ ++ $debug_cmd ++ _G_func_quote_mode=$1 ; shift ++ func_quote_result= ++ while test 0 -lt $#; do ++ func_quote_arg "$_G_func_quote_mode" "$1" ++ if test -n "$func_quote_result"; then ++ func_append func_quote_result " $func_quote_arg_result" ++ else ++ func_append func_quote_result "$func_quote_arg_result" ++ fi ++ shift ++ done + } + + +@@ -1215,8 +1376,8 @@ func_show_eval () + _G_cmd=$1 + _G_fail_exp=${2-':'} + +- func_quote_for_expand "$_G_cmd" +- eval "func_notquiet $func_quote_for_expand_result" ++ func_quote_arg pretty,expand "$_G_cmd" ++ eval "func_notquiet $func_quote_arg_result" + + $opt_dry_run || { + eval "$_G_cmd" +@@ -1241,8 +1402,8 @@ func_show_eval_locale () + _G_fail_exp=${2-':'} + + $opt_quiet || { +- func_quote_for_expand "$_G_cmd" +- eval "func_echo $func_quote_for_expand_result" ++ func_quote_arg expand,pretty "$_G_cmd" ++ eval "func_echo $func_quote_arg_result" + } + + $opt_dry_run || { +@@ -1369,30 +1530,26 @@ func_lt_ver () + # End: + #! /bin/sh + +-# Set a version string for this script. +-scriptversion=2014-01-07.03; # UTC +- + # A portable, pluggable option parser for Bourne shell. + # Written by Gary V. Vaughan, 2010 + +-# Copyright (C) 2010-2015 Free Software Foundation, Inc. +-# This is free software; see the source for copying conditions. There is NO +-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +- +-# This program is free software: you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation, either version 3 of the License, or +-# (at your option) any later version. +- +-# This program is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. ++# This is free software. There is NO warranty; not even for ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++# ++# Copyright (C) 2010-2019, 2021 Bootstrap Authors ++# ++# This file is dual licensed under the terms of the MIT license ++# , and GPL version 2 or later ++# . You must apply one of ++# these licenses when using or redistributing this software or any of ++# the files within it. See the URLs above, or the file `LICENSE` ++# included in the Bootstrap distribution for the full license texts. + +-# You should have received a copy of the GNU General Public License +-# along with this program. If not, see . ++# Please report bugs or propose patches to: ++# + +-# Please report bugs or propose patches to gary@gnu.org. ++# Set a version string for this script. ++scriptversion=2019-02-19.15; # UTC + + + ## ------ ## +@@ -1415,7 +1572,7 @@ scriptversion=2014-01-07.03; # UTC + # + # In order for the '--version' option to work, you will need to have a + # suitably formatted comment like the one at the top of this file +-# starting with '# Written by ' and ending with '# warranty; '. ++# starting with '# Written by ' and ending with '# Copyright'. + # + # For '-h' and '--help' to work, you will also need a one line + # description of your script's purpose in a comment directly above the +@@ -1427,7 +1584,7 @@ scriptversion=2014-01-07.03; # UTC + # to display verbose messages only when your user has specified + # '--verbose'. + # +-# After sourcing this file, you can plug processing for additional ++# After sourcing this file, you can plug in processing for additional + # options by amending the variables from the 'Configuration' section + # below, and following the instructions in the 'Option parsing' + # section further down. +@@ -1476,8 +1633,8 @@ fatal_help="Try '\$progname --help' for more information." + ## ------------------------- ## + + # This section contains functions for adding, removing, and running hooks +-# to the main code. A hook is just a named list of of function, that can +-# be run in order later on. ++# in the main code. A hook is just a list of function names that can be ++# run in order later on. + + # func_hookable FUNC_NAME + # ----------------------- +@@ -1510,7 +1667,8 @@ func_add_hook () + + # func_remove_hook FUNC_NAME HOOK_FUNC + # ------------------------------------ +-# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. ++# Remove HOOK_FUNC from the list of hook functions to be called by ++# FUNC_NAME. + func_remove_hook () + { + $debug_cmd +@@ -1519,10 +1677,28 @@ func_remove_hook () + } + + ++# func_propagate_result FUNC_NAME_A FUNC_NAME_B ++# --------------------------------------------- ++# If the *_result variable of FUNC_NAME_A _is set_, assign its value to ++# *_result variable of FUNC_NAME_B. ++func_propagate_result () ++{ ++ $debug_cmd ++ ++ func_propagate_result_result=: ++ if eval "test \"\${${1}_result+set}\" = set" ++ then ++ eval "${2}_result=\$${1}_result" ++ else ++ func_propagate_result_result=false ++ fi ++} ++ ++ + # func_run_hooks FUNC_NAME [ARG]... + # --------------------------------- + # Run all hook functions registered to FUNC_NAME. +-# It is assumed that the list of hook functions contains nothing more ++# It's assumed that the list of hook functions contains nothing more + # than a whitespace-delimited list of legal shell function names, and + # no effort is wasted trying to catch shell meta-characters or preserve + # whitespace. +@@ -1532,22 +1708,19 @@ func_run_hooks () + + case " $hookable_fns " in + *" $1 "*) ;; +- *) func_fatal_error "'$1' does not support hook funcions.n" ;; ++ *) func_fatal_error "'$1' does not support hook functions." ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do +- eval $_G_hook '"$@"' +- +- # store returned options list back into positional +- # parameters for next 'cmd' execution. +- eval _G_hook_result=\$${_G_hook}_result +- eval set dummy "$_G_hook_result"; shift ++ func_unset "${_G_hook}_result" ++ eval $_G_hook '${1+"$@"}' ++ func_propagate_result $_G_hook func_run_hooks ++ if $func_propagate_result_result; then ++ eval set dummy "$func_run_hooks_result"; shift ++ fi + done +- +- func_quote_for_eval ${1+"$@"} +- func_run_hooks_result=$func_quote_for_eval_result + } + + +@@ -1557,10 +1730,18 @@ func_run_hooks () + ## --------------- ## + + # In order to add your own option parsing hooks, you must accept the +-# full positional parameter list in your hook function, remove any +-# options that you action, and then pass back the remaining unprocessed +-# options in '_result', escaped suitably for +-# 'eval'. Like this: ++# full positional parameter list from your hook function. You may remove ++# or edit any options that you action, and then pass back the remaining ++# unprocessed options in '_result', escaped ++# suitably for 'eval'. ++# ++# The '_result' variable is automatically unset ++# before your hook gets called; for best performance, only set the ++# *_result variable when necessary (i.e. don't call the 'func_quote' ++# function unnecessarily because it can be an expensive operation on some ++# machines). ++# ++# Like this: + # + # my_options_prep () + # { +@@ -1570,9 +1751,8 @@ func_run_hooks () + # usage_message=$usage_message' + # -s, --silent don'\''t print informational messages + # ' +-# +-# func_quote_for_eval ${1+"$@"} +-# my_options_prep_result=$func_quote_for_eval_result ++# # No change in '$@' (ignored completely by this hook). Leave ++# # my_options_prep_result variable intact. + # } + # func_add_hook func_options_prep my_options_prep + # +@@ -1581,25 +1761,36 @@ func_run_hooks () + # { + # $debug_cmd + # +-# # Note that for efficiency, we parse as many options as we can ++# args_changed=false ++# ++# # Note that, for efficiency, we parse as many options as we can + # # recognise in a loop before passing the remainder back to the + # # caller on the first unrecognised argument we encounter. + # while test $# -gt 0; do + # opt=$1; shift + # case $opt in +-# --silent|-s) opt_silent=: ;; ++# --silent|-s) opt_silent=: ++# args_changed=: ++# ;; + # # Separate non-argument short options: + # -s*) func_split_short_opt "$_G_opt" + # set dummy "$func_split_short_opt_name" \ + # "-$func_split_short_opt_arg" ${1+"$@"} + # shift ++# args_changed=: + # ;; +-# *) set dummy "$_G_opt" "$*"; shift; break ;; ++# *) # Make sure the first unrecognised option "$_G_opt" ++# # is added back to "$@" in case we need it later, ++# # if $args_changed was set to 'true'. ++# set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + # esac + # done + # +-# func_quote_for_eval ${1+"$@"} +-# my_silent_option_result=$func_quote_for_eval_result ++# # Only call 'func_quote' here if we processed at least one argument. ++# if $args_changed; then ++# func_quote eval ${1+"$@"} ++# my_silent_option_result=$func_quote_result ++# fi + # } + # func_add_hook func_parse_options my_silent_option + # +@@ -1610,17 +1801,26 @@ func_run_hooks () + # + # $opt_silent && $opt_verbose && func_fatal_help "\ + # '--silent' and '--verbose' options are mutually exclusive." +-# +-# func_quote_for_eval ${1+"$@"} +-# my_option_validation_result=$func_quote_for_eval_result + # } + # func_add_hook func_validate_options my_option_validation + # +-# You'll alse need to manually amend $usage_message to reflect the extra ++# You'll also need to manually amend $usage_message to reflect the extra + # options you parse. It's preferable to append if you can, so that + # multiple option parsing hooks can be added safely. + + ++# func_options_finish [ARG]... ++# ---------------------------- ++# Finishing the option parse loop (call 'func_options' hooks ATM). ++func_options_finish () ++{ ++ $debug_cmd ++ ++ func_run_hooks func_options ${1+"$@"} ++ func_propagate_result func_run_hooks func_options_finish ++} ++ ++ + # func_options [ARG]... + # --------------------- + # All the functions called inside func_options are hookable. See the +@@ -1630,17 +1830,27 @@ func_options () + { + $debug_cmd + +- func_options_prep ${1+"$@"} +- eval func_parse_options \ +- ${func_options_prep_result+"$func_options_prep_result"} +- eval func_validate_options \ +- ${func_parse_options_result+"$func_parse_options_result"} ++ _G_options_quoted=false + +- eval func_run_hooks func_options \ +- ${func_validate_options_result+"$func_validate_options_result"} ++ for my_func in options_prep parse_options validate_options options_finish ++ do ++ func_unset func_${my_func}_result ++ func_unset func_run_hooks_result ++ eval func_$my_func '${1+"$@"}' ++ func_propagate_result func_$my_func func_options ++ if $func_propagate_result_result; then ++ eval set dummy "$func_options_result"; shift ++ _G_options_quoted=: ++ fi ++ done + +- # save modified positional parameters for caller +- func_options_result=$func_run_hooks_result ++ $_G_options_quoted || { ++ # As we (func_options) are top-level options-parser function and ++ # nobody quoted "$@" for us yet, we need to do it explicitly for ++ # caller. ++ func_quote eval ${1+"$@"} ++ func_options_result=$func_quote_result ++ } + } + + +@@ -1649,9 +1859,8 @@ func_options () + # All initialisations required before starting the option parse loop. + # Note that when calling hook functions, we pass through the list of + # positional parameters. If a hook function modifies that list, and +-# needs to propogate that back to rest of this script, then the complete +-# modified list must be put in 'func_run_hooks_result' before +-# returning. ++# needs to propagate that back to rest of this script, then the complete ++# modified list must be put in 'func_run_hooks_result' before returning. + func_hookable func_options_prep + func_options_prep () + { +@@ -1662,9 +1871,7 @@ func_options_prep () + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} +- +- # save modified positional parameters for caller +- func_options_prep_result=$func_run_hooks_result ++ func_propagate_result func_run_hooks func_options_prep + } + + +@@ -1676,25 +1883,32 @@ func_parse_options () + { + $debug_cmd + +- func_parse_options_result= +- ++ _G_parse_options_requote=false + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} +- +- # Adjust func_parse_options positional parameters to match +- eval set dummy "$func_run_hooks_result"; shift ++ func_propagate_result func_run_hooks func_parse_options ++ if $func_propagate_result_result; then ++ eval set dummy "$func_parse_options_result"; shift ++ # Even though we may have changed "$@", we passed the "$@" array ++ # down into the hook and it quoted it for us (because we are in ++ # this if-branch). No need to quote it again. ++ _G_parse_options_requote=false ++ fi + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + ++ # We expect that one of the options parsed in this function matches ++ # and thus we remove _G_opt from "$@" and need to re-quote. ++ _G_match_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' +- func_echo "enabling shell trace mode" ++ func_echo "enabling shell trace mode" >&2 + $debug_cmd + ;; + +@@ -1704,7 +1918,10 @@ func_parse_options () + ;; + + --warnings|--warning|-W) +- test $# = 0 && func_missing_arg $_G_opt && break ++ if test $# = 0 && func_missing_arg $_G_opt; then ++ _G_parse_options_requote=: ++ break ++ fi + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above +@@ -1757,15 +1974,24 @@ func_parse_options () + shift + ;; + +- --) break ;; ++ --) _G_parse_options_requote=: ; break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; +- *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; ++ *) set dummy "$_G_opt" ${1+"$@"}; shift ++ _G_match_parse_options=false ++ break ++ ;; + esac ++ ++ if $_G_match_parse_options; then ++ _G_parse_options_requote=: ++ fi + done + +- # save modified positional parameters for caller +- func_quote_for_eval ${1+"$@"} +- func_parse_options_result=$func_quote_for_eval_result ++ if $_G_parse_options_requote; then ++ # save modified positional parameters for caller ++ func_quote eval ${1+"$@"} ++ func_parse_options_result=$func_quote_result ++ fi + } + + +@@ -1782,12 +2008,10 @@ func_validate_options () + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} ++ func_propagate_result func_run_hooks func_validate_options + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE +- +- # save modified positional parameters for caller +- func_validate_options_result=$func_run_hooks_result + } + + +@@ -1843,8 +2067,8 @@ func_missing_arg () + + # func_split_equals STRING + # ------------------------ +-# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +-# splitting STRING at the '=' sign. ++# Set func_split_equals_lhs and func_split_equals_rhs shell variables ++# after splitting STRING at the '=' sign. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ +@@ -1859,8 +2083,9 @@ then + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} +- test "x$func_split_equals_lhs" = "x$1" \ +- && func_split_equals_rhs= ++ if test "x$func_split_equals_lhs" = "x$1"; then ++ func_split_equals_rhs= ++ fi + }' + else + # ...otherwise fall back to using expr, which is often a shell builtin. +@@ -1870,7 +2095,7 @@ else + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= +- test "x$func_split_equals_lhs" = "x$1" \ ++ test "x$func_split_equals_lhs=" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } + fi #func_split_equals +@@ -1896,7 +2121,7 @@ else + { + $debug_cmd + +- func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` ++ func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } + fi #func_split_short_opt +@@ -1938,31 +2163,44 @@ func_usage_message () + # func_version + # ------------ + # Echo version message to standard output and exit. ++# The version message is extracted from the calling file's header ++# comments, with leading '# ' stripped: ++# 1. First display the progname and version ++# 2. Followed by the header comment line matching /^# Written by / ++# 3. Then a blank line followed by the first following line matching ++# /^# Copyright / ++# 4. Immediately followed by any lines between the previous matches, ++# except lines preceding the intervening completely blank line. ++# For example, see the header comments of this file. + func_version () + { + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' +- /(C)/!b go +- :more +- /\./!{ +- N +- s|\n# | | +- b more +- } +- :go +- /^# Written by /,/# warranty; / { +- s|^# || +- s|^# *$|| +- s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| +- p ++ /^# Written by /!b ++ s|^# ||; p; n ++ ++ :fwd2blnk ++ /./ { ++ n ++ b fwd2blnk + } +- /^# Written by / { +- s|^# || +- p ++ p; n ++ ++ :holdwrnt ++ s|^# || ++ s|^# *$|| ++ /^Copyright /!{ ++ /./H ++ n ++ b holdwrnt + } +- /^warranty; /q' < "$progpath" ++ ++ s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| ++ G ++ s|\(\n\)\n*|\1|g ++ p; q' < "$progpath" + + exit $? + } +@@ -1972,12 +2210,12 @@ func_version () + # mode: shell-script + # sh-indentation: 2 + # eval: (add-hook 'before-save-hook 'time-stamp) +-# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" ++# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" + # time-stamp-time-zone: "UTC" + # End: + + # Set a version string. +-scriptversion='(GNU libtool) 2.4.6' ++scriptversion='(GNU libtool) 2.4.7' + + + # func_echo ARG... +@@ -2068,7 +2306,7 @@ include the following information: + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) +- version: $progname (GNU libtool) 2.4.6 ++ version: $progname (GNU libtool) 2.4.7 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +@@ -2270,6 +2508,8 @@ libtool_options_prep () + nonopt= + preserve_args= + ++ _G_rc_lt_options_prep=: ++ + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) +@@ -2293,11 +2533,16 @@ libtool_options_prep () + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; ++ *) ++ _G_rc_lt_options_prep=false ++ ;; + esac + +- # Pass back the list of options. +- func_quote_for_eval ${1+"$@"} +- libtool_options_prep_result=$func_quote_for_eval_result ++ if $_G_rc_lt_options_prep; then ++ # Pass back the list of options. ++ func_quote eval ${1+"$@"} ++ libtool_options_prep_result=$func_quote_result ++ fi + } + func_add_hook func_options_prep libtool_options_prep + +@@ -2309,9 +2554,12 @@ libtool_parse_options () + { + $debug_cmd + ++ _G_rc_lt_parse_options=false ++ + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do ++ _G_match_lt_parse_options=: + _G_opt=$1 + shift + case $_G_opt in +@@ -2386,15 +2634,20 @@ libtool_parse_options () + func_append preserve_args " $_G_opt" + ;; + +- # An option not handled by this hook function: +- *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; ++ # An option not handled by this hook function: ++ *) set dummy "$_G_opt" ${1+"$@"} ; shift ++ _G_match_lt_parse_options=false ++ break ++ ;; + esac ++ $_G_match_lt_parse_options && _G_rc_lt_parse_options=: + done + +- +- # save modified positional parameters for caller +- func_quote_for_eval ${1+"$@"} +- libtool_parse_options_result=$func_quote_for_eval_result ++ if $_G_rc_lt_parse_options; then ++ # save modified positional parameters for caller ++ func_quote eval ${1+"$@"} ++ libtool_parse_options_result=$func_quote_result ++ fi + } + func_add_hook func_parse_options libtool_parse_options + +@@ -2415,17 +2668,10 @@ libtool_validate_options () + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + +- case $host in +- # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 +- # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 +- *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) +- # don't eliminate duplications in $postdeps and $predeps +- opt_duplicate_compiler_generated_deps=: +- ;; +- *) +- opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps +- ;; +- esac ++ # Keeping compiler generated duplicates in $postdeps and $predeps is not ++ # harmful, and is necessary in a majority of systems that use it to satisfy ++ # symbol dependencies. ++ opt_duplicate_compiler_generated_deps=: + + $opt_help || { + # Sanity checks first: +@@ -2451,8 +2697,8 @@ libtool_validate_options () + } + + # Pass back the unparsed argument list +- func_quote_for_eval ${1+"$@"} +- libtool_validate_options_result=$func_quote_for_eval_result ++ func_quote eval ${1+"$@"} ++ libtool_validate_options_result=$func_quote_result + } + func_add_hook func_validate_options libtool_validate_options + +@@ -3418,8 +3664,8 @@ func_mode_compile () + esac + done + +- func_quote_for_eval "$libobj" +- test "X$libobj" != "X$func_quote_for_eval_result" \ ++ func_quote_arg pretty "$libobj" ++ test "X$libobj" != "X$func_quote_arg_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" +@@ -3492,8 +3738,8 @@ compiler." + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result +- func_quote_for_eval "$srcfile" +- qsrcfile=$func_quote_for_eval_result ++ func_quote_arg pretty "$srcfile" ++ qsrcfile=$func_quote_arg_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then +@@ -3648,7 +3894,8 @@ This mode accepts the following additional options: + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking +- -Wc,FLAG pass FLAG directly to the compiler ++ -Wc,FLAG ++ -Xcompiler FLAG pass FLAG directly to the compiler + + COMPILE-COMMAND is a command to be used in creating a 'standard' object file + from the given SOURCEFILE. +@@ -3754,6 +4001,8 @@ The following components of LINK-COMMAND are treated specially: + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler ++ -Wa,FLAG ++ -Xassembler FLAG pass linker-specific FLAG directly to the assembler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) +@@ -4096,8 +4345,8 @@ func_mode_install () + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. +- func_quote_for_eval "$nonopt" +- install_prog="$func_quote_for_eval_result " ++ func_quote_arg pretty "$nonopt" ++ install_prog="$func_quote_arg_result " + arg=$1 + shift + else +@@ -4107,8 +4356,8 @@ func_mode_install () + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. +- func_quote_for_eval "$arg" +- func_append install_prog "$func_quote_for_eval_result" ++ func_quote_arg pretty "$arg" ++ func_append install_prog "$func_quote_arg_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; +@@ -4165,12 +4414,12 @@ func_mode_install () + esac + + # Aesthetically quote the argument. +- func_quote_for_eval "$arg" +- func_append install_prog " $func_quote_for_eval_result" ++ func_quote_arg pretty "$arg" ++ func_append install_prog " $func_quote_arg_result" + if test -n "$arg2"; then +- func_quote_for_eval "$arg2" ++ func_quote_arg pretty "$arg2" + fi +- func_append install_shared_prog " $func_quote_for_eval_result" ++ func_append install_shared_prog " $func_quote_arg_result" + done + + test -z "$install_prog" && \ +@@ -4181,8 +4430,8 @@ func_mode_install () + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else +- func_quote_for_eval "$install_override_mode" +- func_append install_shared_prog " -m $func_quote_for_eval_result" ++ func_quote_arg pretty "$install_override_mode" ++ func_append install_shared_prog " -m $func_quote_arg_result" + fi + fi + +@@ -4478,8 +4727,8 @@ func_mode_install () + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { +- func_quote_for_expand "$relink_command" +- eval "func_echo $func_quote_for_expand_result" ++ func_quote_arg expand,pretty "$relink_command" ++ eval "func_echo $func_quote_arg_result" + } + if eval "$relink_command"; then : + else +@@ -5258,7 +5507,8 @@ else + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + +- qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` ++ func_quote_arg pretty "$ECHO" ++ qECHO=$func_quote_arg_result + $ECHO "\ + + # A function that is used when there is no print builtin or printf. +@@ -5268,7 +5518,7 @@ func_fallback_echo () + \$1 + _LTECHO_EOF' + } +- ECHO=\"$qECHO\" ++ ECHO=$qECHO + fi + + # Very basic option parsing. These options are (a) specific to +@@ -6611,9 +6861,9 @@ func_mode_link () + while test "$#" -gt 0; do + arg=$1 + shift +- func_quote_for_eval "$arg" +- qarg=$func_quote_for_eval_unquoted_result +- func_append libtool_args " $func_quote_for_eval_result" ++ func_quote_arg pretty,unquoted "$arg" ++ qarg=$func_quote_arg_unquoted_result ++ func_append libtool_args " $func_quote_arg_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then +@@ -6849,6 +7099,13 @@ func_mode_link () + prev= + continue + ;; ++ xassembler) ++ func_append compiler_flags " -Xassembler $qarg" ++ prev= ++ func_append compile_command " -Xassembler $qarg" ++ func_append finalize_command " -Xassembler $qarg" ++ continue ++ ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" +@@ -7019,7 +7276,7 @@ func_mode_link () + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; +- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; +@@ -7039,7 +7296,7 @@ func_mode_link () + esac + elif test X-lc_r = "X$arg"; then + case $host in +- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; +@@ -7069,8 +7326,20 @@ func_mode_link () + prev=xcompiler + continue + ;; +- +- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ ++ # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199. ++ -pthread) ++ case $host in ++ *solaris2*) ;; ++ *) ++ case "$new_inherited_linker_flags " in ++ *" $arg "*) ;; ++ * ) func_append new_inherited_linker_flags " $arg" ;; ++ esac ++ ;; ++ esac ++ continue ++ ;; ++ -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" +@@ -7211,9 +7480,9 @@ func_mode_link () + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs +- func_quote_for_eval "$flag" +- func_append arg " $func_quote_for_eval_result" +- func_append compiler_flags " $func_quote_for_eval_result" ++ func_quote_arg pretty "$flag" ++ func_append arg " $func_quote_arg_result" ++ func_append compiler_flags " $func_quote_arg_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" +@@ -7227,16 +7496,21 @@ func_mode_link () + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs +- func_quote_for_eval "$flag" +- func_append arg " $wl$func_quote_for_eval_result" +- func_append compiler_flags " $wl$func_quote_for_eval_result" +- func_append linker_flags " $func_quote_for_eval_result" ++ func_quote_arg pretty "$flag" ++ func_append arg " $wl$func_quote_arg_result" ++ func_append compiler_flags " $wl$func_quote_arg_result" ++ func_append linker_flags " $func_quote_arg_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + ++ -Xassembler) ++ prev=xassembler ++ continue ++ ;; ++ + -Xcompiler) + prev=xcompiler + continue +@@ -7254,8 +7528,8 @@ func_mode_link () + + # -msg_* for osf cc + -msg_*) +- func_quote_for_eval "$arg" +- arg=$func_quote_for_eval_result ++ func_quote_arg pretty "$arg" ++ arg=$func_quote_arg_result + ;; + + # Flags to be passed through unchanged, with rationale: +@@ -7274,12 +7548,15 @@ func_mode_link () + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang ++ # -fsanitize=* Clang/GCC memory and address sanitizer ++ # -fuse-ld=* Linker select flags for GCC ++ # -Wa,* Pass flags directly to the assembler + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ +- -specs=*) +- func_quote_for_eval "$arg" +- arg=$func_quote_for_eval_result ++ -specs=*|-fsanitize=*|-fuse-ld=*|-Wa,*) ++ func_quote_arg pretty "$arg" ++ arg=$func_quote_arg_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" +@@ -7300,15 +7577,15 @@ func_mode_link () + continue + else + # Otherwise treat like 'Some other compiler flag' below +- func_quote_for_eval "$arg" +- arg=$func_quote_for_eval_result ++ func_quote_arg pretty "$arg" ++ arg=$func_quote_arg_result + fi + ;; + + # Some other compiler flag. + -* | +*) +- func_quote_for_eval "$arg" +- arg=$func_quote_for_eval_result ++ func_quote_arg pretty "$arg" ++ arg=$func_quote_arg_result + ;; + + *.$objext) +@@ -7428,8 +7705,8 @@ func_mode_link () + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. +- func_quote_for_eval "$arg" +- arg=$func_quote_for_eval_result ++ func_quote_arg pretty "$arg" ++ arg=$func_quote_arg_result + ;; + esac # arg + +@@ -8634,7 +8911,7 @@ func_mode_link () + test CXX = "$tagname" && { + case $host_os in + linux*) +- case `$CC -V 2>&1 | sed 5q` in ++ case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + +@@ -8807,7 +9084,7 @@ func_mode_link () + # + case $version_type in + # correct linux to gnu/linux during the next big refactor +- darwin|freebsd-elf|linux|osf|windows|none) ++ darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor +@@ -8898,7 +9175,7 @@ func_mode_link () + versuffix=.$current.$revision + ;; + +- freebsd-elf) ++ freebsd-elf | midnightbsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision +@@ -9124,7 +9401,7 @@ func_mode_link () + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; +- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) +@@ -9935,8 +10212,8 @@ EOF + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { +- func_quote_for_expand "$cmd" +- eval "func_echo $func_quote_for_expand_result" ++ func_quote_arg expand,pretty "$cmd" ++ eval "func_echo $func_quote_arg_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? +@@ -10029,8 +10306,8 @@ EOF + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { +- func_quote_for_expand "$cmd" +- eval "func_echo $func_quote_for_expand_result" ++ func_quote_arg expand,pretty "$cmd" ++ eval "func_echo $func_quote_arg_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? +@@ -10504,12 +10781,13 @@ EOF + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else +- func_quote_for_eval "$var_value" +- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" ++ func_quote_arg pretty "$var_value" ++ relink_command="$var=$func_quote_arg_result; export $var; $relink_command" + fi + done +- relink_command="(cd `pwd`; $relink_command)" +- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` ++ func_quote eval cd "`pwd`" ++ func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)" ++ relink_command=$func_quote_arg_unquoted_result + fi + + # Only actually do things if not in dry run mode. +@@ -10749,13 +11027,15 @@ EOF + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else +- func_quote_for_eval "$var_value" +- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" ++ func_quote_arg pretty,unquoted "$var_value" ++ relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. +- relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" +- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` ++ func_quote eval cd "`pwd`" ++ relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" ++ func_quote_arg pretty,unquoted "$relink_command" ++ relink_command=$func_quote_arg_unquoted_result + if test yes = "$hardcode_automatic"; then + relink_command= + fi +diff --git a/vendor/libffi-sys/libffi/m4/ax_cc_maxopt.m4 b/vendor/libffi-sys/libffi/m4/ax_cc_maxopt.m4 +index 027b6d827..2f447afbb 100644 +--- a/vendor/libffi-sys/libffi/m4/ax_cc_maxopt.m4 ++++ b/vendor/libffi-sys/libffi/m4/ax_cc_maxopt.m4 +@@ -55,7 +55,7 @@ + # modified version of the Autoconf Macro, you may extend this special + # exception to the GPL to apply to your modified version as well. + +-#serial 18 ++#serial 22 + + AC_DEFUN([AX_CC_MAXOPT], + [ +@@ -67,7 +67,7 @@ AC_ARG_ENABLE(portable-binary, [AS_HELP_STRING([--enable-portable-binary], [disa + acx_maxopt_portable=$enableval, acx_maxopt_portable=no) + + # Try to determine "good" native compiler flags if none specified via CFLAGS +-if test "$ac_test_CFLAGS" != "set"; then ++if test "x$ac_test_CFLAGS" = "x"; then + case $ax_cv_c_compiler_vendor in + dec) CFLAGS="$CFLAGS -newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" + if test "x$acx_maxopt_portable" = xno; then +@@ -143,12 +143,18 @@ if test "$ac_test_CFLAGS" != "set"; then + fi + ;; + ++ nvhpc) ++ # default optimization flags for nvhpc ++ CFLAGS="$CFLAGS -O3" ++ ;; ++ + gnu) + # default optimization flags for gcc on all systems + CFLAGS="$CFLAGS -O3 -fomit-frame-pointer" + + # -malign-double for x86 systems +- # libffi local change -- don't align double, as it changes the ABI ++ # LIBFFI_LOCAL: don't do this. ++ # The testsuite doesn't use these flags and we'll get test failures. + # AX_CHECK_COMPILE_FLAG(-malign-double, CFLAGS="$CFLAGS -malign-double") + + # -fstrict-aliasing for gcc-2.95+ +diff --git a/vendor/libffi-sys/libffi/m4/ax_cflags_warn_all.m4 b/vendor/libffi-sys/libffi/m4/ax_cflags_warn_all.m4 +index 094577e45..9235a18c7 100644 +--- a/vendor/libffi-sys/libffi/m4/ax_cflags_warn_all.m4 ++++ b/vendor/libffi-sys/libffi/m4/ax_cflags_warn_all.m4 +@@ -4,33 +4,54 @@ + # + # SYNOPSIS + # +-# AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] +-# AX_CXXFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] +-# AX_FCFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])] ++# AX_CFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])] ++# AX_CXXFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])] ++# AX_FCFLAGS_WARN_ALL [(shellvar[, default[, action-if-found[, action-if-not-found]]])] + # + # DESCRIPTION + # +-# Try to find a compiler option that enables most reasonable warnings. ++# Specify compiler options that enable most reasonable warnings. For the ++# GNU Compiler Collection (GCC), for example, it will be "-Wall". The ++# result is added to shellvar, one of CFLAGS, CXXFLAGS or FCFLAGS if the ++# first parameter is not specified. + # +-# For the GNU compiler it will be -Wall (and -ansi -pedantic) The result +-# is added to the shellvar being CFLAGS, CXXFLAGS, or FCFLAGS by default. ++# Each of these macros accepts the following optional arguments: + # +-# Currently this macro knows about the GCC, Solaris, Digital Unix, AIX, +-# HP-UX, IRIX, NEC SX-5 (Super-UX 10), Cray J90 (Unicos 10.0.0.8), and +-# Intel compilers. For a given compiler, the Fortran flags are much more +-# experimental than their C equivalents. ++# - $1 - shellvar ++# shell variable to use (CFLAGS, CXXFLAGS or FCFLAGS if not ++# specified, depending on macro) + # +-# - $1 shell-variable-to-add-to : CFLAGS, CXXFLAGS, or FCFLAGS +-# - $2 add-value-if-not-found : nothing +-# - $3 action-if-found : add value to shellvariable +-# - $4 action-if-not-found : nothing ++# - $2 - default ++# value to use for flags if compiler vendor cannot be determined (by ++# default, "") + # +-# NOTE: These macros depend on AX_APPEND_FLAG. ++# - $3 - action-if-found ++# action to take if the compiler vendor has been successfully ++# determined (by default, add the appropriate compiler flags to ++# shellvar) ++# ++# - $4 - action-if-not-found ++# action to take if the compiler vendor has not been determined or ++# is unknown (by default, add the default flags, or "" if not ++# specified, to shellvar) ++# ++# These macros use AX_COMPILER_VENDOR to determine which flags should be ++# returned for a given compiler. Not all compilers currently have flags ++# defined for them; patches are welcome. If need be, compiler flags may ++# be made language-dependent: use a construct like the following: ++# ++# [vendor_name], [m4_if(_AC_LANG_PREFIX,[C], VAR="--relevant-c-flags",dnl ++# m4_if(_AC_LANG_PREFIX,[CXX], VAR="--relevant-c++-flags",dnl ++# m4_if(_AC_LANG_PREFIX,[FC], VAR="--relevant-fortran-flags",dnl ++# VAR="$2"; FOUND="no")))], ++# ++# Note: These macros also depend on AX_PREPEND_FLAG. + # + # LICENSE + # + # Copyright (c) 2008 Guido U. Draheim + # Copyright (c) 2010 Rhys Ulerich ++# Copyright (c) 2018 John Zaitseff + # + # This program is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by the +@@ -58,65 +79,80 @@ + # modified version of the Autoconf Macro, you may extend this special + # exception to the GPL to apply to your modified version as well. + +-#serial 16 ++#serial 25 ++ ++AC_DEFUN([AX_FLAGS_WARN_ALL], [ ++ AX_REQUIRE_DEFINED([AX_PREPEND_FLAG])dnl ++ AC_REQUIRE([AX_COMPILER_VENDOR])dnl ++ ++ AS_VAR_PUSHDEF([FLAGS], [m4_default($1,_AC_LANG_PREFIX[]FLAGS)])dnl ++ AS_VAR_PUSHDEF([VAR], [ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl ++ AS_VAR_PUSHDEF([FOUND], [ac_save_[]_AC_LANG_ABBREV[]flags_warn_all_found])dnl ++ ++ AC_CACHE_CHECK([FLAGS for most reasonable warnings], VAR, [ ++ VAR="" ++ FOUND="yes" ++ dnl Cases are listed in the order found in ax_compiler_vendor.m4 ++ AS_CASE("$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor", ++ [intel], [VAR="-w2"], ++ [ibm], [VAR="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"], ++ [pathscale], [], ++ [clang], [VAR="-Wall"], ++ [cray], [VAR="-h msglevel 2"], ++ [fujitsu], [], ++ [sdcc], [], ++ [sx], [VAR="-pvctl[,]fullmsg"], ++ [portland], [], ++ [gnu], [VAR="-Wall"], ++ [sun], [VAR="-v"], ++ [hp], [VAR="+w1"], ++ [dec], [VAR="-verbose -w0 -warnprotos"], ++ [borland], [], ++ [comeau], [], ++ [kai], [], ++ [lcc], [], ++ [sgi], [VAR="-fullwarn"], ++ [microsoft], [], ++ [metrowerks], [], ++ [watcom], [], ++ [tcc], [], ++ [unknown], [ ++ VAR="$2" ++ FOUND="no" ++ ], ++ [ ++ AC_MSG_WARN([Unknown compiler vendor returned by [AX_COMPILER_VENDOR]]) ++ VAR="$2" ++ FOUND="no" ++ ] ++ ) ++ ++ AS_IF([test "x$FOUND" = "xyes"], [dnl ++ m4_default($3, [AS_IF([test "x$VAR" != "x"], [AX_PREPEND_FLAG([$VAR], [FLAGS])])]) ++ ], [dnl ++ m4_default($4, [m4_ifval($2, [AX_PREPEND_FLAG([$VAR], [FLAGS])], [true])]) ++ ])dnl ++ ])dnl + +-AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl +-AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl +-AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_warn_all])dnl +-AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings], +-VAR,[VAR="no, unknown" +-ac_save_[]FLAGS="$[]FLAGS" +-for ac_arg dnl +-in "-warn all % -warn all" dnl Intel +- "-pedantic % -Wall" dnl GCC +- "-xstrconst % -v" dnl Solaris C +- "-std1 % -verbose -w0 -warnprotos" dnl Digital Unix +- "-qlanglvl=ansi % -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX +- "-ansi -ansiE % -fullwarn" dnl IRIX +- "+ESlit % +w1" dnl HP-UX C +- "-Xc % -pvctl[,]fullmsg" dnl NEC SX-5 (Super-UX 10) +- "-h conform % -h msglevel 2" dnl Cray C (Unicos) +- # +-do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM], +- [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) +-done +-FLAGS="$ac_save_[]FLAGS" +-]) +-AS_VAR_POPDEF([FLAGS])dnl +-AX_REQUIRE_DEFINED([AX_APPEND_FLAG]) +-case ".$VAR" in +- .ok|.ok,*) m4_ifvaln($3,$3) ;; +- .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;; +- *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;; +-esac +-AS_VAR_POPDEF([VAR])dnl ++ AS_VAR_POPDEF([FOUND])dnl ++ AS_VAR_POPDEF([VAR])dnl ++ AS_VAR_POPDEF([FLAGS])dnl + ])dnl AX_FLAGS_WARN_ALL +-dnl implementation tactics: +-dnl the for-argument contains a list of options. The first part of +-dnl these does only exist to detect the compiler - usually it is +-dnl a global option to enable -ansi or -extrawarnings. All other +-dnl compilers will fail about it. That was needed since a lot of +-dnl compilers will give false positives for some option-syntax +-dnl like -Woption or -Xoption as they think of it is a pass-through +-dnl to later compile stages or something. The "%" is used as a +-dnl delimiter. A non-option comment can be given after "%%" marks +-dnl which will be shown but not added to the respective C/CXXFLAGS. + +-AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl +-AC_LANG_PUSH([C]) +-AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) +-AC_LANG_POP([C]) +-]) ++AC_DEFUN([AX_CFLAGS_WARN_ALL], [dnl ++ AC_LANG_PUSH([C]) ++ AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) ++ AC_LANG_POP([C]) ++])dnl + +-AC_DEFUN([AX_CXXFLAGS_WARN_ALL],[dnl +-AC_LANG_PUSH([C++]) +-AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) +-AC_LANG_POP([C++]) +-]) ++AC_DEFUN([AX_CXXFLAGS_WARN_ALL], [dnl ++ AC_LANG_PUSH([C++]) ++ AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) ++ AC_LANG_POP([C++]) ++])dnl + +-AC_DEFUN([AX_FCFLAGS_WARN_ALL],[dnl +-AC_LANG_PUSH([Fortran]) +-AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) +-AC_LANG_POP([Fortran]) +-]) ++AC_DEFUN([AX_FCFLAGS_WARN_ALL], [dnl ++ AC_LANG_PUSH([Fortran]) ++ AX_FLAGS_WARN_ALL([$1], [$2], [$3], [$4]) ++ AC_LANG_POP([Fortran]) ++])dnl +diff --git a/vendor/libffi-sys/libffi/m4/ax_compiler_vendor.m4 b/vendor/libffi-sys/libffi/m4/ax_compiler_vendor.m4 +index 73efdb005..039f99d2b 100644 +--- a/vendor/libffi-sys/libffi/m4/ax_compiler_vendor.m4 ++++ b/vendor/libffi-sys/libffi/m4/ax_compiler_vendor.m4 +@@ -8,15 +8,30 @@ + # + # DESCRIPTION + # +-# Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun, +-# hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft, +-# watcom, etc. The vendor is returned in the cache variable +-# $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++. ++# Determine the vendor of the C, C++ or Fortran compiler. The vendor is ++# returned in the cache variable $ax_cv_c_compiler_vendor for C, ++# $ax_cv_cxx_compiler_vendor for C++ or $ax_cv_fc_compiler_vendor for ++# (modern) Fortran. The value is one of "intel", "ibm", "pathscale", ++# "clang" (LLVM), "cray", "fujitsu", "sdcc", "sx", "nvhpc" (NVIDIA HPC ++# Compiler), "portland" (PGI), "gnu" (GCC), "sun" (Oracle Developer ++# Studio), "hp", "dec", "borland", "comeau", "kai", "lcc", "sgi", ++# "microsoft", "metrowerks", "watcom", "tcc" (Tiny CC) or "unknown" (if ++# the compiler cannot be determined). ++# ++# To check for a Fortran compiler, you must first call AC_FC_PP_SRCEXT ++# with an appropriate preprocessor-enabled extension. For example: ++# ++# AC_LANG_PUSH([Fortran]) ++# AC_PROG_FC ++# AC_FC_PP_SRCEXT([F]) ++# AX_COMPILER_VENDOR ++# AC_LANG_POP([Fortran]) + # + # LICENSE + # + # Copyright (c) 2008 Steven G. Johnson + # Copyright (c) 2008 Matteo Frigo ++# Copyright (c) 2018-19 John Zaitseff + # + # This program is free software: you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by the +@@ -44,45 +59,61 @@ + # modified version of the Autoconf Macro, you may extend this special + # exception to the GPL to apply to your modified version as well. + +-#serial 17 ++#serial 32 ++ ++AC_DEFUN([AX_COMPILER_VENDOR], [dnl ++ AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, [dnl ++ dnl If you modify this list of vendors, please add similar support ++ dnl to ax_compiler_version.m4 if at all possible. ++ dnl ++ dnl Note: Do NOT check for GCC first since some other compilers ++ dnl define __GNUC__ to remain compatible with it. Compilers that ++ dnl are very slow to start (such as Intel) are listed first. ++ ++ vendors=" ++ intel: __ICC,__ECC,__INTEL_COMPILER ++ ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__,__ibmxl__ ++ pathscale: __PATHCC__,__PATHSCALE__ ++ clang: __clang__ ++ cray: _CRAYC ++ fujitsu: __FUJITSU ++ sdcc: SDCC,__SDCC ++ sx: _SX ++ nvhpc: __NVCOMPILER ++ portland: __PGI ++ gnu: __GNUC__ ++ sun: __SUNPRO_C,__SUNPRO_CC,__SUNPRO_F90,__SUNPRO_F95 ++ hp: __HP_cc,__HP_aCC ++ dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER ++ borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ ++ comeau: __COMO__ ++ kai: __KCC ++ lcc: __LCC__ ++ sgi: __sgi,sgi ++ microsoft: _MSC_VER ++ metrowerks: __MWERKS__ ++ watcom: __WATCOMC__ ++ tcc: __TINYC__ ++ unknown: UNKNOWN ++ " ++ for ventest in $vendors; do ++ case $ventest in ++ *:) ++ vendor=$ventest ++ continue ++ ;; ++ *) ++ vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ++ ;; ++ esac ++ ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ ++#if !($vencpp) ++ thisisanerror; ++#endif ++ ]])], [break]) ++ done + +-AC_DEFUN([AX_COMPILER_VENDOR], +-[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, +- dnl Please add if possible support to ax_compiler_version.m4 +- [# note: don't check for gcc first since some other compilers define __GNUC__ +- vendors="intel: __ICC,__ECC,__INTEL_COMPILER +- ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ +- pathscale: __PATHCC__,__PATHSCALE__ +- clang: __clang__ +- cray: _CRAYC +- fujitsu: __FUJITSU +- sdcc: SDCC, __SDCC +- gnu: __GNUC__ +- sun: __SUNPRO_C,__SUNPRO_CC +- hp: __HP_cc,__HP_aCC +- dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER +- borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ +- comeau: __COMO__ +- kai: __KCC +- lcc: __LCC__ +- sgi: __sgi,sgi +- microsoft: _MSC_VER +- metrowerks: __MWERKS__ +- watcom: __WATCOMC__ +- portland: __PGI +- tcc: __TINYC__ +- unknown: UNKNOWN" +- for ventest in $vendors; do +- case $ventest in +- *:) vendor=$ventest; continue ;; +- *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; +- esac +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[ +- #if !($vencpp) +- thisisanerror; +- #endif +- ])], [break]) +- done +- ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1` +- ]) +-]) ++ ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1` ++ ]) ++])dnl +diff --git a/vendor/libffi-sys/libffi/m4/ax_append_flag.m4 b/vendor/libffi-sys/libffi/m4/ax_prepend_flag.m4 +similarity index 74% +rename from vendor/libffi-sys/libffi/m4/ax_append_flag.m4 +rename to vendor/libffi-sys/libffi/m4/ax_prepend_flag.m4 +index dd6d8b614..adac8c5ac 100644 +--- a/vendor/libffi-sys/libffi/m4/ax_append_flag.m4 ++++ b/vendor/libffi-sys/libffi/m4/ax_prepend_flag.m4 +@@ -1,36 +1,37 @@ + # =========================================================================== +-# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html ++# https://www.gnu.org/software/autoconf-archive/ax_prepend_flag.html + # =========================================================================== + # + # SYNOPSIS + # +-# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) ++# AX_PREPEND_FLAG(FLAG, [FLAGS-VARIABLE]) + # + # DESCRIPTION + # +-# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space +-# added in between. ++# FLAG is added to the front of the FLAGS-VARIABLE shell variable, with a ++# space added in between. + # + # If FLAGS-VARIABLE is not specified, the current language's flags (e.g. + # CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains + # FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly + # FLAG. + # +-# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. ++# NOTE: Implementation based on AX_APPEND_FLAG. + # + # LICENSE + # + # Copyright (c) 2008 Guido U. Draheim + # Copyright (c) 2011 Maarten Bosmans ++# Copyright (c) 2018 John Zaitseff + # + # Copying and distribution of this file, with or without modification, are + # permitted in any medium without royalty provided the copyright notice + # and this notice are preserved. This file is offered as-is, without any + # warranty. + +-#serial 8 ++#serial 2 + +-AC_DEFUN([AX_APPEND_FLAG], ++AC_DEFUN([AX_PREPEND_FLAG], + [dnl + AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF + AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])]) +@@ -38,7 +39,7 @@ AS_VAR_SET_IF(FLAGS,[ + AS_CASE([" AS_VAR_GET(FLAGS) "], + [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])], + [ +- AS_VAR_APPEND(FLAGS,[" $1"]) ++ FLAGS="$1 $FLAGS" + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) + ], +@@ -47,4 +48,4 @@ AS_VAR_SET_IF(FLAGS,[ + AC_RUN_LOG([: FLAGS="$FLAGS"]) + ]) + AS_VAR_POPDEF([FLAGS])dnl +-])dnl AX_APPEND_FLAG ++])dnl AX_PREPEND_FLAG +diff --git a/vendor/libffi-sys/libffi/m4/libtool.m4 b/vendor/libffi-sys/libffi/m4/libtool.m4 +index a644432f4..e3adedad6 100644 +--- a/vendor/libffi-sys/libffi/m4/libtool.m4 ++++ b/vendor/libffi-sys/libffi/m4/libtool.m4 +@@ -1,6 +1,7 @@ + # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + # +-# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. ++# Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software ++# Foundation, Inc. + # Written by Gordon Matzigkeit, 1996 + # + # This file is free software; the Free Software Foundation gives +@@ -31,7 +32,7 @@ m4_define([_LT_COPYING], [dnl + # along with this program. If not, see . + ]) + +-# serial 58 LT_INIT ++# serial 59 LT_INIT + + + # LT_PREREQ(VERSION) +@@ -181,6 +182,7 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl + m4_require([_LT_CHECK_SHELL_FEATURES])dnl + m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl + m4_require([_LT_CMD_RELOAD])dnl ++m4_require([_LT_DECL_FILECMD])dnl + m4_require([_LT_CHECK_MAGIC_METHOD])dnl + m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl + m4_require([_LT_CMD_OLD_ARCHIVE])dnl +@@ -219,8 +221,8 @@ esac + ofile=libtool + can_build_shared=yes + +-# All known linkers require a '.a' archive for static linking (except MSVC, +-# which needs '.lib'). ++# All known linkers require a '.a' archive for static linking (except MSVC and ++# ICC, which need '.lib'). + libext=a + + with_gnu_ld=$lt_cv_prog_gnu_ld +@@ -778,7 +780,7 @@ _LT_EOF + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? +- sed '$q' "$ltmain" >> "$cfgfile" \ ++ $SED '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || +@@ -1042,8 +1044,8 @@ int forced_loaded() { return 2;} + _LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD +- echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD +- $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD ++ echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD ++ $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +@@ -1067,17 +1069,12 @@ _LT_EOF + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; +- darwin*) # darwin 5.x on +- # if running on 10.5 or later, the deployment target defaults +- # to the OS version, if on x86, and 10.4, the deployment +- # target defaults to 10.4. Don't you love it? +- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in +- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) +- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; +- 10.[[012]][[,.]]*) +- _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; +- 10.*) +- _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; ++ darwin*) ++ case $MACOSX_DEPLOYMENT_TARGET,$host in ++ 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) ++ _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; ++ *) ++ _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac +@@ -1126,12 +1123,12 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" +- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" +- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" ++ _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" ++ _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], + [ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" +- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" ++ _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + ],[]) + else +@@ -1245,7 +1242,8 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) + # _LT_WITH_SYSROOT + # ---------------- + AC_DEFUN([_LT_WITH_SYSROOT], +-[AC_MSG_CHECKING([for sysroot]) ++[m4_require([_LT_DECL_SED])dnl ++AC_MSG_CHECKING([for sysroot]) + AC_ARG_WITH([sysroot], + [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot +@@ -1262,7 +1260,7 @@ case $with_sysroot in #( + fi + ;; #( + /*) +- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ++ lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( +@@ -1292,7 +1290,7 @@ ia64-*-hpux*) + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; +@@ -1309,7 +1307,7 @@ ia64-*-hpux*) + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; +@@ -1321,7 +1319,7 @@ ia64-*-hpux*) + ;; + esac + else +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; +@@ -1343,7 +1341,7 @@ mips64*-*linux*) + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; +@@ -1351,7 +1349,7 @@ mips64*-*linux*) + emul="${emul}64" + ;; + esac +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; +@@ -1359,7 +1357,7 @@ mips64*-*linux*) + emul="${emul}ltsmip" + ;; + esac +- case `/usr/bin/file conftest.$ac_objext` in ++ case `$FILECMD conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; +@@ -1379,14 +1377,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in ++ case `$FILECMD conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) +- case `/usr/bin/file conftest.o` in ++ case `$FILECMD conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; +@@ -1454,7 +1452,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in ++ case `$FILECMD conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) +@@ -1493,9 +1491,22 @@ need_locks=$enable_libtool_lock + m4_defun([_LT_PROG_AR], + [AC_CHECK_TOOLS(AR, [ar], false) + : ${AR=ar} +-: ${AR_FLAGS=cru} + _LT_DECL([], [AR], [1], [The archiver]) +-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) ++ ++# Use ARFLAGS variable as AR's operation code to sync the variable naming with ++# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have ++# higher priority because thats what people were doing historically (setting ++# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS ++# variable obsoleted/removed. ++ ++test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} ++lt_ar_flags=$AR_FLAGS ++_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) ++ ++# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override ++# by AR_FLAGS because that was never working and AR_FLAGS is about to die. ++_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], ++ [Flags to create an archive]) + + AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no +@@ -1714,7 +1725,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + lt_cv_sys_max_cmd_len=8192; + ;; + +- bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) ++ bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +@@ -1757,7 +1768,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then +- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` ++ lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi +@@ -2207,26 +2218,35 @@ m4_defun([_LT_CMD_STRIPLIB], + striplib= + old_striplib= + AC_MSG_CHECKING([whether stripping libraries is possible]) +-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- AC_MSG_RESULT([yes]) ++if test -z "$STRIP"; then ++ AC_MSG_RESULT([no]) + else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP"; then ++ if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then ++ old_striplib="$STRIP --strip-debug" ++ striplib="$STRIP --strip-unneeded" ++ AC_MSG_RESULT([yes]) ++ else ++ case $host_os in ++ darwin*) ++ # FIXME - insert some real tests, host_os isn't really good enough + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) +- else ++ ;; ++ freebsd*) ++ if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then ++ old_striplib="$STRIP --strip-debug" ++ striplib="$STRIP --strip-unneeded" ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ fi ++ ;; ++ *) + AC_MSG_RESULT([no]) +- fi +- ;; +- *) +- AC_MSG_RESULT([no]) +- ;; +- esac ++ ;; ++ esac ++ fi + fi + _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) + _LT_DECL([], [striplib], [1]) +@@ -2549,7 +2569,7 @@ cygwin* | mingw* | pw32* | cegcc*) + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ++ soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; +@@ -2559,14 +2579,14 @@ m4_if([$1], [],[ + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ++ library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + +- *,cl*) +- # Native MSVC ++ *,cl* | *,icl*) ++ # Native MSVC or ICC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' +@@ -2585,7 +2605,7 @@ m4_if([$1], [],[ + done + IFS=$lt_save_ifs + # Convert to MSYS style. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ++ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form +@@ -2622,7 +2642,7 @@ m4_if([$1], [],[ + ;; + + *) +- # Assume MSVC wrapper ++ # Assume MSVC and ICC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; +@@ -2655,7 +2675,7 @@ dgux*) + shlibpath_var=LD_LIBRARY_PATH + ;; + +-freebsd* | dragonfly*) ++freebsd* | dragonfly* | midnightbsd*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then +@@ -3457,7 +3477,7 @@ beos*) + + bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' +- lt_cv_file_magic_cmd='/usr/bin/file -L' ++ lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +@@ -3491,14 +3511,14 @@ darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* | dragonfly*) ++freebsd* | dragonfly* | midnightbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac +@@ -3512,7 +3532,7 @@ haiku*) + ;; + + hpux10.20* | hpux11*) +- lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_cmd=$FILECMD + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' +@@ -3559,7 +3579,7 @@ netbsd*) + + newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +@@ -3686,13 +3706,13 @@ else + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac +- case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in ++ case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) +- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in ++ case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 +@@ -3718,7 +3738,7 @@ else + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) +- case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in ++ case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; +@@ -3958,7 +3978,7 @@ esac + + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. +- lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" ++ lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" +@@ -3976,20 +3996,20 @@ fi + # Transform an extracted symbol line into a proper C declaration. + # Some systems (esp. on ia64) link data and code symbols differently, + # so use this general approach. +-lt_cv_sys_global_symbol_to_cdecl="sed -n"\ ++lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ + $lt_cdecl_hook\ + " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ + " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + + # Transform an extracted symbol line into symbol name and symbol address +-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ ++lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ + $lt_c_name_hook\ + " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ + " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + + # Transform an extracted symbol line into symbol name with lib prefix and + # symbol address. +-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ + $lt_c_name_lib_hook\ + " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ + " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +@@ -4013,7 +4033,7 @@ for ac_symprfx in "" "_"; do + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. +- # Also find C++ and __fastcall symbols from MSVC++, ++ # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ + " {last_section=section; section=\$ 3};"\ +@@ -4031,9 +4051,9 @@ for ac_symprfx in "" "_"; do + " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ + " ' prfx=^$ac_symprfx]" + else +- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi +- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" ++ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no +@@ -4320,7 +4340,7 @@ m4_if([$1], [CXX], [ + ;; + esac + ;; +- freebsd* | dragonfly*) ++ freebsd* | dragonfly* | midnightbsd*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) +@@ -4403,7 +4423,7 @@ m4_if([$1], [CXX], [ + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) +- case `$CC -V 2>&1 | sed 5q` in ++ case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +@@ -4739,7 +4759,7 @@ m4_if([$1], [CXX], [ + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) +- case `$CC -V 2>&1 | sed 5q` in ++ case `$CC -V 2>&1 | $SED 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +@@ -4922,7 +4942,7 @@ m4_if([$1], [CXX], [ + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else +- _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' ++ _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) +@@ -4930,7 +4950,7 @@ m4_if([$1], [CXX], [ + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in +- cl*) ++ cl* | icl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) +@@ -4987,15 +5007,15 @@ dnl Note also adjust exclude_expsyms for C++ above. + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. ++ # Microsoft Visual C++ or Intel C++ Compiler. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) +- # we just hope/assume this is gcc and not c89 (= MSVC++) ++ # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) +@@ -5047,7 +5067,7 @@ dnl Note also adjust exclude_expsyms for C++ above. + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no +- case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in ++ case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +@@ -5159,6 +5179,7 @@ _LT_EOF + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + interix[[3-9]]*) +@@ -5173,7 +5194,7 @@ _LT_EOF + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) +@@ -5216,7 +5237,7 @@ _LT_EOF + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac +- case `$CC -V 2>&1 | sed 5q` in ++ case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes +@@ -5228,7 +5249,7 @@ _LT_EOF + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi +@@ -5244,7 +5265,7 @@ _LT_EOF + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi +@@ -5376,7 +5397,7 @@ _LT_EOF + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else +- _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' ++ _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + +@@ -5559,12 +5580,12 @@ _LT_EOF + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. ++ # Microsoft Visual C++ or Intel C++ Compiler. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in +- cl*) +- # Native MSVC ++ cl* | icl*) ++ # Native MSVC or ICC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes +@@ -5605,7 +5626,7 @@ _LT_EOF + fi' + ;; + *) +- # Assume MSVC wrapper ++ # Assume MSVC and ICC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. +@@ -5653,7 +5674,7 @@ _LT_EOF + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | dragonfly*) ++ freebsd* | dragonfly* | midnightbsd*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes +@@ -5864,6 +5885,7 @@ _LT_EOF + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + osf3*) +@@ -6634,8 +6656,8 @@ if test yes != "$_lt_caught_CXX_error"; then + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in +- ,cl* | no,cl*) +- # Native MSVC ++ ,cl* | no,cl* | ,icl* | no,icl*) ++ # Native MSVC or ICC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +@@ -6733,6 +6755,7 @@ if test yes != "$_lt_caught_CXX_error"; then + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ++ _LT_TAGVAR(file_list_spec, $1)='@' + ;; + + dgux*) +@@ -6763,7 +6786,7 @@ if test yes != "$_lt_caught_CXX_error"; then + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + +- freebsd* | dragonfly*) ++ freebsd* | dragonfly* | midnightbsd*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes +@@ -6900,7 +6923,7 @@ if test yes != "$_lt_caught_CXX_error"; then + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in +@@ -7040,13 +7063,13 @@ if test yes != "$_lt_caught_CXX_error"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) +- case `$CC -V 2>&1 | sed 5q` in ++ case `$CC -V 2>&1 | $SED 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' +@@ -8192,6 +8215,14 @@ _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) + AC_SUBST([DLLTOOL]) + ]) + ++# _LT_DECL_FILECMD ++# ---------------- ++# Check for a file(cmd) program that can be used to detect file type and magic ++m4_defun([_LT_DECL_FILECMD], ++[AC_CHECK_TOOL([FILECMD], [file], [:]) ++_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) ++])# _LD_DECL_FILECMD ++ + # _LT_DECL_SED + # ------------ + # Check for a fully-functional sed program, that truncates +diff --git a/vendor/libffi-sys/libffi/m4/ltoptions.m4 b/vendor/libffi-sys/libffi/m4/ltoptions.m4 +index 94b082976..b0b5e9c21 100644 +--- a/vendor/libffi-sys/libffi/m4/ltoptions.m4 ++++ b/vendor/libffi-sys/libffi/m4/ltoptions.m4 +@@ -1,7 +1,7 @@ + # Helper functions for option handling. -*- Autoconf -*- + # +-# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +-# Foundation, Inc. ++# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free ++# Software Foundation, Inc. + # Written by Gary V. Vaughan, 2004 + # + # This file is free software; the Free Software Foundation gives +diff --git a/vendor/libffi-sys/libffi/m4/ltsugar.m4 b/vendor/libffi-sys/libffi/m4/ltsugar.m4 +index 48bc9344a..902508bd9 100644 +--- a/vendor/libffi-sys/libffi/m4/ltsugar.m4 ++++ b/vendor/libffi-sys/libffi/m4/ltsugar.m4 +@@ -1,6 +1,6 @@ + # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- + # +-# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software ++# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software + # Foundation, Inc. + # Written by Gary V. Vaughan, 2004 + # +diff --git a/vendor/libffi-sys/libffi/m4/ltversion.m4 b/vendor/libffi-sys/libffi/m4/ltversion.m4 +index fa04b52a3..b155d0ace 100644 +--- a/vendor/libffi-sys/libffi/m4/ltversion.m4 ++++ b/vendor/libffi-sys/libffi/m4/ltversion.m4 +@@ -1,6 +1,7 @@ + # ltversion.m4 -- version numbers -*- Autoconf -*- + # +-# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. ++# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, ++# Inc. + # Written by Scott James Remnant, 2004 + # + # This file is free software; the Free Software Foundation gives +@@ -9,15 +10,15 @@ + + # @configure_input@ + +-# serial 4179 ltversion.m4 ++# serial 4245 ltversion.m4 + # This file is part of GNU Libtool + +-m4_define([LT_PACKAGE_VERSION], [2.4.6]) +-m4_define([LT_PACKAGE_REVISION], [2.4.6]) ++m4_define([LT_PACKAGE_VERSION], [2.4.7]) ++m4_define([LT_PACKAGE_REVISION], [2.4.7]) + + AC_DEFUN([LTVERSION_VERSION], +-[macro_version='2.4.6' +-macro_revision='2.4.6' ++[macro_version='2.4.7' ++macro_revision='2.4.7' + _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) + _LT_DECL(, macro_revision, 0) + ]) +diff --git a/vendor/libffi-sys/libffi/m4/lt~obsolete.m4 b/vendor/libffi-sys/libffi/m4/lt~obsolete.m4 +index c6b26f88f..0f7a8759d 100644 +--- a/vendor/libffi-sys/libffi/m4/lt~obsolete.m4 ++++ b/vendor/libffi-sys/libffi/m4/lt~obsolete.m4 +@@ -1,7 +1,7 @@ + # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- + # +-# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +-# Foundation, Inc. ++# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free ++# Software Foundation, Inc. + # Written by Scott James Remnant, 2004. + # + # This file is free software; the Free Software Foundation gives +diff --git a/vendor/libffi-sys/libffi/man/Makefile.in b/vendor/libffi-sys/libffi/man/Makefile.in +index 808f3e3f0..830c84280 100644 +--- a/vendor/libffi-sys/libffi/man/Makefile.in ++++ b/vendor/libffi-sys/libffi/man/Makefile.in +@@ -1,7 +1,7 @@ +-# Makefile.in generated by automake 1.16.2 from Makefile.am. ++# Makefile.in generated by automake 1.16.5 from Makefile.am. + # @configure_input@ + +-# Copyright (C) 1994-2020 Free Software Foundation, Inc. ++# Copyright (C) 1994-2021 Free Software Foundation, Inc. + + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -91,7 +91,6 @@ target_triplet = @target@ + subdir = man + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ +- $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_cc_maxopt.m4 \ + $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ +@@ -100,6 +99,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ + $(top_srcdir)/m4/ax_enable_builddir.m4 \ + $(top_srcdir)/m4/ax_gcc_archflag.m4 \ + $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ ++ $(top_srcdir)/m4/ax_prepend_flag.m4 \ + $(top_srcdir)/m4/ax_require_defined.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ +@@ -182,8 +182,9 @@ CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ + CFLAGS = @CFLAGS@ +-CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ ++CSCOPE = @CSCOPE@ ++CTAGS = @CTAGS@ + CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXDEPMODE = @CXXDEPMODE@ +@@ -198,9 +199,11 @@ ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ ++ETAGS = @ETAGS@ + EXEEXT = @EXEEXT@ + FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ + FGREP = @FGREP@ ++FILECMD = @FILECMD@ + GREP = @GREP@ + HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ + HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ +@@ -306,6 +309,7 @@ target_alias = @target_alias@ + target_cpu = @target_cpu@ + target_os = @target_os@ + target_vendor = @target_vendor@ ++tmake_file = @tmake_file@ + toolexecdir = @toolexecdir@ + toolexeclibdir = @toolexeclibdir@ + top_build_prefix = @top_build_prefix@ +@@ -401,7 +405,6 @@ ctags CTAGS: + + cscope cscopelist: + +- + distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +diff --git a/vendor/libffi-sys/libffi/missing b/vendor/libffi-sys/libffi/missing +index 8d0eaad25..1fe1611f1 100755 +--- a/vendor/libffi-sys/libffi/missing ++++ b/vendor/libffi-sys/libffi/missing +@@ -3,7 +3,7 @@ + + scriptversion=2018-03-07.03; # UTC + +-# Copyright (C) 1996-2020 Free Software Foundation, Inc. ++# Copyright (C) 1996-2021 Free Software Foundation, Inc. + # Originally written by Fran,cois Pinard , 1996. + + # This program is free software; you can redistribute it and/or modify +diff --git a/vendor/libffi-sys/libffi/msvc_build/aarch64/aarch64_include/ffi.h b/vendor/libffi-sys/libffi/msvc_build/aarch64/aarch64_include/ffi.h +index 02f26a2f0..8aed52555 100644 +--- a/vendor/libffi-sys/libffi/msvc_build/aarch64/aarch64_include/ffi.h ++++ b/vendor/libffi-sys/libffi/msvc_build/aarch64/aarch64_include/ffi.h +@@ -363,7 +363,7 @@ typedef struct { + + /* If this is enabled, then a raw closure has the same layout + as a regular closure. We use this to install an intermediate +- handler to do the transaltion, void** -> ffi_raw*. */ ++ handler to do the translation, void** -> ffi_raw*. */ + + void (*translate_args)(ffi_cif*,void*,void**,void*); + void *this_closure; +diff --git a/vendor/libffi-sys/libffi/src/aarch64/ffi.c b/vendor/libffi-sys/libffi/src/aarch64/ffi.c +index 5c85fcd0e..6544ac0fe 100644 +--- a/vendor/libffi-sys/libffi/src/aarch64/ffi.c ++++ b/vendor/libffi-sys/libffi/src/aarch64/ffi.c +@@ -248,13 +248,18 @@ is_vfp_type (const ffi_type *ty) + state. + + The terse state variable names match the names used in the AARCH64 +- PCS. */ ++ PCS. ++ ++ The struct area is allocated downwards from the top of the argument ++ area. It is used to hold copies of structures passed by value that are ++ bigger than 16 bytes. */ + + struct arg_state + { + unsigned ngrn; /* Next general-purpose register number. */ + unsigned nsrn; /* Next vector register number. */ + size_t nsaa; /* Next stack offset. */ ++ size_t next_struct_area; /* Place to allocate big structs. */ + + #if defined (__APPLE__) + unsigned allocating_variadic; +@@ -263,11 +268,12 @@ struct arg_state + + /* Initialize a procedure call argument marshalling state. */ + static void +-arg_init (struct arg_state *state) ++arg_init (struct arg_state *state, size_t size) + { + state->ngrn = 0; + state->nsrn = 0; + state->nsaa = 0; ++ state->next_struct_area = size; + #if defined (__APPLE__) + state->allocating_variadic = 0; + #endif +@@ -289,37 +295,83 @@ allocate_to_stack (struct arg_state *state, void *stack, + if (alignment < 8) + alignment = 8; + #endif +- ++ + nsaa = FFI_ALIGN (nsaa, alignment); + state->nsaa = nsaa + size; + + return (char *)stack + nsaa; + } + ++/* Allocate and copy a structure that is passed by value on the stack and ++ return a pointer to it. */ ++static void * ++allocate_and_copy_struct_to_stack (struct arg_state *state, void *stack, ++ size_t alignment, size_t size, void *value) ++{ ++ size_t dest = state->next_struct_area - size; ++ ++ /* Round down to the natural alignment of the value. */ ++ dest = FFI_ALIGN_DOWN (dest, alignment); ++ state->next_struct_area = dest; ++ ++ return memcpy ((char *) stack + dest, value, size); ++} ++ + static ffi_arg + extend_integer_type (void *source, int type) + { + switch (type) + { + case FFI_TYPE_UINT8: +- return *(UINT8 *) source; ++ { ++ UINT8 u8; ++ memcpy (&u8, source, sizeof (u8)); ++ return u8; ++ } + case FFI_TYPE_SINT8: +- return *(SINT8 *) source; ++ { ++ SINT8 s8; ++ memcpy (&s8, source, sizeof (s8)); ++ return s8; ++ } + case FFI_TYPE_UINT16: +- return *(UINT16 *) source; ++ { ++ UINT16 u16; ++ memcpy (&u16, source, sizeof (u16)); ++ return u16; ++ } + case FFI_TYPE_SINT16: +- return *(SINT16 *) source; ++ { ++ SINT16 s16; ++ memcpy (&s16, source, sizeof (s16)); ++ return s16; ++ } + case FFI_TYPE_UINT32: +- return *(UINT32 *) source; ++ { ++ UINT32 u32; ++ memcpy (&u32, source, sizeof (u32)); ++ return u32; ++ } + case FFI_TYPE_INT: + case FFI_TYPE_SINT32: +- return *(SINT32 *) source; ++ { ++ SINT32 s32; ++ memcpy (&s32, source, sizeof (s32)); ++ return s32; ++ } + case FFI_TYPE_UINT64: + case FFI_TYPE_SINT64: +- return *(UINT64 *) source; +- break; ++ { ++ UINT64 u64; ++ memcpy (&u64, source, sizeof (u64)); ++ return u64; ++ } + case FFI_TYPE_POINTER: +- return *(uintptr_t *) source; ++ { ++ uintptr_t uptr; ++ memcpy (&uptr, source, sizeof (uptr)); ++ return uptr; ++ } + default: + abort(); + } +@@ -624,13 +676,14 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *orig_rvalue, + frame = (void*)((uintptr_t)stack + (uintptr_t)stack_bytes); + rvalue = (rsize ? (void*)((uintptr_t)frame + 40) : orig_rvalue); + +- arg_init (&state); ++ arg_init (&state, stack_bytes); + for (i = 0, nargs = cif->nargs; i < nargs; i++) + { + ffi_type *ty = cif->arg_types[i]; + size_t s = ty->size; + void *a = avalue[i]; + int h, t; ++ void *dest; + + t = ty->type; + switch (t) +@@ -678,8 +731,6 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *orig_rvalue, + case FFI_TYPE_STRUCT: + case FFI_TYPE_COMPLEX: + { +- void *dest; +- + h = is_vfp_type (ty); + if (h) + { +@@ -712,9 +763,12 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *orig_rvalue, + else if (s > 16) + { + /* If the argument is a composite type that is larger than 16 +- bytes, then the argument has been copied to memory, and ++ bytes, then the argument is copied to memory, and + the argument is replaced by a pointer to the copy. */ +- a = &avalue[i]; ++ dest = allocate_and_copy_struct_to_stack (&state, stack, ++ ty->alignment, s, ++ avalue[i]); ++ a = &dest; + t = FFI_TYPE_POINTER; + s = sizeof (void *); + goto do_pointer; +@@ -802,21 +856,21 @@ ffi_prep_closure_loc (ffi_closure *closure, + return FFI_BAD_ABI; + + void (*start)(void); +- ++ + if (cif->flags & AARCH64_FLAG_ARG_V) + start = ffi_closure_SYSV_V; + else + start = ffi_closure_SYSV; + + #if FFI_EXEC_TRAMPOLINE_TABLE +-#ifdef __MACH__ +-#ifdef HAVE_PTRAUTH ++# ifdef __MACH__ ++# ifdef HAVE_PTRAUTH + codeloc = ptrauth_auth_data(codeloc, ptrauth_key_function_pointer, 0); +-#endif ++# endif + void **config = (void **)((uint8_t *)codeloc - PAGE_MAX_SIZE); + config[0] = closure; + config[1] = start; +-#endif ++# endif + #else + static const unsigned char trampoline[16] = { + 0x90, 0x00, 0x00, 0x58, /* ldr x16, tramp+16 */ +@@ -825,7 +879,7 @@ ffi_prep_closure_loc (ffi_closure *closure, + }; + char *tramp = closure->tramp; + +-#if defined(FFI_EXEC_STATIC_TRAMP) ++# if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ +@@ -836,25 +890,27 @@ ffi_prep_closure_loc (ffi_closure *closure, + ffi_tramp_set_parms (closure->ftramp, start, closure); + goto out; + } +-#endif ++# endif + + /* Initialize the dynamic trampoline. */ + memcpy (tramp, trampoline, sizeof(trampoline)); +- ++ + *(UINT64 *)(tramp + 16) = (uintptr_t)start; + + ffi_clear_cache(tramp, tramp + FFI_TRAMPOLINE_SIZE); + + /* Also flush the cache for code mapping. */ +-#ifdef _WIN32 ++# ifdef _WIN32 + // Not using dlmalloc.c for Windows ARM64 builds + // so calling ffi_data_to_code_pointer() isn't necessary + unsigned char *tramp_code = tramp; +- #else ++# else + unsigned char *tramp_code = ffi_data_to_code_pointer (tramp); +- #endif ++# endif + ffi_clear_cache (tramp_code, tramp_code + FFI_TRAMPOLINE_SIZE); ++# if defined(FFI_EXEC_STATIC_TRAMP) + out: ++# endif + #endif + + closure->cif = cif; +@@ -917,7 +973,7 @@ ffi_closure_SYSV_inner (ffi_cif *cif, + int i, h, nargs, flags, isvariadic = 0; + struct arg_state state; + +- arg_init (&state); ++ arg_init (&state, cif->bytes); + + flags = cif->flags; + if (flags & AARCH64_FLAG_VARARG) +@@ -966,7 +1022,7 @@ ffi_closure_SYSV_inner (ffi_cif *cif, + { + void *reg = &context->x[state.ngrn]; + state.ngrn += (unsigned int)n; +- ++ + /* Eeek! We need a pointer to the structure, however the + homogeneous float elements are being passed in individual + registers, therefore for float and double the structure +@@ -1004,9 +1060,18 @@ ffi_closure_SYSV_inner (ffi_cif *cif, + { + /* Replace Composite type of size greater than 16 with a + pointer. */ ++#ifdef __ILP32__ ++ UINT64 avalue_tmp; ++ memcpy (&avalue_tmp, ++ allocate_int_to_reg_or_stack (context, &state, ++ stack, sizeof (void *)), ++ sizeof (UINT64)); ++ avalue[i] = (void *)(UINT32)avalue_tmp; ++#else + avalue[i] = *(void **) + allocate_int_to_reg_or_stack (context, &state, stack, + sizeof (void *)); ++#endif + } + else + { +diff --git a/vendor/libffi-sys/libffi/src/arm/ffi.c b/vendor/libffi-sys/libffi/src/arm/ffi.c +index 593ab4d48..cfd3e9d19 100644 +--- a/vendor/libffi-sys/libffi/src/arm/ffi.c ++++ b/vendor/libffi-sys/libffi/src/arm/ffi.c +@@ -64,6 +64,10 @@ extern unsigned char ffi_arm_trampoline[12] FFI_HIDDEN; + #include + #endif + ++#if defined(__QNX__) ++#include ++#endif ++ + /* Forward declares. */ + static int vfp_type_p (const ffi_type *); + static void layout_vfp_args (ffi_cif *); +@@ -622,7 +626,7 @@ ffi_prep_closure_loc (ffi_closure * closure, + config[1] = closure_func; + #else + +-#if defined(FFI_EXEC_STATIC_TRAMP) ++# if defined(FFI_EXEC_STATIC_TRAMP) + if (ffi_tramp_is_present(closure)) + { + /* Initialize the static trampoline's parameters. */ +@@ -633,31 +637,33 @@ ffi_prep_closure_loc (ffi_closure * closure, + ffi_tramp_set_parms (closure->ftramp, closure_func, closure); + goto out; + } +-#endif ++# endif + + /* Initialize the dynamic trampoline. */ +-#ifndef _WIN32 ++# ifndef _WIN32 + memcpy(closure->tramp, ffi_arm_trampoline, 8); +-#else ++# else + // cast away function type so MSVC doesn't set the lower bit of the function pointer + memcpy(closure->tramp, (void*)((uintptr_t)ffi_arm_trampoline & 0xFFFFFFFE), FFI_TRAMPOLINE_CLOSURE_OFFSET); +-#endif ++# endif + +-#if defined (__QNX__) +- msync(closure->tramp, 8, 0x1000000); /* clear data map */ +- msync(codeloc, 8, 0x1000000); /* clear insn map */ +-#elif defined(_WIN32) ++# if defined(__QNX__) ++ msync (closure->tramp, 8, MS_INVALIDATE_ICACHE); /* clear data map */ ++ msync (codeloc, 8, MS_INVALIDATE_ICACHE); /* clear insn map */ ++# elif defined(_WIN32) + FlushInstructionCache(GetCurrentProcess(), closure->tramp, FFI_TRAMPOLINE_SIZE); +-#else ++# else + __clear_cache(closure->tramp, closure->tramp + 8); /* clear data map */ + __clear_cache(codeloc, codeloc + 8); /* clear insn map */ +-#endif +-#ifdef _WIN32 ++# endif ++# ifdef _WIN32 + *(void(**)(void))(closure->tramp + FFI_TRAMPOLINE_CLOSURE_FUNCTION) = closure_func; +-#else ++# else + *(void (**)(void))(closure->tramp + 8) = closure_func; +-#endif ++# endif ++# if defined(FFI_EXEC_STATIC_TRAMP) + out: ++# endif + #endif + + closure->cif = cif; +diff --git a/vendor/libffi-sys/libffi/src/closures.c b/vendor/libffi-sys/libffi/src/closures.c +index f7bead67b..9aafbec4b 100644 +--- a/vendor/libffi-sys/libffi/src/closures.c ++++ b/vendor/libffi-sys/libffi/src/closures.c +@@ -1,5 +1,5 @@ + /* ----------------------------------------------------------------------- +- closures.c - Copyright (c) 2019 Anthony Green ++ closures.c - Copyright (c) 2019, 2022 Anthony Green + Copyright (c) 2007, 2009, 2010 Red Hat, Inc. + Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc + Copyright (c) 2011 Plausible Labs Cooperative, Inc. +@@ -27,7 +27,7 @@ + DEALINGS IN THE SOFTWARE. + ----------------------------------------------------------------------- */ + +-#if defined __linux__ && !defined _GNU_SOURCE ++#if (defined __linux__ || defined __CYGWIN__) && !defined _GNU_SOURCE + #define _GNU_SOURCE 1 + #endif + +@@ -133,22 +133,26 @@ ffi_tramp_is_present (__attribute__((unused)) void *ptr) + # define FFI_MMAP_EXEC_WRIT 1 + # define HAVE_MNTENT 1 + # endif +-# if defined(_WIN32) || defined(__OS2__) +-/* Windows systems may have Data Execution Protection (DEP) enabled, ++# if defined(__CYGWIN__) || defined(_WIN32) || defined(__OS2__) ++/* Windows systems may have Data Execution Protection (DEP) enabled, + which requires the use of VirtualMalloc/VirtualFree to alloc/free + executable memory. */ + # define FFI_MMAP_EXEC_WRIT 1 + # endif + #endif + +-#if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX +-# if defined(__linux__) && !defined(__ANDROID__) ++#if FFI_MMAP_EXEC_WRIT && defined(__linux__) && !defined(__ANDROID__) ++# if !defined FFI_MMAP_EXEC_SELINUX + /* When defined to 1 check for SELinux and if SELinux is active, + don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that + might cause audit messages. */ + # define FFI_MMAP_EXEC_SELINUX 1 +-# endif +-#endif ++# endif /* !defined FFI_MMAP_EXEC_SELINUX */ ++# if !defined FFI_MMAP_PAX ++/* Also check for PaX MPROTECT */ ++# define FFI_MMAP_PAX 1 ++# endif /* !defined FFI_MMAP_PAX */ ++#endif /* FFI_MMAP_EXEC_WRIT && defined(__linux__) && !defined(__ANDROID__) */ + + #if FFI_CLOSURES + +@@ -230,12 +234,24 @@ ffi_trampoline_table_alloc (void) + kt = vm_remap (mach_task_self (), &trampoline_page, PAGE_MAX_SIZE, 0x0, + VM_FLAGS_OVERWRITE, mach_task_self (), trampoline_page_template, + FALSE, &cur_prot, &max_prot, VM_INHERIT_SHARE); +- if (kt != KERN_SUCCESS || !(cur_prot & VM_PROT_EXECUTE)) ++ if (kt != KERN_SUCCESS) + { + vm_deallocate (mach_task_self (), config_page, PAGE_MAX_SIZE * 2); + return NULL; + } + ++ if (!(cur_prot & VM_PROT_EXECUTE)) ++ { ++ /* If VM_PROT_EXECUTE isn't set on the remapped trampoline page, set it */ ++ kt = vm_protect (mach_task_self (), trampoline_page, PAGE_MAX_SIZE, ++ FALSE, cur_prot | VM_PROT_EXECUTE); ++ if (kt != KERN_SUCCESS) ++ { ++ vm_deallocate (mach_task_self (), config_page, PAGE_MAX_SIZE * 2); ++ return NULL; ++ } ++ } ++ + /* We have valid trampoline and config pages */ + table = calloc (1, sizeof (ffi_trampoline_table)); + table->free_count = FFI_TRAMPOLINE_COUNT; +@@ -467,14 +483,18 @@ selinux_enabled_check (void) + + #endif /* !FFI_MMAP_EXEC_SELINUX */ + +-/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */ +-#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX ++/* On PaX enable kernels that have MPROTECT enabled we can't use PROT_EXEC. */ ++#if defined FFI_MMAP_PAX + #include + +-static int emutramp_enabled = -1; ++enum { ++ PAX_MPROTECT = (1 << 0), ++ PAX_EMUTRAMP = (1 << 1), ++}; ++static int cached_pax_flags = -1; + + static int +-emutramp_enabled_check (void) ++pax_flags_check (void) + { + char *buf = NULL; + size_t len = 0; +@@ -488,9 +508,10 @@ emutramp_enabled_check (void) + while (getline (&buf, &len, f) != -1) + if (!strncmp (buf, "PaX:", 4)) + { +- char emutramp; +- if (sscanf (buf, "%*s %*c%c", &emutramp) == 1) +- ret = (emutramp == 'E'); ++ if (NULL != strchr (buf + 4, 'M')) ++ ret |= PAX_MPROTECT; ++ if (NULL != strchr (buf + 4, 'E')) ++ ret |= PAX_EMUTRAMP; + break; + } + free (buf); +@@ -498,9 +519,13 @@ emutramp_enabled_check (void) + return ret; + } + +-#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \ +- : (emutramp_enabled = emutramp_enabled_check ())) +-#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ ++#define get_pax_flags() (cached_pax_flags >= 0 ? cached_pax_flags \ ++ : (cached_pax_flags = pax_flags_check ())) ++#define has_pax_flags(flags) ((flags) == ((flags) & get_pax_flags ())) ++#define is_mprotect_enabled() (has_pax_flags (PAX_MPROTECT)) ++#define is_emutramp_enabled() (has_pax_flags (PAX_EMUTRAMP)) ++ ++#endif /* defined FFI_MMAP_PAX */ + + #elif defined (__CYGWIN__) || defined(__INTERIX) + +@@ -511,9 +536,10 @@ emutramp_enabled_check (void) + + #endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */ + +-#ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX +-#define is_emutramp_enabled() 0 +-#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ ++#if !defined FFI_MMAP_PAX ++# define is_mprotect_enabled() 0 ++# define is_emutramp_enabled() 0 ++#endif /* !defined FFI_MMAP_PAX */ + + /* Declare all functions defined in dlmalloc.c as static. */ + static void *dlmalloc(size_t); +@@ -737,7 +763,7 @@ open_temp_exec_file_opts_next (void) + + /* Return a file descriptor of a temporary zero-sized file in a + writable and executable filesystem. */ +-static int ++int + open_temp_exec_file (void) + { + int fd; +@@ -878,13 +904,23 @@ dlmmap (void *start, size_t length, int prot, + return ptr; + } + +- if (execfd == -1 && is_emutramp_enabled ()) ++ /* -1 != execfd hints that we already decided to use dlmmap_locked ++ last time. */ ++ if (execfd == -1 && is_mprotect_enabled ()) + { +- ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); +- return ptr; ++#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX ++ if (is_emutramp_enabled ()) ++ { ++ /* emutramp requires the kernel recognizing the trampoline pattern ++ generated by ffi_prep_closure_loc; there is no way to test ++ in advance whether this will work, so this is experimental. */ ++ ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); ++ return ptr; ++ } ++#endif ++ /* fallback to dlmmap_locked. */ + } +- +- if (execfd == -1 && !is_selinux_enabled ()) ++ else if (execfd == -1 && !is_selinux_enabled ()) + { + ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset); + +@@ -897,16 +933,11 @@ dlmmap (void *start, size_t length, int prot, + MREMAP_DUP and prot at this point. */ + } + +- if (execsize == 0 || execfd == -1) +- { +- pthread_mutex_lock (&open_temp_exec_file_mutex); +- ptr = dlmmap_locked (start, length, prot, flags, offset); +- pthread_mutex_unlock (&open_temp_exec_file_mutex); +- +- return ptr; +- } ++ pthread_mutex_lock (&open_temp_exec_file_mutex); ++ ptr = dlmmap_locked (start, length, prot, flags, offset); ++ pthread_mutex_unlock (&open_temp_exec_file_mutex); + +- return dlmmap_locked (start, length, prot, flags, offset); ++ return ptr; + } + + /* Release memory at the given address, as well as the corresponding +diff --git a/vendor/libffi-sys/libffi/src/dlmalloc.c b/vendor/libffi-sys/libffi/src/dlmalloc.c +index 1aba657ed..6f4a5f6c4 100644 +--- a/vendor/libffi-sys/libffi/src/dlmalloc.c ++++ b/vendor/libffi-sys/libffi/src/dlmalloc.c +@@ -592,6 +592,11 @@ DEFAULT_MMAP_THRESHOLD default: 256K + malloc does support the following options. + */ + ++/* The system's malloc.h may have conflicting defines. */ ++#undef M_TRIM_THRESHOLD ++#undef M_GRANULARITY ++#undef M_MMAP_THRESHOLD ++ + #define M_TRIM_THRESHOLD (-1) + #define M_GRANULARITY (-2) + #define M_MMAP_THRESHOLD (-3) +diff --git a/vendor/libffi-sys/libffi/src/kvx/asm.h b/vendor/libffi-sys/libffi/src/kvx/asm.h +new file mode 100644 +index 000000000..4edba410d +--- /dev/null ++++ b/vendor/libffi-sys/libffi/src/kvx/asm.h +@@ -0,0 +1,5 @@ ++/* args are passed on registers from r0 up to r11 => 12*8 bytes */ ++#define REG_ARGS_SIZE (12*8) ++#define KVX_REGISTER_SIZE (8) ++#define KVX_ABI_SLOT_SIZE (KVX_REGISTER_SIZE) ++#define KVX_ABI_MAX_AGGREGATE_IN_REG_SIZE (4*KVX_ABI_SLOT_SIZE) +diff --git a/vendor/libffi-sys/libffi/src/loongarch64/ffi.c b/vendor/libffi-sys/libffi/src/loongarch64/ffi.c +new file mode 100644 +index 000000000..140be3bc3 +--- /dev/null ++++ b/vendor/libffi-sys/libffi/src/loongarch64/ffi.c +@@ -0,0 +1,621 @@ ++/* ----------------------------------------------------------------------- ++ ffi.c - Copyright (c) 2022 Xu Chenghua ++ 2022 Cheng Lulu ++ Based on RISC-V port ++ ++ LoongArch Foreign Function Interface ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, ++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ DEALINGS IN THE SOFTWARE. ++ ----------------------------------------------------------------------- */ ++ ++#include ++#include ++ ++#include ++#include ++ ++#if defined(__loongarch_soft_float) ++# define ABI_FRLEN 0 ++#elif defined(__loongarch_single_float) ++# define ABI_FRLEN 32 ++# define ABI_FLOAT float ++#elif defined(__loongarch_double_float) ++# define ABI_FRLEN 64 ++# define ABI_FLOAT double ++#else ++#error unsupported LoongArch floating-point ABI ++#endif ++ ++#define NARGREG 8 ++#define STKALIGN 16 ++#define MAXCOPYARG (2 * sizeof (double)) ++ ++/* call_context registers ++ - 8 floating point parameter/result registers. ++ - 8 integer parameter/result registers. ++ - 2 registers used by the assembly code to in-place construct its own ++ stack frame ++ - frame register ++ - return register ++*/ ++typedef struct call_context ++{ ++ ABI_FLOAT fa[8]; ++ size_t a[10]; ++} call_context; ++ ++typedef struct call_builder ++{ ++ call_context *aregs; ++ int used_integer; ++ int used_float; ++ size_t *used_stack; ++ size_t *stack; ++ size_t next_struct_area; ++} call_builder; ++ ++/* Integer (not pointer) less than ABI GRLEN. */ ++/* FFI_TYPE_INT does not appear to be used. */ ++#if __SIZEOF_POINTER__ == 8 ++# define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT64) ++#else ++# define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT32) ++#endif ++ ++#if ABI_FRLEN ++typedef struct float_struct_info ++{ ++ char as_elements; ++ char type1; ++ char offset2; ++ char type2; ++} float_struct_info; ++ ++#if ABI_FRLEN >= 64 ++# define IS_FLOAT(type) ((type) >= FFI_TYPE_FLOAT && (type) <= FFI_TYPE_DOUBLE) ++#else ++# define IS_FLOAT(type) ((type) == FFI_TYPE_FLOAT) ++#endif ++ ++static ffi_type ** ++flatten_struct (ffi_type *in, ffi_type **out, ffi_type **out_end) ++{ ++ int i; ++ ++ if (out == out_end) ++ return out; ++ if (in->type != FFI_TYPE_STRUCT) ++ *(out++) = in; ++ else ++ for (i = 0; in->elements[i]; i++) ++ out = flatten_struct (in->elements[i], out, out_end); ++ return out; ++} ++ ++/* Structs with at most two fields after flattening, one of which is of ++ floating point type, are passed in multiple registers if sufficient ++ registers are available. */ ++static float_struct_info ++struct_passed_as_elements (call_builder *cb, ffi_type *top) ++{ ++ float_struct_info ret = {0, 0, 0, 0}; ++ ffi_type *fields[3]; ++ int num_floats, num_ints; ++ int num_fields = flatten_struct (top, fields, fields + 3) - fields; ++ ++ if (num_fields == 1) ++ { ++ if (IS_FLOAT (fields[0]->type)) ++ { ++ ret.as_elements = 1; ++ ret.type1 = fields[0]->type; ++ } ++ } ++ else if (num_fields == 2) ++ { ++ num_floats = IS_FLOAT (fields[0]->type) + IS_FLOAT (fields[1]->type); ++ num_ints = IS_INT (fields[0]->type) + IS_INT (fields[1]->type); ++ if (num_floats == 0 || num_floats + num_ints != 2) ++ return ret; ++ if (cb->used_float + num_floats > NARGREG ++ || cb->used_integer + (2 - num_floats) > NARGREG) ++ return ret; ++ if (!IS_FLOAT (fields[0]->type) && !IS_FLOAT (fields[1]->type)) ++ return ret; ++ ++ ret.type1 = fields[0]->type; ++ ret.type2 = fields[1]->type; ++ ret.offset2 = FFI_ALIGN (fields[0]->size, fields[1]->alignment); ++ ret.as_elements = 1; ++ } ++ return ret; ++} ++#endif ++ ++/* Allocates a single register, float register, or GRLEN-sized stack slot to a ++ datum. */ ++static void ++marshal_atom (call_builder *cb, int type, void *data) ++{ ++ size_t value = 0; ++ switch (type) ++ { ++ case FFI_TYPE_UINT8: ++ value = *(uint8_t *) data; ++ break; ++ case FFI_TYPE_SINT8: ++ value = *(int8_t *) data; ++ break; ++ case FFI_TYPE_UINT16: ++ value = *(uint16_t *) data; ++ break; ++ case FFI_TYPE_SINT16: ++ value = *(int16_t *) data; ++ break; ++ /* 32-bit quantities are always sign-extended in the ABI. */ ++ case FFI_TYPE_UINT32: ++ value = *(int32_t *) data; ++ break; ++ case FFI_TYPE_SINT32: ++ value = *(int32_t *) data; ++ break; ++#if __SIZEOF_POINTER__ == 8 ++ case FFI_TYPE_UINT64: ++ value = *(uint64_t *) data; ++ break; ++ case FFI_TYPE_SINT64: ++ value = *(int64_t *) data; ++ break; ++#endif ++ case FFI_TYPE_POINTER: ++ value = *(size_t *) data; ++ break; ++ ++#if ABI_FRLEN >= 32 ++ case FFI_TYPE_FLOAT: ++ *(float *)(cb->aregs->fa + cb->used_float++) = *(float *) data; ++ return; ++#endif ++#if ABI_FRLEN >= 64 ++ case FFI_TYPE_DOUBLE: ++ (cb->aregs->fa[cb->used_float++]) = *(double *) data; ++ return; ++#endif ++ default: ++ FFI_ASSERT (0); ++ break; ++ } ++ ++ if (cb->used_integer == NARGREG) ++ *cb->used_stack++ = value; ++ else ++ cb->aregs->a[cb->used_integer++] = value; ++} ++ ++static void ++unmarshal_atom (call_builder *cb, int type, void *data) ++{ ++ size_t value; ++ switch (type) ++ { ++#if ABI_FRLEN >= 32 ++ case FFI_TYPE_FLOAT: ++ *(float *) data = *(float *)(cb->aregs->fa + cb->used_float++); ++ return; ++#endif ++#if ABI_FRLEN >= 64 ++ case FFI_TYPE_DOUBLE: ++ *(double *) data = cb->aregs->fa[cb->used_float++]; ++ return; ++#endif ++ } ++ ++ if (cb->used_integer == NARGREG) ++ value = *cb->used_stack++; ++ else ++ value = cb->aregs->a[cb->used_integer++]; ++ ++ switch (type) ++ { ++ case FFI_TYPE_UINT8: ++ case FFI_TYPE_SINT8: ++ case FFI_TYPE_UINT16: ++ case FFI_TYPE_SINT16: ++ case FFI_TYPE_UINT32: ++ case FFI_TYPE_SINT32: ++#if __SIZEOF_POINTER__ == 8 ++ case FFI_TYPE_UINT64: ++ case FFI_TYPE_SINT64: ++#endif ++ case FFI_TYPE_POINTER: ++ *(ffi_arg *)data = value; ++ break; ++ default: ++ FFI_ASSERT (0); ++ break; ++ } ++} ++ ++/* Allocate and copy a structure that is passed by value on the stack and ++ return a pointer to it. */ ++static void * ++allocate_and_copy_struct_to_stack (call_builder *cb, void *data, ++ ffi_type *type) ++{ ++ size_t dest = cb->next_struct_area - type->size; ++ ++ dest = FFI_ALIGN_DOWN (dest, type->alignment); ++ cb->next_struct_area = dest; ++ ++ return memcpy ((char *)cb->stack + dest, data, type->size); ++} ++ ++/* Adds an argument to a call, or a not by reference return value. */ ++static void ++marshal (call_builder *cb, ffi_type *type, int var, void *data) ++{ ++ size_t realign[2]; ++ ++#if ABI_FRLEN ++ if (!var && type->type == FFI_TYPE_STRUCT) ++ { ++ float_struct_info fsi = struct_passed_as_elements (cb, type); ++ if (fsi.as_elements) ++ { ++ marshal_atom (cb, fsi.type1, data); ++ if (fsi.offset2) ++ marshal_atom (cb, fsi.type2, ((char *) data) + fsi.offset2); ++ return; ++ } ++ } ++ ++ if (!var && cb->used_float < NARGREG ++ && IS_FLOAT (type->type)) ++ { ++ marshal_atom (cb, type->type, data); ++ return; ++ } ++ ++ double promoted; ++ if (var && type->type == FFI_TYPE_FLOAT) ++ { ++ /* C standard requires promoting float -> double for variable arg. */ ++ promoted = *(float *) data; ++ type = &ffi_type_double; ++ data = &promoted; ++ } ++#endif ++ ++ if (type->size > 2 * __SIZEOF_POINTER__) ++ /* Pass by reference. */ ++ { ++ allocate_and_copy_struct_to_stack (cb, data, type); ++ data = (char *)cb->stack + cb->next_struct_area; ++ marshal_atom (cb, FFI_TYPE_POINTER, &data); ++ } ++ else if (IS_INT (type->type) || type->type == FFI_TYPE_POINTER) ++ marshal_atom (cb, type->type, data); ++ else ++ { ++ /* Overlong integers, soft-float floats, and structs without special ++ float handling are treated identically from this point on. */ ++ ++ /* Variadics are aligned even in registers. */ ++ if (type->alignment > __SIZEOF_POINTER__) ++ { ++ if (var) ++ cb->used_integer = FFI_ALIGN (cb->used_integer, 2); ++ cb->used_stack ++ = (size_t *) FFI_ALIGN (cb->used_stack, 2 * __SIZEOF_POINTER__); ++ } ++ ++ memcpy (realign, data, type->size); ++ if (type->size > 0) ++ marshal_atom (cb, FFI_TYPE_POINTER, realign); ++ if (type->size > __SIZEOF_POINTER__) ++ marshal_atom (cb, FFI_TYPE_POINTER, realign + 1); ++ } ++} ++ ++/* For arguments passed by reference returns the pointer, otherwise the arg ++ is copied (up to MAXCOPYARG bytes). */ ++static void * ++unmarshal (call_builder *cb, ffi_type *type, int var, void *data) ++{ ++ size_t realign[2]; ++ void *pointer; ++ ++#if ABI_FRLEN ++ if (!var && type->type == FFI_TYPE_STRUCT) ++ { ++ float_struct_info fsi = struct_passed_as_elements (cb, type); ++ if (fsi.as_elements) ++ { ++ unmarshal_atom (cb, fsi.type1, data); ++ if (fsi.offset2) ++ unmarshal_atom (cb, fsi.type2, ((char *) data) + fsi.offset2); ++ return data; ++ } ++ } ++ ++ if (!var && cb->used_float < NARGREG ++ && IS_FLOAT (type->type)) ++ { ++ unmarshal_atom (cb, type->type, data); ++ return data; ++ } ++ ++ if (var && type->type == FFI_TYPE_FLOAT) ++ { ++ int m = cb->used_integer; ++ void *promoted ++ = m < NARGREG ? cb->aregs->a + m : cb->used_stack + m - NARGREG + 1; ++ *(float *) promoted = *(double *) promoted; ++ } ++#endif ++ ++ if (type->size > 2 * __SIZEOF_POINTER__) ++ { ++ /* Pass by reference. */ ++ unmarshal_atom (cb, FFI_TYPE_POINTER, (char *) &pointer); ++ return pointer; ++ } ++ else if (IS_INT (type->type) || type->type == FFI_TYPE_POINTER) ++ { ++ unmarshal_atom (cb, type->type, data); ++ return data; ++ } ++ else ++ { ++ /* Overlong integers, soft-float floats, and structs without special ++ float handling are treated identically from this point on. */ ++ ++ /* Variadics are aligned even in registers. */ ++ if (type->alignment > __SIZEOF_POINTER__) ++ { ++ if (var) ++ cb->used_integer = FFI_ALIGN (cb->used_integer, 2); ++ cb->used_stack ++ = (size_t *) FFI_ALIGN (cb->used_stack, 2 * __SIZEOF_POINTER__); ++ } ++ ++ if (type->size > 0) ++ unmarshal_atom (cb, FFI_TYPE_POINTER, realign); ++ if (type->size > __SIZEOF_POINTER__) ++ unmarshal_atom (cb, FFI_TYPE_POINTER, realign + 1); ++ memcpy (data, realign, type->size); ++ return data; ++ } ++} ++ ++static int ++passed_by_ref (call_builder *cb, ffi_type *type, int var) ++{ ++#if ABI_FRLEN ++ if (!var && type->type == FFI_TYPE_STRUCT) ++ { ++ float_struct_info fsi = struct_passed_as_elements (cb, type); ++ if (fsi.as_elements) ++ return 0; ++ } ++#endif ++ ++ return type->size > 2 * __SIZEOF_POINTER__; ++} ++ ++/* Perform machine dependent cif processing. */ ++ffi_status ++ffi_prep_cif_machdep (ffi_cif *cif) ++{ ++ cif->loongarch_nfixedargs = cif->nargs; ++ return FFI_OK; ++} ++ ++/* Perform machine dependent cif processing when we have a variadic ++ function. */ ++ffi_status ++ffi_prep_cif_machdep_var (ffi_cif *cif, unsigned int nfixedargs, ++ unsigned int ntotalargs) ++{ ++ cif->loongarch_nfixedargs = nfixedargs; ++ return FFI_OK; ++} ++ ++/* Low level routine for calling functions. */ ++extern void ffi_call_asm (void *stack, struct call_context *regs, ++ void (*fn) (void), void *closure) FFI_HIDDEN; ++ ++static void ++ffi_call_int (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, ++ void *closure) ++{ ++ /* This is a conservative estimate, assuming a complex return value and ++ that all remaining arguments are long long / __int128 */ ++ size_t arg_bytes = cif->bytes; ++ size_t rval_bytes = 0; ++ if (rvalue == NULL && cif->rtype->size > 2 * __SIZEOF_POINTER__) ++ rval_bytes = FFI_ALIGN (cif->rtype->size, STKALIGN); ++ size_t alloc_size = arg_bytes + rval_bytes + sizeof (call_context); ++ ++ /* The assembly code will deallocate all stack data at lower addresses ++ than the argument region, so we need to allocate the frame and the ++ return value after the arguments in a single allocation. */ ++ size_t alloc_base; ++ /* Argument region must be 16-byte aligned in LP64 ABIs. */ ++ if (_Alignof(max_align_t) >= STKALIGN) ++ /* Since sizeof long double is normally 16, the compiler will ++ guarantee alloca alignment to at least that much. */ ++ alloc_base = (size_t) alloca (alloc_size); ++ else ++ alloc_base = FFI_ALIGN (alloca (alloc_size + STKALIGN - 1), STKALIGN); ++ ++ if (rval_bytes) ++ rvalue = (void *) (alloc_base + arg_bytes); ++ ++ call_builder cb; ++ cb.used_float = cb.used_integer = 0; ++ cb.aregs = (call_context *) (alloc_base + arg_bytes + rval_bytes); ++ cb.used_stack = (void *) alloc_base; ++ cb.stack = (void *) alloc_base; ++ cb.next_struct_area = arg_bytes; ++ ++ int return_by_ref = passed_by_ref (&cb, cif->rtype, 0); ++ if (return_by_ref) ++ cb.aregs->a[cb.used_integer++] = (size_t)rvalue; ++ ++ int i; ++ for (i = 0; i < cif->nargs; i++) ++ marshal (&cb, cif->arg_types[i], i >= cif->loongarch_nfixedargs, ++ avalue[i]); ++ ++ ffi_call_asm ((void *) alloc_base, cb.aregs, fn, closure); ++ ++ cb.used_float = cb.used_integer = 0; ++ if (!return_by_ref && rvalue) ++ unmarshal (&cb, cif->rtype, 0, rvalue); ++} ++ ++void ++ffi_call (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue) ++{ ++ ffi_call_int (cif, fn, rvalue, avalue, NULL); ++} ++ ++void ++ffi_call_go (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, ++ void *closure) ++{ ++ ffi_call_int (cif, fn, rvalue, avalue, closure); ++} ++ ++extern void ffi_closure_asm (void) FFI_HIDDEN; ++ ++ffi_status ++ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif, ++ void (*fun) (ffi_cif *, void *, void **, void *), ++ void *user_data, void *codeloc) ++{ ++ uint32_t *tramp = (uint32_t *) &closure->tramp[0]; ++ uint64_t fn = (uint64_t) (uintptr_t) ffi_closure_asm; ++ ++ if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) ++ return FFI_BAD_ABI; ++ ++#if defined(FFI_EXEC_STATIC_TRAMP) ++ if (ffi_tramp_is_present(closure)) ++ { ++ ffi_tramp_set_parms (closure->ftramp, ffi_closure_asm, closure); ++ goto out; ++ } ++#endif ++ ++ /* Fill the dynamic trampoline. We will call ffi_closure_inner with codeloc, ++ not closure, but as long as the memory is readable it should work. */ ++ tramp[0] = 0x1800000c; /* pcaddi $t0, 0 (i.e. $t0 <- tramp) */ ++ tramp[1] = 0x28c0418d; /* ld.d $t1, $t0, 16 */ ++ tramp[2] = 0x4c0001a0; /* jirl $zero, $t1, 0 */ ++ tramp[3] = 0x03400000; /* nop */ ++ tramp[4] = fn; ++ tramp[5] = fn >> 32; ++ ++ __builtin___clear_cache (codeloc, codeloc + FFI_TRAMPOLINE_SIZE); ++ ++#if defined(FFI_EXEC_STATIC_TRAMP) ++out: ++#endif ++ closure->cif = cif; ++ closure->fun = fun; ++ closure->user_data = user_data; ++ ++ return FFI_OK; ++} ++ ++extern void ffi_go_closure_asm (void) FFI_HIDDEN; ++ ++ffi_status ++ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, ++ void (*fun) (ffi_cif *, void *, void **, void *)) ++{ ++ if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) ++ return FFI_BAD_ABI; ++ ++ closure->tramp = (void *) ffi_go_closure_asm; ++ closure->cif = cif; ++ closure->fun = fun; ++ return FFI_OK; ++} ++ ++/* Called by the assembly code with aregs pointing to saved argument registers ++ and stack pointing to the stacked arguments. Return values passed in ++ registers will be reloaded from aregs. */ ++void FFI_HIDDEN ++ffi_closure_inner (ffi_cif *cif, ++ void (*fun) (ffi_cif *, void *, void **, void *), ++ void *user_data, size_t *stack, call_context *aregs) ++{ ++ void **avalue = alloca (cif->nargs * sizeof (void *)); ++ /* Storage for arguments which will be copied by unmarshal(). We could ++ theoretically avoid the copies in many cases and use at most 128 bytes ++ of memory, but allocating disjoint storage for each argument is ++ simpler. */ ++ char *astorage = alloca (cif->nargs * MAXCOPYARG); ++ void *rvalue; ++ call_builder cb; ++ int return_by_ref; ++ int i; ++ ++ cb.aregs = aregs; ++ cb.used_integer = cb.used_float = 0; ++ cb.used_stack = stack; ++ ++ return_by_ref = passed_by_ref (&cb, cif->rtype, 0); ++ if (return_by_ref) ++ unmarshal (&cb, &ffi_type_pointer, 0, &rvalue); ++ else ++ rvalue = alloca (cif->rtype->size); ++ ++ for (i = 0; i < cif->nargs; i++) ++ avalue[i] ++ = unmarshal (&cb, cif->arg_types[i], i >= cif->loongarch_nfixedargs, ++ astorage + i * MAXCOPYARG); ++ ++ fun (cif, rvalue, avalue, user_data); ++ ++ if (!return_by_ref && cif->rtype->type != FFI_TYPE_VOID) ++ { ++ cb.used_integer = cb.used_float = 0; ++ marshal (&cb, cif->rtype, 0, rvalue); ++ } ++} ++ ++#if defined(FFI_EXEC_STATIC_TRAMP) ++void * ++ffi_tramp_arch (size_t *tramp_size, size_t *map_size) ++{ ++ extern void *trampoline_code_table; ++ ++ *tramp_size = 16; ++ /* A mapping size of 64K is chosen to cover the page sizes of 4K, 16K, and ++ 64K. */ ++ *map_size = 1 << 16; ++ return &trampoline_code_table; ++} ++#endif +diff --git a/vendor/libffi-sys/libffi/src/loongarch64/ffitarget.h b/vendor/libffi-sys/libffi/src/loongarch64/ffitarget.h +new file mode 100644 +index 000000000..5a4698af3 +--- /dev/null ++++ b/vendor/libffi-sys/libffi/src/loongarch64/ffitarget.h +@@ -0,0 +1,82 @@ ++/* -----------------------------------------------------------------*-C-*- ++ ffitarget.h - Copyright (c) 2022 Xu Chenghua ++ 2022 Cheng Lulu ++ ++ Target configuration macros for LoongArch. ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, ++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ DEALINGS IN THE SOFTWARE. ++ ++ ----------------------------------------------------------------------- */ ++ ++#ifndef LIBFFI_TARGET_H ++#define LIBFFI_TARGET_H ++ ++#ifndef LIBFFI_H ++#error \ ++ "Please do not include ffitarget.h directly into your source. Use ffi.h instead." ++#endif ++ ++#ifndef __loongarch__ ++#error \ ++ "libffi was configured for a LoongArch target but this does not appear to be a LoongArch compiler." ++#endif ++ ++#ifndef LIBFFI_ASM ++ ++typedef unsigned long ffi_arg; ++typedef signed long ffi_sarg; ++ ++typedef enum ffi_abi ++{ ++ FFI_FIRST_ABI = 0, ++ FFI_LP64S, ++ FFI_LP64F, ++ FFI_LP64D, ++ FFI_LAST_ABI, ++ ++#if defined(__loongarch64) ++#if defined(__loongarch_soft_float) ++ FFI_DEFAULT_ABI = FFI_LP64S ++#elif defined(__loongarch_single_float) ++ FFI_DEFAULT_ABI = FFI_LP64F ++#elif defined(__loongarch_double_float) ++ FFI_DEFAULT_ABI = FFI_LP64D ++#else ++#error unsupported LoongArch floating-point ABI ++#endif ++#else ++#error unsupported LoongArch base architecture ++#endif ++} ffi_abi; ++ ++#endif /* LIBFFI_ASM */ ++ ++/* ---- Definitions for closures ----------------------------------------- */ ++ ++#define FFI_CLOSURES 1 ++#define FFI_GO_CLOSURES 1 ++#define FFI_TRAMPOLINE_SIZE 24 ++#define FFI_NATIVE_RAW_API 0 ++#define FFI_EXTRA_CIF_FIELDS \ ++ unsigned loongarch_nfixedargs; \ ++ unsigned loongarch_unused; ++#define FFI_TARGET_SPECIFIC_VARIADIC ++#endif +diff --git a/vendor/libffi-sys/libffi/src/loongarch64/sysv.S b/vendor/libffi-sys/libffi/src/loongarch64/sysv.S +new file mode 100644 +index 000000000..aa7bde2c1 +--- /dev/null ++++ b/vendor/libffi-sys/libffi/src/loongarch64/sysv.S +@@ -0,0 +1,327 @@ ++/* ----------------------------------------------------------------------- ++ sysv.S - Copyright (c) 2022 Xu Chenghua ++ 2022 Cheng Lulu ++ ++ LoongArch Foreign Function Interface ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, ++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ DEALINGS IN THE SOFTWARE. ++ ----------------------------------------------------------------------- */ ++ ++#define LIBFFI_ASM ++#include ++#include ++ ++/* Define aliases so that we can handle all ABIs uniformly. */ ++ ++#if __SIZEOF_POINTER__ == 8 ++# define PTRS 8 ++# define LARG ld.d ++# define SARG st.d ++#else ++# define PTRS 4 ++# define LARG ld.w ++# define SARG st.w ++#endif ++ ++#if defined(__loongarch_single_float) ++# define FLTS 4 ++# define FLD fld.w ++# define FST fst.w ++#elif defined(__loongarch_double_float) ++# define FLTS 8 ++# define FLARG fld.d ++# define FSARG fst.d ++#elif defined(__loongarch_soft_float) ++# define FLTS 0 ++#else ++#error unsupported LoongArch floating-point ABI ++#endif ++ ++ .text ++ .globl ffi_call_asm ++ .type ffi_call_asm, @function ++ .hidden ffi_call_asm ++/* struct call_context ++ { ++ ABI_FLOAT fa[8]; ++ size_t a[10]; ++ } ++ ++ - 8 floating point parameter/result registers (fa[0] - fa[7]) ++ - 8 integer parameter/result registers (a[0] - a[7]) ++ - 2 registers used by the assembly code to in-place construct its own stack ++ frame. ++ - frame pointer (a[8]) ++ - return address (a[9]) ++ ++ void ffi_call_asm (size_t *stackargs, struct call_context *regargs, ++ void (*fn)(void), void *closure); */ ++ ++#define FRAME_LEN (8 * FLTS + 10 * PTRS) ++ ++ffi_call_asm: ++ .cfi_startproc ++ ++ /* We are NOT going to set up an ordinary stack frame. In order to pass ++ the stacked args to the called function, we adjust our stack pointer ++ to a0, which is in the _caller's_ alloca area. We establish our own ++ stack frame at the end of the call_context. ++ ++ Anything below the arguments will be freed at this point, although ++ we preserve the call_context so that it can be read back in the ++ caller. */ ++ ++ .cfi_def_cfa 5, FRAME_LEN # Interim CFA based on a1. ++ SARG $fp, $a1, FRAME_LEN - 2*PTRS ++ .cfi_offset 22, -2*PTRS ++ SARG $ra, $a1, FRAME_LEN - 1*PTRS ++ .cfi_offset 1, -1*PTRS ++ ++ addi.d $fp, $a1, FRAME_LEN ++ move $sp, $a0 ++ .cfi_def_cfa 22, 0 # Our frame is fully set up. ++ ++ # Load arguments. ++ move $t1, $a2 ++ move $t2, $a3 ++ ++#if FLTS ++ FLARG $fa0, $fp, -FRAME_LEN+0*FLTS ++ FLARG $fa1, $fp, -FRAME_LEN+1*FLTS ++ FLARG $fa2, $fp, -FRAME_LEN+2*FLTS ++ FLARG $fa3, $fp, -FRAME_LEN+3*FLTS ++ FLARG $fa4, $fp, -FRAME_LEN+4*FLTS ++ FLARG $fa5, $fp, -FRAME_LEN+5*FLTS ++ FLARG $fa6, $fp, -FRAME_LEN+6*FLTS ++ FLARG $fa7, $fp, -FRAME_LEN+7*FLTS ++#endif ++ ++ LARG $a0, $fp, -FRAME_LEN+8*FLTS+0*PTRS ++ LARG $a1, $fp, -FRAME_LEN+8*FLTS+1*PTRS ++ LARG $a2, $fp, -FRAME_LEN+8*FLTS+2*PTRS ++ LARG $a3, $fp, -FRAME_LEN+8*FLTS+3*PTRS ++ LARG $a4, $fp, -FRAME_LEN+8*FLTS+4*PTRS ++ LARG $a5, $fp, -FRAME_LEN+8*FLTS+5*PTRS ++ LARG $a6, $fp, -FRAME_LEN+8*FLTS+6*PTRS ++ LARG $a7, $fp, -FRAME_LEN+8*FLTS+7*PTRS ++ ++ /* Call */ ++ jirl $ra, $t1, 0 ++ ++#if FLTS ++ /* Save return values - only a0/a1 (fa0/fa1) are used. */ ++ FSARG $fa0, $fp, -FRAME_LEN+0*FLTS ++ FSARG $fa1, $fp, -FRAME_LEN+1*FLTS ++#endif ++ ++ SARG $a0, $fp, -FRAME_LEN+8*FLTS+0*PTRS ++ SARG $a1, $fp, -FRAME_LEN+8*FLTS+1*PTRS ++ ++ /* Restore and return. */ ++ addi.d $sp, $fp, -FRAME_LEN ++ .cfi_def_cfa 3, FRAME_LEN ++ LARG $ra, $fp, -1*PTRS ++ .cfi_restore 1 ++ LARG $fp, $fp, -2*PTRS ++ .cfi_restore 22 ++ jr $ra ++ .cfi_endproc ++ .size ffi_call_asm, .-ffi_call_asm ++ ++ ++/* ffi_closure_asm. Expects address of the passed-in ffi_closure in t0. ++ void ffi_closure_inner (ffi_cif *cif, ++ void (*fun)(ffi_cif *, void *, void **, void *), ++ void *user_data, ++ size_t *stackargs, struct call_context *regargs) */ ++ ++ .globl ffi_closure_asm ++ .hidden ffi_closure_asm ++ .type ffi_closure_asm, @function ++ ++ffi_closure_asm: ++ .cfi_startproc ++ addi.d $sp, $sp, -FRAME_LEN ++ .cfi_def_cfa_offset FRAME_LEN ++ ++ /* Make a frame. */ ++ SARG $fp, $sp, FRAME_LEN - 2*PTRS ++ .cfi_offset 22, -2*PTRS ++ SARG $ra, $sp, FRAME_LEN - 1*PTRS ++ .cfi_offset 1, -1*PTRS ++ addi.d $fp, $sp, FRAME_LEN ++ ++ /* Save arguments. */ ++#if FLTS ++ FSARG $fa0, $sp, 0*FLTS ++ FSARG $fa1, $sp, 1*FLTS ++ FSARG $fa2, $sp, 2*FLTS ++ FSARG $fa3, $sp, 3*FLTS ++ FSARG $fa4, $sp, 4*FLTS ++ FSARG $fa5, $sp, 5*FLTS ++ FSARG $fa6, $sp, 6*FLTS ++ FSARG $fa7, $sp, 7*FLTS ++#endif ++ ++ SARG $a0, $sp, 8*FLTS+0*PTRS ++ SARG $a1, $sp, 8*FLTS+1*PTRS ++ SARG $a2, $sp, 8*FLTS+2*PTRS ++ SARG $a3, $sp, 8*FLTS+3*PTRS ++ SARG $a4, $sp, 8*FLTS+4*PTRS ++ SARG $a5, $sp, 8*FLTS+5*PTRS ++ SARG $a6, $sp, 8*FLTS+6*PTRS ++ SARG $a7, $sp, 8*FLTS+7*PTRS ++ ++ /* Enter C */ ++ LARG $a0, $t0, FFI_TRAMPOLINE_SIZE+0*PTRS ++ LARG $a1, $t0, FFI_TRAMPOLINE_SIZE+1*PTRS ++ LARG $a2, $t0, FFI_TRAMPOLINE_SIZE+2*PTRS ++ addi.d $a3, $sp, FRAME_LEN ++ move $a4, $sp ++ ++ bl ffi_closure_inner ++ ++ /* Return values. */ ++#if FLTS ++ FLARG $fa0, $sp, 0*FLTS ++ FLARG $fa1, $sp, 1*FLTS ++#endif ++ ++ LARG $a0, $sp, 8*FLTS+0*PTRS ++ LARG $a1, $sp, 8*FLTS+1*PTRS ++ ++ /* Restore and return. */ ++ LARG $ra, $sp, FRAME_LEN-1*PTRS ++ .cfi_restore 1 ++ LARG $fp, $sp, FRAME_LEN-2*PTRS ++ .cfi_restore 22 ++ addi.d $sp, $sp, FRAME_LEN ++ .cfi_def_cfa_offset 0 ++ jr $ra ++ .cfi_endproc ++ .size ffi_closure_asm, .-ffi_closure_asm ++ ++/* Static trampoline code table, in which each element is a trampoline. ++ ++ The trampoline clobbers t0 and t1, but we don't save them on the stack ++ because our psABI explicitly says they are scratch registers, at least for ++ ELF. Our dynamic trampoline is already clobbering them anyway. ++ ++ The trampoline has two parameters - target code to jump to and data for ++ the target code. The trampoline extracts the parameters from its parameter ++ block (see tramp_table_map()). The trampoline saves the data address in ++ t0 and jumps to the target code. As ffi_closure_asm() already expects the ++ data address to be in t0, we don't need a "ffi_closure_asm_alt". */ ++ ++#if defined(FFI_EXEC_STATIC_TRAMP) ++ .align 16 ++ .globl trampoline_code_table ++ .hidden trampoline_code_table ++ .type trampoline_code_table, @function ++ ++trampoline_code_table: ++ ++ .rept 65536 / 16 ++ pcaddu12i $t1, 16 # 65536 >> 12 ++ ld.d $t0, $t1, 0 ++ ld.d $t1, $t1, 8 ++ jirl $zero, $t1, 0 ++ .endr ++ .size trampoline_code_table, .-trampoline_code_table ++ ++ .align 2 ++#endif ++ ++/* ffi_go_closure_asm. Expects address of the passed-in ffi_go_closure in t2. ++ void ffi_closure_inner (ffi_cif *cif, ++ void (*fun)(ffi_cif *, void *, void **, void *), ++ void *user_data, ++ size_t *stackargs, struct call_context *regargs) */ ++ ++ .globl ffi_go_closure_asm ++ .hidden ffi_go_closure_asm ++ .type ffi_go_closure_asm, @function ++ ++ffi_go_closure_asm: ++ .cfi_startproc ++ addi.d $sp, $sp, -FRAME_LEN ++ .cfi_def_cfa_offset FRAME_LEN ++ ++ /* Make a frame. */ ++ SARG $fp, $sp, FRAME_LEN - 2*PTRS ++ .cfi_offset 22, -2*PTRS ++ SARG $ra, $sp, FRAME_LEN - 1*PTRS ++ .cfi_offset 1, -1*PTRS ++ addi.d $fp, $sp, FRAME_LEN ++ ++ /* Save arguments. */ ++#if FLTS ++ FSARG $fa0, $sp, 0*FLTS ++ FSARG $fa1, $sp, 1*FLTS ++ FSARG $fa2, $sp, 2*FLTS ++ FSARG $fa3, $sp, 3*FLTS ++ FSARG $fa4, $sp, 4*FLTS ++ FSARG $fa5, $sp, 5*FLTS ++ FSARG $fa6, $sp, 6*FLTS ++ FSARG $fa7, $sp, 7*FLTS ++#endif ++ ++ SARG $a0, $sp, 8*FLTS+0*PTRS ++ SARG $a1, $sp, 8*FLTS+1*PTRS ++ SARG $a2, $sp, 8*FLTS+2*PTRS ++ SARG $a3, $sp, 8*FLTS+3*PTRS ++ SARG $a4, $sp, 8*FLTS+4*PTRS ++ SARG $a5, $sp, 8*FLTS+5*PTRS ++ SARG $a6, $sp, 8*FLTS+6*PTRS ++ SARG $a7, $sp, 8*FLTS+7*PTRS ++ ++ /* Enter C */ ++ LARG $a0, $t2, 1*PTRS ++ LARG $a1, $t2, 2*PTRS ++ move $a2, $t2 ++ addi.d $a3, $sp, FRAME_LEN ++ move $a4, $sp ++ ++ bl ffi_closure_inner ++ ++ /* Return values. */ ++#if FLTS ++ FLARG $fa0, $sp, 0*FLTS ++ FLARG $fa1, $sp, 1*FLTS ++#endif ++ ++ LARG $a0, $sp, 8*FLTS+0*PTRS ++ LARG $a1, $sp, 8*FLTS+1*PTRS ++ ++ /* Restore and return. */ ++ LARG $ra, $sp, FRAME_LEN-1*PTRS ++ .cfi_restore 1 ++ LARG $fp, $sp, FRAME_LEN-2*PTRS ++ .cfi_restore 22 ++ addi.d $sp, $sp, FRAME_LEN ++ .cfi_def_cfa_offset 0 ++ jr $ra ++ .cfi_endproc ++ .size ffi_go_closure_asm, .-ffi_go_closure_asm ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",%progbits ++#endif +diff --git a/vendor/libffi-sys/libffi/src/m32r/ffi.c b/vendor/libffi-sys/libffi/src/m32r/ffi.c +index ab8fc4e48..6fab50b11 100644 +--- a/vendor/libffi-sys/libffi/src/m32r/ffi.c ++++ b/vendor/libffi-sys/libffi/src/m32r/ffi.c +@@ -1,8 +1,9 @@ + /* ----------------------------------------------------------------------- + ffi.c - Copyright (c) 2004 Renesas Technology + Copyright (c) 2008 Red Hat, Inc. +- +- M32R Foreign Function Interface ++ Copyright (c) 2022 Anthony Green ++ ++ M32R Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the +@@ -63,7 +64,7 @@ void ffi_prep_args(char *stack, extended_cif *ecif) + if (((*p_arg)->alignment - 1) & (unsigned) argp) + argp = (char *) FFI_ALIGN (argp, (*p_arg)->alignment); + +- if (avn != 0) ++ if (avn != 0) + { + avn--; + z = (*p_arg)->size; +@@ -76,19 +77,19 @@ void ffi_prep_args(char *stack, extended_cif *ecif) + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; +- ++ + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; +- ++ + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; +- ++ + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; +- ++ + case FFI_TYPE_STRUCT: + z = (*p_arg)->size; + if ((*p_arg)->alignment != 1) +@@ -131,7 +132,7 @@ void ffi_prep_args(char *stack, extended_cif *ecif) + argp += z; + } + } +- ++ + return; + } + +@@ -178,24 +179,40 @@ extern void ffi_call_SYSV(void (*)(char *, extended_cif *), extended_cif *, + void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) + { + extended_cif ecif; ++ ffi_type **arg_types = cif->arg_types; ++ int i, nargs = cif->nargs; + + ecif.cif = cif; + ecif.avalue = avalue; +- ++ + /* If the return value is a struct and we don't have + a return value address then we need to make one. */ +- if ((rvalue == NULL) && ++ if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca (cif->rtype->size); + } + else +- ecif.rvalue = rvalue; +- +- switch (cif->abi) ++ ecif.rvalue = rvalue; ++ ++ /* If we have any large structure arguments, make a copy so we are passing ++ by value. */ ++ for (i = 0; i < nargs; i++) ++ { ++ ffi_type *at = arg_types[i]; ++ int size = at->size; ++ if (at->type == FFI_TYPE_STRUCT && size > 4) ++ { ++ char *argcopy = alloca (size); ++ memcpy (argcopy, avalue[i], size); ++ avalue[i] = argcopy; ++ } ++ } ++ ++ switch (cif->abi) + { + case FFI_SYSV: +- ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, ++ ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + if (cif->rtype->type == FFI_TYPE_STRUCT) + { +diff --git a/vendor/libffi-sys/libffi/src/mips/ffi.c b/vendor/libffi-sys/libffi/src/mips/ffi.c +index 979ca49f1..e7043258f 100644 +--- a/vendor/libffi-sys/libffi/src/mips/ffi.c ++++ b/vendor/libffi-sys/libffi/src/mips/ffi.c +@@ -31,6 +31,7 @@ + + #include + #include ++#include + + #ifdef __GNUC__ + # if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) +@@ -77,22 +78,39 @@ static void ffi_prep_args(char *stack, + { + int i; + void **p_argv; +- char *argp; ++ char *argp, *argp_f; + ffi_type **p_arg; + ++ memset(stack, 0, bytes); ++ + #ifdef FFI_MIPS_N32 ++ int soft_float = (ecif->cif->abi == FFI_N32_SOFT_FLOAT ++ || ecif->cif->abi == FFI_N64_SOFT_FLOAT); + /* If more than 8 double words are used, the remainder go + on the stack. We reorder stuff on the stack here to + support this easily. */ +- if (bytes > 8 * sizeof(ffi_arg)) +- argp = &stack[bytes - (8 * sizeof(ffi_arg))]; ++ /* if ret is _Complex long double, args reg shift2, and a0 should holds pointer to rvalue */ ++ if (ecif->cif->rtype->type == FFI_TYPE_COMPLEX && ecif->cif->rtype->elements[0]->type == FFI_TYPE_LONGDOUBLE) ++ { ++ if (bytes + 16 > 8 * sizeof(ffi_arg)) ++ argp = &stack[bytes - (8 * sizeof(ffi_arg))]; ++ else ++ argp = stack; ++ * (unsigned long *) argp = (unsigned long) ecif->rvalue; ++ argp += 16; ++ } + else +- argp = stack; ++ { ++ if (bytes > 8 * sizeof(ffi_arg)) ++ argp = &stack[bytes - (8 * sizeof(ffi_arg))]; ++ else ++ argp = stack; ++ } + #else + argp = stack; + #endif + +- memset(stack, 0, bytes); ++ argp_f = argp; + + #ifdef FFI_MIPS_N32 + if ( ecif->cif->rstruct_flag != 0 ) +@@ -133,7 +151,7 @@ static void ffi_prep_args(char *stack, + if (type == FFI_TYPE_POINTER) + type = (ecif->cif->abi == FFI_N64 + || ecif->cif->abi == FFI_N64_SOFT_FLOAT) +- ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32; ++ ? FFI_TYPE_SINT64 : FFI_TYPE_UINT32; + + if (i < 8 && (ecif->cif->abi == FFI_N32_SOFT_FLOAT + || ecif->cif->abi == FFI_N64_SOFT_FLOAT)) +@@ -183,6 +201,25 @@ static void ffi_prep_args(char *stack, + #endif + break; + ++#ifdef FFI_MIPS_N32 ++ case FFI_TYPE_COMPLEX: ++ /* expand from 4+4 to 8+8 if pass with fpr reg */ ++ /* argp will wind back to stack when we process all of reg args */ ++ /* all var_args passed with gpr, should be expand */ ++ if(!soft_float ++ && (*p_arg)->elements[0]->type == FFI_TYPE_FLOAT ++ && argp>=argp_f ++ && i < ecif->cif->mips_nfixedargs) ++ { ++ *(float *) argp = *(float *)(* p_argv); ++ argp += z; ++ char *tmp = (void *) (*p_argv); ++ *(float *) argp = *(float *)(tmp+4); ++ } ++ else ++ memcpy(argp, *p_argv, (*p_arg)->size); ++ break; ++#endif + /* This can only happen with 64bit slots. */ + case FFI_TYPE_FLOAT: + *(float *) argp = *(float *)(* p_argv); +@@ -235,6 +272,24 @@ static void ffi_prep_args(char *stack, + passed in an integer register". This code traverses structure + definitions and generates the appropriate flags. */ + ++static int ++calc_n32_struct_flags_element(unsigned *flags, ffi_type *e, ++ unsigned *loc, unsigned *arg_reg) ++{ ++ /* Align this object. */ ++ *loc = FFI_ALIGN(*loc, e->alignment); ++ if (e->type == FFI_TYPE_DOUBLE) ++ { ++ /* Already aligned to FFI_SIZEOF_ARG. */ ++ *arg_reg = *loc / FFI_SIZEOF_ARG; ++ if (*arg_reg > 7) ++ return 1; ++ *flags += (FFI_TYPE_DOUBLE << (*arg_reg * FFI_FLAG_BITS)); ++ } ++ *loc += e->size; ++ return 0; ++} ++ + static unsigned + calc_n32_struct_flags(int soft_float, ffi_type *arg, + unsigned *loc, unsigned *arg_reg) +@@ -249,19 +304,16 @@ calc_n32_struct_flags(int soft_float, ffi_type *arg, + + while ((e = arg->elements[index])) + { +- /* Align this object. */ +- *loc = FFI_ALIGN(*loc, e->alignment); +- if (e->type == FFI_TYPE_DOUBLE) ++ if (e->type == FFI_TYPE_COMPLEX) + { +- /* Already aligned to FFI_SIZEOF_ARG. */ +- *arg_reg = *loc / FFI_SIZEOF_ARG; +- if (*arg_reg > 7) +- break; +- flags += (FFI_TYPE_DOUBLE << (*arg_reg * FFI_FLAG_BITS)); +- *loc += e->size; ++ if (calc_n32_struct_flags_element(&flags, e->elements[0], loc, arg_reg)) ++ break; ++ if (calc_n32_struct_flags_element(&flags, e->elements[0], loc, arg_reg)) ++ break; + } + else +- *loc += e->size; ++ if (calc_n32_struct_flags_element(&flags, e, loc, arg_reg)) ++ break; + index++; + } + /* Next Argument register at alignment of FFI_SIZEOF_ARG. */ +@@ -273,7 +325,7 @@ calc_n32_struct_flags(int soft_float, ffi_type *arg, + static unsigned + calc_n32_return_struct_flags(int soft_float, ffi_type *arg) + { +- unsigned flags = 0; ++ unsigned flags; + unsigned small = FFI_TYPE_SMALLSTRUCT; + ffi_type *e; + +@@ -292,33 +344,48 @@ calc_n32_return_struct_flags(int soft_float, ffi_type *arg) + + e = arg->elements[0]; + +- if (e->type == FFI_TYPE_DOUBLE) +- flags = FFI_TYPE_DOUBLE; +- else if (e->type == FFI_TYPE_FLOAT) +- flags = FFI_TYPE_FLOAT; +- +- if (flags && (e = arg->elements[1])) ++ if (e->type == FFI_TYPE_COMPLEX) + { +- if (e->type == FFI_TYPE_DOUBLE) +- flags += FFI_TYPE_DOUBLE << FFI_FLAG_BITS; +- else if (e->type == FFI_TYPE_FLOAT) +- flags += FFI_TYPE_FLOAT << FFI_FLAG_BITS; +- else ++ int type = e->elements[0]->type; ++ ++ if (type != FFI_TYPE_DOUBLE && type != FFI_TYPE_FLOAT) + return small; + +- if (flags && (arg->elements[2])) ++ if (arg->elements[1]) + { +- /* There are three arguments and the first two are +- floats! This must be passed the old way. */ ++ /* Two floating point fields with more fields! ++ This must be passed the old way. */ + return small; + } +- if (soft_float) +- flags += FFI_TYPE_STRUCT_SOFT; ++ ++ flags = (type << FFI_FLAG_BITS) + type; + } + else +- if (!flags) +- return small; ++ { ++ if (e->type != FFI_TYPE_DOUBLE && e->type != FFI_TYPE_FLOAT) ++ return small; ++ ++ flags = e->type; ++ ++ if (arg->elements[1]) ++ { ++ e = arg->elements[1]; ++ if (e->type != FFI_TYPE_DOUBLE && e->type != FFI_TYPE_FLOAT) ++ return small; ++ ++ if (arg->elements[2]) ++ { ++ /* There are three arguments and the first two are ++ floats! This must be passed the old way. */ ++ return small; ++ } + ++ flags += e->type << FFI_FLAG_BITS; ++ } ++ } ++ ++ if (soft_float) ++ flags += FFI_TYPE_STRUCT_SOFT; + return flags; + } + +@@ -335,7 +402,7 @@ static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) + * does not have special handling for floating point args. + */ + +- if (cif->rtype->type != FFI_TYPE_STRUCT && cif->abi == FFI_O32) ++ if (cif->rtype->type != FFI_TYPE_STRUCT && cif->rtype->type != FFI_TYPE_COMPLEX && cif->abi == FFI_O32) + { + if (cif->nargs > 0 && cif->nargs == nfixedargs) + { +@@ -403,7 +470,10 @@ static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) + case FFI_TYPE_STRUCT: + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: ++ case FFI_TYPE_COMPLEX: + cif->flags += cif->rtype->type << (FFI_FLAG_BITS * 2); ++ if (cif->rtype->type == FFI_TYPE_COMPLEX) ++ cif->flags += ((*cif->rtype->elements[0]).type) << (FFI_FLAG_BITS * 4); + break; + + case FFI_TYPE_SINT64: +@@ -421,7 +491,6 @@ static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) + #ifdef FFI_MIPS_N32 + /* Set the flags necessary for N32 processing */ + { +- int type; + unsigned arg_reg = 0; + unsigned loc = 0; + unsigned count = (cif->nargs < 8) ? cif->nargs : 8; +@@ -453,29 +522,14 @@ static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) + + while (count-- > 0 && arg_reg < 8) + { +- type = (cif->arg_types)[index]->type; ++ ffi_type *t = cif->arg_types[index]; + +- // Pass variadic arguments in integer registers even if they're floats +- if (soft_float || index >= nfixedargs) +- { +- switch (type) +- { +- case FFI_TYPE_FLOAT: +- type = FFI_TYPE_UINT32; +- break; +- case FFI_TYPE_DOUBLE: +- type = FFI_TYPE_UINT64; +- break; +- default: +- break; +- } +- } +- switch (type) ++ switch (t->type) + { + case FFI_TYPE_FLOAT: + case FFI_TYPE_DOUBLE: +- cif->flags += +- ((cif->arg_types)[index]->type << (arg_reg * FFI_FLAG_BITS)); ++ if (!soft_float && index < nfixedargs) ++ cif->flags += t->type << (arg_reg * FFI_FLAG_BITS); + arg_reg++; + break; + case FFI_TYPE_LONGDOUBLE: +@@ -491,17 +545,71 @@ static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; ++ if (arg_reg >= 8) ++ continue; + cif->flags += + (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); + arg_reg++; + } + break; + ++ case FFI_TYPE_COMPLEX: ++ switch (t->elements[0]->type) ++ { ++ case FFI_TYPE_LONGDOUBLE: ++ arg_reg = FFI_ALIGN(arg_reg, 2); ++ if (soft_float || index >= nfixedargs) ++ { ++ arg_reg += 2; ++ } ++ else ++ { ++ cif->flags += ++ (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); ++ arg_reg++; ++ if (arg_reg >= 8) ++ continue; ++ cif->flags += ++ (FFI_TYPE_DOUBLE << (arg_reg * FFI_FLAG_BITS)); ++ arg_reg++; ++ if (arg_reg >= 8) ++ continue; ++ } ++ /* passthrough */ ++ case FFI_TYPE_FLOAT: ++ // one fpr can only holds one arg even it is single ++ cif->bytes += 16; ++ /* passthrough */ ++ case FFI_TYPE_SINT32: ++ case FFI_TYPE_UINT32: ++ case FFI_TYPE_DOUBLE: ++ if (soft_float || index >= nfixedargs) ++ { ++ arg_reg += 2; ++ } ++ else ++ { ++ uint32_t type = t->elements[0]->type != FFI_TYPE_LONGDOUBLE? t->elements[0]->type: FFI_TYPE_DOUBLE; ++ cif->flags += ++ (type << (arg_reg * FFI_FLAG_BITS)); ++ arg_reg++; ++ if (arg_reg >= 8) ++ continue; ++ cif->flags += ++ (type << (arg_reg * FFI_FLAG_BITS)); ++ arg_reg++; ++ } ++ break; ++ default: ++ arg_reg += 2; ++ break; ++ } ++ break; ++ + case FFI_TYPE_STRUCT: + loc = arg_reg * FFI_SIZEOF_ARG; + cif->flags += calc_n32_struct_flags(soft_float || index >= nfixedargs, +- (cif->arg_types)[index], +- &loc, &arg_reg); ++ t, &loc, &arg_reg); + break; + + default: +@@ -539,7 +647,7 @@ static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) + + case FFI_TYPE_POINTER: + if (cif->abi == FFI_N32_SOFT_FLOAT || cif->abi == FFI_N32) +- cif->flags += FFI_TYPE_SINT32 << (FFI_FLAG_BITS * 8); ++ cif->flags += FFI_TYPE_UINT32 << (FFI_FLAG_BITS * 8); + else + cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8); + break; +@@ -563,8 +671,9 @@ static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) + two doubles. */ + if (soft_float) + { +- cif->flags += FFI_TYPE_STRUCT << (FFI_FLAG_BITS * 8); +- cif->flags += FFI_TYPE_SMALLSTRUCT2 << (4 + (FFI_FLAG_BITS * 8)); ++ /* if ret is long double, the ret is given by v0 and a0, no idea why ++ * Let's us VOID | VOID | LONGDOUBLE for it*/ ++ cif->flags += FFI_TYPE_LONGDOUBLE << (FFI_FLAG_BITS * 8); + } + else + { +@@ -574,13 +683,44 @@ static ffi_status ffi_prep_cif_machdep_int(ffi_cif *cif, unsigned nfixedargs) + << (4 + (FFI_FLAG_BITS * 8)); + } + break; ++ case FFI_TYPE_COMPLEX: ++ { ++ int type = cif->rtype->elements[0]->type; ++ ++ cif->flags += (FFI_TYPE_COMPLEX << (FFI_FLAG_BITS * 8)); ++ if (soft_float || (type != FFI_TYPE_FLOAT && type != FFI_TYPE_DOUBLE && type != FFI_TYPE_LONGDOUBLE)) ++ { ++ switch (type) ++ { ++ case FFI_TYPE_DOUBLE: ++ case FFI_TYPE_SINT64: ++ case FFI_TYPE_UINT64: ++ case FFI_TYPE_INT: ++ type = FFI_TYPE_SMALLSTRUCT2; ++ break; ++ case FFI_TYPE_LONGDOUBLE: ++ type = FFI_TYPE_LONGDOUBLE; ++ break; ++ case FFI_TYPE_FLOAT: ++ default: ++ type = FFI_TYPE_SMALLSTRUCT; ++ } ++ cif->flags += type << (4 + (FFI_FLAG_BITS * 8)); ++ } ++ else ++ { ++ //cif->flags += (type + (type << FFI_FLAG_BITS)) ++ // << (4 + (FFI_FLAG_BITS * 8)); ++ cif->flags += type << (4 + (FFI_FLAG_BITS * 8)); ++ } ++ break; ++ } + default: + cif->flags += FFI_TYPE_INT << (FFI_FLAG_BITS * 8); + break; + } + } + #endif +- + return FFI_OK; + } + +@@ -618,7 +758,7 @@ void ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, + /* value address then we need to make one */ + + if ((rvalue == NULL) && +- (cif->rtype->type == FFI_TYPE_STRUCT)) ++ (cif->rtype->type == FFI_TYPE_STRUCT || cif->rtype->type == FFI_TYPE_COMPLEX)) + ecif.rvalue = alloca(cif->rtype->size); + else + ecif.rvalue = rvalue; +@@ -830,6 +970,11 @@ ffi_closure_mips_inner_O32 (ffi_cif *cif, + argn = 1; + seen_int = 1; + } ++ if ((cif->flags >> (FFI_FLAG_BITS * 2)) == FFI_TYPE_COMPLEX) ++ { ++ rvalue = fpr; ++ argn = 1; ++ } + + i = 0; + avn = cif->nargs; +@@ -902,6 +1047,9 @@ ffi_closure_mips_inner_O32 (ffi_cif *cif, + } + else + { ++ if (cif->rtype->type == FFI_TYPE_COMPLEX) { ++ __asm__ volatile ("move $v1, %0" : : "r"(cif->rtype->size)); ++ } + return cif->rtype->type; + } + } +@@ -991,6 +1139,8 @@ ffi_closure_mips_inner_N32 (ffi_cif *cif, + #endif + argn = 1; + } ++ if (cif->rtype->type == FFI_TYPE_COMPLEX && cif->rtype->elements[0]->type == FFI_TYPE_LONGDOUBLE) ++ argn = 2; + + i = 0; + avn = cif->nargs; +@@ -1015,6 +1165,31 @@ ffi_closure_mips_inner_N32 (ffi_cif *cif, + #endif + avaluep[i] = (char *) argp; + } ++ else if (arg_types[i]->type == FFI_TYPE_COMPLEX && arg_types[i]->elements[0]->type == FFI_TYPE_DOUBLE) ++ { ++ argp = (argn >= 8 || i >= cif->mips_nfixedargs || soft_float) ? ar + argn : fpr + argn; ++ avaluep[i] = (char *) argp; ++ } ++ else if (arg_types[i]->type == FFI_TYPE_COMPLEX && arg_types[i]->elements[0]->type == FFI_TYPE_LONGDOUBLE) ++ { ++ /* align long double */ ++ argn += ((argn & 0x1)? 1 : 0); ++ argp = (argn >= 8 || i >= cif->mips_nfixedargs || soft_float) ? ar + argn : fpr + argn; ++ avaluep[i] = (char *) argp; ++ } ++ else if (arg_types[i]->type == FFI_TYPE_COMPLEX && arg_types[i]->elements[0]->type == FFI_TYPE_FLOAT) ++ { ++ if (argn >= 8 || i >= cif->mips_nfixedargs || soft_float) ++ argp = ar + argn; ++ else ++ { ++ argp = fpr + argn; ++ /* the normal args for function holds 8bytes, while here we convert it to ptr */ ++ uint32_t *tmp = (uint32_t *)argp; ++ tmp[1] = tmp[2]; ++ } ++ avaluep[i] = (char *) argp; ++ } + else + { + unsigned type = arg_types[i]->type; +@@ -1027,10 +1202,10 @@ ffi_closure_mips_inner_N32 (ffi_cif *cif, + /* The size of a pointer depends on the ABI */ + if (type == FFI_TYPE_POINTER) + type = (cif->abi == FFI_N64 || cif->abi == FFI_N64_SOFT_FLOAT) +- ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32; ++ ? FFI_TYPE_SINT64 : FFI_TYPE_UINT32; + + if (soft_float && type == FFI_TYPE_FLOAT) +- type = FFI_TYPE_UINT32; ++ type = FFI_TYPE_SINT32; + + switch (type) + { +diff --git a/vendor/libffi-sys/libffi/src/mips/ffitarget.h b/vendor/libffi-sys/libffi/src/mips/ffitarget.h +index fdd5ca90a..294c3ba1a 100644 +--- a/vendor/libffi-sys/libffi/src/mips/ffitarget.h ++++ b/vendor/libffi-sys/libffi/src/mips/ffitarget.h +@@ -80,6 +80,7 @@ + # endif + #endif + ++#define FFI_TARGET_HAS_COMPLEX_TYPE 1 + #define FFI_FLAG_BITS 2 + + /* SGI's strange assembler requires that we multiply by 4 rather +@@ -111,6 +112,12 @@ + #define FFI_TYPE_STRUCT_SMALL 93 + #define FFI_TYPE_STRUCT_SMALL2 109 + ++#define FFI_TYPE_COMPLEX_SMALL 95 ++#define FFI_TYPE_COMPLEX_SMALL2 111 ++#define FFI_TYPE_COMPLEX_FF 47 ++#define FFI_TYPE_COMPLEX_DD 63 ++#define FFI_TYPE_COMPLEX_LDLD 79 ++ + /* and for n32 soft float, add 16 * 2^4 */ + #define FFI_TYPE_STRUCT_D_SOFT 317 + #define FFI_TYPE_STRUCT_F_SOFT 301 +diff --git a/vendor/libffi-sys/libffi/src/mips/n32.S b/vendor/libffi-sys/libffi/src/mips/n32.S +index 23b77fdfd..e1938d114 100644 +--- a/vendor/libffi-sys/libffi/src/mips/n32.S ++++ b/vendor/libffi-sys/libffi/src/mips/n32.S +@@ -114,6 +114,16 @@ loadregs: + + REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6. + ++ # when retval is _Complex long double, $f12/$a0, $f13/$a1 will be skipped ++ # no idea why, but gcc does it. ++ SRL t4, t6, 8*FFI_FLAG_BITS ++ move t8, t6 ++ bne t4, FFI_TYPE_COMPLEX_LDLD, loadregs1 ++ ++ SLL t8, t6, 2*FFI_FLAG_BITS ++ ++ ++loadregs1: + #ifdef __mips_soft_float + REG_L a0, 0*FFI_SIZEOF_ARG(t9) + REG_L a1, 1*FFI_SIZEOF_ARG(t9) +@@ -124,7 +134,7 @@ loadregs: + REG_L a6, 6*FFI_SIZEOF_ARG(t9) + REG_L a7, 7*FFI_SIZEOF_ARG(t9) + #else +- and t4, t6, ((1<>4 ++ bne t1, FFI_TYPE_COMPLEX, noretval ++ jalr t9 ++ REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp) ++ REG_L t1, A3_OFF($fp) # load the flags word ++ SRL t1, t1, 8 ++ li t3, 3 ++ beq t1, t3, 3f # double ++ li t3, 2 ++ beq t1, t3, 2f # float ++ # FIXME: long double ++ slti t3, t1, 5 ++ beqz t3, 5f # (u)int8/16/32/64 ++2: ++#ifndef __mips_soft_float ++ s.s $f0, 0(t0) ++ s.s $f2, 4(t0) ++#else ++ # FIXME: do nothing can pass all of the testsuite ++#endif ++ b epilogue ++3: ++#ifndef __mips_soft_float ++ s.d $f0, 0(t0) ++ s.d $f2, 8(t0) ++#else ++ # FIXME: do nothing can pass all of the testsuite ++#endif ++ b epilogue ++ ++5: ++ REG_S v1, 4(t0) ++ REG_S v0, 0(t0) ++ b epilogue ++ + noretval: + jalr t9 + +@@ -378,6 +422,19 @@ $do_closure: + li $9, FFI_TYPE_DOUBLE + l.d $f0, V0_OFF2($fp) + beq $8, $9, closure_done ++ ++ li $9, FFI_TYPE_COMPLEX ++ bne $8, $9, 1f ++ ++ li $9, 8 ++ l.s $f0, V0_OFF2($fp) ++ l.s $f2, V1_OFF2($fp) ++ beq $3, $9, closure_done ++ ++ li $9, 16 ++ l.d $f0, V0_OFF2($fp) ++ l.d $f2, (V0_OFF2+8)($fp) ++ beq $3, $9, closure_done + #endif + 1: + REG_L $3, V1_OFF2($fp) +diff --git a/vendor/libffi-sys/libffi/src/moxie/ffi.c b/vendor/libffi-sys/libffi/src/moxie/ffi.c +index 16d2bb37c..99bcf4077 100644 +--- a/vendor/libffi-sys/libffi/src/moxie/ffi.c ++++ b/vendor/libffi-sys/libffi/src/moxie/ffi.c +@@ -1,7 +1,7 @@ + /* ----------------------------------------------------------------------- +- ffi.c - Copyright (C) 2012, 2013, 2018 Anthony Green +- +- Moxie Foreign Function Interface ++ ffi.c - Copyright (C) 2012, 2013, 2018, 2021, 2022 Anthony Green ++ ++ Moxie Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the +@@ -54,14 +54,14 @@ void *ffi_prep_args(char *stack, extended_cif *ecif) + i--, p_arg++) + { + size_t z; +- ++ + z = (*p_arg)->size; + + if ((*p_arg)->type == FFI_TYPE_STRUCT) + { + z = sizeof(void*); + *(void **) argp = *p_argv; +- } ++ } + else if (z < sizeof(int)) + { + z = sizeof(int); +@@ -70,19 +70,19 @@ void *ffi_prep_args(char *stack, extended_cif *ecif) + case FFI_TYPE_SINT8: + *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); + break; +- ++ + case FFI_TYPE_UINT8: + *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); + break; +- ++ + case FFI_TYPE_SINT16: + *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); + break; +- ++ + case FFI_TYPE_UINT16: + *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); + break; +- ++ + default: + FFI_ASSERT(0); + } +@@ -116,26 +116,28 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) + return FFI_OK; + } + +-extern void ffi_call_EABI(void *(*)(char *, extended_cif *), +- extended_cif *, +- unsigned, unsigned, +- unsigned *, ++extern void ffi_call_EABI(void *(*)(char *, extended_cif *), ++ extended_cif *, ++ unsigned, unsigned, ++ unsigned *, + void (*fn)(void)); + +-void ffi_call(ffi_cif *cif, +- void (*fn)(void), +- void *rvalue, ++void ffi_call(ffi_cif *cif, ++ void (*fn)(void), ++ void *rvalue, + void **avalue) + { + extended_cif ecif; ++ ffi_type **arg_types = cif->arg_types; ++ int i, nargs = cif->nargs; + + ecif.cif = cif; + ecif.avalue = avalue; +- ++ + /* If the return value is a struct and we don't have a return */ + /* value address then we need to make one */ + +- if ((rvalue == NULL) && ++ if ((rvalue == NULL) && + (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ecif.rvalue = alloca(cif->rtype->size); +@@ -143,10 +145,24 @@ void ffi_call(ffi_cif *cif, + else + ecif.rvalue = rvalue; + +- switch (cif->abi) ++ /* If we have any large structure arguments, make a copy so we are passing ++ by value. */ ++ for (i = 0; i < nargs; i++) ++ { ++ ffi_type *at = arg_types[i]; ++ int size = at->size; ++ if (at->type == FFI_TYPE_STRUCT) /* && size > 4) All struct args?? */ ++ { ++ char *argcopy = alloca (size); ++ memcpy (argcopy, avalue[i], size); ++ avalue[i] = argcopy; ++ } ++ } ++ ++ switch (cif->abi) + { + case FFI_EABI: +- ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, ++ ffi_call_EABI(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); + break; + default: +@@ -172,7 +188,7 @@ void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3, + void *struct_rvalue = (void *) arg1; + + /* 6 words reserved for register args + 3 words from jsr */ +- char *stack_args = frame_pointer + 9*4; ++ char *stack_args = frame_pointer + 9*4; + + /* Lay the register arguments down in a continuous chunk of memory. */ + unsigned register_args[6] = +@@ -211,7 +227,16 @@ void ffi_closure_eabi (unsigned arg1, unsigned arg2, unsigned arg3, + avalue[i] = ptr; + break; + case FFI_TYPE_STRUCT: +- avalue[i] = *(void**)ptr; ++ { ++ if (arg_types[i]->size > 4) ++ { ++ void *copy = alloca(arg_types[i]->size); ++ memcpy(copy, *(void**)ptr, arg_types[i]->size); ++ avalue[i] = copy; ++ } ++ else ++ avalue[i] = *(void**)ptr; ++ } + break; + default: + /* This is an 8-byte value. */ +diff --git a/vendor/libffi-sys/libffi/src/or1k/ffi.c b/vendor/libffi-sys/libffi/src/or1k/ffi.c +index 2bad938a2..9451d4e7e 100644 +--- a/vendor/libffi-sys/libffi/src/or1k/ffi.c ++++ b/vendor/libffi-sys/libffi/src/or1k/ffi.c +@@ -37,7 +37,7 @@ void* ffi_prep_args(char *stack, extended_cif *ecif) + ffi_type **arg; + int count = 0; + int nfixedargs; +- ++ + nfixedargs = ecif->cif->nfixedargs; + arg = ecif->cif->arg_types; + void **argv = ecif->avalue; +@@ -47,7 +47,7 @@ void* ffi_prep_args(char *stack, extended_cif *ecif) + *(void **) stack = ecif->rvalue; + stack += 4; + count = 4; +- } ++ } + for(i=0; icif->nargs; i++) + { + +@@ -55,12 +55,12 @@ void* ffi_prep_args(char *stack, extended_cif *ecif) + if ((nfixedargs == 0) && (count < 24)) + { + count = 24; +- stack = stacktemp + 24; ++ stack = stacktemp + 24; + } + nfixedargs--; + + s = 4; +- switch((*arg)->type) ++ switch((*arg)->type) + { + case FFI_TYPE_STRUCT: + *(void **)stack = *argv; +@@ -94,7 +94,7 @@ void* ffi_prep_args(char *stack, extended_cif *ecif) + { + stack += 4; + count += 4; +- } ++ } + s = (*arg)->size; + memcpy(stack, *argv, s); + break; +@@ -133,6 +133,19 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) + size += 4; + else + size += 8; ++ ++ /* If we have any large structure arguments, make a copy so we are passing ++ by value. */ ++ { ++ ffi_type *at = cif->arg_types[i]; ++ int size = at->size; ++ if (at->type == FFI_TYPE_STRUCT) /* && size > 4) All struct args? */ ++ { ++ char *argcopy = alloca (size); ++ memcpy (argcopy, avalue[i], size); ++ avalue[i] = argcopy; ++ } ++ } + } + + /* for variadic functions more space is needed on the stack */ +@@ -148,7 +161,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) + ecif.avalue = avalue; + ecif.rvalue = rvalue; + +- switch (cif->abi) ++ switch (cif->abi) + { + case FFI_SYSV: + ffi_call_SYSV(size, &ecif, ffi_prep_args, rvalue, fn, cif->flags); +@@ -160,7 +173,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) + } + + +-void ffi_closure_SYSV(unsigned long r3, unsigned long r4, unsigned long r5, ++void ffi_closure_SYSV(unsigned long r3, unsigned long r4, unsigned long r5, + unsigned long r6, unsigned long r7, unsigned long r8) + { + register int *sp __asm__ ("r17"); +@@ -186,7 +199,7 @@ void ffi_closure_SYSV(unsigned long r3, unsigned long r4, unsigned long r5, + + /* preserve struct type return pointer passing */ + +- if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) ++ if ((cif->rtype != NULL) && (cif->rtype->type == FFI_TYPE_STRUCT)) + { + ptr += 4; + count = 4; +@@ -256,7 +269,7 @@ void ffi_closure_SYSV(unsigned long r3, unsigned long r4, unsigned long r5, + long long rvalue; + (closure->fun) (cif, &rvalue, avalue, closure->user_data); + if (cif->rtype) +- asm ("l.ori r12, %0, 0x0\n l.lwz r11, 0(r12)\n l.lwz r12, 4(r12)" : : "r" (&rvalue)); ++ asm ("l.ori r12, %0, 0x0\n l.lwz r11, 0(r12)\n l.lwz r12, 4(r12)" : : "r" (&rvalue)); + } + } + +@@ -303,11 +316,11 @@ ffi_prep_closure_loc (ffi_closure* closure, + ffi_status ffi_prep_cif_machdep (ffi_cif *cif) + { + cif->flags = 0; +- ++ + /* structures are returned as pointers */ + if (cif->rtype->type == FFI_TYPE_STRUCT) + cif->flags = FFI_TYPE_STRUCT; +- else ++ else + if (cif->rtype->size > 4) + cif->flags = FFI_TYPE_UINT64; + +@@ -325,4 +338,4 @@ ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, + status = ffi_prep_cif_machdep (cif); + cif->nfixedargs = nfixedargs; + return status; +-} ++} +diff --git a/vendor/libffi-sys/libffi/src/powerpc/ffi_linux64.c b/vendor/libffi-sys/libffi/src/powerpc/ffi_linux64.c +index 4d50878e4..3454dacd3 100644 +--- a/vendor/libffi-sys/libffi/src/powerpc/ffi_linux64.c ++++ b/vendor/libffi-sys/libffi/src/powerpc/ffi_linux64.c +@@ -680,7 +680,7 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) + { + if (vecarg_count < NUM_VEC_ARG_REGISTERS64 + && i < nfixedargs) +- memcpy (vec_base.f128++, arg.f128, sizeof (float128)); ++ memcpy (vec_base.f128++, arg.f128++, sizeof (float128)); + else + memcpy (next_arg.f128, arg.f128++, sizeof (float128)); + if (++next_arg.f128 == gpr_end.f128) +diff --git a/vendor/libffi-sys/libffi/src/powerpc/linux64.S b/vendor/libffi-sys/libffi/src/powerpc/linux64.S +index e92d64af3..1f876ea39 100644 +--- a/vendor/libffi-sys/libffi/src/powerpc/linux64.S ++++ b/vendor/libffi-sys/libffi/src/powerpc/linux64.S +@@ -29,6 +29,8 @@ + #include + #include + ++ .machine altivec ++ + #ifdef POWERPC64 + .hidden ffi_call_LINUX64 + .globl ffi_call_LINUX64 +diff --git a/vendor/libffi-sys/libffi/src/powerpc/linux64_closure.S b/vendor/libffi-sys/libffi/src/powerpc/linux64_closure.S +index 3469a2cbb..199981db3 100644 +--- a/vendor/libffi-sys/libffi/src/powerpc/linux64_closure.S ++++ b/vendor/libffi-sys/libffi/src/powerpc/linux64_closure.S +@@ -30,6 +30,8 @@ + + .file "linux64_closure.S" + ++ .machine altivec ++ + #ifdef POWERPC64 + FFI_HIDDEN (ffi_closure_LINUX64) + .globl ffi_closure_LINUX64 +diff --git a/vendor/libffi-sys/libffi/src/powerpc/t-aix b/vendor/libffi-sys/libffi/src/powerpc/t-aix +new file mode 100644 +index 000000000..e7be1cafd +--- /dev/null ++++ b/vendor/libffi-sys/libffi/src/powerpc/t-aix +@@ -0,0 +1,5 @@ ++# This file is needed by GCC in order to correctly build AIX FAT ++# library for libffi. ++# However, it has no sense to include this code here, as it depends ++# on GCC multilib architecture. ++# Thus, this file is a simple stub replaced in GCC repository. +diff --git a/vendor/libffi-sys/libffi/src/prep_cif.c b/vendor/libffi-sys/libffi/src/prep_cif.c +index c1832b103..2d0f2521f 100644 +--- a/vendor/libffi-sys/libffi/src/prep_cif.c ++++ b/vendor/libffi-sys/libffi/src/prep_cif.c +@@ -1,6 +1,7 @@ + /* ----------------------------------------------------------------------- + prep_cif.c - Copyright (c) 2011, 2012, 2021 Anthony Green + Copyright (c) 1996, 1998, 2007 Red Hat, Inc. ++ Copyright (c) 2022 Oracle and/or its affiliates. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the +@@ -240,7 +241,7 @@ ffi_status ffi_prep_cif_var(ffi_cif *cif, + if (rc != FFI_OK) + return rc; + +- for (i = 1; i < ntotalargs; i++) ++ for (i = nfixedargs; i < ntotalargs; i++) + { + ffi_type *arg_type = atypes[i]; + if (arg_type == &ffi_type_float +diff --git a/vendor/libffi-sys/libffi/src/riscv/ffi.c b/vendor/libffi-sys/libffi/src/riscv/ffi.c +index c91085889..b455b12ae 100644 +--- a/vendor/libffi-sys/libffi/src/riscv/ffi.c ++++ b/vendor/libffi-sys/libffi/src/riscv/ffi.c +@@ -61,6 +61,7 @@ typedef struct call_builder + int used_integer; + int used_float; + size_t *used_stack; ++ void *struct_stack; + } call_builder; + + /* integer (not pointer) less than ABI XLEN */ +@@ -227,7 +228,9 @@ static void marshal(call_builder *cb, ffi_type *type, int var, void *data) { + #endif + + if (type->size > 2 * __SIZEOF_POINTER__) { +- /* pass by reference */ ++ /* copy to stack and pass by reference */ ++ data = memcpy (cb->struct_stack, data, type->size); ++ cb->struct_stack = (size_t *) FFI_ALIGN ((char *) cb->struct_stack + type->size, __SIZEOF_POINTER__); + marshal_atom(cb, FFI_TYPE_POINTER, &data); + } else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { + marshal_atom(cb, type->type, data); +@@ -335,10 +338,12 @@ ffi_call_int (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + that all remaining arguments are long long / __int128 */ + size_t arg_bytes = cif->nargs <= 3 ? 0 : + FFI_ALIGN(2 * sizeof(size_t) * (cif->nargs - 3), STKALIGN); ++ /* Allocate space for copies of big structures. */ ++ size_t struct_bytes = FFI_ALIGN (cif->bytes, STKALIGN); + size_t rval_bytes = 0; + if (rvalue == NULL && cif->rtype->size > 2*__SIZEOF_POINTER__) + rval_bytes = FFI_ALIGN(cif->rtype->size, STKALIGN); +- size_t alloc_size = arg_bytes + rval_bytes + sizeof(call_context); ++ size_t alloc_size = arg_bytes + rval_bytes + struct_bytes + sizeof(call_context); + + /* the assembly code will deallocate all stack data at lower addresses + than the argument region, so we need to allocate the frame and the +@@ -358,8 +363,9 @@ ffi_call_int (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + + call_builder cb; + cb.used_float = cb.used_integer = 0; +- cb.aregs = (call_context*)(alloc_base + arg_bytes + rval_bytes); ++ cb.aregs = (call_context*)(alloc_base + arg_bytes + rval_bytes + struct_bytes); + cb.used_stack = (void*)alloc_base; ++ cb.struct_stack = (void *) (alloc_base + arg_bytes + rval_bytes); + + int return_by_ref = passed_by_ref(&cb, cif->rtype, 0); + if (return_by_ref) +@@ -373,7 +379,32 @@ ffi_call_int (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, + + cb.used_float = cb.used_integer = 0; + if (!return_by_ref && rvalue) +- unmarshal(&cb, cif->rtype, 0, rvalue); ++ { ++ if (IS_INT(cif->rtype->type) ++ && cif->rtype->size < sizeof (ffi_arg)) ++ { ++ /* Integer types smaller than ffi_arg need to be extended. */ ++ switch (cif->rtype->type) ++ { ++ case FFI_TYPE_SINT8: ++ case FFI_TYPE_SINT16: ++ case FFI_TYPE_SINT32: ++ unmarshal_atom (&cb, (sizeof (ffi_arg) > 4 ++ ? FFI_TYPE_SINT64 : FFI_TYPE_SINT32), ++ rvalue); ++ break; ++ case FFI_TYPE_UINT8: ++ case FFI_TYPE_UINT16: ++ case FFI_TYPE_UINT32: ++ unmarshal_atom (&cb, (sizeof (ffi_arg) > 4 ++ ? FFI_TYPE_UINT64 : FFI_TYPE_UINT32), ++ rvalue); ++ break; ++ } ++ } ++ else ++ unmarshal(&cb, cif->rtype, 0, rvalue); ++ } + } + + void +@@ -417,7 +448,9 @@ ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void (*fun)( + closure->fun = fun; + closure->user_data = user_data; + ++#if !defined(__FreeBSD__) + __builtin___clear_cache(codeloc, codeloc + FFI_TRAMPOLINE_SIZE); ++#endif + + return FFI_OK; + } +diff --git a/vendor/libffi-sys/libffi/src/sparc/ffi64.c b/vendor/libffi-sys/libffi/src/sparc/ffi64.c +index 9e04061a4..5ae43e87d 100644 +--- a/vendor/libffi-sys/libffi/src/sparc/ffi64.c ++++ b/vendor/libffi-sys/libffi/src/sparc/ffi64.c +@@ -421,12 +421,28 @@ ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, + void **avalue, void *closure) + { + size_t bytes = cif->bytes; ++ size_t i, nargs = cif->nargs; ++ ffi_type **arg_types = cif->arg_types; + + FFI_ASSERT (cif->abi == FFI_V9); + + if (rvalue == NULL && (cif->flags & SPARC_FLAG_RET_IN_MEM)) + bytes += FFI_ALIGN (cif->rtype->size, 16); + ++ /* If we have any large structure arguments, make a copy so we are passing ++ by value. */ ++ for (i = 0; i < nargs; i++) ++ { ++ ffi_type *at = arg_types[i]; ++ int size = at->size; ++ if (at->type == FFI_TYPE_STRUCT && size > 4) ++ { ++ char *argcopy = alloca (size); ++ memcpy (argcopy, avalue[i], size); ++ avalue[i] = argcopy; ++ } ++ } ++ + ffi_call_v9(cif, fn, rvalue, avalue, -bytes, closure); + } + +diff --git a/vendor/libffi-sys/libffi/src/tramp.c b/vendor/libffi-sys/libffi/src/tramp.c +index 265aeaa3c..b9d273a1a 100644 +--- a/vendor/libffi-sys/libffi/src/tramp.c ++++ b/vendor/libffi-sys/libffi/src/tramp.c +@@ -1,5 +1,6 @@ + /* ----------------------------------------------------------------------- + tramp.c - Copyright (c) 2020 Madhavan T. Venkataraman ++ Copyright (c) 2022 Anthony Green + + API and support functions for managing statically defined closure + trampolines. +@@ -31,10 +32,10 @@ + + /* -------------------------- Headers and Definitions ---------------------*/ + /* +- * Add support for other OSes later. For now, it is just Linux. ++ * Add support for other OSes later. For now, it is just Linux and Cygwin. + */ + +-#if defined __linux__ ++#if defined (__linux__) || defined (__CYGWIN__) + #ifdef __linux__ + #define _GNU_SOURCE 1 + #endif +@@ -50,7 +51,10 @@ + #include + #include + #endif +-#endif /* __linux__ */ ++#ifdef __CYGWIN__ ++#include ++#endif ++#endif + + /* + * Each architecture defines static code for a trampoline code table. The +@@ -191,7 +195,7 @@ static struct tramp_globals tramp_globals; + */ + static int tramp_table_alloc (void); + +-#if defined __linux__ ++#if defined (__linux__) || defined (__CYGWIN__) + + static int + ffi_tramp_get_libffi (void) +@@ -245,24 +249,18 @@ ffi_tramp_get_libffi (void) + return 1; + } + +-#endif /* __linux__ */ +- +-#if defined __linux__ ++#endif /* defined (__linux__) || defined (__CYGWIN__) */ + +-#if defined HAVE_MKSTEMP ++#if defined (__linux__) || defined (__CYGWIN__) + + static int + ffi_tramp_get_temp_file (void) + { +- char template[12] = "/tmp/XXXXXX"; + ssize_t count; + + tramp_globals.offset = 0; +- tramp_globals.fd = mkstemp (template); +- if (tramp_globals.fd == -1) +- return 0; ++ tramp_globals.fd = open_temp_exec_file (); + +- unlink (template); + /* + * Write the trampoline code table into the temporary file and allocate a + * trampoline table to make sure that the temporary file can be mapped. +@@ -276,29 +274,11 @@ ffi_tramp_get_temp_file (void) + return 0; + } + +-#else /* !defined HAVE_MKSTEMP */ +- +-/* +- * TODO: +- * src/closures.c contains code for finding temp file that has EXEC +- * permissions. May be, some of that code can be shared with static +- * trampolines. +- */ +-static int +-ffi_tramp_get_temp_file (void) +-{ +- tramp_globals.offset = 0; +- tramp_globals.fd = -1; +- return 0; +-} +- +-#endif /* defined HAVE_MKSTEMP */ +- +-#endif /* __linux__ */ ++#endif /* defined (__linux__) || defined (__CYGWIN__) */ + + /* ------------------------ OS-specific Initialization ----------------------*/ + +-#if defined __linux__ ++#if defined (__linux__) || defined (__CYGWIN__) + + static int + ffi_tramp_init_os (void) +@@ -308,11 +288,11 @@ ffi_tramp_init_os (void) + return ffi_tramp_get_temp_file (); + } + +-#endif /* __linux__ */ ++#endif /* defined (__linux__) || defined (__CYGWIN__) */ + + /* --------------------------- OS-specific Locking -------------------------*/ + +-#if defined __linux__ ++#if defined (__linux__) || defined (__CYGWIN__) + + static pthread_mutex_t tramp_globals_mutex = PTHREAD_MUTEX_INITIALIZER; + +@@ -328,7 +308,7 @@ ffi_tramp_unlock() + pthread_mutex_unlock (&tramp_globals_mutex); + } + +-#endif /* __linux__ */ ++#endif /* defined (__linux__) || defined (__CYGWIN__) */ + + /* ------------------------ OS-specific Memory Mapping ----------------------*/ + +@@ -347,7 +327,7 @@ ffi_tramp_unlock() + * sizeof (struct tramp_parm) cannot exceed the size of a parameter block. + */ + +-#if defined __linux__ ++#if defined (__linux__) || defined (__CYGWIN__) + + static int + tramp_table_map (struct tramp_table *table) +@@ -384,7 +364,7 @@ tramp_table_unmap (struct tramp_table *table) + (void) munmap (table->parm_table, tramp_globals.map_size); + } + +-#endif /* __linux__ */ ++#endif /* defined (__linux__) || defined (__CYGWIN__) */ + + /* ------------------------ Trampoline Initialization ----------------------*/ + +diff --git a/vendor/libffi-sys/libffi/src/x86/ffi.c b/vendor/libffi-sys/libffi/src/x86/ffi.c +index 24431c170..b8bb1786f 100644 +--- a/vendor/libffi-sys/libffi/src/x86/ffi.c ++++ b/vendor/libffi-sys/libffi/src/x86/ffi.c +@@ -1,5 +1,5 @@ + /* ----------------------------------------------------------------------- +- ffi.c - Copyright (c) 2017 Anthony Green ++ ffi.c - Copyright (c) 2017, 2022 Anthony Green + Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc. + Copyright (c) 2002 Ranjit Mathew + Copyright (c) 2002 Bo Thorsen +@@ -117,35 +117,37 @@ ffi_prep_cif_machdep(ffi_cif *cif) + flags = X86_RET_INT64; + break; + case FFI_TYPE_STRUCT: +-#ifndef X86 +- /* ??? This should be a different ABI rather than an ifdef. */ +- if (cif->rtype->size == 1) +- flags = X86_RET_STRUCT_1B; +- else if (cif->rtype->size == 2) +- flags = X86_RET_STRUCT_2B; +- else if (cif->rtype->size == 4) +- flags = X86_RET_INT32; +- else if (cif->rtype->size == 8) +- flags = X86_RET_INT64; +- else ++ { ++#ifdef X86_WIN32 ++ size_t size = cif->rtype->size; ++ if (size == 1) ++ flags = X86_RET_STRUCT_1B; ++ else if (size == 2) ++ flags = X86_RET_STRUCT_2B; ++ else if (size == 4) ++ flags = X86_RET_INT32; ++ else if (size == 8) ++ flags = X86_RET_INT64; ++ else + #endif +- { +- do_struct: +- switch (cabi) +- { +- case FFI_THISCALL: +- case FFI_FASTCALL: +- case FFI_STDCALL: +- case FFI_MS_CDECL: +- flags = X86_RET_STRUCTARG; +- break; +- default: +- flags = X86_RET_STRUCTPOP; +- break; +- } +- /* Allocate space for return value pointer. */ +- bytes += FFI_ALIGN (sizeof(void*), FFI_SIZEOF_ARG); +- } ++ { ++ do_struct: ++ switch (cabi) ++ { ++ case FFI_THISCALL: ++ case FFI_FASTCALL: ++ case FFI_STDCALL: ++ case FFI_MS_CDECL: ++ flags = X86_RET_STRUCTARG; ++ break; ++ default: ++ flags = X86_RET_STRUCTPOP; ++ break; ++ } ++ /* Allocate space for return value pointer. */ ++ bytes += FFI_ALIGN (sizeof(void*), FFI_SIZEOF_ARG); ++ } ++ } + break; + case FFI_TYPE_COMPLEX: + switch (cif->rtype->elements[0]->type) +@@ -182,7 +184,12 @@ ffi_prep_cif_machdep(ffi_cif *cif) + { + ffi_type *t = cif->arg_types[i]; + +- bytes = FFI_ALIGN (bytes, t->alignment); ++#if defined(X86_WIN32) ++ if (cabi == FFI_STDCALL) ++ bytes = FFI_ALIGN (bytes, FFI_SIZEOF_ARG); ++ else ++#endif ++ bytes = FFI_ALIGN (bytes, t->alignment); + bytes += FFI_ALIGN (t->size, FFI_SIZEOF_ARG); + } + cif->bytes = bytes; +@@ -378,7 +385,7 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + cases. */ + if (t == FFI_TYPE_STRUCT && ty->alignment >= 16) + align = 16; +- ++ + if (dir < 0) + { + /* ??? These reverse argument ABIs are probably too old +@@ -609,7 +616,9 @@ ffi_prep_closure_loc (ffi_closure* closure, + tramp[9] = 0xe9; + *(unsigned *)(tramp + 10) = (unsigned)dest - ((unsigned)codeloc + 14); + ++#if defined(FFI_EXEC_STATIC_TRAMP) + out: ++#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; +diff --git a/vendor/libffi-sys/libffi/src/x86/ffi64.c b/vendor/libffi-sys/libffi/src/x86/ffi64.c +index 438b374e2..6a8e37fc5 100644 +--- a/vendor/libffi-sys/libffi/src/x86/ffi64.c ++++ b/vendor/libffi-sys/libffi/src/x86/ffi64.c +@@ -1,5 +1,5 @@ + /* ----------------------------------------------------------------------- +- ffi64.c - Copyright (c) 2011, 2018 Anthony Green ++ ffi64.c - Copyright (c) 2011, 2018, 2022 Anthony Green + Copyright (c) 2013 The Written Word, Inc. + Copyright (c) 2008, 2010 Red Hat, Inc. + Copyright (c) 2002, 2007 Bo Thorsen +@@ -581,6 +581,9 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + flags = UNIX64_RET_VOID; + } + ++ arg_types = cif->arg_types; ++ avn = cif->nargs; ++ + /* Allocate the space for the arguments, plus 4 words of temp space. */ + stack = alloca (sizeof (struct register_args) + cif->bytes + 4*8); + reg_args = (struct register_args *) stack; +@@ -595,9 +598,6 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + if (flags & UNIX64_FLAG_RET_IN_MEM) + reg_args->gpr[gprcount++] = (unsigned long) rvalue; + +- avn = cif->nargs; +- arg_types = cif->arg_types; +- + for (i = 0; i < avn; ++i) + { + size_t n, size = arg_types[i]->size; +@@ -613,11 +613,12 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + if (align < 8) + align = 8; + +- /* Pass this argument in memory. */ +- argp = (void *) FFI_ALIGN (argp, align); +- memcpy (argp, avalue[i], size); +- argp += size; +- } ++ /* Pass this argument in memory. */ ++ argp = (void *) FFI_ALIGN (argp, align); ++ memcpy (argp, avalue[i], size); ++ ++ argp += size; ++ } + else + { + /* The argument is passed entirely in registers. */ +@@ -681,6 +682,24 @@ ffi_call_efi64(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue); + void + ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) + { ++ ffi_type **arg_types = cif->arg_types; ++ int i, nargs = cif->nargs; ++ const int max_reg_struct_size = cif->abi == FFI_GNUW64 ? 8 : 16; ++ ++ /* If we have any large structure arguments, make a copy so we are passing ++ by value. */ ++ for (i = 0; i < nargs; i++) ++ { ++ ffi_type *at = arg_types[i]; ++ int size = at->size; ++ if (at->type == FFI_TYPE_STRUCT && size > max_reg_struct_size) ++ { ++ char *argcopy = alloca (size); ++ memcpy (argcopy, avalue[i], size); ++ avalue[i] = argcopy; ++ } ++ } ++ + #ifndef __ILP32__ + if (cif->abi == FFI_EFI64 || cif->abi == FFI_GNUW64) + { +@@ -780,7 +799,9 @@ ffi_prep_closure_loc (ffi_closure* closure, + memcpy (tramp, trampoline, sizeof(trampoline)); + *(UINT64 *)(tramp + sizeof (trampoline)) = (uintptr_t)dest; + ++#if defined(FFI_EXEC_STATIC_TRAMP) + out: ++#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; +diff --git a/vendor/libffi-sys/libffi/src/x86/ffitarget.h b/vendor/libffi-sys/libffi/src/x86/ffitarget.h +index f454341a2..5a3399d80 100644 +--- a/vendor/libffi-sys/libffi/src/x86/ffitarget.h ++++ b/vendor/libffi-sys/libffi/src/x86/ffitarget.h +@@ -41,6 +41,9 @@ + + #if defined (X86_64) && defined (__i386__) + #undef X86_64 ++#warning ****************************************************** ++#warning ********** X86 IS DEFINED **************************** ++#warning ****************************************************** + #define X86 + #endif + +@@ -85,9 +88,9 @@ typedef enum ffi_abi { + FFI_LAST_ABI, + #ifdef __GNUC__ + FFI_DEFAULT_ABI = FFI_GNUW64 +-#else ++#else + FFI_DEFAULT_ABI = FFI_WIN64 +-#endif ++#endif + + #elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN)) + FFI_FIRST_ABI = 1, +@@ -159,4 +162,3 @@ typedef enum ffi_abi { + #endif + + #endif +- +diff --git a/vendor/libffi-sys/libffi/src/x86/ffiw64.c b/vendor/libffi-sys/libffi/src/x86/ffiw64.c +index 6870d07c9..827165868 100644 +--- a/vendor/libffi-sys/libffi/src/x86/ffiw64.c ++++ b/vendor/libffi-sys/libffi/src/x86/ffiw64.c +@@ -123,9 +123,25 @@ ffi_call_int (ffi_cif *cif, void (*fn)(void), void *rvalue, + UINT64 *stack; + size_t rsize; + struct win64_call_frame *frame; ++ ffi_type **arg_types = cif->arg_types; ++ int nargs = cif->nargs; + + FFI_ASSERT(cif->abi == FFI_GNUW64 || cif->abi == FFI_WIN64); + ++ /* If we have any large structure arguments, make a copy so we are passing ++ by value. */ ++ for (i = 0; i < nargs; i++) ++ { ++ ffi_type *at = arg_types[i]; ++ int size = at->size; ++ if (at->type == FFI_TYPE_STRUCT && size > 8) ++ { ++ char *argcopy = alloca (size); ++ memcpy (argcopy, avalue[i], size); ++ avalue[i] = argcopy; ++ } ++ } ++ + flags = cif->flags; + rsize = 0; + +@@ -247,7 +263,9 @@ EFI64(ffi_prep_closure_loc)(ffi_closure* closure, + memcpy (tramp, trampoline, sizeof(trampoline)); + *(UINT64 *)(tramp + sizeof (trampoline)) = (uintptr_t)ffi_closure_win64; + ++#if defined(FFI_EXEC_STATIC_TRAMP) + out: ++#endif + closure->cif = cif; + closure->fun = fun; + closure->user_data = user_data; +diff --git a/vendor/libffi-sys/libffi/src/x86/sysv_intel.S b/vendor/libffi-sys/libffi/src/x86/sysv_intel.S +index 3cafd71ce..cccdf7d76 100644 +--- a/vendor/libffi-sys/libffi/src/x86/sysv_intel.S ++++ b/vendor/libffi-sys/libffi/src/x86/sysv_intel.S +@@ -1,9 +1,9 @@ + /* ----------------------------------------------------------------------- +- sysv.S - Copyright (c) 2017 Anthony Green ++ sysv.S - Copyright (c) 2017, 2022 Anthony Green + - Copyright (c) 2013 The Written Word, Inc. + - Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc. +- +- X86 Foreign Function Interface ++ ++ X86 Foreign Function Interface + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the +@@ -29,11 +29,11 @@ + #ifndef __x86_64__ + #ifdef _MSC_VER + +-#define LIBFFI_ASM ++#define LIBFFI_ASM + #include + #include + #include +-#include "internal.h" ++#include "internal.h" + + #define C2(X, Y) X ## Y + #define C1(X, Y) C2(X, Y) +@@ -89,8 +89,8 @@ L(UW0): + perspective of the unwind info, it hasn't moved. */ + mov ebp, ecx + L(UW1): +- // cfi_def_cfa(%ebp, 8) +- // cfi_rel_offset(%ebp, 0) ++ /* cfi_def_cfa(%ebp, 8) */ ++ /* cfi_rel_offset(%ebp, 0) */ + + mov esp, edx /* set outgoing argument stack */ + mov eax, [20+R_EAX*4+ebp] /* set register arguments */ +@@ -102,7 +102,7 @@ L(UW1): + mov ecx, [12+ebp] /* load return type code */ + mov [ebp+8], ebx /* preserve %ebx */ + L(UW2): +- // cfi_rel_offset(%ebx, 8) ++ /* cfi_rel_offset(%ebx, 8) */ + + and ecx, X86_RET_TYPE_MASK + lea ebx, [L(store_table) + ecx * 8] +@@ -148,13 +148,13 @@ L(e1): + mov esp, ebp + pop ebp + L(UW3): +- // cfi_remember_state +- // cfi_def_cfa(%esp, 4) +- // cfi_restore(%ebx) +- // cfi_restore(%ebp) ++ /* cfi_remember_state */ ++ /* cfi_def_cfa(%esp, 4) */ ++ /* cfi_restore(%ebx) */ ++ /* cfi_restore(%ebp) */ + ret + L(UW4): +- // cfi_restore_state ++ /* cfi_restore_state */ + + E(L(store_table), X86_RET_STRUCTPOP) + jmp L(e1) +@@ -174,7 +174,7 @@ E(L(store_table), X86_RET_UNUSED15) + int 3 + + L(UW5): +- // cfi_endproc ++ /* cfi_endproc */ + ENDF(@ffi_call_i386@8) + + /* The inner helper is declared as +@@ -242,10 +242,10 @@ ALIGN 16 + PUBLIC ffi_go_closure_EAX + ffi_go_closure_EAX PROC C + L(UW6): +- // cfi_startproc ++ /* cfi_startproc */ + sub esp, closure_FS + L(UW7): +- // cfi_def_cfa_offset(closure_FS + 4) ++ /* cfi_def_cfa_offset(closure_FS + 4) */ + FFI_CLOSURE_SAVE_REGS + mov edx, [eax+4] /* copy cif */ + mov ecx, [eax +8] /* copy fun */ +@@ -254,17 +254,17 @@ L(UW7): + mov [esp+closure_CF+36], eax /* closure is user_data */ + jmp L(do_closure_i386) + L(UW8): +- // cfi_endproc ++ /* cfi_endproc */ + ENDF(ffi_go_closure_EAX) + + ALIGN 16 + PUBLIC ffi_go_closure_ECX + ffi_go_closure_ECX PROC C + L(UW9): +- // cfi_startproc ++ /* cfi_startproc */ + sub esp, closure_FS + L(UW10): +- // cfi_def_cfa_offset(closure_FS + 4) ++ /* cfi_def_cfa_offset(closure_FS + 4) */ + FFI_CLOSURE_SAVE_REGS + mov edx, [ecx+4] /* copy cif */ + mov eax, [ecx+8] /* copy fun */ +@@ -273,7 +273,7 @@ L(UW10): + mov [esp+closure_CF+36], ecx /* closure is user_data */ + jmp L(do_closure_i386) + L(UW11): +- // cfi_endproc ++ /* cfi_endproc */ + ENDF(ffi_go_closure_ECX) + + /* The closure entry points are reached from the ffi_closure trampoline. +@@ -283,10 +283,10 @@ ALIGN 16 + PUBLIC ffi_closure_i386 + ffi_closure_i386 PROC C + L(UW12): +- // cfi_startproc ++ /* cfi_startproc */ + sub esp, closure_FS + L(UW13): +- // cfi_def_cfa_offset(closure_FS + 4) ++ /* cfi_def_cfa_offset(closure_FS + 4) */ + + FFI_CLOSURE_SAVE_REGS + FFI_CLOSURE_COPY_TRAMP_DATA +@@ -331,17 +331,17 @@ E(L(load_table2), X86_RET_VOID) + L(e2): + add esp, closure_FS + L(UW16): +- // cfi_adjust_cfa_offset(-closure_FS) ++ /* cfi_adjust_cfa_offset(-closure_FS) */ + ret + L(UW17): +- // cfi_adjust_cfa_offset(closure_FS) ++ /* cfi_adjust_cfa_offset(closure_FS) */ + E(L(load_table2), X86_RET_STRUCTPOP) + add esp, closure_FS + L(UW18): +- // cfi_adjust_cfa_offset(-closure_FS) ++ /* cfi_adjust_cfa_offset(-closure_FS) */ + ret 4 + L(UW19): +- // cfi_adjust_cfa_offset(closure_FS) ++ /* cfi_adjust_cfa_offset(closure_FS) */ + E(L(load_table2), X86_RET_STRUCTARG) + jmp L(e2) + E(L(load_table2), X86_RET_STRUCT_1B) +@@ -358,17 +358,17 @@ E(L(load_table2), X86_RET_UNUSED15) + int 3 + + L(UW20): +- // cfi_endproc ++ /* cfi_endproc */ + ENDF(ffi_closure_i386) + + ALIGN 16 + PUBLIC ffi_go_closure_STDCALL + ffi_go_closure_STDCALL PROC C + L(UW21): +- // cfi_startproc ++ /* cfi_startproc */ + sub esp, closure_FS + L(UW22): +- // cfi_def_cfa_offset(closure_FS + 4) ++ /* cfi_def_cfa_offset(closure_FS + 4) */ + FFI_CLOSURE_SAVE_REGS + mov edx, [ecx+4] /* copy cif */ + mov eax, [ecx+8] /* copy fun */ +@@ -377,7 +377,7 @@ L(UW22): + mov [esp+closure_CF+36], ecx /* closure is user_data */ + jmp L(do_closure_STDCALL) + L(UW23): +- // cfi_endproc ++ /* cfi_endproc */ + ENDF(ffi_go_closure_STDCALL) + + /* For REGISTER, we have no available parameter registers, and so we +@@ -387,19 +387,19 @@ ALIGN 16 + PUBLIC ffi_closure_REGISTER + ffi_closure_REGISTER PROC C + L(UW24): +- // cfi_startproc +- // cfi_def_cfa(%esp, 8) +- // cfi_offset(%eip, -8) ++ /* cfi_startproc */ ++ /* cfi_def_cfa(%esp, 8) */ ++ /* cfi_offset(%eip, -8) */ + sub esp, closure_FS-4 + L(UW25): +- // cfi_def_cfa_offset(closure_FS + 4) ++ /* cfi_def_cfa_offset(closure_FS + 4) */ + FFI_CLOSURE_SAVE_REGS + mov ecx, [esp+closure_FS-4] /* load retaddr */ + mov eax, [esp+closure_FS] /* load closure */ + mov [esp+closure_FS], ecx /* move retaddr */ + jmp L(do_closure_REGISTER) + L(UW26): +- // cfi_endproc ++ /* cfi_endproc */ + ENDF(ffi_closure_REGISTER) + + /* For STDCALL (and others), we need to pop N bytes of arguments off +@@ -410,10 +410,10 @@ ALIGN 16 + PUBLIC ffi_closure_STDCALL + ffi_closure_STDCALL PROC C + L(UW27): +- // cfi_startproc ++ /* cfi_startproc */ + sub esp, closure_FS + L(UW28): +- // cfi_def_cfa_offset(closure_FS + 4) ++ /* cfi_def_cfa_offset(closure_FS + 4) */ + + FFI_CLOSURE_SAVE_REGS + +@@ -504,7 +504,7 @@ E(L(load_table3), X86_RET_UNUSED15) + int 3 + + L(UW31): +- // cfi_endproc ++ /* cfi_endproc */ + ENDF(ffi_closure_STDCALL) + + #if !FFI_NO_RAW_API +@@ -515,13 +515,13 @@ ALIGN 16 + PUBLIC ffi_closure_raw_SYSV + ffi_closure_raw_SYSV PROC C + L(UW32): +- // cfi_startproc ++ /* cfi_startproc */ + sub esp, raw_closure_S_FS + L(UW33): +- // cfi_def_cfa_offset(raw_closure_S_FS + 4) ++ /* cfi_def_cfa_offset(raw_closure_S_FS + 4) */ + mov [esp+raw_closure_S_FS-4], ebx + L(UW34): +- // cfi_rel_offset(%ebx, raw_closure_S_FS-4) ++ /* cfi_rel_offset(%ebx, raw_closure_S_FS-4) */ + + mov edx, [eax+FFI_TRAMPOLINE_SIZE+8] /* load cl->user_data */ + mov [esp+12], edx +@@ -535,16 +535,16 @@ L(UW34): + + mov eax, [ebx+20] /* load cif->flags */ + and eax, X86_RET_TYPE_MASK +-// #ifdef __PIC__ +-// call __x86.get_pc_thunk.bx +-// L(pc4): +-// lea ecx, L(load_table4)-L(pc4)(%ebx, %eax, 8), %ecx +-// #else ++/* #ifdef __PIC__ */ ++/* call __x86.get_pc_thunk.bx */ ++/* L(pc4): */ ++/* lea ecx, L(load_table4)-L(pc4)(%ebx, %eax, 8), %ecx */ ++/* #else */ + lea ecx, [L(load_table4)+eax+8] +-// #endif ++/* #endif */ + mov ebx, [esp+raw_closure_S_FS-4] + L(UW35): +- // cfi_restore(%ebx) ++ /* cfi_restore(%ebx) */ + mov eax, [esp+16] /* Optimistic load */ + jmp dword ptr [ecx] + +@@ -581,17 +581,17 @@ E(L(load_table4), X86_RET_VOID) + L(e4): + add esp, raw_closure_S_FS + L(UW36): +- // cfi_adjust_cfa_offset(-raw_closure_S_FS) ++ /* cfi_adjust_cfa_offset(-raw_closure_S_FS) */ + ret + L(UW37): +- // cfi_adjust_cfa_offset(raw_closure_S_FS) ++ /* cfi_adjust_cfa_offset(raw_closure_S_FS) */ + E(L(load_table4), X86_RET_STRUCTPOP) + add esp, raw_closure_S_FS + L(UW38): +- // cfi_adjust_cfa_offset(-raw_closure_S_FS) ++ /* cfi_adjust_cfa_offset(-raw_closure_S_FS) */ + ret 4 + L(UW39): +- // cfi_adjust_cfa_offset(raw_closure_S_FS) ++ /* cfi_adjust_cfa_offset(raw_closure_S_FS) */ + E(L(load_table4), X86_RET_STRUCTARG) + jmp L(e4) + E(L(load_table4), X86_RET_STRUCT_1B) +@@ -608,7 +608,7 @@ E(L(load_table4), X86_RET_UNUSED15) + int 3 + + L(UW40): +- // cfi_endproc ++ /* cfi_endproc */ + ENDF(ffi_closure_raw_SYSV) + + #define raw_closure_T_FS (16+16+8) +@@ -617,26 +617,26 @@ ALIGN 16 + PUBLIC ffi_closure_raw_THISCALL + ffi_closure_raw_THISCALL PROC C + L(UW41): +- // cfi_startproc ++ /* cfi_startproc */ + /* Rearrange the stack such that %ecx is the first argument. + This means moving the return address. */ + pop edx + L(UW42): +- // cfi_def_cfa_offset(0) +- // cfi_register(%eip, %edx) ++ /* cfi_def_cfa_offset(0) */ ++ /* cfi_register(%eip, %edx) */ + push ecx + L(UW43): +- // cfi_adjust_cfa_offset(4) ++ /* cfi_adjust_cfa_offset(4) */ + push edx + L(UW44): +- // cfi_adjust_cfa_offset(4) +- // cfi_rel_offset(%eip, 0) ++ /* cfi_adjust_cfa_offset(4) */ ++ /* cfi_rel_offset(%eip, 0) */ + sub esp, raw_closure_T_FS + L(UW45): +- // cfi_adjust_cfa_offset(raw_closure_T_FS) ++ /* cfi_adjust_cfa_offset(raw_closure_T_FS) */ + mov [esp+raw_closure_T_FS-4], ebx + L(UW46): +- // cfi_rel_offset(%ebx, raw_closure_T_FS-4) ++ /* cfi_rel_offset(%ebx, raw_closure_T_FS-4) */ + + mov edx, [eax+FFI_TRAMPOLINE_SIZE+8] /* load cl->user_data */ + mov [esp+12], edx +@@ -650,16 +650,16 @@ L(UW46): + + mov eax, [ebx+20] /* load cif->flags */ + and eax, X86_RET_TYPE_MASK +-// #ifdef __PIC__ +-// call __x86.get_pc_thunk.bx +-// L(pc5): +-// leal L(load_table5)-L(pc5)(%ebx, %eax, 8), %ecx +-// #else ++/* #ifdef __PIC__ */ ++/* call __x86.get_pc_thunk.bx */ ++/* L(pc5): */ ++/* leal L(load_table5)-L(pc5)(%ebx, %eax, 8), %ecx */ ++/* #else */ + lea ecx, [L(load_table5)+eax*8] +-//#endif ++/*#endif */ + mov ebx, [esp+raw_closure_T_FS-4] + L(UW47): +- // cfi_restore(%ebx) ++ /* cfi_restore(%ebx) */ + mov eax, [esp+16] /* Optimistic load */ + jmp DWORD PTR [ecx] + +@@ -696,18 +696,18 @@ E(L(load_table5), X86_RET_VOID) + L(e5): + add esp, raw_closure_T_FS + L(UW48): +- // cfi_adjust_cfa_offset(-raw_closure_T_FS) ++ /* cfi_adjust_cfa_offset(-raw_closure_T_FS) */ + /* Remove the extra %ecx argument we pushed. */ + ret 4 + L(UW49): +- // cfi_adjust_cfa_offset(raw_closure_T_FS) ++ /* cfi_adjust_cfa_offset(raw_closure_T_FS) */ + E(L(load_table5), X86_RET_STRUCTPOP) + add esp, raw_closure_T_FS + L(UW50): +- // cfi_adjust_cfa_offset(-raw_closure_T_FS) ++ /* cfi_adjust_cfa_offset(-raw_closure_T_FS) */ + ret 8 + L(UW51): +- // cfi_adjust_cfa_offset(raw_closure_T_FS) ++ /* cfi_adjust_cfa_offset(raw_closure_T_FS) */ + E(L(load_table5), X86_RET_STRUCTARG) + jmp L(e5) + E(L(load_table5), X86_RET_STRUCT_1B) +@@ -724,7 +724,7 @@ E(L(load_table5), X86_RET_UNUSED15) + int 3 + + L(UW52): +- // cfi_endproc ++ /* cfi_endproc */ + ENDF(ffi_closure_raw_THISCALL) + + #endif /* !FFI_NO_RAW_API */ +@@ -743,20 +743,23 @@ ENDF(ffi_closure_raw_THISCALL) + # define COMDAT(X) + #endif + +-// #if defined(__PIC__) +-// COMDAT(C(__x86.get_pc_thunk.bx)) +-// C(__x86.get_pc_thunk.bx): +-// movl (%esp), %ebx +-// ret +-// ENDF(C(__x86.get_pc_thunk.bx)) +-// # if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE +-// COMDAT(C(__x86.get_pc_thunk.dx)) +-// C(__x86.get_pc_thunk.dx): +-// movl (%esp), %edx +-// ret +-// ENDF(C(__x86.get_pc_thunk.dx)) +-// #endif /* DARWIN || HIDDEN */ +-// #endif /* __PIC__ */ ++#if 0 ++#if defined(__PIC__) ++ COMDAT(C(__x86.get_pc_thunk.bx)) ++C(__x86.get_pc_thunk.bx): ++ movl (%esp), %ebx ++ ret ++ENDF(C(__x86.get_pc_thunk.bx)) ++# if defined X86_DARWIN || defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE ++ COMDAT(C(__x86.get_pc_thunk.dx)) ++C(__x86.get_pc_thunk.dx): ++ movl (%esp), %edx ++ ret ++ENDF(C(__x86.get_pc_thunk.dx)) ++#endif /* DARWIN || HIDDEN */ ++#endif /* __PIC__ */ ++#endif ++ + + #if 0 + /* Sadly, OSX cctools-as doesn't understand .cfi directives at all. */ +@@ -992,4 +995,4 @@ L(EFDE9): + #endif + #endif + +-END +\ No newline at end of file ++END +diff --git a/vendor/libffi-sys/libffi/src/x86/unix64.S b/vendor/libffi-sys/libffi/src/x86/unix64.S +index ca6fe0cb4..d9c5bd4c7 100644 +--- a/vendor/libffi-sys/libffi/src/x86/unix64.S ++++ b/vendor/libffi-sys/libffi/src/x86/unix64.S +@@ -39,14 +39,13 @@ + actual table. The entry points into the table are all 8 bytes. + The use of ORG asserts that we're at the correct location. */ + /* ??? The clang assembler doesn't handle .org with symbolic expressions. */ +-#if defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) ++#ifdef __CET__ ++/* Double slot size to 16 byte to add 4 bytes of ENDBR64. */ ++# define E(BASE, X) .balign 8; .org BASE + X * 16 ++#elif defined(__clang__) || defined(__APPLE__) || (defined (__sun__) && defined(__svr4__)) + # define E(BASE, X) .balign 8 + #else +-# ifdef __CET__ +-# define E(BASE, X) .balign 8; .org BASE + X * 16 +-# else +-# define E(BASE, X) .balign 8; .org BASE + X * 8 +-# endif ++# define E(BASE, X) .balign 8; .org BASE + X * 8 + #endif + + /* ffi_call_unix64 (void *args, unsigned long bytes, unsigned flags, +@@ -505,11 +504,19 @@ C(ffi_closure_unix64_alt): + * - restore the stack pointer to what it was when the trampoline was invoked. + */ + #ifdef ENDBR_PRESENT +-#define X86_DATA_OFFSET 4077 +-#define X86_CODE_OFFSET 4073 ++# define X86_DATA_OFFSET 4077 ++# ifdef __ILP32__ ++# define X86_CODE_OFFSET 4069 ++# else ++# define X86_CODE_OFFSET 4073 ++# endif + #else +-#define X86_DATA_OFFSET 4081 +-#define X86_CODE_OFFSET 4077 ++# define X86_DATA_OFFSET 4081 ++# ifdef __ILP32__ ++# define X86_CODE_OFFSET 4073 ++# else ++# define X86_CODE_OFFSET 4077 ++# endif + #endif + + .align UNIX64_TRAMP_MAP_SIZE +@@ -521,9 +528,17 @@ C(trampoline_code_table): + _CET_ENDBR + subq $16, %rsp /* Make space on the stack */ + movq %r10, (%rsp) /* Save %r10 on stack */ ++#ifdef __ILP32__ ++ movl X86_DATA_OFFSET(%rip), %r10d /* Copy data into %r10 */ ++#else + movq X86_DATA_OFFSET(%rip), %r10 /* Copy data into %r10 */ ++#endif + movq %r10, 8(%rsp) /* Save data on stack */ ++#ifdef __ILP32__ ++ movl X86_CODE_OFFSET(%rip), %r10d /* Copy code into %r10 */ ++#else + movq X86_CODE_OFFSET(%rip), %r10 /* Copy code into %r10 */ ++#endif + jmp *%r10 /* Jump to code */ + .align 8 + .endr +diff --git a/vendor/libffi-sys/libffi/src/x86/win64.S b/vendor/libffi-sys/libffi/src/x86/win64.S +index f3ace8d07..58ec6a155 100644 +--- a/vendor/libffi-sys/libffi/src/x86/win64.S ++++ b/vendor/libffi-sys/libffi/src/x86/win64.S +@@ -85,14 +85,13 @@ C(ffi_call_win64): + + /* Below, we're space constrained most of the time. Thus we eschew the + modern "mov, pop, ret" sequence (5 bytes) for "leave, ret" (2 bytes). */ +-.macro epilogue +- leaveq +- cfi_remember_state +- cfi_def_cfa(%rsp, 8) +- cfi_restore(%rbp) +- ret ++#define epilogue \ ++ leaveq; \ ++ cfi_remember_state; \ ++ cfi_def_cfa(%rsp, 8); \ ++ cfi_restore(%rbp); \ ++ ret; \ + cfi_restore_state +-.endm + + .align 8 + 0: +diff --git a/vendor/libffi-sys/libffi/src/xtensa/ffi.c b/vendor/libffi-sys/libffi/src/xtensa/ffi.c +index 9a0575ff9..82b42a16d 100644 +--- a/vendor/libffi-sys/libffi/src/xtensa/ffi.c ++++ b/vendor/libffi-sys/libffi/src/xtensa/ffi.c +@@ -86,11 +86,16 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) + break; + } + +- /* Round the stack up to a full 4 register frame, just in case +- (we use this size in movsp). This way, it's also a multiple of +- 8 bytes for 64-bit arguments. */ +- cif->bytes = FFI_ALIGN(cif->bytes, 16); +- ++ /* Round up stack size needed for arguments. ++ Allocate FFI_REGISTER_ARGS_SPACE bytes when there are only arguments ++ passed in registers, round space reserved for arguments passed on stack ++ up to ABI-specified alignment. */ ++ if (cif->bytes < FFI_REGISTER_NARGS * 4) ++ cif->bytes = FFI_REGISTER_ARGS_SPACE; ++ else ++ cif->bytes = FFI_REGISTER_ARGS_SPACE + ++ FFI_ALIGN(cif->bytes - FFI_REGISTER_NARGS * 4, ++ XTENSA_STACK_ALIGNMENT); + return FFI_OK; + } + +@@ -232,6 +237,9 @@ ffi_prep_closure_loc (ffi_closure* closure, + void *user_data, + void *codeloc) + { ++ if (cif->abi != FFI_SYSV) ++ return FFI_BAD_ABI; ++ + /* copye trampoline to stack and patch 'ffi_closure_SYSV' pointer */ + memcpy(closure->tramp, ffi_trampoline, FFI_TRAMPOLINE_SIZE); + *(unsigned int*)(&closure->tramp[8]) = (unsigned int)ffi_closure_SYSV; +@@ -277,15 +285,15 @@ ffi_closure_SYSV_inner(ffi_closure *closure, void **values, void *rvalue) + if (arg_types[i]->alignment == 8 && (areg & 1) != 0) + areg++; + +- // skip the entry 16,a1 framework, add 16 bytes (4 registers) ++ // skip the entry a1, * framework, see ffi_trampoline + if (areg == FFI_REGISTER_NARGS) +- areg += 4; ++ areg = (FFI_REGISTER_ARGS_SPACE + 32) / 4; + + if (arg_types[i]->type == FFI_TYPE_STRUCT) + { + int numregs = ((arg_types[i]->size + 3) & ~3) / 4; + if (areg < FFI_REGISTER_NARGS && areg + numregs > FFI_REGISTER_NARGS) +- areg = FFI_REGISTER_NARGS + 4; ++ areg = (FFI_REGISTER_ARGS_SPACE + 32) / 4; + } + + avalue[i] = &values[areg]; +diff --git a/vendor/libffi-sys/libffi/src/xtensa/ffitarget.h b/vendor/libffi-sys/libffi/src/xtensa/ffitarget.h +index 0ba728bc9..4231ed374 100644 +--- a/vendor/libffi-sys/libffi/src/xtensa/ffitarget.h ++++ b/vendor/libffi-sys/libffi/src/xtensa/ffitarget.h +@@ -43,6 +43,10 @@ typedef enum ffi_abi { + #endif + + #define FFI_REGISTER_NARGS 6 ++#define XTENSA_STACK_ALIGNMENT 16 ++#define FFI_REGISTER_ARGS_SPACE ((FFI_REGISTER_NARGS * 4 + \ ++ XTENSA_STACK_ALIGNMENT - 1) & \ ++ -XTENSA_STACK_ALIGNMENT) + + /* ---- Definitions for closures ----------------------------------------- */ + +diff --git a/vendor/libffi-sys/libffi/src/xtensa/sysv.S b/vendor/libffi-sys/libffi/src/xtensa/sysv.S +index e9421796f..70e83ac22 100644 +--- a/vendor/libffi-sys/libffi/src/xtensa/sysv.S ++++ b/vendor/libffi-sys/libffi/src/xtensa/sysv.S +@@ -43,6 +43,9 @@ + #error "xtensa/sysv.S out of sync with ffi.h" + #endif + ++#define FFI_REGISTER_ARGS_OFFSET ((XTENSA_STACK_ALIGNMENT - \ ++ FFI_REGISTER_NARGS * 4) & \ ++ (XTENSA_STACK_ALIGNMENT - 1)) + + /* ffi_call_SYSV (rvalue, rbytes, flags, (*fnaddr)(), bytes, ecif) + void *rvalue; a2 +@@ -62,28 +65,28 @@ ENTRY(ffi_call_SYSV) + mov a7, a1 # fp + movsp a1, a11 # set new sp = old_sp - bytes + ++ # align ffi_prep_args stack argument so that arguments ++ # passed on stack if any start on 16-byte aligned boundary ++ ++ addi a11, a11, FFI_REGISTER_ARGS_OFFSET ++ + movi a8, ffi_prep_args + callx8 a8 # ffi_prep_args(ecif, stack) + +- # prepare to move stack pointer back up to 6 arguments +- # note that 'bytes' is already aligned +- +- movi a10, 6*4 +- sub a11, a6, a10 +- movgez a6, a10, a11 +- add a6, a1, a6 ++ # prepare to move stack pointer back ++ # to point to arguments passed on stack + ++ addi a6, a1, FFI_REGISTER_ARGS_SPACE + + # we can pass up to 6 arguments in registers + # for simplicity, just load 6 arguments +- # (the stack size is at least 32 bytes, so no risk to cross boundaries) + +- l32i a10, a1, 0 +- l32i a11, a1, 4 +- l32i a12, a1, 8 +- l32i a13, a1, 12 +- l32i a14, a1, 16 +- l32i a15, a1, 20 ++ l32i a10, a1, FFI_REGISTER_ARGS_OFFSET + 0 ++ l32i a11, a1, FFI_REGISTER_ARGS_OFFSET + 4 ++ l32i a12, a1, FFI_REGISTER_ARGS_OFFSET + 8 ++ l32i a13, a1, FFI_REGISTER_ARGS_OFFSET + 12 ++ l32i a14, a1, FFI_REGISTER_ARGS_OFFSET + 16 ++ l32i a15, a1, FFI_REGISTER_ARGS_OFFSET + 20 + + # move stack pointer + +@@ -167,7 +170,7 @@ END(ffi_call_SYSV) + + ENTRY(ffi_cacheflush) + +- entry a1, 16 ++ entry a1, 32 + + 1: + #if XCHAL_DCACHE_SIZE +@@ -187,7 +190,14 @@ END(ffi_cacheflush) + + ENTRY(ffi_trampoline) + +- entry a1, 16 + (FFI_REGISTER_NARGS * 4) + (4 * 4) # [ 0] ++ /* 32 bytes for spill + spill overflow area of a frame that uses ++ call8, ++ FFI_REGISTER_NARGS * 4 bytes for arguments passed in registers, ++ aligned up to 4 to maintain 16 byte stack alignment, ++ 4 * 4 bytes for the result. ++ This size must be in sync with ffi_closure_SYSV_inner logic. ++ */ ++ entry a1, 32 + FFI_REGISTER_ARGS_SPACE + (4 * 4) # [ 0] + j 2f # [ 3] + .align 4 # [ 6] + 1: .long 0 # [ 8] +diff --git a/vendor/libffi-sys/libffi/testsuite/Makefile.am b/vendor/libffi-sys/libffi/testsuite/Makefile.am +index 1e4b35a34..c4331b1d3 100644 +--- a/vendor/libffi-sys/libffi/testsuite/Makefile.am ++++ b/vendor/libffi-sys/libffi/testsuite/Makefile.am +@@ -6,121 +6,128 @@ EXTRA_DEJAGNU_SITE_CONFIG=../local.exp + + CLEANFILES = *.exe core* *.log *.sum + +-EXTRA_DIST = lib/target-libpath.exp lib/libffi.exp lib/wrapper.exp \ +-libffi.call/strlen4.c libffi.call/struct10.c libffi.call/many_mixed.c \ +-libffi.call/float.c libffi.call/struct5.c libffi.call/return_fl3.c \ +-libffi.call/return_fl1.c libffi.call/call.exp libffi.call/pyobjc-tc.c \ +-libffi.call/float_va.c libffi.call/struct8.c libffi.call/pr1172638.c \ +-libffi.call/return_sc.c libffi.call/va_struct1.c \ +-libffi.call/align_stdcall.c libffi.call/struct9.c libffi.call/va_1.c \ +-libffi.call/va_2.c libffi.call/va_struct2.c libffi.call/return_fl2.c \ +-libffi.call/align_mixed.c libffi.call/ffitest.h libffi.call/struct4.c \ +-libffi.call/return_ldl.c libffi.call/float3.c libffi.call/return_sl.c \ +-libffi.call/return_dbl1.c libffi.call/err_bad_typedef.c \ +-libffi.call/return_ll1.c libffi.call/return_dbl2.c \ +-libffi.call/negint.c libffi.closures/nested_struct3.c \ +-libffi.call/struct2.c libffi.call/struct3.c libffi.call/return_fl.c \ +-libffi.call/offsets.c libffi.call/struct7.c libffi.call/va_struct3.c \ +-libffi.call/float1.c libffi.call/uninitialized.c libffi.call/many2.c \ +-libffi.call/struct6.c libffi.call/strlen2.c libffi.call/float2.c \ +-libffi.call/return_ul.c libffi.call/struct1.c libffi.call/strlen3.c \ +-libffi.call/return_dbl.c libffi.call/float4.c libffi.call/many.c \ +-libffi.call/strlen.c libffi.call/return_uc.c libffi.call/many_double.c \ +-libffi.call/return_ll.c libffi.call/promotion.c \ +-libffi.complex/complex_defs_longdouble.inc \ +-libffi.complex/cls_align_complex_float.c \ +-libffi.complex/cls_complex_va_float.c \ +-libffi.complex/cls_complex_struct_float.c \ +-libffi.complex/return_complex2_longdouble.c \ +-libffi.complex/cls_complex_float.c \ +-libffi.complex/return_complex_longdouble.c \ +-libffi.complex/return_complex2_float.c libffi.complex/cls_complex.inc \ +-libffi.complex/cls_complex_va_longdouble.c \ +-libffi.complex/return_complex_double.c \ +-libffi.complex/return_complex.inc libffi.complex/many_complex.inc \ +-libffi.complex/complex_float.c libffi.complex/cls_align_complex.inc \ +-libffi.complex/return_complex2_double.c \ +-libffi.complex/many_complex_float.c libffi.complex/ffitest.h \ +-libffi.complex/return_complex1_double.c \ +-libffi.complex/cls_complex_struct_longdouble.c \ +-libffi.complex/complex_defs_double.inc \ +-libffi.complex/cls_complex_va_double.c \ +-libffi.complex/many_complex_double.c \ +-libffi.complex/return_complex2.inc \ +-libffi.complex/return_complex1_float.c \ +-libffi.complex/complex_longdouble.c \ +-libffi.complex/complex_defs_float.inc \ +-libffi.complex/cls_complex_double.c \ +-libffi.complex/cls_align_complex_double.c \ +-libffi.complex/cls_align_complex_longdouble.c \ +-libffi.complex/complex_double.c libffi.complex/cls_complex_va.inc \ +-libffi.complex/many_complex_longdouble.c libffi.complex/complex.inc \ +-libffi.complex/return_complex1_longdouble.c \ +-libffi.complex/complex_int.c libffi.complex/cls_complex_longdouble.c \ +-libffi.complex/cls_complex_struct_double.c \ +-libffi.complex/return_complex1.inc libffi.complex/complex.exp \ +-libffi.complex/cls_complex_struct.inc \ +-libffi.complex/return_complex_float.c libffi.go/closure1.c \ +-libffi.go/aa-direct.c libffi.go/ffitest.h libffi.go/go.exp \ +-libffi.go/static-chain.h libffi.bhaible/bhaible.exp \ +-libffi.bhaible/test-call.c libffi.bhaible/alignof.h \ +-libffi.bhaible/testcases.c libffi.bhaible/test-callback.c \ +-libffi.bhaible/Makefile libffi.bhaible/README config/default.exp \ +-libffi.closures/cls_multi_sshort.c \ +-libffi.closures/cls_align_longdouble_split2.c \ +-libffi.closures/cls_1_1byte.c libffi.closures/cls_uint_va.c \ +-libffi.closures/cls_3_1byte.c libffi.closures/cls_many_mixed_args.c \ +-libffi.closures/cls_20byte1.c libffi.closures/cls_pointer_stack.c \ +-libffi.closures/cls_align_float.c libffi.closures/cls_5_1_byte.c \ +-libffi.closures/cls_9byte1.c libffi.closures/cls_align_uint32.c \ +-libffi.closures/stret_medium.c libffi.closures/cls_3byte1.c \ +-libffi.closures/cls_align_uint64.c libffi.closures/cls_longdouble_va.c \ +-libffi.closures/cls_align_pointer.c libffi.closures/cls_19byte.c \ +-libffi.closures/cls_ushort.c libffi.closures/cls_align_sint32.c \ +-libffi.closures/cls_ulonglong.c libffi.closures/cls_struct_va1.c \ +-libffi.closures/cls_9byte2.c libffi.closures/closure_fn5.c \ +-libffi.closures/cls_5byte.c libffi.closures/cls_3float.c \ +-libffi.closures/closure.exp libffi.closures/cls_schar.c \ +-libffi.closures/closure_fn4.c \ +-libffi.closures/closure_fn0.c libffi.closures/huge_struct.c \ +-libffi.closures/cls_64byte.c libffi.closures/cls_longdouble.c \ +-libffi.closures/cls_ulong_va.c libffi.closures/cls_6_1_byte.c \ +-libffi.closures/cls_align_uint16.c libffi.closures/closure_fn2.c \ +-libffi.closures/unwindtest_ffi_call.cc \ +-libffi.closures/cls_multi_ushortchar.c libffi.closures/cls_8byte.c \ +-libffi.closures/ffitest.h libffi.closures/nested_struct8.c \ +-libffi.closures/cls_pointer.c libffi.closures/nested_struct2.c \ +-libffi.closures/nested_struct.c libffi.closures/cls_multi_schar.c \ +-libffi.closures/cls_align_longdouble_split.c \ +-libffi.closures/cls_uchar.c libffi.closures/nested_struct9.c \ +-libffi.closures/cls_float.c libffi.closures/stret_medium2.c \ +-libffi.closures/closure_loc_fn0.c libffi.closures/cls_6byte.c \ +-libffi.closures/closure_simple.c libffi.closures/cls_align_double.c \ +-libffi.closures/cls_multi_uchar.c libffi.closures/cls_4_1byte.c \ +-libffi.closures/closure_fn3.c libffi.closures/cls_align_sint64.c \ +-libffi.closures/nested_struct1.c libffi.closures/unwindtest.cc \ +-libffi.closures/nested_struct5.c libffi.closures/cls_multi_ushort.c \ +-libffi.closures/nested_struct11.c \ +-libffi.closures/nested_struct12.c \ +-libffi.closures/nested_struct13.c \ +-libffi.closures/cls_multi_sshortchar.c \ +-libffi.closures/cls_align_longdouble.c \ +-libffi.closures/cls_dbls_struct.c \ +-libffi.closures/cls_many_mixed_float_double.c \ +-libffi.closures/stret_large.c libffi.closures/stret_large2.c \ +-libffi.closures/cls_align_sint16.c libffi.closures/cls_2byte.c \ +-libffi.closures/nested_struct4.c libffi.closures/problem1.c \ +-libffi.closures/testclosure.c libffi.closures/nested_struct6.c \ +-libffi.closures/cls_4byte.c libffi.closures/cls_24byte.c \ +-libffi.closures/nested_struct10.c libffi.closures/cls_uint.c \ +-libffi.closures/cls_12byte.c libffi.closures/cls_sint.c \ +-libffi.closures/cls_7_1_byte.c libffi.closures/cls_sshort.c \ +-libffi.closures/cls_16byte.c libffi.closures/nested_struct7.c \ +-libffi.closures/cls_double_va.c libffi.closures/cls_3byte2.c \ +-libffi.closures/cls_double.c libffi.closures/cls_7byte.c \ +-libffi.closures/closure_fn6.c libffi.closures/closure_fn1.c \ +-libffi.closures/cls_20byte.c libffi.closures/cls_18byte.c \ +-libffi.closures/err_bad_abi.c \ +-libffi.closures/single_entry_structs1.c \ +-libffi.closures/single_entry_structs2.c \ +-libffi.closures/single_entry_structs3.c ++EXTRA_DIST = config/default.exp lib/libffi.exp lib/target-libpath.exp \ ++lib/wrapper.exp libffi.bhaible/Makefile libffi.bhaible/README \ ++libffi.bhaible/alignof.h libffi.bhaible/bhaible.exp \ ++libffi.bhaible/test-call.c libffi.bhaible/test-callback.c \ ++libffi.bhaible/testcases.c libffi.call/align_mixed.c \ ++libffi.call/align_stdcall.c libffi.call/call.exp \ ++libffi.call/err_bad_typedef.c libffi.call/ffitest.h \ ++libffi.call/float.c libffi.call/float1.c libffi.call/float2.c \ ++libffi.call/float3.c libffi.call/float4.c libffi.call/float_va.c \ ++libffi.call/many.c libffi.call/many2.c libffi.call/many_double.c \ ++libffi.call/many_mixed.c libffi.call/negint.c libffi.call/offsets.c \ ++libffi.call/pr1172638.c libffi.call/promotion.c \ ++libffi.call/pyobjc_tc.c libffi.call/return_dbl.c \ ++libffi.call/return_dbl1.c libffi.call/return_dbl2.c \ ++libffi.call/return_fl.c libffi.call/return_fl1.c \ ++libffi.call/return_fl2.c libffi.call/return_fl3.c \ ++libffi.call/return_ldl.c libffi.call/return_ll.c \ ++libffi.call/return_ll1.c libffi.call/return_sc.c \ ++libffi.call/return_sl.c libffi.call/return_uc.c \ ++libffi.call/return_ul.c libffi.call/struct1.c libffi.call/struct10.c \ ++libffi.call/struct2.c libffi.call/struct3.c libffi.call/struct4.c \ ++libffi.call/struct5.c libffi.call/struct6.c libffi.call/struct7.c \ ++libffi.call/struct8.c libffi.call/struct9.c \ ++libffi.call/uninitialized.c libffi.call/va_1.c libffi.call/va_2.c \ ++libffi.call/va_3.c libffi.call/va_struct1.c libffi.call/va_struct2.c \ ++libffi.call/va_struct3.c libffi.call/struct_by_value_big.c \ ++libffi.call/struct_by_value_2.c libffi.call/struct_by_value_3.c \ ++libffi.call/struct_by_value_4.c libffi.call/struct_by_value_small.c \ ++libffi.call/strlen2.c libffi.call/strlen3.c libffi.call/strlen4.c \ ++libffi.call/strlen.c libffi.call/va_3.c \ ++libffi.call/struct_by_value_2.c libffi.call/struct_by_value_3.c \ ++libffi.call/struct_by_value_4.c libffi.closures/closure.exp \ ++libffi.call/s55.c libffi.call/bpo-38748.c \ ++libffi.closures/closure_fn0.c libffi.closures/closure_fn1.c \ ++libffi.closures/closure_fn2.c libffi.closures/closure_fn3.c \ ++libffi.closures/closure_fn4.c libffi.closures/closure_fn5.c \ ++libffi.closures/closure_fn6.c libffi.closures/closure_loc_fn0.c \ ++libffi.closures/closure_simple.c libffi.closures/cls_12byte.c \ ++libffi.closures/cls_16byte.c libffi.closures/cls_18byte.c \ ++libffi.closures/cls_19byte.c libffi.closures/cls_1_1byte.c \ ++libffi.closures/cls_20byte.c libffi.closures/cls_20byte1.c \ ++libffi.closures/cls_24byte.c libffi.closures/cls_2byte.c \ ++libffi.closures/cls_3_1byte.c libffi.closures/cls_3byte1.c \ ++libffi.closures/cls_3byte2.c libffi.closures/cls_3float.c \ ++libffi.closures/cls_4_1byte.c libffi.closures/cls_4byte.c \ ++libffi.closures/cls_5_1_byte.c libffi.closures/cls_5byte.c \ ++libffi.closures/cls_64byte.c libffi.closures/cls_6_1_byte.c \ ++libffi.closures/cls_6byte.c libffi.closures/cls_7_1_byte.c \ ++libffi.closures/cls_7byte.c libffi.closures/cls_8byte.c \ ++libffi.closures/cls_9byte1.c libffi.closures/cls_9byte2.c \ ++libffi.closures/cls_align_double.c libffi.closures/cls_align_float.c \ ++libffi.closures/cls_align_longdouble.c \ ++libffi.closures/cls_align_pointer.c \ ++libffi.closures/cls_align_sint16.c libffi.closures/cls_align_sint32.c \ ++libffi.closures/cls_align_sint64.c libffi.closures/cls_align_uint16.c \ ++libffi.closures/cls_align_uint32.c libffi.closures/cls_align_uint64.c \ ++libffi.closures/cls_dbls_struct.c libffi.closures/cls_double.c \ ++libffi.closures/cls_double_va.c libffi.closures/cls_float.c \ ++libffi.closures/cls_longdouble_va.c \ ++libffi.closures/cls_many_mixed_args.c \ ++libffi.closures/cls_many_mixed_float_double.c \ ++libffi.closures/cls_multi_schar.c libffi.closures/cls_multi_sshort.c \ ++libffi.closures/cls_multi_sshortchar.c \ ++libffi.closures/cls_multi_uchar.c libffi.closures/cls_multi_ushort.c \ ++libffi.closures/cls_multi_ushortchar.c libffi.closures/cls_pointer.c \ ++libffi.closures/cls_pointer_stack.c libffi.closures/cls_schar.c \ ++libffi.closures/cls_sint.c libffi.closures/cls_sshort.c \ ++libffi.closures/cls_struct_va1.c libffi.closures/cls_uchar.c \ ++libffi.closures/cls_uint.c libffi.closures/cls_uint_va.c \ ++libffi.closures/cls_ulong_va.c libffi.closures/cls_ulonglong.c \ ++libffi.closures/cls_ushort.c libffi.closures/err_bad_abi.c \ ++libffi.closures/ffitest.h libffi.closures/nested_struct.c \ ++libffi.closures/nested_struct1.c libffi.closures/nested_struct10.c \ ++libffi.closures/nested_struct11.c libffi.closures/nested_struct12.c \ ++libffi.closures/nested_struct13.c libffi.closures/nested_struct2.c \ ++libffi.closures/nested_struct3.c libffi.closures/nested_struct4.c \ ++libffi.closures/nested_struct5.c libffi.closures/nested_struct6.c \ ++libffi.closures/nested_struct7.c libffi.closures/nested_struct8.c \ ++libffi.closures/nested_struct9.c libffi.closures/problem1.c \ ++libffi.closures/single_entry_structs1.c \ ++libffi.closures/single_entry_structs2.c \ ++libffi.closures/single_entry_structs3.c libffi.closures/stret_large.c \ ++libffi.closures/stret_large2.c libffi.closures/stret_medium.c \ ++libffi.closures/stret_medium2.c libffi.closures/testclosure.c \ ++libffi.closures/unwindtest.cc libffi.closures/unwindtest_ffi_call.cc \ ++libffi.closures/cls_align_longdouble_split.c \ ++libffi.closures/cls_align_longdouble_split2.c \ ++libffi.closures/cls_longdouble.c libffi.closures/huge_struct.c \ ++libffi.complex/cls_align_complex.inc \ ++libffi.complex/cls_align_complex_double.c \ ++libffi.complex/cls_align_complex_float.c \ ++libffi.complex/cls_align_complex_longdouble.c \ ++libffi.complex/cls_complex.inc libffi.complex/cls_complex_double.c \ ++libffi.complex/cls_complex_float.c \ ++libffi.complex/cls_complex_longdouble.c \ ++libffi.complex/cls_complex_struct.inc \ ++libffi.complex/cls_complex_struct_double.c \ ++libffi.complex/cls_complex_struct_float.c \ ++libffi.complex/cls_complex_struct_longdouble.c \ ++libffi.complex/cls_complex_va.inc \ ++libffi.complex/cls_complex_va_double.c \ ++libffi.complex/cls_complex_va_float.c \ ++libffi.complex/cls_complex_va_longdouble.c libffi.complex/complex.exp \ ++libffi.complex/complex.inc libffi.complex/complex_defs_double.inc \ ++libffi.complex/complex_defs_float.inc \ ++libffi.complex/complex_defs_longdouble.inc \ ++libffi.complex/complex_double.c libffi.complex/complex_float.c \ ++libffi.complex/complex_int.c libffi.complex/complex_longdouble.c \ ++libffi.complex/ffitest.h libffi.complex/many_complex.inc \ ++libffi.complex/many_complex_double.c \ ++libffi.complex/many_complex_float.c \ ++libffi.complex/many_complex_longdouble.c \ ++libffi.complex/return_complex.inc libffi.complex/return_complex1.inc \ ++libffi.complex/return_complex1_double.c \ ++libffi.complex/return_complex1_float.c \ ++libffi.complex/return_complex1_longdouble.c \ ++libffi.complex/return_complex2.inc \ ++libffi.complex/return_complex2_double.c \ ++libffi.complex/return_complex2_float.c \ ++libffi.complex/return_complex2_longdouble.c \ ++libffi.complex/return_complex_double.c \ ++libffi.complex/return_complex_float.c \ ++libffi.complex/return_complex_longdouble.c libffi.go/aa-direct.c \ ++libffi.go/closure1.c libffi.go/ffitest.h libffi.go/go.exp \ ++libffi.go/static-chain.h +diff --git a/vendor/libffi-sys/libffi/testsuite/Makefile.in b/vendor/libffi-sys/libffi/testsuite/Makefile.in +index dd166cbd2..b3750c9e4 100644 +--- a/vendor/libffi-sys/libffi/testsuite/Makefile.in ++++ b/vendor/libffi-sys/libffi/testsuite/Makefile.in +@@ -1,7 +1,7 @@ +-# Makefile.in generated by automake 1.16.2 from Makefile.am. ++# Makefile.in generated by automake 1.16.5 from Makefile.am. + # @configure_input@ + +-# Copyright (C) 1994-2020 Free Software Foundation, Inc. ++# Copyright (C) 1994-2021 Free Software Foundation, Inc. + + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -91,7 +91,6 @@ target_triplet = @target@ + subdir = testsuite + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ +- $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_cc_maxopt.m4 \ + $(top_srcdir)/m4/ax_cflags_warn_all.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ +@@ -100,6 +99,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/asmcfi.m4 \ + $(top_srcdir)/m4/ax_enable_builddir.m4 \ + $(top_srcdir)/m4/ax_gcc_archflag.m4 \ + $(top_srcdir)/m4/ax_gcc_x86_cpuid.m4 \ ++ $(top_srcdir)/m4/ax_prepend_flag.m4 \ + $(top_srcdir)/m4/ax_require_defined.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ +@@ -155,8 +155,9 @@ CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ + CFLAGS = @CFLAGS@ +-CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ ++CSCOPE = @CSCOPE@ ++CTAGS = @CTAGS@ + CXX = @CXX@ + CXXCPP = @CXXCPP@ + CXXDEPMODE = @CXXDEPMODE@ +@@ -171,9 +172,11 @@ ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ ++ETAGS = @ETAGS@ + EXEEXT = @EXEEXT@ + FFI_EXEC_TRAMPOLINE_TABLE = @FFI_EXEC_TRAMPOLINE_TABLE@ + FGREP = @FGREP@ ++FILECMD = @FILECMD@ + GREP = @GREP@ + HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@ + HAVE_LONG_DOUBLE_VARIANT = @HAVE_LONG_DOUBLE_VARIANT@ +@@ -279,6 +282,7 @@ target_alias = @target_alias@ + target_cpu = @target_cpu@ + target_os = @target_os@ + target_vendor = @target_vendor@ ++tmake_file = @tmake_file@ + toolexecdir = @toolexecdir@ + toolexeclibdir = @toolexeclibdir@ + top_build_prefix = @top_build_prefix@ +@@ -287,124 +291,131 @@ top_srcdir = @top_srcdir@ + AUTOMAKE_OPTIONS = foreign dejagnu + EXTRA_DEJAGNU_SITE_CONFIG = ../local.exp + CLEANFILES = *.exe core* *.log *.sum +-EXTRA_DIST = lib/target-libpath.exp lib/libffi.exp lib/wrapper.exp \ +-libffi.call/strlen4.c libffi.call/struct10.c libffi.call/many_mixed.c \ +-libffi.call/float.c libffi.call/struct5.c libffi.call/return_fl3.c \ +-libffi.call/return_fl1.c libffi.call/call.exp libffi.call/pyobjc-tc.c \ +-libffi.call/float_va.c libffi.call/struct8.c libffi.call/pr1172638.c \ +-libffi.call/return_sc.c libffi.call/va_struct1.c \ +-libffi.call/align_stdcall.c libffi.call/struct9.c libffi.call/va_1.c \ +-libffi.call/va_2.c libffi.call/va_struct2.c libffi.call/return_fl2.c \ +-libffi.call/align_mixed.c libffi.call/ffitest.h libffi.call/struct4.c \ +-libffi.call/return_ldl.c libffi.call/float3.c libffi.call/return_sl.c \ +-libffi.call/return_dbl1.c libffi.call/err_bad_typedef.c \ +-libffi.call/return_ll1.c libffi.call/return_dbl2.c \ +-libffi.call/negint.c libffi.closures/nested_struct3.c \ +-libffi.call/struct2.c libffi.call/struct3.c libffi.call/return_fl.c \ +-libffi.call/offsets.c libffi.call/struct7.c libffi.call/va_struct3.c \ +-libffi.call/float1.c libffi.call/uninitialized.c libffi.call/many2.c \ +-libffi.call/struct6.c libffi.call/strlen2.c libffi.call/float2.c \ +-libffi.call/return_ul.c libffi.call/struct1.c libffi.call/strlen3.c \ +-libffi.call/return_dbl.c libffi.call/float4.c libffi.call/many.c \ +-libffi.call/strlen.c libffi.call/return_uc.c libffi.call/many_double.c \ +-libffi.call/return_ll.c libffi.call/promotion.c \ +-libffi.complex/complex_defs_longdouble.inc \ +-libffi.complex/cls_align_complex_float.c \ +-libffi.complex/cls_complex_va_float.c \ +-libffi.complex/cls_complex_struct_float.c \ +-libffi.complex/return_complex2_longdouble.c \ +-libffi.complex/cls_complex_float.c \ +-libffi.complex/return_complex_longdouble.c \ +-libffi.complex/return_complex2_float.c libffi.complex/cls_complex.inc \ +-libffi.complex/cls_complex_va_longdouble.c \ +-libffi.complex/return_complex_double.c \ +-libffi.complex/return_complex.inc libffi.complex/many_complex.inc \ +-libffi.complex/complex_float.c libffi.complex/cls_align_complex.inc \ +-libffi.complex/return_complex2_double.c \ +-libffi.complex/many_complex_float.c libffi.complex/ffitest.h \ +-libffi.complex/return_complex1_double.c \ +-libffi.complex/cls_complex_struct_longdouble.c \ +-libffi.complex/complex_defs_double.inc \ +-libffi.complex/cls_complex_va_double.c \ +-libffi.complex/many_complex_double.c \ +-libffi.complex/return_complex2.inc \ +-libffi.complex/return_complex1_float.c \ +-libffi.complex/complex_longdouble.c \ +-libffi.complex/complex_defs_float.inc \ +-libffi.complex/cls_complex_double.c \ +-libffi.complex/cls_align_complex_double.c \ +-libffi.complex/cls_align_complex_longdouble.c \ +-libffi.complex/complex_double.c libffi.complex/cls_complex_va.inc \ +-libffi.complex/many_complex_longdouble.c libffi.complex/complex.inc \ +-libffi.complex/return_complex1_longdouble.c \ +-libffi.complex/complex_int.c libffi.complex/cls_complex_longdouble.c \ +-libffi.complex/cls_complex_struct_double.c \ +-libffi.complex/return_complex1.inc libffi.complex/complex.exp \ +-libffi.complex/cls_complex_struct.inc \ +-libffi.complex/return_complex_float.c libffi.go/closure1.c \ +-libffi.go/aa-direct.c libffi.go/ffitest.h libffi.go/go.exp \ +-libffi.go/static-chain.h libffi.bhaible/bhaible.exp \ +-libffi.bhaible/test-call.c libffi.bhaible/alignof.h \ +-libffi.bhaible/testcases.c libffi.bhaible/test-callback.c \ +-libffi.bhaible/Makefile libffi.bhaible/README config/default.exp \ +-libffi.closures/cls_multi_sshort.c \ +-libffi.closures/cls_align_longdouble_split2.c \ +-libffi.closures/cls_1_1byte.c libffi.closures/cls_uint_va.c \ +-libffi.closures/cls_3_1byte.c libffi.closures/cls_many_mixed_args.c \ +-libffi.closures/cls_20byte1.c libffi.closures/cls_pointer_stack.c \ +-libffi.closures/cls_align_float.c libffi.closures/cls_5_1_byte.c \ +-libffi.closures/cls_9byte1.c libffi.closures/cls_align_uint32.c \ +-libffi.closures/stret_medium.c libffi.closures/cls_3byte1.c \ +-libffi.closures/cls_align_uint64.c libffi.closures/cls_longdouble_va.c \ +-libffi.closures/cls_align_pointer.c libffi.closures/cls_19byte.c \ +-libffi.closures/cls_ushort.c libffi.closures/cls_align_sint32.c \ +-libffi.closures/cls_ulonglong.c libffi.closures/cls_struct_va1.c \ +-libffi.closures/cls_9byte2.c libffi.closures/closure_fn5.c \ +-libffi.closures/cls_5byte.c libffi.closures/cls_3float.c \ +-libffi.closures/closure.exp libffi.closures/cls_schar.c \ +-libffi.closures/closure_fn4.c \ +-libffi.closures/closure_fn0.c libffi.closures/huge_struct.c \ +-libffi.closures/cls_64byte.c libffi.closures/cls_longdouble.c \ +-libffi.closures/cls_ulong_va.c libffi.closures/cls_6_1_byte.c \ +-libffi.closures/cls_align_uint16.c libffi.closures/closure_fn2.c \ +-libffi.closures/unwindtest_ffi_call.cc \ +-libffi.closures/cls_multi_ushortchar.c libffi.closures/cls_8byte.c \ +-libffi.closures/ffitest.h libffi.closures/nested_struct8.c \ +-libffi.closures/cls_pointer.c libffi.closures/nested_struct2.c \ +-libffi.closures/nested_struct.c libffi.closures/cls_multi_schar.c \ +-libffi.closures/cls_align_longdouble_split.c \ +-libffi.closures/cls_uchar.c libffi.closures/nested_struct9.c \ +-libffi.closures/cls_float.c libffi.closures/stret_medium2.c \ +-libffi.closures/closure_loc_fn0.c libffi.closures/cls_6byte.c \ +-libffi.closures/closure_simple.c libffi.closures/cls_align_double.c \ +-libffi.closures/cls_multi_uchar.c libffi.closures/cls_4_1byte.c \ +-libffi.closures/closure_fn3.c libffi.closures/cls_align_sint64.c \ +-libffi.closures/nested_struct1.c libffi.closures/unwindtest.cc \ +-libffi.closures/nested_struct5.c libffi.closures/cls_multi_ushort.c \ +-libffi.closures/nested_struct11.c \ +-libffi.closures/nested_struct12.c \ +-libffi.closures/nested_struct13.c \ +-libffi.closures/cls_multi_sshortchar.c \ +-libffi.closures/cls_align_longdouble.c \ +-libffi.closures/cls_dbls_struct.c \ +-libffi.closures/cls_many_mixed_float_double.c \ +-libffi.closures/stret_large.c libffi.closures/stret_large2.c \ +-libffi.closures/cls_align_sint16.c libffi.closures/cls_2byte.c \ +-libffi.closures/nested_struct4.c libffi.closures/problem1.c \ +-libffi.closures/testclosure.c libffi.closures/nested_struct6.c \ +-libffi.closures/cls_4byte.c libffi.closures/cls_24byte.c \ +-libffi.closures/nested_struct10.c libffi.closures/cls_uint.c \ +-libffi.closures/cls_12byte.c libffi.closures/cls_sint.c \ +-libffi.closures/cls_7_1_byte.c libffi.closures/cls_sshort.c \ +-libffi.closures/cls_16byte.c libffi.closures/nested_struct7.c \ +-libffi.closures/cls_double_va.c libffi.closures/cls_3byte2.c \ +-libffi.closures/cls_double.c libffi.closures/cls_7byte.c \ +-libffi.closures/closure_fn6.c libffi.closures/closure_fn1.c \ +-libffi.closures/cls_20byte.c libffi.closures/cls_18byte.c \ +-libffi.closures/err_bad_abi.c \ +-libffi.closures/single_entry_structs1.c \ +-libffi.closures/single_entry_structs2.c \ +-libffi.closures/single_entry_structs3.c ++EXTRA_DIST = config/default.exp lib/libffi.exp lib/target-libpath.exp \ ++lib/wrapper.exp libffi.bhaible/Makefile libffi.bhaible/README \ ++libffi.bhaible/alignof.h libffi.bhaible/bhaible.exp \ ++libffi.bhaible/test-call.c libffi.bhaible/test-callback.c \ ++libffi.bhaible/testcases.c libffi.call/align_mixed.c \ ++libffi.call/align_stdcall.c libffi.call/call.exp \ ++libffi.call/err_bad_typedef.c libffi.call/ffitest.h \ ++libffi.call/float.c libffi.call/float1.c libffi.call/float2.c \ ++libffi.call/float3.c libffi.call/float4.c libffi.call/float_va.c \ ++libffi.call/many.c libffi.call/many2.c libffi.call/many_double.c \ ++libffi.call/many_mixed.c libffi.call/negint.c libffi.call/offsets.c \ ++libffi.call/pr1172638.c libffi.call/promotion.c \ ++libffi.call/pyobjc_tc.c libffi.call/return_dbl.c \ ++libffi.call/return_dbl1.c libffi.call/return_dbl2.c \ ++libffi.call/return_fl.c libffi.call/return_fl1.c \ ++libffi.call/return_fl2.c libffi.call/return_fl3.c \ ++libffi.call/return_ldl.c libffi.call/return_ll.c \ ++libffi.call/return_ll1.c libffi.call/return_sc.c \ ++libffi.call/return_sl.c libffi.call/return_uc.c \ ++libffi.call/return_ul.c libffi.call/struct1.c libffi.call/struct10.c \ ++libffi.call/struct2.c libffi.call/struct3.c libffi.call/struct4.c \ ++libffi.call/struct5.c libffi.call/struct6.c libffi.call/struct7.c \ ++libffi.call/struct8.c libffi.call/struct9.c \ ++libffi.call/uninitialized.c libffi.call/va_1.c libffi.call/va_2.c \ ++libffi.call/va_3.c libffi.call/va_struct1.c libffi.call/va_struct2.c \ ++libffi.call/va_struct3.c libffi.call/struct_by_value_big.c \ ++libffi.call/struct_by_value_2.c libffi.call/struct_by_value_3.c \ ++libffi.call/struct_by_value_4.c libffi.call/struct_by_value_small.c \ ++libffi.call/strlen2.c libffi.call/strlen3.c libffi.call/strlen4.c \ ++libffi.call/strlen.c libffi.call/va_3.c \ ++libffi.call/struct_by_value_2.c libffi.call/struct_by_value_3.c \ ++libffi.call/struct_by_value_4.c libffi.closures/closure.exp \ ++libffi.call/s55.c libffi.call/bpo-38748.c \ ++libffi.closures/closure_fn0.c libffi.closures/closure_fn1.c \ ++libffi.closures/closure_fn2.c libffi.closures/closure_fn3.c \ ++libffi.closures/closure_fn4.c libffi.closures/closure_fn5.c \ ++libffi.closures/closure_fn6.c libffi.closures/closure_loc_fn0.c \ ++libffi.closures/closure_simple.c libffi.closures/cls_12byte.c \ ++libffi.closures/cls_16byte.c libffi.closures/cls_18byte.c \ ++libffi.closures/cls_19byte.c libffi.closures/cls_1_1byte.c \ ++libffi.closures/cls_20byte.c libffi.closures/cls_20byte1.c \ ++libffi.closures/cls_24byte.c libffi.closures/cls_2byte.c \ ++libffi.closures/cls_3_1byte.c libffi.closures/cls_3byte1.c \ ++libffi.closures/cls_3byte2.c libffi.closures/cls_3float.c \ ++libffi.closures/cls_4_1byte.c libffi.closures/cls_4byte.c \ ++libffi.closures/cls_5_1_byte.c libffi.closures/cls_5byte.c \ ++libffi.closures/cls_64byte.c libffi.closures/cls_6_1_byte.c \ ++libffi.closures/cls_6byte.c libffi.closures/cls_7_1_byte.c \ ++libffi.closures/cls_7byte.c libffi.closures/cls_8byte.c \ ++libffi.closures/cls_9byte1.c libffi.closures/cls_9byte2.c \ ++libffi.closures/cls_align_double.c libffi.closures/cls_align_float.c \ ++libffi.closures/cls_align_longdouble.c \ ++libffi.closures/cls_align_pointer.c \ ++libffi.closures/cls_align_sint16.c libffi.closures/cls_align_sint32.c \ ++libffi.closures/cls_align_sint64.c libffi.closures/cls_align_uint16.c \ ++libffi.closures/cls_align_uint32.c libffi.closures/cls_align_uint64.c \ ++libffi.closures/cls_dbls_struct.c libffi.closures/cls_double.c \ ++libffi.closures/cls_double_va.c libffi.closures/cls_float.c \ ++libffi.closures/cls_longdouble_va.c \ ++libffi.closures/cls_many_mixed_args.c \ ++libffi.closures/cls_many_mixed_float_double.c \ ++libffi.closures/cls_multi_schar.c libffi.closures/cls_multi_sshort.c \ ++libffi.closures/cls_multi_sshortchar.c \ ++libffi.closures/cls_multi_uchar.c libffi.closures/cls_multi_ushort.c \ ++libffi.closures/cls_multi_ushortchar.c libffi.closures/cls_pointer.c \ ++libffi.closures/cls_pointer_stack.c libffi.closures/cls_schar.c \ ++libffi.closures/cls_sint.c libffi.closures/cls_sshort.c \ ++libffi.closures/cls_struct_va1.c libffi.closures/cls_uchar.c \ ++libffi.closures/cls_uint.c libffi.closures/cls_uint_va.c \ ++libffi.closures/cls_ulong_va.c libffi.closures/cls_ulonglong.c \ ++libffi.closures/cls_ushort.c libffi.closures/err_bad_abi.c \ ++libffi.closures/ffitest.h libffi.closures/nested_struct.c \ ++libffi.closures/nested_struct1.c libffi.closures/nested_struct10.c \ ++libffi.closures/nested_struct11.c libffi.closures/nested_struct12.c \ ++libffi.closures/nested_struct13.c libffi.closures/nested_struct2.c \ ++libffi.closures/nested_struct3.c libffi.closures/nested_struct4.c \ ++libffi.closures/nested_struct5.c libffi.closures/nested_struct6.c \ ++libffi.closures/nested_struct7.c libffi.closures/nested_struct8.c \ ++libffi.closures/nested_struct9.c libffi.closures/problem1.c \ ++libffi.closures/single_entry_structs1.c \ ++libffi.closures/single_entry_structs2.c \ ++libffi.closures/single_entry_structs3.c libffi.closures/stret_large.c \ ++libffi.closures/stret_large2.c libffi.closures/stret_medium.c \ ++libffi.closures/stret_medium2.c libffi.closures/testclosure.c \ ++libffi.closures/unwindtest.cc libffi.closures/unwindtest_ffi_call.cc \ ++libffi.closures/cls_align_longdouble_split.c \ ++libffi.closures/cls_align_longdouble_split2.c \ ++libffi.closures/cls_longdouble.c libffi.closures/huge_struct.c \ ++libffi.complex/cls_align_complex.inc \ ++libffi.complex/cls_align_complex_double.c \ ++libffi.complex/cls_align_complex_float.c \ ++libffi.complex/cls_align_complex_longdouble.c \ ++libffi.complex/cls_complex.inc libffi.complex/cls_complex_double.c \ ++libffi.complex/cls_complex_float.c \ ++libffi.complex/cls_complex_longdouble.c \ ++libffi.complex/cls_complex_struct.inc \ ++libffi.complex/cls_complex_struct_double.c \ ++libffi.complex/cls_complex_struct_float.c \ ++libffi.complex/cls_complex_struct_longdouble.c \ ++libffi.complex/cls_complex_va.inc \ ++libffi.complex/cls_complex_va_double.c \ ++libffi.complex/cls_complex_va_float.c \ ++libffi.complex/cls_complex_va_longdouble.c libffi.complex/complex.exp \ ++libffi.complex/complex.inc libffi.complex/complex_defs_double.inc \ ++libffi.complex/complex_defs_float.inc \ ++libffi.complex/complex_defs_longdouble.inc \ ++libffi.complex/complex_double.c libffi.complex/complex_float.c \ ++libffi.complex/complex_int.c libffi.complex/complex_longdouble.c \ ++libffi.complex/ffitest.h libffi.complex/many_complex.inc \ ++libffi.complex/many_complex_double.c \ ++libffi.complex/many_complex_float.c \ ++libffi.complex/many_complex_longdouble.c \ ++libffi.complex/return_complex.inc libffi.complex/return_complex1.inc \ ++libffi.complex/return_complex1_double.c \ ++libffi.complex/return_complex1_float.c \ ++libffi.complex/return_complex1_longdouble.c \ ++libffi.complex/return_complex2.inc \ ++libffi.complex/return_complex2_double.c \ ++libffi.complex/return_complex2_float.c \ ++libffi.complex/return_complex2_longdouble.c \ ++libffi.complex/return_complex_double.c \ ++libffi.complex/return_complex_float.c \ ++libffi.complex/return_complex_longdouble.c libffi.go/aa-direct.c \ ++libffi.go/closure1.c libffi.go/ffitest.h libffi.go/go.exp \ ++libffi.go/static-chain.h + + all: all-am + +@@ -468,7 +479,7 @@ site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG) + @echo '# Do not edit here. If you wish to override these values' >>site.tmp + @echo '# edit the last section' >>site.tmp + @echo 'set srcdir "$(srcdir)"' >>site.tmp +- @echo "set objdir `pwd`" >>site.tmp ++ @echo "set objdir \"`pwd`\"" >>site.tmp + @echo 'set build_alias "$(build_alias)"' >>site.tmp + @echo 'set build_triplet $(build_triplet)' >>site.tmp + @echo 'set host_alias "$(host_alias)"' >>site.tmp +@@ -494,7 +505,6 @@ distclean-DEJAGNU: + -l='$(DEJATOOL)'; for tool in $$l; do \ + rm -f $$tool.sum $$tool.log; \ + done +- + distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +diff --git a/vendor/libffi-sys/libffi/testsuite/lib/libffi.exp b/vendor/libffi-sys/libffi/testsuite/lib/libffi.exp +index 4f4dd48d2..7457af415 100644 +--- a/vendor/libffi-sys/libffi/testsuite/lib/libffi.exp ++++ b/vendor/libffi-sys/libffi/testsuite/lib/libffi.exp +@@ -1,4 +1,4 @@ +-# Copyright (C) 2003, 2005, 2008, 2009, 2010, 2011, 2014, 2019 Free Software Foundation, Inc. ++# Copyright (C) 2003, 2005, 2008, 2009, 2010, 2011, 2014, 2019, 2022 Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by +@@ -45,7 +45,7 @@ proc is-effective-target { arg } { + if { [info procs check_effective_target_${arg}] != [list] } { + set selected [check_effective_target_${arg}] + } else { +- error "unknown effective target keyword `$arg'" ++ error "unknown effective target keyword `$arg'" + } + verbose "is-effective-target: $arg $selected" 2 + return $selected +@@ -196,7 +196,7 @@ if { [info procs saved-dg-process-target] == [list] } { + return "N" + } + return [dg-process-target-1 $xfail_selector] +- ++ + } + return [dg-process-target-1 $selector] + } +@@ -269,6 +269,8 @@ proc libffi-dg-test { prog do_what extra_tool_flags } { + proc libffi-dg-prune { target_triplet text } { + # We get this with some qemu emulated systems (eg. ppc64le-linux-gnu) + regsub -all "(^|\n)\[^\n\]*unable to perform all requested operations" $text "" text ++ # We get this from sparc64 linux systems ++ regsub -all "(^|\n)\[^\n\]*warning: .* has a LOAD segment with RWX permissions" $text "" text + return $text + } + +@@ -376,7 +378,8 @@ proc libffi_target_compile { source dest type options } { + + if { [istarget "*-*-darwin9*"] || [istarget "*-*-darwin1*"] + || [istarget "*-*-darwin2*"] } { +- lappend options "additional_flags=-Wl,-allow_stack_execute" ++ # lappend options "additional_flags=-Wl,-allow_stack_execute" ++ lappend options "additional_flags=-Wno-unused-command-line-argument" + } + + # If you're building the compiler with --prefix set to a place +@@ -394,17 +397,23 @@ proc libffi_target_compile { source dest type options } { + + lappend options "libs= -lffi" + +- if { [string match "aarch64*-*-linux*" $target_triplet] } { +- lappend options "libs= -lpthread" +- } ++ if { ![string match "*android*" $target_triplet] } { + +- # this may be required for g++, but just confused clang. +- if { [string match "*.cc" $source] } { +- lappend options "c++" +- } ++ if { [string match "aarch64*-*-linux*" $target_triplet] } { ++ lappend options "libs= -lpthread" ++ } + +- if { [string match "arc*-*-linux*" $target_triplet] } { +- lappend options "libs= -lpthread" ++ # this may be required for g++, but just confused clang. ++ if { [string match "*.cc" $source] } { ++ lappend options "c++" ++ if { [string match "*-*-darwin*" $target_triplet] } { ++ lappend options "libs= -lc++" ++ } ++ } ++ ++ if { [string match "arc*-*-linux*" $target_triplet] } { ++ lappend options "libs= -lpthread" ++ } + } + + verbose "options: $options" +@@ -486,7 +495,7 @@ proc run-many-tests { testcases extra_flags } { + set common "-W -Wall" + if [info exists env(LIBFFI_TEST_OPTIMIZATION)] { + set optimizations [ list $env(LIBFFI_TEST_OPTIMIZATION) ] +- } else { ++ } else { + set optimizations { "-O0" "-O2" } + } + } +@@ -494,7 +503,7 @@ proc run-many-tests { testcases extra_flags } { + set common "-W -Wall -Wno-psabi" + if [info exists env(LIBFFI_TEST_OPTIMIZATION)] { + set optimizations [ list $env(LIBFFI_TEST_OPTIMIZATION) ] +- } else { ++ } else { + set optimizations { "-O0" "-O2" } + } + } +@@ -503,7 +512,7 @@ proc run-many-tests { testcases extra_flags } { + set common "" + if [info exists env(LIBFFI_TEST_OPTIMIZATION)] { + set optimizations [ list $env(LIBFFI_TEST_OPTIMIZATION) ] +- } else { ++ } else { + set optimizations { "" } + } + } +@@ -592,7 +601,7 @@ proc check-flags { args } { + # compare them to the actual options. + if { [string compare [lindex $args 2] "*"] == 0 + && [string compare [lindex $args 3] "" ] == 0 } { +- set result 1 ++ set result 1 + } else { + # The target list might be an effective-target keyword, so replace + # the original list with "*-*-*", since we already know it matches. +diff --git a/vendor/libffi-sys/libffi/testsuite/lib/target-libpath.exp b/vendor/libffi-sys/libffi/testsuite/lib/target-libpath.exp +index 6b7beba93..e33a656c6 100644 +--- a/vendor/libffi-sys/libffi/testsuite/lib/target-libpath.exp ++++ b/vendor/libffi-sys/libffi/testsuite/lib/target-libpath.exp +@@ -175,7 +175,7 @@ proc set_ld_library_path_env_vars { } { + } else { + setenv DYLD_LIBRARY_PATH "$ld_library_path" + } +- if { [istarget *-*-cygwin*] || [istarget *-*-mingw*] } { ++ if { [istarget *-*-cygwin*] || [ istarget *-*-msys* ] || [istarget *-*-mingw*] } { + if { $orig_path_saved } { + setenv PATH "$ld_library_path:$orig_path" + } else { +@@ -271,7 +271,7 @@ proc get_shlib_extension { } { + + if { [ istarget *-*-darwin* ] } { + set shlib_ext "dylib" +- } elseif { [ istarget *-*-cygwin* ] || [ istarget *-*-mingw* ] } { ++ } elseif { [ istarget *-*-cygwin* ] || [ istarget *-*-msys* ] || [ istarget *-*-mingw* ] } { + set shlib_ext "dll" + } elseif { [ istarget hppa*-*-hpux* ] } { + set shlib_ext "sl" +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.bhaible/test-call.c b/vendor/libffi-sys/libffi/testsuite/libffi.bhaible/test-call.c +index cf9219e26..4887e0092 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.bhaible/test-call.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.bhaible/test-call.c +@@ -50,6 +50,7 @@ int _fprintf(FILE *stream, const char *format, ...) + case 3: + vsprintf(&rbuf2[strlen(rbuf2)], format, args); + printf("%s", rbuf2); ++ fflush (stdout); + if (strcmp (rbuf1, rbuf2)) abort(); + break; + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/bpo-38748.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/bpo-38748.c +new file mode 100644 +index 000000000..294bda0fe +--- /dev/null ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/bpo-38748.c +@@ -0,0 +1,41 @@ ++/* Area: bpo-38748 ++ Purpose: test for stdcall alignment problem ++ Source: github.com/python/cpython/pull/26204 */ ++ ++/* { dg-do run } */ ++ ++#include "ffitest.h" ++#include "ffi_common.h" ++ ++static UINT32 ABI_ATTR align_arguments(UINT32 l1, ++ UINT64 l2) ++{ ++ return l1 + (UINT32) l2; ++} ++ ++int main(void) ++{ ++ ffi_cif cif; ++ ffi_type *args[4] = { ++ &ffi_type_uint32, ++ &ffi_type_uint64 ++ }; ++ ffi_arg lr1, lr2; ++ UINT32 l1 = 1; ++ UINT64 l2 = 2; ++ void *values[2] = {&l1, &l2}; ++ ++ /* Initialize the cif */ ++ CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, ++ &ffi_type_uint32, args) == FFI_OK); ++ ++ lr1 = align_arguments(l1, l2); ++ ++ ffi_call(&cif, FFI_FN(align_arguments), &lr2, values); ++ ++ if (lr1 == lr2) ++ printf("bpo-38748 arguments tests ok!\n"); ++ else ++ CHECK(0); ++ exit(0); ++} +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/ffitest.h b/vendor/libffi-sys/libffi/testsuite/libffi.call/ffitest.h +index 95d96a83f..8bd8a3cb6 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/ffitest.h ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/ffitest.h +@@ -5,6 +5,9 @@ + #include + #include "fficonfig.h" + ++#include ++#include ++ + #if defined HAVE_STDINT_H + #include + #endif +@@ -23,6 +26,22 @@ + } \ + } while(0) + ++#define CHECK_FLOAT_EQ(x, y) \ ++ do { \ ++ if(fabs((x) - (y)) > FLT_EPSILON){ \ ++ printf("Check failed CHECK_FLOAT_EQ(%s, %s)\n", #x, #y); \ ++ abort(); \ ++ } \ ++ } while(0) ++ ++#define CHECK_DOUBLE_EQ(x, y) \ ++ do { \ ++ if(fabs((x) - (y)) > DBL_EPSILON){ \ ++ printf("Check failed CHECK_FLOAT_EQ(%s, %s)\n", #x, #y); \ ++ abort(); \ ++ } \ ++ } while(0) ++ + /* Define macros so that compilers other than gcc can run the tests. */ + #undef __UNUSED__ + #if defined(__GNUC__) +@@ -69,8 +88,8 @@ + + #endif + +-/* MinGW kludge. */ +-#if defined(_WIN64) | defined(_WIN32) ++/* msvc kludge. */ ++#if defined(_MSC_VER) + #define PRIdLL "I64d" + #define PRIuLL "I64u" + #else +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/float_va.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/float_va.c +index 5acff91f6..d01d9d0a9 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/float_va.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/float_va.c +@@ -74,6 +74,7 @@ int main (void) + /* { dg-output "\n0: 2.0 : total: 2.0" } */ + printf("ffi: %.1f\n", resfp); + /* { dg-output "\nffi: 2.0" } */ ++ CHECK_DOUBLE_EQ(resfp, 2); + + /* Second test, float_va_fn(2,2.0,3.0,4.0), now with variadic params */ + /* Call it statically and then via ffi */ +@@ -81,6 +82,7 @@ int main (void) + /* { dg-output "\n2: 2.0 : 0:3.0 1:4.0 total: 11.0" } */ + printf("compiled: %.1f\n", resfp); + /* { dg-output "\ncompiled: 11.0" } */ ++ CHECK_DOUBLE_EQ(resfp, 11); + + arg_types[0] = &ffi_type_uint; + arg_types[1] = &ffi_type_double; +@@ -102,6 +104,7 @@ int main (void) + /* { dg-output "\n2: 2.0 : 0:3.0 1:4.0 total: 11.0" } */ + printf("ffi: %.1f\n", resfp); + /* { dg-output "\nffi: 11.0" } */ ++ CHECK_DOUBLE_EQ(resfp, 11); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/pyobjc-tc.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/pyobjc_tc.c +similarity index 100% +rename from vendor/libffi-sys/libffi/testsuite/libffi.call/pyobjc-tc.c +rename to vendor/libffi-sys/libffi/testsuite/libffi.call/pyobjc_tc.c +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/return_ll1.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/return_ll1.c +index 593e8a307..a2426ec93 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/return_ll1.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/return_ll1.c +@@ -9,6 +9,9 @@ + #include "ffitest.h" + static long long return_ll(int ll0, long long ll1, int ll2) + { ++ CHECK(ll0 == 11111111); ++ CHECK(ll1 == 11111111111000LL); ++ CHECK(ll2 == 11111111); + return ll0 + ll1 + ll2; + } + +@@ -39,5 +42,7 @@ int main (void) + ffi_call(&cif, FFI_FN(return_ll), &rlonglong, values); + printf("res: %" PRIdLL ", %" PRIdLL "\n", rlonglong, ll0 + ll1 + ll2); + /* { dg-output "res: 11111133333222, 11111133333222" } */ ++ CHECK(rlonglong == 11111133333222); ++ CHECK(ll0 + ll1 + ll2 == 11111133333222); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/return_sl.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/return_sl.c +index f0fd345f7..51bfb4945 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/return_sl.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/return_sl.c +@@ -8,6 +8,8 @@ + #include "ffitest.h" + static long return_sl(long l1, long l2) + { ++ CHECK(l1 == 1073741823L); ++ CHECK(l2 == 1073741824L); + return l1 - l2; + } + +@@ -33,6 +35,8 @@ int main (void) + ffi_call(&cif, FFI_FN(return_sl), &res, values); + printf("res: %ld, %ld\n", (long)res, l1 - l2); + /* { dg-output "res: -1, -1" } */ ++ CHECK((long)res == -1); ++ CHECK(l1 + 1 == l2); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/return_ul.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/return_ul.c +index 12b266f03..fedcc25ab 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/return_ul.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/return_ul.c +@@ -8,6 +8,8 @@ + #include "ffitest.h" + static unsigned long return_ul(unsigned long ul1, unsigned long ul2) + { ++ CHECK(ul1 == 1073741823L); ++ CHECK(ul2 == 1073741824L); + return ul1 + ul2; + } + +@@ -33,6 +35,8 @@ int main (void) + ffi_call(&cif, FFI_FN(return_ul), &res, values); + printf("res: %lu, %lu\n", (unsigned long)res, ul1 + ul2); + /* { dg-output "res: 2147483647, 2147483647" } */ ++ CHECK(res == 2147483647L); ++ CHECK(ul1 + ul2 == 2147483647L); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/s55.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/s55.c +new file mode 100644 +index 000000000..94dfd5f87 +--- /dev/null ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/s55.c +@@ -0,0 +1,60 @@ ++/* Area: ffi_call ++ Purpose: Check structures. ++ Limitations: none. ++ PR: none. ++ Originator: From the original ffitest.c */ ++ ++/* { dg-do run } */ ++#include "ffitest.h" ++ ++typedef struct ++{ ++ float f; ++} s55; ++ ++static s55 ABI_ATTR f55(s55 ts, float f) ++{ ++ s55 r; ++ r.f = ts.f + f; ++ printf ("f55>> %g + %g = %g\n", ts.f, f, r.f); ++ return r; ++} ++ ++int main (void) ++{ ++ ffi_cif cif; ++ s55 F, Fr; ++ float f; ++ void *values[] = { &F, &f }; ++ ffi_type s55_type; ++ ffi_type *args[] = { &s55_type, &ffi_type_float }; ++ ffi_type *s55_type_elements[] = { &ffi_type_float, NULL }; ++ ++ /* This is a hack to get a properly aligned result buffer */ ++ s55 *s55_result = ++ (s55 *) malloc (sizeof(s55)); ++ ++ s55_type.size = 0; ++ s55_type.alignment = 0; ++ s55_type.type = FFI_TYPE_STRUCT; ++ s55_type.elements = s55_type_elements; ++ ++ /* Initialize the cif */ ++ CHECK(ffi_prep_cif(&cif, ABI_NUM, 2, &s55_type, args) == FFI_OK); ++ ++ F.f = 1; ++ Fr = f55(F, 2.14); ++ printf ("%g\n", Fr.f); ++ ++ F.f = 1; ++ f = 2.14; ++ ffi_call(&cif, FFI_FN(f55), s55_result, values); ++ printf ("%g\n", s55_result->f); ++ ++ fflush(0); ++ ++ CHECK(fabs(Fr.f - s55_result->f) < FLT_EPSILON); ++ ++ free (s55_result); ++ exit(0); ++} +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen.c +index 35b70ea4e..3ed53d558 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen.c +@@ -7,9 +7,9 @@ + /* { dg-do run } */ + #include "ffitest.h" + +-static size_t ABI_ATTR my_strlen(char *s) ++static unsigned int ABI_ATTR my_strlen(char *s) + { +- return (strlen(s)); ++ return (unsigned int) (strlen(s)); + } + + int main (void) +@@ -22,23 +22,22 @@ int main (void) + + args[0] = &ffi_type_pointer; + values[0] = (void*) &s; +- ++ + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, +- &ffi_type_sint, args) == FFI_OK); +- ++ &ffi_type_uint, args) == FFI_OK); ++ + s = "a"; + ffi_call(&cif, FFI_FN(my_strlen), &rint, values); + CHECK(rint == 1); +- ++ + s = "1234567"; + ffi_call(&cif, FFI_FN(my_strlen), &rint, values); + CHECK(rint == 7); +- ++ + s = "1234567890123456789012345"; + ffi_call(&cif, FFI_FN(my_strlen), &rint, values); + CHECK(rint == 25); +- ++ + exit (0); + } +- +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen2.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen2.c +index 96282bc0a..93e5a3302 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen2.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen2.c +@@ -8,9 +8,9 @@ + + #include "ffitest.h" + +-static size_t ABI_ATTR my_f(char *s, float a) ++static int ABI_ATTR my_f(char *s, float a) + { +- return (size_t) ((int) strlen(s) + (int) a); ++ return (int) strlen(s) + (int) a; + } + + int main (void) +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen3.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen3.c +index beba86e9e..c7d472d22 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen3.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen3.c +@@ -8,9 +8,9 @@ + + #include "ffitest.h" + +-static size_t ABI_ATTR my_f(float a, char *s) ++static int ABI_ATTR my_f(float a, char *s) + { +- return (size_t) ((int) strlen(s) + (int) a); ++ return (int) strlen(s) + (int) a; + } + + int main (void) +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen4.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen4.c +index d5d42b4f6..ba5c2740e 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen4.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/strlen4.c +@@ -8,9 +8,9 @@ + + #include "ffitest.h" + +-static size_t ABI_ATTR my_f(float a, char *s, int i) ++static int ABI_ATTR my_f(float a, char *s, int i) + { +- return (size_t) ((int) strlen(s) + (int) a + i); ++ return (int) strlen(s) + (int) a + i; + } + + int main (void) +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/struct10.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct10.c +index 17b137742..1edbd5ffb 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/struct10.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct10.c +@@ -16,7 +16,7 @@ struct s { + signed char s8; + }; + +-struct s make_s(void) { ++struct s ABI_ATTR make_s(void) { + struct s r; + r.s32 = 0x1234; + r.f32 = 7.0; +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_2.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_2.c +new file mode 100644 +index 000000000..f170289d1 +--- /dev/null ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_2.c +@@ -0,0 +1,63 @@ ++/* Area: ffi_call ++ Purpose: Check structures. ++ Limitations: none. ++ PR: none. ++ Originator: From the original ffitest.c */ ++ ++/* { dg-do run } */ ++#include "ffitest.h" ++ ++typedef struct ++{ ++ unsigned int ui01; ++ unsigned int ui02; ++} test_structure_1; ++ ++static test_structure_1 ABI_ATTR struct1(test_structure_1 ts) ++{ ++ ts.ui02++; ++ ++ return ts; ++} ++ ++int main (void) ++{ ++ ffi_cif cif; ++ ffi_type *args[MAX_ARGS]; ++ void *values[MAX_ARGS]; ++ ffi_type ts1_type; ++ ffi_type *ts1_type_elements[3]; ++ ++ test_structure_1 ts1_arg; ++ ++ /* This is a hack to get a properly aligned result buffer */ ++ test_structure_1 *ts1_result = ++ (test_structure_1 *) malloc (sizeof(test_structure_1)); ++ ++ ts1_type.size = 0; ++ ts1_type.alignment = 0; ++ ts1_type.type = FFI_TYPE_STRUCT; ++ ts1_type.elements = ts1_type_elements; ++ ts1_type_elements[0] = &ffi_type_uint; ++ ts1_type_elements[1] = &ffi_type_uint; ++ ts1_type_elements[2] = NULL; ++ ++ args[0] = &ts1_type; ++ values[0] = &ts1_arg; ++ ++ /* Initialize the cif */ ++ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, ++ &ts1_type, args) == FFI_OK); ++ ++ ts1_arg.ui02 = 555; ++ ++ ffi_call(&cif, FFI_FN(struct1), ts1_result, values); ++ ++ CHECK(ts1_result->ui02 == 556); ++ ++ /* This will fail if ffi_call isn't passing the struct by value. */ ++ CHECK(ts1_arg.ui02 == 555); ++ ++ free (ts1_result); ++ exit(0); ++} +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_3.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_3.c +new file mode 100644 +index 000000000..55cf113e5 +--- /dev/null ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_3.c +@@ -0,0 +1,65 @@ ++/* Area: ffi_call ++ Purpose: Check structures. ++ Limitations: none. ++ PR: none. ++ Originator: From the original ffitest.c */ ++ ++/* { dg-do run } */ ++#include "ffitest.h" ++ ++typedef struct ++{ ++ unsigned int ui01; ++ unsigned int ui02; ++ unsigned int ui03; ++} test_structure_1; ++ ++static test_structure_1 ABI_ATTR struct1(test_structure_1 ts) ++{ ++ ts.ui03++; ++ ++ return ts; ++} ++ ++int main (void) ++{ ++ ffi_cif cif; ++ ffi_type *args[MAX_ARGS]; ++ void *values[MAX_ARGS]; ++ ffi_type ts1_type; ++ ffi_type *ts1_type_elements[4]; ++ ++ test_structure_1 ts1_arg; ++ ++ /* This is a hack to get a properly aligned result buffer */ ++ test_structure_1 *ts1_result = ++ (test_structure_1 *) malloc (sizeof(test_structure_1)); ++ ++ ts1_type.size = 0; ++ ts1_type.alignment = 0; ++ ts1_type.type = FFI_TYPE_STRUCT; ++ ts1_type.elements = ts1_type_elements; ++ ts1_type_elements[0] = &ffi_type_uint; ++ ts1_type_elements[1] = &ffi_type_uint; ++ ts1_type_elements[2] = &ffi_type_uint; ++ ts1_type_elements[3] = NULL; ++ ++ args[0] = &ts1_type; ++ values[0] = &ts1_arg; ++ ++ /* Initialize the cif */ ++ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, ++ &ts1_type, args) == FFI_OK); ++ ++ ts1_arg.ui03 = 555; ++ ++ ffi_call(&cif, FFI_FN(struct1), ts1_result, values); ++ ++ CHECK(ts1_result->ui03 == 556); ++ ++ /* This will fail if ffi_call isn't passing the struct by value. */ ++ CHECK(ts1_arg.ui03 == 555); ++ ++ free (ts1_result); ++ exit(0); ++} +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_4.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_4.c +new file mode 100644 +index 000000000..768650fca +--- /dev/null ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_4.c +@@ -0,0 +1,67 @@ ++/* Area: ffi_call ++ Purpose: Check structures. ++ Limitations: none. ++ PR: none. ++ Originator: From the original ffitest.c */ ++ ++/* { dg-do run } */ ++#include "ffitest.h" ++ ++typedef struct ++{ ++ unsigned int ui01; ++ unsigned int ui02; ++ unsigned int ui03; ++ unsigned int ui04; ++} test_structure_1; ++ ++static test_structure_1 ABI_ATTR struct1(test_structure_1 ts) ++{ ++ ts.ui04++; ++ ++ return ts; ++} ++ ++int main (void) ++{ ++ ffi_cif cif; ++ ffi_type *args[MAX_ARGS]; ++ void *values[MAX_ARGS]; ++ ffi_type ts1_type; ++ ffi_type *ts1_type_elements[5]; ++ ++ test_structure_1 ts1_arg; ++ ++ /* This is a hack to get a properly aligned result buffer */ ++ test_structure_1 *ts1_result = ++ (test_structure_1 *) malloc (sizeof(test_structure_1)); ++ ++ ts1_type.size = 0; ++ ts1_type.alignment = 0; ++ ts1_type.type = FFI_TYPE_STRUCT; ++ ts1_type.elements = ts1_type_elements; ++ ts1_type_elements[0] = &ffi_type_uint; ++ ts1_type_elements[1] = &ffi_type_uint; ++ ts1_type_elements[2] = &ffi_type_uint; ++ ts1_type_elements[3] = &ffi_type_uint; ++ ts1_type_elements[4] = NULL; ++ ++ args[0] = &ts1_type; ++ values[0] = &ts1_arg; ++ ++ /* Initialize the cif */ ++ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, ++ &ts1_type, args) == FFI_OK); ++ ++ ts1_arg.ui04 = 555; ++ ++ ffi_call(&cif, FFI_FN(struct1), ts1_result, values); ++ ++ CHECK(ts1_result->ui04 == 556); ++ ++ /* This will fail if ffi_call isn't passing the struct by value. */ ++ CHECK(ts1_arg.ui04 == 555); ++ ++ free (ts1_result); ++ exit(0); ++} +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_big.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_big.c +new file mode 100644 +index 000000000..06422cac2 +--- /dev/null ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_big.c +@@ -0,0 +1,93 @@ ++/* Area: ffi_call ++ Purpose: Check structures. ++ Limitations: none. ++ PR: none. ++ Originator: From the original ffitest.c */ ++ ++/* { dg-do run } */ ++#include "ffitest.h" ++ ++typedef struct ++{ ++ unsigned int ui01; ++ unsigned int ui02; ++ unsigned int ui03; ++ unsigned int ui04; ++ unsigned int ui05; ++ unsigned int ui06; ++ unsigned int ui07; ++ unsigned int ui08; ++ unsigned int ui09; ++ unsigned int ui10; ++ unsigned int ui11; ++ unsigned int ui12; ++ unsigned int ui13; ++ unsigned int ui14; ++ unsigned int ui15; ++ unsigned int ui16; ++ unsigned int ui17; ++} test_structure_1; ++ ++static test_structure_1 ABI_ATTR struct1(test_structure_1 ts) ++{ ++ ts.ui17++; ++ ++ return ts; ++} ++ ++int main (void) ++{ ++ ffi_cif cif; ++ ffi_type *args[MAX_ARGS]; ++ void *values[MAX_ARGS]; ++ ffi_type ts1_type; ++ ffi_type *ts1_type_elements[18]; ++ ++ test_structure_1 ts1_arg; ++ ++ /* This is a hack to get a properly aligned result buffer */ ++ test_structure_1 *ts1_result = ++ (test_structure_1 *) malloc (sizeof(test_structure_1)); ++ ++ ts1_type.size = 0; ++ ts1_type.alignment = 0; ++ ts1_type.type = FFI_TYPE_STRUCT; ++ ts1_type.elements = ts1_type_elements; ++ ts1_type_elements[0] = &ffi_type_uint; ++ ts1_type_elements[1] = &ffi_type_uint; ++ ts1_type_elements[2] = &ffi_type_uint; ++ ts1_type_elements[3] = &ffi_type_uint; ++ ts1_type_elements[4] = &ffi_type_uint; ++ ts1_type_elements[5] = &ffi_type_uint; ++ ts1_type_elements[6] = &ffi_type_uint; ++ ts1_type_elements[7] = &ffi_type_uint; ++ ts1_type_elements[8] = &ffi_type_uint; ++ ts1_type_elements[9] = &ffi_type_uint; ++ ts1_type_elements[10] = &ffi_type_uint; ++ ts1_type_elements[11] = &ffi_type_uint; ++ ts1_type_elements[12] = &ffi_type_uint; ++ ts1_type_elements[13] = &ffi_type_uint; ++ ts1_type_elements[14] = &ffi_type_uint; ++ ts1_type_elements[15] = &ffi_type_uint; ++ ts1_type_elements[16] = &ffi_type_uint; ++ ts1_type_elements[17] = NULL; ++ ++ args[0] = &ts1_type; ++ values[0] = &ts1_arg; ++ ++ /* Initialize the cif */ ++ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, ++ &ts1_type, args) == FFI_OK); ++ ++ ts1_arg.ui17 = 555; ++ ++ ffi_call(&cif, FFI_FN(struct1), ts1_result, values); ++ ++ CHECK(ts1_result->ui17 == 556); ++ ++ /* This will fail if ffi_call isn't passing the struct by value. */ ++ CHECK(ts1_arg.ui17 == 555); ++ ++ free (ts1_result); ++ exit(0); ++} +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_small.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_small.c +new file mode 100644 +index 000000000..19613f8b0 +--- /dev/null ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/struct_by_value_small.c +@@ -0,0 +1,61 @@ ++/* Area: ffi_call ++ Purpose: Check structures. ++ Limitations: none. ++ PR: none. ++ Originator: From the original ffitest.c */ ++ ++/* { dg-do run } */ ++#include "ffitest.h" ++ ++typedef struct ++{ ++ unsigned int ui17; ++} test_structure_1; ++ ++static test_structure_1 ABI_ATTR struct1(test_structure_1 ts) ++{ ++ ts.ui17++; ++ ++ return ts; ++} ++ ++int main (void) ++{ ++ ffi_cif cif; ++ ffi_type *args[MAX_ARGS]; ++ void *values[MAX_ARGS]; ++ ffi_type ts1_type; ++ ffi_type *ts1_type_elements[2]; ++ ++ test_structure_1 ts1_arg; ++ ++ /* This is a hack to get a properly aligned result buffer */ ++ test_structure_1 *ts1_result = ++ (test_structure_1 *) malloc (sizeof(test_structure_1)); ++ ++ ts1_type.size = 0; ++ ts1_type.alignment = 0; ++ ts1_type.type = FFI_TYPE_STRUCT; ++ ts1_type.elements = ts1_type_elements; ++ ts1_type_elements[0] = &ffi_type_uint; ++ ts1_type_elements[1] = NULL; ++ ++ args[0] = &ts1_type; ++ values[0] = &ts1_arg; ++ ++ /* Initialize the cif */ ++ CHECK(ffi_prep_cif(&cif, ABI_NUM, 1, ++ &ts1_type, args) == FFI_OK); ++ ++ ts1_arg.ui17 = 555; ++ ++ ffi_call(&cif, FFI_FN(struct1), ts1_result, values); ++ ++ CHECK(ts1_result->ui17 == 556); ++ ++ /* This will fail if ffi_call isn't passing the struct by value. */ ++ CHECK(ts1_arg.ui17 == 555); ++ ++ free (ts1_result); ++ exit(0); ++} +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/va_2.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_2.c +index 0589d0848..75d4dfc3d 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/va_2.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_2.c +@@ -5,7 +5,7 @@ + Originator: ARM Ltd. */ + + /* { dg-do run } */ +-/* { dg-output "" { xfail avr32*-*-* m68k-*-* alpha-*-* } } */ ++/* { dg-output "" { xfail avr32*-*-* m68k-*-* } } */ + + #include "ffitest.h" + #include +@@ -25,6 +25,7 @@ struct large_tag + unsigned e; + }; + ++ + static int + test_fn (int n, ...) + { +@@ -72,7 +73,29 @@ test_fn (int n, ...) + ui, si, + ul, sl, + f, d); ++ + va_end (ap); ++ ++ CHECK(s1.a == 5); ++ CHECK(s1.b == 6); ++ CHECK(l.a == 10); ++ CHECK(l.b == 11); ++ CHECK(l.c == 12); ++ CHECK(l.d == 13); ++ CHECK(l.e == 14); ++ CHECK(s2.a == 7); ++ CHECK(s2.b == 8); ++ CHECK(uc == 9); ++ CHECK(sc == 10); ++ CHECK(us == 11); ++ CHECK(ss == 12); ++ CHECK(ui == 13); ++ CHECK(si == 14); ++ CHECK(ul == 15); ++ CHECK(sl == 16); ++ CHECK((int)f == 2); ++ CHECK((int)d == 3); ++ + return n + 1; + } + +@@ -191,6 +214,7 @@ main (void) + /* { dg-output "5 6 10 11 12 13 14 7 8 uc=9 sc=10 11 12 13 14 15 16 2.120000 3.130000" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 42" } */ ++ CHECK(res == 42); + + return 0; + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/va_3.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_3.c +new file mode 100644 +index 000000000..b3e73b50c +--- /dev/null ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_3.c +@@ -0,0 +1,154 @@ ++/* Area: ffi_call ++ Purpose: Test function with multiple fixed args and variable argument list. ++ Limitations: none. ++ PR: none. ++ Originator: ARM Ltd., Oracle */ ++ ++/* { dg-do run } */ ++/* { dg-output "" { xfail avr32*-*-* m68k-*-* } } */ ++ ++#include "ffitest.h" ++#include ++ ++/* ++ * This is a modified version of va_2.c that has fixed arguments with "small" types that ++ * are not allowed as variable arguments, but they should be still allowed as fixed args. ++ */ ++ ++static int ++test_fn (char a1, float a2, int n, ...) ++{ ++ va_list ap; ++ unsigned char uc; ++ signed char sc; ++ unsigned short us; ++ signed short ss; ++ unsigned int ui; ++ signed int si; ++ unsigned long ul; ++ signed long sl; ++ float f; ++ double d; ++ ++ va_start (ap, n); ++ ++ uc = va_arg (ap, unsigned); ++ sc = va_arg (ap, signed); ++ ++ us = va_arg (ap, unsigned); ++ ss = va_arg (ap, signed); ++ ++ ui = va_arg (ap, unsigned int); ++ si = va_arg (ap, signed int); ++ ++ ul = va_arg (ap, unsigned long); ++ sl = va_arg (ap, signed long); ++ ++ f = va_arg (ap, double); /* C standard promotes float->double ++ when anonymous */ ++ d = va_arg (ap, double); ++ ++ printf ("%d %f uc=%u sc=%d %u %d %u %d %lu %ld %f %f\n", ++ a1, a2, ++ uc, sc, ++ us, ss, ++ ui, si, ++ ul, sl, ++ f, d); ++ ++ va_end (ap); ++ ++ CHECK(a1 == 1); ++ CHECK((int)a2 == 2); ++ CHECK(uc == 9); ++ CHECK(sc == 10); ++ CHECK(us == 11); ++ CHECK(ss == 12); ++ CHECK(ui == 13); ++ CHECK(si == 14); ++ CHECK(ul == 15); ++ CHECK(sl == 16); ++ CHECK((int)f == 2); ++ CHECK((int)d == 3); ++ ++ return n + 1; ++} ++ ++int ++main (void) ++{ ++ ffi_cif cif; ++ void* args[14]; ++ ffi_type* arg_types[14]; ++ ++ char a1; ++ float a2; ++ int n; ++ ffi_arg res; ++ ++ unsigned int uc; ++ signed int sc; ++ unsigned int us; ++ signed int ss; ++ unsigned int ui; ++ signed int si; ++ unsigned long ul; ++ signed long sl; ++ double d1; ++ double f1; ++ ++ arg_types[0] = &ffi_type_schar; ++ arg_types[1] = &ffi_type_float; ++ arg_types[2] = &ffi_type_sint; ++ arg_types[3] = &ffi_type_uint; ++ arg_types[4] = &ffi_type_sint; ++ arg_types[5] = &ffi_type_uint; ++ arg_types[6] = &ffi_type_sint; ++ arg_types[7] = &ffi_type_uint; ++ arg_types[8] = &ffi_type_sint; ++ arg_types[9] = &ffi_type_ulong; ++ arg_types[10] = &ffi_type_slong; ++ arg_types[11] = &ffi_type_double; ++ arg_types[12] = &ffi_type_double; ++ arg_types[13] = NULL; ++ ++ CHECK(ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 3, 13, &ffi_type_sint, arg_types) == FFI_OK); ++ ++ a1 = 1; ++ a2 = 2.0f; ++ n = 41; ++ ++ uc = 9; ++ sc = 10; ++ us = 11; ++ ss = 12; ++ ui = 13; ++ si = 14; ++ ul = 15; ++ sl = 16; ++ f1 = 2.12; ++ d1 = 3.13; ++ ++ args[0] = &a1; ++ args[1] = &a2; ++ args[2] = &n; ++ args[3] = &uc; ++ args[4] = ≻ ++ args[5] = &us; ++ args[6] = &ss; ++ args[7] = &ui; ++ args[8] = &si; ++ args[9] = &ul; ++ args[10] = &sl; ++ args[11] = &f1; ++ args[12] = &d1; ++ args[13] = NULL; ++ ++ ffi_call(&cif, FFI_FN(test_fn), &res, args); ++ /* { dg-output "1 2.000000 uc=9 sc=10 11 12 13 14 15 16 2.120000 3.130000" } */ ++ printf("res: %d\n", (int) res); ++ /* { dg-output "\nres: 42" } */ ++ CHECK(res == 42); ++ ++ return 0; ++} +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct1.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct1.c +index e6452061c..fff5c9acc 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct1.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct1.c +@@ -40,6 +40,18 @@ test_fn (int n, ...) + printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, + s2.a, s2.b); + va_end (ap); ++ ++ CHECK(s1.a == 5); ++ CHECK(s1.b == 6); ++ ++ CHECK(l.a == 10); ++ CHECK(l.b == 11); ++ CHECK(l.c == 12); ++ CHECK(l.d == 13); ++ CHECK(l.e == 14); ++ ++ CHECK(s2.a == 7); ++ CHECK(s2.b == 8); + return n + 1; + } + +@@ -116,6 +128,7 @@ main (void) + /* { dg-output "5 6 10 11 12 13 14 7 8" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 42" } */ ++ CHECK(res == 42); + + return 0; + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct2.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct2.c +index 56f5b9c75..a8daff3bf 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct2.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct2.c +@@ -39,6 +39,15 @@ test_fn (int n, ...) + s2 = va_arg (ap, struct small_tag); + printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, + s2.a, s2.b); ++ CHECK(s1.a == 5); ++ CHECK(s1.b == 6); ++ CHECK(l.a == 10); ++ CHECK(l.b == 11); ++ CHECK(l.c == 12); ++ CHECK(l.d == 13); ++ CHECK(l.e == 14); ++ CHECK(s2.a == 7); ++ CHECK(s2.b == 8); + va_end (ap); + s1.a += s2.a; + s1.b += s2.b; +@@ -118,6 +127,8 @@ main (void) + /* { dg-output "5 6 10 11 12 13 14 7 8" } */ + printf("res: %d %d\n", res.a, res.b); + /* { dg-output "\nres: 12 14" } */ ++ CHECK(res.a == 12); ++ CHECK(res.b == 14); + + return 0; + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct3.c b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct3.c +index 9a27e7fd4..d3bd28096 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct3.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.call/va_struct3.c +@@ -39,6 +39,16 @@ test_fn (int n, ...) + s2 = va_arg (ap, struct small_tag); + printf ("%u %u %u %u %u %u %u %u %u\n", s1.a, s1.b, l.a, l.b, l.c, l.d, l.e, + s2.a, s2.b); ++ ++ CHECK(s1.a == 5); ++ CHECK(s1.b == 6); ++ CHECK(l.a == 10); ++ CHECK(l.b == 11); ++ CHECK(l.c == 12); ++ CHECK(l.d == 13); ++ CHECK(l.e == 14); ++ CHECK(s2.a == 7); ++ CHECK(s2.b == 8); + va_end (ap); + l.a += s1.a; + l.b += s1.b; +@@ -120,6 +130,11 @@ main (void) + /* { dg-output "5 6 10 11 12 13 14 7 8" } */ + printf("res: %d %d %d %d %d\n", res.a, res.b, res.c, res.d, res.e); + /* { dg-output "\nres: 15 17 19 21 14" } */ ++ CHECK(res.a == 15); ++ CHECK(res.b == 17); ++ CHECK(res.c == 19); ++ CHECK(res.d == 21); ++ CHECK(res.e == 14); + + return 0; + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn0.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn0.c +index a579ff6c9..dfadb0556 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn0.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn0.c +@@ -38,7 +38,7 @@ closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, + (int)*(int *)args[12], (int)(*(int *)args[13]), + (int)(*(int *)args[14]),*(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); +- ++ CHECK((int)*(ffi_arg *)resp == 680); + } + + typedef int (*closure_test_type0)(unsigned long long, int, unsigned long long, +@@ -85,5 +85,6 @@ int main (void) + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ +- exit(0); ++ CHECK(res == 680); ++ exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn1.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn1.c +index 91231738c..a90bb291b 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn1.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn1.c +@@ -33,6 +33,7 @@ static void closure_test_fn1(ffi_cif* cif __UNUSED__, void* resp, void** args, + (int)*(int *)args[12], (int)(*(int *)args[13]), + (int)(*(int *)args[14]), *(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); ++ CHECK((int)*(ffi_arg *)resp == 255); + } + + typedef int (*closure_test_type1)(float, float, float, float, signed short, +@@ -77,5 +78,6 @@ int main (void) + /* { dg-output "1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 255" } */ ++ CHECK(res == 255); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn2.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn2.c +index 08ff9d922..7d7af4b59 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn2.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn2.c +@@ -32,6 +32,7 @@ static void closure_test_fn2(ffi_cif* cif __UNUSED__, void* resp, void** args, + (int)*(int *)args[12], (int)(*(float *)args[13]), + (int)(*(int *)args[14]), *(int *)args[15], (int)(intptr_t)userdata, + (int)*(ffi_arg *)resp); ++ CHECK((int)*(ffi_arg *)resp == 255); + } + + typedef int (*closure_test_type2)(double, double, double, double, signed short, +@@ -77,5 +78,6 @@ int main (void) + /* { dg-output "1 2 3 4 127 5 6 8 9 10 11 12 13 19 21 1 3: 255" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 255" } */ ++ CHECK(res == 255); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn3.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn3.c +index 9b54d805c..1ad8f9d86 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn3.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn3.c +@@ -31,8 +31,27 @@ static void closure_test_fn3(ffi_cif* cif __UNUSED__, void* resp, void** args, + (int)(*(float *)args[10]), (int)(*(float *)args[11]), + (int)*(int *)args[12], (int)(*(float *)args[13]), + (int)(*(float *)args[14]), *(int *)args[15], (int)(intptr_t)userdata, +- (int)*(ffi_arg *)resp); ++ (int)*(ffi_arg *)resp); + ++ CHECK((int)*(float *)args[0] == 1); ++ CHECK((int)(*(float *)args[1]) == 2); ++ CHECK((int)(*(float *)args[2]) == 3); ++ CHECK((int)(*(float *)args[3]) == 4); ++ CHECK((int)(*(float *)args[4]) == 5); ++ CHECK((int)(*(float *)args[5]) == 6); ++ CHECK((int)*(float *)args[6] == 7); ++ CHECK((int)(*(float *)args[7]) == 8); ++ CHECK((int)(*(double *)args[8]) == 9); ++ CHECK((int)*(int *)args[9] == 10); ++ CHECK((int)(*(float *)args[10]) == 11); ++ CHECK((int)(*(float *)args[11]) == 12); ++ CHECK((int)*(int *)args[12] == 13); ++ CHECK((int)(*(float *)args[13]) == 19); ++ CHECK((int)(*(float *)args[14]) == 21); ++ CHECK(*(int *)args[15] == 1); ++ CHECK((int)(intptr_t)userdata == 3); ++ ++ CHECK((int)*(ffi_arg *)resp == 135); + } + + typedef int (*closure_test_type3)(float, float, float, float, float, float, +@@ -78,5 +97,6 @@ int main (void) + /* { dg-output "1 2 3 4 5 6 7 8 9 10 11 12 13 19 21 1 3: 135" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 135" } */ ++ CHECK(res == 135); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn4.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn4.c +index d4a1530b0..e5f1f53d1 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn4.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn4.c +@@ -45,6 +45,7 @@ closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, + (int)*(unsigned long long *)args[14], + *(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); ++ CHECK((int)*(ffi_arg *)resp == 680); + + } + +@@ -84,6 +85,7 @@ int main (void) + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ ++ CHECK(res == 680); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn5.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn5.c +index 99074426c..97277f5c3 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn5.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn5.c +@@ -44,6 +44,7 @@ closure_test_fn5(ffi_cif* cif __UNUSED__, void* resp, void** args, + (int)*(unsigned long long *)args[14], + *(int *)args[15], + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); ++ CHECK((int)*(ffi_arg *)resp == 680); + + } + +@@ -87,6 +88,7 @@ int main (void) + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ ++ CHECK(res == 680); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn6.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn6.c +index 73c54fd6b..fb079e2ef 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn6.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_fn6.c +@@ -37,6 +37,7 @@ closure_test_fn0(ffi_cif* cif __UNUSED__, void* resp, void** args, + (int)*(int *)args[12], (int)(*(int *)args[13]), + (int)(*(double *)args[14]), (int)(*(double *)args[15]), + (int)(intptr_t)userdata, (int)*(ffi_arg *)resp); ++ CHECK((int)*(ffi_arg *)resp == 680); + + } + +@@ -86,5 +87,6 @@ int main (void) + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ ++ CHECK(res == 680); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_loc_fn0.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_loc_fn0.c +index ad488acaa..4f2f4f8c1 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_loc_fn0.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_loc_fn0.c +@@ -9,7 +9,7 @@ + + + +-/* { dg-do run } */ ++/* { dg-do run { xfail wasm32*-*-* } } */ + #include "ffitest.h" + + static void +@@ -82,7 +82,7 @@ int main (void) + + CHECK(ffi_prep_closure_loc(pcl, &cif, closure_loc_test_fn0, + (void *) 3 /* userdata */, codeloc) == FFI_OK); +- ++ + #ifndef FFI_EXEC_STATIC_TRAMP + /* With static trampolines, the codeloc does not point to closure */ + CHECK(memcmp(pcl, codeloc, sizeof(*pcl)) == 0); +@@ -94,5 +94,6 @@ int main (void) + /* { dg-output "1 2 3 4 127 429 7 8 9 10 11 12 13 19 21 1 3: 680" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 680" } */ +- exit(0); ++ CHECK(res == 680); ++ exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_simple.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_simple.c +index 5a4e728d4..a18b4a4ff 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_simple.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/closure_simple.c +@@ -20,6 +20,11 @@ closure_test(ffi_cif* cif __UNUSED__, void* resp, void** args, void* userdata) + (int)(*(int *)args[2]), (int)(*(int *)args[3]), + (int)*(ffi_arg *)resp); + ++ CHECK((int)*(int *)args[0] == 0); ++ CHECK((int)*(int *)args[1] == 1); ++ CHECK((int)*(int *)args[2] == 2); ++ CHECK((int)*(int *)args[3] == 3); ++ CHECK((int)*(ffi_arg *)resp == 9); + } + + typedef int (ABI_ATTR *closure_test_type0)(int, int, int, int); +@@ -50,6 +55,7 @@ int main (void) + + printf("res: %d\n",res); + /* { dg-output "\nres: 9" } */ ++ CHECK(res == 9); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_12byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_12byte.c +index ea0825d17..a1fdcd76f 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_12byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_12byte.c +@@ -25,6 +25,17 @@ cls_struct_12byte cls_struct_12byte_fn(struct cls_struct_12byte b1, + printf("%d %d %d %d %d %d: %d %d %d\n", b1.a, b1.b, b1.c, b2.a, b2.b, b2.c, + result.a, result.b, result.c); + ++ CHECK(b1.a == 7); ++ CHECK(b1.b == 4); ++ CHECK(b1.c == 9); ++ ++ CHECK(b2.a == 1); ++ CHECK(b2.b == 5); ++ CHECK(b2.c == 3); ++ ++ CHECK(result.a == 8); ++ CHECK(result.b == 9); ++ CHECK(result.c == 12); + return result; + } + +@@ -78,6 +89,9 @@ int main (void) + /* { dg-output "7 4 9 1 5 3: 8 9 12" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 8 9 12" } */ ++ CHECK(res_dbl.a == 8); ++ CHECK(res_dbl.b == 9); ++ CHECK(res_dbl.c == 12); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_12byte_gn, NULL, code) == FFI_OK); + +@@ -87,8 +101,12 @@ int main (void) + + res_dbl = ((cls_struct_12byte(*)(cls_struct_12byte, cls_struct_12byte))(code))(h_dbl, j_dbl); + /* { dg-output "\n7 4 9 1 5 3: 8 9 12" } */ ++ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 8 9 12" } */ ++ CHECK(res_dbl.a == 8); ++ CHECK(res_dbl.b == 9); ++ CHECK(res_dbl.c == 12); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_16byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_16byte.c +index 89a08a2d9..57fe8737b 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_16byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_16byte.c +@@ -26,6 +26,19 @@ cls_struct_16byte cls_struct_16byte_fn(struct cls_struct_16byte b1, + printf("%d %g %d %d %g %d: %d %g %d\n", b1.a, b1.b, b1.c, b2.a, b2.b, b2.c, + result.a, result.b, result.c); + ++ CHECK(b1.a == 7); ++ CHECK(b1.b == 8); ++ CHECK(b1.c == 9); ++ ++ CHECK(b2.a == 1); ++ CHECK(b2.b == 9); ++ CHECK(b2.c == 3); ++ ++ CHECK(result.a == 8); ++ CHECK(result.b == 17); ++ CHECK(result.c == 12); ++ ++ + return result; + } + +@@ -80,6 +93,10 @@ int main (void) + printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 8 17 12" } */ + ++ CHECK(res_dbl.a == 8); ++ CHECK(res_dbl.b == 17); ++ CHECK(res_dbl.c == 12); ++ + res_dbl.a = 0; + res_dbl.b = 0.0; + res_dbl.c = 0; +@@ -91,5 +108,10 @@ int main (void) + printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 8 17 12" } */ + ++ CHECK(res_dbl.a == 8); ++ CHECK(res_dbl.b == 17); ++ CHECK(res_dbl.c == 12); ++ ++ + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_18byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_18byte.c +index 9f75da80a..3783121b9 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_18byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_18byte.c +@@ -29,6 +29,22 @@ cls_struct_18byte cls_struct_18byte_fn(struct cls_struct_18byte a1, + printf("%g %d %d %g %g %d %d %g: %g %d %d %g\n", a1.a, a1.b, a1.c, a1.d, + a2.a, a2.b, a2.c, a2.d, + result.a, result.b, result.c, result.d); ++ ++ CHECK(a1.a == 1); ++ CHECK(a1.b == 127); ++ CHECK(a1.c == 126); ++ CHECK(a1.d == 3); ++ ++ CHECK(a2.a == 4); ++ CHECK(a2.b == 125); ++ CHECK(a2.c == 124); ++ CHECK(a2.d == 5); ++ ++ CHECK(result.a == 5); ++ CHECK(result.b == 252); ++ CHECK(result.c == 250); ++ CHECK(result.d == 8); ++ + return result; + } + +@@ -84,6 +100,10 @@ int main (void) + /* { dg-output "1 127 126 3 4 125 124 5: 5 252 250 8" } */ + printf("res: %g %d %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 5 252 250 8" } */ ++ CHECK(res_dbl.a == 5); ++ CHECK(res_dbl.b == 252); ++ CHECK(res_dbl.c == 250); ++ CHECK(res_dbl.d == 8); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_18byte_gn, NULL, code) == FFI_OK); + +@@ -91,6 +111,10 @@ int main (void) + /* { dg-output "\n1 127 126 3 4 125 124 5: 5 252 250 8" } */ + printf("res: %g %d %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 5 252 250 8" } */ ++ CHECK(res_dbl.a == 5); ++ CHECK(res_dbl.b == 252); ++ CHECK(res_dbl.c == 250); ++ CHECK(res_dbl.d == 8); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_19byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_19byte.c +index 278794b5b..98ce65a48 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_19byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_19byte.c +@@ -32,6 +32,25 @@ cls_struct_19byte cls_struct_19byte_fn(struct cls_struct_19byte a1, + a1.a, a1.b, a1.c, a1.d, a1.e, + a2.a, a2.b, a2.c, a2.d, a2.e, + result.a, result.b, result.c, result.d, result.e); ++ ++ CHECK(a1.a == 1); ++ CHECK(a1.b == 127); ++ CHECK(a1.c == 126); ++ CHECK(a1.d == 3); ++ CHECK(a1.e == 120); ++ ++ CHECK(a2.a == 4); ++ CHECK(a2.b == 125); ++ CHECK(a2.c == 124); ++ CHECK(a2.d == 5); ++ CHECK(a2.e == 119); ++ ++ CHECK(result.a == 5); ++ CHECK(result.b == 252); ++ CHECK(result.c == 250); ++ CHECK(result.d == 8); ++ CHECK(result.e == 239); ++ + return result; + } + +@@ -89,6 +108,11 @@ int main (void) + printf("res: %g %d %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e); + /* { dg-output "\nres: 5 252 250 8 239" } */ ++ CHECK(res_dbl.a == 5); ++ CHECK(res_dbl.b == 252); ++ CHECK(res_dbl.c == 250); ++ CHECK(res_dbl.d == 8); ++ CHECK(res_dbl.e == 239); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_19byte_gn, NULL, code) == FFI_OK); + +@@ -97,6 +121,11 @@ int main (void) + printf("res: %g %d %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e); + /* { dg-output "\nres: 5 252 250 8 239" } */ ++ CHECK(res_dbl.a == 5); ++ CHECK(res_dbl.b == 252); ++ CHECK(res_dbl.c == 250); ++ CHECK(res_dbl.d == 8); ++ CHECK(res_dbl.e == 239); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_1_1byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_1_1byte.c +index 82492c020..49e33b9ba 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_1_1byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_1_1byte.c +@@ -23,6 +23,9 @@ cls_struct_1_1byte cls_struct_1_1byte_fn(struct cls_struct_1_1byte a1, + result.a = a1.a + a2.a; + + printf("%d %d: %d\n", a1.a, a2.a, result.a); ++ CHECK(a1.a == 12); ++ CHECK(a2.a == 178); ++ CHECK(result.a == 190); + + return result; + } +@@ -84,6 +87,7 @@ int main (void) + /* { dg-output "\n12 178: 190" } */ + printf("res: %d\n", res_dbl.a); + /* { dg-output "\nres: 190" } */ ++ CHECK(res_dbl.a == 190); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_20byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_20byte.c +index 34ea021fb..fdae6f723 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_20byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_20byte.c +@@ -25,6 +25,18 @@ static cls_struct_20byte cls_struct_20byte_fn(struct cls_struct_20byte a1, + + printf("%g %g %d %g %g %d: %g %g %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, + result.a, result.b, result.c); ++ ++ CHECK(a1.a == 1); ++ CHECK(a1.b == 2); ++ CHECK(a1.c == 3); ++ ++ CHECK(a2.a == 4); ++ CHECK(a2.b == 5); ++ CHECK(a2.c == 7); ++ ++ CHECK(result.a == 5); ++ CHECK(result.b == 7); ++ CHECK(result.c == 10); + return result; + } + +@@ -79,6 +91,9 @@ int main (void) + /* { dg-output "1 2 3 4 5 7: 5 7 10" } */ + printf("res: %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 5 7 10" } */ ++ CHECK(res_dbl.a == 5); ++ CHECK(res_dbl.b == 7); ++ CHECK(res_dbl.c == 10); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_20byte_gn, NULL, code) == FFI_OK); + +@@ -86,6 +101,9 @@ int main (void) + /* { dg-output "\n1 2 3 4 5 7: 5 7 10" } */ + printf("res: %g %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 5 7 10" } */ ++ CHECK(res_dbl.a == 5); ++ CHECK(res_dbl.b == 7); ++ CHECK(res_dbl.c == 10); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_20byte1.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_20byte1.c +index eab4be603..e6979b562 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_20byte1.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_20byte1.c +@@ -27,6 +27,19 @@ static cls_struct_20byte cls_struct_20byte_fn(struct cls_struct_20byte a1, + + printf("%d %g %g %d %g %g: %d %g %g\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, + result.a, result.b, result.c); ++ ++ CHECK(a1.a == 1); ++ CHECK(a1.b == 2); ++ CHECK(a1.c == 3); ++ ++ CHECK(a2.a == 4); ++ CHECK(a2.b == 5); ++ CHECK(a2.c == 7); ++ ++ CHECK(result.a == 5); ++ CHECK(result.b == 7); ++ CHECK(result.c == 10); ++ + return result; + } + +@@ -81,6 +94,9 @@ int main (void) + /* { dg-output "1 2 3 4 5 7: 5 7 10" } */ + printf("res: %d %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 5 7 10" } */ ++ CHECK(res_dbl.a == 5); ++ CHECK(res_dbl.b == 7); ++ CHECK(res_dbl.c == 10); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_20byte_gn, NULL, code) == FFI_OK); + +@@ -89,5 +105,9 @@ int main (void) + printf("res: %d %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 5 7 10" } */ + ++ CHECK(res_dbl.a == 5); ++ CHECK(res_dbl.b == 7); ++ CHECK(res_dbl.c == 10); ++ + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_24byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_24byte.c +index 78796da92..b204966e7 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_24byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_24byte.c +@@ -33,6 +33,30 @@ cls_struct_24byte cls_struct_24byte_fn(struct cls_struct_24byte b0, + b2.a, b2.b, b2.c, b2.d, + b3.a, b3.b, b3.c, b3.d, + result.a, result.b, result.c, result.d); ++ CHECK_DOUBLE_EQ(b0.a, 9); ++ CHECK_DOUBLE_EQ(b0.b, 2); ++ CHECK(b0.c == 6); ++ CHECK_FLOAT_EQ(b0.d, 5); ++ ++ CHECK_DOUBLE_EQ(b1.a, 1); ++ CHECK_DOUBLE_EQ(b1.b, 2); ++ CHECK(b1.c == 3); ++ CHECK_FLOAT_EQ(b1.d, 7); ++ ++ CHECK_DOUBLE_EQ(b2.a, 4); ++ CHECK_DOUBLE_EQ(b2.b, 5); ++ CHECK(b2.c == 7); ++ CHECK_FLOAT_EQ(b2.d, 9); ++ ++ CHECK_DOUBLE_EQ(b3.a, 8); ++ CHECK_DOUBLE_EQ(b3.b, 6); ++ CHECK(b3.c == 1); ++ CHECK_FLOAT_EQ(b3.d, 4); ++ ++ CHECK_DOUBLE_EQ(result.a, 22); ++ CHECK_DOUBLE_EQ(result.b, 15); ++ CHECK(result.c == 17); ++ CHECK_FLOAT_EQ(result.d, 25); + + return result; + } +@@ -97,6 +121,10 @@ int main (void) + /* { dg-output "9 2 6 5 1 2 3 7 4 5 7 9 8 6 1 4: 22 15 17 25" } */ + printf("res: %g %g %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 22 15 17 25" } */ ++ CHECK_DOUBLE_EQ(res_dbl.a, 22); ++ CHECK_DOUBLE_EQ(res_dbl.b, 15); ++ CHECK(res_dbl.c == 17); ++ CHECK_FLOAT_EQ(res_dbl.d, 25); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_24byte_gn, NULL, code) == FFI_OK); + +@@ -108,6 +136,10 @@ int main (void) + /* { dg-output "\n9 2 6 5 1 2 3 7 4 5 7 9 8 6 1 4: 22 15 17 25" } */ + printf("res: %g %g %d %g\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 22 15 17 25" } */ ++ CHECK_DOUBLE_EQ(res_dbl.a, 22); ++ CHECK_DOUBLE_EQ(res_dbl.b, 15); ++ CHECK(res_dbl.c == 17); ++ CHECK_FLOAT_EQ(res_dbl.d, 25); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_2byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_2byte.c +index 81bb0a64a..c5209b783 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_2byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_2byte.c +@@ -24,6 +24,15 @@ cls_struct_2byte cls_struct_2byte_fn(struct cls_struct_2byte a1, + + printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 140); ++ + return result; + } + +@@ -78,6 +87,8 @@ int main (void) + /* { dg-output "12 127 1 13: 13 140" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 13 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 140); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_2byte_gn, NULL, code) == FFI_OK); + +@@ -85,6 +96,8 @@ int main (void) + /* { dg-output "\n12 127 1 13: 13 140" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 13 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3_1byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3_1byte.c +index b7827466f..aaa7ccc5c 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3_1byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3_1byte.c +@@ -28,6 +28,18 @@ cls_struct_3_1byte cls_struct_3_1byte_fn(struct cls_struct_3_1byte a1, + a2.a, a2.b, a2.c, + result.a, result.b, result.c); + ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 13); ++ CHECK(a1.c == 14); ++ ++ CHECK(a2.a == 178); ++ CHECK(a2.b == 179); ++ CHECK(a2.c == 180); ++ ++ CHECK(result.a == 190); ++ CHECK(result.b == 192); ++ CHECK(result.c == 194); ++ + return result; + } + +@@ -83,6 +95,9 @@ int main (void) + /* { dg-output "12 13 14 178 179 180: 190 192 194" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 190 192 194" } */ ++ CHECK(res_dbl.a == 190); ++ CHECK(res_dbl.b == 192); ++ CHECK(res_dbl.c == 194); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3_1byte_gn, NULL, code) == FFI_OK); + +@@ -91,5 +106,9 @@ int main (void) + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 190 192 194" } */ + ++ CHECK(res_dbl.a == 190); ++ CHECK(res_dbl.b == 192); ++ CHECK(res_dbl.c == 194); ++ + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3byte1.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3byte1.c +index a02c463af..b42491754 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3byte1.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3byte1.c +@@ -24,6 +24,15 @@ cls_struct_3byte cls_struct_3byte_fn(struct cls_struct_3byte a1, + + printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 119); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 15); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 134); ++ + return result; + } + +@@ -78,6 +87,8 @@ int main (void) + /* { dg-output "12 119 1 15: 13 134" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 13 134" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 134); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3byte_gn, NULL, code) == FFI_OK); + +@@ -85,6 +96,8 @@ int main (void) + /* { dg-output "\n12 119 1 15: 13 134" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 13 134" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 134); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3byte2.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3byte2.c +index c7251cead..f13590e4b 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3byte2.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3byte2.c +@@ -24,6 +24,15 @@ cls_struct_3byte_1 cls_struct_3byte_fn1(struct cls_struct_3byte_1 a1, + + printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + ++ CHECK(a1.a == 15); ++ CHECK(a1.b == 125); ++ ++ CHECK(a2.a == 9); ++ CHECK(a2.b == 19); ++ ++ CHECK(result.a == 24); ++ CHECK(result.b == 144); ++ + return result; + } + +@@ -78,6 +87,8 @@ int main (void) + /* { dg-output "15 125 9 19: 24 144" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 24 144" } */ ++ CHECK(res_dbl.a == 24); ++ CHECK(res_dbl.b == 144); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3byte_gn1, NULL, code) == FFI_OK); + +@@ -85,6 +96,8 @@ int main (void) + /* { dg-output "\n15 125 9 19: 24 144" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 24 144" } */ ++ CHECK(res_dbl.a == 24); ++ CHECK(res_dbl.b == 144); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3float.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3float.c +index 48888f840..63171bc7f 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3float.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_3float.c +@@ -27,6 +27,18 @@ cls_struct_3float cls_struct_3float_fn(struct cls_struct_3float a1, + printf("%g %g %g %g %g %g: %g %g %g\n", a1.f, a1.g, a1.h, + a2.f, a2.g, a2.h, result.f, result.g, result.h); + ++ CHECK_FLOAT_EQ(a1.f, 1); ++ CHECK_FLOAT_EQ(a1.g, 2); ++ CHECK_FLOAT_EQ(a1.h, 3); ++ ++ CHECK_FLOAT_EQ(a2.f, 1); ++ CHECK_FLOAT_EQ(a2.g, 2); ++ CHECK_FLOAT_EQ(a2.h, 3); ++ ++ CHECK_FLOAT_EQ(result.f, 2); ++ CHECK_FLOAT_EQ(result.g, 4); ++ CHECK_FLOAT_EQ(result.h, 6); ++ + return result; + } + +@@ -81,6 +93,9 @@ int main (void) + /* { dg-output "1 2 3 1 2 3: 2 4 6" } */ + printf("res: %g %g %g\n", res_dbl.f, res_dbl.g, res_dbl.h); + /* { dg-output "\nres: 2 4 6" } */ ++ CHECK_FLOAT_EQ(res_dbl.f, 2); ++ CHECK_FLOAT_EQ(res_dbl.g, 4); ++ CHECK_FLOAT_EQ(res_dbl.h, 6); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_3float_gn, NULL, code) == + FFI_OK); +@@ -90,6 +105,9 @@ int main (void) + /* { dg-output "\n1 2 3 1 2 3: 2 4 6" } */ + printf("res: %g %g %g\n", res_dbl.f, res_dbl.g, res_dbl.h); + /* { dg-output "\nres: 2 4 6" } */ ++ CHECK_FLOAT_EQ(res_dbl.f, 2); ++ CHECK_FLOAT_EQ(res_dbl.g, 4); ++ CHECK_FLOAT_EQ(res_dbl.h, 6); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_4_1byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_4_1byte.c +index 2d6d8b622..b5d3f7032 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_4_1byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_4_1byte.c +@@ -30,6 +30,20 @@ cls_struct_4_1byte cls_struct_4_1byte_fn(struct cls_struct_4_1byte a1, + a2.a, a2.b, a2.c, a2.d, + result.a, result.b, result.c, result.d); + ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 13); ++ CHECK(a1.c == 14); ++ CHECK(a1.d == 15); ++ ++ CHECK(a2.a == 178); ++ CHECK(a2.b == 179); ++ CHECK(a2.c == 180); ++ CHECK(a2.d == 181); ++ ++ CHECK(result.a == 190); ++ CHECK(result.b == 192); ++ CHECK(result.c == 194); ++ CHECK(result.d == 196); + return result; + } + +@@ -86,6 +100,10 @@ int main (void) + /* { dg-output "12 13 14 15 178 179 180 181: 190 192 194 196" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 190 192 194 196" } */ ++ CHECK(res_dbl.a == 190); ++ CHECK(res_dbl.b == 192); ++ CHECK(res_dbl.c == 194); ++ CHECK(res_dbl.d == 196); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_4_1byte_gn, NULL, code) == FFI_OK); + +@@ -93,6 +111,10 @@ int main (void) + /* { dg-output "\n12 13 14 15 178 179 180 181: 190 192 194 196" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 190 192 194 196" } */ ++ CHECK(res_dbl.a == 190); ++ CHECK(res_dbl.b == 192); ++ CHECK(res_dbl.c == 194); ++ CHECK(res_dbl.d == 196); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_4byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_4byte.c +index 4ac378776..4f8d173bf 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_4byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_4byte.c +@@ -24,6 +24,15 @@ cls_struct_4byte cls_struct_4byte_fn(struct cls_struct_4byte a1, + + printf("%d %d %d %d: %d %d\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + ++ CHECK(a1.a == 127); ++ CHECK(a1.b == 120); ++ ++ CHECK(a2.a == 12); ++ CHECK(a2.b == 128); ++ ++ CHECK(result.a == 139); ++ CHECK(result.b == 248); ++ + return result; + } + +@@ -78,6 +87,8 @@ int main (void) + /* { dg-output "127 120 12 128: 139 248" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 139 248" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_4byte_gn, NULL, code) == FFI_OK); + +@@ -85,6 +96,8 @@ int main (void) + /* { dg-output "\n127 120 12 128: 139 248" } */ + printf("res: %d %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 139 248" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_5_1_byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_5_1_byte.c +index 8db761cd5..07552cde7 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_5_1_byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_5_1_byte.c +@@ -32,6 +32,24 @@ static cls_struct_5byte cls_struct_5byte_fn(struct cls_struct_5byte a1, + a2.a, a2.b, a2.c, a2.d, a2.e, + result.a, result.b, result.c, result.d, result.e); + ++ CHECK(a1.a == 127); ++ CHECK(a1.b == 120); ++ CHECK(a1.c == 1); ++ CHECK(a1.d == 3); ++ CHECK(a1.e == 4); ++ ++ CHECK(a2.a == 12); ++ CHECK(a2.b == 128); ++ CHECK(a2.c == 9); ++ CHECK(a2.d == 3); ++ CHECK(a2.e == 4); ++ ++ CHECK(result.a == 139); ++ CHECK(result.b == 248); ++ CHECK(result.c == 10); ++ CHECK(result.d == 6); ++ CHECK(result.e == 8); ++ + return result; + } + +@@ -90,6 +108,11 @@ int main (void) + printf("res: %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e); + /* { dg-output "\nres: 139 248 10 6 8" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); ++ CHECK(res_dbl.d == 6); ++ CHECK(res_dbl.e == 8); + + res_dbl.a = 0; + res_dbl.b = 0; +@@ -104,6 +127,11 @@ int main (void) + printf("res: %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e); + /* { dg-output "\nres: 139 248 10 6 8" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); ++ CHECK(res_dbl.d == 6); ++ CHECK(res_dbl.e == 8); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_5byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_5byte.c +index fbb69ce4a..9f8936b59 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_5byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_5byte.c +@@ -27,6 +27,18 @@ static cls_struct_5byte cls_struct_5byte_fn(struct cls_struct_5byte a1, + a2.a, a2.b, a2.c, + result.a, result.b, result.c); + ++ CHECK(a1.a == 127); ++ CHECK(a1.b == 120); ++ CHECK(a1.c == 1); ++ ++ CHECK(a2.a == 12); ++ CHECK(a2.b == 128); ++ CHECK(a2.c == 9); ++ ++ CHECK(result.a == 139); ++ CHECK(result.b == 248); ++ CHECK(result.c == 10); ++ + return result; + } + +@@ -82,6 +94,9 @@ int main (void) + /* { dg-output "127 120 1 12 128 9: 139 248 10" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 139 248 10" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); + + res_dbl.a = 0; + res_dbl.b = 0; +@@ -93,6 +108,9 @@ int main (void) + /* { dg-output "\n127 120 1 12 128 9: 139 248 10" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 139 248 10" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_64byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_64byte.c +index a55edc2c7..5adedc944 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_64byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_64byte.c +@@ -38,6 +38,14 @@ cls_struct_64byte cls_struct_64byte_fn(struct cls_struct_64byte b0, + + printf("%g %g %g %g %g %g %g %g\n", result.a, result.b, result.c, + result.d, result.e, result.f, result.g, result.h); ++ CHECK(result.a == 22); ++ CHECK(result.b == 15); ++ CHECK(result.c == 17); ++ CHECK(result.d == 25); ++ CHECK(result.e == 6); ++ CHECK(result.f == 13); ++ CHECK(result.g == 19); ++ CHECK(result.h == 18); + + return result; + } +@@ -107,6 +115,14 @@ int main (void) + printf("res: %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18" } */ ++ CHECK(res_dbl.a == 22); ++ CHECK(res_dbl.b == 15); ++ CHECK(res_dbl.c == 17); ++ CHECK(res_dbl.d == 25); ++ CHECK(res_dbl.e == 6); ++ CHECK(res_dbl.f == 13); ++ CHECK(res_dbl.g == 19); ++ CHECK(res_dbl.h == 18); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_64byte_gn, NULL, code) == FFI_OK); + +@@ -119,6 +135,14 @@ int main (void) + printf("res: %g %g %g %g %g %g %g %g\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g, res_dbl.h); + /* { dg-output "\nres: 22 15 17 25 6 13 19 18" } */ ++ CHECK(res_dbl.a == 22); ++ CHECK(res_dbl.b == 15); ++ CHECK(res_dbl.c == 17); ++ CHECK(res_dbl.d == 25); ++ CHECK(res_dbl.e == 6); ++ CHECK(res_dbl.f == 13); ++ CHECK(res_dbl.g == 19); ++ CHECK(res_dbl.h == 18); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_6_1_byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_6_1_byte.c +index 797098628..05e2945b6 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_6_1_byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_6_1_byte.c +@@ -34,6 +34,27 @@ static cls_struct_6byte cls_struct_6byte_fn(struct cls_struct_6byte a1, + a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, + result.a, result.b, result.c, result.d, result.e, result.f); + ++ CHECK(a1.a == 127); ++ CHECK(a1.b == 120); ++ CHECK(a1.c == 1); ++ CHECK(a1.d == 3); ++ CHECK(a1.e == 4); ++ CHECK(a1.f == 5); ++ ++ CHECK(a2.a == 12); ++ CHECK(a2.b == 128); ++ CHECK(a2.c == 9); ++ CHECK(a2.d == 3); ++ CHECK(a2.e == 4); ++ CHECK(a2.f == 5); ++ ++ CHECK(result.a == 139); ++ CHECK(result.b == 248); ++ CHECK(result.c == 10); ++ CHECK(result.d == 6); ++ CHECK(result.e == 8); ++ CHECK(result.f == 10); ++ + return result; + } + +@@ -109,5 +130,11 @@ int main (void) + res_dbl.d, res_dbl.e, res_dbl.f); + /* { dg-output "\nres: 139 248 10 6 8 10" } */ + ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); ++ CHECK(res_dbl.d == 6); ++ CHECK(res_dbl.e == 8); ++ CHECK(res_dbl.f == 10); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_6byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_6byte.c +index e89c73cf8..a8e3ea071 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_6byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_6byte.c +@@ -30,6 +30,21 @@ static cls_struct_6byte cls_struct_6byte_fn(struct cls_struct_6byte a1, + a2.a, a2.b, a2.c, a2.d, + result.a, result.b, result.c, result.d); + ++ CHECK(a1.a == 127); ++ CHECK(a1.b == 120); ++ CHECK(a1.c == 1); ++ CHECK(a1.d == 128); ++ ++ CHECK(a2.a == 12); ++ CHECK(a2.b == 128); ++ CHECK(a2.c == 9); ++ CHECK(a2.d == 127); ++ ++ CHECK(result.a == 139); ++ CHECK(result.b == 248); ++ CHECK(result.c == 10); ++ CHECK(result.d == 255); ++ + return result; + } + +@@ -86,6 +101,10 @@ int main (void) + /* { dg-output "127 120 1 128 12 128 9 127: 139 248 10 255" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 139 248 10 255" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); ++ CHECK(res_dbl.d == 255); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_6byte_gn, NULL, code) == FFI_OK); + +@@ -93,7 +112,10 @@ int main (void) + /* { dg-output "\n127 120 1 128 12 128 9 127: 139 248 10 255" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 139 248 10 255" } */ +- ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); ++ CHECK(res_dbl.d == 255); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_7_1_byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_7_1_byte.c +index 94b1a44bd..3f1796483 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_7_1_byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_7_1_byte.c +@@ -36,6 +36,30 @@ static cls_struct_7byte cls_struct_7byte_fn(struct cls_struct_7byte a1, + a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, a2.g, + result.a, result.b, result.c, result.d, result.e, result.f, result.g); + ++ CHECK(a1.a == 127); ++ CHECK(a1.b == 120); ++ CHECK(a1.c == 1); ++ CHECK(a1.d == 3); ++ CHECK(a1.e == 4); ++ CHECK(a1.f == 5); ++ CHECK(a1.g == 6); ++ ++ CHECK(a2.a == 12); ++ CHECK(a2.b == 128); ++ CHECK(a2.c == 9); ++ CHECK(a2.d == 3); ++ CHECK(a2.e == 4); ++ CHECK(a2.f == 5); ++ CHECK(a2.g == 6); ++ ++ CHECK(result.a == 139); ++ CHECK(result.b == 248); ++ CHECK(result.c == 10); ++ CHECK(result.d == 6); ++ CHECK(result.e == 8); ++ CHECK(result.f == 10); ++ CHECK(result.g == 12); ++ + return result; + } + +@@ -96,6 +120,13 @@ int main (void) + printf("res: %d %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 139 248 10 6 8 10 12" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); ++ CHECK(res_dbl.d == 6); ++ CHECK(res_dbl.e == 8); ++ CHECK(res_dbl.f == 10); ++ CHECK(res_dbl.g == 12); + + res_dbl.a = 0; + res_dbl.b = 0; +@@ -112,6 +143,13 @@ int main (void) + printf("res: %d %d %d %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, + res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 139 248 10 6 8 10 12" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); ++ CHECK(res_dbl.d == 6); ++ CHECK(res_dbl.e == 8); ++ CHECK(res_dbl.f == 10); ++ CHECK(res_dbl.g == 12); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_7byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_7byte.c +index 3aa8d6cfe..dcfc29b82 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_7byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_7byte.c +@@ -29,6 +29,22 @@ static cls_struct_7byte cls_struct_7byte_fn(struct cls_struct_7byte a1, + a2.a, a2.b, a2.c, a2.d, + result.a, result.b, result.c, result.d); + ++ CHECK(a1.a == 127); ++ CHECK(a1.b == 120); ++ CHECK(a1.c == 1); ++ CHECK(a1.d == 254); ++ ++ CHECK(a2.a == 12); ++ CHECK(a2.b == 128); ++ CHECK(a2.c == 9); ++ CHECK(a2.d == 255); ++ ++ CHECK(result.a == 139); ++ CHECK(result.b == 248); ++ CHECK(result.c == 10); ++ CHECK(result.d == 509); ++ ++ + return result; + } + +@@ -85,6 +101,10 @@ int main (void) + /* { dg-output "127 120 1 254 12 128 9 255: 139 248 10 509" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 139 248 10 509" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); ++ CHECK(res_dbl.d == 509); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_7byte_gn, NULL, code) == FFI_OK); + +@@ -92,6 +112,10 @@ int main (void) + /* { dg-output "\n127 120 1 254 12 128 9 255: 139 248 10 509" } */ + printf("res: %d %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c, res_dbl.d); + /* { dg-output "\nres: 139 248 10 509" } */ ++ CHECK(res_dbl.a == 139); ++ CHECK(res_dbl.b == 248); ++ CHECK(res_dbl.c == 10); ++ CHECK(res_dbl.d == 509); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_8byte.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_8byte.c +index f6c1ea570..7a519e95e 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_8byte.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_8byte.c +@@ -23,6 +23,15 @@ cls_struct_8byte cls_struct_8byte_fn(struct cls_struct_8byte a1, + + printf("%d %g %d %g: %d %g\n", a1.a, a1.b, a2.a, a2.b, result.a, result.b); + ++ CHECK(a1.a == 1); ++ CHECK_FLOAT_EQ(a1.b, 2); ++ ++ CHECK(a2.a == 4); ++ CHECK_FLOAT_EQ(a2.b, 5); ++ ++ CHECK(result.a == 5); ++ CHECK_FLOAT_EQ(result.b, 7); ++ + return result; + } + +@@ -76,6 +85,9 @@ int main (void) + ffi_call(&cif, FFI_FN(cls_struct_8byte_fn), &res_dbl, args_dbl); + /* { dg-output "1 2 4 5: 5 7" } */ + printf("res: %d %g\n", res_dbl.a, res_dbl.b); ++ CHECK(res_dbl.a == 5); ++ CHECK_FLOAT_EQ(res_dbl.b, 7); ++ + /* { dg-output "\nres: 5 7" } */ + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_8byte_gn, NULL, code) == FFI_OK); + +@@ -83,6 +95,8 @@ int main (void) + /* { dg-output "\n1 2 4 5: 5 7" } */ + printf("res: %d %g\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 5 7" } */ ++ CHECK(res_dbl.a == 5); ++ CHECK_FLOAT_EQ(res_dbl.b, 7); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_9byte1.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_9byte1.c +index 6eb452036..9d3b609d3 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_9byte1.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_9byte1.c +@@ -26,6 +26,15 @@ static cls_struct_9byte cls_struct_9byte_fn(struct cls_struct_9byte b1, + printf("%d %g %d %g: %d %g\n", b1.a, b1.b, b2.a, b2.b, + result.a, result.b); + ++ CHECK(b1.a == 7); ++ CHECK(b1.b == 8); ++ ++ CHECK(b2.a == 1); ++ CHECK(b2.b == 9); ++ ++ CHECK(result.a == 8); ++ CHECK(result.b == 17); ++ + return result; + } + +@@ -78,6 +87,8 @@ int main (void) + /* { dg-output "7 8 1 9: 8 17" } */ + printf("res: %d %g\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 8 17" } */ ++ CHECK(res_dbl.a == 8); ++ CHECK(res_dbl.b == 17); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_9byte_gn, NULL, code) == FFI_OK); + +@@ -85,6 +96,8 @@ int main (void) + /* { dg-output "\n7 8 1 9: 8 17" } */ + printf("res: %d %g\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 8 17" } */ ++ CHECK(res_dbl.a == 8); ++ CHECK(res_dbl.b == 17); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_9byte2.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_9byte2.c +index 26e460bc7..6cfaaf397 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_9byte2.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_9byte2.c +@@ -26,6 +26,15 @@ static cls_struct_9byte cls_struct_9byte_fn(struct cls_struct_9byte b1, + printf("%g %d %g %d: %g %d\n", b1.a, b1.b, b2.a, b2.b, + result.a, result.b); + ++ CHECK(b1.a == 7); ++ CHECK(b1.b == 8); ++ ++ CHECK(b2.a == 1); ++ CHECK(b2.b == 9); ++ ++ CHECK(result.a == 8); ++ CHECK(result.b == 17); ++ + return result; + } + +@@ -78,7 +87,8 @@ int main (void) + /* { dg-output "7 8 1 9: 8 17" } */ + printf("res: %g %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 8 17" } */ +- ++ CHECK(res_dbl.a == 8); ++ CHECK(res_dbl.b == 17); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_9byte_gn, NULL, code) == FFI_OK); + +@@ -86,6 +96,8 @@ int main (void) + /* { dg-output "\n7 8 1 9: 8 17" } */ + printf("res: %g %d\n", res_dbl.a, res_dbl.b); + /* { dg-output "\nres: 8 17" } */ ++ CHECK(res_dbl.a == 8); ++ CHECK(res_dbl.b == 17); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_double.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_double.c +index 910e2287d..036cca37f 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_double.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_double.c +@@ -26,6 +26,18 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + + printf("%d %g %d %d %g %d: %d %g %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 14271); ++ CHECK(result.c == 140); ++ + return result; + } + +@@ -81,6 +93,9 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -88,6 +103,9 @@ int main (void) + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_float.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_float.c +index 56161ef63..c7dbdfd8f 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_float.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_float.c +@@ -24,6 +24,18 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + + printf("%d %g %d %d %g %d: %d %g %d\n", a1.a, (double)a1.b, a1.c, a2.a, (double)a2.b, a2.c, result.a, (double)result.b, result.c); + ++ CHECK(a1.a == 12); ++ CHECK_FLOAT_EQ(a1.b, 4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK_FLOAT_EQ(a2.b, 9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK_FLOAT_EQ(result.b, 14271); ++ CHECK(result.c == 140); ++ + return result; + } + +@@ -79,6 +91,9 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK_FLOAT_EQ(res_dbl.b, 14271); ++ CHECK(res_dbl.c == 140); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -86,6 +101,9 @@ int main (void) + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK_FLOAT_EQ(res_dbl.b, 14271); ++ CHECK(res_dbl.c == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble.c +index 3dccdef10..1cdb10bdb 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble.c +@@ -25,6 +25,18 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + + printf("%d %g %d %d %g %d: %d %g %d\n", a1.a, (double)a1.b, a1.c, a2.a, (double)a2.b, a2.c, result.a, (double)result.b, result.c); + ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 14271); ++ CHECK(result.c == 140); ++ + return result; + } + +@@ -80,6 +92,10 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); ++ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -87,6 +103,9 @@ int main (void) + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %g %d\n", res_dbl.a, (double)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +index 9b01cbd01..128d6e1b4 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +@@ -5,7 +5,7 @@ + Originator: 20031203 */ + + /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +-/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ ++/* { dg-options -mlong-double-128 { target powerpc64*-*-linux-gnu* } } */ + + #include "ffitest.h" + +@@ -39,32 +39,34 @@ static cls_struct_align cls_struct_align_fn( + a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, a2.g, + r.a, r.b, r.c, r.d, r.e, r.f, r.g); + +- return r; +-} +- +-cls_struct_align cls_struct_align_fn2( +- cls_struct_align a1) +-{ +- struct cls_struct_align r; +- +- r.a = a1.a + 1; +- r.b = a1.b + 1; +- r.c = a1.c + 1; +- r.d = a1.d + 1; +- r.e = a1.e + 1; +- r.f = a1.f + 1; +- r.g = a1.g + 1; +- +- printf("%Lg %Lg %Lg %Lg %Lg %Lg %Lg: " +- "%Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", +- a1.a, a1.b, a1.c, a1.d, a1.e, a1.f, a1.g, +- r.a, r.b, r.c, r.d, r.e, r.f, r.g); +- ++ CHECK(a1.a == 1); ++ CHECK(a1.b == 2); ++ CHECK(a1.c == 3); ++ CHECK(a1.d == 4); ++ CHECK(a1.e == 5); ++ CHECK(a1.f == 6); ++ CHECK(a1.g == 7); ++ ++ CHECK(a2.a == 8); ++ CHECK(a2.b == 9); ++ CHECK(a2.c == 10); ++ CHECK(a2.d == 11); ++ CHECK(a2.e == 12); ++ CHECK(a2.f == 13); ++ CHECK(a2.g == 14); ++ ++ CHECK(r.a == 9); ++ CHECK(r.b == 11); ++ CHECK(r.c == 13); ++ CHECK(r.d == 15); ++ CHECK(r.e == 17); ++ CHECK(r.f == 19); ++ CHECK(r.g == 21); + return r; + } + + static void +-cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, ++cls_struct_align_gn(ffi_cif* cif __UNUSED__, void* resp, void** args, + void* userdata __UNUSED__) + { + struct cls_struct_align a1, a2; +@@ -119,6 +121,13 @@ int main (void) + printf("res: %Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ ++ CHECK(res_dbl.a == 9); ++ CHECK(res_dbl.b == 11); ++ CHECK(res_dbl.c == 13); ++ CHECK(res_dbl.d == 15); ++ CHECK(res_dbl.e == 17); ++ CHECK(res_dbl.f == 19); ++ CHECK(res_dbl.g == 21); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -127,6 +136,12 @@ int main (void) + printf("res: %Lg %Lg %Lg %Lg %Lg %Lg %Lg\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ +- ++ CHECK(res_dbl.a == 9); ++ CHECK(res_dbl.b == 11); ++ CHECK(res_dbl.c == 13); ++ CHECK(res_dbl.d == 15); ++ CHECK(res_dbl.e == 17); ++ CHECK(res_dbl.f == 19); ++ CHECK(res_dbl.g == 21); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +index 8a973e7a2..3562a57fa 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +@@ -6,7 +6,7 @@ + */ + + /* { dg-do run { xfail strongarm*-*-* } } */ +-/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ ++/* { dg-options -mlong-double-128 { target powerpc64*-*-linux-gnu* } } */ + + #include "ffitest.h" + +@@ -40,6 +40,30 @@ static cls_struct_align cls_struct_align_fn( + a2.a, a2.b, a2.c, a2.d, a2.e, a2.f, a2.g, + r.a, r.b, r.c, r.d, r.e, r.f, r.g); + ++ CHECK(a1.a == 1); ++ CHECK(a1.b == 2); ++ CHECK(a1.c == 3); ++ CHECK(a1.d == 4); ++ CHECK(a1.e == 5); ++ CHECK(a1.f == 6); ++ CHECK(a1.g == 7); ++ ++ CHECK(a2.a == 8); ++ CHECK(a2.b == 9); ++ CHECK(a2.c == 10); ++ CHECK(a2.d == 11); ++ CHECK(a2.e == 12); ++ CHECK(a2.f == 13); ++ CHECK(a2.g == 14); ++ ++ CHECK(r.a == 9); ++ CHECK(r.b == 11); ++ CHECK(r.c == 13); ++ CHECK(r.d == 15); ++ CHECK(r.e == 17); ++ CHECK(r.f == 19); ++ CHECK(r.g == 21); ++ + return r; + } + +@@ -99,6 +123,13 @@ int main (void) + printf("res: %Lg %Lg %Lg %Lg %Lg %g %Lg\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ ++ CHECK(res_dbl.a == 9); ++ CHECK(res_dbl.b == 11); ++ CHECK(res_dbl.c == 13); ++ CHECK(res_dbl.d == 15); ++ CHECK(res_dbl.e == 17); ++ CHECK(res_dbl.f == 19); ++ CHECK(res_dbl.g == 21); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -107,7 +138,13 @@ int main (void) + printf("res: %Lg %Lg %Lg %Lg %Lg %g %Lg\n", res_dbl.a, res_dbl.b, + res_dbl.c, res_dbl.d, res_dbl.e, res_dbl.f, res_dbl.g); + /* { dg-output "\nres: 9 11 13 15 17 19 21" } */ +- ++ CHECK(res_dbl.a == 9); ++ CHECK(res_dbl.b == 11); ++ CHECK(res_dbl.c == 13); ++ CHECK(res_dbl.d == 15); ++ CHECK(res_dbl.e == 17); ++ CHECK(res_dbl.f == 19); ++ CHECK(res_dbl.g == 21); + exit(0); + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_pointer.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_pointer.c +index ef59259df..5fb3f09ac 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_pointer.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_pointer.c +@@ -28,6 +28,18 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + result.a, (uintptr_t)result.b, + result.c); + ++ CHECK(a1.a == 12); ++ CHECK(a1.b == (void *)4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == (void *)9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == (void *)14271); ++ CHECK(result.c == 140); ++ + return result; + } + +@@ -83,6 +95,9 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIuPTR " %d\n", res_dbl.a, (uintptr_t)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == (void *)14271); ++ CHECK(res_dbl.c == 140); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -90,6 +105,9 @@ int main (void) + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIuPTR " %d\n", res_dbl.a, (uintptr_t)res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == (void *)14271); ++ CHECK(res_dbl.c == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint16.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint16.c +index 79977093d..d2c9bf40f 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint16.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint16.c +@@ -23,6 +23,17 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + result.c = a1.c + a2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 14271); ++ CHECK(result.c == 140); + + return result; + } +@@ -79,6 +90,9 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -86,6 +100,9 @@ int main (void) + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint32.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint32.c +index 5edde7224..570f45ffd 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint32.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint32.c +@@ -23,6 +23,17 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + result.c = a1.c + a2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 14271); ++ CHECK(result.c == 140); + + return result; + } +@@ -79,13 +90,17 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ +- ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + + res_dbl = ((cls_struct_align(*)(cls_struct_align, cls_struct_align))(code))(g_dbl, f_dbl); + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ +- ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint64.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint64.c +index bcba22f3e..49ee5612b 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint64.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_sint64.c +@@ -24,6 +24,17 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + result.c = a1.c + a2.c; + + printf("%d %" PRIdLL " %d %d %" PRIdLL " %d: %d %" PRIdLL " %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 14271); ++ CHECK(result.c == 140); + + return result; + } +@@ -80,6 +91,9 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -87,6 +101,9 @@ int main (void) + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint16.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint16.c +index f33c0ec68..2204dff92 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint16.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint16.c +@@ -23,6 +23,17 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + result.c = a1.c + a2.c; + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 14271); ++ CHECK(result.c == 140); + + return result; + } +@@ -79,6 +90,9 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -86,6 +100,9 @@ int main (void) + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint32.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint32.c +index c96eee6bb..1ce23daf5 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint32.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint32.c +@@ -24,6 +24,18 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + + printf("%d %d %d %d %d %d: %d %d %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 14271); ++ CHECK(result.c == 140); ++ + return result; + } + +@@ -79,6 +91,9 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -86,6 +101,9 @@ int main (void) + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %d %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint64.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint64.c +index 958e1c2ca..aee958a86 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint64.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_align_uint64.c +@@ -26,6 +26,18 @@ static cls_struct_align cls_struct_align_fn(struct cls_struct_align a1, + + printf("%d %" PRIdLL " %d %d %" PRIdLL " %d: %d %" PRIdLL " %d\n", a1.a, a1.b, a1.c, a2.a, a2.b, a2.c, result.a, result.b, result.c); + ++ CHECK(a1.a == 12); ++ CHECK(a1.b == 4951); ++ CHECK(a1.c == 127); ++ ++ CHECK(a2.a == 1); ++ CHECK(a2.b == 9320); ++ CHECK(a2.c == 13); ++ ++ CHECK(result.a == 13); ++ CHECK(result.b == 14271); ++ CHECK(result.c == 140); ++ + return result; + } + +@@ -81,6 +93,9 @@ int main (void) + /* { dg-output "12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_align_gn, NULL, code) == FFI_OK); + +@@ -88,6 +103,9 @@ int main (void) + /* { dg-output "\n12 4951 127 1 9320 13: 13 14271 140" } */ + printf("res: %d %" PRIdLL " %d\n", res_dbl.a, res_dbl.b, res_dbl.c); + /* { dg-output "\nres: 13 14271 140" } */ ++ CHECK(res_dbl.a == 13); ++ CHECK(res_dbl.b == 14271); ++ CHECK(res_dbl.c == 140); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_dbls_struct.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_dbls_struct.c +index 25b8b6350..00e247e7e 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_dbls_struct.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_dbls_struct.c +@@ -17,6 +17,8 @@ void + closure_test_fn(Dbls p) + { + printf("%.1f %.1f\n", p.x, p.y); ++ CHECK(p.x == 1); ++ CHECK(p.y == 2); + } + + void +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_double_va.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_double_va.c +index e077f92b8..a6c445b82 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_double_va.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_double_va.c +@@ -10,14 +10,20 @@ + + #include "ffitest.h" + ++#define BUF_SIZE 50 ++static char buffer[BUF_SIZE]; ++ + static void +-cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, ++cls_double_va_fn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) + { + char* format = *(char**)args[0]; + double doubleValue = *(double*)args[1]; + + *(ffi_arg*)resp = printf(format, doubleValue); ++ CHECK(*(ffi_arg*)resp == 4); ++ snprintf(buffer, BUF_SIZE, format, doubleValue); ++ CHECK(strncmp(buffer, "7.0\n", 4) == 0); + } + + int main (void) +@@ -48,6 +54,7 @@ int main (void) + /* { dg-output "7.0" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 4" } */ ++ CHECK(res == 4); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_double_va_fn, NULL, + code) == FFI_OK); +@@ -56,6 +63,7 @@ int main (void) + /* { dg-output "\n7.0" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 4" } */ ++ CHECK(res == 4); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_float.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_float.c +index 0090fed90..97c2ac02b 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_float.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_float.c +@@ -14,6 +14,9 @@ static void cls_ret_float_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + + printf("%g: %g\n",*(float *)args[0], + *(float *)resp); ++ ++ CHECK((int)(*(float *)args[0]) == -2122); ++ CHECK((int)(*(float *)resp) == -2122); + } + + typedef float (*cls_ret_float)(float); +@@ -38,5 +41,6 @@ int main (void) + /* { dg-output "\\-2122.12: \\-2122.12" } */ + printf("res: %.6f\n", res); + /* { dg-output "\nres: \-2122.120117" } */ ++ CHECK((int)res == -2122); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_longdouble.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_longdouble.c +index d24e72e4a..2cfac4baf 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_longdouble.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_longdouble.c +@@ -7,7 +7,7 @@ + /* This test is known to PASS on armv7l-unknown-linux-gnueabihf, so I have + remove the xfail for arm*-*-* below, until we know more. */ + /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +-/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ ++/* { dg-options -mlong-double-128 { target powerpc64*-*-linux-gnu* } } */ + + #include "ffitest.h" + +@@ -25,6 +25,14 @@ long double cls_ldouble_fn( + + printf("%Lg %Lg %Lg %Lg %Lg %Lg %Lg %Lg: %Lg\n", + a1, a2, a3, a4, a5, a6, a7, a8, r); ++ CHECK(a1 == 1); ++ CHECK(a2 == 2); ++ CHECK(a3 == 3); ++ CHECK(a4 == 4); ++ CHECK(a5 == 5); ++ CHECK(a6 == 6); ++ CHECK(a7 == 7); ++ CHECK(a8 == 8); + + return r; + } +@@ -91,6 +99,7 @@ int main(void) + /* { dg-output "1 2 3 4 5 6 7 8: 36" } */ + printf("res: %Lg\n", res); + /* { dg-output "\nres: 36" } */ ++ CHECK(res == 36); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_ldouble_gn, NULL, code) == FFI_OK); + +@@ -100,6 +109,7 @@ int main(void) + /* { dg-output "\n1 2 3 4 5 6 7 8: 36" } */ + printf("res: %Lg\n", res); + /* { dg-output "\nres: 36" } */ ++ CHECK(res == 36); + + return 0; + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_longdouble_va.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_longdouble_va.c +index 39b438b28..493f0f6f6 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_longdouble_va.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_longdouble_va.c +@@ -5,19 +5,25 @@ + Originator: Blake Chaffin 6/6/2007 */ + + /* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +-/* { dg-output "" { xfail avr32*-*-* x86_64-*-mingw* } } */ ++/* { dg-output "" { xfail avr32*-*-* } } */ + /* { dg-output "" { xfail mips-sgi-irix6* } } PR libffi/46660 */ + + #include "ffitest.h" + ++#define BUF_SIZE 50 ++static char buffer[BUF_SIZE]; ++ + static void +-cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, ++cls_longdouble_va_fn(ffi_cif* cif __UNUSED__, void* resp, + void** args, void* userdata __UNUSED__) + { + char* format = *(char**)args[0]; + long double ldValue = *(long double*)args[1]; + + *(ffi_arg*)resp = printf(format, ldValue); ++ CHECK(*(ffi_arg*)resp == 4); ++ snprintf(buffer, BUF_SIZE, format, ldValue); ++ CHECK(strncmp(buffer, "7.0\n", BUF_SIZE) == 0); + } + + int main (void) +@@ -48,6 +54,7 @@ int main (void) + /* { dg-output "7.0" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 4" } */ ++ CHECK(res == 4); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_longdouble_va_fn, NULL, + code) == FFI_OK); +@@ -56,6 +63,7 @@ int main (void) + /* { dg-output "\n7.0" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 4" } */ ++ CHECK(res == 4); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_schar.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_schar.c +index 417f7be82..921777a0f 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_schar.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_schar.c +@@ -26,6 +26,8 @@ static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, + + a1 = *(signed char *)avals[0]; + a2 = *(signed char *)avals[1]; ++ CHECK(a1 == 2); ++ CHECK(a2 == 125); + + *(ffi_arg *)rval = test_func_fn(a1, a2); + +@@ -62,6 +64,7 @@ int main (void) + /* { dg-output "2 125: 127" } */ + printf("res: %d\n", (signed char)res_call); + /* { dg-output "\nres: 127" } */ ++ CHECK(res_call == 127); + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + +@@ -69,6 +72,7 @@ int main (void) + /* { dg-output "\n2 125: 127" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 127" } */ ++ CHECK(res_closure == 127); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_sshort.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_sshort.c +index 467146dbd..d78c62d2d 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_sshort.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_sshort.c +@@ -14,6 +14,9 @@ static signed short test_func_fn(signed short a1, signed short a2) + result = a1 + a2; + + printf("%d %d: %d\n", a1, a2, result); ++ CHECK(a1 == 2); ++ CHECK(a2 == 32765); ++ CHECK(result == 32767); + + return result; + +@@ -62,6 +65,7 @@ int main (void) + /* { dg-output "2 32765: 32767" } */ + printf("res: %d\n", (unsigned short)res_call); + /* { dg-output "\nres: 32767" } */ ++ CHECK(res_call == 32767); + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + +@@ -69,6 +73,7 @@ int main (void) + /* { dg-output "\n2 32765: 32767" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 32767" } */ ++ CHECK(res_closure == 32767); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +index de45b593e..a2b370873 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +@@ -16,6 +16,12 @@ static signed short test_func_fn(signed char a1, signed short a2, + + printf("%d %d %d %d: %d\n", a1, a2, a3, a4, result); + ++ CHECK(a1 == 1); ++ CHECK(a2 == 32765); ++ CHECK(a3 == 127); ++ CHECK(a4 == -128); ++ CHECK(result == 32765); ++ + return result; + + } +@@ -74,6 +80,7 @@ int main (void) + /* { dg-output "1 32765 127 -128: 32765" } */ + printf("res: %d\n", (signed short)res_call); + /* { dg-output "\nres: 32765" } */ ++ CHECK(res_call == 32765); + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + +@@ -81,6 +88,7 @@ int main (void) + /* { dg-output "\n1 32765 127 -128: 32765" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 32765" } */ ++ CHECK(res_closure == 32765); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_uchar.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_uchar.c +index eb93e95e3..76f90a024 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_uchar.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_uchar.c +@@ -16,6 +16,12 @@ static unsigned char test_func_fn(unsigned char a1, unsigned char a2, + + printf("%d %d %d %d: %d\n", a1, a2, a3, a4, result); + ++ CHECK(a1 == 1); ++ CHECK(a2 == 2); ++ CHECK(a3 == 127); ++ CHECK(a4 == 125); ++ CHECK(result == 255); ++ + return result; + + } +@@ -79,6 +85,7 @@ int main (void) + /* { dg-output "1 2 127 125: 255" } */ + printf("res: %d\n", (unsigned char)res_call); + /* { dg-output "\nres: 255" } */ ++ CHECK((unsigned char)res_call == 255); + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + +@@ -86,6 +93,7 @@ int main (void) + /* { dg-output "\n1 2 127 125: 255" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 255" } */ ++ CHECK(res_closure == 255); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_ushort.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_ushort.c +index 0e5838df1..f61a62793 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_ushort.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_ushort.c +@@ -15,8 +15,11 @@ static unsigned short test_func_fn(unsigned short a1, unsigned short a2) + + printf("%d %d: %d\n", a1, a2, result); + +- return result; ++ CHECK(a1 == 2); ++ CHECK(a2 == 32765); ++ CHECK(result == 32767); + ++ return result; + } + + static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, +@@ -69,6 +72,7 @@ int main (void) + /* { dg-output "\n2 32765: 32767" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 32767" } */ ++ CHECK(res_closure == 32767); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +index 69aedfe0d..3315c995f 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +@@ -16,6 +16,12 @@ static unsigned short test_func_fn(unsigned char a1, unsigned short a2, + + printf("%d %d %d %d: %d\n", a1, a2, a3, a4, result); + ++ CHECK(a1 == 1); ++ CHECK(a2 == 2); ++ CHECK(a3 == 127); ++ CHECK(a4 == 128); ++ CHECK(result == 258); ++ + return result; + + } +@@ -74,6 +80,7 @@ int main (void) + /* { dg-output "1 2 127 128: 258" } */ + printf("res: %d\n", (unsigned short)res_call); + /* { dg-output "\nres: 258" } */ ++ CHECK(res_call == 258); + + CHECK(ffi_prep_closure_loc(pcl, &cif, test_func_gn, NULL, code) == FFI_OK); + +@@ -81,6 +88,7 @@ int main (void) + /* { dg-output "\n1 2 127 128: 258" } */ + printf("res: %d\n", res_closure); + /* { dg-output "\nres: 258" } */ ++ CHECK(res_closure == 258); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_pointer.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_pointer.c +index d82a87a71..73a4cba78 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_pointer.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_pointer.c +@@ -16,6 +16,10 @@ void* cls_pointer_fn(void* a1, void* a2) + (unsigned int)(uintptr_t) a2, + (unsigned int)(uintptr_t) result); + ++ CHECK((unsigned int)(uintptr_t) a1 == 0x12345678); ++ CHECK((unsigned int)(uintptr_t) a2 == 0x89abcdef); ++ CHECK((unsigned int)(uintptr_t) result == 0x9be02467); ++ + return result; + } + +@@ -69,6 +73,7 @@ int main (void) + /* { dg-output "\n0x12345678 0x89abcdef: 0x9be02467" } */ + printf("res: 0x%08x\n", (unsigned int) res); + /* { dg-output "\nres: 0x9be02467" } */ ++ CHECK(res == 0x9be02467); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_pointer_stack.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_pointer_stack.c +index 1f1d9157b..2054f2547 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_pointer_stack.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_pointer_stack.c +@@ -40,6 +40,10 @@ void* cls_pointer_fn2(void* a1, void* a2) + (unsigned int)(uintptr_t) a2, + (unsigned int)(uintptr_t) result); + ++ CHECK((unsigned int)(uintptr_t) a1 == 0x8acf1356); ++ CHECK((unsigned int)(uintptr_t) a2 == 0x01234567); ++ CHECK((unsigned int)(uintptr_t) result == 0x8bf258bd); ++ + return result; + } + +@@ -65,6 +69,10 @@ void* cls_pointer_fn1(void* a1, void* a2) + (unsigned int)(intptr_t) a2, + (unsigned int)(intptr_t) result); + ++ CHECK((unsigned int)(uintptr_t) a1 == 0x01234567); ++ CHECK((unsigned int)(uintptr_t) a2 == 0x89abcdef); ++ CHECK((unsigned int)(uintptr_t) result == 0x8acf1356); ++ + result = cls_pointer_fn2(result, a1); + + return result; +@@ -128,6 +136,7 @@ int main (void) + /* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */ + /* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */ + /* { dg-output "\nres: 0x8bf258bd" } */ ++ CHECK(res == 0x8bf258bd); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_pointer_gn, NULL, code) == FFI_OK); + +@@ -137,6 +146,7 @@ int main (void) + /* { dg-output "\n0x01234567 0x89abcdef: 0x8acf1356" } */ + /* { dg-output "\n0x8acf1356 0x01234567: 0x8bf258bd" } */ + /* { dg-output "\nres: 0x8bf258bd" } */ ++ CHECK(res == 0x8bf258bd); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_schar.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_schar.c +index 82986b172..22446c317 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_schar.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_schar.c +@@ -15,6 +15,8 @@ static void cls_ret_schar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + *(ffi_arg*)resp = *(signed char *)args[0]; + printf("%d: %d\n",*(signed char *)args[0], + (int)*(ffi_arg *)(resp)); ++ CHECK(*(signed char *)args[0] == 127); ++ CHECK((int)*(ffi_arg *)(resp) == 127); + } + typedef signed char (*cls_ret_schar)(signed char); + +@@ -39,6 +41,7 @@ int main (void) + /* { dg-output "127: 127" } */ + printf("res: %d\n", res); + /* { dg-output "\nres: 127" } */ ++ CHECK(res == 127); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_sint.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_sint.c +index c7e13b73a..a3f72c129 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_sint.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_sint.c +@@ -13,6 +13,8 @@ static void cls_ret_sint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + *(ffi_arg*)resp = *(signed int *)args[0]; + printf("%d: %d\n",*(signed int *)args[0], + (int)*(ffi_arg *)(resp)); ++ CHECK(*(signed int *)args[0] == 65534); ++ CHECK((int)*(ffi_arg *)(resp) == 65534); + } + typedef signed int (*cls_ret_sint)(signed int); + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_sshort.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_sshort.c +index 846d57ed1..8061a0296 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_sshort.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_sshort.c +@@ -13,6 +13,8 @@ static void cls_ret_sshort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + *(ffi_arg*)resp = *(signed short *)args[0]; + printf("%d: %d\n",*(signed short *)args[0], + (int)*(ffi_arg *)(resp)); ++ CHECK(*(signed short *)args[0] == 255); ++ CHECK((int)*(ffi_arg *)(resp) == 255); + } + typedef signed short (*cls_ret_sshort)(signed short); + +@@ -37,6 +39,7 @@ int main (void) + /* { dg-output "255: 255" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 255" } */ ++ CHECK(res == 255); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_struct_va1.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_struct_va1.c +index 6d1fdaeb6..c59a27f3d 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_struct_va1.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_struct_va1.c +@@ -35,6 +35,16 @@ test_fn (ffi_cif* cif __UNUSED__, void* resp, + printf ("%d %d %d %d %d %d %d %d %d %d\n", n, s1.a, s1.b, + l1.a, l1.b, l1.c, l1.d, l1.e, + s2.a, s2.b); ++ CHECK(n == 4); ++ CHECK(s1.a == 5); ++ CHECK(s1.b == 6); ++ CHECK(l1.a == 10); ++ CHECK(l1.b == 11); ++ CHECK(l1.c == 12); ++ CHECK(l1.d == 13); ++ CHECK(l1.e == 14); ++ CHECK(s2.a == 20); ++ CHECK(s2.b == 21); + * (ffi_arg*) resp = 42; + } + +@@ -109,6 +119,7 @@ main (void) + /* { dg-output "4 5 6 10 11 12 13 14 20 21" } */ + printf("res: %d\n", (int) res); + /* { dg-output "\nres: 42" } */ ++ CHECK(res == 42); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uchar.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uchar.c +index c1317e795..aa2023ffd 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uchar.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uchar.c +@@ -13,6 +13,8 @@ static void cls_ret_uchar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + *(ffi_arg*)resp = *(unsigned char *)args[0]; + printf("%d: %d\n",*(unsigned char *)args[0], + (int)*(ffi_arg *)(resp)); ++ CHECK(*(unsigned char *)args[0] == 127); ++ CHECK((int)*(ffi_arg *)(resp) == 127); + } + typedef unsigned char (*cls_ret_uchar)(unsigned char); + +@@ -37,6 +39,7 @@ int main (void) + /* { dg-output "127: 127" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 127" } */ ++ CHECK(res == 127); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uint.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uint.c +index 885cff5c3..23b88de2d 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uint.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uint.c +@@ -14,6 +14,9 @@ static void cls_ret_uint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + + printf("%d: %d\n",*(unsigned int *)args[0], + (int)*(ffi_arg *)(resp)); ++ ++ CHECK(*(unsigned int *)args[0] == 2147483647); ++ CHECK((int)*(ffi_arg *)(resp) == 2147483647); + } + typedef unsigned int (*cls_ret_uint)(unsigned int); + +@@ -38,6 +41,7 @@ int main (void) + /* { dg-output "2147483647: 2147483647" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 2147483647" } */ ++ CHECK(res == 2147483647); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uint_va.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uint_va.c +index b04cfd19c..0048a02d4 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uint_va.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_uint_va.c +@@ -16,6 +16,9 @@ static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + *(ffi_arg *)resp = *(T *)args[0]; + + printf("%d: %d %d\n", (int)*(ffi_arg *)resp, *(T *)args[0], *(T *)args[1]); ++ CHECK(*(T *)args[0] == 67); ++ CHECK(*(T *)args[1] == 4); ++ CHECK((int)*(ffi_arg *)resp == 67); + } + + typedef T (*cls_ret_T)(T, ...); +@@ -41,5 +44,6 @@ int main (void) + /* { dg-output "67: 67 4" } */ + printf("res: %d\n", res); + /* { dg-output "\nres: 67" } */ ++ CHECK(res == 67); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ulong_va.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ulong_va.c +index 0315082e0..79f41706a 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ulong_va.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ulong_va.c +@@ -16,6 +16,9 @@ static void cls_ret_T_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + *(T *)resp = *(T *)args[0]; + + printf("%ld: %ld %ld\n", *(T *)resp, *(T *)args[0], *(T *)args[1]); ++ CHECK(*(T *)args[0] == 67); ++ CHECK(*(T *)args[1] == 4); ++ CHECK(*(T *)resp == 67); + } + + typedef T (*cls_ret_T)(T, ...); +@@ -41,5 +44,6 @@ int main (void) + /* { dg-output "67: 67 4" } */ + printf("res: %ld\n", res); + /* { dg-output "\nres: 67" } */ ++ CHECK(res == 67); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ulonglong.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ulonglong.c +index 62f2cae63..813bb2eff 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ulonglong.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ulonglong.c +@@ -37,11 +37,13 @@ int main (void) + /* { dg-output "214: 1152921504606846761" } */ + printf("res: %" PRIdLL "\n", res); + /* { dg-output "\nres: 1152921504606846761" } */ ++ CHECK(res == 1152921504606846761LL); + + res = (*((cls_ret_ulonglong)code))(9223372035854775808LL); + /* { dg-output "\n9223372035854775808: 8070450533247928831" } */ + printf("res: %" PRIdLL "\n", res); + /* { dg-output "\nres: 8070450533247928831" } */ ++ CHECK(res == 8070450533247928831LL); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ushort.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ushort.c +index a00100e07..bfe5e657c 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ushort.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/cls_ushort.c +@@ -14,6 +14,8 @@ static void cls_ret_ushort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, + + printf("%d: %d\n",*(unsigned short *)args[0], + (int)*(ffi_arg *)(resp)); ++ CHECK(*(unsigned short *)args[0] == 65535); ++ CHECK((int)*(ffi_arg *)(resp) == 65535); + } + typedef unsigned short (*cls_ret_ushort)(unsigned short); + +@@ -38,6 +40,7 @@ int main (void) + /* { dg-output "65535: 65535" } */ + printf("res: %d\n",res); + /* { dg-output "\nres: 65535" } */ ++ CHECK(res == 65535); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/ffitest.h b/vendor/libffi-sys/libffi/testsuite/libffi.closures/ffitest.h +index 95d96a83f..d27d362d6 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/ffitest.h ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/ffitest.h +@@ -1,144 +1 @@ +-#include +-#include +-#include +-#include +-#include +-#include "fficonfig.h" +- +-#if defined HAVE_STDINT_H +-#include +-#endif +- +-#if defined HAVE_INTTYPES_H +-#include +-#endif +- +-#define MAX_ARGS 256 +- +-#define CHECK(x) \ +- do { \ +- if(!(x)){ \ +- printf("Check failed:\n%s\n", #x); \ +- abort(); \ +- } \ +- } while(0) +- +-/* Define macros so that compilers other than gcc can run the tests. */ +-#undef __UNUSED__ +-#if defined(__GNUC__) +-#define __UNUSED__ __attribute__((__unused__)) +-#define __STDCALL__ __attribute__((stdcall)) +-#define __THISCALL__ __attribute__((thiscall)) +-#define __FASTCALL__ __attribute__((fastcall)) +-#define __MSABI__ __attribute__((ms_abi)) +-#else +-#define __UNUSED__ +-#define __STDCALL__ __stdcall +-#define __THISCALL__ __thiscall +-#define __FASTCALL__ __fastcall +-#endif +- +-#ifndef ABI_NUM +-#define ABI_NUM FFI_DEFAULT_ABI +-#define ABI_ATTR +-#endif +- +-/* Prefer MAP_ANON(YMOUS) to /dev/zero, since we don't need to keep a +- file open. */ +-#ifdef HAVE_MMAP_ANON +-# undef HAVE_MMAP_DEV_ZERO +- +-# include +-# ifndef MAP_FAILED +-# define MAP_FAILED -1 +-# endif +-# if !defined (MAP_ANONYMOUS) && defined (MAP_ANON) +-# define MAP_ANONYMOUS MAP_ANON +-# endif +-# define USING_MMAP +- +-#endif +- +-#ifdef HAVE_MMAP_DEV_ZERO +- +-# include +-# ifndef MAP_FAILED +-# define MAP_FAILED -1 +-# endif +-# define USING_MMAP +- +-#endif +- +-/* MinGW kludge. */ +-#if defined(_WIN64) | defined(_WIN32) +-#define PRIdLL "I64d" +-#define PRIuLL "I64u" +-#else +-#define PRIdLL "lld" +-#define PRIuLL "llu" +-#endif +- +-/* Tru64 UNIX kludge. */ +-#if defined(__alpha__) && defined(__osf__) +-/* Tru64 UNIX V4.0 doesn't support %lld/%lld, but long is 64-bit. */ +-#undef PRIdLL +-#define PRIdLL "ld" +-#undef PRIuLL +-#define PRIuLL "lu" +-#define PRId8 "hd" +-#define PRIu8 "hu" +-#define PRId64 "ld" +-#define PRIu64 "lu" +-#define PRIuPTR "lu" +-#endif +- +-/* PA HP-UX kludge. */ +-#if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR) +-#define PRIuPTR "lu" +-#endif +- +-/* IRIX kludge. */ +-#if defined(__sgi) +-/* IRIX 6.5 provides all definitions, but only for C99 +- compilations. */ +-#define PRId8 "hhd" +-#define PRIu8 "hhu" +-#if (_MIPS_SZLONG == 32) +-#define PRId64 "lld" +-#define PRIu64 "llu" +-#endif +-/* This doesn't match , which always has "lld" here, but the +- arguments are uint64_t, int64_t, which are unsigned long, long for +- 64-bit in . */ +-#if (_MIPS_SZLONG == 64) +-#define PRId64 "ld" +-#define PRIu64 "lu" +-#endif +-/* This doesn't match , which has "u" here, but the arguments +- are uintptr_t, which is always unsigned long. */ +-#define PRIuPTR "lu" +-#endif +- +-/* Solaris < 10 kludge. */ +-#if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR) +-#if defined(__arch64__) || defined (__x86_64__) +-#define PRIuPTR "lu" +-#else +-#define PRIuPTR "u" +-#endif +-#endif +- +-/* MSVC kludge. */ +-#if defined _MSC_VER +-#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) +-#define PRIuPTR "lu" +-#define PRIu8 "u" +-#define PRId8 "d" +-#define PRIu64 "I64u" +-#define PRId64 "I64d" +-#endif +-#endif +- +-#ifndef PRIuPTR +-#define PRIuPTR "u" +-#endif ++#include "../libffi.call/ffitest.h" +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/huge_struct.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/huge_struct.c +index e8e1d8601..71cae2681 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/huge_struct.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/huge_struct.c +@@ -5,8 +5,8 @@ + Originator: Blake Chaffin 6/18/2007 + */ + +-/* { dg-do run { xfail strongarm*-*-* xscale*-*-* } } */ +-/* { dg-options -mlong-double-128 { target powerpc64*-*-linux* } } */ ++/* { dg-do run { xfail strongarm*-*-* xscale*-*-* wasm32*-*-* } } */ ++/* { dg-options -mlong-double-128 { target powerpc64*-*-linux-gnu* } } */ + /* { dg-options -Wformat=0 { target moxie*-*-elf or1k-*-* } } */ + + #include +@@ -121,13 +121,13 @@ test_large_fn( + { + BigStruct retVal = { + ui8_1 + 1, si8_1 + 1, ui16_1 + 1, si16_1 + 1, ui32_1 + 1, si32_1 + 1, +- ui64_1 + 1, si64_1 + 1, f_1 + 1, d_1 + 1, ld_1 + 1, (char*)((intptr_t)p_1 + 1), ++ ui64_1 + 1, si64_1 + 1, f_1 + 1, d_1 + 1, ld_1 + 1, (char*)((intptr_t)p_1 + 1), + ui8_2 + 2, si8_2 + 2, ui16_2 + 2, si16_2 + 2, ui32_2 + 2, si32_2 + 2, +- ui64_2 + 2, si64_2 + 2, f_2 + 2, d_2 + 2, ld_2 + 2, (char*)((intptr_t)p_2 + 2), ++ ui64_2 + 2, si64_2 + 2, f_2 + 2, d_2 + 2, ld_2 + 2, (char*)((intptr_t)p_2 + 2), + ui8_3 + 3, si8_3 + 3, ui16_3 + 3, si16_3 + 3, ui32_3 + 3, si32_3 + 3, +- ui64_3 + 3, si64_3 + 3, f_3 + 3, d_3 + 3, ld_3 + 3, (char*)((intptr_t)p_3 + 3), ++ ui64_3 + 3, si64_3 + 3, f_3 + 3, d_3 + 3, ld_3 + 3, (char*)((intptr_t)p_3 + 3), + ui8_4 + 4, si8_4 + 4, ui16_4 + 4, si16_4 + 4, ui32_4 + 4, si32_4 + 4, +- ui64_4 + 4, si64_4 + 4, f_4 + 4, d_4 + 4, ld_4 + 4, (char*)((intptr_t)p_4 + 4), ++ ui64_4 + 4, si64_4 + 4, f_4 + 4, d_4 + 4, ld_4 + 4, (char*)((intptr_t)p_4 + 4), + ui8_5 + 5, si8_5 + 5}; + + printf("%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " +@@ -138,18 +138,18 @@ test_large_fn( + "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " + "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " + "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n", +- ui8_1, si8_1, ui16_1, si16_1, ui32_1, si32_1, ui64_1, si64_1, f_1, d_1, ld_1, (unsigned long)p_1, +- ui8_2, si8_2, ui16_2, si16_2, ui32_2, si32_2, ui64_2, si64_2, f_2, d_2, ld_2, (unsigned long)p_2, +- ui8_3, si8_3, ui16_3, si16_3, ui32_3, si32_3, ui64_3, si64_3, f_3, d_3, ld_3, (unsigned long)p_3, +- ui8_4, si8_4, ui16_4, si16_4, ui32_4, si32_4, ui64_4, si64_4, f_4, d_4, ld_4, (unsigned long)p_4, ui8_5, si8_5, ++ ui8_1, si8_1, ui16_1, si16_1, ui32_1, si32_1, ui64_1, si64_1, f_1, d_1, ld_1, (long)(intptr_t)p_1, ++ ui8_2, si8_2, ui16_2, si16_2, ui32_2, si32_2, ui64_2, si64_2, f_2, d_2, ld_2, (long)(intptr_t)p_2, ++ ui8_3, si8_3, ui16_3, si16_3, ui32_3, si32_3, ui64_3, si64_3, f_3, d_3, ld_3, (long)(intptr_t)p_3, ++ ui8_4, si8_4, ui16_4, si16_4, ui32_4, si32_4, ui64_4, si64_4, f_4, d_4, ld_4, (long)(intptr_t)p_4, ui8_5, si8_5, + retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f, +- retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l, ++ retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (long)(intptr_t)retVal.l, + retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r, +- retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x, ++ retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (long)(intptr_t)retVal.x, + retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd, +- retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj, ++ retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (long)(intptr_t)retVal.jj, + retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp, +- retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx); ++ retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (long)(intptr_t)retVal.vv, retVal.ww, retVal.xx); + + return retVal; + } +@@ -302,13 +302,13 @@ main(int argc __UNUSED__, const char** argv __UNUSED__) + "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " + "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n", + retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f, +- retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l, ++ retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (long)(intptr_t)retVal.l, + retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r, +- retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x, ++ retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (long)(intptr_t)retVal.x, + retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd, +- retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj, ++ retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (long)(intptr_t)retVal.jj, + retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp, +- retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx); ++ retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (long)(intptr_t)retVal.vv, retVal.ww, retVal.xx); + /* { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */ + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_large_fn, NULL, code) == FFI_OK); +@@ -330,13 +330,13 @@ main(int argc __UNUSED__, const char** argv __UNUSED__) + "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx " + "%" PRIu8 " %" PRId8 " %hu %hd %u %d %" PRIu64 " %" PRId64 " %.0f %.0f %.0Lf %#lx %" PRIu8 " %" PRId8 "\n", + retVal.a, retVal.b, retVal.c, retVal.d, retVal.e, retVal.f, +- retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (unsigned long)retVal.l, ++ retVal.g, retVal.h, retVal.i, retVal.j, retVal.k, (long)(intptr_t)retVal.l, + retVal.m, retVal.n, retVal.o, retVal.p, retVal.q, retVal.r, +- retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (unsigned long)retVal.x, ++ retVal.s, retVal.t, retVal.u, retVal.v, retVal.w, (long)(intptr_t)retVal.x, + retVal.y, retVal.z, retVal.aa, retVal.bb, retVal.cc, retVal.dd, +- retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (unsigned long)retVal.jj, ++ retVal.ee, retVal.ff, retVal.gg, retVal.hh, retVal.ii, (long)(intptr_t)retVal.jj, + retVal.kk, retVal.ll, retVal.mm, retVal.nn, retVal.oo, retVal.pp, +- retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (unsigned long)retVal.vv, retVal.ww, retVal.xx); ++ retVal.qq, retVal.rr, retVal.ss, retVal.tt, retVal.uu, (long)(intptr_t)retVal.vv, retVal.ww, retVal.xx); + /* { dg-output "\nres: 2 3 4 5 6 7 8 9 10 11 12 0x12345679 3 4 5 6 7 8 9 10 11 12 13 0x1234567a 4 5 6 7 8 9 10 11 12 13 14 0x1234567b 5 6 7 8 9 10 11 12 13 14 15 0x1234567c 6 7" } */ + + return 0; +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct.c +index 10797a345..8b1b4ba79 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct.c +@@ -46,6 +46,29 @@ static cls_struct_combined cls_struct_combined_fn(struct cls_struct_16byte1 b0, + result.d.a, result.d.b, result.d.c, + result.e.ii, result.e.dd, result.e.ff); + ++ CHECK_DOUBLE_EQ(b0.a, 9); ++ CHECK_FLOAT_EQ(b0.b, 2); ++ CHECK(b0.c == 6); ++ ++ CHECK(b1.ii == 1); ++ CHECK_DOUBLE_EQ(b1.dd, 2); ++ CHECK_FLOAT_EQ(b1.ff, 3); ++ ++ CHECK_DOUBLE_EQ(b2.d.a, 4); ++ CHECK_FLOAT_EQ(b2.d.b, 5); ++ CHECK(b2.d.c == 6); ++ ++ CHECK(b2.e.ii == 3); ++ CHECK_DOUBLE_EQ(b2.e.dd, 1); ++ CHECK_FLOAT_EQ(b2.e.ff, 8); ++ ++ CHECK_DOUBLE_EQ(result.d.a, 15); ++ CHECK_FLOAT_EQ(result.d.b, 10); ++ CHECK(result.d.c == 13); ++ CHECK(result.e.ii == 10); ++ CHECK_DOUBLE_EQ(result.e.dd, 12); ++ CHECK_FLOAT_EQ(result.e.ff, 13); ++ + return result; + } + +@@ -128,12 +151,12 @@ int main (void) + + ffi_call(&cif, FFI_FN(cls_struct_combined_fn), &res_dbl, args_dbl); + /* { dg-output "9 2 6 1 2 3 4 5 6 3 1 8: 15 10 13 10 12 13" } */ +- CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); +- CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); ++ CHECK_DOUBLE_EQ( res_dbl.d.a, (e_dbl.a + f_dbl.dd + g_dbl.d.a)); ++ CHECK_FLOAT_EQ( res_dbl.d.b, (e_dbl.b + f_dbl.ff + g_dbl.d.b)); + CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); + CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); +- CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); +- CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); ++ CHECK_DOUBLE_EQ( res_dbl.e.dd, (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); ++ CHECK_FLOAT_EQ( res_dbl.e.ff, (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, cls_struct_combined_gn, NULL, code) == FFI_OK); + +@@ -142,11 +165,11 @@ int main (void) + cls_struct_combined)) + (code))(e_dbl, f_dbl, g_dbl); + /* { dg-output "\n9 2 6 1 2 3 4 5 6 3 1 8: 15 10 13 10 12 13" } */ +- CHECK( res_dbl.d.a == (e_dbl.a + f_dbl.dd + g_dbl.d.a)); +- CHECK( res_dbl.d.b == (e_dbl.b + f_dbl.ff + g_dbl.d.b)); ++ CHECK_DOUBLE_EQ( res_dbl.d.a, (e_dbl.a + f_dbl.dd + g_dbl.d.a)); ++ CHECK_FLOAT_EQ( res_dbl.d.b, (e_dbl.b + f_dbl.ff + g_dbl.d.b)); + CHECK( res_dbl.d.c == (e_dbl.c + f_dbl.ii + g_dbl.d.c)); + CHECK( res_dbl.e.ii == (e_dbl.c + f_dbl.ii + g_dbl.e.ii)); +- CHECK( res_dbl.e.dd == (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); +- CHECK( res_dbl.e.ff == (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); ++ CHECK_DOUBLE_EQ( res_dbl.e.dd, (e_dbl.a + f_dbl.dd + g_dbl.e.dd)); ++ CHECK_FLOAT_EQ( res_dbl.e.ff, (e_dbl.b + f_dbl.ff + g_dbl.e.ff)); + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct10.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct10.c +index 3cf2b44ab..a2cdc6494 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct10.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct10.c +@@ -38,6 +38,18 @@ static B B_fn(struct A b2, struct B b3, struct C b4) + (int)b3.x.a, b3.x.b, b3.y, b3.z, (int)b4.d, b4.e, + (int)result.x.a, result.x.b, result.y); + ++ CHECK((int)b2.a == 1); ++ CHECK(b2.b == 7); ++ CHECK((int)b3.x.a == 12); ++ CHECK(b3.x.b == 127); ++ CHECK(b3.y == 99); ++ CHECK(b3.z == 255); ++ CHECK((int)b4.d == 2); ++ CHECK(b4.e == 9); ++ CHECK((int)result.x.a == 270); ++ CHECK(result.x.b == 242); ++ CHECK(result.y == 143); ++ + return result; + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct11.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct11.c +index 351049382..c9821e493 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct11.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct11.c +@@ -35,6 +35,13 @@ static C C_fn (int x, int y, int z, C source, int i, int j, int k) + + printf ("%d, %d, %d, %d, %d, %d\n", x, y, z, i, j, k); + ++ CHECK(x == 1); ++ CHECK(y == 1); ++ CHECK(z == 1); ++ CHECK(i == 1); ++ CHECK(j == 1); ++ CHECK(k == 1); ++ + printf ("%.1f, %.1f, %.1f, %.1f, " + "%.1f, %.1f, %.1f, %.1f\n", + source.a.a_x, source.a.a_y, +@@ -42,6 +49,15 @@ static C C_fn (int x, int y, int z, C source, int i, int j, int k) + result.a.a_x, result.a.a_y, + result.b.b_x, result.b.b_y); + ++ CHECK_FLOAT_EQ(source.a.a_x, 1.0); ++ CHECK_FLOAT_EQ(source.a.a_y, 2.0); ++ CHECK_FLOAT_EQ(source.b.b_x, 4.0); ++ CHECK_FLOAT_EQ(source.b.b_y, 8.0); ++ CHECK_FLOAT_EQ(result.a.a_x, 1.0); ++ CHECK_FLOAT_EQ(result.a.a_y, 2.0); ++ CHECK_FLOAT_EQ(result.b.b_x, 4.0); ++ CHECK_FLOAT_EQ(result.b.b_y, 8.0); ++ + return result; + } + +@@ -113,9 +129,9 @@ int main (void) + ffi_call (&cif, FFI_FN (C_fn), &result, args); + /* { dg-output "1, 1, 1, 1, 1, 1\n" } */ + /* { dg-output "1.0, 2.0, 4.0, 8.0, 1.0, 2.0, 4.0, 8.0" } */ +- CHECK (result.a.a_x == source.a.a_x); +- CHECK (result.a.a_y == source.a.a_y); +- CHECK (result.b.b_x == source.b.b_x); +- CHECK (result.b.b_y == source.b.b_y); +- exit (0); ++ CHECK_FLOAT_EQ(result.a.a_x, source.a.a_x); ++ CHECK_FLOAT_EQ(result.a.a_y, source.a.a_y); ++ CHECK_FLOAT_EQ(result.b.b_x, source.b.b_x); ++ CHECK_FLOAT_EQ(result.b.b_y, source.b.b_y); ++ exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct12.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct12.c +index 0d307ae91..7ca16c17d 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct12.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct12.c +@@ -75,7 +75,7 @@ int main (void) + + CHECK( ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, retType, args) == FFI_OK); + ffi_call(&cif, FFI_FN(testNestedFloatStruct), &ts12_result, values); +- CHECK(ts12_result == 138.2f); ++ CHECK_FLOAT_EQ(ts12_result, 138.2f); + + free(struct_float1); + free(struct_float2); +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct13.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct13.c +index 6c139b952..6edfdcbb5 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct13.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct13.c +@@ -27,6 +27,14 @@ B B_fn(float b0, struct B b1) + printf("%g %g %g %g: %g %g %g\n", b0, b1.x, b1.y.a, b1.y.b, + result.x, result.y.a, result.y.b); + ++ CHECK_FLOAT_EQ(b0, 12.125); ++ CHECK_FLOAT_EQ(b1.x, 24.75); ++ CHECK_FLOAT_EQ(b1.y.a, 31.625); ++ CHECK_FLOAT_EQ(b1.y.b, 32.25); ++ CHECK_FLOAT_EQ(result.x, 36.875); ++ CHECK_FLOAT_EQ(result.y.a, 43.75); ++ CHECK_FLOAT_EQ(result.y.b, 44.375); ++ + return result; + } + +@@ -91,17 +99,17 @@ int main (void) + + ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); + /* { dg-output "12.125 24.75 31.625 32.25: 36.875 43.75 44.375" } */ +- CHECK( res_dbl.x == (e_dbl + f_dbl.x)); +- CHECK( res_dbl.y.a == (e_dbl + f_dbl.y.a)); +- CHECK( res_dbl.y.b == (e_dbl + f_dbl.y.b)); ++ CHECK_FLOAT_EQ( res_dbl.x, (e_dbl + f_dbl.x)); ++ CHECK_FLOAT_EQ( res_dbl.y.a, (e_dbl + f_dbl.y.a)); ++ CHECK_FLOAT_EQ( res_dbl.y.b, (e_dbl + f_dbl.y.b)); + + CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); + + res_dbl = ((B(*)(float, B))(code))(e_dbl, f_dbl); + /* { dg-output "\n12.125 24.75 31.625 32.25: 36.875 43.75 44.375" } */ +- CHECK( res_dbl.x == (e_dbl + f_dbl.x)); +- CHECK( res_dbl.y.a == (e_dbl + f_dbl.y.a)); +- CHECK( res_dbl.y.b == (e_dbl + f_dbl.y.b)); ++ CHECK_FLOAT_EQ( res_dbl.x, (e_dbl + f_dbl.x)); ++ CHECK_FLOAT_EQ( res_dbl.y.a, (e_dbl + f_dbl.y.a)); ++ CHECK_FLOAT_EQ( res_dbl.y.b, (e_dbl + f_dbl.y.b)); + + exit(0); + } +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct2.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct2.c +index d919e5c93..93a913d32 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct2.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct2.c +@@ -30,6 +30,15 @@ static B B_fn(struct A b0, struct B b1) + printf("%lu %d %lu %d %d: %lu %d %d\n", b0.a, b0.b, b1.x.a, b1.x.b, b1.y, + result.x.a, result.x.b, result.y); + ++ CHECK(b0.a == 1); ++ CHECK(b0.b == 7); ++ CHECK(b1.x.a == 12); ++ CHECK(b1.x.b == 127); ++ CHECK(b1.y == 99); ++ CHECK(result.x.a == 13); ++ CHECK(result.x.b == 233); ++ CHECK(result.y == 134); ++ + return result; + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct3.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct3.c +index 7d4c2cf80..d39a9ccfe 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct3.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct3.c +@@ -31,6 +31,15 @@ static B B_fn(struct A b0, struct B b1) + (int)b1.x.a, b1.x.b, b1.y, + (int)result.x.a, result.x.b, result.y); + ++ CHECK((int)b0.a == 1); ++ CHECK(b0.b == 7); ++ CHECK((int)b1.x.a == 12); ++ CHECK(b1.x.b == 127); ++ CHECK(b1.y == 99); ++ CHECK((int)result.x.a == 13); ++ CHECK(result.x.b == 233); ++ CHECK(result.y == 134); ++ + return result; + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct4.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct4.c +index 2ffb4d65a..d5c960dce 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct4.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct4.c +@@ -31,6 +31,15 @@ static B B_fn(struct A b2, struct B b3) + (int)b3.x.a, b3.x.b, b3.y, + (int)result.x.a, result.x.b, result.y); + ++ CHECK((int)b2.a == 1); ++ CHECK(b2.b == 7); ++ CHECK((int)b3.x.a == 12); ++ CHECK(b3.x.b == 127); ++ CHECK(b3.y == 99); ++ CHECK((int)result.x.a == 13); ++ CHECK(result.x.b == 233); ++ CHECK(result.y == 134); ++ + return result; + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct5.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct5.c +index 6c79845d9..b053f52b0 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct5.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct5.c +@@ -31,6 +31,15 @@ static B B_fn(struct A b2, struct B b3) + (int)b3.x.a, b3.x.b, b3.y, + (int)result.x.a, result.x.b, result.y); + ++ CHECK((int)b2.a == 1); ++ CHECK(b2.b == 7); ++ CHECK((int)b3.x.a == 12); ++ CHECK(b3.x.b == 127); ++ CHECK(b3.y == 99); ++ CHECK((int)result.x.a == 13); ++ CHECK(result.x.b == 233); ++ CHECK(result.y == 134); ++ + return result; + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct6.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct6.c +index 59d35796f..690ec0be8 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct6.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct6.c +@@ -36,6 +36,17 @@ static B B_fn(struct A b2, struct B b3, struct C b4) + (int)b3.x.a, b3.x.b, b3.y, (int)b4.d, b4.e, + (int)result.x.a, result.x.b, result.y); + ++ CHECK((int)b2.a == 1); ++ CHECK(b2.b == 7); ++ CHECK((int)b3.x.a == 12); ++ CHECK(b3.x.b == 127); ++ CHECK(b3.y == 99); ++ CHECK((int)b4.d == 2); ++ CHECK(b4.e == 9); ++ CHECK((int)result.x.a == 15); ++ CHECK(result.x.b == 242); ++ CHECK(result.y == 143); ++ + return result; + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct7.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct7.c +index 27595e6f5..b3ddd030d 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct7.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct7.c +@@ -31,6 +31,15 @@ static B B_fn(struct A b2, struct B b3) + (int)b3.x.a, b3.x.b, b3.y, + (int)result.x.a, result.x.b, result.y); + ++ CHECK((int)b2.a == 1); ++ CHECK(b2.b == 7); ++ CHECK((int)b3.x.a == 12); ++ CHECK(b3.x.b == 127); ++ CHECK(b3.y == 99); ++ CHECK((int)result.x.a == 13); ++ CHECK(result.x.b == 233); ++ CHECK(result.y == 134); ++ + return result; + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct8.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct8.c +index 0e6c68281..768f3331b 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct8.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct8.c +@@ -36,6 +36,17 @@ static B B_fn(struct A b2, struct B b3, struct C b4) + (int)b3.x.a, b3.x.b, b3.y, (int)b4.d, b4.e, + (int)result.x.a, result.x.b, result.y); + ++ CHECK((int)b2.a == 1); ++ CHECK(b2.b == 7); ++ CHECK((int)b3.x.a == 12); ++ CHECK(b3.x.b == 127); ++ CHECK(b3.y == 99); ++ CHECK((int)b4.d == 2); ++ CHECK(b4.e == 9); ++ CHECK((int)result.x.a == 15); ++ CHECK(result.x.b == 242); ++ CHECK(result.y == 143); ++ + return result; + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct9.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct9.c +index 5f7ac6775..f88ab0a94 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct9.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/nested_struct9.c +@@ -36,6 +36,17 @@ static B B_fn(struct A b2, struct B b3, struct C b4) + b3.x.a, (int)b3.x.b, b3.y, (int)b4.d, b4.e, + result.x.a, (int)result.x.b, result.y); + ++ CHECK((int)b2.a == 1); ++ CHECK(b2.b == 7); ++ CHECK((int)b3.x.a == 12); ++ CHECK(b3.x.b == 127); ++ CHECK(b3.y == 99); ++ CHECK((int)b4.d == 2); ++ CHECK(b4.e == 9); ++ CHECK((int)result.x.a == 15); ++ CHECK(result.x.b == 242); ++ CHECK(result.y == 143); ++ + return result; + } + +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/testclosure.c b/vendor/libffi-sys/libffi/testsuite/libffi.closures/testclosure.c +index 600368e0c..e738a01fb 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/testclosure.c ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/testclosure.c +@@ -20,6 +20,11 @@ static void cls_struct_combined_fn(struct cls_struct_combined arg) + arg.a, arg.b, + arg.c, arg.d); + fflush(stdout); ++ ++ CHECK_FLOAT_EQ(arg.a, 4); ++ CHECK_FLOAT_EQ(arg.b, 5); ++ CHECK_FLOAT_EQ(arg.c, 1); ++ CHECK_FLOAT_EQ(arg.d, 8); + } + + static void +diff --git a/vendor/libffi-sys/libffi/testsuite/libffi.closures/unwindtest.cc b/vendor/libffi-sys/libffi/testsuite/libffi.closures/unwindtest.cc +index e1145657d..6c97c61e8 100644 +--- a/vendor/libffi-sys/libffi/testsuite/libffi.closures/unwindtest.cc ++++ b/vendor/libffi-sys/libffi/testsuite/libffi.closures/unwindtest.cc +@@ -4,7 +4,7 @@ + PR: none. + Originator: Jeff Sturm */ + +-/* { dg-do run { xfail x86_64-apple-darwin* moxie*-*-* } } */ ++/* { dg-do run { xfail moxie*-*-* } } */ + + #include "ffitest.h" + +diff --git a/vendor/libffi-sys/src/arch.rs b/vendor/libffi-sys/src/arch.rs +index a4b5e71ca..4ffe486a2 100644 +--- a/vendor/libffi-sys/src/arch.rs ++++ b/vendor/libffi-sys/src/arch.rs +@@ -325,3 +325,41 @@ pub use riscv::*; + + #[cfg(target_arch = "riscv64")] + pub use riscv::*; ++ ++/// From libffi:src/s390/ffitarget.h ++/// See: ++mod s390x { ++ use crate::ffi_abi; ++ ++ pub const ffi_abi_FFI_FIRST_ABI: ffi_abi = 0; ++ pub const ffi_abi_FFI_SYSV: ffi_abi = 1; ++ pub const ffi_abi_LAST_ABI: ffi_abi = 2; ++ pub const ffi_abi_FFI_DEFAULT_ABI: ffi_abi = ffi_abi_FFI_SYSV; ++ ++ pub const FFI_GO_CLOSURES: u32 = 1; ++ pub const FFI_TRAMPOLINE_SIZE: usize = 32; ++ pub const FFI_NATIVE_RAW_API: u32 = 0; ++} ++ ++#[cfg(target_arch = "s390x")] ++pub use s390x::*; ++ ++/// From libffi:src/loongarch64/ffitarget.h. ++/// See: ++mod loongarch64 { ++ use crate::ffi_abi; ++ ++ pub const ffi_abi_FFI_FIRST_ABI: ffi_abi = 0; ++ pub const ffi_abi_FFI_LP64S: ffi_abi = 1; ++ pub const ffi_abi_FFI_LP64F: ffi_abi = 2; ++ pub const ffi_abi_FFI_LP64D: ffi_abi = 3; ++ pub const ffi_abi_FFI_LAST_ABI: ffi_abi = 4; ++ pub const ffi_abi_FFI_DEFAULT_ABI: ffi_abi = ffi_abi_FFI_LP64D; ++ ++ pub const FFI_GO_CLOSURES: u32 = 1; ++ pub const FFI_TRAMPOLINE_SIZE: usize = 24; ++ pub const FFI_NATIVE_RAW_API: u32 = 0; ++} ++ ++#[cfg(target_arch = "loongarch64")] ++pub use loongarch64::*; +diff --git a/vendor/libffi-sys/src/lib.rs b/vendor/libffi-sys/src/lib.rs +index 1d2962793..e8fd86d03 100644 +--- a/vendor/libffi-sys/src/lib.rs ++++ b/vendor/libffi-sys/src/lib.rs +@@ -1,4 +1,4 @@ +-#![doc(html_root_url = "https://docs.rs/libffi-sys/2.0.0")] ++#![doc(html_root_url = "https://docs.rs/libffi-sys/2.3.0")] + //! Low-level Rust bindings for [libffi](https://sourceware.org/libffi/) + //! + //! The C libffi library provides two main facilities: assembling calls +@@ -24,14 +24,14 @@ + //! + //! ```toml + //! [dependencies] +-//! libffi-sys = "2.0.0" ++//! libffi-sys = "2.3.0" + //! ``` + //! + //! to your `Cargo.toml`. If you want to use your system C libffi, then + //! + //! ```toml + //! [dependencies.libffi-sys] +-//! version = "2.0.0" ++//! version = "2.3.0" + //! features = ["system"] + //! ``` + //! +@@ -133,6 +133,10 @@ pub struct ffi_cif { + pub riscv_nfixedargs: c_uint, + #[cfg(any(target_arch = "riscv", target_arch = "riscv64"))] + pub riscv_unused: c_uint, ++ #[cfg(all(target_arch = "loongarch64"))] ++ pub loongarch_nfixedargs: c_uint, ++ #[cfg(all(target_arch = "loongarch64"))] ++ pub loongarch_unused: c_uint, + } + + impl Default for ffi_cif { +-- +2.41.0 + diff --git a/0006-rust-add-loongarch64-support.patch b/0006-rust-add-loongarch64-support.patch new file mode 100644 index 0000000..ad02fc5 --- /dev/null +++ b/0006-rust-add-loongarch64-support.patch @@ -0,0 +1,1898 @@ +From 82196aeb55032e6605b341068a8bc195f0d60e23 Mon Sep 17 00:00:00 2001 +From: hev +Date: Tue, 8 Aug 2023 10:50:38 +0800 +Subject: [PATCH 6/6] rust: add loongarch64 support + +--- + compiler/rustc_ast_lowering/src/asm.rs | 1 + + .../rustc_codegen_gcc/example/alloc_system.rs | 1 + + compiler/rustc_codegen_gcc/src/asm.rs | 5 + + compiler/rustc_codegen_llvm/src/asm.rs | 17 + + .../rustc_codegen_ssa/src/back/metadata.rs | 5 + + compiler/rustc_llvm/build.rs | 1 + + .../rustc_llvm/llvm-wrapper/PassWrapper.cpp | 7 + + compiler/rustc_llvm/src/lib.rs | 8 + + compiler/rustc_target/src/asm/loongarch.rs | 130 ++++++++ + compiler/rustc_target/src/asm/mod.rs | 46 +++ + .../src/spec/loongarch64_unknown_linux_gnu.rs | 17 + + compiler/rustc_target/src/spec/mod.rs | 1 + + config.toml.example | 2 +- + library/std/src/env.rs | 1 + + library/std/src/os/linux/raw.rs | 1 + + library/std/src/personality/gcc.rs | 3 + + library/std/src/sys/common/alloc.rs | 1 + + library/unwind/src/libunwind.rs | 3 + + src/bootstrap/bootstrap.py | 1 + + src/bootstrap/lib.rs | 2 +- + src/bootstrap/native.rs | 2 +- + src/doc/rustc/src/SUMMARY.md | 1 + + src/doc/rustc/src/platform-support.md | 1 + + .../src/platform-support/loongarch-linux.md | 92 ++++++ + .../asm-experimental-arch.md | 17 +- + src/librustdoc/clean/cfg.rs | 1 + + src/tools/miri/src/shims/foreign_items.rs | 2 +- + tests/assembly/asm/loongarch-type.rs | 196 ++++++++++++ + .../codegen/abi-main-signature-16bit-c-int.rs | 1 + + tests/codegen/call-llvm-intrinsics.rs | 1 + + tests/codegen/catch-unwind.rs | 2 + + tests/codegen/global_asm.rs | 1 + + tests/codegen/global_asm_include.rs | 1 + + tests/codegen/global_asm_x2.rs | 1 + + .../loongarch-abi/call-llvm-intrinsics.rs | 31 ++ + .../loongarch-abi/loongarch64-lp64d-abi.rs | 293 ++++++++++++++++++ + .../codegen/repr-transparent-aggregates-1.rs | 1 + + .../codegen/repr-transparent-aggregates-2.rs | 1 + + tests/codegen/repr-transparent.rs | 1 + + tests/debuginfo/borrowed-unique-basic.rs | 1 + + tests/debuginfo/box.rs | 1 + + tests/debuginfo/macro-stepping.rs | 1 + + tests/debuginfo/step-into-match.rs | 1 + + tests/debuginfo/unsized.rs | 1 + + tests/ui/abi/stack-probes-lto.rs | 1 + + tests/ui/abi/stack-probes.rs | 1 + + tests/ui/cfg/conditional-compile-arch.rs | 3 + + tests/ui/check-cfg/compact-values.stderr | 2 +- + .../method-not-found-generic-arg-elision.rs | 4 +- + ...ethod-not-found-generic-arg-elision.stderr | 6 +- + tests/ui/target-feature/gate.rs | 1 + + tests/ui/target-feature/invalid-attribute.rs | 1 + + .../target-feature/invalid-attribute.stderr | 30 +- + 53 files changed, 927 insertions(+), 26 deletions(-) + create mode 100644 compiler/rustc_target/src/asm/loongarch.rs + create mode 100644 compiler/rustc_target/src/spec/loongarch64_unknown_linux_gnu.rs + create mode 100644 src/doc/rustc/src/platform-support/loongarch-linux.md + create mode 100644 tests/assembly/asm/loongarch-type.rs + create mode 100644 tests/codegen/loongarch-abi/call-llvm-intrinsics.rs + create mode 100644 tests/codegen/loongarch-abi/loongarch64-lp64d-abi.rs + +diff --git a/compiler/rustc_ast_lowering/src/asm.rs b/compiler/rustc_ast_lowering/src/asm.rs +index 941d31795..d350498bc 100644 +--- a/compiler/rustc_ast_lowering/src/asm.rs ++++ b/compiler/rustc_ast_lowering/src/asm.rs +@@ -44,6 +44,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { + | asm::InlineAsmArch::AArch64 + | asm::InlineAsmArch::RiscV32 + | asm::InlineAsmArch::RiscV64 ++ | asm::InlineAsmArch::LoongArch64 + ); + if !is_stable && !self.tcx.features().asm_experimental_arch { + feature_err( +diff --git a/compiler/rustc_codegen_gcc/example/alloc_system.rs b/compiler/rustc_codegen_gcc/example/alloc_system.rs +index fd01fcf1f..db80ed0bf 100644 +--- a/compiler/rustc_codegen_gcc/example/alloc_system.rs ++++ b/compiler/rustc_codegen_gcc/example/alloc_system.rs +@@ -21,6 +21,7 @@ + const MIN_ALIGN: usize = 8; + #[cfg(any(target_arch = "x86_64", + target_arch = "aarch64", ++ target_arch = "loongarch64", + target_arch = "mips64", + target_arch = "s390x", + target_arch = "sparc64"))] +diff --git a/compiler/rustc_codegen_gcc/src/asm.rs b/compiler/rustc_codegen_gcc/src/asm.rs +index c346dbd63..dc77ae008 100644 +--- a/compiler/rustc_codegen_gcc/src/asm.rs ++++ b/compiler/rustc_codegen_gcc/src/asm.rs +@@ -582,6 +582,8 @@ fn reg_to_gcc(reg: InlineAsmRegOrRegClass) -> ConstraintOrRegister { + InlineAsmRegClass::Avr(_) => unimplemented!(), + InlineAsmRegClass::Bpf(_) => unimplemented!(), + InlineAsmRegClass::Hexagon(HexagonInlineAsmRegClass::reg) => unimplemented!(), ++ InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg) => "r", ++ InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg) => "f", + InlineAsmRegClass::Mips(MipsInlineAsmRegClass::reg) => unimplemented!(), + InlineAsmRegClass::Mips(MipsInlineAsmRegClass::freg) => unimplemented!(), + InlineAsmRegClass::Msp430(_) => unimplemented!(), +@@ -646,6 +648,8 @@ fn dummy_output_type<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, reg: InlineAsmRegCl + InlineAsmRegClass::Avr(_) => unimplemented!(), + InlineAsmRegClass::Bpf(_) => unimplemented!(), + InlineAsmRegClass::Hexagon(HexagonInlineAsmRegClass::reg) => cx.type_i32(), ++ InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg) => cx.type_i32(), ++ InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg) => cx.type_f32(), + InlineAsmRegClass::Mips(MipsInlineAsmRegClass::reg) => cx.type_i32(), + InlineAsmRegClass::Mips(MipsInlineAsmRegClass::freg) => cx.type_f32(), + InlineAsmRegClass::Msp430(_) => unimplemented!(), +@@ -773,6 +777,7 @@ fn modifier_to_gcc(arch: InlineAsmArch, reg: InlineAsmRegClass, modifier: Option + InlineAsmRegClass::Avr(_) => unimplemented!(), + InlineAsmRegClass::Bpf(_) => unimplemented!(), + InlineAsmRegClass::Hexagon(_) => unimplemented!(), ++ InlineAsmRegClass::LoongArch(_) => None, + InlineAsmRegClass::Mips(_) => unimplemented!(), + InlineAsmRegClass::Msp430(_) => unimplemented!(), + InlineAsmRegClass::Nvptx(_) => unimplemented!(), +diff --git a/compiler/rustc_codegen_llvm/src/asm.rs b/compiler/rustc_codegen_llvm/src/asm.rs +index d9f8170a3..1d76204d8 100644 +--- a/compiler/rustc_codegen_llvm/src/asm.rs ++++ b/compiler/rustc_codegen_llvm/src/asm.rs +@@ -236,6 +236,18 @@ impl<'ll, 'tcx> AsmBuilderMethods<'tcx> for Builder<'_, 'll, 'tcx> { + InlineAsmArch::Nvptx64 => {} + InlineAsmArch::PowerPC | InlineAsmArch::PowerPC64 => {} + InlineAsmArch::Hexagon => {} ++ InlineAsmArch::LoongArch64 => { ++ constraints.extend_from_slice(&[ ++ "~{$fcc0}".to_string(), ++ "~{$fcc1}".to_string(), ++ "~{$fcc2}".to_string(), ++ "~{$fcc3}".to_string(), ++ "~{$fcc4}".to_string(), ++ "~{$fcc5}".to_string(), ++ "~{$fcc6}".to_string(), ++ "~{$fcc7}".to_string(), ++ ]); ++ } + InlineAsmArch::Mips | InlineAsmArch::Mips64 => {} + InlineAsmArch::S390x => {} + InlineAsmArch::SpirV => {} +@@ -630,6 +642,8 @@ fn reg_to_llvm(reg: InlineAsmRegOrRegClass, layout: Option<&TyAndLayout<'_>>) -> + InlineAsmRegClass::Arm(ArmInlineAsmRegClass::dreg) + | InlineAsmRegClass::Arm(ArmInlineAsmRegClass::qreg) => "w", + InlineAsmRegClass::Hexagon(HexagonInlineAsmRegClass::reg) => "r", ++ InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg) => "r", ++ InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg) => "f", + InlineAsmRegClass::Mips(MipsInlineAsmRegClass::reg) => "r", + InlineAsmRegClass::Mips(MipsInlineAsmRegClass::freg) => "f", + InlineAsmRegClass::Nvptx(NvptxInlineAsmRegClass::reg16) => "h", +@@ -713,6 +727,7 @@ fn modifier_to_llvm( + } + } + InlineAsmRegClass::Hexagon(_) => None, ++ InlineAsmRegClass::LoongArch(_) => None, + InlineAsmRegClass::Mips(_) => None, + InlineAsmRegClass::Nvptx(_) => None, + InlineAsmRegClass::PowerPC(_) => None, +@@ -796,6 +811,8 @@ fn dummy_output_type<'ll>(cx: &CodegenCx<'ll, '_>, reg: InlineAsmRegClass) -> &' + cx.type_vector(cx.type_i64(), 2) + } + InlineAsmRegClass::Hexagon(HexagonInlineAsmRegClass::reg) => cx.type_i32(), ++ InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::reg) => cx.type_i32(), ++ InlineAsmRegClass::LoongArch(LoongArchInlineAsmRegClass::freg) => cx.type_f32(), + InlineAsmRegClass::Mips(MipsInlineAsmRegClass::reg) => cx.type_i32(), + InlineAsmRegClass::Mips(MipsInlineAsmRegClass::freg) => cx.type_f32(), + InlineAsmRegClass::Nvptx(NvptxInlineAsmRegClass::reg16) => cx.type_i16(), +diff --git a/compiler/rustc_codegen_ssa/src/back/metadata.rs b/compiler/rustc_codegen_ssa/src/back/metadata.rs +index 019ec0758..584bc36e0 100644 +--- a/compiler/rustc_codegen_ssa/src/back/metadata.rs ++++ b/compiler/rustc_codegen_ssa/src/back/metadata.rs +@@ -128,6 +128,7 @@ pub(crate) fn create_object_file(sess: &Session) -> Option Architecture::Msp430, + "hexagon" => Architecture::Hexagon, + "bpf" => Architecture::Bpf, ++ "loongarch64" => Architecture::LoongArch64, + // Unsupported architecture. + _ => return None, + }; +@@ -191,6 +192,10 @@ pub(crate) fn create_object_file(sess: &Session) -> Option { ++ // Source: https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html#_e_flags_identifies_abi_type_and_version ++ elf::EF_LARCH_OBJABI_V1 | elf::EF_LARCH_ABI_DOUBLE_FLOAT ++ } + _ => 0, + }; + // adapted from LLVM's `MCELFObjectTargetWriter::getOSABI` +diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs +index 9fe59a1d8..f30277014 100644 +--- a/compiler/rustc_llvm/build.rs ++++ b/compiler/rustc_llvm/build.rs +@@ -10,6 +10,7 @@ const OPTIONAL_COMPONENTS: &[&str] = &[ + "aarch64", + "amdgpu", + "avr", ++ "loongarch", + "m68k", + "mips", + "powerpc", +diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp +index 4761ce83f..293994761 100644 +--- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp ++++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp +@@ -148,6 +148,12 @@ extern "C" void LLVMTimeTraceProfilerFinish(const char* FileName) { + #define SUBTARGET_HEXAGON + #endif + ++#ifdef LLVM_COMPONENT_LOONGARCH ++#define SUBTARGET_LOONGARCH SUBTARGET(LoongArch) ++#else ++#define SUBTARGET_LOONGARCH ++#endif ++ + #define GEN_SUBTARGETS \ + SUBTARGET_X86 \ + SUBTARGET_ARM \ +@@ -161,6 +167,7 @@ extern "C" void LLVMTimeTraceProfilerFinish(const char* FileName) { + SUBTARGET_SPARC \ + SUBTARGET_HEXAGON \ + SUBTARGET_RISCV \ ++ SUBTARGET_LOONGARCH \ + + #define SUBTARGET(x) \ + namespace llvm { \ +diff --git a/compiler/rustc_llvm/src/lib.rs b/compiler/rustc_llvm/src/lib.rs +index 8542dcf5b..06351731b 100644 +--- a/compiler/rustc_llvm/src/lib.rs ++++ b/compiler/rustc_llvm/src/lib.rs +@@ -102,6 +102,14 @@ pub fn initialize_available_targets() { + LLVMInitializeM68kAsmPrinter, + LLVMInitializeM68kAsmParser + ); ++ init_target!( ++ llvm_component = "loongarch", ++ LLVMInitializeLoongArchTargetInfo, ++ LLVMInitializeLoongArchTarget, ++ LLVMInitializeLoongArchTargetMC, ++ LLVMInitializeLoongArchAsmPrinter, ++ LLVMInitializeLoongArchAsmParser ++ ); + init_target!( + llvm_component = "mips", + LLVMInitializeMipsTargetInfo, +diff --git a/compiler/rustc_target/src/asm/loongarch.rs b/compiler/rustc_target/src/asm/loongarch.rs +new file mode 100644 +index 000000000..9d1a4f3ee +--- /dev/null ++++ b/compiler/rustc_target/src/asm/loongarch.rs +@@ -0,0 +1,130 @@ ++use super::{InlineAsmArch, InlineAsmType}; ++use rustc_macros::HashStable_Generic; ++use rustc_span::Symbol; ++use std::fmt; ++ ++def_reg_class! { ++ LoongArch LoongArchInlineAsmRegClass { ++ reg, ++ freg, ++ } ++} ++ ++impl LoongArchInlineAsmRegClass { ++ pub fn valid_modifiers(self, _arch: super::InlineAsmArch) -> &'static [char] { ++ &[] ++ } ++ ++ pub fn suggest_class(self, _arch: InlineAsmArch, _ty: InlineAsmType) -> Option { ++ None ++ } ++ ++ pub fn suggest_modifier( ++ self, ++ _arch: InlineAsmArch, ++ _ty: InlineAsmType, ++ ) -> Option<(char, &'static str)> { ++ None ++ } ++ ++ pub fn default_modifier(self, _arch: InlineAsmArch) -> Option<(char, &'static str)> { ++ None ++ } ++ ++ pub fn supported_types( ++ self, ++ _arch: InlineAsmArch, ++ ) -> &'static [(InlineAsmType, Option)] { ++ match self { ++ Self::reg => types! { _: I8, I16, I32, I64, F32, F64; }, ++ Self::freg => types! { _: F32, F64; }, ++ } ++ } ++} ++ ++// The reserved registers are taken from ++def_regs! { ++ LoongArch LoongArchInlineAsmReg LoongArchInlineAsmRegClass { ++ r1: reg = ["$r1","$ra"], ++ r4: reg = ["$r4","$a0"], ++ r5: reg = ["$r5","$a1"], ++ r6: reg = ["$r6","$a2"], ++ r7: reg = ["$r7","$a3"], ++ r8: reg = ["$r8","$a4"], ++ r9: reg = ["$r9","$a5"], ++ r10: reg = ["$r10","$a6"], ++ r11: reg = ["$r11","$a7"], ++ r12: reg = ["$r12","$t0"], ++ r13: reg = ["$r13","$t1"], ++ r14: reg = ["$r14","$t2"], ++ r15: reg = ["$r15","$t3"], ++ r16: reg = ["$r16","$t4"], ++ r17: reg = ["$r17","$t5"], ++ r18: reg = ["$r18","$t6"], ++ r19: reg = ["$r19","$t7"], ++ r20: reg = ["$r20","$t8"], ++ r23: reg = ["$r23","$s0"], ++ r24: reg = ["$r24","$s1"], ++ r25: reg = ["$r25","$s2"], ++ r26: reg = ["$r26","$s3"], ++ r27: reg = ["$r27","$s4"], ++ r28: reg = ["$r28","$s5"], ++ r29: reg = ["$r29","$s6"], ++ r30: reg = ["$r30","$s7"], ++ f0: freg = ["$f0","$fa0"], ++ f1: freg = ["$f1","$fa1"], ++ f2: freg = ["$f2","$fa2"], ++ f3: freg = ["$f3","$fa3"], ++ f4: freg = ["$f4","$fa4"], ++ f5: freg = ["$f5","$fa5"], ++ f6: freg = ["$f6","$fa6"], ++ f7: freg = ["$f7","$fa7"], ++ f8: freg = ["$f8","$ft0"], ++ f9: freg = ["$f9","$ft1"], ++ f10: freg = ["$f10","$ft2"], ++ f11: freg = ["$f11","$ft3"], ++ f12: freg = ["$f12","$ft4"], ++ f13: freg = ["$f13","$ft5"], ++ f14: freg = ["$f14","$ft6"], ++ f15: freg = ["$f15","$ft7"], ++ f16: freg = ["$f16","$ft8"], ++ f17: freg = ["$f17","$ft9"], ++ f18: freg = ["$f18","$ft10"], ++ f19: freg = ["$f19","$ft11"], ++ f20: freg = ["$f20","$ft12"], ++ f21: freg = ["$f21","$ft13"], ++ f22: freg = ["$f22","$ft14"], ++ f23: freg = ["$f23","$ft15"], ++ f24: freg = ["$f24","$fs0"], ++ f25: freg = ["$f25","$fs1"], ++ f26: freg = ["$f26","$fs2"], ++ f27: freg = ["$f27","$fs3"], ++ f28: freg = ["$f28","$fs4"], ++ f29: freg = ["$f29","$fs5"], ++ f30: freg = ["$f30","$fs6"], ++ f31: freg = ["$f31","$fs7"], ++ #error = ["$r0","$zero"] => ++ "constant zero cannot be used as an operand for inline asm", ++ #error = ["$r2","$tp"] => ++ "reserved for TLS", ++ #error = ["$r3","$sp"] => ++ "the stack pointer cannot be used as an operand for inline asm", ++ #error = ["$r21"] => ++ "reserved by the ABI", ++ #error = ["$r22","$fp"] => ++ "the frame pointer cannot be used as an operand for inline asm", ++ #error = ["$r31","$s8"] => ++ "$r31 is used internally by LLVM and cannot be used as an operand for inline asm", ++ } ++} ++ ++impl LoongArchInlineAsmReg { ++ pub fn emit( ++ self, ++ out: &mut dyn fmt::Write, ++ _arch: InlineAsmArch, ++ _modifier: Option, ++ ) -> fmt::Result { ++ out.write_str(self.name()) ++ } ++} +diff --git a/compiler/rustc_target/src/asm/mod.rs b/compiler/rustc_target/src/asm/mod.rs +index 70cd883be..ab0b30bb7 100644 +--- a/compiler/rustc_target/src/asm/mod.rs ++++ b/compiler/rustc_target/src/asm/mod.rs +@@ -167,6 +167,7 @@ mod arm; + mod avr; + mod bpf; + mod hexagon; ++mod loongarch; + mod mips; + mod msp430; + mod nvptx; +@@ -182,6 +183,7 @@ pub use arm::{ArmInlineAsmReg, ArmInlineAsmRegClass}; + pub use avr::{AvrInlineAsmReg, AvrInlineAsmRegClass}; + pub use bpf::{BpfInlineAsmReg, BpfInlineAsmRegClass}; + pub use hexagon::{HexagonInlineAsmReg, HexagonInlineAsmRegClass}; ++pub use loongarch::{LoongArchInlineAsmReg, LoongArchInlineAsmRegClass}; + pub use mips::{MipsInlineAsmReg, MipsInlineAsmRegClass}; + pub use msp430::{Msp430InlineAsmReg, Msp430InlineAsmRegClass}; + pub use nvptx::{NvptxInlineAsmReg, NvptxInlineAsmRegClass}; +@@ -202,6 +204,7 @@ pub enum InlineAsmArch { + RiscV64, + Nvptx64, + Hexagon, ++ LoongArch64, + Mips, + Mips64, + PowerPC, +@@ -230,6 +233,7 @@ impl FromStr for InlineAsmArch { + "powerpc" => Ok(Self::PowerPC), + "powerpc64" => Ok(Self::PowerPC64), + "hexagon" => Ok(Self::Hexagon), ++ "loongarch64" => Ok(Self::LoongArch64), + "mips" => Ok(Self::Mips), + "mips64" => Ok(Self::Mips64), + "s390x" => Ok(Self::S390x), +@@ -254,6 +258,7 @@ pub enum InlineAsmReg { + Nvptx(NvptxInlineAsmReg), + PowerPC(PowerPCInlineAsmReg), + Hexagon(HexagonInlineAsmReg), ++ LoongArch(LoongArchInlineAsmReg), + Mips(MipsInlineAsmReg), + S390x(S390xInlineAsmReg), + SpirV(SpirVInlineAsmReg), +@@ -274,6 +279,7 @@ impl InlineAsmReg { + Self::RiscV(r) => r.name(), + Self::PowerPC(r) => r.name(), + Self::Hexagon(r) => r.name(), ++ Self::LoongArch(r) => r.name(), + Self::Mips(r) => r.name(), + Self::S390x(r) => r.name(), + Self::Bpf(r) => r.name(), +@@ -291,6 +297,7 @@ impl InlineAsmReg { + Self::RiscV(r) => InlineAsmRegClass::RiscV(r.reg_class()), + Self::PowerPC(r) => InlineAsmRegClass::PowerPC(r.reg_class()), + Self::Hexagon(r) => InlineAsmRegClass::Hexagon(r.reg_class()), ++ Self::LoongArch(r) => InlineAsmRegClass::LoongArch(r.reg_class()), + Self::Mips(r) => InlineAsmRegClass::Mips(r.reg_class()), + Self::S390x(r) => InlineAsmRegClass::S390x(r.reg_class()), + Self::Bpf(r) => InlineAsmRegClass::Bpf(r.reg_class()), +@@ -316,6 +323,7 @@ impl InlineAsmReg { + Self::PowerPC(PowerPCInlineAsmReg::parse(name)?) + } + InlineAsmArch::Hexagon => Self::Hexagon(HexagonInlineAsmReg::parse(name)?), ++ InlineAsmArch::LoongArch64 => Self::LoongArch(LoongArchInlineAsmReg::parse(name)?), + InlineAsmArch::Mips | InlineAsmArch::Mips64 => { + Self::Mips(MipsInlineAsmReg::parse(name)?) + } +@@ -345,6 +353,9 @@ impl InlineAsmReg { + Self::RiscV(r) => r.validate(arch, reloc_model, target_features, target, is_clobber), + Self::PowerPC(r) => r.validate(arch, reloc_model, target_features, target, is_clobber), + Self::Hexagon(r) => r.validate(arch, reloc_model, target_features, target, is_clobber), ++ Self::LoongArch(r) => { ++ r.validate(arch, reloc_model, target_features, target, is_clobber) ++ } + Self::Mips(r) => r.validate(arch, reloc_model, target_features, target, is_clobber), + Self::S390x(r) => r.validate(arch, reloc_model, target_features, target, is_clobber), + Self::Bpf(r) => r.validate(arch, reloc_model, target_features, target, is_clobber), +@@ -369,6 +380,7 @@ impl InlineAsmReg { + Self::RiscV(r) => r.emit(out, arch, modifier), + Self::PowerPC(r) => r.emit(out, arch, modifier), + Self::Hexagon(r) => r.emit(out, arch, modifier), ++ Self::LoongArch(r) => r.emit(out, arch, modifier), + Self::Mips(r) => r.emit(out, arch, modifier), + Self::S390x(r) => r.emit(out, arch, modifier), + Self::Bpf(r) => r.emit(out, arch, modifier), +@@ -386,6 +398,7 @@ impl InlineAsmReg { + Self::RiscV(_) => cb(self), + Self::PowerPC(r) => r.overlapping_regs(|r| cb(Self::PowerPC(r))), + Self::Hexagon(r) => r.overlapping_regs(|r| cb(Self::Hexagon(r))), ++ Self::LoongArch(_) => cb(self), + Self::Mips(_) => cb(self), + Self::S390x(_) => cb(self), + Self::Bpf(r) => r.overlapping_regs(|r| cb(Self::Bpf(r))), +@@ -406,6 +419,7 @@ pub enum InlineAsmRegClass { + Nvptx(NvptxInlineAsmRegClass), + PowerPC(PowerPCInlineAsmRegClass), + Hexagon(HexagonInlineAsmRegClass), ++ LoongArch(LoongArchInlineAsmRegClass), + Mips(MipsInlineAsmRegClass), + S390x(S390xInlineAsmRegClass), + SpirV(SpirVInlineAsmRegClass), +@@ -427,6 +441,7 @@ impl InlineAsmRegClass { + Self::Nvptx(r) => r.name(), + Self::PowerPC(r) => r.name(), + Self::Hexagon(r) => r.name(), ++ Self::LoongArch(r) => r.name(), + Self::Mips(r) => r.name(), + Self::S390x(r) => r.name(), + Self::SpirV(r) => r.name(), +@@ -450,6 +465,7 @@ impl InlineAsmRegClass { + Self::Nvptx(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::Nvptx), + Self::PowerPC(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::PowerPC), + Self::Hexagon(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::Hexagon), ++ Self::LoongArch(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::LoongArch), + Self::Mips(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::Mips), + Self::S390x(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::S390x), + Self::SpirV(r) => r.suggest_class(arch, ty).map(InlineAsmRegClass::SpirV), +@@ -480,6 +496,7 @@ impl InlineAsmRegClass { + Self::Nvptx(r) => r.suggest_modifier(arch, ty), + Self::PowerPC(r) => r.suggest_modifier(arch, ty), + Self::Hexagon(r) => r.suggest_modifier(arch, ty), ++ Self::LoongArch(r) => r.suggest_modifier(arch, ty), + Self::Mips(r) => r.suggest_modifier(arch, ty), + Self::S390x(r) => r.suggest_modifier(arch, ty), + Self::SpirV(r) => r.suggest_modifier(arch, ty), +@@ -506,6 +523,7 @@ impl InlineAsmRegClass { + Self::Nvptx(r) => r.default_modifier(arch), + Self::PowerPC(r) => r.default_modifier(arch), + Self::Hexagon(r) => r.default_modifier(arch), ++ Self::LoongArch(r) => r.default_modifier(arch), + Self::Mips(r) => r.default_modifier(arch), + Self::S390x(r) => r.default_modifier(arch), + Self::SpirV(r) => r.default_modifier(arch), +@@ -531,6 +549,7 @@ impl InlineAsmRegClass { + Self::Nvptx(r) => r.supported_types(arch), + Self::PowerPC(r) => r.supported_types(arch), + Self::Hexagon(r) => r.supported_types(arch), ++ Self::LoongArch(r) => r.supported_types(arch), + Self::Mips(r) => r.supported_types(arch), + Self::S390x(r) => r.supported_types(arch), + Self::SpirV(r) => r.supported_types(arch), +@@ -557,6 +576,7 @@ impl InlineAsmRegClass { + Self::PowerPC(PowerPCInlineAsmRegClass::parse(name)?) + } + InlineAsmArch::Hexagon => Self::Hexagon(HexagonInlineAsmRegClass::parse(name)?), ++ InlineAsmArch::LoongArch64 => Self::LoongArch(LoongArchInlineAsmRegClass::parse(name)?), + InlineAsmArch::Mips | InlineAsmArch::Mips64 => { + Self::Mips(MipsInlineAsmRegClass::parse(name)?) + } +@@ -582,6 +602,7 @@ impl InlineAsmRegClass { + Self::Nvptx(r) => r.valid_modifiers(arch), + Self::PowerPC(r) => r.valid_modifiers(arch), + Self::Hexagon(r) => r.valid_modifiers(arch), ++ Self::LoongArch(r) => r.valid_modifiers(arch), + Self::Mips(r) => r.valid_modifiers(arch), + Self::S390x(r) => r.valid_modifiers(arch), + Self::SpirV(r) => r.valid_modifiers(arch), +@@ -740,6 +761,11 @@ pub fn allocatable_registers( + hexagon::fill_reg_map(arch, reloc_model, target_features, target, &mut map); + map + } ++ InlineAsmArch::LoongArch64 => { ++ let mut map = loongarch::regclass_map(); ++ loongarch::fill_reg_map(arch, reloc_model, target_features, target, &mut map); ++ map ++ } + InlineAsmArch::Mips | InlineAsmArch::Mips64 => { + let mut map = mips::regclass_map(); + mips::fill_reg_map(arch, reloc_model, target_features, target, &mut map); +@@ -788,6 +814,7 @@ pub enum InlineAsmClobberAbi { + AArch64, + AArch64NoX18, + RiscV, ++ LoongArch, + } + + impl InlineAsmClobberAbi { +@@ -829,6 +856,10 @@ impl InlineAsmClobberAbi { + "C" | "system" | "efiapi" => Ok(InlineAsmClobberAbi::RiscV), + _ => Err(&["C", "system", "efiapi"]), + }, ++ InlineAsmArch::LoongArch64 => match name { ++ "C" | "system" => Ok(InlineAsmClobberAbi::LoongArch), ++ _ => Err(&["C", "system"]), ++ }, + _ => Err(&[]), + } + } +@@ -971,6 +1002,21 @@ impl InlineAsmClobberAbi { + v24, v25, v26, v27, v28, v29, v30, v31, + } + }, ++ InlineAsmClobberAbi::LoongArch => clobbered_regs! { ++ LoongArch LoongArchInlineAsmReg { ++ // ra ++ r1, ++ // a0-a7 ++ r4, r5, r6, r7, r8, r9, r10, r11, ++ // t0-t8 ++ r12, r13, r14, r15, r16, r17, r18, r19, r20, ++ // fa0-fa7 ++ f0, f1, f2, f3, f4, f5, f6, f7, ++ // ft0-ft15 ++ f8, f9, f10, f11, f12, f13, f14, f15, ++ f16, f17, f18, f19, f20, f21, f22, f23, ++ } ++ }, + } + } + } +diff --git a/compiler/rustc_target/src/spec/loongarch64_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/loongarch64_unknown_linux_gnu.rs +new file mode 100644 +index 000000000..db8b9c70e +--- /dev/null ++++ b/compiler/rustc_target/src/spec/loongarch64_unknown_linux_gnu.rs +@@ -0,0 +1,17 @@ ++use crate::spec::{Target, TargetOptions}; ++ ++pub fn target() -> Target { ++ Target { ++ llvm_target: "loongarch64-unknown-linux-gnu".into(), ++ pointer_width: 64, ++ data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".into(), ++ arch: "loongarch64".into(), ++ options: TargetOptions { ++ cpu: "generic".into(), ++ features: "+f,+d".into(), ++ llvm_abiname: "lp64d".into(), ++ max_atomic_width: Some(64), ++ ..super::linux_gnu_base::opts() ++ }, ++ } ++} +diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs +index 0d86a3032..d1cbe406e 100644 +--- a/compiler/rustc_target/src/spec/mod.rs ++++ b/compiler/rustc_target/src/spec/mod.rs +@@ -1020,6 +1020,7 @@ supported_targets! { + ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32), + ("i686-unknown-linux-gnu", i686_unknown_linux_gnu), + ("i586-unknown-linux-gnu", i586_unknown_linux_gnu), ++ ("loongarch64-unknown-linux-gnu", loongarch64_unknown_linux_gnu), + ("m68k-unknown-linux-gnu", m68k_unknown_linux_gnu), + ("mips-unknown-linux-gnu", mips_unknown_linux_gnu), + ("mips64-unknown-linux-gnuabi64", mips64_unknown_linux_gnuabi64), +diff --git a/config.toml.example b/config.toml.example +index 69eb228a2..a0eb5dee4 100644 +--- a/config.toml.example ++++ b/config.toml.example +@@ -103,7 +103,7 @@ changelog-seen = 2 + # support. You'll need to write a target specification at least, and most + # likely, teach rustc about the C ABI of the target. Get in touch with the + # Rust team and file an issue if you need assistance in porting! +-#targets = "AArch64;ARM;BPF;Hexagon;MSP430;Mips;NVPTX;PowerPC;RISCV;Sparc;SystemZ;WebAssembly;X86" ++#targets = "AArch64;ARM;BPF;Hexagon;LoonArch;MSP430;Mips;NVPTX;PowerPC;RISCV;Sparc;SystemZ;WebAssembly;X86" + + # LLVM experimental targets to build support for. These targets are specified in + # the same format as above, but since these targets are experimental, they are +diff --git a/library/std/src/env.rs b/library/std/src/env.rs +index 183f9ab3b..3014fe6e2 100644 +--- a/library/std/src/env.rs ++++ b/library/std/src/env.rs +@@ -895,6 +895,7 @@ pub mod consts { + /// - x86_64 + /// - arm + /// - aarch64 ++ /// - loongarch64 + /// - m68k + /// - mips + /// - mips64 +diff --git a/library/std/src/os/linux/raw.rs b/library/std/src/os/linux/raw.rs +index f46028c3a..c55ca8ba2 100644 +--- a/library/std/src/os/linux/raw.rs ++++ b/library/std/src/os/linux/raw.rs +@@ -231,6 +231,7 @@ mod arch { + } + + #[cfg(any( ++ target_arch = "loongarch64", + target_arch = "mips64", + target_arch = "s390x", + target_arch = "sparc64", +diff --git a/library/std/src/personality/gcc.rs b/library/std/src/personality/gcc.rs +index 41c0fe725..0421b47be 100644 +--- a/library/std/src/personality/gcc.rs ++++ b/library/std/src/personality/gcc.rs +@@ -77,6 +77,9 @@ const UNWIND_DATA_REG: (i32, i32) = (0, 1); // R0, R1 + #[cfg(any(target_arch = "riscv64", target_arch = "riscv32"))] + const UNWIND_DATA_REG: (i32, i32) = (10, 11); // x10, x11 + ++#[cfg(target_arch = "loongarch64")] ++const UNWIND_DATA_REG: (i32, i32) = (4, 5); // a0, a1 ++ + // The following code is based on GCC's C and C++ personality routines. For reference, see: + // https://github.com/gcc-mirror/gcc/blob/master/libstdc++-v3/libsupc++/eh_personality.cc + // https://github.com/gcc-mirror/gcc/blob/trunk/libgcc/unwind-c.c +diff --git a/library/std/src/sys/common/alloc.rs b/library/std/src/sys/common/alloc.rs +index 403a5e627..a5fcbdf39 100644 +--- a/library/std/src/sys/common/alloc.rs ++++ b/library/std/src/sys/common/alloc.rs +@@ -22,6 +22,7 @@ pub const MIN_ALIGN: usize = 8; + #[cfg(any( + target_arch = "x86_64", + target_arch = "aarch64", ++ target_arch = "loongarch64", + target_arch = "mips64", + target_arch = "s390x", + target_arch = "sparc64", +diff --git a/library/unwind/src/libunwind.rs b/library/unwind/src/libunwind.rs +index eeeed3afc..f6a68073b 100644 +--- a/library/unwind/src/libunwind.rs ++++ b/library/unwind/src/libunwind.rs +@@ -75,6 +75,9 @@ pub const unwinder_private_data_size: usize = 20; + #[cfg(all(target_arch = "hexagon", target_os = "linux"))] + pub const unwinder_private_data_size: usize = 35; + ++#[cfg(target_arch = "loongarch64")] ++pub const unwinder_private_data_size: usize = 2; ++ + #[repr(C)] + pub struct _Unwind_Exception { + pub exception_class: _Unwind_Exception_Class, +diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py +index 013d1ab52..cd5948439 100644 +--- a/src/bootstrap/bootstrap.py ++++ b/src/bootstrap/bootstrap.py +@@ -304,6 +304,7 @@ def default_build_triple(verbose): + 'i486': 'i686', + 'i686': 'i686', + 'i786': 'i686', ++ 'loongarch64': 'loongarch64', + 'm68k': 'm68k', + 'powerpc': 'powerpc', + 'powerpc64': 'powerpc64', +diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs +index 950f3b151..72252c7c6 100644 +--- a/src/bootstrap/lib.rs ++++ b/src/bootstrap/lib.rs +@@ -127,7 +127,7 @@ const EXTRA_CHECK_CFGS: &[(Option, &'static str, Option<&[&'static str]>)] + /* Extra values not defined in the built-in targets yet, but used in std */ + (Some(Mode::Std), "target_env", Some(&["libnx"])), + // (Some(Mode::Std), "target_os", Some(&[])), +- (Some(Mode::Std), "target_arch", Some(&["asmjs", "spirv", "nvptx", "xtensa"])), ++ (Some(Mode::Std), "target_arch", Some(&["asmjs", "spirv", "nvptx", "xtensa", "loongarch64"])), + /* Extra names used by dependencies */ + // FIXME: Used by serde_json, but we should not be triggering on external dependencies. + (Some(Mode::Rustc), "no_btreemap_remove_entry", None), +diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs +index 5987b641b..98b6f3150 100644 +--- a/src/bootstrap/native.rs ++++ b/src/bootstrap/native.rs +@@ -301,7 +301,7 @@ impl Step for Llvm { + let llvm_targets = match &builder.config.llvm_targets { + Some(s) => s, + None => { +- "AArch64;ARM;BPF;Hexagon;MSP430;Mips;NVPTX;PowerPC;RISCV;\ ++ "AArch64;ARM;BPF;Hexagon;LoongArch;MSP430;Mips;NVPTX;PowerPC;RISCV;\ + Sparc;SystemZ;WebAssembly;X86" + } + }; +diff --git a/src/doc/rustc/src/SUMMARY.md b/src/doc/rustc/src/SUMMARY.md +index 752f1cc4a..bbf53a09c 100644 +--- a/src/doc/rustc/src/SUMMARY.md ++++ b/src/doc/rustc/src/SUMMARY.md +@@ -28,6 +28,7 @@ + - [\*-android and \*-androideabi](platform-support/android.md) + - [\*-unknown-fuchsia](platform-support/fuchsia.md) + - [\*-kmc-solid_\*](platform-support/kmc-solid.md) ++ - [loongarch\*-unknown-linux-\*](platform-support/loongarch-linux.md) + - [m68k-unknown-linux-gnu](platform-support/m68k-unknown-linux-gnu.md) + - [mips64-openwrt-linux-musl](platform-support/mips64-openwrt-linux-musl.md) + - [mipsel-sony-psx](platform-support/mipsel-sony-psx.md) +diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md +index 9eafa27e2..fc22d5d48 100644 +--- a/src/doc/rustc/src/platform-support.md ++++ b/src/doc/rustc/src/platform-support.md +@@ -263,6 +263,7 @@ target | std | host | notes + `i686-uwp-windows-gnu` | ? | | + `i686-uwp-windows-msvc` | ? | | + `i686-wrs-vxworks` | ? | | ++[`loongarch64-unknown-linux-gnu`](platform-support/loongarch-linux.md) | ? | | LoongArch64 Linux (LP64D ABI) + [`m68k-unknown-linux-gnu`](platform-support/m68k-unknown-linux-gnu.md) | ? | | Motorola 680x0 Linux + `mips-unknown-linux-uclibc` | ✓ | | MIPS Linux with uClibc + [`mips64-openwrt-linux-musl`](platform-support/mips64-openwrt-linux-musl.md) | ? | | MIPS64 for OpenWrt Linux MUSL +diff --git a/src/doc/rustc/src/platform-support/loongarch-linux.md b/src/doc/rustc/src/platform-support/loongarch-linux.md +new file mode 100644 +index 000000000..d7d31d872 +--- /dev/null ++++ b/src/doc/rustc/src/platform-support/loongarch-linux.md +@@ -0,0 +1,92 @@ ++# loongarch\*-unknown-linux-\* ++ ++**Tier: 3** ++ ++[LoongArch] is a new RISC ISA developed by Loongson Technology Corporation Limited. ++ ++[LoongArch]: https://loongson.github.io/LoongArch-Documentation/README-EN.html ++ ++The target name follow this format: `--`, where `` specifies the CPU family/model, `` specifies the vendor and `` the operating system name. ++While the integer base ABI is implied by the machine field, the floating point base ABI type is encoded into the os field of the specifier using the string suffix ``. ++ ++| `` | `Description` | ++|------------------------|--------------------------------------------------------------------| ++| f64 | The base ABI use 64-bits FPRs for parameter passing. (lp64d)| ++| f32 | The base ABI uses 32-bit FPRs for parameter passing. (lp64f)| ++| sf | The base ABI uses no FPR for parameter passing. (lp64s) | ++ ++|`ABI type(Base ABI/ABI extension)`| `C library` | `kernel` | `target tuple` | ++|----------------------------------|-------------|----------|----------------------------------| ++| lp64d/base | glibc | linux | loongarch64-unknown-linux-gnu | ++| lp64f/base | glibc | linux | loongarch64-unknown-linux-gnuf32 | ++| lp64s/base | glibc | linux | loongarch64-unknown-linux-gnusf | ++| lp64d/base | musl libc | linux | loongarch64-unknown-linux-musl| ++| lp64f/base | musl libc | linux | loongarch64-unknown-linux-muslf32| ++| lp64s/base | musl libc | linux | loongarch64-unknown-linux-muslsf | ++ ++## Target maintainers ++ ++- [ZHAI Xiaojuan](https://github.com/zhaixiaojuan) `zhaixiaojuan@loongson.cn` ++- [WANG Rui](https://github.com/heiher) `wangrui@loongson.cn` ++- [ZHAI Xiang](https://github.com/xiangzhai) `zhaixiang@loongson.cn` ++- [WANG Xuerui](https://github.com/xen0n) `git@xen0n.name` ++ ++## Requirements ++ ++This target is cross-compiled. ++A GNU toolchain for LoongArch target is required. It can be downloaded from https://github.com/loongson/build-tools/releases, or built from the source code of GCC (12.1.0 or later) and Binutils (2.40 or later). ++ ++## Building the target ++ ++The target can be built by enabling it for a `rustc` build. ++ ++```toml ++[build] ++target = ["loongarch64-unknown-linux-gnu"] ++``` ++ ++Make sure `loongarch64-unknown-linux-gnu-gcc` can be searched from the directories specified in`$PATH`. Alternatively, you can use GNU LoongArch Toolchain by adding the following to `config.toml`: ++ ++```toml ++[target.loongarch64-unknown-linux-gnu] ++# ADJUST THIS PATH TO POINT AT YOUR TOOLCHAIN ++cc = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc" ++cxx = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-g++" ++ar = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-ar" ++ranlib = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-ranlib" ++linker = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc" ++``` ++ ++## Cross-compilation ++ ++This target can be cross-compiled on a `x86_64-unknown-linux-gnu` host. Cross-compilation on other hosts may work but is not tested. ++ ++## Testing ++To test a cross-compiled binary on your build system, install the qemu binary that supports the LoongArch architecture and execute the following commands. ++```text ++CC_loongarch64_unknown_linux_gnu=/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc \ ++CXX_loongarch64_unknown_linux_gnu=/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-g++ \ ++AR_loongarch64_unknown_linux_gnu=/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc-ar \ ++CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNUN_LINKER=/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc \ ++# SET TARGET SYSTEM LIBRARY PATH ++CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNUN_RUNNER="qemu-loongarch64 -L /TOOLCHAIN_PATH/TARGET_LIBRAY_PATH" \ ++cargo run --target loongarch64-unknown-linux-gnu --release ++``` ++Tested on x86 architecture, other architectures not tested. ++ ++## Building Rust programs ++ ++Rust does not yet ship pre-compiled artifacts for this target. To compile for this target, you will either need to build Rust with the target enabled (see "Building the target" above), or build your own copy of `std` by using `build-std` or similar. ++ ++If `rustc` has support for that target and the library artifacts are available, then Rust static libraries can be built for that target: ++ ++```shell ++$ rustc --target loongarch64-unknown-linux-gnu your-code.rs --crate-type staticlib ++$ ls libyour_code.a ++``` ++ ++On Rust Nightly it's possible to build without the target artifacts available: ++ ++```text ++cargo build -Z build-std --target loongarch64-unknown-linux-gnu ++``` +diff --git a/src/doc/unstable-book/src/language-features/asm-experimental-arch.md b/src/doc/unstable-book/src/language-features/asm-experimental-arch.md +index 0a48eb4f8..bbca9d19e 100644 +--- a/src/doc/unstable-book/src/language-features/asm-experimental-arch.md ++++ b/src/doc/unstable-book/src/language-features/asm-experimental-arch.md +@@ -16,6 +16,7 @@ This feature tracks `asm!` and `global_asm!` support for the following architect + - SPIR-V + - AVR + - MSP430 ++- LoongArch + + ## Register classes + +@@ -41,6 +42,8 @@ This feature tracks `asm!` and `global_asm!` support for the following architect + | AVR | `reg_iw` | `r25r24`, `X`, `Z` | `w` | + | AVR | `reg_ptr` | `X`, `Z` | `e` | + | MSP430 | `reg` | `r[0-15]` | `r` | ++| LoongArch | `reg` | `$r1`, `$r[4-20]`, `$r[23,30]` | `r` | ++| LoongArch | `freg` | `$f[0-31]` | `f` | + + > **Notes**: + > - NVPTX doesn't have a fixed register set, so named registers are not supported. +@@ -70,6 +73,8 @@ This feature tracks `asm!` and `global_asm!` support for the following architect + | AVR | `reg`, `reg_upper` | None | `i8` | + | AVR | `reg_pair`, `reg_iw`, `reg_ptr` | None | `i16` | + | MSP430 | `reg` | None | `i8`, `i16` | ++| LoongArch64 | `reg` | None | `i8`, `i16`, `i32`, `i64`, `f32`, `f64` | ++| LoongArch64 | `freg` | None | `f32`, `f64` | + + ## Register aliases + +@@ -88,6 +93,10 @@ This feature tracks `asm!` and `global_asm!` support for the following architect + | MSP430 | `r2` | `sr` | + | MSP430 | `r3` | `cg` | + | MSP430 | `r4` | `fp` | ++| LoongArch | `$r0` | `zero` | ++| LoongArch | `$r2` | `tp` | ++| LoongArch | `$r3` | `sp` | ++| LoongArch | `$r22` | `fp` | + + > **Notes**: + > - TI does not mandate a frame pointer for MSP430, but toolchains are allowed +@@ -98,7 +107,7 @@ This feature tracks `asm!` and `global_asm!` support for the following architect + | Architecture | Unsupported register | Reason | + | ------------ | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | All | `sp` | The stack pointer must be restored to its original value at the end of an asm code block. | +-| All | `fr` (Hexagon), `$fp` (MIPS), `Y` (AVR), `r4` (MSP430) | The frame pointer cannot be used as an input or output. | ++| All | `fr` (Hexagon), `$fp` (MIPS), `Y` (AVR), `r4` (MSP430), `$fp` (LoongArch) | The frame pointer cannot be used as an input or output. | + | All | `r19` (Hexagon) | This is used internally by LLVM as a "base pointer" for functions with complex stack frames. | + | MIPS | `$0` or `$zero` | This is a constant zero register which can't be modified. | + | MIPS | `$1` or `$at` | Reserved for assembler. | +@@ -108,6 +117,10 @@ This feature tracks `asm!` and `global_asm!` support for the following architect + | Hexagon | `lr` | This is the link register which cannot be used as an input or output. | + | AVR | `r0`, `r1`, `r1r0` | Due to an issue in LLVM, the `r0` and `r1` registers cannot be used as inputs or outputs. If modified, they must be restored to their original values before the end of the block. | + |MSP430 | `r0`, `r2`, `r3` | These are the program counter, status register, and constant generator respectively. Neither the status register nor constant generator can be written to. | ++| LoongArch | `$r0` or `$zero` | This is a constant zero register which can't be modified. | ++| LoongArch | `$r2` or `$tp` | This is reserved for TLS. | ++| LoongArch | `$r21` | This is reserved by the ABI. | ++| LoongArch | `$r31` or `$s8` | This is used internally by LLVM. | + + ## Template modifiers + +@@ -122,6 +135,8 @@ This feature tracks `asm!` and `global_asm!` support for the following architect + | PowerPC | `reg` | None | `0` | None | + | PowerPC | `reg_nonzero` | None | `3` | `b` | + | PowerPC | `freg` | None | `0` | None | ++| LoongArch | `reg` | None | `$r2` | None | ++| LoongArch | `freg` | None | `$f0` | None | + + # Flags covered by `preserves_flags` + +diff --git a/src/librustdoc/clean/cfg.rs b/src/librustdoc/clean/cfg.rs +index dd58a5b51..5177cffe6 100644 +--- a/src/librustdoc/clean/cfg.rs ++++ b/src/librustdoc/clean/cfg.rs +@@ -517,6 +517,7 @@ impl<'a> fmt::Display for Display<'a> { + "aarch64" => "AArch64", + "arm" => "ARM", + "asmjs" => "JavaScript", ++ "loongarch64" => "LoongArch LA64", + "m68k" => "M68k", + "mips" => "MIPS", + "mips64" => "MIPS-64", +diff --git a/src/tools/miri/src/shims/foreign_items.rs b/src/tools/miri/src/shims/foreign_items.rs +index 03275ed4e..e7d794343 100644 +--- a/src/tools/miri/src/shims/foreign_items.rs ++++ b/src/tools/miri/src/shims/foreign_items.rs +@@ -46,7 +46,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> { + // This list should be kept in sync with the one from libstd. + let min_align = match this.tcx.sess.target.arch.as_ref() { + "x86" | "arm" | "mips" | "powerpc" | "powerpc64" | "asmjs" | "wasm32" => 8, +- "x86_64" | "aarch64" | "mips64" | "s390x" | "sparc64" => 16, ++ "x86_64" | "aarch64" | "mips64" | "s390x" | "sparc64" | "loongarch64" => 16, + arch => bug!("unsupported target architecture for malloc: `{}`", arch), + }; + // Windows always aligns, even small allocations. +diff --git a/tests/assembly/asm/loongarch-type.rs b/tests/assembly/asm/loongarch-type.rs +new file mode 100644 +index 000000000..4e296f3ad +--- /dev/null ++++ b/tests/assembly/asm/loongarch-type.rs +@@ -0,0 +1,196 @@ ++// min-llvm-version: 16.0 ++// assembly-output: emit-asm ++// compile-flags: --target loongarch64-unknown-linux-gnu ++// needs-llvm-components: loongarch ++ ++#![feature(no_core, lang_items, rustc_attrs, asm_experimental_arch)] ++#![crate_type = "rlib"] ++#![no_core] ++#![allow(asm_sub_register, non_camel_case_types)] ++ ++#[rustc_builtin_macro] ++macro_rules! asm { ++ () => {}; ++} ++#[rustc_builtin_macro] ++macro_rules! concat { ++ () => {}; ++} ++#[rustc_builtin_macro] ++macro_rules! stringify { ++ () => {}; ++} ++ ++#[lang = "sized"] ++trait Sized {} ++#[lang = "copy"] ++trait Copy {} ++ ++type ptr = *const i32; ++ ++impl Copy for i8 {} ++impl Copy for i16 {} ++impl Copy for i32 {} ++impl Copy for i64 {} ++impl Copy for f32 {} ++impl Copy for f64 {} ++impl Copy for ptr {} ++extern "C" { ++ fn extern_func(); ++ static extern_static: u8; ++} ++ ++// Hack to avoid function merging ++extern "Rust" { ++ fn dont_merge(s: &str); ++} ++ ++// CHECK-LABEL: sym_fn: ++// CHECK: #APP ++// CHECK: pcalau12i $t0, %got_pc_hi20(extern_func) ++// CHECK: ld.d $t0, $t0, %got_pc_lo12(extern_func) ++// CHECK: #NO_APP ++#[no_mangle] ++pub unsafe fn sym_fn() { ++ asm!("la.got $r12, {}", sym extern_func); ++} ++ ++// CHECK-LABEL: sym_static: ++// CHECK: #APP ++// CHECK: pcalau12i $t0, %got_pc_hi20(extern_static) ++// CHECK: ld.d $t0, $t0, %got_pc_lo12(extern_static) ++// CHECK: #NO_APP ++#[no_mangle] ++pub unsafe fn sym_static() { ++ asm!("la.got $r12, {}", sym extern_static); ++} ++ ++macro_rules! check { ($func:ident, $ty:ty, $class:ident, $mov:literal) => { ++ #[no_mangle] ++ pub unsafe fn $func(x: $ty) -> $ty { ++ dont_merge(stringify!($func)); ++ ++ let y; ++ asm!(concat!($mov," {}, {}"), out($class) y, in($class) x); ++ y ++ } ++};} ++ ++macro_rules! check_reg { ($func:ident, $ty:ty, $reg:tt, $mov:literal) => { ++ #[no_mangle] ++ pub unsafe fn $func(x: $ty) -> $ty { ++ dont_merge(stringify!($func)); ++ ++ let y; ++ asm!(concat!($mov, " ", $reg, ", ", $reg), lateout($reg) y, in($reg) x); ++ y ++ } ++};} ++ ++// CHECK-LABEL: reg_i8: ++// CHECK: #APP ++// CHECK: move ${{[a-z0-9]+}}, ${{[a-z0-9]+}} ++// CHECK: #NO_APP ++check!(reg_i8, i8, reg, "move"); ++ ++// CHECK-LABEL: reg_i16: ++// CHECK: #APP ++// CHECK: move ${{[a-z0-9]+}}, ${{[a-z0-9]+}} ++// CHECK: #NO_APP ++check!(reg_i16, i16, reg, "move"); ++ ++// CHECK-LABEL: reg_i32: ++// CHECK: #APP ++// CHECK: move ${{[a-z0-9]+}}, ${{[a-z0-9]+}} ++// CHECK: #NO_APP ++check!(reg_i32, i32, reg, "move"); ++ ++// CHECK-LABEL: reg_f32: ++// CHECK: #APP ++// CHECK: move ${{[a-z0-9]+}}, ${{[a-z0-9]+}} ++// CHECK: #NO_APP ++check!(reg_f32, f32, reg, "move"); ++ ++// CHECK-LABEL: reg_i64: ++// CHECK: #APP ++// CHECK: move ${{[a-z0-9]+}}, ${{[a-z0-9]+}} ++// CHECK: #NO_APP ++check!(reg_i64, i64, reg, "move"); ++ ++// CHECK-LABEL: reg_f64: ++// CHECK: #APP ++// CHECK: move ${{[a-z0-9]+}}, ${{[a-z0-9]+}} ++// CHECK: #NO_APP ++check!(reg_f64, f64, reg, "move"); ++ ++// CHECK-LABEL: reg_ptr: ++// CHECK: #APP ++// CHECK: move ${{[a-z0-9]+}}, ${{[a-z0-9]+}} ++// CHECK: #NO_APP ++check!(reg_ptr, ptr, reg, "move"); ++ ++// CHECK-LABEL: freg_f32: ++// CHECK: #APP ++// CHECK: fmov.s $f{{[a-z0-9]+}}, $f{{[a-z0-9]+}} ++// CHECK: #NO_APP ++check!(freg_f32, f32, freg, "fmov.s"); ++ ++// CHECK-LABEL: freg_f64: ++// CHECK: #APP ++// CHECK: fmov.d $f{{[a-z0-9]+}}, $f{{[a-z0-9]+}} ++// CHECK: #NO_APP ++check!(freg_f64, f64, freg, "fmov.d"); ++ ++// CHECK-LABEL: r4_i8: ++// CHECK: #APP ++// CHECK: move $a0, $a0 ++// CHECK: #NO_APP ++check_reg!(r4_i8, i8, "$r4", "move"); ++ ++// CHECK-LABEL: r4_i16: ++// CHECK: #APP ++// CHECK: move $a0, $a0 ++// CHECK: #NO_APP ++check_reg!(r4_i16, i16, "$r4", "move"); ++ ++// CHECK-LABEL: r4_i32: ++// CHECK: #APP ++// CHECK: move $a0, $a0 ++// CHECK: #NO_APP ++check_reg!(r4_i32, i32, "$r4", "move"); ++ ++// CHECK-LABEL: r4_f32: ++// CHECK: #APP ++// CHECK: move $a0, $a0 ++// CHECK: #NO_APP ++check_reg!(r4_f32, f32, "$r4", "move"); ++ ++// CHECK-LABEL: r4_i64: ++// CHECK: #APP ++// CHECK: move $a0, $a0 ++// CHECK: #NO_APP ++check_reg!(r4_i64, i64, "$r4", "move"); ++ ++// CHECK-LABEL: r4_f64: ++// CHECK: #APP ++// CHECK: move $a0, $a0 ++// CHECK: #NO_APP ++check_reg!(r4_f64, f64, "$r4", "move"); ++ ++// CHECK-LABEL: r4_ptr: ++// CHECK: #APP ++// CHECK: move $a0, $a0 ++// CHECK: #NO_APP ++check_reg!(r4_ptr, ptr, "$r4", "move"); ++ ++// CHECK-LABEL: f0_f32: ++// CHECK: #APP ++// CHECK: fmov.s $f{{[a-z0-9]+}}, $f{{[a-z0-9]+}} ++// CHECK: #NO_APP ++check_reg!(f0_f32, f32, "$f0", "fmov.s"); ++ ++// CHECK-LABEL: f0_f64: ++// CHECK: #APP ++// CHECK: fmov.d $f{{[a-z0-9]+}}, $f{{[a-z0-9]+}} ++// CHECK: #NO_APP ++check_reg!(f0_f64, f64, "$f0", "fmov.d"); +diff --git a/tests/codegen/abi-main-signature-16bit-c-int.rs b/tests/codegen/abi-main-signature-16bit-c-int.rs +index 4ed491dfb..f5feefe76 100644 +--- a/tests/codegen/abi-main-signature-16bit-c-int.rs ++++ b/tests/codegen/abi-main-signature-16bit-c-int.rs +@@ -18,6 +18,7 @@ + // ignore-x86 + // ignore-x86_64 + // ignore-xcore ++// ignore-loongarch64 + + fn main() { + } +diff --git a/tests/codegen/call-llvm-intrinsics.rs b/tests/codegen/call-llvm-intrinsics.rs +index cb8abae19..11f291771 100644 +--- a/tests/codegen/call-llvm-intrinsics.rs ++++ b/tests/codegen/call-llvm-intrinsics.rs +@@ -1,6 +1,7 @@ + // compile-flags: -C no-prepopulate-passes -Copt-level=0 + + // ignore-riscv64 ++// ignore-loongarch64 + + #![feature(link_llvm_intrinsics)] + #![crate_type = "lib"] +diff --git a/tests/codegen/catch-unwind.rs b/tests/codegen/catch-unwind.rs +index b90ef104c..6b63b83ef 100644 +--- a/tests/codegen/catch-unwind.rs ++++ b/tests/codegen/catch-unwind.rs +@@ -10,6 +10,8 @@ + // ignore-riscv64 FIXME + // On s390x the closure is also in another function + // ignore-s390x FIXME ++// On loongarch64 the closure is also in another function ++// ignore-loongarch64 FIXME + + #![crate_type = "lib"] + #![feature(c_unwind)] +diff --git a/tests/codegen/global_asm.rs b/tests/codegen/global_asm.rs +index fab84868f..6e30a9639 100644 +--- a/tests/codegen/global_asm.rs ++++ b/tests/codegen/global_asm.rs +@@ -37,6 +37,7 @@ + // ignore-wasm32 + // ignore-wasm64 + // ignore-emscripten ++// ignore-loongarch64 + // compile-flags: -C no-prepopulate-passes + + #![crate_type = "lib"] +diff --git a/tests/codegen/global_asm_include.rs b/tests/codegen/global_asm_include.rs +index 02ee91645..002a39c7f 100644 +--- a/tests/codegen/global_asm_include.rs ++++ b/tests/codegen/global_asm_include.rs +@@ -37,6 +37,7 @@ + // ignore-wasm32 + // ignore-wasm64 + // ignore-emscripten ++// ignore-loongarch64 + // compile-flags: -C no-prepopulate-passes + + #![crate_type = "lib"] +diff --git a/tests/codegen/global_asm_x2.rs b/tests/codegen/global_asm_x2.rs +index bdcf0ea84..1244fff2d 100644 +--- a/tests/codegen/global_asm_x2.rs ++++ b/tests/codegen/global_asm_x2.rs +@@ -37,6 +37,7 @@ + // ignore-wasm32 + // ignore-wasm64 + // ignore-emscripten ++// ignore-loongarch64 + // compile-flags: -C no-prepopulate-passes + + #![crate_type = "lib"] +diff --git a/tests/codegen/loongarch-abi/call-llvm-intrinsics.rs b/tests/codegen/loongarch-abi/call-llvm-intrinsics.rs +new file mode 100644 +index 000000000..4b78f6e24 +--- /dev/null ++++ b/tests/codegen/loongarch-abi/call-llvm-intrinsics.rs +@@ -0,0 +1,31 @@ ++// compile-flags: -C no-prepopulate-passes ++ ++// only-loongarch64 ++ ++#![feature(link_llvm_intrinsics)] ++#![crate_type = "lib"] ++ ++struct A; ++ ++impl Drop for A { ++ fn drop(&mut self) { ++ println!("A"); ++ } ++} ++ ++extern "C" { ++ #[link_name = "llvm.sqrt.f32"] ++ fn sqrt(x: f32) -> f32; ++} ++ ++pub fn do_call() { ++ let _a = A; ++ ++ unsafe { ++ // Ensure that we `call` LLVM intrinsics instead of trying to `invoke` them ++ // CHECK: store float 4.000000e+00, ptr %{{.}}, align 4 ++ // CHECK: load float, ptr %{{.}}, align 4 ++ // CHECK: call float @llvm.sqrt.f32(float %{{.}} ++ sqrt(4.0); ++ } ++} +diff --git a/tests/codegen/loongarch-abi/loongarch64-lp64d-abi.rs b/tests/codegen/loongarch-abi/loongarch64-lp64d-abi.rs +new file mode 100644 +index 000000000..7555553c2 +--- /dev/null ++++ b/tests/codegen/loongarch-abi/loongarch64-lp64d-abi.rs +@@ -0,0 +1,293 @@ ++// compile-flags: -C no-prepopulate-passes ++// only-loongarch64 ++// only-linux ++ ++#![crate_type = "lib"] ++ ++// CHECK: define void @f_fpr_tracking(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, i8 noundef zeroext %i) ++#[no_mangle] ++pub extern "C" fn f_fpr_tracking( ++ a: f64, ++ b: f64, ++ c: f64, ++ d: f64, ++ e: f64, ++ f: f64, ++ g: f64, ++ h: f64, ++ i: u8, ++) { ++} ++ ++#[repr(C)] ++pub struct Double { ++ f: f64, ++} ++ ++#[repr(C)] ++pub struct DoubleDouble { ++ f: f64, ++ g: f64, ++} ++ ++#[repr(C)] ++pub struct DoubleFloat { ++ f: f64, ++ g: f32, ++} ++ ++// CHECK: define void @f_double_s_arg(double %0) ++#[no_mangle] ++pub extern "C" fn f_double_s_arg(a: Double) {} ++ ++// CHECK: define double @f_ret_double_s() ++#[no_mangle] ++pub extern "C" fn f_ret_double_s() -> Double { ++ Double { f: 1. } ++} ++ ++// CHECK: define void @f_double_double_s_arg({ double, double } %0) ++#[no_mangle] ++pub extern "C" fn f_double_double_s_arg(a: DoubleDouble) {} ++ ++// CHECK: define { double, double } @f_ret_double_double_s() ++#[no_mangle] ++pub extern "C" fn f_ret_double_double_s() -> DoubleDouble { ++ DoubleDouble { f: 1., g: 2. } ++} ++ ++// CHECK: define void @f_double_float_s_arg({ double, float } %0) ++#[no_mangle] ++pub extern "C" fn f_double_float_s_arg(a: DoubleFloat) {} ++ ++// CHECK: define { double, float } @f_ret_double_float_s() ++#[no_mangle] ++pub extern "C" fn f_ret_double_float_s() -> DoubleFloat { ++ DoubleFloat { f: 1., g: 2. } ++} ++ ++// CHECK: define void @f_double_double_s_arg_insufficient_fprs(double %0, double %1, double %2, double %3, double %4, double %5, double %6, [2 x i64] %7) ++#[no_mangle] ++pub extern "C" fn f_double_double_s_arg_insufficient_fprs( ++ a: f64, ++ b: f64, ++ c: f64, ++ d: f64, ++ e: f64, ++ f: f64, ++ g: f64, ++ h: DoubleDouble, ++) { ++} ++ ++#[repr(C)] ++pub struct DoubleInt8 { ++ f: f64, ++ i: i8, ++} ++ ++#[repr(C)] ++pub struct DoubleUInt8 { ++ f: f64, ++ i: u8, ++} ++ ++#[repr(C)] ++pub struct DoubleInt32 { ++ f: f64, ++ i: i32, ++} ++ ++#[repr(C)] ++pub struct DoubleInt64 { ++ f: f64, ++ i: i64, ++} ++ ++// CHECK: define void @f_double_int8_s_arg({ double, i8 } %0) ++#[no_mangle] ++pub extern "C" fn f_double_int8_s_arg(a: DoubleInt8) {} ++ ++// CHECK: define { double, i8 } @f_ret_double_int8_s() ++#[no_mangle] ++pub extern "C" fn f_ret_double_int8_s() -> DoubleInt8 { ++ DoubleInt8 { f: 1., i: 2 } ++} ++ ++// CHECK: define void @f_double_int32_s_arg({ double, i32 } %0) ++#[no_mangle] ++pub extern "C" fn f_double_int32_s_arg(a: DoubleInt32) {} ++ ++// CHECK: define { double, i32 } @f_ret_double_int32_s() ++#[no_mangle] ++pub extern "C" fn f_ret_double_int32_s() -> DoubleInt32 { ++ DoubleInt32 { f: 1., i: 2 } ++} ++ ++// CHECK: define void @f_double_uint8_s_arg({ double, i8 } %0) ++#[no_mangle] ++pub extern "C" fn f_double_uint8_s_arg(a: DoubleUInt8) {} ++ ++// CHECK: define { double, i8 } @f_ret_double_uint8_s() ++#[no_mangle] ++pub extern "C" fn f_ret_double_uint8_s() -> DoubleUInt8 { ++ DoubleUInt8 { f: 1., i: 2 } ++} ++ ++// CHECK: define void @f_double_int64_s_arg({ double, i64 } %0) ++#[no_mangle] ++pub extern "C" fn f_double_int64_s_arg(a: DoubleInt64) {} ++ ++// CHECK: define { double, i64 } @f_ret_double_int64_s() ++#[no_mangle] ++pub extern "C" fn f_ret_double_int64_s() -> DoubleInt64 { ++ DoubleInt64 { f: 1., i: 2 } ++} ++ ++// CHECK: define void @f_double_int8_s_arg_insufficient_gprs(i32 noundef signext %a, i32 noundef signext %b, i32 noundef signext %c, i32 noundef signext %d, i32 noundef signext %e, i32 noundef signext %f, i32 noundef signext %g, i32 noundef signext %h, [2 x i64] %0) ++#[no_mangle] ++pub extern "C" fn f_double_int8_s_arg_insufficient_gprs( ++ a: i32, ++ b: i32, ++ c: i32, ++ d: i32, ++ e: i32, ++ f: i32, ++ g: i32, ++ h: i32, ++ i: DoubleInt8, ++) { ++} ++ ++// CHECK: define void @f_struct_double_int8_insufficient_fprs(float %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, [2 x i64] %8) ++#[no_mangle] ++pub extern "C" fn f_struct_double_int8_insufficient_fprs( ++ a: f32, ++ b: f64, ++ c: f64, ++ d: f64, ++ e: f64, ++ f: f64, ++ g: f64, ++ h: f64, ++ i: DoubleInt8, ++) { ++} ++ ++#[repr(C)] ++pub struct DoubleArr1 { ++ a: [f64; 1], ++} ++ ++// CHECK: define void @f_doublearr1_s_arg(double %0) ++#[no_mangle] ++pub extern "C" fn f_doublearr1_s_arg(a: DoubleArr1) {} ++ ++// CHECK: define double @f_ret_doublearr1_s() ++#[no_mangle] ++pub extern "C" fn f_ret_doublearr1_s() -> DoubleArr1 { ++ DoubleArr1 { a: [1.] } ++} ++ ++#[repr(C)] ++pub struct DoubleArr2 { ++ a: [f64; 2], ++} ++ ++// CHECK: define void @f_doublearr2_s_arg({ double, double } %0) ++#[no_mangle] ++pub extern "C" fn f_doublearr2_s_arg(a: DoubleArr2) {} ++ ++// CHECK: define { double, double } @f_ret_doublearr2_s() ++#[no_mangle] ++pub extern "C" fn f_ret_doublearr2_s() -> DoubleArr2 { ++ DoubleArr2 { a: [1., 2.] } ++} ++ ++#[repr(C)] ++pub struct Tricky1 { ++ f: [f64; 1], ++} ++ ++#[repr(C)] ++pub struct DoubleArr2Tricky1 { ++ g: [Tricky1; 2], ++} ++ ++// CHECK: define void @f_doublearr2_tricky1_s_arg({ double, double } %0) ++#[no_mangle] ++pub extern "C" fn f_doublearr2_tricky1_s_arg(a: DoubleArr2Tricky1) {} ++ ++// CHECK: define { double, double } @f_ret_doublearr2_tricky1_s() ++#[no_mangle] ++pub extern "C" fn f_ret_doublearr2_tricky1_s() -> DoubleArr2Tricky1 { ++ DoubleArr2Tricky1 { g: [Tricky1 { f: [1.] }, Tricky1 { f: [2.] }] } ++} ++ ++#[repr(C)] ++pub struct EmptyStruct {} ++ ++#[repr(C)] ++pub struct DoubleArr2Tricky2 { ++ s: EmptyStruct, ++ g: [Tricky1; 2], ++} ++ ++// CHECK: define void @f_doublearr2_tricky2_s_arg({ double, double } %0) ++#[no_mangle] ++pub extern "C" fn f_doublearr2_tricky2_s_arg(a: DoubleArr2Tricky2) {} ++ ++// CHECK: define { double, double } @f_ret_doublearr2_tricky2_s() ++#[no_mangle] ++pub extern "C" fn f_ret_doublearr2_tricky2_s() -> DoubleArr2Tricky2 { ++ DoubleArr2Tricky2 { s: EmptyStruct {}, g: [Tricky1 { f: [1.] }, Tricky1 { f: [2.] }] } ++} ++ ++#[repr(C)] ++pub struct IntDoubleInt { ++ a: i32, ++ b: f64, ++ c: i32, ++} ++ ++// CHECK: define void @f_int_double_int_s_arg(ptr noalias nocapture noundef dereferenceable(24) %a) ++#[no_mangle] ++pub extern "C" fn f_int_double_int_s_arg(a: IntDoubleInt) {} ++ ++// CHECK: define void @f_ret_int_double_int_s(ptr noalias nocapture noundef sret(%IntDoubleInt) dereferenceable(24) %0) ++#[no_mangle] ++pub extern "C" fn f_ret_int_double_int_s() -> IntDoubleInt { ++ IntDoubleInt { a: 1, b: 2., c: 3 } ++} ++ ++#[repr(C)] ++pub struct CharCharDouble { ++ a: u8, ++ b: u8, ++ c: f64, ++} ++ ++// CHECK: define void @f_char_char_double_s_arg([2 x i64] %0) ++#[no_mangle] ++pub extern "C" fn f_char_char_double_s_arg(a: CharCharDouble) {} ++ ++// CHECK: define [2 x i64] @f_ret_char_char_double_s() ++#[no_mangle] ++pub extern "C" fn f_ret_char_char_double_s() -> CharCharDouble { ++ CharCharDouble { a: 1, b: 2, c: 3. } ++} ++ ++#[repr(C)] ++pub union DoubleU { ++ a: f64, ++} ++ ++// CHECK: define void @f_double_u_arg(i64 %0) ++#[no_mangle] ++pub extern "C" fn f_double_u_arg(a: DoubleU) {} ++ ++// CHECK: define i64 @f_ret_double_u() ++#[no_mangle] ++pub extern "C" fn f_ret_double_u() -> DoubleU { ++ unsafe { DoubleU { a: 1. } } ++} +diff --git a/tests/codegen/repr-transparent-aggregates-1.rs b/tests/codegen/repr-transparent-aggregates-1.rs +index f733de12b..9c4b0e58e 100644 +--- a/tests/codegen/repr-transparent-aggregates-1.rs ++++ b/tests/codegen/repr-transparent-aggregates-1.rs +@@ -10,6 +10,7 @@ + // ignore-riscv64 see codegen/riscv-abi + // ignore-s390x + // ignore-windows ++// ignore-loongarch64 + // See repr-transparent.rs + + #![feature(transparent_unions)] +diff --git a/tests/codegen/repr-transparent-aggregates-2.rs b/tests/codegen/repr-transparent-aggregates-2.rs +index df7e88f08..2d963fc69 100644 +--- a/tests/codegen/repr-transparent-aggregates-2.rs ++++ b/tests/codegen/repr-transparent-aggregates-2.rs +@@ -13,6 +13,7 @@ + // ignore-sparc64 + // ignore-x86 + // ignore-x86_64 ++// ignore-loongarch64 + // See repr-transparent.rs + + #![feature(transparent_unions)] +diff --git a/tests/codegen/repr-transparent.rs b/tests/codegen/repr-transparent.rs +index 311cbfbaa..759ddea67 100644 +--- a/tests/codegen/repr-transparent.rs ++++ b/tests/codegen/repr-transparent.rs +@@ -3,6 +3,7 @@ + // ignore-riscv64 riscv64 has an i128 type used with test_Vector + // see codegen/riscv-abi for riscv functiona call tests + // ignore-s390x s390x with default march passes vector types per reference ++// ignore-loongarch64 see codegen/loongarch-abi for loongarch function call tests + + #![crate_type="lib"] + #![feature(repr_simd, transparent_unions)] +diff --git a/tests/debuginfo/borrowed-unique-basic.rs b/tests/debuginfo/borrowed-unique-basic.rs +index 94229bf27..daccf76f0 100644 +--- a/tests/debuginfo/borrowed-unique-basic.rs ++++ b/tests/debuginfo/borrowed-unique-basic.rs +@@ -1,4 +1,5 @@ + // min-lldb-version: 310 ++// ignore-loongarch64 + + // compile-flags:-g + +diff --git a/tests/debuginfo/box.rs b/tests/debuginfo/box.rs +index 3713c8c13..7d1c1755e 100644 +--- a/tests/debuginfo/box.rs ++++ b/tests/debuginfo/box.rs +@@ -1,4 +1,5 @@ + // min-lldb-version: 310 ++// ignore-loongarch64 + + // compile-flags:-g + +diff --git a/tests/debuginfo/macro-stepping.rs b/tests/debuginfo/macro-stepping.rs +index e4b2b7b79..dd2a5451c 100644 +--- a/tests/debuginfo/macro-stepping.rs ++++ b/tests/debuginfo/macro-stepping.rs +@@ -1,6 +1,7 @@ + // ignore-windows + // ignore-android + // ignore-aarch64 ++// ignore-loongarch64 + // min-lldb-version: 310 + // ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 + +diff --git a/tests/debuginfo/step-into-match.rs b/tests/debuginfo/step-into-match.rs +index 4a5f78570..e022eacf4 100644 +--- a/tests/debuginfo/step-into-match.rs ++++ b/tests/debuginfo/step-into-match.rs +@@ -1,5 +1,6 @@ + // compile-flags: -g + // ignore-android: FIXME(#10381) ++// ignore-loongarch64 + + // === GDB TESTS ============================================================== + +diff --git a/tests/debuginfo/unsized.rs b/tests/debuginfo/unsized.rs +index b1ec9b068..0d1f60b17 100644 +--- a/tests/debuginfo/unsized.rs ++++ b/tests/debuginfo/unsized.rs +@@ -1,4 +1,5 @@ + // compile-flags:-g ++// ignore-loongarch64 + + // === GDB TESTS =================================================================================== + +diff --git a/tests/ui/abi/stack-probes-lto.rs b/tests/ui/abi/stack-probes-lto.rs +index a455eef42..f46833009 100644 +--- a/tests/ui/abi/stack-probes-lto.rs ++++ b/tests/ui/abi/stack-probes-lto.rs +@@ -5,6 +5,7 @@ + // ignore-mips64 + // ignore-sparc + // ignore-sparc64 ++// ignore-loongarch64 + // ignore-wasm + // ignore-emscripten no processes + // ignore-sgx no processes +diff --git a/tests/ui/abi/stack-probes.rs b/tests/ui/abi/stack-probes.rs +index 8dba54c3f..8137c9230 100644 +--- a/tests/ui/abi/stack-probes.rs ++++ b/tests/ui/abi/stack-probes.rs +@@ -5,6 +5,7 @@ + // ignore-mips64 + // ignore-sparc + // ignore-sparc64 ++// ignore-loongarch64 + // ignore-wasm + // ignore-emscripten no processes + // ignore-sgx no processes +diff --git a/tests/ui/cfg/conditional-compile-arch.rs b/tests/ui/cfg/conditional-compile-arch.rs +index 7de561df1..e59e06f80 100644 +--- a/tests/ui/cfg/conditional-compile-arch.rs ++++ b/tests/ui/cfg/conditional-compile-arch.rs +@@ -39,3 +39,6 @@ pub fn main() { } + + #[cfg(target_arch = "riscv64")] + pub fn main() { } ++ ++#[cfg(target_arch = "loongarch64")] ++pub fn main() { } +diff --git a/tests/ui/check-cfg/compact-values.stderr b/tests/ui/check-cfg/compact-values.stderr +index 9864aa385..5ca4d3b3d 100644 +--- a/tests/ui/check-cfg/compact-values.stderr ++++ b/tests/ui/check-cfg/compact-values.stderr +@@ -4,7 +4,7 @@ warning: unexpected `cfg` condition value + LL | #[cfg(target(os = "linux", arch = "X"))] + | ^^^^^^^^^^ + | +- = note: expected values for `target_arch` are: aarch64, arm, avr, bpf, hexagon, m68k, mips, mips64, msp430, nvptx64, powerpc, powerpc64, riscv32, riscv64, s390x, sparc, sparc64, wasm32, wasm64, x86, x86_64 ++ = note: expected values for `target_arch` are: aarch64, arm, avr, bpf, hexagon, loongarch64, m68k, mips, mips64, msp430, nvptx64, powerpc, powerpc64, riscv32, riscv64, s390x, sparc, sparc64, wasm32, wasm64, x86, x86_64 + = note: `#[warn(unexpected_cfgs)]` on by default + + warning: 1 warning emitted +diff --git a/tests/ui/methods/method-not-found-generic-arg-elision.rs b/tests/ui/methods/method-not-found-generic-arg-elision.rs +index 799ced5e9..538eeadae 100644 +--- a/tests/ui/methods/method-not-found-generic-arg-elision.rs ++++ b/tests/ui/methods/method-not-found-generic-arg-elision.rs +@@ -83,8 +83,8 @@ fn main() { + //~^ ERROR no method named `distance` found for struct `Point + let d = point_i32.other(); + //~^ ERROR no method named `other` found for struct `Point +- let v = vec![1_i32, 2, 3]; +- v.iter().map(|x| x * x).extend(std::iter::once(100)); ++ let v = vec![1, 2, 3]; ++ v.iter().map(Box::new(|x| x * x) as Box i32>).extend(std::iter::once(100)); + //~^ ERROR no method named `extend` found for struct `Map + let wrapper = Wrapper(true); + wrapper.method(); +diff --git a/tests/ui/methods/method-not-found-generic-arg-elision.stderr b/tests/ui/methods/method-not-found-generic-arg-elision.stderr +index f3db56d1d..b97688d38 100644 +--- a/tests/ui/methods/method-not-found-generic-arg-elision.stderr ++++ b/tests/ui/methods/method-not-found-generic-arg-elision.stderr +@@ -20,10 +20,10 @@ LL | let d = point_i32.other(); + | ^^^^^ method not found in `Point` + + error[E0599]: no method named `extend` found for struct `Map` in the current scope +- --> $DIR/method-not-found-generic-arg-elision.rs:87:29 ++ --> $DIR/method-not-found-generic-arg-elision.rs:87:67 + | +-LL | v.iter().map(|x| x * x).extend(std::iter::once(100)); +- | ^^^^^^ method not found in `Map, [closure@method-not-found-generic-arg-elision.rs:87:18]>` ++LL | v.iter().map(Box::new(|x| x * x) as Box i32>).extend(std::iter::once(100)); ++ | ^^^^^^ method not found in `Map, Box i32>>` + + error[E0599]: no method named `method` found for struct `Wrapper` in the current scope + --> $DIR/method-not-found-generic-arg-elision.rs:90:13 +diff --git a/tests/ui/target-feature/gate.rs b/tests/ui/target-feature/gate.rs +index 2382c98f8..b164782bc 100644 +--- a/tests/ui/target-feature/gate.rs ++++ b/tests/ui/target-feature/gate.rs +@@ -11,6 +11,7 @@ + // ignore-sparc + // ignore-sparc64 + // ignore-s390x ++// ignore-loongarch64 + // gate-test-sse4a_target_feature + // gate-test-powerpc_target_feature + // gate-test-avx512_target_feature +diff --git a/tests/ui/target-feature/invalid-attribute.rs b/tests/ui/target-feature/invalid-attribute.rs +index ad1b6e96b..1b24525cd 100644 +--- a/tests/ui/target-feature/invalid-attribute.rs ++++ b/tests/ui/target-feature/invalid-attribute.rs +@@ -11,6 +11,7 @@ + // ignore-s390x + // ignore-sparc + // ignore-sparc64 ++// ignore-loongarch64 + + #![warn(unused_attributes)] + +diff --git a/tests/ui/target-feature/invalid-attribute.stderr b/tests/ui/target-feature/invalid-attribute.stderr +index a2adfc67f..75abe6393 100644 +--- a/tests/ui/target-feature/invalid-attribute.stderr ++++ b/tests/ui/target-feature/invalid-attribute.stderr +@@ -1,11 +1,11 @@ + error: malformed `target_feature` attribute input +- --> $DIR/invalid-attribute.rs:17:1 ++ --> $DIR/invalid-attribute.rs:18:1 + | + LL | #[target_feature = "+sse2"] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[target_feature(enable = "name")]` + + error: attribute should be applied to a function definition +- --> $DIR/invalid-attribute.rs:34:1 ++ --> $DIR/invalid-attribute.rs:35:1 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +@@ -14,7 +14,7 @@ LL | mod another {} + | -------------- not a function definition + + error: attribute should be applied to a function definition +- --> $DIR/invalid-attribute.rs:39:1 ++ --> $DIR/invalid-attribute.rs:40:1 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +@@ -23,7 +23,7 @@ LL | const FOO: usize = 7; + | --------------------- not a function definition + + error: attribute should be applied to a function definition +- --> $DIR/invalid-attribute.rs:44:1 ++ --> $DIR/invalid-attribute.rs:45:1 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +@@ -32,7 +32,7 @@ LL | struct Foo; + | ----------- not a function definition + + error: attribute should be applied to a function definition +- --> $DIR/invalid-attribute.rs:49:1 ++ --> $DIR/invalid-attribute.rs:50:1 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +@@ -41,7 +41,7 @@ LL | enum Bar {} + | ----------- not a function definition + + error: attribute should be applied to a function definition +- --> $DIR/invalid-attribute.rs:54:1 ++ --> $DIR/invalid-attribute.rs:55:1 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +@@ -54,7 +54,7 @@ LL | | } + | |_- not a function definition + + error: attribute should be applied to a function definition +- --> $DIR/invalid-attribute.rs:62:1 ++ --> $DIR/invalid-attribute.rs:63:1 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +@@ -63,7 +63,7 @@ LL | trait Baz {} + | ------------ not a function definition + + error: attribute should be applied to a function definition +- --> $DIR/invalid-attribute.rs:85:5 ++ --> $DIR/invalid-attribute.rs:86:5 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +@@ -75,7 +75,7 @@ LL | | } + | |_____- not a function definition + + error: attribute should be applied to a function definition +- --> $DIR/invalid-attribute.rs:93:5 ++ --> $DIR/invalid-attribute.rs:94:5 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +@@ -84,25 +84,25 @@ LL | || {}; + | ----- not a function definition + + error: the feature named `foo` is not valid for this target +- --> $DIR/invalid-attribute.rs:19:18 ++ --> $DIR/invalid-attribute.rs:20:18 + | + LL | #[target_feature(enable = "foo")] + | ^^^^^^^^^^^^^^ `foo` is not valid for this target + + error: malformed `target_feature` attribute input +- --> $DIR/invalid-attribute.rs:22:18 ++ --> $DIR/invalid-attribute.rs:23:18 + | + LL | #[target_feature(bar)] + | ^^^ help: must be of the form: `enable = ".."` + + error: malformed `target_feature` attribute input +- --> $DIR/invalid-attribute.rs:24:18 ++ --> $DIR/invalid-attribute.rs:25:18 + | + LL | #[target_feature(disable = "baz")] + | ^^^^^^^^^^^^^^^ help: must be of the form: `enable = ".."` + + error[E0658]: `#[target_feature(..)]` can only be applied to `unsafe` functions +- --> $DIR/invalid-attribute.rs:28:1 ++ --> $DIR/invalid-attribute.rs:29:1 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +@@ -114,13 +114,13 @@ LL | fn bar() {} + = help: add `#![feature(target_feature_11)]` to the crate attributes to enable + + error: cannot use `#[inline(always)]` with `#[target_feature]` +- --> $DIR/invalid-attribute.rs:67:1 ++ --> $DIR/invalid-attribute.rs:68:1 + | + LL | #[inline(always)] + | ^^^^^^^^^^^^^^^^^ + + error[E0658]: `#[target_feature(..)]` can only be applied to `unsafe` functions +- --> $DIR/invalid-attribute.rs:77:5 ++ --> $DIR/invalid-attribute.rs:78:5 + | + LL | #[target_feature(enable = "sse2")] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +-- +2.41.0 + diff --git a/rust.spec b/rust.spec index 0a1926f..19dfeb7 100644 --- a/rust.spec +++ b/rust.spec @@ -1,5 +1,5 @@ -%define anolis_release 2 -%global rust_arches x86_64 aarch64 +%define anolis_release 3 +%global rust_arches x86_64 aarch64 loongarch64 %global channel stable %global bootstrap_version 1.68.2 %global bootstrap_date 2023-03-28 @@ -61,6 +61,13 @@ Patch0002: 0002-rustc-1.61.0-rust-gdb-substitute-path.patch Patch0003: 0003-rustc-1.65.0-disable-libssh2.patch Patch0004: 0004-rustc-1.69.0-disable-http2.patch Patch0005: 0005-debuginfo-split-method-declaration-and-definition.patch +Patch0006: 0001-vendor-linux-raw-sys-0.1.3.patch +Patch0007: 0002-vendor-linux-raw-sys-0.1.4.patch +Patch0008: 0003-vendor-cc-1.0.79.patch +Patch0009: 0004-vendor-openssl-src-111.25.3-1.1.1t.patch +Patch0010: 0005-vendor-libffi-sys-2.3.0.patch +Patch0011: 0006-rust-add-loongarch64-support.patch + ExclusiveArch: %{rust_arches} @@ -288,6 +295,13 @@ test -f '%{local_rust_root}/bin/rustc' rm -rf vendor/libnghttp2-sys/ %endif +%patch0006 -p1 +%patch0007 -p1 +%patch0008 -p1 +%patch0009 -p1 +%patch0010 -p1 +%patch0011 -p1 + sed -i.try-python -e '/^try python3 /i try "%{__python3}" "$@"' ./configure sed -i.rust-src -e "s#@BUILDDIR@#$PWD#" ./src/etc/rust-gdb @@ -572,6 +586,9 @@ done %doc src/tools/rust-analyzer/README.md %changelog +* Mon Aug 7 2023 WANG Rui - 1.69.0-3 +- Add support for loongarch64. + * Sun May 7 2023 Funda Wang - 1.69.0-1 - Fix debuginfo with LLVM 16 -- Gitee