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'
+