Commit: Do not pass sanitization flags to linker testsuite

Nick Clifton nickc@redhat.com
Tue Sep 6 16:34:00 GMT 2016


Hi Guys,

  Building the binutils with address sanitization now mostly works,
  except for the linker testsuite.  The problem here is that the
  testsuite uses CFLAGS and CXXFLAGS to compile test binaries.  Since we
  do not want to sanitize linker tests, I am applying the patch below to
  fix the problem.

  It creates two new variables in the linker Makefile, CFLAGS_FOR_TARGET
  and CXXFLAGS_FOR_TARGET (although really these ought to be called
  xxx_FOR_TESTING, but I am sticking with the already established naming
  convention).  These variables are copies of CFLAGS and CXXFLAGS, but
  with the sanitization options stripped out.

  Tested with a wide variety of different toolchains and no regressions.

Cheers
  Nick

ld/ChangeLog
2016-09-06  Nick Clifton  <nickc@redhat.com>

	* Makefile.am (CFLAGS_FOR_TARGET): Define as a copy of CFLAGS but
	without any sanitization options.
	(CXXFLAGS_FOR_TARGET): Define as a copy of CXXFLAGS but	without
	any sanitization options.
	(check-DEJAGNU): Pass CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET
	as CFLAGS and CXXFLAGS respectively.

diff --git a/ld/Makefile.am b/ld/Makefile.am
index 16d95bc..1a7fc3f 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -136,6 +136,10 @@ CXX_FOR_TARGET = ` \
     fi; \
   fi`
 
+# Strip out sanitization options as we want to test building binaries without any extra paraphernalia
+CFLAGS_FOR_TARGET = `echo $(CFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'`
+CXXFLAGS_FOR_TARGET = `echo $(CXXFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'`
+
 transform = s/^ld-new$$/$(installed_linker)/;@program_transform_name@
 bin_PROGRAMS = ld-new
 info_TEXINFOS = ld.texinfo
@@ -2075,8 +2079,8 @@ check-DEJAGNU: site.exp
 	runtest=$(RUNTEST); \
 	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
 	  $$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \
-		CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS)" \
-		CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS)" \
+		CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS_FOR_TARGET)" \
+		CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
 		CC_FOR_HOST="$(CC)" CFLAGS_FOR_HOST="$(CFLAGS)" \
 		OFILES="$(OFILES)" BFDLIB="$(TESTBFDLIB)" \
 		LIBIBERTY="$(LIBIBERTY) $(LIBINTL)" LIBS="$(LIBS)" \



More information about the Binutils mailing list