[Mesa-dev] [PATCH] build: remove forced -fno-rtti

Francisco Jerez currojerez at riseup.net
Tue Oct 15 01:57:20 CEST 2013


Alexander von Gluck IV <kallisti5 at unixzen.com> writes:

> * As discussed on the mailing list,
>   forced no-rtti breaks C++ public
>   API's such as the Haiku C++ libGL.so
> * -fno-rtti *can* be still set however
>   instead of blindly forcing -fno-rtti,
>   we can rely on the llvm-config
>   --cppflags output.
>   If the system llvm is built without
>   rtti (default), the no-rtti flag will be
>   present in llvm-config --cppflags
>   (which we pick up on)
>   If llvm is built with rtti
>   (REQUIRES_RTTI=1), then -fno-rtti is
>   removed from llvm-config --cppflags.
> * We could selectively add / remove rtti
>   from various components, however mixing
>   rtti and non-rtti code is tricky and
>   could introduce bugs.
> * This needs impact tested.

This looks like the right thing to do to me,

Reviewed-by: Francisco Jerez <currojerez at riseup.net>

Thanks.

> ---
>  configure.ac                      | 1 -
>  scons/llvm.py                     | 3 ---
>  src/gallium/auxiliary/Makefile.am | 6 ------
>  3 files changed, 10 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 0d082d2..3335575 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1943,7 +1943,6 @@ AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
>  AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
>  AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
>  AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
> -AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302)
>  
>  AC_SUBST([ELF_LIB])
>  
> diff --git a/scons/llvm.py b/scons/llvm.py
> index 7cd609c..c1c3736 100644
> --- a/scons/llvm.py
> +++ b/scons/llvm.py
> @@ -195,9 +195,6 @@ def generate(env):
>              if llvm_version >= distutils.version.LooseVersion('3.1'):
>                  components.append('mcjit')
>  
> -            if llvm_version >= distutils.version.LooseVersion('3.2'):
> -                env.Append(CXXFLAGS = ('-fno-rtti',))
> -
>              env.ParseConfig('llvm-config --libs ' + ' '.join(components))
>              env.ParseConfig('llvm-config --ldflags')
>          except OSError:
> diff --git a/src/gallium/auxiliary/Makefile.am b/src/gallium/auxiliary/Makefile.am
> index 670e124..2d2d8d4 100644
> --- a/src/gallium/auxiliary/Makefile.am
> +++ b/src/gallium/auxiliary/Makefile.am
> @@ -25,12 +25,6 @@ AM_CXXFLAGS += \
>  	$(GALLIUM_CFLAGS) \
>  	$(LLVM_CXXFLAGS)
>  
> -if LLVM_NEEDS_FNORTTI
> -
> -AM_CXXFLAGS += -fno-rtti
> -
> -endif
> -
>  libgallium_la_SOURCES += \
>  	$(GALLIVM_SOURCES) \
>  	$(GALLIVM_CPP_SOURCES)
> -- 
> 1.8.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 229 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20131014/5dd57dc9/attachment-0001.pgp>


More information about the mesa-dev mailing list