disable Orc if CET is on

If we are building with -fcf-protection (run-time checking of
indirect jumps) then Orc won't work. Make sure it's off.

Orc may support -fcf-protection in the future, but does not in June 2019.

https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html#index-fcf-protection
https://gitlab.freedesktop.org/gstreamer/orc/issues/17

see https://github.com/libvips/libvips/issues/1006#issuecomment-501802550
This commit is contained in:
John Cupitt 2019-06-14 14:22:00 +01:00
parent db36e19ffa
commit 75e69cc1e5
3 changed files with 18 additions and 1 deletions

View File

@ -8,7 +8,8 @@
magic number [przemyslawpluta]
- much faster ismagick() [jcupitt]
- better behaviour for vips_region_fetch() if request lies partly ouside image
- remove band limits [erdmann]
- remove 256 band limit in arithmetic.c [erdmann]
- disable Orc if building with CET [lovell]
21/9/18 started 8.8.0
- much faster smartcrop [lovell]

View File

@ -34,6 +34,19 @@
#ifndef VIPS_VECTOR_H
#define VIPS_VECTOR_H
/* If we are building with -fcf-protection (run-time checking of
* indirect jumps) then Orc won't work. Make sure it's off.
*
* Orc may support -fcf-protection in the future, but does not in June 2019.
*
* https://gcc.gnu.org/onlinedocs/gcc/\
* Instrumentation-Options.html#index-fcf-protection
* https://gitlab.freedesktop.org/gstreamer/orc/issues/17
*/
#ifdef __CET__
#undef HAVE_ORC
#endif
#ifdef HAVE_ORC
#include <orc/orc.h>
#endif /*HAVE_ORC*/

View File

@ -71,11 +71,13 @@ gboolean vips__vector_enabled = TRUE;
void
vips_vector_error( VipsVector *vector )
{
#ifdef HAVE_ORC
#ifdef HAVE_ORC_PROGRAM_GET_ERROR
if( vector->program )
g_warning( "orc error: %s",
orc_program_get_error( vector->program ) );
#endif /*HAVE_ORC_PROGRAM_GET_ERROR*/
#endif /*HAVE_ORC*/
}
void
@ -102,6 +104,7 @@ vips_vector_init( void )
if( g_getenv( "VIPS_NOVECTOR" ) ||
g_getenv( "IM_NOVECTOR" ) )
vips__vector_enabled = FALSE;
#endif /*HAVE_ORC*/
}