199451b44SJordan Rupprecht""" 299451b44SJordan RupprechtTest lldb 'image list' on object files across multiple architectures. 399451b44SJordan RupprechtThis exercises classes like ObjectFileELF and their support for opening 499451b44SJordan Rupprechtforeign-architecture object files. 599451b44SJordan Rupprecht""" 699451b44SJordan Rupprecht 799451b44SJordan Rupprecht 899451b44SJordan Rupprechtimport os.path 999451b44SJordan Rupprechtimport re 1099451b44SJordan Rupprecht 1199451b44SJordan Rupprechtimport lldb 1299451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 1399451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 1499451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 1599451b44SJordan Rupprecht 1699451b44SJordan Rupprecht 1799451b44SJordan Rupprechtclass TestImageListMultiArchitecture(TestBase): 1899451b44SJordan Rupprecht @no_debug_info_test 1999451b44SJordan Rupprecht @skipIfRemote 2099451b44SJordan Rupprecht def test_image_list_shows_multiple_architectures(self): 2199451b44SJordan Rupprecht """Test that image list properly shows the correct architecture for a set of different architecture object files.""" 2299451b44SJordan Rupprecht images = { 23*2238dcc3SJonas Devlieghere "hello-freebsd-10.0-x86_64-clang-3.3": re.compile( 24*2238dcc3SJonas Devlieghere r"x86_64-(\*)?-freebsd10.0(-unknown)? x86_64" 25*2238dcc3SJonas Devlieghere ), 26*2238dcc3SJonas Devlieghere "hello-freebsd-10.0-x86_64-gcc-4.7.3": re.compile( 27*2238dcc3SJonas Devlieghere r"x86_64-(\*)?-freebsd10.0(-unknown)? x86_64" 28*2238dcc3SJonas Devlieghere ), 29*2238dcc3SJonas Devlieghere "hello-netbsd-6.1-x86_64-gcc-4.5.3": re.compile( 30*2238dcc3SJonas Devlieghere r"x86_64-(\*)?-netbsd6.1.4(-unknown)? x86_64" 31*2238dcc3SJonas Devlieghere ), 32*2238dcc3SJonas Devlieghere "hello-ubuntu-14.04-x86_64-gcc-4.8.2": re.compile( 33*2238dcc3SJonas Devlieghere r"x86_64-(\*)?-linux(-unknown)? x86_64" 34*2238dcc3SJonas Devlieghere ), 35*2238dcc3SJonas Devlieghere "hello-ubuntu-14.04-x86_64-clang-3.5pre": re.compile( 36*2238dcc3SJonas Devlieghere r"x86_64-(\*)?-linux(-unknown)? x86_64" 37*2238dcc3SJonas Devlieghere ), 3899451b44SJordan Rupprecht } 3999451b44SJordan Rupprecht 4099451b44SJordan Rupprecht for image_name in images: 4199451b44SJordan Rupprecht file_name = os.path.abspath( 42*2238dcc3SJonas Devlieghere os.path.join(os.path.dirname(__file__), "bin", image_name) 43*2238dcc3SJonas Devlieghere ) 4499451b44SJordan Rupprecht expected_triple_and_arch_regex = images[image_name] 4599451b44SJordan Rupprecht 4699451b44SJordan Rupprecht self.runCmd("file {}".format(file_name)) 4799451b44SJordan Rupprecht self.match("image list -t -A", [expected_triple_and_arch_regex]) 4899451b44SJordan Rupprecht # Revert to the host platform after all of this is done 4999451b44SJordan Rupprecht self.runCmd("platform select host") 50