[lldb] Pass the target triple when determining the DWARF version

When targeting iOS, the default dwarf version is 2 and not 4. Currently,
the test suite does not pick up on that because it invokes the test
compiler without a target triple. This patch fixes that and now
correctly skips tests that have a dwarf version specified in a skipIf
decorator.

rdar://84530477

Differential revision: https://reviews.llvm.org/D112325
This commit is contained in:
Jonas Devlieghere 2021-10-22 10:09:17 -07:00
parent 950f22a5e1
commit 0f12cf7eba
3 changed files with 16 additions and 2 deletions

View File

@ -21,6 +21,10 @@ class Builder:
compiler = lldbutil.which(compiler) compiler = lldbutil.which(compiler)
return os.path.abspath(compiler) return os.path.abspath(compiler)
def getTriple(self, arch):
"""Returns the triple for the given architecture or None."""
return None
def getExtraMakeArgs(self): def getExtraMakeArgs(self):
""" """
Helper function to return extra argumentsfor the make system. This Helper function to return extra argumentsfor the make system. This

View File

@ -55,6 +55,13 @@ def get_triple():
class BuilderDarwin(Builder): class BuilderDarwin(Builder):
def getTriple(self, arch):
vendor, os, version, env = get_triple()
components = [arch, vendor, os, version, env]
if None in components:
return None
return '-'.join(components)
def getExtraMakeArgs(self): def getExtraMakeArgs(self):
""" """
Helper function to return extra argumentsfor the make system. This Helper function to return extra argumentsfor the make system. This

View File

@ -1347,15 +1347,18 @@ class Base(unittest2.TestCase):
return str(configuration.dwarf_version) return str(configuration.dwarf_version)
if 'clang' in self.getCompiler(): if 'clang' in self.getCompiler():
try: try:
triple = builder_module().getTriple(self.getArchitecture())
target = ['-target', triple] if triple else []
driver_output = check_output( driver_output = check_output(
[self.getCompiler()] + '-g -c -x c - -o - -###'.split(), [self.getCompiler()] + target + '-g -c -x c - -o - -###'.split(),
stderr=STDOUT) stderr=STDOUT)
driver_output = driver_output.decode("utf-8") driver_output = driver_output.decode("utf-8")
for line in driver_output.split(os.linesep): for line in driver_output.split(os.linesep):
m = re.search('dwarf-version=([0-9])', line) m = re.search('dwarf-version=([0-9])', line)
if m: if m:
return m.group(1) return m.group(1)
except: pass except CalledProcessError:
pass
return '0' return '0'
def platformIsDarwin(self): def platformIsDarwin(self):