ccc: Use toolchain hook for default relocation model value.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65116 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/ccc/ccclib/ToolChain.py b/tools/ccc/ccclib/ToolChain.py
index aa1646a..cda9408 100644
--- a/tools/ccc/ccclib/ToolChain.py
+++ b/tools/ccc/ccclib/ToolChain.py
@@ -86,6 +86,11 @@
def isMathErrnoDefault(self):
return True
+ def getRelocationModel(self, picEnabled, picDisabled):
+ if picEnabled:
+ return 'pic'
+ return 'static'
+
class Darwin_X86_ToolChain(ToolChain):
def __init__(self, driver, archName, darwinVersion, gccVersion):
super(Darwin_X86_ToolChain, self).__init__(driver, archName)
@@ -224,6 +229,17 @@
def isMathErrnoDefault(self):
return False
+ def getRelocationModel(self, picEnabled, picDisabled):
+ if self.archName == 'x86_64':
+ return 'pic'
+
+ if picEnabled:
+ return 'pic'
+ elif picDisabled:
+ return 'static'
+ else:
+ return 'dynamic-no-pic'
+
class Generic_GCC_ToolChain(ToolChain):
"""Generic_GCC_ToolChain - A tool chain using the 'gcc' command to
perform all subcommands; this relies on gcc translating the
@@ -251,3 +267,13 @@
return self.clangTool
return self.toolMap[action.phase.__class__]
+
+class Darwin_GCC_ToolChain(Generic_GCC_ToolChain):
+ def getRelocationModel(self, picEnabled, picDisabled):
+ if picEnabled:
+ return 'pic'
+ elif picDisabled:
+ return 'static'
+ else:
+ return 'dynamic-no-pic'
+