Nikos Nikoleris has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/15235

Change subject: scons: Disable partial linking on Mac OS
......................................................................

scons: Disable partial linking on Mac OS

Up until Apple LLVM version 10.0.0 (clang-1000.11.45.5), partial
linked objects do not expose symbols that are marked with the hidden
visibility and consequently building gem5 on Mac OS fails. As a
workaround, we disable partial linking, however, we may want to
revisit in the future.

Change-Id: I0a26dae082bf723c2bd49d90e4497e44ecab9c41
Signed-off-by: Nikos Nikoleris <[email protected]>
---
M src/SConscript
1 file changed, 18 insertions(+), 5 deletions(-)



diff --git a/src/SConscript b/src/SConscript
index 361479d..dc284b1 100755
--- a/src/SConscript
+++ b/src/SConscript
@@ -1268,23 +1268,34 @@
 if 'all' in needed_envs:
     needed_envs += target_types

+disable_partial = False
+if env['PLATFORM'] == 'darwin':
+    # Up until Apple LLVM version 10.0.0 (clang-1000.11.45.5), partial
+    # linked objects do not expose symbols that are marked with the
+    # hidden visibility and consequently building gem5 on Mac OS
+    # fails. As a workaround, we disable partial linking, however, we
+    # may want to revisit in the future.
+    disable_partial = True
+
 # Debug binary
 if 'debug' in needed_envs:
     makeEnv(env, 'debug', '.do',
             CCFLAGS = Split(ccflags['debug']),
             CPPDEFINES = ['DEBUG', 'TRACING_ON=1'],
-            LINKFLAGS = Split(ldflags['debug']))
+            LINKFLAGS = Split(ldflags['debug']),
+            disable_partial=disable_partial)

 # Optimized binary
 if 'opt' in needed_envs:
     makeEnv(env, 'opt', '.o',
             CCFLAGS = Split(ccflags['opt']),
             CPPDEFINES = ['TRACING_ON=1'],
-            LINKFLAGS = Split(ldflags['opt']))
+            LINKFLAGS = Split(ldflags['opt']),
+            disable_partial=disable_partial)

 # "Fast" binary
 if 'fast' in needed_envs:
-    disable_partial = \
+    disable_partial = disable_partial and \
             env.get('BROKEN_INCREMENTAL_LTO', False) and \
             GetOption('force_lto')
     makeEnv(env, 'fast', '.fo', strip = True,
@@ -1298,11 +1309,13 @@
     makeEnv(env, 'prof', '.po',
             CCFLAGS = Split(ccflags['prof']),
             CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'],
-            LINKFLAGS = Split(ldflags['prof']))
+            LINKFLAGS = Split(ldflags['prof']),
+            disable_partial=disable_partial)

 # Profiled binary using google-pprof
 if 'perf' in needed_envs:
     makeEnv(env, 'perf', '.gpo',
             CCFLAGS = Split(ccflags['perf']),
             CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'],
-            LINKFLAGS = Split(ldflags['perf']))
+            LINKFLAGS = Split(ldflags['perf']),
+            disable_partial=disable_partial)

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/15235
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I0a26dae082bf723c2bd49d90e4497e44ecab9c41
Gerrit-Change-Number: 15235
Gerrit-PatchSet: 1
Gerrit-Owner: Nikos Nikoleris <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to