Index: lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py +++ lldb/trunk/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py @@ -23,6 +23,7 @@ @expectedFailureFreeBSD("llvm.org/pr18832") @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_hello_watchlocation_with_dwarf(self): """Test watching a location with '-s size' option.""" self.buildDwarf(dictionary=self.d) Index: lldb/trunk/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py +++ lldb/trunk/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py @@ -23,6 +23,7 @@ self.hello_watchpoint() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_hello_watchpoint_with_dwarf_using_watchpoint_set(self): """Test a simple sequence of watchpoint creation and watchpoint hit.""" self.buildDwarf(dictionary=self.d) Index: lldb/trunk/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py +++ lldb/trunk/test/functionalities/watchpoint/multiple_threads/TestWatchpointMultipleThreads.py @@ -22,6 +22,7 @@ self.hello_multiple_threads() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watchpoint_multiple_threads_with_dwarf(self): """Test that lldb watchpoint works for multiple threads.""" self.buildDwarf() @@ -37,6 +38,7 @@ self.hello_multiple_threads_wp_set_and_then_delete() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watchpoint_multiple_threads_wp_set_and_then_delete_with_dwarf(self): """Test that lldb watchpoint works for multiple threads, and after the watchpoint is deleted, the watchpoint event should no longer fires.""" self.buildDwarf() Index: lldb/trunk/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py +++ lldb/trunk/test/functionalities/watchpoint/step_over_watchpoint/TestStepOverWatchpoint.py @@ -21,6 +21,7 @@ self.step_over_watchpoint() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_with_dwarf(self): """Test stepping over watchpoints.""" self.buildDwarf() Index: lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py +++ lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/TestWatchpointCommands.py @@ -35,6 +35,7 @@ self.normal_read_write_watchpoint() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_rw_watchpoint_with_dwarf(self): """Test read_write watchpoint and expect to stop two times.""" self.buildDwarf(dictionary=self.d) @@ -50,6 +51,7 @@ self.delete_read_write_watchpoint() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_rw_watchpoint_delete_with_dwarf(self): """Test delete watchpoint and expect not to stop for watchpoint.""" self.buildDwarf(dictionary=self.d) @@ -65,6 +67,7 @@ self.ignore_read_write_watchpoint() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_rw_watchpoint_set_ignore_count_with_dwarf(self): """Test watchpoint ignore count and expect to not to stop at all.""" self.buildDwarf(dictionary=self.d) @@ -80,6 +83,7 @@ self.read_write_watchpoint_disable_after_first_stop() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_rw_disable_after_first_stop__with_dwarf(self): """Test read_write watchpoint but disable it after the first stop.""" self.buildDwarf(dictionary=self.d) @@ -95,6 +99,7 @@ self.read_write_watchpoint_disable_then_enable() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_rw_disable_then_enable_with_dwarf(self): """Test read_write watchpoint, disable initially, then enable it.""" self.buildDwarf(dictionary=self.d) Index: lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py +++ lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandLLDB.py @@ -34,6 +34,7 @@ self.watchpoint_command() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watchpoint_command_with_dwarf(self): """Test 'watchpoint command'.""" self.buildDwarf(dictionary=self.d) @@ -49,6 +50,7 @@ self.watchpoint_command_can_disable_a_watchpoint() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watchpoint_command_can_disable_a_watchpoint_with_dwarf(self): """Test that 'watchpoint command' action can disable a watchpoint after it is triggered.""" self.buildDwarf(dictionary=self.d) Index: lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py +++ lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/command/TestWatchpointCommandPython.py @@ -35,6 +35,7 @@ @dwarf_test @skipIfFreeBSD # timing out on buildbot + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watchpoint_command_with_dwarf(self): """Test 'watchpoint command'.""" self.buildDwarf(dictionary=self.d) Index: lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py +++ lldb/trunk/test/functionalities/watchpoint/watchpoint_commands/condition/TestWatchpointConditionCmd.py @@ -34,6 +34,7 @@ self.watchpoint_condition() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watchpoint_cond_with_dwarf(self): """Test watchpoint condition.""" self.buildDwarf(dictionary=self.d) Index: lldb/trunk/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py +++ lldb/trunk/test/functionalities/watchpoint/watchpoint_events/TestWatchpointEvents.py @@ -20,6 +20,7 @@ @python_api_test @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_with_dwarf_and_python_api(self): """Test that adding, deleting and modifying watchpoints sends the appropriate events.""" self.buildDwarf() Index: lldb/trunk/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py =================================================================== --- lldb/trunk/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py +++ lldb/trunk/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py @@ -20,8 +20,9 @@ self.setTearDownCleanup() self.watchlocation_using_watchpoint_set() - @expectedFailureFreeBSD('llvm.org/pr18832') @dwarf_test + @expectedFailureFreeBSD('llvm.org/pr18832') + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watchlocation_with_dwarf_using_watchpoint_set(self): """Test watching a location with 'watchpoint set expression -w write -s size' option.""" self.buildDwarf() Index: lldb/trunk/test/lldbtest.py =================================================================== --- lldb/trunk/test/lldbtest.py +++ lldb/trunk/test/lldbtest.py @@ -698,20 +698,23 @@ def expectedFailureHostWindows(bugnumber=None, compilers=None): return expectedFailureHostOS(['windows'], bugnumber, compilers) -def expectedFailureAndroid(bugnumber=None, api_levels=None): +def expectedFailureAndroid(bugnumber=None, api_levels=None, archs=None): """ Mark a test as xfail for Android. Arguments: bugnumber - The LLVM pr associated with the problem. api_levels - A sequence of numbers specifying the Android API levels - for which a test is expected to fail. + for which a test is expected to fail. None means all API level. + arch - A sequence of architecture names specifying the architectures + for which a test is expected to fail. None means all architectures. """ def fn(self): if target_is_android(): - if not api_levels: - return True - device_api = android_device_api() - return device_api and (device_api in api_levels) + if archs is not None and self.getArchitecture() not in archs: + return False + if api_levels is not None and android_device_api() not in api_levels: + return False + return True return expectedFailure(fn, bugnumber) Index: lldb/trunk/test/python_api/watchpoint/TestSetWatchpoint.py =================================================================== --- lldb/trunk/test/python_api/watchpoint/TestSetWatchpoint.py +++ lldb/trunk/test/python_api/watchpoint/TestSetWatchpoint.py @@ -30,6 +30,7 @@ @python_api_test @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watch_val_with_dwarf(self): """Exercise SBValue.Watch() API to set a watchpoint.""" self.buildDwarf() Index: lldb/trunk/test/python_api/watchpoint/TestWatchpointIgnoreCount.py =================================================================== --- lldb/trunk/test/python_api/watchpoint/TestWatchpointIgnoreCount.py +++ lldb/trunk/test/python_api/watchpoint/TestWatchpointIgnoreCount.py @@ -30,6 +30,7 @@ @python_api_test @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_set_watch_ignore_count_with_dwarf(self): """Test SBWatchpoint.SetIgnoreCount() API.""" self.buildDwarf() Index: lldb/trunk/test/python_api/watchpoint/TestWatchpointIter.py =================================================================== --- lldb/trunk/test/python_api/watchpoint/TestWatchpointIter.py +++ lldb/trunk/test/python_api/watchpoint/TestWatchpointIter.py @@ -30,6 +30,7 @@ @python_api_test @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watch_iter_with_dwarf(self): """Exercise SBTarget.watchpoint_iter() API to iterate on the available watchpoints.""" self.buildDwarf() Index: lldb/trunk/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py =================================================================== --- lldb/trunk/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py +++ lldb/trunk/test/python_api/watchpoint/condition/TestWatchpointConditionAPI.py @@ -34,6 +34,7 @@ self.watchpoint_condition_api() @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watchpoint_cond_api_with_dwarf(self): """Test watchpoint condition API.""" self.buildDwarf(dictionary=self.d) Index: lldb/trunk/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py =================================================================== --- lldb/trunk/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py +++ lldb/trunk/test/python_api/watchpoint/watchlocation/TestSetWatchlocation.py @@ -32,6 +32,7 @@ @python_api_test @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watch_location_with_dwarf(self): """Exercise SBValue.WatchPointee() API to set a watchpoint.""" self.buildDwarf() Index: lldb/trunk/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py =================================================================== --- lldb/trunk/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py +++ lldb/trunk/test/python_api/watchpoint/watchlocation/TestTargetWatchAddress.py @@ -32,6 +32,7 @@ @python_api_test @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watch_address_with_dwarf(self): """Exercise SBTarget.WatchAddress() API to set a watchpoint.""" self.buildDwarf() @@ -47,6 +48,7 @@ @python_api_test @dwarf_test + @expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported def test_watch_address_with_invalid_watch_size_with_dwarf(self): """Exercise SBTarget.WatchAddress() API but pass an invalid watch_size.""" self.buildDwarf()