self.darwinVersion,
self.gccVersion)
- return ToolChain.Generic_GCC_ToolChain(self.driver, arch)
+ return ToolChain.Darwin_GCC_ToolChain(self.driver, arch)
class DarwinPPCHostInfo(DarwinHostInfo):
def getArchName(self, args):
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)
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
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'
+
picEnabled = (arglist.getLastArg(arglist.parser.f_PICOption) or
arglist.getLastArg(arglist.parser.f_picOption) or
arglist.getLastArg(arglist.parser.f_PIEOption) or
- arglist.getLastArg(arglist.parser.f_pieOption) or
- (not arglist.getLastArg(arglist.parser.m_kernelOption) and
- not arglist.getLastArg(arglist.parser.staticOption) and
- not arglist.getLastArg(arglist.parser.m_dynamicNoPicOption)))
-
- # FIXME: This needs to tie into a platform hook.
- if (self.toolChain.archName == 'x86_64' or
- picEnabled):
- cmd_args.append('--relocation-model=pic')
- elif not arglist.getLastArg(arglist.parser.m_dynamicNoPicOption):
- cmd_args.append('--relocation-model=static')
+ arglist.getLastArg(arglist.parser.f_pieOption))
+ picDisabled = (arglist.getLastArg(arglist.parser.m_kernelOption) or
+ arglist.getLastArg(arglist.parser.staticOption))
+ model = self.toolChain.getRelocationModel(picEnabled, picDisabled)
+ cmd_args.append('--relocation-model=%s' % model)
if arglist.getLastArg(arglist.parser.f_timeReportOption):
cmd_args.append('--time-passes')
// RUN: xcc -ccc-print-phases -### -arch ppc -arch ppc %s | grep linker- | count 1 &&
// Check that -ccc-clang-archs is honored.
-// RUN: xcc -ccc-clang-archs i386 -### -arch ppc -arch i386 %s 2>&1 | grep clang | count 1
+// RUN: xcc -ccc-clang-archs i386 -### -arch ppc -arch i386 %s 2>&1 | grep 'clang"' | count 1
int main() {
printf("Hello, World!\n");