diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3dd1586e..a4c39d6a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -303,14 +303,33 @@ jobs: name: android-${{ matrix.abi }}-ds2 path: ${{ github.workspace }}/BinaryCache/ds2.tar - linux-lldb: - runs-on: ubuntu-latest + build-lldb-linux: + name: Build LLDB + runs-on: ${{ matrix.runner }} + + strategy: + fail-fast: false + matrix: + runner: [ubuntu-latest, ubuntu-24.04-arm] steps: - - uses: seanmiddleditch/gha-setup-ninja@v5 + - if: ${{ !contains(matrix.runner, 'arm') }} + uses: seanmiddleditch/gha-setup-ninja@v5 + + - if: contains(matrix.runner, 'arm') + uses: seanmiddleditch/gha-setup-ninja@v5 + with: + # TODO(andrurogerz): seanmiddleditch/gha-setup-ninja does not properly + # detect Linux on arm64 and always installs the x86_64 ninja package. + # For now, we can fix this by overriding the platform string to force + # the downloading the proper package. We also require a newer ninja + # version since aarch64 packages were not released until v1.12.0 and + # the default gha-setup-ninja installs is v1.11.1. + platform: linux-aarch64 + version: 1.12.1 # latest sccache version - name: Setup sccache - uses: hendrikmuhs/ccache-action@2e0e89e8d74340a03f75d58d02aae4c5ee1b15c6 + uses: hendrikmuhs/ccache-action@433beb5b585c67c13415f39d5ba7e485b1920710 with: key: llvm-${{ runner.os }}-${{ runner.arch }} variant: sccache @@ -328,7 +347,7 @@ jobs: cmake -B ${{ github.workspace }}/BinaryCache/llvm \ -S ${{ github.workspace }}/SourceCache/llvm/llvm \ -D LLVM_ENABLE_PROJECTS='clang;lldb' \ - -D LLVM_TARGETS_TO_BUILD="X86" \ + -D LLVM_TARGETS_TO_BUILD="host" \ -D LLDB_ENABLE_PYTHON=On \ -D CMAKE_C_COMPILER_LAUNCHER=sccache \ -D CMAKE_CXX_COMPILER_LAUNCHER=sccache \ @@ -351,8 +370,8 @@ jobs: path: ${{ github.workspace }}/BinaryCache/llvm.tar test-linux: - needs: [linux, linux-lldb] - runs-on: ubuntu-latest + needs: [linux, build-lldb-linux] + runs-on: ${{ matrix.runner }} name: Test Linux ${{ matrix.arch }} ${{ matrix.test-category }} @@ -361,6 +380,7 @@ jobs: matrix: include: - test-category: misc + runner: ubuntu-latest arch: i686 test-subdirs: >- SourceCache/llvm/lldb/test/API/api @@ -369,8 +389,8 @@ jobs: SourceCache/llvm/lldb/test/API/tools SourceCache/llvm/lldb/test/API/sanity SourceCache/llvm/lldb/test/API/types - - test-category: misc + runner: ubuntu-latest arch: x86_64 test-subdirs: >- SourceCache/llvm/lldb/test/API/api @@ -379,39 +399,68 @@ jobs: SourceCache/llvm/lldb/test/API/tools SourceCache/llvm/lldb/test/API/sanity SourceCache/llvm/lldb/test/API/types + - test-category: misc + runner: ubuntu-24.04-arm + arch: aarch64 + test-subdirs: >- + SourceCache/llvm/lldb/test/API/api + SourceCache/llvm/lldb/test/API/lang + SourceCache/llvm/lldb/test/API/linux + SourceCache/llvm/lldb/test/API/tools + SourceCache/llvm/lldb/test/API/sanity + SourceCache/llvm/lldb/test/API/types - test-category: commands + runner: ubuntu-latest arch: x86_64 test-subdirs: >- SourceCache/llvm/lldb/test/API/commands - - test-category: commands + runner: ubuntu-latest arch: i686 test-subdirs: >- SourceCache/llvm/lldb/test/API/commands + - test-category: commands + runner: ubuntu-24.04-arm + arch: aarch64 + test-subdirs: >- + SourceCache/llvm/lldb/test/API/commands - test-category: Python API + runner: ubuntu-latest arch: x86_64 test-subdirs: >- SourceCache/llvm/lldb/test/API/python_api - - test-category: Python API + runner: ubuntu-latest arch: i686 test-subdirs: >- SourceCache/llvm/lldb/test/API/python_api + - test-category: Python API + runner: ubuntu-24.04-arm + arch: aarch64 + test-subdirs: >- + SourceCache/llvm/lldb/test/API/python_api - test-category: functionalities + runner: ubuntu-latest arch: x86_64 test-subdirs: >- SourceCache/llvm/lldb/test/API/functionalities - - test-category: functionalities + runner: ubuntu-latest arch: i686 test-subdirs: >- SourceCache/llvm/lldb/test/API/functionalities + - test-category: functionalities + runner: ubuntu-24.04-arm + arch: aarch64 + test-subdirs: >- + SourceCache/llvm/lldb/test/API/functionalities steps: - - run: | + - if: matrix.arch == 'i686' + run: | sudo apt-get update sudo apt-get install -qq --no-install-recommends gcc-multilib g++-multilib @@ -457,8 +506,8 @@ jobs: --excluded ${{ github.workspace }}/SourceCache/ds2/Support/Testing/Excluded/upstream/non-debugserver-tests.excluded \ ${{ matrix.test-subdirs }} - test-android: - needs: [android-windows-ndk, linux-lldb] + test-android-x86: + needs: [android-windows-ndk, build-lldb-linux] runs-on: ubuntu-latest strategy: diff --git a/Support/Testing/Excluded/ds2/linux-aarch64.excluded b/Support/Testing/Excluded/ds2/linux-aarch64.excluded new file mode 100644 index 00000000..63629489 --- /dev/null +++ b/Support/Testing/Excluded/ds2/linux-aarch64.excluded @@ -0,0 +1,168 @@ +skip +TestAArch64LinuxNonAddressBitCodeBreak.AArch64LinuxNonAddressBitCodeBreak.test_hardware_break +TestAArch64LinuxNonAddressBitCodeBreak.AArch64LinuxNonAddressBitCodeBreak.test_software_break +TestAArch64LinuxNonAddressBitMemoryAccess.AArch64LinuxNonAddressBitMemoryAccessTestCase.test_non_address_bit_memory_read_write_api_process +TestAArch64LinuxNonAddressBitMemoryAccess.AArch64LinuxNonAddressBitMemoryAccessTestCase.test_non_address_bit_memory_read_write_api_target +TestAArch64LinuxNonAddressBitMemoryAccess.AArch64LinuxNonAddressBitMemoryAccessTestCase.test_non_address_bit_memory_read_write_cmds +TestAArch64LinuxTLSRegisters.AArch64LinuxTLSRegisters.test_tls_no_sme +TestAArch64LinuxTLSRegisters.AArch64LinuxTLSRegisters.test_tpidr2_no_sme +TestAArch64LinuxTaggedMemoryRegion.AArch64LinuxTaggedMemoryRegionTestCase.test_mte_regions +TestAArch64UnwindPAC.AArch64UnwindPAC.test_dwarf +TestAArch64UnwindPAC.AArch64UnwindPAC.test_dwo +TestBreakpointSerialization.BreakpointSerialization.test_scripted_extra_args +TestCompletion.CommandLineCompletionTestCase.test_common_complete_watchpoint_ids +TestConcurrentBreakpointsDelayedBreakpointOneWatchpoint.ConcurrentBreakpointsDelayedBreakpointOneWatchpoint.test +TestConcurrentCrashWithWatchpoint.ConcurrentCrashWithWatchpoint.test +TestConcurrentCrashWithWatchpointBreakpointSignal.ConcurrentCrashWithWatchpointBreakpointSignal.test +TestConcurrentDelaySignalWatch.ConcurrentDelaySignalWatch.test +TestConcurrentDelayWatchBreak.ConcurrentDelayWatchBreak.test +TestConcurrentDelayedCrashWithBreakpointWatchpoint.ConcurrentDelayedCrashWithBreakpointWatchpoint.test +TestConcurrentNWatchNBreak.ConcurrentNWatchNBreak.test +TestConcurrentSignalDelayWatch.ConcurrentSignalDelayWatch.test +TestConcurrentSignalNWatchNBreak.ConcurrentSignalNWatchNBreak.test +TestConcurrentSignalWatch.ConcurrentSignalWatch.test +TestConcurrentSignalWatchBreak.ConcurrentSignalWatchBreak.test +TestConcurrentTwoBreakpointsOneSignal.ConcurrentTwoBreakpointsOneSignal.test +TestConcurrentTwoBreakpointsOneWatchpoint.ConcurrentTwoBreakpointsOneWatchpoint.test +TestConcurrentTwoWatchpointThreads.ConcurrentTwoWatchpointThreads.test +TestConcurrentTwoWatchpointsOneBreakpoint.ConcurrentTwoWatchpointsOneBreakpoint.test +TestConcurrentTwoWatchpointsOneDelayBreakpoint.ConcurrentTwoWatchpointsOneDelayBreakpoint.test +TestConcurrentTwoWatchpointsOneSignal.ConcurrentTwoWatchpointsOneSignal.test +TestConcurrentWatchBreak.ConcurrentWatchBreak.test +TestConcurrentWatchBreakDelay.ConcurrentWatchBreakDelay.test +TestConcurrentWatchpointDelayWatchpointOneBreakpoint.ConcurrentWatchpointDelayWatchpointOneBreakpoint.test +TestConcurrentWatchpointWithDelayWatchpointThreads.ConcurrentWatchpointWithDelayWatchpointThreads.test +TestContainerCommands.TestCmdContainer.test_container_add +TestDataFormatterCaching.TestDataFormatterCaching.test_with_run_command_dwarf +TestDataFormatterCaching.TestDataFormatterCaching.test_with_run_command_dwo +TestDataFormatterPythonSynth.PythonSynthDataFormatterTestCase.test_with_run_command_dwarf +TestDataFormatterPythonSynth.PythonSynthDataFormatterTestCase.test_with_run_command_dwo +TestDataFormatterSynthType.DataFormatterSynthTypeTestCase.test_with_run_command_dwarf +TestDataFormatterSynthType.DataFormatterSynthTypeTestCase.test_with_run_command_dwo +TestDataFormatterSynthVal.DataFormatterSynthValueTestCase.test_with_run_command_dwarf +TestDataFormatterSynthVal.DataFormatterSynthValueTestCase.test_with_run_command_dwo +TestDebuggerAPI.DebuggerAPITestCase.test_CreateTarget_platform +TestDetachResumes.DetachResumesTestCase.test_detach_resumes +TestDyldExecLinux.TestLinux64ExecViaDynamicLoader.test_with_svr4 +TestDyldExecLinux.TestLinux64ExecViaDynamicLoader.test_without_svr4 +TestDyldLaunchLinux.TestLinux64LaunchingViaDynamicLoader.test +TestExec.ExecTestCase.test_correct_thread_plan_state_before_exec +TestExec.ExecTestCase.test_hitting_exec +TestExec.ExecTestCase.test_skipping_exec +TestFixIts.ExprCommandWithFixits.test_with_dummy_target_dwarf +TestFixIts.ExprCommandWithFixits.test_with_dummy_target_dwo +TestFrames.FrameAPITestCase.test_get_arg_vals_for_call_stack_dwarf +TestFrames.FrameAPITestCase.test_get_arg_vals_for_call_stack_dwo +TestGdbRemoteAttachWait.TestGdbRemoteAttachWait.test_attach_with_vAttachWait_llgs +TestGdbRemoteAttachWait.TestGdbRemoteAttachWait.test_launch_after_attach_with_vAttachOrWait_llgs +TestGdbRemoteAttachWait.TestGdbRemoteAttachWait.test_launch_before_attach_with_vAttachOrWait_llgs +TestGdbRemoteExpeditedRegisters.TestGdbRemoteExpeditedRegisters.test_stop_notification_contains_vg_register_llgs +TestGdbRemoteMemoryAllocation.TestGdbRemoteMemoryAllocation.test_bad_packet_llgs +TestGdbRemoteModuleInfo.TestGdbRemoteModuleInfo.test_module_info_llgs +TestGdbRemoteTargetXmlPacket.TestGdbRemoteTargetXmlPacket.test_g_target_xml_returns_correct_data_llgs +TestGdbRemoteThreadsInStopReply.TestGdbRemoteThreadsInStopReply.test_stop_reply_contains_thread_pcs_llgs +TestHelloWorld.HelloWorldTestCase.test_with_attach_to_process_with_id_api +TestHelloWorld.HelloWorldTestCase.test_with_attach_to_process_with_name_api +TestInferiorCrashing.CrashingInferiorTestCase.test_inferior_crashing_dwarf +TestInferiorCrashing.CrashingInferiorTestCase.test_inferior_crashing_dwo +TestLldbGdbServer.LldbGdbServerTestCase.test_Hg_fails_on_another_pid_llgs +TestLldbGdbServer.LldbGdbServerTestCase.test_Hg_fails_on_minus_one_pid_llgs +TestLldbGdbServer.LldbGdbServerTestCase.test_Hg_fails_on_zero_pid_llgs +TestLldbGdbServer.LldbGdbServerTestCase.test_Hg_switches_to_3_threads_launch_llgs +TestLldbGdbServer.LldbGdbServerTestCase.test_attach_commandline_continue_app_exits_llgs +TestLldbGdbServer.LldbGdbServerTestCase.test_hardware_breakpoint_set_and_remove_work_llgs +TestLldbGdbServer.LldbGdbServerTestCase.test_qSupported_fork_events_llgs +TestLldbGdbServer.LldbGdbServerTestCase.test_qSupported_siginfo_read_llgs +TestLldbGdbServer.LldbGdbServerTestCase.test_qSupported_vfork_events_llgs +TestLldbGdbServer.LldbGdbServerTestCase.test_qXfer_siginfo_read_llgs +TestLoadUnload.LoadUnloadTestCase.test_static_init_during_load +TestMachCore.MachCoreTestCase.test_selected_thread +TestMainThreadExit.ThreadExitTestCase.test +TestMembersAndLocalsWithSameName.TestMembersAndLocalsWithSameName.test_when_stopped_in_function_dwarf +TestMembersAndLocalsWithSameName.TestMembersAndLocalsWithSameName.test_when_stopped_in_function_dwo +TestMemoryHoles.MemoryHolesTestCase.test_memory_find +TestModifyWatchpoint.ModifyWatchpointTestCase.test_modify_watchpoint +TestModuleCacheSimple.ModuleCacheTestcaseSimple.test +TestModuleCacheUniversal.ModuleCacheTestcaseUniversal.test +TestMyFirstWatchpoint.HelloWatchpointTestCase.test_hello_watchpoint_using_watchpoint_set +TestNonStop.LldbGdbServerTestCase.test_exit_llgs +TestNonStop.LldbGdbServerTestCase.test_exit_query_llgs +TestNonStop.LldbGdbServerTestCase.test_leave_nonstop_llgs +TestNonStop.LldbGdbServerTestCase.test_multiple_C_continue_with_signal_llgs +TestNonStop.LldbGdbServerTestCase.test_multiple_c_continue_with_addr_llgs +TestNonStop.LldbGdbServerTestCase.test_multiple_s_single_step_with_addr_llgs +TestNonStop.LldbGdbServerTestCase.test_multiple_vCont_llgs +TestNonStop.LldbGdbServerTestCase.test_run_llgs +TestNonStop.LldbGdbServerTestCase.test_stdio_llgs +TestNonStop.LldbGdbServerTestCase.test_stop_reason_while_running_llgs +TestNonStop.LldbGdbServerTestCase.test_vCont_then_partial_stop_llgs +TestNonStop.LldbGdbServerTestCase.test_vCont_then_partial_stop_run_both_llgs +TestNonStop.LldbGdbServerTestCase.test_vCont_then_stop_llgs +TestNonStop.LldbGdbServerTestCase.test_vCtrlC_llgs +TestOSPluginStepping.TestOSPluginStepping.test_python_os_plugin +TestOSPluginStepping.TestOSPluginStepping.test_python_os_plugin_prune +TestPythonOSPlugin.PluginPythonOSPlugin.test_python_os_plugin +TestRegisters.RegisterCommandsTestCase.test_info_register +TestRegisters.RegisterCommandsTestCase.test_register_read_fields +TestRegistersIterator.RegistersIteratorTestCase.test_iter_registers_dwarf +TestRegistersIterator.RegistersIteratorTestCase.test_iter_registers_dwo +TestReturnValue.ReturnValueTestCase.test_vector_values_dwarf +TestReturnValue.ReturnValueTestCase.test_vector_values_dwo +TestReturnValue.ReturnValueTestCase.test_with_python_dwarf +TestReturnValue.ReturnValueTestCase.test_with_python_dwo +TestSVERegisters.RegisterCommandsTestCase.test_registers_expr_read_write_sve_sve +TestSVERegisters.RegisterCommandsTestCase.test_sve_registers_configuration +TestSVESIMDRegisters.SVESIMDRegistersTestCase.test_simd_registers_simd +TestSVESIMDRegisters.SVESIMDRegistersTestCase.test_simd_registers_sve +TestSVEThreadedDynamic.RegisterCommandsTestCase.test_sve_registers_dynamic_config +TestScriptedResolver.TestScriptedResolver.test_command_line +TestScriptedResolver.TestScriptedResolver.test_scripted_resolver +TestScriptedResolver.TestScriptedResolver.test_search_depths +TestSendSignal.SendSignalTestCase.test_with_run_command_dwarf +TestSendSignal.SendSignalTestCase.test_with_run_command_dwo +TestSetWatchlocation.SetWatchlocationAPITestCase.test_watch_location +TestSetWatchpoint.SetWatchpointAPITestCase.test_watch_val +TestSetWatchpoint.SetWatchpointAPITestCase.test_watch_variable +TestSettings.SettingsCommandTestCase.test_launchsimple_args_and_env_vars +TestSettings.SettingsCommandTestCase.test_run_args_and_env_vars +TestStepAndBreakpoints.TestCStepping.test_and_python_api_dwarf +TestStepAndBreakpoints.TestCStepping.test_and_python_api_dwo +TestStepOverWatchpoint.TestStepOverWatchpoint.test_step_over_read_watchpoint +TestStepOverWatchpoint.TestStepOverWatchpoint.test_step_over_write_watchpoint +TestSyntheticCapping.SyntheticCappingTestCase.test_with_run_command_dwarf +TestTargetWatchAddress.TargetWatchpointCreateByAddressPITestCase.test_watch_address +TestTargetWatchAddress.TargetWatchpointCreateByAddressPITestCase.test_watch_address_with_invalid_watch_size +TestThreadJump.ThreadJumpTestCase.test_dwarf +TestThreadJump.ThreadJumpTestCase.test_dwo +TestThreadSelectionBug.TestThreadSelectionBug.test +TestUnalignedLargeWatchpoint.UnalignedLargeWatchpointTestCase.test_unaligned_large_watchpoint +TestValueOfVectorVariable.TestValueOfVectorVariableTestCase.test_value_of_vector_variable_using_watchpoint_set +TestVectorTypesFormatting.VectorTypesFormattingTestCase.test_with_run_command_dwarf +TestVectorTypesFormatting.VectorTypesFormattingTestCase.test_with_run_command_dwo +TestWatchLocation.HelloWatchLocationTestCase.test_hello_watchlocation +TestWatchTaggedAddress.TestWatchTaggedAddresses.test_watch_hit_tagged_ptr_access +TestWatchTaggedAddress.TestWatchTaggedAddresses.test_watch_set_on_tagged_ptr +TestWatchpointCommandLLDB.WatchpointLLDBCommandTestCase.test_watchpoint_command +TestWatchpointCommandLLDB.WatchpointLLDBCommandTestCase.test_watchpoint_command_can_disable_a_watchpoint +TestWatchpointCommandPython.WatchpointPythonCommandTestCase.test_continue_in_watchpoint_command +TestWatchpointCommandPython.WatchpointPythonCommandTestCase.test_watchpoint_command +TestWatchpointCommands.WatchpointCommandsTestCase.test_rw_disable_after_first_stop +TestWatchpointCommands.WatchpointCommandsTestCase.test_rw_disable_then_enable +TestWatchpointCommands.WatchpointCommandsTestCase.test_rw_watchpoint +TestWatchpointCommands.WatchpointCommandsTestCase.test_rw_watchpoint_delete +TestWatchpointCommands.WatchpointCommandsTestCase.test_rw_watchpoint_set_ignore_count +TestWatchpointConditionAPI.WatchpointConditionAPITestCase.test_watchpoint_cond_api +TestWatchpointConditionCmd.WatchpointConditionCmdTestCase.test_watchpoint_cond +TestWatchpointDisable.TestWatchpointSetEnable.test_disable_enable_works +TestWatchpointDisable.TestWatchpointSetEnable.test_disable_works +TestWatchpointEvents.TestWatchpointEvents.test_with_python_api +TestWatchpointIgnoreCount.WatchpointIgnoreCountTestCase.test_set_watch_ignore_count +TestWatchpointIter.WatchpointIteratorTestCase.test_watch_iter +TestWatchpointMultipleSlots.WatchpointSlotsTestCase.test_multiple_watchpoints_on_same_word +TestWatchpointMultipleThreads.WatchpointForMultipleThreadsTestCase.test_watchpoint_after_thread_launch +TestWatchpointMultipleThreads.WatchpointForMultipleThreadsTestCase.test_watchpoint_after_thread_start +TestWatchpointMultipleThreads.WatchpointForMultipleThreadsTestCase.test_watchpoint_before_thread_start +TestWatchpointMultipleThreads.WatchpointForMultipleThreadsTestCase.test_watchpoint_multiple_threads_wp_set_and_then_delete +TestWatchpointSizes.WatchpointSizeTestCase.test_byte_size_watchpoints_with_byte_selection +TestWatchpointSizes.WatchpointSizeTestCase.test_four_byte_watchpoints_with_dword_selection +TestWatchpointSizes.WatchpointSizeTestCase.test_two_byte_watchpoints_with_word_selection diff --git a/Support/Testing/Excluded/upstream/linux-aarch64.excluded b/Support/Testing/Excluded/upstream/linux-aarch64.excluded new file mode 100644 index 00000000..e69de29b