From: Damjan Marion Date: Thu, 3 Mar 2016 19:19:02 +0000 (+0100) Subject: Refuse to start if binary requires unavailable CPU extensions X-Git-Tag: v16.06-rc1~265 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;ds=sidebyside;h=01be6a0cb1d16fbad9a7d33449489b3a86a78521;p=vpp.git Refuse to start if binary requires unavailable CPU extensions Change-Id: I4d0d152b6f5d4ba566398fcccaa6a1f96625f864 Signed-off-by: Damjan Marion --- diff --git a/vpp/vnet/main.c b/vpp/vnet/main.c index 290b5c03f32..04ee6b7607c 100644 --- a/vpp/vnet/main.c +++ b/vpp/vnet/main.c @@ -63,6 +63,35 @@ int main (int argc, char * argv[]) u32 size; void vlib_set_get_handoff_structure_cb (void *cb); +#if __x86_64__ + const char * msg = "ERROR: This binary requires CPU with %s extensions.\n"; +#define _(a,b) \ + if (!__builtin_cpu_supports(a)) \ + { \ + fprintf(stderr, msg, b); \ + exit(1); \ + } + +#if __AVX2__ + _("avx2", "AVX2") +#endif +#if __AVX__ + _("avx", "AVX") +#endif +#if __SSE4_2__ + _("sse4.2", "SSE4.2") +#endif +#if __SSE4_1__ + _("sse4.1", "SSE4.1") +#endif +#if __SSSE3__ + _("ssse3", "SSSE3") +#endif +#if __SSE3__ + _("sse3", "SSE3") +#endif +#endif + /* * Load startup config from file. * usage: vpp -c /etc/vpp/startup.conf