1*99451b44SJordan Rupprecht""" 2*99451b44SJordan RupprechtTest that debug symbols have the correct order as specified by the order file. 3*99451b44SJordan Rupprecht""" 4*99451b44SJordan Rupprecht 5*99451b44SJordan Rupprecht 6*99451b44SJordan Rupprecht 7*99451b44SJordan Rupprechtimport re 8*99451b44SJordan Rupprechtimport lldb 9*99451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 10*99451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 11*99451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 12*99451b44SJordan Rupprecht 13*99451b44SJordan Rupprecht 14*99451b44SJordan Rupprechtclass OrderFileTestCase(TestBase): 15*99451b44SJordan Rupprecht 16*99451b44SJordan Rupprecht @skipUnlessDarwin 17*99451b44SJordan Rupprecht def test(self): 18*99451b44SJordan Rupprecht """Test debug symbols follow the correct order by the order file.""" 19*99451b44SJordan Rupprecht self.build() 20*99451b44SJordan Rupprecht exe = self.getBuildArtifact("a.out") 21*99451b44SJordan Rupprecht self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) 22*99451b44SJordan Rupprecht 23*99451b44SJordan Rupprecht # Test that the debug symbols have Function f3 before Function f1. 24*99451b44SJordan Rupprecht # Use "-s address" option to sort by address. 25*99451b44SJordan Rupprecht self.runCmd("image dump symtab -s address %s" % exe) 26*99451b44SJordan Rupprecht output = self.res.GetOutput() 27*99451b44SJordan Rupprecht mo_f3 = re.search("Code +.+f3", output) 28*99451b44SJordan Rupprecht mo_f1 = re.search("Code +.+f1", output) 29*99451b44SJordan Rupprecht 30*99451b44SJordan Rupprecht # Match objects for f3 and f1 must exist and f3 must come before f1. 31*99451b44SJordan Rupprecht self.assertTrue(mo_f3 and mo_f1 and mo_f3.start() < mo_f1.start(), 32*99451b44SJordan Rupprecht "Symbols have correct order by the order file") 33*99451b44SJordan Rupprecht 34*99451b44SJordan Rupprecht self.runCmd("run", RUN_COMPLETED) 35