Bug 1302891 - Part 4 - Disable CFI for binaries that are compiled with -fno-lto; r?glandium
Also add -fno-lto to flags of dummy.c to fix elfhack test. The compilation of
dummy.c with -flto was causing elfhack test to fail.
MozReview-Commit-ID: BQ4J2Pt8yL7
--- a/build/unix/elfhack/moz.build
+++ b/build/unix/elfhack/moz.build
@@ -10,19 +10,27 @@ DIRS += ['inject']
if not CONFIG['CROSS_COMPILE']:
SOURCES += [
'dummy.c',
'test-array.c',
'test-ctors.c',
]
if '-flto' in CONFIG['OS_CFLAGS']:
+ SOURCES['dummy.c'].flags += ['-fno-lto']
SOURCES['test-array.c'].flags += ['-fno-lto']
SOURCES['test-ctors.c'].flags += ['-fno-lto']
+ # -fno-lto blocks -fsanitize=cfi, so we need to disable cfi
+ if '-fsanitize=cfi' in CONFIG['OS_CFLAGS']:
+ SOURCES['dummy.c'].flags += ['-fno-sanitize=cfi']
+ SOURCES['test-array.c'].flags += ['-fno-sanitize=cfi']
+ SOURCES['test-ctors.c'].flags += ['-fno-sanitize=cfi']
+
+
HOST_SOURCES += [
'elf.cpp',
'elfhack.cpp',
]
HostProgram('elfhack')
NO_PGO = True
--- a/toolkit/library/StaticXULComponentsEnd/moz.build
+++ b/toolkit/library/StaticXULComponentsEnd/moz.build
@@ -5,11 +5,15 @@
SOURCES += [
'StaticXULComponentsEnd.cpp',
]
# Don't let LTO reorder StaticXULComponentsStart.o.
if '-flto' in CONFIG['OS_CXXFLAGS']:
SOURCES['StaticXULComponentsEnd.cpp'].flags += ['-fno-lto']
+ # -fno-lto blocks -fsanitize=cfi, so we need to disable cfi
+ if '-fsanitize=cfi' in CONFIG['OS_CXXFLAGS']:
+ SOURCES['StaticXULComponentsEnd.cpp'].flags += ['-fno-sanitize=cfi']
+
Library('StaticXULComponentsEnd')
DEFINES['MOZILLA_INTERNAL_API'] = True
--- a/toolkit/library/moz.build
+++ b/toolkit/library/moz.build
@@ -83,16 +83,20 @@ SOURCES += [
# This, combined with the fact the file is first, makes the start pointer
# it contains first in Windows PGO builds.
SOURCES['StaticXULComponentsStart.cpp'].no_pgo = True
# Don't let LTO reorder StaticXULComponentsStart.o.
if '-flto' in CONFIG['OS_CXXFLAGS']:
SOURCES['StaticXULComponentsStart.cpp'].flags += ['-fno-lto']
+ # -fno-lto blocks -fsanitize=cfi, so we need to disable cfi
+ if '-fsanitize=cfi' in CONFIG['OS_CXXFLAGS']:
+ SOURCES['StaticXULComponentsStart.cpp'].flags += ['-fno-sanitize=cfi']
+
if CONFIG['OS_ARCH'] == 'WINNT':
SOURCES += [
'nsDllMain.cpp',
]
LOCAL_INCLUDES += [
'/config',
# need widget/windows for resource.h (included from widget.rc)