Commit 530777aa authored by Thomas Petazzoni's avatar Thomas Petazzoni Committed by Peter Korsgaard
Browse files

gcc: provide option to enable mudflap support



The mudflap library is only useful if one uses the -fmudflap gcc
option to do more checks on pointers/arrays. This commit adds an
option to enable/disable mudflap support at the gcc level. By default,
it is disabled, which saves a little bit of build time compared to the
default of gcc which consists in enabling mudflap support.

Since mudflap is now disabled by default, and ensured to never be enabled
on platforms where it is not available, some gcc.mk code that was used to
disable mudflap in problematic configurations can be removed.

Whether -fmudflap is used when building is left to the user.

[Peter: tweak commit text, fix white space]
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 859b49ed
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -155,3 +155,18 @@ config BR2_GCC_ENABLE_OPENMP
	depends on !BR2_PTHREADS_NONE && !BR2_avr32 && !BR2_arc
	help
	  Enable OpenMP support for the compiler

config BR2_GCC_ENABLE_LIBMUDFLAP
	bool "Enable libmudflap support"
	# There are architectures, or specific configurations for
	# which mudflap is not supported.
	depends on !BR2_avr32 && !BR2_bfin && !BR2_ARM_INSTRUCTIONS_THUMB && !BR2_powerpc_SPE
	help
	  libmudflap is a gcc library used for the mudflap pointer
	  debugging functionality. It is only needed if you intend to
	  use the -fmudflap gcc flag.

	  See http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging and
	  the help of the gcc -fmudflap option for more details.

	  If you're unsure, leave this option disabled.
+8 −0
Original line number Diff line number Diff line
@@ -119,6 +119,14 @@ ifeq ($(BR2_INSTALL_OBJC),y)
HOST_GCC_FINAL_USR_LIBS += libobjc
endif

ifeq ($(BR2_GCC_ENABLE_LIBMUDFLAP),y)
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
HOST_GCC_FINAL_USR_LIBS += libmudflapth
else
HOST_GCC_FINAL_USR_LIBS += libmudflap
endif
endif

ifneq ($(HOST_GCC_FINAL_USR_LIBS),)
define HOST_GCC_FINAL_INSTALL_USR_LIBS
	mkdir -p $(TARGET_DIR)/usr/lib
+7 −17
Original line number Diff line number Diff line
@@ -125,6 +125,12 @@ else
HOST_GCC_COMMON_CONF_OPT += --disable-tls
endif

ifeq ($(BR2_GCC_ENABLE_LIBMUDFLAP),y)
HOST_GCC_COMMON_CONF_OPT += --enable-libmudflap
else
HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
endif

ifeq ($(BR2_PTHREADS_NONE),y)
HOST_GCC_COMMON_CONF_OPT += \
	--disable-threads \
@@ -198,25 +204,9 @@ HOST_GCC_COMMON_CONF_OPT += \
	--with-bugurl="http://bugs.buildroot.net/"
endif

# AVR32 GCC special configuration
ifeq ($(BR2_avr32),y)
HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
endif

# ARM Thumb and mudflap aren't friends
ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
endif

# Blackfin doesn't do mudflap
ifeq ($(BR2_bfin),y)
HOST_GCC_COMMON_CONF_OPT += --disable-libmudflap
endif

# Disable mudflap and enable proper double/long double for SPE ABI
# Enable proper double/long double for SPE ABI
ifeq ($(BR2_powerpc_SPE),y)
HOST_GCC_COMMON_CONF_OPT += \
	--disable-libmudflap \
	--enable-e500_double \
	--with-long-double-128
endif