From: Daniel Dunbar Date: Tue, 13 Jan 2009 06:44:28 +0000 (+0000) Subject: ccc: Darwin/Link also runs dsymutil in one very particular situation. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=841ceeaa1a569c20e011b44c6363c79e1bb713d3;p=clang ccc: Darwin/Link also runs dsymutil in one very particular situation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62154 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/ccc/ccclib/Arguments.py b/tools/ccc/ccclib/Arguments.py index 9352a9912d..687c8acdcc 100644 --- a/tools/ccc/ccclib/Arguments.py +++ b/tools/ccc/ccclib/Arguments.py @@ -689,6 +689,8 @@ class OptionParser: self.addOption(JoinedOption('-d', group=self.dGroup)) self.gGroup = OptionGroup('-g') + self.gstabsOption = self.addOption(JoinedOption('-gstabs', self.gGroup)) + self.g0Option = self.addOption(JoinedOption('-g0', self.gGroup)) self.g3Option = self.addOption(JoinedOption('-g3', self.gGroup)) self.gOption = self.addOption(JoinedOption('-g', self.gGroup)) diff --git a/tools/ccc/ccclib/Tools.py b/tools/ccc/ccclib/Tools.py index 1140dee6b4..989b472b72 100644 --- a/tools/ccc/ccclib/Tools.py +++ b/tools/ccc/ccclib/Tools.py @@ -879,10 +879,17 @@ class Darwin_X86_LinkTool(Tool): jobs.addJob(Jobs.Command(self.toolChain.getProgramPath('collect2'), cmd_args)) - # FIXME: We need to add a dsymutil job here in some particular - # cases (basically whenever we have a c-family input we are - # compiling, I think). Find out why this is the condition, and - # implement. See link_command spec for more details. + if (arglist.getLastArg(arglist.parser.gGroup) and + not arglist.getLastArg(arglist.parser.gstabsOption) and + not arglist.getLastArg(arglist.parser.g0Option)): + # FIXME: This is gross, but matches gcc. The test only + # considers the suffix (not the -x type), and then only of the + # first input. + inputSuffix = os.path.splitext(arglist.getValue(inputs[0].baseInput))[1] + if inputSuffix in ('.c','.cc','.C','.cpp','.cp', + '.c++','.cxx','.CPP','.m','.mm'): + jobs.addJob(Jobs.Command('dsymutil', + arglist.renderAsInput(output))) class LipoTool(Tool): def __init__(self):