From 101d251d5caf88a9341f3045ab62e122abae1b90 Mon Sep 17 00:00:00 2001 From: robert Date: Sat, 11 Nov 2023 18:24:39 +0000 Subject: [PATCH] merge lldb-16.0.6 --- gnu/llvm/lldb/cmake/modules/FindLibEdit.cmake | 64 - gnu/llvm/lldb/docs/design/reproducers.rst | 205 -- gnu/llvm/lldb/docs/man/lldb.rst | 6 +- .../lldb/docs/testsuite/best-practices.txt | 93 - gnu/llvm/lldb/docs/use/links.md | 56 - .../scripted_process/my_scripted_process.py | 45 - .../lldb/include/lldb/Host/StringConvert.h | 38 - .../lldb/Host/openbsd/HostInfoOpenBSD.h | 4 +- gnu/llvm/lldb/include/lldb/Host/posix/Fcntl.h | 24 - .../lldb/Target/TraceInstructionDumper.h | 77 - gnu/llvm/lldb/include/lldb/Utility/ArchSpec.h | 60 +- gnu/llvm/lldb/include/lldb/Utility/Logging.h | 65 - .../lldb/include/lldb/Utility/Reproducer.h | 252 -- .../lldb/Utility/ReproducerInstrumentation.h | 1111 ------ .../include/lldb/Utility/ReproducerProvider.h | 435 --- .../include/lldb/Utility/StreamCallback.h | 35 - .../lldb/include/lldb/lldb-private-defines.h | 36 - .../packages/Python/lldbconfig/__init__.py | 1 - .../lldb/source/API/SBReproducerPrivate.h | 78 - .../lldb/source/API/liblldb.xcode.exports | 3 - .../Commands/CommandObjectReproducer.cpp | 722 ---- .../source/Commands/CommandObjectReproducer.h | 27 - gnu/llvm/lldb/source/Core/FormatEntity.cpp | 242 +- gnu/llvm/lldb/source/Host/common/MainLoop.cpp | 424 --- .../lldb/source/Host/common/StringConvert.cpp | 95 - .../source/Host/openbsd/HostInfoOpenBSD.cpp | 30 +- .../lldb/source/Host/posix/DomainSocket.cpp | 57 +- gnu/llvm/lldb/source/Host/posix/PipePosix.cpp | 9 +- gnu/llvm/lldb/source/Host/windows/Windows.cpp | 117 - .../SystemInitializerCommon.cpp | 75 +- .../Plugins/ABI/AArch64/ABISysV_arm64.cpp | 70 +- .../POSIX-DYLD/DYLDRendezvous.cpp | 120 +- .../POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp | 174 +- .../Language/CPlusPlus/LibCxxBitset.cpp | 120 - .../Language/CPlusPlus/LibCxxOptional.cpp | 84 - .../Plugins/ObjectFile/ELF/ObjectFileELF.cpp | 688 ++-- .../Platform/OpenBSD/PlatformOpenBSD.cpp | 196 +- .../Platform/OpenBSD/PlatformOpenBSD.h | 21 +- .../source/Plugins/Process/CMakeLists.txt | 1 + .../Plugins/Process/Linux/IntelPTManager.cpp | 685 ---- .../Plugins/Process/Linux/IntelPTManager.h | 263 -- .../Process/OpenBSD/NativeProcessOpenBSD.cpp | 20 +- .../NativeRegisterContextOpenBSD_arm64.cpp | 14 +- .../NativeRegisterContextOpenBSD_arm64.h | 2 +- .../NativeRegisterContextOpenBSD_x86_64.cpp | 4 +- .../NativeRegisterContextOpenBSD_x86_64.h | 2 +- .../Process/OpenBSD/NativeThreadOpenBSD.cpp | 12 +- .../Plugins/Process/Utility/CMakeLists.txt | 6 +- .../Process/Utility/DynamicRegisterInfo.cpp | 811 ----- .../Process/Utility/DynamicRegisterInfo.h | 102 - .../GDBRemoteCommunicationReplayServer.cpp | 314 -- .../GDBRemoteCommunicationReplayServer.h | 88 - .../GDBRemoteCommunicationServerCommon.cpp | 178 +- .../Python/SWIGPythonBridge.cpp | 48 - .../Trace/common/TraceSessionFileParser.cpp | 224 -- .../Trace/common/TraceSessionFileParser.h | 179 - .../Plugins/Trace/intel-pt/IntelPTDecoder.cpp | 279 -- .../Plugins/Trace/intel-pt/IntelPTDecoder.h | 87 - .../TraceIntelPTSessionFileParser.cpp | 107 - .../intel-pt/TraceIntelPTSessionFileParser.h | 88 - .../x86/x86AssemblyInspectionEngine.cpp | 24 +- .../source/Target/TraceInstructionDumper.cpp | 292 -- gnu/llvm/lldb/source/Target/UnixSignals.cpp | 62 +- gnu/llvm/lldb/source/Utility/ArchSpec.cpp | 139 +- gnu/llvm/lldb/source/Utility/Logging.cpp | 64 - gnu/llvm/lldb/source/Utility/Reproducer.cpp | 402 --- .../Utility/ReproducerInstrumentation.cpp | 253 -- .../source/Utility/ReproducerProvider.cpp | 221 -- .../lldb/source/Utility/StreamCallback.cpp | 22 - gnu/llvm/lldb/source/lldb.cpp | 77 - .../third_party/Python/module/six/LICENSE | 18 - .../lldb/third_party/Python/module/six/six.py | 887 ----- gnu/llvm/lldb/tools/CMakeLists.txt | 1 + .../lldb/tools/argdumper/argdumper.exports | 0 gnu/llvm/lldb/tools/driver/Driver.cpp | 268 +- .../lldb/tools/lldb-server/CMakeLists.txt | 4 +- .../lldb/tools/lldb-server/lldb-gdbserver.cpp | 184 +- .../tools/lldb-server/lldb-server.exports | 0 gnu/llvm/lldb/unittests/API/CMakeLists.txt | 11 - .../API/SBCommandInterpreterTest.cpp | 138 - .../unittests/API/SBStructuredDataTest.cpp | 35 - .../unittests/Breakpoint/BreakpointIDTest.cpp | 29 - .../lldb/unittests/Breakpoint/CMakeLists.txt | 9 - gnu/llvm/lldb/unittests/CMakeLists.txt | 100 - gnu/llvm/lldb/unittests/Core/CMakeLists.txt | 25 - .../lldb/unittests/Core/CommunicationTest.cpp | 37 - .../unittests/Core/DumpDataExtractorTest.cpp | 387 -- .../lldb/unittests/Core/FormatEntityTest.cpp | 159 - gnu/llvm/lldb/unittests/Core/MangledTest.cpp | 266 -- .../lldb/unittests/Core/ModuleSpecTest.cpp | 166 - .../Core/RichManglingContextTest.cpp | 139 - .../unittests/Core/SourceLocationSpecTest.cpp | 183 - .../lldb/unittests/Core/SourceManagerTest.cpp | 48 - .../unittests/Core/StreamCallbackTest.cpp | 27 - .../unittests/Core/UniqueCStringMapTest.cpp | 53 - .../unittests/DataFormatter/CMakeLists.txt | 15 - .../DataFormatter/FormatManagerTests.cpp | 36 - .../DataFormatter/FormattersContainerTest.cpp | 159 - .../DataFormatter/StringPrinterTests.cpp | 150 - .../unittests/Disassembler/CMakeLists.txt | 14 - .../Disassembler/TestArm64Disassembly.cpp | 79 - .../Disassembler/TestArmv7Disassembly.cpp | 91 - .../lldb/unittests/Editline/CMakeLists.txt | 8 - .../lldb/unittests/Editline/EditlineTest.cpp | 312 -- .../lldb/unittests/Expression/CMakeLists.txt | 18 - .../Expression/ClangExpressionDeclMapTest.cpp | 123 - .../unittests/Expression/ClangParserTest.cpp | 91 - .../Expression/CppModuleConfigurationTest.cpp | 263 -- .../Expression/DWARFExpressionTest.cpp | 369 -- .../Expression/DiagnosticManagerTest.cpp | 210 -- gnu/llvm/lldb/unittests/Host/CMakeLists.txt | 30 - .../Host/ConnectionFileDescriptorTest.cpp | 50 - .../lldb/unittests/Host/FileActionTest.cpp | 19 - .../lldb/unittests/Host/FileSystemTest.cpp | 331 -- gnu/llvm/lldb/unittests/Host/FileTest.cpp | 57 - gnu/llvm/lldb/unittests/Host/HostInfoTest.cpp | 75 - gnu/llvm/lldb/unittests/Host/HostTest.cpp | 27 - gnu/llvm/lldb/unittests/Host/MainLoopTest.cpp | 200 -- .../Host/NativeProcessProtocolTest.cpp | 149 - gnu/llvm/lldb/unittests/Host/PipeTest.cpp | 51 - .../unittests/Host/ProcessLaunchInfoTest.cpp | 27 - .../lldb/unittests/Host/SocketAddressTest.cpp | 83 - gnu/llvm/lldb/unittests/Host/SocketTest.cpp | 239 -- .../unittests/Host/SocketTestUtilities.cpp | 128 - .../lldb/unittests/Host/SocketTestUtilities.h | 47 - .../lldb/unittests/Host/linux/HostTest.cpp | 58 - .../lldb/unittests/Host/linux/SupportTest.cpp | 25 - .../lldb/unittests/Instruction/CMakeLists.txt | 12 - .../Instruction/TestAArch64Emulator.cpp | 62 - .../lldb/unittests/Interpreter/CMakeLists.txt | 10 - .../unittests/Interpreter/TestCompletion.cpp | 272 -- .../Interpreter/TestOptionArgParser.cpp | 120 - .../unittests/Interpreter/TestOptionValue.cpp | 175 - .../TestOptionValueFileColonLine.cpp | 58 - .../Language/CLanguages/CLanguagesTest.cpp | 46 - .../Language/CLanguages/CMakeLists.txt | 8 - .../lldb/unittests/Language/CMakeLists.txt | 3 - .../Language/CPlusPlus/CMakeLists.txt | 6 - .../CPlusPlus/CPlusPlusLanguageTest.cpp | 216 -- .../Language/Highlighting/CMakeLists.txt | 8 - .../Language/Highlighting/HighlighterTest.cpp | 318 -- .../Breakpad/BreakpadRecordsTest.cpp | 153 - .../ObjectFile/Breakpad/CMakeLists.txt | 6 - .../lldb/unittests/ObjectFile/CMakeLists.txt | 4 - .../unittests/ObjectFile/ELF/CMakeLists.txt | 15 - .../ObjectFile/ELF/TestObjectFileELF.cpp | 278 -- .../unittests/ObjectFile/MachO/CMakeLists.txt | 10 - .../ObjectFile/MachO/TestObjectFileMachO.cpp | 79 - .../ObjectFile/PECOFF/CMakeLists.txt | 8 - .../ObjectFile/PECOFF/TestPECallFrameInfo.cpp | 328 -- .../Platform/Android/AdbClientTest.cpp | 51 - .../unittests/Platform/Android/CMakeLists.txt | 8 - .../lldb/unittests/Platform/CMakeLists.txt | 11 - .../Platform/PlatformAppleSimulatorTest.cpp | 71 - .../unittests/Platform/PlatformDarwinTest.cpp | 68 - .../lldb/unittests/Process/CMakeLists.txt | 21 - .../unittests/Process/Linux/CMakeLists.txt | 9 - .../Process/Linux/IntelPTManagerTests.cpp | 147 - .../unittests/Process/POSIX/CMakeLists.txt | 9 - .../Process/POSIX/NativeProcessELFTest.cpp | 155 - .../Process/ProcessEventDataTest.cpp | 252 -- .../unittests/Process/Utility/CMakeLists.txt | 25 - .../Process/Utility/LinuxProcMapsTest.cpp | 262 -- .../MemoryTagManagerAArch64MTETest.cpp | 322 -- .../Utility/RegisterContextFreeBSDTest.cpp | 553 --- .../RegisterContextNetBSDTest_i386.cpp | 118 - .../RegisterContextNetBSDTest_x86_64.cpp | 139 - .../Process/Utility/RegisterContextTest.cpp | 73 - .../Process/gdb-remote/CMakeLists.txt | 20 - .../gdb-remote/GDBRemoteClientBaseTest.cpp | 363 -- .../GDBRemoteCommunicationClientTest.cpp | 593 ---- .../GDBRemoteCommunicationServerTest.cpp | 72 - .../gdb-remote/GDBRemoteCommunicationTest.cpp | 67 - .../Process/gdb-remote/GDBRemoteTestUtils.cpp | 23 - .../Process/gdb-remote/GDBRemoteTestUtils.h | 91 - .../Process/gdb-remote/PortMapTest.cpp | 115 - .../unittests/Process/minidump/CMakeLists.txt | 25 - .../minidump/Inputs/fizzbuzz_no_heap.dmp | Bin 6297 -> 0 bytes .../minidump/Inputs/fizzbuzz_wow64.dmp | Bin 9280561 -> 0 bytes .../Process/minidump/Inputs/linux-x86_64.cpp | 28 - .../Process/minidump/Inputs/linux-x86_64.dmp | Bin 38320 -> 0 bytes .../minidump/Inputs/regions-memlist64.dmp | Bin 260 -> 0 bytes .../Process/minidump/MinidumpParserTest.cpp | 910 ----- .../minidump/RegisterContextMinidumpTest.cpp | 201 -- .../ScriptInterpreter/CMakeLists.txt | 6 - .../ScriptInterpreter/Lua/CMakeLists.txt | 12 - .../ScriptInterpreter/Lua/LuaTests.cpp | 56 - .../Lua/ScriptInterpreterTests.cpp | 56 - .../ScriptInterpreter/Python/CMakeLists.txt | 15 - .../Python/PythonDataObjectsTests.cpp | 861 ----- .../Python/PythonTestSuite.cpp | 286 -- .../Python/PythonTestSuite.h | 21 - .../lldb/unittests/Signals/CMakeLists.txt | 6 - .../unittests/Signals/UnixSignalsTest.cpp | 139 - gnu/llvm/lldb/unittests/Symbol/CMakeLists.txt | 26 - .../Symbol/Inputs/inlined-functions.yaml | 929 ----- .../unittests/Symbol/LocateSymbolFileTest.cpp | 48 - .../Symbol/PostfixExpressionTest.cpp | 194 - .../unittests/Symbol/TestClangASTImporter.cpp | 258 -- .../Symbol/TestDWARFCallFrameInfo.cpp | 257 -- .../lldb/unittests/Symbol/TestLineEntry.cpp | 208 -- gnu/llvm/lldb/unittests/Symbol/TestType.cpp | 94 - .../lldb/unittests/Symbol/TestTypeSystem.cpp | 92 - .../unittests/Symbol/TestTypeSystemClang.cpp | 936 ----- .../lldb/unittests/SymbolFile/CMakeLists.txt | 5 - .../unittests/SymbolFile/DWARF/CMakeLists.txt | 27 - .../DWARF/DWARFASTParserClangTests.cpp | 118 - .../SymbolFile/DWARF/DWARFDIETest.cpp | 105 - .../SymbolFile/DWARF/DWARFUnitTest.cpp | 86 - .../SymbolFile/DWARF/Inputs/test-dwarf.cpp | 6 - .../SymbolFile/DWARF/SymbolFileDWARFTests.cpp | 531 --- .../SymbolFile/DWARF/XcodeSDKModuleTests.cpp | 75 - .../SymbolFile/NativePDB/CMakeLists.txt | 13 - .../PdbFPOProgramToDWARFExpressionTests.cpp | 131 - .../unittests/SymbolFile/PDB/CMakeLists.txt | 25 - .../SymbolFile/PDB/Inputs/test-pdb-alt.cpp | 7 - .../SymbolFile/PDB/Inputs/test-pdb-nested.h | 6 - .../SymbolFile/PDB/Inputs/test-pdb-types.cpp | 79 - .../SymbolFile/PDB/Inputs/test-pdb-types.pdb | Bin 102400 -> 0 bytes .../SymbolFile/PDB/Inputs/test-pdb.cpp | 9 - .../SymbolFile/PDB/Inputs/test-pdb.h | 10 - .../SymbolFile/PDB/Inputs/test-pdb.pdb | Bin 110592 -> 0 bytes .../SymbolFile/PDB/SymbolFilePDBTests.cpp | 627 ---- gnu/llvm/lldb/unittests/Target/ABITest.cpp | 26 - gnu/llvm/lldb/unittests/Target/CMakeLists.txt | 24 - .../unittests/Target/ExecutionContextTest.cpp | 120 - .../lldb/unittests/Target/Inputs/TestModule.c | 9 - .../unittests/Target/MemoryRegionInfoTest.cpp | 19 - .../lldb/unittests/Target/ModuleCacheTest.cpp | 158 - .../unittests/Target/PathMappingListTest.cpp | 140 - .../Target/RemoteAwarePlatformTest.cpp | 94 - .../Target/StackFrameRecognizerTest.cpp | 81 - .../unittests/TestingSupport/CMakeLists.txt | 15 - .../Host/NativeProcessTestUtils.h | 156 - .../MockTildeExpressionResolver.cpp | 79 - .../MockTildeExpressionResolver.h | 36 - .../unittests/TestingSupport/SubsystemRAII.h | 90 - .../TestingSupport/Symbol/CMakeLists.txt | 17 - .../TestingSupport/Symbol/ClangTestUtils.h | 75 - .../Symbol/YAMLModuleTester.cpp | 26 - .../TestingSupport/Symbol/YAMLModuleTester.h | 43 - .../TestingSupport/TestUtilities.cpp | 46 - .../unittests/TestingSupport/TestUtilities.h | 56 - .../unittests/TestingSupport/module.modulemap | 17 - gnu/llvm/lldb/unittests/Thread/CMakeLists.txt | 15 - gnu/llvm/lldb/unittests/Thread/ThreadTest.cpp | 163 - .../UnwindAssembly/ARM64/CMakeLists.txt | 13 - .../ARM64/TestArm64InstEmulation.cpp | 857 ----- .../unittests/UnwindAssembly/CMakeLists.txt | 11 - .../UnwindAssembly/PPC64/CMakeLists.txt | 13 - .../PPC64/TestPPC64InstEmulation.cpp | 258 -- .../UnwindAssembly/x86/CMakeLists.txt | 10 - .../x86/Testx86AssemblyInspectionEngine.cpp | 3117 ----------------- .../unittests/Utility/AnsiTerminalTest.cpp | 54 - .../lldb/unittests/Utility/ArchSpecTest.cpp | 490 --- gnu/llvm/lldb/unittests/Utility/ArgsTest.cpp | 344 -- .../unittests/Utility/BroadcasterTest.cpp | 74 - .../lldb/unittests/Utility/CMakeLists.txt | 58 - .../Utility/CompletionRequestTest.cpp | 276 -- .../unittests/Utility/ConstStringTest.cpp | 159 - .../unittests/Utility/DataExtractorTest.cpp | 403 --- .../unittests/Utility/EnvironmentTest.cpp | 48 - gnu/llvm/lldb/unittests/Utility/EventTest.cpp | 24 - .../lldb/unittests/Utility/FileSpecTest.cpp | 447 --- gnu/llvm/lldb/unittests/Utility/FlagsTest.cpp | 163 - .../Utility/Inputs/StructuredData-basic.json | 1 - .../lldb/unittests/Utility/ListenerTest.cpp | 113 - gnu/llvm/lldb/unittests/Utility/LogTest.cpp | 313 -- .../unittests/Utility/NameMatchesTest.cpp | 57 - .../unittests/Utility/OptionsWithRawTest.cpp | 182 - .../lldb/unittests/Utility/PredicateTest.cpp | 33 - .../unittests/Utility/ProcessInfoTest.cpp | 19 - .../Utility/ProcessInstanceInfoTest.cpp | 167 - .../lldb/unittests/Utility/RangeMapTest.cpp | 162 - gnu/llvm/lldb/unittests/Utility/RangeTest.cpp | 328 -- .../unittests/Utility/RegisterValueTest.cpp | 55 - .../Utility/RegularExpressionTest.cpp | 65 - .../Utility/ReproducerInstrumentationTest.cpp | 1167 ------ .../lldb/unittests/Utility/ReproducerTest.cpp | 262 -- .../lldb/unittests/Utility/ScalarTest.cpp | 402 --- .../unittests/Utility/SharedClusterTest.cpp | 58 - gnu/llvm/lldb/unittests/Utility/StateTest.cpp | 30 - .../lldb/unittests/Utility/StatusTest.cpp | 96 - .../lldb/unittests/Utility/StreamTeeTest.cpp | 198 -- .../lldb/unittests/Utility/StreamTest.cpp | 696 ---- .../Utility/StringExtractorGDBRemoteTest.cpp | 185 - .../unittests/Utility/StringExtractorTest.cpp | 697 ---- .../unittests/Utility/StringLexerTest.cpp | 140 - .../lldb/unittests/Utility/StringListTest.cpp | 524 --- .../unittests/Utility/StructuredDataTest.cpp | 47 - .../unittests/Utility/SubsystemRAIITest.cpp | 99 - .../Utility/TildeExpressionResolverTest.cpp | 39 - .../lldb/unittests/Utility/TimeoutTest.cpp | 29 - gnu/llvm/lldb/unittests/Utility/TimerTest.cpp | 108 - gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp | 95 - .../lldb/unittests/Utility/UriParserTest.cpp | 175 - .../unittests/Utility/UserIDResolverTest.cpp | 47 - .../lldb/unittests/Utility/VASprintfTest.cpp | 66 - .../lldb/unittests/Utility/VMRangeTest.cpp | 151 - .../lldb/unittests/Utility/XcodeSDKTest.cpp | 241 -- .../lldb/unittests/debugserver/CMakeLists.txt | 42 - .../lldb/unittests/debugserver/JSONTest.cpp | 89 - .../unittests/debugserver/RNBSocketTest.cpp | 162 - .../debugserver/debugserver_LogCallback.cpp | 17 - gnu/llvm/lldb/unittests/gtest_common.h | 22 - gnu/llvm/lldb/unittests/tools/CMakeLists.txt | 3 - .../tools/lldb-server/CMakeLists.txt | 31 - .../inferior/environment_check.cpp | 19 - .../lldb-server/inferior/thread_inferior.cpp | 40 - .../tools/lldb-server/tests/CMakeLists.txt | 21 - .../tools/lldb-server/tests/LLGSTest.cpp | 77 - .../lldb-server/tests/MessageObjects.cpp | 375 -- .../tools/lldb-server/tests/MessageObjects.h | 186 - .../tools/lldb-server/tests/TestBase.cpp | 35 - .../tools/lldb-server/tests/TestBase.h | 59 - .../tools/lldb-server/tests/TestClient.cpp | 276 -- .../tools/lldb-server/tests/TestClient.h | 112 - .../tests/ThreadIdsInJstopinfoTest.cpp | 59 - 318 files changed, 1274 insertions(+), 46816 deletions(-) delete mode 100644 gnu/llvm/lldb/cmake/modules/FindLibEdit.cmake delete mode 100644 gnu/llvm/lldb/docs/design/reproducers.rst delete mode 100644 gnu/llvm/lldb/docs/testsuite/best-practices.txt delete mode 100644 gnu/llvm/lldb/docs/use/links.md delete mode 100644 gnu/llvm/lldb/examples/python/scripted_process/my_scripted_process.py delete mode 100644 gnu/llvm/lldb/include/lldb/Host/StringConvert.h delete mode 100644 gnu/llvm/lldb/include/lldb/Host/posix/Fcntl.h delete mode 100644 gnu/llvm/lldb/include/lldb/Target/TraceInstructionDumper.h delete mode 100644 gnu/llvm/lldb/include/lldb/Utility/Logging.h delete mode 100644 gnu/llvm/lldb/include/lldb/Utility/Reproducer.h delete mode 100644 gnu/llvm/lldb/include/lldb/Utility/ReproducerInstrumentation.h delete mode 100644 gnu/llvm/lldb/include/lldb/Utility/ReproducerProvider.h delete mode 100644 gnu/llvm/lldb/include/lldb/Utility/StreamCallback.h delete mode 100644 gnu/llvm/lldb/include/lldb/lldb-private-defines.h delete mode 100644 gnu/llvm/lldb/packages/Python/lldbconfig/__init__.py delete mode 100644 gnu/llvm/lldb/source/API/SBReproducerPrivate.h delete mode 100644 gnu/llvm/lldb/source/API/liblldb.xcode.exports delete mode 100644 gnu/llvm/lldb/source/Commands/CommandObjectReproducer.cpp delete mode 100644 gnu/llvm/lldb/source/Commands/CommandObjectReproducer.h delete mode 100644 gnu/llvm/lldb/source/Host/common/MainLoop.cpp delete mode 100644 gnu/llvm/lldb/source/Host/common/StringConvert.cpp delete mode 100644 gnu/llvm/lldb/source/Host/windows/Windows.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Language/CPlusPlus/LibCxxBitset.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Process/Linux/IntelPTManager.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Process/Linux/IntelPTManager.h delete mode 100644 gnu/llvm/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h delete mode 100644 gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.h delete mode 100644 gnu/llvm/lldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Trace/common/TraceSessionFileParser.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Trace/common/TraceSessionFileParser.h delete mode 100644 gnu/llvm/lldb/source/Plugins/Trace/intel-pt/IntelPTDecoder.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Trace/intel-pt/IntelPTDecoder.h delete mode 100644 gnu/llvm/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTSessionFileParser.cpp delete mode 100644 gnu/llvm/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTSessionFileParser.h delete mode 100644 gnu/llvm/lldb/source/Target/TraceInstructionDumper.cpp delete mode 100644 gnu/llvm/lldb/source/Utility/Logging.cpp delete mode 100644 gnu/llvm/lldb/source/Utility/Reproducer.cpp delete mode 100644 gnu/llvm/lldb/source/Utility/ReproducerInstrumentation.cpp delete mode 100644 gnu/llvm/lldb/source/Utility/ReproducerProvider.cpp delete mode 100644 gnu/llvm/lldb/source/Utility/StreamCallback.cpp delete mode 100644 gnu/llvm/lldb/source/lldb.cpp delete mode 100644 gnu/llvm/lldb/third_party/Python/module/six/LICENSE delete mode 100644 gnu/llvm/lldb/third_party/Python/module/six/six.py delete mode 100644 gnu/llvm/lldb/tools/argdumper/argdumper.exports delete mode 100644 gnu/llvm/lldb/tools/lldb-server/lldb-server.exports delete mode 100644 gnu/llvm/lldb/unittests/API/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/API/SBCommandInterpreterTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/API/SBStructuredDataTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Breakpoint/BreakpointIDTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Breakpoint/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Core/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Core/CommunicationTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Core/DumpDataExtractorTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Core/FormatEntityTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Core/MangledTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Core/ModuleSpecTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Core/RichManglingContextTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Core/SourceLocationSpecTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Core/SourceManagerTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Core/StreamCallbackTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/DataFormatter/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/DataFormatter/FormatManagerTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/DataFormatter/FormattersContainerTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/DataFormatter/StringPrinterTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/Disassembler/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Disassembler/TestArm64Disassembly.cpp delete mode 100644 gnu/llvm/lldb/unittests/Disassembler/TestArmv7Disassembly.cpp delete mode 100644 gnu/llvm/lldb/unittests/Editline/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Editline/EditlineTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Expression/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Expression/ClangExpressionDeclMapTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Expression/ClangParserTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Expression/CppModuleConfigurationTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Expression/DWARFExpressionTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Expression/DiagnosticManagerTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Host/ConnectionFileDescriptorTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/FileActionTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/FileSystemTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/FileTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/HostInfoTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/HostTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/MainLoopTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/NativeProcessProtocolTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/PipeTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/ProcessLaunchInfoTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/SocketAddressTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/SocketTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/SocketTestUtilities.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/SocketTestUtilities.h delete mode 100644 gnu/llvm/lldb/unittests/Host/linux/HostTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Host/linux/SupportTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Instruction/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Instruction/TestAArch64Emulator.cpp delete mode 100644 gnu/llvm/lldb/unittests/Interpreter/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Interpreter/TestCompletion.cpp delete mode 100644 gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp delete mode 100644 gnu/llvm/lldb/unittests/Interpreter/TestOptionValue.cpp delete mode 100644 gnu/llvm/lldb/unittests/Interpreter/TestOptionValueFileColonLine.cpp delete mode 100644 gnu/llvm/lldb/unittests/Language/CLanguages/CLanguagesTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Language/CLanguages/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Language/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Language/CPlusPlus/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Language/Highlighting/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Language/Highlighting/HighlighterTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/ObjectFile/Breakpad/BreakpadRecordsTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/ObjectFile/Breakpad/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/ObjectFile/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/ObjectFile/ELF/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/ObjectFile/ELF/TestObjectFileELF.cpp delete mode 100644 gnu/llvm/lldb/unittests/ObjectFile/MachO/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/ObjectFile/MachO/TestObjectFileMachO.cpp delete mode 100644 gnu/llvm/lldb/unittests/ObjectFile/PECOFF/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/ObjectFile/PECOFF/TestPECallFrameInfo.cpp delete mode 100644 gnu/llvm/lldb/unittests/Platform/Android/AdbClientTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Platform/Android/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Platform/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Platform/PlatformAppleSimulatorTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Platform/PlatformDarwinTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Process/Linux/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Process/Linux/IntelPTManagerTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/POSIX/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Process/POSIX/NativeProcessELFTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/ProcessEventDataTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/Utility/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Process/Utility/LinuxProcMapsTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/Utility/MemoryTagManagerAArch64MTETest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/Utility/RegisterContextFreeBSDTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/Utility/RegisterContextNetBSDTest_i386.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/Utility/RegisterContextNetBSDTest_x86_64.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/Utility/RegisterContextTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/gdb-remote/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteClientBaseTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteTestUtils.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteTestUtils.h delete mode 100644 gnu/llvm/lldb/unittests/Process/gdb-remote/PortMapTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/minidump/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Process/minidump/Inputs/fizzbuzz_no_heap.dmp delete mode 100644 gnu/llvm/lldb/unittests/Process/minidump/Inputs/fizzbuzz_wow64.dmp delete mode 100644 gnu/llvm/lldb/unittests/Process/minidump/Inputs/linux-x86_64.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/minidump/Inputs/linux-x86_64.dmp delete mode 100644 gnu/llvm/lldb/unittests/Process/minidump/Inputs/regions-memlist64.dmp delete mode 100644 gnu/llvm/lldb/unittests/Process/minidump/MinidumpParserTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Process/minidump/RegisterContextMinidumpTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/ScriptInterpreter/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/ScriptInterpreter/Lua/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/ScriptInterpreter/Lua/LuaTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/ScriptInterpreter/Lua/ScriptInterpreterTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/ScriptInterpreter/Python/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp delete mode 100644 gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.h delete mode 100644 gnu/llvm/lldb/unittests/Signals/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Signals/UnixSignalsTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Symbol/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Symbol/Inputs/inlined-functions.yaml delete mode 100644 gnu/llvm/lldb/unittests/Symbol/LocateSymbolFileTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Symbol/PostfixExpressionTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Symbol/TestClangASTImporter.cpp delete mode 100644 gnu/llvm/lldb/unittests/Symbol/TestDWARFCallFrameInfo.cpp delete mode 100644 gnu/llvm/lldb/unittests/Symbol/TestLineEntry.cpp delete mode 100644 gnu/llvm/lldb/unittests/Symbol/TestType.cpp delete mode 100644 gnu/llvm/lldb/unittests/Symbol/TestTypeSystem.cpp delete mode 100644 gnu/llvm/lldb/unittests/Symbol/TestTypeSystemClang.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/DWARF/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFDIETest.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFUnitTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/DWARF/Inputs/test-dwarf.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/DWARF/SymbolFileDWARFTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/DWARF/XcodeSDKModuleTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/NativePDB/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/PDB/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-alt.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-nested.h delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-types.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-types.pdb delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.cpp delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.h delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.pdb delete mode 100644 gnu/llvm/lldb/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp delete mode 100644 gnu/llvm/lldb/unittests/Target/ABITest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Target/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Target/ExecutionContextTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Target/Inputs/TestModule.c delete mode 100644 gnu/llvm/lldb/unittests/Target/MemoryRegionInfoTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Target/ModuleCacheTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Target/PathMappingListTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Target/RemoteAwarePlatformTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Target/StackFrameRecognizerTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/Host/NativeProcessTestUtils.h delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/MockTildeExpressionResolver.cpp delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/MockTildeExpressionResolver.h delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/SubsystemRAII.h delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/Symbol/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/Symbol/ClangTestUtils.h delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.cpp delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.h delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/TestUtilities.cpp delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/TestUtilities.h delete mode 100644 gnu/llvm/lldb/unittests/TestingSupport/module.modulemap delete mode 100644 gnu/llvm/lldb/unittests/Thread/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Thread/ThreadTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/UnwindAssembly/ARM64/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/UnwindAssembly/ARM64/TestArm64InstEmulation.cpp delete mode 100644 gnu/llvm/lldb/unittests/UnwindAssembly/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/UnwindAssembly/PPC64/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/UnwindAssembly/PPC64/TestPPC64InstEmulation.cpp delete mode 100644 gnu/llvm/lldb/unittests/UnwindAssembly/x86/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/UnwindAssembly/x86/Testx86AssemblyInspectionEngine.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/AnsiTerminalTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/ArchSpecTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/ArgsTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/BroadcasterTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/Utility/CompletionRequestTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/DataExtractorTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/EnvironmentTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/EventTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/FileSpecTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/FlagsTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/Inputs/StructuredData-basic.json delete mode 100644 gnu/llvm/lldb/unittests/Utility/ListenerTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/LogTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/NameMatchesTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/OptionsWithRawTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/PredicateTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/ProcessInfoTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/ProcessInstanceInfoTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/RangeMapTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/RangeTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/RegisterValueTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/RegularExpressionTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/ReproducerInstrumentationTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/ReproducerTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/ScalarTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/SharedClusterTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/StateTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/StatusTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/StreamTeeTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/StreamTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/StringExtractorTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/StringLexerTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/StringListTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/StructuredDataTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/SubsystemRAIITest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/TildeExpressionResolverTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/TimeoutTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/TimerTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/UriParserTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/UserIDResolverTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/VASprintfTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/VMRangeTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/Utility/XcodeSDKTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/debugserver/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/debugserver/JSONTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/debugserver/RNBSocketTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/debugserver/debugserver_LogCallback.cpp delete mode 100644 gnu/llvm/lldb/unittests/gtest_common.h delete mode 100644 gnu/llvm/lldb/unittests/tools/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/inferior/environment_check.cpp delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/inferior/thread_inferior.cpp delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/tests/CMakeLists.txt delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/tests/MessageObjects.cpp delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/tests/MessageObjects.h delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestBase.cpp delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestBase.h delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestClient.cpp delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestClient.h delete mode 100644 gnu/llvm/lldb/unittests/tools/lldb-server/tests/ThreadIdsInJstopinfoTest.cpp diff --git a/gnu/llvm/lldb/cmake/modules/FindLibEdit.cmake b/gnu/llvm/lldb/cmake/modules/FindLibEdit.cmake deleted file mode 100644 index b4f0cb32981..00000000000 --- a/gnu/llvm/lldb/cmake/modules/FindLibEdit.cmake +++ /dev/null @@ -1,64 +0,0 @@ -#.rst: -# FindLibEdit -# ----------- -# -# Find libedit library and headers -# -# The module defines the following variables: -# -# :: -# -# LibEdit_FOUND - true if libedit was found -# LibEdit_INCLUDE_DIRS - include search path -# LibEdit_LIBRARIES - libraries to link -# LibEdit_VERSION_STRING - version number - -if(LibEdit_INCLUDE_DIRS AND LibEdit_LIBRARIES) - set(LibEdit_FOUND TRUE) -else() - find_package(PkgConfig QUIET) - pkg_check_modules(PC_LIBEDIT QUIET libedit) - - find_path(LibEdit_INCLUDE_DIRS - NAMES - histedit.h - HINTS - ${PC_LIBEDIT_INCLUDEDIR} - ${PC_LIBEDIT_INCLUDE_DIRS} - ${CMAKE_INSTALL_FULL_INCLUDEDIR}) - find_library(LibEdit_LIBRARIES - NAMES - edit libedit - HINTS - ${PC_LIBEDIT_LIBDIR} - ${PC_LIBEDIT_LIBRARY_DIRS} - ${CMAKE_INSTALL_FULL_LIBDIR}) - - if(LibEdit_INCLUDE_DIRS AND EXISTS "${LibEdit_INCLUDE_DIRS}/histedit.h") - file(STRINGS "${LibEdit_INCLUDE_DIRS}/histedit.h" - libedit_major_version_str - REGEX "^#define[ \t]+LIBEDIT_MAJOR[ \t]+[0-9]+") - string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MAJOR[ \t]+([0-9]+)" "\\1" - LIBEDIT_MAJOR_VERSION "${libedit_major_version_str}") - - file(STRINGS "${LibEdit_INCLUDE_DIRS}/histedit.h" - libedit_minor_version_str - REGEX "^#define[ \t]+LIBEDIT_MINOR[ \t]+[0-9]+") - string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MINOR[ \t]+([0-9]+)" "\\1" - LIBEDIT_MINOR_VERSION "${libedit_minor_version_str}") - - set(LibEdit_VERSION_STRING "${libedit_major_version}.${libedit_minor_version}") - endif() - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(LibEdit - FOUND_VAR - LibEdit_FOUND - REQUIRED_VARS - LibEdit_INCLUDE_DIRS - LibEdit_LIBRARIES - VERSION_VAR - LibEdit_VERSION_STRING) - mark_as_advanced(LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES) -endif() - diff --git a/gnu/llvm/lldb/docs/design/reproducers.rst b/gnu/llvm/lldb/docs/design/reproducers.rst deleted file mode 100644 index 99e34d812de..00000000000 --- a/gnu/llvm/lldb/docs/design/reproducers.rst +++ /dev/null @@ -1,205 +0,0 @@ -Reproducers -=========== - -As unbelievable as it may sound, the debugger has bugs. These bugs might -manifest themselves as errors, missing results or even a crash. Quite often -these bugs don't reproduce in simple, isolated scenarios. The debugger deals -with a lot of moving parts and subtle differences can easily add up. - -Reproducers in LLDB improve the experience for both the users encountering bugs -and the developers working on resolving them. The general idea consists of -*capturing* all the information necessary to later *replay* a debug session -while debugging the debugger. - -.. contents:: - :local: - -Usage ------ - -Reproducers are a generic concept in LLDB and are not inherently coupled with -the command line driver. The functionality can be used for anything that uses -the SB API and the driver is just one example. However, because it's probably -the most common way users interact with lldb, that's the workflow described in -this section. - -Capture -``````` - -Until reproducer capture is enabled by default, you need to launch LLDB in -capture mode. For the command line driver, this means passing ``--capture``. -You cannot enable reproducer capture from within LLDB, as this would be too -late to capture initialization of the debugger. - -.. code-block:: bash - - > lldb --capture - -In capture mode, LLDB will keep track of all the information it needs to replay -the current debug session. Most data is captured lazily to limit the impact on -performance. To create the reproducer, use the ``reproducer generate`` -sub-command. It's always possible to check the status of the reproducers with -the ``reproducer status`` sub-command. Note that generating the reproducer -terminates the debug session. - -.. code-block:: none - - (lldb) reproducer status - Reproducer is in capture mode. - (lldb) reproducer generate - Reproducer written to '/path/to/reproducer' - Please have a look at the directory to assess if you're willing to share the contained information. - - -The resulting reproducer is a directory. It was a conscious decision to not -compress and archive it automatically. The reproducer can contain potentially -sensitive information like object and symbol files, their paths on disk, debug -information, memory excerpts of the inferior process, etc. - -Replay -`````` - -It is strongly recommended to replay the reproducer locally to ensure it -actually reproduces the expected behavior. If the reproducer doesn't behave -correctly locally, it means there's a bug in the reproducer implementation that -should be addressed. - -To replay a reproducer, simply pass its path to LLDB through the ``--replay`` -flag. It is unnecessary to pass any other command line flags. The flags that -were passed to LLDB during capture are already part of the reproducer. - -.. code-block:: bash - - > lldb --replay /path/to/reproducer - - -During replay LLDB will behave similar to batch mode. The session should be -identical to the recorded debug session. The only expected differences are that -the binary being debugged doesn't actually run during replay. That means that -you won't see any of its side effects, like things being printed to the -terminal. Another expected difference is the behavior of the ``reproducer -generate`` command, which becomes a NOOP during replay. - -Augmenting a Bug Report with a Reproducer -````````````````````````````````````````` - -A reproducer can significantly improve a bug report, but it in itself is not -sufficient. Always describe the expected and unexpected behavior. Just like the -debugger can have bugs, the reproducer can have bugs too. - - -Design ------- - - -Replay -`````` - -Reproducers support two replay modes. The main and most common mode is active -replay. It's called active, because it's LLDB that is driving replay by calling -the captured SB API functions one after each other. The second mode is passive -replay. In this mode, LLDB sits idle until an SB API function is called, for -example from Python, and then replays just this individual call. - -Active Replay -^^^^^^^^^^^^^ - -No matter how a reproducer was captured, they can always be replayed with the -command line driver. When a reproducer is passed with the ``--replay`` flag, the -driver short-circuits and passes off control to the reproducer infrastructure, -effectively bypassing its normal operation. This works because the driver is -implemented using the SB API and is therefore nothing more than a sequence of -SB API calls. - -Replay is driven by the ``Registry::Replay``. As long as there's data in the -buffer holding the API data, the next SB API function call is deserialized. -Once the function is known, the registry can retrieve its signature, and use -that to deserialize its arguments. The function can then be invoked, most -commonly through the synthesized default replayer, or potentially using a -custom defined replay function. This process continues, until more data is -available or a replay error is encountered. - -During replay only a function's side effects matter. The result returned by the -replayed function is ignored because it cannot be observed beyond the driver. -This is sound, because anything that is passed into a subsequent API call will -have been serialized as an input argument. This also works for SB API objects -because the reproducers know about every object that has crossed the API -boundary, which is true by definition for object return values. - - -Passive Replay -^^^^^^^^^^^^^^ - -Passive replay exists to support running the API test suite against a -reproducer. The API test suite is written in Python and tests the debugger by -calling into its API from Python. To make this work, the API must transparently -replay itself when called. This is what makes passive replay different from -driver replay, where it is lldb itself that's driving replay. For passive -replay, the driving factor is external. - -In order to replay API calls, the reproducers need a way to intercept them. -Every API call is already instrumented with an ``LLDB_RECORD_*`` macro that -captures its input arguments. Furthermore, it also contains the necessary logic -to detect which calls cross the API boundary and should be intercepted. We were -able to reuse all of this to implement passive replay. - -During passive replay is enabled, nothing happens until an SB API is called. -Inside that API function, the macro detects whether this call should be -replayed (i.e. crossed the API boundary). If the answer is yes, the next -function is deserialized from the SB API data and compared to the current -function. If the signature matches, we deserialize its input arguments and -reinvoke the current function with the deserialized arguments. We don't need to -do anything special to prevent us from recursively calling the replayed version -again, as the API boundary crossing logic knows that we're still behind the API -boundary when we re-invoked the current function. - -Another big difference with driver replay is the return value. While this -didn't matter for driver replay, it's key for passive replay, because that's -what gets checked by the test suite. Luckily, the ``LLDB_RECORD_*`` macros -contained sufficient type information to derive the result type. - -Testing -------- - -Reproducers are tested in the following ways: - - - Unit tests to cover the reproducer infrastructure. There are tests for the - provider, loader and for the reproducer instrumentation. - - Feature specific end-to-end test cases in the ``test/Shell/Reproducer`` - directory. These tests serve as integration and regression tests for the - reproducers infrastructure, as well as doing some sanity checking for basic - debugger functionality. - - The API and shell tests can be run against a replayed reproducer. The - ``check-lldb-reproducers`` target will run the API and shell test suite - twice: first running the test normally while capturing a reproducer and then - a second time using the replayed session as the test input. For the shell - tests this use a little shim (``lldb-repro``) that uses the arguments and - current working directory to transparently generate or replay a reproducer. - For the API tests an extra argument with the reproducer path is passed to - ``dotest.py`` which initializes the debugger in the appropriate mode. - Certain tests do not fit this paradigm (for example test that check the - output of the binary being debugged) and are skipped by marking them as - unsupported by adding ``UNSUPPORTED: lldb-repro`` to the top of the shell - test or adding the ``skipIfReproducer`` decorator for the API tests. - -Knows Issues ------------- - -The reproducers are still a work in progress. Here's a non-exhaustive list of -outstanding work, limitations and known issues. - - - The VFS cannot deal with more than one current working directory. Changing - the current working directory during the debug session will break relative - paths. - - Not all SB APIs are properly instrumented. We need customer serialization - for APIs that take buffers and lengths. - - We leak memory during replay because the reproducer doesn't capture the end - of an object's life time. We need to add instrumentation to the destructor - of SB API objects. - - The reproducer includes every file opened by LLDB. This is overkill. For - example we do not need to capture source files for code listings. There's - currently no way to say that some file shouldn't be included in the - reproducer. - - We do not yet automatically generate a reproducer on a crash. The reason is - that generating the reproducer is too expensive to do in a signal handler. - We should re-invoke lldb after a crash and do the heavy lifting. diff --git a/gnu/llvm/lldb/docs/man/lldb.rst b/gnu/llvm/lldb/docs/man/lldb.rst index b75288db380..10b143cd0de 100644 --- a/gnu/llvm/lldb/docs/man/lldb.rst +++ b/gnu/llvm/lldb/docs/man/lldb.rst @@ -111,7 +111,7 @@ COMMANDS .. option:: --source-quietly - Tells the debugger to execute this one-line lldb command before any file has been loaded. + Tells the debugger not to echo commands while sourcing files or one-line commands provided on the command line. .. option:: --source @@ -234,6 +234,10 @@ SCRIPTING Alias for --script-language +.. option:: --print-script-interpreter-info + + Prints out a json dictionary with information about the scripting language interpreter. + .. option:: --python-path Prints out the path to the lldb.py file for this version of lldb. diff --git a/gnu/llvm/lldb/docs/testsuite/best-practices.txt b/gnu/llvm/lldb/docs/testsuite/best-practices.txt deleted file mode 100644 index b5a9156fd52..00000000000 --- a/gnu/llvm/lldb/docs/testsuite/best-practices.txt +++ /dev/null @@ -1,93 +0,0 @@ -This document attempts to point out some best practices that prove to be helpful -when building new test cases in the tot/test directory. Everyone is welcomed to -add/modify contents into this file. - -o Do not use hard-coded line numbers in your test case. Instead, try to tag the - line with some distinguishing pattern, and use the function line_number() - defined in lldbtest.py which takes filename and string_to_match as arguments - and returns the line number. - -As an example, take a look at test/breakpoint_conditions/main.c which has these -two lines: - - return c(val); // Find the line number of c's parent call here. - -and - - return val + 3; // Find the line number of function "c" here. - -The Python test case TestBreakpointConditions.py uses the comment strings to -find the line numbers during setUp(self) and use them later on to verify that -the correct breakpoint is being stopped on and that its parent frame also has -the correct line number as intended through the breakpoint condition. - -o Take advantage of the unittest framework's decorator features to properly - mark your test class or method for platform-specific tests. - -As an example, take a look at test/forward/TestForwardDeclaration.py which has -these lines: - - @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") - def test_with_dsym_and_run_command(self): - """Display *bar_ptr when stopped on a function with forward declaration of struct bar.""" - self.buildDsym() - self.forward_declaration() - -This tells the test harness that unless we are running "darwin", the test should -be skipped. This is because we are asking to build the binaries with dsym debug -info, which is only available on the darwin platforms. - -o Cleanup after yourself. A classic example of this can be found in test/types/ - TestFloatTypes.py: - - def test_float_types_with_dsym(self): - """Test that float-type variables are displayed correctly.""" - d = {'CXX_SOURCES': 'float.cpp'} - self.buildDsym(dictionary=d) - self.setTearDownCleanup(dictionary=d) - self.float_type() - - ... - - def test_double_type_with_dsym(self): - """Test that double-type variables are displayed correctly.""" - d = {'CXX_SOURCES': 'double.cpp'} - self.buildDsym(dictionary=d) - self.setTearDownCleanup(dictionary=d) - self.double_type() - -This tests different data structures composed of float types to verify that what -the debugger prints out matches what the compiler does for different variables -of these types. We're using a dictionary to pass the build parameters to the -build system. After a particular test instance is done, it is a good idea to -clean up the files built. This eliminates the chance that some leftover files -can interfere with the build phase for the next test instance and render it -invalid. - -TestBase.setTearDownCleanup(self, dictionary) defined in lldbtest.py is created -to cope with this use case by taking the same build parameters in order to do -the cleanup when we are finished with a test instance, during -TestBase.tearDown(self). - -o Class-wise cleanup after yourself. - -TestBase.tearDownClass(cls) provides a mechanism to invoke the platform-specific -cleanup after finishing with a test class. A test class can have more than one -test methods, so the tearDownClass(cls) method gets run after all the test -methods have been executed by the test harness. - -The default cleanup action performed by the plugins/darwin.py module invokes the -"make clean" os command. - -If this default cleanup is not enough, individual class can provide an extra -cleanup hook with a class method named classCleanup , for example, -in test/breakpoint_command/TestBreakpointCommand.py: - - @classmethod - def classCleanup(cls): - system(["/bin/sh", "-c", "rm -f output.txt"]) - -The 'output.txt' file gets generated during the test run, so it makes sense to -explicitly spell out the action in the same TestBreakpointCommand.py file to do -the cleanup instead of artificially adding it as part of the default cleanup -action which serves to cleanup those intermediate and a.out files. diff --git a/gnu/llvm/lldb/docs/use/links.md b/gnu/llvm/lldb/docs/use/links.md deleted file mode 100644 index 8c125a26cb4..00000000000 --- a/gnu/llvm/lldb/docs/use/links.md +++ /dev/null @@ -1,56 +0,0 @@ -Links -===== - -This page contains links to external resources on how to use LLDB. Being listed -on this page is not an endorsement. - -## Blog Posts - -### [Dancing in the Debugger — A Waltz with LLDB (2014) ](https://www.objc.io/issues/19-debugging/lldb-debugging/) - -A high level overview of LLDB with a focus on debugging Objective-C code. - -## Videos - -### [LLDB: Beyond "po" (2019)](https://developer.apple.com/videos/play/wwdc2019/429/) - -LLDB is a powerful tool for exploring and debugging your app at runtime. -Discover the various ways to display values in your app, how to format custom -data types, and how to extend LLDB using your own Python 3 scripts. - -### [Advanced Debugging with Xcode and LLDB (2018)](https://developer.apple.com/videos/play/wwdc2018/412/) - -Discover advanced techniques, and tips and tricks for enhancing your Xcode -debugging workflows. Learn how to take advantage of LLDB and custom breakpoints -for more powerful debugging. Get the most out of Xcode's view debugging tools -to solve UI issues in your app more efficiently. - -### [Debugging with LLDB (2012)](https://developer.apple.com/videos/play/wwdc2012/415/) - -LLDB is the next-generation debugger for macOS and iOS. Get an introduction to -using LLDB via the console interface and within Xcode's graphical debugger. The -team that created LLDB will demonstrate the latest features and improvements, -helping you track down bugs more efficiently than ever before. - -### [Migrating from GDB to LLDB (2011)](https://developer.apple.com/videos/play/wwdc2011/321/) - -LLDB is the next-generation debugger for macOS and iOS. Discover why you'll -want to start using LLDB in your own development, get expert tips from the team -that created LLDB, and see how it will help you track down bugs more -efficiently than ever before. - -## Books - -### [Advanced Apple Debugging & Reverse Engineering (2018)](https://www.raywenderlich.com/books/advanced-apple-debugging-reverse-engineering/) - -A book about using LLDB on Apple platforms. - -## Extensions - -### [facebook/chisel](https://github.com/facebook/chisel) - -Chisel is a collection of LLDB commands to assist in the debugging of iOS apps. - -### [DerekSelander/LLDB](https://github.com/DerekSelander/LLDB) - -A collection of LLDB aliases/regexes and Python scripts. diff --git a/gnu/llvm/lldb/examples/python/scripted_process/my_scripted_process.py b/gnu/llvm/lldb/examples/python/scripted_process/my_scripted_process.py deleted file mode 100644 index 429531e80e1..00000000000 --- a/gnu/llvm/lldb/examples/python/scripted_process/my_scripted_process.py +++ /dev/null @@ -1,45 +0,0 @@ -import os - -import lldb -from lldb.plugins.scripted_process import ScriptedProcess - -class MyScriptedProcess(ScriptedProcess): - def __init__(self, target: lldb.SBTarget, args : lldb.SBStructuredData): - super().__init__(target, args) - - def get_memory_region_containing_address(self, addr: int) -> lldb.SBMemoryRegionInfo: - return self.memory_regions[0] - - def get_thread_with_id(self, tid: int): - return {} - - def get_registers_for_thread(self, tid: int): - return {} - - def read_memory_at_address(self, addr: int, size: int) -> lldb.SBData: - data = lldb.SBData().CreateDataFromCString( - self.target.GetByteOrder(), - self.target.GetCodeByteSize(), - "Hello, world!") - return data - - def get_loaded_images(self): - return self.loaded_images - - def get_process_id(self) -> int: - return 42 - - def should_stop(self) -> bool: - return True - - def is_alive(self) -> bool: - return True - -def __lldb_init_module(debugger, dict): - if not 'SKIP_SCRIPTED_PROCESS_LAUNCH' in os.environ: - debugger.HandleCommand( - "process launch -C %s.%s" % (__name__, - MyScriptedProcess.__name__)) - else: - print("Name of the class that will manage the scripted process: '%s.%s'" - % (__name__, MyScriptedProcess.__name__)) \ No newline at end of file diff --git a/gnu/llvm/lldb/include/lldb/Host/StringConvert.h b/gnu/llvm/lldb/include/lldb/Host/StringConvert.h deleted file mode 100644 index 33608a85ff4..00000000000 --- a/gnu/llvm/lldb/include/lldb/Host/StringConvert.h +++ /dev/null @@ -1,38 +0,0 @@ -//===-- StringConvert.h -----------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_HOST_STRINGCONVERT_H -#define LLDB_HOST_STRINGCONVERT_H - -#include - -namespace lldb_private { - -namespace StringConvert { - -/// \namespace StringConvert StringConvert.h "lldb/Host/StringConvert.h" -/// Utility classes for converting strings into Integers - -int32_t ToSInt32(const char *s, int32_t fail_value = 0, int base = 0, - bool *success_ptr = nullptr); - -uint32_t ToUInt32(const char *s, uint32_t fail_value = 0, int base = 0, - bool *success_ptr = nullptr); - -int64_t ToSInt64(const char *s, int64_t fail_value = 0, int base = 0, - bool *success_ptr = nullptr); - -uint64_t ToUInt64(const char *s, uint64_t fail_value = 0, int base = 0, - bool *success_ptr = nullptr); - -double ToDouble(const char *s, double fail_value = 0.0, - bool *success_ptr = nullptr); -} // namespace StringConvert -} // namespace lldb_private - -#endif diff --git a/gnu/llvm/lldb/include/lldb/Host/openbsd/HostInfoOpenBSD.h b/gnu/llvm/lldb/include/lldb/Host/openbsd/HostInfoOpenBSD.h index 366157851be..22865d1ce6d 100644 --- a/gnu/llvm/lldb/include/lldb/Host/openbsd/HostInfoOpenBSD.h +++ b/gnu/llvm/lldb/include/lldb/Host/openbsd/HostInfoOpenBSD.h @@ -12,6 +12,7 @@ #include "lldb/Host/posix/HostInfoPosix.h" #include "lldb/Utility/FileSpec.h" #include "llvm/Support/VersionTuple.h" +#include namespace lldb_private { @@ -20,8 +21,7 @@ class HostInfoOpenBSD : public HostInfoPosix { public: static llvm::VersionTuple GetOSVersion(); - static bool GetOSBuildString(std::string &s); - static bool GetOSKernelDescription(std::string &s); + static std::optional GetOSBuildString(); static FileSpec GetProgramFileSpec(); protected: diff --git a/gnu/llvm/lldb/include/lldb/Host/posix/Fcntl.h b/gnu/llvm/lldb/include/lldb/Host/posix/Fcntl.h deleted file mode 100644 index 31cc293dd37..00000000000 --- a/gnu/llvm/lldb/include/lldb/Host/posix/Fcntl.h +++ /dev/null @@ -1,24 +0,0 @@ -//===-- Fcntl.h -------------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// This file defines fcntl functions & structures - -#ifndef liblldb_Host_posix_Fcntl_h_ -#define liblldb_Host_posix_Fcntl_h_ - -#ifdef __ANDROID__ -#include -#endif - -#include - -#if defined(__ANDROID_API__) && __ANDROID_API__ < 21 -#define F_DUPFD_CLOEXEC (F_LINUX_SPECIFIC_BASE + 6) -#endif - -#endif // liblldb_Host_posix_Fcntl_h_ diff --git a/gnu/llvm/lldb/include/lldb/Target/TraceInstructionDumper.h b/gnu/llvm/lldb/include/lldb/Target/TraceInstructionDumper.h deleted file mode 100644 index c4878bfd3fd..00000000000 --- a/gnu/llvm/lldb/include/lldb/Target/TraceInstructionDumper.h +++ /dev/null @@ -1,77 +0,0 @@ -//===-- TraceInstructionDumper.h --------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/TraceCursor.h" - -#ifndef LLDB_TARGET_TRACE_INSTRUCTION_DUMPER_H -#define LLDB_TARGET_TRACE_INSTRUCTION_DUMPER_H - -namespace lldb_private { - -/// Class used to dump the instructions of a \a TraceCursor using its current -/// state and granularity. -class TraceInstructionDumper { -public: - /// Create a instruction dumper for the cursor. - /// - /// \param[in] cursor - /// The cursor whose instructions will be dumped. - /// - /// \param[in] initial_index - /// Presentation index to use for referring to the current instruction - /// of the cursor. If the direction is forwards, the index will increase, - /// and if the direction is backwards, the index will decrease. - /// - /// \param[in] raw - /// Dump only instruction addresses without disassembly nor symbol - /// information. - /// - /// \param[in] show_tsc - /// For each instruction, print the corresponding timestamp counter if - /// available. - TraceInstructionDumper(lldb::TraceCursorUP &&cursor_up, int initial_index = 0, - bool raw = false, bool show_tsc = false); - - /// Dump \a count instructions of the thread trace starting at the current - /// cursor position. - /// - /// This effectively moves the cursor to the next unvisited position, so that - /// a subsequent call to this method continues where it left off. - /// - /// \param[in] s - /// The stream object where the instructions are printed. - /// - /// \param[in] count - /// The number of instructions to print. - void DumpInstructions(Stream &s, size_t count); - - /// Indicate the dumper that no more data is available in the trace. - void SetNoMoreData(); - - /// \return - /// \b true if there's still more data to traverse in the trace. - bool HasMoreData(); - -private: - /// Move the cursor one step. - /// - /// \return - /// \b true if the cursor moved. - bool TryMoveOneStep(); - - lldb::TraceCursorUP m_cursor_up; - int m_index; - bool m_raw; - bool m_show_tsc; - /// If \b true, all the instructions have been traversed. - bool m_no_more_data = false; -}; - -} // namespace lldb_private - -#endif // LLDB_TARGET_TRACE_INSTRUCTION_DUMPER_H diff --git a/gnu/llvm/lldb/include/lldb/Utility/ArchSpec.h b/gnu/llvm/lldb/include/lldb/Utility/ArchSpec.h index 9500f434044..7a9150cdef7 100644 --- a/gnu/llvm/lldb/include/lldb/Utility/ArchSpec.h +++ b/gnu/llvm/lldb/include/lldb/Utility/ArchSpec.h @@ -16,7 +16,6 @@ #include "lldb/lldb-private-enumerations.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/Triple.h" -#include "llvm/Support/YAMLTraits.h" #include #include #include @@ -92,12 +91,29 @@ public: eARM_abi_hard_float = 0x00000400 }; + enum RISCVeflags { + eRISCV_rvc = 0x00000001, /// RVC, +c + eRISCV_float_abi_soft = 0x00000000, /// soft float + eRISCV_float_abi_single = 0x00000002, /// single precision floating point, +f + eRISCV_float_abi_double = 0x00000004, /// double precision floating point, +d + eRISCV_float_abi_quad = 0x00000006, /// quad precision floating point, +q + eRISCV_float_abi_mask = 0x00000006, + eRISCV_rve = 0x00000008, /// RVE, +e + eRISCV_tso = 0x00000010, /// RVTSO (total store ordering) + }; + enum RISCVSubType { eRISCVSubType_unknown, eRISCVSubType_riscv32, eRISCVSubType_riscv64, }; + enum LoongArchSubType { + eLoongArchSubType_unknown, + eLoongArchSubType_loongarch32, + eLoongArchSubType_loongarch64, + }; + enum Core { eCore_arm_generic, eCore_arm_armv4, @@ -195,6 +211,9 @@ public: eCore_riscv32, eCore_riscv64, + eCore_loongarch32, + eCore_loongarch64, + eCore_uknownMach32, eCore_uknownMach64, @@ -478,19 +497,25 @@ public: /// architecture and false otherwise. bool CharIsSignedByDefault() const; - /// Compare an ArchSpec to another ArchSpec, requiring an exact cpu type - /// match between them. e.g. armv7s is not an exact match with armv7 - this - /// would return false + enum MatchType : bool { CompatibleMatch, ExactMatch }; + + /// Compare this ArchSpec to another ArchSpec. \a match specifies the kind of + /// matching that is to be done. CompatibleMatch requires only a compatible + /// cpu type (e.g., armv7s is compatible with armv7). ExactMatch requires an + /// exact match (armv7s is not an exact match with armv7). /// /// \return true if the two ArchSpecs match. - bool IsExactMatch(const ArchSpec &rhs) const; + bool IsMatch(const ArchSpec &rhs, MatchType match) const; - /// Compare an ArchSpec to another ArchSpec, requiring a compatible cpu type - /// match between them. e.g. armv7s is compatible with armv7 - this method - /// would return true - /// - /// \return true if the two ArchSpecs are compatible - bool IsCompatibleMatch(const ArchSpec &rhs) const; + /// Shorthand for IsMatch(rhs, ExactMatch). + bool IsExactMatch(const ArchSpec &rhs) const { + return IsMatch(rhs, ExactMatch); + } + + /// Shorthand for IsMatch(rhs, CompatibleMatch). + bool IsCompatibleMatch(const ArchSpec &rhs) const { + return IsMatch(rhs, CompatibleMatch); + } bool IsFullySpecifiedTriple() const; @@ -519,7 +544,6 @@ public: void SetFlags(const std::string &elf_abi); protected: - bool IsEqualTo(const ArchSpec &rhs, bool exact_match) const; void UpdateCore(); llvm::Triple m_triple; @@ -553,16 +577,4 @@ bool ParseMachCPUDashSubtypeTriple(llvm::StringRef triple_str, ArchSpec &arch); } // namespace lldb_private -namespace llvm { -namespace yaml { -template <> struct ScalarTraits { - static void output(const lldb_private::ArchSpec &, void *, raw_ostream &); - static StringRef input(StringRef, void *, lldb_private::ArchSpec &); - static QuotingType mustQuote(StringRef S) { return QuotingType::Double; } -}; -} // namespace yaml -} // namespace llvm - -LLVM_YAML_IS_SEQUENCE_VECTOR(lldb_private::ArchSpec) - #endif // LLDB_UTILITY_ARCHSPEC_H diff --git a/gnu/llvm/lldb/include/lldb/Utility/Logging.h b/gnu/llvm/lldb/include/lldb/Utility/Logging.h deleted file mode 100644 index 1a8a1022c5c..00000000000 --- a/gnu/llvm/lldb/include/lldb/Utility/Logging.h +++ /dev/null @@ -1,65 +0,0 @@ -//===-- Logging.h -----------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UTILITY_LOGGING_H -#define LLDB_UTILITY_LOGGING_H - -#include - -// Log Bits specific to logging in lldb -#define LIBLLDB_LOG_PROCESS (1u << 1) -#define LIBLLDB_LOG_THREAD (1u << 2) -#define LIBLLDB_LOG_DYNAMIC_LOADER (1u << 3) -#define LIBLLDB_LOG_EVENTS (1u << 4) -#define LIBLLDB_LOG_BREAKPOINTS (1u << 5) -#define LIBLLDB_LOG_WATCHPOINTS (1u << 6) -#define LIBLLDB_LOG_STEP (1u << 7) -#define LIBLLDB_LOG_EXPRESSIONS (1u << 8) -#define LIBLLDB_LOG_TEMPORARY (1u << 9) -#define LIBLLDB_LOG_STATE (1u << 10) -#define LIBLLDB_LOG_OBJECT (1u << 11) -#define LIBLLDB_LOG_COMMUNICATION (1u << 12) -#define LIBLLDB_LOG_CONNECTION (1u << 13) -#define LIBLLDB_LOG_HOST (1u << 14) -#define LIBLLDB_LOG_UNWIND (1u << 15) -#define LIBLLDB_LOG_API (1u << 16) -#define LIBLLDB_LOG_SCRIPT (1u << 17) -#define LIBLLDB_LOG_COMMANDS (1U << 18) -#define LIBLLDB_LOG_TYPES (1u << 19) -#define LIBLLDB_LOG_SYMBOLS (1u << 20) -#define LIBLLDB_LOG_MODULES (1u << 21) -#define LIBLLDB_LOG_TARGET (1u << 22) -#define LIBLLDB_LOG_MMAP (1u << 23) -#define LIBLLDB_LOG_OS (1u << 24) -#define LIBLLDB_LOG_PLATFORM (1u << 25) -#define LIBLLDB_LOG_SYSTEM_RUNTIME (1u << 26) -#define LIBLLDB_LOG_JIT_LOADER (1u << 27) -#define LIBLLDB_LOG_LANGUAGE (1u << 28) -#define LIBLLDB_LOG_DATAFORMATTERS (1u << 29) -#define LIBLLDB_LOG_DEMANGLE (1u << 30) -#define LIBLLDB_LOG_AST (1u << 31) -#define LIBLLDB_LOG_ALL (UINT32_MAX) -#define LIBLLDB_LOG_DEFAULT \ - (LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_THREAD | LIBLLDB_LOG_DYNAMIC_LOADER | \ - LIBLLDB_LOG_BREAKPOINTS | LIBLLDB_LOG_WATCHPOINTS | LIBLLDB_LOG_STEP | \ - LIBLLDB_LOG_STATE | LIBLLDB_LOG_SYMBOLS | LIBLLDB_LOG_TARGET | \ - LIBLLDB_LOG_COMMANDS) - -namespace lldb_private { - -class Log; - -Log *GetLogIfAllCategoriesSet(uint32_t mask); - -Log *GetLogIfAnyCategoriesSet(uint32_t mask); - -void InitializeLldbChannel(); - -} // namespace lldb_private - -#endif // LLDB_UTILITY_LOGGING_H diff --git a/gnu/llvm/lldb/include/lldb/Utility/Reproducer.h b/gnu/llvm/lldb/include/lldb/Utility/Reproducer.h deleted file mode 100644 index 4659254e57d..00000000000 --- a/gnu/llvm/lldb/include/lldb/Utility/Reproducer.h +++ /dev/null @@ -1,252 +0,0 @@ -//===-- Reproducer.h --------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UTILITY_REPRODUCER_H -#define LLDB_UTILITY_REPRODUCER_H - -#include "lldb/Utility/FileSpec.h" -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/Error.h" -#include "llvm/Support/VirtualFileSystem.h" -#include "llvm/Support/YAMLTraits.h" - -#include -#include -#include -#include - -namespace lldb_private { -class UUID; -namespace repro { - -class Reproducer; - -enum class ReproducerMode { - Capture, - Replay, - PassiveReplay, - Off, -}; - -/// The provider defines an interface for generating files needed for -/// reproducing. -/// -/// Different components will implement different providers. -class ProviderBase { -public: - virtual ~ProviderBase() = default; - - const FileSpec &GetRoot() const { return m_root; } - - /// The Keep method is called when it is decided that we need to keep the - /// data in order to provide a reproducer. - virtual void Keep(){}; - - /// The Discard method is called when it is decided that we do not need to - /// keep any information and will not generate a reproducer. - virtual void Discard(){}; - - // Returns the class ID for this type. - static const void *ClassID() { return &ID; } - - // Returns the class ID for the dynamic type of this Provider instance. - virtual const void *DynamicClassID() const = 0; - - virtual llvm::StringRef GetName() const = 0; - virtual llvm::StringRef GetFile() const = 0; - -protected: - ProviderBase(const FileSpec &root) : m_root(root) {} - -private: - /// Every provider knows where to dump its potential files. - FileSpec m_root; - - virtual void anchor(); - static char ID; -}; - -template class Provider : public ProviderBase { -public: - static const void *ClassID() { return &ThisProviderT::ID; } - - const void *DynamicClassID() const override { return &ThisProviderT::ID; } - - llvm::StringRef GetName() const override { return ThisProviderT::Info::name; } - llvm::StringRef GetFile() const override { return ThisProviderT::Info::file; } - -protected: - using ProviderBase::ProviderBase; // Inherit constructor. -}; - -/// The generator is responsible for the logic needed to generate a -/// reproducer. For doing so it relies on providers, who serialize data that -/// is necessary for reproducing a failure. -class Generator final { - -public: - Generator(FileSpec root); - ~Generator(); - - /// Method to indicate we want to keep the reproducer. If reproducer - /// generation is disabled, this does nothing. - void Keep(); - - /// Method to indicate we do not want to keep the reproducer. This is - /// unaffected by whether or not generation reproduction is enabled, as we - /// might need to clean up files already written to disk. - void Discard(); - - /// Enable or disable auto generate. - void SetAutoGenerate(bool b); - - /// Return whether auto generate is enabled. - bool IsAutoGenerate() const; - - /// Create and register a new provider. - template T *Create() { - std::unique_ptr provider = std::make_unique(m_root); - return static_cast(Register(std::move(provider))); - } - - /// Get an existing provider. - template T *Get() { - auto it = m_providers.find(T::ClassID()); - if (it == m_providers.end()) - return nullptr; - return static_cast(it->second.get()); - } - - /// Get a provider if it exists, otherwise create it. - template T &GetOrCreate() { - auto *provider = Get(); - if (provider) - return *provider; - return *Create(); - } - - const FileSpec &GetRoot() const; - -private: - friend Reproducer; - - ProviderBase *Register(std::unique_ptr provider); - - /// Builds and index with provider info. - void AddProvidersToIndex(); - - /// Map of provider IDs to provider instances. - llvm::DenseMap> m_providers; - std::mutex m_providers_mutex; - - /// The reproducer root directory. - FileSpec m_root; - - /// Flag to ensure that we never call both keep and discard. - bool m_done = false; - - /// Flag to auto generate a reproducer when it would otherwise be discarded. - bool m_auto_generate = false; -}; - -class Loader final { -public: - Loader(FileSpec root, bool passive = false); - - template FileSpec GetFile() { - if (!HasFile(T::file)) - return {}; - - return GetRoot().CopyByAppendingPathComponent(T::file); - } - - template llvm::Expected LoadBuffer() { - FileSpec file = GetFile(); - llvm::ErrorOr> buffer = - llvm::vfs::getRealFileSystem()->getBufferForFile(file.GetPath()); - if (!buffer) - return llvm::errorCodeToError(buffer.getError()); - return (*buffer)->getBuffer().str(); - } - - llvm::Error LoadIndex(); - - const FileSpec &GetRoot() const { return m_root; } - - bool IsPassiveReplay() const { return m_passive_replay; } - -private: - bool HasFile(llvm::StringRef file); - - FileSpec m_root; - std::vector m_files; - bool m_loaded; - bool m_passive_replay; -}; - -/// The reproducer enables clients to obtain access to the Generator and -/// Loader. -class Reproducer { -public: - static Reproducer &Instance(); - static llvm::Error Initialize(ReproducerMode mode, - llvm::Optional root); - static void Initialize(); - static bool Initialized(); - static void Terminate(); - - Reproducer() = default; - - Generator *GetGenerator(); - Loader *GetLoader(); - - const Generator *GetGenerator() const; - const Loader *GetLoader() const; - - FileSpec GetReproducerPath() const; - - bool IsCapturing() { return static_cast(m_generator); }; - bool IsReplaying() { return static_cast(m_loader); }; - -protected: - llvm::Error SetCapture(llvm::Optional root); - llvm::Error SetReplay(llvm::Optional root, bool passive = false); - -private: - static llvm::Optional &InstanceImpl(); - - llvm::Optional m_generator; - llvm::Optional m_loader; - - mutable std::mutex m_mutex; -}; - -class Verifier { -public: - Verifier(Loader *loader) : m_loader(loader) {} - void Verify(llvm::function_ref error_callback, - llvm::function_ref warning_callback, - llvm::function_ref note_callback) const; - -private: - Loader *m_loader; -}; - -struct ReplayOptions { - bool verify = true; - bool check_version = true; -}; - -llvm::Error Finalize(Loader *loader); -llvm::Error Finalize(const FileSpec &root); - -} // namespace repro -} // namespace lldb_private - -#endif // LLDB_UTILITY_REPRODUCER_H diff --git a/gnu/llvm/lldb/include/lldb/Utility/ReproducerInstrumentation.h b/gnu/llvm/lldb/include/lldb/Utility/ReproducerInstrumentation.h deleted file mode 100644 index 2b2d273a17a..00000000000 --- a/gnu/llvm/lldb/include/lldb/Utility/ReproducerInstrumentation.h +++ /dev/null @@ -1,1111 +0,0 @@ -//===-- ReproducerInstrumentation.h -----------------------------*- C++ -*-===// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UTILITY_REPRODUCERINSTRUMENTATION_H -#define LLDB_UTILITY_REPRODUCERINSTRUMENTATION_H - -#include "lldb/Utility/FileSpec.h" -#include "lldb/Utility/Log.h" -#include "lldb/Utility/Logging.h" - -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/ErrorHandling.h" - -#include -#include -#include - -template ::value, int>::type = 0> -inline void stringify_append(llvm::raw_string_ostream &ss, const T &t) { - ss << t; -} - -template ::value, - int>::type = 0> -inline void stringify_append(llvm::raw_string_ostream &ss, const T &t) { - ss << &t; -} - -template -inline void stringify_append(llvm::raw_string_ostream &ss, T *t) { - ss << reinterpret_cast(t); -} - -template -inline void stringify_append(llvm::raw_string_ostream &ss, const T *t) { - ss << reinterpret_cast(t); -} - -template <> -inline void stringify_append(llvm::raw_string_ostream &ss, - const char *t) { - ss << '\"' << t << '\"'; -} - -template <> -inline void stringify_append(llvm::raw_string_ostream &ss, - const std::nullptr_t &t) { - ss << "\"nullptr\""; -} - -template -inline void stringify_helper(llvm::raw_string_ostream &ss, const Head &head) { - stringify_append(ss, head); -} - -template -inline void stringify_helper(llvm::raw_string_ostream &ss, const Head &head, - const Tail &... tail) { - stringify_append(ss, head); - ss << ", "; - stringify_helper(ss, tail...); -} - -template inline std::string stringify_args(const Ts &... ts) { - std::string buffer; - llvm::raw_string_ostream ss(buffer); - stringify_helper(ss, ts...); - return ss.str(); -} - -// Define LLDB_REPRO_INSTR_TRACE to trace to stderr instead of LLDB's log -// infrastructure. This is useful when you need to see traces before the logger -// is initialized or enabled. -// #define LLDB_REPRO_INSTR_TRACE - -#ifdef LLDB_REPRO_INSTR_TRACE -inline llvm::raw_ostream &this_thread_id() { - size_t tid = std::hash{}(std::this_thread::get_id()); - return llvm::errs().write_hex(tid) << " :: "; -} -#endif - -#define LLDB_REGISTER_CONSTRUCTOR(Class, Signature) \ - R.Register(&construct::record, "", \ - #Class, #Class, #Signature) - -#define LLDB_REGISTER_METHOD(Result, Class, Method, Signature) \ - R.Register( \ - &invoke::method<(&Class::Method)>::record, \ - #Result, #Class, #Method, #Signature) - -#define LLDB_REGISTER_METHOD_CONST(Result, Class, Method, Signature) \ - R.Register(&invoke::method<(&Class::Method)>::record, \ - #Result, #Class, #Method, #Signature) - -#define LLDB_REGISTER_STATIC_METHOD(Result, Class, Method, Signature) \ - R.Register(&invoke::method<(&Class::Method)>::record, \ - #Result, #Class, #Method, #Signature) - -#define LLDB_REGISTER_CHAR_PTR_METHOD_STATIC(Result, Class, Method) \ - R.Register( \ - &invoke::method<(&Class::Method)>::record, \ - &invoke_char_ptr::method<(&Class::Method)>::record, \ - #Result, #Class, #Method, "(char*, size_t"); - -#define LLDB_REGISTER_CHAR_PTR_METHOD(Result, Class, Method) \ - R.Register(&invoke::method<( \ - &Class::Method)>::record, \ - &invoke_char_ptr::method<( \ - &Class::Method)>::record, \ - #Result, #Class, #Method, "(char*, size_t"); - -#define LLDB_REGISTER_CHAR_PTR_METHOD_CONST(Result, Class, Method) \ - R.Register(&invoke::method<(&Class::Method)>::record, \ - &invoke_char_ptr::method<(&Class::Method)>::record, \ - #Result, #Class, #Method, "(char*, size_t"); - -#define LLDB_CONSTRUCT_(T, Class, ...) \ - lldb_private::repro::Recorder _recorder(LLVM_PRETTY_FUNCTION); \ - lldb_private::repro::construct::handle(LLDB_GET_INSTRUMENTATION_DATA(), \ - _recorder, Class, __VA_ARGS__); - -#define LLDB_RECORD_CONSTRUCTOR(Class, Signature, ...) \ - LLDB_CONSTRUCT_(Class Signature, this, __VA_ARGS__) - -#define LLDB_RECORD_CONSTRUCTOR_NO_ARGS(Class) \ - LLDB_CONSTRUCT_(Class(), this, lldb_private::repro::EmptyArg()) - -#define LLDB_RECORD_(T1, T2, ...) \ - lldb_private::repro::Recorder _recorder(LLVM_PRETTY_FUNCTION, \ - stringify_args(__VA_ARGS__)); \ - if (lldb_private::repro::InstrumentationData _data = \ - LLDB_GET_INSTRUMENTATION_DATA()) { \ - if (lldb_private::repro::Serializer *_serializer = \ - _data.GetSerializer()) { \ - _recorder.Record(*_serializer, _data.GetRegistry(), \ - &lldb_private::repro::invoke::method::record, \ - __VA_ARGS__); \ - } else if (lldb_private::repro::Deserializer *_deserializer = \ - _data.GetDeserializer()) { \ - if (_recorder.ShouldCapture()) { \ - return lldb_private::repro::invoke::method::replay( \ - _recorder, *_deserializer, _data.GetRegistry()); \ - } \ - } \ - } - -#define LLDB_RECORD_METHOD(Result, Class, Method, Signature, ...) \ - LLDB_RECORD_(Result(Class::*) Signature, (&Class::Method), this, __VA_ARGS__) - -#define LLDB_RECORD_METHOD_CONST(Result, Class, Method, Signature, ...) \ - LLDB_RECORD_(Result(Class::*) Signature const, (&Class::Method), this, \ - __VA_ARGS__) - -#define LLDB_RECORD_METHOD_NO_ARGS(Result, Class, Method) \ - LLDB_RECORD_(Result (Class::*)(), (&Class::Method), this) - -#define LLDB_RECORD_METHOD_CONST_NO_ARGS(Result, Class, Method) \ - LLDB_RECORD_(Result (Class::*)() const, (&Class::Method), this) - -#define LLDB_RECORD_STATIC_METHOD(Result, Class, Method, Signature, ...) \ - LLDB_RECORD_(Result(*) Signature, (&Class::Method), __VA_ARGS__) - -#define LLDB_RECORD_STATIC_METHOD_NO_ARGS(Result, Class, Method) \ - LLDB_RECORD_(Result (*)(), (&Class::Method), lldb_private::repro::EmptyArg()) - -#define LLDB_RECORD_CHAR_PTR_(T1, T2, StrOut, ...) \ - lldb_private::repro::Recorder _recorder(LLVM_PRETTY_FUNCTION, \ - stringify_args(__VA_ARGS__)); \ - if (lldb_private::repro::InstrumentationData _data = \ - LLDB_GET_INSTRUMENTATION_DATA()) { \ - if (lldb_private::repro::Serializer *_serializer = \ - _data.GetSerializer()) { \ - _recorder.Record(*_serializer, _data.GetRegistry(), \ - &lldb_private::repro::invoke::method<(T2)>::record, \ - __VA_ARGS__); \ - } else if (lldb_private::repro::Deserializer *_deserializer = \ - _data.GetDeserializer()) { \ - if (_recorder.ShouldCapture()) { \ - return lldb_private::repro::invoke_char_ptr::method::replay( \ - _recorder, *_deserializer, _data.GetRegistry(), StrOut); \ - } \ - } \ - } - -#define LLDB_RECORD_CHAR_PTR_METHOD(Result, Class, Method, Signature, StrOut, \ - ...) \ - LLDB_RECORD_CHAR_PTR_(Result(Class::*) Signature, (&Class::Method), StrOut, \ - this, __VA_ARGS__) - -#define LLDB_RECORD_CHAR_PTR_METHOD_CONST(Result, Class, Method, Signature, \ - StrOut, ...) \ - LLDB_RECORD_CHAR_PTR_(Result(Class::*) Signature const, (&Class::Method), \ - StrOut, this, __VA_ARGS__) - -#define LLDB_RECORD_CHAR_PTR_STATIC_METHOD(Result, Class, Method, Signature, \ - StrOut, ...) \ - LLDB_RECORD_CHAR_PTR_(Result(*) Signature, (&Class::Method), StrOut, \ - __VA_ARGS__) - -#define LLDB_RECORD_RESULT(Result) _recorder.RecordResult(Result, true); - -/// The LLDB_RECORD_DUMMY macro is special because it doesn't actually record -/// anything. It's used to track API boundaries when we cannot record for -/// technical reasons. -#define LLDB_RECORD_DUMMY(Result, Class, Method, Signature, ...) \ - lldb_private::repro::Recorder _recorder; - -#define LLDB_RECORD_DUMMY_NO_ARGS(Result, Class, Method) \ - lldb_private::repro::Recorder _recorder; - -namespace lldb_private { -namespace repro { - -template -struct is_trivially_serializable - : std::integral_constant::value || - std::is_enum::value> {}; - -/// Mapping between serialized indices and their corresponding objects. -/// -/// This class is used during replay to map indices back to in-memory objects. -/// -/// When objects are constructed, they are added to this mapping using -/// AddObjectForIndex. -/// -/// When an object is passed to a function, its index is deserialized and -/// AddObjectForIndex returns the corresponding object. If there is no object -/// for the given index, a nullptr is returend. The latter is valid when custom -/// replay code is in place and the actual object is ignored. -class IndexToObject { -public: - /// Returns an object as a pointer for the given index or nullptr if not - /// present in the map. - template T *GetObjectForIndex(unsigned idx) { - assert(idx != 0 && "Cannot get object for sentinel"); - void *object = GetObjectForIndexImpl(idx); - return static_cast(object); - } - - /// Adds a pointer to an object to the mapping for the given index. - template T *AddObjectForIndex(unsigned idx, T *object) { - AddObjectForIndexImpl( - idx, static_cast( - const_cast::type *>(object))); - return object; - } - - /// Adds a reference to an object to the mapping for the given index. - template T &AddObjectForIndex(unsigned idx, T &object) { - AddObjectForIndexImpl( - idx, static_cast( - const_cast::type *>(&object))); - return object; - } - - /// Get all objects sorted by their index. - std::vector GetAllObjects() const; - -private: - /// Helper method that does the actual lookup. The void* result is later cast - /// by the caller. - void *GetObjectForIndexImpl(unsigned idx); - - /// Helper method that does the actual insertion. - void AddObjectForIndexImpl(unsigned idx, void *object); - - /// Keeps a mapping between indices and their corresponding object. - llvm::DenseMap m_mapping; -}; - -/// We need to differentiate between pointers to fundamental and -/// non-fundamental types. See the corresponding Deserializer::Read method -/// for the reason why. -struct PointerTag {}; -struct ReferenceTag {}; -struct ValueTag {}; -struct FundamentalPointerTag {}; -struct FundamentalReferenceTag {}; - -/// Return the deserialization tag for the given type T. -template struct serializer_tag { - typedef typename std::conditional::value, - ValueTag, ReferenceTag>::type type; -}; -template struct serializer_tag { - typedef - typename std::conditional::value, - FundamentalPointerTag, PointerTag>::type type; -}; -template struct serializer_tag { - typedef typename std::conditional::value, - FundamentalReferenceTag, ReferenceTag>::type - type; -}; - -/// Deserializes data from a buffer. It is used to deserialize function indices -/// to replay, their arguments and return values. -/// -/// Fundamental types and strings are read by value. Objects are read by their -/// index, which get translated by the IndexToObject mapping maintained in -/// this class. -/// -/// Additional bookkeeping with regards to the IndexToObject is required to -/// deserialize objects. When a constructor is run or an object is returned by -/// value, we need to capture the object and add it to the index together with -/// its index. This is the job of HandleReplayResult(Void). -class Deserializer { -public: - Deserializer(llvm::StringRef buffer) : m_buffer(buffer) {} - - /// Returns true when the buffer has unread data. - bool HasData(unsigned size) { return size <= m_buffer.size(); } - - /// Deserialize and interpret value as T. - template T Deserialize() { - T t = Read(typename serializer_tag::type()); -#ifdef LLDB_REPRO_INSTR_TRACE - llvm::errs() << "Deserializing with " << LLVM_PRETTY_FUNCTION << " -> " - << stringify_args(t) << "\n"; -#endif - return t; - } - - template const T &HandleReplayResult(const T &t) { - CheckSequence(Deserialize()); - unsigned result = Deserialize(); - if (is_trivially_serializable::value) - return t; - // We need to make a copy as the original object might go out of scope. - return *m_index_to_object.AddObjectForIndex(result, new T(t)); - } - - /// Store the returned value in the index-to-object mapping. - template T &HandleReplayResult(T &t) { - CheckSequence(Deserialize()); - unsigned result = Deserialize(); - if (is_trivially_serializable::value) - return t; - // We need to make a copy as the original object might go out of scope. - return *m_index_to_object.AddObjectForIndex(result, new T(t)); - } - - /// Store the returned value in the index-to-object mapping. - template T *HandleReplayResult(T *t) { - CheckSequence(Deserialize()); - unsigned result = Deserialize(); - if (is_trivially_serializable::value) - return t; - return m_index_to_object.AddObjectForIndex(result, t); - } - - /// All returned types are recorded, even when the function returns a void. - /// The latter requires special handling. - void HandleReplayResultVoid() { - CheckSequence(Deserialize()); - unsigned result = Deserialize(); - assert(result == 0); - (void)result; - } - - std::vector GetAllObjects() const { - return m_index_to_object.GetAllObjects(); - } - - void SetExpectedSequence(unsigned sequence) { - m_expected_sequence = sequence; - } - -private: - template T Read(ValueTag) { - assert(HasData(sizeof(T))); - T t; - std::memcpy(reinterpret_cast(&t), m_buffer.data(), sizeof(T)); - m_buffer = m_buffer.drop_front(sizeof(T)); - return t; - } - - template T Read(PointerTag) { - typedef typename std::remove_pointer::type UnderlyingT; - return m_index_to_object.template GetObjectForIndex( - Deserialize()); - } - - template T Read(ReferenceTag) { - typedef typename std::remove_reference::type UnderlyingT; - // If this is a reference to a fundamental type we just read its value. - return *m_index_to_object.template GetObjectForIndex( - Deserialize()); - } - - /// This method is used to parse references to fundamental types. Because - /// they're not recorded in the object table we have serialized their value. - /// We read its value, allocate a copy on the heap, and return a pointer to - /// the copy. - template T Read(FundamentalPointerTag) { - typedef typename std::remove_pointer::type UnderlyingT; - return new UnderlyingT(Deserialize()); - } - - /// This method is used to parse references to fundamental types. Because - /// they're not recorded in the object table we have serialized their value. - /// We read its value, allocate a copy on the heap, and return a reference to - /// the copy. - template T Read(FundamentalReferenceTag) { - // If this is a reference to a fundamental type we just read its value. - typedef typename std::remove_reference::type UnderlyingT; - return *(new UnderlyingT(Deserialize())); - } - - /// Verify that the given sequence number matches what we expect. - void CheckSequence(unsigned sequence); - - /// Mapping of indices to objects. - IndexToObject m_index_to_object; - - /// Buffer containing the serialized data. - llvm::StringRef m_buffer; - - /// The result's expected sequence number. - llvm::Optional m_expected_sequence; -}; - -/// Partial specialization for C-style strings. We read the string value -/// instead of treating it as pointer. -template <> const char *Deserializer::Deserialize(); -template <> const char **Deserializer::Deserialize(); -template <> const uint8_t *Deserializer::Deserialize(); -template <> const void *Deserializer::Deserialize(); -template <> char *Deserializer::Deserialize(); -template <> void *Deserializer::Deserialize(); - -/// Helpers to auto-synthesize function replay code. It deserializes the replay -/// function's arguments one by one and finally calls the corresponding -/// function. -template struct DeserializationHelper; - -template -struct DeserializationHelper { - template struct deserialized { - static Result doit(Deserializer &deserializer, - Result (*f)(Deserialized..., Head, Tail...), - Deserialized... d) { - return DeserializationHelper:: - template deserialized::doit( - deserializer, f, d..., deserializer.Deserialize()); - } - }; -}; - -template <> struct DeserializationHelper<> { - template struct deserialized { - static Result doit(Deserializer &deserializer, Result (*f)(Deserialized...), - Deserialized... d) { - return f(d...); - } - }; -}; - -/// The replayer interface. -struct Replayer { - virtual ~Replayer() = default; - virtual void operator()(Deserializer &deserializer) const = 0; -}; - -/// The default replayer deserializes the arguments and calls the function. -template struct DefaultReplayer; -template -struct DefaultReplayer : public Replayer { - DefaultReplayer(Result (*f)(Args...)) : Replayer(), f(f) {} - - void operator()(Deserializer &deserializer) const override { - Replay(deserializer); - } - - Result Replay(Deserializer &deserializer) const { - return deserializer.HandleReplayResult( - DeserializationHelper::template deserialized::doit( - deserializer, f)); - } - - Result (*f)(Args...); -}; - -/// Partial specialization for function returning a void type. It ignores the -/// (absent) return value. -template -struct DefaultReplayer : public Replayer { - DefaultReplayer(void (*f)(Args...)) : Replayer(), f(f) {} - - void operator()(Deserializer &deserializer) const override { - Replay(deserializer); - } - - void Replay(Deserializer &deserializer) const { - DeserializationHelper::template deserialized::doit( - deserializer, f); - deserializer.HandleReplayResultVoid(); - } - - void (*f)(Args...); -}; - -/// The registry contains a unique mapping between functions and their ID. The -/// IDs can be serialized and deserialized to replay a function. Functions need -/// to be registered with the registry for this to work. -class Registry { -private: - struct SignatureStr { - SignatureStr(llvm::StringRef result = {}, llvm::StringRef scope = {}, - llvm::StringRef name = {}, llvm::StringRef args = {}) - : result(result), scope(scope), name(name), args(args) {} - - std::string ToString() const; - - llvm::StringRef result; - llvm::StringRef scope; - llvm::StringRef name; - llvm::StringRef args; - }; - -public: - Registry() = default; - virtual ~Registry() = default; - - /// Register a default replayer for a function. - template - void Register(Signature *f, llvm::StringRef result = {}, - llvm::StringRef scope = {}, llvm::StringRef name = {}, - llvm::StringRef args = {}) { - DoRegister(uintptr_t(f), std::make_unique>(f), - SignatureStr(result, scope, name, args)); - } - - /// Register a replayer that invokes a custom function with the same - /// signature as the replayed function. - template - void Register(Signature *f, Signature *g, llvm::StringRef result = {}, - llvm::StringRef scope = {}, llvm::StringRef name = {}, - llvm::StringRef args = {}) { - DoRegister(uintptr_t(f), std::make_unique>(g), - SignatureStr(result, scope, name, args)); - } - - /// Replay functions from a file. - bool Replay(const FileSpec &file); - - /// Replay functions from a buffer. - bool Replay(llvm::StringRef buffer); - - /// Replay functions from a deserializer. - bool Replay(Deserializer &deserializer); - - /// Returns the ID for a given function address. - unsigned GetID(uintptr_t addr); - - /// Get the replayer matching the given ID. - Replayer *GetReplayer(unsigned id); - - std::string GetSignature(unsigned id); - - void CheckID(unsigned expected, unsigned actual); - -protected: - /// Register the given replayer for a function (and the ID mapping). - void DoRegister(uintptr_t RunID, std::unique_ptr replayer, - SignatureStr signature); - -private: - /// Mapping of function addresses to replayers and their ID. - std::map, unsigned>> - m_replayers; - - /// Mapping of IDs to replayer instances. - std::map> m_ids; -}; - -/// Maps an object to an index for serialization. Indices are unique and -/// incremented for every new object. -/// -/// Indices start at 1 in order to differentiate with an invalid index (0) in -/// the serialized buffer. -class ObjectToIndex { -public: - template unsigned GetIndexForObject(T *t) { - return GetIndexForObjectImpl(static_cast(t)); - } - -private: - unsigned GetIndexForObjectImpl(const void *object); - - llvm::DenseMap m_mapping; -}; - -/// Serializes functions, their arguments and their return type to a stream. -class Serializer { -public: - Serializer(llvm::raw_ostream &stream = llvm::outs()) : m_stream(stream) {} - - /// Recursively serialize all the given arguments. - template - void SerializeAll(const Head &head, const Tail &... tail) { - Serialize(head); - SerializeAll(tail...); - } - - void SerializeAll() { m_stream.flush(); } - -private: - /// Serialize pointers. We need to differentiate between pointers to - /// fundamental types (in which case we serialize its value) and pointer to - /// objects (in which case we serialize their index). - template void Serialize(T *t) { -#ifdef LLDB_REPRO_INSTR_TRACE - this_thread_id() << "Serializing with " << LLVM_PRETTY_FUNCTION << " -> " - << stringify_args(t) << "\n"; -#endif - if (std::is_fundamental::value) { - Serialize(*t); - } else { - unsigned idx = m_tracker.GetIndexForObject(t); - Serialize(idx); - } - } - - /// Serialize references. We need to differentiate between references to - /// fundamental types (in which case we serialize its value) and references - /// to objects (in which case we serialize their index). - template void Serialize(T &t) { -#ifdef LLDB_REPRO_INSTR_TRACE - this_thread_id() << "Serializing with " << LLVM_PRETTY_FUNCTION << " -> " - << stringify_args(t) << "\n"; -#endif - if (is_trivially_serializable::value) { - m_stream.write(reinterpret_cast(&t), sizeof(T)); - } else { - unsigned idx = m_tracker.GetIndexForObject(&t); - Serialize(idx); - } - } - - void Serialize(const void *v) { - // FIXME: Support void* - } - - void Serialize(void *v) { - // FIXME: Support void* - } - - void Serialize(const char *t) { -#ifdef LLDB_REPRO_INSTR_TRACE - this_thread_id() << "Serializing with " << LLVM_PRETTY_FUNCTION << " -> " - << stringify_args(t) << "\n"; -#endif - const size_t size = t ? strlen(t) : std::numeric_limits::max(); - Serialize(size); - if (t) { - m_stream << t; - m_stream.write(0x0); - } - } - - void Serialize(const char **t) { - size_t size = 0; - if (!t) { - Serialize(size); - return; - } - - // Compute the size of the array. - const char *const *temp = t; - while (*temp++) - size++; - Serialize(size); - - // Serialize the content of the array. - while (*t) - Serialize(*t++); - } - - /// Serialization stream. - llvm::raw_ostream &m_stream; - - /// Mapping of objects to indices. - ObjectToIndex m_tracker; -}; // namespace repro - -class InstrumentationData { -public: - Serializer *GetSerializer() { return m_serializer; } - Deserializer *GetDeserializer() { return m_deserializer; } - Registry &GetRegistry() { return *m_registry; } - - operator bool() { - return (m_serializer != nullptr || m_deserializer != nullptr) && - m_registry != nullptr; - } - - static void Initialize(Serializer &serializer, Registry ®istry); - static void Initialize(Deserializer &serializer, Registry ®istry); - static InstrumentationData &Instance(); - -protected: - friend llvm::optional_detail::OptionalStorage; - friend llvm::Optional; - - InstrumentationData() = default; - InstrumentationData(Serializer &serializer, Registry ®istry) - : m_serializer(&serializer), m_deserializer(nullptr), - m_registry(®istry) {} - InstrumentationData(Deserializer &deserializer, Registry ®istry) - : m_serializer(nullptr), m_deserializer(&deserializer), - m_registry(®istry) {} - -private: - static llvm::Optional &InstanceImpl(); - - Serializer *m_serializer = nullptr; - Deserializer *m_deserializer = nullptr; - Registry *m_registry = nullptr; -}; - -struct EmptyArg {}; - -/// RAII object that records function invocations and their return value. -/// -/// API calls are only captured when the API boundary is crossed. Once we're in -/// the API layer, and another API function is called, it doesn't need to be -/// recorded. -/// -/// When a call is recored, its result is always recorded as well, even if the -/// function returns a void. For functions that return by value, RecordResult -/// should be used. Otherwise a sentinel value (0) will be serialized. -/// -/// Because of the functional overlap between logging and recording API calls, -/// this class is also used for logging. -class Recorder { -public: - Recorder(); - Recorder(llvm::StringRef pretty_func, std::string &&pretty_args = {}); - ~Recorder(); - - /// Records a single function call. - template - void Record(Serializer &serializer, Registry ®istry, Result (*f)(FArgs...), - const RArgs &... args) { - m_serializer = &serializer; - if (!ShouldCapture()) - return; - - std::lock_guard lock(g_mutex); - unsigned sequence = GetSequenceNumber(); - unsigned id = registry.GetID(uintptr_t(f)); - -#ifdef LLDB_REPRO_INSTR_TRACE - Log(id); -#endif - - serializer.SerializeAll(sequence); - serializer.SerializeAll(id); - serializer.SerializeAll(args...); - - if (std::is_class::type>::type>::value) { - m_result_recorded = false; - } else { - serializer.SerializeAll(sequence); - serializer.SerializeAll(0); - m_result_recorded = true; - } - } - - /// Records a single function call. - template - void Record(Serializer &serializer, Registry ®istry, void (*f)(Args...), - const Args &... args) { - m_serializer = &serializer; - if (!ShouldCapture()) - return; - - std::lock_guard lock(g_mutex); - unsigned sequence = GetSequenceNumber(); - unsigned id = registry.GetID(uintptr_t(f)); - -#ifdef LLDB_REPRO_INSTR_TRACE - Log(id); -#endif - - serializer.SerializeAll(sequence); - serializer.SerializeAll(id); - serializer.SerializeAll(args...); - - // Record result. - serializer.SerializeAll(sequence); - serializer.SerializeAll(0); - m_result_recorded = true; - } - - /// Specializations for the no-argument methods. These are passed an empty - /// dummy argument so the same variadic macro can be used. These methods - /// strip the arguments before forwarding them. - template - void Record(Serializer &serializer, Registry ®istry, Result (*f)(), - const EmptyArg &arg) { - Record(serializer, registry, f); - } - - /// Record the result of a function call. - template - Result RecordResult(Result &&r, bool update_boundary) { - // When recording the result from the LLDB_RECORD_RESULT macro, we need to - // update the boundary so we capture the copy constructor. However, when - // called to record the this pointer of the (copy) constructor, the - // boundary should not be toggled, because it is called from the - // LLDB_RECORD_CONSTRUCTOR macro, which might be followed by other API - // calls. - if (update_boundary) - UpdateBoundary(); - if (m_serializer && ShouldCapture()) { - std::lock_guard lock(g_mutex); - assert(!m_result_recorded); - m_serializer->SerializeAll(GetSequenceNumber()); - m_serializer->SerializeAll(r); - m_result_recorded = true; - } - return std::forward(r); - } - - template - Result Replay(Deserializer &deserializer, Registry ®istry, uintptr_t addr, - bool update_boundary) { - deserializer.SetExpectedSequence(deserializer.Deserialize()); - unsigned actual_id = registry.GetID(addr); - unsigned id = deserializer.Deserialize(); - registry.CheckID(id, actual_id); - return ReplayResult( - static_cast *>(registry.GetReplayer(id)) - ->Replay(deserializer), - update_boundary); - } - - void Replay(Deserializer &deserializer, Registry ®istry, uintptr_t addr) { - deserializer.SetExpectedSequence(deserializer.Deserialize()); - unsigned actual_id = registry.GetID(addr); - unsigned id = deserializer.Deserialize(); - registry.CheckID(id, actual_id); - registry.GetReplayer(id)->operator()(deserializer); - } - - template - Result ReplayResult(Result &&r, bool update_boundary) { - if (update_boundary) - UpdateBoundary(); - return std::forward(r); - } - - bool ShouldCapture() { return m_local_boundary; } - - /// Mark the current thread as a private thread and pretend that everything - /// on this thread is behind happening behind the API boundary. - static void PrivateThread() { g_global_boundary = true; } - -private: - static unsigned GetNextSequenceNumber() { return g_sequence++; } - unsigned GetSequenceNumber() const; - - template friend struct replay; - void UpdateBoundary() { - if (m_local_boundary) - g_global_boundary = false; - } - -#ifdef LLDB_REPRO_INSTR_TRACE - void Log(unsigned id) { - this_thread_id() << "Recording " << id << ": " << m_pretty_func << " (" - << m_pretty_args << ")\n"; - } -#endif - - Serializer *m_serializer = nullptr; - - /// Pretty function for logging. - llvm::StringRef m_pretty_func; - std::string m_pretty_args; - - /// Whether this function call was the one crossing the API boundary. - bool m_local_boundary = false; - - /// Whether the return value was recorded explicitly. - bool m_result_recorded = true; - - /// The sequence number for this pair of function and result. - unsigned m_sequence; - - /// Whether we're currently across the API boundary. - static thread_local bool g_global_boundary; - - /// Global mutex to protect concurrent access. - static std::mutex g_mutex; - - /// Unique, monotonically increasing sequence number. - static std::atomic g_sequence; -}; - -/// To be used as the "Runtime ID" of a constructor. It also invokes the -/// constructor when called. -template struct construct; -template struct construct { - static Class *handle(lldb_private::repro::InstrumentationData data, - lldb_private::repro::Recorder &recorder, Class *c, - const EmptyArg &) { - return handle(data, recorder, c); - } - - static Class *handle(lldb_private::repro::InstrumentationData data, - lldb_private::repro::Recorder &recorder, Class *c, - Args... args) { - if (!data) - return nullptr; - - if (Serializer *serializer = data.GetSerializer()) { - recorder.Record(*serializer, data.GetRegistry(), &record, args...); - recorder.RecordResult(c, false); - } else if (Deserializer *deserializer = data.GetDeserializer()) { - if (recorder.ShouldCapture()) { - replay(recorder, *deserializer, data.GetRegistry()); - } - } - - return nullptr; - } - - static Class *record(Args... args) { return new Class(args...); } - - static Class *replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry) { - return recorder.Replay( - deserializer, registry, uintptr_t(&record), false); - } -}; - -/// To be used as the "Runtime ID" of a member function. It also invokes the -/// member function when called. -template struct invoke; -template -struct invoke { - template struct method { - static Result record(Class *c, Args... args) { return (c->*m)(args...); } - - static Result replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry) { - return recorder.Replay( - deserializer, registry, uintptr_t(&record), true); - } - }; -}; - -template -struct invoke { - template struct method { - static void record(Class *c, Args... args) { (c->*m)(args...); } - static void replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry) { - recorder.Replay(deserializer, registry, uintptr_t(&record)); - } - }; -}; - -template -struct invoke { - template struct method { - static Result record(Class *c, Args... args) { return (c->*m)(args...); } - static Result replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry) { - return recorder.Replay( - deserializer, registry, uintptr_t(&record), true); - } - }; -}; - -template -struct invoke { - template struct method { - static void record(Class *c, Args... args) { return (c->*m)(args...); } - static void replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry) { - recorder.Replay(deserializer, registry, uintptr_t(&record)); - } - }; -}; - -template struct replay; - -template -struct replay { - template struct method {}; -}; - -template -struct invoke { - template struct method { - static Result record(Args... args) { return (*m)(args...); } - static Result replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry) { - return recorder.Replay(deserializer, registry, - uintptr_t(&record), true); - } - }; -}; - -template struct invoke { - template struct method { - static void record(Args... args) { return (*m)(args...); } - static void replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry) { - recorder.Replay(deserializer, registry, uintptr_t(&record)); - } - }; -}; - -/// Special handling for functions returning strings as (char*, size_t). -/// { - -/// For inline replay, we ignore the arguments and use the ones from the -/// serializer instead. This doesn't work for methods that use a char* and a -/// size to return a string. For one these functions have a custom replayer to -/// prevent override the input buffer. Furthermore, the template-generated -/// deserialization is not easy to hook into. -/// -/// The specializations below hand-implement the serialization logic for the -/// inline replay. Instead of using the function from the registry, it uses the -/// one passed into the macro. -template struct invoke_char_ptr; -template -struct invoke_char_ptr { - template struct method { - static Result record(Class *c, char *s, size_t l) { - char *buffer = reinterpret_cast(calloc(l, sizeof(char))); - return (c->*m)(buffer, l); - } - - static Result replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry, char *str) { - deserializer.SetExpectedSequence(deserializer.Deserialize()); - deserializer.Deserialize(); - Class *c = deserializer.Deserialize(); - deserializer.Deserialize(); - size_t l = deserializer.Deserialize(); - return recorder.ReplayResult( - std::move(deserializer.HandleReplayResult((c->*m)(str, l))), true); - } - }; -}; - -template struct invoke_char_ptr; -template -struct invoke_char_ptr { - template struct method { - static Result record(Class *c, char *s, size_t l) { - char *buffer = reinterpret_cast(calloc(l, sizeof(char))); - return (c->*m)(buffer, l); - } - - static Result replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry, char *str) { - deserializer.SetExpectedSequence(deserializer.Deserialize()); - deserializer.Deserialize(); - Class *c = deserializer.Deserialize(); - deserializer.Deserialize(); - size_t l = deserializer.Deserialize(); - return recorder.ReplayResult( - std::move(deserializer.HandleReplayResult((c->*m)(str, l))), true); - } - }; -}; - -template -struct invoke_char_ptr { - template struct method { - static Result record(char *s, size_t l) { - char *buffer = reinterpret_cast(calloc(l, sizeof(char))); - return (*m)(buffer, l); - } - - static Result replay(Recorder &recorder, Deserializer &deserializer, - Registry ®istry, char *str) { - deserializer.SetExpectedSequence(deserializer.Deserialize()); - deserializer.Deserialize(); - deserializer.Deserialize(); - size_t l = deserializer.Deserialize(); - return recorder.ReplayResult( - std::move(deserializer.HandleReplayResult((*m)(str, l))), true); - } - }; -}; -/// } - -} // namespace repro -} // namespace lldb_private - -#endif // LLDB_UTILITY_REPRODUCERINSTRUMENTATION_H diff --git a/gnu/llvm/lldb/include/lldb/Utility/ReproducerProvider.h b/gnu/llvm/lldb/include/lldb/Utility/ReproducerProvider.h deleted file mode 100644 index db7378069a8..00000000000 --- a/gnu/llvm/lldb/include/lldb/Utility/ReproducerProvider.h +++ /dev/null @@ -1,435 +0,0 @@ -//===-- Reproducer.h --------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UTILITY_REPRODUCER_PROVIDER_H -#define LLDB_UTILITY_REPRODUCER_PROVIDER_H - -#include "lldb/Utility/FileSpec.h" -#include "lldb/Utility/ProcessInfo.h" -#include "lldb/Utility/Reproducer.h" -#include "lldb/Utility/UUID.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/Error.h" -#include "llvm/Support/FileCollector.h" -#include "llvm/Support/YAMLTraits.h" - -#include -#include -#include - -namespace lldb_private { -namespace repro { - -/// The recorder is a small object handed out by a provider to record data. It -/// is commonly used in combination with a MultiProvider which is meant to -/// record information for multiple instances of the same source of data. -class AbstractRecorder { -protected: - AbstractRecorder(const FileSpec &filename, std::error_code &ec) - : m_filename(filename.GetFilename().GetStringRef()), - m_os(filename.GetPath(), ec, llvm::sys::fs::OF_TextWithCRLF), - m_record(true) {} - -public: - const FileSpec &GetFilename() { return m_filename; } - - void Stop() { - assert(m_record); - m_record = false; - } - -private: - FileSpec m_filename; - -protected: - llvm::raw_fd_ostream m_os; - bool m_record; -}; - -/// Recorder that records its data as text to a file. -class DataRecorder : public AbstractRecorder { -public: - DataRecorder(const FileSpec &filename, std::error_code &ec) - : AbstractRecorder(filename, ec) {} - - static llvm::Expected> - Create(const FileSpec &filename); - - template void Record(const T &t, bool newline = false) { - if (!m_record) - return; - m_os << t; - if (newline) - m_os << '\n'; - m_os.flush(); - } -}; - -/// Recorder that records its data as YAML to a file. -class YamlRecorder : public AbstractRecorder { -public: - YamlRecorder(const FileSpec &filename, std::error_code &ec) - : AbstractRecorder(filename, ec) {} - - static llvm::Expected> - Create(const FileSpec &filename); - - template void Record(const T &t) { - if (!m_record) - return; - llvm::yaml::Output yout(m_os); - // The YAML traits are defined as non-const because they are used for - // serialization and deserialization. The cast is safe because - // serialization doesn't modify the object. - yout << const_cast(t); - m_os.flush(); - } -}; - -class FlushingFileCollector : public llvm::FileCollectorBase { -public: - FlushingFileCollector(llvm::StringRef files_path, llvm::StringRef dirs_path, - std::error_code &ec); - -protected: - void addFileImpl(llvm::StringRef file) override; - - llvm::vfs::directory_iterator - addDirectoryImpl(const llvm::Twine &dir, - llvm::IntrusiveRefCntPtr vfs, - std::error_code &dir_ec) override; - - llvm::Optional m_files_os; - llvm::Optional m_dirs_os; -}; - -class FileProvider : public Provider { -public: - struct Info { - static const char *name; - static const char *file; - }; - - FileProvider(const FileSpec &directory) : Provider(directory) { - std::error_code ec; - m_collector = std::make_shared( - directory.CopyByAppendingPathComponent("files.txt").GetPath(), - directory.CopyByAppendingPathComponent("dirs.txt").GetPath(), ec); - if (ec) - m_collector.reset(); - } - - std::shared_ptr GetFileCollector() { - return m_collector; - } - - void RecordInterestingDirectory(const llvm::Twine &dir); - void RecordInterestingDirectoryRecursive(const llvm::Twine &dir); - - static char ID; - -private: - std::shared_ptr m_collector; -}; - -/// Provider for the LLDB version number. -/// -/// When the reproducer is kept, it writes the lldb version to a file named -/// version.txt in the reproducer root. -class VersionProvider : public Provider { -public: - VersionProvider(const FileSpec &directory) : Provider(directory) {} - struct Info { - static const char *name; - static const char *file; - }; - void SetVersion(std::string version) { - assert(m_version.empty()); - m_version = std::move(version); - } - void Keep() override; - std::string m_version; - static char ID; -}; - -/// Abstract provider to storing directory paths. -template class DirectoryProvider : public repro::Provider { -public: - DirectoryProvider(const FileSpec &root) : Provider(root) {} - void SetDirectory(std::string directory) { - m_directory = std::move(directory); - } - llvm::StringRef GetDirectory() { return m_directory; } - - void Keep() override { - FileSpec file = this->GetRoot().CopyByAppendingPathComponent(T::Info::file); - std::error_code ec; - llvm::raw_fd_ostream os(file.GetPath(), ec, llvm::sys::fs::OF_TextWithCRLF); - if (ec) - return; - os << m_directory << "\n"; - } - -protected: - std::string m_directory; -}; - -/// Provider for the current working directory. -/// -/// When the reproducer is kept, it writes lldb's current working directory to -/// a file named cwd.txt in the reproducer root. -class WorkingDirectoryProvider - : public DirectoryProvider { -public: - WorkingDirectoryProvider(const FileSpec &directory) - : DirectoryProvider(directory) { - llvm::SmallString<128> cwd; - if (std::error_code EC = llvm::sys::fs::current_path(cwd)) - return; - SetDirectory(std::string(cwd)); - } - struct Info { - static const char *name; - static const char *file; - }; - static char ID; -}; - -/// Provider for the home directory. -/// -/// When the reproducer is kept, it writes the user's home directory to a file -/// a file named home.txt in the reproducer root. -class HomeDirectoryProvider : public DirectoryProvider { -public: - HomeDirectoryProvider(const FileSpec &directory) - : DirectoryProvider(directory) { - llvm::SmallString<128> home_dir; - llvm::sys::path::home_directory(home_dir); - SetDirectory(std::string(home_dir)); - } - struct Info { - static const char *name; - static const char *file; - }; - static char ID; -}; - -/// Provider for mapping UUIDs to symbol and executable files. -class SymbolFileProvider : public Provider { -public: - SymbolFileProvider(const FileSpec &directory) - : Provider(directory), m_symbol_files() {} - - void AddSymbolFile(const UUID *uuid, const FileSpec &module_path, - const FileSpec &symbol_path); - void Keep() override; - - struct Entry { - Entry() = default; - Entry(std::string uuid) : uuid(std::move(uuid)) {} - Entry(std::string uuid, std::string module_path, std::string symbol_path) - : uuid(std::move(uuid)), module_path(std::move(module_path)), - symbol_path(std::move(symbol_path)) {} - - bool operator==(const Entry &rhs) const { return uuid == rhs.uuid; } - bool operator<(const Entry &rhs) const { return uuid < rhs.uuid; } - - std::string uuid; - std::string module_path; - std::string symbol_path; - }; - - struct Info { - static const char *name; - static const char *file; - }; - static char ID; - -private: - std::vector m_symbol_files; -}; - -/// The MultiProvider is a provider that hands out recorder which can be used -/// to capture data for different instances of the same object. The recorders -/// can be passed around or stored as an instance member. -/// -/// The Info::file for the MultiProvider contains an index of files for every -/// recorder. Use the MultiLoader to read the index and get the individual -/// files. -template -class MultiProvider : public repro::Provider { -public: - MultiProvider(const FileSpec &directory) : Provider(directory) {} - - T *GetNewRecorder() { - std::size_t i = m_recorders.size() + 1; - std::string filename = (llvm::Twine(V::Info::name) + llvm::Twine("-") + - llvm::Twine(i) + llvm::Twine(".yaml")) - .str(); - auto recorder_or_error = - T::Create(this->GetRoot().CopyByAppendingPathComponent(filename)); - if (!recorder_or_error) { - llvm::consumeError(recorder_or_error.takeError()); - return nullptr; - } - - m_recorders.push_back(std::move(*recorder_or_error)); - return m_recorders.back().get(); - } - - void Keep() override { - std::vector files; - for (auto &recorder : m_recorders) { - recorder->Stop(); - files.push_back(recorder->GetFilename().GetPath()); - } - - FileSpec file = this->GetRoot().CopyByAppendingPathComponent(V::Info::file); - std::error_code ec; - llvm::raw_fd_ostream os(file.GetPath(), ec, llvm::sys::fs::OF_TextWithCRLF); - if (ec) - return; - llvm::yaml::Output yout(os); - yout << files; - } - - void Discard() override { m_recorders.clear(); } - -private: - std::vector> m_recorders; -}; - -class CommandProvider : public MultiProvider { -public: - struct Info { - static const char *name; - static const char *file; - }; - - CommandProvider(const FileSpec &directory) - : MultiProvider(directory) {} - - static char ID; -}; - -class ProcessInfoRecorder : public AbstractRecorder { -public: - ProcessInfoRecorder(const FileSpec &filename, std::error_code &ec) - : AbstractRecorder(filename, ec) {} - - static llvm::Expected> - Create(const FileSpec &filename); - - void Record(const ProcessInstanceInfoList &process_infos); -}; - -class ProcessInfoProvider : public repro::Provider { -public: - struct Info { - static const char *name; - static const char *file; - }; - - ProcessInfoProvider(const FileSpec &directory) : Provider(directory) {} - - ProcessInfoRecorder *GetNewProcessInfoRecorder(); - - void Keep() override; - void Discard() override; - - static char ID; - -private: - std::unique_ptr m_stream_up; - std::vector> m_process_info_recorders; -}; - -/// Loader for data captured with the MultiProvider. It will read the index and -/// return the path to the files in the index. -template class MultiLoader { -public: - MultiLoader(std::vector files) : m_files(std::move(files)) {} - - static std::unique_ptr Create(Loader *loader) { - if (!loader) - return {}; - - FileSpec file = loader->GetFile(); - if (!file) - return {}; - - auto error_or_file = llvm::MemoryBuffer::getFile(file.GetPath()); - if (auto err = error_or_file.getError()) - return {}; - - std::vector files; - llvm::yaml::Input yin((*error_or_file)->getBuffer()); - yin >> files; - - if (auto err = yin.error()) - return {}; - - for (auto &file : files) { - FileSpec absolute_path = - loader->GetRoot().CopyByAppendingPathComponent(file); - file = absolute_path.GetPath(); - } - - return std::make_unique>(std::move(files)); - } - - llvm::Optional GetNextFile() { - if (m_index >= m_files.size()) - return {}; - return m_files[m_index++]; - } - -private: - std::vector m_files; - unsigned m_index = 0; -}; - -class SymbolFileLoader { -public: - SymbolFileLoader(Loader *loader); - std::pair GetPaths(const UUID *uuid) const; - -private: - // Sorted list of UUID to path mappings. - std::vector m_symbol_files; -}; - -/// Helper to read directories written by the DirectoryProvider. -template -llvm::Expected GetDirectoryFrom(repro::Loader *loader) { - llvm::Expected dir = loader->LoadBuffer(); - if (!dir) - return dir.takeError(); - return std::string(llvm::StringRef(*dir).rtrim()); -} - -} // namespace repro -} // namespace lldb_private - -LLVM_YAML_IS_SEQUENCE_VECTOR(lldb_private::repro::SymbolFileProvider::Entry) - -namespace llvm { -namespace yaml { -template <> -struct MappingTraits { - static void mapping(IO &io, - lldb_private::repro::SymbolFileProvider::Entry &entry) { - io.mapRequired("uuid", entry.uuid); - io.mapRequired("module-path", entry.module_path); - io.mapRequired("symbol-path", entry.symbol_path); - } -}; -} // namespace yaml -} // namespace llvm - -#endif // LLDB_UTILITY_REPRODUCER_PROVIDER_H diff --git a/gnu/llvm/lldb/include/lldb/Utility/StreamCallback.h b/gnu/llvm/lldb/include/lldb/Utility/StreamCallback.h deleted file mode 100644 index d234cbea85c..00000000000 --- a/gnu/llvm/lldb/include/lldb/Utility/StreamCallback.h +++ /dev/null @@ -1,35 +0,0 @@ -//===-- StreamCallback.h -----------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UTILITY_STREAMCALLBACK_H -#define LLDB_UTILITY_STREAMCALLBACK_H - -#include "lldb/lldb-types.h" -#include "llvm/Support/raw_ostream.h" - -#include -#include - -namespace lldb_private { - -class StreamCallback : public llvm::raw_ostream { -public: - StreamCallback(lldb::LogOutputCallback callback, void *baton); - ~StreamCallback() override = default; - -private: - lldb::LogOutputCallback m_callback; - void *m_baton; - - void write_impl(const char *Ptr, size_t Size) override; - uint64_t current_pos() const override; -}; - -} // namespace lldb_private - -#endif // LLDB_UTILITY_STREAMCALLBACK_H diff --git a/gnu/llvm/lldb/include/lldb/lldb-private-defines.h b/gnu/llvm/lldb/include/lldb/lldb-private-defines.h deleted file mode 100644 index d66e6ef1518..00000000000 --- a/gnu/llvm/lldb/include/lldb/lldb-private-defines.h +++ /dev/null @@ -1,36 +0,0 @@ -//===-- lldb-private-defines.h ----------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_LLDB_PRIVATE_DEFINES_H -#define LLDB_LLDB_PRIVATE_DEFINES_H - -#if defined(__cplusplus) - -// Include Compiler.h here so we don't define LLVM_FALLTHROUGH and then -// Compiler.h later tries to redefine it. -#include "llvm/Support/Compiler.h" - -#ifndef LLVM_FALLTHROUGH - -#ifndef __has_cpp_attribute -#define __has_cpp_attribute(x) 0 -#endif - -/// \macro LLVM_FALLTHROUGH -/// Marks an empty statement preceding a deliberate switch fallthrough. -#if __has_cpp_attribute(clang::fallthrough) -#define LLVM_FALLTHROUGH [[clang::fallthrough]] -#else -#define LLVM_FALLTHROUGH -#endif - -#endif // ifndef LLVM_FALLTHROUGH - -#endif // #if defined(__cplusplus) - -#endif // LLDB_LLDB_PRIVATE_DEFINES_H diff --git a/gnu/llvm/lldb/packages/Python/lldbconfig/__init__.py b/gnu/llvm/lldb/packages/Python/lldbconfig/__init__.py deleted file mode 100644 index 6c43d709df7..00000000000 --- a/gnu/llvm/lldb/packages/Python/lldbconfig/__init__.py +++ /dev/null @@ -1 +0,0 @@ -INITIALIZE = True diff --git a/gnu/llvm/lldb/source/API/SBReproducerPrivate.h b/gnu/llvm/lldb/source/API/SBReproducerPrivate.h deleted file mode 100644 index 02ac31c2ad8..00000000000 --- a/gnu/llvm/lldb/source/API/SBReproducerPrivate.h +++ /dev/null @@ -1,78 +0,0 @@ -//===-- SBReproducerPrivate.h -----------------------------------*- C++ -*-===// -// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_SOURCE_API_SBREPRODUCERPRIVATE_H -#define LLDB_SOURCE_API_SBREPRODUCERPRIVATE_H - -#include "lldb/API/SBReproducer.h" - -#include "lldb/Utility/FileSpec.h" -#include "lldb/Utility/Log.h" -#include "lldb/Utility/Reproducer.h" -#include "lldb/Utility/ReproducerInstrumentation.h" -#include "lldb/Utility/ReproducerProvider.h" - -#include "llvm/ADT/DenseMap.h" - -#define LLDB_GET_INSTRUMENTATION_DATA() \ - lldb_private::repro::InstrumentationData::Instance() - -namespace lldb_private { -namespace repro { - -class SBRegistry : public Registry { -public: - SBRegistry(); -}; - -class SBProvider : public Provider { -public: - struct Info { - static const char *name; - static const char *file; - }; - - SBProvider(const FileSpec &directory) - : Provider(directory), - m_stream(directory.CopyByAppendingPathComponent("sbapi.bin").GetPath(), - m_ec, llvm::sys::fs::OpenFlags::OF_None), - m_serializer(m_stream) {} - - Serializer &GetSerializer() { return m_serializer; } - Registry &GetRegistry() { return m_registry; } - - static char ID; - -private: - std::error_code m_ec; - llvm::raw_fd_ostream m_stream; - Serializer m_serializer; - SBRegistry m_registry; -}; - -class ReplayData { -public: - ReplayData(std::unique_ptr memory_buffer) - : m_memory_buffer(std::move(memory_buffer)), m_registry(), - m_deserializer(m_memory_buffer->getBuffer()) {} - Deserializer &GetDeserializer() { return m_deserializer; } - Registry &GetRegistry() { return m_registry; } - -private: - std::unique_ptr m_memory_buffer; - SBRegistry m_registry; - Deserializer m_deserializer; -}; - -template void RegisterMethods(Registry &R); - -} // namespace repro -} // namespace lldb_private - -#endif diff --git a/gnu/llvm/lldb/source/API/liblldb.xcode.exports b/gnu/llvm/lldb/source/API/liblldb.xcode.exports deleted file mode 100644 index 9c194fa6ff6..00000000000 --- a/gnu/llvm/lldb/source/API/liblldb.xcode.exports +++ /dev/null @@ -1,3 +0,0 @@ -__ZN4lldb* -__ZNK4lldb* -_init_lld* diff --git a/gnu/llvm/lldb/source/Commands/CommandObjectReproducer.cpp b/gnu/llvm/lldb/source/Commands/CommandObjectReproducer.cpp deleted file mode 100644 index 01f9dc64e6f..00000000000 --- a/gnu/llvm/lldb/source/Commands/CommandObjectReproducer.cpp +++ /dev/null @@ -1,722 +0,0 @@ -//===-- CommandObjectReproducer.cpp ---------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "CommandObjectReproducer.h" - -#include "lldb/Host/HostInfo.h" -#include "lldb/Host/OptionParser.h" -#include "lldb/Interpreter/CommandInterpreter.h" -#include "lldb/Interpreter/CommandReturnObject.h" -#include "lldb/Interpreter/OptionArgParser.h" -#include "lldb/Utility/GDBRemote.h" -#include "lldb/Utility/ProcessInfo.h" -#include "lldb/Utility/Reproducer.h" - -#include - -using namespace lldb; -using namespace llvm; -using namespace lldb_private; -using namespace lldb_private::repro; - -enum ReproducerProvider { - eReproducerProviderCommands, - eReproducerProviderFiles, - eReproducerProviderSymbolFiles, - eReproducerProviderGDB, - eReproducerProviderProcessInfo, - eReproducerProviderVersion, - eReproducerProviderWorkingDirectory, - eReproducerProviderHomeDirectory, - eReproducerProviderNone -}; - -static constexpr OptionEnumValueElement g_reproducer_provider_type[] = { - { - eReproducerProviderCommands, - "commands", - "Command Interpreter Commands", - }, - { - eReproducerProviderFiles, - "files", - "Files", - }, - { - eReproducerProviderSymbolFiles, - "symbol-files", - "Symbol Files", - }, - { - eReproducerProviderGDB, - "gdb", - "GDB Remote Packets", - }, - { - eReproducerProviderProcessInfo, - "processes", - "Process Info", - }, - { - eReproducerProviderVersion, - "version", - "Version", - }, - { - eReproducerProviderWorkingDirectory, - "cwd", - "Working Directory", - }, - { - eReproducerProviderHomeDirectory, - "home", - "Home Directory", - }, - { - eReproducerProviderNone, - "none", - "None", - }, -}; - -static constexpr OptionEnumValues ReproducerProviderType() { - return OptionEnumValues(g_reproducer_provider_type); -} - -#define LLDB_OPTIONS_reproducer_dump -#include "CommandOptions.inc" - -enum ReproducerCrashSignal { - eReproducerCrashSigill, - eReproducerCrashSigsegv, -}; - -static constexpr OptionEnumValueElement g_reproducer_signaltype[] = { - { - eReproducerCrashSigill, - "SIGILL", - "Illegal instruction", - }, - { - eReproducerCrashSigsegv, - "SIGSEGV", - "Segmentation fault", - }, -}; - -static constexpr OptionEnumValues ReproducerSignalType() { - return OptionEnumValues(g_reproducer_signaltype); -} - -#define LLDB_OPTIONS_reproducer_xcrash -#include "CommandOptions.inc" - -#define LLDB_OPTIONS_reproducer_verify -#include "CommandOptions.inc" - -template -llvm::Expected static ReadFromYAML(StringRef filename) { - auto error_or_file = MemoryBuffer::getFile(filename); - if (auto err = error_or_file.getError()) { - return errorCodeToError(err); - } - - T t; - yaml::Input yin((*error_or_file)->getBuffer()); - yin >> t; - - if (auto err = yin.error()) { - return errorCodeToError(err); - } - - return t; -} - -static void SetError(CommandReturnObject &result, Error err) { - result.AppendError(toString(std::move(err))); -} - -/// Create a loader from the given path if specified. Otherwise use the current -/// loader used for replay. -static Loader * -GetLoaderFromPathOrCurrent(llvm::Optional &loader_storage, - CommandReturnObject &result, - FileSpec reproducer_path) { - if (reproducer_path) { - loader_storage.emplace(reproducer_path); - Loader *loader = &(*loader_storage); - if (Error err = loader->LoadIndex()) { - // This is a hard error and will set the result to eReturnStatusFailed. - SetError(result, std::move(err)); - return nullptr; - } - return loader; - } - - if (Loader *loader = Reproducer::Instance().GetLoader()) - return loader; - - // This is a soft error because this is expected to fail during capture. - result.AppendError( - "Not specifying a reproducer is only support during replay."); - result.SetStatus(eReturnStatusSuccessFinishNoResult); - return nullptr; -} - -class CommandObjectReproducerGenerate : public CommandObjectParsed { -public: - CommandObjectReproducerGenerate(CommandInterpreter &interpreter) - : CommandObjectParsed( - interpreter, "reproducer generate", - "Generate reproducer on disk. When the debugger is in capture " - "mode, this command will output the reproducer to a directory on " - "disk and quit. In replay mode this command in a no-op.", - nullptr) {} - - ~CommandObjectReproducerGenerate() override = default; - -protected: - bool DoExecute(Args &command, CommandReturnObject &result) override { - if (!command.empty()) { - result.AppendErrorWithFormat("'%s' takes no arguments", - m_cmd_name.c_str()); - return false; - } - - auto &r = Reproducer::Instance(); - if (auto generator = r.GetGenerator()) { - generator->Keep(); - if (llvm::Error e = repro::Finalize(r.GetReproducerPath())) { - SetError(result, std::move(e)); - return result.Succeeded(); - } - } else if (r.IsReplaying()) { - // Make this operation a NO-OP in replay mode. - result.SetStatus(eReturnStatusSuccessFinishNoResult); - return result.Succeeded(); - } else { - result.AppendErrorWithFormat("Unable to get the reproducer generator"); - return false; - } - - result.GetOutputStream() - << "Reproducer written to '" << r.GetReproducerPath() << "'\n"; - result.GetOutputStream() - << "Please have a look at the directory to assess if you're willing to " - "share the contained information.\n"; - - m_interpreter.BroadcastEvent( - CommandInterpreter::eBroadcastBitQuitCommandReceived); - result.SetStatus(eReturnStatusQuit); - return result.Succeeded(); - } -}; - -class CommandObjectReproducerXCrash : public CommandObjectParsed { -public: - CommandObjectReproducerXCrash(CommandInterpreter &interpreter) - : CommandObjectParsed(interpreter, "reproducer xcrash", - "Intentionally force the debugger to crash in " - "order to trigger and test reproducer generation.", - nullptr) {} - - ~CommandObjectReproducerXCrash() override = default; - - Options *GetOptions() override { return &m_options; } - - class CommandOptions : public Options { - public: - CommandOptions() : Options() {} - - ~CommandOptions() override = default; - - Status SetOptionValue(uint32_t option_idx, StringRef option_arg, - ExecutionContext *execution_context) override { - Status error; - const int short_option = m_getopt_table[option_idx].val; - - switch (short_option) { - case 's': - signal = (ReproducerCrashSignal)OptionArgParser::ToOptionEnum( - option_arg, GetDefinitions()[option_idx].enum_values, 0, error); - if (!error.Success()) - error.SetErrorStringWithFormat("unrecognized value for signal '%s'", - option_arg.str().c_str()); - break; - default: - llvm_unreachable("Unimplemented option"); - } - - return error; - } - - void OptionParsingStarting(ExecutionContext *execution_context) override { - signal = eReproducerCrashSigsegv; - } - - ArrayRef GetDefinitions() override { - return makeArrayRef(g_reproducer_xcrash_options); - } - - ReproducerCrashSignal signal = eReproducerCrashSigsegv; - }; - -protected: - bool DoExecute(Args &command, CommandReturnObject &result) override { - if (!command.empty()) { - result.AppendErrorWithFormat("'%s' takes no arguments", - m_cmd_name.c_str()); - return false; - } - - auto &r = Reproducer::Instance(); - - if (!r.IsCapturing() && !r.IsReplaying()) { - result.AppendError( - "forcing a crash is only supported when capturing a reproducer."); - result.SetStatus(eReturnStatusSuccessFinishNoResult); - return false; - } - - switch (m_options.signal) { - case eReproducerCrashSigill: - std::raise(SIGILL); - break; - case eReproducerCrashSigsegv: - std::raise(SIGSEGV); - break; - } - - result.SetStatus(eReturnStatusQuit); - return result.Succeeded(); - } - -private: - CommandOptions m_options; -}; - -class CommandObjectReproducerStatus : public CommandObjectParsed { -public: - CommandObjectReproducerStatus(CommandInterpreter &interpreter) - : CommandObjectParsed( - interpreter, "reproducer status", - "Show the current reproducer status. In capture mode the " - "debugger " - "is collecting all the information it needs to create a " - "reproducer. In replay mode the reproducer is replaying a " - "reproducer. When the reproducers are off, no data is collected " - "and no reproducer can be generated.", - nullptr) {} - - ~CommandObjectReproducerStatus() override = default; - -protected: - bool DoExecute(Args &command, CommandReturnObject &result) override { - if (!command.empty()) { - result.AppendErrorWithFormat("'%s' takes no arguments", - m_cmd_name.c_str()); - return false; - } - - auto &r = Reproducer::Instance(); - if (r.IsCapturing()) { - result.GetOutputStream() << "Reproducer is in capture mode.\n"; - } else if (r.IsReplaying()) { - result.GetOutputStream() << "Reproducer is in replay mode.\n"; - } else { - result.GetOutputStream() << "Reproducer is off.\n"; - } - - if (r.IsCapturing() || r.IsReplaying()) { - result.GetOutputStream() - << "Path: " << r.GetReproducerPath().GetPath() << '\n'; - } - - // Auto generate is hidden unless enabled because this is mostly for - // development and testing. - if (Generator *g = r.GetGenerator()) { - if (g->IsAutoGenerate()) - result.GetOutputStream() << "Auto generate: on\n"; - } - - result.SetStatus(eReturnStatusSuccessFinishResult); - return result.Succeeded(); - } -}; - -class CommandObjectReproducerDump : public CommandObjectParsed { -public: - CommandObjectReproducerDump(CommandInterpreter &interpreter) - : CommandObjectParsed(interpreter, "reproducer dump", - "Dump the information contained in a reproducer. " - "If no reproducer is specified during replay, it " - "dumps the content of the current reproducer.", - nullptr) {} - - ~CommandObjectReproducerDump() override = default; - - Options *GetOptions() override { return &m_options; } - - class CommandOptions : public Options { - public: - CommandOptions() : Options(), file() {} - - ~CommandOptions() override = default; - - Status SetOptionValue(uint32_t option_idx, StringRef option_arg, - ExecutionContext *execution_context) override { - Status error; - const int short_option = m_getopt_table[option_idx].val; - - switch (short_option) { - case 'f': - file.SetFile(option_arg, FileSpec::Style::native); - FileSystem::Instance().Resolve(file); - break; - case 'p': - provider = (ReproducerProvider)OptionArgParser::ToOptionEnum( - option_arg, GetDefinitions()[option_idx].enum_values, 0, error); - if (!error.Success()) - error.SetErrorStringWithFormat("unrecognized value for provider '%s'", - option_arg.str().c_str()); - break; - default: - llvm_unreachable("Unimplemented option"); - } - - return error; - } - - void OptionParsingStarting(ExecutionContext *execution_context) override { - file.Clear(); - provider = eReproducerProviderNone; - } - - ArrayRef GetDefinitions() override { - return makeArrayRef(g_reproducer_dump_options); - } - - FileSpec file; - ReproducerProvider provider = eReproducerProviderNone; - }; - -protected: - bool DoExecute(Args &command, CommandReturnObject &result) override { - if (!command.empty()) { - result.AppendErrorWithFormat("'%s' takes no arguments", - m_cmd_name.c_str()); - return false; - } - - llvm::Optional loader_storage; - Loader *loader = - GetLoaderFromPathOrCurrent(loader_storage, result, m_options.file); - if (!loader) - return false; - - switch (m_options.provider) { - case eReproducerProviderFiles: { - FileSpec vfs_mapping = loader->GetFile(); - - // Read the VFS mapping. - ErrorOr> buffer = - vfs::getRealFileSystem()->getBufferForFile(vfs_mapping.GetPath()); - if (!buffer) { - SetError(result, errorCodeToError(buffer.getError())); - return false; - } - - // Initialize a VFS from the given mapping. - IntrusiveRefCntPtr vfs = vfs::getVFSFromYAML( - std::move(buffer.get()), nullptr, vfs_mapping.GetPath()); - - // Dump the VFS to a buffer. - std::string str; - raw_string_ostream os(str); - static_cast(*vfs).dump(os); - os.flush(); - - // Return the string. - result.AppendMessage(str); - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } - case eReproducerProviderSymbolFiles: { - Expected symbol_files = - loader->LoadBuffer(); - if (!symbol_files) { - SetError(result, symbol_files.takeError()); - return false; - } - - std::vector entries; - llvm::yaml::Input yin(*symbol_files); - yin >> entries; - - for (const auto &entry : entries) { - result.AppendMessageWithFormat("- uuid: %s\n", - entry.uuid.c_str()); - result.AppendMessageWithFormat(" module path: %s\n", - entry.module_path.c_str()); - result.AppendMessageWithFormat(" symbol path: %s\n", - entry.symbol_path.c_str()); - } - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } - case eReproducerProviderVersion: { - Expected version = loader->LoadBuffer(); - if (!version) { - SetError(result, version.takeError()); - return false; - } - result.AppendMessage(*version); - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } - case eReproducerProviderWorkingDirectory: { - Expected cwd = - repro::GetDirectoryFrom(loader); - if (!cwd) { - SetError(result, cwd.takeError()); - return false; - } - result.AppendMessage(*cwd); - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } - case eReproducerProviderHomeDirectory: { - Expected home = - repro::GetDirectoryFrom(loader); - if (!home) { - SetError(result, home.takeError()); - return false; - } - result.AppendMessage(*home); - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } - case eReproducerProviderCommands: { - std::unique_ptr> multi_loader = - repro::MultiLoader::Create(loader); - if (!multi_loader) { - SetError(result, - make_error("Unable to create command loader.", - llvm::inconvertibleErrorCode())); - return false; - } - - // Iterate over the command files and dump them. - llvm::Optional command_file; - while ((command_file = multi_loader->GetNextFile())) { - if (!command_file) - break; - - auto command_buffer = llvm::MemoryBuffer::getFile(*command_file); - if (auto err = command_buffer.getError()) { - SetError(result, errorCodeToError(err)); - return false; - } - result.AppendMessage((*command_buffer)->getBuffer()); - } - - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } - case eReproducerProviderGDB: { - std::unique_ptr> - multi_loader = - repro::MultiLoader::Create(loader); - - if (!multi_loader) { - SetError(result, - make_error("Unable to create GDB loader.", - llvm::inconvertibleErrorCode())); - return false; - } - - llvm::Optional gdb_file; - while ((gdb_file = multi_loader->GetNextFile())) { - if (llvm::Expected> packets = - ReadFromYAML>(*gdb_file)) { - for (GDBRemotePacket &packet : *packets) { - packet.Dump(result.GetOutputStream()); - } - } else { - SetError(result, packets.takeError()); - return false; - } - } - - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } - case eReproducerProviderProcessInfo: { - std::unique_ptr> - multi_loader = - repro::MultiLoader::Create(loader); - - if (!multi_loader) { - SetError(result, make_error( - llvm::inconvertibleErrorCode(), - "Unable to create process info loader.")); - return false; - } - - llvm::Optional process_file; - while ((process_file = multi_loader->GetNextFile())) { - if (llvm::Expected infos = - ReadFromYAML(*process_file)) { - for (ProcessInstanceInfo info : *infos) - info.Dump(result.GetOutputStream(), HostInfo::GetUserIDResolver()); - } else { - SetError(result, infos.takeError()); - return false; - } - } - - result.SetStatus(eReturnStatusSuccessFinishResult); - return true; - } - case eReproducerProviderNone: - result.AppendError("No valid provider specified."); - return false; - } - - result.SetStatus(eReturnStatusSuccessFinishNoResult); - return result.Succeeded(); - } - -private: - CommandOptions m_options; -}; - -class CommandObjectReproducerVerify : public CommandObjectParsed { -public: - CommandObjectReproducerVerify(CommandInterpreter &interpreter) - : CommandObjectParsed(interpreter, "reproducer verify", - "Verify the contents of a reproducer. " - "If no reproducer is specified during replay, it " - "verifies the content of the current reproducer.", - nullptr) {} - - ~CommandObjectReproducerVerify() override = default; - - Options *GetOptions() override { return &m_options; } - - class CommandOptions : public Options { - public: - CommandOptions() : Options(), file() {} - - ~CommandOptions() override = default; - - Status SetOptionValue(uint32_t option_idx, StringRef option_arg, - ExecutionContext *execution_context) override { - Status error; - const int short_option = m_getopt_table[option_idx].val; - - switch (short_option) { - case 'f': - file.SetFile(option_arg, FileSpec::Style::native); - FileSystem::Instance().Resolve(file); - break; - default: - llvm_unreachable("Unimplemented option"); - } - - return error; - } - - void OptionParsingStarting(ExecutionContext *execution_context) override { - file.Clear(); - } - - ArrayRef GetDefinitions() override { - return makeArrayRef(g_reproducer_verify_options); - } - - FileSpec file; - }; - -protected: - bool DoExecute(Args &command, CommandReturnObject &result) override { - if (!command.empty()) { - result.AppendErrorWithFormat("'%s' takes no arguments", - m_cmd_name.c_str()); - return false; - } - - llvm::Optional loader_storage; - Loader *loader = - GetLoaderFromPathOrCurrent(loader_storage, result, m_options.file); - if (!loader) - return false; - - bool errors = false; - auto error_callback = [&](llvm::StringRef error) { - errors = true; - result.AppendError(error); - }; - - bool warnings = false; - auto warning_callback = [&](llvm::StringRef warning) { - warnings = true; - result.AppendWarning(warning); - }; - - auto note_callback = [&](llvm::StringRef warning) { - result.AppendMessage(warning); - }; - - Verifier verifier(loader); - verifier.Verify(error_callback, warning_callback, note_callback); - - if (warnings || errors) { - result.AppendMessage("reproducer verification failed"); - result.SetStatus(eReturnStatusFailed); - } else { - result.AppendMessage("reproducer verification succeeded"); - result.SetStatus(eReturnStatusSuccessFinishResult); - } - - return result.Succeeded(); - } - -private: - CommandOptions m_options; -}; - -CommandObjectReproducer::CommandObjectReproducer( - CommandInterpreter &interpreter) - : CommandObjectMultiword( - interpreter, "reproducer", - "Commands for manipulating reproducers. Reproducers make it " - "possible " - "to capture full debug sessions with all its dependencies. The " - "resulting reproducer is used to replay the debug session while " - "debugging the debugger.\n" - "Because reproducers need the whole the debug session from " - "beginning to end, you need to launch the debugger in capture or " - "replay mode, commonly though the command line driver.\n" - "Reproducers are unrelated record-replay debugging, as you cannot " - "interact with the debugger during replay.\n", - "reproducer []") { - LoadSubCommand( - "generate", - CommandObjectSP(new CommandObjectReproducerGenerate(interpreter))); - LoadSubCommand("status", CommandObjectSP( - new CommandObjectReproducerStatus(interpreter))); - LoadSubCommand("dump", - CommandObjectSP(new CommandObjectReproducerDump(interpreter))); - LoadSubCommand("verify", CommandObjectSP( - new CommandObjectReproducerVerify(interpreter))); - LoadSubCommand("xcrash", CommandObjectSP( - new CommandObjectReproducerXCrash(interpreter))); -} - -CommandObjectReproducer::~CommandObjectReproducer() = default; diff --git a/gnu/llvm/lldb/source/Commands/CommandObjectReproducer.h b/gnu/llvm/lldb/source/Commands/CommandObjectReproducer.h deleted file mode 100644 index bdee8053549..00000000000 --- a/gnu/llvm/lldb/source/Commands/CommandObjectReproducer.h +++ /dev/null @@ -1,27 +0,0 @@ -//===-- CommandObjectReproducer.h -------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_SOURCE_COMMANDS_COMMANDOBJECTREPRODUCER_H -#define LLDB_SOURCE_COMMANDS_COMMANDOBJECTREPRODUCER_H - -#include "lldb/Interpreter/CommandObjectMultiword.h" - -namespace lldb_private { - -// CommandObjectReproducer - -class CommandObjectReproducer : public CommandObjectMultiword { -public: - CommandObjectReproducer(CommandInterpreter &interpreter); - - ~CommandObjectReproducer() override; -}; - -} // namespace lldb_private - -#endif // LLDB_SOURCE_COMMANDS_COMMANDOBJECTREPRODUCER_H diff --git a/gnu/llvm/lldb/source/Core/FormatEntity.cpp b/gnu/llvm/lldb/source/Core/FormatEntity.cpp index 4c31fb9639b..eb1681a001a 100644 --- a/gnu/llvm/lldb/source/Core/FormatEntity.cpp +++ b/gnu/llvm/lldb/source/Core/FormatEntity.cpp @@ -44,8 +44,8 @@ #include "lldb/Utility/CompletionRequest.h" #include "lldb/Utility/ConstString.h" #include "lldb/Utility/FileSpec.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" -#include "lldb/Utility/Logging.h" #include "lldb/Utility/RegisterValue.h" #include "lldb/Utility/Status.h" #include "lldb/Utility/Stream.h" @@ -263,11 +263,10 @@ constexpr Definition g_root = Entry::DefinitionWithChildren( FormatEntity::Entry::Entry(llvm::StringRef s) : string(s.data(), s.size()), printf_format(), children(), - type(Type::String), fmt(lldb::eFormatDefault), number(0), deref(false) {} + type(Type::String) {} FormatEntity::Entry::Entry(char ch) - : string(1, ch), printf_format(), children(), type(Type::String), - fmt(lldb::eFormatDefault), number(0), deref(false) {} + : string(1, ch), printf_format(), children(), type(Type::String) {} void FormatEntity::Entry::AppendChar(char ch) { if (children.empty() || children.back().type != Entry::Type::String) @@ -509,7 +508,7 @@ static bool ScanBracketedRange(llvm::StringRef subpath, size_t &close_bracket_index, const char *&var_name_final_if_array_range, int64_t &index_lower, int64_t &index_higher) { - Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS)); + Log *log = GetLog(LLDBLog::DataFormatters); close_bracket_index = llvm::StringRef::npos; const size_t open_bracket_index = subpath.find('['); if (open_bracket_index == llvm::StringRef::npos) { @@ -618,12 +617,9 @@ static bool DumpRegister(Stream &s, StackFrame *frame, RegisterKind reg_kind, static ValueObjectSP ExpandIndexedExpression(ValueObject *valobj, size_t index, bool deref_pointer) { - Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS)); - const char *ptr_deref_format = "[%d]"; - std::string ptr_deref_buffer(10, 0); - ::sprintf(&ptr_deref_buffer[0], ptr_deref_format, index); - LLDB_LOGF(log, "[ExpandIndexedExpression] name to deref: %s", - ptr_deref_buffer.c_str()); + Log *log = GetLog(LLDBLog::DataFormatters); + std::string name_to_deref = llvm::formatv("[{0}]", index); + LLDB_LOG(log, "[ExpandIndexedExpression] name to deref: {0}", name_to_deref); ValueObject::GetValueForExpressionPathOptions options; ValueObject::ExpressionPathEndResultType final_value_type; ValueObject::ExpressionPathScanEndReason reason_to_stop; @@ -631,8 +627,7 @@ static ValueObjectSP ExpandIndexedExpression(ValueObject *valobj, size_t index, (deref_pointer ? ValueObject::eExpressionPathAftermathDereference : ValueObject::eExpressionPathAftermathNothing); ValueObjectSP item = valobj->GetValueForExpressionPath( - ptr_deref_buffer.c_str(), &reason_to_stop, &final_value_type, options, - &what_next); + name_to_deref, &reason_to_stop, &final_value_type, options, &what_next); if (!item) { LLDB_LOGF(log, "[ExpandIndexedExpression] ERROR: why stopping = %d," @@ -676,7 +671,7 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, if (valobj == nullptr) return false; - Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS)); + Log *log = GetLog(LLDBLog::DataFormatters); Format custom_format = eFormatInvalid; ValueObject::ValueObjectRepresentationStyle val_obj_display = entry.string.empty() @@ -697,7 +692,7 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, case FormatEntity::Entry::Type::ScriptVariableSynthetic: is_script = true; - LLVM_FALLTHROUGH; + [[fallthrough]]; case FormatEntity::Entry::Type::VariableSynthetic: custom_format = entry.fmt; val_obj_display = (ValueObject::ValueObjectRepresentationStyle)entry.number; @@ -712,9 +707,6 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, return false; } - if (valobj == nullptr) - return false; - ValueObject::ExpressionPathAftermath what_next = (do_deref_pointer ? ValueObject::eExpressionPathAftermathDereference : ValueObject::eExpressionPathAftermathNothing); @@ -829,7 +821,7 @@ static bool DumpValue(Stream &s, const SymbolContext *sc, bitfield_name.Printf("%s:%d", target->GetTypeName().AsCString(), target->GetBitfieldBitSize()); auto type_sp = std::make_shared( - bitfield_name.GetString(), false); + bitfield_name.GetString(), lldb::eFormatterMatchExact); if (val_obj_display == ValueObject::eValueObjectRepresentationStyleSummary && !DataVisualization::GetSummaryForType(type_sp)) @@ -1043,6 +1035,71 @@ static inline bool IsToken(const char *var_name_begin, const char *var) { return (::strncmp(var_name_begin, var, strlen(var)) == 0); } +/// Parses the basename out of a demangled function name +/// that may include function arguments. Supports +/// template functions. +/// +/// Returns pointers to the opening and closing parenthesis of +/// `full_name`. Can return nullptr for either parenthesis if +/// none is exists. +static std::pair +ParseBaseName(char const *full_name) { + const char *open_paren = strchr(full_name, '('); + const char *close_paren = nullptr; + const char *generic = strchr(full_name, '<'); + // if before the arguments list begins there is a template sign + // then scan to the end of the generic args before you try to find + // the arguments list + if (generic && open_paren && generic < open_paren) { + int generic_depth = 1; + ++generic; + for (; *generic && generic_depth > 0; generic++) { + if (*generic == '<') + generic_depth++; + if (*generic == '>') + generic_depth--; + } + if (*generic) + open_paren = strchr(generic, '('); + else + open_paren = nullptr; + } + + if (open_paren) { + if (IsToken(open_paren, "(anonymous namespace)")) { + open_paren = strchr(open_paren + strlen("(anonymous namespace)"), '('); + if (open_paren) + close_paren = strchr(open_paren, ')'); + } else + close_paren = strchr(open_paren, ')'); + } + + return {open_paren, close_paren}; +} + +/// Writes out the function name in 'full_name' to 'out_stream' +/// but replaces each argument type with the variable name +/// and the corresponding pretty-printed value +static void PrettyPrintFunctionNameWithArgs(Stream &out_stream, + char const *full_name, + ExecutionContextScope *exe_scope, + VariableList const &args) { + auto [open_paren, close_paren] = ParseBaseName(full_name); + if (open_paren) + out_stream.Write(full_name, open_paren - full_name + 1); + else { + out_stream.PutCString(full_name); + out_stream.PutChar('('); + } + + FormatEntity::PrettyPrintFunctionArguments(out_stream, args, exe_scope); + + if (close_paren) + out_stream.PutCString(close_paren); + else + out_stream.PutChar(')'); +} + bool FormatEntity::FormatStringRef(const llvm::StringRef &format_str, Stream &s, const SymbolContext *sc, const ExecutionContext *exe_ctx, @@ -1650,100 +1707,7 @@ bool FormatEntity::Format(const Entry &entry, Stream &s, variable_list_sp->AppendVariablesWithScope( eValueTypeVariableArgument, args); if (args.GetSize() > 0) { - const char *open_paren = strchr(cstr, '('); - const char *close_paren = nullptr; - const char *generic = strchr(cstr, '<'); - // if before the arguments list begins there is a template sign - // then scan to the end of the generic args before you try to find - // the arguments list - if (generic && open_paren && generic < open_paren) { - int generic_depth = 1; - ++generic; - for (; *generic && generic_depth > 0; generic++) { - if (*generic == '<') - generic_depth++; - if (*generic == '>') - generic_depth--; - } - if (*generic) - open_paren = strchr(generic, '('); - else - open_paren = nullptr; - } - if (open_paren) { - if (IsToken(open_paren, "(anonymous namespace)")) { - open_paren = - strchr(open_paren + strlen("(anonymous namespace)"), '('); - if (open_paren) - close_paren = strchr(open_paren, ')'); - } else - close_paren = strchr(open_paren, ')'); - } - - if (open_paren) - s.Write(cstr, open_paren - cstr + 1); - else { - s.PutCString(cstr); - s.PutChar('('); - } - const size_t num_args = args.GetSize(); - for (size_t arg_idx = 0; arg_idx < num_args; ++arg_idx) { - std::string buffer; - - VariableSP var_sp(args.GetVariableAtIndex(arg_idx)); - ValueObjectSP var_value_sp( - ValueObjectVariable::Create(exe_scope, var_sp)); - StreamString ss; - llvm::StringRef var_representation; - const char *var_name = var_value_sp->GetName().GetCString(); - if (var_value_sp->GetCompilerType().IsValid()) { - if (var_value_sp && exe_scope->CalculateTarget()) - var_value_sp = - var_value_sp->GetQualifiedRepresentationIfAvailable( - exe_scope->CalculateTarget() - ->TargetProperties::GetPreferDynamicValue(), - exe_scope->CalculateTarget() - ->TargetProperties::GetEnableSyntheticValue()); - if (var_value_sp->GetCompilerType().IsAggregateType() && - DataVisualization::ShouldPrintAsOneLiner(*var_value_sp)) { - static StringSummaryFormat format( - TypeSummaryImpl::Flags() - .SetHideItemNames(false) - .SetShowMembersOneLiner(true), - ""); - format.FormatObject(var_value_sp.get(), buffer, - TypeSummaryOptions()); - var_representation = buffer; - } else - var_value_sp->DumpPrintableRepresentation( - ss, - ValueObject::ValueObjectRepresentationStyle:: - eValueObjectRepresentationStyleSummary, - eFormatDefault, - ValueObject::PrintableRepresentationSpecialCases::eAllow, - false); - } - - if (!ss.GetString().empty()) - var_representation = ss.GetString(); - if (arg_idx > 0) - s.PutCString(", "); - if (var_value_sp->GetError().Success()) { - if (!var_representation.empty()) - s.Printf("%s=%s", var_name, var_representation.str().c_str()); - else - s.Printf("%s=%s at %s", var_name, - var_value_sp->GetTypeName().GetCString(), - var_value_sp->GetLocationAsCString()); - } else - s.Printf("%s=", var_name); - } - - if (close_paren) - s.PutCString(close_paren); - else - s.PutChar(')'); - + PrettyPrintFunctionNameWithArgs(s, cstr, exe_scope, args); } else { s.PutCString(cstr); } @@ -2452,3 +2416,55 @@ void FormatEntity::AutoComplete(CompletionRequest &request) { request.AddCompletions(new_matches); } } + +void FormatEntity::PrettyPrintFunctionArguments( + Stream &out_stream, VariableList const &args, + ExecutionContextScope *exe_scope) { + const size_t num_args = args.GetSize(); + for (size_t arg_idx = 0; arg_idx < num_args; ++arg_idx) { + std::string buffer; + + VariableSP var_sp(args.GetVariableAtIndex(arg_idx)); + ValueObjectSP var_value_sp(ValueObjectVariable::Create(exe_scope, var_sp)); + StreamString ss; + llvm::StringRef var_representation; + const char *var_name = var_value_sp->GetName().GetCString(); + if (var_value_sp->GetCompilerType().IsValid()) { + if (exe_scope && exe_scope->CalculateTarget()) + var_value_sp = var_value_sp->GetQualifiedRepresentationIfAvailable( + exe_scope->CalculateTarget() + ->TargetProperties::GetPreferDynamicValue(), + exe_scope->CalculateTarget() + ->TargetProperties::GetEnableSyntheticValue()); + if (var_value_sp->GetCompilerType().IsAggregateType() && + DataVisualization::ShouldPrintAsOneLiner(*var_value_sp)) { + static StringSummaryFormat format(TypeSummaryImpl::Flags() + .SetHideItemNames(false) + .SetShowMembersOneLiner(true), + ""); + format.FormatObject(var_value_sp.get(), buffer, TypeSummaryOptions()); + var_representation = buffer; + } else + var_value_sp->DumpPrintableRepresentation( + ss, + ValueObject::ValueObjectRepresentationStyle:: + eValueObjectRepresentationStyleSummary, + eFormatDefault, + ValueObject::PrintableRepresentationSpecialCases::eAllow, false); + } + + if (!ss.GetString().empty()) + var_representation = ss.GetString(); + if (arg_idx > 0) + out_stream.PutCString(", "); + if (var_value_sp->GetError().Success()) { + if (!var_representation.empty()) + out_stream.Printf("%s=%s", var_name, var_representation.str().c_str()); + else + out_stream.Printf("%s=%s at %s", var_name, + var_value_sp->GetTypeName().GetCString(), + var_value_sp->GetLocationAsCString()); + } else + out_stream.Printf("%s=", var_name); + } +} diff --git a/gnu/llvm/lldb/source/Host/common/MainLoop.cpp b/gnu/llvm/lldb/source/Host/common/MainLoop.cpp deleted file mode 100644 index d36587ce234..00000000000 --- a/gnu/llvm/lldb/source/Host/common/MainLoop.cpp +++ /dev/null @@ -1,424 +0,0 @@ -//===-- MainLoop.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "llvm/Config/llvm-config.h" -#include "lldb/Host/Config.h" - -#include "lldb/Host/MainLoop.h" -#include "lldb/Host/PosixApi.h" -#include "lldb/Utility/Status.h" -#include -#include -#include -#include -#include -#include - -// Multiplexing is implemented using kqueue on systems that support it (BSD -// variants including OSX). On linux we use ppoll, while android uses pselect -// (ppoll is present but not implemented properly). On windows we use WSApoll -// (which does not support signals). - -#if HAVE_SYS_EVENT_H -#include -#elif defined(_WIN32) -#include -#elif defined(__ANDROID__) -#include -#else -#include -#endif - -#ifdef _WIN32 -#define POLL WSAPoll -#else -#define POLL poll -#endif - -#if SIGNAL_POLLING_UNSUPPORTED -#ifdef _WIN32 -typedef int sigset_t; -typedef int siginfo_t; -#endif - -int ppoll(struct pollfd *fds, size_t nfds, const struct timespec *timeout_ts, - const sigset_t *) { - int timeout = - (timeout_ts == nullptr) - ? -1 - : (timeout_ts->tv_sec * 1000 + timeout_ts->tv_nsec / 1000000); - return POLL(fds, nfds, timeout); -} - -#endif - -using namespace lldb; -using namespace lldb_private; - -static sig_atomic_t g_signal_flags[NSIG]; - -#ifndef SIGNAL_POLLING_UNSUPPORTED -static void SignalHandler(int signo, siginfo_t *info, void *) { - assert(signo < NSIG); - g_signal_flags[signo] = 1; -} -#endif - -class MainLoop::RunImpl { -public: - RunImpl(MainLoop &loop); - ~RunImpl() = default; - - Status Poll(); - void ProcessEvents(); - -private: - MainLoop &loop; - -#if HAVE_SYS_EVENT_H - std::vector in_events; - struct kevent out_events[4]; - int num_events = -1; - -#else -#ifdef __ANDROID__ - fd_set read_fd_set; -#else - std::vector read_fds; -#endif - - sigset_t get_sigmask(); -#endif -}; - -#if HAVE_SYS_EVENT_H -MainLoop::RunImpl::RunImpl(MainLoop &loop) : loop(loop) { - in_events.reserve(loop.m_read_fds.size()); -} - -Status MainLoop::RunImpl::Poll() { - in_events.resize(loop.m_read_fds.size()); - unsigned i = 0; - for (auto &fd : loop.m_read_fds) - EV_SET(&in_events[i++], fd.first, EVFILT_READ, EV_ADD, 0, 0, 0); - - num_events = kevent(loop.m_kqueue, in_events.data(), in_events.size(), - out_events, llvm::array_lengthof(out_events), nullptr); - - if (num_events < 0) { - if (errno == EINTR) { - // in case of EINTR, let the main loop run one iteration - // we need to zero num_events to avoid assertions failing - num_events = 0; - } else - return Status(errno, eErrorTypePOSIX); - } - return Status(); -} - -void MainLoop::RunImpl::ProcessEvents() { - assert(num_events >= 0); - for (int i = 0; i < num_events; ++i) { - if (loop.m_terminate_request) - return; - switch (out_events[i].filter) { - case EVFILT_READ: - loop.ProcessReadObject(out_events[i].ident); - break; - case EVFILT_SIGNAL: - loop.ProcessSignal(out_events[i].ident); - break; - default: - llvm_unreachable("Unknown event"); - } - } -} -#else -MainLoop::RunImpl::RunImpl(MainLoop &loop) : loop(loop) { -#ifndef __ANDROID__ - read_fds.reserve(loop.m_read_fds.size()); -#endif -} - -sigset_t MainLoop::RunImpl::get_sigmask() { - sigset_t sigmask; -#if defined(_WIN32) - sigmask = 0; -#elif SIGNAL_POLLING_UNSUPPORTED - sigemptyset(&sigmask); -#else - int ret = pthread_sigmask(SIG_SETMASK, nullptr, &sigmask); - assert(ret == 0); - (void) ret; - - for (const auto &sig : loop.m_signals) - sigdelset(&sigmask, sig.first); -#endif - return sigmask; -} - -#ifdef __ANDROID__ -Status MainLoop::RunImpl::Poll() { - // ppoll(2) is not supported on older all android versions. Also, older - // versions android (API <= 19) implemented pselect in a non-atomic way, as a - // combination of pthread_sigmask and select. This is not sufficient for us, - // as we rely on the atomicity to correctly implement signal polling, so we - // call the underlying syscall ourselves. - - FD_ZERO(&read_fd_set); - int nfds = 0; - for (const auto &fd : loop.m_read_fds) { - FD_SET(fd.first, &read_fd_set); - nfds = std::max(nfds, fd.first + 1); - } - - union { - sigset_t set; - uint64_t pad; - } kernel_sigset; - memset(&kernel_sigset, 0, sizeof(kernel_sigset)); - kernel_sigset.set = get_sigmask(); - - struct { - void *sigset_ptr; - size_t sigset_len; - } extra_data = {&kernel_sigset, sizeof(kernel_sigset)}; - if (syscall(__NR_pselect6, nfds, &read_fd_set, nullptr, nullptr, nullptr, - &extra_data) == -1 && - errno != EINTR) - return Status(errno, eErrorTypePOSIX); - - return Status(); -} -#else -Status MainLoop::RunImpl::Poll() { - read_fds.clear(); - - sigset_t sigmask = get_sigmask(); - - for (const auto &fd : loop.m_read_fds) { - struct pollfd pfd; - pfd.fd = fd.first; - pfd.events = POLLIN; - pfd.revents = 0; - read_fds.push_back(pfd); - } - - if (ppoll(read_fds.data(), read_fds.size(), nullptr, &sigmask) == -1 && - errno != EINTR) - return Status(errno, eErrorTypePOSIX); - - return Status(); -} -#endif - -void MainLoop::RunImpl::ProcessEvents() { -#ifdef __ANDROID__ - // Collect first all readable file descriptors into a separate vector and - // then iterate over it to invoke callbacks. Iterating directly over - // loop.m_read_fds is not possible because the callbacks can modify the - // container which could invalidate the iterator. - std::vector fds; - for (const auto &fd : loop.m_read_fds) - if (FD_ISSET(fd.first, &read_fd_set)) - fds.push_back(fd.first); - - for (const auto &handle : fds) { -#else - for (const auto &fd : read_fds) { - if ((fd.revents & (POLLIN | POLLHUP)) == 0) - continue; - IOObject::WaitableHandle handle = fd.fd; -#endif - if (loop.m_terminate_request) - return; - - loop.ProcessReadObject(handle); - } - - std::vector signals; - for (const auto &entry : loop.m_signals) - if (g_signal_flags[entry.first] != 0) - signals.push_back(entry.first); - - for (const auto &signal : signals) { - if (loop.m_terminate_request) - return; - g_signal_flags[signal] = 0; - loop.ProcessSignal(signal); - } -} -#endif - -MainLoop::MainLoop() { -#if HAVE_SYS_EVENT_H - m_kqueue = kqueue(); - assert(m_kqueue >= 0); -#endif -} -MainLoop::~MainLoop() { -#if HAVE_SYS_EVENT_H - close(m_kqueue); -#endif - assert(m_read_fds.size() == 0); - assert(m_signals.size() == 0); -} - -MainLoop::ReadHandleUP MainLoop::RegisterReadObject(const IOObjectSP &object_sp, - const Callback &callback, - Status &error) { -#ifdef _WIN32 - if (object_sp->GetFdType() != IOObject:: eFDTypeSocket) { - error.SetErrorString("MainLoop: non-socket types unsupported on Windows"); - return nullptr; - } -#endif - if (!object_sp || !object_sp->IsValid()) { - error.SetErrorString("IO object is not valid."); - return nullptr; - } - - const bool inserted = - m_read_fds.insert({object_sp->GetWaitableHandle(), callback}).second; - if (!inserted) { - error.SetErrorStringWithFormat("File descriptor %d already monitored.", - object_sp->GetWaitableHandle()); - return nullptr; - } - - return CreateReadHandle(object_sp); -} - -// We shall block the signal, then install the signal handler. The signal will -// be unblocked in the Run() function to check for signal delivery. -MainLoop::SignalHandleUP -MainLoop::RegisterSignal(int signo, const Callback &callback, Status &error) { -#ifdef SIGNAL_POLLING_UNSUPPORTED - error.SetErrorString("Signal polling is not supported on this platform."); - return nullptr; -#else - auto signal_it = m_signals.find(signo); - if (signal_it != m_signals.end()) { - auto callback_it = signal_it->second.callbacks.insert( - signal_it->second.callbacks.end(), callback); - return SignalHandleUP(new SignalHandle(*this, signo, callback_it)); - } - - SignalInfo info; - info.callbacks.push_back(callback); - struct sigaction new_action; - new_action.sa_sigaction = &SignalHandler; - new_action.sa_flags = SA_SIGINFO; - sigemptyset(&new_action.sa_mask); - sigaddset(&new_action.sa_mask, signo); - sigset_t old_set; - - g_signal_flags[signo] = 0; - - // Even if using kqueue, the signal handler will still be invoked, so it's - // important to replace it with our "benign" handler. - int ret = sigaction(signo, &new_action, &info.old_action); - (void)ret; - assert(ret == 0 && "sigaction failed"); - -#if HAVE_SYS_EVENT_H - struct kevent ev; - EV_SET(&ev, signo, EVFILT_SIGNAL, EV_ADD, 0, 0, 0); - ret = kevent(m_kqueue, &ev, 1, nullptr, 0, nullptr); - assert(ret == 0); -#endif - - // If we're using kqueue, the signal needs to be unblocked in order to - // receive it. If using pselect/ppoll, we need to block it, and later unblock - // it as a part of the system call. - ret = pthread_sigmask(HAVE_SYS_EVENT_H ? SIG_UNBLOCK : SIG_BLOCK, - &new_action.sa_mask, &old_set); - assert(ret == 0 && "pthread_sigmask failed"); - info.was_blocked = sigismember(&old_set, signo); - auto insert_ret = m_signals.insert({signo, info}); - - return SignalHandleUP(new SignalHandle( - *this, signo, insert_ret.first->second.callbacks.begin())); -#endif -} - -void MainLoop::UnregisterReadObject(IOObject::WaitableHandle handle) { - bool erased = m_read_fds.erase(handle); - UNUSED_IF_ASSERT_DISABLED(erased); - assert(erased); -} - -void MainLoop::UnregisterSignal(int signo, - std::list::iterator callback_it) { -#if SIGNAL_POLLING_UNSUPPORTED - Status("Signal polling is not supported on this platform."); -#else - auto it = m_signals.find(signo); - assert(it != m_signals.end()); - - it->second.callbacks.erase(callback_it); - // Do not remove the signal handler unless all callbacks have been erased. - if (!it->second.callbacks.empty()) - return; - - sigaction(signo, &it->second.old_action, nullptr); - - sigset_t set; - sigemptyset(&set); - sigaddset(&set, signo); - int ret = pthread_sigmask(it->second.was_blocked ? SIG_BLOCK : SIG_UNBLOCK, - &set, nullptr); - assert(ret == 0); - (void)ret; - -#if HAVE_SYS_EVENT_H - struct kevent ev; - EV_SET(&ev, signo, EVFILT_SIGNAL, EV_DELETE, 0, 0, 0); - ret = kevent(m_kqueue, &ev, 1, nullptr, 0, nullptr); - assert(ret == 0); -#endif - - m_signals.erase(it); -#endif -} - -Status MainLoop::Run() { - m_terminate_request = false; - - Status error; - RunImpl impl(*this); - - // run until termination or until we run out of things to listen to - while (!m_terminate_request && (!m_read_fds.empty() || !m_signals.empty())) { - - error = impl.Poll(); - if (error.Fail()) - return error; - - impl.ProcessEvents(); - } - return Status(); -} - -void MainLoop::ProcessSignal(int signo) { - auto it = m_signals.find(signo); - if (it != m_signals.end()) { - // The callback may actually register/unregister signal handlers, - // so we need to create a copy first. - llvm::SmallVector callbacks_to_run{ - it->second.callbacks.begin(), it->second.callbacks.end()}; - for (auto &x : callbacks_to_run) - x(*this); // Do the work - } -} - -void MainLoop::ProcessReadObject(IOObject::WaitableHandle handle) { - auto it = m_read_fds.find(handle); - if (it != m_read_fds.end()) - it->second(*this); // Do the work -} diff --git a/gnu/llvm/lldb/source/Host/common/StringConvert.cpp b/gnu/llvm/lldb/source/Host/common/StringConvert.cpp deleted file mode 100644 index b4eb9275536..00000000000 --- a/gnu/llvm/lldb/source/Host/common/StringConvert.cpp +++ /dev/null @@ -1,95 +0,0 @@ -//===-- StringConvert.cpp -------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -#include "lldb/Host/StringConvert.h" - -namespace lldb_private { -namespace StringConvert { - -int32_t ToSInt32(const char *s, int32_t fail_value, int base, - bool *success_ptr) { - if (s && s[0]) { - char *end = nullptr; - const long sval = ::strtol(s, &end, base); - if (*end == '\0') { - if (success_ptr) - *success_ptr = ((sval <= INT32_MAX) && (sval >= INT32_MIN)); - return (int32_t)sval; // All characters were used, return the result - } - } - if (success_ptr) - *success_ptr = false; - return fail_value; -} - -uint32_t ToUInt32(const char *s, uint32_t fail_value, int base, - bool *success_ptr) { - if (s && s[0]) { - char *end = nullptr; - const unsigned long uval = ::strtoul(s, &end, base); - if (*end == '\0') { - if (success_ptr) - *success_ptr = (uval <= UINT32_MAX); - return (uint32_t)uval; // All characters were used, return the result - } - } - if (success_ptr) - *success_ptr = false; - return fail_value; -} - -int64_t ToSInt64(const char *s, int64_t fail_value, int base, - bool *success_ptr) { - if (s && s[0]) { - char *end = nullptr; - int64_t uval = ::strtoll(s, &end, base); - if (*end == '\0') { - if (success_ptr) - *success_ptr = true; - return uval; // All characters were used, return the result - } - } - if (success_ptr) - *success_ptr = false; - return fail_value; -} - -uint64_t ToUInt64(const char *s, uint64_t fail_value, int base, - bool *success_ptr) { - if (s && s[0]) { - char *end = nullptr; - uint64_t uval = ::strtoull(s, &end, base); - if (*end == '\0') { - if (success_ptr) - *success_ptr = true; - return uval; // All characters were used, return the result - } - } - if (success_ptr) - *success_ptr = false; - return fail_value; -} - -double ToDouble(const char *s, double fail_value, bool *success_ptr) { - if (s && s[0]) { - char *end = nullptr; - double val = strtod(s, &end); - if (*end == '\0') { - if (success_ptr) - *success_ptr = true; - return val; // All characters were used, return the result - } - } - if (success_ptr) - *success_ptr = false; - return fail_value; -} -} -} diff --git a/gnu/llvm/lldb/source/Host/openbsd/HostInfoOpenBSD.cpp b/gnu/llvm/lldb/source/Host/openbsd/HostInfoOpenBSD.cpp index d87ec08f126..215208c6eed 100644 --- a/gnu/llvm/lldb/source/Host/openbsd/HostInfoOpenBSD.cpp +++ b/gnu/llvm/lldb/source/Host/openbsd/HostInfoOpenBSD.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -36,34 +37,15 @@ llvm::VersionTuple HostInfoOpenBSD::GetOSVersion() { return llvm::VersionTuple(); } -bool HostInfoOpenBSD::GetOSBuildString(std::string &s) { +std::optional HostInfoOpenBSD::GetOSBuildString() { int mib[2] = {CTL_KERN, KERN_OSREV}; - char osrev_str[12]; uint32_t osrev = 0; size_t osrev_len = sizeof(osrev); - if (::sysctl(mib, 2, &osrev, &osrev_len, NULL, 0) == 0) { - ::snprintf(osrev_str, sizeof(osrev_str), "%-8.8u", osrev); - s.assign(osrev_str); - return true; - } - - s.clear(); - return false; -} - -bool HostInfoOpenBSD::GetOSKernelDescription(std::string &s) { - struct utsname un; - - ::memset(&un, 0, sizeof(utsname)); - s.clear(); - - if (uname(&un) < 0) - return false; + if (::sysctl(mib, 2, &osrev, &osrev_len, NULL, 0) == 0) + return llvm::formatv("{0,8:8}", osrev).str(); - s.assign(un.version); - - return true; + return std::nullopt; } FileSpec HostInfoOpenBSD::GetProgramFileSpec() { @@ -76,6 +58,6 @@ bool HostInfoOpenBSD::ComputeSupportExeDirectory(FileSpec &file_spec) { file_spec.IsAbsolute() && FileSystem::Instance().Exists(file_spec)) return true; - file_spec.GetDirectory().SetCString("/usr/bin"); + file_spec.SetDirectory("/usr/bin"); return true; } diff --git a/gnu/llvm/lldb/source/Host/posix/DomainSocket.cpp b/gnu/llvm/lldb/source/Host/posix/DomainSocket.cpp index 9c2ab2fca9c..ef87d8c8153 100644 --- a/gnu/llvm/lldb/source/Host/posix/DomainSocket.cpp +++ b/gnu/llvm/lldb/source/Host/posix/DomainSocket.cpp @@ -26,13 +26,11 @@ using namespace lldb_private; #endif #endif // #ifdef __ANDROID__ -namespace { +static const int kDomain = AF_UNIX; +static const int kType = SOCK_STREAM; -const int kDomain = AF_UNIX; -const int kType = SOCK_STREAM; - -bool SetSockAddr(llvm::StringRef name, const size_t name_offset, - sockaddr_un *saddr_un, socklen_t &saddr_un_len) { +static bool SetSockAddr(llvm::StringRef name, const size_t name_offset, + sockaddr_un *saddr_un, socklen_t &saddr_un_len) { if (name.size() + name_offset > sizeof(saddr_un->sun_path)) return false; @@ -56,7 +54,6 @@ bool SetSockAddr(llvm::StringRef name, const size_t name_offset, return true; } -} // namespace DomainSocket::DomainSocket(bool should_close, bool child_processes_inherit) : Socket(ProtocolUnixDomain, should_close, child_processes_inherit) {} @@ -127,29 +124,33 @@ void DomainSocket::DeleteSocketFile(llvm::StringRef name) { } std::string DomainSocket::GetSocketName() const { - if (m_socket != kInvalidSocketValue) { - struct sockaddr_un saddr_un; - saddr_un.sun_family = AF_UNIX; - socklen_t sock_addr_len = sizeof(struct sockaddr_un); - if (::getpeername(m_socket, (struct sockaddr *)&saddr_un, &sock_addr_len) == - 0) { - std::string name(saddr_un.sun_path + GetNameOffset(), - sock_addr_len - - offsetof(struct sockaddr_un, sun_path) - + if (m_socket == kInvalidSocketValue) + return ""; + + struct sockaddr_un saddr_un; + saddr_un.sun_family = AF_UNIX; + socklen_t sock_addr_len = sizeof(struct sockaddr_un); + if (::getpeername(m_socket, (struct sockaddr *)&saddr_un, &sock_addr_len) != + 0) + return ""; + + if (sock_addr_len <= offsetof(struct sockaddr_un, sun_path)) + return ""; // Unnamed domain socket + + llvm::StringRef name(saddr_un.sun_path + GetNameOffset(), + sock_addr_len - offsetof(struct sockaddr_un, sun_path) - GetNameOffset()); - if (name.back() == '\0') name.pop_back(); - return name; - } - } - return ""; + name = name.rtrim('\0'); + + return name.str(); } std::string DomainSocket::GetRemoteConnectionURI() const { - if (m_socket != kInvalidSocketValue) { - return std::string(llvm::formatv( - "{0}://{1}", - GetNameOffset() == 0 ? "unix-connect" : "unix-abstract-connect", - GetSocketName())); - } - return ""; + std::string name = GetSocketName(); + if (name.empty()) + return name; + + return llvm::formatv( + "{0}://{1}", + GetNameOffset() == 0 ? "unix-connect" : "unix-abstract-connect", name); } diff --git a/gnu/llvm/lldb/source/Host/posix/PipePosix.cpp b/gnu/llvm/lldb/source/Host/posix/PipePosix.cpp index 1cc22c405e0..227faf26292 100644 --- a/gnu/llvm/lldb/source/Host/posix/PipePosix.cpp +++ b/gnu/llvm/lldb/source/Host/posix/PipePosix.cpp @@ -38,12 +38,10 @@ enum PIPES { READ, WRITE }; // Constants 0 and 1 for READ and WRITE #define PIPE2_SUPPORTED 0 #endif -namespace { - -constexpr auto OPEN_WRITER_SLEEP_TIMEOUT_MSECS = 100; +static constexpr auto OPEN_WRITER_SLEEP_TIMEOUT_MSECS = 100; #if defined(FD_CLOEXEC) && !PIPE2_SUPPORTED -bool SetCloexecFlag(int fd) { +static bool SetCloexecFlag(int fd) { int flags = ::fcntl(fd, F_GETFD); if (flags == -1) return false; @@ -51,10 +49,9 @@ bool SetCloexecFlag(int fd) { } #endif -std::chrono::time_point Now() { +static std::chrono::time_point Now() { return std::chrono::steady_clock::now(); } -} // namespace PipePosix::PipePosix() : m_fds{PipePosix::kInvalidDescriptor, PipePosix::kInvalidDescriptor} {} diff --git a/gnu/llvm/lldb/source/Host/windows/Windows.cpp b/gnu/llvm/lldb/source/Host/windows/Windows.cpp deleted file mode 100644 index 787f35930ba..00000000000 --- a/gnu/llvm/lldb/source/Host/windows/Windows.cpp +++ /dev/null @@ -1,117 +0,0 @@ -//===-- Windows.cpp -------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// This file provides Windows support functions - -#include "lldb/Host/PosixApi.h" -#include "lldb/Host/windows/windows.h" - -#include "llvm/Support/ConvertUTF.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -int vasprintf(char **ret, const char *fmt, va_list ap) { - char *buf; - int len; - size_t buflen; - va_list ap2; - - va_copy(ap2, ap); - len = vsnprintf(NULL, 0, fmt, ap2); - - if (len >= 0 && - (buf = (char *)malloc((buflen = (size_t)(len + 1)))) != NULL) { - len = vsnprintf(buf, buflen, fmt, ap); - *ret = buf; - } else { - *ret = NULL; - len = -1; - } - - va_end(ap2); - return len; -} - -char *strcasestr(const char *s, const char *find) { - char c, sc; - size_t len; - - if ((c = *find++) != 0) { - c = tolower((unsigned char)c); - len = strlen(find); - do { - do { - if ((sc = *s++) == 0) - return 0; - } while ((char)tolower((unsigned char)sc) != c); - } while (strncasecmp(s, find, len) != 0); - s--; - } - return const_cast(s); -} - -#ifdef _MSC_VER - -char *basename(char *path) { - char *l1 = strrchr(path, '\\'); - char *l2 = strrchr(path, '/'); - if (l2 > l1) - l1 = l2; - if (!l1) - return path; // no base name - return &l1[1]; -} - -char *dirname(char *path) { - char *l1 = strrchr(path, '\\'); - char *l2 = strrchr(path, '/'); - if (l2 > l1) - l1 = l2; - if (!l1) - return NULL; // no dir name - *l1 = 0; - return path; -} - -int strcasecmp(const char *s1, const char *s2) { return stricmp(s1, s2); } - -int strncasecmp(const char *s1, const char *s2, size_t n) { - return strnicmp(s1, s2, n); -} - -#if _MSC_VER < 1900 -namespace lldb_private { -int vsnprintf(char *buffer, size_t count, const char *format, va_list argptr) { - int old_errno = errno; - int r = ::vsnprintf(buffer, count, format, argptr); - int new_errno = errno; - buffer[count - 1] = '\0'; - if (r == -1 || r == count) { - FILE *nul = fopen("nul", "w"); - int bytes_written = ::vfprintf(nul, format, argptr); - fclose(nul); - if (bytes_written < count) - errno = new_errno; - else { - errno = old_errno; - r = bytes_written; - } - } - return r; -} -} // namespace lldb_private -#endif - -#endif // _MSC_VER diff --git a/gnu/llvm/lldb/source/Initialization/SystemInitializerCommon.cpp b/gnu/llvm/lldb/source/Initialization/SystemInitializerCommon.cpp index f15bf7cf01c..c5c9706b39c 100644 --- a/gnu/llvm/lldb/source/Initialization/SystemInitializerCommon.cpp +++ b/gnu/llvm/lldb/source/Initialization/SystemInitializerCommon.cpp @@ -12,10 +12,11 @@ #include "lldb/Host/FileSystem.h" #include "lldb/Host/Host.h" #include "lldb/Host/Socket.h" -#include "lldb/Utility/Log.h" -#include "lldb/Utility/ReproducerProvider.h" +#include "lldb/Target/Statistics.h" +#include "lldb/Utility/Diagnostics.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Timer.h" -#include "lldb/lldb-private.h" +#include "lldb/Version/Version.h" #if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) #include "Plugins/Process/POSIX/ProcessPOSIXLog.h" @@ -32,7 +33,6 @@ #include using namespace lldb_private; -using namespace lldb_private::repro; SystemInitializerCommon::SystemInitializerCommon( HostInfo::SharedLibraryDirectoryHelper *helper) @@ -40,58 +40,6 @@ SystemInitializerCommon::SystemInitializerCommon( SystemInitializerCommon::~SystemInitializerCommon() = default; -/// Initialize the FileSystem based on the current reproducer mode. -static llvm::Error InitializeFileSystem() { - auto &r = repro::Reproducer::Instance(); - if (repro::Loader *loader = r.GetLoader()) { - FileSpec vfs_mapping = loader->GetFile(); - if (vfs_mapping) { - if (llvm::Error e = FileSystem::Initialize(vfs_mapping)) - return e; - } else { - FileSystem::Initialize(); - } - - // Set the current working directory form the reproducer. - llvm::Expected working_dir = - repro::GetDirectoryFrom(loader); - if (!working_dir) - return working_dir.takeError(); - if (std::error_code ec = FileSystem::Instance() - .GetVirtualFileSystem() - ->setCurrentWorkingDirectory(*working_dir)) { - return llvm::errorCodeToError(ec); - } - - // Set the home directory from the reproducer. - llvm::Expected home_dir = - repro::GetDirectoryFrom(loader); - if (!home_dir) - return home_dir.takeError(); - FileSystem::Instance().SetHomeDirectory(*home_dir); - - return llvm::Error::success(); - } - - if (repro::Generator *g = r.GetGenerator()) { - repro::VersionProvider &vp = g->GetOrCreate(); - vp.SetVersion(lldb_private::GetVersion()); - - repro::FileProvider &fp = g->GetOrCreate(); - FileSystem::Initialize(fp.GetFileCollector()); - - fp.RecordInterestingDirectory( - g->GetOrCreate().GetDirectory()); - fp.RecordInterestingDirectory( - g->GetOrCreate().GetDirectory()); - - return llvm::Error::success(); - } - - FileSystem::Initialize(); - return llvm::Error::success(); -} - llvm::Error SystemInitializerCommon::Initialize() { #if defined(_WIN32) const char *disable_crash_dialog_var = getenv("LLDB_DISABLE_CRASH_DIALOG"); @@ -115,17 +63,10 @@ llvm::Error SystemInitializerCommon::Initialize() { } #endif - // If the reproducer wasn't initialized before, we can safely assume it's - // off. - if (!Reproducer::Initialized()) { - if (auto e = Reproducer::Initialize(ReproducerMode::Off, llvm::None)) - return e; - } - - if (auto e = InitializeFileSystem()) - return e; + InitializeLldbChannel(); - Log::Initialize(); + Diagnostics::Initialize(); + FileSystem::Initialize(); HostInfo::Initialize(m_shlib_dir_helper); llvm::Error error = Socket::Initialize(); @@ -157,5 +98,5 @@ void SystemInitializerCommon::Terminate() { HostInfo::Terminate(); Log::DisableAllLogChannels(); FileSystem::Terminate(); - Reproducer::Terminate(); + Diagnostics::Terminate(); } diff --git a/gnu/llvm/lldb/source/Plugins/ABI/AArch64/ABISysV_arm64.cpp b/gnu/llvm/lldb/source/Plugins/ABI/AArch64/ABISysV_arm64.cpp index e37fbec9ea3..4594ba36b44 100644 --- a/gnu/llvm/lldb/source/Plugins/ABI/AArch64/ABISysV_arm64.cpp +++ b/gnu/llvm/lldb/source/Plugins/ABI/AArch64/ABISysV_arm64.cpp @@ -8,6 +8,7 @@ #include "ABISysV_arm64.h" +#include #include #include "llvm/ADT/STLExtras.h" @@ -23,6 +24,7 @@ #include "lldb/Target/Target.h" #include "lldb/Target/Thread.h" #include "lldb/Utility/ConstString.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" #include "lldb/Utility/RegisterValue.h" #include "lldb/Utility/Scalar.h" @@ -65,7 +67,7 @@ bool ABISysV_arm64::PrepareTrivialCall(Thread &thread, addr_t sp, if (!reg_ctx) return false; - Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS)); + Log *log = GetLog(LLDBLog::Expressions); if (log) { StreamString s; @@ -145,7 +147,7 @@ bool ABISysV_arm64::GetArgumentValues(Thread &thread, ValueList &values) const { if (value_type) { bool is_signed = false; size_t bit_width = 0; - llvm::Optional bit_size = value_type.GetBitSize(&thread); + std::optional bit_size = value_type.GetBitSize(&thread); if (!bit_size) return false; if (value_type.IsIntegerOrEnumerationType(is_signed)) { @@ -276,7 +278,7 @@ Status ABISysV_arm64::SetReturnValueObject(lldb::StackFrameSP &frame_sp, if (byte_size <= 16) { if (byte_size <= RegisterValue::GetMaxByteSize()) { RegisterValue reg_value; - error = reg_value.SetValueFromData(v0_info, data, 0, true); + error = reg_value.SetValueFromData(*v0_info, data, 0, true); if (error.Success()) { if (!reg_ctx->WriteRegister(v0_info, reg_value)) error.SetErrorString("failed to write register v0"); @@ -303,7 +305,7 @@ Status ABISysV_arm64::SetReturnValueObject(lldb::StackFrameSP &frame_sp, if (v0_info) { if (byte_size <= v0_info->byte_size) { RegisterValue reg_value; - error = reg_value.SetValueFromData(v0_info, data, 0, true); + error = reg_value.SetValueFromData(*v0_info, data, 0, true); if (error.Success()) { if (!reg_ctx->WriteRegister(v0_info, reg_value)) error.SetErrorString("failed to write register v0"); @@ -467,7 +469,7 @@ static bool LoadValueFromConsecutiveGPRRegisters( uint32_t &NGRN, // NGRN (see ABI documentation) uint32_t &NSRN, // NSRN (see ABI documentation) DataExtractor &data) { - llvm::Optional byte_size = + std::optional byte_size = value_type.GetByteSize(exe_ctx.GetBestExecutionContextScope()); if (byte_size || *byte_size == 0) @@ -486,7 +488,7 @@ static bool LoadValueFromConsecutiveGPRRegisters( if (NSRN < 8 && (8 - NSRN) >= homogeneous_count) { if (!base_type) return false; - llvm::Optional base_byte_size = + std::optional base_byte_size = base_type.GetByteSize(exe_ctx.GetBestExecutionContextScope()); if (!base_byte_size) return false; @@ -511,8 +513,8 @@ static bool LoadValueFromConsecutiveGPRRegisters( // Make sure we have enough room in "heap_data_up" if ((data_offset + *base_byte_size) <= heap_data_up->GetByteSize()) { const size_t bytes_copied = reg_value.GetAsMemoryData( - reg_info, heap_data_up->GetBytes() + data_offset, *base_byte_size, - byte_order, error); + *reg_info, heap_data_up->GetBytes() + data_offset, + *base_byte_size, byte_order, error); if (bytes_copied != *base_byte_size) return false; data_offset += bytes_copied; @@ -547,7 +549,7 @@ static bool LoadValueFromConsecutiveGPRRegisters( const size_t curr_byte_size = std::min(8, bytes_left); const size_t bytes_copied = reg_value.GetAsMemoryData( - reg_info, heap_data_up->GetBytes() + data_offset, curr_byte_size, + *reg_info, heap_data_up->GetBytes() + data_offset, curr_byte_size, byte_order, error); if (bytes_copied == 0) return false; @@ -560,9 +562,12 @@ static bool LoadValueFromConsecutiveGPRRegisters( } else { const RegisterInfo *reg_info = nullptr; if (is_return_value) { - // We are assuming we are decoding this immediately after returning from - // a function call and that the address of the structure is in x8 - reg_info = reg_ctx->GetRegisterInfoByName("x8", 0); + // The SysV arm64 ABI doesn't require you to write the return location + // back to x8 before returning from the function the way the x86_64 ABI + // does. It looks like all the users of this ABI currently choose not to + // do that, and so we can't reconstruct stack based returns on exit + // from the function. + return false; } else { // We are assuming we are stopped at the first instruction in a function // and that the ABI is being respected so all parameters appear where @@ -578,9 +583,6 @@ static bool LoadValueFromConsecutiveGPRRegisters( ++NGRN; } - if (reg_info == nullptr) - return false; - const lldb::addr_t value_addr = reg_ctx->ReadRegisterAsUnsigned(reg_info, LLDB_INVALID_ADDRESS); @@ -616,8 +618,7 @@ ValueObjectSP ABISysV_arm64::GetReturnValueObjectImpl( if (!reg_ctx) return return_valobj_sp; - llvm::Optional byte_size = - return_compiler_type.GetByteSize(&thread); + std::optional byte_size = return_compiler_type.GetByteSize(&thread); if (!byte_size) return return_valobj_sp; @@ -660,10 +661,10 @@ ValueObjectSP ABISysV_arm64::GetReturnValueObjectImpl( reg_ctx->ReadRegister(x1_reg_info, x1_reg_value)) { Status error; if (x0_reg_value.GetAsMemoryData( - x0_reg_info, heap_data_up->GetBytes() + 0, 8, + *x0_reg_info, heap_data_up->GetBytes() + 0, 8, byte_order, error) && x1_reg_value.GetAsMemoryData( - x1_reg_info, heap_data_up->GetBytes() + 8, 8, + *x1_reg_info, heap_data_up->GetBytes() + 8, 8, byte_order, error)) { DataExtractor data( DataBufferSP(heap_data_up.release()), byte_order, @@ -754,7 +755,7 @@ ValueObjectSP ABISysV_arm64::GetReturnValueObjectImpl( RegisterValue reg_value; if (reg_ctx->ReadRegister(v0_info, reg_value)) { Status error; - if (reg_value.GetAsMemoryData(v0_info, heap_data_up->GetBytes(), + if (reg_value.GetAsMemoryData(*v0_info, heap_data_up->GetBytes(), heap_data_up->GetByteSize(), byte_order, error)) { DataExtractor data(DataBufferSP(heap_data_up.release()), byte_order, @@ -790,14 +791,20 @@ lldb::addr_t ABISysV_arm64::FixAddress(addr_t pc, addr_t mask) { // Reads code or data address mask for the current Linux process. static lldb::addr_t ReadLinuxProcessAddressMask(lldb::ProcessSP process_sp, llvm::StringRef reg_name) { - // Linux configures user-space virtual addresses with top byte ignored. - // We set default value of mask such that top byte is masked out. - uint64_t address_mask = ~((1ULL << 56) - 1); - // If Pointer Authentication feature is enabled then Linux exposes - // PAC data and code mask register. Try reading relevant register - // below and merge it with default address mask calculated above. + // 0 means there isn't a mask or it has not been read yet. + // We do not return the top byte mask unless thread_sp is valid. + // This prevents calls to this function before the thread is setup locking + // in the value to just the top byte mask, in cases where pointer + // authentication might also be active. + uint64_t address_mask = 0; lldb::ThreadSP thread_sp = process_sp->GetThreadList().GetSelectedThread(); if (thread_sp) { + // Linux configures user-space virtual addresses with top byte ignored. + // We set default value of mask such that top byte is masked out. + address_mask = ~((1ULL << 56) - 1); + // If Pointer Authentication feature is enabled then Linux exposes + // PAC data and code mask register. Try reading relevant register + // below and merge it with default address mask calculated above. lldb::RegisterContextSP reg_ctx_sp = thread_sp->GetRegisterContext(); if (reg_ctx_sp) { const RegisterInfo *reg_info = @@ -880,14 +887,3 @@ void ABISysV_arm64::Initialize() { void ABISysV_arm64::Terminate() { PluginManager::UnregisterPlugin(CreateInstance); } - -lldb_private::ConstString ABISysV_arm64::GetPluginNameStatic() { - static ConstString g_name("SysV-arm64"); - return g_name; -} - -// PluginInterface protocol - -ConstString ABISysV_arm64::GetPluginName() { return GetPluginNameStatic(); } - -uint32_t ABISysV_arm64::GetPluginVersion() { return 1; } diff --git a/gnu/llvm/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp b/gnu/llvm/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp index 72560976cf7..170a4053809 100644 --- a/gnu/llvm/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp +++ b/gnu/llvm/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp @@ -14,6 +14,7 @@ #include "lldb/Target/Process.h" #include "lldb/Target/Target.h" #include "lldb/Utility/ArchSpec.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" #include "lldb/Utility/Status.h" @@ -24,28 +25,35 @@ using namespace lldb; using namespace lldb_private; -/// Locates the address of the rendezvous structure. Returns the address on -/// success and LLDB_INVALID_ADDRESS on failure. -static addr_t ResolveRendezvousAddress(Process *process) { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); +DYLDRendezvous::DYLDRendezvous(Process *process) + : m_process(process), m_rendezvous_addr(LLDB_INVALID_ADDRESS), + m_executable_interpreter(false), m_current(), m_previous(), + m_loaded_modules(), m_soentries(), m_added_soentries(), + m_removed_soentries() { + m_thread_info.valid = false; + UpdateExecutablePath(); +} + +addr_t DYLDRendezvous::ResolveRendezvousAddress() { + Log *log = GetLog(LLDBLog::DynamicLoader); addr_t info_location; addr_t info_addr; Status error; - if (!process) { + if (!m_process) { LLDB_LOGF(log, "%s null process provided", __FUNCTION__); return LLDB_INVALID_ADDRESS; } // Try to get it from our process. This might be a remote process and might // grab it via some remote-specific mechanism. - info_location = process->GetImageInfoAddress(); + info_location = m_process->GetImageInfoAddress(); LLDB_LOGF(log, "%s info_location = 0x%" PRIx64, __FUNCTION__, info_location); // If the process fails to return an address, fall back to seeing if the // local object file can help us find it. if (info_location == LLDB_INVALID_ADDRESS) { - Target *target = &process->GetTarget(); + Target *target = &m_process->GetTarget(); if (target) { ObjectFile *obj_file = target->GetExecutableModule()->GetObjectFile(); Address addr = obj_file->GetImageInfoAddress(target); @@ -56,6 +64,20 @@ static addr_t ResolveRendezvousAddress(Process *process) { "%s resolved via direct object file approach to 0x%" PRIx64, __FUNCTION__, info_location); } else { + const Symbol *_r_debug = + target->GetExecutableModule()->FindFirstSymbolWithNameAndType( + ConstString("_r_debug")); + if (_r_debug) { + info_addr = _r_debug->GetAddress().GetLoadAddress(target); + if (info_addr != LLDB_INVALID_ADDRESS) { + LLDB_LOGF(log, + "%s resolved by finding symbol '_r_debug' whose value is " + "0x%" PRIx64, + __FUNCTION__, info_addr); + m_executable_interpreter = true; + return info_addr; + } + } LLDB_LOGF(log, "%s FAILED - direct object file approach did not yield a " "valid address", @@ -70,9 +92,9 @@ static addr_t ResolveRendezvousAddress(Process *process) { } LLDB_LOGF(log, "%s reading pointer (%" PRIu32 " bytes) from 0x%" PRIx64, - __FUNCTION__, process->GetAddressByteSize(), info_location); + __FUNCTION__, m_process->GetAddressByteSize(), info_location); - info_addr = process->ReadPointerFromMemory(info_location, error); + info_addr = m_process->ReadPointerFromMemory(info_location, error); if (error.Fail()) { LLDB_LOGF(log, "%s FAILED - could not read from the info location: %s", __FUNCTION__, error.AsCString()); @@ -90,22 +112,14 @@ static addr_t ResolveRendezvousAddress(Process *process) { return info_addr; } -DYLDRendezvous::DYLDRendezvous(Process *process) - : m_process(process), m_rendezvous_addr(LLDB_INVALID_ADDRESS), m_current(), - m_previous(), m_loaded_modules(), m_soentries(), m_added_soentries(), - m_removed_soentries() { - m_thread_info.valid = false; - UpdateExecutablePath(); -} - void DYLDRendezvous::UpdateExecutablePath() { if (m_process) { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); Module *exe_mod = m_process->GetTarget().GetExecutableModulePointer(); if (exe_mod) { m_exe_file_spec = exe_mod->GetPlatformFileSpec(); LLDB_LOGF(log, "DYLDRendezvous::%s exe module executable path set: '%s'", - __FUNCTION__, m_exe_file_spec.GetCString()); + __FUNCTION__, m_exe_file_spec.GetPath().c_str()); } else { LLDB_LOGF(log, "DYLDRendezvous::%s cannot cache exe module path: null " @@ -116,7 +130,7 @@ void DYLDRendezvous::UpdateExecutablePath() { } bool DYLDRendezvous::Resolve() { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); const size_t word_size = 4; Rendezvous info; @@ -132,7 +146,8 @@ bool DYLDRendezvous::Resolve() { __FUNCTION__, uint64_t(address_size), uint64_t(padding)); if (m_rendezvous_addr == LLDB_INVALID_ADDRESS) - cursor = info_addr = ResolveRendezvousAddress(m_process); + cursor = info_addr = + ResolveRendezvousAddress(); else cursor = info_addr = m_rendezvous_addr; LLDB_LOGF(log, "DYLDRendezvous::%s cursor = 0x%" PRIx64, __FUNCTION__, @@ -175,6 +190,14 @@ bool DYLDRendezvous::IsValid() { } DYLDRendezvous::RendezvousAction DYLDRendezvous::GetAction() const { + // If we have a core file, we will read the current rendezvous state + // from the core file's memory into m_current which can be in an inconsistent + // state, so we can't rely on its state to determine what we should do. We + // always need it to load all of the shared libraries one time when we attach + // to a core file. + if (IsCoreFile()) + return eTakeSnapshot; + switch (m_current.state) { case eConsistent: @@ -195,14 +218,7 @@ DYLDRendezvous::RendezvousAction DYLDRendezvous::GetAction() const { case eAdd: case eDelete: - // Some versions of the android dynamic linker might send two - // notifications with state == eAdd back to back. Ignore them until we - // get an eConsistent notification. - if (!(m_previous.state == eConsistent || - (m_previous.state == eAdd && m_current.state == eDelete))) - return eNoAction; - - return eTakeSnapshot; + return eNoAction; } return eNoAction; @@ -214,9 +230,9 @@ bool DYLDRendezvous::UpdateSOEntriesFromRemote() { if (action == eNoAction) return false; + m_added_soentries.clear(); + m_removed_soentries.clear(); if (action == eTakeSnapshot) { - m_added_soentries.clear(); - m_removed_soentries.clear(); // We already have the loaded list from the previous update so no need to // find all the modules again. if (!m_loaded_modules.m_list.empty()) @@ -245,11 +261,11 @@ bool DYLDRendezvous::UpdateSOEntriesFromRemote() { } bool DYLDRendezvous::UpdateSOEntries() { + m_added_soentries.clear(); + m_removed_soentries.clear(); switch (GetAction()) { case eTakeSnapshot: m_soentries.clear(); - m_added_soentries.clear(); - m_removed_soentries.clear(); return TakeSnapshot(m_soentries); case eAddModules: return AddSOEntries(); @@ -296,8 +312,10 @@ bool DYLDRendezvous::SaveSOEntriesFromRemote( return false; // Only add shared libraries and not the executable. - if (!SOEntryIsMainExecutable(entry)) + if (!SOEntryIsMainExecutable(entry)) { + UpdateFileSpecIfNecessary(entry); m_soentries.push_back(entry); + } } m_loaded_modules = module_list; @@ -324,6 +342,7 @@ bool DYLDRendezvous::AddSOEntriesFromRemote( // Only add shared libraries and not the executable. if (!SOEntryIsMainExecutable(entry)) { + UpdateFileSpecIfNecessary(entry); m_soentries.push_back(entry); m_added_soentries.push_back(entry); } @@ -383,8 +402,9 @@ bool DYLDRendezvous::AddSOEntries() { if (SOEntryIsMainExecutable(entry)) continue; - pos = std::find(m_soentries.begin(), m_soentries.end(), entry); - if (pos == m_soentries.end()) { + UpdateFileSpecIfNecessary(entry); + + if (!llvm::is_contained(m_soentries, entry)) { m_soentries.push_back(entry); m_added_soentries.push_back(entry); } @@ -403,8 +423,7 @@ bool DYLDRendezvous::RemoveSOEntries() { return false; for (iterator I = begin(); I != end(); ++I) { - pos = std::find(entry_list.begin(), entry_list.end(), *I); - if (pos == entry_list.end()) + if (!llvm::is_contained(entry_list, *I)) m_removed_soentries.push_back(*I); } @@ -425,6 +444,10 @@ bool DYLDRendezvous::SOEntryIsMainExecutable(const SOEntry &entry) { case llvm::Triple::Linux: if (triple.isAndroid()) return entry.file_spec == m_exe_file_spec; + // If we are debugging ld.so, then all SOEntries should be treated as + // libraries, including the "main" one (denoted by an empty string). + if (!entry.file_spec && m_executable_interpreter) + return false; return !entry.file_spec; default: return false; @@ -448,6 +471,8 @@ bool DYLDRendezvous::TakeSnapshot(SOEntryList &entry_list) { if (SOEntryIsMainExecutable(entry)) continue; + UpdateFileSpecIfNecessary(entry); + entry_list.push_back(entry); } @@ -513,6 +538,19 @@ void DYLDRendezvous::UpdateBaseAddrIfNecessary(SOEntry &entry, } } +void DYLDRendezvous::UpdateFileSpecIfNecessary(SOEntry &entry) { + // Updates filename if empty. It is useful while debugging ld.so, + // when the link map returns empty string for the main executable. + if (!entry.file_spec) { + MemoryRegionInfo region; + Status region_status = + m_process->GetMemoryRegionInfo(entry.dyn_addr, region); + if (!region.GetName().IsEmpty()) + entry.file_spec.SetFile(region.GetName().AsCString(), + FileSpec::Style::native); + } +} + bool DYLDRendezvous::ReadSOEntryFromMemory(lldb::addr_t addr, SOEntry &entry) { entry.clear(); @@ -627,7 +665,7 @@ void DYLDRendezvous::DumpToLog(Log *log) const { log->PutCString("DYLDRendezvous SOEntries:"); for (int i = 1; I != E; ++I, ++i) { - LLDB_LOGF(log, "\n SOEntry [%d] %s", i, I->file_spec.GetCString()); + LLDB_LOGF(log, "\n SOEntry [%d] %s", i, I->file_spec.GetPath().c_str()); LLDB_LOGF(log, " Base : %" PRIx64, I->base_addr); LLDB_LOGF(log, " Path : %" PRIx64, I->path_addr); LLDB_LOGF(log, " Dyn : %" PRIx64, I->dyn_addr); @@ -635,3 +673,7 @@ void DYLDRendezvous::DumpToLog(Log *log) const { LLDB_LOGF(log, " Prev : %" PRIx64, I->prev); } } + +bool DYLDRendezvous::IsCoreFile() const { + return !m_process->IsLiveDebugSession(); +} diff --git a/gnu/llvm/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp b/gnu/llvm/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp index ac5f3d4a5a7..1f05dbe3535 100644 --- a/gnu/llvm/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp +++ b/gnu/llvm/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp @@ -21,10 +21,12 @@ #include "lldb/Target/Target.h" #include "lldb/Target/Thread.h" #include "lldb/Target/ThreadPlanRunToAddress.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" #include "lldb/Utility/ProcessInfo.h" #include +#include using namespace lldb; using namespace lldb_private; @@ -38,22 +40,11 @@ void DynamicLoaderPOSIXDYLD::Initialize() { void DynamicLoaderPOSIXDYLD::Terminate() {} -lldb_private::ConstString DynamicLoaderPOSIXDYLD::GetPluginName() { - return GetPluginNameStatic(); -} - -lldb_private::ConstString DynamicLoaderPOSIXDYLD::GetPluginNameStatic() { - static ConstString g_name("linux-dyld"); - return g_name; -} - -const char *DynamicLoaderPOSIXDYLD::GetPluginDescriptionStatic() { +llvm::StringRef DynamicLoaderPOSIXDYLD::GetPluginDescriptionStatic() { return "Dynamic loader plug-in that watches for shared library " "loads/unloads in POSIX processes."; } -uint32_t DynamicLoaderPOSIXDYLD::GetPluginVersion() { return 1; } - DynamicLoader *DynamicLoaderPOSIXDYLD::CreateInstance(Process *process, bool force) { bool create = force; @@ -88,7 +79,7 @@ DynamicLoaderPOSIXDYLD::~DynamicLoaderPOSIXDYLD() { } void DynamicLoaderPOSIXDYLD::DidAttach() { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); LLDB_LOGF(log, "DynamicLoaderPOSIXDYLD::%s() pid %" PRIu64, __FUNCTION__, m_process ? m_process->GetID() : LLDB_INVALID_PROCESS_ID); m_auxv = std::make_unique(m_process->GetAuxvData()); @@ -97,10 +88,6 @@ void DynamicLoaderPOSIXDYLD::DidAttach() { log, "DynamicLoaderPOSIXDYLD::%s pid %" PRIu64 " reloaded auxv data", __FUNCTION__, m_process ? m_process->GetID() : LLDB_INVALID_PROCESS_ID); - // ask the process if it can load any of its own modules - auto error = m_process->LoadModules(); - LLDB_LOG_ERROR(log, std::move(error), "Couldn't load modules: {0}"); - ModuleSP executable_sp = GetTargetExecutable(); ResolveExecutableModule(executable_sp); m_rendezvous.UpdateExecutablePath(); @@ -178,7 +165,7 @@ void DynamicLoaderPOSIXDYLD::DidAttach() { } void DynamicLoaderPOSIXDYLD::DidLaunch() { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); LLDB_LOGF(log, "DynamicLoaderPOSIXDYLD::%s()", __FUNCTION__); ModuleSP executable; @@ -226,7 +213,11 @@ void DynamicLoaderPOSIXDYLD::UnloadSections(const ModuleSP module) { } void DynamicLoaderPOSIXDYLD::ProbeEntry() { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); + + // If we have a core file, we don't need any breakpoints. + if (IsCoreFile()) + return; const addr_t entry = GetEntryPoint(); if (entry == LLDB_INVALID_ADDRESS) { @@ -269,7 +260,7 @@ bool DynamicLoaderPOSIXDYLD::EntryBreakpointHit( if (!baton) return false; - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); DynamicLoaderPOSIXDYLD *const dyld_instance = static_cast(baton); LLDB_LOGF(log, "DynamicLoaderPOSIXDYLD::%s called for pid %" PRIu64, @@ -311,7 +302,12 @@ bool DynamicLoaderPOSIXDYLD::EntryBreakpointHit( } bool DynamicLoaderPOSIXDYLD::SetRendezvousBreakpoint() { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); + + // If we have a core file, we don't need any breakpoints. + if (IsCoreFile()) + return false; + if (m_dyld_bid != LLDB_INVALID_BREAK_ID) { LLDB_LOG(log, "Rendezvous breakpoint breakpoint id {0} for pid {1}" @@ -324,7 +320,7 @@ bool DynamicLoaderPOSIXDYLD::SetRendezvousBreakpoint() { addr_t break_addr; Target &target = m_process->GetTarget(); BreakpointSP dyld_break; - if (m_rendezvous.IsValid()) { + if (m_rendezvous.IsValid() && m_rendezvous.GetBreakAddress() != 0) { break_addr = m_rendezvous.GetBreakAddress(); LLDB_LOG(log, "Setting rendezvous break address for pid {0} at {1:x}", m_process ? m_process->GetID() : LLDB_INVALID_PROCESS_ID, @@ -334,28 +330,37 @@ bool DynamicLoaderPOSIXDYLD::SetRendezvousBreakpoint() { LLDB_LOG(log, "Rendezvous structure is not set up yet. " "Trying to locate rendezvous breakpoint in the interpreter " "by symbol name."); - ModuleSP interpreter = LoadInterpreterModule(); - if (!interpreter) { - LLDB_LOG(log, "Can't find interpreter, rendezvous breakpoint isn't set."); - return false; - } - - // Function names from different dynamic loaders that are known to be used - // as rendezvous between the loader and debuggers. + // Function names from different dynamic loaders that are known to be + // used as rendezvous between the loader and debuggers. static std::vector DebugStateCandidates{ "_dl_debug_state", "rtld_db_dlactivity", "__dl_rtld_db_dlactivity", "r_debug_state", "_r_debug_state", "_rtld_debug_state", }; - FileSpecList containingModules; - containingModules.Append(interpreter->GetFileSpec()); - dyld_break = target.CreateBreakpoint( - &containingModules, nullptr /* containingSourceFiles */, - DebugStateCandidates, eFunctionNameTypeFull, eLanguageTypeC, - 0, /* offset */ - eLazyBoolNo, /* skip_prologue */ - true, /* internal */ - false /* request_hardware */); + ModuleSP interpreter = LoadInterpreterModule(); + if (!interpreter) { + FileSpecList containingModules; + containingModules.Append( + m_process->GetTarget().GetExecutableModulePointer()->GetFileSpec()); + + dyld_break = target.CreateBreakpoint( + &containingModules, /*containingSourceFiles=*/nullptr, + DebugStateCandidates, eFunctionNameTypeFull, eLanguageTypeC, + /*m_offset=*/0, + /*skip_prologue=*/eLazyBoolNo, + /*internal=*/true, + /*request_hardware=*/false); + } else { + FileSpecList containingModules; + containingModules.Append(interpreter->GetFileSpec()); + dyld_break = target.CreateBreakpoint( + &containingModules, /*containingSourceFiles=*/nullptr, + DebugStateCandidates, eFunctionNameTypeFull, eLanguageTypeC, + /*m_offset=*/0, + /*skip_prologue=*/eLazyBoolNo, + /*internal=*/true, + /*request_hardware=*/false); + } } if (dyld_break->GetNumResolvedLocations() != 1) { @@ -390,7 +395,7 @@ bool DynamicLoaderPOSIXDYLD::RendezvousBreakpointHit( if (!baton) return false; - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); DynamicLoaderPOSIXDYLD *const dyld_instance = static_cast(baton); LLDB_LOGF(log, "DynamicLoaderPOSIXDYLD::%s called for pid %" PRIu64, @@ -439,23 +444,31 @@ void DynamicLoaderPOSIXDYLD::RefreshModules() { for (; I != E; ++I) { ModuleSP module_sp = LoadModuleAtAddress(I->file_spec, I->link_addr, I->base_addr, true); - if (module_sp.get()) { - if (module_sp->GetObjectFile()->GetBaseAddress().GetLoadAddress( - &m_process->GetTarget()) == m_interpreter_base && - module_sp != m_interpreter_module.lock()) { - // If this is a duplicate instance of ld.so, unload it. We may end up - // with it if we load it via a different path than before (symlink - // vs real path). + if (!module_sp.get()) + continue; + + if (module_sp->GetObjectFile()->GetBaseAddress().GetLoadAddress( + &m_process->GetTarget()) == m_interpreter_base) { + ModuleSP interpreter_sp = m_interpreter_module.lock(); + if (m_interpreter_module.lock() == nullptr) { + m_interpreter_module = module_sp; + } else if (module_sp == interpreter_sp) { + // Module already loaded. + continue; + } else { + // If this is a duplicate instance of ld.so, unload it. We may end + // up with it if we load it via a different path than before + // (symlink vs real path). // TODO: remove this once we either fix library matching or avoid // loading the interpreter when setting the rendezvous breakpoint. UnloadSections(module_sp); loaded_modules.Remove(module_sp); continue; } - - loaded_modules.AppendIfNeeded(module_sp); - new_modules.Append(module_sp); } + + loaded_modules.AppendIfNeeded(module_sp); + new_modules.Append(module_sp); } m_process->GetTarget().ModulesDidLoad(new_modules); } @@ -490,7 +503,7 @@ DynamicLoaderPOSIXDYLD::GetStepThroughTrampolinePlan(Thread &thread, if (sym == nullptr || !sym->IsTrampoline()) return thread_plan_sp; - ConstString sym_name = sym->GetName(); + ConstString sym_name = sym->GetMangled().GetName(Mangled::ePreferMangled); if (!sym_name) return thread_plan_sp; @@ -538,7 +551,7 @@ void DynamicLoaderPOSIXDYLD::LoadVDSO() { MemoryRegionInfo info; Status status = m_process->GetMemoryRegionInfo(m_vdso_base, info); if (status.Fail()) { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); LLDB_LOG(log, "Failed to get vdso region info: {0}", status); return; } @@ -559,7 +572,7 @@ ModuleSP DynamicLoaderPOSIXDYLD::LoadInterpreterModule() { Status status = m_process->GetMemoryRegionInfo(m_interpreter_base, info); if (status.Fail() || info.GetMapped() != MemoryRegionInfo::eYes || info.GetName().IsEmpty()) { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); LLDB_LOG(log, "Failed to get interpreter region info: {0}", status); return nullptr; } @@ -567,7 +580,7 @@ ModuleSP DynamicLoaderPOSIXDYLD::LoadInterpreterModule() { FileSpec file(info.GetName().GetCString()); ModuleSpec module_spec(file, target.GetArchitecture()); - if (ModuleSP module_sp = target.GetOrCreateModule(module_spec, + if (ModuleSP module_sp = target.GetOrCreateModule(module_spec, true /* notify */)) { UpdateLoadedSections(module_sp, LLDB_INVALID_ADDRESS, m_interpreter_base, false); @@ -577,11 +590,43 @@ ModuleSP DynamicLoaderPOSIXDYLD::LoadInterpreterModule() { return nullptr; } +ModuleSP DynamicLoaderPOSIXDYLD::LoadModuleAtAddress(const FileSpec &file, + addr_t link_map_addr, + addr_t base_addr, + bool base_addr_is_offset) { + if (ModuleSP module_sp = DynamicLoader::LoadModuleAtAddress( + file, link_map_addr, base_addr, base_addr_is_offset)) + return module_sp; + + // This works around an dynamic linker "bug" on android <= 23, where the + // dynamic linker would report the application name + // (e.g. com.example.myapplication) instead of the main process binary + // (/system/bin/app_process(32)). The logic is not sound in general (it + // assumes base_addr is the real address, even though it actually is a load + // bias), but it happens to work on android because app_process has a file + // address of zero. + // This should be removed after we drop support for android-23. + if (m_process->GetTarget().GetArchitecture().GetTriple().isAndroid()) { + MemoryRegionInfo memory_info; + Status error = m_process->GetMemoryRegionInfo(base_addr, memory_info); + if (error.Success() && memory_info.GetMapped() && + memory_info.GetRange().GetRangeBase() == base_addr && + !(memory_info.GetName().IsEmpty())) { + if (ModuleSP module_sp = DynamicLoader::LoadModuleAtAddress( + FileSpec(memory_info.GetName().GetStringRef()), link_map_addr, + base_addr, base_addr_is_offset)) + return module_sp; + } + } + + return nullptr; +} + void DynamicLoaderPOSIXDYLD::LoadAllCurrentModules() { DYLDRendezvous::iterator I; DYLDRendezvous::iterator E; ModuleList module_list; - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); LoadVDSO(); @@ -612,15 +657,16 @@ void DynamicLoaderPOSIXDYLD::LoadAllCurrentModules() { I->file_spec.GetFilename()); module_list.Append(module_sp); } else { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); LLDB_LOGF( log, "DynamicLoaderPOSIXDYLD::%s failed loading module %s at 0x%" PRIx64, - __FUNCTION__, I->file_spec.GetCString(), I->base_addr); + __FUNCTION__, I->file_spec.GetPath().c_str(), I->base_addr); } } m_process->GetTarget().ModulesDidLoad(module_list); + m_initial_modules_added = true; } addr_t DynamicLoaderPOSIXDYLD::ComputeLoadOffset() { @@ -650,11 +696,11 @@ addr_t DynamicLoaderPOSIXDYLD::ComputeLoadOffset() { } void DynamicLoaderPOSIXDYLD::EvalSpecialModulesStatus() { - if (llvm::Optional vdso_base = + if (std::optional vdso_base = m_auxv->GetAuxValue(AuxVector::AUXV_AT_SYSINFO_EHDR)) m_vdso_base = *vdso_base; - if (llvm::Optional interpreter_base = + if (std::optional interpreter_base = m_auxv->GetAuxValue(AuxVector::AUXV_AT_BASE)) m_interpreter_base = *interpreter_base; } @@ -666,7 +712,7 @@ addr_t DynamicLoaderPOSIXDYLD::GetEntryPoint() { if (m_auxv == nullptr) return LLDB_INVALID_ADDRESS; - llvm::Optional entry_point = + std::optional entry_point = m_auxv->GetAuxValue(AuxVector::AUXV_AT_ENTRY); if (!entry_point) return LLDB_INVALID_ADDRESS; @@ -720,7 +766,7 @@ DynamicLoaderPOSIXDYLD::GetThreadLocalData(const lldb::ModuleSP module_sp, addr_t dtv_slot = dtv + metadata.dtv_slot_size * modid; addr_t tls_block = ReadPointer(dtv_slot + metadata.tls_offset); - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); LLDB_LOGF(log, "DynamicLoaderPOSIXDYLD::Performed TLS lookup: " "module=%s, link_map=0x%" PRIx64 ", tp=0x%" PRIx64 @@ -736,7 +782,7 @@ DynamicLoaderPOSIXDYLD::GetThreadLocalData(const lldb::ModuleSP module_sp, void DynamicLoaderPOSIXDYLD::ResolveExecutableModule( lldb::ModuleSP &module_sp) { - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER)); + Log *log = GetLog(LLDBLog::DynamicLoader); if (m_process == nullptr) return; @@ -794,3 +840,7 @@ bool DynamicLoaderPOSIXDYLD::AlwaysRelyOnEHUnwindInfo( return module_sp->GetFileSpec().GetPath() == "[vdso]"; } + +bool DynamicLoaderPOSIXDYLD::IsCoreFile() const { + return !m_process->IsLiveDebugSession(); +} diff --git a/gnu/llvm/lldb/source/Plugins/Language/CPlusPlus/LibCxxBitset.cpp b/gnu/llvm/lldb/source/Plugins/Language/CPlusPlus/LibCxxBitset.cpp deleted file mode 100644 index e5b868fc0fc..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Language/CPlusPlus/LibCxxBitset.cpp +++ /dev/null @@ -1,120 +0,0 @@ -//===-- LibCxxBitset.cpp --------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "LibCxx.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "lldb/DataFormatters/FormattersHelpers.h" -#include "lldb/Target/Target.h" - -using namespace lldb; -using namespace lldb_private; - -namespace { - -class BitsetFrontEnd : public SyntheticChildrenFrontEnd { -public: - BitsetFrontEnd(ValueObject &valobj); - - size_t GetIndexOfChildWithName(ConstString name) override { - return formatters::ExtractIndexFromString(name.GetCString()); - } - - bool MightHaveChildren() override { return true; } - bool Update() override; - size_t CalculateNumChildren() override { return m_elements.size(); } - ValueObjectSP GetChildAtIndex(size_t idx) override; - -private: - // The lifetime of a ValueObject and all its derivative ValueObjects - // (children, clones, etc.) is managed by a ClusterManager. These - // objects are only destroyed when every shared pointer to any of them - // is destroyed, so we must not store a shared pointer to any ValueObject - // derived from our backend ValueObject (since we're in the same cluster). - // Value objects created from raw data (i.e. in a different cluster) must - // be referenced via shared pointer to keep them alive, however. - std::vector m_elements; - ValueObject* m_first = nullptr; - CompilerType m_bool_type; - ByteOrder m_byte_order = eByteOrderInvalid; - uint8_t m_byte_size = 0; -}; -} // namespace - -BitsetFrontEnd::BitsetFrontEnd(ValueObject &valobj) - : SyntheticChildrenFrontEnd(valobj) { - m_bool_type = valobj.GetCompilerType().GetBasicTypeFromAST(eBasicTypeBool); - if (auto target_sp = m_backend.GetTargetSP()) { - m_byte_order = target_sp->GetArchitecture().GetByteOrder(); - m_byte_size = target_sp->GetArchitecture().GetAddressByteSize(); - Update(); - } -} - -bool BitsetFrontEnd::Update() { - m_elements.clear(); - m_first = nullptr; - - TargetSP target_sp = m_backend.GetTargetSP(); - if (!target_sp) - return false; - size_t capping_size = target_sp->GetMaximumNumberOfChildrenToDisplay(); - - size_t size = 0; - if (auto arg = m_backend.GetCompilerType().GetIntegralTemplateArgument(0)) - size = arg->value.getLimitedValue(capping_size); - - m_elements.assign(size, ValueObjectSP()); - - m_first = m_backend.GetChildMemberWithName(ConstString("__first_"), true).get(); - return false; -} - -ValueObjectSP BitsetFrontEnd::GetChildAtIndex(size_t idx) { - if (idx >= m_elements.size() || !m_first) - return ValueObjectSP(); - - if (m_elements[idx]) - return m_elements[idx]; - - ExecutionContext ctx = m_backend.GetExecutionContextRef().Lock(false); - CompilerType type; - ValueObjectSP chunk; - // For small bitsets __first_ is not an array, but a plain size_t. - if (m_first->GetCompilerType().IsArrayType(&type)) { - llvm::Optional bit_size = - type.GetBitSize(ctx.GetBestExecutionContextScope()); - if (!bit_size || *bit_size == 0) - return {}; - chunk = m_first->GetChildAtIndex(idx / *bit_size, true); - } else { - type = m_first->GetCompilerType(); - chunk = m_first->GetSP(); - } - if (!type || !chunk) - return {}; - - llvm::Optional bit_size = - type.GetBitSize(ctx.GetBestExecutionContextScope()); - if (!bit_size || *bit_size == 0) - return {}; - size_t chunk_idx = idx % *bit_size; - uint8_t value = !!(chunk->GetValueAsUnsigned(0) & (uint64_t(1) << chunk_idx)); - DataExtractor data(&value, sizeof(value), m_byte_order, m_byte_size); - - m_elements[idx] = CreateValueObjectFromData(llvm::formatv("[{0}]", idx).str(), - data, ctx, m_bool_type); - - return m_elements[idx]; -} - -SyntheticChildrenFrontEnd *formatters::LibcxxBitsetSyntheticFrontEndCreator( - CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp) { - if (valobj_sp) - return new BitsetFrontEnd(*valobj_sp); - return nullptr; -} diff --git a/gnu/llvm/lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp b/gnu/llvm/lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp deleted file mode 100644 index c0c81963285..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Language/CPlusPlus/LibCxxOptional.cpp +++ /dev/null @@ -1,84 +0,0 @@ -//===-- LibCxxOptional.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "LibCxx.h" -#include "lldb/DataFormatters/FormattersHelpers.h" - -using namespace lldb; -using namespace lldb_private; - -namespace { - -class OptionalFrontEnd : public SyntheticChildrenFrontEnd { -public: - OptionalFrontEnd(ValueObject &valobj) : SyntheticChildrenFrontEnd(valobj) { - Update(); - } - - size_t GetIndexOfChildWithName(ConstString name) override { - return formatters::ExtractIndexFromString(name.GetCString()); - } - - bool MightHaveChildren() override { return true; } - bool Update() override; - size_t CalculateNumChildren() override { return m_has_value ? 1U : 0U; } - ValueObjectSP GetChildAtIndex(size_t idx) override; - -private: - /// True iff the option contains a value. - bool m_has_value = false; -}; -} // namespace - -bool OptionalFrontEnd::Update() { - ValueObjectSP engaged_sp( - m_backend.GetChildMemberWithName(ConstString("__engaged_"), true)); - - if (!engaged_sp) - return false; - - // __engaged_ is a bool flag and is true if the optional contains a value. - // Converting it to unsigned gives us a size of 1 if it contains a value - // and 0 if not. - m_has_value = engaged_sp->GetValueAsUnsigned(0) == 1; - - return false; -} - -ValueObjectSP OptionalFrontEnd::GetChildAtIndex(size_t idx) { - if (!m_has_value) - return ValueObjectSP(); - - // __val_ contains the underlying value of an optional if it has one. - // Currently because it is part of an anonymous union GetChildMemberWithName() - // does not peer through and find it unless we are at the parent itself. - // We can obtain the parent through __engaged_. - ValueObjectSP val_sp( - m_backend.GetChildMemberWithName(ConstString("__engaged_"), true) - ->GetParent() - ->GetChildAtIndex(0, true) - ->GetChildMemberWithName(ConstString("__val_"), true)); - - if (!val_sp) - return ValueObjectSP(); - - CompilerType holder_type = val_sp->GetCompilerType(); - - if (!holder_type) - return ValueObjectSP(); - - return val_sp->Clone(ConstString("Value")); -} - -SyntheticChildrenFrontEnd * -formatters::LibcxxOptionalFrontEndCreator(CXXSyntheticChildren *, - lldb::ValueObjectSP valobj_sp) { - if (valobj_sp) - return new OptionalFrontEnd(*valobj_sp); - return nullptr; -} diff --git a/gnu/llvm/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/gnu/llvm/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp index 21beba045be..2fc52931cfc 100644 --- a/gnu/llvm/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp +++ b/gnu/llvm/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include "lldb/Core/FileSpecList.h" @@ -26,6 +27,7 @@ #include "lldb/Target/Target.h" #include "lldb/Utility/ArchSpec.h" #include "lldb/Utility/DataBufferHeap.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" #include "lldb/Utility/RangeMap.h" #include "lldb/Utility/Status.h" @@ -55,36 +57,36 @@ using namespace llvm::ELF; LLDB_PLUGIN_DEFINE(ObjectFileELF) -namespace { - // ELF note owner definitions -const char *const LLDB_NT_OWNER_FREEBSD = "FreeBSD"; -const char *const LLDB_NT_OWNER_GNU = "GNU"; -const char *const LLDB_NT_OWNER_NETBSD = "NetBSD"; -const char *const LLDB_NT_OWNER_NETBSDCORE = "NetBSD-CORE"; -const char *const LLDB_NT_OWNER_OPENBSD = "OpenBSD"; -const char *const LLDB_NT_OWNER_ANDROID = "Android"; -const char *const LLDB_NT_OWNER_CORE = "CORE"; -const char *const LLDB_NT_OWNER_LINUX = "LINUX"; +static const char *const LLDB_NT_OWNER_FREEBSD = "FreeBSD"; +static const char *const LLDB_NT_OWNER_GNU = "GNU"; +static const char *const LLDB_NT_OWNER_NETBSD = "NetBSD"; +static const char *const LLDB_NT_OWNER_NETBSDCORE = "NetBSD-CORE"; +static const char *const LLDB_NT_OWNER_OPENBSD = "OpenBSD"; +static const char *const LLDB_NT_OWNER_ANDROID = "Android"; +static const char *const LLDB_NT_OWNER_CORE = "CORE"; +static const char *const LLDB_NT_OWNER_LINUX = "LINUX"; // ELF note type definitions -const elf_word LLDB_NT_FREEBSD_ABI_TAG = 0x01; -const elf_word LLDB_NT_FREEBSD_ABI_SIZE = 4; +static const elf_word LLDB_NT_FREEBSD_ABI_TAG = 0x01; +static const elf_word LLDB_NT_FREEBSD_ABI_SIZE = 4; -const elf_word LLDB_NT_GNU_ABI_TAG = 0x01; -const elf_word LLDB_NT_GNU_ABI_SIZE = 16; +static const elf_word LLDB_NT_GNU_ABI_TAG = 0x01; +static const elf_word LLDB_NT_GNU_ABI_SIZE = 16; -const elf_word LLDB_NT_GNU_BUILD_ID_TAG = 0x03; +static const elf_word LLDB_NT_GNU_BUILD_ID_TAG = 0x03; -const elf_word LLDB_NT_NETBSD_IDENT_TAG = 1; -const elf_word LLDB_NT_NETBSD_IDENT_DESCSZ = 4; -const elf_word LLDB_NT_NETBSD_IDENT_NAMESZ = 7; -const elf_word LLDB_NT_NETBSD_PROCINFO = 1; +static const elf_word LLDB_NT_NETBSD_IDENT_TAG = 1; +static const elf_word LLDB_NT_NETBSD_IDENT_DESCSZ = 4; +static const elf_word LLDB_NT_NETBSD_IDENT_NAMESZ = 7; +static const elf_word LLDB_NT_NETBSD_PROCINFO = 1; // GNU ABI note OS constants -const elf_word LLDB_NT_GNU_ABI_OS_LINUX = 0x00; -const elf_word LLDB_NT_GNU_ABI_OS_HURD = 0x01; -const elf_word LLDB_NT_GNU_ABI_OS_SOLARIS = 0x02; +static const elf_word LLDB_NT_GNU_ABI_OS_LINUX = 0x00; +static const elf_word LLDB_NT_GNU_ABI_OS_HURD = 0x01; +static const elf_word LLDB_NT_GNU_ABI_OS_SOLARIS = 0x02; + +namespace { //===----------------------------------------------------------------------===// /// \class ELFRelocation @@ -112,19 +114,22 @@ public: static unsigned RelocSymbol64(const ELFRelocation &rel); - static unsigned RelocOffset32(const ELFRelocation &rel); + static elf_addr RelocOffset32(const ELFRelocation &rel); - static unsigned RelocOffset64(const ELFRelocation &rel); + static elf_addr RelocOffset64(const ELFRelocation &rel); - static unsigned RelocAddend32(const ELFRelocation &rel); + static elf_sxword RelocAddend32(const ELFRelocation &rel); - static unsigned RelocAddend64(const ELFRelocation &rel); + static elf_sxword RelocAddend64(const ELFRelocation &rel); + + bool IsRela() { return (reloc.is()); } private: typedef llvm::PointerUnion RelocUnion; RelocUnion reloc; }; +} // end anonymous namespace ELFRelocation::ELFRelocation(unsigned type) { if (type == DT_REL || type == SHT_REL) @@ -180,36 +185,34 @@ unsigned ELFRelocation::RelocSymbol64(const ELFRelocation &rel) { return ELFRela::RelocSymbol64(*rel.reloc.get()); } -unsigned ELFRelocation::RelocOffset32(const ELFRelocation &rel) { +elf_addr ELFRelocation::RelocOffset32(const ELFRelocation &rel) { if (rel.reloc.is()) return rel.reloc.get()->r_offset; else return rel.reloc.get()->r_offset; } -unsigned ELFRelocation::RelocOffset64(const ELFRelocation &rel) { +elf_addr ELFRelocation::RelocOffset64(const ELFRelocation &rel) { if (rel.reloc.is()) return rel.reloc.get()->r_offset; else return rel.reloc.get()->r_offset; } -unsigned ELFRelocation::RelocAddend32(const ELFRelocation &rel) { +elf_sxword ELFRelocation::RelocAddend32(const ELFRelocation &rel) { if (rel.reloc.is()) return 0; else return rel.reloc.get()->r_addend; } -unsigned ELFRelocation::RelocAddend64(const ELFRelocation &rel) { +elf_sxword ELFRelocation::RelocAddend64(const ELFRelocation &rel) { if (rel.reloc.is()) return 0; else return rel.reloc.get()->r_addend; } -} // end anonymous namespace - static user_id_t SegmentID(size_t PHdrIndex) { return ~user_id_t(PHdrIndex); } @@ -236,7 +239,7 @@ bool ELFNote::Parse(const DataExtractor &data, lldb::offset_t *offset) { const char *cstr = data.GetCStr(offset, llvm::alignTo(n_namesz, 4)); if (cstr == nullptr) { - Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_SYMBOLS)); + Log *log = GetLog(LLDBLog::Symbols); LLDB_LOGF(log, "Failed to parse note name lacking nul terminator"); return false; @@ -310,11 +313,35 @@ static uint32_t riscvVariantFromElfFlags(const elf::ELFHeader &header) { } } +static uint32_t ppc64VariantFromElfFlags(const elf::ELFHeader &header) { + uint32_t endian = header.e_ident[EI_DATA]; + if (endian == ELFDATA2LSB) + return ArchSpec::eCore_ppc64le_generic; + else + return ArchSpec::eCore_ppc64_generic; +} + +static uint32_t loongarchVariantFromElfFlags(const elf::ELFHeader &header) { + uint32_t fileclass = header.e_ident[EI_CLASS]; + switch (fileclass) { + case llvm::ELF::ELFCLASS32: + return ArchSpec::eLoongArchSubType_loongarch32; + case llvm::ELF::ELFCLASS64: + return ArchSpec::eLoongArchSubType_loongarch64; + default: + return ArchSpec::eLoongArchSubType_unknown; + } +} + static uint32_t subTypeFromElfHeader(const elf::ELFHeader &header) { if (header.e_machine == llvm::ELF::EM_MIPS) return mipsVariantFromElfFlags(header); + else if (header.e_machine == llvm::ELF::EM_PPC64) + return ppc64VariantFromElfFlags(header); else if (header.e_machine == llvm::ELF::EM_RISCV) return riscvVariantFromElfFlags(header); + else if (header.e_machine == llvm::ELF::EM_LOONGARCH) + return loongarchVariantFromElfFlags(header); return LLDB_INVALID_CPUTYPE; } @@ -335,26 +362,19 @@ void ObjectFileELF::Terminate() { PluginManager::UnregisterPlugin(CreateInstance); } -lldb_private::ConstString ObjectFileELF::GetPluginNameStatic() { - static ConstString g_name("elf"); - return g_name; -} - -const char *ObjectFileELF::GetPluginDescriptionStatic() { - return "ELF object file reader."; -} - ObjectFile *ObjectFileELF::CreateInstance(const lldb::ModuleSP &module_sp, - DataBufferSP &data_sp, + DataBufferSP data_sp, lldb::offset_t data_offset, const lldb_private::FileSpec *file, lldb::offset_t file_offset, lldb::offset_t length) { + bool mapped_writable = false; if (!data_sp) { - data_sp = MapFileData(*file, length, file_offset); + data_sp = MapFileDataWritable(*file, length, file_offset); if (!data_sp) return nullptr; data_offset = 0; + mapped_writable = true; } assert(data_sp); @@ -368,10 +388,19 @@ ObjectFile *ObjectFileELF::CreateInstance(const lldb::ModuleSP &module_sp, // Update the data to contain the entire file if it doesn't already if (data_sp->GetByteSize() < length) { - data_sp = MapFileData(*file, length, file_offset); + data_sp = MapFileDataWritable(*file, length, file_offset); if (!data_sp) return nullptr; data_offset = 0; + mapped_writable = true; + magic = data_sp->GetBytes(); + } + + // If we didn't map the data as writable take ownership of the buffer. + if (!mapped_writable) { + data_sp = std::make_shared(data_sp->GetBytes(), + data_sp->GetByteSize()); + data_offset = 0; magic = data_sp->GetBytes(); } @@ -388,7 +417,7 @@ ObjectFile *ObjectFileELF::CreateInstance(const lldb::ModuleSP &module_sp, } ObjectFile *ObjectFileELF::CreateMemoryInstance( - const lldb::ModuleSP &module_sp, DataBufferSP &data_sp, + const lldb::ModuleSP &module_sp, WritableDataBufferSP data_sp, const lldb::ProcessSP &process_sp, lldb::addr_t header_addr) { if (data_sp && data_sp->GetByteSize() > (llvm::ELF::EI_NIDENT)) { const uint8_t *magic = data_sp->GetBytes(); @@ -418,8 +447,8 @@ bool ObjectFileELF::MagicBytesMatch(DataBufferSP &data_sp, } static uint32_t calc_crc32(uint32_t init, const DataExtractor &data) { - return llvm::crc32( - init, llvm::makeArrayRef(data.GetDataStart(), data.GetByteSize())); + return llvm::crc32(init, + llvm::ArrayRef(data.GetDataStart(), data.GetByteSize())); } uint32_t ObjectFileELF::CalculateELFNotesSegmentsCRC32( @@ -514,7 +543,7 @@ size_t ObjectFileELF::GetModuleSpecifications( const lldb_private::FileSpec &file, lldb::DataBufferSP &data_sp, lldb::offset_t data_offset, lldb::offset_t file_offset, lldb::offset_t length, lldb_private::ModuleSpecList &specs) { - Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_MODULES)); + Log *log = GetLog(LLDBLog::Modules); const size_t initial_count = specs.GetSize(); @@ -615,13 +644,13 @@ size_t ObjectFileELF::GetModuleSpecifications( if (gnu_debuglink_crc) { // Use 4 bytes of crc from the .gnu_debuglink section. u32le data(gnu_debuglink_crc); - uuid = UUID::fromData(&data, sizeof(data)); + uuid = UUID(&data, sizeof(data)); } else if (core_notes_crc) { // Use 8 bytes - first 4 bytes for *magic* prefix, mainly to make // it look different form .gnu_debuglink crc followed by 4 bytes // of note segments crc. u32le data[] = {u32le(g_core_uuid_magic), u32le(core_notes_crc)}; - uuid = UUID::fromData(data, sizeof(data)); + uuid = UUID(data, sizeof(data)); } } @@ -634,16 +663,10 @@ size_t ObjectFileELF::GetModuleSpecifications( return specs.GetSize() - initial_count; } -// PluginInterface protocol -lldb_private::ConstString ObjectFileELF::GetPluginName() { - return GetPluginNameStatic(); -} - -uint32_t ObjectFileELF::GetPluginVersion() { return m_plugin_version; } // ObjectFile protocol ObjectFileELF::ObjectFileELF(const lldb::ModuleSP &module_sp, - DataBufferSP &data_sp, lldb::offset_t data_offset, + DataBufferSP data_sp, lldb::offset_t data_offset, const FileSpec *file, lldb::offset_t file_offset, lldb::offset_t length) : ObjectFile(module_sp, file, file_offset, length, data_sp, data_offset) { @@ -652,7 +675,7 @@ ObjectFileELF::ObjectFileELF(const lldb::ModuleSP &module_sp, } ObjectFileELF::ObjectFileELF(const lldb::ModuleSP &module_sp, - DataBufferSP &header_data_sp, + DataBufferSP header_data_sp, const lldb::ProcessSP &process_sp, addr_t header_addr) : ObjectFile(module_sp, process_sp, header_addr, header_data_sp) {} @@ -782,7 +805,7 @@ UUID ObjectFileELF::GetUUID() { // look different form .gnu_debuglink crc - followed by 4 bytes of note // segments crc. u32le data[] = {u32le(g_core_uuid_magic), u32le(core_notes_crc)}; - m_uuid = UUID::fromData(data, sizeof(data)); + m_uuid = UUID(data, sizeof(data)); } } else { if (!m_gnu_debuglink_crc) @@ -790,7 +813,7 @@ UUID ObjectFileELF::GetUUID() { if (m_gnu_debuglink_crc) { // Use 4 bytes of crc from the .gnu_debuglink section. u32le data(m_gnu_debuglink_crc); - m_uuid = UUID::fromData(&data, sizeof(data)); + m_uuid = UUID(&data, sizeof(data)); } } } @@ -798,9 +821,9 @@ UUID ObjectFileELF::GetUUID() { return m_uuid; } -llvm::Optional ObjectFileELF::GetDebugLink() { +std::optional ObjectFileELF::GetDebugLink() { if (m_gnu_debuglink_file.empty()) - return llvm::None; + return std::nullopt; return FileSpec(m_gnu_debuglink_file); } @@ -1014,7 +1037,7 @@ lldb_private::Status ObjectFileELF::RefineModuleDetailsFromNote(lldb_private::DataExtractor &data, lldb_private::ArchSpec &arch_spec, lldb_private::UUID &uuid) { - Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_MODULES)); + Log *log = GetLog(LLDBLog::Modules); Status error; lldb::offset_t offset = 0; @@ -1128,7 +1151,7 @@ ObjectFileELF::RefineModuleDetailsFromNote(lldb_private::DataExtractor &data, if (note.n_descsz >= 4) { if (const uint8_t *buf = data.PeekData(offset, note.n_descsz)) { // Save the build id as the UUID for the module. - uuid = UUID::fromData(buf, note.n_descsz); + uuid = UUID(buf, note.n_descsz); } else { error.SetErrorString("failed to read GNU_BUILD_ID note payload"); return error; @@ -1190,26 +1213,28 @@ ObjectFileELF::RefineModuleDetailsFromNote(lldb_private::DataExtractor &data, // register info arch_spec.GetTriple().setOS(llvm::Triple::OSType::Linux); } else if (note.n_name == LLDB_NT_OWNER_CORE) { - // Parse the NT_FILE to look for stuff in paths to shared libraries As - // the contents look like this in a 64 bit ELF core file: count = - // 0x000000000000000a (10) page_size = 0x0000000000001000 (4096) Index - // start end file_ofs path ===== - // 0x0000000000401000 0x0000000000000000 /tmp/a.out [ 1] - // 0x0000000000600000 0x0000000000601000 0x0000000000000000 /tmp/a.out [ - // 2] 0x0000000000601000 0x0000000000602000 0x0000000000000001 /tmp/a.out - // [ 3] 0x00007fa79c9ed000 0x00007fa79cba8000 0x0000000000000000 - // /lib/x86_64-linux-gnu/libc-2.19.so [ 4] 0x00007fa79cba8000 - // 0x00007fa79cda7000 0x00000000000001bb /lib/x86_64-linux- - // gnu/libc-2.19.so [ 5] 0x00007fa79cda7000 0x00007fa79cdab000 - // 0x00000000000001ba /lib/x86_64-linux-gnu/libc-2.19.so [ 6] - // 0x00007fa79cdab000 0x00007fa79cdad000 0x00000000000001be /lib/x86_64 - // -linux-gnu/libc-2.19.so [ 7] 0x00007fa79cdb2000 0x00007fa79cdd5000 - // 0x0000000000000000 /lib/x86_64-linux-gnu/ld-2.19.so [ 8] - // 0x00007fa79cfd4000 0x00007fa79cfd5000 0x0000000000000022 /lib/x86_64 - // -linux-gnu/ld-2.19.so [ 9] 0x00007fa79cfd5000 0x00007fa79cfd6000 - // 0x0000000000000023 /lib/x86_64-linux-gnu/ld-2.19.so In the 32 bit ELFs - // the count, page_size, start, end, file_ofs are uint32_t For reference: - // see readelf source code (in binutils). + // Parse the NT_FILE to look for stuff in paths to shared libraries + // The contents look like this in a 64 bit ELF core file: + // + // count = 0x000000000000000a (10) + // page_size = 0x0000000000001000 (4096) + // Index start end file_ofs path + // ===== ------------------ ------------------ ------------------ ------------------------------------- + // [ 0] 0x0000000000401000 0x0000000000000000 /tmp/a.out + // [ 1] 0x0000000000600000 0x0000000000601000 0x0000000000000000 /tmp/a.out + // [ 2] 0x0000000000601000 0x0000000000602000 0x0000000000000001 /tmp/a.out + // [ 3] 0x00007fa79c9ed000 0x00007fa79cba8000 0x0000000000000000 /lib/x86_64-linux-gnu/libc-2.19.so + // [ 4] 0x00007fa79cba8000 0x00007fa79cda7000 0x00000000000001bb /lib/x86_64-linux-gnu/libc-2.19.so + // [ 5] 0x00007fa79cda7000 0x00007fa79cdab000 0x00000000000001ba /lib/x86_64-linux-gnu/libc-2.19.so + // [ 6] 0x00007fa79cdab000 0x00007fa79cdad000 0x00000000000001be /lib/x86_64-linux-gnu/libc-2.19.so + // [ 7] 0x00007fa79cdb2000 0x00007fa79cdd5000 0x0000000000000000 /lib/x86_64-linux-gnu/ld-2.19.so + // [ 8] 0x00007fa79cfd4000 0x00007fa79cfd5000 0x0000000000000022 /lib/x86_64-linux-gnu/ld-2.19.so + // [ 9] 0x00007fa79cfd5000 0x00007fa79cfd6000 0x0000000000000023 /lib/x86_64-linux-gnu/ld-2.19.so + // + // In the 32 bit ELFs the count, page_size, start, end, file_ofs are + // uint32_t. + // + // For reference: see readelf source code (in binutils). if (note.n_type == NT_FILE) { uint64_t count = data.GetAddress(&offset); const char *cstr; @@ -1377,11 +1402,33 @@ size_t ObjectFileELF::GetSectionHeaderInfo(SectionHeaderColl §ion_headers, arch_spec.SetFlags(ArchSpec::eARM_abi_hard_float); } + if (arch_spec.GetMachine() == llvm::Triple::riscv32 || + arch_spec.GetMachine() == llvm::Triple::riscv64) { + uint32_t flags = arch_spec.GetFlags(); + + if (header.e_flags & llvm::ELF::EF_RISCV_RVC) + flags |= ArchSpec::eRISCV_rvc; + if (header.e_flags & llvm::ELF::EF_RISCV_RVE) + flags |= ArchSpec::eRISCV_rve; + + if ((header.e_flags & llvm::ELF::EF_RISCV_FLOAT_ABI_SINGLE) == + llvm::ELF::EF_RISCV_FLOAT_ABI_SINGLE) + flags |= ArchSpec::eRISCV_float_abi_single; + else if ((header.e_flags & llvm::ELF::EF_RISCV_FLOAT_ABI_DOUBLE) == + llvm::ELF::EF_RISCV_FLOAT_ABI_DOUBLE) + flags |= ArchSpec::eRISCV_float_abi_double; + else if ((header.e_flags & llvm::ELF::EF_RISCV_FLOAT_ABI_QUAD) == + llvm::ELF::EF_RISCV_FLOAT_ABI_QUAD) + flags |= ArchSpec::eRISCV_float_abi_quad; + + arch_spec.SetFlags(flags); + } + // If there are no section headers we are done. if (header.e_shnum == 0) return 0; - Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_MODULES)); + Log *log = GetLog(LLDBLog::Modules); section_headers.resize(header.e_shnum); if (section_headers.size() != header.e_shnum) @@ -1577,7 +1624,7 @@ lldb::user_id_t ObjectFileELF::GetSectionIndexByName(const char *name) { } static SectionType GetSectionTypeFromName(llvm::StringRef Name) { - if (Name.consume_front(".debug_") || Name.consume_front(".zdebug_")) { + if (Name.consume_front(".debug_")) { return llvm::StringSwitch(Name) .Case("abbrev", eSectionTypeDWARFDebugAbbrev) .Case("abbrev.dwo", eSectionTypeDWARFDebugAbbrevDwo) @@ -1694,9 +1741,9 @@ class VMAddressProvider { ObjectFile::Type ObjectType; addr_t NextVMAddress = 0; VMMap::Allocator Alloc; - VMMap Segments = VMMap(Alloc); - VMMap Sections = VMMap(Alloc); - lldb_private::Log *Log = GetLogIfAllCategoriesSet(LIBLLDB_LOG_MODULES); + VMMap Segments{Alloc}; + VMMap Sections{Alloc}; + lldb_private::Log *Log = GetLog(LLDBLog::Modules); size_t SegmentCount = 0; std::string SegmentName; @@ -1720,22 +1767,22 @@ public: return llvm::formatv("{0}[{1}]", SegmentName, SegmentCount).str(); } - llvm::Optional GetAddressInfo(const ELFProgramHeader &H) { + std::optional GetAddressInfo(const ELFProgramHeader &H) { if (H.p_memsz == 0) { LLDB_LOG(Log, "Ignoring zero-sized {0} segment. Corrupt object file?", SegmentName); - return llvm::None; + return std::nullopt; } if (Segments.overlaps(H.p_vaddr, H.p_vaddr + H.p_memsz)) { LLDB_LOG(Log, "Ignoring overlapping {0} segment. Corrupt object file?", SegmentName); - return llvm::None; + return std::nullopt; } return VMRange(H.p_vaddr, H.p_memsz); } - llvm::Optional GetAddressInfo(const ELFSectionHeader &H) { + std::optional GetAddressInfo(const ELFSectionHeader &H) { VMRange Range = GetVMRange(H); SectionSP Segment; auto It = Segments.find(Range.GetRangeBase()); @@ -1755,7 +1802,7 @@ public: if (Range.GetByteSize() > 0 && Sections.overlaps(Range.GetRangeBase(), Range.GetRangeEnd())) { LLDB_LOG(Log, "Ignoring overlapping section. Corrupt object file?"); - return llvm::None; + return std::nullopt; } if (Segment) Range.Slide(-Segment->GetFileAddress()); @@ -1905,7 +1952,7 @@ std::shared_ptr ObjectFileELF::GetGnuDebugDataObjectFile() { auto err = lldb_private::lzma::uncompress(data.GetData(), uncompressedData); if (err) { GetModule()->ReportWarning( - "An error occurred while decompression the section %s: %s", + "An error occurred while decompression the section {0}: {1}", section->GetName().AsCString(), llvm::toString(std::move(err)).c_str()); return nullptr; } @@ -2193,23 +2240,6 @@ unsigned ObjectFileELF::ParseSymbols(Symtab *symtab, user_id_t start_id, // symbols. See above for more details. uint64_t symbol_value = symbol.st_value + symbol_value_offset; - if (symbol_section_sp == nullptr && shndx == SHN_ABS && - symbol.st_size != 0) { - // We don't have a section for a symbol with non-zero size. Create a new - // section for it so the address range covered by the symbol is also - // covered by the module (represented through the section list). It is - // needed so module lookup for the addresses covered by this symbol will - // be successfull. This case happens for absolute symbols. - ConstString fake_section_name(std::string(".absolute.") + symbol_name); - symbol_section_sp = - std::make_shared
(module_sp, this, SHN_ABS, fake_section_name, - eSectionTypeAbsoluteAddress, symbol_value, - symbol.st_size, 0, 0, 0, SHF_ALLOC); - - module_section_list->AddSection(symbol_section_sp); - section_list->AddSection(symbol_section_sp); - } - if (symbol_section_sp && CalculateType() != ObjectFile::Type::eTypeObjectFile) symbol_value -= symbol_section_sp->GetFileAddress(); @@ -2563,6 +2593,50 @@ ObjectFileELF::ParseTrampolineSymbols(Symtab *symbol_table, user_id_t start_id, rel_data, symtab_data, strtab_data); } +static void ApplyELF64ABS64Relocation(Symtab *symtab, ELFRelocation &rel, + DataExtractor &debug_data, + Section *rel_section) { + Symbol *symbol = symtab->FindSymbolByID(ELFRelocation::RelocSymbol64(rel)); + if (symbol) { + addr_t value = symbol->GetAddressRef().GetFileAddress(); + DataBufferSP &data_buffer_sp = debug_data.GetSharedDataBuffer(); + // ObjectFileELF creates a WritableDataBuffer in CreateInstance. + WritableDataBuffer *data_buffer = + llvm::cast(data_buffer_sp.get()); + uint64_t *dst = reinterpret_cast( + data_buffer->GetBytes() + rel_section->GetFileOffset() + + ELFRelocation::RelocOffset64(rel)); + uint64_t val_offset = value + ELFRelocation::RelocAddend64(rel); + memcpy(dst, &val_offset, sizeof(uint64_t)); + } +} + +static void ApplyELF64ABS32Relocation(Symtab *symtab, ELFRelocation &rel, + DataExtractor &debug_data, + Section *rel_section, bool is_signed) { + Symbol *symbol = symtab->FindSymbolByID(ELFRelocation::RelocSymbol64(rel)); + if (symbol) { + addr_t value = symbol->GetAddressRef().GetFileAddress(); + value += ELFRelocation::RelocAddend32(rel); + if ((!is_signed && (value > UINT32_MAX)) || + (is_signed && + ((int64_t)value > INT32_MAX || (int64_t)value < INT32_MIN))) { + Log *log = GetLog(LLDBLog::Modules); + LLDB_LOGF(log, "Failed to apply debug info relocations"); + return; + } + uint32_t truncated_addr = (value & 0xFFFFFFFF); + DataBufferSP &data_buffer_sp = debug_data.GetSharedDataBuffer(); + // ObjectFileELF creates a WritableDataBuffer in CreateInstance. + WritableDataBuffer *data_buffer = + llvm::cast(data_buffer_sp.get()); + uint32_t *dst = reinterpret_cast( + data_buffer->GetBytes() + rel_section->GetFileOffset() + + ELFRelocation::RelocOffset32(rel)); + memcpy(dst, &truncated_addr, sizeof(uint32_t)); + } +} + unsigned ObjectFileELF::ApplyRelocations( Symtab *symtab, const ELFHeader *hdr, const ELFSectionHeader *rel_hdr, const ELFSectionHeader *symtab_hdr, const ELFSectionHeader *debug_hdr, @@ -2584,71 +2658,92 @@ unsigned ObjectFileELF::ApplyRelocations( } for (unsigned i = 0; i < num_relocations; ++i) { - if (!rel.Parse(rel_data, &offset)) + if (!rel.Parse(rel_data, &offset)) { + GetModule()->ReportError(".rel{0}[{1:d}] failed to parse relocation", + rel_section->GetName().AsCString(), i); break; - + } Symbol *symbol = nullptr; if (hdr->Is32Bit()) { switch (reloc_type(rel)) { case R_386_32: - case R_386_PC32: - default: - // FIXME: This asserts with this input: - // - // foo.cpp - // int main(int argc, char **argv) { return 0; } - // - // clang++.exe --target=i686-unknown-linux-gnu -g -c foo.cpp -o foo.o - // - // and running this on the foo.o module. - assert(false && "unexpected relocation type"); - } - } else { - switch (reloc_type(rel)) { - case R_AARCH64_ABS64: - case R_X86_64_64: { symbol = symtab->FindSymbolByID(reloc_symbol(rel)); if (symbol) { - addr_t value = symbol->GetAddressRef().GetFileAddress(); + addr_t f_offset = + rel_section->GetFileOffset() + ELFRelocation::RelocOffset32(rel); DataBufferSP &data_buffer_sp = debug_data.GetSharedDataBuffer(); - uint64_t *dst = reinterpret_cast( - data_buffer_sp->GetBytes() + rel_section->GetFileOffset() + - ELFRelocation::RelocOffset64(rel)); - uint64_t val_offset = value + ELFRelocation::RelocAddend64(rel); - memcpy(dst, &val_offset, sizeof(uint64_t)); - } - break; - } - case R_X86_64_32: - case R_X86_64_32S: - case R_AARCH64_ABS32: { - symbol = symtab->FindSymbolByID(reloc_symbol(rel)); - if (symbol) { + // ObjectFileELF creates a WritableDataBuffer in CreateInstance. + WritableDataBuffer *data_buffer = + llvm::cast(data_buffer_sp.get()); + uint32_t *dst = reinterpret_cast( + data_buffer->GetBytes() + f_offset); + addr_t value = symbol->GetAddressRef().GetFileAddress(); - value += ELFRelocation::RelocAddend32(rel); - if ((reloc_type(rel) == R_X86_64_32 && (value > UINT32_MAX)) || - (reloc_type(rel) == R_X86_64_32S && - ((int64_t)value > INT32_MAX && (int64_t)value < INT32_MIN)) || - (reloc_type(rel) == R_AARCH64_ABS32 && - ((int64_t)value > INT32_MAX && (int64_t)value < INT32_MIN))) { - Log *log = - lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_MODULES); - LLDB_LOGF(log, "Failed to apply debug info relocations"); - break; + if (rel.IsRela()) { + value += ELFRelocation::RelocAddend32(rel); + } else { + value += *dst; } - uint32_t truncated_addr = (value & 0xFFFFFFFF); - DataBufferSP &data_buffer_sp = debug_data.GetSharedDataBuffer(); - uint32_t *dst = reinterpret_cast( - data_buffer_sp->GetBytes() + rel_section->GetFileOffset() + - ELFRelocation::RelocOffset32(rel)); - memcpy(dst, &truncated_addr, sizeof(uint32_t)); + *dst = value; + } else { + GetModule()->ReportError(".rel{0}[{1}] unknown symbol id: {2:d}", + rel_section->GetName().AsCString(), i, + reloc_symbol(rel)); } break; + case R_386_PC32: + default: + GetModule()->ReportError("unsupported 32-bit relocation:" + " .rel{0}[{1}], type {2}", + rel_section->GetName().AsCString(), i, + reloc_type(rel)); } - case R_X86_64_PC32: + } else { + switch (hdr->e_machine) { + case llvm::ELF::EM_AARCH64: + switch (reloc_type(rel)) { + case R_AARCH64_ABS64: + ApplyELF64ABS64Relocation(symtab, rel, debug_data, rel_section); + break; + case R_AARCH64_ABS32: + ApplyELF64ABS32Relocation(symtab, rel, debug_data, rel_section, true); + break; + default: + assert(false && "unexpected relocation type"); + } + break; + case llvm::ELF::EM_LOONGARCH: + switch (reloc_type(rel)) { + case R_LARCH_64: + ApplyELF64ABS64Relocation(symtab, rel, debug_data, rel_section); + break; + case R_LARCH_32: + ApplyELF64ABS32Relocation(symtab, rel, debug_data, rel_section, true); + break; + default: + assert(false && "unexpected relocation type"); + } + break; + case llvm::ELF::EM_X86_64: + switch (reloc_type(rel)) { + case R_X86_64_64: + ApplyELF64ABS64Relocation(symtab, rel, debug_data, rel_section); + break; + case R_X86_64_32: + ApplyELF64ABS32Relocation(symtab, rel, debug_data, rel_section, + false); + break; + case R_X86_64_32S: + ApplyELF64ABS32Relocation(symtab, rel, debug_data, rel_section, true); + break; + case R_X86_64_PC32: + default: + assert(false && "unexpected relocation type"); + } + break; default: - assert(false && "unexpected relocation type"); + assert(false && "unsupported machine"); } } } @@ -2703,156 +2798,133 @@ unsigned ObjectFileELF::RelocateDebugSections(const ELFSectionHeader *rel_hdr, return 0; } -Symtab *ObjectFileELF::GetSymtab() { +void ObjectFileELF::ParseSymtab(Symtab &lldb_symtab) { ModuleSP module_sp(GetModule()); if (!module_sp) - return nullptr; + return; - Progress progress(llvm::formatv("Parsing symbol table for {0}", - m_file.GetFilename().AsCString(""))); + Progress progress( + llvm::formatv("Parsing symbol table for {0}", + m_file.GetFilename().AsCString(""))); + ElapsedTime elapsed(module_sp->GetSymtabParseTime()); // We always want to use the main object file so we (hopefully) only have one // cached copy of our symtab, dynamic sections, etc. ObjectFile *module_obj_file = module_sp->GetObjectFile(); if (module_obj_file && module_obj_file != this) - return module_obj_file->GetSymtab(); - - if (m_symtab_up == nullptr) { - SectionList *section_list = module_sp->GetSectionList(); - if (!section_list) - return nullptr; + return module_obj_file->ParseSymtab(lldb_symtab); - uint64_t symbol_id = 0; - std::lock_guard guard(module_sp->GetMutex()); - - // Sharable objects and dynamic executables usually have 2 distinct symbol - // tables, one named ".symtab", and the other ".dynsym". The dynsym is a - // smaller version of the symtab that only contains global symbols. The - // information found in the dynsym is therefore also found in the symtab, - // while the reverse is not necessarily true. - Section *symtab = - section_list->FindSectionByType(eSectionTypeELFSymbolTable, true).get(); - if (symtab) { - m_symtab_up = std::make_unique(symtab->GetObjectFile()); - symbol_id += ParseSymbolTable(m_symtab_up.get(), symbol_id, symtab); - } + SectionList *section_list = module_sp->GetSectionList(); + if (!section_list) + return; - // The symtab section is non-allocable and can be stripped, while the - // .dynsym section which should always be always be there. To support the - // minidebuginfo case we parse .dynsym when there's a .gnu_debuginfo - // section, nomatter if .symtab was already parsed or not. This is because - // minidebuginfo normally removes the .symtab symbols which have their - // matching .dynsym counterparts. - if (!symtab || - GetSectionList()->FindSectionByName(ConstString(".gnu_debugdata"))) { - Section *dynsym = - section_list->FindSectionByType(eSectionTypeELFDynamicSymbols, true) - .get(); - if (dynsym) { - if (!m_symtab_up) - m_symtab_up = std::make_unique(dynsym->GetObjectFile()); - symbol_id += ParseSymbolTable(m_symtab_up.get(), symbol_id, dynsym); - } - } + uint64_t symbol_id = 0; - // DT_JMPREL - // If present, this entry's d_ptr member holds the address of - // relocation - // entries associated solely with the procedure linkage table. - // Separating - // these relocation entries lets the dynamic linker ignore them during - // process initialization, if lazy binding is enabled. If this entry is - // present, the related entries of types DT_PLTRELSZ and DT_PLTREL must - // also be present. - const ELFDynamic *symbol = FindDynamicSymbol(DT_JMPREL); - if (symbol) { - const ELFDynamic *pltrelsz = FindDynamicSymbol(DT_PLTRELSZ); - assert(pltrelsz != NULL); - // Synthesize trampoline symbols to help navigate the PLT. - addr_t addr = symbol->d_ptr; - Section *reloc_section = - section_list->FindSectionContainingFileAddress(addr).get(); - if (reloc_section && pltrelsz->d_val > 0) { - user_id_t reloc_id = reloc_section->GetID(); - const ELFSectionHeaderInfo *reloc_header = - GetSectionHeaderByIndex(reloc_id); - if (reloc_header) { - if (m_symtab_up == nullptr) - m_symtab_up = - std::make_unique(reloc_section->GetObjectFile()); - - ParseTrampolineSymbols(m_symtab_up.get(), symbol_id, reloc_header, - reloc_id); - } - } - } - - if (DWARFCallFrameInfo *eh_frame = - GetModule()->GetUnwindTable().GetEHFrameInfo()) { - if (m_symtab_up == nullptr) - m_symtab_up = std::make_unique(this); - ParseUnwindSymbols(m_symtab_up.get(), eh_frame); + // Sharable objects and dynamic executables usually have 2 distinct symbol + // tables, one named ".symtab", and the other ".dynsym". The dynsym is a + // smaller version of the symtab that only contains global symbols. The + // information found in the dynsym is therefore also found in the symtab, + // while the reverse is not necessarily true. + Section *symtab = + section_list->FindSectionByType(eSectionTypeELFSymbolTable, true).get(); + if (symtab) + symbol_id += ParseSymbolTable(&lldb_symtab, symbol_id, symtab); + + // The symtab section is non-allocable and can be stripped, while the + // .dynsym section which should always be always be there. To support the + // minidebuginfo case we parse .dynsym when there's a .gnu_debuginfo + // section, nomatter if .symtab was already parsed or not. This is because + // minidebuginfo normally removes the .symtab symbols which have their + // matching .dynsym counterparts. + if (!symtab || + GetSectionList()->FindSectionByName(ConstString(".gnu_debugdata"))) { + Section *dynsym = + section_list->FindSectionByType(eSectionTypeELFDynamicSymbols, true) + .get(); + if (dynsym) + symbol_id += ParseSymbolTable(&lldb_symtab, symbol_id, dynsym); + } + + // DT_JMPREL + // If present, this entry's d_ptr member holds the address of + // relocation + // entries associated solely with the procedure linkage table. + // Separating + // these relocation entries lets the dynamic linker ignore them during + // process initialization, if lazy binding is enabled. If this entry is + // present, the related entries of types DT_PLTRELSZ and DT_PLTREL must + // also be present. + const ELFDynamic *symbol = FindDynamicSymbol(DT_JMPREL); + if (symbol) { + const ELFDynamic *pltrelsz = FindDynamicSymbol(DT_PLTRELSZ); + assert(pltrelsz != NULL); + // Synthesize trampoline symbols to help navigate the PLT. + addr_t addr = symbol->d_ptr; + Section *reloc_section = + section_list->FindSectionContainingFileAddress(addr).get(); + if (reloc_section && pltrelsz->d_val > 0) { + user_id_t reloc_id = reloc_section->GetID(); + const ELFSectionHeaderInfo *reloc_header = + GetSectionHeaderByIndex(reloc_id); + if (reloc_header) + ParseTrampolineSymbols(&lldb_symtab, symbol_id, reloc_header, reloc_id); } + } - // If we still don't have any symtab then create an empty instance to avoid - // do the section lookup next time. - if (m_symtab_up == nullptr) - m_symtab_up = std::make_unique(this); - - // In the event that there's no symbol entry for the entry point we'll - // artificially create one. We delegate to the symtab object the figuring - // out of the proper size, this will usually make it span til the next - // symbol it finds in the section. This means that if there are missing - // symbols the entry point might span beyond its function definition. - // We're fine with this as it doesn't make it worse than not having a - // symbol entry at all. - if (CalculateType() == eTypeExecutable) { - ArchSpec arch = GetArchitecture(); - auto entry_point_addr = GetEntryPointAddress(); - bool is_valid_entry_point = - entry_point_addr.IsValid() && entry_point_addr.IsSectionOffset(); - addr_t entry_point_file_addr = entry_point_addr.GetFileAddress(); - if (is_valid_entry_point && !m_symtab_up->FindSymbolContainingFileAddress( - entry_point_file_addr)) { - uint64_t symbol_id = m_symtab_up->GetNumSymbols(); - // Don't set the name for any synthetic symbols, the Symbol - // object will generate one if needed when the name is accessed - // via accessors. - SectionSP section_sp = entry_point_addr.GetSection(); - Symbol symbol( - /*symID=*/symbol_id, - /*name=*/llvm::StringRef(), // Name will be auto generated. - /*type=*/eSymbolTypeCode, - /*external=*/true, - /*is_debug=*/false, - /*is_trampoline=*/false, - /*is_artificial=*/true, - /*section_sp=*/section_sp, - /*offset=*/0, - /*size=*/0, // FDE can span multiple symbols so don't use its size. - /*size_is_valid=*/false, - /*contains_linker_annotations=*/false, - /*flags=*/0); - // When the entry point is arm thumb we need to explicitly set its - // class address to reflect that. This is important because expression - // evaluation relies on correctly setting a breakpoint at this - // address. - if (arch.GetMachine() == llvm::Triple::arm && - (entry_point_file_addr & 1)) { - symbol.GetAddressRef().SetOffset(entry_point_addr.GetOffset() ^ 1); - m_address_class_map[entry_point_file_addr ^ 1] = - AddressClass::eCodeAlternateISA; - } else { - m_address_class_map[entry_point_file_addr] = AddressClass::eCode; - } - m_symtab_up->AddSymbol(symbol); + if (DWARFCallFrameInfo *eh_frame = + GetModule()->GetUnwindTable().GetEHFrameInfo()) { + ParseUnwindSymbols(&lldb_symtab, eh_frame); + } + + // In the event that there's no symbol entry for the entry point we'll + // artificially create one. We delegate to the symtab object the figuring + // out of the proper size, this will usually make it span til the next + // symbol it finds in the section. This means that if there are missing + // symbols the entry point might span beyond its function definition. + // We're fine with this as it doesn't make it worse than not having a + // symbol entry at all. + if (CalculateType() == eTypeExecutable) { + ArchSpec arch = GetArchitecture(); + auto entry_point_addr = GetEntryPointAddress(); + bool is_valid_entry_point = + entry_point_addr.IsValid() && entry_point_addr.IsSectionOffset(); + addr_t entry_point_file_addr = entry_point_addr.GetFileAddress(); + if (is_valid_entry_point && !lldb_symtab.FindSymbolContainingFileAddress( + entry_point_file_addr)) { + uint64_t symbol_id = lldb_symtab.GetNumSymbols(); + // Don't set the name for any synthetic symbols, the Symbol + // object will generate one if needed when the name is accessed + // via accessors. + SectionSP section_sp = entry_point_addr.GetSection(); + Symbol symbol( + /*symID=*/symbol_id, + /*name=*/llvm::StringRef(), // Name will be auto generated. + /*type=*/eSymbolTypeCode, + /*external=*/true, + /*is_debug=*/false, + /*is_trampoline=*/false, + /*is_artificial=*/true, + /*section_sp=*/section_sp, + /*offset=*/0, + /*size=*/0, // FDE can span multiple symbols so don't use its size. + /*size_is_valid=*/false, + /*contains_linker_annotations=*/false, + /*flags=*/0); + // When the entry point is arm thumb we need to explicitly set its + // class address to reflect that. This is important because expression + // evaluation relies on correctly setting a breakpoint at this + // address. + if (arch.GetMachine() == llvm::Triple::arm && + (entry_point_file_addr & 1)) { + symbol.GetAddressRef().SetOffset(entry_point_addr.GetOffset() ^ 1); + m_address_class_map[entry_point_file_addr ^ 1] = + AddressClass::eCodeAlternateISA; + } else { + m_address_class_map[entry_point_file_addr] = AddressClass::eCode; } + lldb_symtab.AddSymbol(symbol); } - - m_symtab_up->CalculateSymbolSizes(); } - - return m_symtab_up.get(); } void ObjectFileELF::RelocateSection(lldb_private::Section *section) @@ -3355,8 +3427,7 @@ size_t ObjectFileELF::ReadSectionData(Section *section, return section->GetObjectFile()->ReadSectionData(section, section_data); size_t result = ObjectFile::ReadSectionData(section, section_data); - if (result == 0 || !llvm::object::Decompressor::isCompressedELFSection( - section->Get(), section->GetName().GetStringRef())) + if (result == 0 || !(section->Get() & llvm::ELF::SHF_COMPRESSED)) return result; auto Decompressor = llvm::object::Decompressor::create( @@ -3366,7 +3437,7 @@ size_t ObjectFileELF::ReadSectionData(Section *section, GetByteOrder() == eByteOrderLittle, GetAddressByteSize() == 8); if (!Decompressor) { GetModule()->ReportWarning( - "Unable to initialize decompressor for section '%s': %s", + "Unable to initialize decompressor for section '{0}': {1}", section->GetName().GetCString(), llvm::toString(Decompressor.takeError()).c_str()); section_data.Clear(); @@ -3376,12 +3447,10 @@ size_t ObjectFileELF::ReadSectionData(Section *section, auto buffer_sp = std::make_shared(Decompressor->getDecompressedSize(), 0); if (auto error = Decompressor->decompress( - {reinterpret_cast(buffer_sp->GetBytes()), - size_t(buffer_sp->GetByteSize())})) { - GetModule()->ReportWarning( - "Decompression of section '%s' failed: %s", - section->GetName().GetCString(), - llvm::toString(std::move(error)).c_str()); + {buffer_sp->GetBytes(), size_t(buffer_sp->GetByteSize())})) { + GetModule()->ReportWarning("Decompression of section '{0}' failed: {1}", + section->GetName().GetCString(), + llvm::toString(std::move(error)).c_str()); section_data.Clear(); return 0; } @@ -3429,3 +3498,10 @@ ObjectFileELF::GetLoadableData(Target &target) { } return loadables; } + +lldb::WritableDataBufferSP +ObjectFileELF::MapFileDataWritable(const FileSpec &file, uint64_t Size, + uint64_t Offset) { + return FileSystem::Instance().CreateWritableDataBuffer(file.GetPath(), Size, + Offset); +} diff --git a/gnu/llvm/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.cpp b/gnu/llvm/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.cpp index cf94ea730b4..7aa5620b14d 100644 --- a/gnu/llvm/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.cpp +++ b/gnu/llvm/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.cpp @@ -20,6 +20,7 @@ #include "lldb/Target/Process.h" #include "lldb/Target/Target.h" #include "lldb/Utility/FileSpec.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" #include "lldb/Utility/State.h" #include "lldb/Utility/Status.h" @@ -40,7 +41,7 @@ static uint32_t g_initialize_count = 0; PlatformSP PlatformOpenBSD::CreateInstance(bool force, const ArchSpec *arch) { - Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PLATFORM)); + Log *log = GetLog(LLDBLog::Platform); LLDB_LOG(log, "force = {0}, arch=({1}, {2})", force, arch ? arch->GetArchitectureName() : "", arch ? arch->GetTriple().getTriple() : ""); @@ -71,25 +72,10 @@ PlatformSP PlatformOpenBSD::CreateInstance(bool force, const ArchSpec *arch) { return PlatformSP(); } -ConstString PlatformOpenBSD::GetPluginNameStatic(bool is_host) { - if (is_host) { - static ConstString g_host_name(Platform::GetHostPlatformName()); - return g_host_name; - } else { - static ConstString g_remote_name("remote-openbsd"); - return g_remote_name; - } -} - -const char *PlatformOpenBSD::GetPluginDescriptionStatic(bool is_host) { +llvm::StringRef PlatformOpenBSD::GetPluginDescriptionStatic(bool is_host) { if (is_host) return "Local OpenBSD user platform plug-in."; - else - return "Remote OpenBSD user platform plug-in."; -} - -ConstString PlatformOpenBSD::GetPluginName() { - return GetPluginNameStatic(IsHost()); + return "Remote OpenBSD user platform plug-in."; } void PlatformOpenBSD::Initialize() { @@ -121,53 +107,22 @@ void PlatformOpenBSD::Terminate() { /// Default Constructor PlatformOpenBSD::PlatformOpenBSD(bool is_host) : PlatformPOSIX(is_host) // This is the local host platform -{} - -bool PlatformOpenBSD::GetSupportedArchitectureAtIndex(uint32_t idx, - ArchSpec &arch) { - if (IsHost()) { - ArchSpec hostArch = HostInfo::GetArchitecture(HostInfo::eArchKindDefault); - if (hostArch.GetTriple().isOSOpenBSD()) { - if (idx == 0) { - arch = hostArch; - return arch.IsValid(); - } - } +{ + if (is_host) { + m_supported_architectures.push_back(HostInfo::GetArchitecture()); } else { - if (m_remote_platform_sp) - return m_remote_platform_sp->GetSupportedArchitectureAtIndex(idx, arch); - - llvm::Triple triple; - // Set the OS to OpenBSD - triple.setOS(llvm::Triple::OpenBSD); - // Set the architecture - switch (idx) { - case 0: - triple.setArchName("x86_64"); - break; - case 1: - triple.setArchName("i386"); - break; - case 2: - triple.setArchName("aarch64"); - break; - case 3: - triple.setArchName("arm"); - break; - default: - return false; - } - // Leave the vendor as "llvm::Triple:UnknownVendor" and don't specify the - // vendor by calling triple.SetVendorName("unknown") so that it is a - // "unspecified unknown". This means when someone calls - // triple.GetVendorName() it will return an empty string which indicates - // that the vendor can be set when two architectures are merged - - // Now set the triple into "arch" and return true - arch.SetTriple(triple); - return true; + m_supported_architectures = + CreateArchList({llvm::Triple::x86_64, llvm::Triple::x86, + llvm::Triple::aarch64, llvm::Triple::arm}, + llvm::Triple::OpenBSD); } - return false; +} + +std::vector +PlatformOpenBSD::GetSupportedArchitectures(const ArchSpec &process_host_arch) { + if (m_remote_platform_sp) + return m_remote_platform_sp->GetSupportedArchitectures(process_host_arch); + return m_supported_architectures; } void PlatformOpenBSD::GetStatus(Stream &strm) { @@ -199,121 +154,6 @@ bool PlatformOpenBSD::CanDebugProcess() { } } -// For local debugging, OpenBSD will override the debug logic to use llgs-launch -// rather than lldb-launch, llgs-attach. This differs from current lldb- -// launch, debugserver-attach approach on MacOSX. -lldb::ProcessSP -PlatformOpenBSD::DebugProcess(ProcessLaunchInfo &launch_info, Debugger &debugger, - Target *target, // Can be NULL, if NULL create a new - // target, else use existing one - Status &error) { - Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PLATFORM)); - LLDB_LOG(log, "target {0}", target); - - // If we're a remote host, use standard behavior from parent class. - if (!IsHost()) - return PlatformPOSIX::DebugProcess(launch_info, debugger, target, error); - - // - // For local debugging, we'll insist on having ProcessGDBRemote create the - // process. - // - - ProcessSP process_sp; - - // Make sure we stop at the entry point - launch_info.GetFlags().Set(eLaunchFlagDebug); - - // We always launch the process we are going to debug in a separate process - // group, since then we can handle ^C interrupts ourselves w/o having to - // worry about the target getting them as well. - launch_info.SetLaunchInSeparateProcessGroup(true); - - // Ensure we have a target. - if (target == nullptr) { - LLDB_LOG(log, "creating new target"); - TargetSP new_target_sp; - error = debugger.GetTargetList().CreateTarget(debugger, "", "", eLoadDependentsNo, - nullptr, new_target_sp); - if (error.Fail()) { - LLDB_LOG(log, "failed to create new target: {0}", error); - return process_sp; - } - - target = new_target_sp.get(); - if (!target) { - error.SetErrorString("CreateTarget() returned nullptr"); - LLDB_LOG(log, "error: {0}", error); - return process_sp; - } - } - - // Mark target as currently selected target. - //debugger.GetTargetList().SetSelectedTarget(target); - - // Now create the gdb-remote process. - LLDB_LOG(log, "having target create process with gdb-remote plugin"); - process_sp = target->CreateProcess( - launch_info.GetListener(), "gdb-remote", nullptr, true); - - if (!process_sp) { - error.SetErrorString("CreateProcess() failed for gdb-remote process"); - LLDB_LOG(log, "error: {0}", error); - return process_sp; - } - - LLDB_LOG(log, "successfully created process"); - // Adjust launch for a hijacker. - ListenerSP listener_sp; - if (!launch_info.GetHijackListener()) { - LLDB_LOG(log, "setting up hijacker"); - listener_sp = - Listener::MakeListener("lldb.PlatformOpenBSD.DebugProcess.hijack"); - launch_info.SetHijackListener(listener_sp); - process_sp->HijackProcessEvents(listener_sp); - } - - // Log file actions. - if (log) { - LLDB_LOG(log, "launching process with the following file actions:"); - StreamString stream; - size_t i = 0; - const FileAction *file_action; - while ((file_action = launch_info.GetFileActionAtIndex(i++)) != nullptr) { - file_action->Dump(stream); - LLDB_LOG(log, "{0}", stream.GetData()); - stream.Clear(); - } - } - - // Do the launch. - error = process_sp->Launch(launch_info); - if (error.Success()) { - // Handle the hijacking of process events. - if (listener_sp) { - const StateType state = process_sp->WaitForProcessToStop( - llvm::None, NULL, false, listener_sp); - - LLDB_LOG(log, "pid {0} state {0}", process_sp->GetID(), state); - } - - // Hook up process PTY if we have one (which we should for local debugging - // with llgs). - int pty_fd = launch_info.GetPTY().ReleasePrimaryFileDescriptor(); - if (pty_fd != PseudoTerminal::invalid_fd) { - process_sp->SetSTDIOFileDescriptor(pty_fd); - LLDB_LOG(log, "hooked up STDIO pty to process"); - } else - LLDB_LOG(log, "not using process STDIO pty"); - } else { - LLDB_LOG(log, "process launch failed: {0}", error); - // FIXME figure out appropriate cleanup here. Do we delete the target? Do - // we delete the process? Does our caller do that? - } - - return process_sp; -} - void PlatformOpenBSD::CalculateTrapHandlerSymbolNames() { m_trap_handlers.push_back(ConstString("_sigtramp")); } diff --git a/gnu/llvm/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.h b/gnu/llvm/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.h index 03fe3d645cc..f9fed95af93 100644 --- a/gnu/llvm/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.h +++ b/gnu/llvm/lldb/source/Plugins/Platform/OpenBSD/PlatformOpenBSD.h @@ -25,28 +25,28 @@ public: // lldb_private::PluginInterface functions static lldb::PlatformSP CreateInstance(bool force, const ArchSpec *arch); - static ConstString GetPluginNameStatic(bool is_host); - - static const char *GetPluginDescriptionStatic(bool is_host); + static llvm::StringRef GetPluginNameStatic(bool is_host) { + return is_host ? Platform::GetHostPlatformName() : "remote-openbsd"; + } - ConstString GetPluginName() override; + static llvm::StringRef GetPluginDescriptionStatic(bool is_host); - uint32_t GetPluginVersion() override { return 1; } + llvm::StringRef GetPluginName() override { + return GetPluginNameStatic(IsHost()); + } // lldb_private::Platform functions - const char *GetDescription() override { + llvm::StringRef GetDescription() override { return GetPluginDescriptionStatic(IsHost()); } void GetStatus(Stream &strm) override; - bool GetSupportedArchitectureAtIndex(uint32_t idx, ArchSpec &arch) override; + std::vector + GetSupportedArchitectures(const ArchSpec &process_host_arch) override; bool CanDebugProcess() override; - lldb::ProcessSP DebugProcess(ProcessLaunchInfo &launch_info, Debugger &debugger, - Target *target, Status &error) override; - void CalculateTrapHandlerSymbolNames() override; MmapArgList GetMmapArgumentList(const ArchSpec &arch, lldb::addr_t addr, @@ -56,6 +56,7 @@ public: lldb_private::FileSpec LocateExecutable(const char *basename) override; + std::vector m_supported_architectures; }; } // namespace platform_openbsd diff --git a/gnu/llvm/lldb/source/Plugins/Process/CMakeLists.txt b/gnu/llvm/lldb/source/Plugins/Process/CMakeLists.txt index 733b6738413..ec35a428a88 100644 --- a/gnu/llvm/lldb/source/Plugins/Process/CMakeLists.txt +++ b/gnu/llvm/lldb/source/Plugins/Process/CMakeLists.txt @@ -21,3 +21,4 @@ add_subdirectory(Utility) add_subdirectory(elf-core) add_subdirectory(mach-core) add_subdirectory(minidump) +add_subdirectory(FreeBSDKernel) diff --git a/gnu/llvm/lldb/source/Plugins/Process/Linux/IntelPTManager.cpp b/gnu/llvm/lldb/source/Plugins/Process/Linux/IntelPTManager.cpp deleted file mode 100644 index 0bd48933d4d..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Process/Linux/IntelPTManager.cpp +++ /dev/null @@ -1,685 +0,0 @@ -//===-- IntelPTManager.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -#include -#include - -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/Error.h" -#include "llvm/Support/MathExtras.h" - -#include "IntelPTManager.h" -#include "Plugins/Process/POSIX/ProcessPOSIXLog.h" -#include "lldb/Host/linux/Support.h" -#include "lldb/Utility/StreamString.h" - -#include -#include - -using namespace lldb; -using namespace lldb_private; -using namespace process_linux; -using namespace llvm; - -const char *kOSEventIntelPTTypeFile = - "/sys/bus/event_source/devices/intel_pt/type"; - -const char *kPSBPeriodCapFile = - "/sys/bus/event_source/devices/intel_pt/caps/psb_cyc"; - -const char *kPSBPeriodValidValuesFile = - "/sys/bus/event_source/devices/intel_pt/caps/psb_periods"; - -const char *kTSCBitOffsetFile = - "/sys/bus/event_source/devices/intel_pt/format/tsc"; - -const char *kPSBPeriodBitOffsetFile = - "/sys/bus/event_source/devices/intel_pt/format/psb_period"; - -enum IntelPTConfigFileType { - Hex = 0, - // 0 or 1 - ZeroOne, - Decimal, - // a bit index file always starts with the prefix config: following by an int, - // which represents the offset of the perf_event_attr.config value where to - // store a given configuration. - BitOffset -}; - -static Expected ReadIntelPTConfigFile(const char *file, - IntelPTConfigFileType type) { - ErrorOr> stream = - MemoryBuffer::getFileAsStream(file); - - if (!stream) - return createStringError(inconvertibleErrorCode(), - "Can't open the file '%s'", file); - - uint32_t value = 0; - StringRef text_buffer = stream.get()->getBuffer(); - - if (type == BitOffset) { - const char *prefix = "config:"; - if (!text_buffer.startswith(prefix)) - return createStringError(inconvertibleErrorCode(), - "The file '%s' contents doesn't start with '%s'", - file, prefix); - text_buffer = text_buffer.substr(strlen(prefix)); - } - - auto getRadix = [&]() { - switch (type) { - case Hex: - return 16; - case ZeroOne: - case Decimal: - case BitOffset: - return 10; - } - }; - - auto createError = [&](const char *expected_value_message) { - return createStringError( - inconvertibleErrorCode(), - "The file '%s' has an invalid value. It should be %s.", file, - expected_value_message); - }; - - if (text_buffer.trim().consumeInteger(getRadix(), value) || - (type == ZeroOne && value != 0 && value != 1)) { - switch (type) { - case Hex: - return createError("an unsigned hexadecimal int"); - case ZeroOne: - return createError("0 or 1"); - case Decimal: - case BitOffset: - return createError("an unsigned decimal int"); - } - } - return value; -} -/// Return the Linux perf event type for Intel PT. -static Expected GetOSEventType() { - return ReadIntelPTConfigFile(kOSEventIntelPTTypeFile, - IntelPTConfigFileType::Decimal); -} - -static Error CheckPsbPeriod(size_t psb_period) { - Expected cap = - ReadIntelPTConfigFile(kPSBPeriodCapFile, IntelPTConfigFileType::ZeroOne); - if (!cap) - return cap.takeError(); - if (*cap == 0) - return createStringError(inconvertibleErrorCode(), - "psb_period is unsupported in the system."); - - Expected valid_values = ReadIntelPTConfigFile( - kPSBPeriodValidValuesFile, IntelPTConfigFileType::Hex); - if (!valid_values) - return valid_values.takeError(); - - if (valid_values.get() & (1 << psb_period)) - return Error::success(); - - std::ostringstream error; - // 0 is always a valid value - error << "Invalid psb_period. Valid values are: 0"; - uint32_t mask = valid_values.get(); - while (mask) { - int index = __builtin_ctz(mask); - if (index > 0) - error << ", " << index; - // clear the lowest bit - mask &= mask - 1; - } - error << "."; - return createStringError(inconvertibleErrorCode(), error.str().c_str()); -} - -size_t IntelPTThreadTrace::GetTraceBufferSize() const { - return m_mmap_meta->aux_size; -} - -static Expected -GeneratePerfEventConfigValue(bool enable_tsc, Optional psb_period) { - uint64_t config = 0; - // tsc is always supported - if (enable_tsc) { - if (Expected offset = ReadIntelPTConfigFile( - kTSCBitOffsetFile, IntelPTConfigFileType::BitOffset)) - config |= 1 << *offset; - else - return offset.takeError(); - } - if (psb_period) { - if (Error error = CheckPsbPeriod(*psb_period)) - return std::move(error); - - if (Expected offset = ReadIntelPTConfigFile( - kPSBPeriodBitOffsetFile, IntelPTConfigFileType::BitOffset)) - config |= *psb_period << *offset; - else - return offset.takeError(); - } - return config; -} - -Error IntelPTThreadTrace::StartTrace(lldb::pid_t pid, lldb::tid_t tid, - uint64_t buffer_size, bool enable_tsc, - Optional psb_period) { -#ifndef PERF_ATTR_SIZE_VER5 - llvm_unreachable("Intel PT Linux perf event not supported"); -#else - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PTRACE)); - - m_tid = tid; - LLDB_LOG(log, "called thread id {0}", tid); - uint64_t page_size = getpagesize(); - - if (__builtin_popcount(buffer_size) != 1 || buffer_size < 4096) { - return createStringError( - inconvertibleErrorCode(), - "The trace buffer size must be a power of 2 greater than or equal to " - "4096 (2^12) bytes. It was %" PRIu64 ".", - buffer_size); - } - uint64_t numpages = static_cast( - llvm::PowerOf2Floor((buffer_size + page_size - 1) / page_size)); - numpages = std::max(1, numpages); - buffer_size = page_size * numpages; - - perf_event_attr attr; - memset(&attr, 0, sizeof(attr)); - attr.size = sizeof(attr); - attr.exclude_kernel = 1; - attr.sample_type = PERF_SAMPLE_TIME; - attr.sample_id_all = 1; - attr.exclude_hv = 1; - attr.exclude_idle = 1; - attr.mmap = 1; - - if (Expected config_value = - GeneratePerfEventConfigValue(enable_tsc, psb_period)) { - attr.config = *config_value; - LLDB_LOG(log, "intel pt config {0}", attr.config); - } else { - return config_value.takeError(); - } - - if (Expected intel_pt_type = GetOSEventType()) { - attr.type = *intel_pt_type; - LLDB_LOG(log, "intel pt type {0}", attr.type); - } else { - return intel_pt_type.takeError(); - } - - LLDB_LOG(log, "buffer size {0} ", buffer_size); - - errno = 0; - auto fd = - syscall(SYS_perf_event_open, &attr, static_cast<::tid_t>(tid), -1, -1, 0); - if (fd == -1) { - LLDB_LOG(log, "syscall error {0}", errno); - return createStringError(inconvertibleErrorCode(), - "perf event syscall failed"); - } - - m_fd = std::unique_ptr(new int(fd), file_close()); - - errno = 0; - auto base = - mmap(nullptr, (buffer_size + page_size), PROT_WRITE, MAP_SHARED, fd, 0); - - if (base == MAP_FAILED) { - LLDB_LOG(log, "mmap base error {0}", errno); - return createStringError(inconvertibleErrorCode(), - "Meta buffer allocation failed"); - } - - m_mmap_meta = std::unique_ptr( - reinterpret_cast(base), - munmap_delete(buffer_size + page_size)); - - m_mmap_meta->aux_offset = m_mmap_meta->data_offset + m_mmap_meta->data_size; - m_mmap_meta->aux_size = buffer_size; - - errno = 0; - auto mmap_aux = mmap(nullptr, buffer_size, PROT_READ, MAP_SHARED, fd, - static_cast(m_mmap_meta->aux_offset)); - - if (mmap_aux == MAP_FAILED) { - LLDB_LOG(log, "second mmap done {0}", errno); - return createStringError(inconvertibleErrorCode(), - "Trace buffer allocation failed"); - } - m_mmap_aux = std::unique_ptr( - reinterpret_cast(mmap_aux), munmap_delete(buffer_size)); - return Error::success(); -#endif -} - -llvm::MutableArrayRef IntelPTThreadTrace::GetDataBuffer() const { -#ifndef PERF_ATTR_SIZE_VER5 - llvm_unreachable("Intel PT Linux perf event not supported"); -#else - return MutableArrayRef( - (reinterpret_cast(m_mmap_meta.get()) + - m_mmap_meta->data_offset), - m_mmap_meta->data_size); -#endif -} - -llvm::MutableArrayRef IntelPTThreadTrace::GetAuxBuffer() const { -#ifndef PERF_ATTR_SIZE_VER5 - llvm_unreachable("Intel PT Linux perf event not supported"); -#else - return MutableArrayRef(m_mmap_aux.get(), m_mmap_meta->aux_size); -#endif -} - -Expected> IntelPTThreadTrace::GetCPUInfo() { - static llvm::Optional> cpu_info; - if (!cpu_info) { - auto buffer_or_error = getProcFile("cpuinfo"); - if (!buffer_or_error) - return Status(buffer_or_error.getError()).ToError(); - MemoryBuffer &buffer = **buffer_or_error; - cpu_info = std::vector( - reinterpret_cast(buffer.getBufferStart()), - reinterpret_cast(buffer.getBufferEnd())); - } - return *cpu_info; -} - -llvm::Expected -IntelPTThreadTrace::Create(lldb::pid_t pid, lldb::tid_t tid, size_t buffer_size, - bool enable_tsc, Optional psb_period) { - IntelPTThreadTraceUP thread_trace_up(new IntelPTThreadTrace()); - - if (llvm::Error err = thread_trace_up->StartTrace(pid, tid, buffer_size, - enable_tsc, psb_period)) - return std::move(err); - - return std::move(thread_trace_up); -} - -Expected> -IntelPTThreadTrace::GetIntelPTBuffer(size_t offset, size_t size) const { - std::vector data(size, 0); - MutableArrayRef buffer_ref(data); - Status error = ReadPerfTraceAux(buffer_ref, 0); - if (error.Fail()) - return error.ToError(); - return data; -} - -Status -IntelPTThreadTrace::ReadPerfTraceAux(llvm::MutableArrayRef &buffer, - size_t offset) const { -#ifndef PERF_ATTR_SIZE_VER5 - llvm_unreachable("perf event not supported"); -#else - // Disable the perf event to force a flush out of the CPU's internal buffer. - // Besides, we can guarantee that the CPU won't override any data as we are - // reading the buffer. - // - // The Intel documentation says: - // - // Packets are first buffered internally and then written out asynchronously. - // To collect packet output for postprocessing, a collector needs first to - // ensure that all packet data has been flushed from internal buffers. - // Software can ensure this by stopping packet generation by clearing - // IA32_RTIT_CTL.TraceEn (see “Disabling Packet Generation” in - // Section 35.2.7.2). - // - // This is achieved by the PERF_EVENT_IOC_DISABLE ioctl request, as mentioned - // in the man page of perf_event_open. - ioctl(*m_fd, PERF_EVENT_IOC_DISABLE); - - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PTRACE)); - Status error; - uint64_t head = m_mmap_meta->aux_head; - - LLDB_LOG(log, "Aux size -{0} , Head - {1}", m_mmap_meta->aux_size, head); - - /** - * When configured as ring buffer, the aux buffer keeps wrapping around - * the buffer and its not possible to detect how many times the buffer - * wrapped. Initially the buffer is filled with zeros,as shown below - * so in order to get complete buffer we first copy firstpartsize, followed - * by any left over part from beginning to aux_head - * - * aux_offset [d,d,d,d,d,d,d,d,0,0,0,0,0,0,0,0,0,0,0] aux_size - * aux_head->||<- firstpartsize ->| - * - * */ - - ReadCyclicBuffer(buffer, GetAuxBuffer(), static_cast(head), offset); - LLDB_LOG(log, "ReadCyclic BUffer Done"); - - // Reenable tracing now we have read the buffer - ioctl(*m_fd, PERF_EVENT_IOC_ENABLE); - return error; -#endif -} - -Status -IntelPTThreadTrace::ReadPerfTraceData(llvm::MutableArrayRef &buffer, - size_t offset) const { -#ifndef PERF_ATTR_SIZE_VER5 - llvm_unreachable("perf event not supported"); -#else - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PTRACE)); - uint64_t bytes_remaining = buffer.size(); - Status error; - - uint64_t head = m_mmap_meta->data_head; - - /* - * The data buffer and aux buffer have different implementations - * with respect to their definition of head pointer. In the case - * of Aux data buffer the head always wraps around the aux buffer - * and we don't need to care about it, whereas the data_head keeps - * increasing and needs to be wrapped by modulus operator - */ - - LLDB_LOG(log, "bytes_remaining - {0}", bytes_remaining); - - auto data_buffer = GetDataBuffer(); - - if (head > data_buffer.size()) { - head = head % data_buffer.size(); - LLDB_LOG(log, "Data size -{0} Head - {1}", m_mmap_meta->data_size, head); - - ReadCyclicBuffer(buffer, data_buffer, static_cast(head), offset); - bytes_remaining -= buffer.size(); - } else { - LLDB_LOG(log, "Head - {0}", head); - if (offset >= head) { - LLDB_LOG(log, "Invalid Offset "); - error.SetErrorString("invalid offset"); - buffer = buffer.slice(buffer.size()); - return error; - } - - auto data = data_buffer.slice(offset, (head - offset)); - auto remaining = std::copy(data.begin(), data.end(), buffer.begin()); - bytes_remaining -= (remaining - buffer.begin()); - } - buffer = buffer.drop_back(bytes_remaining); - return error; -#endif -} - -void IntelPTThreadTrace::ReadCyclicBuffer(llvm::MutableArrayRef &dst, - llvm::MutableArrayRef src, - size_t src_cyc_index, size_t offset) { - - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PTRACE)); - - if (dst.empty() || src.empty()) { - dst = dst.drop_back(dst.size()); - return; - } - - if (dst.data() == nullptr || src.data() == nullptr) { - dst = dst.drop_back(dst.size()); - return; - } - - if (src_cyc_index > src.size()) { - dst = dst.drop_back(dst.size()); - return; - } - - if (offset >= src.size()) { - LLDB_LOG(log, "Too Big offset "); - dst = dst.drop_back(dst.size()); - return; - } - - llvm::SmallVector, 2> parts = { - src.slice(src_cyc_index), src.take_front(src_cyc_index)}; - - if (offset > parts[0].size()) { - parts[1] = parts[1].slice(offset - parts[0].size()); - parts[0] = parts[0].drop_back(parts[0].size()); - } else if (offset == parts[0].size()) { - parts[0] = parts[0].drop_back(parts[0].size()); - } else { - parts[0] = parts[0].slice(offset); - } - auto next = dst.begin(); - auto bytes_left = dst.size(); - for (auto part : parts) { - size_t chunk_size = std::min(part.size(), bytes_left); - next = std::copy_n(part.begin(), chunk_size, next); - bytes_left -= chunk_size; - } - dst = dst.drop_back(bytes_left); -} - -TraceThreadState IntelPTThreadTrace::GetState() const { - return {static_cast(m_tid), - {TraceBinaryData{"threadTraceBuffer", - static_cast(GetTraceBufferSize())}}}; -} - -/// IntelPTThreadTraceCollection - -bool IntelPTThreadTraceCollection::TracesThread(lldb::tid_t tid) const { - return m_thread_traces.count(tid); -} - -Error IntelPTThreadTraceCollection::TraceStop(lldb::tid_t tid) { - auto it = m_thread_traces.find(tid); - if (it == m_thread_traces.end()) - return createStringError(inconvertibleErrorCode(), - "Thread %" PRIu64 " not currently traced", tid); - m_total_buffer_size -= it->second->GetTraceBufferSize(); - m_thread_traces.erase(tid); - return Error::success(); -} - -Error IntelPTThreadTraceCollection::TraceStart( - lldb::tid_t tid, const TraceIntelPTStartRequest &request) { - if (TracesThread(tid)) - return createStringError(inconvertibleErrorCode(), - "Thread %" PRIu64 " already traced", tid); - - Expected trace_up = IntelPTThreadTrace::Create( - m_pid, tid, request.threadBufferSize, request.enableTsc, - request.psbPeriod.map([](int64_t period) { return (size_t)period; })); - if (!trace_up) - return trace_up.takeError(); - - m_total_buffer_size += (*trace_up)->GetTraceBufferSize(); - m_thread_traces.try_emplace(tid, std::move(*trace_up)); - return Error::success(); -} - -size_t IntelPTThreadTraceCollection::GetTotalBufferSize() const { - return m_total_buffer_size; -} - -std::vector -IntelPTThreadTraceCollection::GetThreadStates() const { - std::vector states; - for (const auto &it : m_thread_traces) - states.push_back(it.second->GetState()); - return states; -} - -Expected -IntelPTThreadTraceCollection::GetTracedThread(lldb::tid_t tid) const { - auto it = m_thread_traces.find(tid); - if (it == m_thread_traces.end()) - return createStringError(inconvertibleErrorCode(), - "Thread %" PRIu64 " not currently traced", tid); - return *it->second.get(); -} - -void IntelPTThreadTraceCollection::Clear() { - m_thread_traces.clear(); - m_total_buffer_size = 0; -} - -/// IntelPTProcessTrace - -bool IntelPTProcessTrace::TracesThread(lldb::tid_t tid) const { - return m_thread_traces.TracesThread(tid); -} - -Error IntelPTProcessTrace::TraceStop(lldb::tid_t tid) { - return m_thread_traces.TraceStop(tid); -} - -Error IntelPTProcessTrace::TraceStart(lldb::tid_t tid) { - if (m_thread_traces.GetTotalBufferSize() + m_tracing_params.threadBufferSize > - static_cast(*m_tracing_params.processBufferSizeLimit)) - return createStringError( - inconvertibleErrorCode(), - "Thread %" PRIu64 " can't be traced as the process trace size limit " - "has been reached. Consider retracing with a higher " - "limit.", - tid); - - return m_thread_traces.TraceStart(tid, m_tracing_params); -} - -const IntelPTThreadTraceCollection & -IntelPTProcessTrace::GetThreadTraces() const { - return m_thread_traces; -} - -/// IntelPTManager - -Error IntelPTManager::TraceStop(lldb::tid_t tid) { - if (IsProcessTracingEnabled() && m_process_trace->TracesThread(tid)) - return m_process_trace->TraceStop(tid); - return m_thread_traces.TraceStop(tid); -} - -Error IntelPTManager::TraceStop(const TraceStopRequest &request) { - if (request.IsProcessTracing()) { - Clear(); - return Error::success(); - } else { - Error error = Error::success(); - for (int64_t tid : *request.tids) - error = joinErrors(std::move(error), - TraceStop(static_cast(tid))); - return error; - } -} - -Error IntelPTManager::TraceStart( - const TraceIntelPTStartRequest &request, - const std::vector &process_threads) { - if (request.IsProcessTracing()) { - if (IsProcessTracingEnabled()) { - return createStringError( - inconvertibleErrorCode(), - "Process currently traced. Stop process tracing first"); - } - m_process_trace = IntelPTProcessTrace(m_pid, request); - - Error error = Error::success(); - for (lldb::tid_t tid : process_threads) - error = joinErrors(std::move(error), m_process_trace->TraceStart(tid)); - return error; - } else { - Error error = Error::success(); - for (int64_t tid : *request.tids) - error = joinErrors(std::move(error), - m_thread_traces.TraceStart(tid, request)); - return error; - } -} - -Error IntelPTManager::OnThreadCreated(lldb::tid_t tid) { - if (!IsProcessTracingEnabled()) - return Error::success(); - return m_process_trace->TraceStart(tid); -} - -Error IntelPTManager::OnThreadDestroyed(lldb::tid_t tid) { - if (IsProcessTracingEnabled() && m_process_trace->TracesThread(tid)) - return m_process_trace->TraceStop(tid); - else if (m_thread_traces.TracesThread(tid)) - return m_thread_traces.TraceStop(tid); - return Error::success(); -} - -Expected IntelPTManager::GetState() const { - Expected> cpu_info = IntelPTThreadTrace::GetCPUInfo(); - if (!cpu_info) - return cpu_info.takeError(); - - TraceGetStateResponse state; - state.processBinaryData.push_back( - {"cpuInfo", static_cast(cpu_info->size())}); - - std::vector thread_states = - m_thread_traces.GetThreadStates(); - state.tracedThreads.insert(state.tracedThreads.end(), thread_states.begin(), - thread_states.end()); - - if (IsProcessTracingEnabled()) { - thread_states = m_process_trace->GetThreadTraces().GetThreadStates(); - state.tracedThreads.insert(state.tracedThreads.end(), thread_states.begin(), - thread_states.end()); - } - return toJSON(state); -} - -Expected -IntelPTManager::GetTracedThread(lldb::tid_t tid) const { - if (IsProcessTracingEnabled() && m_process_trace->TracesThread(tid)) - return m_process_trace->GetThreadTraces().GetTracedThread(tid); - return m_thread_traces.GetTracedThread(tid); -} - -Expected> -IntelPTManager::GetBinaryData(const TraceGetBinaryDataRequest &request) const { - if (request.kind == "threadTraceBuffer") { - if (Expected trace = - GetTracedThread(*request.tid)) - return trace->GetIntelPTBuffer(request.offset, request.size); - else - return trace.takeError(); - } else if (request.kind == "cpuInfo") { - return IntelPTThreadTrace::GetCPUInfo(); - } - return createStringError(inconvertibleErrorCode(), - "Unsuported trace binary data kind: %s", - request.kind.c_str()); -} - -void IntelPTManager::ClearProcessTracing() { m_process_trace = None; } - -bool IntelPTManager::IsSupported() { - Expected intel_pt_type = GetOSEventType(); - if (!intel_pt_type) { - llvm::consumeError(intel_pt_type.takeError()); - return false; - } - return true; -} - -bool IntelPTManager::IsProcessTracingEnabled() const { - return (bool)m_process_trace; -} - -void IntelPTManager::Clear() { - ClearProcessTracing(); - m_thread_traces.Clear(); -} diff --git a/gnu/llvm/lldb/source/Plugins/Process/Linux/IntelPTManager.h b/gnu/llvm/lldb/source/Plugins/Process/Linux/IntelPTManager.h deleted file mode 100644 index 38566a22107..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Process/Linux/IntelPTManager.h +++ /dev/null @@ -1,263 +0,0 @@ -//===-- IntelPTManager.h -------------------------------------- -*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef liblldb_IntelPTManager_H_ -#define liblldb_IntelPTManager_H_ - -#include "lldb/Utility/Status.h" -#include "lldb/Utility/TraceIntelPTGDBRemotePackets.h" -#include "lldb/lldb-types.h" -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/DenseSet.h" - -#include -#include -#include - -namespace lldb_private { - -namespace process_linux { - -/// This class keeps track of one tracing instance of -/// Intel(R) Processor Trace on Linux OS at thread level. -/// -/// The kernel interface for us is the perf_event_open. -class IntelPTThreadTrace; -typedef std::unique_ptr IntelPTThreadTraceUP; - -class IntelPTThreadTrace { - - class munmap_delete { - size_t m_length; - - public: - munmap_delete(size_t length) : m_length(length) {} - void operator()(void *ptr) { - if (m_length) - munmap(ptr, m_length); - } - }; - - class file_close { - - public: - file_close() = default; - void operator()(int *ptr) { - if (ptr == nullptr) - return; - if (*ptr == -1) - return; - close(*ptr); - std::default_delete()(ptr); - } - }; - - std::unique_ptr m_mmap_meta; - std::unique_ptr m_mmap_aux; - std::unique_ptr m_fd; - lldb::tid_t m_tid; - - /// Start tracing a thread - /// - /// \param[in] pid - /// The pid of the process whose thread will be traced. - /// - /// \param[in] buffer_size - /// Size of the thread buffer in bytes. - /// - /// \param[in] enable_tsc - /// Whether to use enable TSC timestamps or not. - /// More information in TraceIntelPT::GetStartConfigurationHelp(). - /// - /// \param[in] psb_period - /// This value defines the period in which PSB packets will be generated. - /// More information in TraceIntelPT::GetStartConfigurationHelp(). - /// - /// \return - /// \a llvm::Error::success if tracing was successful, or an - /// \a llvm::Error otherwise. - llvm::Error StartTrace(lldb::pid_t pid, lldb::tid_t tid, uint64_t buffer_size, - bool enable_tsc, llvm::Optional psb_period); - - llvm::MutableArrayRef GetAuxBuffer() const; - llvm::MutableArrayRef GetDataBuffer() const; - - IntelPTThreadTrace() - : m_mmap_meta(nullptr, munmap_delete(0)), - m_mmap_aux(nullptr, munmap_delete(0)), m_fd(nullptr, file_close()) {} - -public: - /// Get the content of /proc/cpuinfo that can be later used to decode traces. - static llvm::Expected> GetCPUInfo(); - - /// Start tracing a thread. - /// - /// See \a StartTrace. - /// - /// \return - /// A \a IntelPTThreadTrace instance if tracing was successful, or - /// an \a llvm::Error otherwise. - static llvm::Expected - Create(lldb::pid_t pid, lldb::tid_t tid, size_t buffer_size, bool enable_tsc, - llvm::Optional psb_period); - - /// Read the trace buffer of the currently traced thread. - /// - /// \param[in] offset - /// Offset of the data to read. - /// - /// \param[in] size - /// Number of bytes to read. - /// - /// \return - /// A vector with the requested binary data. The vector will have the - /// size of the requested \a size. Non-available positions will be - /// filled with zeroes. - llvm::Expected> GetIntelPTBuffer(size_t offset, - size_t size) const; - - Status ReadPerfTraceAux(llvm::MutableArrayRef &buffer, - size_t offset = 0) const; - - Status ReadPerfTraceData(llvm::MutableArrayRef &buffer, - size_t offset = 0) const; - - /// Get the size in bytes of the aux section of the thread or process traced - /// by this object. - size_t GetTraceBufferSize() const; - - /// Read data from a cyclic buffer - /// - /// \param[in] [out] buf - /// Destination buffer, the buffer will be truncated to written size. - /// - /// \param[in] src - /// Source buffer which must be a cyclic buffer. - /// - /// \param[in] src_cyc_index - /// The index pointer (start of the valid data in the cyclic - /// buffer). - /// - /// \param[in] offset - /// The offset to begin reading the data in the cyclic buffer. - static void ReadCyclicBuffer(llvm::MutableArrayRef &dst, - llvm::MutableArrayRef src, - size_t src_cyc_index, size_t offset); - - /// Return the thread-specific part of the jLLDBTraceGetState packet. - TraceThreadState GetState() const; -}; - -/// Manages a list of thread traces. -class IntelPTThreadTraceCollection { -public: - IntelPTThreadTraceCollection(lldb::pid_t pid) : m_pid(pid) {} - - /// Dispose of all traces - void Clear(); - - bool TracesThread(lldb::tid_t tid) const; - - size_t GetTotalBufferSize() const; - - std::vector GetThreadStates() const; - - llvm::Expected - GetTracedThread(lldb::tid_t tid) const; - - llvm::Error TraceStart(lldb::tid_t tid, - const TraceIntelPTStartRequest &request); - - llvm::Error TraceStop(lldb::tid_t tid); - -private: - lldb::pid_t m_pid; - llvm::DenseMap m_thread_traces; - /// Total actual thread buffer size in bytes - size_t m_total_buffer_size = 0; -}; - -/// Manages a "process trace" instance. -class IntelPTProcessTrace { -public: - IntelPTProcessTrace(lldb::pid_t pid, const TraceIntelPTStartRequest &request) - : m_thread_traces(pid), m_tracing_params(request) {} - - bool TracesThread(lldb::tid_t tid) const; - - const IntelPTThreadTraceCollection &GetThreadTraces() const; - - llvm::Error TraceStart(lldb::tid_t tid); - - llvm::Error TraceStop(lldb::tid_t tid); - -private: - IntelPTThreadTraceCollection m_thread_traces; - /// Params used to trace threads when the user started "process tracing". - TraceIntelPTStartRequest m_tracing_params; -}; - -/// Main class that manages intel-pt process and thread tracing. -class IntelPTManager { -public: - IntelPTManager(lldb::pid_t pid) : m_pid(pid), m_thread_traces(pid) {} - - static bool IsSupported(); - - /// If "process tracing" is enabled, then trace the given thread. - llvm::Error OnThreadCreated(lldb::tid_t tid); - - /// Stops tracing a tracing upon a destroy event. - llvm::Error OnThreadDestroyed(lldb::tid_t tid); - - /// Implementation of the jLLDBTraceStop packet - llvm::Error TraceStop(const TraceStopRequest &request); - - /// Implementation of the jLLDBTraceStart packet - /// - /// \param[in] process_threads - /// A list of all threads owned by the process. - llvm::Error TraceStart(const TraceIntelPTStartRequest &request, - const std::vector &process_threads); - - /// Implementation of the jLLDBTraceGetState packet - llvm::Expected GetState() const; - - /// Implementation of the jLLDBTraceGetBinaryData packet - llvm::Expected> - GetBinaryData(const TraceGetBinaryDataRequest &request) const; - - /// Dispose of all traces - void Clear(); - -private: - llvm::Error TraceStop(lldb::tid_t tid); - - /// Start tracing a specific thread. - llvm::Error TraceStart(lldb::tid_t tid, - const TraceIntelPTStartRequest &request); - - llvm::Expected - GetTracedThread(lldb::tid_t tid) const; - - bool IsProcessTracingEnabled() const; - - void ClearProcessTracing(); - - lldb::pid_t m_pid; - /// Threads traced due to "thread tracing" - IntelPTThreadTraceCollection m_thread_traces; - /// Threads traced due to "process tracing". Only one active "process tracing" - /// instance is assumed for a single process. - llvm::Optional m_process_trace; -}; - -} // namespace process_linux -} // namespace lldb_private - -#endif // liblldb_IntelPTManager_H_ diff --git a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeProcessOpenBSD.cpp b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeProcessOpenBSD.cpp index 0cae26760f2..41cfa52a707 100644 --- a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeProcessOpenBSD.cpp +++ b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeProcessOpenBSD.cpp @@ -66,7 +66,7 @@ llvm::Expected> NativeProcessOpenBSD::Factory::Launch(ProcessLaunchInfo &launch_info, NativeDelegate &native_delegate, MainLoop &mainloop) const { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); + Log *log = GetLog(POSIXLog::Process); Status status; ::pid_t pid = ProcessLauncherPosixFork() @@ -121,7 +121,7 @@ NativeProcessOpenBSD::Factory::Attach( lldb::pid_t pid, NativeProcessProtocol::NativeDelegate &native_delegate, MainLoop &mainloop) const { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); + Log *log = GetLog(POSIXLog::Process); LLDB_LOG(log, "pid = {0:x}", pid); // Retrieve the architecture for the running process. @@ -179,7 +179,7 @@ void NativeProcessOpenBSD::MonitorCallback(lldb::pid_t pid, int signal) { } void NativeProcessOpenBSD::MonitorExited(lldb::pid_t pid, WaitStatus status) { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); + Log *log = GetLog(POSIXLog::Process); LLDB_LOG(log, "got exit signal({0}) , pid = {1}", status, pid); @@ -210,7 +210,7 @@ void NativeProcessOpenBSD::MonitorSignal(lldb::pid_t pid, int signal) { Status NativeProcessOpenBSD::PtraceWrapper(int req, lldb::pid_t pid, void *addr, int data, int *result) { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PTRACE)); + Log *log = GetLog(POSIXLog::Process); Status error; int ret; @@ -232,7 +232,7 @@ Status NativeProcessOpenBSD::PtraceWrapper(int req, lldb::pid_t pid, void *addr, } Status NativeProcessOpenBSD::Resume(const ResumeActionList &resume_actions) { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); + Log *log = GetLog(POSIXLog::Process); LLDB_LOG(log, "pid {0}", GetID()); const auto &thread = m_threads[0]; @@ -321,7 +321,7 @@ Status NativeProcessOpenBSD::Signal(int signo) { } Status NativeProcessOpenBSD::Kill() { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); + Log *log = GetLog(POSIXLog::Process); LLDB_LOG(log, "pid {0}", GetID()); Status error; @@ -401,7 +401,7 @@ Status NativeProcessOpenBSD::GetFileLoadAddress(const llvm::StringRef &file_name } void NativeProcessOpenBSD::SigchldHandler() { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_PROCESS)); + Log *log = GetLog(POSIXLog::Process); // Process all pending waitpid notifications. int status; ::pid_t wait_pid = @@ -447,7 +447,7 @@ bool NativeProcessOpenBSD::HasThreadNoLock(lldb::tid_t thread_id) { NativeThreadOpenBSD &NativeProcessOpenBSD::AddThread(lldb::tid_t thread_id) { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_THREAD)); + Log *log = GetLog(POSIXLog::Thread); LLDB_LOG(log, "pid {0} adding thread with tid {1}", GetID(), thread_id); assert(!HasThreadNoLock(thread_id) && @@ -491,7 +491,7 @@ Status NativeProcessOpenBSD::ReadMemory(lldb::addr_t addr, void *buf, unsigned char *dst = static_cast(buf); struct ptrace_io_desc io; - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_MEMORY)); + Log *log = GetLog(POSIXLog::Memory); LLDB_LOG(log, "addr = {0}, buf = {1}, size = {2}", addr, buf, size); bytes_read = 0; @@ -519,7 +519,7 @@ Status NativeProcessOpenBSD::WriteMemory(lldb::addr_t addr, const void *buf, Status error; struct ptrace_io_desc io; - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_MEMORY)); + Log *log = GetLog(POSIXLog::Memory); LLDB_LOG(log, "addr = {0}, buf = {1}, size = {2}", addr, buf, size); bytes_written = 0; diff --git a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_arm64.cpp b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_arm64.cpp index 7fe177e49e9..eeaa868f927 100644 --- a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_arm64.cpp +++ b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_arm64.cpp @@ -18,12 +18,12 @@ #include "lldb/Host/HostInfo.h" #include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/Log.h" #include "lldb/Utility/RegisterValue.h" #include "lldb/Utility/Status.h" #include "llvm/ADT/APInt.h" #include "Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h" +#include "Plugins/Process/POSIX/ProcessPOSIXLog.h" // clang-format off #include @@ -102,7 +102,7 @@ Status NativeRegisterContextOpenBSD_arm64::ReadRegister(const RegisterInfo *reg_info, RegisterValue ®_value) { Status error; - Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); + Log *log = GetLog(POSIXLog::Registers); if (!reg_info) { error.SetErrorString("reg_info NULL"); @@ -142,7 +142,7 @@ NativeRegisterContextOpenBSD_arm64::ReadRegister(const RegisterInfo *reg_info, offset = reg_info->byte_offset - GetRegisterInfo().GetPAuthOffset(); reg_value = (uint64_t)m_pacmask[offset > 0]; if (reg_value.GetByteSize() > reg_info->byte_size) { - reg_value.SetType(reg_info); + reg_value.SetType(*reg_info); } return error; @@ -241,7 +241,7 @@ NativeRegisterContextOpenBSD_arm64::ReadRegister(const RegisterInfo *reg_info, } if (reg_value.GetByteSize() > reg_info->byte_size) { - reg_value.SetType(reg_info); + reg_value.SetType(*reg_info); } return error; @@ -251,7 +251,7 @@ Status NativeRegisterContextOpenBSD_arm64::WriteRegister( const RegisterInfo *reg_info, const RegisterValue ®_value) { Status error; - Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS)); + Log *log = GetLog(POSIXLog::Registers); if (!reg_info) { error.SetErrorString("reg_info NULL"); @@ -385,7 +385,7 @@ Status NativeRegisterContextOpenBSD_arm64::WriteRegister( } Status NativeRegisterContextOpenBSD_arm64::ReadAllRegisterValues( - lldb::DataBufferSP &data_sp) { + lldb::WritableDataBufferSP &data_sp) { Status error; data_sp.reset(new DataBufferHeap(REG_CONTEXT_SIZE, 0)); @@ -440,7 +440,7 @@ Status NativeRegisterContextOpenBSD_arm64::WriteAllRegisterValues( return error; } - uint8_t *src = data_sp->GetBytes(); + const uint8_t *src = data_sp->GetBytes(); if (src == nullptr) { error.SetErrorStringWithFormat("NativeRegisterContextOpenBSD_arm64::%s " "DataBuffer::GetBytes() returned a null " diff --git a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_arm64.h b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_arm64.h index 106d1b610b7..bb59797fbfb 100644 --- a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_arm64.h +++ b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_arm64.h @@ -56,7 +56,7 @@ public: Status WriteRegister(const RegisterInfo *reg_info, const RegisterValue ®_value) override; - Status ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; + Status ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp) override; Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; diff --git a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_x86_64.cpp b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_x86_64.cpp index 1c9d7aa7609..b05dde6001a 100644 --- a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_x86_64.cpp +++ b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_x86_64.cpp @@ -598,7 +598,7 @@ Status NativeRegisterContextOpenBSD_x86_64::WriteRegister( } Status NativeRegisterContextOpenBSD_x86_64::ReadAllRegisterValues( - lldb::DataBufferSP &data_sp) { + lldb::WritableDataBufferSP &data_sp) { Status error; data_sp.reset(new DataBufferHeap(REG_CONTEXT_SIZE, 0)); @@ -651,7 +651,7 @@ Status NativeRegisterContextOpenBSD_x86_64::WriteAllRegisterValues( return error; } - uint8_t *src = data_sp->GetBytes(); + const uint8_t *src = data_sp->GetBytes(); if (src == nullptr) { error.SetErrorStringWithFormat("NativeRegisterContextOpenBSD_x86_64::%s " "DataBuffer::GetBytes() returned a null " diff --git a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_x86_64.h b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_x86_64.h index 44497d758c0..60e13da6347 100644 --- a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_x86_64.h +++ b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeRegisterContextOpenBSD_x86_64.h @@ -42,7 +42,7 @@ public: Status WriteRegister(const RegisterInfo *reg_info, const RegisterValue ®_value) override; - Status ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override; + Status ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp) override; Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; diff --git a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeThreadOpenBSD.cpp b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeThreadOpenBSD.cpp index 90f14244aa0..766f9a014b1 100644 --- a/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeThreadOpenBSD.cpp +++ b/gnu/llvm/lldb/source/Plugins/Process/OpenBSD/NativeThreadOpenBSD.cpp @@ -35,13 +35,13 @@ NativeThreadOpenBSD::NativeThreadOpenBSD(NativeProcessOpenBSD &process, void NativeThreadOpenBSD::SetStoppedBySignal(uint32_t signo, const siginfo_t *info) { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_THREAD)); + Log *log = GetLog(POSIXLog::Thread); LLDB_LOG(log, "tid = {0} in called with signal {1}", GetID(), signo); SetStopped(); m_stop_info.reason = StopReason::eStopReasonSignal; - m_stop_info.details.signal.signo = signo; + m_stop_info.signo = signo; m_stop_description.clear(); if (info) { @@ -60,19 +60,19 @@ void NativeThreadOpenBSD::SetStoppedBySignal(uint32_t signo, void NativeThreadOpenBSD::SetStoppedByBreakpoint() { SetStopped(); m_stop_info.reason = StopReason::eStopReasonBreakpoint; - m_stop_info.details.signal.signo = SIGTRAP; + m_stop_info.signo = SIGTRAP; } void NativeThreadOpenBSD::SetStoppedByTrace() { SetStopped(); m_stop_info.reason = StopReason::eStopReasonTrace; - m_stop_info.details.signal.signo = SIGTRAP; + m_stop_info.signo = SIGTRAP; } void NativeThreadOpenBSD::SetStoppedByExec() { SetStopped(); m_stop_info.reason = StopReason::eStopReasonExec; - m_stop_info.details.signal.signo = SIGTRAP; + m_stop_info.signo = SIGTRAP; } void NativeThreadOpenBSD::SetStopped() { @@ -97,7 +97,7 @@ lldb::StateType NativeThreadOpenBSD::GetState() { return m_state; } bool NativeThreadOpenBSD::GetStopReason(ThreadStopInfo &stop_info, std::string &description) { - Log *log(ProcessPOSIXLog::GetLogIfAllCategoriesSet(POSIX_LOG_THREAD)); + Log *log = GetLog(POSIXLog::Thread); description.clear(); diff --git a/gnu/llvm/lldb/source/Plugins/Process/Utility/CMakeLists.txt b/gnu/llvm/lldb/source/Plugins/Process/Utility/CMakeLists.txt index 2d4b42fa4df..5bafac2f49f 100644 --- a/gnu/llvm/lldb/source/Plugins/Process/Utility/CMakeLists.txt +++ b/gnu/llvm/lldb/source/Plugins/Process/Utility/CMakeLists.txt @@ -1,6 +1,5 @@ add_lldb_library(lldbPluginProcessUtility AuxVector.cpp - DynamicRegisterInfo.cpp FreeBSDSignals.cpp GDBRemoteSignals.cpp HistoryThread.cpp @@ -40,9 +39,11 @@ add_lldb_library(lldbPluginProcessUtility RegisterContextOpenBSD_x86_64.cpp RegisterContextPOSIX_arm.cpp RegisterContextPOSIX_arm64.cpp + RegisterContextPOSIX_loongarch64.cpp RegisterContextPOSIX_mips64.cpp RegisterContextPOSIX_powerpc.cpp RegisterContextPOSIX_ppc64le.cpp + RegisterContextPOSIX_riscv64.cpp RegisterContextPOSIX_s390x.cpp RegisterContextPOSIX_x86.cpp RegisterContextThreadMemory.cpp @@ -50,7 +51,9 @@ add_lldb_library(lldbPluginProcessUtility RegisterContextWindows_x86_64.cpp RegisterInfoPOSIX_arm.cpp RegisterInfoPOSIX_arm64.cpp + RegisterInfoPOSIX_loongarch64.cpp RegisterInfoPOSIX_ppc64le.cpp + RegisterInfoPOSIX_riscv64.cpp StopInfoMachException.cpp ThreadMemory.cpp @@ -65,4 +68,5 @@ add_lldb_library(lldbPluginProcessUtility lldbUtility LINK_COMPONENTS Support + TargetParser ) diff --git a/gnu/llvm/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp b/gnu/llvm/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp deleted file mode 100644 index a85d7bd6f52..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp +++ /dev/null @@ -1,811 +0,0 @@ -//===-- DynamicRegisterInfo.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "DynamicRegisterInfo.h" - -#include "lldb/Core/StreamFile.h" -#include "lldb/DataFormatters/FormatManager.h" -#include "lldb/Host/StringConvert.h" -#include "lldb/Interpreter/OptionArgParser.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/RegularExpression.h" -#include "lldb/Utility/StringExtractor.h" -#include "lldb/Utility/StructuredData.h" - -using namespace lldb; -using namespace lldb_private; - -DynamicRegisterInfo::DynamicRegisterInfo( - const lldb_private::StructuredData::Dictionary &dict, - const lldb_private::ArchSpec &arch) { - SetRegisterInfo(dict, arch); -} - -DynamicRegisterInfo::DynamicRegisterInfo(DynamicRegisterInfo &&info) { - MoveFrom(std::move(info)); -} - -DynamicRegisterInfo & -DynamicRegisterInfo::operator=(DynamicRegisterInfo &&info) { - MoveFrom(std::move(info)); - return *this; -} - -void DynamicRegisterInfo::MoveFrom(DynamicRegisterInfo &&info) { - m_regs = std::move(info.m_regs); - m_sets = std::move(info.m_sets); - m_set_reg_nums = std::move(info.m_set_reg_nums); - m_set_names = std::move(info.m_set_names); - m_value_regs_map = std::move(info.m_value_regs_map); - m_invalidate_regs_map = std::move(info.m_invalidate_regs_map); - m_dynamic_reg_size_map = std::move(info.m_dynamic_reg_size_map); - - m_reg_data_byte_size = info.m_reg_data_byte_size; - m_finalized = info.m_finalized; - - if (m_finalized) { - const size_t num_sets = m_sets.size(); - for (size_t set = 0; set < num_sets; ++set) - m_sets[set].registers = m_set_reg_nums[set].data(); - } - - info.Clear(); -} - -size_t -DynamicRegisterInfo::SetRegisterInfo(const StructuredData::Dictionary &dict, - const ArchSpec &arch) { - assert(!m_finalized); - StructuredData::Array *sets = nullptr; - if (dict.GetValueForKeyAsArray("sets", sets)) { - const uint32_t num_sets = sets->GetSize(); - for (uint32_t i = 0; i < num_sets; ++i) { - ConstString set_name; - if (sets->GetItemAtIndexAsString(i, set_name) && !set_name.IsEmpty()) { - m_sets.push_back({set_name.AsCString(), nullptr, 0, nullptr}); - } else { - Clear(); - printf("error: register sets must have valid names\n"); - return 0; - } - } - m_set_reg_nums.resize(m_sets.size()); - } - - StructuredData::Array *regs = nullptr; - if (!dict.GetValueForKeyAsArray("registers", regs)) - return 0; - - const uint32_t num_regs = regs->GetSize(); - // typedef std::map > - // InvalidateNameMap; - // InvalidateNameMap invalidate_map; - for (uint32_t i = 0; i < num_regs; ++i) { - StructuredData::Dictionary *reg_info_dict = nullptr; - if (!regs->GetItemAtIndexAsDictionary(i, reg_info_dict)) { - Clear(); - printf("error: items in the 'registers' array must be dictionaries\n"); - regs->DumpToStdout(); - return 0; - } - - // { 'name':'rcx' , 'bitsize' : 64, 'offset' : 16, - // 'encoding':'uint' , 'format':'hex' , 'set': 0, 'ehframe' : 2, - // 'dwarf' : 2, 'generic':'arg4', 'alt-name':'arg4', }, - RegisterInfo reg_info; - std::vector value_regs; - std::vector invalidate_regs; - memset(®_info, 0, sizeof(reg_info)); - - ConstString name_val; - ConstString alt_name_val; - if (!reg_info_dict->GetValueForKeyAsString("name", name_val, nullptr)) { - Clear(); - printf("error: registers must have valid names and offsets\n"); - reg_info_dict->DumpToStdout(); - return 0; - } - reg_info.name = name_val.GetCString(); - reg_info_dict->GetValueForKeyAsString("alt-name", alt_name_val, nullptr); - reg_info.alt_name = alt_name_val.GetCString(); - - reg_info_dict->GetValueForKeyAsInteger("offset", reg_info.byte_offset, - UINT32_MAX); - - const ByteOrder byte_order = arch.GetByteOrder(); - - if (reg_info.byte_offset == UINT32_MAX) { - // No offset for this register, see if the register has a value - // expression which indicates this register is part of another register. - // Value expressions are things like "rax[31:0]" which state that the - // current register's value is in a concrete register "rax" in bits 31:0. - // If there is a value expression we can calculate the offset - bool success = false; - llvm::StringRef slice_str; - if (reg_info_dict->GetValueForKeyAsString("slice", slice_str, nullptr)) { - // Slices use the following format: - // REGNAME[MSBIT:LSBIT] - // REGNAME - name of the register to grab a slice of - // MSBIT - the most significant bit at which the current register value - // starts at - // LSBIT - the least significant bit at which the current register value - // ends at - static RegularExpression g_bitfield_regex( - llvm::StringRef("([A-Za-z_][A-Za-z0-9_]*)\\[([0-9]+):([0-9]+)\\]")); - llvm::SmallVector matches; - if (g_bitfield_regex.Execute(slice_str, &matches)) { - std::string reg_name_str = matches[1].str(); - std::string msbit_str = matches[2].str(); - std::string lsbit_str = matches[3].str(); - const uint32_t msbit = - StringConvert::ToUInt32(msbit_str.c_str(), UINT32_MAX); - const uint32_t lsbit = - StringConvert::ToUInt32(lsbit_str.c_str(), UINT32_MAX); - if (msbit != UINT32_MAX && lsbit != UINT32_MAX) { - if (msbit > lsbit) { - const uint32_t msbyte = msbit / 8; - const uint32_t lsbyte = lsbit / 8; - - const RegisterInfo *containing_reg_info = - GetRegisterInfo(reg_name_str); - if (containing_reg_info) { - const uint32_t max_bit = containing_reg_info->byte_size * 8; - if (msbit < max_bit && lsbit < max_bit) { - m_invalidate_regs_map[containing_reg_info - ->kinds[eRegisterKindLLDB]] - .push_back(i); - m_value_regs_map[i].push_back( - containing_reg_info->kinds[eRegisterKindLLDB]); - m_invalidate_regs_map[i].push_back( - containing_reg_info->kinds[eRegisterKindLLDB]); - - if (byte_order == eByteOrderLittle) { - success = true; - reg_info.byte_offset = - containing_reg_info->byte_offset + lsbyte; - } else if (byte_order == eByteOrderBig) { - success = true; - reg_info.byte_offset = - containing_reg_info->byte_offset + msbyte; - } else { - llvm_unreachable("Invalid byte order"); - } - } else { - if (msbit > max_bit) - printf("error: msbit (%u) must be less than the bitsize " - "of the register (%u)\n", - msbit, max_bit); - else - printf("error: lsbit (%u) must be less than the bitsize " - "of the register (%u)\n", - lsbit, max_bit); - } - } else { - printf("error: invalid concrete register \"%s\"\n", - reg_name_str.c_str()); - } - } else { - printf("error: msbit (%u) must be greater than lsbit (%u)\n", - msbit, lsbit); - } - } else { - printf("error: msbit (%u) and lsbit (%u) must be valid\n", msbit, - lsbit); - } - } else { - // TODO: print error invalid slice string that doesn't follow the - // format - printf("error: failed to match against register bitfield regex\n"); - } - } else { - StructuredData::Array *composite_reg_list = nullptr; - if (reg_info_dict->GetValueForKeyAsArray("composite", - composite_reg_list)) { - const size_t num_composite_regs = composite_reg_list->GetSize(); - if (num_composite_regs > 0) { - uint32_t composite_offset = UINT32_MAX; - for (uint32_t composite_idx = 0; composite_idx < num_composite_regs; - ++composite_idx) { - ConstString composite_reg_name; - if (composite_reg_list->GetItemAtIndexAsString( - composite_idx, composite_reg_name, nullptr)) { - const RegisterInfo *composite_reg_info = - GetRegisterInfo(composite_reg_name.GetStringRef()); - if (composite_reg_info) { - composite_offset = std::min(composite_offset, - composite_reg_info->byte_offset); - m_value_regs_map[i].push_back( - composite_reg_info->kinds[eRegisterKindLLDB]); - m_invalidate_regs_map[composite_reg_info - ->kinds[eRegisterKindLLDB]] - .push_back(i); - m_invalidate_regs_map[i].push_back( - composite_reg_info->kinds[eRegisterKindLLDB]); - } else { - // TODO: print error invalid slice string that doesn't follow - // the format - printf("error: failed to find composite register by name: " - "\"%s\"\n", - composite_reg_name.GetCString()); - } - } else { - printf( - "error: 'composite' list value wasn't a python string\n"); - } - } - if (composite_offset != UINT32_MAX) { - reg_info.byte_offset = composite_offset; - success = m_value_regs_map.find(i) != m_value_regs_map.end(); - } else { - printf("error: 'composite' registers must specify at least one " - "real register\n"); - } - } else { - printf("error: 'composite' list was empty\n"); - } - } - } - - if (!success) { - Clear(); - reg_info_dict->DumpToStdout(); - return 0; - } - } - - int64_t bitsize = 0; - if (!reg_info_dict->GetValueForKeyAsInteger("bitsize", bitsize)) { - Clear(); - printf("error: invalid or missing 'bitsize' key/value pair in register " - "dictionary\n"); - reg_info_dict->DumpToStdout(); - return 0; - } - - reg_info.byte_size = bitsize / 8; - - llvm::StringRef dwarf_opcode_string; - if (reg_info_dict->GetValueForKeyAsString("dynamic_size_dwarf_expr_bytes", - dwarf_opcode_string)) { - reg_info.dynamic_size_dwarf_len = dwarf_opcode_string.size() / 2; - assert(reg_info.dynamic_size_dwarf_len > 0); - - std::vector dwarf_opcode_bytes(reg_info.dynamic_size_dwarf_len); - uint32_t j; - StringExtractor opcode_extractor(dwarf_opcode_string); - uint32_t ret_val = opcode_extractor.GetHexBytesAvail(dwarf_opcode_bytes); - UNUSED_IF_ASSERT_DISABLED(ret_val); - assert(ret_val == reg_info.dynamic_size_dwarf_len); - - for (j = 0; j < reg_info.dynamic_size_dwarf_len; ++j) - m_dynamic_reg_size_map[i].push_back(dwarf_opcode_bytes[j]); - - reg_info.dynamic_size_dwarf_expr_bytes = m_dynamic_reg_size_map[i].data(); - } - - llvm::StringRef format_str; - if (reg_info_dict->GetValueForKeyAsString("format", format_str, nullptr)) { - if (OptionArgParser::ToFormat(format_str.str().c_str(), reg_info.format, - nullptr) - .Fail()) { - Clear(); - printf("error: invalid 'format' value in register dictionary\n"); - reg_info_dict->DumpToStdout(); - return 0; - } - } else { - reg_info_dict->GetValueForKeyAsInteger("format", reg_info.format, - eFormatHex); - } - - llvm::StringRef encoding_str; - if (reg_info_dict->GetValueForKeyAsString("encoding", encoding_str)) - reg_info.encoding = Args::StringToEncoding(encoding_str, eEncodingUint); - else - reg_info_dict->GetValueForKeyAsInteger("encoding", reg_info.encoding, - eEncodingUint); - - size_t set = 0; - if (!reg_info_dict->GetValueForKeyAsInteger("set", set, -1) || - set >= m_sets.size()) { - Clear(); - printf("error: invalid 'set' value in register dictionary, valid values " - "are 0 - %i\n", - (int)set); - reg_info_dict->DumpToStdout(); - return 0; - } - - // Fill in the register numbers - reg_info.kinds[lldb::eRegisterKindLLDB] = i; - reg_info.kinds[lldb::eRegisterKindProcessPlugin] = i; - uint32_t eh_frame_regno = LLDB_INVALID_REGNUM; - reg_info_dict->GetValueForKeyAsInteger("gcc", eh_frame_regno, - LLDB_INVALID_REGNUM); - if (eh_frame_regno == LLDB_INVALID_REGNUM) - reg_info_dict->GetValueForKeyAsInteger("ehframe", eh_frame_regno, - LLDB_INVALID_REGNUM); - reg_info.kinds[lldb::eRegisterKindEHFrame] = eh_frame_regno; - reg_info_dict->GetValueForKeyAsInteger( - "dwarf", reg_info.kinds[lldb::eRegisterKindDWARF], LLDB_INVALID_REGNUM); - llvm::StringRef generic_str; - if (reg_info_dict->GetValueForKeyAsString("generic", generic_str)) - reg_info.kinds[lldb::eRegisterKindGeneric] = - Args::StringToGenericRegister(generic_str); - else - reg_info_dict->GetValueForKeyAsInteger( - "generic", reg_info.kinds[lldb::eRegisterKindGeneric], - LLDB_INVALID_REGNUM); - - // Check if this register invalidates any other register values when it is - // modified - StructuredData::Array *invalidate_reg_list = nullptr; - if (reg_info_dict->GetValueForKeyAsArray("invalidate-regs", - invalidate_reg_list)) { - const size_t num_regs = invalidate_reg_list->GetSize(); - if (num_regs > 0) { - for (uint32_t idx = 0; idx < num_regs; ++idx) { - ConstString invalidate_reg_name; - uint64_t invalidate_reg_num; - if (invalidate_reg_list->GetItemAtIndexAsString( - idx, invalidate_reg_name)) { - const RegisterInfo *invalidate_reg_info = - GetRegisterInfo(invalidate_reg_name.GetStringRef()); - if (invalidate_reg_info) { - m_invalidate_regs_map[i].push_back( - invalidate_reg_info->kinds[eRegisterKindLLDB]); - } else { - // TODO: print error invalid slice string that doesn't follow the - // format - printf("error: failed to find a 'invalidate-regs' register for " - "\"%s\" while parsing register \"%s\"\n", - invalidate_reg_name.GetCString(), reg_info.name); - } - } else if (invalidate_reg_list->GetItemAtIndexAsInteger( - idx, invalidate_reg_num)) { - if (invalidate_reg_num != UINT64_MAX) - m_invalidate_regs_map[i].push_back(invalidate_reg_num); - else - printf("error: 'invalidate-regs' list value wasn't a valid " - "integer\n"); - } else { - printf("error: 'invalidate-regs' list value wasn't a python string " - "or integer\n"); - } - } - } else { - printf("error: 'invalidate-regs' contained an empty list\n"); - } - } - - // Calculate the register offset - const size_t end_reg_offset = reg_info.byte_offset + reg_info.byte_size; - if (m_reg_data_byte_size < end_reg_offset) - m_reg_data_byte_size = end_reg_offset; - - m_regs.push_back(reg_info); - m_set_reg_nums[set].push_back(i); - } - Finalize(arch); - return m_regs.size(); -} - -void DynamicRegisterInfo::AddRegister(RegisterInfo ®_info, - ConstString ®_name, - ConstString ®_alt_name, - ConstString &set_name) { - assert(!m_finalized); - const uint32_t reg_num = m_regs.size(); - reg_info.name = reg_name.AsCString(); - assert(reg_info.name); - reg_info.alt_name = reg_alt_name.AsCString(nullptr); - uint32_t i; - if (reg_info.value_regs) { - for (i = 0; reg_info.value_regs[i] != LLDB_INVALID_REGNUM; ++i) - m_value_regs_map[reg_num].push_back(reg_info.value_regs[i]); - } - if (reg_info.invalidate_regs) { - for (i = 0; reg_info.invalidate_regs[i] != LLDB_INVALID_REGNUM; ++i) - m_invalidate_regs_map[reg_num].push_back(reg_info.invalidate_regs[i]); - } - if (reg_info.dynamic_size_dwarf_expr_bytes) { - for (i = 0; i < reg_info.dynamic_size_dwarf_len; ++i) - m_dynamic_reg_size_map[reg_num].push_back( - reg_info.dynamic_size_dwarf_expr_bytes[i]); - - reg_info.dynamic_size_dwarf_expr_bytes = - m_dynamic_reg_size_map[reg_num].data(); - } - - m_regs.push_back(reg_info); - uint32_t set = GetRegisterSetIndexByName(set_name, true); - assert(set < m_sets.size()); - assert(set < m_set_reg_nums.size()); - assert(set < m_set_names.size()); - m_set_reg_nums[set].push_back(reg_num); -} - -void DynamicRegisterInfo::Finalize(const ArchSpec &arch) { - if (m_finalized) - return; - - m_finalized = true; - const size_t num_sets = m_sets.size(); - for (size_t set = 0; set < num_sets; ++set) { - assert(m_sets.size() == m_set_reg_nums.size()); - m_sets[set].num_registers = m_set_reg_nums[set].size(); - m_sets[set].registers = m_set_reg_nums[set].data(); - } - - // sort and unique all value registers and make sure each is terminated with - // LLDB_INVALID_REGNUM - - for (reg_to_regs_map::iterator pos = m_value_regs_map.begin(), - end = m_value_regs_map.end(); - pos != end; ++pos) { - if (pos->second.size() > 1) { - llvm::sort(pos->second.begin(), pos->second.end()); - reg_num_collection::iterator unique_end = - std::unique(pos->second.begin(), pos->second.end()); - if (unique_end != pos->second.end()) - pos->second.erase(unique_end, pos->second.end()); - } - assert(!pos->second.empty()); - if (pos->second.back() != LLDB_INVALID_REGNUM) - pos->second.push_back(LLDB_INVALID_REGNUM); - } - - // Now update all value_regs with each register info as needed - const size_t num_regs = m_regs.size(); - for (size_t i = 0; i < num_regs; ++i) { - if (m_value_regs_map.find(i) != m_value_regs_map.end()) - m_regs[i].value_regs = m_value_regs_map[i].data(); - else - m_regs[i].value_regs = nullptr; - } - - // Expand all invalidation dependencies - for (reg_to_regs_map::iterator pos = m_invalidate_regs_map.begin(), - end = m_invalidate_regs_map.end(); - pos != end; ++pos) { - const uint32_t reg_num = pos->first; - - if (m_regs[reg_num].value_regs) { - reg_num_collection extra_invalid_regs; - for (const uint32_t invalidate_reg_num : pos->second) { - reg_to_regs_map::iterator invalidate_pos = - m_invalidate_regs_map.find(invalidate_reg_num); - if (invalidate_pos != m_invalidate_regs_map.end()) { - for (const uint32_t concrete_invalidate_reg_num : - invalidate_pos->second) { - if (concrete_invalidate_reg_num != reg_num) - extra_invalid_regs.push_back(concrete_invalidate_reg_num); - } - } - } - pos->second.insert(pos->second.end(), extra_invalid_regs.begin(), - extra_invalid_regs.end()); - } - } - - // sort and unique all invalidate registers and make sure each is terminated - // with LLDB_INVALID_REGNUM - for (reg_to_regs_map::iterator pos = m_invalidate_regs_map.begin(), - end = m_invalidate_regs_map.end(); - pos != end; ++pos) { - if (pos->second.size() > 1) { - llvm::sort(pos->second.begin(), pos->second.end()); - reg_num_collection::iterator unique_end = - std::unique(pos->second.begin(), pos->second.end()); - if (unique_end != pos->second.end()) - pos->second.erase(unique_end, pos->second.end()); - } - assert(!pos->second.empty()); - if (pos->second.back() != LLDB_INVALID_REGNUM) - pos->second.push_back(LLDB_INVALID_REGNUM); - } - - // Now update all invalidate_regs with each register info as needed - for (size_t i = 0; i < num_regs; ++i) { - if (m_invalidate_regs_map.find(i) != m_invalidate_regs_map.end()) - m_regs[i].invalidate_regs = m_invalidate_regs_map[i].data(); - else - m_regs[i].invalidate_regs = nullptr; - } - - // Check if we need to automatically set the generic registers in case they - // weren't set - bool generic_regs_specified = false; - for (const auto ® : m_regs) { - if (reg.kinds[eRegisterKindGeneric] != LLDB_INVALID_REGNUM) { - generic_regs_specified = true; - break; - } - } - - if (!generic_regs_specified) { - switch (arch.GetMachine()) { - case llvm::Triple::aarch64: - case llvm::Triple::aarch64_32: - case llvm::Triple::aarch64_be: - for (auto ® : m_regs) { - if (strcmp(reg.name, "pc") == 0) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_PC; - else if ((strcmp(reg.name, "fp") == 0) || - (strcmp(reg.name, "x29") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FP; - else if ((strcmp(reg.name, "lr") == 0) || - (strcmp(reg.name, "x30") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_RA; - else if ((strcmp(reg.name, "sp") == 0) || - (strcmp(reg.name, "x31") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_SP; - else if (strcmp(reg.name, "cpsr") == 0) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FLAGS; - } - break; - - case llvm::Triple::arm: - case llvm::Triple::armeb: - case llvm::Triple::thumb: - case llvm::Triple::thumbeb: - for (auto ® : m_regs) { - if ((strcmp(reg.name, "pc") == 0) || (strcmp(reg.name, "r15") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_PC; - else if ((strcmp(reg.name, "sp") == 0) || - (strcmp(reg.name, "r13") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_SP; - else if ((strcmp(reg.name, "lr") == 0) || - (strcmp(reg.name, "r14") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_RA; - else if ((strcmp(reg.name, "r7") == 0) && - arch.GetTriple().getVendor() == llvm::Triple::Apple) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FP; - else if ((strcmp(reg.name, "r11") == 0) && - arch.GetTriple().getVendor() != llvm::Triple::Apple) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FP; - else if (strcmp(reg.name, "fp") == 0) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FP; - else if (strcmp(reg.name, "cpsr") == 0) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FLAGS; - } - break; - - case llvm::Triple::x86: - for (auto ® : m_regs) { - if ((strcmp(reg.name, "eip") == 0) || (strcmp(reg.name, "pc") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_PC; - else if ((strcmp(reg.name, "esp") == 0) || - (strcmp(reg.name, "sp") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_SP; - else if ((strcmp(reg.name, "ebp") == 0) || - (strcmp(reg.name, "fp") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FP; - else if ((strcmp(reg.name, "eflags") == 0) || - (strcmp(reg.name, "flags") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FLAGS; - } - break; - - case llvm::Triple::x86_64: - for (auto ® : m_regs) { - if ((strcmp(reg.name, "rip") == 0) || (strcmp(reg.name, "pc") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_PC; - else if ((strcmp(reg.name, "rsp") == 0) || - (strcmp(reg.name, "sp") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_SP; - else if ((strcmp(reg.name, "rbp") == 0) || - (strcmp(reg.name, "fp") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FP; - else if ((strcmp(reg.name, "rflags") == 0) || - (strcmp(reg.name, "flags") == 0)) - reg.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FLAGS; - } - break; - - default: - break; - } - } - - // At this stage call ConfigureOffsets to calculate register offsets for - // targets supporting dynamic offset calculation. It also calculates - // total byte size of register data. - ConfigureOffsets(); - - // Check if register info is reconfigurable - // AArch64 SVE register set has configurable register sizes - if (arch.GetTriple().isAArch64()) { - for (const auto ® : m_regs) { - if (strcmp(reg.name, "vg") == 0) { - m_is_reconfigurable = true; - break; - } - } - } -} - -void DynamicRegisterInfo::ConfigureOffsets() { - // We are going to create a map between remote (eRegisterKindProcessPlugin) - // and local (eRegisterKindLLDB) register numbers. This map will give us - // remote register numbers in increasing order for offset calculation. - std::map remote_to_local_regnum_map; - for (const auto ® : m_regs) - remote_to_local_regnum_map[reg.kinds[eRegisterKindProcessPlugin]] = - reg.kinds[eRegisterKindLLDB]; - - // At this stage we manually calculate g/G packet offsets of all primary - // registers, only if target XML or qRegisterInfo packet did not send - // an offset explicitly. - uint32_t reg_offset = 0; - for (auto const ®num_pair : remote_to_local_regnum_map) { - if (m_regs[regnum_pair.second].byte_offset == LLDB_INVALID_INDEX32 && - m_regs[regnum_pair.second].value_regs == nullptr) { - m_regs[regnum_pair.second].byte_offset = reg_offset; - - reg_offset = m_regs[regnum_pair.second].byte_offset + - m_regs[regnum_pair.second].byte_size; - } - } - - // Now update all value_regs with each register info as needed - for (auto ® : m_regs) { - if (reg.value_regs != nullptr) { - // Assign a valid offset to all pseudo registers if not assigned by stub. - // Pseudo registers with value_regs list populated will share same offset - // as that of their corresponding primary register in value_regs list. - if (reg.byte_offset == LLDB_INVALID_INDEX32) { - uint32_t value_regnum = reg.value_regs[0]; - if (value_regnum != LLDB_INVALID_INDEX32) - reg.byte_offset = - GetRegisterInfoAtIndex(remote_to_local_regnum_map[value_regnum]) - ->byte_offset; - } - } - - reg_offset = reg.byte_offset + reg.byte_size; - if (m_reg_data_byte_size < reg_offset) - m_reg_data_byte_size = reg_offset; - } -} - -bool DynamicRegisterInfo::IsReconfigurable() { return m_is_reconfigurable; } - -size_t DynamicRegisterInfo::GetNumRegisters() const { return m_regs.size(); } - -size_t DynamicRegisterInfo::GetNumRegisterSets() const { return m_sets.size(); } - -size_t DynamicRegisterInfo::GetRegisterDataByteSize() const { - return m_reg_data_byte_size; -} - -const RegisterInfo * -DynamicRegisterInfo::GetRegisterInfoAtIndex(uint32_t i) const { - if (i < m_regs.size()) - return &m_regs[i]; - return nullptr; -} - -RegisterInfo *DynamicRegisterInfo::GetRegisterInfoAtIndex(uint32_t i) { - if (i < m_regs.size()) - return &m_regs[i]; - return nullptr; -} - -const RegisterInfo *DynamicRegisterInfo::GetRegisterInfo(uint32_t kind, - uint32_t num) const { - uint32_t reg_index = ConvertRegisterKindToRegisterNumber(kind, num); - if (reg_index != LLDB_INVALID_REGNUM) - return &m_regs[reg_index]; - return nullptr; -} - -const RegisterSet *DynamicRegisterInfo::GetRegisterSet(uint32_t i) const { - if (i < m_sets.size()) - return &m_sets[i]; - return nullptr; -} - -uint32_t DynamicRegisterInfo::GetRegisterSetIndexByName(ConstString &set_name, - bool can_create) { - name_collection::iterator pos, end = m_set_names.end(); - for (pos = m_set_names.begin(); pos != end; ++pos) { - if (*pos == set_name) - return std::distance(m_set_names.begin(), pos); - } - - m_set_names.push_back(set_name); - m_set_reg_nums.resize(m_set_reg_nums.size() + 1); - RegisterSet new_set = {set_name.AsCString(), nullptr, 0, nullptr}; - m_sets.push_back(new_set); - return m_sets.size() - 1; -} - -uint32_t -DynamicRegisterInfo::ConvertRegisterKindToRegisterNumber(uint32_t kind, - uint32_t num) const { - reg_collection::const_iterator pos, end = m_regs.end(); - for (pos = m_regs.begin(); pos != end; ++pos) { - if (pos->kinds[kind] == num) - return std::distance(m_regs.begin(), pos); - } - - return LLDB_INVALID_REGNUM; -} - -void DynamicRegisterInfo::Clear() { - m_regs.clear(); - m_sets.clear(); - m_set_reg_nums.clear(); - m_set_names.clear(); - m_value_regs_map.clear(); - m_invalidate_regs_map.clear(); - m_dynamic_reg_size_map.clear(); - m_reg_data_byte_size = 0; - m_finalized = false; -} - -void DynamicRegisterInfo::Dump() const { - StreamFile s(stdout, false); - const size_t num_regs = m_regs.size(); - s.Printf("%p: DynamicRegisterInfo contains %" PRIu64 " registers:\n", - static_cast(this), static_cast(num_regs)); - for (size_t i = 0; i < num_regs; ++i) { - s.Printf("[%3" PRIu64 "] name = %-10s", (uint64_t)i, m_regs[i].name); - s.Printf(", size = %2u, offset = %4u, encoding = %u, format = %-10s", - m_regs[i].byte_size, m_regs[i].byte_offset, m_regs[i].encoding, - FormatManager::GetFormatAsCString(m_regs[i].format)); - if (m_regs[i].kinds[eRegisterKindProcessPlugin] != LLDB_INVALID_REGNUM) - s.Printf(", process plugin = %3u", - m_regs[i].kinds[eRegisterKindProcessPlugin]); - if (m_regs[i].kinds[eRegisterKindDWARF] != LLDB_INVALID_REGNUM) - s.Printf(", dwarf = %3u", m_regs[i].kinds[eRegisterKindDWARF]); - if (m_regs[i].kinds[eRegisterKindEHFrame] != LLDB_INVALID_REGNUM) - s.Printf(", ehframe = %3u", m_regs[i].kinds[eRegisterKindEHFrame]); - if (m_regs[i].kinds[eRegisterKindGeneric] != LLDB_INVALID_REGNUM) - s.Printf(", generic = %3u", m_regs[i].kinds[eRegisterKindGeneric]); - if (m_regs[i].alt_name) - s.Printf(", alt-name = %s", m_regs[i].alt_name); - if (m_regs[i].value_regs) { - s.Printf(", value_regs = [ "); - for (size_t j = 0; m_regs[i].value_regs[j] != LLDB_INVALID_REGNUM; ++j) { - s.Printf("%s ", m_regs[m_regs[i].value_regs[j]].name); - } - s.Printf("]"); - } - if (m_regs[i].invalidate_regs) { - s.Printf(", invalidate_regs = [ "); - for (size_t j = 0; m_regs[i].invalidate_regs[j] != LLDB_INVALID_REGNUM; - ++j) { - s.Printf("%s ", m_regs[m_regs[i].invalidate_regs[j]].name); - } - s.Printf("]"); - } - s.EOL(); - } - - const size_t num_sets = m_sets.size(); - s.Printf("%p: DynamicRegisterInfo contains %" PRIu64 " register sets:\n", - static_cast(this), static_cast(num_sets)); - for (size_t i = 0; i < num_sets; ++i) { - s.Printf("set[%" PRIu64 "] name = %s, regs = [", (uint64_t)i, - m_sets[i].name); - for (size_t idx = 0; idx < m_sets[i].num_registers; ++idx) { - s.Printf("%s ", m_regs[m_sets[i].registers[idx]].name); - } - s.Printf("]\n"); - } -} - -const lldb_private::RegisterInfo * -DynamicRegisterInfo::GetRegisterInfo(llvm::StringRef reg_name) const { - for (auto ®_info : m_regs) - if (reg_info.name == reg_name) - return ®_info; - return nullptr; -} diff --git a/gnu/llvm/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h b/gnu/llvm/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h deleted file mode 100644 index 7e90454c6d9..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Process/Utility/DynamicRegisterInfo.h +++ /dev/null @@ -1,102 +0,0 @@ -//===-- DynamicRegisterInfo.h -----------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_DYNAMICREGISTERINFO_H -#define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_DYNAMICREGISTERINFO_H - -#include -#include - -#include "lldb/Utility/ConstString.h" -#include "lldb/Utility/StructuredData.h" -#include "lldb/lldb-private.h" - -class DynamicRegisterInfo { -protected: - DynamicRegisterInfo(DynamicRegisterInfo &) = default; - DynamicRegisterInfo &operator=(DynamicRegisterInfo &) = default; - -public: - DynamicRegisterInfo() = default; - - DynamicRegisterInfo(const lldb_private::StructuredData::Dictionary &dict, - const lldb_private::ArchSpec &arch); - - virtual ~DynamicRegisterInfo() = default; - - DynamicRegisterInfo(DynamicRegisterInfo &&info); - DynamicRegisterInfo &operator=(DynamicRegisterInfo &&info); - - size_t SetRegisterInfo(const lldb_private::StructuredData::Dictionary &dict, - const lldb_private::ArchSpec &arch); - - void AddRegister(lldb_private::RegisterInfo ®_info, - lldb_private::ConstString ®_name, - lldb_private::ConstString ®_alt_name, - lldb_private::ConstString &set_name); - - void Finalize(const lldb_private::ArchSpec &arch); - - size_t GetNumRegisters() const; - - size_t GetNumRegisterSets() const; - - size_t GetRegisterDataByteSize() const; - - const lldb_private::RegisterInfo *GetRegisterInfoAtIndex(uint32_t i) const; - - lldb_private::RegisterInfo *GetRegisterInfoAtIndex(uint32_t i); - - const lldb_private::RegisterSet *GetRegisterSet(uint32_t i) const; - - uint32_t GetRegisterSetIndexByName(lldb_private::ConstString &set_name, - bool can_create); - - uint32_t ConvertRegisterKindToRegisterNumber(uint32_t kind, - uint32_t num) const; - - const lldb_private::RegisterInfo *GetRegisterInfo(uint32_t kind, - uint32_t num) const; - - void Dump() const; - - void Clear(); - - bool IsReconfigurable(); - - const lldb_private::RegisterInfo * - GetRegisterInfo(llvm::StringRef reg_name) const; - -protected: - // Classes that inherit from DynamicRegisterInfo can see and modify these - typedef std::vector reg_collection; - typedef std::vector set_collection; - typedef std::vector reg_num_collection; - typedef std::vector set_reg_num_collection; - typedef std::vector name_collection; - typedef std::map reg_to_regs_map; - typedef std::vector dwarf_opcode; - typedef std::map dynamic_reg_size_map; - - void MoveFrom(DynamicRegisterInfo &&info); - - void ConfigureOffsets(); - - reg_collection m_regs; - set_collection m_sets; - set_reg_num_collection m_set_reg_nums; - name_collection m_set_names; - reg_to_regs_map m_value_regs_map; - reg_to_regs_map m_invalidate_regs_map; - dynamic_reg_size_map m_dynamic_reg_size_map; - size_t m_reg_data_byte_size = 0u; // The number of bytes required to store - // all registers - bool m_finalized = false; - bool m_is_reconfigurable = false; -}; -#endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_DYNAMICREGISTERINFO_H diff --git a/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.cpp b/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.cpp deleted file mode 100644 index c91d7cb5ac3..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.cpp +++ /dev/null @@ -1,314 +0,0 @@ -//===-- GDBRemoteCommunicationReplayServer.cpp ----------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include - -#include "lldb/Host/Config.h" -#include "llvm/ADT/ScopeExit.h" - -#include "GDBRemoteCommunicationReplayServer.h" -#include "ProcessGDBRemoteLog.h" - -// C Includes -// C++ Includes -#include - -// Project includes -#include "lldb/Host/ThreadLauncher.h" -#include "lldb/Utility/ConstString.h" -#include "lldb/Utility/Event.h" -#include "lldb/Utility/FileSpec.h" -#include "lldb/Utility/StreamString.h" -#include "lldb/Utility/StringExtractorGDBRemote.h" - -using namespace llvm; -using namespace lldb; -using namespace lldb_private; -using namespace lldb_private::process_gdb_remote; - -/// Check if the given expected packet matches the actual packet. -static bool unexpected(llvm::StringRef expected, llvm::StringRef actual) { - // The 'expected' string contains the raw data, including the leading $ and - // trailing checksum. The 'actual' string contains only the packet's content. - if (expected.contains(actual)) - return false; - // Contains a PID which might be different. - if (expected.contains("vAttach")) - return false; - // Contains a ascii-hex-path. - if (expected.contains("QSetSTD")) - return false; - // Contains environment values. - if (expected.contains("QEnvironment")) - return false; - - return true; -} - -/// Check if we should reply to the given packet. -static bool skip(llvm::StringRef data) { - assert(!data.empty() && "Empty packet?"); - - // We've already acknowledge the '+' packet so we're done here. - if (data == "+") - return true; - - /// Don't 't reply to ^C. We need this because of stop reply packets, which - /// are only returned when the target halts. Reproducers synchronize these - /// 'asynchronous' replies, by recording them as a regular replies to the - /// previous packet (e.g. vCont). As a result, we should ignore real - /// asynchronous requests. - if (data.data()[0] == 0x03) - return true; - - return false; -} - -GDBRemoteCommunicationReplayServer::GDBRemoteCommunicationReplayServer() - : GDBRemoteCommunication("gdb-replay", "gdb-replay.rx_packet"), - m_async_broadcaster(nullptr, "lldb.gdb-replay.async-broadcaster"), - m_async_listener_sp( - Listener::MakeListener("lldb.gdb-replay.async-listener")), - m_async_thread_state_mutex() { - m_async_broadcaster.SetEventName(eBroadcastBitAsyncContinue, - "async thread continue"); - m_async_broadcaster.SetEventName(eBroadcastBitAsyncThreadShouldExit, - "async thread should exit"); - - const uint32_t async_event_mask = - eBroadcastBitAsyncContinue | eBroadcastBitAsyncThreadShouldExit; - m_async_listener_sp->StartListeningForEvents(&m_async_broadcaster, - async_event_mask); -} - -GDBRemoteCommunicationReplayServer::~GDBRemoteCommunicationReplayServer() { - StopAsyncThread(); -} - -GDBRemoteCommunication::PacketResult -GDBRemoteCommunicationReplayServer::GetPacketAndSendResponse( - Timeout timeout, Status &error, bool &interrupt, bool &quit) { - std::lock_guard guard(m_async_thread_state_mutex); - - StringExtractorGDBRemote packet; - PacketResult packet_result = WaitForPacketNoLock(packet, timeout, false); - - if (packet_result != PacketResult::Success) { - if (!IsConnected()) { - error.SetErrorString("lost connection"); - quit = true; - } else { - error.SetErrorString("timeout"); - } - return packet_result; - } - - m_async_broadcaster.BroadcastEvent(eBroadcastBitAsyncContinue); - - // Check if we should reply to this packet. - if (skip(packet.GetStringRef())) - return PacketResult::Success; - - // This completes the handshake. Since m_send_acks was true, we can unset it - // already. - if (packet.GetStringRef() == "QStartNoAckMode") - m_send_acks = false; - - // A QEnvironment packet is sent for every environment variable. If the - // number of environment variables is different during replay, the replies - // become out of sync. - if (packet.GetStringRef().find("QEnvironment") == 0) - return SendRawPacketNoLock("$OK#9a"); - - Log *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); - while (!m_packet_history.empty()) { - // Pop last packet from the history. - GDBRemotePacket entry = m_packet_history.back(); - m_packet_history.pop_back(); - - // Decode run-length encoding. - const std::string expanded_data = - GDBRemoteCommunication::ExpandRLE(entry.packet.data); - - // We've handled the handshake implicitly before. Skip the packet and move - // on. - if (entry.packet.data == "+") - continue; - - if (entry.type == GDBRemotePacket::ePacketTypeSend) { - if (unexpected(expanded_data, packet.GetStringRef())) { - LLDB_LOG(log, - "GDBRemoteCommunicationReplayServer expected packet: '{0}'", - expanded_data); - LLDB_LOG(log, "GDBRemoteCommunicationReplayServer actual packet: '{0}'", - packet.GetStringRef()); -#ifndef NDEBUG - // This behaves like a regular assert, but prints the expected and - // received packet before aborting. - printf("Reproducer expected packet: '%s'\n", expanded_data.c_str()); - printf("Reproducer received packet: '%s'\n", - packet.GetStringRef().data()); - llvm::report_fatal_error("Encountered unexpected packet during replay"); -#endif - return PacketResult::ErrorSendFailed; - } - - // Ignore QEnvironment packets as they're handled earlier. - if (expanded_data.find("QEnvironment") == 1) { - assert(m_packet_history.back().type == - GDBRemotePacket::ePacketTypeRecv); - m_packet_history.pop_back(); - } - - continue; - } - - if (entry.type == GDBRemotePacket::ePacketTypeInvalid) { - LLDB_LOG( - log, - "GDBRemoteCommunicationReplayServer skipped invalid packet: '{0}'", - packet.GetStringRef()); - continue; - } - - LLDB_LOG(log, - "GDBRemoteCommunicationReplayServer replied to '{0}' with '{1}'", - packet.GetStringRef(), entry.packet.data); - return SendRawPacketNoLock(entry.packet.data); - } - - quit = true; - - return packet_result; -} - -llvm::Error -GDBRemoteCommunicationReplayServer::LoadReplayHistory(const FileSpec &path) { - auto error_or_file = MemoryBuffer::getFile(path.GetPath()); - if (auto err = error_or_file.getError()) - return errorCodeToError(err); - - yaml::Input yin((*error_or_file)->getBuffer()); - yin >> m_packet_history; - - if (auto err = yin.error()) - return errorCodeToError(err); - - // We want to manipulate the vector like a stack so we need to reverse the - // order of the packets to have the oldest on at the back. - std::reverse(m_packet_history.begin(), m_packet_history.end()); - - return Error::success(); -} - -bool GDBRemoteCommunicationReplayServer::StartAsyncThread() { - std::lock_guard guard(m_async_thread_state_mutex); - if (!m_async_thread.IsJoinable()) { - // Create a thread that watches our internal state and controls which - // events make it to clients (into the DCProcess event queue). - llvm::Expected async_thread = ThreadLauncher::LaunchThread( - "", - GDBRemoteCommunicationReplayServer::AsyncThread, this); - if (!async_thread) { - LLDB_LOG_ERROR(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST), - async_thread.takeError(), - "failed to launch host thread: {}"); - return false; - } - m_async_thread = *async_thread; - } - - // Wait for handshake. - m_async_broadcaster.BroadcastEvent(eBroadcastBitAsyncContinue); - - return m_async_thread.IsJoinable(); -} - -void GDBRemoteCommunicationReplayServer::StopAsyncThread() { - std::lock_guard guard(m_async_thread_state_mutex); - - if (!m_async_thread.IsJoinable()) - return; - - // Request thread to stop. - m_async_broadcaster.BroadcastEvent(eBroadcastBitAsyncThreadShouldExit); - - // Disconnect client. - Disconnect(); - - // Stop the thread. - m_async_thread.Join(nullptr); - m_async_thread.Reset(); -} - -void GDBRemoteCommunicationReplayServer::ReceivePacket( - GDBRemoteCommunicationReplayServer &server, bool &done) { - Status error; - bool interrupt; - auto packet_result = server.GetPacketAndSendResponse(std::chrono::seconds(1), - error, interrupt, done); - if (packet_result != GDBRemoteCommunication::PacketResult::Success && - packet_result != - GDBRemoteCommunication::PacketResult::ErrorReplyTimeout) { - done = true; - } else { - server.m_async_broadcaster.BroadcastEvent(eBroadcastBitAsyncContinue); - } -} - -thread_result_t GDBRemoteCommunicationReplayServer::AsyncThread(void *arg) { - GDBRemoteCommunicationReplayServer *server = - (GDBRemoteCommunicationReplayServer *)arg; - auto D = make_scope_exit([&]() { server->Disconnect(); }); - EventSP event_sp; - bool done = false; - while (!done) { - if (server->m_async_listener_sp->GetEvent(event_sp, llvm::None)) { - const uint32_t event_type = event_sp->GetType(); - if (event_sp->BroadcasterIs(&server->m_async_broadcaster)) { - switch (event_type) { - case eBroadcastBitAsyncContinue: - ReceivePacket(*server, done); - if (done) - return {}; - break; - case eBroadcastBitAsyncThreadShouldExit: - default: - return {}; - } - } - } - } - - return {}; -} - -Status GDBRemoteCommunicationReplayServer::Connect( - process_gdb_remote::GDBRemoteCommunicationClient &client) { - repro::Loader *loader = repro::Reproducer::Instance().GetLoader(); - if (!loader) - return Status("No loader provided."); - - static std::unique_ptr> - multi_loader = repro::MultiLoader::Create( - repro::Reproducer::Instance().GetLoader()); - if (!multi_loader) - return Status("No gdb remote provider found."); - - llvm::Optional history_file = multi_loader->GetNextFile(); - if (!history_file) - return Status("No gdb remote packet log found."); - - if (auto error = LoadReplayHistory(FileSpec(*history_file))) - return Status("Unable to load replay history"); - - if (auto error = GDBRemoteCommunication::ConnectLocally(client, *this)) - return Status("Unable to connect to replay server"); - - return {}; -} diff --git a/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.h b/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.h deleted file mode 100644 index 2f8770d0acc..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationReplayServer.h +++ /dev/null @@ -1,88 +0,0 @@ -//===-- GDBRemoteCommunicationReplayServer.h --------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_SOURCE_PLUGINS_PROCESS_GDB_REMOTE_GDBREMOTECOMMUNICATIONREPLAYSERVER_H -#define LLDB_SOURCE_PLUGINS_PROCESS_GDB_REMOTE_GDBREMOTECOMMUNICATIONREPLAYSERVER_H - -// Other libraries and framework includes -#include "GDBRemoteCommunication.h" -#include "GDBRemoteCommunicationClient.h" -#include "GDBRemoteCommunicationHistory.h" - -// Project includes -#include "lldb/Host/HostThread.h" -#include "lldb/Utility/Broadcaster.h" -#include "lldb/lldb-private-forward.h" -#include "llvm/Support/Error.h" - -// C Includes -// C++ Includes -#include -#include -#include - -class StringExtractorGDBRemote; - -namespace lldb_private { -namespace process_gdb_remote { - -class ProcessGDBRemote; - -/// Dummy GDB server that replays packets from the GDB Remote Communication -/// history. This is used to replay GDB packets. -class GDBRemoteCommunicationReplayServer : public GDBRemoteCommunication { -public: - GDBRemoteCommunicationReplayServer(); - - ~GDBRemoteCommunicationReplayServer() override; - - PacketResult GetPacketAndSendResponse(Timeout timeout, - Status &error, bool &interrupt, - bool &quit); - - bool HandshakeWithClient() { return GetAck() == PacketResult::Success; } - - llvm::Error LoadReplayHistory(const FileSpec &path); - - bool StartAsyncThread(); - void StopAsyncThread(); - - Status Connect(process_gdb_remote::GDBRemoteCommunicationClient &client); - -protected: - enum { - eBroadcastBitAsyncContinue = (1 << 0), - eBroadcastBitAsyncThreadShouldExit = (1 << 1), - }; - - static void ReceivePacket(GDBRemoteCommunicationReplayServer &server, - bool &done); - static lldb::thread_result_t AsyncThread(void *arg); - - /// Replay history with the oldest packet at the end. - std::vector m_packet_history; - - /// Server thread. - Broadcaster m_async_broadcaster; - lldb::ListenerSP m_async_listener_sp; - HostThread m_async_thread; - std::recursive_mutex m_async_thread_state_mutex; - - bool m_skip_acks = false; - -private: - GDBRemoteCommunicationReplayServer( - const GDBRemoteCommunicationReplayServer &) = delete; - const GDBRemoteCommunicationReplayServer & - operator=(const GDBRemoteCommunicationReplayServer &) = delete; -}; - -} // namespace process_gdb_remote -} // namespace lldb_private - -#endif // LLDB_SOURCE_PLUGINS_PROCESS_GDB_REMOTE_GDBREMOTECOMMUNICATIONREPLAYSERVER_H diff --git a/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp b/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp index b2b80255272..f71240672bc 100644 --- a/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp +++ b/gnu/llvm/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp @@ -16,6 +16,7 @@ #include #include +#include #include "lldb/Core/ModuleSpec.h" #include "lldb/Host/Config.h" @@ -30,6 +31,7 @@ #include "lldb/Target/Platform.h" #include "lldb/Utility/Endian.h" #include "lldb/Utility/GDBRemote.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" #include "lldb/Utility/StreamString.h" #include "lldb/Utility/StructuredData.h" @@ -56,11 +58,9 @@ const static uint32_t g_default_packet_timeout_sec = 0; // not specified #endif // GDBRemoteCommunicationServerCommon constructor -GDBRemoteCommunicationServerCommon::GDBRemoteCommunicationServerCommon( - const char *comm_name, const char *listener_name) - : GDBRemoteCommunicationServer(comm_name, listener_name), - m_process_launch_info(), m_process_launch_error(), m_proc_infos(), - m_proc_infos_index(0) { +GDBRemoteCommunicationServerCommon::GDBRemoteCommunicationServerCommon() + : GDBRemoteCommunicationServer(), m_process_launch_info(), + m_process_launch_error(), m_proc_infos(), m_proc_infos_index(0) { RegisterMemberFunctionHandler(StringExtractorGDBRemote::eServerPacketType_A, &GDBRemoteCommunicationServerCommon::Handle_A); RegisterMemberFunctionHandler( @@ -156,6 +156,9 @@ GDBRemoteCommunicationServerCommon::GDBRemoteCommunicationServerCommon( RegisterMemberFunctionHandler( StringExtractorGDBRemote::eServerPacketType_vFile_size, &GDBRemoteCommunicationServerCommon::Handle_vFile_Size); + RegisterMemberFunctionHandler( + StringExtractorGDBRemote::eServerPacketType_vFile_fstat, + &GDBRemoteCommunicationServerCommon::Handle_vFile_FStat); RegisterMemberFunctionHandler( StringExtractorGDBRemote::eServerPacketType_vFile_stat, &GDBRemoteCommunicationServerCommon::Handle_vFile_Stat); @@ -264,18 +267,18 @@ GDBRemoteCommunicationServerCommon::Handle_qHostInfo( } #endif - std::string s; - if (HostInfo::GetOSBuildString(s)) { + if (std::optional s = HostInfo::GetOSBuildString()) { response.PutCString("os_build:"); - response.PutStringAsRawHex8(s); + response.PutStringAsRawHex8(*s); response.PutChar(';'); } - if (HostInfo::GetOSKernelDescription(s)) { + if (std::optional s = HostInfo::GetOSKernelDescription()) { response.PutCString("os_kernel:"); - response.PutStringAsRawHex8(s); + response.PutStringAsRawHex8(*s); response.PutChar(';'); } + std::string s; #if defined(__APPLE__) #if defined(__arm__) || defined(__arm64__) || defined(__aarch64__) @@ -300,7 +303,7 @@ GDBRemoteCommunicationServerCommon::Handle_qHostInfo( response.PutChar(';'); } #endif // #if defined(__APPLE__) - + // coverity[unsigned_compare] if (g_default_packet_timeout_sec > 0) response.Printf("default_packet_timeout:%u;", g_default_packet_timeout_sec); @@ -423,14 +426,14 @@ GDBRemoteCommunication::PacketResult GDBRemoteCommunicationServerCommon::Handle_qUserName( StringExtractorGDBRemote &packet) { #if LLDB_ENABLE_POSIX - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PROCESS)); + Log *log = GetLog(LLDBLog::Process); LLDB_LOGF(log, "GDBRemoteCommunicationServerCommon::%s begin", __FUNCTION__); // Packet format: "qUserName:%i" where %i is the uid packet.SetFilePos(::strlen("qUserName:")); uint32_t uid = packet.GetU32(UINT32_MAX); if (uid != UINT32_MAX) { - if (llvm::Optional name = + if (std::optional name = HostInfo::GetUserIDResolver().GetUserName(uid)) { StreamString response; response.PutStringAsRawHex8(*name); @@ -450,7 +453,7 @@ GDBRemoteCommunicationServerCommon::Handle_qGroupName( packet.SetFilePos(::strlen("qGroupName:")); uint32_t gid = packet.GetU32(UINT32_MAX); if (gid != UINT32_MAX) { - if (llvm::Optional name = + if (std::optional name = HostInfo::GetUserIDResolver().GetGroupName(gid)) { StreamString response; response.PutStringAsRawHex8(*name); @@ -501,10 +504,6 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_Open( packet.GetHexByteStringTerminatedBy(path, ','); if (!path.empty()) { if (packet.GetChar() == ',') { - // FIXME - // The flag values for OpenOptions do not match the values used by GDB - // * https://sourceware.org/gdb/onlinedocs/gdb/Open-Flags.html#Open-Flags - // * rdar://problem/46788934 auto flags = File::OpenOptions(packet.GetHexMaxU32(false, 0)); if (packet.GetChar() == ',') { mode_t mode = packet.GetHexMaxU32(false, 0600); @@ -513,22 +512,21 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_Open( // Do not close fd. auto file = FileSystem::Instance().Open(path_spec, flags, mode, false); - int save_errno = 0; + StreamString response; + response.PutChar('F'); + int descriptor = File::kInvalidDescriptor; if (file) { descriptor = file.get()->GetDescriptor(); + response.Printf("%x", descriptor); } else { + response.PutCString("-1"); std::error_code code = errorToErrorCode(file.takeError()); if (code.category() == std::system_category()) { - save_errno = code.value(); + response.Printf(",%x", code.value()); } } - StreamString response; - response.PutChar('F'); - response.Printf("%i", descriptor); - if (save_errno) - response.Printf(",%i", save_errno); return SendPacketNoLock(response.GetString()); } } @@ -536,11 +534,22 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_Open( return SendErrorResponse(18); } +static GDBErrno system_errno_to_gdb(int err) { + switch (err) { +#define HANDLE_ERRNO(name, value) \ + case name: \ + return GDB_##name; +#include "Plugins/Process/gdb-remote/GDBRemoteErrno.def" + default: + return GDB_EUNKNOWN; + } +} + GDBRemoteCommunication::PacketResult GDBRemoteCommunicationServerCommon::Handle_vFile_Close( StringExtractorGDBRemote &packet) { packet.SetFilePos(::strlen("vFile:close:")); - int fd = packet.GetS32(-1); + int fd = packet.GetS32(-1, 16); int err = -1; int save_errno = 0; if (fd >= 0) { @@ -553,9 +562,9 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_Close( } StreamString response; response.PutChar('F'); - response.Printf("%i", err); + response.Printf("%x", err); if (save_errno) - response.Printf(",%i", save_errno); + response.Printf(",%x", system_errno_to_gdb(save_errno)); return SendPacketNoLock(response.GetString()); } @@ -564,28 +573,29 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_pRead( StringExtractorGDBRemote &packet) { StreamGDBRemote response; packet.SetFilePos(::strlen("vFile:pread:")); - int fd = packet.GetS32(-1); + int fd = packet.GetS32(-1, 16); if (packet.GetChar() == ',') { - size_t count = packet.GetU64(SIZE_MAX); + size_t count = packet.GetHexMaxU64(false, SIZE_MAX); if (packet.GetChar() == ',') { - off_t offset = packet.GetU64(UINT32_MAX); + off_t offset = packet.GetHexMaxU32(false, UINT32_MAX); if (count == SIZE_MAX) { - response.Printf("F-1:%i", EINVAL); + response.Printf("F-1:%x", EINVAL); return SendPacketNoLock(response.GetString()); } std::string buffer(count, 0); - NativeFile file(fd, File::eOpenOptionRead, false); + NativeFile file(fd, File::eOpenOptionReadOnly, false); Status error = file.Read(static_cast(&buffer[0]), count, offset); - const ssize_t bytes_read = error.Success() ? count : -1; const int save_errno = error.GetError(); response.PutChar('F'); - response.Printf("%zi", bytes_read); - if (save_errno) - response.Printf(",%i", save_errno); - else { + if (error.Success()) { + response.Printf("%zx", count); response.PutChar(';'); - response.PutEscapedBytes(&buffer[0], bytes_read); + response.PutEscapedBytes(&buffer[0], count); + } else { + response.PutCString("-1"); + if (save_errno) + response.Printf(",%x", system_errno_to_gdb(save_errno)); } return SendPacketNoLock(response.GetString()); } @@ -601,23 +611,26 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_pWrite( StreamGDBRemote response; response.PutChar('F'); - int fd = packet.GetU32(UINT32_MAX); + int fd = packet.GetS32(-1, 16); if (packet.GetChar() == ',') { - off_t offset = packet.GetU64(UINT32_MAX); + off_t offset = packet.GetHexMaxU32(false, UINT32_MAX); if (packet.GetChar() == ',') { std::string buffer; if (packet.GetEscapedBinaryData(buffer)) { - NativeFile file(fd, File::eOpenOptionWrite, false); + NativeFile file(fd, File::eOpenOptionWriteOnly, false); size_t count = buffer.size(); Status error = file.Write(static_cast(&buffer[0]), count, offset); - const ssize_t bytes_written = error.Success() ? count : -1; const int save_errno = error.GetError(); - response.Printf("%zi", bytes_written); - if (save_errno) - response.Printf(",%i", save_errno); + if (error.Success()) + response.Printf("%zx", count); + else { + response.PutCString("-1"); + if (save_errno) + response.Printf(",%x", system_errno_to_gdb(save_errno)); + } } else { - response.Printf("-1,%i", EINVAL); + response.Printf("-1,%x", EINVAL); } return SendPacketNoLock(response.GetString()); } @@ -659,9 +672,10 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_Mode( std::error_code ec; const uint32_t mode = FileSystem::Instance().GetPermissions(file_spec, ec); StreamString response; - response.Printf("F%u", mode); - if (mode == 0 || ec) - response.Printf(",%i", (int)Status(ec).GetError()); + if (mode != llvm::sys::fs::perms_not_known) + response.Printf("F%x", mode); + else + response.Printf("F-1,%x", (int)Status(ec).GetError()); return SendPacketNoLock(response.GetString()); } return SendErrorResponse(23); @@ -701,7 +715,7 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_symlink( Status error = FileSystem::Instance().Symlink(src_spec, FileSpec(dst)); StreamString response; - response.Printf("F%u,%u", error.GetError(), error.GetError()); + response.Printf("F%x,%x", error.GetError(), error.GetError()); return SendPacketNoLock(response.GetString()); } @@ -713,7 +727,7 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_unlink( packet.GetHexByteString(path); Status error(llvm::sys::fs::remove(path)); StreamString response; - response.Printf("F%u,%u", error.GetError(), error.GetError()); + response.Printf("F%x,%x", error.GetError(), error.GetError()); return SendPacketNoLock(response.GetString()); } @@ -755,6 +769,54 @@ GDBRemoteCommunicationServerCommon::Handle_qPlatform_shell( return SendErrorResponse(24); } +template +static void fill_clamp(T &dest, U src, typename T::value_type fallback) { + static_assert(std::is_unsigned::value, + "Destination type must be unsigned."); + using UU = std::make_unsigned_t; + constexpr auto T_max = std::numeric_limits::max(); + dest = src >= 0 && static_cast(src) <= T_max ? src : fallback; +} + +GDBRemoteCommunication::PacketResult +GDBRemoteCommunicationServerCommon::Handle_vFile_FStat( + StringExtractorGDBRemote &packet) { + StreamGDBRemote response; + packet.SetFilePos(::strlen("vFile:fstat:")); + int fd = packet.GetS32(-1, 16); + + struct stat file_stats; + if (::fstat(fd, &file_stats) == -1) { + const int save_errno = errno; + response.Printf("F-1,%x", system_errno_to_gdb(save_errno)); + return SendPacketNoLock(response.GetString()); + } + + GDBRemoteFStatData data; + fill_clamp(data.gdb_st_dev, file_stats.st_dev, 0); + fill_clamp(data.gdb_st_ino, file_stats.st_ino, 0); + data.gdb_st_mode = file_stats.st_mode; + fill_clamp(data.gdb_st_nlink, file_stats.st_nlink, UINT32_MAX); + fill_clamp(data.gdb_st_uid, file_stats.st_uid, 0); + fill_clamp(data.gdb_st_gid, file_stats.st_gid, 0); + fill_clamp(data.gdb_st_rdev, file_stats.st_rdev, 0); + data.gdb_st_size = file_stats.st_size; +#if !defined(_WIN32) + data.gdb_st_blksize = file_stats.st_blksize; + data.gdb_st_blocks = file_stats.st_blocks; +#else + data.gdb_st_blksize = 0; + data.gdb_st_blocks = 0; +#endif + fill_clamp(data.gdb_st_atime, file_stats.st_atime, 0); + fill_clamp(data.gdb_st_mtime, file_stats.st_mtime, 0); + fill_clamp(data.gdb_st_ctime, file_stats.st_ctime, 0); + + response.Printf("F%zx;", sizeof(data)); + response.PutEscapedBytes(&data, sizeof(data)); + return SendPacketNoLock(response.GetString()); +} + GDBRemoteCommunication::PacketResult GDBRemoteCommunicationServerCommon::Handle_vFile_Stat( StringExtractorGDBRemote &packet) { @@ -795,7 +857,7 @@ GDBRemoteCommunicationServerCommon::Handle_qPlatform_mkdir( Status error(llvm::sys::fs::create_directory(path, mode)); StreamGDBRemote response; - response.Printf("F%u", error.GetError()); + response.Printf("F%x", error.GetError()); return SendPacketNoLock(response.GetString()); } @@ -815,7 +877,7 @@ GDBRemoteCommunicationServerCommon::Handle_qPlatform_chmod( Status error(llvm::sys::fs::setPermissions(path, perms)); StreamGDBRemote response; - response.Printf("F%u", error.GetError()); + response.Printf("F%x", error.GetError()); return SendPacketNoLock(response.GetString()); } @@ -958,7 +1020,7 @@ GDBRemoteCommunicationServerCommon::Handle_A(StringExtractorGDBRemote &packet) { // encoded argument value list, but we will stay true to the documented // version of the 'A' packet here... - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PROCESS)); + Log *log = GetLog(LLDBLog::Process); int actual_arg_index = 0; packet.SetFilePos(1); // Skip the 'A' @@ -1075,7 +1137,8 @@ GDBRemoteCommunicationServerCommon::Handle_qModuleInfo( response.PutChar(';'); response.PutCString("file_path:"); - response.PutStringAsRawHex8(matched_module_spec.GetFileSpec().GetCString()); + response.PutStringAsRawHex8( + matched_module_spec.GetFileSpec().GetPath().c_str()); response.PutChar(';'); response.PutCString("file_offset:"); response.PutHex64(file_offset); @@ -1150,7 +1213,7 @@ void GDBRemoteCommunicationServerCommon::CreateProcessInfoResponse( proc_info.GetUserID(), proc_info.GetGroupID(), proc_info.GetEffectiveUserID(), proc_info.GetEffectiveGroupID()); response.PutCString("name:"); - response.PutStringAsRawHex8(proc_info.GetExecutableFile().GetCString()); + response.PutStringAsRawHex8(proc_info.GetExecutableFile().GetPath().c_str()); response.PutChar(';'); response.PutCString("args:"); @@ -1287,5 +1350,6 @@ std::vector GDBRemoteCommunicationServerCommon::HandleFeatures( llvm::formatv("PacketSize={0}", max_packet_size), "QStartNoAckMode+", "qEcho+", + "native-signals+", }; } diff --git a/gnu/llvm/lldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.cpp b/gnu/llvm/lldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.cpp deleted file mode 100644 index 7c7c5d73680..00000000000 --- a/gnu/llvm/lldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.cpp +++ /dev/null @@ -1,48 +0,0 @@ -//===-- SWIGPythonBridge.cpp ----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/Config.h" -#include "lldb/lldb-enumerations.h" - -#if LLDB_ENABLE_PYTHON - -// LLDB Python header must be included first -#include "lldb-python.h" - -#include "SWIGPythonBridge.h" - -using namespace lldb; - -namespace lldb_private { - -template const char *GetPythonValueFormatString(T t); -template <> const char *GetPythonValueFormatString(char *) { return "s"; } -template <> const char *GetPythonValueFormatString(char) { return "b"; } -template <> const char *GetPythonValueFormatString(unsigned char) { - return "B"; -} -template <> const char *GetPythonValueFormatString(short) { return "h"; } -template <> const char *GetPythonValueFormatString(unsigned short) { - return "H"; -} -template <> const char *GetPythonValueFormatString(int) { return "i"; } -template <> const char *GetPythonValueFormatString(unsigned int) { return "I"; } -template <> const char *GetPythonValueFormatString(long) { return "l"; } -template <> const char *GetPythonValueFormatString(unsigned long) { - return "k"; -} -template <> const char *GetPythonValueFormatString(long long) { return "L"; } -template <> const char *GetPythonValueFormatString(unsigned long long) { - return "K"; -} -template <> const char *GetPythonValueFormatString(float) { return "f"; } -template <> const char *GetPythonValueFormatString(double) { return "d"; } - -} // namespace lldb_private - -#endif // LLDB_ENABLE_PYTHON diff --git a/gnu/llvm/lldb/source/Plugins/Trace/common/TraceSessionFileParser.cpp b/gnu/llvm/lldb/source/Plugins/Trace/common/TraceSessionFileParser.cpp deleted file mode 100644 index c88ad9dc6a5..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Trace/common/TraceSessionFileParser.cpp +++ /dev/null @@ -1,224 +0,0 @@ -//===-- TraceSessionFileParser.cpp ---------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===/ - -#include "TraceSessionFileParser.h" -#include "ThreadPostMortemTrace.h" - -#include - -#include "lldb/Core/Debugger.h" -#include "lldb/Core/Module.h" -#include "lldb/Target/Process.h" -#include "lldb/Target/Target.h" - -using namespace lldb; -using namespace lldb_private; -using namespace llvm; - -void TraceSessionFileParser::NormalizePath(lldb_private::FileSpec &file_spec) { - if (file_spec.IsRelative()) - file_spec.PrependPathComponent(m_session_file_dir); -} - -Error TraceSessionFileParser::ParseModule(lldb::TargetSP &target_sp, - const JSONModule &module) { - FileSpec system_file_spec(module.system_path); - NormalizePath(system_file_spec); - - FileSpec local_file_spec(module.file.hasValue() ? *module.file - : module.system_path); - NormalizePath(local_file_spec); - - ModuleSpec module_spec; - module_spec.GetFileSpec() = local_file_spec; - module_spec.GetPlatformFileSpec() = system_file_spec; - - if (module.uuid.hasValue()) - module_spec.GetUUID().SetFromStringRef(*module.uuid); - - Status error; - ModuleSP module_sp = - target_sp->GetOrCreateModule(module_spec, /*notify*/ false, &error); - - if (error.Fail()) - return error.ToError(); - - bool load_addr_changed = false; - module_sp->SetLoadAddress(*target_sp, module.load_address.value, false, - load_addr_changed); - return llvm::Error::success(); -} - -Error TraceSessionFileParser::CreateJSONError(json::Path::Root &root, - const json::Value &value) { - std::string err; - raw_string_ostream os(err); - root.printErrorContext(value, os); - return createStringError( - std::errc::invalid_argument, "%s\n\nContext:\n%s\n\nSchema:\n%s", - toString(root.getError()).c_str(), os.str().c_str(), m_schema.data()); -} - -std::string TraceSessionFileParser::BuildSchema(StringRef plugin_schema) { - std::ostringstream schema_builder; - schema_builder << "{\n \"trace\": "; - schema_builder << plugin_schema.data() << ","; - schema_builder << R"( - "processes": [ - { - "pid": integer, - "triple": string, // llvm-triple - "threads": [ - { - "tid": integer, - "traceFile": string - } - ], - "modules": [ - { - "systemPath": string, // original path of the module at runtime - "file"?: string, // copy of the file if not available at "systemPath" - "loadAddress": string, // string address in hex or decimal form - "uuid"?: string, - } - ] - } - ] - // Notes: - // All paths are either absolute or relative to the session file. -} -)"; - return schema_builder.str(); -} - -ThreadPostMortemTraceSP -TraceSessionFileParser::ParseThread(ProcessSP &process_sp, - const JSONThread &thread) { - lldb::tid_t tid = static_cast(thread.tid); - - FileSpec trace_file(thread.trace_file); - NormalizePath(trace_file); - - ThreadPostMortemTraceSP thread_sp = - std::make_shared(*process_sp, tid, trace_file); - process_sp->GetThreadList().AddThread(thread_sp); - return thread_sp; -} - -Expected -TraceSessionFileParser::ParseProcess(const JSONProcess &process) { - TargetSP target_sp; - Status error = m_debugger.GetTargetList().CreateTarget( - m_debugger, /*user_exe_path*/ StringRef(), process.triple, - eLoadDependentsNo, - /*platform_options*/ nullptr, target_sp); - - if (!target_sp) - return error.ToError(); - - ParsedProcess parsed_process; - parsed_process.target_sp = target_sp; - - ProcessSP process_sp = target_sp->CreateProcess( - /*listener*/ nullptr, "trace", - /*crash_file*/ nullptr, - /*can_connect*/ false); - - process_sp->SetID(static_cast(process.pid)); - - for (const JSONThread &thread : process.threads) - parsed_process.threads.push_back(ParseThread(process_sp, thread)); - - for (const JSONModule &module : process.modules) - if (Error err = ParseModule(target_sp, module)) - return std::move(err); - - if (!process.threads.empty()) - process_sp->GetThreadList().SetSelectedThreadByIndexID(0); - - // We invoke DidAttach to create a correct stopped state for the process and - // its threads. - ArchSpec process_arch; - process_sp->DidAttach(process_arch); - - return parsed_process; -} - -Expected> -TraceSessionFileParser::ParseCommonSessionFile( - const JSONTraceSessionBase &session) { - std::vector parsed_processes; - - auto onError = [&]() { - // Delete all targets that were created so far in case of failures - for (ParsedProcess &parsed_process : parsed_processes) - m_debugger.GetTargetList().DeleteTarget(parsed_process.target_sp); - }; - - for (const JSONProcess &process : session.processes) { - if (Expected parsed_process = ParseProcess(process)) - parsed_processes.push_back(std::move(*parsed_process)); - else { - onError(); - return parsed_process.takeError(); - } - } - return parsed_processes; -} - -namespace llvm { -namespace json { - -bool fromJSON(const Value &value, TraceSessionFileParser::JSONAddress &address, - Path path) { - Optional s = value.getAsString(); - if (s.hasValue() && !s->getAsInteger(0, address.value)) - return true; - - path.report("expected numeric string"); - return false; -} - -bool fromJSON(const Value &value, TraceSessionFileParser::JSONModule &module, - Path path) { - ObjectMapper o(value, path); - return o && o.map("systemPath", module.system_path) && - o.map("file", module.file) && - o.map("loadAddress", module.load_address) && - o.map("uuid", module.uuid); -} - -bool fromJSON(const Value &value, TraceSessionFileParser::JSONThread &thread, - Path path) { - ObjectMapper o(value, path); - return o && o.map("tid", thread.tid) && o.map("traceFile", thread.trace_file); -} - -bool fromJSON(const Value &value, TraceSessionFileParser::JSONProcess &process, - Path path) { - ObjectMapper o(value, path); - return o && o.map("pid", process.pid) && o.map("triple", process.triple) && - o.map("threads", process.threads) && o.map("modules", process.modules); -} - -bool fromJSON(const Value &value, - TraceSessionFileParser::JSONTracePluginSettings &plugin_settings, - Path path) { - ObjectMapper o(value, path); - return o && o.map("type", plugin_settings.type); -} - -bool fromJSON(const Value &value, - TraceSessionFileParser::JSONTraceSessionBase &session, - Path path) { - ObjectMapper o(value, path); - return o && o.map("processes", session.processes); -} - -} // namespace json -} // namespace llvm diff --git a/gnu/llvm/lldb/source/Plugins/Trace/common/TraceSessionFileParser.h b/gnu/llvm/lldb/source/Plugins/Trace/common/TraceSessionFileParser.h deleted file mode 100644 index 6abaffcecd3..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Trace/common/TraceSessionFileParser.h +++ /dev/null @@ -1,179 +0,0 @@ -//===-- TraceSessionFileParser.h --------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_TARGET_TRACESESSIONPARSER_H -#define LLDB_TARGET_TRACESESSIONPARSER_H - -#include "llvm/Support/JSON.h" - -#include "ThreadPostMortemTrace.h" - -namespace lldb_private { - -/// \class TraceSessionFileParser TraceSessionFileParser.h -/// -/// Base class for parsing the common information of JSON trace session files. -/// Contains the basic C++ structs that represent the JSON data, which include -/// \a JSONTraceSession as the root object. -/// -/// See \a Trace::FindPlugin for more information regarding these JSON files. -class TraceSessionFileParser { -public: - /// C++ structs representing the JSON trace session. - /// \{ - struct JSONAddress { - lldb::addr_t value; - }; - - struct JSONModule { - std::string system_path; - llvm::Optional file; - JSONAddress load_address; - llvm::Optional uuid; - }; - - struct JSONThread { - int64_t tid; - std::string trace_file; - }; - - struct JSONProcess { - int64_t pid; - std::string triple; - std::vector threads; - std::vector modules; - }; - - struct JSONTracePluginSettings { - std::string type; - }; - - struct JSONTraceSessionBase { - std::vector processes; - }; - - /// The trace plug-in implementation should provide its own TPluginSettings, - /// which corresponds to the "trace" section of the schema. - template - struct JSONTraceSession : JSONTraceSessionBase { - TPluginSettings trace; - }; - /// \} - - /// Helper struct holding the objects created when parsing a process - struct ParsedProcess { - lldb::TargetSP target_sp; - std::vector threads; - }; - - TraceSessionFileParser(Debugger &debugger, llvm::StringRef session_file_dir, - llvm::StringRef schema) - : m_debugger(debugger), m_session_file_dir(session_file_dir), - m_schema(schema) {} - - /// Build the full schema for a Trace plug-in. - /// - /// \param[in] plugin_schema - /// The subschema that corresponds to the "trace" section of the schema. - /// - /// \return - /// The full schema containing the common attributes and the plug-in - /// specific attributes. - static std::string BuildSchema(llvm::StringRef plugin_schema); - - /// Parse the fields common to all trace session schemas. - /// - /// \param[in] session - /// The session json objects already deserialized. - /// - /// \return - /// A list of \a ParsedProcess containing all threads and targets created - /// during the parsing, or an error in case of failures. In case of - /// errors, no side effects are produced. - llvm::Expected> - ParseCommonSessionFile(const JSONTraceSessionBase &session); - -protected: - /// Resolve non-absolute paths relative to the session file folder. It - /// modifies the given file_spec. - void NormalizePath(lldb_private::FileSpec &file_spec); - - lldb::ThreadPostMortemTraceSP ParseThread(lldb::ProcessSP &process_sp, - const JSONThread &thread); - - llvm::Expected ParseProcess(const JSONProcess &process); - - llvm::Error ParseModule(lldb::TargetSP &target_sp, const JSONModule &module); - - /// Create a user-friendly error message upon a JSON-parsing failure using the - /// \a json::ObjectMapper functionality. - /// - /// \param[in] root - /// The \a llvm::json::Path::Root used to parse the JSON \a value. - /// - /// \param[in] value - /// The json value that failed to parse. - /// - /// \return - /// An \a llvm::Error containing the user-friendly error message. - llvm::Error CreateJSONError(llvm::json::Path::Root &root, - const llvm::json::Value &value); - - Debugger &m_debugger; - std::string m_session_file_dir; - llvm::StringRef m_schema; -}; -} // namespace lldb_private - -namespace llvm { -namespace json { - -bool fromJSON(const Value &value, - lldb_private::TraceSessionFileParser::JSONAddress &address, - Path path); - -bool fromJSON(const Value &value, - lldb_private::TraceSessionFileParser::JSONModule &module, - Path path); - -bool fromJSON(const Value &value, - lldb_private::TraceSessionFileParser::JSONThread &thread, - Path path); - -bool fromJSON(const Value &value, - lldb_private::TraceSessionFileParser::JSONProcess &process, - Path path); - -bool fromJSON(const Value &value, - lldb_private::TraceSessionFileParser::JSONTracePluginSettings - &plugin_settings, - Path path); - -bool fromJSON( - const Value &value, - lldb_private::TraceSessionFileParser::JSONTraceSessionBase &session, - Path path); - -template -bool fromJSON( - const Value &value, - lldb_private::TraceSessionFileParser::JSONTraceSession - &session, - Path path) { - ObjectMapper o(value, path); - return o && o.map("trace", session.trace) && - fromJSON(value, - (lldb_private::TraceSessionFileParser::JSONTraceSessionBase &) - session, - path); -} - -} // namespace json -} // namespace llvm - -#endif // LLDB_TARGET_TRACESESSIONPARSER_H diff --git a/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/IntelPTDecoder.cpp b/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/IntelPTDecoder.cpp deleted file mode 100644 index 3827881454c..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/IntelPTDecoder.cpp +++ /dev/null @@ -1,279 +0,0 @@ -//===-- IntelPTDecoder.cpp --======----------------------------------------===// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "IntelPTDecoder.h" - -#include "llvm/Support/MemoryBuffer.h" - -#include "../common/ThreadPostMortemTrace.h" -#include "DecodedThread.h" -#include "TraceIntelPT.h" -#include "lldb/Core/Module.h" -#include "lldb/Core/Section.h" -#include "lldb/Target/Target.h" -#include "lldb/Utility/StringExtractor.h" - -using namespace lldb; -using namespace lldb_private; -using namespace lldb_private::trace_intel_pt; -using namespace llvm; - -/// Move the decoder forward to the next synchronization point (i.e. next PSB -/// packet). -/// -/// Once the decoder is at that sync. point, it can start decoding instructions. -/// -/// \return -/// A negative number with the libipt error if we couldn't synchronize. -/// Otherwise, a positive number with the synchronization status will be -/// returned. -static int FindNextSynchronizationPoint(pt_insn_decoder &decoder) { - // Try to sync the decoder. If it fails, then get - // the decoder_offset and try to sync again from - // the next synchronization point. If the - // new_decoder_offset is same as decoder_offset - // then we can't move to the next synchronization - // point. Otherwise, keep resyncing until either - // end of trace stream (eos) is reached or - // pt_insn_sync_forward() passes. - int errcode = pt_insn_sync_forward(&decoder); - - if (errcode != -pte_eos && errcode < 0) { - uint64_t decoder_offset = 0; - int errcode_off = pt_insn_get_offset(&decoder, &decoder_offset); - if (errcode_off >= 0) { // we could get the offset - while (true) { - errcode = pt_insn_sync_forward(&decoder); - if (errcode >= 0 || errcode == -pte_eos) - break; - - uint64_t new_decoder_offset = 0; - errcode_off = pt_insn_get_offset(&decoder, &new_decoder_offset); - if (errcode_off < 0) - break; // We can't further synchronize. - else if (new_decoder_offset <= decoder_offset) { - // We tried resyncing the decoder and - // decoder didn't make any progress because - // the offset didn't change. We will not - // make any progress further. Hence, - // stopping in this situation. - break; - } - // We'll try again starting from a new offset. - decoder_offset = new_decoder_offset; - } - } - } - - return errcode; -} - -/// Before querying instructions, we need to query the events associated that -/// instruction e.g. timing events like ptev_tick, or paging events like -/// ptev_paging. -/// -/// \return -/// 0 if there were no errors processing the events, or a negative libipt -/// error code in case of errors. -static int ProcessPTEvents(pt_insn_decoder &decoder, int errcode) { - while (errcode & pts_event_pending) { - pt_event event; - errcode = pt_insn_event(&decoder, &event, sizeof(event)); - if (errcode < 0) - return errcode; - } - return 0; -} - -/// Decode all the instructions from a configured decoder. -/// The decoding flow is based on -/// https://github.com/intel/libipt/blob/master/doc/howto_libipt.md#the-instruction-flow-decode-loop -/// but with some relaxation to allow for gaps in the trace. -/// -/// Error codes returned by libipt while decoding are: -/// - negative: actual errors -/// - positive or zero: not an error, but a list of bits signaling the status of -/// the decoder -/// -/// \param[in] decoder -/// A configured libipt \a pt_insn_decoder. -/// -/// \return -/// The decoded instructions. -static std::vector -DecodeInstructions(pt_insn_decoder &decoder) { - std::vector instructions; - - while (true) { - int errcode = FindNextSynchronizationPoint(decoder); - if (errcode == -pte_eos) - break; - - if (errcode < 0) { - instructions.emplace_back(make_error(errcode)); - break; - } - - // We have synchronized, so we can start decoding - // instructions and events. - while (true) { - errcode = ProcessPTEvents(decoder, errcode); - if (errcode < 0) { - instructions.emplace_back(make_error(errcode)); - break; - } - pt_insn insn; - - errcode = pt_insn_next(&decoder, &insn, sizeof(insn)); - if (errcode == -pte_eos) - break; - - if (errcode < 0) { - instructions.emplace_back(make_error(errcode, insn.ip)); - break; - } - - uint64_t time; - int time_error = pt_insn_time(&decoder, &time, nullptr, nullptr); - if (time_error == -pte_invalid) { - // This happens if we invoke the pt_insn_time method incorrectly, - // but the instruction is good though. - instructions.emplace_back( - make_error(time_error, insn.ip)); - instructions.emplace_back(insn); - break; - } - if (time_error == -pte_no_time) { - // We simply don't have time information, i.e. None of TSC, MTC or CYC - // was enabled. - instructions.emplace_back(insn); - } else { - instructions.emplace_back(insn, time); - } - } - } - - return instructions; -} - -/// Callback used by libipt for reading the process memory. -/// -/// More information can be found in -/// https://github.com/intel/libipt/blob/master/doc/man/pt_image_set_callback.3.md -static int ReadProcessMemory(uint8_t *buffer, size_t size, - const pt_asid * /* unused */, uint64_t pc, - void *context) { - Process *process = static_cast(context); - - Status error; - int bytes_read = process->ReadMemory(pc, buffer, size, error); - if (error.Fail()) - return -pte_nomap; - return bytes_read; -} - -static Expected> -DecodeInMemoryTrace(Process &process, TraceIntelPT &trace_intel_pt, - MutableArrayRef buffer) { - Expected cpu_info = trace_intel_pt.GetCPUInfo(); - if (!cpu_info) - return cpu_info.takeError(); - - pt_config config; - pt_config_init(&config); - config.cpu = *cpu_info; - - if (int errcode = pt_cpu_errata(&config.errata, &config.cpu)) - return make_error(errcode); - - config.begin = buffer.data(); - config.end = buffer.data() + buffer.size(); - - pt_insn_decoder *decoder = pt_insn_alloc_decoder(&config); - if (!decoder) - return make_error(-pte_nomem); - - pt_image *image = pt_insn_get_image(decoder); - - int errcode = pt_image_set_callback(image, ReadProcessMemory, &process); - assert(errcode == 0); - (void)errcode; - - std::vector instructions = DecodeInstructions(*decoder); - - pt_insn_free_decoder(decoder); - return instructions; -} - -static Expected> -DecodeTraceFile(Process &process, TraceIntelPT &trace_intel_pt, - const FileSpec &trace_file, size_t &raw_trace_size) { - ErrorOr> trace_or_error = - MemoryBuffer::getFile(trace_file.GetPath()); - if (std::error_code err = trace_or_error.getError()) - return errorCodeToError(err); - - MemoryBuffer &trace = **trace_or_error; - MutableArrayRef trace_data( - // The libipt library does not modify the trace buffer, hence the - // following cast is safe. - reinterpret_cast(const_cast(trace.getBufferStart())), - trace.getBufferSize()); - raw_trace_size = trace_data.size(); - return DecodeInMemoryTrace(process, trace_intel_pt, trace_data); -} - -static Expected> -DecodeLiveThread(Thread &thread, TraceIntelPT &trace, size_t &raw_trace_size) { - Expected> buffer = - trace.GetLiveThreadBuffer(thread.GetID()); - if (!buffer) - return buffer.takeError(); - raw_trace_size = buffer->size(); - if (Expected cpu_info = trace.GetCPUInfo()) - return DecodeInMemoryTrace(*thread.GetProcess(), trace, - MutableArrayRef(*buffer)); - else - return cpu_info.takeError(); -} - -DecodedThreadSP ThreadDecoder::Decode() { - if (!m_decoded_thread.hasValue()) - m_decoded_thread = DoDecode(); - return *m_decoded_thread; -} - -PostMortemThreadDecoder::PostMortemThreadDecoder( - const lldb::ThreadPostMortemTraceSP &trace_thread, TraceIntelPT &trace) - : m_trace_thread(trace_thread), m_trace(trace) {} - -DecodedThreadSP PostMortemThreadDecoder::DoDecode() { - size_t raw_trace_size = 0; - if (Expected> instructions = - DecodeTraceFile(*m_trace_thread->GetProcess(), m_trace, - m_trace_thread->GetTraceFile(), raw_trace_size)) - return std::make_shared(m_trace_thread->shared_from_this(), - std::move(*instructions), - raw_trace_size); - else - return std::make_shared(m_trace_thread->shared_from_this(), - instructions.takeError()); -} - -LiveThreadDecoder::LiveThreadDecoder(Thread &thread, TraceIntelPT &trace) - : m_thread_sp(thread.shared_from_this()), m_trace(trace) {} - -DecodedThreadSP LiveThreadDecoder::DoDecode() { - size_t raw_trace_size = 0; - if (Expected> instructions = - DecodeLiveThread(*m_thread_sp, m_trace, raw_trace_size)) - return std::make_shared( - m_thread_sp, std::move(*instructions), raw_trace_size); - else - return std::make_shared(m_thread_sp, - instructions.takeError()); -} diff --git a/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/IntelPTDecoder.h b/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/IntelPTDecoder.h deleted file mode 100644 index e969db579e5..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/IntelPTDecoder.h +++ /dev/null @@ -1,87 +0,0 @@ -//===-- IntelPTDecoder.h --======--------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_DECODER_H -#define LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_DECODER_H - -#include "intel-pt.h" - -#include "DecodedThread.h" -#include "forward-declarations.h" -#include "lldb/Target/Process.h" -#include "lldb/Utility/FileSpec.h" - -namespace lldb_private { -namespace trace_intel_pt { - -/// Base class that handles the decoding of a thread and caches the result. -class ThreadDecoder { -public: - virtual ~ThreadDecoder() = default; - - ThreadDecoder() = default; - - /// Decode the thread and store the result internally, to avoid - /// recomputations. - /// - /// \return - /// A \a DecodedThread instance. - DecodedThreadSP Decode(); - - ThreadDecoder(const ThreadDecoder &other) = delete; - ThreadDecoder &operator=(const ThreadDecoder &other) = delete; - -protected: - /// Decode the thread. - /// - /// \return - /// A \a DecodedThread instance. - virtual DecodedThreadSP DoDecode() = 0; - - llvm::Optional m_decoded_thread; -}; - -/// Decoder implementation for \a lldb_private::ThreadPostMortemTrace, which are -/// non-live processes that come trace session files. -class PostMortemThreadDecoder : public ThreadDecoder { -public: - /// \param[in] trace_thread - /// The thread whose trace file will be decoded. - /// - /// \param[in] trace - /// The main Trace object who owns this decoder and its data. - PostMortemThreadDecoder(const lldb::ThreadPostMortemTraceSP &trace_thread, - TraceIntelPT &trace); - -private: - DecodedThreadSP DoDecode() override; - - lldb::ThreadPostMortemTraceSP m_trace_thread; - TraceIntelPT &m_trace; -}; - -class LiveThreadDecoder : public ThreadDecoder { -public: - /// \param[in] thread - /// The thread whose traces will be decoded. - /// - /// \param[in] trace - /// The main Trace object who owns this decoder and its data. - LiveThreadDecoder(Thread &thread, TraceIntelPT &trace); - -private: - DecodedThreadSP DoDecode() override; - - lldb::ThreadSP m_thread_sp; - TraceIntelPT &m_trace; -}; - -} // namespace trace_intel_pt -} // namespace lldb_private - -#endif // LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_DECODER_H diff --git a/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTSessionFileParser.cpp b/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTSessionFileParser.cpp deleted file mode 100644 index 5af7c269d0c..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTSessionFileParser.cpp +++ /dev/null @@ -1,107 +0,0 @@ -//===-- TraceIntelPTSessionFileParser.cpp ---------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TraceIntelPTSessionFileParser.h" - -#include "../common/ThreadPostMortemTrace.h" -#include "lldb/Core/Debugger.h" -#include "lldb/Target/Process.h" -#include "lldb/Target/Target.h" -#include "lldb/Target/ThreadList.h" - -using namespace lldb; -using namespace lldb_private; -using namespace lldb_private::trace_intel_pt; -using namespace llvm; - -StringRef TraceIntelPTSessionFileParser::GetSchema() { - static std::string schema; - if (schema.empty()) { - schema = TraceSessionFileParser::BuildSchema(R"({ - "type": "intel-pt", - "cpuInfo": { - "vendor": "intel" | "unknown", - "family": integer, - "model": integer, - "stepping": integer - } - })"); - } - return schema; -} - -pt_cpu TraceIntelPTSessionFileParser::ParsePTCPU( - const JSONTraceIntelPTCPUInfo &cpu_info) { - return {cpu_info.vendor.compare("intel") == 0 ? pcv_intel : pcv_unknown, - static_cast(cpu_info.family), - static_cast(cpu_info.model), - static_cast(cpu_info.stepping)}; -} - -TraceSP TraceIntelPTSessionFileParser::CreateTraceIntelPTInstance( - const pt_cpu &cpu_info, std::vector &parsed_processes) { - std::vector threads; - for (const ParsedProcess &parsed_process : parsed_processes) - threads.insert(threads.end(), parsed_process.threads.begin(), - parsed_process.threads.end()); - - TraceSP trace_instance(new TraceIntelPT(cpu_info, threads)); - for (const ParsedProcess &parsed_process : parsed_processes) - parsed_process.target_sp->SetTrace(trace_instance); - - return trace_instance; -} - -Expected TraceIntelPTSessionFileParser::Parse() { - json::Path::Root root("traceSession"); - TraceSessionFileParser::JSONTraceSession session; - if (!json::fromJSON(m_trace_session_file, session, root)) - return CreateJSONError(root, m_trace_session_file); - - if (Expected> parsed_processes = - ParseCommonSessionFile(session)) - return CreateTraceIntelPTInstance(ParsePTCPU(session.trace.cpuInfo), - *parsed_processes); - else - return parsed_processes.takeError(); -} - -namespace llvm { -namespace json { - -bool fromJSON( - const Value &value, - TraceIntelPTSessionFileParser::JSONTraceIntelPTSettings &plugin_settings, - Path path) { - ObjectMapper o(value, path); - return o && o.map("cpuInfo", plugin_settings.cpuInfo) && - fromJSON( - value, - (TraceSessionFileParser::JSONTracePluginSettings &)plugin_settings, - path); -} - -bool fromJSON(const json::Value &value, - TraceIntelPTSessionFileParser::JSONTraceIntelPTCPUInfo &cpu_info, - Path path) { - ObjectMapper o(value, path); - return o && o.map("vendor", cpu_info.vendor) && - o.map("family", cpu_info.family) && o.map("model", cpu_info.model) && - o.map("stepping", cpu_info.stepping); -} - -Value toJSON( - const TraceIntelPTSessionFileParser::JSONTraceIntelPTCPUInfo &cpu_info) { - return Value(Object{{"family", cpu_info.family}, - {"model", cpu_info.model}, - {"stepping", cpu_info.stepping}, - {"vendor", cpu_info.vendor}}); -} - -} // namespace json -} // namespace llvm diff --git a/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTSessionFileParser.h b/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTSessionFileParser.h deleted file mode 100644 index b2667a88222..00000000000 --- a/gnu/llvm/lldb/source/Plugins/Trace/intel-pt/TraceIntelPTSessionFileParser.h +++ /dev/null @@ -1,88 +0,0 @@ -//===-- TraceIntelPTSessionFileParser.h -----------------------*- C++ //-*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_TRACEINTELPTSESSIONFILEPARSER_H -#define LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_TRACEINTELPTSESSIONFILEPARSER_H - -#include "TraceIntelPT.h" - -#include "../common/TraceSessionFileParser.h" - -namespace lldb_private { -namespace trace_intel_pt { - -class TraceIntelPT; - -class TraceIntelPTSessionFileParser : public TraceSessionFileParser { -public: - struct JSONTraceIntelPTCPUInfo { - int64_t family; - int64_t model; - int64_t stepping; - std::string vendor; - }; - - struct JSONTraceIntelPTSettings - : TraceSessionFileParser::JSONTracePluginSettings { - JSONTraceIntelPTCPUInfo cpuInfo; - }; - - /// See \a TraceSessionFileParser::TraceSessionFileParser for the description - /// of these fields. - TraceIntelPTSessionFileParser(Debugger &debugger, - const llvm::json::Value &trace_session_file, - llvm::StringRef session_file_dir) - : TraceSessionFileParser(debugger, session_file_dir, GetSchema()), - m_trace_session_file(trace_session_file) {} - - /// \return - /// The JSON schema for the session data. - static llvm::StringRef GetSchema(); - - /// Parse the structured data trace session and create the corresponding \a - /// Target objects. In case of an error, no targets are created. - /// - /// \return - /// A \a lldb::TraceSP instance with the trace session data. In case of - /// errors, return a null pointer. - llvm::Expected Parse(); - - lldb::TraceSP - CreateTraceIntelPTInstance(const pt_cpu &cpu_info, - std::vector &parsed_processes); - -private: - static pt_cpu ParsePTCPU(const JSONTraceIntelPTCPUInfo &cpu_info); - - const llvm::json::Value &m_trace_session_file; -}; - -} // namespace trace_intel_pt -} // namespace lldb_private - -namespace llvm { -namespace json { - -bool fromJSON(const Value &value, - lldb_private::trace_intel_pt::TraceIntelPTSessionFileParser:: - JSONTraceIntelPTSettings &plugin_settings, - Path path); - -bool fromJSON(const llvm::json::Value &value, - lldb_private::trace_intel_pt::TraceIntelPTSessionFileParser:: - JSONTraceIntelPTCPUInfo &packet, - llvm::json::Path path); - -llvm::json::Value -toJSON(const lldb_private::trace_intel_pt::TraceIntelPTSessionFileParser:: - JSONTraceIntelPTCPUInfo &packet); - -} // namespace json -} // namespace llvm - -#endif // LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_TRACEINTELPTSESSIONFILEPARSER_H diff --git a/gnu/llvm/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp b/gnu/llvm/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp index 8e68f75020b..888dd156660 100644 --- a/gnu/llvm/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp +++ b/gnu/llvm/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp @@ -24,11 +24,12 @@ x86AssemblyInspectionEngine::x86AssemblyInspectionEngine(const ArchSpec &arch) : m_cur_insn(nullptr), m_machine_ip_regnum(LLDB_INVALID_REGNUM), m_machine_sp_regnum(LLDB_INVALID_REGNUM), m_machine_fp_regnum(LLDB_INVALID_REGNUM), + m_machine_alt_fp_regnum(LLDB_INVALID_REGNUM), m_lldb_ip_regnum(LLDB_INVALID_REGNUM), m_lldb_sp_regnum(LLDB_INVALID_REGNUM), m_lldb_fp_regnum(LLDB_INVALID_REGNUM), - - m_reg_map(), m_arch(arch), m_cpu(k_cpu_unspecified), m_wordsize(-1), + m_lldb_alt_fp_regnum(LLDB_INVALID_REGNUM), m_reg_map(), m_arch(arch), + m_cpu(k_cpu_unspecified), m_wordsize(-1), m_register_map_initialized(false), m_disasm_context() { m_disasm_context = ::LLVMCreateDisasm(arch.GetTriple().getTriple().c_str(), nullptr, @@ -681,10 +682,6 @@ bool x86AssemblyInspectionEngine::jmp_to_reg_p() { // The second byte is a ModR/M /4 byte, strip off the registers uint8_t second_byte_sans_reg = *(m_cur_insn + 1) & ~7; - // Don't handle 0x24 disp32, because the target address is - // knowable statically - pc_rel_branch_or_jump_p() will - // return the target address. - // [reg] if (second_byte_sans_reg == 0x20) return true; @@ -701,17 +698,6 @@ bool x86AssemblyInspectionEngine::jmp_to_reg_p() { if (second_byte_sans_reg == 0xe0) return true; - // disp32 - // jumps to an address stored in memory, the value can't be cached - // in an unwind plan. - if (second_byte_sans_reg == 0x24) - return true; - - // use SIB byte - // ff 24 fe jmpq *(%rsi,%rdi,8) - if (second_byte_sans_reg == 0x24) - return true; - return false; } @@ -977,9 +963,9 @@ bool x86AssemblyInspectionEngine::GetNonCallSiteUnwindPlanFromAssembly( // path jumps over the mid-function epilogue UnwindPlan::RowSP prologue_completed_row; // copy of prologue row of CFI - int prologue_completed_sp_bytes_offset_from_cfa; // The sp value before the + int prologue_completed_sp_bytes_offset_from_cfa = 0; // The sp value before the // epilogue started executed - bool prologue_completed_is_aligned; + bool prologue_completed_is_aligned = false; std::vector prologue_completed_saved_registers; while (current_func_text_offset < size) { diff --git a/gnu/llvm/lldb/source/Target/TraceInstructionDumper.cpp b/gnu/llvm/lldb/source/Target/TraceInstructionDumper.cpp deleted file mode 100644 index dc1e86481c3..00000000000 --- a/gnu/llvm/lldb/source/Target/TraceInstructionDumper.cpp +++ /dev/null @@ -1,292 +0,0 @@ -//===-- TraceInstructionDumper.cpp ----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/TraceInstructionDumper.h" - -#include "lldb/Core/Module.h" -#include "lldb/Symbol/Function.h" -#include "lldb/Target/ExecutionContext.h" -#include "lldb/Target/Process.h" -#include "lldb/Target/SectionLoadList.h" - -using namespace lldb; -using namespace lldb_private; -using namespace llvm; - -TraceInstructionDumper::TraceInstructionDumper(lldb::TraceCursorUP &&cursor_up, - int initial_index, bool raw, - bool show_tsc) - : m_cursor_up(std::move(cursor_up)), m_index(initial_index), m_raw(raw), - m_show_tsc(show_tsc) {} - -/// \return -/// Return \b true if the cursor could move one step. -bool TraceInstructionDumper::TryMoveOneStep() { - if (!m_cursor_up->Next()) { - SetNoMoreData(); - return false; - } - m_index += m_cursor_up->IsForwards() ? 1 : -1; - return true; -} - -/// \return -/// The number of characters that would be needed to print the given -/// integer. -static int GetNumberOfChars(int num) { - if (num == 0) - return 1; - return (num < 0 ? 1 : 0) + static_cast(log10(abs(num))) + 1; -} - -/// Helper struct that holds symbol, disassembly and address information of an -/// instruction. -struct InstructionSymbolInfo { - SymbolContext sc; - Address address; - lldb::addr_t load_address; - lldb::DisassemblerSP disassembler; - lldb::InstructionSP instruction; - lldb_private::ExecutionContext exe_ctx; -}; - -// This custom LineEntry validator is neded because some line_entries have -// 0 as line, which is meaningless. Notice that LineEntry::IsValid only -// checks that line is not LLDB_INVALID_LINE_NUMBER, i.e. UINT32_MAX. -static bool IsLineEntryValid(const LineEntry &line_entry) { - return line_entry.IsValid() && line_entry.line > 0; -} - -/// \return -/// \b true if the provided line entries match line, column and source file. -/// This function assumes that the line entries are valid. -static bool FileLineAndColumnMatches(const LineEntry &a, const LineEntry &b) { - if (a.line != b.line) - return false; - if (a.column != b.column) - return false; - return a.file == b.file; -} - -/// Compare the symbol contexts of the provided \a InstructionSymbolInfo -/// objects. -/// -/// \return -/// \a true if both instructions belong to the same scope level analized -/// in the following order: -/// - module -/// - symbol -/// - function -/// - line -static bool -IsSameInstructionSymbolContext(const InstructionSymbolInfo &prev_insn, - const InstructionSymbolInfo &insn) { - // module checks - if (insn.sc.module_sp != prev_insn.sc.module_sp) - return false; - - // symbol checks - if (insn.sc.symbol != prev_insn.sc.symbol) - return false; - - // function checks - if (!insn.sc.function && !prev_insn.sc.function) - return true; - else if (insn.sc.function != prev_insn.sc.function) - return false; - - // line entry checks - const bool curr_line_valid = IsLineEntryValid(insn.sc.line_entry); - const bool prev_line_valid = IsLineEntryValid(prev_insn.sc.line_entry); - if (curr_line_valid && prev_line_valid) - return FileLineAndColumnMatches(insn.sc.line_entry, - prev_insn.sc.line_entry); - return curr_line_valid == prev_line_valid; -} - -/// Dump the symbol context of the given instruction address if it's different -/// from the symbol context of the previous instruction in the trace. -/// -/// \param[in] prev_sc -/// The symbol context of the previous instruction in the trace. -/// -/// \param[in] address -/// The address whose symbol information will be dumped. -/// -/// \return -/// The symbol context of the current address, which might differ from the -/// previous one. -static void -DumpInstructionSymbolContext(Stream &s, - Optional prev_insn, - InstructionSymbolInfo &insn) { - if (prev_insn && IsSameInstructionSymbolContext(*prev_insn, insn)) - return; - - s.Printf(" "); - - if (!insn.sc.module_sp) - s.Printf("(none)"); - else if (!insn.sc.function && !insn.sc.symbol) - s.Printf("%s`(none)", - insn.sc.module_sp->GetFileSpec().GetFilename().AsCString()); - else - insn.sc.DumpStopContext(&s, insn.exe_ctx.GetTargetPtr(), insn.address, - /*show_fullpath=*/false, - /*show_module=*/true, /*show_inlined_frames=*/false, - /*show_function_arguments=*/true, - /*show_function_name=*/true); - s.Printf("\n"); -} - -static void DumpInstructionDisassembly(Stream &s, InstructionSymbolInfo &insn) { - if (!insn.instruction) - return; - s.Printf(" "); - insn.instruction->Dump(&s, /*show_address=*/false, /*show_bytes=*/false, - /*max_opcode_byte_size=*/0, &insn.exe_ctx, &insn.sc, - /*prev_sym_ctx=*/nullptr, - /*disassembly_addr_format=*/nullptr, - /*max_address_text_size=*/0); -} - -void TraceInstructionDumper::SetNoMoreData() { m_no_more_data = true; } - -bool TraceInstructionDumper::HasMoreData() { return !m_no_more_data; } - -void TraceInstructionDumper::DumpInstructions(Stream &s, size_t count) { - ThreadSP thread_sp = m_cursor_up->GetExecutionContextRef().GetThreadSP(); - if (!thread_sp) { - s.Printf("invalid thread"); - return; - } - - s.Printf("thread #%u: tid = %" PRIu64 "\n", thread_sp->GetIndexID(), - thread_sp->GetID()); - - int digits_count = GetNumberOfChars( - m_cursor_up->IsForwards() ? m_index + count - 1 : m_index - count + 1); - bool was_prev_instruction_an_error = false; - - auto printMissingInstructionsMessage = [&]() { - s.Printf(" ...missing instructions\n"); - }; - - auto printInstructionIndex = [&]() { - s.Printf(" [%*d] ", digits_count, m_index); - - if (m_show_tsc) { - s.Printf("[tsc="); - - if (Optional timestamp = m_cursor_up->GetTimestampCounter()) - s.Printf("0x%016" PRIx64, *timestamp); - else - s.Printf("unavailable"); - - s.Printf("] "); - } - }; - - InstructionSymbolInfo prev_insn_info; - - Target &target = thread_sp->GetProcess()->GetTarget(); - ExecutionContext exe_ctx; - target.CalculateExecutionContext(exe_ctx); - const ArchSpec &arch = target.GetArchitecture(); - - // Find the symbol context for the given address reusing the previous - // instruction's symbol context when possible. - auto calculateSymbolContext = [&](const Address &address) { - AddressRange range; - if (prev_insn_info.sc.GetAddressRange(eSymbolContextEverything, 0, - /*inline_block_range*/ false, - range) && - range.Contains(address)) - return prev_insn_info.sc; - - SymbolContext sc; - address.CalculateSymbolContext(&sc, eSymbolContextEverything); - return sc; - }; - - // Find the disassembler for the given address reusing the previous - // instruction's disassembler when possible. - auto calculateDisass = [&](const Address &address, const SymbolContext &sc) { - if (prev_insn_info.disassembler) { - if (InstructionSP instruction = - prev_insn_info.disassembler->GetInstructionList() - .GetInstructionAtAddress(address)) - return std::make_tuple(prev_insn_info.disassembler, instruction); - } - - if (sc.function) { - if (DisassemblerSP disassembler = - sc.function->GetInstructions(exe_ctx, nullptr)) { - if (InstructionSP instruction = - disassembler->GetInstructionList().GetInstructionAtAddress( - address)) - return std::make_tuple(disassembler, instruction); - } - } - // We fallback to a single instruction disassembler - AddressRange range(address, arch.GetMaximumOpcodeByteSize()); - DisassemblerSP disassembler = - Disassembler::DisassembleRange(arch, /*plugin_name*/ nullptr, - /*flavor*/ nullptr, target, range); - return std::make_tuple(disassembler, - disassembler ? disassembler->GetInstructionList() - .GetInstructionAtAddress(address) - : InstructionSP()); - }; - - for (size_t i = 0; i < count; i++) { - if (!HasMoreData()) { - s.Printf(" no more data\n"); - break; - } - - if (Error err = m_cursor_up->GetError()) { - if (!m_cursor_up->IsForwards() && !was_prev_instruction_an_error) - printMissingInstructionsMessage(); - - was_prev_instruction_an_error = true; - - printInstructionIndex(); - s << toString(std::move(err)); - } else { - if (m_cursor_up->IsForwards() && was_prev_instruction_an_error) - printMissingInstructionsMessage(); - - was_prev_instruction_an_error = false; - - InstructionSymbolInfo insn_info; - - if (!m_raw) { - insn_info.load_address = m_cursor_up->GetLoadAddress(); - insn_info.exe_ctx = exe_ctx; - insn_info.address.SetLoadAddress(insn_info.load_address, &target); - insn_info.sc = calculateSymbolContext(insn_info.address); - std::tie(insn_info.disassembler, insn_info.instruction) = - calculateDisass(insn_info.address, insn_info.sc); - - DumpInstructionSymbolContext(s, prev_insn_info, insn_info); - } - - printInstructionIndex(); - s.Printf("0x%016" PRIx64, m_cursor_up->GetLoadAddress()); - - if (!m_raw) - DumpInstructionDisassembly(s, insn_info); - - prev_insn_info = insn_info; - } - - s.Printf("\n"); - TryMoveOneStep(); - } -} diff --git a/gnu/llvm/lldb/source/Target/UnixSignals.cpp b/gnu/llvm/lldb/source/Target/UnixSignals.cpp index 003d60debc0..652e2bbb07d 100644 --- a/gnu/llvm/lldb/source/Target/UnixSignals.cpp +++ b/gnu/llvm/lldb/source/Target/UnixSignals.cpp @@ -13,17 +13,20 @@ #include "Plugins/Process/Utility/NetBSDSignals.h" #include "Plugins/Process/Utility/OpenBSDSignals.h" #include "lldb/Host/HostInfo.h" -#include "lldb/Host/StringConvert.h" #include "lldb/Utility/ArchSpec.h" +#include using namespace lldb_private; +using namespace llvm; UnixSignals::Signal::Signal(const char *name, bool default_suppress, bool default_stop, bool default_notify, const char *description, const char *alias) : m_name(name), m_alias(alias), m_description(), m_suppress(default_suppress), m_stop(default_stop), - m_notify(default_notify) { + m_notify(default_notify), + m_default_suppress(default_suppress), m_default_stop(default_stop), + m_default_notify(default_notify) { if (description) m_description.assign(description); } @@ -158,9 +161,8 @@ int32_t UnixSignals::GetSignalNumberFromName(const char *name) const { return pos->first; } - const int32_t signo = - StringConvert::ToSInt32(name, LLDB_INVALID_SIGNAL_NUMBER, 0); - if (signo != LLDB_INVALID_SIGNAL_NUMBER) + int32_t signo; + if (llvm::to_integer(name, signo)) return signo; return LLDB_INVALID_SIGNAL_NUMBER; } @@ -286,9 +288,9 @@ int32_t UnixSignals::GetSignalAtIndex(int32_t index) const { uint64_t UnixSignals::GetVersion() const { return m_version; } std::vector -UnixSignals::GetFilteredSignals(llvm::Optional should_suppress, - llvm::Optional should_stop, - llvm::Optional should_notify) { +UnixSignals::GetFilteredSignals(std::optional should_suppress, + std::optional should_stop, + std::optional should_notify) { std::vector result; for (int32_t signo = GetFirstSignalNumber(); signo != LLDB_INVALID_SIGNAL_NUMBER; @@ -301,14 +303,13 @@ UnixSignals::GetFilteredSignals(llvm::Optional should_suppress, // If any of filtering conditions are not met, we move on to the next // signal. - if (should_suppress.hasValue() && - signal_suppress != should_suppress.getValue()) + if (should_suppress && signal_suppress != *should_suppress) continue; - if (should_stop.hasValue() && signal_stop != should_stop.getValue()) + if (should_stop && signal_stop != *should_stop) continue; - if (should_notify.hasValue() && signal_notify != should_notify.getValue()) + if (should_notify && signal_notify != *should_notify) continue; result.push_back(signo); @@ -316,3 +317,40 @@ UnixSignals::GetFilteredSignals(llvm::Optional should_suppress, return result; } + +void UnixSignals::IncrementSignalHitCount(int signo) { + collection::iterator pos = m_signals.find(signo); + if (pos != m_signals.end()) + pos->second.m_hit_count += 1; +} + +json::Value UnixSignals::GetHitCountStatistics() const { + json::Array json_signals; + for (const auto &pair: m_signals) { + if (pair.second.m_hit_count > 0) + json_signals.emplace_back(json::Object{ + { pair.second.m_name.GetCString(), pair.second.m_hit_count } + }); + } + return std::move(json_signals); +} + +void UnixSignals::Signal::Reset(bool reset_stop, bool reset_notify, + bool reset_suppress) { + if (reset_stop) + m_stop = m_default_stop; + if (reset_notify) + m_notify = m_default_notify; + if (reset_suppress) + m_suppress = m_default_suppress; +} + +bool UnixSignals::ResetSignal(int32_t signo, bool reset_stop, + bool reset_notify, bool reset_suppress) { + auto elem = m_signals.find(signo); + if (elem == m_signals.end()) + return false; + (*elem).second.Reset(reset_stop, reset_notify, reset_suppress); + return true; +} + diff --git a/gnu/llvm/lldb/source/Utility/ArchSpec.cpp b/gnu/llvm/lldb/source/Utility/ArchSpec.cpp index f2d8f857e9b..6d9fb786dd8 100644 --- a/gnu/llvm/lldb/source/Utility/ArchSpec.cpp +++ b/gnu/llvm/lldb/source/Utility/ArchSpec.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #include "lldb/Utility/ArchSpec.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Log.h" #include "lldb/Utility/StringList.h" @@ -15,6 +16,7 @@ #include "llvm/BinaryFormat/COFF.h" #include "llvm/BinaryFormat/ELF.h" #include "llvm/BinaryFormat/MachO.h" +#include "llvm/Support/ARMTargetParser.h" #include "llvm/Support/Compiler.h" using namespace lldb; @@ -221,6 +223,11 @@ static const CoreDefinition g_core_definitions[] = { {eByteOrderLittle, 8, 2, 4, llvm::Triple::riscv64, ArchSpec::eCore_riscv64, "riscv64"}, + {eByteOrderLittle, 4, 4, 4, llvm::Triple::loongarch32, + ArchSpec::eCore_loongarch32, "loongarch32"}, + {eByteOrderLittle, 8, 4, 4, llvm::Triple::loongarch64, + ArchSpec::eCore_loongarch64, "loongarch64"}, + {eByteOrderLittle, 4, 4, 4, llvm::Triple::UnknownArch, ArchSpec::eCore_uknownMach32, "unknown-mach-32"}, {eByteOrderLittle, 8, 4, 4, llvm::Triple::UnknownArch, @@ -256,13 +263,13 @@ struct ArchDefinition { }; void ArchSpec::ListSupportedArchNames(StringList &list) { - for (uint32_t i = 0; i < llvm::array_lengthof(g_core_definitions); ++i) - list.AppendString(g_core_definitions[i].name); + for (const auto &def : g_core_definitions) + list.AppendString(def.name); } void ArchSpec::AutoComplete(CompletionRequest &request) { - for (uint32_t i = 0; i < llvm::array_lengthof(g_core_definitions); ++i) - request.TryCompleteCurrentArg(g_core_definitions[i].name); + for (const auto &def : g_core_definitions) + request.TryCompleteCurrentArg(def.name); } #define CPU_ANY (UINT32_MAX) @@ -341,9 +348,9 @@ static const ArchDefinitionEntry g_macho_arch_entries[] = { {ArchSpec::eCore_uknownMach64, llvm::MachO::CPU_ARCH_ABI64, 0, 0xFF000000u, 0x00000000u}}; // clang-format on -static const ArchDefinition g_macho_arch_def = { - eArchTypeMachO, llvm::array_lengthof(g_macho_arch_entries), - g_macho_arch_entries, "mach-o"}; +static const ArchDefinition g_macho_arch_def = {eArchTypeMachO, + std::size(g_macho_arch_entries), + g_macho_arch_entries, "mach-o"}; //===----------------------------------------------------------------------===// // A table that gets searched linearly for matches. This table is used to @@ -359,10 +366,10 @@ static const ArchDefinitionEntry g_elf_arch_entries[] = { 0xFFFFFFFFu, 0xFFFFFFFFu}, // Intel MCU // FIXME: is this correct? {ArchSpec::eCore_ppc_generic, llvm::ELF::EM_PPC, LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu}, // PowerPC - {ArchSpec::eCore_ppc64le_generic, llvm::ELF::EM_PPC64, LLDB_INVALID_CPUTYPE, - 0xFFFFFFFFu, 0xFFFFFFFFu}, // PowerPC64le - {ArchSpec::eCore_ppc64_generic, llvm::ELF::EM_PPC64, LLDB_INVALID_CPUTYPE, - 0xFFFFFFFFu, 0xFFFFFFFFu}, // PowerPC64 + {ArchSpec::eCore_ppc64le_generic, llvm::ELF::EM_PPC64, + ArchSpec::eCore_ppc64le_generic, 0xFFFFFFFFu, 0xFFFFFFFFu}, // PowerPC64le + {ArchSpec::eCore_ppc64_generic, llvm::ELF::EM_PPC64, + ArchSpec::eCore_ppc64_generic, 0xFFFFFFFFu, 0xFFFFFFFFu}, // PowerPC64 {ArchSpec::eCore_arm_generic, llvm::ELF::EM_ARM, LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu}, // ARM {ArchSpec::eCore_arm_aarch64, llvm::ELF::EM_AARCH64, LLDB_INVALID_CPUTYPE, @@ -401,17 +408,23 @@ static const ArchDefinitionEntry g_elf_arch_entries[] = { LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu}, // HEXAGON {ArchSpec::eCore_arc, llvm::ELF::EM_ARC_COMPACT2, LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu}, // ARC - {ArchSpec::eCore_avr, llvm::ELF::EM_AVR, LLDB_INVALID_CPUTYPE, - 0xFFFFFFFFu, 0xFFFFFFFFu}, // AVR + {ArchSpec::eCore_avr, llvm::ELF::EM_AVR, LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, + 0xFFFFFFFFu}, // AVR {ArchSpec::eCore_riscv32, llvm::ELF::EM_RISCV, ArchSpec::eRISCVSubType_riscv32, 0xFFFFFFFFu, 0xFFFFFFFFu}, // riscv32 {ArchSpec::eCore_riscv64, llvm::ELF::EM_RISCV, ArchSpec::eRISCVSubType_riscv64, 0xFFFFFFFFu, 0xFFFFFFFFu}, // riscv64 + {ArchSpec::eCore_loongarch32, llvm::ELF::EM_LOONGARCH, + ArchSpec::eLoongArchSubType_loongarch32, 0xFFFFFFFFu, + 0xFFFFFFFFu}, // loongarch32 + {ArchSpec::eCore_loongarch64, llvm::ELF::EM_LOONGARCH, + ArchSpec::eLoongArchSubType_loongarch64, 0xFFFFFFFFu, + 0xFFFFFFFFu}, // loongarch64 }; static const ArchDefinition g_elf_arch_def = { eArchTypeELF, - llvm::array_lengthof(g_elf_arch_entries), + std::size(g_elf_arch_entries), g_elf_arch_entries, "elf", }; @@ -437,7 +450,7 @@ static const ArchDefinitionEntry g_coff_arch_entries[] = { static const ArchDefinition g_coff_arch_def = { eArchTypeCOFF, - llvm::array_lengthof(g_coff_arch_entries), + std::size(g_coff_arch_entries), g_coff_arch_entries, "pe-coff", }; @@ -447,16 +460,12 @@ static const ArchDefinition g_coff_arch_def = { static const ArchDefinition *g_arch_definitions[] = { &g_macho_arch_def, &g_elf_arch_def, &g_coff_arch_def}; -static const size_t k_num_arch_definitions = - llvm::array_lengthof(g_arch_definitions); - //===----------------------------------------------------------------------===// // Static helper functions. // Get the architecture definition for a given object type. static const ArchDefinition *FindArchDefinition(ArchitectureType arch_type) { - for (unsigned int i = 0; i < k_num_arch_definitions; ++i) { - const ArchDefinition *def = g_arch_definitions[i]; + for (const ArchDefinition *def : g_arch_definitions) { if (def->type == arch_type) return def; } @@ -465,15 +474,15 @@ static const ArchDefinition *FindArchDefinition(ArchitectureType arch_type) { // Get an architecture definition by name. static const CoreDefinition *FindCoreDefinition(llvm::StringRef name) { - for (unsigned int i = 0; i < llvm::array_lengthof(g_core_definitions); ++i) { - if (name.equals_insensitive(g_core_definitions[i].name)) - return &g_core_definitions[i]; + for (const auto &def : g_core_definitions) { + if (name.equals_insensitive(def.name)) + return &def; } return nullptr; } static inline const CoreDefinition *FindCoreDefinition(ArchSpec::Core core) { - if (core < llvm::array_lengthof(g_core_definitions)) + if (core < std::size(g_core_definitions)) return &g_core_definitions[core]; return nullptr; } @@ -584,7 +593,6 @@ void ArchSpec::SetFlags(const std::string &elf_abi) { std::string ArchSpec::GetClangTargetCPU() const { std::string cpu; - if (IsMIPS()) { switch (m_core) { case ArchSpec::eCore_mips32: @@ -631,6 +639,9 @@ std::string ArchSpec::GetClangTargetCPU() const { break; } } + + if (GetTriple().isARM()) + cpu = llvm::ARM::getARMCPUForArch(GetTriple(), "").str(); return cpu; } @@ -904,7 +915,7 @@ bool ArchSpec::SetArchitecture(ArchitectureType arch_type, uint32_t cpu, m_triple.setArch(core_def->machine); } } else { - Log *log(lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_TARGET | LIBLLDB_LOG_PROCESS | LIBLLDB_LOG_PLATFORM)); + Log *log(GetLog(LLDBLog::Target | LLDBLog::Process | LLDBLog::Platform)); LLDB_LOGF(log, "Unable to find a core definition for cpu 0x%" PRIx32 " sub %" PRId32, @@ -929,14 +940,6 @@ uint32_t ArchSpec::GetMaximumOpcodeByteSize() const { return 0; } -bool ArchSpec::IsExactMatch(const ArchSpec &rhs) const { - return IsEqualTo(rhs, true); -} - -bool ArchSpec::IsCompatibleMatch(const ArchSpec &rhs) const { - return IsEqualTo(rhs, false); -} - static bool IsCompatibleEnvironment(llvm::Triple::EnvironmentType lhs, llvm::Triple::EnvironmentType rhs) { if (lhs == rhs) @@ -968,11 +971,11 @@ static bool IsCompatibleEnvironment(llvm::Triple::EnvironmentType lhs, return false; } -bool ArchSpec::IsEqualTo(const ArchSpec &rhs, bool exact_match) const { +bool ArchSpec::IsMatch(const ArchSpec &rhs, MatchType match) const { // explicitly ignoring m_distribution_id in this method. if (GetByteOrder() != rhs.GetByteOrder() || - !cores_match(GetCore(), rhs.GetCore(), true, exact_match)) + !cores_match(GetCore(), rhs.GetCore(), true, match == ExactMatch)) return false; const llvm::Triple &lhs_triple = GetTriple(); @@ -980,7 +983,16 @@ bool ArchSpec::IsEqualTo(const ArchSpec &rhs, bool exact_match) const { const llvm::Triple::VendorType lhs_triple_vendor = lhs_triple.getVendor(); const llvm::Triple::VendorType rhs_triple_vendor = rhs_triple.getVendor(); - if (lhs_triple_vendor != rhs_triple_vendor) { + + const llvm::Triple::OSType lhs_triple_os = lhs_triple.getOS(); + const llvm::Triple::OSType rhs_triple_os = rhs_triple.getOS(); + + bool both_windows = lhs_triple.isOSWindows() && rhs_triple.isOSWindows(); + + // On Windows, the vendor field doesn't have any practical effect, but + // it is often set to either "pc" or "w64". + if ((lhs_triple_vendor != rhs_triple_vendor) && + (match == ExactMatch || !both_windows)) { const bool rhs_vendor_specified = rhs.TripleVendorWasSpecified(); const bool lhs_vendor_specified = TripleVendorWasSpecified(); // Both architectures had the vendor specified, so if they aren't equal @@ -994,14 +1006,12 @@ bool ArchSpec::IsEqualTo(const ArchSpec &rhs, bool exact_match) const { return false; } - const llvm::Triple::OSType lhs_triple_os = lhs_triple.getOS(); - const llvm::Triple::OSType rhs_triple_os = rhs_triple.getOS(); const llvm::Triple::EnvironmentType lhs_triple_env = lhs_triple.getEnvironment(); const llvm::Triple::EnvironmentType rhs_triple_env = rhs_triple.getEnvironment(); - if (!exact_match) { + if (match == CompatibleMatch) { // x86_64-apple-ios-macabi, x86_64-apple-macosx are compatible, no match. if ((lhs_triple_os == llvm::Triple::IOS && lhs_triple_env == llvm::Triple::MacABI && @@ -1028,11 +1038,15 @@ bool ArchSpec::IsEqualTo(const ArchSpec &rhs, bool exact_match) const { return false; // If the pair of os+env is both unspecified, match any other os+env combo. - if (!exact_match && ((!lhs_os_specified && !lhs_triple.hasEnvironment()) || - (!rhs_os_specified && !rhs_triple.hasEnvironment()))) + if (match == CompatibleMatch && + ((!lhs_os_specified && !lhs_triple.hasEnvironment()) || + (!rhs_os_specified && !rhs_triple.hasEnvironment()))) return true; } + if (match == CompatibleMatch && both_windows) + return true; // The Windows environments (MSVC vs GNU) are compatible + return IsCompatibleEnvironment(lhs_triple_env, rhs_triple_env); } @@ -1081,7 +1095,7 @@ static bool cores_match(const ArchSpec::Core core1, const ArchSpec::Core core2, case ArchSpec::eCore_arm_generic: if (enforce_exact_match) break; - LLVM_FALLTHROUGH; + [[fallthrough]]; case ArchSpec::kCore_arm_any: if (core2 >= ArchSpec::kCore_arm_first && core2 <= ArchSpec::kCore_arm_last) return true; @@ -1405,23 +1419,18 @@ bool lldb_private::operator==(const ArchSpec &lhs, const ArchSpec &rhs) { } bool ArchSpec::IsFullySpecifiedTriple() const { - const auto &user_specified_triple = GetTriple(); - - bool user_triple_fully_specified = false; - - if ((user_specified_triple.getOS() != llvm::Triple::UnknownOS) || - TripleOSWasSpecified()) { - if ((user_specified_triple.getVendor() != llvm::Triple::UnknownVendor) || - TripleVendorWasSpecified()) { - const unsigned unspecified = 0; - if (!user_specified_triple.isOSDarwin() || - user_specified_triple.getOSMajorVersion() != unspecified) { - user_triple_fully_specified = true; - } - } - } + if (!TripleOSWasSpecified()) + return false; + + if (!TripleVendorWasSpecified()) + return false; - return user_triple_fully_specified; + const unsigned unspecified = 0; + const llvm::Triple &triple = GetTriple(); + if (triple.isOSDarwin() && triple.getOSMajorVersion() == unspecified) + return false; + + return true; } void ArchSpec::PiecewiseTripleCompare( @@ -1482,15 +1491,3 @@ void ArchSpec::DumpTriple(llvm::raw_ostream &s) const { if (!environ_str.empty()) s << "-" << environ_str; } - -void llvm::yaml::ScalarTraits::output(const ArchSpec &Val, void *, - raw_ostream &Out) { - Val.DumpTriple(Out); -} - -llvm::StringRef -llvm::yaml::ScalarTraits::input(llvm::StringRef Scalar, void *, - ArchSpec &Val) { - Val = ArchSpec(Scalar); - return {}; -} diff --git a/gnu/llvm/lldb/source/Utility/Logging.cpp b/gnu/llvm/lldb/source/Utility/Logging.cpp deleted file mode 100644 index 4648bec502c..00000000000 --- a/gnu/llvm/lldb/source/Utility/Logging.cpp +++ /dev/null @@ -1,64 +0,0 @@ -//===-- Logging.cpp -------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/Logging.h" -#include "lldb/Utility/Log.h" - -#include "llvm/ADT/ArrayRef.h" - -#include - -using namespace lldb_private; - -static constexpr Log::Category g_categories[] = { - {{"api"}, {"log API calls and return values"}, LIBLLDB_LOG_API}, - {{"ast"}, {"log AST"}, LIBLLDB_LOG_AST}, - {{"break"}, {"log breakpoints"}, LIBLLDB_LOG_BREAKPOINTS}, - {{"commands"}, {"log command argument parsing"}, LIBLLDB_LOG_COMMANDS}, - {{"comm"}, {"log communication activities"}, LIBLLDB_LOG_COMMUNICATION}, - {{"conn"}, {"log connection details"}, LIBLLDB_LOG_CONNECTION}, - {{"demangle"}, {"log mangled names to catch demangler crashes"}, LIBLLDB_LOG_DEMANGLE}, - {{"dyld"}, {"log shared library related activities"}, LIBLLDB_LOG_DYNAMIC_LOADER}, - {{"event"}, {"log broadcaster, listener and event queue activities"}, LIBLLDB_LOG_EVENTS}, - {{"expr"}, {"log expressions"}, LIBLLDB_LOG_EXPRESSIONS}, - {{"formatters"}, {"log data formatters related activities"}, LIBLLDB_LOG_DATAFORMATTERS}, - {{"host"}, {"log host activities"}, LIBLLDB_LOG_HOST}, - {{"jit"}, {"log JIT events in the target"}, LIBLLDB_LOG_JIT_LOADER}, - {{"language"}, {"log language runtime events"}, LIBLLDB_LOG_LANGUAGE}, - {{"mmap"}, {"log mmap related activities"}, LIBLLDB_LOG_MMAP}, - {{"module"}, {"log module activities such as when modules are created, destroyed, replaced, and more"}, LIBLLDB_LOG_MODULES}, - {{"object"}, {"log object construction/destruction for important objects"}, LIBLLDB_LOG_OBJECT}, - {{"os"}, {"log OperatingSystem plugin related activities"}, LIBLLDB_LOG_OS}, - {{"platform"}, {"log platform events and activities"}, LIBLLDB_LOG_PLATFORM}, - {{"process"}, {"log process events and activities"}, LIBLLDB_LOG_PROCESS}, - {{"script"}, {"log events about the script interpreter"}, LIBLLDB_LOG_SCRIPT}, - {{"state"}, {"log private and public process state changes"}, LIBLLDB_LOG_STATE}, - {{"step"}, {"log step related activities"}, LIBLLDB_LOG_STEP}, - {{"symbol"}, {"log symbol related issues and warnings"}, LIBLLDB_LOG_SYMBOLS}, - {{"system-runtime"}, {"log system runtime events"}, LIBLLDB_LOG_SYSTEM_RUNTIME}, - {{"target"}, {"log target events and activities"}, LIBLLDB_LOG_TARGET}, - {{"temp"}, {"log internal temporary debug messages"}, LIBLLDB_LOG_TEMPORARY}, - {{"thread"}, {"log thread events and activities"}, LIBLLDB_LOG_THREAD}, - {{"types"}, {"log type system related activities"}, LIBLLDB_LOG_TYPES}, - {{"unwind"}, {"log stack unwind activities"}, LIBLLDB_LOG_UNWIND}, - {{"watch"}, {"log watchpoint related activities"}, LIBLLDB_LOG_WATCHPOINTS}, -}; - -static Log::Channel g_log_channel(g_categories, LIBLLDB_LOG_DEFAULT); - -void lldb_private::InitializeLldbChannel() { - Log::Register("lldb", g_log_channel); -} - -Log *lldb_private::GetLogIfAllCategoriesSet(uint32_t mask) { - return g_log_channel.GetLogIfAll(mask); -} - -Log *lldb_private::GetLogIfAnyCategoriesSet(uint32_t mask) { - return g_log_channel.GetLogIfAny(mask); -} diff --git a/gnu/llvm/lldb/source/Utility/Reproducer.cpp b/gnu/llvm/lldb/source/Utility/Reproducer.cpp deleted file mode 100644 index b63863c535f..00000000000 --- a/gnu/llvm/lldb/source/Utility/Reproducer.cpp +++ /dev/null @@ -1,402 +0,0 @@ -//===-- Reproducer.cpp ----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/Reproducer.h" -#include "lldb/Utility/LLDBAssert.h" -#include "lldb/Utility/ReproducerProvider.h" -#include "lldb/Utility/Timer.h" - -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/Threading.h" -#include "llvm/Support/raw_ostream.h" - -using namespace lldb_private; -using namespace lldb_private::repro; -using namespace llvm; -using namespace llvm::yaml; - -Reproducer &Reproducer::Instance() { return *InstanceImpl(); } - -llvm::Error Reproducer::Initialize(ReproducerMode mode, - llvm::Optional root) { - lldbassert(!InstanceImpl() && "Already initialized."); - InstanceImpl().emplace(); - - switch (mode) { - case ReproducerMode::Capture: { - if (!root) { - SmallString<128> repro_dir; - auto ec = sys::fs::createUniqueDirectory("reproducer", repro_dir); - if (ec) - return make_error( - "unable to create unique reproducer directory", ec); - root.emplace(repro_dir); - } else { - auto ec = sys::fs::create_directory(root->GetPath()); - if (ec) - return make_error("unable to create reproducer directory", - ec); - } - return Instance().SetCapture(root); - } break; - case ReproducerMode::Replay: - return Instance().SetReplay(root, /*passive*/ false); - case ReproducerMode::PassiveReplay: - return Instance().SetReplay(root, /*passive*/ true); - case ReproducerMode::Off: - break; - }; - - return Error::success(); -} - -void Reproducer::Initialize() { - llvm::cantFail(Initialize(repro::ReproducerMode::Off, llvm::None)); -} - -bool Reproducer::Initialized() { return InstanceImpl().operator bool(); } - -void Reproducer::Terminate() { - lldbassert(InstanceImpl() && "Already terminated."); - InstanceImpl().reset(); -} - -Optional &Reproducer::InstanceImpl() { - static Optional g_reproducer; - return g_reproducer; -} - -const Generator *Reproducer::GetGenerator() const { - std::lock_guard guard(m_mutex); - if (m_generator) - return &(*m_generator); - return nullptr; -} - -const Loader *Reproducer::GetLoader() const { - std::lock_guard guard(m_mutex); - if (m_loader) - return &(*m_loader); - return nullptr; -} - -Generator *Reproducer::GetGenerator() { - std::lock_guard guard(m_mutex); - if (m_generator) - return &(*m_generator); - return nullptr; -} - -Loader *Reproducer::GetLoader() { - std::lock_guard guard(m_mutex); - if (m_loader) - return &(*m_loader); - return nullptr; -} - -llvm::Error Reproducer::SetCapture(llvm::Optional root) { - std::lock_guard guard(m_mutex); - - if (root && m_loader) - return make_error( - "cannot generate a reproducer when replay one", - inconvertibleErrorCode()); - - if (!root) { - m_generator.reset(); - return Error::success(); - } - - m_generator.emplace(*root); - return Error::success(); -} - -llvm::Error Reproducer::SetReplay(llvm::Optional root, bool passive) { - std::lock_guard guard(m_mutex); - - if (root && m_generator) - return make_error( - "cannot replay a reproducer when generating one", - inconvertibleErrorCode()); - - if (!root) { - m_loader.reset(); - return Error::success(); - } - - m_loader.emplace(*root, passive); - if (auto e = m_loader->LoadIndex()) - return e; - - return Error::success(); -} - -FileSpec Reproducer::GetReproducerPath() const { - if (auto g = GetGenerator()) - return g->GetRoot(); - if (auto l = GetLoader()) - return l->GetRoot(); - return {}; -} - -static FileSpec MakeAbsolute(const FileSpec &file_spec) { - SmallString<128> path; - file_spec.GetPath(path, false); - llvm::sys::fs::make_absolute(path); - return FileSpec(path, file_spec.GetPathStyle()); -} - -Generator::Generator(FileSpec root) : m_root(MakeAbsolute(std::move(root))) { - GetOrCreate(); - GetOrCreate(); -} - -Generator::~Generator() { - if (!m_done) { - if (m_auto_generate) { - Keep(); - llvm::cantFail(Finalize(GetRoot())); - } else { - Discard(); - } - } -} - -ProviderBase *Generator::Register(std::unique_ptr provider) { - std::lock_guard lock(m_providers_mutex); - std::pair> key_value( - provider->DynamicClassID(), std::move(provider)); - auto e = m_providers.insert(std::move(key_value)); - return e.first->getSecond().get(); -} - -void Generator::Keep() { - LLDB_SCOPED_TIMER(); - assert(!m_done); - m_done = true; - - for (auto &provider : m_providers) - provider.second->Keep(); - - AddProvidersToIndex(); -} - -void Generator::Discard() { - LLDB_SCOPED_TIMER(); - assert(!m_done); - m_done = true; - - for (auto &provider : m_providers) - provider.second->Discard(); - - llvm::sys::fs::remove_directories(m_root.GetPath()); -} - -void Generator::SetAutoGenerate(bool b) { m_auto_generate = b; } - -bool Generator::IsAutoGenerate() const { return m_auto_generate; } - -const FileSpec &Generator::GetRoot() const { return m_root; } - -void Generator::AddProvidersToIndex() { - FileSpec index = m_root; - index.AppendPathComponent("index.yaml"); - - std::error_code EC; - auto strm = std::make_unique(index.GetPath(), EC, - sys::fs::OpenFlags::OF_None); - yaml::Output yout(*strm); - - std::vector files; - files.reserve(m_providers.size()); - for (auto &provider : m_providers) { - files.emplace_back(provider.second->GetFile()); - } - - yout << files; -} - -Loader::Loader(FileSpec root, bool passive) - : m_root(MakeAbsolute(std::move(root))), m_loaded(false), - m_passive_replay(passive) {} - -llvm::Error Loader::LoadIndex() { - if (m_loaded) - return llvm::Error::success(); - - FileSpec index = m_root.CopyByAppendingPathComponent("index.yaml"); - - auto error_or_file = MemoryBuffer::getFile(index.GetPath()); - if (auto err = error_or_file.getError()) - return make_error("unable to load reproducer index", err); - - yaml::Input yin((*error_or_file)->getBuffer()); - yin >> m_files; - if (auto err = yin.error()) - return make_error("unable to read reproducer index", err); - - // Sort files to speed up search. - llvm::sort(m_files); - - // Remember that we've loaded the index. - m_loaded = true; - - return llvm::Error::success(); -} - -bool Loader::HasFile(StringRef file) { - assert(m_loaded); - auto it = std::lower_bound(m_files.begin(), m_files.end(), file.str()); - return (it != m_files.end()) && (*it == file); -} - -void Verifier::Verify( - llvm::function_ref error_callback, - llvm::function_ref warning_callback, - llvm::function_ref note_callack) const { - if (!m_loader) { - error_callback("invalid loader"); - return; - } - - FileSpec vfs_mapping = m_loader->GetFile(); - ErrorOr> buffer = - vfs::getRealFileSystem()->getBufferForFile(vfs_mapping.GetPath()); - if (!buffer) { - error_callback("unable to read files: " + buffer.getError().message()); - return; - } - - IntrusiveRefCntPtr vfs = vfs::getVFSFromYAML( - std::move(buffer.get()), nullptr, vfs_mapping.GetPath()); - if (!vfs) { - error_callback("unable to initialize the virtual file system"); - return; - } - - auto &redirecting_vfs = static_cast(*vfs); - redirecting_vfs.setFallthrough(false); - - { - llvm::Expected working_dir = - GetDirectoryFrom(m_loader); - if (working_dir) { - if (!vfs->exists(*working_dir)) - warning_callback("working directory '" + *working_dir + "' not in VFS"); - vfs->setCurrentWorkingDirectory(*working_dir); - } else { - warning_callback("no working directory in reproducer: " + - toString(working_dir.takeError())); - } - } - - { - llvm::Expected home_dir = - GetDirectoryFrom(m_loader); - if (home_dir) { - if (!vfs->exists(*home_dir)) - warning_callback("home directory '" + *home_dir + "' not in VFS"); - } else { - warning_callback("no home directory in reproducer: " + - toString(home_dir.takeError())); - } - } - - { - Expected symbol_files = - m_loader->LoadBuffer(); - if (symbol_files) { - std::vector entries; - llvm::yaml::Input yin(*symbol_files); - yin >> entries; - for (const auto &entry : entries) { - if (!entry.module_path.empty() && !vfs->exists(entry.module_path)) { - warning_callback("'" + entry.module_path + "': module path for " + - entry.uuid + " not in VFS"); - } - if (!entry.symbol_path.empty() && !vfs->exists(entry.symbol_path)) { - warning_callback("'" + entry.symbol_path + "': symbol path for " + - entry.uuid + " not in VFS"); - } - } - } else { - llvm::consumeError(symbol_files.takeError()); - } - } - - // Missing files in the VFS are notes rather than warnings. Because the VFS - // is a snapshot, temporary files could have been removed between when they - // were recorded and when the reproducer was generated. - std::vector roots = redirecting_vfs.getRoots(); - for (llvm::StringRef root : roots) { - std::error_code ec; - vfs::recursive_directory_iterator iter(*vfs, root, ec); - vfs::recursive_directory_iterator end; - for (; iter != end && !ec; iter.increment(ec)) { - ErrorOr status = vfs->status(iter->path()); - if (!status) - note_callack("'" + iter->path().str() + - "': " + status.getError().message()); - } - } -} - -static llvm::Error addPaths(StringRef path, - function_ref callback) { - auto buffer = llvm::MemoryBuffer::getFile(path); - if (!buffer) - return errorCodeToError(buffer.getError()); - - SmallVector paths; - (*buffer)->getBuffer().split(paths, '\0'); - for (StringRef p : paths) { - if (!p.empty() && llvm::sys::fs::exists(p)) - callback(p); - } - - return errorCodeToError(llvm::sys::fs::remove(path)); -} - -llvm::Error repro::Finalize(Loader *loader) { - if (!loader) - return make_error("invalid loader", - llvm::inconvertibleErrorCode()); - - FileSpec reproducer_root = loader->GetRoot(); - std::string files_path = - reproducer_root.CopyByAppendingPathComponent("files.txt").GetPath(); - std::string dirs_path = - reproducer_root.CopyByAppendingPathComponent("dirs.txt").GetPath(); - - FileCollector collector( - reproducer_root.CopyByAppendingPathComponent("root").GetPath(), - reproducer_root.GetPath()); - - if (Error e = - addPaths(files_path, [&](StringRef p) { collector.addFile(p); })) - return e; - - if (Error e = - addPaths(dirs_path, [&](StringRef p) { collector.addDirectory(p); })) - return e; - - FileSpec mapping = - reproducer_root.CopyByAppendingPathComponent(FileProvider::Info::file); - if (auto ec = collector.copyFiles(/*stop_on_error=*/false)) - return errorCodeToError(ec); - collector.writeMapping(mapping.GetPath()); - - return llvm::Error::success(); -} - -llvm::Error repro::Finalize(const FileSpec &root) { - Loader loader(root); - if (Error e = loader.LoadIndex()) - return e; - return Finalize(&loader); -} diff --git a/gnu/llvm/lldb/source/Utility/ReproducerInstrumentation.cpp b/gnu/llvm/lldb/source/Utility/ReproducerInstrumentation.cpp deleted file mode 100644 index e5bd2ba4b62..00000000000 --- a/gnu/llvm/lldb/source/Utility/ReproducerInstrumentation.cpp +++ /dev/null @@ -1,253 +0,0 @@ -//===-- ReproducerInstrumentation.cpp -------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/ReproducerInstrumentation.h" -#include "lldb/Utility/Reproducer.h" -#include -#include -#include -#include - -using namespace lldb_private; -using namespace lldb_private::repro; - -void *IndexToObject::GetObjectForIndexImpl(unsigned idx) { - return m_mapping.lookup(idx); -} - -void IndexToObject::AddObjectForIndexImpl(unsigned idx, void *object) { - assert(idx != 0 && "Cannot add object for sentinel"); - m_mapping[idx] = object; -} - -std::vector IndexToObject::GetAllObjects() const { - std::vector> pairs; - for (auto &e : m_mapping) { - pairs.emplace_back(e.first, e.second); - } - - // Sort based on index. - std::sort(pairs.begin(), pairs.end(), - [](auto &lhs, auto &rhs) { return lhs.first < rhs.first; }); - - std::vector objects; - objects.reserve(pairs.size()); - for (auto &p : pairs) { - objects.push_back(p.second); - } - - return objects; -} - -template <> const uint8_t *Deserializer::Deserialize() { - return Deserialize(); -} - -template <> void *Deserializer::Deserialize() { - return const_cast(Deserialize()); -} - -template <> const void *Deserializer::Deserialize() { - return nullptr; -} - -template <> char *Deserializer::Deserialize() { - return const_cast(Deserialize()); -} - -template <> const char *Deserializer::Deserialize() { - const size_t size = Deserialize(); - if (size == std::numeric_limits::max()) - return nullptr; - assert(HasData(size + 1)); - const char *str = m_buffer.data(); - m_buffer = m_buffer.drop_front(size + 1); -#ifdef LLDB_REPRO_INSTR_TRACE - llvm::errs() << "Deserializing with " << LLVM_PRETTY_FUNCTION << " -> \"" - << str << "\"\n"; -#endif - return str; -} - -template <> const char **Deserializer::Deserialize() { - const size_t size = Deserialize(); - if (size == 0) - return nullptr; - const char **r = - reinterpret_cast(calloc(size + 1, sizeof(char *))); - for (size_t i = 0; i < size; ++i) - r[i] = Deserialize(); - return r; -} - -void Deserializer::CheckSequence(unsigned sequence) { - if (m_expected_sequence && *m_expected_sequence != sequence) - llvm::report_fatal_error( - "The result does not match the preceding " - "function. This is probably the result of concurrent " - "use of the SB API during capture, which is currently not " - "supported."); - m_expected_sequence.reset(); -} - -bool Registry::Replay(const FileSpec &file) { - auto error_or_file = llvm::MemoryBuffer::getFile(file.GetPath()); - if (auto err = error_or_file.getError()) - return false; - - return Replay((*error_or_file)->getBuffer()); -} - -bool Registry::Replay(llvm::StringRef buffer) { - Deserializer deserializer(buffer); - return Replay(deserializer); -} - -bool Registry::Replay(Deserializer &deserializer) { -#ifndef LLDB_REPRO_INSTR_TRACE - Log *log = GetLogIfAllCategoriesSet(LIBLLDB_LOG_API); -#endif - - // Disable buffering stdout so that we approximate the way things get flushed - // during an interactive session. - setvbuf(stdout, nullptr, _IONBF, 0); - - while (deserializer.HasData(1)) { - unsigned sequence = deserializer.Deserialize(); - unsigned id = deserializer.Deserialize(); - -#ifndef LLDB_REPRO_INSTR_TRACE - LLDB_LOG(log, "Replaying {0}: {1}", id, GetSignature(id)); -#else - llvm::errs() << "Replaying " << id << ": " << GetSignature(id) << "\n"; -#endif - - deserializer.SetExpectedSequence(sequence); - GetReplayer(id)->operator()(deserializer); - } - - // Add a small artificial delay to ensure that all asynchronous events have - // completed before we exit. - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - - return true; -} - -void Registry::DoRegister(uintptr_t RunID, std::unique_ptr replayer, - SignatureStr signature) { - const unsigned id = m_replayers.size() + 1; - assert(m_replayers.find(RunID) == m_replayers.end()); - m_replayers[RunID] = std::make_pair(std::move(replayer), id); - m_ids[id] = - std::make_pair(m_replayers[RunID].first.get(), std::move(signature)); -} - -unsigned Registry::GetID(uintptr_t addr) { - unsigned id = m_replayers[addr].second; - assert(id != 0 && "Forgot to add function to registry?"); - return id; -} - -std::string Registry::GetSignature(unsigned id) { - assert(m_ids.count(id) != 0 && "ID not in registry"); - return m_ids[id].second.ToString(); -} - -void Registry::CheckID(unsigned expected, unsigned actual) { - if (expected != actual) { - llvm::errs() << "Reproducer expected signature " << expected << ": '" - << GetSignature(expected) << "'\n"; - llvm::errs() << "Reproducer actual signature " << actual << ": '" - << GetSignature(actual) << "'\n"; - llvm::report_fatal_error( - "Detected reproducer replay divergence. Refusing to continue."); - } - -#ifdef LLDB_REPRO_INSTR_TRACE - llvm::errs() << "Replaying " << actual << ": " << GetSignature(actual) - << "\n"; -#endif -} - -Replayer *Registry::GetReplayer(unsigned id) { - assert(m_ids.count(id) != 0 && "ID not in registry"); - return m_ids[id].first; -} - -std::string Registry::SignatureStr::ToString() const { - return (result + (result.empty() ? "" : " ") + scope + "::" + name + args) - .str(); -} - -unsigned ObjectToIndex::GetIndexForObjectImpl(const void *object) { - unsigned index = m_mapping.size() + 1; - auto it = m_mapping.find(object); - if (it == m_mapping.end()) - m_mapping[object] = index; - return m_mapping[object]; -} - -Recorder::Recorder() - : m_pretty_func(), m_pretty_args(), - - m_sequence(std::numeric_limits::max()) { - if (!g_global_boundary) { - g_global_boundary = true; - m_local_boundary = true; - m_sequence = GetNextSequenceNumber(); - } -} - -Recorder::Recorder(llvm::StringRef pretty_func, std::string &&pretty_args) - : m_serializer(nullptr), m_pretty_func(pretty_func), - m_pretty_args(pretty_args), m_local_boundary(false), - m_result_recorded(true), - m_sequence(std::numeric_limits::max()) { - if (!g_global_boundary) { - g_global_boundary = true; - m_local_boundary = true; - m_sequence = GetNextSequenceNumber(); - LLDB_LOG(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API), "{0} ({1})", - m_pretty_func, m_pretty_args); - } -} - -Recorder::~Recorder() { - assert(m_result_recorded && "Did you forget LLDB_RECORD_RESULT?"); - UpdateBoundary(); -} - -unsigned Recorder::GetSequenceNumber() const { - assert(m_sequence != std::numeric_limits::max()); - return m_sequence; -} - -void InstrumentationData::Initialize(Serializer &serializer, - Registry ®istry) { - InstanceImpl().emplace(serializer, registry); -} - -void InstrumentationData::Initialize(Deserializer &deserializer, - Registry ®istry) { - InstanceImpl().emplace(deserializer, registry); -} - -InstrumentationData &InstrumentationData::Instance() { - if (!InstanceImpl()) - InstanceImpl().emplace(); - return *InstanceImpl(); -} - -llvm::Optional &InstrumentationData::InstanceImpl() { - static llvm::Optional g_instrumentation_data; - return g_instrumentation_data; -} - -thread_local bool lldb_private::repro::Recorder::g_global_boundary = false; -std::atomic lldb_private::repro::Recorder::g_sequence; -std::mutex lldb_private::repro::Recorder::g_mutex; diff --git a/gnu/llvm/lldb/source/Utility/ReproducerProvider.cpp b/gnu/llvm/lldb/source/Utility/ReproducerProvider.cpp deleted file mode 100644 index 5145819b717..00000000000 --- a/gnu/llvm/lldb/source/Utility/ReproducerProvider.cpp +++ /dev/null @@ -1,221 +0,0 @@ -//===-- Reproducer.cpp ----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/ReproducerProvider.h" -#include "lldb/Utility/ProcessInfo.h" -#include "llvm/ADT/ScopeExit.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/WithColor.h" -#include "llvm/Support/raw_ostream.h" - -using namespace lldb_private; -using namespace lldb_private::repro; -using namespace llvm; -using namespace llvm::yaml; - -llvm::Expected> -DataRecorder::Create(const FileSpec &filename) { - std::error_code ec; - auto recorder = std::make_unique(std::move(filename), ec); - if (ec) - return llvm::errorCodeToError(ec); - return std::move(recorder); -} - -llvm::Expected> -YamlRecorder::Create(const FileSpec &filename) { - std::error_code ec; - auto recorder = std::make_unique(std::move(filename), ec); - if (ec) - return llvm::errorCodeToError(ec); - return std::move(recorder); -} - -void VersionProvider::Keep() { - FileSpec file = GetRoot().CopyByAppendingPathComponent(Info::file); - std::error_code ec; - llvm::raw_fd_ostream os(file.GetPath(), ec, llvm::sys::fs::OF_TextWithCRLF); - if (ec) - return; - os << m_version << "\n"; -} - -FlushingFileCollector::FlushingFileCollector(llvm::StringRef files_path, - llvm::StringRef dirs_path, - std::error_code &ec) { - auto clear = llvm::make_scope_exit([this]() { - m_files_os.reset(); - m_dirs_os.reset(); - }); - m_files_os.emplace(files_path, ec, llvm::sys::fs::OF_Append); - if (ec) - return; - m_dirs_os.emplace(dirs_path, ec, llvm::sys::fs::OF_Append); - if (ec) - return; - clear.release(); -} - -void FlushingFileCollector::addFileImpl(StringRef file) { - if (m_files_os) { - *m_files_os << file << '\0'; - m_files_os->flush(); - } -} - -llvm::vfs::directory_iterator -FlushingFileCollector::addDirectoryImpl(const Twine &dir, - IntrusiveRefCntPtr vfs, - std::error_code &dir_ec) { - if (m_dirs_os) { - *m_dirs_os << dir << '\0'; - m_dirs_os->flush(); - } - return vfs->dir_begin(dir, dir_ec); -} - -void FileProvider::RecordInterestingDirectory(const llvm::Twine &dir) { - if (m_collector) - m_collector->addFile(dir); -} - -void FileProvider::RecordInterestingDirectoryRecursive(const llvm::Twine &dir) { - if (m_collector) - m_collector->addDirectory(dir); -} - -llvm::Expected> -ProcessInfoRecorder::Create(const FileSpec &filename) { - std::error_code ec; - auto recorder = - std::make_unique(std::move(filename), ec); - if (ec) - return llvm::errorCodeToError(ec); - return std::move(recorder); -} - -void ProcessInfoProvider::Keep() { - std::vector files; - for (auto &recorder : m_process_info_recorders) { - recorder->Stop(); - files.push_back(recorder->GetFilename().GetPath()); - } - - FileSpec file = GetRoot().CopyByAppendingPathComponent(Info::file); - std::error_code ec; - llvm::raw_fd_ostream os(file.GetPath(), ec, llvm::sys::fs::OF_TextWithCRLF); - if (ec) - return; - llvm::yaml::Output yout(os); - yout << files; -} - -void ProcessInfoProvider::Discard() { m_process_info_recorders.clear(); } - -ProcessInfoRecorder *ProcessInfoProvider::GetNewProcessInfoRecorder() { - std::size_t i = m_process_info_recorders.size() + 1; - std::string filename = (llvm::Twine(Info::name) + llvm::Twine("-") + - llvm::Twine(i) + llvm::Twine(".yaml")) - .str(); - auto recorder_or_error = ProcessInfoRecorder::Create( - GetRoot().CopyByAppendingPathComponent(filename)); - if (!recorder_or_error) { - llvm::consumeError(recorder_or_error.takeError()); - return nullptr; - } - - m_process_info_recorders.push_back(std::move(*recorder_or_error)); - return m_process_info_recorders.back().get(); -} - -void ProcessInfoRecorder::Record(const ProcessInstanceInfoList &process_infos) { - if (!m_record) - return; - llvm::yaml::Output yout(m_os); - yout << const_cast(process_infos); - m_os.flush(); -} - -void SymbolFileProvider::AddSymbolFile(const UUID *uuid, - const FileSpec &module_file, - const FileSpec &symbol_file) { - if (!uuid || (!module_file && !symbol_file)) - return; - m_symbol_files.emplace_back(uuid->GetAsString(), module_file.GetPath(), - symbol_file.GetPath()); -} - -void SymbolFileProvider::Keep() { - FileSpec file = this->GetRoot().CopyByAppendingPathComponent(Info::file); - std::error_code ec; - llvm::raw_fd_ostream os(file.GetPath(), ec, llvm::sys::fs::OF_TextWithCRLF); - if (ec) - return; - - // Remove duplicates. - llvm::sort(m_symbol_files.begin(), m_symbol_files.end()); - m_symbol_files.erase( - std::unique(m_symbol_files.begin(), m_symbol_files.end()), - m_symbol_files.end()); - - llvm::yaml::Output yout(os); - yout << m_symbol_files; -} - -SymbolFileLoader::SymbolFileLoader(Loader *loader) { - if (!loader) - return; - - FileSpec file = loader->GetFile(); - if (!file) - return; - - auto error_or_file = llvm::MemoryBuffer::getFile(file.GetPath()); - if (auto err = error_or_file.getError()) - return; - - llvm::yaml::Input yin((*error_or_file)->getBuffer()); - yin >> m_symbol_files; -} - -std::pair -SymbolFileLoader::GetPaths(const UUID *uuid) const { - if (!uuid) - return {}; - - auto it = std::lower_bound(m_symbol_files.begin(), m_symbol_files.end(), - SymbolFileProvider::Entry(uuid->GetAsString())); - if (it == m_symbol_files.end()) - return {}; - return std::make_pair(FileSpec(it->module_path), - FileSpec(it->symbol_path)); -} - -void ProviderBase::anchor() {} -char CommandProvider::ID = 0; -char FileProvider::ID = 0; -char ProviderBase::ID = 0; -char VersionProvider::ID = 0; -char WorkingDirectoryProvider::ID = 0; -char HomeDirectoryProvider::ID = 0; -char ProcessInfoProvider::ID = 0; -char SymbolFileProvider::ID = 0; -const char *CommandProvider::Info::file = "command-interpreter.yaml"; -const char *CommandProvider::Info::name = "command-interpreter"; -const char *FileProvider::Info::file = "files.yaml"; -const char *FileProvider::Info::name = "files"; -const char *VersionProvider::Info::file = "version.txt"; -const char *VersionProvider::Info::name = "version"; -const char *WorkingDirectoryProvider::Info::file = "cwd.txt"; -const char *WorkingDirectoryProvider::Info::name = "cwd"; -const char *HomeDirectoryProvider::Info::file = "home.txt"; -const char *HomeDirectoryProvider::Info::name = "home"; -const char *ProcessInfoProvider::Info::file = "process-info.yaml"; -const char *ProcessInfoProvider::Info::name = "process-info"; -const char *SymbolFileProvider::Info::file = "symbol-files.yaml"; -const char *SymbolFileProvider::Info::name = "symbol-files"; diff --git a/gnu/llvm/lldb/source/Utility/StreamCallback.cpp b/gnu/llvm/lldb/source/Utility/StreamCallback.cpp deleted file mode 100644 index c10f678d7a2..00000000000 --- a/gnu/llvm/lldb/source/Utility/StreamCallback.cpp +++ /dev/null @@ -1,22 +0,0 @@ -//===-- StreamCallback.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/StreamCallback.h" - -#include - -using namespace lldb_private; - -StreamCallback::StreamCallback(lldb::LogOutputCallback callback, void *baton) - : llvm::raw_ostream(true), m_callback(callback), m_baton(baton) {} - -void StreamCallback::write_impl(const char *Ptr, size_t Size) { - m_callback(std::string(Ptr, Size).c_str(), m_baton); -} - -uint64_t StreamCallback::current_pos() const { return 0; } diff --git a/gnu/llvm/lldb/source/lldb.cpp b/gnu/llvm/lldb/source/lldb.cpp deleted file mode 100644 index 371902f6c1b..00000000000 --- a/gnu/llvm/lldb/source/lldb.cpp +++ /dev/null @@ -1,77 +0,0 @@ -//===-- lldb.cpp ----------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "VCSVersion.inc" -#include "lldb/lldb-private.h" -#include "clang/Basic/Version.h" - -using namespace lldb; -using namespace lldb_private; - -// LLDB_VERSION_STRING is set through a define so unlike the other defines -// expanded with CMake, it lacks the double quotes. -#define QUOTE(str) #str -#define EXPAND_AND_QUOTE(str) QUOTE(str) - -static const char *GetLLDBVersion() { -#ifdef LLDB_VERSION_STRING - return EXPAND_AND_QUOTE(LLDB_VERSION_STRING); -#else - return "lldb version " CLANG_VERSION_STRING; -#endif -} - -static const char *GetLLDBRevision() { -#ifdef LLDB_REVISION - return LLDB_REVISION; -#else - return NULL; -#endif -} - -static const char *GetLLDBRepository() { -#ifdef LLDB_REPOSITORY - return LLDB_REPOSITORY; -#else - return NULL; -#endif -} - -const char *lldb_private::GetVersion() { - static std::string g_version_str; - if (g_version_str.empty()) { - const char *lldb_version = GetLLDBVersion(); - const char *lldb_repo = GetLLDBRepository(); - const char *lldb_rev = GetLLDBRevision(); - g_version_str += lldb_version; - if (lldb_repo || lldb_rev) { - g_version_str += " ("; - if (lldb_repo) - g_version_str += lldb_repo; - if (lldb_repo && lldb_rev) - g_version_str += " "; - if (lldb_rev) { - g_version_str += "revision "; - g_version_str += lldb_rev; - } - g_version_str += ")"; - } - - std::string clang_rev(clang::getClangRevision()); - if (clang_rev.length() > 0) { - g_version_str += "\n clang revision "; - g_version_str += clang_rev; - } - std::string llvm_rev(clang::getLLVMRevision()); - if (llvm_rev.length() > 0) { - g_version_str += "\n llvm revision "; - g_version_str += llvm_rev; - } - } - return g_version_str.c_str(); -} diff --git a/gnu/llvm/lldb/third_party/Python/module/six/LICENSE b/gnu/llvm/lldb/third_party/Python/module/six/LICENSE deleted file mode 100644 index e558f9d494a..00000000000 --- a/gnu/llvm/lldb/third_party/Python/module/six/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright (c) 2010-2015 Benjamin Peterson - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/gnu/llvm/lldb/third_party/Python/module/six/six.py b/gnu/llvm/lldb/third_party/Python/module/six/six.py deleted file mode 100644 index 0df2e259237..00000000000 --- a/gnu/llvm/lldb/third_party/Python/module/six/six.py +++ /dev/null @@ -1,887 +0,0 @@ -"""Utilities for writing code that runs on Python 2 and 3""" - -# Copyright (c) 2010-2015 Benjamin Peterson -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -from __future__ import absolute_import - -import functools -import itertools -import operator -import sys -import types - -__author__ = "Benjamin Peterson " -__version__ = "1.10.0" - - -# Useful for very coarse version differentiation. -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 -PY34 = sys.version_info[0:2] >= (3, 4) - -if PY3: - string_types = str, - integer_types = int, - class_types = type, - text_type = str - binary_type = bytes - - MAXSIZE = sys.maxsize -else: - string_types = basestring, - integer_types = (int, long) - class_types = (type, types.ClassType) - text_type = unicode - binary_type = str - - if sys.platform.startswith("java"): - # Jython always uses 32 bits. - MAXSIZE = int((1 << 31) - 1) - else: - # It's possible to have sizeof(long) != sizeof(Py_ssize_t). - class X(object): - - def __len__(self): - return 1 << 31 - try: - len(X()) - except OverflowError: - # 32-bit - MAXSIZE = int((1 << 31) - 1) - else: - # 64-bit - MAXSIZE = int((1 << 63) - 1) - del X - - -def _add_doc(func, doc): - """Add documentation to a function.""" - func.__doc__ = doc - - -def _import_module(name): - """Import module, returning the module after the last dot.""" - __import__(name) - return sys.modules[name] - - -class _LazyDescr(object): - - def __init__(self, name): - self.name = name - - def __get__(self, obj, tp): - result = self._resolve() - setattr(obj, self.name, result) # Invokes __set__. - try: - # This is a bit ugly, but it avoids running this again by - # removing this descriptor. - delattr(obj.__class__, self.name) - except AttributeError: - pass - return result - - -class MovedModule(_LazyDescr): - - def __init__(self, name, old, new=None): - super(MovedModule, self).__init__(name) - if PY3: - if new is None: - new = name - self.mod = new - else: - self.mod = old - - def _resolve(self): - return _import_module(self.mod) - - def __getattr__(self, attr): - _module = self._resolve() - value = getattr(_module, attr) - setattr(self, attr, value) - return value - - -class _LazyModule(types.ModuleType): - - def __init__(self, name): - super(_LazyModule, self).__init__(name) - self.__doc__ = self.__class__.__doc__ - - def __dir__(self): - attrs = ["__doc__", "__name__"] - attrs += [attr.name for attr in self._moved_attributes] - return attrs - - # Subclasses should override this - _moved_attributes = [] - - -class MovedAttribute(_LazyDescr): - - def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): - super(MovedAttribute, self).__init__(name) - if PY3: - if new_mod is None: - new_mod = name - self.mod = new_mod - if new_attr is None: - if old_attr is None: - new_attr = name - else: - new_attr = old_attr - self.attr = new_attr - else: - self.mod = old_mod - if old_attr is None: - old_attr = name - self.attr = old_attr - - def _resolve(self): - module = _import_module(self.mod) - return getattr(module, self.attr) - - -class _SixMetaPathImporter(object): - - """ - A meta path importer to import six.moves and its submodules. - - This class implements a PEP302 finder and loader. It should be compatible - with Python 2.5 and all existing versions of Python3 - """ - - def __init__(self, six_module_name): - self.name = six_module_name - self.known_modules = {} - - def _add_module(self, mod, *fullnames): - for fullname in fullnames: - self.known_modules[self.name + "." + fullname] = mod - - def _get_module(self, fullname): - return self.known_modules[self.name + "." + fullname] - - def find_module(self, fullname, path=None): - if fullname in self.known_modules: - return self - return None - - def __get_module(self, fullname): - try: - return self.known_modules[fullname] - except KeyError: - raise ImportError("This loader does not know module " + fullname) - - def load_module(self, fullname): - try: - # in case of a reload - return sys.modules[fullname] - except KeyError: - pass - mod = self.__get_module(fullname) - if isinstance(mod, MovedModule): - mod = mod._resolve() - else: - mod.__loader__ = self - sys.modules[fullname] = mod - return mod - - def is_package(self, fullname): - """ - Return true, if the named module is a package. - - We need this method to get correct spec objects with - Python 3.4 (see PEP451) - """ - return hasattr(self.__get_module(fullname), "__path__") - - def get_code(self, fullname): - """Return None - - Required, if is_package is implemented""" - self.__get_module(fullname) # eventually raises ImportError - return None - get_source = get_code # same as get_code - -_importer = _SixMetaPathImporter(__name__) - - -class _MovedItems(_LazyModule): - - """Lazy loading of moved objects""" - __path__ = [] # mark as package - - -_moved_attributes = [ - MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), - MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), - MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"), - MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), - MovedAttribute("intern", "__builtin__", "sys"), - MovedAttribute("map", "itertools", "builtins", "imap", "map"), - MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"), - MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"), - MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"), - MovedAttribute("reduce", "__builtin__", "functools"), - MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), - MovedAttribute("StringIO", "StringIO", "io"), - MovedAttribute("UserDict", "UserDict", "collections"), - MovedAttribute("UserList", "UserList", "collections"), - MovedAttribute("UserString", "UserString", "collections"), - MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), - MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), - MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), - MovedModule("builtins", "__builtin__"), - MovedModule("configparser", "ConfigParser"), - MovedModule("copyreg", "copy_reg"), - MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), - MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"), - MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), - MovedModule("http_cookies", "Cookie", "http.cookies"), - MovedModule("html_entities", "htmlentitydefs", "html.entities"), - MovedModule("html_parser", "HTMLParser", "html.parser"), - MovedModule("http_client", "httplib", "http.client"), - MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"), - MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"), - MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"), - MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"), - MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), - MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), - MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), - MovedModule("cPickle", "cPickle", "pickle"), - MovedModule("queue", "Queue"), - MovedModule("reprlib", "repr"), - MovedModule("socketserver", "SocketServer"), - MovedModule("_thread", "thread", "_thread"), - MovedModule("tkinter", "Tkinter"), - MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), - MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), - MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), - MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), - MovedModule("tkinter_tix", "Tix", "tkinter.tix"), - MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"), - MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), - MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), - MovedModule("tkinter_colorchooser", "tkColorChooser", - "tkinter.colorchooser"), - MovedModule("tkinter_commondialog", "tkCommonDialog", - "tkinter.commondialog"), - MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), - MovedModule("tkinter_font", "tkFont", "tkinter.font"), - MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), - MovedModule("tkinter_tksimpledialog", "tkSimpleDialog", - "tkinter.simpledialog"), - MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"), - MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"), - MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"), - MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), - MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"), - MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"), -] -# Add windows specific modules. -if sys.platform == "win32": - _moved_attributes += [ - MovedModule("winreg", "_winreg"), - ] - -for attr in _moved_attributes: - setattr(_MovedItems, attr.name, attr) - if isinstance(attr, MovedModule): - _importer._add_module(attr, "moves." + attr.name) -del attr - -_MovedItems._moved_attributes = _moved_attributes - -moves = _MovedItems(__name__ + ".moves") -_importer._add_module(moves, "moves") - - -class Module_six_moves_urllib_parse(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_parse""" - - -_urllib_parse_moved_attributes = [ - MovedAttribute("ParseResult", "urlparse", "urllib.parse"), - MovedAttribute("SplitResult", "urlparse", "urllib.parse"), - MovedAttribute("parse_qs", "urlparse", "urllib.parse"), - MovedAttribute("parse_qsl", "urlparse", "urllib.parse"), - MovedAttribute("urldefrag", "urlparse", "urllib.parse"), - MovedAttribute("urljoin", "urlparse", "urllib.parse"), - MovedAttribute("urlparse", "urlparse", "urllib.parse"), - MovedAttribute("urlsplit", "urlparse", "urllib.parse"), - MovedAttribute("urlunparse", "urlparse", "urllib.parse"), - MovedAttribute("urlunsplit", "urlparse", "urllib.parse"), - MovedAttribute("quote", "urllib", "urllib.parse"), - MovedAttribute("quote_plus", "urllib", "urllib.parse"), - MovedAttribute("unquote", "urllib", "urllib.parse"), - MovedAttribute("unquote_plus", "urllib", "urllib.parse"), - MovedAttribute("urlencode", "urllib", "urllib.parse"), - MovedAttribute("splitquery", "urllib", "urllib.parse"), - MovedAttribute("splittag", "urllib", "urllib.parse"), - MovedAttribute("splituser", "urllib", "urllib.parse"), - MovedAttribute("uses_fragment", "urlparse", "urllib.parse"), - MovedAttribute("uses_netloc", "urlparse", "urllib.parse"), - MovedAttribute("uses_params", "urlparse", "urllib.parse"), - MovedAttribute("uses_query", "urlparse", "urllib.parse"), - MovedAttribute("uses_relative", "urlparse", "urllib.parse"), -] -for attr in _urllib_parse_moved_attributes: - setattr(Module_six_moves_urllib_parse, attr.name, attr) -del attr - -Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes - -_importer._add_module( - Module_six_moves_urllib_parse( - __name__ + - ".moves.urllib_parse"), - "moves.urllib_parse", - "moves.urllib.parse") - - -class Module_six_moves_urllib_error(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_error""" - - -_urllib_error_moved_attributes = [ - MovedAttribute("URLError", "urllib2", "urllib.error"), - MovedAttribute("HTTPError", "urllib2", "urllib.error"), - MovedAttribute("ContentTooShortError", "urllib", "urllib.error"), -] -for attr in _urllib_error_moved_attributes: - setattr(Module_six_moves_urllib_error, attr.name, attr) -del attr - -Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes - -_importer._add_module( - Module_six_moves_urllib_error( - __name__ + - ".moves.urllib.error"), - "moves.urllib_error", - "moves.urllib.error") - - -class Module_six_moves_urllib_request(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_request""" - - -_urllib_request_moved_attributes = [ - MovedAttribute("urlopen", "urllib2", "urllib.request"), - MovedAttribute("install_opener", "urllib2", "urllib.request"), - MovedAttribute("build_opener", "urllib2", "urllib.request"), - MovedAttribute("pathname2url", "urllib", "urllib.request"), - MovedAttribute("url2pathname", "urllib", "urllib.request"), - MovedAttribute("getproxies", "urllib", "urllib.request"), - MovedAttribute("Request", "urllib2", "urllib.request"), - MovedAttribute("OpenerDirector", "urllib2", "urllib.request"), - MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"), - MovedAttribute("ProxyHandler", "urllib2", "urllib.request"), - MovedAttribute("BaseHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"), - MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"), - MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"), - MovedAttribute("FileHandler", "urllib2", "urllib.request"), - MovedAttribute("FTPHandler", "urllib2", "urllib.request"), - MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"), - MovedAttribute("UnknownHandler", "urllib2", "urllib.request"), - MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), - MovedAttribute("urlretrieve", "urllib", "urllib.request"), - MovedAttribute("urlcleanup", "urllib", "urllib.request"), - MovedAttribute("URLopener", "urllib", "urllib.request"), - MovedAttribute("FancyURLopener", "urllib", "urllib.request"), - MovedAttribute("proxy_bypass", "urllib", "urllib.request"), -] -for attr in _urllib_request_moved_attributes: - setattr(Module_six_moves_urllib_request, attr.name, attr) -del attr - -Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes - -_importer._add_module( - Module_six_moves_urllib_request( - __name__ + - ".moves.urllib.request"), - "moves.urllib_request", - "moves.urllib.request") - - -class Module_six_moves_urllib_response(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_response""" - - -_urllib_response_moved_attributes = [ - MovedAttribute("addbase", "urllib", "urllib.response"), - MovedAttribute("addclosehook", "urllib", "urllib.response"), - MovedAttribute("addinfo", "urllib", "urllib.response"), - MovedAttribute("addinfourl", "urllib", "urllib.response"), -] -for attr in _urllib_response_moved_attributes: - setattr(Module_six_moves_urllib_response, attr.name, attr) -del attr - -Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes - -_importer._add_module( - Module_six_moves_urllib_response( - __name__ + - ".moves.urllib.response"), - "moves.urllib_response", - "moves.urllib.response") - - -class Module_six_moves_urllib_robotparser(_LazyModule): - - """Lazy loading of moved objects in six.moves.urllib_robotparser""" - - -_urllib_robotparser_moved_attributes = [ - MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"), -] -for attr in _urllib_robotparser_moved_attributes: - setattr(Module_six_moves_urllib_robotparser, attr.name, attr) -del attr - -Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes - -_importer._add_module( - Module_six_moves_urllib_robotparser( - __name__ + ".moves.urllib.robotparser"), - "moves.urllib_robotparser", - "moves.urllib.robotparser") - - -class Module_six_moves_urllib(types.ModuleType): - - """Create a six.moves.urllib namespace that resembles the Python 3 namespace""" - __path__ = [] # mark as package - parse = _importer._get_module("moves.urllib_parse") - error = _importer._get_module("moves.urllib_error") - request = _importer._get_module("moves.urllib_request") - response = _importer._get_module("moves.urllib_response") - robotparser = _importer._get_module("moves.urllib_robotparser") - - def __dir__(self): - return ['parse', 'error', 'request', 'response', 'robotparser'] - -_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"), - "moves.urllib") - - -def add_move(move): - """Add an item to six.moves.""" - setattr(_MovedItems, move.name, move) - - -def remove_move(name): - """Remove item from six.moves.""" - try: - delattr(_MovedItems, name) - except AttributeError: - try: - del moves.__dict__[name] - except KeyError: - raise AttributeError("no such move, %r" % (name,)) - - -if PY3: - _meth_func = "__func__" - _meth_self = "__self__" - - _func_closure = "__closure__" - _func_code = "__code__" - _func_defaults = "__defaults__" - _func_globals = "__globals__" -else: - _meth_func = "im_func" - _meth_self = "im_self" - - _func_closure = "func_closure" - _func_code = "func_code" - _func_defaults = "func_defaults" - _func_globals = "func_globals" - - -try: - advance_iterator = next -except NameError: - def advance_iterator(it): - return it.next() -next = advance_iterator - - -try: - callable = callable -except NameError: - def callable(obj): - return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) - - -if PY3: - def get_unbound_function(unbound): - return unbound - - create_bound_method = types.MethodType - - def create_unbound_method(func, cls): - return func - - Iterator = object -else: - def get_unbound_function(unbound): - return unbound.im_func - - def create_bound_method(func, obj): - return types.MethodType(func, obj, obj.__class__) - - def create_unbound_method(func, cls): - return types.MethodType(func, None, cls) - - class Iterator(object): - - def next(self): - return type(self).__next__(self) - - callable = callable -_add_doc(get_unbound_function, - """Get the function out of a possibly unbound function""") - - -get_method_function = operator.attrgetter(_meth_func) -get_method_self = operator.attrgetter(_meth_self) -get_function_closure = operator.attrgetter(_func_closure) -get_function_code = operator.attrgetter(_func_code) -get_function_defaults = operator.attrgetter(_func_defaults) -get_function_globals = operator.attrgetter(_func_globals) - - -if PY3: - def iterkeys(d, **kw): - return iter(d.keys(**kw)) - - def itervalues(d, **kw): - return iter(d.values(**kw)) - - def iteritems(d, **kw): - return iter(d.items(**kw)) - - def iterlists(d, **kw): - return iter(d.lists(**kw)) - - viewkeys = operator.methodcaller("keys") - - viewvalues = operator.methodcaller("values") - - viewitems = operator.methodcaller("items") -else: - def iterkeys(d, **kw): - return d.iterkeys(**kw) - - def itervalues(d, **kw): - return d.itervalues(**kw) - - def iteritems(d, **kw): - return d.iteritems(**kw) - - def iterlists(d, **kw): - return d.iterlists(**kw) - - viewkeys = operator.methodcaller("viewkeys") - - viewvalues = operator.methodcaller("viewvalues") - - viewitems = operator.methodcaller("viewitems") - -_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.") -_add_doc(itervalues, "Return an iterator over the values of a dictionary.") -_add_doc(iteritems, - "Return an iterator over the (key, value) pairs of a dictionary.") -_add_doc(iterlists, - "Return an iterator over the (key, [values]) pairs of a dictionary.") - - -if PY3: - def b(s): - return s.encode("latin-1") - - def u(s): - return s - unichr = chr - import struct - int2byte = struct.Struct(">B").pack - del struct - byte2int = operator.itemgetter(0) - indexbytes = operator.getitem - iterbytes = iter - import io - StringIO = io.StringIO - BytesIO = io.BytesIO - _assertCountEqual = "assertCountEqual" - if sys.version_info[1] <= 1: - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" - else: - _assertRaisesRegex = "assertRaisesRegex" - _assertRegex = "assertRegex" -else: - def b(s): - return s - # Workaround for standalone backslash - - def u(s): - return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape") - unichr = unichr - int2byte = chr - - def byte2int(bs): - return ord(bs[0]) - - def indexbytes(buf, i): - return ord(buf[i]) - iterbytes = functools.partial(itertools.imap, ord) - import StringIO - StringIO = BytesIO = StringIO.StringIO - _assertCountEqual = "assertItemsEqual" - _assertRaisesRegex = "assertRaisesRegexp" - _assertRegex = "assertRegexpMatches" -_add_doc(b, """Byte literal""") -_add_doc(u, """Text literal""") - - -def assertCountEqual(self, *args, **kwargs): - return getattr(self, _assertCountEqual)(*args, **kwargs) - - -def assertRaisesRegex(self, *args, **kwargs): - return getattr(self, _assertRaisesRegex)(*args, **kwargs) - - -def assertRegex(self, *args, **kwargs): - return getattr(self, _assertRegex)(*args, **kwargs) - - -if PY3: - exec_ = getattr(moves.builtins, "exec") - - def reraise(tp, value, tb=None): - if value is None: - value = tp() - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - -else: - def exec_(_code_, _globs_=None, _locs_=None): - """Execute code in a namespace.""" - if _globs_ is None: - frame = sys._getframe(1) - _globs_ = frame.f_globals - if _locs_ is None: - _locs_ = frame.f_locals - del frame - elif _locs_ is None: - _locs_ = _globs_ - exec("""exec _code_ in _globs_, _locs_""") - - exec_("""def reraise(tp, value, tb=None): - raise tp, value, tb -""") - - -if sys.version_info[:2] == (3, 2): - exec_("""def raise_from(value, from_value): - if from_value is None: - raise value - raise value from from_value -""") -elif sys.version_info[:2] > (3, 2): - exec_("""def raise_from(value, from_value): - raise value from from_value -""") -else: - def raise_from(value, from_value): - raise value - - -print_ = getattr(moves.builtins, "print", None) -if print_ is None: - def print_(*args, **kwargs): - """The new-style print function for Python 2.4 and 2.5.""" - fp = kwargs.pop("file", sys.stdout) - if fp is None: - return - - def write(data): - if not isinstance(data, basestring): - data = str(data) - # If the file has an encoding, encode unicode with it. - if (isinstance(fp, file) and - isinstance(data, unicode) and - fp.encoding is not None): - errors = getattr(fp, "errors", None) - if errors is None: - errors = "strict" - data = data.encode(fp.encoding, errors) - fp.write(data) - want_unicode = False - sep = kwargs.pop("sep", None) - if sep is not None: - if isinstance(sep, unicode): - want_unicode = True - elif not isinstance(sep, str): - raise TypeError("sep must be None or a string") - end = kwargs.pop("end", None) - if end is not None: - if isinstance(end, unicode): - want_unicode = True - elif not isinstance(end, str): - raise TypeError("end must be None or a string") - if kwargs: - raise TypeError("invalid keyword arguments to print()") - if not want_unicode: - for arg in args: - if isinstance(arg, unicode): - want_unicode = True - break - if want_unicode: - newline = unicode("\n") - space = unicode(" ") - else: - newline = "\n" - space = " " - if sep is None: - sep = space - if end is None: - end = newline - for i, arg in enumerate(args): - if i: - write(sep) - write(arg) - write(end) -if sys.version_info[:2] < (3, 3): - _print = print_ - - def print_(*args, **kwargs): - fp = kwargs.get("file", sys.stdout) - flush = kwargs.pop("flush", False) - _print(*args, **kwargs) - if flush and fp is not None: - fp.flush() - -_add_doc(reraise, """Reraise an exception.""") - -if sys.version_info[0:2] < (3, 4): - def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, - updated=functools.WRAPPER_UPDATES): - def wrapper(f): - f = functools.wraps(wrapped, assigned, updated)(f) - f.__wrapped__ = wrapped - return f - return wrapper -else: - wraps = functools.wraps - - -def with_metaclass(meta, *bases): - """Create a base class with a metaclass.""" - # This requires a bit of explanation: the basic idea is to make a dummy - # metaclass for one level of class instantiation that replaces itself with - # the actual metaclass. - class metaclass(meta): - - def __new__(cls, name, this_bases, d): - return meta(name, bases, d) - return type.__new__(metaclass, 'temporary_class', (), {}) - - -def add_metaclass(metaclass): - """Class decorator for creating a class with a metaclass.""" - def wrapper(cls): - orig_vars = cls.__dict__.copy() - slots = orig_vars.get('__slots__') - if slots is not None: - if isinstance(slots, str): - slots = [slots] - for slots_var in slots: - orig_vars.pop(slots_var) - orig_vars.pop('__dict__', None) - orig_vars.pop('__weakref__', None) - return metaclass(cls.__name__, cls.__bases__, orig_vars) - return wrapper - - -def python_2_unicode_compatible(klass): - """ - A decorator that defines __unicode__ and __str__ methods under Python 2. - Under Python 3 it does nothing. - - To support Python 2 and 3 with a single code base, define a __str__ method - returning text and apply this decorator to the class. - """ - if PY2: - if '__str__' not in klass.__dict__: - raise ValueError("@python_2_unicode_compatible cannot be applied " - "to %s because it doesn't define __str__()." % - klass.__name__) - klass.__unicode__ = klass.__str__ - klass.__str__ = lambda self: self.__unicode__().encode('utf-8') - return klass - - -# Complete the moves implementation. -# This code is at the end of this module to speed up module loading. -# Turn this module into a package. -__path__ = [] # required for PEP 302 and PEP 451 -__package__ = __name__ # see PEP 366 @ReservedAssignment -if globals().get("__spec__") is not None: - __spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable -# Remove other six meta path importers, since they cause problems. This can -# happen if six is removed from sys.modules and then reloaded. (Setuptools does -# this for some reason.) -if sys.meta_path: - for i, importer in enumerate(sys.meta_path): - # Here's some real nastiness: Another "instance" of the six module might - # be floating around. Therefore, we can't use isinstance() to check for - # the six meta path importer, since the other six instance will have - # inserted an importer with different class. - if (type(importer).__name__ == "_SixMetaPathImporter" and - importer.name == __name__): - del sys.meta_path[i] - break - del i, importer -# Finally, add the importer to the meta path import hook. -sys.meta_path.append(_importer) diff --git a/gnu/llvm/lldb/tools/CMakeLists.txt b/gnu/llvm/lldb/tools/CMakeLists.txt index 57aba7db2ed..fedf580a307 100644 --- a/gnu/llvm/lldb/tools/CMakeLists.txt +++ b/gnu/llvm/lldb/tools/CMakeLists.txt @@ -6,6 +6,7 @@ add_subdirectory(intel-features) # i.e. if a target requires it as dependency. The typical # example is `check-lldb`. So, we pass EXCLUDE_FROM_ALL here. add_subdirectory(lldb-test EXCLUDE_FROM_ALL) +add_subdirectory(lldb-fuzzer EXCLUDE_FROM_ALL) #add_lldb_tool_subdirectory(lldb-instr) add_lldb_tool_subdirectory(lldb-vscode) diff --git a/gnu/llvm/lldb/tools/argdumper/argdumper.exports b/gnu/llvm/lldb/tools/argdumper/argdumper.exports deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/gnu/llvm/lldb/tools/driver/Driver.cpp b/gnu/llvm/lldb/tools/driver/Driver.cpp index a6a4a2a1b80..d463267aeef 100644 --- a/gnu/llvm/lldb/tools/driver/Driver.cpp +++ b/gnu/llvm/lldb/tools/driver/Driver.cpp @@ -15,15 +15,14 @@ #include "lldb/API/SBFile.h" #include "lldb/API/SBHostOS.h" #include "lldb/API/SBLanguageRuntime.h" -#include "lldb/API/SBReproducer.h" #include "lldb/API/SBStream.h" #include "lldb/API/SBStringList.h" +#include "lldb/API/SBStructuredData.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/Format.h" #include "llvm/Support/InitLLVM.h" #include "llvm/Support/Path.h" -#include "llvm/Support/Process.h" #include "llvm/Support/Signals.h" #include "llvm/Support/WithColor.h" #include "llvm/Support/raw_ostream.h" @@ -43,14 +42,6 @@ #include #include -// Includes for pipe() -#if defined(_WIN32) -#include -#include -#else -#include -#endif - #if !defined(__APPLE__) #include "llvm/Support/DataTypes.h" #endif @@ -68,11 +59,14 @@ enum ID { #undef OPTION }; -#define PREFIX(NAME, VALUE) const char *const NAME[] = VALUE; +#define PREFIX(NAME, VALUE) \ + static constexpr StringLiteral NAME##_init[] = VALUE; \ + static constexpr ArrayRef NAME(NAME##_init, \ + std::size(NAME##_init) - 1); #include "Options.inc" #undef PREFIX -const opt::OptTable::Info InfoTable[] = { +static constexpr opt::OptTable::Info InfoTable[] = { #define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ HELPTEXT, METAVAR, VALUES) \ { \ @@ -84,9 +78,9 @@ const opt::OptTable::Info InfoTable[] = { #undef OPTION }; -class LLDBOptTable : public opt::OptTable { +class LLDBOptTable : public opt::GenericOptTable { public: - LLDBOptTable() : OptTable(InfoTable) {} + LLDBOptTable() : opt::GenericOptTable(InfoTable) {} }; } // namespace @@ -94,6 +88,8 @@ static void reset_stdin_termios(); static bool g_old_stdin_termios_is_valid = false; static struct termios g_old_stdin_termios; +static bool disable_color(const raw_ostream &OS) { return false; } + static Driver *g_driver = nullptr; // In the Driver::MainLoop, we change the terminal settings. This function is @@ -194,6 +190,12 @@ SBError Driver::ProcessArgs(const opt::InputArgList &args, bool &exiting) { m_debugger.SkipLLDBInitFiles(false); m_debugger.SkipAppInitFiles(false); + if (args.hasArg(OPT_no_use_colors)) { + m_debugger.SetUseColor(false); + WithColor::setAutoDetectFunction(disable_color); + m_option_data.m_debug_mode = true; + } + if (args.hasArg(OPT_version)) { m_option_data.m_print_version = true; } @@ -201,6 +203,9 @@ SBError Driver::ProcessArgs(const opt::InputArgList &args, bool &exiting) { if (args.hasArg(OPT_python_path)) { m_option_data.m_print_python_path = true; } + if (args.hasArg(OPT_print_script_interpreter_info)) { + m_option_data.m_print_script_interpreter_info = true; + } if (args.hasArg(OPT_batch)) { m_option_data.m_batch = true; @@ -232,11 +237,6 @@ SBError Driver::ProcessArgs(const opt::InputArgList &args, bool &exiting) { m_debugger.GetInstanceName()); } - if (args.hasArg(OPT_no_use_colors)) { - m_debugger.SetUseColor(false); - m_option_data.m_debug_mode = true; - } - if (auto *arg = args.getLastArg(OPT_file)) { auto arg_value = arg->getValue(); SBFileSpec file(arg_value); @@ -301,6 +301,7 @@ SBError Driver::ProcessArgs(const opt::InputArgList &args, bool &exiting) { arg_value); return error; } + m_debugger.SetREPLLanguage(m_option_data.m_repl_lang); } if (args.hasArg(OPT_repl)) { @@ -398,61 +399,23 @@ SBError Driver::ProcessArgs(const opt::InputArgList &args, bool &exiting) { return error; } - return error; -} - -static inline int OpenPipe(int fds[2], std::size_t size) { -#ifdef _WIN32 - return _pipe(fds, size, O_BINARY); -#else - (void)size; - return pipe(fds); -#endif -} - -static ::FILE *PrepareCommandsForSourcing(const char *commands_data, - size_t commands_size) { - enum PIPES { READ, WRITE }; // Indexes for the read and write fds - int fds[2] = {-1, -1}; - - if (OpenPipe(fds, commands_size) != 0) { - WithColor::error() - << "can't create pipe file descriptors for LLDB commands\n"; - return nullptr; - } - - ssize_t nrwr = write(fds[WRITE], commands_data, commands_size); - if (size_t(nrwr) != commands_size) { - WithColor::error() - << format( - "write(%i, %p, %" PRIu64 - ") failed (errno = %i) when trying to open LLDB commands pipe", - fds[WRITE], static_cast(commands_data), - static_cast(commands_size), errno) - << '\n'; - llvm::sys::Process::SafelyCloseFileDescriptor(fds[READ]); - llvm::sys::Process::SafelyCloseFileDescriptor(fds[WRITE]); - return nullptr; - } - - // Close the write end of the pipe, so that the command interpreter will exit - // when it consumes all the data. - llvm::sys::Process::SafelyCloseFileDescriptor(fds[WRITE]); - - // Open the read file descriptor as a FILE * that we can return as an input - // handle. - ::FILE *commands_file = fdopen(fds[READ], "rb"); - if (commands_file == nullptr) { - WithColor::error() << format("fdopen(%i, \"rb\") failed (errno = %i) " - "when trying to open LLDB commands pipe", - fds[READ], errno) - << '\n'; - llvm::sys::Process::SafelyCloseFileDescriptor(fds[READ]); - return nullptr; + if (m_option_data.m_print_script_interpreter_info) { + SBStructuredData info = + m_debugger.GetScriptInterpreterInfo(m_debugger.GetScriptLanguage()); + if (!info) { + error.SetErrorString("no script interpreter."); + } else { + SBStream stream; + error = info.GetAsJSON(stream); + if (error.Success()) { + llvm::outs() << stream.GetData() << '\n'; + } + } + exiting = true; + return error; } - // 'commands_file' now owns the read descriptor. - return commands_file; + return error; } std::string EscapeString(std::string arg) { @@ -494,9 +457,14 @@ int Driver::MainLoop() { SBCommandInterpreter sb_interpreter = m_debugger.GetCommandInterpreter(); - // Before we handle any options from the command line, we parse the - // REPL init file or the default file in the user's home directory. + // Process lldbinit files before handling any options from the command line. SBCommandReturnObject result; + sb_interpreter.SourceInitFileInGlobalDirectory(result); + if (m_option_data.m_debug_mode) { + result.PutError(m_debugger.GetErrorFile()); + result.PutOutput(m_debugger.GetOutputFile()); + } + sb_interpreter.SourceInitFileInHomeDirectory(result, m_option_data.m_repl); if (m_option_data.m_debug_mode) { result.PutError(m_debugger.GetErrorFile()); @@ -584,21 +552,15 @@ int Driver::MainLoop() { // Check if we have any data in the commands stream, and if so, save it to a // temp file // so we can then run the command interpreter using the file contents. - const char *commands_data = commands_stream.GetData(); - const size_t commands_size = commands_stream.GetSize(); - bool go_interactive = true; - if ((commands_data != nullptr) && (commands_size != 0u)) { - FILE *commands_file = - PrepareCommandsForSourcing(commands_data, commands_size); - - if (commands_file == nullptr) { - // We should have already printed an error in PrepareCommandsForSourcing. + if ((commands_stream.GetData() != nullptr) && + (commands_stream.GetSize() != 0u)) { + SBError error = m_debugger.SetInputString(commands_stream.GetData()); + if (error.Fail()) { + WithColor::error() << error.GetCString() << '\n'; return 1; } - m_debugger.SetInputFileHandle(commands_file, true); - // Set the debugger into Sync mode when running the command file. Otherwise // command files that run the target won't run in a sensible way. bool old_async = m_debugger.GetAsync(); @@ -609,6 +571,7 @@ int Driver::MainLoop() { options.SetSpawnThread(false); options.SetStopOnError(true); options.SetStopOnCrash(m_option_data.m_batch); + options.SetEchoCommands(!m_option_data.m_source_quietly); SBCommandInterpreterRunResult results = m_debugger.RunCommandInterpreter(options); @@ -630,12 +593,9 @@ int Driver::MainLoop() { SBStream crash_commands_stream; WriteCommandsForSourcing(eCommandPlacementAfterCrash, crash_commands_stream); - const char *crash_commands_data = crash_commands_stream.GetData(); - const size_t crash_commands_size = crash_commands_stream.GetSize(); - commands_file = - PrepareCommandsForSourcing(crash_commands_data, crash_commands_size); - if (commands_file != nullptr) { - m_debugger.SetInputFileHandle(commands_file, true); + SBError error = + m_debugger.SetInputString(crash_commands_stream.GetData()); + if (error.Success()) { SBCommandInterpreterRunResult local_results = m_debugger.RunCommandInterpreter(options); if (local_results.GetResult() == @@ -713,31 +673,30 @@ void sigint_handler(int signo) { _exit(signo); } -void sigtstp_handler(int signo) { +#ifndef _WIN32 +static void sigtstp_handler(int signo) { if (g_driver != nullptr) g_driver->GetDebugger().SaveInputTerminalState(); + // Unblock the signal and remove our handler. + sigset_t set; + sigemptyset(&set); + sigaddset(&set, signo); + pthread_sigmask(SIG_UNBLOCK, &set, nullptr); signal(signo, SIG_DFL); - kill(getpid(), signo); + + // Now re-raise the signal. We will immediately suspend... + raise(signo); + // ... and resume after a SIGCONT. + + // Now undo the modifications. + pthread_sigmask(SIG_BLOCK, &set, nullptr); signal(signo, sigtstp_handler); -} -void sigcont_handler(int signo) { if (g_driver != nullptr) g_driver->GetDebugger().RestoreInputTerminalState(); - - signal(signo, SIG_DFL); - kill(getpid(), signo); - signal(signo, sigcont_handler); -} - -void reproducer_handler(void *finalize_cmd) { - if (SBReproducer::Generate()) { - int result = std::system(static_cast(finalize_cmd)); - (void)result; - fflush(stdout); - } } +#endif static void printHelp(LLDBOptTable &table, llvm::StringRef tool_name) { std::string usage_str = tool_name.str() + " [options]"; @@ -785,88 +744,6 @@ EXAMPLES: llvm::outs() << examples << '\n'; } -static llvm::Optional InitializeReproducer(llvm::StringRef argv0, - opt::InputArgList &input_args) { - if (auto *finalize_path = input_args.getLastArg(OPT_reproducer_finalize)) { - if (const char *error = SBReproducer::Finalize(finalize_path->getValue())) { - WithColor::error() << "reproducer finalization failed: " << error << '\n'; - return 1; - } - - llvm::outs() << "********************\n"; - llvm::outs() << "Crash reproducer for "; - llvm::outs() << lldb::SBDebugger::GetVersionString() << '\n'; - llvm::outs() << '\n'; - llvm::outs() << "Reproducer written to '" << SBReproducer::GetPath() - << "'\n"; - llvm::outs() << '\n'; - llvm::outs() << "Before attaching the reproducer to a bug report:\n"; - llvm::outs() << " - Look at the directory to ensure you're willing to " - "share its content.\n"; - llvm::outs() - << " - Make sure the reproducer works by replaying the reproducer.\n"; - llvm::outs() << '\n'; - llvm::outs() << "Replay the reproducer with the following command:\n"; - llvm::outs() << argv0 << " -replay " << finalize_path->getValue() << "\n"; - llvm::outs() << "********************\n"; - return 0; - } - - if (auto *replay_path = input_args.getLastArg(OPT_replay)) { - SBReplayOptions replay_options; - replay_options.SetCheckVersion(!input_args.hasArg(OPT_no_version_check)); - replay_options.SetVerify(!input_args.hasArg(OPT_no_verification)); - if (const char *error = - SBReproducer::Replay(replay_path->getValue(), replay_options)) { - WithColor::error() << "reproducer replay failed: " << error << '\n'; - return 1; - } - return 0; - } - - bool capture = input_args.hasArg(OPT_capture); - bool generate_on_exit = input_args.hasArg(OPT_generate_on_exit); - auto *capture_path = input_args.getLastArg(OPT_capture_path); - - if (generate_on_exit && !capture) { - WithColor::warning() - << "-reproducer-generate-on-exit specified without -capture\n"; - } - - if (capture || capture_path) { - if (capture_path) { - if (!capture) - WithColor::warning() << "-capture-path specified without -capture\n"; - if (const char *error = SBReproducer::Capture(capture_path->getValue())) { - WithColor::error() << "reproducer capture failed: " << error << '\n'; - return 1; - } - } else { - const char *error = SBReproducer::Capture(); - if (error) { - WithColor::error() << "reproducer capture failed: " << error << '\n'; - return 1; - } - } - if (generate_on_exit) - SBReproducer::SetAutoGenerate(true); - - // Register the reproducer signal handler. - if (!input_args.hasArg(OPT_no_generate_on_signal)) { - if (const char *reproducer_path = SBReproducer::GetPath()) { - static std::string *finalize_cmd = new std::string(argv0); - finalize_cmd->append(" --reproducer-finalize '"); - finalize_cmd->append(reproducer_path); - finalize_cmd->append("'"); - llvm::sys::AddSignalHandler(reproducer_handler, - const_cast(finalize_cmd->c_str())); - } - } - } - - return llvm::None; -} - int main(int argc, char const *argv[]) { // Editline uses for example iswprint which is dependent on LC_CTYPE. std::setlocale(LC_ALL, ""); @@ -880,7 +757,7 @@ int main(int argc, char const *argv[]) { LLDBOptTable T; unsigned MissingArgIndex; unsigned MissingArgCount; - ArrayRef arg_arr = makeArrayRef(argv + 1, argc - 1); + ArrayRef arg_arr = ArrayRef(argv + 1, argc - 1); opt::InputArgList input_args = T.ParseArgs(arg_arr, MissingArgIndex, MissingArgCount); llvm::StringRef argv0 = llvm::sys::path::filename(argv[0]); @@ -908,24 +785,23 @@ int main(int argc, char const *argv[]) { return 1; } - if (auto exit_code = InitializeReproducer(argv[0], input_args)) { - return *exit_code; - } - SBError error = SBDebugger::InitializeWithErrorHandling(); if (error.Fail()) { WithColor::error() << "initialization failed: " << error.GetCString() << '\n'; return 1; } + + // Setup LLDB signal handlers once the debugger has been initialized. + SBDebugger::PrintDiagnosticsOnError(); + SBHostOS::ThreadCreated(""); signal(SIGINT, sigint_handler); -#if !defined(_MSC_VER) +#if !defined(_WIN32) signal(SIGPIPE, SIG_IGN); signal(SIGWINCH, sigwinch_handler); signal(SIGTSTP, sigtstp_handler); - signal(SIGCONT, sigcont_handler); #endif int exit_code = 0; diff --git a/gnu/llvm/lldb/tools/lldb-server/CMakeLists.txt b/gnu/llvm/lldb/tools/lldb-server/CMakeLists.txt index 98c0a331f0f..facbd8e1784 100644 --- a/gnu/llvm/lldb/tools/lldb-server/CMakeLists.txt +++ b/gnu/llvm/lldb/tools/lldb-server/CMakeLists.txt @@ -50,13 +50,15 @@ add_lldb_tool(lldb-server SystemInitializerLLGS.cpp LINK_LIBS - lldbBase lldbHost lldbInitialization + lldbVersion ${LLDB_PLUGINS} lldbPluginInstructionARM + lldbPluginInstructionLoongArch lldbPluginInstructionMIPS lldbPluginInstructionMIPS64 + lldbPluginInstructionRISCV ${LLDB_SYSTEM_LIBS} LINK_COMPONENTS diff --git a/gnu/llvm/lldb/tools/lldb-server/lldb-gdbserver.cpp b/gnu/llvm/lldb/tools/lldb-server/lldb-gdbserver.cpp index 8bda93af8b1..549e5505a49 100644 --- a/gnu/llvm/lldb/tools/lldb-server/lldb-gdbserver.cpp +++ b/gnu/llvm/lldb/tools/lldb-server/lldb-gdbserver.cpp @@ -17,7 +17,6 @@ #include #endif -#include "Acceptor.h" #include "LLDBServerUtilities.h" #include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.h" #include "Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h" @@ -26,9 +25,9 @@ #include "lldb/Host/FileSystem.h" #include "lldb/Host/Pipe.h" #include "lldb/Host/Socket.h" -#include "lldb/Host/StringConvert.h" #include "lldb/Host/common/NativeProcessProtocol.h" #include "lldb/Target/Process.h" +#include "lldb/Utility/LLDBLog.h" #include "lldb/Utility/Status.h" #include "llvm/ADT/StringRef.h" #include "llvm/Option/ArgList.h" @@ -100,7 +99,7 @@ static int g_sighup_received_count = 0; static void sighup_handler(MainLoopBase &mainloop) { ++g_sighup_received_count; - Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PROCESS)); + Log *log = GetLog(LLDBLog::Process); LLDB_LOGF(log, "lldb-server:%s swallowing SIGHUP (receive count=%d)", __FUNCTION__, g_sighup_received_count); @@ -169,15 +168,14 @@ void handle_launch(GDBRemoteCommunicationServerLLGS &gdb_server, } } -Status writeSocketIdToPipe(Pipe &port_pipe, const std::string &socket_id) { +Status writeSocketIdToPipe(Pipe &port_pipe, llvm::StringRef socket_id) { size_t bytes_written = 0; // Write the port number as a C string with the NULL terminator. - return port_pipe.Write(socket_id.c_str(), socket_id.size() + 1, - bytes_written); + return port_pipe.Write(socket_id.data(), socket_id.size() + 1, bytes_written); } Status writeSocketIdToPipe(const char *const named_pipe_path, - const std::string &socket_id) { + llvm::StringRef socket_id) { Pipe port_name_pipe; // Wait for 10 seconds for pipe to be opened. auto error = port_name_pipe.OpenAsWriterWithTimeout(named_pipe_path, false, @@ -188,7 +186,7 @@ Status writeSocketIdToPipe(const char *const named_pipe_path, } Status writeSocketIdToPipe(lldb::pipe_t unnamed_pipe, - const std::string &socket_id) { + llvm::StringRef socket_id) { Pipe port_pipe{LLDB_INVALID_PIPE, unnamed_pipe}; return writeSocketIdToPipe(port_pipe, socket_id); } @@ -202,129 +200,76 @@ void ConnectToRemote(MainLoop &mainloop, Status error; std::unique_ptr connection_up; + std::string url; + if (connection_fd != -1) { - // Build the connection string. - char connection_url[512]; - snprintf(connection_url, sizeof(connection_url), "fd://%d", connection_fd); + url = llvm::formatv("fd://{0}", connection_fd).str(); // Create the connection. #if LLDB_ENABLE_POSIX && !defined _WIN32 ::fcntl(connection_fd, F_SETFD, FD_CLOEXEC); #endif - connection_up.reset(new ConnectionFileDescriptor); - auto connection_result = connection_up->Connect(connection_url, &error); - if (connection_result != eConnectionStatusSuccess) { - fprintf(stderr, "error: failed to connect to client at '%s' " - "(connection status: %d)\n", - connection_url, static_cast(connection_result)); - exit(-1); - } - if (error.Fail()) { - fprintf(stderr, "error: failed to connect to client at '%s': %s\n", - connection_url, error.AsCString()); - exit(-1); - } } else if (!host_and_port.empty()) { - // Parse out host and port. - std::string final_host_and_port; - std::string connection_host; - std::string connection_port; - uint32_t connection_portno = 0; - - // If host_and_port starts with ':', default the host to be "localhost" and - // expect the remainder to be the port. - if (host_and_port[0] == ':') - final_host_and_port.append("localhost"); - final_host_and_port.append(host_and_port.str()); - - // Note: use rfind, because the host/port may look like "[::1]:12345". - const std::string::size_type colon_pos = final_host_and_port.rfind(':'); - if (colon_pos != std::string::npos) { - connection_host = final_host_and_port.substr(0, colon_pos); - connection_port = final_host_and_port.substr(colon_pos + 1); - connection_portno = StringConvert::ToUInt32(connection_port.c_str(), 0); + llvm::Expected url_exp = + LLGSArgToURL(host_and_port, reverse_connect); + if (!url_exp) { + llvm::errs() << llvm::formatv("error: invalid host:port or URL '{0}': " + "{1}\n", + host_and_port, + llvm::toString(url_exp.takeError())); + exit(-1); } + url = std::move(url_exp.get()); + } - if (reverse_connect) { - // llgs will connect to the gdb-remote client. - - // Ensure we have a port number for the connection. - if (connection_portno == 0) { - fprintf(stderr, "error: port number must be specified on when using " - "reverse connect\n"); - exit(1); - } - - // Build the connection string. - char connection_url[512]; - snprintf(connection_url, sizeof(connection_url), "connect://%s", - final_host_and_port.c_str()); - - // Create the connection. - connection_up.reset(new ConnectionFileDescriptor); - auto connection_result = connection_up->Connect(connection_url, &error); - if (connection_result != eConnectionStatusSuccess) { - fprintf(stderr, "error: failed to connect to client at '%s' " - "(connection status: %d)\n", - connection_url, static_cast(connection_result)); - exit(-1); - } - if (error.Fail()) { - fprintf(stderr, "error: failed to connect to client at '%s': %s\n", - connection_url, error.AsCString()); - exit(-1); - } - } else { - std::unique_ptr acceptor_up( - Acceptor::Create(final_host_and_port, false, error)); - if (error.Fail()) { - fprintf(stderr, "failed to create acceptor: %s\n", error.AsCString()); - exit(1); - } - error = acceptor_up->Listen(1); - if (error.Fail()) { - fprintf(stderr, "failed to listen: %s\n", error.AsCString()); - exit(1); - } - const std::string socket_id = acceptor_up->GetLocalSocketId(); - if (!socket_id.empty()) { - // If we have a named pipe to write the socket id back to, do that now. - if (named_pipe_path && named_pipe_path[0]) { - error = writeSocketIdToPipe(named_pipe_path, socket_id); - if (error.Fail()) - fprintf(stderr, "failed to write to the named pipe \'%s\': %s\n", - named_pipe_path, error.AsCString()); - } - // If we have an unnamed pipe to write the socket id back to, do that - // now. - else if (unnamed_pipe != LLDB_INVALID_PIPE) { - error = writeSocketIdToPipe(unnamed_pipe, socket_id); - if (error.Fail()) - fprintf(stderr, "failed to write to the unnamed pipe: %s\n", - error.AsCString()); - } - } else { - fprintf(stderr, - "unable to get the socket id for the listening connection\n"); - } + if (!url.empty()) { + // Create the connection or server. + std::unique_ptr conn_fd_up{ + new ConnectionFileDescriptor}; + auto connection_result = conn_fd_up->Connect( + url, + [named_pipe_path, unnamed_pipe](llvm::StringRef socket_id) { + // If we have a named pipe to write the socket id back to, do that + // now. + if (named_pipe_path && named_pipe_path[0]) { + Status error = writeSocketIdToPipe(named_pipe_path, socket_id); + if (error.Fail()) + llvm::errs() << llvm::formatv( + "failed to write to the named peipe '{0}': {1}\n", + named_pipe_path, error.AsCString()); + } + // If we have an unnamed pipe to write the socket id back to, do + // that now. + else if (unnamed_pipe != LLDB_INVALID_PIPE) { + Status error = writeSocketIdToPipe(unnamed_pipe, socket_id); + if (error.Fail()) + llvm::errs() << llvm::formatv( + "failed to write to the unnamed pipe: {0}\n", error); + } + }, + &error); - Connection *conn = nullptr; - error = acceptor_up->Accept(false, conn); - if (error.Fail()) { - printf("failed to accept new connection: %s\n", error.AsCString()); - exit(1); - } - connection_up.reset(conn); + if (error.Fail()) { + llvm::errs() << llvm::formatv( + "error: failed to connect to client at '{0}': {1}\n", url, error); + exit(-1); + } + if (connection_result != eConnectionStatusSuccess) { + llvm::errs() << llvm::formatv( + "error: failed to connect to client at '{0}' " + "(connection status: {1})\n", + url, static_cast(connection_result)); + exit(-1); } + connection_up = std::move(conn_fd_up); } error = gdb_server.InitializeConnection(std::move(connection_up)); if (error.Fail()) { - fprintf(stderr, "Failed to initialize connection: %s\n", - error.AsCString()); + llvm::errs() << llvm::formatv("failed to initialize connection\n", error); exit(-1); } - printf("Connection established.\n"); + llvm::outs() << "Connection established.\n"; } namespace { @@ -337,11 +282,14 @@ enum ID { #undef OPTION }; -#define PREFIX(NAME, VALUE) const char *const NAME[] = VALUE; +#define PREFIX(NAME, VALUE) \ + constexpr llvm::StringLiteral NAME##_init[] = VALUE; \ + constexpr llvm::ArrayRef NAME( \ + NAME##_init, std::size(NAME##_init) - 1); #include "LLGSOptions.inc" #undef PREFIX -const opt::OptTable::Info InfoTable[] = { +static constexpr opt::OptTable::Info InfoTable[] = { #define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ HELPTEXT, METAVAR, VALUES) \ { \ @@ -353,9 +301,9 @@ const opt::OptTable::Info InfoTable[] = { #undef OPTION }; -class LLGSOptTable : public opt::OptTable { +class LLGSOptTable : public opt::GenericOptTable { public: - LLGSOptTable() : OptTable(InfoTable) {} + LLGSOptTable() : opt::GenericOptTable(InfoTable) {} void PrintHelp(llvm::StringRef Name) { std::string Usage = diff --git a/gnu/llvm/lldb/tools/lldb-server/lldb-server.exports b/gnu/llvm/lldb/tools/lldb-server/lldb-server.exports deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/gnu/llvm/lldb/unittests/API/CMakeLists.txt b/gnu/llvm/lldb/unittests/API/CMakeLists.txt deleted file mode 100644 index 7bdc1e3e87c..00000000000 --- a/gnu/llvm/lldb/unittests/API/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -add_lldb_unittest(APITests - SBCommandInterpreterTest.cpp - SBStructuredDataTest.cpp - - LINK_LIBS - liblldb - ) - -if(Python3_RPATH) - set_property(TARGET APITests APPEND PROPERTY BUILD_RPATH "${Python3_RPATH}") -endif() diff --git a/gnu/llvm/lldb/unittests/API/SBCommandInterpreterTest.cpp b/gnu/llvm/lldb/unittests/API/SBCommandInterpreterTest.cpp deleted file mode 100644 index d117c08c0bf..00000000000 --- a/gnu/llvm/lldb/unittests/API/SBCommandInterpreterTest.cpp +++ /dev/null @@ -1,138 +0,0 @@ -//===-- SBCommandInterpreterTest.cpp ------------------------===----------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===/ - -#include "gtest/gtest.h" - -#include "lldb/API/SBCommandInterpreter.h" -#include "lldb/API/SBCommandReturnObject.h" -#include "lldb/API/SBDebugger.h" - -#include -#include - -using namespace lldb; - -class SBCommandInterpreterTest : public testing::Test { -protected: - void SetUp() override { - SBDebugger::Initialize(); - m_dbg = SBDebugger::Create(/*source_init_files=*/false); - m_interp = m_dbg.GetCommandInterpreter(); - } - - SBDebugger m_dbg; - SBCommandInterpreter m_interp; -}; - -class DummyCommand : public SBCommandPluginInterface { -public: - DummyCommand(const char *message) : m_message(message) {} - - bool DoExecute(SBDebugger dbg, char **command, - SBCommandReturnObject &result) { - result.PutCString(m_message.c_str()); - result.SetStatus(eReturnStatusSuccessFinishResult); - return result.Succeeded(); - } - -private: - std::string m_message; -}; - -TEST_F(SBCommandInterpreterTest, SingleWordCommand) { - // We first test a command without autorepeat - DummyCommand dummy("It worked"); - m_interp.AddCommand("dummy", &dummy, /*help=*/nullptr); - { - SBCommandReturnObject result; - m_interp.HandleCommand("dummy", result, /*add_to_history=*/true); - EXPECT_TRUE(result.Succeeded()); - EXPECT_STREQ(result.GetOutput(), "It worked\n"); - } - { - SBCommandReturnObject result; - m_interp.HandleCommand("", result); - EXPECT_FALSE(result.Succeeded()); - EXPECT_STREQ(result.GetError(), "error: No auto repeat.\n"); - } - - // Now we test a command with autorepeat - m_interp.AddCommand("dummy_with_autorepeat", &dummy, /*help=*/nullptr, - /*syntax=*/nullptr, /*auto_repeat_command=*/nullptr); - { - SBCommandReturnObject result; - m_interp.HandleCommand("dummy_with_autorepeat", result, - /*add_to_history=*/true); - EXPECT_TRUE(result.Succeeded()); - EXPECT_STREQ(result.GetOutput(), "It worked\n"); - } - { - SBCommandReturnObject result; - m_interp.HandleCommand("", result); - EXPECT_TRUE(result.Succeeded()); - EXPECT_STREQ(result.GetOutput(), "It worked\n"); - } -} - -TEST_F(SBCommandInterpreterTest, MultiWordCommand) { - auto command = m_interp.AddMultiwordCommand("multicommand", /*help=*/nullptr); - // We first test a subcommand without autorepeat - DummyCommand subcommand("It worked again"); - command.AddCommand("subcommand", &subcommand, /*help=*/nullptr); - { - SBCommandReturnObject result; - m_interp.HandleCommand("multicommand subcommand", result, - /*add_to_history=*/true); - EXPECT_TRUE(result.Succeeded()); - EXPECT_STREQ(result.GetOutput(), "It worked again\n"); - } - { - SBCommandReturnObject result; - m_interp.HandleCommand("", result); - EXPECT_FALSE(result.Succeeded()); - EXPECT_STREQ(result.GetError(), "error: No auto repeat.\n"); - } - - // We first test a subcommand with autorepeat - command.AddCommand("subcommand_with_autorepeat", &subcommand, - /*help=*/nullptr, /*syntax=*/nullptr, - /*auto_repeat_command=*/nullptr); - { - SBCommandReturnObject result; - m_interp.HandleCommand("multicommand subcommand_with_autorepeat", result, - /*add_to_history=*/true); - EXPECT_TRUE(result.Succeeded()); - EXPECT_STREQ(result.GetOutput(), "It worked again\n"); - } - { - SBCommandReturnObject result; - m_interp.HandleCommand("", result); - EXPECT_TRUE(result.Succeeded()); - EXPECT_STREQ(result.GetOutput(), "It worked again\n"); - } - - DummyCommand subcommand2("It worked again 2"); - // We now test a subcommand with autorepeat of the command name - command.AddCommand( - "subcommand_with_custom_autorepeat", &subcommand2, /*help=*/nullptr, - /*syntax=*/nullptr, - /*auto_repeat_command=*/"multicommand subcommand_with_autorepeat"); - { - SBCommandReturnObject result; - m_interp.HandleCommand("multicommand subcommand_with_custom_autorepeat", - result, /*add_to_history=*/true); - EXPECT_TRUE(result.Succeeded()); - EXPECT_STREQ(result.GetOutput(), "It worked again 2\n"); - } - { - SBCommandReturnObject result; - m_interp.HandleCommand("", result); - EXPECT_TRUE(result.Succeeded()); - EXPECT_STREQ(result.GetOutput(), "It worked again\n"); - } -} diff --git a/gnu/llvm/lldb/unittests/API/SBStructuredDataTest.cpp b/gnu/llvm/lldb/unittests/API/SBStructuredDataTest.cpp deleted file mode 100644 index a3a33aad9a1..00000000000 --- a/gnu/llvm/lldb/unittests/API/SBStructuredDataTest.cpp +++ /dev/null @@ -1,35 +0,0 @@ -//===-- SBStructuredDataTest.cpp ------------------------===----------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===/ - -#include "gtest/gtest.h" - -#include "lldb/API/SBStringList.h" -#include "lldb/API/SBStructuredData.h" - -#include -#include - -using namespace lldb; - -class SBStructuredDataTest : public testing::Test {}; - -TEST_F(SBStructuredDataTest, NullImpl) { - SBStructuredData data(nullptr); - EXPECT_EQ(data.GetType(), eStructuredDataTypeInvalid); - EXPECT_EQ(data.GetSize(), 0ul); - SBStringList keys; - EXPECT_FALSE(data.GetKeys(keys)); - EXPECT_EQ(data.GetValueForKey("key").GetType(), eStructuredDataTypeInvalid); - EXPECT_EQ(data.GetItemAtIndex(0).GetType(), eStructuredDataTypeInvalid); - EXPECT_EQ(data.GetIntegerValue(UINT64_MAX), UINT64_MAX); - EXPECT_EQ(data.GetFloatValue(DBL_MAX), DBL_MAX); - EXPECT_TRUE(data.GetBooleanValue(true)); - EXPECT_FALSE(data.GetBooleanValue(false)); - char dst[1]; - EXPECT_EQ(data.GetStringValue(dst, sizeof(dst)), 0ul); -} diff --git a/gnu/llvm/lldb/unittests/Breakpoint/BreakpointIDTest.cpp b/gnu/llvm/lldb/unittests/Breakpoint/BreakpointIDTest.cpp deleted file mode 100644 index 7d1695e6e3c..00000000000 --- a/gnu/llvm/lldb/unittests/Breakpoint/BreakpointIDTest.cpp +++ /dev/null @@ -1,29 +0,0 @@ -//===-- BreakpointIDTest.cpp ----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Breakpoint/BreakpointID.h" -#include "lldb/Utility/Status.h" - -#include "llvm/ADT/StringRef.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(BreakpointIDTest, StringIsBreakpointName) { - Status E; - EXPECT_FALSE(BreakpointID::StringIsBreakpointName("1breakpoint", E)); - EXPECT_FALSE(BreakpointID::StringIsBreakpointName("-", E)); - EXPECT_FALSE(BreakpointID::StringIsBreakpointName("", E)); - EXPECT_FALSE(BreakpointID::StringIsBreakpointName("3.4", E)); - - EXPECT_TRUE(BreakpointID::StringIsBreakpointName("_", E)); - EXPECT_TRUE(BreakpointID::StringIsBreakpointName("a123", E)); - EXPECT_TRUE(BreakpointID::StringIsBreakpointName("test", E)); -} diff --git a/gnu/llvm/lldb/unittests/Breakpoint/CMakeLists.txt b/gnu/llvm/lldb/unittests/Breakpoint/CMakeLists.txt deleted file mode 100644 index 3164af237a7..00000000000 --- a/gnu/llvm/lldb/unittests/Breakpoint/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -add_lldb_unittest(LLDBBreakpointTests - BreakpointIDTest.cpp - - LINK_LIBS - lldbBreakpoint - lldbCore - LINK_COMPONENTS - Support - ) diff --git a/gnu/llvm/lldb/unittests/CMakeLists.txt b/gnu/llvm/lldb/unittests/CMakeLists.txt deleted file mode 100644 index e7b0f1c17d6..00000000000 --- a/gnu/llvm/lldb/unittests/CMakeLists.txt +++ /dev/null @@ -1,100 +0,0 @@ -add_custom_target(LLDBUnitTests) -set_target_properties(LLDBUnitTests PROPERTIES FOLDER "lldb tests") - -add_dependencies(lldb-unit-test-deps LLDBUnitTests) - -include_directories(${LLDB_SOURCE_ROOT}) -include_directories(${LLDB_PROJECT_ROOT}/unittests) - -if (CXX_SUPPORTS_SUGGEST_OVERRIDE_FLAG) - add_compile_options("-Wno-suggest-override") -endif() - -set(LLDB_GTEST_COMMON_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/gtest_common.h) -if (MSVC) - list(APPEND LLVM_COMPILE_FLAGS /FI ${LLDB_GTEST_COMMON_INCLUDE}) -else () - list(APPEND LLVM_COMPILE_FLAGS -include ${LLDB_GTEST_COMMON_INCLUDE}) -endif () - -if (LLDB_BUILT_STANDALONE) - # Build the gtest library needed for unittests, if we have LLVM sources - # handy. - if (EXISTS ${LLVM_MAIN_SRC_DIR}/utils/unittest AND NOT TARGET gtest) - add_subdirectory(${LLVM_MAIN_SRC_DIR}/utils/unittest utils/unittest) - endif() - # LLVMTestingSupport library is needed for Process/gdb-remote. - if (EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Testing/Support - AND NOT TARGET LLVMTestingSupport) - add_subdirectory(${LLVM_MAIN_SRC_DIR}/lib/Testing/Support - lib/Testing/Support) - endif() -endif() - -function(add_lldb_unittest test_name) - cmake_parse_arguments(ARG - "" - "" - "LINK_LIBS;LINK_COMPONENTS" - ${ARGN}) - - if (NOT ${test_name} MATCHES "Tests$") - message(FATAL_ERROR "Unit test name must end with 'Tests' for lit to find it.") - endif() - - list(APPEND LLVM_LINK_COMPONENTS ${ARG_LINK_COMPONENTS}) - - add_unittest(LLDBUnitTests - ${test_name} - ${ARG_UNPARSED_ARGUMENTS} - ) - - add_custom_command( - TARGET ${test_name} - POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/Inputs) - - target_link_libraries(${test_name} PRIVATE ${ARG_LINK_LIBS}) -endfunction() - -function(add_unittest_inputs test_name inputs) - foreach (INPUT ${inputs}) - add_custom_command( - TARGET ${test_name} - POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Inputs/${INPUT} ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/Inputs - COMMENT "Copying ${INPUT} to binary directory.") - endforeach() -endfunction() - -add_subdirectory(TestingSupport) -if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows") - # FIXME: APITests.exe is not a valid googletest binary. - add_subdirectory(API) -endif() -add_subdirectory(Breakpoint) -add_subdirectory(Core) -add_subdirectory(DataFormatter) -add_subdirectory(Disassembler) -add_subdirectory(Editline) -add_subdirectory(Expression) -add_subdirectory(Host) -add_subdirectory(Interpreter) -add_subdirectory(Instruction) -add_subdirectory(Language) -add_subdirectory(ObjectFile) -add_subdirectory(Platform) -add_subdirectory(Process) -add_subdirectory(ScriptInterpreter) -add_subdirectory(Signals) -add_subdirectory(Symbol) -add_subdirectory(SymbolFile) -add_subdirectory(Target) -add_subdirectory(tools) -add_subdirectory(UnwindAssembly) -add_subdirectory(Utility) -add_subdirectory(Thread) - -if(LLDB_CAN_USE_DEBUGSERVER AND LLDB_TOOL_DEBUGSERVER_BUILD AND NOT LLDB_USE_SYSTEM_DEBUGSERVER) - add_subdirectory(debugserver) -endif() diff --git a/gnu/llvm/lldb/unittests/Core/CMakeLists.txt b/gnu/llvm/lldb/unittests/Core/CMakeLists.txt deleted file mode 100644 index dfe017b3c9c..00000000000 --- a/gnu/llvm/lldb/unittests/Core/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -add_lldb_unittest(LLDBCoreTests - CommunicationTest.cpp - DumpDataExtractorTest.cpp - FormatEntityTest.cpp - MangledTest.cpp - ModuleSpecTest.cpp - RichManglingContextTest.cpp - SourceLocationSpecTest.cpp - SourceManagerTest.cpp - StreamCallbackTest.cpp - UniqueCStringMapTest.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbSymbol - lldbPluginObjectFileELF - lldbPluginObjectFileMachO - lldbPluginObjectFilePECOFF - lldbPluginSymbolFileSymtab - lldbUtilityHelpers - LLVMTestingSupport - LINK_COMPONENTS - Support - ) diff --git a/gnu/llvm/lldb/unittests/Core/CommunicationTest.cpp b/gnu/llvm/lldb/unittests/Core/CommunicationTest.cpp deleted file mode 100644 index 3ddc78d4a5a..00000000000 --- a/gnu/llvm/lldb/unittests/Core/CommunicationTest.cpp +++ /dev/null @@ -1,37 +0,0 @@ -//===-- CommunicationTest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Core/Communication.h" -#include "lldb/Host/ConnectionFileDescriptor.h" -#include "lldb/Host/Pipe.h" -#include "llvm/Testing/Support/Error.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -#ifndef _WIN32 -TEST(CommunicationTest, SynchronizeWhileClosing) { - // Set up a communication object reading from a pipe. - Pipe pipe; - ASSERT_THAT_ERROR(pipe.CreateNew(/*child_process_inherit=*/false).ToError(), - llvm::Succeeded()); - - Communication comm("test"); - comm.SetConnection(std::make_unique( - pipe.ReleaseReadFileDescriptor(), /*owns_fd=*/true)); - comm.SetCloseOnEOF(true); - ASSERT_TRUE(comm.StartReadThread()); - - // Ensure that we can safely synchronize with the read thread while it is - // closing the read end (in response to us closing the write end). - pipe.CloseWriteFileDescriptor(); - comm.SynchronizeWithReadThread(); - - ASSERT_TRUE(comm.StopReadThread()); -} -#endif diff --git a/gnu/llvm/lldb/unittests/Core/DumpDataExtractorTest.cpp b/gnu/llvm/lldb/unittests/Core/DumpDataExtractorTest.cpp deleted file mode 100644 index f76014aa938..00000000000 --- a/gnu/llvm/lldb/unittests/Core/DumpDataExtractorTest.cpp +++ /dev/null @@ -1,387 +0,0 @@ -//===-- DataDumpExtractorTest.cpp -----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Core/DumpDataExtractor.h" -#include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/DataExtractor.h" -#include "lldb/Utility/Endian.h" -#include "lldb/Utility/StreamString.h" -#include "gtest/gtest.h" -#include -#include - -using namespace lldb; -using namespace lldb_private; - -static void TestDumpWithAddress(uint64_t base_addr, size_t item_count, - llvm::StringRef expected) { - std::vector data{0x11, 0x22}; - StreamString result; - DataBufferHeap dumpbuffer(&data[0], data.size()); - DataExtractor extractor(dumpbuffer.GetBytes(), dumpbuffer.GetByteSize(), - endian::InlHostByteOrder(), /*addr_size=*/4); - - DumpDataExtractor(extractor, &result, 0, lldb::Format::eFormatHex, - /*item_byte_size=*/1, item_count, - /*num_per_line=*/1, base_addr, 0, 0); - ASSERT_EQ(expected, result.GetString()); -} - -TEST(DumpDataExtractorTest, BaseAddress) { - TestDumpWithAddress(0x12341234, 1, "0x12341234: 0x11"); - TestDumpWithAddress(LLDB_INVALID_ADDRESS, 1, "0x11"); - TestDumpWithAddress(0x12341234, 2, "0x12341234: 0x11\n0x12341235: 0x22"); - TestDumpWithAddress(LLDB_INVALID_ADDRESS, 2, "0x11\n0x22"); -} - -static void TestDumpWithOffset(offset_t start_offset, - llvm::StringRef expected) { - std::vector data{0x11, 0x22, 0x33}; - StreamString result; - DataBufferHeap dumpbuffer(&data[0], data.size()); - DataExtractor extractor(dumpbuffer.GetBytes(), dumpbuffer.GetByteSize(), - endian::InlHostByteOrder(), /*addr_size=*/4); - - DumpDataExtractor(extractor, &result, start_offset, lldb::Format::eFormatHex, - /*item_byte_size=*/1, /*item_count=*/data.size(), - /*num_per_line=*/data.size(), /*base_addr=*/0, 0, 0); - ASSERT_EQ(expected, result.GetString()); -} - -TEST(DumpDataExtractorTest, StartOffset) { - TestDumpWithOffset(0, "0x00000000: 0x11 0x22 0x33"); - // The offset applies to the DataExtractor, not the address used when - // formatting. - TestDumpWithOffset(1, "0x00000000: 0x22 0x33"); - // If the offset is outside the DataExtractor's range we do nothing. - TestDumpWithOffset(3, ""); -} - -TEST(DumpDataExtractorTest, NullStream) { - // We don't do any work if there is no output stream. - uint8_t c = 0x11; - StreamString result; - DataBufferHeap dumpbuffer(&c, 0); - DataExtractor extractor(dumpbuffer.GetBytes(), dumpbuffer.GetByteSize(), - endian::InlHostByteOrder(), /*addr_size=*/4); - - DumpDataExtractor(extractor, nullptr, 0, lldb::Format::eFormatHex, - /*item_byte_size=*/1, /*item_count=*/1, - /*num_per_line=*/1, /*base_addr=*/0, 0, 0); - ASSERT_EQ("", result.GetString()); -} - -static void TestDumpImpl(const void *data, size_t data_size, - size_t item_byte_size, size_t item_count, - size_t num_per_line, uint64_t base_addr, - lldb::Format format, llvm::StringRef expected) { - StreamString result; - DataBufferHeap dumpbuffer(data, data_size); - DataExtractor extractor(dumpbuffer.GetBytes(), dumpbuffer.GetByteSize(), - endian::InlHostByteOrder(), - /*addr_size=*/4); - DumpDataExtractor(extractor, &result, 0, format, item_byte_size, item_count, - num_per_line, base_addr, 0, 0); - ASSERT_EQ(expected, result.GetString()); -} - -template -static void TestDump(T data, lldb::Format format, llvm::StringRef expected) { - TestDumpImpl(&data, sizeof(T), sizeof(T), 1, 1, LLDB_INVALID_ADDRESS, format, - expected); -} - -static void TestDump(llvm::StringRef str, lldb::Format format, - llvm::StringRef expected) { - TestDumpImpl(str.bytes_begin(), - // +1 to include the NULL char as the last byte - str.size() + 1, str.size() + 1, 1, 1, LLDB_INVALID_ADDRESS, - format, expected); -} - -template -static void TestDump(const std::vector data, lldb::Format format, - llvm::StringRef expected) { - size_t sz_bytes = data.size() * sizeof(T); - TestDumpImpl(&data[0], sz_bytes, sz_bytes, data.size(), 1, - LLDB_INVALID_ADDRESS, format, expected); -} - -TEST(DumpDataExtractorTest, Formats) { - TestDump(1, lldb::eFormatDefault, "0x01"); - TestDump(1, lldb::eFormatBoolean, "true"); - TestDump(0xAA, lldb::eFormatBinary, "0b10101010"); - TestDump(1, lldb::eFormatBytes, "01"); - TestDump(1, lldb::eFormatBytesWithASCII, "01 ."); - TestDump('?', lldb::eFormatChar, "'?'"); - TestDump('\x1A', lldb::eFormatCharPrintable, "."); - TestDump('#', lldb::eFormatCharPrintable, "#"); - TestDump(std::complex(1.2, 3.4), lldb::eFormatComplex, "1.2 + 3.4i"); - TestDump(std::complex(4.5, 6.7), lldb::eFormatComplex, "4.5 + 6.7i"); - - // long double is not tested here because for some platforms we treat it as 10 - // bytes when the compiler allocates 16 bytes of space for it. (see - // DataExtractor::GetLongDouble) Meaning that when we extract the second one, - // it gets the wrong value (it's 6 bytes off). You could manually construct a - // set of bytes to match the 10 byte format but then if the test runs on a - // machine where we don't use 10 it'll break. - - TestDump(llvm::StringRef("aardvark"), lldb::Format::eFormatCString, - "\"aardvark\""); - TestDump(99, lldb::Format::eFormatDecimal, "99"); - // Just prints as a signed integer. - TestDump(-1, lldb::Format::eFormatEnum, "-1"); - TestDump(0xcafef00d, lldb::Format::eFormatHex, "0xcafef00d"); - TestDump(0xcafef00d, lldb::Format::eFormatHexUppercase, "0xCAFEF00D"); - TestDump(0.456, lldb::Format::eFormatFloat, "0.456"); - TestDump(9, lldb::Format::eFormatOctal, "011"); - // Chars packed into an integer. - TestDump(0x4C4C4442, lldb::Format::eFormatOSType, "'LLDB'"); - // Unicode8 doesn't have a specific formatter. - TestDump(0x34, lldb::Format::eFormatUnicode8, "0x34"); - TestDump(0x1122, lldb::Format::eFormatUnicode16, "U+1122"); - TestDump(0x12345678, lldb::Format::eFormatUnicode32, - "U+0x12345678"); - TestDump(654321, lldb::Format::eFormatUnsigned, "654321"); - // This pointer is printed based on the size of uint64_t, so the test is the - // same for 32/64 bit host. - TestDump(0x4444555566667777, lldb::Format::eFormatPointer, - "0x4444555566667777"); - - TestDump(std::vector{'A', '\x01', 'C'}, - lldb::Format::eFormatVectorOfChar, "{A\\x01C}"); - TestDump(std::vector{0, -1, std::numeric_limits::max()}, - lldb::Format::eFormatVectorOfSInt8, "{0 -1 127}"); - TestDump(std::vector{12, 0xFF, 34}, - lldb::Format::eFormatVectorOfUInt8, "{0x0c 0xff 0x22}"); - TestDump(std::vector{-1, 1234, std::numeric_limits::max()}, - lldb::Format::eFormatVectorOfSInt16, "{-1 1234 32767}"); - TestDump(std::vector{0xffff, 0xabcd, 0x1234}, - lldb::Format::eFormatVectorOfUInt16, "{0xffff 0xabcd 0x1234}"); - TestDump(std::vector{0, -1, std::numeric_limits::max()}, - lldb::Format::eFormatVectorOfSInt32, "{0 -1 2147483647}"); - TestDump(std::vector{0, 0xffffffff, 0x1234abcd}, - lldb::Format::eFormatVectorOfUInt32, - "{0x00000000 0xffffffff 0x1234abcd}"); - TestDump(std::vector{0, -1, std::numeric_limits::max()}, - lldb::Format::eFormatVectorOfSInt64, "{0 -1 9223372036854775807}"); - TestDump(std::vector{0, 0xaaaabbbbccccdddd}, - lldb::Format::eFormatVectorOfUInt64, - "{0x0000000000000000 0xaaaabbbbccccdddd}"); - - // See half2float for format details. - // Test zeroes. - TestDump(std::vector{0x0000, 0x8000}, - lldb::Format::eFormatVectorOfFloat16, "{0 -0}"); - // Some subnormal numbers. - TestDump(std::vector{0x0001, 0x8001}, - lldb::Format::eFormatVectorOfFloat16, "{5.96046e-08 -5.96046e-08}"); - // A full mantisse and empty expontent. - TestDump(std::vector{0x83ff, 0x03ff}, - lldb::Format::eFormatVectorOfFloat16, "{-6.09756e-05 6.09756e-05}"); - // Some normal numbers. - TestDump(std::vector{0b0100001001001000}, - lldb::Format::eFormatVectorOfFloat16, -#ifdef _WIN32 - // FIXME: This should print the same on all platforms. - "{3.14063}"); -#else - "{3.14062}"); -#endif - // Largest and smallest normal number. - TestDump(std::vector{0x0400, 0x7bff}, - lldb::Format::eFormatVectorOfFloat16, "{6.10352e-05 65504}"); - TestDump(std::vector{0xabcd, 0x1234}, - lldb::Format::eFormatVectorOfFloat16, "{-0.0609436 0.000757217}"); - - // quiet/signaling NaNs. - TestDump(std::vector{0xffff, 0xffc0, 0x7fff, 0x7fc0}, - lldb::Format::eFormatVectorOfFloat16, "{-nan -nan nan nan}"); - // +/-Inf. - TestDump(std::vector{0xfc00, 0x7c00}, - lldb::Format::eFormatVectorOfFloat16, "{-inf inf}"); - - TestDump(std::vector{std::numeric_limits::min(), - std::numeric_limits::max()}, - lldb::Format::eFormatVectorOfFloat32, "{1.17549e-38 3.40282e+38}"); - TestDump(std::vector{std::numeric_limits::quiet_NaN(), - std::numeric_limits::signaling_NaN(), - -std::numeric_limits::quiet_NaN(), - -std::numeric_limits::signaling_NaN()}, - lldb::Format::eFormatVectorOfFloat32, "{nan nan -nan -nan}"); - TestDump(std::vector{std::numeric_limits::min(), - std::numeric_limits::max()}, - lldb::Format::eFormatVectorOfFloat64, - "{2.2250738585072e-308 1.79769313486232e+308}"); - TestDump( - std::vector{ - std::numeric_limits::quiet_NaN(), - std::numeric_limits::signaling_NaN(), - -std::numeric_limits::quiet_NaN(), - -std::numeric_limits::signaling_NaN(), - }, - lldb::Format::eFormatVectorOfFloat64, "{nan nan -nan -nan}"); - - // Not sure we can rely on having uint128_t everywhere so emulate with - // uint64_t. - TestDump( - std::vector{0x1, 0x1111222233334444, 0xaaaabbbbccccdddd, 0x0}, - lldb::Format::eFormatVectorOfUInt128, - "{0x11112222333344440000000000000001 " - "0x0000000000000000aaaabbbbccccdddd}"); - - TestDump(std::vector{2, 4}, lldb::Format::eFormatComplexInteger, - "2 + 4i"); - - // Without an execution context this just prints the pointer on its own. - TestDump(0x11223344, lldb::Format::eFormatAddressInfo, - "0x11223344"); - - // Input not written in hex form because that requires C++17. - TestDump(10, lldb::Format::eFormatHexFloat, "0x1.4p3"); - TestDump(10, lldb::Format::eFormatHexFloat, "0x1.4p3"); - // long double not supported, see ItemByteSizeErrors. - - // Can't disassemble without an execution context. - TestDump(0xcafef00d, lldb::Format::eFormatInstruction, - "invalid target"); - - // Has no special handling, intended for use elsewhere. - TestDump(99, lldb::Format::eFormatVoid, "0x00000063"); -} - -TEST(DumpDataExtractorTest, FormatCharArray) { - // Unlike the other formats, charArray isn't 1 array of N chars. - // It must be passed as N chars of 1 byte each. - // (eFormatVectorOfChar does this swap for you) - std::vector data{'A', '\x01', '#'}; - StreamString result; - DataBufferHeap dumpbuffer(&data[0], data.size()); - DataExtractor extractor(dumpbuffer.GetBytes(), dumpbuffer.GetByteSize(), - endian::InlHostByteOrder(), /*addr_size=*/4); - - DumpDataExtractor(extractor, &result, 0, lldb::Format::eFormatCharArray, - /*item_byte_size=*/1, - /*item_count=*/data.size(), - /*num_per_line=*/data.size(), 0, 0, 0); - ASSERT_EQ("0x00000000: A\\x01#", result.GetString()); - - result.Clear(); - DumpDataExtractor(extractor, &result, 0, lldb::Format::eFormatCharArray, 1, - data.size(), 1, 0, 0, 0); - // ASSERT macro thinks the split strings are multiple arguments so make a var. - const char *expected = "0x00000000: A\n" - "0x00000001: \\x01\n" - "0x00000002: #"; - ASSERT_EQ(expected, result.GetString()); -} - -template -void TestDumpMultiLine(std::vector data, lldb::Format format, - size_t num_per_line, llvm::StringRef expected) { - size_t sz_bytes = data.size() * sizeof(T); - TestDumpImpl(&data[0], sz_bytes, data.size(), sz_bytes, num_per_line, - 0x80000000, format, expected); -} - -template -void TestDumpMultiLine(const T *data, size_t num_items, lldb::Format format, - size_t num_per_line, llvm::StringRef expected) { - TestDumpImpl(data, sizeof(T) * num_items, sizeof(T), num_items, num_per_line, - 0x80000000, format, expected); -} - -TEST(DumpDataExtractorTest, MultiLine) { - // A vector counts as 1 item regardless of size. - TestDumpMultiLine(std::vector{0x11}, - lldb::Format::eFormatVectorOfUInt8, 1, - "0x80000000: {0x11}"); - TestDumpMultiLine(std::vector{0x11, 0x22}, - lldb::Format::eFormatVectorOfUInt8, 1, - "0x80000000: {0x11 0x22}"); - - // If you have multiple vectors then that's multiple items. - // Here we say that these 2 bytes are actually 2 1 byte vectors. - const std::vector vector_data{0x11, 0x22}; - TestDumpMultiLine(vector_data.data(), 2, lldb::Format::eFormatVectorOfUInt8, - 1, "0x80000000: {0x11}\n0x80000001: {0x22}"); - - // Single value formats can span multiple lines. - const std::vector bytes{0x11, 0x22, 0x33}; - const char *expected_bytes_3_line = "0x80000000: 0x11\n" - "0x80000001: 0x22\n" - "0x80000002: 0x33"; - TestDumpMultiLine(bytes.data(), bytes.size(), lldb::Format::eFormatHex, 1, - expected_bytes_3_line); - - // Lines may not have the full number of items. - TestDumpMultiLine(bytes.data(), bytes.size(), lldb::Format::eFormatHex, 4, - "0x80000000: 0x11 0x22 0x33"); - const char *expected_bytes_2_line = "0x80000000: 0x11 0x22\n" - "0x80000002: 0x33"; - TestDumpMultiLine(bytes.data(), bytes.size(), lldb::Format::eFormatHex, 2, - expected_bytes_2_line); - - // The line address accounts for item sizes other than 1 byte. - const std::vector shorts{0x1111, 0x2222, 0x3333}; - const char *expected_shorts_2_line = "0x80000000: 0x1111 0x2222\n" - "0x80000004: 0x3333"; - TestDumpMultiLine(shorts.data(), shorts.size(), lldb::Format::eFormatHex, 2, - expected_shorts_2_line); - - // The ascii column is positioned using the maximum line length. - const std::vector chars{'L', 'L', 'D', 'B'}; - const char *expected_chars_2_lines = "0x80000000: 4c 4c 44 LLD\n" - "0x80000003: 42 B"; - TestDumpMultiLine(chars.data(), chars.size(), - lldb::Format::eFormatBytesWithASCII, 3, - expected_chars_2_lines); -} - -void TestDumpWithItemByteSize(size_t item_byte_size, lldb::Format format, - llvm::StringRef expected) { - // We won't be reading this data so anything will do. - uint8_t dummy = 0; - TestDumpImpl(&dummy, 1, item_byte_size, 1, 1, LLDB_INVALID_ADDRESS, format, - expected); -} - -TEST(DumpDataExtractorTest, ItemByteSizeErrors) { - TestDumpWithItemByteSize( - 16, lldb::Format::eFormatBoolean, - "error: unsupported byte size (16) for boolean format"); - TestDumpWithItemByteSize(21, lldb::Format::eFormatChar, - "error: unsupported byte size (21) for char format"); - TestDumpWithItemByteSize( - 18, lldb::Format::eFormatComplexInteger, - "error: unsupported byte size (18) for complex integer format"); - - // The code uses sizeof(long double) for these checks. This changes by host - // but we know it won't be >16. - TestDumpWithItemByteSize( - 34, lldb::Format::eFormatComplex, - "error: unsupported byte size (34) for complex float format"); - TestDumpWithItemByteSize( - 18, lldb::Format::eFormatFloat, - "error: unsupported byte size (18) for float format"); - - // We want sizes to exactly match one of float/double. - TestDumpWithItemByteSize( - 14, lldb::Format::eFormatComplex, - "error: unsupported byte size (14) for complex float format"); - TestDumpWithItemByteSize(3, lldb::Format::eFormatFloat, - "error: unsupported byte size (3) for float format"); - - // We only allow float and double size. - TestDumpWithItemByteSize( - 1, lldb::Format::eFormatHexFloat, - "error: unsupported byte size (1) for hex float format"); - TestDumpWithItemByteSize( - 17, lldb::Format::eFormatHexFloat, - "error: unsupported byte size (17) for hex float format"); -} diff --git a/gnu/llvm/lldb/unittests/Core/FormatEntityTest.cpp b/gnu/llvm/lldb/unittests/Core/FormatEntityTest.cpp deleted file mode 100644 index c22dd439957..00000000000 --- a/gnu/llvm/lldb/unittests/Core/FormatEntityTest.cpp +++ /dev/null @@ -1,159 +0,0 @@ -//===-- FormatEntityTest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Core/FormatEntity.h" -#include "lldb/Utility/Status.h" - -#include "llvm/ADT/StringRef.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -using Definition = FormatEntity::Entry::Definition; -using Entry = FormatEntity::Entry; - -TEST(FormatEntityTest, DefinitionConstructionNameAndType) { - Definition d("foo", FormatEntity::Entry::Type::Invalid); - - EXPECT_EQ(d.name, "foo"); - EXPECT_EQ(d.string, nullptr); - EXPECT_EQ(d.type, FormatEntity::Entry::Type::Invalid); - EXPECT_EQ(d.data, 0UL); - EXPECT_EQ(d.num_children, 0UL); - EXPECT_EQ(d.children, nullptr); - EXPECT_FALSE(d.keep_separator); -} - -TEST(FormatEntityTest, DefinitionConstructionNameAndString) { - Definition d("foo", "string"); - - EXPECT_EQ(d.name, "foo"); - EXPECT_EQ(d.string, "string"); - EXPECT_EQ(d.type, FormatEntity::Entry::Type::EscapeCode); - EXPECT_EQ(d.data, 0UL); - EXPECT_EQ(d.num_children, 0UL); - EXPECT_EQ(d.children, nullptr); - EXPECT_FALSE(d.keep_separator); -} - -TEST(FormatEntityTest, DefinitionConstructionNameTypeData) { - Definition d("foo", FormatEntity::Entry::Type::Invalid, 33); - - EXPECT_EQ(d.name, "foo"); - EXPECT_EQ(d.string, nullptr); - EXPECT_EQ(d.type, FormatEntity::Entry::Type::Invalid); - EXPECT_EQ(d.data, 33UL); - EXPECT_EQ(d.num_children, 0UL); - EXPECT_EQ(d.children, nullptr); - EXPECT_FALSE(d.keep_separator); -} - -TEST(FormatEntityTest, DefinitionConstructionNameTypeChildren) { - Definition d("foo", FormatEntity::Entry::Type::Invalid, 33); - Definition parent("parent", FormatEntity::Entry::Type::Invalid, 1, &d); - EXPECT_EQ(parent.name, "parent"); - EXPECT_EQ(parent.string, nullptr); - EXPECT_EQ(parent.type, FormatEntity::Entry::Type::Invalid); - EXPECT_EQ(parent.num_children, 1UL); - EXPECT_EQ(parent.children, &d); - EXPECT_FALSE(parent.keep_separator); - - EXPECT_EQ(parent.children[0].name, "foo"); - EXPECT_EQ(parent.children[0].string, nullptr); - EXPECT_EQ(parent.children[0].type, FormatEntity::Entry::Type::Invalid); - EXPECT_EQ(parent.children[0].data, 33UL); - EXPECT_EQ(parent.children[0].num_children, 0UL); - EXPECT_EQ(parent.children[0].children, nullptr); - EXPECT_FALSE(d.keep_separator); -} - -constexpr llvm::StringRef lookupStrings[] = { - "${addr.load}", - "${addr.file}", - "${ansi.fg.black}", - "${ansi.fg.red}", - "${ansi.fg.green}", - "${ansi.fg.yellow}", - "${ansi.fg.blue}", - "${ansi.fg.purple}", - "${ansi.fg.cyan}", - "${ansi.fg.white}", - "${ansi.bg.black}", - "${ansi.bg.red}", - "${ansi.bg.green}", - "${ansi.bg.yellow}", - "${ansi.bg.blue}", - "${ansi.bg.purple}", - "${ansi.bg.cyan}", - "${ansi.bg.white}", - "${file.basename}", - "${file.dirname}", - "${file.fullpath}", - "${frame.index}", - "${frame.pc}", - "${frame.fp}", - "${frame.sp}", - "${frame.flags}", - "${frame.no-debug}", - "${frame.reg.*}", - "${frame.is-artificial}", - "${function.id}", - "${function.name}", - "${function.name-without-args}", - "${function.name-with-args}", - "${function.mangled-name}", - "${function.addr-offset}", - "${function.concrete-only-addr-offset-no-padding}", - "${function.line-offset}", - "${function.pc-offset}", - "${function.initial-function}", - "${function.changed}", - "${function.is-optimized}", - "${line.file.basename}", - "${line.file.dirname}", - "${line.file.fullpath}", - "${line.number}", - "${line.column}", - "${line.start-addr}", - "${line.end-addr}", - "${module.file.basename}", - "${module.file.dirname}", - "${module.file.fullpath}", - "${process.id}", - "${process.name}", - "${process.file.basename}", - "${process.file.dirname}", - "${process.file.fullpath}", - "${script.frame}", - "${script.process}", - "${script.target}", - "${script.thread}", - "${script.var}", - "${script.svar}", - "${script.thread}", - "${svar.dummy-svar-to-test-wildcard}", - "${thread.id}", - "${thread.protocol_id}", - "${thread.index}", - "${thread.info.*}", - "${thread.queue}", - "${thread.name}", - "${thread.stop-reason}", - "${thread.stop-reason-raw}", - "${thread.return-value}", - "${thread.completed-expression}", - "${target.arch}", - "${var.dummy-var-to-test-wildcard}"}; - -TEST(FormatEntity, LookupAllEntriesInTree) { - for (const llvm::StringRef testString : lookupStrings) { - Entry e; - EXPECT_TRUE(FormatEntity::Parse(testString, e).Success()) - << "Formatting " << testString << " did not succeed"; - } -} diff --git a/gnu/llvm/lldb/unittests/Core/MangledTest.cpp b/gnu/llvm/lldb/unittests/Core/MangledTest.cpp deleted file mode 100644 index 431993fccb1..00000000000 --- a/gnu/llvm/lldb/unittests/Core/MangledTest.cpp +++ /dev/null @@ -1,266 +0,0 @@ -//===-- MangledTest.cpp ---------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/ObjectFile/ELF/ObjectFileELF.h" -#include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" - -#include "lldb/Core/Mangled.h" -#include "lldb/Core/Module.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Symbol/SymbolContext.h" - -#include "llvm/Support/FileUtilities.h" -#include "llvm/Support/Path.h" -#include "llvm/Support/Program.h" -#include "llvm/Testing/Support/Error.h" - -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(MangledTest, ResultForValidName) { - ConstString MangledName("_ZN1a1b1cIiiiEEvm"); - Mangled TheMangled(MangledName); - ConstString TheDemangled = TheMangled.GetDemangledName(); - - ConstString ExpectedResult("void a::b::c(unsigned long)"); - EXPECT_STREQ(ExpectedResult.GetCString(), TheDemangled.GetCString()); -} - -TEST(MangledTest, ResultForBlockInvocation) { - ConstString MangledName("___Z1fU13block_pointerFviE_block_invoke"); - Mangled TheMangled(MangledName); - ConstString TheDemangled = TheMangled.GetDemangledName(); - - ConstString ExpectedResult( - "invocation function for block in f(void (int) block_pointer)"); - EXPECT_STREQ(ExpectedResult.GetCString(), TheDemangled.GetCString()); -} - -TEST(MangledTest, EmptyForInvalidName) { - ConstString MangledName("_ZN1a1b1cmxktpEEvm"); - Mangled TheMangled(MangledName); - ConstString TheDemangled = TheMangled.GetDemangledName(); - - EXPECT_STREQ("", TheDemangled.GetCString()); -} - -TEST(MangledTest, ResultForValidRustV0Name) { - ConstString mangled_name("_RNvC1a4main"); - Mangled the_mangled(mangled_name); - ConstString the_demangled = the_mangled.GetDemangledName(); - - ConstString expected_result("a::main"); - EXPECT_STREQ(expected_result.GetCString(), the_demangled.GetCString()); -} - -TEST(MangledTest, EmptyForInvalidRustV0Name) { - ConstString mangled_name("_RRR"); - Mangled the_mangled(mangled_name); - ConstString the_demangled = the_mangled.GetDemangledName(); - - EXPECT_STREQ("", the_demangled.GetCString()); -} - -TEST(MangledTest, NameIndexes_FindFunctionSymbols) { - SubsystemRAII - subsystems; - - auto ExpectedFile = TestFile::fromYaml(R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_X86_64 -Sections: - - Name: .text - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - AddressAlign: 0x0000000000000010 - Size: 0x20 - - Name: .anothertext - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0x0000000000000010 - AddressAlign: 0x0000000000000010 - Size: 0x40 - - Name: .data - Type: SHT_PROGBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x00000000000000A8 - AddressAlign: 0x0000000000000004 - Content: '01000000' -Symbols: - - Name: somedata - Type: STT_OBJECT - Section: .anothertext - Value: 0x0000000000000045 - Binding: STB_GLOBAL - - Name: main - Type: STT_FUNC - Section: .anothertext - Value: 0x0000000000000010 - Size: 0x000000000000003F - Binding: STB_GLOBAL - - Name: _Z3foov - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: puts@GLIBC_2.5 - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: puts@GLIBC_2.6 - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: _Z5annotv@VERSION3 - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: _ZN1AC2Ev - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: _ZN1AD2Ev - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: _ZN1A3barEv - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: _ZGVZN4llvm4dbgsEvE7thestrm - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: _ZZN4llvm4dbgsEvE7thestrm - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: _ZTVN5clang4DeclE - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: -[ObjCfoo] - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: +[B ObjCbar(WithCategory)] - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL - - Name: _Z12undemangableEvx42 - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - Binding: STB_GLOBAL -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - auto M = std::make_shared(ExpectedFile->moduleSpec()); - - auto Count = [M](const char *Name, FunctionNameType Type) -> int { - SymbolContextList SymList; - M->FindFunctionSymbols(ConstString(Name), Type, SymList); - return SymList.GetSize(); - }; - - // Unmangled - EXPECT_EQ(1, Count("main", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("main", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("main", eFunctionNameTypeMethod)); - - // Itanium mangled - EXPECT_EQ(1, Count("_Z3foov", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_Z3foov", eFunctionNameTypeBase)); - EXPECT_EQ(1, Count("foo", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("foo", eFunctionNameTypeMethod)); - - // Unmangled with linker annotation - EXPECT_EQ(1, Count("puts@GLIBC_2.5", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("puts@GLIBC_2.6", eFunctionNameTypeFull)); - EXPECT_EQ(2, Count("puts", eFunctionNameTypeFull)); - EXPECT_EQ(2, Count("puts", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("puts", eFunctionNameTypeMethod)); - - // Itanium mangled with linker annotation - EXPECT_EQ(1, Count("_Z5annotv@VERSION3", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_Z5annotv", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_Z5annotv", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("annot", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("annot", eFunctionNameTypeMethod)); - - // Itanium mangled ctor A::A() - EXPECT_EQ(1, Count("_ZN1AC2Ev", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_ZN1AC2Ev", eFunctionNameTypeBase)); - EXPECT_EQ(1, Count("A", eFunctionNameTypeMethod)); - EXPECT_EQ(0, Count("A", eFunctionNameTypeBase)); - - // Itanium mangled dtor A::~A() - EXPECT_EQ(1, Count("_ZN1AD2Ev", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_ZN1AD2Ev", eFunctionNameTypeBase)); - EXPECT_EQ(1, Count("~A", eFunctionNameTypeMethod)); - EXPECT_EQ(0, Count("~A", eFunctionNameTypeBase)); - - // Itanium mangled method A::bar() - EXPECT_EQ(1, Count("_ZN1A3barEv", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_ZN1A3barEv", eFunctionNameTypeBase)); - EXPECT_EQ(1, Count("bar", eFunctionNameTypeMethod)); - EXPECT_EQ(0, Count("bar", eFunctionNameTypeBase)); - - // Itanium mangled names that are explicitly excluded from parsing - EXPECT_EQ(1, Count("_ZGVZN4llvm4dbgsEvE7thestrm", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_ZGVZN4llvm4dbgsEvE7thestrm", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("dbgs", eFunctionNameTypeMethod)); - EXPECT_EQ(0, Count("dbgs", eFunctionNameTypeBase)); - EXPECT_EQ(1, Count("_ZZN4llvm4dbgsEvE7thestrm", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_ZZN4llvm4dbgsEvE7thestrm", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("dbgs", eFunctionNameTypeMethod)); - EXPECT_EQ(0, Count("dbgs", eFunctionNameTypeBase)); - EXPECT_EQ(1, Count("_ZTVN5clang4DeclE", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_ZTVN5clang4DeclE", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("Decl", eFunctionNameTypeMethod)); - EXPECT_EQ(0, Count("Decl", eFunctionNameTypeBase)); - - // ObjC mangled static - EXPECT_EQ(1, Count("-[ObjCfoo]", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("-[ObjCfoo]", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("ObjCfoo", eFunctionNameTypeMethod)); - - // ObjC mangled method with category - EXPECT_EQ(1, Count("+[B ObjCbar(WithCategory)]", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("+[B ObjCbar(WithCategory)]", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("ObjCbar", eFunctionNameTypeMethod)); - - // Invalid things: unable to decode but still possible to find by full name - EXPECT_EQ(1, Count("_Z12undemangableEvx42", eFunctionNameTypeFull)); - EXPECT_EQ(1, Count("_Z12undemangableEvx42", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("_Z12undemangableEvx42", eFunctionNameTypeMethod)); - EXPECT_EQ(0, Count("undemangable", eFunctionNameTypeBase)); - EXPECT_EQ(0, Count("undemangable", eFunctionNameTypeMethod)); -} diff --git a/gnu/llvm/lldb/unittests/Core/ModuleSpecTest.cpp b/gnu/llvm/lldb/unittests/Core/ModuleSpecTest.cpp deleted file mode 100644 index f9e19ed35ac..00000000000 --- a/gnu/llvm/lldb/unittests/Core/ModuleSpecTest.cpp +++ /dev/null @@ -1,166 +0,0 @@ -//===-- ModuleSpecTest.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" - -#include "lldb/Core/Module.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Utility/DataBuffer.h" - -#include "Plugins/ObjectFile/ELF/ObjectFileELF.h" -#include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" -#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" - -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -extern const char *TestMainArgv0; - -// This test file intentionally doesn't initialize the FileSystem. -// Everything in this file should be able to run without requiring -// any interaction with the FileSystem class; by keeping it -// uninitialized, it will assert if anything tries to interact with -// it. - -TEST(ModuleSpecTest, InvalidInMemoryBuffer) { - uint8_t Invalid[] = "This is not a binary file."; - DataBufferSP InvalidBufferSP = - std::make_shared(Invalid, sizeof(Invalid)); - ModuleSpec Spec(FileSpec(), UUID(), InvalidBufferSP); - - auto InvalidModuleSP = std::make_shared(Spec); - ASSERT_EQ(InvalidModuleSP->GetObjectFile(), nullptr); -} - -TEST(ModuleSpecTest, InvalidInMemoryBufferValidFile) { - uint8_t Invalid[] = "This is not a binary file."; - DataBufferSP InvalidBufferSP = - std::make_shared(Invalid, sizeof(Invalid)); - ModuleSpec Spec(FileSpec(TestMainArgv0), UUID(), InvalidBufferSP); - - auto InvalidModuleSP = std::make_shared(Spec); - ASSERT_EQ(InvalidModuleSP->GetObjectFile(), nullptr); -} - -TEST(ModuleSpecTest, TestELFFile) { - SubsystemRAII subsystems; - - auto ExpectedFile = TestFile::fromYaml(R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_REL - Machine: EM_X86_64 -Sections: - - Name: .text - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - AddressAlign: 0x0000000000000010 -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - auto M = std::make_shared(ExpectedFile->moduleSpec()); - ObjectFile *OF = M->GetObjectFile(); - - ASSERT_EQ(llvm::isa(OF), true); -} - -TEST(ModuleSpecTest, TestCOFFFile) { - SubsystemRAII subsystems; - - auto ExpectedFile = TestFile::fromYaml(R"( ---- !COFF -OptionalHeader: - AddressOfEntryPoint: 0 - ImageBase: 16777216 - SectionAlignment: 4096 - FileAlignment: 512 - MajorOperatingSystemVersion: 6 - MinorOperatingSystemVersion: 0 - MajorImageVersion: 0 - MinorImageVersion: 0 - MajorSubsystemVersion: 6 - MinorSubsystemVersion: 0 - Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI - DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT ] - SizeOfStackReserve: 1048576 - SizeOfStackCommit: 4096 - SizeOfHeapReserve: 1048576 - SizeOfHeapCommit: 4096 -header: - Machine: IMAGE_FILE_MACHINE_AMD64 - Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE ] -sections: - - Name: .text - Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] - VirtualAddress: 4096 - VirtualSize: 4096 -symbols: [] -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - auto M = std::make_shared(ExpectedFile->moduleSpec()); - ObjectFile *OF = M->GetObjectFile(); - - ASSERT_EQ(llvm::isa(OF), true); -} - -TEST(ModuleSpecTest, TestMachOFile) { - SubsystemRAII subsystems; - - auto ExpectedFile = TestFile::fromYaml(R"( ---- !mach-o -FileHeader: - magic: 0xFEEDFACF - cputype: 0x0100000C - cpusubtype: 0x00000000 - filetype: 0x00000001 - ncmds: 1 - sizeofcmds: 232 - flags: 0x00002000 - reserved: 0x00000000 -LoadCommands: - - cmd: LC_SEGMENT_64 - cmdsize: 232 - segname: '' - vmaddr: 0 - vmsize: 56 - fileoff: 392 - filesize: 56 - maxprot: 7 - initprot: 7 - nsects: 1 - flags: 0 - Sections: - - sectname: __text - segname: __TEXT - addr: 0x0000000000000000 - size: 24 - offset: 0x00000188 - align: 2 - reloff: 0x00000000 - nreloc: 0 - flags: 0x80000400 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - auto M = std::make_shared(ExpectedFile->moduleSpec()); - ObjectFile *OF = M->GetObjectFile(); - - ASSERT_EQ(llvm::isa(OF), true); -} diff --git a/gnu/llvm/lldb/unittests/Core/RichManglingContextTest.cpp b/gnu/llvm/lldb/unittests/Core/RichManglingContextTest.cpp deleted file mode 100644 index f8a0bbf9102..00000000000 --- a/gnu/llvm/lldb/unittests/Core/RichManglingContextTest.cpp +++ /dev/null @@ -1,139 +0,0 @@ -//===-- RichManglingContextTest.cpp ---------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Core/RichManglingContext.h" - -#include "lldb/Utility/ConstString.h" - -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(RichManglingContextTest, Basic) { - RichManglingContext RMC; - ConstString mangled("_ZN3foo3barEv"); - EXPECT_TRUE(RMC.FromItaniumName(mangled)); - - EXPECT_TRUE(RMC.IsFunction()); - EXPECT_FALSE(RMC.IsCtorOrDtor()); - - RMC.ParseFunctionDeclContextName(); - EXPECT_EQ("foo", RMC.GetBufferRef()); - - RMC.ParseFunctionBaseName(); - EXPECT_EQ("bar", RMC.GetBufferRef()); - - RMC.ParseFullName(); - EXPECT_EQ("foo::bar()", RMC.GetBufferRef()); -} - -TEST(RichManglingContextTest, FromCxxMethodName) { - RichManglingContext ItaniumRMC; - ConstString mangled("_ZN3foo3barEv"); - EXPECT_TRUE(ItaniumRMC.FromItaniumName(mangled)); - - RichManglingContext CxxMethodRMC; - ConstString demangled("foo::bar()"); - EXPECT_TRUE(CxxMethodRMC.FromCxxMethodName(demangled)); - - EXPECT_TRUE(ItaniumRMC.IsFunction() == CxxMethodRMC.IsFunction()); - EXPECT_TRUE(ItaniumRMC.IsCtorOrDtor() == CxxMethodRMC.IsCtorOrDtor()); - - ItaniumRMC.ParseFunctionDeclContextName(); - CxxMethodRMC.ParseFunctionDeclContextName(); - EXPECT_TRUE(ItaniumRMC.GetBufferRef() == CxxMethodRMC.GetBufferRef()); - - ItaniumRMC.ParseFunctionBaseName(); - CxxMethodRMC.ParseFunctionBaseName(); - EXPECT_TRUE(ItaniumRMC.GetBufferRef() == CxxMethodRMC.GetBufferRef()); - - ItaniumRMC.ParseFullName(); - CxxMethodRMC.ParseFullName(); - EXPECT_TRUE(ItaniumRMC.GetBufferRef() == CxxMethodRMC.GetBufferRef()); - - // Construct with a random name. - { - RichManglingContext CxxMethodRMC; - EXPECT_TRUE(CxxMethodRMC.FromCxxMethodName(ConstString("X"))); - - // We expect it is not a function. - EXPECT_FALSE(CxxMethodRMC.IsFunction()); - } - - // Construct with a function without a context. - { - RichManglingContext CxxMethodRMC; - EXPECT_TRUE(CxxMethodRMC.FromCxxMethodName( - ConstString("void * operator new(unsigned __int64)"))); - - // We expect it is a function. - EXPECT_TRUE(CxxMethodRMC.IsFunction()); - - // We expect its context is empty. - CxxMethodRMC.ParseFunctionDeclContextName(); - EXPECT_TRUE(CxxMethodRMC.GetBufferRef().empty()); - } -} - -TEST(RichManglingContextTest, SwitchProvider) { - RichManglingContext RMC; - llvm::StringRef mangled = "_ZN3foo3barEv"; - llvm::StringRef demangled = "foo::bar()"; - - EXPECT_TRUE(RMC.FromItaniumName(ConstString(mangled))); - RMC.ParseFullName(); - EXPECT_EQ("foo::bar()", RMC.GetBufferRef()); - - EXPECT_TRUE(RMC.FromCxxMethodName(ConstString(demangled))); - RMC.ParseFullName(); - EXPECT_EQ("foo::bar()", RMC.GetBufferRef()); - - EXPECT_TRUE(RMC.FromItaniumName(ConstString(mangled))); - RMC.ParseFullName(); - EXPECT_EQ("foo::bar()", RMC.GetBufferRef()); -} - -TEST(RichManglingContextTest, IPDRealloc) { - // The demangled name should fit into the Itanium default buffer. - const char *ShortMangled = "_ZN3foo3barEv"; - - // The demangled name for this will certainly not fit into the default buffer. - const char *LongMangled = - "_ZNK3shk6detail17CallbackPublisherIZNS_5ThrowERKNSt15__exception_" - "ptr13exception_ptrEEUlOT_E_E9SubscribeINS0_9ConcatMapINS0_" - "18CallbackSubscriberIZNS_6GetAllIiNS1_IZZNS_9ConcatMapIZNS_6ConcatIJNS1_" - "IZZNS_3MapIZZNS_7IfEmptyIS9_EEDaS7_ENKUlS6_E_clINS1_IZZNS_4TakeIiEESI_" - "S7_ENKUlS6_E_clINS1_IZZNS_6FilterIZNS_9ElementAtEmEUlS7_E_EESI_S7_" - "ENKUlS6_E_clINS1_IZZNSL_ImEESI_S7_ENKUlS6_E_clINS1_IZNS_4FromINS0_" - "22InfiniteRangeContainerIiEEEESI_S7_EUlS7_E_EEEESI_S6_EUlS7_E_EEEESI_S6_" - "EUlS7_E_EEEESI_S6_EUlS7_E_EEEESI_S6_EUlS7_E_EESI_S7_ENKUlS6_E_clIS14_" - "EESI_S6_EUlS7_E_EERNS1_IZZNSH_IS9_EESI_S7_ENKSK_IS14_EESI_S6_EUlS7_E0_" - "EEEEESI_DpOT_EUlS7_E_EESI_S7_ENKUlS6_E_clINS1_IZNS_5StartIJZNS_" - "4JustIJS19_S1C_EEESI_S1F_EUlvE_ZNS1K_IJS19_S1C_EEESI_S1F_EUlvE0_EEESI_" - "S1F_EUlS7_E_EEEESI_S6_EUlS7_E_EEEESt6vectorIS6_SaIS6_EERKT0_NS_" - "12ElementCountEbEUlS7_E_ZNSD_IiS1Q_EES1T_S1W_S1X_bEUlOS3_E_ZNSD_IiS1Q_" - "EES1T_S1W_S1X_bEUlvE_EES1G_S1O_E25ConcatMapValuesSubscriberEEEDaS7_"; - - RichManglingContext RMC; - - // Demangle the short one. - EXPECT_TRUE(RMC.FromItaniumName(ConstString(ShortMangled))); - RMC.ParseFullName(); - const char *ShortDemangled = RMC.GetBufferRef().data(); - - // Demangle the long one. - EXPECT_TRUE(RMC.FromItaniumName(ConstString(LongMangled))); - RMC.ParseFullName(); - const char *LongDemangled = RMC.GetBufferRef().data(); - - // Make sure a new buffer was allocated or the default buffer was extended. - bool AllocatedNewBuffer = (ShortDemangled != LongDemangled); - bool ExtendedExistingBuffer = (strlen(LongDemangled) > 2048); - EXPECT_TRUE(AllocatedNewBuffer || ExtendedExistingBuffer); -} diff --git a/gnu/llvm/lldb/unittests/Core/SourceLocationSpecTest.cpp b/gnu/llvm/lldb/unittests/Core/SourceLocationSpecTest.cpp deleted file mode 100644 index b79662f865f..00000000000 --- a/gnu/llvm/lldb/unittests/Core/SourceLocationSpecTest.cpp +++ /dev/null @@ -1,183 +0,0 @@ -//===-- SourceLocationSpecTest.cpp ----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Core/SourceLocationSpec.h" -#include "lldb/Utility/LLDBAssert.h" - -#include "llvm/Testing/Support/Error.h" - -using namespace lldb_private; - -TEST(SourceLocationSpecTest, OperatorBool) { - SourceLocationSpec invalid(FileSpec(), 0); - EXPECT_FALSE(invalid); - - SourceLocationSpec invalid_filespec(FileSpec(), 4); - EXPECT_FALSE(invalid_filespec); - - SourceLocationSpec invalid_line(FileSpec("/foo/bar"), 0); - EXPECT_FALSE(invalid_line); - - SourceLocationSpec valid_fs_line_no_column(FileSpec("/foo/bar"), 4); - EXPECT_TRUE(valid_fs_line_no_column); - - SourceLocationSpec invalid_fs_column(FileSpec(), 4, 0); - EXPECT_FALSE(invalid_fs_column); - - SourceLocationSpec invalid_line_column(FileSpec("/foo/bar"), 0, 19); - EXPECT_FALSE(invalid_line_column); - - SourceLocationSpec valid_fs_line_zero_column(FileSpec("/foo/bar"), 4, 0); - EXPECT_TRUE(valid_fs_line_zero_column); - - SourceLocationSpec valid_fs_line_column(FileSpec("/foo/bar"), 4, 19); - EXPECT_TRUE(valid_fs_line_column); -} - -TEST(SourceLocationSpecTest, FileLineColumnComponents) { - FileSpec fs("/foo/bar", FileSpec::Style::posix); - const uint32_t line = 19; - const uint16_t column = 4; - - SourceLocationSpec without_column(fs, line, LLDB_INVALID_COLUMN_NUMBER, false, - true); - EXPECT_TRUE(without_column); - EXPECT_EQ(fs, without_column.GetFileSpec()); - EXPECT_EQ(line, without_column.GetLine().getValueOr(0)); - EXPECT_EQ(llvm::None, without_column.GetColumn()); - EXPECT_FALSE(without_column.GetCheckInlines()); - EXPECT_TRUE(without_column.GetExactMatch()); - EXPECT_STREQ("check inlines = false, exact match = true, decl = /foo/bar:19", - without_column.GetString().c_str()); - - SourceLocationSpec with_column(fs, line, column, true, false); - EXPECT_TRUE(with_column); - EXPECT_EQ(column, *with_column.GetColumn()); - EXPECT_TRUE(with_column.GetCheckInlines()); - EXPECT_FALSE(with_column.GetExactMatch()); - EXPECT_STREQ( - "check inlines = true, exact match = false, decl = /foo/bar:19:4", - with_column.GetString().c_str()); -} - -static SourceLocationSpec Create(bool check_inlines, bool exact_match, - FileSpec fs, uint32_t line, - uint16_t column = LLDB_INVALID_COLUMN_NUMBER) { - return SourceLocationSpec(fs, line, column, check_inlines, exact_match); -} - -TEST(SourceLocationSpecTest, Equal) { - auto Equal = [](SourceLocationSpec lhs, SourceLocationSpec rhs, bool full) { - return SourceLocationSpec::Equal(lhs, rhs, full); - }; - - const FileSpec fs("/foo/bar", FileSpec::Style::posix); - const FileSpec other_fs("/foo/baz", FileSpec::Style::posix); - - // mutating FileSpec + const Inlined, ExactMatch, Line - EXPECT_TRUE( - Equal(Create(false, false, fs, 4), Create(false, false, fs, 4), true)); - EXPECT_TRUE( - Equal(Create(true, true, fs, 4), Create(true, true, fs, 4), false)); - EXPECT_FALSE(Equal(Create(false, false, fs, 4), - Create(false, false, other_fs, 4), true)); - EXPECT_FALSE( - Equal(Create(true, true, fs, 4), Create(true, true, other_fs, 4), false)); - - // Mutating FileSpec + const Inlined, ExactMatch, Line, Column - EXPECT_TRUE(Equal(Create(false, false, fs, 4, 19), - Create(false, false, fs, 4, 19), true)); - EXPECT_TRUE(Equal(Create(true, true, fs, 4, 19), - Create(true, true, fs, 4, 19), false)); - EXPECT_FALSE(Equal(Create(false, false, fs, 4, 19), - Create(false, false, other_fs, 4, 19), true)); - EXPECT_FALSE(Equal(Create(true, true, fs, 4, 19), - Create(true, true, other_fs, 4, 19), false)); - - // Asymetric match - EXPECT_FALSE( - Equal(Create(true, true, fs, 4), Create(true, true, fs, 4, 19), true)); - EXPECT_TRUE(Equal(Create(false, false, fs, 4), - Create(false, false, fs, 4, 19), false)); - - // Mutating Inlined, ExactMatch - EXPECT_FALSE( - Equal(Create(true, false, fs, 4), Create(false, true, fs, 4), true)); - EXPECT_TRUE( - Equal(Create(false, true, fs, 4), Create(true, false, fs, 4), false)); - - // Mutating Column - EXPECT_FALSE(Equal(Create(true, true, fs, 4, 96), - Create(true, true, fs, 4, 19), true)); - EXPECT_TRUE(Equal(Create(false, false, fs, 4, 96), - Create(false, false, fs, 4, 19), false)); -} - -TEST(SourceLocationSpecTest, Compare) { - auto Cmp = [](SourceLocationSpec a, SourceLocationSpec b) { - return SourceLocationSpec::Compare(a, b); - }; - - FileSpec fs("/foo/bar", FileSpec::Style::posix); - FileSpec other_fs("/foo/baz", FileSpec::Style::posix); - - // Asymetric comparaison - EXPECT_EQ(-1, Cmp(Create(true, true, fs, 4), Create(true, true, fs, 4, 19))); - EXPECT_EQ(-1, - Cmp(Create(false, false, fs, 4), Create(false, false, fs, 4, 19))); - EXPECT_EQ(1, Cmp(Create(true, true, fs, 4, 19), Create(true, true, fs, 4))); - - // Mutating FS, const Line - EXPECT_EQ( - -1, Cmp(Create(false, false, fs, 4), Create(false, false, other_fs, 4))); - EXPECT_EQ(-1, - Cmp(Create(true, true, fs, 4), Create(true, true, other_fs, 4))); - EXPECT_EQ(1, - Cmp(Create(false, true, other_fs, 4), Create(false, true, fs, 4))); - EXPECT_EQ(1, - Cmp(Create(true, false, other_fs, 4), Create(true, false, fs, 4))); - - // Const FS, mutating Line - EXPECT_EQ(-1, Cmp(Create(false, false, fs, 1), Create(false, false, fs, 4))); - EXPECT_EQ(-1, Cmp(Create(true, true, fs, 1), Create(true, true, fs, 4))); - EXPECT_EQ(0, Cmp(Create(false, true, fs, 4), Create(false, true, fs, 4))); - EXPECT_EQ(0, Cmp(Create(true, false, fs, 4), Create(true, false, fs, 4))); - EXPECT_EQ(1, Cmp(Create(false, false, fs, 4), Create(false, false, fs, 1))); - EXPECT_EQ(1, Cmp(Create(true, true, fs, 4), Create(true, true, fs, 1))); - - // Const FS, mutating Line, const Column - EXPECT_EQ(-1, - Cmp(Create(false, true, fs, 1), Create(false, true, fs, 4, 19))); - EXPECT_EQ(-1, Cmp(Create(true, true, fs, 1), Create(true, true, fs, 4, 19))); - EXPECT_EQ(1, Cmp(Create(true, false, fs, 4, 19), Create(true, false, fs, 1))); - EXPECT_EQ(1, Cmp(Create(true, false, fs, 4, 19), Create(true, false, fs, 1))); - - // Mutating FS, const Line, const Column - EXPECT_EQ(-1, Cmp(Create(false, false, fs, 4, 19), - Create(false, false, other_fs, 4, 19))); - EXPECT_EQ(-1, Cmp(Create(true, true, fs, 4, 19), - Create(true, true, other_fs, 4, 19))); - EXPECT_EQ( - 0, Cmp(Create(false, false, fs, 4, 19), Create(false, false, fs, 4, 19))); - EXPECT_EQ(0, - Cmp(Create(true, true, fs, 4, 19), Create(true, true, fs, 4, 19))); - EXPECT_EQ(1, Cmp(Create(false, true, other_fs, 4, 19), - Create(false, true, fs, 4, 19))); - EXPECT_EQ(1, Cmp(Create(true, false, other_fs, 4, 19), - Create(true, false, fs, 4, 19))); - - // Const FS, const Line, mutating Column - EXPECT_EQ(-1, Cmp(Create(false, false, fs, 4, 19), - Create(false, false, fs, 4, 96))); - EXPECT_EQ(1, - Cmp(Create(true, true, fs, 4, 96), Create(true, true, fs, 4, 19))); - EXPECT_EQ( - 1, Cmp(Create(false, true, fs, 4, 96), Create(false, true, fs, 4, 19))); -} diff --git a/gnu/llvm/lldb/unittests/Core/SourceManagerTest.cpp b/gnu/llvm/lldb/unittests/Core/SourceManagerTest.cpp deleted file mode 100644 index 9dcd048ce3f..00000000000 --- a/gnu/llvm/lldb/unittests/Core/SourceManagerTest.cpp +++ /dev/null @@ -1,48 +0,0 @@ -//===-- SourceManagerTest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Core/SourceManager.h" -#include "lldb/Host/FileSystem.h" -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -class SourceFileCache : public ::testing::Test { -public: - void SetUp() override { FileSystem::Initialize(); } - void TearDown() override { FileSystem::Terminate(); } -}; - -TEST_F(SourceFileCache, FindSourceFileFound) { - SourceManager::SourceFileCache cache; - - // Insert: foo - FileSpec foo_file_spec("foo"); - auto foo_file_sp = - std::make_shared(foo_file_spec, nullptr); - cache.AddSourceFile(foo_file_sp); - - // Query: foo, expect found. - FileSpec another_foo_file_spec("foo"); - ASSERT_EQ(cache.FindSourceFile(another_foo_file_spec), foo_file_sp); -} - -TEST_F(SourceFileCache, FindSourceFileNotFound) { - SourceManager::SourceFileCache cache; - - // Insert: foo - FileSpec foo_file_spec("foo"); - auto foo_file_sp = - std::make_shared(foo_file_spec, nullptr); - cache.AddSourceFile(foo_file_sp); - - // Query: bar, expect not found. - FileSpec bar_file_spec("bar"); - ASSERT_EQ(cache.FindSourceFile(bar_file_spec), nullptr); -} diff --git a/gnu/llvm/lldb/unittests/Core/StreamCallbackTest.cpp b/gnu/llvm/lldb/unittests/Core/StreamCallbackTest.cpp deleted file mode 100644 index d0e50b6864d..00000000000 --- a/gnu/llvm/lldb/unittests/Core/StreamCallbackTest.cpp +++ /dev/null @@ -1,27 +0,0 @@ -//===-- StreamCallbackTest.cpp --------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/StreamCallback.h" -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -static char test_baton; -static size_t callback_count = 0; -static void TestCallback(const char *data, void *baton) { - EXPECT_STREQ("Foobar", data); - EXPECT_EQ(&test_baton, baton); - ++callback_count; -} - -TEST(StreamCallbackTest, Callback) { - StreamCallback stream(TestCallback, &test_baton); - stream << "Foobar"; - EXPECT_EQ(1u, callback_count); -} diff --git a/gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp b/gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp deleted file mode 100644 index 25bc28538e6..00000000000 --- a/gnu/llvm/lldb/unittests/Core/UniqueCStringMapTest.cpp +++ /dev/null @@ -1,53 +0,0 @@ -//===-- UniqueCStringMapTest.cpp ------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Core/UniqueCStringMap.h" -#include "gmock/gmock.h" - -using namespace lldb_private; - -namespace { -struct NoDefault { - int x; - - NoDefault(int x) : x(x) {} - NoDefault() = delete; - - friend bool operator==(NoDefault lhs, NoDefault rhs) { - return lhs.x == rhs.x; - } - - friend llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, - NoDefault x) { - return OS << "NoDefault{" << x.x << "}"; - } -}; -} // namespace - -TEST(UniqueCStringMap, NoDefaultConstructor) { - using MapT = UniqueCStringMap; - using EntryT = MapT::Entry; - - MapT Map; - ConstString Foo("foo"), Bar("bar"); - - Map.Append(Foo, NoDefault(42)); - EXPECT_THAT(Map.Find(Foo, NoDefault(47)), NoDefault(42)); - EXPECT_THAT(Map.Find(Bar, NoDefault(47)), NoDefault(47)); - EXPECT_THAT(Map.FindFirstValueForName(Foo), - testing::Pointee(testing::Field(&EntryT::value, NoDefault(42)))); - EXPECT_THAT(Map.FindFirstValueForName(Bar), nullptr); - - std::vector Values; - EXPECT_THAT(Map.GetValues(Foo, Values), 1); - EXPECT_THAT(Values, testing::ElementsAre(NoDefault(42))); - - Values.clear(); - EXPECT_THAT(Map.GetValues(Bar, Values), 0); - EXPECT_THAT(Values, testing::IsEmpty()); -} diff --git a/gnu/llvm/lldb/unittests/DataFormatter/CMakeLists.txt b/gnu/llvm/lldb/unittests/DataFormatter/CMakeLists.txt deleted file mode 100644 index 9d967a72bfd..00000000000 --- a/gnu/llvm/lldb/unittests/DataFormatter/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -add_lldb_unittest(LLDBFormatterTests - FormatManagerTests.cpp - FormattersContainerTest.cpp - StringPrinterTests.cpp - - LINK_LIBS - lldbCore - lldbInterpreter - lldbSymbol - lldbTarget - lldbUtility - - LINK_COMPONENTS - Support - ) diff --git a/gnu/llvm/lldb/unittests/DataFormatter/FormatManagerTests.cpp b/gnu/llvm/lldb/unittests/DataFormatter/FormatManagerTests.cpp deleted file mode 100644 index e9dd4af610d..00000000000 --- a/gnu/llvm/lldb/unittests/DataFormatter/FormatManagerTests.cpp +++ /dev/null @@ -1,36 +0,0 @@ -//===-- FormatManagerTests.cpp --------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/DataFormatters/FormatManager.h" - -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(FormatManagerTests, CompatibleLangs) { - std::vector candidates = {eLanguageTypeC_plus_plus, - eLanguageTypeObjC}; - EXPECT_EQ(FormatManager::GetCandidateLanguages(eLanguageTypeC), candidates); - EXPECT_EQ(FormatManager::GetCandidateLanguages(eLanguageTypeC89), candidates); - EXPECT_EQ(FormatManager::GetCandidateLanguages(eLanguageTypeC99), candidates); - EXPECT_EQ(FormatManager::GetCandidateLanguages(eLanguageTypeC11), candidates); - - EXPECT_EQ(FormatManager::GetCandidateLanguages(eLanguageTypeC_plus_plus), - candidates); - EXPECT_EQ(FormatManager::GetCandidateLanguages(eLanguageTypeC_plus_plus_03), - candidates); - EXPECT_EQ(FormatManager::GetCandidateLanguages(eLanguageTypeC_plus_plus_11), - candidates); - EXPECT_EQ(FormatManager::GetCandidateLanguages(eLanguageTypeC_plus_plus_14), - candidates); - - candidates = {eLanguageTypeObjC}; - EXPECT_EQ(FormatManager::GetCandidateLanguages(eLanguageTypeObjC), - candidates); -} diff --git a/gnu/llvm/lldb/unittests/DataFormatter/FormattersContainerTest.cpp b/gnu/llvm/lldb/unittests/DataFormatter/FormattersContainerTest.cpp deleted file mode 100644 index a28212391ea..00000000000 --- a/gnu/llvm/lldb/unittests/DataFormatter/FormattersContainerTest.cpp +++ /dev/null @@ -1,159 +0,0 @@ -//===-- FormattersContainerTests.cpp --------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/DataFormatters/FormattersContainer.h" - -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -// All the prefixes that the exact name matching will strip from the type. -static const std::vector exact_name_prefixes = { - "", // no prefix. - "class ", "struct ", "union ", "enum ", -}; - -// TypeMatcher that uses a exact type name string that needs to be matched. -TEST(TypeMatcherTests, ExactName) { - for (const std::string &prefix : exact_name_prefixes) { - SCOPED_TRACE("Prefix: " + prefix); - - TypeMatcher matcher(ConstString(prefix + "Name")); - EXPECT_TRUE(matcher.Matches(ConstString("class Name"))); - EXPECT_TRUE(matcher.Matches(ConstString("struct Name"))); - EXPECT_TRUE(matcher.Matches(ConstString("union Name"))); - EXPECT_TRUE(matcher.Matches(ConstString("enum Name"))); - EXPECT_TRUE(matcher.Matches(ConstString("Name"))); - - EXPECT_FALSE(matcher.Matches(ConstString("Name "))); - EXPECT_FALSE(matcher.Matches(ConstString("ame"))); - EXPECT_FALSE(matcher.Matches(ConstString("Nam"))); - EXPECT_FALSE(matcher.Matches(ConstString("am"))); - EXPECT_FALSE(matcher.Matches(ConstString("a"))); - EXPECT_FALSE(matcher.Matches(ConstString(" "))); - EXPECT_FALSE(matcher.Matches(ConstString("class N"))); - EXPECT_FALSE(matcher.Matches(ConstString("class "))); - EXPECT_FALSE(matcher.Matches(ConstString("class"))); - } -} - -// TypeMatcher that uses a regex to match a type name. -TEST(TypeMatcherTests, RegexName) { - TypeMatcher matcher(RegularExpression("^a[a-z]c$")); - EXPECT_TRUE(matcher.Matches(ConstString("abc"))); - EXPECT_TRUE(matcher.Matches(ConstString("azc"))); - - // FIXME: This isn't consistent with the 'exact' type name matches above. - EXPECT_FALSE(matcher.Matches(ConstString("class abc"))); - - EXPECT_FALSE(matcher.Matches(ConstString("abbc"))); - EXPECT_FALSE(matcher.Matches(ConstString(" abc"))); - EXPECT_FALSE(matcher.Matches(ConstString("abc "))); - EXPECT_FALSE(matcher.Matches(ConstString(" abc "))); - EXPECT_FALSE(matcher.Matches(ConstString("XabcX"))); - EXPECT_FALSE(matcher.Matches(ConstString("ac"))); - EXPECT_FALSE(matcher.Matches(ConstString("a[a-z]c"))); - EXPECT_FALSE(matcher.Matches(ConstString("aAc"))); - EXPECT_FALSE(matcher.Matches(ConstString("ABC"))); - EXPECT_FALSE(matcher.Matches(ConstString(""))); -} - -// TypeMatcher that only searches the type name. -TEST(TypeMatcherTests, RegexMatchPart) { - TypeMatcher matcher(RegularExpression("a[a-z]c")); - EXPECT_TRUE(matcher.Matches(ConstString("class abc"))); - EXPECT_TRUE(matcher.Matches(ConstString("abc"))); - EXPECT_TRUE(matcher.Matches(ConstString(" abc "))); - EXPECT_TRUE(matcher.Matches(ConstString("azc"))); - EXPECT_TRUE(matcher.Matches(ConstString("abc "))); - EXPECT_TRUE(matcher.Matches(ConstString(" abc "))); - EXPECT_TRUE(matcher.Matches(ConstString(" abc"))); - EXPECT_TRUE(matcher.Matches(ConstString("XabcX"))); - - EXPECT_FALSE(matcher.Matches(ConstString("abbc"))); - EXPECT_FALSE(matcher.Matches(ConstString("ac"))); - EXPECT_FALSE(matcher.Matches(ConstString("a[a-z]c"))); - EXPECT_FALSE(matcher.Matches(ConstString("aAc"))); - EXPECT_FALSE(matcher.Matches(ConstString("ABC"))); - EXPECT_FALSE(matcher.Matches(ConstString(""))); -} - -// GetMatchString for exact type name matchers. -TEST(TypeMatcherTests, GetMatchStringExactName) { - EXPECT_EQ(TypeMatcher(ConstString("aa")).GetMatchString(), "aa"); - EXPECT_EQ(TypeMatcher(ConstString("")).GetMatchString(), ""); - EXPECT_EQ(TypeMatcher(ConstString("[a]")).GetMatchString(), "[a]"); -} - -// GetMatchString for regex matchers. -TEST(TypeMatcherTests, GetMatchStringRegex) { - EXPECT_EQ(TypeMatcher(RegularExpression("aa")).GetMatchString(), "aa"); - EXPECT_EQ(TypeMatcher(RegularExpression("")).GetMatchString(), ""); - EXPECT_EQ(TypeMatcher(RegularExpression("[a]")).GetMatchString(), "[a]"); -} - -// GetMatchString for regex matchers. -TEST(TypeMatcherTests, CreatedBySameMatchString) { - TypeMatcher empty_str(ConstString("")); - TypeMatcher empty_regex(RegularExpression("")); - EXPECT_TRUE(empty_str.CreatedBySameMatchString(empty_str)); - EXPECT_TRUE(empty_str.CreatedBySameMatchString(empty_regex)); - - TypeMatcher a_str(ConstString("a")); - TypeMatcher a_regex(RegularExpression("a")); - EXPECT_TRUE(a_str.CreatedBySameMatchString(a_str)); - EXPECT_TRUE(a_str.CreatedBySameMatchString(a_regex)); - - TypeMatcher digit_str(ConstString("[0-9]")); - TypeMatcher digit_regex(RegularExpression("[0-9]")); - EXPECT_TRUE(digit_str.CreatedBySameMatchString(digit_str)); - EXPECT_TRUE(digit_str.CreatedBySameMatchString(digit_regex)); - - EXPECT_FALSE(empty_str.CreatedBySameMatchString(a_str)); - EXPECT_FALSE(empty_str.CreatedBySameMatchString(a_regex)); - EXPECT_FALSE(empty_str.CreatedBySameMatchString(digit_str)); - EXPECT_FALSE(empty_str.CreatedBySameMatchString(digit_regex)); - - EXPECT_FALSE(empty_regex.CreatedBySameMatchString(a_str)); - EXPECT_FALSE(empty_regex.CreatedBySameMatchString(a_regex)); - EXPECT_FALSE(empty_regex.CreatedBySameMatchString(digit_str)); - EXPECT_FALSE(empty_regex.CreatedBySameMatchString(digit_regex)); - - EXPECT_FALSE(a_str.CreatedBySameMatchString(empty_str)); - EXPECT_FALSE(a_str.CreatedBySameMatchString(empty_regex)); - EXPECT_FALSE(a_str.CreatedBySameMatchString(digit_str)); - EXPECT_FALSE(a_str.CreatedBySameMatchString(digit_regex)); - - EXPECT_FALSE(a_regex.CreatedBySameMatchString(empty_str)); - EXPECT_FALSE(a_regex.CreatedBySameMatchString(empty_regex)); - EXPECT_FALSE(a_regex.CreatedBySameMatchString(digit_str)); - EXPECT_FALSE(a_regex.CreatedBySameMatchString(digit_regex)); - - EXPECT_FALSE(digit_str.CreatedBySameMatchString(empty_str)); - EXPECT_FALSE(digit_str.CreatedBySameMatchString(empty_regex)); - EXPECT_FALSE(digit_str.CreatedBySameMatchString(a_str)); - EXPECT_FALSE(digit_str.CreatedBySameMatchString(a_regex)); - - EXPECT_FALSE(digit_regex.CreatedBySameMatchString(empty_str)); - EXPECT_FALSE(digit_regex.CreatedBySameMatchString(empty_regex)); - EXPECT_FALSE(digit_regex.CreatedBySameMatchString(a_str)); - EXPECT_FALSE(digit_regex.CreatedBySameMatchString(a_regex)); -} - -// Test CreatedBySameMatchString with stripped exact name prefixes. -TEST(TypeMatcherTests, CreatedBySameMatchStringExactNamePrefixes) { - for (const std::string &prefix : exact_name_prefixes) { - SCOPED_TRACE("Prefix: " + prefix); - TypeMatcher with_prefix(ConstString(prefix + "Name")); - TypeMatcher without_prefix(RegularExpression("")); - - EXPECT_TRUE(with_prefix.CreatedBySameMatchString(with_prefix)); - EXPECT_TRUE(without_prefix.CreatedBySameMatchString(without_prefix)); - } -} diff --git a/gnu/llvm/lldb/unittests/DataFormatter/StringPrinterTests.cpp b/gnu/llvm/lldb/unittests/DataFormatter/StringPrinterTests.cpp deleted file mode 100644 index 84a9372408b..00000000000 --- a/gnu/llvm/lldb/unittests/DataFormatter/StringPrinterTests.cpp +++ /dev/null @@ -1,150 +0,0 @@ -//===-- StringPrinterTests.cpp --------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/DataFormatters/StringPrinter.h" -#include "lldb/Utility/DataExtractor.h" -#include "lldb/Utility/Endian.h" -#include "lldb/Utility/StreamString.h" -#include "llvm/ADT/Optional.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/raw_ostream.h" -#include "gtest/gtest.h" -#include - -using namespace lldb; -using namespace lldb_private; -using lldb_private::formatters::StringPrinter; -using llvm::Optional; -using llvm::StringRef; - -#define QUOTE(x) std::string("\"" x "\"") - -/// Format \p input according to the specified string encoding and special char -/// escape style. -template -static Optional format(StringRef input, - StringPrinter::EscapeStyle escape_style) { - StreamString out; - StringPrinter::ReadBufferAndDumpToStreamOptions opts; - opts.SetStream(&out); - opts.SetSourceSize(input.size()); - opts.SetNeedsZeroTermination(true); - opts.SetEscapeNonPrintables(true); - opts.SetIgnoreMaxLength(false); - opts.SetEscapeStyle(escape_style); - DataExtractor extractor(input.data(), input.size(), - endian::InlHostByteOrder(), sizeof(void *)); - opts.SetData(extractor); - const bool success = StringPrinter::ReadBufferAndDumpToStream(opts); - if (!success) - return llvm::None; - return out.GetString().str(); -} - -// Test ASCII formatting for C++. This behaves exactly like UTF8 formatting for -// C++, although that's questionable (see FIXME in StringPrinter.cpp). -TEST(StringPrinterTests, CxxASCII) { - auto fmt = [](StringRef str) { - return format( - str, StringPrinter::EscapeStyle::CXX); - }; - - // Special escapes. - EXPECT_EQ(fmt({"\0", 1}), QUOTE("")); - EXPECT_EQ(fmt("\a"), QUOTE(R"(\a)")); - EXPECT_EQ(fmt("\b"), QUOTE(R"(\b)")); - EXPECT_EQ(fmt("\f"), QUOTE(R"(\f)")); - EXPECT_EQ(fmt("\n"), QUOTE(R"(\n)")); - EXPECT_EQ(fmt("\r"), QUOTE(R"(\r)")); - EXPECT_EQ(fmt("\t"), QUOTE(R"(\t)")); - EXPECT_EQ(fmt("\v"), QUOTE(R"(\v)")); - EXPECT_EQ(fmt("\""), QUOTE(R"(\")")); - EXPECT_EQ(fmt("\'"), QUOTE(R"(')")); - EXPECT_EQ(fmt("\\"), QUOTE(R"(\\)")); - - // Printable characters. - EXPECT_EQ(fmt("'"), QUOTE("'")); - EXPECT_EQ(fmt("a"), QUOTE("a")); - EXPECT_EQ(fmt("Z"), QUOTE("Z")); - EXPECT_EQ(fmt("🥑"), QUOTE("🥑")); - - // Octal (\nnn), hex (\xnn), extended octal (\unnnn or \Unnnnnnnn). - EXPECT_EQ(fmt("\uD55C"), QUOTE("\uD55C")); - EXPECT_EQ(fmt("\U00010348"), QUOTE("\U00010348")); - - EXPECT_EQ(fmt("\376"), QUOTE(R"(\xfe)")); // \376 is 254 in decimal. - EXPECT_EQ(fmt("\xfe"), QUOTE(R"(\xfe)")); // \xfe is 254 in decimal. -} - -// Test UTF8 formatting for C++. -TEST(StringPrinterTests, CxxUTF8) { - auto fmt = [](StringRef str) { - return format( - str, StringPrinter::EscapeStyle::CXX); - }; - - // Special escapes. - EXPECT_EQ(fmt({"\0", 1}), QUOTE("")); - EXPECT_EQ(fmt("\a"), QUOTE(R"(\a)")); - EXPECT_EQ(fmt("\b"), QUOTE(R"(\b)")); - EXPECT_EQ(fmt("\f"), QUOTE(R"(\f)")); - EXPECT_EQ(fmt("\n"), QUOTE(R"(\n)")); - EXPECT_EQ(fmt("\r"), QUOTE(R"(\r)")); - EXPECT_EQ(fmt("\t"), QUOTE(R"(\t)")); - EXPECT_EQ(fmt("\v"), QUOTE(R"(\v)")); - EXPECT_EQ(fmt("\""), QUOTE(R"(\")")); - EXPECT_EQ(fmt("\'"), QUOTE(R"(')")); - EXPECT_EQ(fmt("\\"), QUOTE(R"(\\)")); - - // Printable characters. - EXPECT_EQ(fmt("'"), QUOTE("'")); - EXPECT_EQ(fmt("a"), QUOTE("a")); - EXPECT_EQ(fmt("Z"), QUOTE("Z")); - EXPECT_EQ(fmt("🥑"), QUOTE("🥑")); - - // Octal (\nnn), hex (\xnn), extended octal (\unnnn or \Unnnnnnnn). - EXPECT_EQ(fmt("\uD55C"), QUOTE("\uD55C")); - EXPECT_EQ(fmt("\U00010348"), QUOTE("\U00010348")); - - EXPECT_EQ(fmt("\376"), QUOTE(R"(\xfe)")); // \376 is 254 in decimal. - EXPECT_EQ(fmt("\xfe"), QUOTE(R"(\xfe)")); // \xfe is 254 in decimal. -} - -// Test UTF8 formatting for Swift. -TEST(StringPrinterTests, SwiftUTF8) { - auto fmt = [](StringRef str) { - return format( - str, StringPrinter::EscapeStyle::Swift); - }; - - // Special escapes. - EXPECT_EQ(fmt({"\0", 1}), QUOTE("")); - EXPECT_EQ(fmt("\a"), QUOTE(R"(\a)")); - EXPECT_EQ(fmt("\b"), QUOTE(R"(\u{8})")); - EXPECT_EQ(fmt("\f"), QUOTE(R"(\u{c})")); - EXPECT_EQ(fmt("\n"), QUOTE(R"(\n)")); - EXPECT_EQ(fmt("\r"), QUOTE(R"(\r)")); - EXPECT_EQ(fmt("\t"), QUOTE(R"(\t)")); - EXPECT_EQ(fmt("\v"), QUOTE(R"(\u{b})")); - EXPECT_EQ(fmt("\""), QUOTE(R"(\")")); - EXPECT_EQ(fmt("\'"), QUOTE(R"(\')")); - EXPECT_EQ(fmt("\\"), QUOTE(R"(\\)")); - - // Printable characters. - EXPECT_EQ(fmt("'"), QUOTE(R"(\')")); - EXPECT_EQ(fmt("a"), QUOTE("a")); - EXPECT_EQ(fmt("Z"), QUOTE("Z")); - EXPECT_EQ(fmt("🥑"), QUOTE("🥑")); - - // Octal (\nnn), hex (\xnn), extended octal (\unnnn or \Unnnnnnnn). - EXPECT_EQ(fmt("\uD55C"), QUOTE("\uD55C")); - EXPECT_EQ(fmt("\U00010348"), QUOTE("\U00010348")); - - EXPECT_EQ(fmt("\376"), QUOTE(R"(\u{fe})")); // \376 is 254 in decimal. - EXPECT_EQ(fmt("\xfe"), QUOTE(R"(\u{fe})")); // \xfe is 254 in decimal. -} diff --git a/gnu/llvm/lldb/unittests/Disassembler/CMakeLists.txt b/gnu/llvm/lldb/unittests/Disassembler/CMakeLists.txt deleted file mode 100644 index a0a3c264f16..00000000000 --- a/gnu/llvm/lldb/unittests/Disassembler/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -if("ARM" IN_LIST LLVM_TARGETS_TO_BUILD) - add_lldb_unittest(DisassemblerTests - TestArm64Disassembly.cpp - TestArmv7Disassembly.cpp - LINK_LIBS - lldbCore - lldbSymbol - lldbTarget - lldbPluginDisassemblerLLVMC - lldbPluginProcessUtility - LINK_COMPONENTS - Support - ${LLVM_TARGETS_TO_BUILD}) -endif() diff --git a/gnu/llvm/lldb/unittests/Disassembler/TestArm64Disassembly.cpp b/gnu/llvm/lldb/unittests/Disassembler/TestArm64Disassembly.cpp deleted file mode 100644 index 12975683397..00000000000 --- a/gnu/llvm/lldb/unittests/Disassembler/TestArm64Disassembly.cpp +++ /dev/null @@ -1,79 +0,0 @@ -//===-- TestArm64Disassembly.cpp ------------------------------------------===// - -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Core/Address.h" -#include "lldb/Core/Disassembler.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Target/ExecutionContext.h" - -#include "Plugins/Disassembler/LLVMC/DisassemblerLLVMC.h" -#include "llvm/Support/TargetSelect.h" - -using namespace lldb; -using namespace lldb_private; - -class TestArm64Disassembly : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); - - // virtual void SetUp() override { } - // virtual void TearDown() override { } - -protected: -}; - -void TestArm64Disassembly::SetUpTestCase() { - llvm::InitializeAllTargets(); - llvm::InitializeAllAsmPrinters(); - llvm::InitializeAllTargetMCs(); - llvm::InitializeAllDisassemblers(); - DisassemblerLLVMC::Initialize(); -} - -void TestArm64Disassembly::TearDownTestCase() { - DisassemblerLLVMC::Terminate(); -} - -TEST_F(TestArm64Disassembly, TestArmv81Instruction) { - ArchSpec arch("arm64-apple-ios"); - - const unsigned num_of_instructions = 2; - uint8_t data[] = { - 0xff, 0x43, 0x00, 0xd1, // 0xd10043ff : sub sp, sp, #0x10 - 0x62, 0x7c, 0xa1, 0xc8, // 0xc8a17c62 : cas x1, x2, [x3] (cas defined in ARM v8.1 & newer) - }; - - DisassemblerSP disass_sp; - Address start_addr(0x100); - disass_sp = Disassembler::DisassembleBytes(arch, nullptr, nullptr, start_addr, - &data, sizeof (data), num_of_instructions, false); - - // If we failed to get a disassembler, we can assume it is because - // the llvm we linked against was not built with the ARM target, - // and we should skip these tests without marking anything as failing. - - if (disass_sp) { - const InstructionList inst_list (disass_sp->GetInstructionList()); - EXPECT_EQ (num_of_instructions, inst_list.GetSize()); - - InstructionSP inst_sp; - const char *mnemonic; - ExecutionContext exe_ctx (nullptr, nullptr, nullptr); - inst_sp = inst_list.GetInstructionAtIndex (0); - mnemonic = inst_sp->GetMnemonic(&exe_ctx); - ASSERT_STREQ ("sub", mnemonic); - - inst_sp = inst_list.GetInstructionAtIndex (1); - mnemonic = inst_sp->GetMnemonic(&exe_ctx); - ASSERT_STREQ ("cas", mnemonic); - } -} diff --git a/gnu/llvm/lldb/unittests/Disassembler/TestArmv7Disassembly.cpp b/gnu/llvm/lldb/unittests/Disassembler/TestArmv7Disassembly.cpp deleted file mode 100644 index 92b6d07f48e..00000000000 --- a/gnu/llvm/lldb/unittests/Disassembler/TestArmv7Disassembly.cpp +++ /dev/null @@ -1,91 +0,0 @@ -//===-- TestArmv7Disassembly.cpp ------------------------------------------===// - -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Core/Address.h" -#include "lldb/Core/Disassembler.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Target/ExecutionContext.h" - -#include "Plugins/Disassembler/LLVMC/DisassemblerLLVMC.h" -#include "llvm/Support/TargetSelect.h" - -using namespace lldb; -using namespace lldb_private; - -class TestArmv7Disassembly : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); - - // virtual void SetUp() override { } - // virtual void TearDown() override { } - -protected: -}; - -void TestArmv7Disassembly::SetUpTestCase() { - llvm::InitializeAllTargets(); - llvm::InitializeAllAsmPrinters(); - llvm::InitializeAllTargetMCs(); - llvm::InitializeAllDisassemblers(); - DisassemblerLLVMC::Initialize(); -} - -void TestArmv7Disassembly::TearDownTestCase() { - DisassemblerLLVMC::Terminate(); -} - -TEST_F(TestArmv7Disassembly, TestCortexFPDisass) { - ArchSpec arch("armv7em--"); - - const unsigned num_of_instructions = 3; - uint8_t data[] = { - 0x00, 0xee, 0x10, 0x2a, // 0xee002a10 : vmov s0, r2 - 0xb8, 0xee, 0xc0, 0x0b, // 0xeeb80bc0 : vcvt.f64.s32 d0, s0 - 0xb6, 0xee, 0x00, 0x0a, // 0xeeb60a00 : vmov.f32 s0, #5.000000e-01 - }; - - // these can be disassembled by hand with llvm-mc, e.g. - // - // 0x00, 0xee, 0x10, 0x2a, // 0xee002a10 : vmov s0, r2 - // - // echo 0x00 0xee 0x10 0x2a | llvm-mc -arch thumb -disassemble -mattr=+fp-armv8 - // vmov s0, r2 - - DisassemblerSP disass_sp; - Address start_addr(0x100); - disass_sp = Disassembler::DisassembleBytes(arch, nullptr, nullptr, start_addr, - &data, sizeof (data), num_of_instructions, false); - - // If we failed to get a disassembler, we can assume it is because - // the llvm we linked against was not built with the ARM target, - // and we should skip these tests without marking anything as failing. - - if (disass_sp) { - const InstructionList inst_list (disass_sp->GetInstructionList()); - EXPECT_EQ (num_of_instructions, inst_list.GetSize()); - - InstructionSP inst_sp; - const char *mnemonic; - ExecutionContext exe_ctx (nullptr, nullptr, nullptr); - inst_sp = inst_list.GetInstructionAtIndex (0); - mnemonic = inst_sp->GetMnemonic(&exe_ctx); - ASSERT_STREQ ("vmov", mnemonic); - - inst_sp = inst_list.GetInstructionAtIndex (1); - mnemonic = inst_sp->GetMnemonic(&exe_ctx); - ASSERT_STREQ ("vcvt.f64.s32", mnemonic); - - inst_sp = inst_list.GetInstructionAtIndex (2); - mnemonic = inst_sp->GetMnemonic(&exe_ctx); - ASSERT_STREQ ("vmov.f32", mnemonic); - } -} diff --git a/gnu/llvm/lldb/unittests/Editline/CMakeLists.txt b/gnu/llvm/lldb/unittests/Editline/CMakeLists.txt deleted file mode 100644 index 4b2643d15c5..00000000000 --- a/gnu/llvm/lldb/unittests/Editline/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -add_lldb_unittest(EditlineTests - EditlineTest.cpp - - LINK_LIBS - lldbHost - lldbUtility - LLVMTestingSupport - ) diff --git a/gnu/llvm/lldb/unittests/Editline/EditlineTest.cpp b/gnu/llvm/lldb/unittests/Editline/EditlineTest.cpp deleted file mode 100644 index 53184811450..00000000000 --- a/gnu/llvm/lldb/unittests/Editline/EditlineTest.cpp +++ /dev/null @@ -1,312 +0,0 @@ -//===-- EditlineTest.cpp --------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/Config.h" - -#if LLDB_ENABLE_LIBEDIT - -#define EDITLINE_TEST_DUMP_OUTPUT 0 - -#include -#include - -#include "gmock/gmock.h" -#include "gtest/gtest.h" -#include -#include - -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Host/Editline.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/Pipe.h" -#include "lldb/Host/PseudoTerminal.h" -#include "lldb/Utility/Status.h" -#include "lldb/Utility/StringList.h" - -using namespace lldb_private; - -namespace { -const size_t TIMEOUT_MILLIS = 5000; -} - -class FilePointer { -public: - FilePointer() = delete; - - FilePointer(const FilePointer &) = delete; - - FilePointer(FILE *file_p) : _file_p(file_p) {} - - ~FilePointer() { - if (_file_p != nullptr) { - const int close_result = fclose(_file_p); - EXPECT_EQ(0, close_result); - } - } - - operator FILE *() { return _file_p; } - -private: - FILE *_file_p; -}; - -/** - Wraps an Editline class, providing a simple way to feed - input (as if from the keyboard) and receive output from Editline. - */ -class EditlineAdapter { -public: - EditlineAdapter(); - - void CloseInput(); - - bool IsValid() const { return _editline_sp != nullptr; } - - lldb_private::Editline &GetEditline() { return *_editline_sp; } - - bool SendLine(const std::string &line); - - bool SendLines(const std::vector &lines); - - bool GetLine(std::string &line, bool &interrupted, size_t timeout_millis); - - bool GetLines(lldb_private::StringList &lines, bool &interrupted, - size_t timeout_millis); - - void ConsumeAllOutput(); - -private: - bool IsInputComplete(lldb_private::Editline *editline, - lldb_private::StringList &lines); - - std::unique_ptr _editline_sp; - - PseudoTerminal _pty; - int _pty_master_fd; - int _pty_secondary_fd; - - std::unique_ptr _el_secondary_file; -}; - -EditlineAdapter::EditlineAdapter() - : _editline_sp(), _pty(), _pty_master_fd(-1), _pty_secondary_fd(-1), - _el_secondary_file() { - lldb_private::Status error; - - // Open the first master pty available. - EXPECT_THAT_ERROR(_pty.OpenFirstAvailablePrimary(O_RDWR), llvm::Succeeded()); - - // Grab the master fd. This is a file descriptor we will: - // (1) write to when we want to send input to editline. - // (2) read from when we want to see what editline sends back. - _pty_master_fd = _pty.GetPrimaryFileDescriptor(); - - // Open the corresponding secondary pty. - EXPECT_THAT_ERROR(_pty.OpenSecondary(O_RDWR), llvm::Succeeded()); - _pty_secondary_fd = _pty.GetSecondaryFileDescriptor(); - - _el_secondary_file.reset(new FilePointer(fdopen(_pty_secondary_fd, "rw"))); - EXPECT_FALSE(nullptr == *_el_secondary_file); - if (*_el_secondary_file == nullptr) - return; - - // Create an Editline instance. - _editline_sp.reset(new lldb_private::Editline( - "gtest editor", *_el_secondary_file, *_el_secondary_file, - *_el_secondary_file, false)); - _editline_sp->SetPrompt("> "); - - // Hookup our input complete callback. - auto input_complete_cb = [this](Editline *editline, StringList &lines) { - return this->IsInputComplete(editline, lines); - }; - _editline_sp->SetIsInputCompleteCallback(input_complete_cb); -} - -void EditlineAdapter::CloseInput() { - if (_el_secondary_file != nullptr) - _el_secondary_file.reset(nullptr); -} - -bool EditlineAdapter::SendLine(const std::string &line) { - // Ensure we're valid before proceeding. - if (!IsValid()) - return false; - - // Write the line out to the pipe connected to editline's input. - ssize_t input_bytes_written = - ::write(_pty_master_fd, line.c_str(), - line.length() * sizeof(std::string::value_type)); - - const char *eoln = "\n"; - const size_t eoln_length = strlen(eoln); - input_bytes_written = - ::write(_pty_master_fd, eoln, eoln_length * sizeof(char)); - - EXPECT_NE(-1, input_bytes_written) << strerror(errno); - EXPECT_EQ(eoln_length * sizeof(char), size_t(input_bytes_written)); - return eoln_length * sizeof(char) == size_t(input_bytes_written); -} - -bool EditlineAdapter::SendLines(const std::vector &lines) { - for (auto &line : lines) { -#if EDITLINE_TEST_DUMP_OUTPUT - printf(" sending line \"%s\"\n", line.c_str()); -#endif - if (!SendLine(line)) - return false; - } - return true; -} - -// We ignore the timeout for now. -bool EditlineAdapter::GetLine(std::string &line, bool &interrupted, - size_t /* timeout_millis */) { - // Ensure we're valid before proceeding. - if (!IsValid()) - return false; - - _editline_sp->GetLine(line, interrupted); - return true; -} - -bool EditlineAdapter::GetLines(lldb_private::StringList &lines, - bool &interrupted, size_t /* timeout_millis */) { - // Ensure we're valid before proceeding. - if (!IsValid()) - return false; - - _editline_sp->GetLines(1, lines, interrupted); - return true; -} - -bool EditlineAdapter::IsInputComplete(lldb_private::Editline *editline, - lldb_private::StringList &lines) { - // We'll call ourselves complete if we've received a balanced set of braces. - int start_block_count = 0; - int brace_balance = 0; - - for (const std::string &line : lines) { - for (auto ch : line) { - if (ch == '{') { - ++start_block_count; - ++brace_balance; - } else if (ch == '}') - --brace_balance; - } - } - - return (start_block_count > 0) && (brace_balance == 0); -} - -void EditlineAdapter::ConsumeAllOutput() { - FilePointer output_file(fdopen(_pty_master_fd, "r")); - - int ch; - while ((ch = fgetc(output_file)) != EOF) { -#if EDITLINE_TEST_DUMP_OUTPUT - char display_str[] = {0, 0, 0}; - switch (ch) { - case '\t': - display_str[0] = '\\'; - display_str[1] = 't'; - break; - case '\n': - display_str[0] = '\\'; - display_str[1] = 'n'; - break; - case '\r': - display_str[0] = '\\'; - display_str[1] = 'r'; - break; - default: - display_str[0] = ch; - break; - } - printf(" 0x%02x (%03d) (%s)\n", ch, ch, display_str); -// putc(ch, stdout); -#endif - } -} - -class EditlineTestFixture : public ::testing::Test { - SubsystemRAII subsystems; - EditlineAdapter _el_adapter; - std::shared_ptr _sp_output_thread; - -public: - static void SetUpTestCase() { - // We need a TERM set properly for editline to work as expected. - setenv("TERM", "vt100", 1); - } - - void SetUp() override { - // Validate the editline adapter. - EXPECT_TRUE(_el_adapter.IsValid()); - if (!_el_adapter.IsValid()) - return; - - // Dump output. - _sp_output_thread = - std::make_shared([&] { _el_adapter.ConsumeAllOutput(); }); - } - - void TearDown() override { - _el_adapter.CloseInput(); - if (_sp_output_thread) - _sp_output_thread->join(); - } - - EditlineAdapter &GetEditlineAdapter() { return _el_adapter; } -}; - -TEST_F(EditlineTestFixture, EditlineReceivesSingleLineText) { - // Send it some text via our virtual keyboard. - const std::string input_text("Hello, world"); - EXPECT_TRUE(GetEditlineAdapter().SendLine(input_text)); - - // Verify editline sees what we put in. - std::string el_reported_line; - bool input_interrupted = false; - const bool received_line = GetEditlineAdapter().GetLine( - el_reported_line, input_interrupted, TIMEOUT_MILLIS); - - EXPECT_TRUE(received_line); - EXPECT_FALSE(input_interrupted); - EXPECT_EQ(input_text, el_reported_line); -} - -TEST_F(EditlineTestFixture, EditlineReceivesMultiLineText) { - // Send it some text via our virtual keyboard. - std::vector input_lines; - input_lines.push_back("int foo()"); - input_lines.push_back("{"); - input_lines.push_back("printf(\"Hello, world\");"); - input_lines.push_back("}"); - input_lines.push_back(""); - - EXPECT_TRUE(GetEditlineAdapter().SendLines(input_lines)); - - // Verify editline sees what we put in. - lldb_private::StringList el_reported_lines; - bool input_interrupted = false; - - EXPECT_TRUE(GetEditlineAdapter().GetLines(el_reported_lines, - input_interrupted, TIMEOUT_MILLIS)); - EXPECT_FALSE(input_interrupted); - - // Without any auto indentation support, our output should directly match our - // input. - std::vector reported_lines; - for (const std::string &line : el_reported_lines) - reported_lines.push_back(line); - - EXPECT_THAT(reported_lines, testing::ContainerEq(input_lines)); -} - -#endif diff --git a/gnu/llvm/lldb/unittests/Expression/CMakeLists.txt b/gnu/llvm/lldb/unittests/Expression/CMakeLists.txt deleted file mode 100644 index 185b19f84ca..00000000000 --- a/gnu/llvm/lldb/unittests/Expression/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -add_lldb_unittest(ExpressionTests - ClangParserTest.cpp - ClangExpressionDeclMapTest.cpp - DiagnosticManagerTest.cpp - DWARFExpressionTest.cpp - CppModuleConfigurationTest.cpp - - LINK_LIBS - lldbCore - lldbPluginObjectFileELF - lldbPluginPlatformLinux - lldbPluginExpressionParserClang - lldbPluginTypeSystemClang - lldbUtility - lldbUtilityHelpers - lldbSymbolHelpers - LLVMTestingSupport - ) diff --git a/gnu/llvm/lldb/unittests/Expression/ClangExpressionDeclMapTest.cpp b/gnu/llvm/lldb/unittests/Expression/ClangExpressionDeclMapTest.cpp deleted file mode 100644 index ecee35ff46e..00000000000 --- a/gnu/llvm/lldb/unittests/Expression/ClangExpressionDeclMapTest.cpp +++ /dev/null @@ -1,123 +0,0 @@ -//===-- ClangExpressionDeclMapTest.cpp ------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.h" -#include "Plugins/ExpressionParser/Clang/ClangUtil.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/Symbol/ClangTestUtils.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/lldb-defines.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb; - -namespace { -struct FakeClangExpressionDeclMap : public ClangExpressionDeclMap { - FakeClangExpressionDeclMap(const std::shared_ptr &importer) - : ClangExpressionDeclMap(false, nullptr, lldb::TargetSP(), importer, - nullptr) { - m_scratch_context = clang_utils::createAST(); - } - std::unique_ptr m_scratch_context; - /// Adds a persistent decl that can be found by the ClangExpressionDeclMap - /// via GetPersistentDecl. - void AddPersistentDeclForTest(clang::NamedDecl *d) { - // The declaration needs to have '$' prefix in its name like every - // persistent declaration and must be inside the scratch AST context. - assert(d); - assert(d->getName().startswith("$")); - assert(&d->getASTContext() == &m_scratch_context->getASTContext()); - m_persistent_decls[d->getName()] = d; - } - -protected: - // ClangExpressionDeclMap hooks. - - clang::NamedDecl *GetPersistentDecl(ConstString name) override { - // ClangExpressionDeclMap wants to know if there is a persistent decl - // with the given name. Check the - return m_persistent_decls.lookup(name.GetStringRef()); - } - -private: - /// The persistent decls in this test with their names as keys. - llvm::DenseMap m_persistent_decls; -}; -} // namespace - -namespace { -struct ClangExpressionDeclMapTest : public testing::Test { - SubsystemRAII subsystems; - - /// The ClangASTImporter used during the test. - std::shared_ptr importer; - /// The ExpressionDeclMap for the current test case. - std::unique_ptr decl_map; - - /// The target AST that lookup results should be imported to. - std::unique_ptr target_ast; - - void SetUp() override { - importer = std::make_shared(); - decl_map = std::make_unique(importer); - target_ast = clang_utils::createAST(); - decl_map->InstallASTContext(*target_ast); - } - - void TearDown() override { - importer.reset(); - decl_map.reset(); - target_ast.reset(); - } -}; -} // namespace - -TEST_F(ClangExpressionDeclMapTest, TestUnknownIdentifierLookup) { - // Tests looking up an identifier that can't be found anywhere. - - // Setup a NameSearchContext for 'foo'. - llvm::SmallVector decls; - clang::DeclarationName name = - clang_utils::getDeclarationName(*target_ast, "foo"); - const clang::DeclContext *dc = target_ast->GetTranslationUnitDecl(); - NameSearchContext search(*target_ast, decls, name, dc); - - decl_map->FindExternalVisibleDecls(search); - - // This shouldn't exist so we should get no lookups. - EXPECT_EQ(0U, decls.size()); -} - -TEST_F(ClangExpressionDeclMapTest, TestPersistentDeclLookup) { - // Tests looking up a persistent decl from the scratch AST context. - - // Create a '$persistent_class' record and add it as a persistent variable - // to the scratch AST context. - llvm::StringRef decl_name = "$persistent_class"; - CompilerType persistent_type = - clang_utils::createRecord(*decl_map->m_scratch_context, decl_name); - decl_map->AddPersistentDeclForTest(ClangUtil::GetAsTagDecl(persistent_type)); - - // Setup a NameSearchContext for $persistent_class; - llvm::SmallVector decls; - clang::DeclarationName name = - clang_utils::getDeclarationName(*target_ast, decl_name); - const clang::DeclContext *dc = target_ast->GetTranslationUnitDecl(); - NameSearchContext search(*target_ast, decls, name, dc); - - // Search and check that we found $persistent_class. - decl_map->FindExternalVisibleDecls(search); - EXPECT_EQ(1U, decls.size()); - EXPECT_EQ(decl_name, decls.front()->getQualifiedNameAsString()); - auto *record = llvm::cast(decls.front()); - // The class was minimally imported from the scratch AST context. - EXPECT_TRUE(record->hasExternalLexicalStorage()); -} diff --git a/gnu/llvm/lldb/unittests/Expression/ClangParserTest.cpp b/gnu/llvm/lldb/unittests/Expression/ClangParserTest.cpp deleted file mode 100644 index 4df55747531..00000000000 --- a/gnu/llvm/lldb/unittests/Expression/ClangParserTest.cpp +++ /dev/null @@ -1,91 +0,0 @@ -//===-- ClangParserTest.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "clang/Basic/Version.h" - -#include "Plugins/ExpressionParser/Clang/ClangHost.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" -#include "lldb/Host/Config.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Utility/FileSpec.h" -#include "lldb/lldb-defines.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -namespace { -struct ClangHostTest : public testing::Test { - SubsystemRAII subsystems; -}; -} // namespace - -static std::string ComputeClangResourceDir(std::string lldb_shlib_path, - bool verify = false) { - FileSpec clang_dir; - FileSpec lldb_shlib_spec(lldb_shlib_path); - ComputeClangResourceDirectory(lldb_shlib_spec, clang_dir, verify); - return clang_dir.GetPath(); -} - -TEST_F(ClangHostTest, ComputeClangResourceDirectory) { -#if !defined(_WIN32) - std::string path_to_liblldb = "/foo/bar/lib/"; - std::string path_to_clang_dir = "/foo/bar/lib" LLDB_LIBDIR_SUFFIX "/clang/" CLANG_VERSION_STRING; -#else - std::string path_to_liblldb = "C:\\foo\\bar\\lib"; - std::string path_to_clang_dir = "C:\\foo\\bar\\lib\\clang\\" CLANG_VERSION_STRING; -#endif - EXPECT_EQ(ComputeClangResourceDir(path_to_liblldb), path_to_clang_dir); - - // The path doesn't really exist, so setting verify to true should make - // ComputeClangResourceDir not give you path_to_clang_dir. - EXPECT_NE(ComputeClangResourceDir(path_to_liblldb, true), path_to_clang_dir); -} - -#if defined(__APPLE__) -TEST_F(ClangHostTest, MacOSX) { - // This returns whatever the POSIX fallback returns. - std::string posix = "/usr/lib/liblldb.dylib"; - EXPECT_FALSE(ComputeClangResourceDir(posix).empty()); - - std::string build = - "/lldb-macosx-x86_64/Library/Frameworks/LLDB.framework/Versions/A"; - std::string build_clang = - "/lldb-macosx-x86_64/Library/Frameworks/LLDB.framework/Resources/Clang"; - EXPECT_EQ(ComputeClangResourceDir(build), build_clang); - - std::string xcode = "/Applications/Xcode.app/Contents/SharedFrameworks/" - "LLDB.framework/Versions/A"; - std::string xcode_clang = - "/Applications/Xcode.app/Contents/Developer/Toolchains/" - "XcodeDefault.xctoolchain/usr/lib/swift/clang"; - EXPECT_EQ(ComputeClangResourceDir(xcode), xcode_clang); - - std::string toolchain = - "/Applications/Xcode.app/Contents/Developer/Toolchains/" - "Swift-4.1-development-snapshot.xctoolchain/System/Library/" - "PrivateFrameworks/LLDB.framework"; - std::string toolchain_clang = - "/Applications/Xcode.app/Contents/Developer/Toolchains/" - "Swift-4.1-development-snapshot.xctoolchain/usr/lib/swift/clang"; - EXPECT_EQ(ComputeClangResourceDir(toolchain), toolchain_clang); - - std::string cltools = "/Library/Developer/CommandLineTools/Library/" - "PrivateFrameworks/LLDB.framework"; - std::string cltools_clang = - "/Library/Developer/CommandLineTools/Library/PrivateFrameworks/" - "LLDB.framework/Resources/Clang"; - EXPECT_EQ(ComputeClangResourceDir(cltools), cltools_clang); - - // Test that a bogus path is detected. - EXPECT_NE(ComputeClangResourceDir(GetInputFilePath(xcode), true), - ComputeClangResourceDir(GetInputFilePath(xcode))); -} -#endif // __APPLE__ diff --git a/gnu/llvm/lldb/unittests/Expression/CppModuleConfigurationTest.cpp b/gnu/llvm/lldb/unittests/Expression/CppModuleConfigurationTest.cpp deleted file mode 100644 index c1d0d00dcba..00000000000 --- a/gnu/llvm/lldb/unittests/Expression/CppModuleConfigurationTest.cpp +++ /dev/null @@ -1,263 +0,0 @@ -//===-- CppModuleConfigurationTest.cpp ------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/ExpressionParser/Clang/CppModuleConfiguration.h" -#include "Plugins/ExpressionParser/Clang/ClangHost.h" -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "llvm/Support/SmallVectorMemoryBuffer.h" - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -namespace { -struct CppModuleConfigurationTest : public testing::Test { - llvm::MemoryBufferRef m_empty_buffer; - llvm::IntrusiveRefCntPtr m_fs; - - CppModuleConfigurationTest() - : m_empty_buffer("", ""), - m_fs(new llvm::vfs::InMemoryFileSystem()) {} - - void SetUp() override { - FileSystem::Initialize(m_fs); - HostInfo::Initialize(); - } - - void TearDown() override { - HostInfo::Terminate(); - FileSystem::Terminate(); - } - - /// Utility function turning a list of paths into a FileSpecList. - FileSpecList makeFiles(llvm::ArrayRef paths) { - FileSpecList result; - for (const std::string &path : paths) { - result.Append(FileSpec(path, FileSpec::Style::posix)); - if (!m_fs->addFileNoOwn(path, static_cast(0), m_empty_buffer)) - llvm_unreachable("Invalid test configuration?"); - } - return result; - } -}; -} // namespace - -/// Returns the Clang resource include directory. -static std::string ResourceInc() { - llvm::SmallString<256> resource_dir; - llvm::sys::path::append(resource_dir, GetClangResourceDir().GetPath(), - "include"); - return std::string(resource_dir); -} - - -TEST_F(CppModuleConfigurationTest, Linux) { - // Test the average Linux configuration. - - std::string usr = "/usr/include"; - std::string libcpp = "/usr/include/c++/v1"; - std::vector files = {// C library - usr + "/stdio.h", - // C++ library - libcpp + "/vector", - libcpp + "/module.modulemap"}; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre("std")); - EXPECT_THAT(config.GetIncludeDirs(), - testing::ElementsAre(libcpp, ResourceInc(), usr)); -} - -TEST_F(CppModuleConfigurationTest, Sysroot) { - // Test that having a sysroot for the whole system works fine. - - std::string libcpp = "/home/user/sysroot/usr/include/c++/v1"; - std::string usr = "/home/user/sysroot/usr/include"; - std::vector files = {// C library - usr + "/stdio.h", - // C++ library - libcpp + "/vector", - libcpp + "/module.modulemap"}; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre("std")); - EXPECT_THAT(config.GetIncludeDirs(), - testing::ElementsAre(libcpp, ResourceInc(), usr)); -} - -TEST_F(CppModuleConfigurationTest, LinuxLocalLibCpp) { - // Test that a locally build libc++ is detected. - - std::string usr = "/usr/include"; - std::string libcpp = "/home/user/llvm-build/include/c++/v1"; - std::vector files = {// C library - usr + "/stdio.h", - // C++ library - libcpp + "/vector", - libcpp + "/module.modulemap"}; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre("std")); - EXPECT_THAT(config.GetIncludeDirs(), - testing::ElementsAre(libcpp, ResourceInc(), usr)); -} - -TEST_F(CppModuleConfigurationTest, UnrelatedLibrary) { - // Test that having an unrelated library in /usr/include doesn't break. - - std::string usr = "/usr/include"; - std::string libcpp = "/home/user/llvm-build/include/c++/v1"; - std::vector files = {// C library - usr + "/stdio.h", - // unrelated library - usr + "/boost/vector", - // C++ library - libcpp + "/vector", - libcpp + "/module.modulemap"}; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre("std")); - EXPECT_THAT(config.GetIncludeDirs(), - testing::ElementsAre(libcpp, ResourceInc(), usr)); -} - -TEST_F(CppModuleConfigurationTest, Xcode) { - // Test detection of libc++ coming from Xcode with generic platform names. - - std::string p = "/Applications/Xcode.app/Contents/Developer/"; - std::string libcpp = p + "Toolchains/B.xctoolchain/usr/include/c++/v1"; - std::string usr = - p + "Platforms/A.platform/Developer/SDKs/OSVers.sdk/usr/include"; - std::vector files = { - // C library - usr + "/stdio.h", - // C++ library - libcpp + "/vector", - libcpp + "/module.modulemap", - }; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre("std")); - EXPECT_THAT(config.GetIncludeDirs(), - testing::ElementsAre(libcpp, ResourceInc(), usr)); -} - -TEST_F(CppModuleConfigurationTest, LibCppV2) { - // Test that a "v2" of libc++ is still correctly detected. - - std::string libcpp = "/usr/include/c++/v2"; - std::vector files = {// C library - "/usr/include/stdio.h", - // C++ library - libcpp + "/vector", - libcpp + "/module.modulemap"}; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre("std")); - EXPECT_THAT(config.GetIncludeDirs(), - testing::ElementsAre("/usr/include/c++/v2", ResourceInc(), - "/usr/include")); -} - -TEST_F(CppModuleConfigurationTest, UnknownLibCppFile) { - // Test that having some unknown file in the libc++ path doesn't break - // anything. - - std::string libcpp = "/usr/include/c++/v1"; - std::vector files = {// C library - "/usr/include/stdio.h", - // C++ library - libcpp + "/non_existing_file", - libcpp + "/module.modulemap", - libcpp + "/vector"}; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre("std")); - EXPECT_THAT(config.GetIncludeDirs(), - testing::ElementsAre("/usr/include/c++/v1", ResourceInc(), - "/usr/include")); -} - -TEST_F(CppModuleConfigurationTest, MissingUsrInclude) { - // Test that we don't load 'std' if we can't find the C standard library. - - std::string libcpp = "/usr/include/c++/v1"; - std::vector files = {// C++ library - libcpp + "/vector", - libcpp + "/module.modulemap"}; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre()); - EXPECT_THAT(config.GetIncludeDirs(), testing::ElementsAre()); -} - -TEST_F(CppModuleConfigurationTest, MissingLibCpp) { - // Test that we don't load 'std' if we don't have a libc++. - - std::string usr = "/usr/include"; - std::vector files = { - // C library - usr + "/stdio.h", - }; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre()); - EXPECT_THAT(config.GetIncludeDirs(), testing::ElementsAre()); -} - -TEST_F(CppModuleConfigurationTest, IgnoreLibStdCpp) { - // Test that we don't do anything bad when we encounter libstdc++ paths. - - std::string usr = "/usr/include"; - std::vector files = { - // C library - usr + "/stdio.h", - // C++ library - usr + "/c++/8.0.1/vector", - }; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre()); - EXPECT_THAT(config.GetIncludeDirs(), testing::ElementsAre()); -} - -TEST_F(CppModuleConfigurationTest, AmbiguousCLib) { - // Test that we don't do anything when we are not sure where the - // right C standard library is. - - std::string usr1 = "/usr/include"; - std::string usr2 = "/usr/include/other/path"; - std::string libcpp = usr1 + "c++/v1"; - std::vector files = { - // First C library - usr1 + "/stdio.h", - // Second C library - usr2 + "/stdio.h", - // C++ library - libcpp + "/vector", - libcpp + "/module.modulemap", - }; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre()); - EXPECT_THAT(config.GetIncludeDirs(), testing::ElementsAre()); -} - -TEST_F(CppModuleConfigurationTest, AmbiguousLibCpp) { - // Test that we don't do anything when we are not sure where the - // right libc++ is. - - std::string usr = "/usr/include"; - std::string libcpp1 = usr + "c++/v1"; - std::string libcpp2 = usr + "c++/v2"; - std::vector files = { - // C library - usr + "/stdio.h", - // First C++ library - libcpp1 + "/vector", - libcpp1 + "/module.modulemap", - // Second C++ library - libcpp2 + "/vector", - libcpp2 + "/module.modulemap", - }; - CppModuleConfiguration config(makeFiles(files)); - EXPECT_THAT(config.GetImportedModules(), testing::ElementsAre()); - EXPECT_THAT(config.GetIncludeDirs(), testing::ElementsAre()); -} diff --git a/gnu/llvm/lldb/unittests/Expression/DWARFExpressionTest.cpp b/gnu/llvm/lldb/unittests/Expression/DWARFExpressionTest.cpp deleted file mode 100644 index 92101e913c2..00000000000 --- a/gnu/llvm/lldb/unittests/Expression/DWARFExpressionTest.cpp +++ /dev/null @@ -1,369 +0,0 @@ -//===-- DWARFExpressionTest.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Expression/DWARFExpression.h" -#include "Plugins/Platform/Linux/PlatformLinux.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "TestingSupport/Symbol/YAMLModuleTester.h" -#include "lldb/Core/Value.h" -#include "lldb/Core/Debugger.h" -#include "lldb/Core/dwarf.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Symbol/ObjectFile.h" -#include "lldb/Utility/Reproducer.h" -#include "lldb/Utility/StreamString.h" -#include "llvm/ADT/StringExtras.h" -#include "llvm/Testing/Support/Error.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -static llvm::Expected Evaluate(llvm::ArrayRef expr, - lldb::ModuleSP module_sp = {}, - DWARFUnit *unit = nullptr, - ExecutionContext *exe_ctx = nullptr) { - DataExtractor extractor(expr.data(), expr.size(), lldb::eByteOrderLittle, - /*addr_size*/ 4); - Value result; - Status status; - if (!DWARFExpression::Evaluate(exe_ctx, /*reg_ctx*/ nullptr, module_sp, - extractor, unit, lldb::eRegisterKindLLDB, - /*initial_value_ptr*/ nullptr, - /*object_address_ptr*/ nullptr, result, - &status)) - return status.ToError(); - - switch (result.GetValueType()) { - case Value::ValueType::Scalar: - return result.GetScalar(); - case Value::ValueType::LoadAddress: - return LLDB_INVALID_ADDRESS; - case Value::ValueType::HostAddress: { - // Convert small buffers to scalars to simplify the tests. - DataBufferHeap &buf = result.GetBuffer(); - if (buf.GetByteSize() <= 8) { - uint64_t val = 0; - memcpy(&val, buf.GetBytes(), buf.GetByteSize()); - return Scalar(llvm::APInt(buf.GetByteSize()*8, val, false)); - } - } - LLVM_FALLTHROUGH; - default: - return status.ToError(); - } -} - -class DWARFExpressionTester : public YAMLModuleTester { -public: - using YAMLModuleTester::YAMLModuleTester; - llvm::Expected Eval(llvm::ArrayRef expr) { - return ::Evaluate(expr, m_module_sp, m_dwarf_unit); - } -}; - -/// Unfortunately Scalar's operator==() is really picky. -static Scalar GetScalar(unsigned bits, uint64_t value, bool sign) { - Scalar scalar(value); - scalar.TruncOrExtendTo(bits, sign); - return scalar; -} - -/// This is needed for the tests that use a mock process. -class DWARFExpressionMockProcessTest : public ::testing::Test { -public: - void SetUp() override { - llvm::cantFail(repro::Reproducer::Initialize(repro::ReproducerMode::Off, {})); - FileSystem::Initialize(); - HostInfo::Initialize(); - platform_linux::PlatformLinux::Initialize(); - } - void TearDown() override { - platform_linux::PlatformLinux::Terminate(); - HostInfo::Terminate(); - FileSystem::Terminate(); - repro::Reproducer::Terminate(); - } -}; - -TEST(DWARFExpression, DW_OP_pick) { - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_lit1, DW_OP_lit0, DW_OP_pick, 0}), - llvm::HasValue(0)); - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_lit1, DW_OP_lit0, DW_OP_pick, 1}), - llvm::HasValue(1)); - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_lit1, DW_OP_lit0, DW_OP_pick, 2}), - llvm::Failed()); -} - -TEST(DWARFExpression, DW_OP_const) { - // Extend to address size. - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_const1u, 0x88}), llvm::HasValue(0x88)); - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_const1s, 0x88}), - llvm::HasValue(0xffffff88)); - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_const2u, 0x47, 0x88}), - llvm::HasValue(0x8847)); - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_const2s, 0x47, 0x88}), - llvm::HasValue(0xffff8847)); - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_const4u, 0x44, 0x42, 0x47, 0x88}), - llvm::HasValue(0x88474244)); - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_const4s, 0x44, 0x42, 0x47, 0x88}), - llvm::HasValue(0x88474244)); - - // Truncate to address size. - EXPECT_THAT_EXPECTED( - Evaluate({DW_OP_const8u, 0x00, 0x11, 0x22, 0x33, 0x44, 0x42, 0x47, 0x88}), - llvm::HasValue(0x33221100)); - EXPECT_THAT_EXPECTED( - Evaluate({DW_OP_const8s, 0x00, 0x11, 0x22, 0x33, 0x44, 0x42, 0x47, 0x88}), - llvm::HasValue(0x33221100)); - - // Don't truncate to address size for compatibility with clang (pr48087). - EXPECT_THAT_EXPECTED( - Evaluate({DW_OP_constu, 0x81, 0x82, 0x84, 0x88, 0x90, 0xa0, 0x40}), - llvm::HasValue(0x01010101010101)); - EXPECT_THAT_EXPECTED( - Evaluate({DW_OP_consts, 0x81, 0x82, 0x84, 0x88, 0x90, 0xa0, 0x40}), - llvm::HasValue(0xffff010101010101)); -} - -TEST(DWARFExpression, DW_OP_convert) { - /// Auxiliary debug info. - const char *yamldata = R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_386 -DWARF: - debug_abbrev: - - Table: - - Code: 0x00000001 - Tag: DW_TAG_compile_unit - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_language - Form: DW_FORM_data2 - - Code: 0x00000002 - Tag: DW_TAG_base_type - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_encoding - Form: DW_FORM_data1 - - Attribute: DW_AT_byte_size - Form: DW_FORM_data1 - debug_info: - - Version: 4 - AddrSize: 8 - Entries: - - AbbrCode: 0x00000001 - Values: - - Value: 0x000000000000000C - # 0x0000000e: - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000007 # DW_ATE_unsigned - - Value: 0x0000000000000004 - # 0x00000011: - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000007 # DW_ATE_unsigned - - Value: 0x0000000000000008 - # 0x00000014: - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000005 # DW_ATE_signed - - Value: 0x0000000000000008 - # 0x00000017: - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000008 # DW_ATE_unsigned_char - - Value: 0x0000000000000001 - # 0x0000001a: - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000006 # DW_ATE_signed_char - - Value: 0x0000000000000001 - # 0x0000001d: - - AbbrCode: 0x00000002 - Values: - - Value: 0x000000000000000b # DW_ATE_numeric_string - - Value: 0x0000000000000001 - - AbbrCode: 0x00000000 -)"; - uint8_t offs_uint32_t = 0x0000000e; - uint8_t offs_uint64_t = 0x00000011; - uint8_t offs_sint64_t = 0x00000014; - uint8_t offs_uchar = 0x00000017; - uint8_t offs_schar = 0x0000001a; - - DWARFExpressionTester t(yamldata); - ASSERT_TRUE((bool)t.GetDwarfUnit()); - - // Constant is given as little-endian. - bool is_signed = true; - bool not_signed = false; - - // - // Positive tests. - // - - // Leave as is. - EXPECT_THAT_EXPECTED( - t.Eval({DW_OP_const4u, 0x11, 0x22, 0x33, 0x44, // - DW_OP_convert, offs_uint32_t, DW_OP_stack_value}), - llvm::HasValue(GetScalar(64, 0x44332211, not_signed))); - - // Zero-extend to 64 bits. - EXPECT_THAT_EXPECTED( - t.Eval({DW_OP_const4u, 0x11, 0x22, 0x33, 0x44, // - DW_OP_convert, offs_uint64_t, DW_OP_stack_value}), - llvm::HasValue(GetScalar(64, 0x44332211, not_signed))); - - // Sign-extend to 64 bits. - EXPECT_THAT_EXPECTED( - t.Eval({DW_OP_const4s, 0xcc, 0xdd, 0xee, 0xff, // - DW_OP_convert, offs_sint64_t, DW_OP_stack_value}), - llvm::HasValue(GetScalar(64, 0xffffffffffeeddcc, is_signed))); - - // Sign-extend, then truncate. - EXPECT_THAT_EXPECTED( - t.Eval({DW_OP_const4s, 0xcc, 0xdd, 0xee, 0xff, // - DW_OP_convert, offs_sint64_t, // - DW_OP_convert, offs_uint32_t, DW_OP_stack_value}), - llvm::HasValue(GetScalar(32, 0xffeeddcc, not_signed))); - - // Truncate to default unspecified (pointer-sized) type. - EXPECT_THAT_EXPECTED(t.Eval({DW_OP_const4s, 0xcc, 0xdd, 0xee, 0xff, // - DW_OP_convert, offs_sint64_t, // - DW_OP_convert, 0x00, DW_OP_stack_value}), - llvm::HasValue(GetScalar(32, 0xffeeddcc, not_signed))); - - // Truncate to 8 bits. - EXPECT_THAT_EXPECTED(t.Eval({DW_OP_const4s, 'A', 'B', 'C', 'D', DW_OP_convert, - offs_uchar, DW_OP_stack_value}), - llvm::HasValue(GetScalar(8, 'A', not_signed))); - - // Also truncate to 8 bits. - EXPECT_THAT_EXPECTED(t.Eval({DW_OP_const4s, 'A', 'B', 'C', 'D', DW_OP_convert, - offs_schar, DW_OP_stack_value}), - llvm::HasValue(GetScalar(8, 'A', is_signed))); - - // - // Errors. - // - - // No Module. - EXPECT_THAT_ERROR(Evaluate({DW_OP_const1s, 'X', DW_OP_convert, 0x00}, nullptr, - t.GetDwarfUnit()) - .takeError(), - llvm::Failed()); - - // No DIE. - EXPECT_THAT_ERROR( - t.Eval({DW_OP_const1s, 'X', DW_OP_convert, 0x01}).takeError(), - llvm::Failed()); - - // Unsupported. - EXPECT_THAT_ERROR( - t.Eval({DW_OP_const1s, 'X', DW_OP_convert, 0x1d}).takeError(), - llvm::Failed()); -} - -TEST(DWARFExpression, DW_OP_stack_value) { - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_stack_value}), llvm::Failed()); -} - -TEST(DWARFExpression, DW_OP_piece) { - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_const2u, 0x11, 0x22, DW_OP_piece, 2, - DW_OP_const2u, 0x33, 0x44, DW_OP_piece, 2}), - llvm::HasValue(GetScalar(32, 0x44332211, true))); - EXPECT_THAT_EXPECTED( - Evaluate({DW_OP_piece, 1, DW_OP_const1u, 0xff, DW_OP_piece, 1}), - // Note that the "00" should really be "undef", but we can't - // represent that yet. - llvm::HasValue(GetScalar(16, 0xff00, true))); -} - -TEST(DWARFExpression, DW_OP_implicit_value) { - unsigned char bytes = 4; - - EXPECT_THAT_EXPECTED( - Evaluate({DW_OP_implicit_value, bytes, 0x11, 0x22, 0x33, 0x44}), - llvm::HasValue(GetScalar(8 * bytes, 0x44332211, true))); -} - -TEST(DWARFExpression, DW_OP_unknown) { - EXPECT_THAT_EXPECTED( - Evaluate({0xff}), - llvm::FailedWithMessage( - "Unhandled opcode DW_OP_unknown_ff in DWARFExpression")); -} - -TEST_F(DWARFExpressionMockProcessTest, DW_OP_deref) { - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_lit0, DW_OP_deref}), llvm::Failed()); - - struct MockProcess : Process { - using Process::Process; - ConstString GetPluginName() override { return ConstString("mock process"); } - uint32_t GetPluginVersion() override { return 0; } - bool CanDebug(lldb::TargetSP target, - bool plugin_specified_by_name) override { - return false; - }; - Status DoDestroy() override { return {}; } - void RefreshStateAfterStop() override {} - bool DoUpdateThreadList(ThreadList &old_thread_list, - ThreadList &new_thread_list) override { - return false; - }; - size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, - Status &error) override { - for (size_t i = 0; i < size; ++i) - ((char *)buf)[i] = (vm_addr + i) & 0xff; - error.Clear(); - return size; - } - }; - - // Set up a mock process. - ArchSpec arch("i386-pc-linux"); - Platform::SetHostPlatform( - platform_linux::PlatformLinux::CreateInstance(true, &arch)); - lldb::DebuggerSP debugger_sp = Debugger::CreateInstance(); - ASSERT_TRUE(debugger_sp); - lldb::TargetSP target_sp; - lldb::PlatformSP platform_sp; - debugger_sp->GetTargetList().CreateTarget( - *debugger_sp, "", arch, eLoadDependentsNo, platform_sp, target_sp); - ASSERT_TRUE(target_sp); - ASSERT_TRUE(target_sp->GetArchitecture().IsValid()); - ASSERT_TRUE(platform_sp); - lldb::ListenerSP listener_sp(Listener::MakeListener("dummy")); - lldb::ProcessSP process_sp = - std::make_shared(target_sp, listener_sp); - ASSERT_TRUE(process_sp); - - ExecutionContext exe_ctx(process_sp); - // Implicit location: *0x4. - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_lit4, DW_OP_deref, DW_OP_stack_value}, - {}, {}, &exe_ctx), - llvm::HasValue(GetScalar(32, 0x07060504, false))); - // Memory location: *(*0x4). - // Evaluate returns LLDB_INVALID_ADDRESS for all load addresses. - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_lit4, DW_OP_deref}, {}, {}, &exe_ctx), - llvm::HasValue(Scalar(LLDB_INVALID_ADDRESS))); - // Memory location: *0x4. - // Evaluate returns LLDB_INVALID_ADDRESS for all load addresses. - EXPECT_THAT_EXPECTED(Evaluate({DW_OP_lit4}, {}, {}, &exe_ctx), - llvm::HasValue(Scalar(4))); - // Implicit location: *0x4. - // Evaluate returns LLDB_INVALID_ADDRESS for all load addresses. - EXPECT_THAT_EXPECTED( - Evaluate({DW_OP_lit4, DW_OP_deref, DW_OP_stack_value}, {}, {}, &exe_ctx), - llvm::HasValue(GetScalar(32, 0x07060504, false))); -} diff --git a/gnu/llvm/lldb/unittests/Expression/DiagnosticManagerTest.cpp b/gnu/llvm/lldb/unittests/Expression/DiagnosticManagerTest.cpp deleted file mode 100644 index 3cfb5ed0b66..00000000000 --- a/gnu/llvm/lldb/unittests/Expression/DiagnosticManagerTest.cpp +++ /dev/null @@ -1,210 +0,0 @@ -//===-- DiagnosticManagerTest.cpp -----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Expression/DiagnosticManager.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -static const uint32_t custom_diag_id = 42; - -namespace { -class FixItDiag : public Diagnostic { - bool m_has_fixits; - -public: - FixItDiag(llvm::StringRef msg, bool has_fixits) - : Diagnostic(msg, DiagnosticSeverity::eDiagnosticSeverityError, - DiagnosticOrigin::eDiagnosticOriginLLDB, custom_diag_id), - m_has_fixits(has_fixits) {} - bool HasFixIts() const override { return m_has_fixits; } -}; -} // namespace - -namespace { -class TextDiag : public Diagnostic { -public: - TextDiag(llvm::StringRef msg, DiagnosticSeverity severity) - : Diagnostic(msg, severity, DiagnosticOrigin::eDiagnosticOriginLLDB, - custom_diag_id) {} -}; -} // namespace - -TEST(DiagnosticManagerTest, AddDiagnostic) { - DiagnosticManager mgr; - EXPECT_EQ(0U, mgr.Diagnostics().size()); - - std::string msg = "foo bar has happened"; - DiagnosticSeverity severity = DiagnosticSeverity::eDiagnosticSeverityError; - DiagnosticOrigin origin = DiagnosticOrigin::eDiagnosticOriginLLDB; - auto diag = - std::make_unique(msg, severity, origin, custom_diag_id); - mgr.AddDiagnostic(std::move(diag)); - EXPECT_EQ(1U, mgr.Diagnostics().size()); - const Diagnostic *got = mgr.Diagnostics().front().get(); - EXPECT_EQ(DiagnosticOrigin::eDiagnosticOriginLLDB, got->getKind()); - EXPECT_EQ(msg, got->GetMessage()); - EXPECT_EQ(severity, got->GetSeverity()); - EXPECT_EQ(custom_diag_id, got->GetCompilerID()); - EXPECT_EQ(false, got->HasFixIts()); -} - -TEST(DiagnosticManagerTest, HasFixits) { - DiagnosticManager mgr; - // By default we shouldn't have any fixits. - EXPECT_FALSE(mgr.HasFixIts()); - // Adding a diag without fixits shouldn't make HasFixIts return true. - mgr.AddDiagnostic(std::make_unique("no fixit", false)); - EXPECT_FALSE(mgr.HasFixIts()); - // Adding a diag with fixits will mark the manager as containing fixits. - mgr.AddDiagnostic(std::make_unique("fixit", true)); - EXPECT_TRUE(mgr.HasFixIts()); - // Adding another diag without fixit shouldn't make it return false. - mgr.AddDiagnostic(std::make_unique("no fixit", false)); - EXPECT_TRUE(mgr.HasFixIts()); - // Adding a diag with fixits. The manager should still return true. - mgr.AddDiagnostic(std::make_unique("fixit", true)); - EXPECT_TRUE(mgr.HasFixIts()); -} - -TEST(DiagnosticManagerTest, GetStringNoDiags) { - DiagnosticManager mgr; - EXPECT_EQ("", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, GetStringBasic) { - DiagnosticManager mgr; - mgr.AddDiagnostic( - std::make_unique("abc", eDiagnosticSeverityError)); - EXPECT_EQ("error: abc\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, GetStringMultiline) { - DiagnosticManager mgr; - - // Multiline diagnostics should only get one severity label. - mgr.AddDiagnostic( - std::make_unique("b\nc", eDiagnosticSeverityError)); - EXPECT_EQ("error: b\nc\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, GetStringMultipleDiags) { - DiagnosticManager mgr; - mgr.AddDiagnostic( - std::make_unique("abc", eDiagnosticSeverityError)); - EXPECT_EQ("error: abc\n", mgr.GetString()); - mgr.AddDiagnostic( - std::make_unique("def", eDiagnosticSeverityError)); - EXPECT_EQ("error: abc\nerror: def\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, GetStringSeverityLabels) { - DiagnosticManager mgr; - - // Different severities should cause different labels. - mgr.AddDiagnostic( - std::make_unique("foo", eDiagnosticSeverityError)); - mgr.AddDiagnostic( - std::make_unique("bar", eDiagnosticSeverityWarning)); - // Remarks have no labels. - mgr.AddDiagnostic( - std::make_unique("baz", eDiagnosticSeverityRemark)); - EXPECT_EQ("error: foo\nwarning: bar\nbaz\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, GetStringPreserveOrder) { - DiagnosticManager mgr; - - // Make sure we preserve the diagnostic order and do not sort them in any way. - mgr.AddDiagnostic( - std::make_unique("baz", eDiagnosticSeverityRemark)); - mgr.AddDiagnostic( - std::make_unique("bar", eDiagnosticSeverityWarning)); - mgr.AddDiagnostic( - std::make_unique("foo", eDiagnosticSeverityError)); - EXPECT_EQ("baz\nwarning: bar\nerror: foo\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, AppendMessageNoDiag) { - DiagnosticManager mgr; - - // FIXME: This *really* should not just fail silently. - mgr.AppendMessageToDiagnostic("no diag has been pushed yet"); - EXPECT_EQ(0U, mgr.Diagnostics().size()); -} - -TEST(DiagnosticManagerTest, AppendMessageAttachToLastDiag) { - DiagnosticManager mgr; - - mgr.AddDiagnostic( - std::make_unique("foo", eDiagnosticSeverityError)); - mgr.AddDiagnostic( - std::make_unique("bar", eDiagnosticSeverityError)); - // This should append to 'bar' and not to 'foo'. - mgr.AppendMessageToDiagnostic("message text"); - - EXPECT_EQ("error: foo\nerror: bar\nmessage text\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, AppendMessageSubsequentDiags) { - DiagnosticManager mgr; - - mgr.AddDiagnostic( - std::make_unique("bar", eDiagnosticSeverityError)); - mgr.AppendMessageToDiagnostic("message text"); - // Pushing another diag after the message should work fine. - mgr.AddDiagnostic( - std::make_unique("foo", eDiagnosticSeverityError)); - - EXPECT_EQ("error: bar\nmessage text\nerror: foo\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, PutString) { - DiagnosticManager mgr; - - mgr.PutString(eDiagnosticSeverityError, "foo"); - EXPECT_EQ(1U, mgr.Diagnostics().size()); - EXPECT_EQ(eDiagnosticOriginLLDB, mgr.Diagnostics().front()->getKind()); - EXPECT_EQ("error: foo\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, PutStringMultiple) { - DiagnosticManager mgr; - - // Multiple PutString should behave like multiple diagnostics. - mgr.PutString(eDiagnosticSeverityError, "foo"); - mgr.PutString(eDiagnosticSeverityError, "bar"); - EXPECT_EQ(2U, mgr.Diagnostics().size()); - EXPECT_EQ("error: foo\nerror: bar\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, PutStringSeverities) { - DiagnosticManager mgr; - - // Multiple PutString with different severities should behave like we - // created multiple diagnostics. - mgr.PutString(eDiagnosticSeverityError, "foo"); - mgr.PutString(eDiagnosticSeverityWarning, "bar"); - EXPECT_EQ(2U, mgr.Diagnostics().size()); - EXPECT_EQ("error: foo\nwarning: bar\n", mgr.GetString()); -} - -TEST(DiagnosticManagerTest, FixedExpression) { - DiagnosticManager mgr; - - // By default there should be no fixed expression. - EXPECT_EQ("", mgr.GetFixedExpression()); - - // Setting the fixed expression should change it. - mgr.SetFixedExpression("foo"); - EXPECT_EQ("foo", mgr.GetFixedExpression()); - - // Setting the fixed expression again should also change it. - mgr.SetFixedExpression("bar"); - EXPECT_EQ("bar", mgr.GetFixedExpression()); -} diff --git a/gnu/llvm/lldb/unittests/Host/CMakeLists.txt b/gnu/llvm/lldb/unittests/Host/CMakeLists.txt deleted file mode 100644 index 1cc0cb081e4..00000000000 --- a/gnu/llvm/lldb/unittests/Host/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -set (FILES - ConnectionFileDescriptorTest.cpp - FileActionTest.cpp - FileSystemTest.cpp - FileTest.cpp - HostInfoTest.cpp - HostTest.cpp - MainLoopTest.cpp - NativeProcessProtocolTest.cpp - PipeTest.cpp - ProcessLaunchInfoTest.cpp - SocketAddressTest.cpp - SocketTest.cpp - SocketTestUtilities.cpp -) - -if (CMAKE_SYSTEM_NAME MATCHES "Linux|Android") - list(APPEND FILES - linux/HostTest.cpp - linux/SupportTest.cpp - ) -endif() - -add_lldb_unittest(HostTests - ${FILES} - LINK_LIBS - lldbHost - lldbUtilityHelpers - LLVMTestingSupport - ) diff --git a/gnu/llvm/lldb/unittests/Host/ConnectionFileDescriptorTest.cpp b/gnu/llvm/lldb/unittests/Host/ConnectionFileDescriptorTest.cpp deleted file mode 100644 index 76c54a96b22..00000000000 --- a/gnu/llvm/lldb/unittests/Host/ConnectionFileDescriptorTest.cpp +++ /dev/null @@ -1,50 +0,0 @@ -//===-- ConnectionFileDescriptorTest.cpp ----------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "SocketTestUtilities.h" -#include "gtest/gtest.h" - -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Host/posix/ConnectionFileDescriptorPosix.h" -#include "lldb/Utility/UriParser.h" - -using namespace lldb_private; - -class ConnectionFileDescriptorTest : public testing::Test { -public: - SubsystemRAII subsystems; - - void TestGetURI(std::string ip) { - std::unique_ptr socket_a_up; - std::unique_ptr socket_b_up; - CreateTCPConnectedSockets(ip, &socket_a_up, &socket_b_up); - auto socket = socket_a_up.release(); - ConnectionFileDescriptor connection_file_descriptor(socket); - - llvm::StringRef scheme; - llvm::StringRef hostname; - int port; - llvm::StringRef path; - std::string uri(connection_file_descriptor.GetURI()); - EXPECT_TRUE(UriParser::Parse(uri, scheme, hostname, port, path)); - EXPECT_EQ(ip, hostname); - EXPECT_EQ(socket->GetRemotePortNumber(), port); - } -}; - -TEST_F(ConnectionFileDescriptorTest, TCPGetURIv4) { - if (!HostSupportsIPv4()) - return; - TestGetURI("127.0.0.1"); -} - -TEST_F(ConnectionFileDescriptorTest, TCPGetURIv6) { - if (!HostSupportsIPv6()) - return; - TestGetURI("::1"); -} diff --git a/gnu/llvm/lldb/unittests/Host/FileActionTest.cpp b/gnu/llvm/lldb/unittests/Host/FileActionTest.cpp deleted file mode 100644 index b208169aac2..00000000000 --- a/gnu/llvm/lldb/unittests/Host/FileActionTest.cpp +++ /dev/null @@ -1,19 +0,0 @@ -//===-- FileActionTest.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/FileAction.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(FileActionTest, Open) { - FileAction Action; - Action.Open(47, FileSpec("/tmp"), /*read*/ true, /*write*/ false); - EXPECT_EQ(Action.GetAction(), FileAction::eFileActionOpen); - EXPECT_EQ(Action.GetFileSpec(), FileSpec("/tmp")); -} diff --git a/gnu/llvm/lldb/unittests/Host/FileSystemTest.cpp b/gnu/llvm/lldb/unittests/Host/FileSystemTest.cpp deleted file mode 100644 index f31c5c42a1e..00000000000 --- a/gnu/llvm/lldb/unittests/Host/FileSystemTest.cpp +++ /dev/null @@ -1,331 +0,0 @@ -//===-- FileSystemTest.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "lldb/Host/FileSystem.h" -#include "llvm/Support/Errc.h" - -extern const char *TestMainArgv0; - -using namespace lldb_private; -using namespace llvm; -using llvm::sys::fs::UniqueID; - -// Modified from llvm/unittests/Support/VirtualFileSystemTest.cpp -namespace { -struct DummyFile : public vfs::File { - vfs::Status S; - explicit DummyFile(vfs::Status S) : S(S) {} - llvm::ErrorOr status() override { return S; } - llvm::ErrorOr> - getBuffer(const Twine &Name, int64_t FileSize, bool RequiresNullTerminator, - bool IsVolatile) override { - llvm_unreachable("unimplemented"); - } - std::error_code close() override { return std::error_code(); } -}; - -class DummyFileSystem : public vfs::FileSystem { - int FSID; // used to produce UniqueIDs - int FileID; // used to produce UniqueIDs - std::string cwd; - std::map FilesAndDirs; - - static int getNextFSID() { - static int Count = 0; - return Count++; - } - -public: - DummyFileSystem() : FSID(getNextFSID()), FileID(0) {} - - ErrorOr status(const Twine &Path) override { - std::map::iterator I = - FilesAndDirs.find(Path.str()); - if (I == FilesAndDirs.end()) - return make_error_code(llvm::errc::no_such_file_or_directory); - return I->second; - } - ErrorOr> - openFileForRead(const Twine &Path) override { - auto S = status(Path); - if (S) - return std::unique_ptr(new DummyFile{*S}); - return S.getError(); - } - llvm::ErrorOr getCurrentWorkingDirectory() const override { - return cwd; - } - std::error_code setCurrentWorkingDirectory(const Twine &Path) override { - cwd = Path.str(); - return std::error_code(); - } - // Map any symlink to "/symlink". - std::error_code getRealPath(const Twine &Path, - SmallVectorImpl &Output) const override { - auto I = FilesAndDirs.find(Path.str()); - if (I == FilesAndDirs.end()) - return make_error_code(llvm::errc::no_such_file_or_directory); - if (I->second.isSymlink()) { - Output.clear(); - Twine("/symlink").toVector(Output); - return std::error_code(); - } - Output.clear(); - Path.toVector(Output); - return std::error_code(); - } - - struct DirIterImpl : public llvm::vfs::detail::DirIterImpl { - std::map &FilesAndDirs; - std::map::iterator I; - std::string Path; - bool isInPath(StringRef S) { - if (Path.size() < S.size() && S.find(Path) == 0) { - auto LastSep = S.find_last_of('/'); - if (LastSep == Path.size() || LastSep == Path.size() - 1) - return true; - } - return false; - } - DirIterImpl(std::map &FilesAndDirs, - const Twine &_Path) - : FilesAndDirs(FilesAndDirs), I(FilesAndDirs.begin()), - Path(_Path.str()) { - for (; I != FilesAndDirs.end(); ++I) { - if (isInPath(I->first)) { - CurrentEntry = vfs::directory_entry(std::string(I->second.getName()), - I->second.getType()); - break; - } - } - } - std::error_code increment() override { - ++I; - for (; I != FilesAndDirs.end(); ++I) { - if (isInPath(I->first)) { - CurrentEntry = vfs::directory_entry(std::string(I->second.getName()), - I->second.getType()); - break; - } - } - if (I == FilesAndDirs.end()) - CurrentEntry = vfs::directory_entry(); - return std::error_code(); - } - }; - - vfs::directory_iterator dir_begin(const Twine &Dir, - std::error_code &EC) override { - return vfs::directory_iterator( - std::make_shared(FilesAndDirs, Dir)); - } - - void addEntry(StringRef Path, const vfs::Status &Status) { - FilesAndDirs[std::string(Path)] = Status; - } - - void addRegularFile(StringRef Path, sys::fs::perms Perms = sys::fs::all_all) { - vfs::Status S(Path, UniqueID(FSID, FileID++), - std::chrono::system_clock::now(), 0, 0, 1024, - sys::fs::file_type::regular_file, Perms); - addEntry(Path, S); - } - - void addDirectory(StringRef Path, sys::fs::perms Perms = sys::fs::all_all) { - vfs::Status S(Path, UniqueID(FSID, FileID++), - std::chrono::system_clock::now(), 0, 0, 0, - sys::fs::file_type::directory_file, Perms); - addEntry(Path, S); - } - - void addSymlink(StringRef Path) { - vfs::Status S(Path, UniqueID(FSID, FileID++), - std::chrono::system_clock::now(), 0, 0, 0, - sys::fs::file_type::symlink_file, sys::fs::all_all); - addEntry(Path, S); - } -}; -} // namespace - -TEST(FileSystemTest, FileAndDirectoryComponents) { - using namespace std::chrono; - FileSystem fs; - -#ifdef _WIN32 - FileSpec fs1("C:\\FILE\\THAT\\DOES\\NOT\\EXIST.TXT"); -#else - FileSpec fs1("/file/that/does/not/exist.txt"); -#endif - FileSpec fs2(TestMainArgv0); - - fs.Resolve(fs2); - - EXPECT_EQ(system_clock::time_point(), fs.GetModificationTime(fs1)); - EXPECT_LT(system_clock::time_point() + hours(24 * 365 * 20), - fs.GetModificationTime(fs2)); -} - -static IntrusiveRefCntPtr GetSimpleDummyFS() { - IntrusiveRefCntPtr D(new DummyFileSystem()); - D->addRegularFile("/foo"); - D->addDirectory("/bar"); - D->addSymlink("/baz"); - D->addRegularFile("/qux", ~sys::fs::perms::all_read); - D->setCurrentWorkingDirectory("/"); - return D; -} - -TEST(FileSystemTest, Exists) { - FileSystem fs(GetSimpleDummyFS()); - - EXPECT_TRUE(fs.Exists("/foo")); - EXPECT_TRUE(fs.Exists(FileSpec("/foo", FileSpec::Style::posix))); -} - -TEST(FileSystemTest, Readable) { - FileSystem fs(GetSimpleDummyFS()); - - EXPECT_TRUE(fs.Readable("/foo")); - EXPECT_TRUE(fs.Readable(FileSpec("/foo", FileSpec::Style::posix))); - - EXPECT_FALSE(fs.Readable("/qux")); - EXPECT_FALSE(fs.Readable(FileSpec("/qux", FileSpec::Style::posix))); -} - -TEST(FileSystemTest, GetByteSize) { - FileSystem fs(GetSimpleDummyFS()); - - EXPECT_EQ((uint64_t)1024, fs.GetByteSize("/foo")); - EXPECT_EQ((uint64_t)1024, - fs.GetByteSize(FileSpec("/foo", FileSpec::Style::posix))); -} - -TEST(FileSystemTest, GetPermissions) { - FileSystem fs(GetSimpleDummyFS()); - - EXPECT_EQ(sys::fs::all_all, fs.GetPermissions("/foo")); - EXPECT_EQ(sys::fs::all_all, - fs.GetPermissions(FileSpec("/foo", FileSpec::Style::posix))); -} - -TEST(FileSystemTest, MakeAbsolute) { - FileSystem fs(GetSimpleDummyFS()); - - { - StringRef foo_relative = "foo"; - SmallString<16> foo(foo_relative); - auto EC = fs.MakeAbsolute(foo); - EXPECT_FALSE(EC); - EXPECT_TRUE(foo.equals("/foo")); - } - - { - FileSpec file_spec("foo"); - auto EC = fs.MakeAbsolute(file_spec); - EXPECT_FALSE(EC); - EXPECT_EQ(FileSpec("/foo"), file_spec); - } -} - -TEST(FileSystemTest, Resolve) { - FileSystem fs(GetSimpleDummyFS()); - - { - StringRef foo_relative = "foo"; - SmallString<16> foo(foo_relative); - fs.Resolve(foo); - EXPECT_TRUE(foo.equals("/foo")); - } - - { - FileSpec file_spec("foo"); - fs.Resolve(file_spec); - EXPECT_EQ(FileSpec("/foo"), file_spec); - } - - { - StringRef foo_relative = "bogus"; - SmallString<16> foo(foo_relative); - fs.Resolve(foo); - EXPECT_TRUE(foo.equals("bogus")); - } - - { - FileSpec file_spec("bogus"); - fs.Resolve(file_spec); - EXPECT_EQ(FileSpec("bogus"), file_spec); - } -} - -FileSystem::EnumerateDirectoryResult -VFSCallback(void *baton, llvm::sys::fs::file_type file_type, - llvm::StringRef path) { - auto visited = static_cast *>(baton); - visited->push_back(path.str()); - return FileSystem::eEnumerateDirectoryResultNext; -} - -TEST(FileSystemTest, EnumerateDirectory) { - FileSystem fs(GetSimpleDummyFS()); - - std::vector visited; - - constexpr bool find_directories = true; - constexpr bool find_files = true; - constexpr bool find_other = true; - - fs.EnumerateDirectory("/", find_directories, find_files, find_other, - VFSCallback, &visited); - - EXPECT_THAT(visited, - testing::UnorderedElementsAre("/foo", "/bar", "/baz", "/qux")); -} - -TEST(FileSystemTest, OpenErrno) { -#ifdef _WIN32 - FileSpec spec("C:\\FILE\\THAT\\DOES\\NOT\\EXIST.TXT"); -#else - FileSpec spec("/file/that/does/not/exist.txt"); -#endif - FileSystem fs; - auto file = fs.Open(spec, File::eOpenOptionRead, 0, true); - ASSERT_FALSE(file); - std::error_code code = errorToErrorCode(file.takeError()); - EXPECT_EQ(code.category(), std::system_category()); - EXPECT_EQ(code.value(), ENOENT); -} - -TEST(FileSystemTest, EmptyTest) { - FileSpec spec; - FileSystem fs; - - { - std::error_code ec; - fs.DirBegin(spec, ec); - EXPECT_EQ(ec.category(), std::system_category()); - EXPECT_EQ(ec.value(), ENOENT); - } - - { - llvm::ErrorOr status = fs.GetStatus(spec); - ASSERT_FALSE(status); - EXPECT_EQ(status.getError().category(), std::system_category()); - EXPECT_EQ(status.getError().value(), ENOENT); - } - - EXPECT_EQ(sys::TimePoint<>(), fs.GetModificationTime(spec)); - EXPECT_EQ(static_cast(0), fs.GetByteSize(spec)); - EXPECT_EQ(llvm::sys::fs::perms::perms_not_known, fs.GetPermissions(spec)); - EXPECT_FALSE(fs.Exists(spec)); - EXPECT_FALSE(fs.Readable(spec)); - EXPECT_FALSE(fs.IsDirectory(spec)); - EXPECT_FALSE(fs.IsLocal(spec)); -} diff --git a/gnu/llvm/lldb/unittests/Host/FileTest.cpp b/gnu/llvm/lldb/unittests/Host/FileTest.cpp deleted file mode 100644 index 126d5e31486..00000000000 --- a/gnu/llvm/lldb/unittests/Host/FileTest.cpp +++ /dev/null @@ -1,57 +0,0 @@ -//===-- FileTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/File.h" -#include "llvm/ADT/SmallString.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/FileUtilities.h" -#include "llvm/Support/Path.h" -#include "llvm/Support/Program.h" -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(File, GetWaitableHandleFileno) { - const auto *Info = testing::UnitTest::GetInstance()->current_test_info(); - - llvm::SmallString<128> name; - int fd; - llvm::sys::fs::createTemporaryFile(llvm::Twine(Info->test_case_name()) + "-" + - Info->name(), - "test", fd, name); - llvm::FileRemover remover(name); - ASSERT_GE(fd, 0); - - FILE *stream = fdopen(fd, "r"); - ASSERT_TRUE(stream); - - NativeFile file(stream, true); - EXPECT_EQ(file.GetWaitableHandle(), fd); -} - -TEST(File, GetStreamFromDescriptor) { - const auto *Info = testing::UnitTest::GetInstance()->current_test_info(); - llvm::SmallString<128> name; - int fd; - llvm::sys::fs::createTemporaryFile(llvm::Twine(Info->test_case_name()) + "-" + - Info->name(), - "test", fd, name); - - llvm::FileRemover remover(name); - ASSERT_GE(fd, 0); - - NativeFile file(fd, File::eOpenOptionWrite, true); - ASSERT_TRUE(file.IsValid()); - - FILE *stream = file.GetStream(); - ASSERT_TRUE(stream != NULL); - - EXPECT_EQ(file.GetDescriptor(), fd); - EXPECT_EQ(file.GetWaitableHandle(), fd); -} diff --git a/gnu/llvm/lldb/unittests/Host/HostInfoTest.cpp b/gnu/llvm/lldb/unittests/Host/HostInfoTest.cpp deleted file mode 100644 index 0accdd8dbcd..00000000000 --- a/gnu/llvm/lldb/unittests/Host/HostInfoTest.cpp +++ /dev/null @@ -1,75 +0,0 @@ -//===-- HostInfoTest.cpp --------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/HostInfo.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/lldb-defines.h" -#include "llvm/Support/Host.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace llvm; - -namespace { -class HostInfoTest : public ::testing::Test { - SubsystemRAII subsystems; -}; -} // namespace - -TEST_F(HostInfoTest, GetAugmentedArchSpec) { - // Fully specified triple should not be changed. - ArchSpec spec = HostInfo::GetAugmentedArchSpec("x86_64-pc-linux-gnu"); - EXPECT_EQ(spec.GetTriple().getTriple(), "x86_64-pc-linux-gnu"); - - // Same goes if we specify at least one of (os, vendor, env). - spec = HostInfo::GetAugmentedArchSpec("x86_64-pc"); - EXPECT_EQ(spec.GetTriple().getTriple(), "x86_64-pc"); - - // But if we specify only an arch, we should fill in the rest from the host. - spec = HostInfo::GetAugmentedArchSpec("x86_64"); - Triple triple(sys::getDefaultTargetTriple()); - EXPECT_EQ(spec.GetTriple().getArch(), Triple::x86_64); - EXPECT_EQ(spec.GetTriple().getOS(), triple.getOS()); - EXPECT_EQ(spec.GetTriple().getVendor(), triple.getVendor()); - EXPECT_EQ(spec.GetTriple().getEnvironment(), triple.getEnvironment()); - - // Test LLDB_ARCH_DEFAULT - EXPECT_EQ(HostInfo::GetAugmentedArchSpec(LLDB_ARCH_DEFAULT).GetTriple(), - HostInfo::GetArchitecture(HostInfo::eArchKindDefault).GetTriple()); -} - -TEST_F(HostInfoTest, GetHostname) { - // Check non-empty string input works correctly. - std::string s("abc"); - EXPECT_TRUE(HostInfo::GetHostname(s)); -} - -#if defined(__APPLE__) -TEST_F(HostInfoTest, GetXcodeSDK) { - EXPECT_FALSE(HostInfo::GetXcodeSDKPath(XcodeSDK("MacOSX.sdk")).empty()); - // These are expected to fall back to an available version. - EXPECT_FALSE(HostInfo::GetXcodeSDKPath(XcodeSDK("MacOSX9999.sdk")).empty()); - // This is expected to fail. - EXPECT_TRUE(HostInfo::GetXcodeSDKPath(XcodeSDK("CeciNestPasUnOS.sdk")).empty()); -} -#endif - -TEST(HostInfoTestInitialization, InitTwice) { - llvm::VersionTuple Version; - { - SubsystemRAII subsystems; - Version = HostInfo::GetOSVersion(); - } - - { - SubsystemRAII subsystems; - EXPECT_EQ(Version, HostInfo::GetOSVersion()); - } -} diff --git a/gnu/llvm/lldb/unittests/Host/HostTest.cpp b/gnu/llvm/lldb/unittests/Host/HostTest.cpp deleted file mode 100644 index 5e01a6835c0..00000000000 --- a/gnu/llvm/lldb/unittests/Host/HostTest.cpp +++ /dev/null @@ -1,27 +0,0 @@ -//===-- HostTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/Host.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace llvm; - -TEST(Host, WaitStatusFormat) { - EXPECT_EQ("W01", formatv("{0:g}", WaitStatus{WaitStatus::Exit, 1}).str()); - EXPECT_EQ("X02", formatv("{0:g}", WaitStatus{WaitStatus::Signal, 2}).str()); - EXPECT_EQ("S03", formatv("{0:g}", WaitStatus{WaitStatus::Stop, 3}).str()); - EXPECT_EQ("Exited with status 4", - formatv("{0}", WaitStatus{WaitStatus::Exit, 4}).str()); -} - -TEST(Host, GetEnvironment) { - putenv(const_cast("LLDB_TEST_ENVIRONMENT_VAR=Host::GetEnvironment")); - ASSERT_EQ("Host::GetEnvironment", - Host::GetEnvironment().lookup("LLDB_TEST_ENVIRONMENT_VAR")); -} diff --git a/gnu/llvm/lldb/unittests/Host/MainLoopTest.cpp b/gnu/llvm/lldb/unittests/Host/MainLoopTest.cpp deleted file mode 100644 index 890f6eb6619..00000000000 --- a/gnu/llvm/lldb/unittests/Host/MainLoopTest.cpp +++ /dev/null @@ -1,200 +0,0 @@ -//===-- MainLoopTest.cpp --------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/MainLoop.h" -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Host/ConnectionFileDescriptor.h" -#include "lldb/Host/PseudoTerminal.h" -#include "lldb/Host/common/TCPSocket.h" -#include "llvm/Testing/Support/Error.h" -#include "gtest/gtest.h" -#include - -using namespace lldb_private; - -namespace { -class MainLoopTest : public testing::Test { -public: - SubsystemRAII subsystems; - - void SetUp() override { - bool child_processes_inherit = false; - Status error; - std::unique_ptr listen_socket_up( - new TCPSocket(true, child_processes_inherit)); - ASSERT_TRUE(error.Success()); - error = listen_socket_up->Listen("localhost:0", 5); - ASSERT_TRUE(error.Success()); - - Socket *accept_socket; - std::future accept_error = std::async(std::launch::async, [&] { - return listen_socket_up->Accept(accept_socket); - }); - - std::unique_ptr connect_socket_up( - new TCPSocket(true, child_processes_inherit)); - error = connect_socket_up->Connect( - llvm::formatv("localhost:{0}", listen_socket_up->GetLocalPortNumber()) - .str()); - ASSERT_TRUE(error.Success()); - ASSERT_TRUE(accept_error.get().Success()); - - callback_count = 0; - socketpair[0] = std::move(connect_socket_up); - socketpair[1].reset(accept_socket); - } - - void TearDown() override { - socketpair[0].reset(); - socketpair[1].reset(); - } - -protected: - MainLoop::Callback make_callback() { - return [&](MainLoopBase &loop) { - ++callback_count; - loop.RequestTermination(); - }; - } - std::shared_ptr socketpair[2]; - unsigned callback_count; -}; -} // namespace - -TEST_F(MainLoopTest, ReadObject) { - char X = 'X'; - size_t len = sizeof(X); - ASSERT_TRUE(socketpair[0]->Write(&X, len).Success()); - - MainLoop loop; - - Status error; - auto handle = loop.RegisterReadObject(socketpair[1], make_callback(), error); - ASSERT_TRUE(error.Success()); - ASSERT_TRUE(handle); - ASSERT_TRUE(loop.Run().Success()); - ASSERT_EQ(1u, callback_count); -} - -TEST_F(MainLoopTest, TerminatesImmediately) { - char X = 'X'; - size_t len = sizeof(X); - ASSERT_TRUE(socketpair[0]->Write(&X, len).Success()); - ASSERT_TRUE(socketpair[1]->Write(&X, len).Success()); - - MainLoop loop; - Status error; - auto handle0 = loop.RegisterReadObject(socketpair[0], make_callback(), error); - ASSERT_TRUE(error.Success()); - auto handle1 = loop.RegisterReadObject(socketpair[1], make_callback(), error); - ASSERT_TRUE(error.Success()); - - ASSERT_TRUE(loop.Run().Success()); - ASSERT_EQ(1u, callback_count); -} - -#ifdef LLVM_ON_UNIX -TEST_F(MainLoopTest, DetectsEOF) { - - PseudoTerminal term; - ASSERT_THAT_ERROR(term.OpenFirstAvailablePrimary(O_RDWR), llvm::Succeeded()); - ASSERT_THAT_ERROR(term.OpenSecondary(O_RDWR | O_NOCTTY), llvm::Succeeded()); - auto conn = std::make_unique( - term.ReleasePrimaryFileDescriptor(), true); - - Status error; - MainLoop loop; - auto handle = - loop.RegisterReadObject(conn->GetReadObject(), make_callback(), error); - ASSERT_TRUE(error.Success()); - term.CloseSecondaryFileDescriptor(); - - ASSERT_TRUE(loop.Run().Success()); - ASSERT_EQ(1u, callback_count); -} - -TEST_F(MainLoopTest, Signal) { - MainLoop loop; - Status error; - - auto handle = loop.RegisterSignal(SIGUSR1, make_callback(), error); - ASSERT_TRUE(error.Success()); - kill(getpid(), SIGUSR1); - ASSERT_TRUE(loop.Run().Success()); - ASSERT_EQ(1u, callback_count); -} - -// Test that a signal which is not monitored by the MainLoop does not -// cause a premature exit. -TEST_F(MainLoopTest, UnmonitoredSignal) { - MainLoop loop; - Status error; - struct sigaction sa; - sa.sa_sigaction = [](int, siginfo_t *, void *) { }; - sa.sa_flags = SA_SIGINFO; // important: no SA_RESTART - sigemptyset(&sa.sa_mask); - ASSERT_EQ(0, sigaction(SIGUSR2, &sa, nullptr)); - - auto handle = loop.RegisterSignal(SIGUSR1, make_callback(), error); - ASSERT_TRUE(error.Success()); - std::thread killer([]() { - sleep(1); - kill(getpid(), SIGUSR2); - sleep(1); - kill(getpid(), SIGUSR1); - }); - ASSERT_TRUE(loop.Run().Success()); - killer.join(); - ASSERT_EQ(1u, callback_count); -} - -// Test that two callbacks can be registered for the same signal -// and unregistered independently. -TEST_F(MainLoopTest, TwoSignalCallbacks) { - MainLoop loop; - Status error; - unsigned callback2_count = 0; - unsigned callback3_count = 0; - - auto handle = loop.RegisterSignal(SIGUSR1, make_callback(), error); - ASSERT_TRUE(error.Success()); - - { - // Run a single iteration with two callbacks enabled. - auto handle2 = loop.RegisterSignal( - SIGUSR1, [&](MainLoopBase &loop) { ++callback2_count; }, error); - ASSERT_TRUE(error.Success()); - - kill(getpid(), SIGUSR1); - ASSERT_TRUE(loop.Run().Success()); - ASSERT_EQ(1u, callback_count); - ASSERT_EQ(1u, callback2_count); - ASSERT_EQ(0u, callback3_count); - } - - { - // Make sure that remove + add new works. - auto handle3 = loop.RegisterSignal( - SIGUSR1, [&](MainLoopBase &loop) { ++callback3_count; }, error); - ASSERT_TRUE(error.Success()); - - kill(getpid(), SIGUSR1); - ASSERT_TRUE(loop.Run().Success()); - ASSERT_EQ(2u, callback_count); - ASSERT_EQ(1u, callback2_count); - ASSERT_EQ(1u, callback3_count); - } - - // Both extra callbacks should be unregistered now. - kill(getpid(), SIGUSR1); - ASSERT_TRUE(loop.Run().Success()); - ASSERT_EQ(3u, callback_count); - ASSERT_EQ(1u, callback2_count); - ASSERT_EQ(1u, callback3_count); -} -#endif diff --git a/gnu/llvm/lldb/unittests/Host/NativeProcessProtocolTest.cpp b/gnu/llvm/lldb/unittests/Host/NativeProcessProtocolTest.cpp deleted file mode 100644 index a48e67c9213..00000000000 --- a/gnu/llvm/lldb/unittests/Host/NativeProcessProtocolTest.cpp +++ /dev/null @@ -1,149 +0,0 @@ -//===-- NativeProcessProtocolTest.cpp -------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestingSupport/Host/NativeProcessTestUtils.h" - -#include "lldb/Host/common/NativeProcessProtocol.h" -#include "llvm/Support/Process.h" -#include "llvm/Testing/Support/Error.h" -#include "gmock/gmock.h" - -using namespace lldb_private; -using namespace lldb; -using namespace testing; - -TEST(NativeProcessProtocolTest, SetBreakpoint) { - NiceMock DummyDelegate; - MockProcess Process(DummyDelegate, - ArchSpec("x86_64-pc-linux")); - auto Trap = cantFail(Process.GetSoftwareBreakpointTrapOpcode(1)); - InSequence S; - EXPECT_CALL(Process, ReadMemory(0x47, 1)) - .WillOnce(Return(ByMove(std::vector{0xbb}))); - EXPECT_CALL(Process, WriteMemory(0x47, Trap)).WillOnce(Return(ByMove(1))); - EXPECT_CALL(Process, ReadMemory(0x47, 1)).WillOnce(Return(ByMove(Trap))); - EXPECT_THAT_ERROR(Process.SetBreakpoint(0x47, 0, false).ToError(), - llvm::Succeeded()); -} - -TEST(NativeProcessProtocolTest, SetBreakpointFailRead) { - NiceMock DummyDelegate; - MockProcess Process(DummyDelegate, - ArchSpec("x86_64-pc-linux")); - EXPECT_CALL(Process, ReadMemory(0x47, 1)) - .WillOnce(Return(ByMove( - llvm::createStringError(llvm::inconvertibleErrorCode(), "Foo")))); - EXPECT_THAT_ERROR(Process.SetBreakpoint(0x47, 0, false).ToError(), - llvm::Failed()); -} - -TEST(NativeProcessProtocolTest, SetBreakpointFailWrite) { - NiceMock DummyDelegate; - MockProcess Process(DummyDelegate, - ArchSpec("x86_64-pc-linux")); - auto Trap = cantFail(Process.GetSoftwareBreakpointTrapOpcode(1)); - InSequence S; - EXPECT_CALL(Process, ReadMemory(0x47, 1)) - .WillOnce(Return(ByMove(std::vector{0xbb}))); - EXPECT_CALL(Process, WriteMemory(0x47, Trap)) - .WillOnce(Return(ByMove( - llvm::createStringError(llvm::inconvertibleErrorCode(), "Foo")))); - EXPECT_THAT_ERROR(Process.SetBreakpoint(0x47, 0, false).ToError(), - llvm::Failed()); -} - -TEST(NativeProcessProtocolTest, SetBreakpointFailVerify) { - NiceMock DummyDelegate; - MockProcess Process(DummyDelegate, - ArchSpec("x86_64-pc-linux")); - auto Trap = cantFail(Process.GetSoftwareBreakpointTrapOpcode(1)); - InSequence S; - EXPECT_CALL(Process, ReadMemory(0x47, 1)) - .WillOnce(Return(ByMove(std::vector{0xbb}))); - EXPECT_CALL(Process, WriteMemory(0x47, Trap)).WillOnce(Return(ByMove(1))); - EXPECT_CALL(Process, ReadMemory(0x47, 1)) - .WillOnce(Return(ByMove( - llvm::createStringError(llvm::inconvertibleErrorCode(), "Foo")))); - EXPECT_THAT_ERROR(Process.SetBreakpoint(0x47, 0, false).ToError(), - llvm::Failed()); -} - -TEST(NativeProcessProtocolTest, ReadMemoryWithoutTrap) { - NiceMock DummyDelegate; - MockProcess Process(DummyDelegate, - ArchSpec("aarch64-pc-linux")); - FakeMemory M{{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}}; - EXPECT_CALL(Process, ReadMemory(_, _)) - .WillRepeatedly(Invoke(&M, &FakeMemory::Read)); - EXPECT_CALL(Process, WriteMemory(_, _)) - .WillRepeatedly(Invoke(&M, &FakeMemory::Write)); - - EXPECT_THAT_ERROR(Process.SetBreakpoint(0x4, 0, false).ToError(), - llvm::Succeeded()); - EXPECT_THAT_EXPECTED( - Process.ReadMemoryWithoutTrap(0, 10), - llvm::HasValue(std::vector{0, 1, 2, 3, 4, 5, 6, 7, 8, 9})); - EXPECT_THAT_EXPECTED(Process.ReadMemoryWithoutTrap(0, 6), - llvm::HasValue(std::vector{0, 1, 2, 3, 4, 5})); - EXPECT_THAT_EXPECTED(Process.ReadMemoryWithoutTrap(6, 4), - llvm::HasValue(std::vector{6, 7, 8, 9})); - EXPECT_THAT_EXPECTED(Process.ReadMemoryWithoutTrap(6, 2), - llvm::HasValue(std::vector{6, 7})); - EXPECT_THAT_EXPECTED(Process.ReadMemoryWithoutTrap(4, 2), - llvm::HasValue(std::vector{4, 5})); -} - -TEST(NativeProcessProtocolTest, ReadCStringFromMemory) { - NiceMock DummyDelegate; - MockProcess Process(DummyDelegate, - ArchSpec("aarch64-pc-linux")); - FakeMemory M({'h', 'e', 'l', 'l', 'o', 0, 'w', 'o'}); - EXPECT_CALL(Process, ReadMemory(_, _)) - .WillRepeatedly(Invoke(&M, &FakeMemory::Read)); - - char string[1024]; - size_t bytes_read; - EXPECT_THAT_EXPECTED(Process.ReadCStringFromMemory( - 0x0, &string[0], sizeof(string), bytes_read), - llvm::HasValue(llvm::StringRef("hello"))); - EXPECT_EQ(bytes_read, 6UL); -} - -TEST(NativeProcessProtocolTest, ReadCStringFromMemory_MaxSize) { - NiceMock DummyDelegate; - MockProcess Process(DummyDelegate, - ArchSpec("aarch64-pc-linux")); - FakeMemory M({'h', 'e', 'l', 'l', 'o', 0, 'w', 'o'}); - EXPECT_CALL(Process, ReadMemory(_, _)) - .WillRepeatedly(Invoke(&M, &FakeMemory::Read)); - - char string[4]; - size_t bytes_read; - EXPECT_THAT_EXPECTED(Process.ReadCStringFromMemory( - 0x0, &string[0], sizeof(string), bytes_read), - llvm::HasValue(llvm::StringRef("hel"))); - EXPECT_EQ(bytes_read, 3UL); -} - -TEST(NativeProcessProtocolTest, ReadCStringFromMemory_CrossPageBoundary) { - NiceMock DummyDelegate; - MockProcess Process(DummyDelegate, - ArchSpec("aarch64-pc-linux")); - unsigned string_start = llvm::sys::Process::getPageSizeEstimate() - 3; - FakeMemory M({'h', 'e', 'l', 'l', 'o', 0, 'w', 'o'}, string_start); - EXPECT_CALL(Process, ReadMemory(_, _)) - .WillRepeatedly(Invoke(&M, &FakeMemory::Read)); - - char string[1024]; - size_t bytes_read; - EXPECT_THAT_EXPECTED(Process.ReadCStringFromMemory(string_start, &string[0], - sizeof(string), - bytes_read), - llvm::HasValue(llvm::StringRef("hello"))); - EXPECT_EQ(bytes_read, 6UL); -} \ No newline at end of file diff --git a/gnu/llvm/lldb/unittests/Host/PipeTest.cpp b/gnu/llvm/lldb/unittests/Host/PipeTest.cpp deleted file mode 100644 index 35a44ccf037..00000000000 --- a/gnu/llvm/lldb/unittests/Host/PipeTest.cpp +++ /dev/null @@ -1,51 +0,0 @@ -//===-- PipeTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/Pipe.h" -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -class PipeTest : public testing::Test { -public: - SubsystemRAII subsystems; -}; - -TEST_F(PipeTest, CreateWithUniqueName) { - Pipe pipe; - llvm::SmallString<0> name; - ASSERT_THAT_ERROR(pipe.CreateWithUniqueName("PipeTest-CreateWithUniqueName", - /*child_process_inherit=*/false, - name) - .ToError(), - llvm::Succeeded()); -} - -// Test broken -#ifndef _WIN32 -TEST_F(PipeTest, OpenAsReader) { - Pipe pipe; - llvm::SmallString<0> name; - ASSERT_THAT_ERROR(pipe.CreateWithUniqueName("PipeTest-OpenAsReader", - /*child_process_inherit=*/false, - name) - .ToError(), - llvm::Succeeded()); - - // Ensure name is not null-terminated - size_t name_len = name.size(); - name += "foobar"; - llvm::StringRef name_ref(name.data(), name_len); - ASSERT_THAT_ERROR( - pipe.OpenAsReader(name_ref, /*child_process_inherit=*/false).ToError(), - llvm::Succeeded()); -} -#endif diff --git a/gnu/llvm/lldb/unittests/Host/ProcessLaunchInfoTest.cpp b/gnu/llvm/lldb/unittests/Host/ProcessLaunchInfoTest.cpp deleted file mode 100644 index 0b3607092e8..00000000000 --- a/gnu/llvm/lldb/unittests/Host/ProcessLaunchInfoTest.cpp +++ /dev/null @@ -1,27 +0,0 @@ -//===-- ProcessLaunchInfoTest.cpp -----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/ProcessLaunchInfo.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb; - -TEST(ProcessLaunchInfoTest, Constructor) { - ProcessLaunchInfo Info(FileSpec("/stdin"), FileSpec("/stdout"), - FileSpec("/stderr"), FileSpec("/wd"), - eLaunchFlagStopAtEntry); - EXPECT_EQ(FileSpec("/stdin"), - Info.GetFileActionForFD(STDIN_FILENO)->GetFileSpec()); - EXPECT_EQ(FileSpec("/stdout"), - Info.GetFileActionForFD(STDOUT_FILENO)->GetFileSpec()); - EXPECT_EQ(FileSpec("/stderr"), - Info.GetFileActionForFD(STDERR_FILENO)->GetFileSpec()); - EXPECT_EQ(FileSpec("/wd"), Info.GetWorkingDirectory()); - EXPECT_EQ(eLaunchFlagStopAtEntry, Info.GetFlags().Get()); -} diff --git a/gnu/llvm/lldb/unittests/Host/SocketAddressTest.cpp b/gnu/llvm/lldb/unittests/Host/SocketAddressTest.cpp deleted file mode 100644 index dc5f55253f6..00000000000 --- a/gnu/llvm/lldb/unittests/Host/SocketAddressTest.cpp +++ /dev/null @@ -1,83 +0,0 @@ -//===-- SocketAddressTest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/SocketAddress.h" -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Host/Socket.h" -#include "llvm/Testing/Support/Error.h" - -#include "gtest/gtest.h" - -using namespace lldb_private; - -namespace { -class SocketAddressTest : public testing::Test { -public: - SubsystemRAII subsystems; -}; -} // namespace - -TEST_F(SocketAddressTest, Set) { - SocketAddress sa; - ASSERT_TRUE(sa.SetToLocalhost(AF_INET, 1138)); - ASSERT_STREQ("127.0.0.1", sa.GetIPAddress().c_str()); - ASSERT_EQ(1138, sa.GetPort()); - - ASSERT_TRUE(sa.SetToAnyAddress(AF_INET, 0)); - ASSERT_STREQ("0.0.0.0", sa.GetIPAddress().c_str()); - ASSERT_EQ(0, sa.GetPort()); - - ASSERT_TRUE(sa.SetToLocalhost(AF_INET6, 1139)); - ASSERT_TRUE(sa.GetIPAddress() == "::1" || - sa.GetIPAddress() == "0:0:0:0:0:0:0:1") - << "Address was: " << sa.GetIPAddress(); - ASSERT_EQ(1139, sa.GetPort()); -} - -TEST_F(SocketAddressTest, GetAddressInfo) { - auto addr = SocketAddress::GetAddressInfo("127.0.0.1", nullptr, AF_UNSPEC, - SOCK_STREAM, IPPROTO_TCP); - ASSERT_EQ(1u, addr.size()); - EXPECT_EQ(AF_INET, addr[0].GetFamily()); - EXPECT_EQ("127.0.0.1", addr[0].GetIPAddress()); -} - -#ifdef _WIN32 - -// we need to test our inet_ntop implementation for Windows XP -const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); - -TEST_F(SocketAddressTest, inet_ntop) { - const uint8_t address4[4] = {255, 0, 1, 100}; - const uint8_t address6[16] = {0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 255, 0}; - - char buffer[INET6_ADDRSTRLEN]; - memset(buffer, 'x', sizeof(buffer)); - EXPECT_STREQ("1:203:405:607:809:a0b:c0d:ff00", - inet_ntop(AF_INET6, address6, buffer, sizeof(buffer))); - memset(buffer, 'x', sizeof(buffer)); - EXPECT_STREQ("1:203:405:607:809:a0b:c0d:ff00", - inet_ntop(AF_INET6, address6, buffer, 31)); - memset(buffer, 'x', sizeof(buffer)); - EXPECT_STREQ(nullptr, inet_ntop(AF_INET6, address6, buffer, 0)); - memset(buffer, 'x', sizeof(buffer)); - EXPECT_STREQ(nullptr, inet_ntop(AF_INET6, address6, buffer, 30)); - - memset(buffer, 'x', sizeof(buffer)); - EXPECT_STREQ("255.0.1.100", - inet_ntop(AF_INET, address4, buffer, sizeof(buffer))); - memset(buffer, 'x', sizeof(buffer)); - EXPECT_STREQ("255.0.1.100", inet_ntop(AF_INET, address4, buffer, 12)); - memset(buffer, 'x', sizeof(buffer)); - EXPECT_STREQ(nullptr, inet_ntop(AF_INET, address4, buffer, 0)); - memset(buffer, 'x', sizeof(buffer)); - EXPECT_STREQ(nullptr, inet_ntop(AF_INET, address4, buffer, 11)); -} - -#endif diff --git a/gnu/llvm/lldb/unittests/Host/SocketTest.cpp b/gnu/llvm/lldb/unittests/Host/SocketTest.cpp deleted file mode 100644 index 27d42f83571..00000000000 --- a/gnu/llvm/lldb/unittests/Host/SocketTest.cpp +++ /dev/null @@ -1,239 +0,0 @@ -//===-- SocketTest.cpp ----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "SocketTestUtilities.h" -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Host/Config.h" -#include "lldb/Utility/UriParser.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -struct SocketTestParams { - bool is_ipv6; - std::string localhost_ip; -}; - -class SocketTest : public testing::TestWithParam { -public: - SubsystemRAII subsystems; - -protected: - bool HostSupportsProtocol() const { - if (GetParam().is_ipv6) - return HostSupportsIPv6(); - return HostSupportsIPv4(); - } -}; - -TEST_P(SocketTest, DecodeHostAndPort) { - std::string host_str; - std::string port_str; - int32_t port; - Status error; - EXPECT_TRUE(Socket::DecodeHostAndPort("localhost:1138", host_str, port_str, - port, &error)); - EXPECT_STREQ("localhost", host_str.c_str()); - EXPECT_STREQ("1138", port_str.c_str()); - EXPECT_EQ(1138, port); - EXPECT_TRUE(error.Success()); - - EXPECT_FALSE(Socket::DecodeHostAndPort("google.com:65536", host_str, port_str, - port, &error)); - EXPECT_TRUE(error.Fail()); - EXPECT_STREQ("invalid host:port specification: 'google.com:65536'", - error.AsCString()); - - EXPECT_FALSE(Socket::DecodeHostAndPort("google.com:-1138", host_str, port_str, - port, &error)); - EXPECT_TRUE(error.Fail()); - EXPECT_STREQ("invalid host:port specification: 'google.com:-1138'", - error.AsCString()); - - EXPECT_FALSE(Socket::DecodeHostAndPort("google.com:65536", host_str, port_str, - port, &error)); - EXPECT_TRUE(error.Fail()); - EXPECT_STREQ("invalid host:port specification: 'google.com:65536'", - error.AsCString()); - - EXPECT_TRUE( - Socket::DecodeHostAndPort("12345", host_str, port_str, port, &error)); - EXPECT_STREQ("", host_str.c_str()); - EXPECT_STREQ("12345", port_str.c_str()); - EXPECT_EQ(12345, port); - EXPECT_TRUE(error.Success()); - - EXPECT_TRUE( - Socket::DecodeHostAndPort("*:0", host_str, port_str, port, &error)); - EXPECT_STREQ("*", host_str.c_str()); - EXPECT_STREQ("0", port_str.c_str()); - EXPECT_EQ(0, port); - EXPECT_TRUE(error.Success()); - - EXPECT_TRUE( - Socket::DecodeHostAndPort("*:65535", host_str, port_str, port, &error)); - EXPECT_STREQ("*", host_str.c_str()); - EXPECT_STREQ("65535", port_str.c_str()); - EXPECT_EQ(65535, port); - EXPECT_TRUE(error.Success()); - - EXPECT_TRUE( - Socket::DecodeHostAndPort("[::1]:12345", host_str, port_str, port, &error)); - EXPECT_STREQ("::1", host_str.c_str()); - EXPECT_STREQ("12345", port_str.c_str()); - EXPECT_EQ(12345, port); - EXPECT_TRUE(error.Success()); - - EXPECT_TRUE( - Socket::DecodeHostAndPort("[abcd:12fg:AF58::1]:12345", host_str, port_str, port, &error)); - EXPECT_STREQ("abcd:12fg:AF58::1", host_str.c_str()); - EXPECT_STREQ("12345", port_str.c_str()); - EXPECT_EQ(12345, port); - EXPECT_TRUE(error.Success()); -} - -#if LLDB_ENABLE_POSIX -TEST_P(SocketTest, DomainListenConnectAccept) { - llvm::SmallString<64> Path; - std::error_code EC = llvm::sys::fs::createUniqueDirectory("DomainListenConnectAccept", Path); - ASSERT_FALSE(EC); - llvm::sys::path::append(Path, "test"); - - // Skip the test if the $TMPDIR is too long to hold a domain socket. - if (Path.size() > 107u) - return; - - std::unique_ptr socket_a_up; - std::unique_ptr socket_b_up; - CreateDomainConnectedSockets(Path, &socket_a_up, &socket_b_up); -} -#endif - -TEST_P(SocketTest, TCPListen0ConnectAccept) { - if (!HostSupportsProtocol()) - return; - std::unique_ptr socket_a_up; - std::unique_ptr socket_b_up; - CreateTCPConnectedSockets(GetParam().localhost_ip, &socket_a_up, - &socket_b_up); -} - -TEST_P(SocketTest, TCPGetAddress) { - std::unique_ptr socket_a_up; - std::unique_ptr socket_b_up; - if (!HostSupportsProtocol()) - return; - CreateTCPConnectedSockets(GetParam().localhost_ip, &socket_a_up, - &socket_b_up); - - EXPECT_EQ(socket_a_up->GetLocalPortNumber(), - socket_b_up->GetRemotePortNumber()); - EXPECT_EQ(socket_b_up->GetLocalPortNumber(), - socket_a_up->GetRemotePortNumber()); - EXPECT_NE(socket_a_up->GetLocalPortNumber(), - socket_b_up->GetLocalPortNumber()); - EXPECT_STREQ(GetParam().localhost_ip.c_str(), - socket_a_up->GetRemoteIPAddress().c_str()); - EXPECT_STREQ(GetParam().localhost_ip.c_str(), - socket_b_up->GetRemoteIPAddress().c_str()); -} - -TEST_P(SocketTest, UDPConnect) { - // UDPSocket::Connect() creates sockets with AF_INET (IPv4). - if (!HostSupportsIPv4()) - return; - llvm::Expected> socket = - UDPSocket::Connect("127.0.0.1:0", /*child_processes_inherit=*/false); - - ASSERT_THAT_EXPECTED(socket, llvm::Succeeded()); - EXPECT_TRUE(socket.get()->IsValid()); -} - -TEST_P(SocketTest, TCPListen0GetPort) { - if (!HostSupportsIPv4()) - return; - Predicate port_predicate; - port_predicate.SetValue(0, eBroadcastNever); - llvm::Expected> sock = - Socket::TcpListen("10.10.12.3:0", false, &port_predicate); - ASSERT_THAT_EXPECTED(sock, llvm::Succeeded()); - ASSERT_TRUE(sock.get()->IsValid()); - EXPECT_NE(sock.get()->GetLocalPortNumber(), 0); -} - -TEST_P(SocketTest, TCPGetConnectURI) { - std::unique_ptr socket_a_up; - std::unique_ptr socket_b_up; - if (!HostSupportsProtocol()) - return; - CreateTCPConnectedSockets(GetParam().localhost_ip, &socket_a_up, - &socket_b_up); - - llvm::StringRef scheme; - llvm::StringRef hostname; - int port; - llvm::StringRef path; - std::string uri(socket_a_up->GetRemoteConnectionURI()); - EXPECT_TRUE(UriParser::Parse(uri, scheme, hostname, port, path)); - EXPECT_EQ(scheme, "connect"); - EXPECT_EQ(port, socket_a_up->GetRemotePortNumber()); -} - -TEST_P(SocketTest, UDPGetConnectURI) { - // UDPSocket::Connect() creates sockets with AF_INET (IPv4). - if (!HostSupportsIPv4()) - return; - llvm::Expected> socket = - UDPSocket::Connect("127.0.0.1:0", /*child_processes_inherit=*/false); - ASSERT_THAT_EXPECTED(socket, llvm::Succeeded()); - - llvm::StringRef scheme; - llvm::StringRef hostname; - int port; - llvm::StringRef path; - std::string uri = socket.get()->GetRemoteConnectionURI(); - EXPECT_TRUE(UriParser::Parse(uri, scheme, hostname, port, path)); - EXPECT_EQ(scheme, "udp"); -} - -#if LLDB_ENABLE_POSIX -TEST_P(SocketTest, DomainGetConnectURI) { - llvm::SmallString<64> domain_path; - std::error_code EC = - llvm::sys::fs::createUniqueDirectory("DomainListenConnectAccept", domain_path); - ASSERT_FALSE(EC); - llvm::sys::path::append(domain_path, "test"); - - // Skip the test if the $TMPDIR is too long to hold a domain socket. - if (domain_path.size() > 107u) - return; - - std::unique_ptr socket_a_up; - std::unique_ptr socket_b_up; - CreateDomainConnectedSockets(domain_path, &socket_a_up, &socket_b_up); - - llvm::StringRef scheme; - llvm::StringRef hostname; - int port; - llvm::StringRef path; - std::string uri(socket_a_up->GetRemoteConnectionURI()); - EXPECT_TRUE(UriParser::Parse(uri, scheme, hostname, port, path)); - EXPECT_EQ(scheme, "unix-connect"); - EXPECT_EQ(path, domain_path); -} -#endif - -INSTANTIATE_TEST_SUITE_P( - SocketTests, SocketTest, - testing::Values(SocketTestParams{/*is_ipv6=*/false, - /*localhost_ip=*/"127.0.0.1"}, - SocketTestParams{/*is_ipv6=*/true, /*localhost_ip=*/"::1"}), - // Prints "SocketTests/SocketTest.DecodeHostAndPort/ipv4" etc. in test logs. - [](const testing::TestParamInfo &info) { - return info.param.is_ipv6 ? "ipv6" : "ipv4"; - }); diff --git a/gnu/llvm/lldb/unittests/Host/SocketTestUtilities.cpp b/gnu/llvm/lldb/unittests/Host/SocketTestUtilities.cpp deleted file mode 100644 index 3b52a66a09e..00000000000 --- a/gnu/llvm/lldb/unittests/Host/SocketTestUtilities.cpp +++ /dev/null @@ -1,128 +0,0 @@ -//===-- SocketTestUtilities.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "SocketTestUtilities.h" -#include "lldb/Host/Config.h" -#include "lldb/Utility/StreamString.h" - -#ifdef _WIN32 -#include -#include -#else -#include -#endif - -using namespace lldb_private; - -static void AcceptThread(Socket *listen_socket, bool child_processes_inherit, - Socket **accept_socket, Status *error) { - *error = listen_socket->Accept(*accept_socket); -} - -template -void lldb_private::CreateConnectedSockets( - llvm::StringRef listen_remote_address, - const std::function &get_connect_addr, - std::unique_ptr *a_up, std::unique_ptr *b_up) { - bool child_processes_inherit = false; - Status error; - std::unique_ptr listen_socket_up( - new SocketType(true, child_processes_inherit)); - ASSERT_THAT_ERROR(error.ToError(), llvm::Succeeded()); - error = listen_socket_up->Listen(listen_remote_address, 5); - ASSERT_THAT_ERROR(error.ToError(), llvm::Succeeded()); - ASSERT_TRUE(listen_socket_up->IsValid()); - - Status accept_error; - Socket *accept_socket; - std::thread accept_thread(AcceptThread, listen_socket_up.get(), - child_processes_inherit, &accept_socket, - &accept_error); - - std::string connect_remote_address = get_connect_addr(*listen_socket_up); - std::unique_ptr connect_socket_up( - new SocketType(true, child_processes_inherit)); - ASSERT_THAT_ERROR(error.ToError(), llvm::Succeeded()); - error = connect_socket_up->Connect(connect_remote_address); - ASSERT_THAT_ERROR(error.ToError(), llvm::Succeeded()); - ASSERT_TRUE(connect_socket_up->IsValid()); - - a_up->swap(connect_socket_up); - ASSERT_TRUE((*a_up)->IsValid()); - - accept_thread.join(); - b_up->reset(static_cast(accept_socket)); - ASSERT_THAT_ERROR(accept_error.ToError(), llvm::Succeeded()); - ASSERT_NE(nullptr, b_up->get()); - ASSERT_TRUE((*b_up)->IsValid()); - - listen_socket_up.reset(); -} - -bool lldb_private::CreateTCPConnectedSockets( - std::string listen_remote_ip, std::unique_ptr *socket_a_up, - std::unique_ptr *socket_b_up) { - StreamString strm; - strm.Printf("[%s]:0", listen_remote_ip.c_str()); - CreateConnectedSockets( - strm.GetString(), - [=](const TCPSocket &s) { - char connect_remote_address[64]; - snprintf(connect_remote_address, sizeof(connect_remote_address), - "[%s]:%u", listen_remote_ip.c_str(), s.GetLocalPortNumber()); - return std::string(connect_remote_address); - }, - socket_a_up, socket_b_up); - return true; -} - -#if LLDB_ENABLE_POSIX -void lldb_private::CreateDomainConnectedSockets( - llvm::StringRef path, std::unique_ptr *socket_a_up, - std::unique_ptr *socket_b_up) { - return CreateConnectedSockets( - path, [=](const DomainSocket &) { return path.str(); }, socket_a_up, - socket_b_up); -} -#endif - -static bool CheckIPSupport(llvm::StringRef Proto, llvm::StringRef Addr) { - llvm::Expected> Sock = Socket::TcpListen( - Addr, /*child_processes_inherit=*/false, /*predicate=*/nullptr); - if (Sock) - return true; - llvm::Error Err = Sock.takeError(); - GTEST_LOG_(WARNING) << llvm::formatv( - "Creating a canary {0} TCP socket failed: {1}.", - Proto, Err) - .str(); - bool HasProtocolError = false; - handleAllErrors(std::move(Err), [&](std::unique_ptr ECErr) { - std::error_code ec = ECErr->convertToErrorCode(); - if (ec == std::make_error_code(std::errc::address_family_not_supported) || - ec == std::make_error_code(std::errc::address_not_available)) - HasProtocolError = true; - }); - if (HasProtocolError) { - GTEST_LOG_(WARNING) - << llvm::formatv( - "Assuming the host does not support {0}. Skipping test.", Proto) - .str(); - return false; - } - GTEST_LOG_(WARNING) << "Continuing anyway. The test will probably fail."; - return true; -} - -bool lldb_private::HostSupportsIPv4() { - return CheckIPSupport("IPv4", "127.0.0.1:0"); -} - -bool lldb_private::HostSupportsIPv6() { - return CheckIPSupport("IPv6", "[::1]:0"); -} diff --git a/gnu/llvm/lldb/unittests/Host/SocketTestUtilities.h b/gnu/llvm/lldb/unittests/Host/SocketTestUtilities.h deleted file mode 100644 index 943d98a96be..00000000000 --- a/gnu/llvm/lldb/unittests/Host/SocketTestUtilities.h +++ /dev/null @@ -1,47 +0,0 @@ -//===--------------------- SocketTestUtilities.h ----------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_HOST_SOCKETTESTUTILITIES_H -#define LLDB_UNITTESTS_HOST_SOCKETTESTUTILITIES_H - -#include -#include -#include - -#include "lldb/Host/Config.h" -#include "lldb/Host/Socket.h" -#include "lldb/Host/common/TCPSocket.h" -#include "lldb/Host/common/UDPSocket.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/Path.h" -#include "llvm/Testing/Support/Error.h" - -#if LLDB_ENABLE_POSIX -#include "lldb/Host/posix/DomainSocket.h" -#endif - -namespace lldb_private { -template -void CreateConnectedSockets( - llvm::StringRef listen_remote_address, - const std::function &get_connect_addr, - std::unique_ptr *a_up, std::unique_ptr *b_up); -bool CreateTCPConnectedSockets(std::string listen_remote_ip, - std::unique_ptr *a_up, - std::unique_ptr *b_up); -#if LLDB_ENABLE_POSIX -void CreateDomainConnectedSockets(llvm::StringRef path, - std::unique_ptr *a_up, - std::unique_ptr *b_up); -#endif - -bool HostSupportsIPv6(); -bool HostSupportsIPv4(); -} // namespace lldb_private - -#endif diff --git a/gnu/llvm/lldb/unittests/Host/linux/HostTest.cpp b/gnu/llvm/lldb/unittests/Host/linux/HostTest.cpp deleted file mode 100644 index 699ccba0a98..00000000000 --- a/gnu/llvm/lldb/unittests/Host/linux/HostTest.cpp +++ /dev/null @@ -1,58 +0,0 @@ -//===-- HostTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/Host.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Target/Process.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -namespace { -class HostTest : public testing::Test { -public: - static void SetUpTestCase() { - FileSystem::Initialize(); - HostInfo::Initialize(); - } - static void TearDownTestCase() { - HostInfo::Terminate(); - FileSystem::Terminate(); - } -}; -} // namespace - -TEST_F(HostTest, GetProcessInfo) { - ProcessInstanceInfo Info; - ASSERT_FALSE(Host::GetProcessInfo(0, Info)); - - ASSERT_TRUE(Host::GetProcessInfo(getpid(), Info)); - - ASSERT_TRUE(Info.ProcessIDIsValid()); - EXPECT_EQ(lldb::pid_t(getpid()), Info.GetProcessID()); - - ASSERT_TRUE(Info.ParentProcessIDIsValid()); - EXPECT_EQ(lldb::pid_t(getppid()), Info.GetParentProcessID()); - - ASSERT_TRUE(Info.EffectiveUserIDIsValid()); - EXPECT_EQ(geteuid(), Info.GetEffectiveUserID()); - - ASSERT_TRUE(Info.EffectiveGroupIDIsValid()); - EXPECT_EQ(getegid(), Info.GetEffectiveGroupID()); - - ASSERT_TRUE(Info.UserIDIsValid()); - EXPECT_EQ(geteuid(), Info.GetUserID()); - - ASSERT_TRUE(Info.GroupIDIsValid()); - EXPECT_EQ(getegid(), Info.GetGroupID()); - - EXPECT_TRUE(Info.GetArchitecture().IsValid()); - EXPECT_EQ(HostInfo::GetArchitecture(HostInfo::eArchKindDefault), - Info.GetArchitecture()); -} diff --git a/gnu/llvm/lldb/unittests/Host/linux/SupportTest.cpp b/gnu/llvm/lldb/unittests/Host/linux/SupportTest.cpp deleted file mode 100644 index 680893c03d0..00000000000 --- a/gnu/llvm/lldb/unittests/Host/linux/SupportTest.cpp +++ /dev/null @@ -1,25 +0,0 @@ -//===-- SupportTest.cpp ---------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/linux/Support.h" -#include "llvm/Support/Threading.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(Support, getProcFile_Pid) { - auto BufferOrError = getProcFile(getpid(), "maps"); - ASSERT_TRUE(BufferOrError); - ASSERT_TRUE(*BufferOrError); -} - -TEST(Support, getProcFile_Tid) { - auto BufferOrError = getProcFile(getpid(), llvm::get_threadid(), "comm"); - ASSERT_TRUE(BufferOrError); - ASSERT_TRUE(*BufferOrError); -} diff --git a/gnu/llvm/lldb/unittests/Instruction/CMakeLists.txt b/gnu/llvm/lldb/unittests/Instruction/CMakeLists.txt deleted file mode 100644 index 63d82983102..00000000000 --- a/gnu/llvm/lldb/unittests/Instruction/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -if("ARM" IN_LIST LLVM_TARGETS_TO_BUILD) - add_lldb_unittest(EmulatorTests - TestAArch64Emulator.cpp - LINK_LIBS - lldbCore - lldbSymbol - lldbTarget - lldbPluginInstructionARM64 - LINK_COMPONENTS - Support - ${LLVM_TARGETS_TO_BUILD}) -endif() diff --git a/gnu/llvm/lldb/unittests/Instruction/TestAArch64Emulator.cpp b/gnu/llvm/lldb/unittests/Instruction/TestAArch64Emulator.cpp deleted file mode 100644 index 4506c200dee..00000000000 --- a/gnu/llvm/lldb/unittests/Instruction/TestAArch64Emulator.cpp +++ /dev/null @@ -1,62 +0,0 @@ -//===-- TestAArch64Emulator.cpp ------------------------------------------===// - -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Core/Address.h" -#include "lldb/Core/Disassembler.h" -#include "lldb/Target/ExecutionContext.h" -#include "lldb/Utility/ArchSpec.h" - -#include "Plugins/Instruction/ARM64/EmulateInstructionARM64.h" - -using namespace lldb; -using namespace lldb_private; - -struct Arch64EmulatorTester : public EmulateInstructionARM64 { - Arch64EmulatorTester() - : EmulateInstructionARM64(ArchSpec("arm64-apple-ios")) {} - - static uint64_t AddWithCarry(uint32_t N, uint64_t x, uint64_t y, bool carry_in, - EmulateInstructionARM64::ProcState &proc_state) { - return EmulateInstructionARM64::AddWithCarry(N, x, y, carry_in, proc_state); - } -}; - -class TestAArch64Emulator : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); - -protected: -}; - -void TestAArch64Emulator::SetUpTestCase() { - EmulateInstructionARM64::Initialize(); -} - -void TestAArch64Emulator::TearDownTestCase() { - EmulateInstructionARM64::Terminate(); -} - -TEST_F(TestAArch64Emulator, TestOverflow) { - EmulateInstructionARM64::ProcState pstate; - memset(&pstate, 0, sizeof(pstate)); - uint64_t ll_max = std::numeric_limits::max(); - Arch64EmulatorTester emu; - ASSERT_EQ(emu.AddWithCarry(64, ll_max, 0, 0, pstate), ll_max); - ASSERT_EQ(pstate.V, 0ULL); - ASSERT_EQ(pstate.C, 0ULL); - ASSERT_EQ(emu.AddWithCarry(64, ll_max, 1, 0, pstate), (uint64_t)(ll_max + 1)); - ASSERT_EQ(pstate.V, 1ULL); - ASSERT_EQ(pstate.C, 0ULL); - ASSERT_EQ(emu.AddWithCarry(64, ll_max, 0, 1, pstate), (uint64_t)(ll_max + 1)); - ASSERT_EQ(pstate.V, 1ULL); - ASSERT_EQ(pstate.C, 0ULL); -} diff --git a/gnu/llvm/lldb/unittests/Interpreter/CMakeLists.txt b/gnu/llvm/lldb/unittests/Interpreter/CMakeLists.txt deleted file mode 100644 index 6ea5996e2b0..00000000000 --- a/gnu/llvm/lldb/unittests/Interpreter/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -add_lldb_unittest(InterpreterTests - TestCompletion.cpp - TestOptionArgParser.cpp - TestOptionValue.cpp - TestOptionValueFileColonLine.cpp - - LINK_LIBS - lldbInterpreter - lldbUtilityHelpers - ) diff --git a/gnu/llvm/lldb/unittests/Interpreter/TestCompletion.cpp b/gnu/llvm/lldb/unittests/Interpreter/TestCompletion.cpp deleted file mode 100644 index 361b31e1068..00000000000 --- a/gnu/llvm/lldb/unittests/Interpreter/TestCompletion.cpp +++ /dev/null @@ -1,272 +0,0 @@ -//===-- TestCompletion.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/FileSystem.h" -#include "lldb/Interpreter/CommandCompletions.h" -#include "lldb/Utility/StringList.h" -#include "lldb/Utility/TildeExpressionResolver.h" - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "TestingSupport/MockTildeExpressionResolver.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" -#include "llvm/ADT/SmallString.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/Path.h" -#include "llvm/Support/raw_ostream.h" - -namespace fs = llvm::sys::fs; -namespace path = llvm::sys::path; -using namespace llvm; -using namespace lldb_private; - -namespace { - -class CompletionTest : public testing::Test { - SubsystemRAII subsystems; - -protected: - /// Unique temporary directory in which all created filesystem entities must - /// be placed. It is removed at the end of the test suite. - SmallString<128> BaseDir; - - /// The working directory that we got when starting the test. Every test - /// should chdir into this directory first because some tests maybe chdir - /// into another one during their run. - static SmallString<128> OriginalWorkingDir; - - SmallString<128> DirFoo; - SmallString<128> DirFooA; - SmallString<128> DirFooB; - SmallString<128> DirFooC; - SmallString<128> DirBar; - SmallString<128> DirBaz; - SmallString<128> DirTestFolder; - SmallString<128> DirNested; - - SmallString<128> FileAA; - SmallString<128> FileAB; - SmallString<128> FileAC; - SmallString<128> FileFoo; - SmallString<128> FileBar; - SmallString<128> FileBaz; - - void SetUp() override { - // chdir back into the original working dir this test binary started with. - // A previous test may have have changed the working dir. - ASSERT_NO_ERROR(fs::set_current_path(OriginalWorkingDir)); - - // Get the name of the current test. To prevent that by chance two tests - // get the same temporary directory if createUniqueDirectory fails. - auto test_info = ::testing::UnitTest::GetInstance()->current_test_info(); - ASSERT_TRUE(test_info != nullptr); - std::string name = test_info->name(); - ASSERT_NO_ERROR(fs::createUniqueDirectory("FsCompletion-" + name, BaseDir)); - - const char *DirNames[] = {"foo", "fooa", "foob", "fooc", - "bar", "baz", "test_folder", "foo/nested"}; - const char *FileNames[] = {"aa1234.tmp", "ab1234.tmp", "ac1234.tmp", - "foo1234.tmp", "bar1234.tmp", "baz1234.tmp"}; - SmallString<128> *Dirs[] = {&DirFoo, &DirFooA, &DirFooB, &DirFooC, - &DirBar, &DirBaz, &DirTestFolder, &DirNested}; - for (auto Dir : llvm::zip(DirNames, Dirs)) { - auto &Path = *std::get<1>(Dir); - Path = BaseDir; - path::append(Path, std::get<0>(Dir)); - ASSERT_NO_ERROR(fs::create_directories(Path)); - } - - SmallString<128> *Files[] = {&FileAA, &FileAB, &FileAC, - &FileFoo, &FileBar, &FileBaz}; - for (auto File : llvm::zip(FileNames, Files)) { - auto &Path = *std::get<1>(File); - Path = BaseDir; - path::append(Path, std::get<0>(File)); - int FD; - ASSERT_NO_ERROR(fs::createUniqueFile(Path, FD, Path)); - ::close(FD); - } - } - - static void SetUpTestCase() { - ASSERT_NO_ERROR(fs::current_path(OriginalWorkingDir)); - } - - void TearDown() override { - ASSERT_NO_ERROR(fs::remove_directories(BaseDir)); - } - - static bool HasEquivalentFile(const Twine &Path, const StringList &Paths) { - for (size_t I = 0; I < Paths.GetSize(); ++I) { - if (fs::equivalent(Path, Paths[I])) - return true; - } - return false; - } - - void DoDirCompletions(const Twine &Prefix, - StandardTildeExpressionResolver &Resolver, - StringList &Results) { - // When a partial name matches, it returns all matches. If it matches both - // a full name AND some partial names, it returns all of them. - CommandCompletions::DiskDirectories(Prefix + "foo", Results, Resolver); - ASSERT_EQ(4u, Results.GetSize()); - EXPECT_TRUE(HasEquivalentFile(DirFoo, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooA, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooB, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooC, Results)); - - // If it matches only partial names, it still works as expected. - CommandCompletions::DiskDirectories(Twine(Prefix) + "b", Results, Resolver); - ASSERT_EQ(2u, Results.GetSize()); - EXPECT_TRUE(HasEquivalentFile(DirBar, Results)); - EXPECT_TRUE(HasEquivalentFile(DirBaz, Results)); - } -}; - -SmallString<128> CompletionTest::OriginalWorkingDir; -} // namespace - -static std::vector toVector(const StringList &SL) { - std::vector Result; - for (size_t Idx = 0; Idx < SL.GetSize(); ++Idx) - Result.push_back(SL[Idx]); - return Result; -} -using testing::UnorderedElementsAre; - -TEST_F(CompletionTest, DirCompletionAbsolute) { - // All calls to DiskDirectories() return only directories, even when - // there are files which also match. The tests below all check this - // by asserting an exact result count, and verifying against known - // folders. - - std::string Prefixes[] = {(Twine(BaseDir) + "/").str(), ""}; - - StandardTildeExpressionResolver Resolver; - StringList Results; - - // When a directory is specified that doesn't end in a slash, it searches - // for that directory, not items under it. - // Sanity check that the path we complete on exists and isn't too long. - CommandCompletions::DiskDirectories(Twine(BaseDir) + "/fooa", Results, - Resolver); - ASSERT_EQ(1u, Results.GetSize()); - EXPECT_TRUE(HasEquivalentFile(DirFooA, Results)); - - CommandCompletions::DiskDirectories(Twine(BaseDir) + "/.", Results, Resolver); - ASSERT_EQ(0u, Results.GetSize()); - - // When the same directory ends with a slash, it finds all children. - CommandCompletions::DiskDirectories(Prefixes[0], Results, Resolver); - ASSERT_EQ(7u, Results.GetSize()); - EXPECT_TRUE(HasEquivalentFile(DirFoo, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooA, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooB, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooC, Results)); - EXPECT_TRUE(HasEquivalentFile(DirBar, Results)); - EXPECT_TRUE(HasEquivalentFile(DirBaz, Results)); - EXPECT_TRUE(HasEquivalentFile(DirTestFolder, Results)); - - DoDirCompletions(Twine(BaseDir) + "/", Resolver, Results); - llvm::sys::fs::set_current_path(BaseDir); - DoDirCompletions("", Resolver, Results); -} - -TEST_F(CompletionTest, FileCompletionAbsolute) { - // All calls to DiskFiles() return both files and directories The tests below - // all check this by asserting an exact result count, and verifying against - // known folders. - - StandardTildeExpressionResolver Resolver; - StringList Results; - // When an item is specified that doesn't end in a slash but exactly matches - // one item, it returns that item. - CommandCompletions::DiskFiles(Twine(BaseDir) + "/fooa", Results, Resolver); - ASSERT_EQ(1u, Results.GetSize()); - EXPECT_TRUE(HasEquivalentFile(DirFooA, Results)); - - // The previous check verified a directory match. But it should work for - // files too. - CommandCompletions::DiskFiles(Twine(BaseDir) + "/aa", Results, Resolver); - ASSERT_EQ(1u, Results.GetSize()); - EXPECT_TRUE(HasEquivalentFile(FileAA, Results)); - - // When it ends with a slash, it should find all files and directories. - CommandCompletions::DiskFiles(Twine(BaseDir) + "/", Results, Resolver); - ASSERT_EQ(13u, Results.GetSize()); - EXPECT_TRUE(HasEquivalentFile(DirFoo, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooA, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooB, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooC, Results)); - EXPECT_TRUE(HasEquivalentFile(DirBar, Results)); - EXPECT_TRUE(HasEquivalentFile(DirBaz, Results)); - EXPECT_TRUE(HasEquivalentFile(DirTestFolder, Results)); - - EXPECT_TRUE(HasEquivalentFile(FileAA, Results)); - EXPECT_TRUE(HasEquivalentFile(FileAB, Results)); - EXPECT_TRUE(HasEquivalentFile(FileAC, Results)); - EXPECT_TRUE(HasEquivalentFile(FileFoo, Results)); - EXPECT_TRUE(HasEquivalentFile(FileBar, Results)); - EXPECT_TRUE(HasEquivalentFile(FileBaz, Results)); - - // When a partial name matches, it returns all file & directory matches. - CommandCompletions::DiskFiles(Twine(BaseDir) + "/foo", Results, Resolver); - ASSERT_EQ(5u, Results.GetSize()); - EXPECT_TRUE(HasEquivalentFile(DirFoo, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooA, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooB, Results)); - EXPECT_TRUE(HasEquivalentFile(DirFooC, Results)); - EXPECT_TRUE(HasEquivalentFile(FileFoo, Results)); -} - -TEST_F(CompletionTest, DirCompletionUsername) { - MockTildeExpressionResolver Resolver("James", BaseDir); - Resolver.AddKnownUser("Kirk", DirFooB); - Resolver.AddKnownUser("Lars", DirFooC); - Resolver.AddKnownUser("Jason", DirFoo); - Resolver.AddKnownUser("Larry", DirFooA); - std::string sep = std::string(path::get_separator()); - - // Just resolving current user's home directory by itself should return the - // directory. - StringList Results; - CommandCompletions::DiskDirectories("~", Results, Resolver); - EXPECT_THAT(toVector(Results), UnorderedElementsAre("~" + sep)); - - // With a slash appended, it should return all items in the directory. - CommandCompletions::DiskDirectories("~/", Results, Resolver); - EXPECT_THAT(toVector(Results), - UnorderedElementsAre( - "~/foo" + sep, "~/fooa" + sep, "~/foob" + sep, "~/fooc" + sep, - "~/bar" + sep, "~/baz" + sep, "~/test_folder" + sep)); - - // Check that we can complete directories in nested paths - CommandCompletions::DiskDirectories("~/foo/", Results, Resolver); - EXPECT_THAT(toVector(Results), UnorderedElementsAre("~/foo/nested" + sep)); - - CommandCompletions::DiskDirectories("~/foo/nes", Results, Resolver); - EXPECT_THAT(toVector(Results), UnorderedElementsAre("~/foo/nested" + sep)); - - // With ~username syntax it should return one match if there is an exact - // match. It shouldn't translate to the actual directory, it should keep the - // form the user typed. - CommandCompletions::DiskDirectories("~Lars", Results, Resolver); - EXPECT_THAT(toVector(Results), UnorderedElementsAre("~Lars" + sep)); - - // But with a username that is not found, no results are returned. - CommandCompletions::DiskDirectories("~Dave", Results, Resolver); - EXPECT_THAT(toVector(Results), UnorderedElementsAre()); - - // And if there are multiple matches, it should return all of them. - CommandCompletions::DiskDirectories("~La", Results, Resolver); - EXPECT_THAT(toVector(Results), - UnorderedElementsAre("~Lars" + sep, "~Larry" + sep)); -} diff --git a/gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp b/gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp deleted file mode 100644 index e173febcfa8..00000000000 --- a/gnu/llvm/lldb/unittests/Interpreter/TestOptionArgParser.cpp +++ /dev/null @@ -1,120 +0,0 @@ -//===-- ArgsTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" -#include "lldb/Interpreter/OptionArgParser.h" - -using namespace lldb_private; - -TEST(OptionArgParserTest, toBoolean) { - bool success = false; - EXPECT_TRUE( - OptionArgParser::ToBoolean(llvm::StringRef("true"), false, nullptr)); - EXPECT_TRUE( - OptionArgParser::ToBoolean(llvm::StringRef("on"), false, nullptr)); - EXPECT_TRUE( - OptionArgParser::ToBoolean(llvm::StringRef("yes"), false, nullptr)); - EXPECT_TRUE(OptionArgParser::ToBoolean(llvm::StringRef("1"), false, nullptr)); - - EXPECT_TRUE( - OptionArgParser::ToBoolean(llvm::StringRef("true"), false, &success)); - EXPECT_TRUE(success); - EXPECT_TRUE( - OptionArgParser::ToBoolean(llvm::StringRef("on"), false, &success)); - EXPECT_TRUE(success); - EXPECT_TRUE( - OptionArgParser::ToBoolean(llvm::StringRef("yes"), false, &success)); - EXPECT_TRUE(success); - EXPECT_TRUE( - OptionArgParser::ToBoolean(llvm::StringRef("1"), false, &success)); - EXPECT_TRUE(success); - - EXPECT_FALSE( - OptionArgParser::ToBoolean(llvm::StringRef("false"), true, nullptr)); - EXPECT_FALSE( - OptionArgParser::ToBoolean(llvm::StringRef("off"), true, nullptr)); - EXPECT_FALSE( - OptionArgParser::ToBoolean(llvm::StringRef("no"), true, nullptr)); - EXPECT_FALSE(OptionArgParser::ToBoolean(llvm::StringRef("0"), true, nullptr)); - - EXPECT_FALSE( - OptionArgParser::ToBoolean(llvm::StringRef("false"), true, &success)); - EXPECT_TRUE(success); - EXPECT_FALSE( - OptionArgParser::ToBoolean(llvm::StringRef("off"), true, &success)); - EXPECT_TRUE(success); - EXPECT_FALSE( - OptionArgParser::ToBoolean(llvm::StringRef("no"), true, &success)); - EXPECT_TRUE(success); - EXPECT_FALSE( - OptionArgParser::ToBoolean(llvm::StringRef("0"), true, &success)); - EXPECT_TRUE(success); - - EXPECT_FALSE( - OptionArgParser::ToBoolean(llvm::StringRef("10"), false, &success)); - EXPECT_FALSE(success); - EXPECT_TRUE( - OptionArgParser::ToBoolean(llvm::StringRef("10"), true, &success)); - EXPECT_FALSE(success); - EXPECT_TRUE(OptionArgParser::ToBoolean(llvm::StringRef(""), true, &success)); - EXPECT_FALSE(success); -} - -TEST(OptionArgParserTest, toChar) { - bool success = false; - - EXPECT_EQ('A', OptionArgParser::ToChar("A", 'B', nullptr)); - EXPECT_EQ('B', OptionArgParser::ToChar("B", 'A', nullptr)); - - EXPECT_EQ('A', OptionArgParser::ToChar("A", 'B', &success)); - EXPECT_TRUE(success); - EXPECT_EQ('B', OptionArgParser::ToChar("B", 'A', &success)); - EXPECT_TRUE(success); - - EXPECT_EQ('A', OptionArgParser::ToChar("", 'A', &success)); - EXPECT_FALSE(success); - EXPECT_EQ('A', OptionArgParser::ToChar("ABC", 'A', &success)); - EXPECT_FALSE(success); -} - -TEST(OptionArgParserTest, toScriptLanguage) { - bool success = false; - - EXPECT_EQ(lldb::eScriptLanguageDefault, - OptionArgParser::ToScriptLanguage(llvm::StringRef("default"), - lldb::eScriptLanguageNone, - nullptr)); - EXPECT_EQ(lldb::eScriptLanguagePython, - OptionArgParser::ToScriptLanguage( - llvm::StringRef("python"), lldb::eScriptLanguageNone, nullptr)); - EXPECT_EQ(lldb::eScriptLanguageNone, - OptionArgParser::ToScriptLanguage( - llvm::StringRef("none"), lldb::eScriptLanguagePython, nullptr)); - - EXPECT_EQ(lldb::eScriptLanguageDefault, - OptionArgParser::ToScriptLanguage(llvm::StringRef("default"), - lldb::eScriptLanguageNone, - &success)); - EXPECT_TRUE(success); - EXPECT_EQ(lldb::eScriptLanguagePython, - OptionArgParser::ToScriptLanguage(llvm::StringRef("python"), - lldb::eScriptLanguageNone, - &success)); - EXPECT_TRUE(success); - EXPECT_EQ(lldb::eScriptLanguageNone, - OptionArgParser::ToScriptLanguage(llvm::StringRef("none"), - lldb::eScriptLanguagePython, - &success)); - EXPECT_TRUE(success); - - EXPECT_EQ(lldb::eScriptLanguagePython, - OptionArgParser::ToScriptLanguage(llvm::StringRef("invalid"), - lldb::eScriptLanguagePython, - &success)); - EXPECT_FALSE(success); -} diff --git a/gnu/llvm/lldb/unittests/Interpreter/TestOptionValue.cpp b/gnu/llvm/lldb/unittests/Interpreter/TestOptionValue.cpp deleted file mode 100644 index 7f383424368..00000000000 --- a/gnu/llvm/lldb/unittests/Interpreter/TestOptionValue.cpp +++ /dev/null @@ -1,175 +0,0 @@ -//===-- TestOptionValue.cpp -------- -------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Interpreter/OptionValues.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -class Callback { -public: - virtual void Invoke() const {} - void operator()() const { Invoke(); } -protected: - ~Callback() = default; -}; - -class MockCallback final : public Callback { -public: - MOCK_CONST_METHOD0(Invoke, void()); -}; - -// Test a single-value class. -TEST(OptionValueString, DeepCopy) { - OptionValueString str; - str.SetValueFromString("ab"); - - MockCallback callback; - str.SetValueChangedCallback([&callback] { callback(); }); - EXPECT_CALL(callback, Invoke()); - - auto copy_sp = str.DeepCopy(nullptr); - - // Test that the base class data members are copied/set correctly. - ASSERT_TRUE(copy_sp); - ASSERT_EQ(copy_sp->GetParent().get(), nullptr); - ASSERT_TRUE(copy_sp->OptionWasSet()); - ASSERT_EQ(copy_sp->GetStringValue(), "ab"); - - // Trigger the callback. - copy_sp->SetValueFromString("c", eVarSetOperationAppend); - ASSERT_EQ(copy_sp->GetStringValue(), "abc"); -} - -// Test an aggregate class. -TEST(OptionValueArgs, DeepCopy) { - OptionValueArgs args; - args.SetValueFromString("A B"); - - MockCallback callback; - args.SetValueChangedCallback([&callback] { callback(); }); - EXPECT_CALL(callback, Invoke()); - - auto copy_sp = args.DeepCopy(nullptr); - - // Test that the base class data members are copied/set correctly. - ASSERT_TRUE(copy_sp); - ASSERT_EQ(copy_sp->GetParent(), nullptr); - ASSERT_TRUE(copy_sp->OptionWasSet()); - - auto *args_copy_ptr = copy_sp->GetAsArgs(); - ASSERT_EQ(args_copy_ptr->GetSize(), 2U); - ASSERT_EQ((*args_copy_ptr)[0]->GetParent(), copy_sp); - ASSERT_EQ((*args_copy_ptr)[0]->GetStringValue(), "A"); - ASSERT_EQ((*args_copy_ptr)[1]->GetParent(), copy_sp); - ASSERT_EQ((*args_copy_ptr)[1]->GetStringValue(), "B"); - - // Trigger the callback. - copy_sp->SetValueFromString("C", eVarSetOperationAppend); - ASSERT_TRUE(args_copy_ptr); - ASSERT_EQ(args_copy_ptr->GetSize(), 3U); - ASSERT_EQ((*args_copy_ptr)[2]->GetStringValue(), "C"); -} - -class TestProperties : public OptionValueProperties { -public: - static std::shared_ptr CreateGlobal() { - auto props_sp = std::make_shared(); - const bool is_global = false; - - auto dict_sp = std::make_shared(1 << eTypeUInt64); - props_sp->AppendProperty(ConstString("dict"), ConstString(), is_global, - dict_sp); - - auto file_list_sp = std::make_shared(); - props_sp->AppendProperty(ConstString("file-list"), ConstString(), is_global, - file_list_sp); - return props_sp; - } - - void SetDictionaryChangedCallback(const MockCallback &callback) { - SetValueChangedCallback(m_dict_index, [&callback] { callback(); }); - } - - void SetFileListChangedCallback(const MockCallback &callback) { - SetValueChangedCallback(m_file_list_index, [&callback] { callback(); }); - } - - OptionValueDictionary *GetDictionary() { - return GetPropertyAtIndexAsOptionValueDictionary(nullptr, m_dict_index); - } - - OptionValueFileSpecList *GetFileList() { - return GetPropertyAtIndexAsOptionValueFileSpecList(nullptr, true, - m_file_list_index); - } - -private: - lldb::OptionValueSP Clone() const { - return std::make_shared(*this); - } - - uint32_t m_dict_index = 0; - uint32_t m_file_list_index = 1; -}; - -// Test a user-defined propery class. -TEST(TestProperties, DeepCopy) { - auto props_sp = TestProperties::CreateGlobal(); - props_sp->GetDictionary()->SetValueFromString("A=1 B=2"); - props_sp->GetFileList()->SetValueFromString("path/to/file"); - - MockCallback callback; - props_sp->SetDictionaryChangedCallback(callback); - props_sp->SetFileListChangedCallback(callback); - EXPECT_CALL(callback, Invoke()).Times(2); - - auto copy_sp = props_sp->DeepCopy(nullptr); - - // Test that the base class data members are copied/set correctly. - ASSERT_TRUE(copy_sp); - ASSERT_EQ(copy_sp->GetParent(), nullptr); - - // This cast is safe only if the class overrides Clone(). - auto *props_copy_ptr = static_cast(copy_sp.get()); - ASSERT_TRUE(props_copy_ptr); - - // Test the first child. - auto dict_copy_ptr = props_copy_ptr->GetDictionary(); - ASSERT_TRUE(dict_copy_ptr); - ASSERT_EQ(dict_copy_ptr->GetParent(), copy_sp); - ASSERT_TRUE(dict_copy_ptr->OptionWasSet()); - ASSERT_EQ(dict_copy_ptr->GetNumValues(), 2U); - - auto value_ptr = dict_copy_ptr->GetValueForKey(ConstString("A")); - ASSERT_TRUE(value_ptr); - ASSERT_EQ(value_ptr->GetParent().get(), dict_copy_ptr); - ASSERT_EQ(value_ptr->GetUInt64Value(), 1U); - - value_ptr = dict_copy_ptr->GetValueForKey(ConstString("B")); - ASSERT_TRUE(value_ptr); - ASSERT_EQ(value_ptr->GetParent().get(), dict_copy_ptr); - ASSERT_EQ(value_ptr->GetUInt64Value(), 2U); - - // Test the second child. - auto file_list_copy_ptr = props_copy_ptr->GetFileList(); - ASSERT_TRUE(file_list_copy_ptr); - ASSERT_EQ(file_list_copy_ptr->GetParent(), copy_sp); - ASSERT_TRUE(file_list_copy_ptr->OptionWasSet()); - - auto file_list_copy = file_list_copy_ptr->GetCurrentValue(); - ASSERT_EQ(file_list_copy.GetSize(), 1U); - ASSERT_EQ(file_list_copy.GetFileSpecAtIndex(0), FileSpec("path/to/file")); - - // Trigger the callback first time. - dict_copy_ptr->SetValueFromString("C=3", eVarSetOperationAppend); - - // Trigger the callback second time. - file_list_copy_ptr->SetValueFromString("0 another/path", eVarSetOperationReplace); -} diff --git a/gnu/llvm/lldb/unittests/Interpreter/TestOptionValueFileColonLine.cpp b/gnu/llvm/lldb/unittests/Interpreter/TestOptionValueFileColonLine.cpp deleted file mode 100644 index 079c26bdd8a..00000000000 --- a/gnu/llvm/lldb/unittests/Interpreter/TestOptionValueFileColonLine.cpp +++ /dev/null @@ -1,58 +0,0 @@ -//===-- ArgsTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Interpreter/OptionValueFileColonLine.h" -#include "lldb/Utility/FileSpec.h" -#include "lldb/Utility/Status.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -void CheckSetting(const char *input, bool success, FileSpec path = {}, - uint32_t line_number = LLDB_INVALID_LINE_NUMBER, - uint32_t column_number = LLDB_INVALID_COLUMN_NUMBER) { - - OptionValueFileColonLine value; - Status error; - llvm::StringRef s_ref(input); - error = value.SetValueFromString(s_ref); - ASSERT_EQ(error.Success(), success); - - // If we were meant to fail, we don't need to do more checks: - if (!success) - return; - - ASSERT_EQ(value.GetLineNumber(), line_number); - ASSERT_EQ(value.GetColumnNumber(), column_number); - ASSERT_EQ(value.GetFileSpec(), path); -} - -TEST(OptionValueFileColonLine, setFromString) { - OptionValueFileColonLine value; - Status error; - - // Make sure a default constructed value is invalid: - ASSERT_EQ(value.GetLineNumber(), - static_cast(LLDB_INVALID_LINE_NUMBER)); - ASSERT_EQ(value.GetColumnNumber(), - static_cast(LLDB_INVALID_COLUMN_NUMBER)); - ASSERT_FALSE(value.GetFileSpec()); - - // Make sure it is an error to pass a specifier with no line number: - CheckSetting("foo.c", false); - - // Now try with just a file & line: - CheckSetting("foo.c:12", true, FileSpec("foo.c"), 12); - CheckSetting("foo.c:12:20", true, FileSpec("foo.c"), 12, 20); - // Make sure a colon doesn't mess us up: - CheckSetting("foo:bar.c:12", true, FileSpec("foo:bar.c"), 12); - CheckSetting("foo:bar.c:12:20", true, FileSpec("foo:bar.c"), 12, 20); - // Try errors in the line number: - CheckSetting("foo.c:12c", false); - CheckSetting("foo.c:12:20c", false); -} diff --git a/gnu/llvm/lldb/unittests/Language/CLanguages/CLanguagesTest.cpp b/gnu/llvm/lldb/unittests/Language/CLanguages/CLanguagesTest.cpp deleted file mode 100644 index c68bd56c337..00000000000 --- a/gnu/llvm/lldb/unittests/Language/CLanguages/CLanguagesTest.cpp +++ /dev/null @@ -1,46 +0,0 @@ -//===-- CLanguagesTest.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" -#include "Plugins/Language/ObjC/ObjCLanguage.h" -#include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h" -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/lldb-enumerations.h" - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -/// Returns the name of the LLDB plugin for the given language or a null -/// ConstString if there is no fitting plugin. -static ConstString GetPluginName(lldb::LanguageType language) { - Language *language_plugin = Language::FindPlugin(language); - if (language_plugin) - return language_plugin->GetPluginName(); - return ConstString(); -} - -TEST(CLanguages, LookupCLanguagesByLanguageType) { - SubsystemRAII langs; - - // There is no plugin to find for C. - EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC), nullptr); - EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC89), nullptr); - EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC99), nullptr); - EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC11), nullptr); - - EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus), "cplusplus"); - EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus_03), "cplusplus"); - EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus_11), "cplusplus"); - EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus_14), "cplusplus"); - - EXPECT_EQ(GetPluginName(lldb::eLanguageTypeObjC), "objc"); - - EXPECT_EQ(GetPluginName(lldb::eLanguageTypeObjC_plus_plus), "objcplusplus"); -} diff --git a/gnu/llvm/lldb/unittests/Language/CLanguages/CMakeLists.txt b/gnu/llvm/lldb/unittests/Language/CLanguages/CMakeLists.txt deleted file mode 100644 index 136140487da..00000000000 --- a/gnu/llvm/lldb/unittests/Language/CLanguages/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -add_lldb_unittest(LanguageCLanguagesTests - CLanguagesTest.cpp - - LINK_LIBS - lldbPluginCPlusPlusLanguage - lldbPluginObjCLanguage - lldbPluginObjCPlusPlusLanguage -) diff --git a/gnu/llvm/lldb/unittests/Language/CMakeLists.txt b/gnu/llvm/lldb/unittests/Language/CMakeLists.txt deleted file mode 100644 index 3cca831956a..00000000000 --- a/gnu/llvm/lldb/unittests/Language/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -add_subdirectory(CPlusPlus) -add_subdirectory(CLanguages) -add_subdirectory(Highlighting) diff --git a/gnu/llvm/lldb/unittests/Language/CPlusPlus/CMakeLists.txt b/gnu/llvm/lldb/unittests/Language/CPlusPlus/CMakeLists.txt deleted file mode 100644 index 4882eafc8d8..00000000000 --- a/gnu/llvm/lldb/unittests/Language/CPlusPlus/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -add_lldb_unittest(LanguageCPlusPlusTests - CPlusPlusLanguageTest.cpp - - LINK_LIBS - lldbPluginCPlusPlusLanguage - ) diff --git a/gnu/llvm/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp b/gnu/llvm/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp deleted file mode 100644 index e8e6a4c0da0..00000000000 --- a/gnu/llvm/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp +++ /dev/null @@ -1,216 +0,0 @@ -//===-- CPlusPlusLanguageTest.cpp -----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" -#include "Plugins/Language/CPlusPlus/CPlusPlusNameParser.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(CPlusPlusLanguage, MethodNameParsing) { - struct TestCase { - std::string input; - std::string context, basename, arguments, qualifiers, scope_qualified_name; - }; - - TestCase test_cases[] = { - {"main(int, char *[]) ", "", "main", "(int, char *[])", "", "main"}, - {"foo::bar(baz) const", "foo", "bar", "(baz)", "const", "foo::bar"}, - {"foo::~bar(baz)", "foo", "~bar", "(baz)", "", "foo::~bar"}, - {"a::b::c::d(e,f)", "a::b::c", "d", "(e,f)", "", "a::b::c::d"}, - {"void f(int)", "", "f", "(int)", "", "f"}, - - // Operators - {"std::basic_ostream >& " - "std::operator<< >" - "(std::basic_ostream >&, char const*)", - "std", "operator<< >", - "(std::basic_ostream >&, char const*)", "", - "std::operator<< >"}, - {"operator delete[](void*, clang::ASTContext const&, unsigned long)", "", - "operator delete[]", "(void*, clang::ASTContext const&, unsigned long)", - "", "operator delete[]"}, - {"llvm::Optional::operator bool() const", - "llvm::Optional", "operator bool", "()", "const", - "llvm::Optional::operator bool"}, - {"(anonymous namespace)::FactManager::operator[](unsigned short)", - "(anonymous namespace)::FactManager", "operator[]", "(unsigned short)", - "", "(anonymous namespace)::FactManager::operator[]"}, - {"const int& std::map>::operator[](short) const", - "std::map>", "operator[]", "(short)", "const", - "std::map>::operator[]"}, - {"CompareInsn::operator()(llvm::StringRef, InsnMatchEntry const&)", - "CompareInsn", "operator()", "(llvm::StringRef, InsnMatchEntry const&)", - "", "CompareInsn::operator()"}, - {"llvm::Optional::operator*() const &", - "llvm::Optional", "operator*", "()", "const &", - "llvm::Optional::operator*"}, - // Internal classes - {"operator<<(Cls, Cls)::Subclass::function()", - "operator<<(Cls, Cls)::Subclass", "function", "()", "", - "operator<<(Cls, Cls)::Subclass::function"}, - {"SAEC::checkFunction(context&) const::CallBack::CallBack(int)", - "SAEC::checkFunction(context&) const::CallBack", "CallBack", "(int)", "", - "SAEC::checkFunction(context&) const::CallBack::CallBack"}, - // Anonymous namespace - {"XX::(anonymous namespace)::anon_class::anon_func() const", - "XX::(anonymous namespace)::anon_class", "anon_func", "()", "const", - "XX::(anonymous namespace)::anon_class::anon_func"}, - - // Lambda - {"main::{lambda()#1}::operator()() const::{lambda()#1}::operator()() const", - "main::{lambda()#1}::operator()() const::{lambda()#1}", "operator()", "()", "const", - "main::{lambda()#1}::operator()() const::{lambda()#1}::operator()"}, - - // Function pointers - {"string (*f(vector&&))(float)", "", "f", "(vector&&)", "", - "f"}, - {"void (*&std::_Any_data::_M_access())()", "std::_Any_data", - "_M_access", "()", "", - "std::_Any_data::_M_access"}, - {"void (*(*(*(*(*(*(*(* const&func1(int))())())())())())())())()", "", - "func1", "(int)", "", "func1"}, - - // Decltype - {"decltype(nullptr)&& std::forward" - "(std::remove_reference::type&)", - "std", "forward", - "(std::remove_reference::type&)", "", - "std::forward"}, - - // Templates - {"void llvm::PM>::" - "addPass(llvm::VP)", - "llvm::PM>", "addPass", - "(llvm::VP)", "", - "llvm::PM>::" - "addPass"}, - {"void std::vector >" - "::_M_emplace_back_aux(Class const&)", - "std::vector >", - "_M_emplace_back_aux", "(Class const&)", "", - "std::vector >::" - "_M_emplace_back_aux"}, - {"unsigned long llvm::countTrailingOnes" - "(unsigned int, llvm::ZeroBehavior)", - "llvm", "countTrailingOnes", - "(unsigned int, llvm::ZeroBehavior)", "", - "llvm::countTrailingOnes"}, - {"std::enable_if<(10u)<(64), bool>::type llvm::isUInt<10u>(unsigned " - "long)", - "llvm", "isUInt<10u>", "(unsigned long)", "", "llvm::isUInt<10u>"}, - {"f, sizeof(B)()", "", - "f, sizeof(B)", "()", "", - "f, sizeof(B)"}}; - - for (const auto &test : test_cases) { - CPlusPlusLanguage::MethodName method(ConstString(test.input)); - EXPECT_TRUE(method.IsValid()) << test.input; - if (method.IsValid()) { - EXPECT_EQ(test.context, method.GetContext().str()); - EXPECT_EQ(test.basename, method.GetBasename().str()); - EXPECT_EQ(test.arguments, method.GetArguments().str()); - EXPECT_EQ(test.qualifiers, method.GetQualifiers().str()); - EXPECT_EQ(test.scope_qualified_name, method.GetScopeQualifiedName()); - } - } -} - -TEST(CPlusPlusLanguage, ExtractContextAndIdentifier) { - struct TestCase { - std::string input; - std::string context, basename; - }; - - TestCase test_cases[] = { - {"main", "", "main"}, - {"main ", "", "main"}, - {"foo01::bar", "foo01", "bar"}, - {"foo::~bar", "foo", "~bar"}, - {"std::vector::push_back", "std::vector", "push_back"}, - {"operator<<(Cls, Cls)::Subclass::function", - "operator<<(Cls, Cls)::Subclass", "function"}, - {"std::vector>" - "::_M_emplace_back_aux", - "std::vector>", - "_M_emplace_back_aux"}, - {"`anonymous namespace'::foo", "`anonymous namespace'", "foo"}, - {"`operator<'::`2'::B<0>::operator>", "`operator<'::`2'::B<0>", - "operator>"}, - {"`anonymous namespace'::S::<<::__l2::Foo", - "`anonymous namespace'::S::<<::__l2", "Foo"}, - // These cases are idiosyncratic in how clang generates debug info for - // names when we have template parameters. They are not valid C++ names - // but if we fix this we need to support them for older compilers. - {"A::operator>", "A", "operator>"}, - {"operator>", "", "operator>"}, - {"A::operator<", "A", "operator<"}, - {"operator<", "", "operator<"}, - {"A::operator<<", "A", "operator<<"}, - {"operator<<", "", "operator<<"}, - }; - - llvm::StringRef context, basename; - for (const auto &test : test_cases) { - EXPECT_TRUE(CPlusPlusLanguage::ExtractContextAndIdentifier( - test.input.c_str(), context, basename)); - EXPECT_EQ(test.context, context.str()); - EXPECT_EQ(test.basename, basename.str()); - } - - EXPECT_FALSE(CPlusPlusLanguage::ExtractContextAndIdentifier("void", context, - basename)); - EXPECT_FALSE( - CPlusPlusLanguage::ExtractContextAndIdentifier("321", context, basename)); - EXPECT_FALSE( - CPlusPlusLanguage::ExtractContextAndIdentifier("", context, basename)); - EXPECT_FALSE(CPlusPlusLanguage::ExtractContextAndIdentifier( - "selector:", context, basename)); - EXPECT_FALSE(CPlusPlusLanguage::ExtractContextAndIdentifier( - "selector:otherField:", context, basename)); - EXPECT_FALSE(CPlusPlusLanguage::ExtractContextAndIdentifier( - "abc::", context, basename)); - EXPECT_FALSE(CPlusPlusLanguage::ExtractContextAndIdentifier( - "f>", context, basename)); - - // We expect these cases to fail until we turn on C++2a - EXPECT_FALSE(CPlusPlusLanguage::ExtractContextAndIdentifier( - "A::operator<=>", context, basename)); - EXPECT_FALSE(CPlusPlusLanguage::ExtractContextAndIdentifier( - "operator<=>", context, basename)); -} - -static std::set FindAlternate(llvm::StringRef Name) { - std::set Results; - uint32_t Count = CPlusPlusLanguage::FindAlternateFunctionManglings( - ConstString(Name), Results); - EXPECT_EQ(Count, Results.size()); - std::set Strings; - for (ConstString Str : Results) - Strings.insert(std::string(Str.GetStringRef())); - return Strings; -} - -TEST(CPlusPlusLanguage, FindAlternateFunctionManglings) { - using namespace testing; - - EXPECT_THAT(FindAlternate("_ZN1A1fEv"), - UnorderedElementsAre("_ZNK1A1fEv", "_ZLN1A1fEv")); - EXPECT_THAT(FindAlternate("_ZN1A1fEa"), Contains("_ZN1A1fEc")); - EXPECT_THAT(FindAlternate("_ZN1A1fEx"), Contains("_ZN1A1fEl")); - EXPECT_THAT(FindAlternate("_ZN1A1fEy"), Contains("_ZN1A1fEm")); - EXPECT_THAT(FindAlternate("_ZN1A1fEai"), Contains("_ZN1A1fEci")); - EXPECT_THAT(FindAlternate("_ZN1AC1Ev"), Contains("_ZN1AC2Ev")); - EXPECT_THAT(FindAlternate("_ZN1AD1Ev"), Contains("_ZN1AD2Ev")); - EXPECT_THAT(FindAlternate("_bogus"), IsEmpty()); -} - -TEST(CPlusPlusLanguage, CPlusPlusNameParser) { - // Don't crash. - CPlusPlusNameParser((const char *)nullptr); -} diff --git a/gnu/llvm/lldb/unittests/Language/Highlighting/CMakeLists.txt b/gnu/llvm/lldb/unittests/Language/Highlighting/CMakeLists.txt deleted file mode 100644 index 576f8dff10f..00000000000 --- a/gnu/llvm/lldb/unittests/Language/Highlighting/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -add_lldb_unittest(HighlighterTests - HighlighterTest.cpp - - LINK_LIBS - lldbPluginCPlusPlusLanguage - lldbPluginObjCLanguage - lldbPluginObjCPlusPlusLanguage - ) diff --git a/gnu/llvm/lldb/unittests/Language/Highlighting/HighlighterTest.cpp b/gnu/llvm/lldb/unittests/Language/Highlighting/HighlighterTest.cpp deleted file mode 100644 index 7a2d7160e94..00000000000 --- a/gnu/llvm/lldb/unittests/Language/Highlighting/HighlighterTest.cpp +++ /dev/null @@ -1,318 +0,0 @@ -//===-- HighlighterTest.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Core/Highlighter.h" -#include "lldb/Host/FileSystem.h" - -#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" -#include "Plugins/Language/ObjC/ObjCLanguage.h" -#include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h" -#include "TestingSupport/SubsystemRAII.h" - -using namespace lldb_private; - -namespace { -class HighlighterTest : public testing::Test { - SubsystemRAII - subsystems; -}; -} // namespace - -static std::string getName(lldb::LanguageType type) { - HighlighterManager m; - return m.getHighlighterFor(type, "").GetName().str(); -} - -static std::string getName(llvm::StringRef path) { - HighlighterManager m; - return m.getHighlighterFor(lldb::eLanguageTypeUnknown, path).GetName().str(); -} - -TEST_F(HighlighterTest, HighlighterSelectionType) { - EXPECT_EQ(getName(lldb::eLanguageTypeC_plus_plus), "clang"); - EXPECT_EQ(getName(lldb::eLanguageTypeC_plus_plus_03), "clang"); - EXPECT_EQ(getName(lldb::eLanguageTypeC_plus_plus_11), "clang"); - EXPECT_EQ(getName(lldb::eLanguageTypeC_plus_plus_14), "clang"); - EXPECT_EQ(getName(lldb::eLanguageTypeObjC), "clang"); - EXPECT_EQ(getName(lldb::eLanguageTypeObjC_plus_plus), "clang"); - - EXPECT_EQ(getName(lldb::eLanguageTypeUnknown), "none"); - EXPECT_EQ(getName(lldb::eLanguageTypeJulia), "none"); - EXPECT_EQ(getName(lldb::eLanguageTypeHaskell), "none"); -} - -TEST_F(HighlighterTest, HighlighterSelectionPath) { - EXPECT_EQ(getName("myfile.cc"), "clang"); - EXPECT_EQ(getName("moo.cpp"), "clang"); - EXPECT_EQ(getName("mar.cxx"), "clang"); - EXPECT_EQ(getName("foo.C"), "clang"); - EXPECT_EQ(getName("bar.CC"), "clang"); - EXPECT_EQ(getName("a/dir.CC"), "clang"); - EXPECT_EQ(getName("/a/dir.hpp"), "clang"); - EXPECT_EQ(getName("header.h"), "clang"); - EXPECT_EQ(getName("foo.m"), "clang"); - EXPECT_EQ(getName("foo.mm"), "clang"); - - EXPECT_EQ(getName(""), "none"); - EXPECT_EQ(getName("/dev/null"), "none"); - EXPECT_EQ(getName("Factory.java"), "none"); - EXPECT_EQ(getName("poll.py"), "none"); - EXPECT_EQ(getName("reducer.hs"), "none"); -} - -TEST_F(HighlighterTest, FallbackHighlighter) { - HighlighterManager mgr; - const Highlighter &h = - mgr.getHighlighterFor(lldb::eLanguageTypePascal83, "foo.pas"); - - HighlightStyle style; - style.identifier.Set("[", "]"); - style.semicolons.Set("<", ">"); - - const char *code = "program Hello;"; - std::string output = h.Highlight(style, code, llvm::Optional()); - - EXPECT_STREQ(output.c_str(), code); -} - -static std::string -highlightDefault(llvm::StringRef code, HighlightStyle style, - llvm::Optional cursor = llvm::Optional()) { - HighlighterManager mgr; - return mgr.getDefaultHighlighter().Highlight(style, code, cursor); -} - -TEST_F(HighlighterTest, DefaultHighlighter) { - const char *code = "int my_main() { return 22; } \n"; - - HighlightStyle style; - EXPECT_EQ(code, highlightDefault(code, style)); -} - -TEST_F(HighlighterTest, DefaultHighlighterWithCursor) { - HighlightStyle style; - style.selected.Set("", ""); - EXPECT_EQ("a bc", highlightDefault("a bc", style, 0)); - EXPECT_EQ("a bc", highlightDefault("a bc", style, 1)); - EXPECT_EQ("a bc", highlightDefault("a bc", style, 2)); - EXPECT_EQ("a bc", highlightDefault("a bc", style, 3)); -} - -TEST_F(HighlighterTest, DefaultHighlighterWithCursorOutOfBounds) { - HighlightStyle style; - style.selected.Set("", ""); - EXPECT_EQ("a bc", highlightDefault("a bc", style, 4)); -} -// Tests highlighting with the Clang highlighter. - -static std::string -highlightC(llvm::StringRef code, HighlightStyle style, - llvm::Optional cursor = llvm::Optional()) { - HighlighterManager mgr; - const Highlighter &h = mgr.getHighlighterFor(lldb::eLanguageTypeC, "main.c"); - return h.Highlight(style, code, cursor); -} - -TEST_F(HighlighterTest, ClangEmptyInput) { - HighlightStyle s; - EXPECT_EQ("", highlightC("", s)); -} - -TEST_F(HighlighterTest, ClangScalarLiterals) { - HighlightStyle s; - s.scalar_literal.Set("", ""); - - EXPECT_EQ(" int i = 22;", highlightC(" int i = 22;", s)); -} - -TEST_F(HighlighterTest, ClangStringLiterals) { - HighlightStyle s; - s.string_literal.Set("", ""); - - EXPECT_EQ("const char *f = 22 + \"foo\";", - highlightC("const char *f = 22 + \"foo\";", s)); -} - -TEST_F(HighlighterTest, ClangUnterminatedString) { - HighlightStyle s; - s.string_literal.Set("", ""); - - EXPECT_EQ(" f = \"", highlightC(" f = \"", s)); -} - -TEST_F(HighlighterTest, Keywords) { - HighlightStyle s; - s.keyword.Set("", ""); - - EXPECT_EQ(" return 1; ", highlightC(" return 1; ", s)); -} - -TEST_F(HighlighterTest, Colons) { - HighlightStyle s; - s.colon.Set("", ""); - - EXPECT_EQ("foo::bar:", highlightC("foo::bar:", s)); -} - -TEST_F(HighlighterTest, ClangBraces) { - HighlightStyle s; - s.braces.Set("", ""); - - EXPECT_EQ("a{}", highlightC("a{}", s)); -} - -TEST_F(HighlighterTest, ClangSquareBrackets) { - HighlightStyle s; - s.square_brackets.Set("", ""); - - EXPECT_EQ("a[]", highlightC("a[]", s)); -} - -TEST_F(HighlighterTest, ClangCommas) { - HighlightStyle s; - s.comma.Set("", ""); - - EXPECT_EQ(" bool f = foo(), 1;", - highlightC(" bool f = foo(), 1;", s)); -} - -TEST_F(HighlighterTest, ClangPPDirectives) { - HighlightStyle s; - s.pp_directive.Set("", ""); - - EXPECT_EQ("#include \"foo\" //c", - highlightC("#include \"foo\" //c", s)); -} - -TEST_F(HighlighterTest, ClangPreserveNewLine) { - HighlightStyle s; - s.comment.Set("", ""); - - EXPECT_EQ("//\n", highlightC("//\n", s)); -} - -TEST_F(HighlighterTest, ClangTrailingBackslashBeforeNewline) { - HighlightStyle s; - - EXPECT_EQ("\\\n", highlightC("\\\n", s)); - EXPECT_EQ("\\\r\n", highlightC("\\\r\n", s)); - - EXPECT_EQ("#define a \\\n", highlightC("#define a \\\n", s)); - EXPECT_EQ("#define a \\\r\n", highlightC("#define a \\\r\n", s)); - EXPECT_EQ("#define a \\\r", highlightC("#define a \\\r", s)); -} - -TEST_F(HighlighterTest, ClangTrailingBackslashWithWhitespace) { - HighlightStyle s; - - EXPECT_EQ("\\ \n", highlightC("\\ \n", s)); - EXPECT_EQ("\\ \t\n", highlightC("\\ \t\n", s)); - EXPECT_EQ("\\ \n", highlightC("\\ \n", s)); - EXPECT_EQ("\\\t\n", highlightC("\\\t\n", s)); - - EXPECT_EQ("#define a \\ \n", highlightC("#define a \\ \n", s)); - EXPECT_EQ("#define a \\ \t\n", highlightC("#define a \\ \t\n", s)); - EXPECT_EQ("#define a \\ \n", highlightC("#define a \\ \n", s)); - EXPECT_EQ("#define a \\\t\n", highlightC("#define a \\\t\n", s)); -} - -TEST_F(HighlighterTest, ClangTrailingBackslashMissingNewLine) { - HighlightStyle s; - EXPECT_EQ("\\", highlightC("\\", s)); - EXPECT_EQ("#define a\\", highlightC("#define a\\", s)); -} - -TEST_F(HighlighterTest, ClangComments) { - HighlightStyle s; - s.comment.Set("", ""); - - EXPECT_EQ(" /*com */ // com /*n*/", - highlightC(" /*com */ // com /*n*/", s)); -} - -TEST_F(HighlighterTest, ClangOperators) { - HighlightStyle s; - s.operators.Set("[", "]"); - - EXPECT_EQ(" 1[+]2[/]a[*]f[&]x[|][~]l", highlightC(" 1+2/a*f&x|~l", s)); -} - -TEST_F(HighlighterTest, ClangIdentifiers) { - HighlightStyle s; - s.identifier.Set("", ""); - - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s)); -} - -TEST_F(HighlighterTest, ClangCursorPos) { - HighlightStyle s; - s.selected.Set("", ""); - - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 0)); - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 1)); - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 2)); - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 3)); - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 4)); - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 5)); -} - -TEST_F(HighlighterTest, ClangCursorPosEndOfLine) { - HighlightStyle s; - s.selected.Set("", ""); - - EXPECT_EQ("f", highlightC("f", s, 1)); -} - -TEST_F(HighlighterTest, ClangCursorOutOfBounds) { - HighlightStyle s; - s.selected.Set("", ""); - EXPECT_EQ("f", highlightC("f", s, 2)); - EXPECT_EQ("f", highlightC("f", s, 3)); - EXPECT_EQ("f", highlightC("f", s, 4)); -} - -TEST_F(HighlighterTest, ClangCursorPosBeforeOtherToken) { - HighlightStyle s; - s.selected.Set("", ""); - s.identifier.Set("", ""); - - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 0)); -} - -TEST_F(HighlighterTest, ClangCursorPosAfterOtherToken) { - HighlightStyle s; - s.selected.Set("", ""); - s.identifier.Set("", ""); - - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 4)); -} - -TEST_F(HighlighterTest, ClangCursorPosInOtherToken) { - HighlightStyle s; - s.selected.Set("", ""); - s.identifier.Set("", ""); - - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 1)); - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 2)); - EXPECT_EQ(" foo c = bar(); return 1;", - highlightC(" foo c = bar(); return 1;", s, 3)); -} diff --git a/gnu/llvm/lldb/unittests/ObjectFile/Breakpad/BreakpadRecordsTest.cpp b/gnu/llvm/lldb/unittests/ObjectFile/Breakpad/BreakpadRecordsTest.cpp deleted file mode 100644 index b621ad233e6..00000000000 --- a/gnu/llvm/lldb/unittests/ObjectFile/Breakpad/BreakpadRecordsTest.cpp +++ /dev/null @@ -1,153 +0,0 @@ -//===-- BreakpadRecordsTest.cpp -------------------------------------------===// -// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/ObjectFile/Breakpad/BreakpadRecords.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb_private::breakpad; - -TEST(Record, classify) { - EXPECT_EQ(Record::Module, Record::classify("MODULE")); - EXPECT_EQ(Record::Info, Record::classify("INFO")); - EXPECT_EQ(Record::File, Record::classify("FILE")); - EXPECT_EQ(Record::Func, Record::classify("FUNC")); - EXPECT_EQ(Record::Public, Record::classify("PUBLIC")); - EXPECT_EQ(Record::StackCFI, Record::classify("STACK CFI")); - EXPECT_EQ(Record::StackWin, Record::classify("STACK WIN")); - - // Any obviously incorrect lines will be classified as such. - EXPECT_EQ(llvm::None, Record::classify("STACK")); - EXPECT_EQ(llvm::None, Record::classify("STACK CODE_ID")); - EXPECT_EQ(llvm::None, Record::classify("CODE_ID")); - - // Any line which does not start with a known keyword will be classified as a - // line record, as those are the only ones that start without a keyword. - EXPECT_EQ(Record::Line, Record::classify("deadbeef")); - EXPECT_EQ(Record::Line, Record::classify("12")); -} - -TEST(ModuleRecord, parse) { - EXPECT_EQ(ModuleRecord(llvm::Triple::Linux, llvm::Triple::x86_64, - UUID::fromData("@ABCDEFGHIJKLMNO", 16)), - ModuleRecord::parse( - "MODULE Linux x86_64 404142434445464748494a4b4c4d4e4f0 a.out")); - - EXPECT_EQ(llvm::None, ModuleRecord::parse("MODULE")); - EXPECT_EQ(llvm::None, ModuleRecord::parse("MODULE Linux")); - EXPECT_EQ(llvm::None, ModuleRecord::parse("MODULE Linux x86_64")); - EXPECT_EQ(llvm::None, - ModuleRecord::parse("MODULE Linux x86_64 deadbeefbaadf00d")); -} - -TEST(InfoRecord, parse) { - EXPECT_EQ(InfoRecord(UUID::fromData("@ABCDEFGHIJKLMNO", 16)), - InfoRecord::parse("INFO CODE_ID 404142434445464748494a4b4c4d4e4f")); - EXPECT_EQ(InfoRecord(UUID()), InfoRecord::parse("INFO CODE_ID 47 a.exe")); - - EXPECT_EQ(llvm::None, InfoRecord::parse("INFO")); - EXPECT_EQ(llvm::None, InfoRecord::parse("INFO CODE_ID")); -} - -TEST(FileRecord, parse) { - EXPECT_EQ(FileRecord(47, "foo"), FileRecord::parse("FILE 47 foo")); - EXPECT_EQ(llvm::None, FileRecord::parse("FILE 47")); - EXPECT_EQ(llvm::None, FileRecord::parse("FILE")); - EXPECT_EQ(llvm::None, FileRecord::parse("")); -} - -TEST(FuncRecord, parse) { - EXPECT_EQ(FuncRecord(true, 0x47, 0x7, 0x8, "foo"), - FuncRecord::parse("FUNC m 47 7 8 foo")); - EXPECT_EQ(FuncRecord(false, 0x47, 0x7, 0x8, "foo"), - FuncRecord::parse("FUNC 47 7 8 foo")); - - EXPECT_EQ(llvm::None, FuncRecord::parse("PUBLIC 47 7 8 foo")); - EXPECT_EQ(llvm::None, FuncRecord::parse("FUNC 47 7 8")); - EXPECT_EQ(llvm::None, FuncRecord::parse("FUNC 47 7")); - EXPECT_EQ(llvm::None, FuncRecord::parse("FUNC 47")); - EXPECT_EQ(llvm::None, FuncRecord::parse("FUNC m")); - EXPECT_EQ(llvm::None, FuncRecord::parse("FUNC")); -} - -TEST(LineRecord, parse) { - EXPECT_EQ(LineRecord(0x47, 0x74, 47, 74), LineRecord::parse("47 74 47 74")); - EXPECT_EQ(llvm::None, LineRecord::parse("47 74 47")); - EXPECT_EQ(llvm::None, LineRecord::parse("47 74")); - EXPECT_EQ(llvm::None, LineRecord::parse("47")); - EXPECT_EQ(llvm::None, LineRecord::parse("")); - EXPECT_EQ(llvm::None, LineRecord::parse("FUNC")); -} - -TEST(PublicRecord, parse) { - EXPECT_EQ(PublicRecord(true, 0x47, 0x8, "foo"), - PublicRecord::parse("PUBLIC m 47 8 foo")); - EXPECT_EQ(PublicRecord(false, 0x47, 0x8, "foo"), - PublicRecord::parse("PUBLIC 47 8 foo")); - - EXPECT_EQ(llvm::None, PublicRecord::parse("FUNC 47 8 foo")); - EXPECT_EQ(llvm::None, PublicRecord::parse("PUBLIC 47 8")); - EXPECT_EQ(llvm::None, PublicRecord::parse("PUBLIC 47")); - EXPECT_EQ(llvm::None, PublicRecord::parse("PUBLIC m")); - EXPECT_EQ(llvm::None, PublicRecord::parse("PUBLIC")); -} - -TEST(StackCFIRecord, parse) { - EXPECT_EQ(StackCFIRecord(0x47, 0x8, ".cfa: $esp 4 + $eip: .cfa 4 - ^"), - StackCFIRecord::parse( - "STACK CFI INIT 47 8 .cfa: $esp 4 + $eip: .cfa 4 - ^")); - - EXPECT_EQ(StackCFIRecord(0x47, 0x8, ".cfa: $esp 4 +"), - StackCFIRecord::parse("STACK CFI INIT 47 8 .cfa: $esp 4 + ")); - - EXPECT_EQ(StackCFIRecord(0x47, llvm::None, ".cfa: $esp 4 +"), - StackCFIRecord::parse("STACK CFI 47 .cfa: $esp 4 +")); - - // The validity of the register value expressions is not checked - EXPECT_EQ(StackCFIRecord(0x47, 0x8, ".cfa: ^ ^ ^"), - StackCFIRecord::parse("STACK CFI INIT 47 8 .cfa: ^ ^ ^")); - - EXPECT_EQ(llvm::None, StackCFIRecord::parse("STACK CFI INIT 47")); - EXPECT_EQ(llvm::None, StackCFIRecord::parse("STACK CFI INIT")); - EXPECT_EQ(llvm::None, StackCFIRecord::parse("STACK CFI")); - EXPECT_EQ(llvm::None, StackCFIRecord::parse("STACK")); - EXPECT_EQ(llvm::None, StackCFIRecord::parse("FILE 47 foo")); - EXPECT_EQ(llvm::None, StackCFIRecord::parse("42 47")); -} - -TEST(StackWinRecord, parse) { - EXPECT_EQ( - StackWinRecord(0x47, 0x8, 3, 4, 5, llvm::StringRef("$eip $esp ^ =")), - StackWinRecord::parse("STACK WIN 4 47 8 1 2 3 4 5 6 1 $eip $esp ^ =")); - - EXPECT_EQ(llvm::None, StackWinRecord::parse( - "STACK WIN 0 47 8 1 0 0 0 0 0 1 $eip $esp ^ =")); - EXPECT_EQ(llvm::None, - StackWinRecord::parse("STACK WIN 4 47 8 1 0 0 0 0 0 0 1")); - EXPECT_EQ(llvm::None, StackWinRecord::parse( - "STACK WIN 3 47 8 1 0 0 0 0 0 1 $eip $esp ^ =")); - EXPECT_EQ(llvm::None, - StackWinRecord::parse("STACK WIN 3 47 8 1 0 0 0 0 0 0 1")); - EXPECT_EQ(llvm::None, StackWinRecord::parse( - "STACK WIN 4 47 8 1 0 0 0 0 1 $eip $esp ^ =")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN 4 47 8 1 0 0 0 0 0")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN 4 47 8 1 0 0 0 0")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN 4 47 8 1 0 0 0")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN 4 47 8 1 0 0")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN 4 47 8 1 0")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN 4 47 8 1")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN 4 47 8")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN 4 47")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN 4")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK WIN")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("STACK")); - EXPECT_EQ(llvm::None, StackWinRecord::parse("")); - EXPECT_EQ(llvm::None, StackCFIRecord::parse("FILE 47 foo")); - EXPECT_EQ(llvm::None, StackCFIRecord::parse("42 47")); -} diff --git a/gnu/llvm/lldb/unittests/ObjectFile/Breakpad/CMakeLists.txt b/gnu/llvm/lldb/unittests/ObjectFile/Breakpad/CMakeLists.txt deleted file mode 100644 index 34237c139f8..00000000000 --- a/gnu/llvm/lldb/unittests/ObjectFile/Breakpad/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -add_lldb_unittest(ObjectFileBreakpadTests - BreakpadRecordsTest.cpp - - LINK_LIBS - lldbPluginObjectFileBreakpad - ) diff --git a/gnu/llvm/lldb/unittests/ObjectFile/CMakeLists.txt b/gnu/llvm/lldb/unittests/ObjectFile/CMakeLists.txt deleted file mode 100644 index b5d248e3965..00000000000 --- a/gnu/llvm/lldb/unittests/ObjectFile/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -add_subdirectory(Breakpad) -add_subdirectory(ELF) -add_subdirectory(MachO) -add_subdirectory(PECOFF) diff --git a/gnu/llvm/lldb/unittests/ObjectFile/ELF/CMakeLists.txt b/gnu/llvm/lldb/unittests/ObjectFile/ELF/CMakeLists.txt deleted file mode 100644 index 4c59ca109a5..00000000000 --- a/gnu/llvm/lldb/unittests/ObjectFile/ELF/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -add_lldb_unittest(ObjectFileELFTests - TestObjectFileELF.cpp - - LINK_LIBS - lldbPluginObjectFileELF - lldbPluginSymbolFileSymtab - lldbCore - lldbUtilityHelpers - LLVMTestingSupport - ) - -set(test_inputs - early-section-headers.so - ) -add_unittest_inputs(ObjectFileELFTests "${test_inputs}") diff --git a/gnu/llvm/lldb/unittests/ObjectFile/ELF/TestObjectFileELF.cpp b/gnu/llvm/lldb/unittests/ObjectFile/ELF/TestObjectFileELF.cpp deleted file mode 100644 index 9718ad3d27e..00000000000 --- a/gnu/llvm/lldb/unittests/ObjectFile/ELF/TestObjectFileELF.cpp +++ /dev/null @@ -1,278 +0,0 @@ -//===-- TestObjectFileELF.cpp ---------------------------------------------===// -// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/ObjectFile/ELF/ObjectFileELF.h" -#include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" -#include "lldb/Core/Module.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Core/Section.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Utility/DataBufferHeap.h" -#include "llvm/ADT/Optional.h" -#include "llvm/Support/Compression.h" -#include "llvm/Support/FileUtilities.h" -#include "llvm/Support/Path.h" -#include "llvm/Support/Program.h" -#include "llvm/Support/raw_ostream.h" -#include "llvm/Testing/Support/Error.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb; - -class ObjectFileELFTest : public testing::Test { - SubsystemRAII - subsystems; -}; - -TEST_F(ObjectFileELFTest, SectionsResolveConsistently) { - auto ExpectedFile = TestFile::fromYaml(R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_X86_64 - Entry: 0x0000000000400180 -Sections: - - Name: .note.gnu.build-id - Type: SHT_NOTE - Flags: [ SHF_ALLOC ] - Address: 0x0000000000400158 - AddressAlign: 0x0000000000000004 - Content: 040000001400000003000000474E55003F3EC29E3FD83E49D18C4D49CD8A730CC13117B6 - - Name: .text - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0x0000000000400180 - AddressAlign: 0x0000000000000010 - Content: 554889E58B042500106000890425041060005DC3 - - Name: .data - Type: SHT_PROGBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000601000 - AddressAlign: 0x0000000000000004 - Content: 2F000000 - - Name: .bss - Type: SHT_NOBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000601004 - AddressAlign: 0x0000000000000004 - Size: 0x0000000000000004 -Symbols: - - Name: Y - Type: STT_OBJECT - Section: .data - Value: 0x0000000000601000 - Size: 0x0000000000000004 - Binding: STB_GLOBAL - - Name: _start - Type: STT_FUNC - Section: .text - Value: 0x0000000000400180 - Size: 0x0000000000000014 - Binding: STB_GLOBAL - - Name: X - Type: STT_OBJECT - Section: .bss - Value: 0x0000000000601004 - Size: 0x0000000000000004 - Binding: STB_GLOBAL -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - auto module_sp = std::make_shared(ExpectedFile->moduleSpec()); - SectionList *list = module_sp->GetSectionList(); - ASSERT_NE(nullptr, list); - - auto bss_sp = list->FindSectionByName(ConstString(".bss")); - ASSERT_NE(nullptr, bss_sp); - auto data_sp = list->FindSectionByName(ConstString(".data")); - ASSERT_NE(nullptr, data_sp); - auto text_sp = list->FindSectionByName(ConstString(".text")); - ASSERT_NE(nullptr, text_sp); - - const Symbol *X = module_sp->FindFirstSymbolWithNameAndType(ConstString("X"), - eSymbolTypeAny); - ASSERT_NE(nullptr, X); - EXPECT_EQ(bss_sp, X->GetAddress().GetSection()); - - const Symbol *Y = module_sp->FindFirstSymbolWithNameAndType(ConstString("Y"), - eSymbolTypeAny); - ASSERT_NE(nullptr, Y); - EXPECT_EQ(data_sp, Y->GetAddress().GetSection()); - - const Symbol *start = module_sp->FindFirstSymbolWithNameAndType( - ConstString("_start"), eSymbolTypeAny); - ASSERT_NE(nullptr, start); - EXPECT_EQ(text_sp, start->GetAddress().GetSection()); -} - -// Test that GetModuleSpecifications works on an "atypical" object file which -// has section headers right after the ELF header (instead of the more common -// layout where the section headers are at the very end of the object file). -// -// Test file generated with yaml2obj (@svn rev 324254) from the following input: -/* ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_X86_64 - Entry: 0x00000000004003D0 -Sections: - - Name: .note.gnu.build-id - Type: SHT_NOTE - Flags: [ SHF_ALLOC ] - Address: 0x0000000000400274 - AddressAlign: 0x0000000000000004 - Content: 040000001400000003000000474E55001B8A73AC238390E32A7FF4AC8EBE4D6A41ECF5C9 - - Name: .text - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0x00000000004003D0 - AddressAlign: 0x0000000000000010 - Content: DEADBEEFBAADF00D -... -*/ -TEST_F(ObjectFileELFTest, GetModuleSpecifications_EarlySectionHeaders) { - std::string SO = GetInputFilePath("early-section-headers.so"); - ModuleSpecList Specs; - ASSERT_EQ(1u, ObjectFile::GetModuleSpecifications(FileSpec(SO), 0, 0, Specs)); - ModuleSpec Spec; - ASSERT_TRUE(Specs.GetModuleSpecAtIndex(0, Spec)) ; - UUID Uuid; - Uuid.SetFromStringRef("1b8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9"); - EXPECT_EQ(Spec.GetUUID(), Uuid); -} - -TEST_F(ObjectFileELFTest, GetSymtab_NoSymEntryPointArmThumbAddressClass) { - /* - // nosym-entrypoint-arm-thumb.s - .thumb_func - _start: - mov r0, #42 - mov r7, #1 - svc #0 - // arm-linux-androideabi-as nosym-entrypoint-arm-thumb.s - // -o nosym-entrypoint-arm-thumb.o - // arm-linux-androideabi-ld nosym-entrypoint-arm-thumb.o - // -o nosym-entrypoint-arm-thumb -e 0x8075 -s - */ - auto ExpectedFile = TestFile::fromYaml(R"( ---- !ELF -FileHeader: - Class: ELFCLASS32 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_ARM - Flags: [ EF_ARM_SOFT_FLOAT, EF_ARM_EABI_VER5 ] - Entry: 0x0000000000008075 -Sections: - - Name: .text - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0x0000000000008074 - AddressAlign: 0x0000000000000002 - Content: 2A20012700DF - - Name: .data - Type: SHT_PROGBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000009000 - AddressAlign: 0x0000000000000001 - Content: '' - - Name: .bss - Type: SHT_NOBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000009000 - AddressAlign: 0x0000000000000001 - - Name: .note.gnu.gold-version - Type: SHT_NOTE - AddressAlign: 0x0000000000000004 - Content: 040000000900000004000000474E5500676F6C6420312E3131000000 - - Name: .ARM.attributes - Type: SHT_ARM_ATTRIBUTES - AddressAlign: 0x0000000000000001 - Content: '4113000000616561626900010900000006020901' -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - auto module_sp = std::make_shared(ExpectedFile->moduleSpec()); - - auto entry_point_addr = module_sp->GetObjectFile()->GetEntryPointAddress(); - ASSERT_TRUE(entry_point_addr.GetOffset() & 1); - // Decrease the offsite by 1 to make it into a breakable address since this - // is Thumb. - entry_point_addr.SetOffset(entry_point_addr.GetOffset() - 1); - ASSERT_EQ(entry_point_addr.GetAddressClass(), - AddressClass::eCodeAlternateISA); -} - -TEST_F(ObjectFileELFTest, GetSymtab_NoSymEntryPointArmAddressClass) { - /* - // nosym-entrypoint-arm.s - _start: - movs r0, #42 - movs r7, #1 - svc #0 - // arm-linux-androideabi-as nosym-entrypoint-arm.s - // -o nosym-entrypoint-arm.o - // arm-linux-androideabi-ld nosym-entrypoint-arm.o - // -o nosym-entrypoint-arm -e 0x8074 -s - */ - auto ExpectedFile = TestFile::fromYaml(R"( ---- !ELF -FileHeader: - Class: ELFCLASS32 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_ARM - Flags: [ EF_ARM_SOFT_FLOAT, EF_ARM_EABI_VER5 ] - Entry: 0x0000000000008074 -Sections: - - Name: .text - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0x0000000000008074 - AddressAlign: 0x0000000000000004 - Content: 2A00A0E30170A0E3000000EF - - Name: .data - Type: SHT_PROGBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000009000 - AddressAlign: 0x0000000000000001 - Content: '' - - Name: .bss - Type: SHT_NOBITS - Flags: [ SHF_WRITE, SHF_ALLOC ] - Address: 0x0000000000009000 - AddressAlign: 0x0000000000000001 - - Name: .note.gnu.gold-version - Type: SHT_NOTE - AddressAlign: 0x0000000000000004 - Content: 040000000900000004000000474E5500676F6C6420312E3131000000 - - Name: .ARM.attributes - Type: SHT_ARM_ATTRIBUTES - AddressAlign: 0x0000000000000001 - Content: '4113000000616561626900010900000006010801' -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - auto module_sp = std::make_shared(ExpectedFile->moduleSpec()); - - auto entry_point_addr = module_sp->GetObjectFile()->GetEntryPointAddress(); - ASSERT_EQ(entry_point_addr.GetAddressClass(), AddressClass::eCode); -} diff --git a/gnu/llvm/lldb/unittests/ObjectFile/MachO/CMakeLists.txt b/gnu/llvm/lldb/unittests/ObjectFile/MachO/CMakeLists.txt deleted file mode 100644 index b6c4225114a..00000000000 --- a/gnu/llvm/lldb/unittests/ObjectFile/MachO/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -add_lldb_unittest(ObjectFileMachOTests - TestObjectFileMachO.cpp - - LINK_LIBS - lldbPluginObjectFileMachO - lldbPluginSymbolFileSymtab - lldbCore - lldbUtilityHelpers - LLVMTestingSupport - ) diff --git a/gnu/llvm/lldb/unittests/ObjectFile/MachO/TestObjectFileMachO.cpp b/gnu/llvm/lldb/unittests/ObjectFile/MachO/TestObjectFileMachO.cpp deleted file mode 100644 index 119be3822cc..00000000000 --- a/gnu/llvm/lldb/unittests/ObjectFile/MachO/TestObjectFileMachO.cpp +++ /dev/null @@ -1,79 +0,0 @@ -//===-- ObjectFileMachOTest.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Host/HostInfo.h" -#include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" -#include "lldb/Core/Module.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/lldb-defines.h" -#include "gtest/gtest.h" - -#ifdef __APPLE__ -#include -#endif - -using namespace lldb_private; -using namespace llvm; - -namespace { -class ObjectFileMachOTest : public ::testing::Test { - SubsystemRAII subsystems; -}; -} // namespace - -#if defined(__APPLE__) -TEST_F(ObjectFileMachOTest, ModuleFromSharedCacheInfo) { - SharedCacheImageInfo image_info = - HostInfo::GetSharedCacheImageInfo("/usr/lib/libobjc.A.dylib"); - EXPECT_TRUE(image_info.uuid); - EXPECT_TRUE(image_info.data_sp); - - ModuleSpec spec(FileSpec(), UUID(), image_info.data_sp); - lldb::ModuleSP module = std::make_shared(spec); - ObjectFile *OF = module->GetObjectFile(); - ASSERT_TRUE(llvm::isa(OF)); - EXPECT_TRUE( - OF->GetArchitecture().IsCompatibleMatch(HostInfo::GetArchitecture())); - Symtab *symtab = OF->GetSymtab(); - ASSERT_NE(symtab, nullptr); - void *libobjc = dlopen("/usr/lib/libobjc.A.dylib", RTLD_LAZY); - ASSERT_NE(libobjc, nullptr); - - // This function checks that if we read something from the - // ObjectFile we get through the shared cache in-mmeory - // buffer, it matches what we get by reading directly the - // memory of the symbol. - auto check_symbol = [&](const char *sym_name) { - std::vector symbol_indices; - symtab->FindAllSymbolsWithNameAndType(ConstString(sym_name), - lldb::eSymbolTypeAny, symbol_indices); - EXPECT_EQ(symbol_indices.size(), 1u); - - Symbol *sym = symtab->SymbolAtIndex(symbol_indices[0]); - ASSERT_NE(sym, nullptr); - Address base = sym->GetAddress(); - size_t size = sym->GetByteSize(); - ASSERT_NE(size, 0u); - uint8_t buffer[size]; - EXPECT_EQ(OF->ReadSectionData(base.GetSection().get(), base.GetOffset(), - buffer, size), - size); - - void *sym_addr = dlsym(libobjc, sym_name); - ASSERT_NE(sym_addr, nullptr); - EXPECT_EQ(memcmp(buffer, sym_addr, size), 0); - }; - - // Read a symbol from the __TEXT segment... - check_symbol("objc_msgSend"); - // ... and one from the __DATA segment - check_symbol("OBJC_CLASS_$_NSObject"); -} -#endif diff --git a/gnu/llvm/lldb/unittests/ObjectFile/PECOFF/CMakeLists.txt b/gnu/llvm/lldb/unittests/ObjectFile/PECOFF/CMakeLists.txt deleted file mode 100644 index 3ce5a7b9739..00000000000 --- a/gnu/llvm/lldb/unittests/ObjectFile/PECOFF/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -add_lldb_unittest(ObjectFilePECOFFTests - TestPECallFrameInfo.cpp - - LINK_LIBS - lldbUtilityHelpers - lldbPluginObjectFilePECOFF - LLVMTestingSupport - ) diff --git a/gnu/llvm/lldb/unittests/ObjectFile/PECOFF/TestPECallFrameInfo.cpp b/gnu/llvm/lldb/unittests/ObjectFile/PECOFF/TestPECallFrameInfo.cpp deleted file mode 100644 index e842df59888..00000000000 --- a/gnu/llvm/lldb/unittests/ObjectFile/PECOFF/TestPECallFrameInfo.cpp +++ /dev/null @@ -1,328 +0,0 @@ -//===-- TestPECallFrameInfo.cpp -------------------------------------------===// -// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" -#include "Plugins/Process/Utility/lldb-x86-register-enums.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" - -#include "lldb/Core/Module.h" -#include "lldb/Symbol/CallFrameInfo.h" -#include "lldb/Symbol/UnwindPlan.h" -#include "llvm/Testing/Support/Error.h" - -using namespace lldb_private; -using namespace lldb; - -class PECallFrameInfoTest : public testing::Test { - SubsystemRAII subsystems; - -protected: - void GetUnwindPlan(addr_t file_addr, UnwindPlan &plan) const; -}; - -void PECallFrameInfoTest::GetUnwindPlan(addr_t file_addr, UnwindPlan &plan) const { - llvm::Expected ExpectedFile = TestFile::fromYaml( - R"( ---- !COFF -OptionalHeader: - AddressOfEntryPoint: 0 - ImageBase: 16777216 - SectionAlignment: 4096 - FileAlignment: 512 - MajorOperatingSystemVersion: 6 - MinorOperatingSystemVersion: 0 - MajorImageVersion: 0 - MinorImageVersion: 0 - MajorSubsystemVersion: 6 - MinorSubsystemVersion: 0 - Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI - DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT ] - SizeOfStackReserve: 1048576 - SizeOfStackCommit: 4096 - SizeOfHeapReserve: 1048576 - SizeOfHeapCommit: 4096 - ExportTable: - RelativeVirtualAddress: 0 - Size: 0 - ImportTable: - RelativeVirtualAddress: 0 - Size: 0 - ResourceTable: - RelativeVirtualAddress: 0 - Size: 0 - ExceptionTable: - RelativeVirtualAddress: 12288 - Size: 60 - CertificateTable: - RelativeVirtualAddress: 0 - Size: 0 - BaseRelocationTable: - RelativeVirtualAddress: 0 - Size: 0 - Debug: - RelativeVirtualAddress: 0 - Size: 0 - Architecture: - RelativeVirtualAddress: 0 - Size: 0 - GlobalPtr: - RelativeVirtualAddress: 0 - Size: 0 - TlsTable: - RelativeVirtualAddress: 0 - Size: 0 - LoadConfigTable: - RelativeVirtualAddress: 0 - Size: 0 - BoundImport: - RelativeVirtualAddress: 0 - Size: 0 - IAT: - RelativeVirtualAddress: 0 - Size: 0 - DelayImportDescriptor: - RelativeVirtualAddress: 0 - Size: 0 - ClrRuntimeHeader: - RelativeVirtualAddress: 0 - Size: 0 -header: - Machine: IMAGE_FILE_MACHINE_AMD64 - Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE ] -sections: - - Name: .text - Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] - VirtualAddress: 4096 - VirtualSize: 4096 - - Name: .rdata - Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] - VirtualAddress: 8192 - VirtualSize: 68 - SectionData: 010C06000C3208F006E00470036002302105020005540D0000100000001100000020000019400E352F74670028646600213465001A3315015E000EF00CE00AD008C00650 - - -# Unwind info at 0x2000: -# 01 0C 06 00 No chained info, prolog size = 0xC, unwind codes size is 6 words, no frame register -# 0C 32 UOP_AllocSmall(2) 3 * 8 + 8 bytes, offset in prolog is 0xC -# 08 F0 UOP_PushNonVol(0) R15(0xF), offset in prolog is 8 -# 06 E0 UOP_PushNonVol(0) R14(0xE), offset in prolog is 6 -# 04 70 UOP_PushNonVol(0) RDI(7), offset in prolog is 4 -# 03 60 UOP_PushNonVol(0) RSI(6), offset in prolog is 3 -# 02 30 UOP_PushNonVol(0) RBX(3), offset in prolog is 2 -# Corresponding prolog: -# 00 push rbx -# 02 push rsi -# 03 push rdi -# 04 push r14 -# 06 push r15 -# 08 sub rsp, 20h - -# Unwind info at 0x2010: -# 21 05 02 00 Has chained info, prolog size = 5, unwind codes size is 2 words, no frame register -# 05 54 0D 00 UOP_SaveNonVol(4) RBP(5) to RSP + 0xD * 8, offset in prolog is 5 -# Chained runtime function: -# 00 10 00 00 Start address is 0x1000 -# 00 11 00 00 End address is 0x1100 -# 00 20 00 00 Unwind info RVA is 0x2000 -# Corresponding prolog: -# 00 mov [rsp+68h], rbp - -# Unwind info at 0x2024: -# 19 40 0E 35 No chained info, prolog size = 0x40, unwind codes size is 0xE words, frame register is RBP, frame register offset is RSP + 3 * 16 -# 2F 74 67 00 UOP_SaveNonVol(4) RDI(7) to RSP + 0x67 * 8, offset in prolog is 0x2F -# 28 64 66 00 UOP_SaveNonVol(4) RSI(6) to RSP + 0x66 * 8, offset in prolog is 0x28 -# 21 34 65 00 UOP_SaveNonVol(4) RBX(3) to RSP + 0x65 * 8, offset in prolog is 0x21 -# 1A 33 UOP_SetFPReg(3), offset in prolog is 0x1A -# 15 01 5E 00 UOP_AllocLarge(1) 0x5E * 8 bytes, offset in prolog is 0x15 -# 0E F0 UOP_PushNonVol(0) R15(0xF), offset in prolog is 0xE -# 0C E0 UOP_PushNonVol(0) R14(0xE), offset in prolog is 0xC -# 0A D0 UOP_PushNonVol(0) R13(0xD), offset in prolog is 0xA -# 08 C0 UOP_PushNonVol(0) R12(0xC), offset in prolog is 8 -# 06 50 UOP_PushNonVol(0) RBP(5), offset in prolog is 6 -# Corresponding prolog: -# 00 mov [rsp+8], rcx -# 05 push rbp -# 06 push r12 -# 08 push r13 -# 0A push r14 -# 0C push r15 -# 0E sub rsp, 2F0h -# 15 lea rbp, [rsp+30h] -# 1A mov [rbp+2F8h], rbx -# 21 mov [rbp+300h], rsi -# 28 mov [rbp+308h], rdi - - - Name: .pdata - Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] - VirtualAddress: 12288 - VirtualSize: 60 - SectionData: 000000000000000000000000000000000000000000000000001000000011000000200000001100000012000010200000001200000013000024200000 - -# 00 00 00 00 -# 00 00 00 00 Test correct processing of empty runtime functions at begin -# 00 00 00 00 - -# 00 00 00 00 -# 00 00 00 00 Test correct processing of empty runtime functions at begin -# 00 00 00 00 - -# 00 10 00 00 Start address is 0x1000 -# 00 11 00 00 End address is 0x1100 -# 00 20 00 00 Unwind info RVA is 0x2000 - -# 00 11 00 00 Start address is 0x1100 -# 00 12 00 00 End address is 0x1200 -# 10 20 00 00 Unwind info RVA is 0x2010 - -# 00 12 00 00 Start address is 0x1200 -# 00 13 00 00 End address is 0x1300 -# 24 20 00 00 Unwind info RVA is 0x2024 - -symbols: [] -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - ModuleSP module_sp = std::make_shared(ExpectedFile->moduleSpec()); - ObjectFile *object_file = module_sp->GetObjectFile(); - ASSERT_NE(object_file, nullptr); - - std::unique_ptr cfi = object_file->CreateCallFrameInfo(); - ASSERT_NE(cfi.get(), nullptr); - - SectionList *sect_list = object_file->GetSectionList(); - ASSERT_NE(sect_list, nullptr); - - EXPECT_TRUE(cfi->GetUnwindPlan(Address(file_addr, sect_list), plan)); -} - -TEST_F(PECallFrameInfoTest, Basic_eh) { - UnwindPlan plan(eRegisterKindLLDB); - GetUnwindPlan(0x1001080, plan); - EXPECT_EQ(plan.GetRowCount(), 7); - - UnwindPlan::Row row; - row.SetOffset(0); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 8); - row.SetRegisterLocationToIsCFAPlusOffset(lldb_rsp_x86_64, 0, true); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rip_x86_64, -8, true); - EXPECT_EQ(*plan.GetRowAtIndex(0), row); - - row.SetOffset(2); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x10); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rbx_x86_64, -0x10, true); - EXPECT_EQ(*plan.GetRowAtIndex(1), row); - - row.SetOffset(3); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x18); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rsi_x86_64, -0x18, true); - EXPECT_EQ(*plan.GetRowAtIndex(2), row); - - row.SetOffset(4); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x20); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rdi_x86_64, -0x20, true); - EXPECT_EQ(*plan.GetRowAtIndex(3), row); - - row.SetOffset(6); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x28); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_r14_x86_64, -0x28, true); - EXPECT_EQ(*plan.GetRowAtIndex(4), row); - - row.SetOffset(8); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x30); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_r15_x86_64, -0x30, true); - EXPECT_EQ(*plan.GetRowAtIndex(5), row); - - row.SetOffset(0xC); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x50); - EXPECT_EQ(*plan.GetRowAtIndex(6), row); -} - -TEST_F(PECallFrameInfoTest, Chained_eh) { - UnwindPlan plan(eRegisterKindLLDB); - GetUnwindPlan(0x1001180, plan); - EXPECT_EQ(plan.GetRowCount(), 2); - - UnwindPlan::Row row; - row.SetOffset(0); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x50); - row.SetRegisterLocationToIsCFAPlusOffset(lldb_rsp_x86_64, 0, true); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rip_x86_64, -8, true); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rbx_x86_64, -0x10, true); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rsi_x86_64, -0x18, true); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rdi_x86_64, -0x20, true); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_r14_x86_64, -0x28, true); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_r15_x86_64, -0x30, true); - EXPECT_EQ(*plan.GetRowAtIndex(0), row); - - row.SetOffset(5); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rbp_x86_64, 0x18, true); - EXPECT_EQ(*plan.GetRowAtIndex(1), row); -} - -TEST_F(PECallFrameInfoTest, Frame_reg_eh) { - UnwindPlan plan(eRegisterKindLLDB); - GetUnwindPlan(0x1001280, plan); - EXPECT_EQ(plan.GetRowCount(), 11); - - UnwindPlan::Row row; - row.SetOffset(0); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 8); - row.SetRegisterLocationToIsCFAPlusOffset(lldb_rsp_x86_64, 0, true); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rip_x86_64, -8, true); - EXPECT_EQ(*plan.GetRowAtIndex(0), row); - - row.SetOffset(6); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x10); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rbp_x86_64, -0x10, true); - EXPECT_EQ(*plan.GetRowAtIndex(1), row); - - row.SetOffset(8); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x18); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_r12_x86_64, -0x18, true); - EXPECT_EQ(*plan.GetRowAtIndex(2), row); - - row.SetOffset(0xA); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x20); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_r13_x86_64, -0x20, true); - EXPECT_EQ(*plan.GetRowAtIndex(3), row); - - row.SetOffset(0xC); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x28); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_r14_x86_64, -0x28, true); - EXPECT_EQ(*plan.GetRowAtIndex(4), row); - - row.SetOffset(0xE); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x30); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_r15_x86_64, -0x30, true); - EXPECT_EQ(*plan.GetRowAtIndex(5), row); - - row.SetOffset(0x15); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rsp_x86_64, 0x320); - EXPECT_EQ(*plan.GetRowAtIndex(6), row); - - row.SetOffset(0x1A); - row.GetCFAValue().SetIsRegisterPlusOffset(lldb_rbp_x86_64, 0x2F0); - EXPECT_EQ(*plan.GetRowAtIndex(7), row); - - row.SetOffset(0x21); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rbx_x86_64, 8, true); - EXPECT_EQ(*plan.GetRowAtIndex(8), row); - - row.SetOffset(0x28); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rsi_x86_64, 0x10, true); - EXPECT_EQ(*plan.GetRowAtIndex(9), row); - - row.SetOffset(0x2F); - row.SetRegisterLocationToAtCFAPlusOffset(lldb_rdi_x86_64, 0x18, true); - EXPECT_EQ(*plan.GetRowAtIndex(10), row); -} diff --git a/gnu/llvm/lldb/unittests/Platform/Android/AdbClientTest.cpp b/gnu/llvm/lldb/unittests/Platform/Android/AdbClientTest.cpp deleted file mode 100644 index 0808b96f69f..00000000000 --- a/gnu/llvm/lldb/unittests/Platform/Android/AdbClientTest.cpp +++ /dev/null @@ -1,51 +0,0 @@ -//===-- AdbClientTest.cpp -------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" -#include "Plugins/Platform/Android/AdbClient.h" -#include - -static void set_env(const char *var, const char *value) { -#ifdef _WIN32 - _putenv_s(var, value); -#else - setenv(var, value, true); -#endif -} - -using namespace lldb; -using namespace lldb_private; - -namespace lldb_private { -namespace platform_android { - -class AdbClientTest : public ::testing::Test { -public: - void SetUp() override { set_env("ANDROID_SERIAL", ""); } - - void TearDown() override { set_env("ANDROID_SERIAL", ""); } -}; - -TEST(AdbClientTest, CreateByDeviceId) { - AdbClient adb; - Status error = AdbClient::CreateByDeviceID("device1", adb); - EXPECT_TRUE(error.Success()); - EXPECT_EQ("device1", adb.GetDeviceID()); -} - -TEST(AdbClientTest, CreateByDeviceId_ByEnvVar) { - set_env("ANDROID_SERIAL", "device2"); - - AdbClient adb; - Status error = AdbClient::CreateByDeviceID("", adb); - EXPECT_TRUE(error.Success()); - EXPECT_EQ("device2", adb.GetDeviceID()); -} - -} // end namespace platform_android -} // end namespace lldb_private diff --git a/gnu/llvm/lldb/unittests/Platform/Android/CMakeLists.txt b/gnu/llvm/lldb/unittests/Platform/Android/CMakeLists.txt deleted file mode 100644 index 489fdab7036..00000000000 --- a/gnu/llvm/lldb/unittests/Platform/Android/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -include_directories(${LLDB_SOURCE_DIR}/source/Plugins/Platform/Android) - -add_lldb_unittest(AdbClientTests - AdbClientTest.cpp - - LINK_LIBS - lldbPluginPlatformAndroid - ) diff --git a/gnu/llvm/lldb/unittests/Platform/CMakeLists.txt b/gnu/llvm/lldb/unittests/Platform/CMakeLists.txt deleted file mode 100644 index ca5031b9b43..00000000000 --- a/gnu/llvm/lldb/unittests/Platform/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -add_lldb_unittest(LLDBPlatformTests - PlatformAppleSimulatorTest.cpp - PlatformDarwinTest.cpp - - LINK_LIBS - lldbPluginPlatformMacOSX - LINK_COMPONENTS - Support - ) - -add_subdirectory(Android) diff --git a/gnu/llvm/lldb/unittests/Platform/PlatformAppleSimulatorTest.cpp b/gnu/llvm/lldb/unittests/Platform/PlatformAppleSimulatorTest.cpp deleted file mode 100644 index 42549e89cc3..00000000000 --- a/gnu/llvm/lldb/unittests/Platform/PlatformAppleSimulatorTest.cpp +++ /dev/null @@ -1,71 +0,0 @@ -//===-- PlatformAppleSimulatorTest.cpp ------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "Plugins/Platform/MacOSX/PlatformAppleSimulator.h" -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Target/Platform.h" - -using namespace lldb; -using namespace lldb_private; - -class PlatformAppleSimulatorTest : public ::testing::Test { - SubsystemRAII - subsystems; -}; - -#ifdef __APPLE__ - -static void testSimPlatformArchHasSimEnvironment(llvm::StringRef name) { - Status error; - auto platform_sp = Platform::Create(ConstString(name), error); - ASSERT_TRUE(platform_sp); - int num_arches = 0; - - while (true) { - ArchSpec arch; - if (!platform_sp->GetSupportedArchitectureAtIndex(num_arches, arch)) - break; - EXPECT_EQ(arch.GetTriple().getEnvironment(), llvm::Triple::Simulator); - num_arches++; - } - - EXPECT_GT(num_arches, 0); -} - -TEST_F(PlatformAppleSimulatorTest, TestSimHasSimEnvionament) { - testSimPlatformArchHasSimEnvironment("ios-simulator"); - testSimPlatformArchHasSimEnvironment("tvos-simulator"); - testSimPlatformArchHasSimEnvironment("watchos-simulator"); -} - -TEST_F(PlatformAppleSimulatorTest, TestHostPlatformToSim) { - static const ArchSpec platform_arch( - HostInfo::GetArchitecture(HostInfo::eArchKindDefault)); - - const llvm::Triple::OSType sim_platforms[] = { - llvm::Triple::IOS, - llvm::Triple::TvOS, - llvm::Triple::WatchOS, - }; - - for (auto sim : sim_platforms) { - ArchSpec arch = platform_arch; - arch.GetTriple().setOS(sim); - arch.GetTriple().setEnvironment(llvm::Triple::Simulator); - - Status error; - auto platform_sp = Platform::Create(arch, nullptr, error); - EXPECT_TRUE(platform_sp); - } -} - -#endif diff --git a/gnu/llvm/lldb/unittests/Platform/PlatformDarwinTest.cpp b/gnu/llvm/lldb/unittests/Platform/PlatformDarwinTest.cpp deleted file mode 100644 index 285dc2ee3db..00000000000 --- a/gnu/llvm/lldb/unittests/Platform/PlatformDarwinTest.cpp +++ /dev/null @@ -1,68 +0,0 @@ -//===-- PlatformDarwinTest.cpp --------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "Plugins/Platform/MacOSX/PlatformDarwin.h" - -#include "llvm/ADT/StringRef.h" - -#include - -using namespace lldb; -using namespace lldb_private; - -struct PlatformDarwinTester : public PlatformDarwin { -public: - using PlatformDarwin::FindComponentInPath; -}; - -TEST(PlatformDarwinTest, TestParseVersionBuildDir) { - llvm::VersionTuple V; - llvm::StringRef D; - - std::tie(V, D) = PlatformDarwin::ParseVersionBuildDir("1.2.3 (test1)"); - EXPECT_EQ(llvm::VersionTuple(1, 2, 3), V); - EXPECT_EQ("test1", D); - - std::tie(V, D) = PlatformDarwin::ParseVersionBuildDir("2.3 (test2)"); - EXPECT_EQ(llvm::VersionTuple(2, 3), V); - EXPECT_EQ("test2", D); - - std::tie(V, D) = PlatformDarwin::ParseVersionBuildDir("3 (test3)"); - EXPECT_EQ(llvm::VersionTuple(3), V); - EXPECT_EQ("test3", D); - - std::tie(V, D) = PlatformDarwin::ParseVersionBuildDir("1.2.3 (test"); - EXPECT_EQ(llvm::VersionTuple(1, 2, 3), V); - EXPECT_EQ("test", D); - - std::tie(V, D) = PlatformDarwin::ParseVersionBuildDir("2.3.4 test"); - EXPECT_EQ(llvm::VersionTuple(2, 3, 4), V); - EXPECT_EQ("", D); - - std::tie(V, D) = PlatformDarwin::ParseVersionBuildDir("3.4.5"); - EXPECT_EQ(llvm::VersionTuple(3, 4, 5), V); -} - -TEST(PlatformDarwinTest, FindComponentInPath) { - EXPECT_EQ("/path/to/foo", - PlatformDarwinTester::FindComponentInPath("/path/to/foo/", "foo")); - - EXPECT_EQ("/path/to/foo", - PlatformDarwinTester::FindComponentInPath("/path/to/foo", "foo")); - - EXPECT_EQ("/path/to/foobar", PlatformDarwinTester::FindComponentInPath( - "/path/to/foobar", "foo")); - - EXPECT_EQ("/path/to/foobar", PlatformDarwinTester::FindComponentInPath( - "/path/to/foobar", "bar")); - - EXPECT_EQ("", - PlatformDarwinTester::FindComponentInPath("/path/to/foo", "bar")); -} diff --git a/gnu/llvm/lldb/unittests/Process/CMakeLists.txt b/gnu/llvm/lldb/unittests/Process/CMakeLists.txt deleted file mode 100644 index 5fbecfcfa25..00000000000 --- a/gnu/llvm/lldb/unittests/Process/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -add_subdirectory(gdb-remote) -if (CMAKE_SYSTEM_NAME MATCHES "Linux|Android") - add_subdirectory(Linux) - add_subdirectory(POSIX) -endif() -add_subdirectory(Utility) -add_subdirectory(minidump) - -add_lldb_unittest(ProcessEventDataTests - ProcessEventDataTest.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbTarget - lldbSymbol - lldbUtility - lldbUtilityHelpers - lldbInterpreter - lldbPluginPlatformMacOSX - ) diff --git a/gnu/llvm/lldb/unittests/Process/Linux/CMakeLists.txt b/gnu/llvm/lldb/unittests/Process/Linux/CMakeLists.txt deleted file mode 100644 index ae021023cf7..00000000000 --- a/gnu/llvm/lldb/unittests/Process/Linux/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -add_lldb_unittest(TraceIntelPTTests - IntelPTManagerTests.cpp - - LINK_LIBS - lldbPluginProcessLinux - ) - -target_include_directories(TraceIntelPTTests PRIVATE - ${LLDB_SOURCE_DIR}/source/Plugins/Process/Linux) diff --git a/gnu/llvm/lldb/unittests/Process/Linux/IntelPTManagerTests.cpp b/gnu/llvm/lldb/unittests/Process/Linux/IntelPTManagerTests.cpp deleted file mode 100644 index 76eb78a5193..00000000000 --- a/gnu/llvm/lldb/unittests/Process/Linux/IntelPTManagerTests.cpp +++ /dev/null @@ -1,147 +0,0 @@ -//===-- IntelPTManagerTests.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "IntelPTManager.h" -#include "llvm/ADT/ArrayRef.h" - - -using namespace lldb_private; -using namespace process_linux; - -size_t ReadCylicBufferWrapper(void *buf, size_t buf_size, void *cyc_buf, - size_t cyc_buf_size, size_t cyc_start, - size_t offset) { - llvm::MutableArrayRef dst(reinterpret_cast(buf), - buf_size); - llvm::MutableArrayRef src(reinterpret_cast(cyc_buf), - cyc_buf_size); - IntelPTThreadTrace::ReadCyclicBuffer(dst, src, cyc_start, offset); - return dst.size(); -} - -TEST(CyclicBuffer, EdgeCases) { - size_t bytes_read; - uint8_t cyclic_buffer[6] = {'l', 'i', 'c', 'c', 'y', 'c'}; - - // We will always leave the last bytes untouched - // so that string comparisons work. - char smaller_buffer[4] = {}; - - // empty buffer to read into - bytes_read = ReadCylicBufferWrapper(smaller_buffer, 0, cyclic_buffer, - sizeof(cyclic_buffer), 3, 0); - ASSERT_EQ(0u, bytes_read); - - // empty cyclic buffer - bytes_read = ReadCylicBufferWrapper(smaller_buffer, sizeof(smaller_buffer), - cyclic_buffer, 0, 3, 0); - ASSERT_EQ(0u, bytes_read); - - // bigger offset - bytes_read = - ReadCylicBufferWrapper(smaller_buffer, sizeof(smaller_buffer), - cyclic_buffer, sizeof(cyclic_buffer), 3, 6); - ASSERT_EQ(0u, bytes_read); - - // wrong offset - bytes_read = - ReadCylicBufferWrapper(smaller_buffer, sizeof(smaller_buffer), - cyclic_buffer, sizeof(cyclic_buffer), 3, 7); - ASSERT_EQ(0u, bytes_read); - - // wrong start - bytes_read = - ReadCylicBufferWrapper(smaller_buffer, sizeof(smaller_buffer), - cyclic_buffer, sizeof(cyclic_buffer), 3, 7); - ASSERT_EQ(0u, bytes_read); -} - -TEST(CyclicBuffer, EqualSizeBuffer) { - size_t bytes_read = 0; - uint8_t cyclic_buffer[6] = {'l', 'i', 'c', 'c', 'y', 'c'}; - - char cyclic[] = "cyclic"; - for (size_t i = 0; i < sizeof(cyclic); i++) { - // We will always leave the last bytes untouched - // so that string comparisons work. - char equal_size_buffer[7] = {}; - bytes_read = - ReadCylicBufferWrapper(equal_size_buffer, sizeof(cyclic_buffer), - cyclic_buffer, sizeof(cyclic_buffer), 3, i); - ASSERT_EQ((sizeof(cyclic) - i - 1), bytes_read); - ASSERT_STREQ(equal_size_buffer, (cyclic + i)); - } -} - -TEST(CyclicBuffer, SmallerSizeBuffer) { - size_t bytes_read; - uint8_t cyclic_buffer[6] = {'l', 'i', 'c', 'c', 'y', 'c'}; - - // We will always leave the last bytes untouched - // so that string comparisons work. - char smaller_buffer[4] = {}; - bytes_read = - ReadCylicBufferWrapper(smaller_buffer, (sizeof(smaller_buffer) - 1), - cyclic_buffer, sizeof(cyclic_buffer), 3, 0); - ASSERT_EQ(3u, bytes_read); - ASSERT_STREQ(smaller_buffer, "cyc"); - - bytes_read = - ReadCylicBufferWrapper(smaller_buffer, (sizeof(smaller_buffer) - 1), - cyclic_buffer, sizeof(cyclic_buffer), 3, 1); - ASSERT_EQ(3u, bytes_read); - ASSERT_STREQ(smaller_buffer, "ycl"); - - bytes_read = - ReadCylicBufferWrapper(smaller_buffer, (sizeof(smaller_buffer) - 1), - cyclic_buffer, sizeof(cyclic_buffer), 3, 2); - ASSERT_EQ(3u, bytes_read); - ASSERT_STREQ(smaller_buffer, "cli"); - - bytes_read = - ReadCylicBufferWrapper(smaller_buffer, (sizeof(smaller_buffer) - 1), - cyclic_buffer, sizeof(cyclic_buffer), 3, 3); - ASSERT_EQ(3u, bytes_read); - ASSERT_STREQ(smaller_buffer, "lic"); - - { - char smaller_buffer[4] = {}; - bytes_read = - ReadCylicBufferWrapper(smaller_buffer, (sizeof(smaller_buffer) - 1), - cyclic_buffer, sizeof(cyclic_buffer), 3, 4); - ASSERT_EQ(2u, bytes_read); - ASSERT_STREQ(smaller_buffer, "ic"); - } - { - char smaller_buffer[4] = {}; - bytes_read = - ReadCylicBufferWrapper(smaller_buffer, (sizeof(smaller_buffer) - 1), - cyclic_buffer, sizeof(cyclic_buffer), 3, 5); - ASSERT_EQ(1u, bytes_read); - ASSERT_STREQ(smaller_buffer, "c"); - } -} - -TEST(CyclicBuffer, BiggerSizeBuffer) { - size_t bytes_read = 0; - uint8_t cyclic_buffer[6] = {'l', 'i', 'c', 'c', 'y', 'c'}; - - char cyclic[] = "cyclic"; - for (size_t i = 0; i < sizeof(cyclic); i++) { - // We will always leave the last bytes untouched - // so that string comparisons work. - char bigger_buffer[10] = {}; - bytes_read = - ReadCylicBufferWrapper(bigger_buffer, (sizeof(bigger_buffer) - 1), - cyclic_buffer, sizeof(cyclic_buffer), 3, i); - ASSERT_EQ((sizeof(cyclic) - i - 1), bytes_read); - ASSERT_STREQ(bigger_buffer, (cyclic + i)); - } -} diff --git a/gnu/llvm/lldb/unittests/Process/POSIX/CMakeLists.txt b/gnu/llvm/lldb/unittests/Process/POSIX/CMakeLists.txt deleted file mode 100644 index 9d12495dd3e..00000000000 --- a/gnu/llvm/lldb/unittests/Process/POSIX/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -add_lldb_unittest(ProcessPOSIXTests - NativeProcessELFTest.cpp - - LINK_LIBS - lldbPluginProcessPOSIX - ) - -target_include_directories(ProcessPOSIXTests PRIVATE - ${LLDB_SOURCE_DIR}/source/Plugins/Process/POSIX) diff --git a/gnu/llvm/lldb/unittests/Process/POSIX/NativeProcessELFTest.cpp b/gnu/llvm/lldb/unittests/Process/POSIX/NativeProcessELFTest.cpp deleted file mode 100644 index 19163aeac69..00000000000 --- a/gnu/llvm/lldb/unittests/Process/POSIX/NativeProcessELFTest.cpp +++ /dev/null @@ -1,155 +0,0 @@ -//===-- NativeProcessELFTest.cpp ------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestingSupport/Host/NativeProcessTestUtils.h" - -#include "Plugins/Process/POSIX/NativeProcessELF.h" -#include "Plugins/Process/Utility/AuxVector.h" -#include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/DataEncoder.h" -#include "lldb/Utility/DataExtractor.h" -#include "llvm/BinaryFormat/ELF.h" -#include "llvm/Support/MemoryBuffer.h" - -#include "gmock/gmock.h" - -using namespace lldb_private; -using namespace lldb; -using namespace testing; - -namespace { -class MockProcessELF : public MockProcess { -public: - using MockProcess::MockProcess; - using NativeProcessELF::GetAuxValue; - using NativeProcessELF::GetELFImageInfoAddress; -}; - -std::unique_ptr CreateAuxvData( - MockProcessELF &process, - llvm::ArrayRef> auxv_data) { - auto addr_size = process.GetAddressByteSize(); - DataBufferSP buffer_sp( - new DataBufferHeap(auxv_data.size() * addr_size * 2, 0)); - DataEncoder encoder(buffer_sp, process.GetByteOrder(), addr_size); - uint32_t offset = 0; - for (auto &pair : auxv_data) { - offset = encoder.PutAddress(offset, pair.first); - offset = encoder.PutAddress(offset, pair.second); - } - return llvm::MemoryBuffer::getMemBufferCopy( - llvm::toStringRef(buffer_sp->GetData()), ""); -} - -} // namespace - -TEST(NativeProcessELFTest, GetAuxValue) { - NiceMock DummyDelegate; - MockProcessELF process(DummyDelegate, ArchSpec("i386-pc-linux")); - - uint64_t phdr_addr = 0x42; - auto auxv_buffer = CreateAuxvData( - process, {std::make_pair(AuxVector::AUXV_AT_PHDR, phdr_addr)}); - EXPECT_CALL(process, GetAuxvData()) - .WillOnce(Return(ByMove(std::move(auxv_buffer)))); - - ASSERT_EQ(phdr_addr, process.GetAuxValue(AuxVector::AUXV_AT_PHDR)); -} - -TEST(NativeProcessELFTest, GetELFImageInfoAddress) { - NiceMock DummyDelegate; - MockProcessELF process(DummyDelegate, ArchSpec("i386-pc-linux")); - - uint32_t load_base = 0x1000; - uint32_t info_addr = 0x3741; - uint32_t phdr_addr = load_base + sizeof(llvm::ELF::Elf32_Ehdr); - - auto auxv_buffer = CreateAuxvData( - process, - {std::make_pair(AuxVector::AUXV_AT_PHDR, phdr_addr), - std::make_pair(AuxVector::AUXV_AT_PHENT, sizeof(llvm::ELF::Elf32_Phdr)), - std::make_pair(AuxVector::AUXV_AT_PHNUM, 2)}); - EXPECT_CALL(process, GetAuxvData()) - .WillOnce(Return(ByMove(std::move(auxv_buffer)))); - - // We're going to set up a fake memory with 2 program headers and 1 entry in - // the dynamic section. For simplicity sake they will be contiguous in memory. - struct MemoryContents { - llvm::ELF::Elf32_Phdr phdr_load; - llvm::ELF::Elf32_Phdr phdr_dynamic; - llvm::ELF::Elf32_Dyn dyn_debug; - } MC; - // Setup the 2 program header entries - MC.phdr_load.p_type = llvm::ELF::PT_PHDR; - MC.phdr_load.p_vaddr = phdr_addr - load_base; - - MC.phdr_dynamic.p_type = llvm::ELF::PT_DYNAMIC; - MC.phdr_dynamic.p_vaddr = - (phdr_addr + 2 * sizeof(llvm::ELF::Elf32_Phdr)) - load_base; - MC.phdr_dynamic.p_memsz = sizeof(llvm::ELF::Elf32_Dyn); - - // Setup the single entry in the .dynamic section - MC.dyn_debug.d_tag = llvm::ELF::DT_DEBUG; - MC.dyn_debug.d_un.d_ptr = info_addr; - - FakeMemory M(&MC, sizeof(MC), phdr_addr); - EXPECT_CALL(process, ReadMemory(_, _)) - .WillRepeatedly(Invoke(&M, &FakeMemory::Read)); - - lldb::addr_t elf_info_addr = process.GetELFImageInfoAddress< - llvm::ELF::Elf32_Ehdr, llvm::ELF::Elf32_Phdr, llvm::ELF::Elf32_Dyn>(); - - // Read the address at the elf_info_addr location to make sure we're reading - // the correct one. - lldb::offset_t info_addr_offset = elf_info_addr - phdr_addr; - DataExtractor mem_extractor(&MC, sizeof(MC), process.GetByteOrder(), - process.GetAddressByteSize()); - ASSERT_EQ(mem_extractor.GetAddress(&info_addr_offset), info_addr); -} - -TEST(NativeProcessELFTest, GetELFImageInfoAddress_NoDebugEntry) { - NiceMock DummyDelegate; - MockProcessELF process(DummyDelegate, ArchSpec("i386-pc-linux")); - - uint32_t phdr_addr = sizeof(llvm::ELF::Elf32_Ehdr); - - auto auxv_buffer = CreateAuxvData( - process, - {std::make_pair(AuxVector::AUXV_AT_PHDR, phdr_addr), - std::make_pair(AuxVector::AUXV_AT_PHENT, sizeof(llvm::ELF::Elf32_Phdr)), - std::make_pair(AuxVector::AUXV_AT_PHNUM, 2)}); - EXPECT_CALL(process, GetAuxvData()) - .WillOnce(Return(ByMove(std::move(auxv_buffer)))); - - // We're going to set up a fake memory with 2 program headers and 1 entry in - // the dynamic section. For simplicity sake they will be contiguous in memory. - struct MemoryContents { - llvm::ELF::Elf32_Phdr phdr_load; - llvm::ELF::Elf32_Phdr phdr_dynamic; - llvm::ELF::Elf32_Dyn dyn_notdebug; - } MC; - // Setup the 2 program header entries - MC.phdr_load.p_type = llvm::ELF::PT_PHDR; - MC.phdr_load.p_vaddr = phdr_addr; - - MC.phdr_dynamic.p_type = llvm::ELF::PT_DYNAMIC; - MC.phdr_dynamic.p_vaddr = (phdr_addr + 2 * sizeof(llvm::ELF::Elf32_Phdr)); - MC.phdr_dynamic.p_memsz = sizeof(llvm::ELF::Elf32_Dyn); - - // Setup the single entry in the .dynamic section - MC.dyn_notdebug.d_tag = llvm::ELF::DT_NULL; - - FakeMemory M(&MC, sizeof(MC), phdr_addr); - EXPECT_CALL(process, ReadMemory(_, _)) - .WillRepeatedly(Invoke(&M, &FakeMemory::Read)); - - lldb::addr_t elf_info_addr = process.GetELFImageInfoAddress< - llvm::ELF::Elf32_Ehdr, llvm::ELF::Elf32_Phdr, llvm::ELF::Elf32_Dyn>(); - - ASSERT_EQ(elf_info_addr, LLDB_INVALID_ADDRESS); -} diff --git a/gnu/llvm/lldb/unittests/Process/ProcessEventDataTest.cpp b/gnu/llvm/lldb/unittests/Process/ProcessEventDataTest.cpp deleted file mode 100644 index 8827384ed0a..00000000000 --- a/gnu/llvm/lldb/unittests/Process/ProcessEventDataTest.cpp +++ /dev/null @@ -1,252 +0,0 @@ -//===-- ProcessEventDataTest.cpp ------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/Platform/MacOSX/PlatformMacOSX.h" -#include "Plugins/Platform/MacOSX/PlatformRemoteMacOSX.h" -#include "lldb/Core/Debugger.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Target/Process.h" -#include "lldb/Target/StopInfo.h" -#include "lldb/Target/Thread.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/Event.h" -#include "lldb/Utility/Reproducer.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb_private::repro; -using namespace lldb; - -namespace { -class ProcessEventDataTest : public ::testing::Test { -public: - void SetUp() override { - llvm::cantFail(Reproducer::Initialize(ReproducerMode::Off, llvm::None)); - FileSystem::Initialize(); - HostInfo::Initialize(); - PlatformMacOSX::Initialize(); - } - void TearDown() override { - PlatformMacOSX::Terminate(); - HostInfo::Terminate(); - FileSystem::Terminate(); - Reproducer::Terminate(); - } -}; - -class DummyProcess : public Process { -public: - using Process::Process; - - bool CanDebug(lldb::TargetSP target, bool plugin_specified_by_name) override { - return true; - } - Status DoDestroy() override { return {}; } - void RefreshStateAfterStop() override {} - size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, - Status &error) override { - return 0; - } - bool DoUpdateThreadList(ThreadList &old_thread_list, - ThreadList &new_thread_list) override { - return false; - } - ConstString GetPluginName() override { return ConstString("Dummy"); } - uint32_t GetPluginVersion() override { return 0; } - - ProcessModID &GetModIDNonConstRef() { return m_mod_id; } -}; - -class DummyThread : public Thread { -public: - using Thread::Thread; - - ~DummyThread() override { DestroyThread(); } - - void RefreshStateAfterStop() override {} - - lldb::RegisterContextSP GetRegisterContext() override { return nullptr; } - - lldb::RegisterContextSP - CreateRegisterContextForFrame(StackFrame *frame) override { - return nullptr; - } - - bool CalculateStopInfo() override { return false; } -}; - -class DummyStopInfo : public StopInfo { -public: - DummyStopInfo(Thread &thread, uint64_t value) - : StopInfo(thread, value), m_should_stop(true), - m_stop_reason(eStopReasonBreakpoint) {} - - bool ShouldStop(Event *event_ptr) override { return m_should_stop; } - - StopReason GetStopReason() const override { return m_stop_reason; } - - bool m_should_stop; - StopReason m_stop_reason; -}; - -class DummyProcessEventData : public Process::ProcessEventData { -public: - DummyProcessEventData(ProcessSP &process_sp, StateType state) - : ProcessEventData(process_sp, state), m_should_stop_hit_count(0) {} - bool ShouldStop(Event *event_ptr, bool &found_valid_stopinfo) override { - m_should_stop_hit_count++; - return false; - } - - int m_should_stop_hit_count; -}; -} // namespace - -typedef std::shared_ptr ProcessEventDataSP; -typedef std::shared_ptr EventSP; - -TargetSP CreateTarget(DebuggerSP &debugger_sp, ArchSpec &arch) { - PlatformSP platform_sp; - TargetSP target_sp; - debugger_sp->GetTargetList().CreateTarget( - *debugger_sp, "", arch, eLoadDependentsNo, platform_sp, target_sp); - - return target_sp; -} - -ThreadSP CreateThread(ProcessSP &process_sp, bool should_stop, - bool has_valid_stopinfo) { - ThreadSP thread_sp = std::make_shared(*process_sp.get(), 0); - if (thread_sp == nullptr) { - return nullptr; - } - - if (has_valid_stopinfo) { - StopInfoSP stopinfo_sp = - std::make_shared(*thread_sp.get(), 0); - static_cast(stopinfo_sp.get())->m_should_stop = - should_stop; - if (stopinfo_sp == nullptr) { - return nullptr; - } - - thread_sp->SetStopInfo(stopinfo_sp); - } - - process_sp->GetThreadList().AddThread(thread_sp); - - return thread_sp; -} - -TEST_F(ProcessEventDataTest, DoOnRemoval) { - ArchSpec arch("x86_64-apple-macosx-"); - - Platform::SetHostPlatform(PlatformRemoteMacOSX::CreateInstance(true, &arch)); - - DebuggerSP debugger_sp = Debugger::CreateInstance(); - ASSERT_TRUE(debugger_sp); - - TargetSP target_sp = CreateTarget(debugger_sp, arch); - ASSERT_TRUE(target_sp); - - ListenerSP listener_sp(Listener::MakeListener("dummy")); - ProcessSP process_sp = std::make_shared(target_sp, listener_sp); - ASSERT_TRUE(process_sp); - - /* - Should hit ShouldStop if state is eStateStopped - */ - ProcessEventDataSP event_data_sp = - std::make_shared(process_sp, eStateStopped); - EventSP event_sp = std::make_shared(0, event_data_sp); - event_data_sp->SetUpdateStateOnRemoval(event_sp.get()); - event_data_sp->DoOnRemoval(event_sp.get()); - bool result = static_cast(event_data_sp.get()) - ->m_should_stop_hit_count == 1; - ASSERT_TRUE(result); - - /* - Should not hit ShouldStop if state is not eStateStopped - */ - event_data_sp = - std::make_shared(process_sp, eStateStepping); - event_sp = std::make_shared(0, event_data_sp); - event_data_sp->SetUpdateStateOnRemoval(event_sp.get()); - event_data_sp->DoOnRemoval(event_sp.get()); - result = static_cast(event_data_sp.get()) - ->m_should_stop_hit_count == 0; - ASSERT_TRUE(result); -} - -TEST_F(ProcessEventDataTest, ShouldStop) { - ArchSpec arch("x86_64-apple-macosx-"); - - Platform::SetHostPlatform(PlatformRemoteMacOSX::CreateInstance(true, &arch)); - - DebuggerSP debugger_sp = Debugger::CreateInstance(); - ASSERT_TRUE(debugger_sp); - - TargetSP target_sp = CreateTarget(debugger_sp, arch); - ASSERT_TRUE(target_sp); - - ListenerSP listener_sp(Listener::MakeListener("dummy")); - ProcessSP process_sp = std::make_shared(target_sp, listener_sp); - ASSERT_TRUE(process_sp); - - // wants to stop and has valid StopInfo - ThreadSP thread_sp = CreateThread(process_sp, true, true); - - ProcessEventDataSP event_data_sp = - std::make_shared(process_sp, eStateStopped); - EventSP event_sp = std::make_shared(0, event_data_sp); - /* - Should stop if thread has valid StopInfo and not suspended - */ - bool found_valid_stopinfo = false; - bool should_stop = - event_data_sp->ShouldStop(event_sp.get(), found_valid_stopinfo); - ASSERT_TRUE(should_stop == true && found_valid_stopinfo == true); - - /* - Should not stop if thread has valid StopInfo but was suspended - */ - found_valid_stopinfo = false; - thread_sp->SetResumeState(eStateSuspended); - should_stop = event_data_sp->ShouldStop(event_sp.get(), found_valid_stopinfo); - ASSERT_TRUE(should_stop == false && found_valid_stopinfo == false); - - /* - Should not stop, thread-reason of stop does not want to stop in its - callback and suspended thread who wants to (from previous stop) - must be ignored. - */ - event_data_sp = - std::make_shared(process_sp, eStateStopped); - event_sp = std::make_shared(0, event_data_sp); - process_sp->GetThreadList().Clear(); - - for (int i = 0; i < 6; i++) { - if (i == 2) { - // Does not want to stop but has valid StopInfo - thread_sp = CreateThread(process_sp, false, true); - } else if (i == 5) { - // Wants to stop and has valid StopInfo - thread_sp = CreateThread(process_sp, true, true); - thread_sp->SetResumeState(eStateSuspended); - } else { - // Thread has no StopInfo i.e is not the reason of stop - thread_sp = CreateThread(process_sp, false, false); - } - } - ASSERT_TRUE(process_sp->GetThreadList().GetSize() == 6); - - found_valid_stopinfo = false; - should_stop = event_data_sp->ShouldStop(event_sp.get(), found_valid_stopinfo); - ASSERT_TRUE(should_stop == false && found_valid_stopinfo == true); -} diff --git a/gnu/llvm/lldb/unittests/Process/Utility/CMakeLists.txt b/gnu/llvm/lldb/unittests/Process/Utility/CMakeLists.txt deleted file mode 100644 index 95b65cef6a4..00000000000 --- a/gnu/llvm/lldb/unittests/Process/Utility/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -set(FREEBSD_SOURCES - RegisterContextFreeBSDTest.cpp) -set(NETBSD_SOURCES - RegisterContextNetBSDTest_i386.cpp - RegisterContextNetBSDTest_x86_64.cpp) - -if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - list(APPEND PLATFORM_SOURCES ${FREEBSD_SOURCES}) -elseif (CMAKE_SYSTEM_NAME MATCHES "NetBSD") - list(APPEND PLATFORM_SOURCES ${NETBSD_SOURCES}) -endif() - -set(LLVM_OPTIONAL_SOURCES - ${FREEBSD_SOURCES} - ${NETBSD_SOURCES}) - -add_lldb_unittest(ProcessUtilityTests - RegisterContextTest.cpp - LinuxProcMapsTest.cpp - MemoryTagManagerAArch64MTETest.cpp - ${PLATFORM_SOURCES} - - LINK_LIBS - lldbPluginProcessUtility - LLVMTestingSupport) diff --git a/gnu/llvm/lldb/unittests/Process/Utility/LinuxProcMapsTest.cpp b/gnu/llvm/lldb/unittests/Process/Utility/LinuxProcMapsTest.cpp deleted file mode 100644 index 66db61ff659..00000000000 --- a/gnu/llvm/lldb/unittests/Process/Utility/LinuxProcMapsTest.cpp +++ /dev/null @@ -1,262 +0,0 @@ -//===-- LinuxProcMapsTest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "Plugins/Process/Utility/LinuxProcMaps.h" -#include "lldb/Target/MemoryRegionInfo.h" -#include "lldb/Utility/Status.h" -#include - -using namespace lldb_private; - -typedef std::tuple - LinuxProcMapsTestParams; - -// Wrapper for convenience because Range is usually begin, size -static MemoryRegionInfo::RangeType make_range(lldb::addr_t begin, - lldb::addr_t end) { - MemoryRegionInfo::RangeType range(begin, 0); - range.SetRangeEnd(end); - return range; -} - -class LinuxProcMapsTestFixture - : public ::testing::TestWithParam { -protected: - Status error; - std::string err_str; - MemoryRegionInfos regions; - LinuxMapCallback callback; - - void SetUp() override { - callback = [this](llvm::Expected Info) { - if (Info) { - err_str.clear(); - regions.push_back(*Info); - return true; - } - - err_str = toString(Info.takeError()); - return false; - }; - } - - void check_regions(LinuxProcMapsTestParams params) { - EXPECT_THAT(std::get<1>(params), testing::ContainerEq(regions)); - ASSERT_EQ(std::get<2>(params), err_str); - } -}; - -TEST_P(LinuxProcMapsTestFixture, ParseMapRegions) { - auto params = GetParam(); - ParseLinuxMapRegions(std::get<0>(params), callback); - check_regions(params); -} - -// Note: ConstString("") != ConstString(nullptr) -// When a region has no name, it will have the latter in the MemoryRegionInfo -INSTANTIATE_TEST_SUITE_P( - ProcMapTests, LinuxProcMapsTestFixture, - ::testing::Values( - // Nothing in nothing out - std::make_tuple("", MemoryRegionInfos{}, ""), - // Various formatting error conditions - std::make_tuple("55a4512f7000/55a451b68000 rw-p 00000000 00:00 0", - MemoryRegionInfos{}, - "malformed /proc/{pid}/maps entry, missing dash " - "between address range"), - std::make_tuple("0-0 rw", MemoryRegionInfos{}, - "malformed /proc/{pid}/maps entry, missing some " - "portion of permissions"), - std::make_tuple("0-0 z--p 00000000 00:00 0", MemoryRegionInfos{}, - "unexpected /proc/{pid}/maps read permission char"), - std::make_tuple("0-0 rz-p 00000000 00:00 0", MemoryRegionInfos{}, - "unexpected /proc/{pid}/maps write permission char"), - std::make_tuple("0-0 rwzp 00000000 00:00 0", MemoryRegionInfos{}, - "unexpected /proc/{pid}/maps exec permission char"), - // Stops at first parsing error - std::make_tuple( - "0-1 rw-p 00000000 00:00 0 [abc]\n" - "0-0 rwzp 00000000 00:00 0\n" - "2-3 r-xp 00000000 00:00 0 [def]\n", - MemoryRegionInfos{ - MemoryRegionInfo(make_range(0, 1), MemoryRegionInfo::eYes, - MemoryRegionInfo::eYes, MemoryRegionInfo::eNo, - MemoryRegionInfo::eYes, ConstString("[abc]"), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eDontKnow), - }, - "unexpected /proc/{pid}/maps exec permission char"), - // Single entry - std::make_tuple( - "55a4512f7000-55a451b68000 rw-p 00000000 00:00 0 [heap]", - MemoryRegionInfos{ - MemoryRegionInfo(make_range(0x55a4512f7000, 0x55a451b68000), - MemoryRegionInfo::eYes, MemoryRegionInfo::eYes, - MemoryRegionInfo::eNo, MemoryRegionInfo::eYes, - ConstString("[heap]"), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eDontKnow), - }, - ""), - // Multiple entries - std::make_tuple( - "7fc090021000-7fc094000000 ---p 00000000 00:00 0\n" - "ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 " - "[vsyscall]", - MemoryRegionInfos{ - MemoryRegionInfo(make_range(0x7fc090021000, 0x7fc094000000), - MemoryRegionInfo::eNo, MemoryRegionInfo::eNo, - MemoryRegionInfo::eNo, MemoryRegionInfo::eYes, - ConstString(nullptr), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eDontKnow), - MemoryRegionInfo( - make_range(0xffffffffff600000, 0xffffffffff601000), - MemoryRegionInfo::eYes, MemoryRegionInfo::eNo, - MemoryRegionInfo::eYes, MemoryRegionInfo::eYes, - ConstString("[vsyscall]"), MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eDontKnow), - }, - ""))); - -class LinuxProcSMapsTestFixture : public LinuxProcMapsTestFixture {}; - -INSTANTIATE_TEST_SUITE_P( - ProcSMapTests, LinuxProcSMapsTestFixture, - ::testing::Values( - // Nothing in nothing out - std::make_tuple("", MemoryRegionInfos{}, ""), - // Uses the same parsing for first line, so same errors but referring to - // smaps - std::make_tuple("0/0 rw-p 00000000 00:00 0", MemoryRegionInfos{}, - "malformed /proc/{pid}/smaps entry, missing dash " - "between address range"), - // Stop parsing at first error - std::make_tuple( - "1111-2222 rw-p 00000000 00:00 0 [foo]\n" - "0/0 rw-p 00000000 00:00 0", - MemoryRegionInfos{ - MemoryRegionInfo(make_range(0x1111, 0x2222), - MemoryRegionInfo::eYes, MemoryRegionInfo::eYes, - MemoryRegionInfo::eNo, MemoryRegionInfo::eYes, - ConstString("[foo]"), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eDontKnow), - }, - "malformed /proc/{pid}/smaps entry, missing dash between address " - "range"), - // Property line without a region is an error - std::make_tuple("Referenced: 2188 kB\n" - "1111-2222 rw-p 00000000 00:00 0 [foo]\n" - "3333-4444 rw-p 00000000 00:00 0 [bar]\n", - MemoryRegionInfos{}, - "Found a property line without a corresponding mapping " - "in /proc/{pid}/smaps"), - // Single region parses, has no flags - std::make_tuple( - "1111-2222 rw-p 00000000 00:00 0 [foo]", - MemoryRegionInfos{ - MemoryRegionInfo(make_range(0x1111, 0x2222), - MemoryRegionInfo::eYes, MemoryRegionInfo::eYes, - MemoryRegionInfo::eNo, MemoryRegionInfo::eYes, - ConstString("[foo]"), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eDontKnow), - }, - ""), - // Single region with flags, other lines ignored - std::make_tuple( - "1111-2222 rw-p 00000000 00:00 0 [foo]\n" - "Referenced: 2188 kB\n" - "AnonHugePages: 0 kB\n" - "VmFlags: mt", - MemoryRegionInfos{ - MemoryRegionInfo( - make_range(0x1111, 0x2222), MemoryRegionInfo::eYes, - MemoryRegionInfo::eYes, MemoryRegionInfo::eNo, - MemoryRegionInfo::eYes, ConstString("[foo]"), - MemoryRegionInfo::eDontKnow, 0, MemoryRegionInfo::eYes), - }, - ""), - // Whitespace ignored - std::make_tuple( - "0-0 rw-p 00000000 00:00 0\n" - "VmFlags: mt ", - MemoryRegionInfos{ - MemoryRegionInfo(make_range(0, 0), MemoryRegionInfo::eYes, - MemoryRegionInfo::eYes, MemoryRegionInfo::eNo, - MemoryRegionInfo::eYes, ConstString(nullptr), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eYes), - }, - ""), - // VmFlags line means it has flag info, but nothing is set - std::make_tuple( - "0-0 rw-p 00000000 00:00 0\n" - "VmFlags: ", - MemoryRegionInfos{ - MemoryRegionInfo(make_range(0, 0), MemoryRegionInfo::eYes, - MemoryRegionInfo::eYes, MemoryRegionInfo::eNo, - MemoryRegionInfo::eYes, ConstString(nullptr), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eNo), - }, - ""), - // Handle some pages not having a flags line - std::make_tuple( - "1111-2222 rw-p 00000000 00:00 0 [foo]\n" - "Referenced: 2188 kB\n" - "AnonHugePages: 0 kB\n" - "3333-4444 r-xp 00000000 00:00 0 [bar]\n" - "VmFlags: mt", - MemoryRegionInfos{ - MemoryRegionInfo(make_range(0x1111, 0x2222), - MemoryRegionInfo::eYes, MemoryRegionInfo::eYes, - MemoryRegionInfo::eNo, MemoryRegionInfo::eYes, - ConstString("[foo]"), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eDontKnow), - MemoryRegionInfo( - make_range(0x3333, 0x4444), MemoryRegionInfo::eYes, - MemoryRegionInfo::eNo, MemoryRegionInfo::eYes, - MemoryRegionInfo::eYes, ConstString("[bar]"), - MemoryRegionInfo::eDontKnow, 0, MemoryRegionInfo::eYes), - }, - ""), - // Handle no pages having a flags line (older kernels) - std::make_tuple( - "1111-2222 rw-p 00000000 00:00 0\n" - "Referenced: 2188 kB\n" - "AnonHugePages: 0 kB\n" - "3333-4444 r-xp 00000000 00:00 0\n" - "KernelPageSize: 4 kB\n" - "MMUPageSize: 4 kB\n", - MemoryRegionInfos{ - MemoryRegionInfo(make_range(0x1111, 0x2222), - MemoryRegionInfo::eYes, MemoryRegionInfo::eYes, - MemoryRegionInfo::eNo, MemoryRegionInfo::eYes, - ConstString(nullptr), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eDontKnow), - MemoryRegionInfo(make_range(0x3333, 0x4444), - MemoryRegionInfo::eYes, MemoryRegionInfo::eNo, - MemoryRegionInfo::eYes, MemoryRegionInfo::eYes, - ConstString(nullptr), - MemoryRegionInfo::eDontKnow, 0, - MemoryRegionInfo::eDontKnow), - }, - ""))); - -TEST_P(LinuxProcSMapsTestFixture, ParseSMapRegions) { - auto params = GetParam(); - ParseLinuxSMapRegions(std::get<0>(params), callback); - check_regions(params); -} diff --git a/gnu/llvm/lldb/unittests/Process/Utility/MemoryTagManagerAArch64MTETest.cpp b/gnu/llvm/lldb/unittests/Process/Utility/MemoryTagManagerAArch64MTETest.cpp deleted file mode 100644 index 128dac7a21c..00000000000 --- a/gnu/llvm/lldb/unittests/Process/Utility/MemoryTagManagerAArch64MTETest.cpp +++ /dev/null @@ -1,322 +0,0 @@ -//===-- MemoryTagManagerAArch64MTETest.cpp --------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/Process/Utility/MemoryTagManagerAArch64MTE.h" -#include "llvm/Testing/Support/Error.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(MemoryTagManagerAArch64MTETest, UnpackTagsData) { - MemoryTagManagerAArch64MTE manager; - - // Error for insufficient tag data - std::vector input; - ASSERT_THAT_EXPECTED( - manager.UnpackTagsData(input, 2), - llvm::FailedWithMessage( - "Packed tag data size does not match expected number of tags. " - "Expected 2 tag(s) for 2 granule(s), got 0 tag(s).")); - - // This is out of the valid tag range - input.push_back(0x1f); - ASSERT_THAT_EXPECTED( - manager.UnpackTagsData(input, 1), - llvm::FailedWithMessage( - "Found tag 0x1f which is > max MTE tag value of 0xf.")); - - // MTE tags are 1 per byte - input.pop_back(); - input.push_back(0xe); - input.push_back(0xf); - - std::vector expected{0xe, 0xf}; - - llvm::Expected> got = - manager.UnpackTagsData(input, 2); - ASSERT_THAT_EXPECTED(got, llvm::Succeeded()); - ASSERT_THAT(expected, testing::ContainerEq(*got)); - - // Error for too much tag data - ASSERT_THAT_EXPECTED( - manager.UnpackTagsData(input, 1), - llvm::FailedWithMessage( - "Packed tag data size does not match expected number of tags. " - "Expected 1 tag(s) for 1 granule(s), got 2 tag(s).")); - - // By default, we don't check number of tags - llvm::Expected> got_zero = - manager.UnpackTagsData(input); - ASSERT_THAT_EXPECTED(got_zero, llvm::Succeeded()); - ASSERT_THAT(expected, testing::ContainerEq(*got)); - - // Which is the same as granules=0 - got_zero = manager.UnpackTagsData(input, 0); - ASSERT_THAT_EXPECTED(got_zero, llvm::Succeeded()); - ASSERT_THAT(expected, testing::ContainerEq(*got)); -} - -TEST(MemoryTagManagerAArch64MTETest, PackTags) { - MemoryTagManagerAArch64MTE manager; - - // Error for tag out of range - llvm::Expected> invalid_tag_err = - manager.PackTags({0x10}); - ASSERT_THAT_EXPECTED( - invalid_tag_err, - llvm::FailedWithMessage( - "Found tag 0x10 which is > max MTE tag value of 0xf.")); - - // 0xf here is the max tag value that we can pack - std::vector tags{0, 1, 0xf}; - std::vector expected{0, 1, 0xf}; - llvm::Expected> packed = manager.PackTags(tags); - ASSERT_THAT_EXPECTED(packed, llvm::Succeeded()); - ASSERT_THAT(expected, testing::ContainerEq(*packed)); -} - -TEST(MemoryTagManagerAArch64MTETest, GetLogicalTag) { - MemoryTagManagerAArch64MTE manager; - - // Set surrounding bits to check shift is correct - ASSERT_EQ((lldb::addr_t)0, manager.GetLogicalTag(0xe0e00000ffffffff)); - // Max tag value - ASSERT_EQ((lldb::addr_t)0xf, manager.GetLogicalTag(0x0f000000ffffffff)); - ASSERT_EQ((lldb::addr_t)2, manager.GetLogicalTag(0x02000000ffffffff)); -} - -TEST(MemoryTagManagerAArch64MTETest, ExpandToGranule) { - MemoryTagManagerAArch64MTE manager; - // Reading nothing, no alignment needed - ASSERT_EQ( - MemoryTagManagerAArch64MTE::TagRange(0, 0), - manager.ExpandToGranule(MemoryTagManagerAArch64MTE::TagRange(0, 0))); - - // Ranges with 0 size are unchanged even if address is non 0 - // (normally 0x1234 would be aligned to 0x1230) - ASSERT_EQ( - MemoryTagManagerAArch64MTE::TagRange(0x1234, 0), - manager.ExpandToGranule(MemoryTagManagerAArch64MTE::TagRange(0x1234, 0))); - - // Ranges already aligned don't change - ASSERT_EQ( - MemoryTagManagerAArch64MTE::TagRange(0x100, 64), - manager.ExpandToGranule(MemoryTagManagerAArch64MTE::TagRange(0x100, 64))); - - // Any read of less than 1 granule is rounded up to reading 1 granule - ASSERT_EQ( - MemoryTagManagerAArch64MTE::TagRange(0, 16), - manager.ExpandToGranule(MemoryTagManagerAArch64MTE::TagRange(0, 1))); - - // Start address is aligned down, and length modified accordingly - // Here bytes 8 through 24 straddle 2 granules. So the resulting range starts - // at 0 and covers 32 bytes. - ASSERT_EQ( - MemoryTagManagerAArch64MTE::TagRange(0, 32), - manager.ExpandToGranule(MemoryTagManagerAArch64MTE::TagRange(8, 16))); - - // Here only the size of the range needs aligning - ASSERT_EQ( - MemoryTagManagerAArch64MTE::TagRange(16, 32), - manager.ExpandToGranule(MemoryTagManagerAArch64MTE::TagRange(16, 24))); - - // Start and size need aligning here but we only need 1 granule to cover it - ASSERT_EQ( - MemoryTagManagerAArch64MTE::TagRange(16, 16), - manager.ExpandToGranule(MemoryTagManagerAArch64MTE::TagRange(18, 4))); -} - -static MemoryRegionInfo MakeRegionInfo(lldb::addr_t base, lldb::addr_t size, - bool tagged) { - return MemoryRegionInfo( - MemoryRegionInfo::RangeType(base, size), MemoryRegionInfo::eYes, - MemoryRegionInfo::eYes, MemoryRegionInfo::eYes, MemoryRegionInfo::eYes, - ConstString(), MemoryRegionInfo::eNo, 0, - /*memory_tagged=*/ - tagged ? MemoryRegionInfo::eYes : MemoryRegionInfo::eNo); -} - -TEST(MemoryTagManagerAArch64MTETest, MakeTaggedRange) { - MemoryTagManagerAArch64MTE manager; - MemoryRegionInfos memory_regions; - - // No regions means no tagged regions, error - ASSERT_THAT_EXPECTED( - manager.MakeTaggedRange(0, 0x10, memory_regions), - llvm::FailedWithMessage( - "Address range 0x0:0x10 is not in a memory tagged region")); - - // Alignment is done before checking regions. - // Here 1 is rounded up to the granule size of 0x10. - ASSERT_THAT_EXPECTED( - manager.MakeTaggedRange(0, 1, memory_regions), - llvm::FailedWithMessage( - "Address range 0x0:0x10 is not in a memory tagged region")); - - // Range must not be inverted - ASSERT_THAT_EXPECTED( - manager.MakeTaggedRange(1, 0, memory_regions), - llvm::FailedWithMessage( - "End address (0x0) must be greater than the start address (0x1)")); - - // Adding a single region to cover the whole range - memory_regions.push_back(MakeRegionInfo(0, 0x1000, true)); - - // Range can have different tags for begin and end - // (which would make it look inverted if we didn't remove them) - // Note that range comes back with an untagged base and alginment - // applied. - MemoryTagManagerAArch64MTE::TagRange expected_range(0x0, 0x10); - llvm::Expected got = - manager.MakeTaggedRange(0x0f00000000000000, 0x0e00000000000001, - memory_regions); - ASSERT_THAT_EXPECTED(got, llvm::Succeeded()); - ASSERT_EQ(*got, expected_range); - - // Error if the range isn't within any region - ASSERT_THAT_EXPECTED( - manager.MakeTaggedRange(0x1000, 0x1010, memory_regions), - llvm::FailedWithMessage( - "Address range 0x1000:0x1010 is not in a memory tagged region")); - - // Error if the first part of a range isn't tagged - memory_regions.clear(); - const char *err_msg = - "Address range 0x0:0x1000 is not in a memory tagged region"; - - // First because it has no region entry - memory_regions.push_back(MakeRegionInfo(0x10, 0x1000, true)); - ASSERT_THAT_EXPECTED(manager.MakeTaggedRange(0, 0x1000, memory_regions), - llvm::FailedWithMessage(err_msg)); - - // Then because the first region is untagged - memory_regions.push_back(MakeRegionInfo(0, 0x10, false)); - ASSERT_THAT_EXPECTED(manager.MakeTaggedRange(0, 0x1000, memory_regions), - llvm::FailedWithMessage(err_msg)); - - // If we tag that first part it succeeds - memory_regions.back().SetMemoryTagged(MemoryRegionInfo::eYes); - expected_range = MemoryTagManagerAArch64MTE::TagRange(0x0, 0x1000); - got = manager.MakeTaggedRange(0, 0x1000, memory_regions); - ASSERT_THAT_EXPECTED(got, llvm::Succeeded()); - ASSERT_EQ(*got, expected_range); - - // Error if the end of a range is untagged - memory_regions.clear(); - - // First because it has no region entry - memory_regions.push_back(MakeRegionInfo(0, 0xF00, true)); - ASSERT_THAT_EXPECTED(manager.MakeTaggedRange(0, 0x1000, memory_regions), - llvm::FailedWithMessage(err_msg)); - - // Then because the last region is untagged - memory_regions.push_back(MakeRegionInfo(0xF00, 0x100, false)); - ASSERT_THAT_EXPECTED(manager.MakeTaggedRange(0, 0x1000, memory_regions), - llvm::FailedWithMessage(err_msg)); - - // If we tag the last part it succeeds - memory_regions.back().SetMemoryTagged(MemoryRegionInfo::eYes); - got = manager.MakeTaggedRange(0, 0x1000, memory_regions); - ASSERT_THAT_EXPECTED(got, llvm::Succeeded()); - ASSERT_EQ(*got, expected_range); - - // Error if the middle of a range is untagged - memory_regions.clear(); - - // First because it has no entry - memory_regions.push_back(MakeRegionInfo(0, 0x500, true)); - memory_regions.push_back(MakeRegionInfo(0x900, 0x700, true)); - ASSERT_THAT_EXPECTED(manager.MakeTaggedRange(0, 0x1000, memory_regions), - llvm::FailedWithMessage(err_msg)); - - // Then because it's untagged - memory_regions.push_back(MakeRegionInfo(0x500, 0x400, false)); - ASSERT_THAT_EXPECTED(manager.MakeTaggedRange(0, 0x1000, memory_regions), - llvm::FailedWithMessage(err_msg)); - - // If we tag the middle part it succeeds - memory_regions.back().SetMemoryTagged(MemoryRegionInfo::eYes); - got = manager.MakeTaggedRange(0, 0x1000, memory_regions); - ASSERT_THAT_EXPECTED(got, llvm::Succeeded()); - ASSERT_EQ(*got, expected_range); -} - -TEST(MemoryTagManagerAArch64MTETest, RemoveNonAddressBits) { - MemoryTagManagerAArch64MTE manager; - - ASSERT_EQ(0, 0); - ASSERT_EQ((lldb::addr_t)0x00ffeedd11223344, - manager.RemoveNonAddressBits(0x00ffeedd11223344)); - ASSERT_EQ((lldb::addr_t)0x0000000000000000, - manager.RemoveNonAddressBits(0xFF00000000000000)); - ASSERT_EQ((lldb::addr_t)0x0055555566666666, - manager.RemoveNonAddressBits(0xee55555566666666)); -} - -TEST(MemoryTagManagerAArch64MTETest, AddressDiff) { - MemoryTagManagerAArch64MTE manager; - - ASSERT_EQ(0, manager.AddressDiff(0, 0)); - // Result is signed - ASSERT_EQ(10, manager.AddressDiff(10, 0)); - ASSERT_EQ(-10, manager.AddressDiff(0, 10)); - // Anything in the top byte is ignored - ASSERT_EQ(0, manager.AddressDiff(0x2211222233334444, 0x3311222233334444)); - ASSERT_EQ(-32, manager.AddressDiff(0x5511222233334400, 0x4411222233334420)); - ASSERT_EQ(65, manager.AddressDiff(0x9911222233334441, 0x6611222233334400)); -} - -// Helper to check that repeating "tags" over "range" gives you -// "expected_tags". -static void -test_repeating_tags(const std::vector &tags, - MemoryTagManagerAArch64MTE::TagRange range, - const std::vector &expected_tags) { - MemoryTagManagerAArch64MTE manager; - llvm::Expected> tags_or_err = - manager.RepeatTagsForRange(tags, range); - ASSERT_THAT_EXPECTED(tags_or_err, llvm::Succeeded()); - ASSERT_THAT(expected_tags, testing::ContainerEq(*tags_or_err)); -} - -TEST(MemoryTagManagerAArch64MTETest, RepeatTagsForRange) { - MemoryTagManagerAArch64MTE manager; - - // Must have some tags if your range is not empty - llvm::Expected> no_tags_err = - manager.RepeatTagsForRange({}, - MemoryTagManagerAArch64MTE::TagRange{0, 16}); - ASSERT_THAT_EXPECTED( - no_tags_err, llvm::FailedWithMessage( - "Expected some tags to cover given range, got zero.")); - - // If the range is empty, you get no tags back - test_repeating_tags({1, 2, 3}, MemoryTagManagerAArch64MTE::TagRange{0, 0}, - {}); - // And you don't need tags for an empty range - test_repeating_tags({}, MemoryTagManagerAArch64MTE::TagRange{0, 0}, {}); - - // A single tag will just be multiplied as many times as needed - test_repeating_tags({5}, MemoryTagManagerAArch64MTE::TagRange{0, 16}, {5}); - test_repeating_tags({6}, MemoryTagManagerAArch64MTE::TagRange{0, 32}, {6, 6}); - - // If you've got as many tags as granules, it's a roundtrip - test_repeating_tags({7, 8}, MemoryTagManagerAArch64MTE::TagRange{0, 32}, - {7, 8}); - - // If you've got fewer tags than granules, they repeat. Exactly or partially - // as needed. - test_repeating_tags({7, 8}, MemoryTagManagerAArch64MTE::TagRange{0, 64}, - {7, 8, 7, 8}); - test_repeating_tags({7, 8}, MemoryTagManagerAArch64MTE::TagRange{0, 48}, - {7, 8, 7}); - - // If you've got more tags than granules you get back only those needed - test_repeating_tags({1, 2, 3, 4}, MemoryTagManagerAArch64MTE::TagRange{0, 32}, - {1, 2}); -} diff --git a/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextFreeBSDTest.cpp b/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextFreeBSDTest.cpp deleted file mode 100644 index f14dc8faaea..00000000000 --- a/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextFreeBSDTest.cpp +++ /dev/null @@ -1,553 +0,0 @@ -//===-- RegisterContextFreeBSDTests.cpp -----------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// clang-format off -#include -#include -#if defined(__arm__) -#include -#endif -// clang-format on - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "Plugins/Process/Utility/RegisterContextFreeBSD_i386.h" -#include "Plugins/Process/Utility/RegisterContextFreeBSD_mips64.h" -#include "Plugins/Process/Utility/RegisterContextFreeBSD_powerpc.h" -#include "Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.h" -#include "Plugins/Process/Utility/RegisterContextPOSIX_powerpc.h" -#include "Plugins/Process/Utility/RegisterInfoPOSIX_arm.h" -#include "Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h" -#include "Plugins/Process/Utility/lldb-arm-register-enums.h" -#include "Plugins/Process/Utility/lldb-arm64-register-enums.h" -#include "Plugins/Process/Utility/lldb-mips-freebsd-register-enums.h" -#include "Plugins/Process/Utility/lldb-x86-register-enums.h" - -using namespace lldb; -using namespace lldb_private; - -std::pair GetRegParams(RegisterInfoInterface &ctx, - uint32_t reg) { - const RegisterInfo &info = ctx.GetRegisterInfo()[reg]; - return {info.byte_offset, info.byte_size}; -} - -#define EXPECT_OFF(regname, offset, size) \ - EXPECT_THAT(GetRegParams(reg_ctx, lldb_##regname), \ - ::testing::Pair(offset + base_offset, size)) - -#if defined(__x86_64__) - -#define EXPECT_GPR_X86_64(regname) \ - EXPECT_THAT( \ - GetRegParams(reg_ctx, lldb_##regname##_x86_64), \ - ::testing::Pair(offsetof(reg, r_##regname), sizeof(reg::r_##regname))) -#define EXPECT_DBR_X86_64(num) \ - EXPECT_OFF(dr##num##_x86_64, offsetof(dbreg, dr[num]), sizeof(dbreg::dr[num])) - -TEST(RegisterContextFreeBSDTest, x86_64) { - ArchSpec arch{"x86_64-unknown-freebsd"}; - RegisterContextFreeBSD_x86_64 reg_ctx{arch}; - - EXPECT_GPR_X86_64(r15); - EXPECT_GPR_X86_64(r14); - EXPECT_GPR_X86_64(r13); - EXPECT_GPR_X86_64(r12); - EXPECT_GPR_X86_64(r11); - EXPECT_GPR_X86_64(r10); - EXPECT_GPR_X86_64(r9); - EXPECT_GPR_X86_64(r8); - EXPECT_GPR_X86_64(rdi); - EXPECT_GPR_X86_64(rsi); - EXPECT_GPR_X86_64(rbp); - EXPECT_GPR_X86_64(rbx); - EXPECT_GPR_X86_64(rdx); - EXPECT_GPR_X86_64(rcx); - EXPECT_GPR_X86_64(rax); - EXPECT_GPR_X86_64(fs); - EXPECT_GPR_X86_64(gs); - EXPECT_GPR_X86_64(es); - EXPECT_GPR_X86_64(ds); - EXPECT_GPR_X86_64(rip); - EXPECT_GPR_X86_64(cs); - EXPECT_GPR_X86_64(rflags); - EXPECT_GPR_X86_64(rsp); - EXPECT_GPR_X86_64(ss); - - // fctrl is the first FPR field, it is used to determine offset of the whole - // FPR struct - size_t base_offset = reg_ctx.GetRegisterInfo()[lldb_fctrl_x86_64].byte_offset; - - // assert against FXSAVE struct - EXPECT_OFF(fctrl_x86_64, 0x00, 2); - EXPECT_OFF(fstat_x86_64, 0x02, 2); - // TODO: This is a known bug, abridged ftag should is 8 bits in length. - EXPECT_OFF(ftag_x86_64, 0x04, 2); - EXPECT_OFF(fop_x86_64, 0x06, 2); - // NB: Technically fiseg/foseg are 16-bit long and the higher 16 bits - // are reserved. However, LLDB defines them to be 32-bit long for backwards - // compatibility, as they were used to reconstruct FIP/FDP before explicit - // register entries for them were added. Also, this is still how GDB does it. - EXPECT_OFF(fioff_x86_64, 0x08, 4); - EXPECT_OFF(fiseg_x86_64, 0x0C, 4); - EXPECT_OFF(fip_x86_64, 0x08, 8); - EXPECT_OFF(fooff_x86_64, 0x10, 4); - EXPECT_OFF(foseg_x86_64, 0x14, 4); - EXPECT_OFF(fdp_x86_64, 0x10, 8); - EXPECT_OFF(mxcsr_x86_64, 0x18, 4); - EXPECT_OFF(mxcsrmask_x86_64, 0x1C, 4); - EXPECT_OFF(st0_x86_64, 0x20, 10); - EXPECT_OFF(st1_x86_64, 0x30, 10); - EXPECT_OFF(st2_x86_64, 0x40, 10); - EXPECT_OFF(st3_x86_64, 0x50, 10); - EXPECT_OFF(st4_x86_64, 0x60, 10); - EXPECT_OFF(st5_x86_64, 0x70, 10); - EXPECT_OFF(st6_x86_64, 0x80, 10); - EXPECT_OFF(st7_x86_64, 0x90, 10); - EXPECT_OFF(mm0_x86_64, 0x20, 8); - EXPECT_OFF(mm1_x86_64, 0x30, 8); - EXPECT_OFF(mm2_x86_64, 0x40, 8); - EXPECT_OFF(mm3_x86_64, 0x50, 8); - EXPECT_OFF(mm4_x86_64, 0x60, 8); - EXPECT_OFF(mm5_x86_64, 0x70, 8); - EXPECT_OFF(mm6_x86_64, 0x80, 8); - EXPECT_OFF(mm7_x86_64, 0x90, 8); - EXPECT_OFF(xmm0_x86_64, 0xA0, 16); - EXPECT_OFF(xmm1_x86_64, 0xB0, 16); - EXPECT_OFF(xmm2_x86_64, 0xC0, 16); - EXPECT_OFF(xmm3_x86_64, 0xD0, 16); - EXPECT_OFF(xmm4_x86_64, 0xE0, 16); - EXPECT_OFF(xmm5_x86_64, 0xF0, 16); - EXPECT_OFF(xmm6_x86_64, 0x100, 16); - EXPECT_OFF(xmm7_x86_64, 0x110, 16); - EXPECT_OFF(xmm8_x86_64, 0x120, 16); - EXPECT_OFF(xmm9_x86_64, 0x130, 16); - EXPECT_OFF(xmm10_x86_64, 0x140, 16); - EXPECT_OFF(xmm11_x86_64, 0x150, 16); - EXPECT_OFF(xmm12_x86_64, 0x160, 16); - EXPECT_OFF(xmm13_x86_64, 0x170, 16); - EXPECT_OFF(xmm14_x86_64, 0x180, 16); - EXPECT_OFF(xmm15_x86_64, 0x190, 16); - - base_offset = reg_ctx.GetRegisterInfo()[lldb_dr0_x86_64].byte_offset; - EXPECT_DBR_X86_64(0); - EXPECT_DBR_X86_64(1); - EXPECT_DBR_X86_64(2); - EXPECT_DBR_X86_64(3); - EXPECT_DBR_X86_64(4); - EXPECT_DBR_X86_64(5); - EXPECT_DBR_X86_64(6); - EXPECT_DBR_X86_64(7); -} - -#endif // defined(__x86_64__) - -#if defined(__i386__) || defined(__x86_64__) - -#define EXPECT_GPR_I386(regname) \ - EXPECT_THAT(GetRegParams(reg_ctx, lldb_##regname##_i386), \ - ::testing::Pair(offsetof(native_i386_regs, r_##regname), \ - sizeof(native_i386_regs::r_##regname))) -#define EXPECT_DBR_I386(num) \ - EXPECT_OFF(dr##num##_i386, offsetof(native_i386_dbregs, dr[num]), \ - sizeof(native_i386_dbregs::dr[num])) - -TEST(RegisterContextFreeBSDTest, i386) { - ArchSpec arch{"i686-unknown-freebsd"}; - RegisterContextFreeBSD_i386 reg_ctx{arch}; - -#if defined(__i386__) - using native_i386_regs = ::reg; - using native_i386_dbregs = ::dbreg; -#else - using native_i386_regs = ::reg32; - using native_i386_dbregs = ::dbreg32; -#endif - - EXPECT_GPR_I386(fs); - EXPECT_GPR_I386(es); - EXPECT_GPR_I386(ds); - EXPECT_GPR_I386(edi); - EXPECT_GPR_I386(esi); - EXPECT_GPR_I386(ebp); - EXPECT_GPR_I386(ebx); - EXPECT_GPR_I386(edx); - EXPECT_GPR_I386(ecx); - EXPECT_GPR_I386(eax); - EXPECT_GPR_I386(eip); - EXPECT_GPR_I386(cs); - EXPECT_GPR_I386(eflags); - EXPECT_GPR_I386(esp); - EXPECT_GPR_I386(ss); - EXPECT_GPR_I386(gs); - - // fctrl is the first FPR field, it is used to determine offset of the whole - // FPR struct - size_t base_offset = reg_ctx.GetRegisterInfo()[lldb_fctrl_i386].byte_offset; - - // assert against FXSAVE struct - EXPECT_OFF(fctrl_i386, 0x00, 2); - EXPECT_OFF(fstat_i386, 0x02, 2); - // TODO: This is a known bug, abridged ftag should is 8 bits in length. - EXPECT_OFF(ftag_i386, 0x04, 2); - EXPECT_OFF(fop_i386, 0x06, 2); - // NB: Technically fiseg/foseg are 16-bit long and the higher 16 bits - // are reserved. However, we use them to access/recombine 64-bit FIP/FDP. - EXPECT_OFF(fioff_i386, 0x08, 4); - EXPECT_OFF(fiseg_i386, 0x0C, 4); - EXPECT_OFF(fooff_i386, 0x10, 4); - EXPECT_OFF(foseg_i386, 0x14, 4); - EXPECT_OFF(mxcsr_i386, 0x18, 4); - EXPECT_OFF(mxcsrmask_i386, 0x1C, 4); - EXPECT_OFF(st0_i386, 0x20, 10); - EXPECT_OFF(st1_i386, 0x30, 10); - EXPECT_OFF(st2_i386, 0x40, 10); - EXPECT_OFF(st3_i386, 0x50, 10); - EXPECT_OFF(st4_i386, 0x60, 10); - EXPECT_OFF(st5_i386, 0x70, 10); - EXPECT_OFF(st6_i386, 0x80, 10); - EXPECT_OFF(st7_i386, 0x90, 10); - EXPECT_OFF(mm0_i386, 0x20, 8); - EXPECT_OFF(mm1_i386, 0x30, 8); - EXPECT_OFF(mm2_i386, 0x40, 8); - EXPECT_OFF(mm3_i386, 0x50, 8); - EXPECT_OFF(mm4_i386, 0x60, 8); - EXPECT_OFF(mm5_i386, 0x70, 8); - EXPECT_OFF(mm6_i386, 0x80, 8); - EXPECT_OFF(mm7_i386, 0x90, 8); - EXPECT_OFF(xmm0_i386, 0xA0, 16); - EXPECT_OFF(xmm1_i386, 0xB0, 16); - EXPECT_OFF(xmm2_i386, 0xC0, 16); - EXPECT_OFF(xmm3_i386, 0xD0, 16); - EXPECT_OFF(xmm4_i386, 0xE0, 16); - EXPECT_OFF(xmm5_i386, 0xF0, 16); - EXPECT_OFF(xmm6_i386, 0x100, 16); - EXPECT_OFF(xmm7_i386, 0x110, 16); - - base_offset = reg_ctx.GetRegisterInfo()[lldb_dr0_i386].byte_offset; - EXPECT_DBR_I386(0); - EXPECT_DBR_I386(1); - EXPECT_DBR_I386(2); - EXPECT_DBR_I386(3); - EXPECT_DBR_I386(4); - EXPECT_DBR_I386(5); - EXPECT_DBR_I386(6); - EXPECT_DBR_I386(7); -} - -#endif // defined(__i386__) || defined(__x86_64__) - -#if defined(__arm__) - -#define EXPECT_GPR_ARM(lldb_reg, fbsd_reg) \ - EXPECT_THAT(GetRegParams(reg_ctx, gpr_##lldb_reg##_arm), \ - ::testing::Pair(offsetof(reg, fbsd_reg), sizeof(reg::fbsd_reg))) -#define EXPECT_FPU_ARM(lldb_reg, fbsd_reg) \ - EXPECT_THAT(GetRegParams(reg_ctx, fpu_##lldb_reg##_arm), \ - ::testing::Pair(offsetof(vfp_state, fbsd_reg) + base_offset, \ - sizeof(vfp_state::fbsd_reg))) - -TEST(RegisterContextFreeBSDTest, arm) { - ArchSpec arch{"arm-unknown-freebsd"}; - RegisterInfoPOSIX_arm reg_ctx{arch}; - - EXPECT_GPR_ARM(r0, r[0]); - EXPECT_GPR_ARM(r1, r[1]); - EXPECT_GPR_ARM(r2, r[2]); - EXPECT_GPR_ARM(r3, r[3]); - EXPECT_GPR_ARM(r4, r[4]); - EXPECT_GPR_ARM(r5, r[5]); - EXPECT_GPR_ARM(r6, r[6]); - EXPECT_GPR_ARM(r7, r[7]); - EXPECT_GPR_ARM(r8, r[8]); - EXPECT_GPR_ARM(r9, r[9]); - EXPECT_GPR_ARM(r10, r[10]); - EXPECT_GPR_ARM(r11, r[11]); - EXPECT_GPR_ARM(r12, r[12]); - EXPECT_GPR_ARM(sp, r_sp); - EXPECT_GPR_ARM(lr, r_lr); - EXPECT_GPR_ARM(pc, r_pc); - EXPECT_GPR_ARM(cpsr, r_cpsr); - - size_t base_offset = reg_ctx.GetRegisterInfo()[fpu_d0_arm].byte_offset; - - EXPECT_FPU_ARM(d0, reg[0]); - EXPECT_FPU_ARM(d1, reg[1]); - EXPECT_FPU_ARM(d2, reg[2]); - EXPECT_FPU_ARM(d3, reg[3]); - EXPECT_FPU_ARM(d4, reg[4]); - EXPECT_FPU_ARM(d5, reg[5]); - EXPECT_FPU_ARM(d6, reg[6]); - EXPECT_FPU_ARM(d7, reg[7]); - EXPECT_FPU_ARM(d8, reg[8]); - EXPECT_FPU_ARM(d9, reg[9]); - EXPECT_FPU_ARM(d10, reg[10]); - EXPECT_FPU_ARM(d11, reg[11]); - EXPECT_FPU_ARM(d12, reg[12]); - EXPECT_FPU_ARM(d13, reg[13]); - EXPECT_FPU_ARM(d14, reg[14]); - EXPECT_FPU_ARM(d15, reg[15]); - EXPECT_FPU_ARM(d16, reg[16]); - EXPECT_FPU_ARM(d17, reg[17]); - EXPECT_FPU_ARM(d18, reg[18]); - EXPECT_FPU_ARM(d19, reg[19]); - EXPECT_FPU_ARM(d20, reg[20]); - EXPECT_FPU_ARM(d21, reg[21]); - EXPECT_FPU_ARM(d22, reg[22]); - EXPECT_FPU_ARM(d23, reg[23]); - EXPECT_FPU_ARM(d24, reg[24]); - EXPECT_FPU_ARM(d25, reg[25]); - EXPECT_FPU_ARM(d26, reg[26]); - EXPECT_FPU_ARM(d27, reg[27]); - EXPECT_FPU_ARM(d28, reg[28]); - EXPECT_FPU_ARM(d29, reg[29]); - EXPECT_FPU_ARM(d30, reg[30]); - EXPECT_FPU_ARM(d31, reg[31]); - EXPECT_FPU_ARM(fpscr, fpscr); -} - -#endif // defined(__arm__) - -#if defined(__aarch64__) - -#define EXPECT_GPR_ARM64(lldb_reg, fbsd_reg) \ - EXPECT_THAT(GetRegParams(reg_ctx, gpr_##lldb_reg##_arm64), \ - ::testing::Pair(offsetof(reg, fbsd_reg), sizeof(reg::fbsd_reg))) -#define EXPECT_FPU_ARM64(lldb_reg, fbsd_reg) \ - EXPECT_THAT(GetRegParams(reg_ctx, fpu_##lldb_reg##_arm64), \ - ::testing::Pair(offsetof(fpreg, fbsd_reg) + base_offset, \ - sizeof(fpreg::fbsd_reg))) - -TEST(RegisterContextFreeBSDTest, arm64) { - ArchSpec arch{"aarch64-unknown-freebsd"}; - RegisterInfoPOSIX_arm64 reg_ctx{arch}; - - EXPECT_GPR_ARM64(x0, x[0]); - EXPECT_GPR_ARM64(x1, x[1]); - EXPECT_GPR_ARM64(x2, x[2]); - EXPECT_GPR_ARM64(x3, x[3]); - EXPECT_GPR_ARM64(x4, x[4]); - EXPECT_GPR_ARM64(x5, x[5]); - EXPECT_GPR_ARM64(x6, x[6]); - EXPECT_GPR_ARM64(x7, x[7]); - EXPECT_GPR_ARM64(x8, x[8]); - EXPECT_GPR_ARM64(x9, x[9]); - EXPECT_GPR_ARM64(x10, x[10]); - EXPECT_GPR_ARM64(x11, x[11]); - EXPECT_GPR_ARM64(x12, x[12]); - EXPECT_GPR_ARM64(x13, x[13]); - EXPECT_GPR_ARM64(x14, x[14]); - EXPECT_GPR_ARM64(x15, x[15]); - EXPECT_GPR_ARM64(x16, x[16]); - EXPECT_GPR_ARM64(x17, x[17]); - EXPECT_GPR_ARM64(x18, x[18]); - EXPECT_GPR_ARM64(x19, x[19]); - EXPECT_GPR_ARM64(x20, x[20]); - EXPECT_GPR_ARM64(x21, x[21]); - EXPECT_GPR_ARM64(x22, x[22]); - EXPECT_GPR_ARM64(x23, x[23]); - EXPECT_GPR_ARM64(x24, x[24]); - EXPECT_GPR_ARM64(x25, x[25]); - EXPECT_GPR_ARM64(x26, x[26]); - EXPECT_GPR_ARM64(x27, x[27]); - EXPECT_GPR_ARM64(x28, x[28]); - EXPECT_GPR_ARM64(fp, x[29]); - EXPECT_GPR_ARM64(lr, lr); - EXPECT_GPR_ARM64(sp, sp); - EXPECT_GPR_ARM64(pc, elr); - EXPECT_GPR_ARM64(cpsr, spsr); - - size_t base_offset = reg_ctx.GetRegisterInfo()[fpu_v0_arm64].byte_offset; - - EXPECT_FPU_ARM64(v0, fp_q[0]); - EXPECT_FPU_ARM64(v1, fp_q[1]); - EXPECT_FPU_ARM64(v2, fp_q[2]); - EXPECT_FPU_ARM64(v3, fp_q[3]); - EXPECT_FPU_ARM64(v4, fp_q[4]); - EXPECT_FPU_ARM64(v5, fp_q[5]); - EXPECT_FPU_ARM64(v6, fp_q[6]); - EXPECT_FPU_ARM64(v7, fp_q[7]); - EXPECT_FPU_ARM64(v8, fp_q[8]); - EXPECT_FPU_ARM64(v9, fp_q[9]); - EXPECT_FPU_ARM64(v10, fp_q[10]); - EXPECT_FPU_ARM64(v11, fp_q[11]); - EXPECT_FPU_ARM64(v12, fp_q[12]); - EXPECT_FPU_ARM64(v13, fp_q[13]); - EXPECT_FPU_ARM64(v14, fp_q[14]); - EXPECT_FPU_ARM64(v15, fp_q[15]); - EXPECT_FPU_ARM64(v16, fp_q[16]); - EXPECT_FPU_ARM64(v17, fp_q[17]); - EXPECT_FPU_ARM64(v18, fp_q[18]); - EXPECT_FPU_ARM64(v19, fp_q[19]); - EXPECT_FPU_ARM64(v20, fp_q[20]); - EXPECT_FPU_ARM64(v21, fp_q[21]); - EXPECT_FPU_ARM64(v22, fp_q[22]); - EXPECT_FPU_ARM64(v23, fp_q[23]); - EXPECT_FPU_ARM64(v24, fp_q[24]); - EXPECT_FPU_ARM64(v25, fp_q[25]); - EXPECT_FPU_ARM64(v26, fp_q[26]); - EXPECT_FPU_ARM64(v27, fp_q[27]); - EXPECT_FPU_ARM64(v28, fp_q[28]); - EXPECT_FPU_ARM64(v29, fp_q[29]); - EXPECT_FPU_ARM64(v30, fp_q[30]); - EXPECT_FPU_ARM64(v31, fp_q[31]); - EXPECT_FPU_ARM64(fpsr, fp_sr); - EXPECT_FPU_ARM64(fpcr, fp_cr); -} - -#endif // defined(__aarch64__) - -#if defined(__mips64__) - -#define EXPECT_GPR_MIPS64(lldb_reg, fbsd_regno) \ - EXPECT_THAT(GetRegParams(reg_ctx, gpr_##lldb_reg##_mips64), \ - ::testing::Pair(offsetof(reg, r_regs[fbsd_regno]), \ - sizeof(reg::r_regs[fbsd_regno]))) - -TEST(RegisterContextFreeBSDTest, mips64) { - ArchSpec arch{"mips64-unknown-freebsd"}; - RegisterContextFreeBSD_mips64 reg_ctx{arch}; - - // we can not use aliases from because macros defined - // there are not namespaced and collide a lot, e.g. 'A1' - - EXPECT_GPR_MIPS64(zero, 0); - EXPECT_GPR_MIPS64(r1, 1); - EXPECT_GPR_MIPS64(r2, 2); - EXPECT_GPR_MIPS64(r3, 3); - EXPECT_GPR_MIPS64(r4, 4); - EXPECT_GPR_MIPS64(r5, 5); - EXPECT_GPR_MIPS64(r6, 6); - EXPECT_GPR_MIPS64(r7, 7); - EXPECT_GPR_MIPS64(r8, 8); - EXPECT_GPR_MIPS64(r9, 9); - EXPECT_GPR_MIPS64(r10, 10); - EXPECT_GPR_MIPS64(r11, 11); - EXPECT_GPR_MIPS64(r12, 12); - EXPECT_GPR_MIPS64(r13, 13); - EXPECT_GPR_MIPS64(r14, 14); - EXPECT_GPR_MIPS64(r15, 15); - EXPECT_GPR_MIPS64(r16, 16); - EXPECT_GPR_MIPS64(r17, 17); - EXPECT_GPR_MIPS64(r18, 18); - EXPECT_GPR_MIPS64(r19, 19); - EXPECT_GPR_MIPS64(r20, 20); - EXPECT_GPR_MIPS64(r21, 21); - EXPECT_GPR_MIPS64(r22, 22); - EXPECT_GPR_MIPS64(r23, 23); - EXPECT_GPR_MIPS64(r24, 24); - EXPECT_GPR_MIPS64(r25, 25); - EXPECT_GPR_MIPS64(r26, 26); - EXPECT_GPR_MIPS64(r27, 27); - EXPECT_GPR_MIPS64(gp, 28); - EXPECT_GPR_MIPS64(sp, 29); - EXPECT_GPR_MIPS64(r30, 30); - EXPECT_GPR_MIPS64(ra, 31); - EXPECT_GPR_MIPS64(sr, 32); - EXPECT_GPR_MIPS64(mullo, 33); - EXPECT_GPR_MIPS64(mulhi, 34); - EXPECT_GPR_MIPS64(badvaddr, 35); - EXPECT_GPR_MIPS64(cause, 36); - EXPECT_GPR_MIPS64(pc, 37); - EXPECT_GPR_MIPS64(ic, 38); - EXPECT_GPR_MIPS64(dummy, 39); -} - -#endif // defined(__mips64__) - -#if defined(__powerpc__) - -#define EXPECT_GPR_PPC(lldb_reg, fbsd_reg) \ - EXPECT_THAT(GetRegParams(reg_ctx, gpr_##lldb_reg##_powerpc), \ - ::testing::Pair(offsetof(reg, fbsd_reg), sizeof(reg::fbsd_reg))) -#define EXPECT_FPU_PPC(lldb_reg, fbsd_reg) \ - EXPECT_THAT(GetRegParams(reg_ctx, fpr_##lldb_reg##_powerpc), \ - ::testing::Pair(offsetof(fpreg, fbsd_reg) + base_offset, \ - sizeof(fpreg::fbsd_reg))) - -TEST(RegisterContextFreeBSDTest, powerpc32) { - ArchSpec arch{"powerpc-unknown-freebsd"}; - RegisterContextFreeBSD_powerpc32 reg_ctx{arch}; - - EXPECT_GPR_PPC(r0, fixreg[0]); - EXPECT_GPR_PPC(r1, fixreg[1]); - EXPECT_GPR_PPC(r2, fixreg[2]); - EXPECT_GPR_PPC(r3, fixreg[3]); - EXPECT_GPR_PPC(r4, fixreg[4]); - EXPECT_GPR_PPC(r5, fixreg[5]); - EXPECT_GPR_PPC(r6, fixreg[6]); - EXPECT_GPR_PPC(r7, fixreg[7]); - EXPECT_GPR_PPC(r8, fixreg[8]); - EXPECT_GPR_PPC(r9, fixreg[9]); - EXPECT_GPR_PPC(r10, fixreg[10]); - EXPECT_GPR_PPC(r11, fixreg[11]); - EXPECT_GPR_PPC(r12, fixreg[12]); - EXPECT_GPR_PPC(r13, fixreg[13]); - EXPECT_GPR_PPC(r14, fixreg[14]); - EXPECT_GPR_PPC(r15, fixreg[15]); - EXPECT_GPR_PPC(r16, fixreg[16]); - EXPECT_GPR_PPC(r17, fixreg[17]); - EXPECT_GPR_PPC(r18, fixreg[18]); - EXPECT_GPR_PPC(r19, fixreg[19]); - EXPECT_GPR_PPC(r20, fixreg[20]); - EXPECT_GPR_PPC(r21, fixreg[21]); - EXPECT_GPR_PPC(r22, fixreg[22]); - EXPECT_GPR_PPC(r23, fixreg[23]); - EXPECT_GPR_PPC(r24, fixreg[24]); - EXPECT_GPR_PPC(r25, fixreg[25]); - EXPECT_GPR_PPC(r26, fixreg[26]); - EXPECT_GPR_PPC(r27, fixreg[27]); - EXPECT_GPR_PPC(r28, fixreg[28]); - EXPECT_GPR_PPC(r29, fixreg[29]); - EXPECT_GPR_PPC(r30, fixreg[30]); - EXPECT_GPR_PPC(r31, fixreg[31]); - EXPECT_GPR_PPC(lr, lr); - EXPECT_GPR_PPC(cr, cr); - EXPECT_GPR_PPC(xer, xer); - EXPECT_GPR_PPC(ctr, ctr); - EXPECT_GPR_PPC(pc, pc); - - size_t base_offset = reg_ctx.GetRegisterInfo()[fpr_f0_powerpc].byte_offset; - - EXPECT_FPU_PPC(f0, fpreg[0]); - EXPECT_FPU_PPC(f1, fpreg[1]); - EXPECT_FPU_PPC(f2, fpreg[2]); - EXPECT_FPU_PPC(f3, fpreg[3]); - EXPECT_FPU_PPC(f4, fpreg[4]); - EXPECT_FPU_PPC(f5, fpreg[5]); - EXPECT_FPU_PPC(f6, fpreg[6]); - EXPECT_FPU_PPC(f7, fpreg[7]); - EXPECT_FPU_PPC(f8, fpreg[8]); - EXPECT_FPU_PPC(f9, fpreg[9]); - EXPECT_FPU_PPC(f10, fpreg[10]); - EXPECT_FPU_PPC(f11, fpreg[11]); - EXPECT_FPU_PPC(f12, fpreg[12]); - EXPECT_FPU_PPC(f13, fpreg[13]); - EXPECT_FPU_PPC(f14, fpreg[14]); - EXPECT_FPU_PPC(f15, fpreg[15]); - EXPECT_FPU_PPC(f16, fpreg[16]); - EXPECT_FPU_PPC(f17, fpreg[17]); - EXPECT_FPU_PPC(f18, fpreg[18]); - EXPECT_FPU_PPC(f19, fpreg[19]); - EXPECT_FPU_PPC(f20, fpreg[20]); - EXPECT_FPU_PPC(f21, fpreg[21]); - EXPECT_FPU_PPC(f22, fpreg[22]); - EXPECT_FPU_PPC(f23, fpreg[23]); - EXPECT_FPU_PPC(f24, fpreg[24]); - EXPECT_FPU_PPC(f25, fpreg[25]); - EXPECT_FPU_PPC(f26, fpreg[26]); - EXPECT_FPU_PPC(f27, fpreg[27]); - EXPECT_FPU_PPC(f28, fpreg[28]); - EXPECT_FPU_PPC(f29, fpreg[29]); - EXPECT_FPU_PPC(f30, fpreg[30]); - EXPECT_FPU_PPC(f31, fpreg[31]); - EXPECT_FPU_PPC(fpscr, fpscr); -} - -#endif // defined(__powerpc__) diff --git a/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextNetBSDTest_i386.cpp b/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextNetBSDTest_i386.cpp deleted file mode 100644 index 07e09d34d19..00000000000 --- a/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextNetBSDTest_i386.cpp +++ /dev/null @@ -1,118 +0,0 @@ -//===-- RegisterContextNetBSDTest_i386.cpp --------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#if defined(__i386__) || defined(__x86_64__) - -// clang-format off -#include -#include -// clang-format on - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "Plugins/Process/Utility/lldb-x86-register-enums.h" -#include "Plugins/Process/Utility/RegisterContextNetBSD_i386.h" - -using namespace lldb; -using namespace lldb_private; - -static std::pair GetRegParams(RegisterInfoInterface &ctx, - uint32_t reg) { - const RegisterInfo &info = ctx.GetRegisterInfo()[reg]; - return {info.byte_offset, info.byte_size}; -} - -#define EXPECT_OFF(regname, offset, size) \ - EXPECT_THAT(GetRegParams(reg_ctx, lldb_##regname), \ - ::testing::Pair(offset + base_offset, size)) - -#define EXPECT_GPR_I386(regname) \ - EXPECT_THAT(GetRegParams(reg_ctx, lldb_##regname##_i386), \ - ::testing::Pair(offsetof(reg, r_##regname), \ - sizeof(reg::r_##regname))) -#define EXPECT_DBR_I386(num) \ - EXPECT_OFF(dr##num##_i386, offsetof(dbreg, dr[num]), \ - sizeof(dbreg::dr[num])) - -TEST(RegisterContextNetBSDTest, i386) { - ArchSpec arch{"i686-unknown-netbsd"}; - RegisterContextNetBSD_i386 reg_ctx{arch}; - - EXPECT_GPR_I386(eax); - EXPECT_GPR_I386(ecx); - EXPECT_GPR_I386(edx); - EXPECT_GPR_I386(ebx); - EXPECT_GPR_I386(esp); - EXPECT_GPR_I386(ebp); - EXPECT_GPR_I386(esi); - EXPECT_GPR_I386(edi); - EXPECT_GPR_I386(eip); - EXPECT_GPR_I386(eflags); - EXPECT_GPR_I386(cs); - EXPECT_GPR_I386(ss); - EXPECT_GPR_I386(ds); - EXPECT_GPR_I386(es); - EXPECT_GPR_I386(fs); - EXPECT_GPR_I386(gs); - - // fctrl is the first FPR field, it is used to determine offset of the whole - // FPR struct - size_t base_offset = reg_ctx.GetRegisterInfo()[lldb_fctrl_i386].byte_offset; - - // assert against FXSAVE struct - EXPECT_OFF(fctrl_i386, 0x00, 2); - EXPECT_OFF(fstat_i386, 0x02, 2); - // TODO: This is a known bug, abridged ftag should is 8 bits in length. - EXPECT_OFF(ftag_i386, 0x04, 2); - EXPECT_OFF(fop_i386, 0x06, 2); - // NB: Technically fiseg/foseg are 16-bit long and the higher 16 bits - // are reserved. However, we use them to access/recombine 64-bit FIP/FDP. - EXPECT_OFF(fioff_i386, 0x08, 4); - EXPECT_OFF(fiseg_i386, 0x0C, 4); - EXPECT_OFF(fooff_i386, 0x10, 4); - EXPECT_OFF(foseg_i386, 0x14, 4); - EXPECT_OFF(mxcsr_i386, 0x18, 4); - EXPECT_OFF(mxcsrmask_i386, 0x1C, 4); - EXPECT_OFF(st0_i386, 0x20, 10); - EXPECT_OFF(st1_i386, 0x30, 10); - EXPECT_OFF(st2_i386, 0x40, 10); - EXPECT_OFF(st3_i386, 0x50, 10); - EXPECT_OFF(st4_i386, 0x60, 10); - EXPECT_OFF(st5_i386, 0x70, 10); - EXPECT_OFF(st6_i386, 0x80, 10); - EXPECT_OFF(st7_i386, 0x90, 10); - EXPECT_OFF(mm0_i386, 0x20, 8); - EXPECT_OFF(mm1_i386, 0x30, 8); - EXPECT_OFF(mm2_i386, 0x40, 8); - EXPECT_OFF(mm3_i386, 0x50, 8); - EXPECT_OFF(mm4_i386, 0x60, 8); - EXPECT_OFF(mm5_i386, 0x70, 8); - EXPECT_OFF(mm6_i386, 0x80, 8); - EXPECT_OFF(mm7_i386, 0x90, 8); - EXPECT_OFF(xmm0_i386, 0xA0, 16); - EXPECT_OFF(xmm1_i386, 0xB0, 16); - EXPECT_OFF(xmm2_i386, 0xC0, 16); - EXPECT_OFF(xmm3_i386, 0xD0, 16); - EXPECT_OFF(xmm4_i386, 0xE0, 16); - EXPECT_OFF(xmm5_i386, 0xF0, 16); - EXPECT_OFF(xmm6_i386, 0x100, 16); - EXPECT_OFF(xmm7_i386, 0x110, 16); - - base_offset = reg_ctx.GetRegisterInfo()[lldb_dr0_i386].byte_offset; - EXPECT_DBR_I386(0); - EXPECT_DBR_I386(1); - EXPECT_DBR_I386(2); - EXPECT_DBR_I386(3); - EXPECT_DBR_I386(4); - EXPECT_DBR_I386(5); - EXPECT_DBR_I386(6); - EXPECT_DBR_I386(7); -} - -#endif // defined(__i386__) || defined(__x86_64__) diff --git a/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextNetBSDTest_x86_64.cpp b/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextNetBSDTest_x86_64.cpp deleted file mode 100644 index ac24c32b0d0..00000000000 --- a/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextNetBSDTest_x86_64.cpp +++ /dev/null @@ -1,139 +0,0 @@ -//===-- RegisterContextNetBSDTest_x86_64.cpp ------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#if defined(__x86_64__) - -// clang-format off -#include -#include -// clang-format on - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "Plugins/Process/Utility/lldb-x86-register-enums.h" -#include "Plugins/Process/Utility/RegisterContextNetBSD_i386.h" -#include "Plugins/Process/Utility/RegisterContextNetBSD_x86_64.h" - -using namespace lldb; -using namespace lldb_private; - -static std::pair GetRegParams(RegisterInfoInterface &ctx, - uint32_t reg) { - const RegisterInfo &info = ctx.GetRegisterInfo()[reg]; - return {info.byte_offset, info.byte_size}; -} - -#define EXPECT_OFF(regname, offset, size) \ - EXPECT_THAT(GetRegParams(reg_ctx, lldb_##regname), \ - ::testing::Pair(offset + base_offset, size)) - -#define EXPECT_GPR_X86_64(regname, regconst) \ - EXPECT_THAT( \ - GetRegParams(reg_ctx, lldb_##regname##_x86_64), \ - ::testing::Pair(offsetof(reg, regs[regconst]), \ - sizeof(reg::regs[regconst]))) -#define EXPECT_DBR_X86_64(num) \ - EXPECT_OFF(dr##num##_x86_64, offsetof(dbreg, dr[num]), sizeof(dbreg::dr[num])) - -TEST(RegisterContextNetBSDTest, x86_64) { - ArchSpec arch{"x86_64-unknown-netbsd"}; - RegisterContextNetBSD_x86_64 reg_ctx{arch}; - - EXPECT_GPR_X86_64(rdi, _REG_RDI); - EXPECT_GPR_X86_64(rsi, _REG_RSI); - EXPECT_GPR_X86_64(rdx, _REG_RDX); - EXPECT_GPR_X86_64(rcx, _REG_RCX); - EXPECT_GPR_X86_64(r8, _REG_R8); - EXPECT_GPR_X86_64(r9, _REG_R9); - EXPECT_GPR_X86_64(r10, _REG_R10); - EXPECT_GPR_X86_64(r11, _REG_R11); - EXPECT_GPR_X86_64(r12, _REG_R12); - EXPECT_GPR_X86_64(r13, _REG_R13); - EXPECT_GPR_X86_64(r14, _REG_R14); - EXPECT_GPR_X86_64(r15, _REG_R15); - EXPECT_GPR_X86_64(rbp, _REG_RBP); - EXPECT_GPR_X86_64(rbx, _REG_RBX); - EXPECT_GPR_X86_64(rax, _REG_RAX); - EXPECT_GPR_X86_64(gs, _REG_GS); - EXPECT_GPR_X86_64(fs, _REG_FS); - EXPECT_GPR_X86_64(es, _REG_ES); - EXPECT_GPR_X86_64(ds, _REG_DS); - EXPECT_GPR_X86_64(rip, _REG_RIP); - EXPECT_GPR_X86_64(cs, _REG_CS); - EXPECT_GPR_X86_64(rflags, _REG_RFLAGS); - EXPECT_GPR_X86_64(rsp, _REG_RSP); - EXPECT_GPR_X86_64(ss, _REG_SS); - - // fctrl is the first FPR field, it is used to determine offset of the whole - // FPR struct - size_t base_offset = reg_ctx.GetRegisterInfo()[lldb_fctrl_x86_64].byte_offset; - - // assert against FXSAVE struct - EXPECT_OFF(fctrl_x86_64, 0x00, 2); - EXPECT_OFF(fstat_x86_64, 0x02, 2); - // TODO: This is a known bug, abridged ftag should is 8 bits in length. - EXPECT_OFF(ftag_x86_64, 0x04, 2); - EXPECT_OFF(fop_x86_64, 0x06, 2); - // NB: Technically fiseg/foseg are 16-bit long and the higher 16 bits - // are reserved. However, LLDB defines them to be 32-bit long for backwards - // compatibility, as they were used to reconstruct FIP/FDP before explicit - // register entries for them were added. Also, this is still how GDB does it. - EXPECT_OFF(fioff_x86_64, 0x08, 4); - EXPECT_OFF(fiseg_x86_64, 0x0C, 4); - EXPECT_OFF(fip_x86_64, 0x08, 8); - EXPECT_OFF(fooff_x86_64, 0x10, 4); - EXPECT_OFF(foseg_x86_64, 0x14, 4); - EXPECT_OFF(fdp_x86_64, 0x10, 8); - EXPECT_OFF(mxcsr_x86_64, 0x18, 4); - EXPECT_OFF(mxcsrmask_x86_64, 0x1C, 4); - EXPECT_OFF(st0_x86_64, 0x20, 10); - EXPECT_OFF(st1_x86_64, 0x30, 10); - EXPECT_OFF(st2_x86_64, 0x40, 10); - EXPECT_OFF(st3_x86_64, 0x50, 10); - EXPECT_OFF(st4_x86_64, 0x60, 10); - EXPECT_OFF(st5_x86_64, 0x70, 10); - EXPECT_OFF(st6_x86_64, 0x80, 10); - EXPECT_OFF(st7_x86_64, 0x90, 10); - EXPECT_OFF(mm0_x86_64, 0x20, 8); - EXPECT_OFF(mm1_x86_64, 0x30, 8); - EXPECT_OFF(mm2_x86_64, 0x40, 8); - EXPECT_OFF(mm3_x86_64, 0x50, 8); - EXPECT_OFF(mm4_x86_64, 0x60, 8); - EXPECT_OFF(mm5_x86_64, 0x70, 8); - EXPECT_OFF(mm6_x86_64, 0x80, 8); - EXPECT_OFF(mm7_x86_64, 0x90, 8); - EXPECT_OFF(xmm0_x86_64, 0xA0, 16); - EXPECT_OFF(xmm1_x86_64, 0xB0, 16); - EXPECT_OFF(xmm2_x86_64, 0xC0, 16); - EXPECT_OFF(xmm3_x86_64, 0xD0, 16); - EXPECT_OFF(xmm4_x86_64, 0xE0, 16); - EXPECT_OFF(xmm5_x86_64, 0xF0, 16); - EXPECT_OFF(xmm6_x86_64, 0x100, 16); - EXPECT_OFF(xmm7_x86_64, 0x110, 16); - EXPECT_OFF(xmm8_x86_64, 0x120, 16); - EXPECT_OFF(xmm9_x86_64, 0x130, 16); - EXPECT_OFF(xmm10_x86_64, 0x140, 16); - EXPECT_OFF(xmm11_x86_64, 0x150, 16); - EXPECT_OFF(xmm12_x86_64, 0x160, 16); - EXPECT_OFF(xmm13_x86_64, 0x170, 16); - EXPECT_OFF(xmm14_x86_64, 0x180, 16); - EXPECT_OFF(xmm15_x86_64, 0x190, 16); - - base_offset = reg_ctx.GetRegisterInfo()[lldb_dr0_x86_64].byte_offset; - EXPECT_DBR_X86_64(0); - EXPECT_DBR_X86_64(1); - EXPECT_DBR_X86_64(2); - EXPECT_DBR_X86_64(3); - EXPECT_DBR_X86_64(4); - EXPECT_DBR_X86_64(5); - EXPECT_DBR_X86_64(6); - EXPECT_DBR_X86_64(7); -} - -#endif // defined(__x86_64__) diff --git a/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextTest.cpp b/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextTest.cpp deleted file mode 100644 index f0aa6076d8f..00000000000 --- a/gnu/llvm/lldb/unittests/Process/Utility/RegisterContextTest.cpp +++ /dev/null @@ -1,73 +0,0 @@ -//===-- RegisterContextTest.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "Plugins/Process/Utility/RegisterContext_x86.h" - -#include "llvm/ADT/STLExtras.h" -#include "llvm/Support/FormatVariadic.h" - -#include - -using namespace lldb_private; - -struct TagWordTestVector { - uint16_t sw; - uint16_t tw; - uint8_t tw_abridged; - int st_reg_num; -}; - -constexpr MMSReg st_from_comp(uint64_t mantissa, uint16_t sign_exp) { - MMSReg ret = {}; - ret.comp.mantissa = mantissa; - ret.comp.sign_exp = sign_exp; - return ret; -} - -const std::array st_regs = { - st_from_comp(0x8000000000000000, 0x4000), // +2.0 - st_from_comp(0x3f00000000000000, 0x0000), // 1.654785e-4932 - st_from_comp(0x0000000000000000, 0x0000), // +0 - st_from_comp(0x0000000000000000, 0x8000), // -0 - st_from_comp(0x8000000000000000, 0x7fff), // +inf - st_from_comp(0x8000000000000000, 0xffff), // -inf - st_from_comp(0xc000000000000000, 0xffff), // nan - st_from_comp(0x8000000000000000, 0xc000), // -2.0 -}; - -const std::array tag_word_test_vectors{ - TagWordTestVector{0x3800, 0x3fff, 0x80, 1}, - TagWordTestVector{0x3000, 0x2fff, 0xc0, 2}, - TagWordTestVector{0x2800, 0x27ff, 0xe0, 3}, - TagWordTestVector{0x2000, 0x25ff, 0xf0, 4}, - TagWordTestVector{0x1800, 0x25bf, 0xf8, 5}, - TagWordTestVector{0x1000, 0x25af, 0xfc, 6}, - TagWordTestVector{0x0800, 0x25ab, 0xfe, 7}, - TagWordTestVector{0x0000, 0x25a8, 0xff, 8}, -}; - -TEST(RegisterContext_x86Test, AbridgedToFullTagWord) { - for (const auto &x : llvm::enumerate(tag_word_test_vectors)) { - SCOPED_TRACE(llvm::formatv("tag_word_test_vectors[{0}]", x.index())); - std::array test_regs; - for (int i = 0; i < x.value().st_reg_num; ++i) - test_regs[i] = st_regs[x.value().st_reg_num - i - 1]; - EXPECT_EQ( - AbridgedToFullTagWord(x.value().tw_abridged, x.value().sw, test_regs), - x.value().tw); - } -} - -TEST(RegisterContext_x86Test, FullToAbridgedTagWord) { - for (const auto &x : llvm::enumerate(tag_word_test_vectors)) { - SCOPED_TRACE(llvm::formatv("tag_word_test_vectors[{0}]", x.index())); - EXPECT_EQ(FullToAbridgedTagWord(x.value().tw), x.value().tw_abridged); - } -} diff --git a/gnu/llvm/lldb/unittests/Process/gdb-remote/CMakeLists.txt b/gnu/llvm/lldb/unittests/Process/gdb-remote/CMakeLists.txt deleted file mode 100644 index 7988fff3e70..00000000000 --- a/gnu/llvm/lldb/unittests/Process/gdb-remote/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -add_lldb_unittest(ProcessGdbRemoteTests - GDBRemoteClientBaseTest.cpp - GDBRemoteCommunicationClientTest.cpp - GDBRemoteCommunicationServerTest.cpp - GDBRemoteCommunicationTest.cpp - GDBRemoteTestUtils.cpp - PortMapTest.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbPluginPlatformMacOSX - lldbPluginProcessUtility - lldbPluginProcessGDBRemote - - LLVMTestingSupport - - LINK_COMPONENTS - Support - ) diff --git a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteClientBaseTest.cpp b/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteClientBaseTest.cpp deleted file mode 100644 index eb4fd29b4df..00000000000 --- a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteClientBaseTest.cpp +++ /dev/null @@ -1,363 +0,0 @@ -//===-- GDBRemoteClientBaseTest.cpp ---------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include - -#include "GDBRemoteTestUtils.h" - -#include "Plugins/Process/Utility/LinuxSignals.h" -#include "Plugins/Process/gdb-remote/GDBRemoteClientBase.h" -#include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h" -#include "lldb/Utility/GDBRemote.h" -#include "llvm/ADT/STLExtras.h" -#include "llvm/Testing/Support/Error.h" - -using namespace lldb_private::process_gdb_remote; -using namespace lldb_private; -using namespace lldb; -typedef GDBRemoteCommunication::PacketResult PacketResult; - -namespace { - -struct MockDelegate : public GDBRemoteClientBase::ContinueDelegate { - std::string output; - std::string misc_data; - unsigned stop_reply_called = 0; - std::vector structured_data_packets; - - void HandleAsyncStdout(llvm::StringRef out) override { output += out; } - void HandleAsyncMisc(llvm::StringRef data) override { misc_data += data; } - void HandleStopReply() override { ++stop_reply_called; } - - void HandleAsyncStructuredDataPacket(llvm::StringRef data) override { - structured_data_packets.push_back(std::string(data)); - } -}; - -struct TestClient : public GDBRemoteClientBase { - TestClient() : GDBRemoteClientBase("test.client", "test.client.listener") { - m_send_acks = false; - } -}; - -class GDBRemoteClientBaseTest : public GDBRemoteTest { -public: - void SetUp() override { - ASSERT_THAT_ERROR(GDBRemoteCommunication::ConnectLocally(client, server), - llvm::Succeeded()); - ASSERT_EQ(TestClient::eBroadcastBitRunPacketSent, - listener_sp->StartListeningForEvents( - &client, TestClient::eBroadcastBitRunPacketSent)); - } - -protected: - // We don't have a process to get the interrupt timeout from, so make one up. - static std::chrono::seconds g_timeout; - TestClient client; - MockServer server; - MockDelegate delegate; - ListenerSP listener_sp = Listener::MakeListener("listener"); - - StateType SendCPacket(StringExtractorGDBRemote &response) { - return client.SendContinuePacketAndWaitForResponse(delegate, LinuxSignals(), - "c", g_timeout, - response); - } - - void WaitForRunEvent() { - EventSP event_sp; - listener_sp->GetEventForBroadcasterWithType( - &client, TestClient::eBroadcastBitRunPacketSent, event_sp, llvm::None); - } -}; - -std::chrono::seconds GDBRemoteClientBaseTest::g_timeout(10); - -} // end anonymous namespace - -TEST_F(GDBRemoteClientBaseTest, SendContinueAndWait) { - StringExtractorGDBRemote response; - - // Continue. The inferior will stop with a signal. - ASSERT_EQ(PacketResult::Success, server.SendPacket("T01")); - ASSERT_EQ(eStateStopped, SendCPacket(response)); - ASSERT_EQ("T01", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - - // Continue. The inferior will exit. - ASSERT_EQ(PacketResult::Success, server.SendPacket("W01")); - ASSERT_EQ(eStateExited, SendCPacket(response)); - ASSERT_EQ("W01", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - - // Continue. The inferior will get killed. - ASSERT_EQ(PacketResult::Success, server.SendPacket("X01")); - ASSERT_EQ(eStateExited, SendCPacket(response)); - ASSERT_EQ("X01", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); -} - -TEST_F(GDBRemoteClientBaseTest, SendContinueAndAsyncSignal) { - StringExtractorGDBRemote continue_response, response; - - // SendAsyncSignal should do nothing when we are not running. - ASSERT_FALSE(client.SendAsyncSignal(0x47, g_timeout)); - - // Continue. After the run packet is sent, send an async signal. - std::future continue_state = std::async( - std::launch::async, [&] { return SendCPacket(continue_response); }); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - WaitForRunEvent(); - - std::future async_result = std::async(std::launch::async, [&] { - return client.SendAsyncSignal(0x47, g_timeout); - }); - - // First we'll get interrupted. - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("\x03", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.SendPacket("T13")); - - // Then we get the signal packet. - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("C47", response.GetStringRef()); - ASSERT_TRUE(async_result.get()); - - // And we report back a signal stop. - ASSERT_EQ(PacketResult::Success, server.SendPacket("T47")); - ASSERT_EQ(eStateStopped, continue_state.get()); - ASSERT_EQ("T47", continue_response.GetStringRef()); -} - -TEST_F(GDBRemoteClientBaseTest, SendContinueAndAsyncPacket) { - StringExtractorGDBRemote continue_response, async_response, response; - - // Continue. After the run packet is sent, send an async packet. - std::future continue_state = std::async( - std::launch::async, [&] { return SendCPacket(continue_response); }); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - WaitForRunEvent(); - - // Sending without async enabled should fail. - ASSERT_EQ(PacketResult::ErrorSendFailed, - client.SendPacketAndWaitForResponse("qTest1", response)); - - std::future async_result = std::async(std::launch::async, [&] { - return client.SendPacketAndWaitForResponse("qTest2", async_response, - g_timeout); - }); - - // First we'll get interrupted. - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("\x03", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.SendPacket("T13")); - - // Then we get the async packet. - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("qTest2", response.GetStringRef()); - - // Send the response and receive it. - ASSERT_EQ(PacketResult::Success, server.SendPacket("QTest2")); - ASSERT_EQ(PacketResult::Success, async_result.get()); - ASSERT_EQ("QTest2", async_response.GetStringRef()); - - // And we get resumed again. - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.SendPacket("T01")); - ASSERT_EQ(eStateStopped, continue_state.get()); - ASSERT_EQ("T01", continue_response.GetStringRef()); -} - -TEST_F(GDBRemoteClientBaseTest, SendContinueAndInterrupt) { - StringExtractorGDBRemote continue_response, response; - - // Interrupt should do nothing when we're not running. - ASSERT_FALSE(client.Interrupt(g_timeout)); - - // Continue. After the run packet is sent, send an interrupt. - std::future continue_state = std::async( - std::launch::async, [&] { return SendCPacket(continue_response); }); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - WaitForRunEvent(); - - std::future async_result = std::async( - std::launch::async, [&] { return client.Interrupt(g_timeout); }); - - // We get interrupted. - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("\x03", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.SendPacket("T13")); - - // And that's it. - ASSERT_EQ(eStateStopped, continue_state.get()); - ASSERT_EQ("T13", continue_response.GetStringRef()); - ASSERT_TRUE(async_result.get()); -} - -TEST_F(GDBRemoteClientBaseTest, SendContinueAndLateInterrupt) { - StringExtractorGDBRemote continue_response, response; - - // Continue. After the run packet is sent, send an interrupt. - std::future continue_state = std::async( - std::launch::async, [&] { return SendCPacket(continue_response); }); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - WaitForRunEvent(); - - std::future async_result = std::async( - std::launch::async, [&] { return client.Interrupt(g_timeout); }); - - // However, the target stops due to a different reason than the original - // interrupt. - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("\x03", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.SendPacket("T01")); - ASSERT_EQ(eStateStopped, continue_state.get()); - ASSERT_EQ("T01", continue_response.GetStringRef()); - ASSERT_TRUE(async_result.get()); - - // The subsequent continue packet should work normally. - ASSERT_EQ(PacketResult::Success, server.SendPacket("T01")); - ASSERT_EQ(eStateStopped, SendCPacket(response)); - ASSERT_EQ("T01", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); -} - -TEST_F(GDBRemoteClientBaseTest, SendContinueAndInterrupt2PacketBug) { - StringExtractorGDBRemote continue_response, async_response, response; - - // Interrupt should do nothing when we're not running. - ASSERT_FALSE(client.Interrupt(g_timeout)); - - // Continue. After the run packet is sent, send an async signal. - std::future continue_state = std::async( - std::launch::async, [&] { return SendCPacket(continue_response); }); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - WaitForRunEvent(); - - std::future interrupt_result = std::async( - std::launch::async, [&] { return client.Interrupt(g_timeout); }); - - // We get interrupted. We'll send two packets to simulate a buggy stub. - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("\x03", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.SendPacket("T13")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("T13")); - - // We should stop. - ASSERT_EQ(eStateStopped, continue_state.get()); - ASSERT_EQ("T13", continue_response.GetStringRef()); - ASSERT_TRUE(interrupt_result.get()); - - // Packet stream should remain synchronized. - std::future send_result = std::async(std::launch::async, [&] { - return client.SendPacketAndWaitForResponse("qTest", async_response); - }); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("qTest", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.SendPacket("QTest")); - ASSERT_EQ(PacketResult::Success, send_result.get()); - ASSERT_EQ("QTest", async_response.GetStringRef()); -} - -TEST_F(GDBRemoteClientBaseTest, SendContinueDelegateInterface) { - StringExtractorGDBRemote response; - - // Continue. We'll have the server send a bunch of async packets before it - // stops. - ASSERT_EQ(PacketResult::Success, server.SendPacket("O4142")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("Apro")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("O4344")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("Afile")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("T01")); - ASSERT_EQ(eStateStopped, SendCPacket(response)); - ASSERT_EQ("T01", response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - - EXPECT_EQ("ABCD", delegate.output); - EXPECT_EQ("profile", delegate.misc_data); - EXPECT_EQ(1u, delegate.stop_reply_called); -} - -TEST_F(GDBRemoteClientBaseTest, SendContinueDelegateStructuredDataReceipt) { - // Build the plain-text version of the JSON data we will have the - // server send. - const std::string json_payload = - "{ \"type\": \"MyFeatureType\", " - " \"elements\": [ \"entry1\", \"entry2\" ] }"; - const std::string json_packet = "JSON-async:" + json_payload; - - // Escape it properly for transit. - StreamGDBRemote stream; - stream.PutEscapedBytes(json_packet.c_str(), json_packet.length()); - stream.Flush(); - - StringExtractorGDBRemote response; - - // Send async structured data packet, then stop. - ASSERT_EQ(PacketResult::Success, server.SendPacket(stream.GetData())); - ASSERT_EQ(PacketResult::Success, server.SendPacket("T01")); - ASSERT_EQ(eStateStopped, SendCPacket(response)); - ASSERT_EQ("T01", response.GetStringRef()); - ASSERT_EQ(1ul, delegate.structured_data_packets.size()); - - // Verify the packet contents. It should have been unescaped upon packet - // reception. - ASSERT_EQ(json_packet, delegate.structured_data_packets[0]); -} - -TEST_F(GDBRemoteClientBaseTest, InterruptNoResponse) { - StringExtractorGDBRemote continue_response, response; - - // Continue. After the run packet is sent, send an interrupt. - std::future continue_state = std::async( - std::launch::async, [&] { return SendCPacket(continue_response); }); - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("c", response.GetStringRef()); - WaitForRunEvent(); - - std::future async_result = std::async( - std::launch::async, [&] { return client.Interrupt(g_timeout); }); - - // We get interrupted, but we don't send a stop packet. - ASSERT_EQ(PacketResult::Success, server.GetPacket(response)); - ASSERT_EQ("\x03", response.GetStringRef()); - - // The functions should still terminate (after a timeout). - ASSERT_TRUE(async_result.get()); - ASSERT_EQ(eStateInvalid, continue_state.get()); -} - -TEST_F(GDBRemoteClientBaseTest, SendPacketAndReceiveResponseWithOutputSupport) { - StringExtractorGDBRemote response; - StreamString command_output; - - ASSERT_EQ(PacketResult::Success, server.SendPacket("O")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("O48656c6c6f2c")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("O20")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("O")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("O776f726c64")); - ASSERT_EQ(PacketResult::Success, server.SendPacket("OK")); - - PacketResult result = client.SendPacketAndReceiveResponseWithOutputSupport( - "qRcmd,test", response, g_timeout, - [&command_output](llvm::StringRef output) { command_output << output; }); - - ASSERT_EQ(PacketResult::Success, result); - ASSERT_EQ("OK", response.GetStringRef()); - ASSERT_EQ("Hello, world", command_output.GetString().str()); -} diff --git a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp b/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp deleted file mode 100644 index d15b85204b5..00000000000 --- a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp +++ /dev/null @@ -1,593 +0,0 @@ -//===-- GDBRemoteCommunicationClientTest.cpp ------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include "Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h" -#include "GDBRemoteTestUtils.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Host/XML.h" -#include "lldb/Target/MemoryRegionInfo.h" -#include "lldb/Utility/DataBuffer.h" -#include "lldb/Utility/StructuredData.h" -#include "lldb/lldb-enumerations.h" -#include "llvm/ADT/ArrayRef.h" -#include "llvm/Testing/Support/Error.h" -#include "gmock/gmock.h" -#include -#include - -using namespace lldb_private::process_gdb_remote; -using namespace lldb_private; -using namespace lldb; -using namespace llvm; - -namespace { - -typedef GDBRemoteCommunication::PacketResult PacketResult; - -struct TestClient : public GDBRemoteCommunicationClient { - TestClient() { m_send_acks = false; } -}; - -void Handle_QThreadSuffixSupported(MockServer &server, bool supported) { - StringExtractorGDBRemote request; - ASSERT_EQ(PacketResult::Success, server.GetPacket(request)); - ASSERT_EQ("QThreadSuffixSupported", request.GetStringRef()); - if (supported) - ASSERT_EQ(PacketResult::Success, server.SendOKResponse()); - else - ASSERT_EQ(PacketResult::Success, server.SendUnimplementedResponse(nullptr)); -} - -void HandlePacket(MockServer &server, - const testing::Matcher &expected, - StringRef response) { - StringExtractorGDBRemote request; - ASSERT_EQ(PacketResult::Success, server.GetPacket(request)); - ASSERT_THAT(std::string(request.GetStringRef()), expected); - ASSERT_EQ(PacketResult::Success, server.SendPacket(response)); -} - -uint8_t all_registers[] = {'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', - 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'}; -std::string all_registers_hex = "404142434445464748494a4b4c4d4e4f"; -uint8_t one_register[] = {'A', 'B', 'C', 'D'}; -std::string one_register_hex = "41424344"; - -} // end anonymous namespace - -class GDBRemoteCommunicationClientTest : public GDBRemoteTest { -public: - void SetUp() override { - ASSERT_THAT_ERROR(GDBRemoteCommunication::ConnectLocally(client, server), - llvm::Succeeded()); - } - -protected: - TestClient client; - MockServer server; -}; - -TEST_F(GDBRemoteCommunicationClientTest, WriteRegister) { - const lldb::tid_t tid = 0x47; - const uint32_t reg_num = 4; - std::future write_result = std::async(std::launch::async, [&] { - return client.WriteRegister(tid, reg_num, one_register); - }); - - Handle_QThreadSuffixSupported(server, true); - - HandlePacket(server, "P4=" + one_register_hex + ";thread:0047;", "OK"); - ASSERT_TRUE(write_result.get()); - - write_result = std::async(std::launch::async, [&] { - return client.WriteAllRegisters(tid, all_registers); - }); - - HandlePacket(server, "G" + all_registers_hex + ";thread:0047;", "OK"); - ASSERT_TRUE(write_result.get()); -} - -TEST_F(GDBRemoteCommunicationClientTest, WriteRegisterNoSuffix) { - const lldb::tid_t tid = 0x47; - const uint32_t reg_num = 4; - std::future write_result = std::async(std::launch::async, [&] { - return client.WriteRegister(tid, reg_num, one_register); - }); - - Handle_QThreadSuffixSupported(server, false); - HandlePacket(server, "Hg47", "OK"); - HandlePacket(server, "P4=" + one_register_hex, "OK"); - ASSERT_TRUE(write_result.get()); - - write_result = std::async(std::launch::async, [&] { - return client.WriteAllRegisters(tid, all_registers); - }); - - HandlePacket(server, "G" + all_registers_hex, "OK"); - ASSERT_TRUE(write_result.get()); -} - -TEST_F(GDBRemoteCommunicationClientTest, ReadRegister) { - const lldb::tid_t tid = 0x47; - const uint32_t reg_num = 4; - std::future async_result = std::async( - std::launch::async, [&] { return client.GetpPacketSupported(tid); }); - Handle_QThreadSuffixSupported(server, true); - HandlePacket(server, "p0;thread:0047;", one_register_hex); - ASSERT_TRUE(async_result.get()); - - std::future read_result = std::async( - std::launch::async, [&] { return client.ReadRegister(tid, reg_num); }); - HandlePacket(server, "p4;thread:0047;", "41424344"); - auto buffer_sp = read_result.get(); - ASSERT_TRUE(bool(buffer_sp)); - ASSERT_EQ(0, - memcmp(buffer_sp->GetBytes(), one_register, sizeof one_register)); - - read_result = std::async(std::launch::async, - [&] { return client.ReadAllRegisters(tid); }); - HandlePacket(server, "g;thread:0047;", all_registers_hex); - buffer_sp = read_result.get(); - ASSERT_TRUE(bool(buffer_sp)); - ASSERT_EQ(0, - memcmp(buffer_sp->GetBytes(), all_registers, sizeof all_registers)); -} - -TEST_F(GDBRemoteCommunicationClientTest, SaveRestoreRegistersNoSuffix) { - const lldb::tid_t tid = 0x47; - uint32_t save_id; - std::future async_result = std::async(std::launch::async, [&] { - return client.SaveRegisterState(tid, save_id); - }); - Handle_QThreadSuffixSupported(server, false); - HandlePacket(server, "Hg47", "OK"); - HandlePacket(server, "QSaveRegisterState", "1"); - ASSERT_TRUE(async_result.get()); - EXPECT_EQ(1u, save_id); - - async_result = std::async(std::launch::async, [&] { - return client.RestoreRegisterState(tid, save_id); - }); - HandlePacket(server, "QRestoreRegisterState:1", "OK"); - ASSERT_TRUE(async_result.get()); -} - -TEST_F(GDBRemoteCommunicationClientTest, SyncThreadState) { - const lldb::tid_t tid = 0x47; - std::future async_result = std::async( - std::launch::async, [&] { return client.SyncThreadState(tid); }); - HandlePacket(server, "qSyncThreadStateSupported", "OK"); - HandlePacket(server, "QSyncThreadState:0047;", "OK"); - ASSERT_TRUE(async_result.get()); -} - -TEST_F(GDBRemoteCommunicationClientTest, GetModulesInfo) { - llvm::Triple triple("i386-pc-linux"); - - FileSpec file_specs[] = { - FileSpec("/foo/bar.so", FileSpec::Style::posix), - FileSpec("/foo/baz.so", FileSpec::Style::posix), - - // This is a bit dodgy but we currently depend on GetModulesInfo not - // performing denormalization. It can go away once the users - // (DynamicLoaderPOSIXDYLD, at least) correctly set the path syntax for - // the FileSpecs they create. - FileSpec("/foo/baw.so", FileSpec::Style::windows), - }; - std::future>> async_result = - std::async(std::launch::async, - [&] { return client.GetModulesInfo(file_specs, triple); }); - HandlePacket( - server, "jModulesInfo:[" - R"({"file":"/foo/bar.so","triple":"i386-pc-linux"},)" - R"({"file":"/foo/baz.so","triple":"i386-pc-linux"},)" - R"({"file":"/foo/baw.so","triple":"i386-pc-linux"}])", - R"([{"uuid":"404142434445464748494a4b4c4d4e4f","triple":"i386-pc-linux",)" - R"("file_path":"/foo/bar.so","file_offset":0,"file_size":1234}]])"); - - auto result = async_result.get(); - ASSERT_TRUE(result.hasValue()); - ASSERT_EQ(1u, result->size()); - EXPECT_EQ("/foo/bar.so", result.getValue()[0].GetFileSpec().GetPath()); - EXPECT_EQ(triple, result.getValue()[0].GetArchitecture().GetTriple()); - EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), - result.getValue()[0].GetUUID()); - EXPECT_EQ(0u, result.getValue()[0].GetObjectOffset()); - EXPECT_EQ(1234u, result.getValue()[0].GetObjectSize()); -} - -TEST_F(GDBRemoteCommunicationClientTest, GetModulesInfo_UUID20) { - llvm::Triple triple("i386-pc-linux"); - - FileSpec file_spec("/foo/bar.so", FileSpec::Style::posix); - std::future>> async_result = - std::async(std::launch::async, - [&] { return client.GetModulesInfo(file_spec, triple); }); - HandlePacket( - server, - "jModulesInfo:[" - R"({"file":"/foo/bar.so","triple":"i386-pc-linux"}])", - R"([{"uuid":"404142434445464748494a4b4c4d4e4f50515253","triple":"i386-pc-linux",)" - R"("file_path":"/foo/bar.so","file_offset":0,"file_size":1234}]])"); - - auto result = async_result.get(); - ASSERT_TRUE(result.hasValue()); - ASSERT_EQ(1u, result->size()); - EXPECT_EQ("/foo/bar.so", result.getValue()[0].GetFileSpec().GetPath()); - EXPECT_EQ(triple, result.getValue()[0].GetArchitecture().GetTriple()); - EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), - result.getValue()[0].GetUUID()); - EXPECT_EQ(0u, result.getValue()[0].GetObjectOffset()); - EXPECT_EQ(1234u, result.getValue()[0].GetObjectSize()); -} - -TEST_F(GDBRemoteCommunicationClientTest, GetModulesInfoInvalidResponse) { - llvm::Triple triple("i386-pc-linux"); - FileSpec file_spec("/foo/bar.so", FileSpec::Style::posix); - - const char *invalid_responses[] = { - // no UUID - R"([{"triple":"i386-pc-linux",)" - R"("file_path":"/foo/bar.so","file_offset":0,"file_size":1234}]])", - // invalid UUID - R"([{"uuid":"XXXXXX","triple":"i386-pc-linux",)" - R"("file_path":"/foo/bar.so","file_offset":0,"file_size":1234}]])", - // no triple - R"([{"uuid":"404142434445464748494a4b4c4d4e4f",)" - R"("file_path":"/foo/bar.so","file_offset":0,"file_size":1234}]])", - // no file_path - R"([{"uuid":"404142434445464748494a4b4c4d4e4f","triple":"i386-pc-linux",)" - R"("file_offset":0,"file_size":1234}]])", - // no file_offset - R"([{"uuid":"404142434445464748494a4b4c4d4e4f","triple":"i386-pc-linux",)" - R"("file_path":"/foo/bar.so","file_size":1234}]])", - // no file_size - R"([{"uuid":"404142434445464748494a4b4c4d4e4f","triple":"i386-pc-linux",)" - R"("file_path":"/foo/bar.so","file_offset":0}]])", - }; - - for (const char *response : invalid_responses) { - std::future>> async_result = - std::async(std::launch::async, - [&] { return client.GetModulesInfo(file_spec, triple); }); - HandlePacket( - server, - R"(jModulesInfo:[{"file":"/foo/bar.so","triple":"i386-pc-linux"}])", - response); - - auto result = async_result.get(); - ASSERT_TRUE(result); - ASSERT_EQ(0u, result->size()) << "response was: " << response; - } -} - -TEST_F(GDBRemoteCommunicationClientTest, TestPacketSpeedJSON) { - std::thread server_thread([this] { - for (;;) { - StringExtractorGDBRemote request; - PacketResult result = server.GetPacket(request); - if (result == PacketResult::ErrorDisconnected) - return; - ASSERT_EQ(PacketResult::Success, result); - StringRef ref = request.GetStringRef(); - ASSERT_TRUE(ref.consume_front("qSpeedTest:response_size:")); - int size; - ASSERT_FALSE(ref.consumeInteger(10, size)) << "ref: " << ref; - std::string response(size, 'X'); - ASSERT_EQ(PacketResult::Success, server.SendPacket(response)); - } - }); - - StreamString ss; - client.TestPacketSpeed(10, 32, 32, 4096, true, ss); - client.Disconnect(); - server_thread.join(); - - GTEST_LOG_(INFO) << "Formatted output: " << ss.GetData(); - auto object_sp = StructuredData::ParseJSON(std::string(ss.GetString())); - ASSERT_TRUE(bool(object_sp)); - auto dict_sp = object_sp->GetAsDictionary(); - ASSERT_TRUE(bool(dict_sp)); - - object_sp = dict_sp->GetValueForKey("packet_speeds"); - ASSERT_TRUE(bool(object_sp)); - dict_sp = object_sp->GetAsDictionary(); - ASSERT_TRUE(bool(dict_sp)); - - int num_packets; - ASSERT_TRUE(dict_sp->GetValueForKeyAsInteger("num_packets", num_packets)) - << ss.GetString(); - ASSERT_EQ(10, num_packets); -} - -TEST_F(GDBRemoteCommunicationClientTest, SendSignalsToIgnore) { - std::future result = std::async(std::launch::async, [&] { - return client.SendSignalsToIgnore({2, 3, 5, 7, 0xB, 0xD, 0x11}); - }); - - HandlePacket(server, "QPassSignals:02;03;05;07;0b;0d;11", "OK"); - EXPECT_TRUE(result.get().Success()); - - result = std::async(std::launch::async, [&] { - return client.SendSignalsToIgnore(std::vector()); - }); - - HandlePacket(server, "QPassSignals:", "OK"); - EXPECT_TRUE(result.get().Success()); -} - -TEST_F(GDBRemoteCommunicationClientTest, GetMemoryRegionInfo) { - const lldb::addr_t addr = 0xa000; - MemoryRegionInfo region_info; - std::future result = std::async(std::launch::async, [&] { - return client.GetMemoryRegionInfo(addr, region_info); - }); - - HandlePacket(server, - "qMemoryRegionInfo:a000", - "start:a000;size:2000;permissions:rx;name:2f666f6f2f6261722e736f;"); - if (XMLDocument::XMLEnabled()) { - // In case we have XML support, this will also do a "qXfer:memory-map". - // Preceeded by a query for supported extensions. Pretend we don't support - // that. - HandlePacket(server, testing::StartsWith("qSupported:"), ""); - } - EXPECT_TRUE(result.get().Success()); - EXPECT_EQ(addr, region_info.GetRange().GetRangeBase()); - EXPECT_EQ(0x2000u, region_info.GetRange().GetByteSize()); - EXPECT_EQ(MemoryRegionInfo::eYes, region_info.GetReadable()); - EXPECT_EQ(MemoryRegionInfo::eNo, region_info.GetWritable()); - EXPECT_EQ(MemoryRegionInfo::eYes, region_info.GetExecutable()); - EXPECT_EQ("/foo/bar.so", region_info.GetName().GetStringRef()); - EXPECT_EQ(MemoryRegionInfo::eDontKnow, region_info.GetMemoryTagged()); - - result = std::async(std::launch::async, [&] { - return client.GetMemoryRegionInfo(addr, region_info); - }); - - HandlePacket(server, "qMemoryRegionInfo:a000", - "start:a000;size:2000;flags:;"); - EXPECT_TRUE(result.get().Success()); - EXPECT_EQ(MemoryRegionInfo::eNo, region_info.GetMemoryTagged()); - - result = std::async(std::launch::async, [&] { - return client.GetMemoryRegionInfo(addr, region_info); - }); - - HandlePacket(server, "qMemoryRegionInfo:a000", - "start:a000;size:2000;flags: mt zz mt ;"); - EXPECT_TRUE(result.get().Success()); - EXPECT_EQ(MemoryRegionInfo::eYes, region_info.GetMemoryTagged()); -} - -TEST_F(GDBRemoteCommunicationClientTest, GetMemoryRegionInfoInvalidResponse) { - const lldb::addr_t addr = 0x4000; - MemoryRegionInfo region_info; - std::future result = std::async(std::launch::async, [&] { - return client.GetMemoryRegionInfo(addr, region_info); - }); - - HandlePacket(server, "qMemoryRegionInfo:4000", "start:4000;size:0000;"); - if (XMLDocument::XMLEnabled()) { - // In case we have XML support, this will also do a "qXfer:memory-map". - // Preceeded by a query for supported extensions. Pretend we don't support - // that. - HandlePacket(server, testing::StartsWith("qSupported:"), ""); - } - EXPECT_FALSE(result.get().Success()); -} - -TEST_F(GDBRemoteCommunicationClientTest, SendTraceSupportedPacket) { - TraceSupportedResponse trace_type; - std::string error_message; - auto callback = [&] { - std::chrono::seconds timeout(10); - if (llvm::Expected trace_type_or_err = - client.SendTraceSupported(timeout)) { - trace_type = *trace_type_or_err; - error_message = ""; - return true; - } else { - trace_type = {}; - error_message = llvm::toString(trace_type_or_err.takeError()); - return false; - } - }; - - // Success response - { - std::future result = std::async(std::launch::async, callback); - - HandlePacket( - server, "jLLDBTraceSupported", - R"({"name":"intel-pt","description":"Intel Processor Trace"}])"); - - EXPECT_TRUE(result.get()); - ASSERT_STREQ(trace_type.name.c_str(), "intel-pt"); - ASSERT_STREQ(trace_type.description.c_str(), "Intel Processor Trace"); - } - - // Error response - wrong json - { - std::future result = std::async(std::launch::async, callback); - - HandlePacket(server, "jLLDBTraceSupported", R"({"type":"intel-pt"}])"); - - EXPECT_FALSE(result.get()); - ASSERT_STREQ(error_message.c_str(), "missing value at TraceSupportedResponse.description"); - } - - // Error response - { - std::future result = std::async(std::launch::async, callback); - - HandlePacket(server, "jLLDBTraceSupported", "E23"); - - EXPECT_FALSE(result.get()); - } - - // Error response with error message - { - std::future result = std::async(std::launch::async, callback); - - HandlePacket(server, "jLLDBTraceSupported", - "E23;50726F63657373206E6F742072756E6E696E672E"); - - EXPECT_FALSE(result.get()); - ASSERT_STREQ(error_message.c_str(), "Process not running."); - } -} - -TEST_F(GDBRemoteCommunicationClientTest, GetQOffsets) { - const auto &GetQOffsets = [&](llvm::StringRef response) { - std::future> result = std::async( - std::launch::async, [&] { return client.GetQOffsets(); }); - - HandlePacket(server, "qOffsets", response); - return result.get(); - }; - EXPECT_EQ((QOffsets{false, {0x1234, 0x1234}}), - GetQOffsets("Text=1234;Data=1234")); - EXPECT_EQ((QOffsets{false, {0x1234, 0x1234, 0x1234}}), - GetQOffsets("Text=1234;Data=1234;Bss=1234")); - EXPECT_EQ((QOffsets{true, {0x1234}}), GetQOffsets("TextSeg=1234")); - EXPECT_EQ((QOffsets{true, {0x1234, 0x2345}}), - GetQOffsets("TextSeg=1234;DataSeg=2345")); - - EXPECT_EQ(llvm::None, GetQOffsets("E05")); - EXPECT_EQ(llvm::None, GetQOffsets("Text=bogus")); - EXPECT_EQ(llvm::None, GetQOffsets("Text=1234")); - EXPECT_EQ(llvm::None, GetQOffsets("Text=1234;Data=1234;")); - EXPECT_EQ(llvm::None, GetQOffsets("Text=1234;Data=1234;Bss=1234;")); - EXPECT_EQ(llvm::None, GetQOffsets("TEXTSEG=1234")); - EXPECT_EQ(llvm::None, GetQOffsets("TextSeg=0x1234")); - EXPECT_EQ(llvm::None, GetQOffsets("TextSeg=12345678123456789")); -} - -static void -check_qmemtags(TestClient &client, MockServer &server, size_t read_len, - int32_t type, const char *packet, llvm::StringRef response, - llvm::Optional> expected_tag_data) { - const auto &ReadMemoryTags = [&]() { - std::future result = std::async(std::launch::async, [&] { - return client.ReadMemoryTags(0xDEF0, read_len, type); - }); - - HandlePacket(server, packet, response); - return result.get(); - }; - - auto result = ReadMemoryTags(); - if (expected_tag_data) { - ASSERT_TRUE(result); - llvm::ArrayRef expected(*expected_tag_data); - llvm::ArrayRef got = result->GetData(); - ASSERT_THAT(expected, testing::ContainerEq(got)); - } else { - ASSERT_FALSE(result); - } -} - -TEST_F(GDBRemoteCommunicationClientTest, ReadMemoryTags) { - // Zero length reads are valid - check_qmemtags(client, server, 0, 1, "qMemTags:def0,0:1", "m", - std::vector{}); - - // Type can be negative. Put into the packet as the raw bytes - // (as opposed to a literal -1) - check_qmemtags(client, server, 0, -1, "qMemTags:def0,0:ffffffff", "m", - std::vector{}); - check_qmemtags(client, server, 0, std::numeric_limits::min(), - "qMemTags:def0,0:80000000", "m", std::vector{}); - check_qmemtags(client, server, 0, std::numeric_limits::max(), - "qMemTags:def0,0:7fffffff", "m", std::vector{}); - - // The client layer does not check the length of the received data. - // All we need is the "m" and for the decode to use all of the chars - check_qmemtags(client, server, 32, 2, "qMemTags:def0,20:2", "m09", - std::vector{0x9}); - - // Zero length response is fine as long as the "m" is present - check_qmemtags(client, server, 0, 0x34, "qMemTags:def0,0:34", "m", - std::vector{}); - - // Normal responses - check_qmemtags(client, server, 16, 1, "qMemTags:def0,10:1", "m66", - std::vector{0x66}); - check_qmemtags(client, server, 32, 1, "qMemTags:def0,20:1", "m0102", - std::vector{0x1, 0x2}); - - // Empty response is an error - check_qmemtags(client, server, 17, 1, "qMemTags:def0,11:1", "", llvm::None); - // Usual error response - check_qmemtags(client, server, 17, 1, "qMemTags:def0,11:1", "E01", - llvm::None); - // Leading m missing - check_qmemtags(client, server, 17, 1, "qMemTags:def0,11:1", "01", llvm::None); - // Anything other than m is an error - check_qmemtags(client, server, 17, 1, "qMemTags:def0,11:1", "z01", - llvm::None); - // Decoding tag data doesn't use all the chars in the packet - check_qmemtags(client, server, 32, 1, "qMemTags:def0,20:1", "m09zz", - llvm::None); - // Data that is not hex bytes - check_qmemtags(client, server, 32, 1, "qMemTags:def0,20:1", "mhello", - llvm::None); - // Data is not a complete hex char - check_qmemtags(client, server, 32, 1, "qMemTags:def0,20:1", "m9", llvm::None); - // Data has a trailing hex char - check_qmemtags(client, server, 32, 1, "qMemTags:def0,20:1", "m01020", - llvm::None); -} - -static void check_Qmemtags(TestClient &client, MockServer &server, - lldb::addr_t addr, size_t len, int32_t type, - const std::vector &tags, const char *packet, - llvm::StringRef response, bool should_succeed) { - const auto &WriteMemoryTags = [&]() { - std::future result = std::async(std::launch::async, [&] { - return client.WriteMemoryTags(addr, len, type, tags); - }); - - HandlePacket(server, packet, response); - return result.get(); - }; - - auto result = WriteMemoryTags(); - if (should_succeed) - ASSERT_TRUE(result.Success()); - else - ASSERT_TRUE(result.Fail()); -} - -TEST_F(GDBRemoteCommunicationClientTest, WriteMemoryTags) { - check_Qmemtags(client, server, 0xABCD, 0x20, 1, - std::vector{0x12, 0x34}, "QMemTags:abcd,20:1:1234", - "OK", true); - - // The GDB layer doesn't care that the number of tags != - // the length of the write. - check_Qmemtags(client, server, 0x4321, 0x20, 9, std::vector{}, - "QMemTags:4321,20:9:", "OK", true); - - check_Qmemtags(client, server, 0x8877, 0x123, 0x34, - std::vector{0x55, 0x66, 0x77}, - "QMemTags:8877,123:34:556677", "E01", false); - - // Type is a signed integer but is packed as its raw bytes, - // instead of having a +/-. - check_Qmemtags(client, server, 0x456789, 0, -1, std::vector{0x99}, - "QMemTags:456789,0:ffffffff:99", "E03", false); - check_Qmemtags(client, server, 0x456789, 0, - std::numeric_limits::max(), - std::vector{0x99}, "QMemTags:456789,0:7fffffff:99", - "E03", false); - check_Qmemtags(client, server, 0x456789, 0, - std::numeric_limits::min(), - std::vector{0x99}, "QMemTags:456789,0:80000000:99", - "E03", false); -} diff --git a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp b/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp deleted file mode 100644 index 6ab37599ae3..00000000000 --- a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationServerTest.cpp +++ /dev/null @@ -1,72 +0,0 @@ -//===-- GDBRemoteCommunicationServerTest.cpp ------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "GDBRemoteTestUtils.h" -#include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h" -#include "lldb/Utility/Connection.h" -#include "lldb/Utility/UnimplementedError.h" - -namespace lldb_private { -namespace process_gdb_remote { - -TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_ErrorNumber) { - MockServerWithMockConnection server; - server.SendErrorResponse(0x42); - - EXPECT_THAT(server.GetPackets(), testing::ElementsAre("$E42#ab")); -} - -TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_Status) { - MockServerWithMockConnection server; - Status status; - - status.SetError(0x42, lldb::eErrorTypeGeneric); - status.SetErrorString("Test error message"); - server.SendErrorResponse(status); - - EXPECT_THAT( - server.GetPackets(), - testing::ElementsAre("$E42;54657374206572726f72206d657373616765#ad")); -} - -TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_UnimplementedError) { - MockServerWithMockConnection server; - - auto error = llvm::make_error(); - server.SendErrorResponse(std::move(error)); - - EXPECT_THAT(server.GetPackets(), testing::ElementsAre("$#00")); -} - -TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_StringError) { - MockServerWithMockConnection server; - - auto error = llvm::createStringError(llvm::inconvertibleErrorCode(), - "String error test"); - server.SendErrorResponse(std::move(error)); - - EXPECT_THAT( - server.GetPackets(), - testing::ElementsAre("$Eff;537472696e67206572726f722074657374#b0")); -} - -TEST(GDBRemoteCommunicationServerTest, SendErrorResponse_ErrorList) { - MockServerWithMockConnection server; - - auto error = llvm::joinErrors(llvm::make_error(), - llvm::make_error()); - - server.SendErrorResponse(std::move(error)); - // Make sure only one packet is sent even when there are multiple errors. - EXPECT_EQ(server.GetPackets().size(), 1UL); -} - -} // namespace process_gdb_remote -} // namespace lldb_private diff --git a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationTest.cpp b/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationTest.cpp deleted file mode 100644 index 3150477c4e9..00000000000 --- a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationTest.cpp +++ /dev/null @@ -1,67 +0,0 @@ -//===-- GDBRemoteCommunicationTest.cpp ------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include "GDBRemoteTestUtils.h" -#include "llvm/Testing/Support/Error.h" - -using namespace lldb_private::process_gdb_remote; -using namespace lldb_private; -using namespace lldb; -typedef GDBRemoteCommunication::PacketResult PacketResult; - -namespace { - -class TestClient : public GDBRemoteCommunication { -public: - TestClient() - : GDBRemoteCommunication("test.client", "test.client.listener") {} - - PacketResult ReadPacket(StringExtractorGDBRemote &response) { - return GDBRemoteCommunication::ReadPacket(response, std::chrono::seconds(1), - /*sync_on_timeout*/ false); - } -}; - -class GDBRemoteCommunicationTest : public GDBRemoteTest { -public: - void SetUp() override { - ASSERT_THAT_ERROR(GDBRemoteCommunication::ConnectLocally(client, server), - llvm::Succeeded()); - } - -protected: - TestClient client; - MockServer server; - - bool Write(llvm::StringRef packet) { - ConnectionStatus status; - return server.Write(packet.data(), packet.size(), status, nullptr) == - packet.size(); - } -}; -} // end anonymous namespace - -TEST_F(GDBRemoteCommunicationTest, ReadPacket_checksum) { - struct TestCase { - llvm::StringLiteral Packet; - llvm::StringLiteral Payload; - }; - static constexpr TestCase Tests[] = { - {{"$#00"}, {""}}, - {{"$foobar#79"}, {"foobar"}}, - {{"$}}#fa"}, {"]"}}, - {{"$x*%#c7"}, {"xxxxxxxxx"}}, - }; - for (const auto &Test : Tests) { - SCOPED_TRACE(Test.Packet + " -> " + Test.Payload); - StringExtractorGDBRemote response; - ASSERT_TRUE(Write(Test.Packet)); - ASSERT_EQ(PacketResult::Success, client.ReadPacket(response)); - ASSERT_EQ(Test.Payload, response.GetStringRef()); - ASSERT_EQ(PacketResult::Success, server.GetAck()); - } -} diff --git a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteTestUtils.cpp b/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteTestUtils.cpp deleted file mode 100644 index 6718d0c1ed9..00000000000 --- a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteTestUtils.cpp +++ /dev/null @@ -1,23 +0,0 @@ -//===-- GDBRemoteTestUtils.cpp --------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "GDBRemoteTestUtils.h" -#include "lldb/Host/Socket.h" -#include "llvm/Testing/Support/Error.h" - -namespace lldb_private { -namespace process_gdb_remote { - -void GDBRemoteTest::SetUpTestCase() { - ASSERT_THAT_ERROR(Socket::Initialize(), llvm::Succeeded()); -} - -void GDBRemoteTest::TearDownTestCase() { Socket::Terminate(); } - -} // namespace process_gdb_remote -} // namespace lldb_private diff --git a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteTestUtils.h b/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteTestUtils.h deleted file mode 100644 index 27ce6b9b26f..00000000000 --- a/gnu/llvm/lldb/unittests/Process/gdb-remote/GDBRemoteTestUtils.h +++ /dev/null @@ -1,91 +0,0 @@ -//===-- GDBRemoteTestUtils.h ------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#ifndef LLDB_UNITTESTS_PROCESS_GDB_REMOTE_GDBREMOTETESTUTILS_H -#define LLDB_UNITTESTS_PROCESS_GDB_REMOTE_GDBREMOTETESTUTILS_H - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h" -#include "lldb/Utility/Connection.h" - -namespace lldb_private { -namespace process_gdb_remote { - -class GDBRemoteTest : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); -}; - -class MockConnection : public lldb_private::Connection { -public: - MockConnection(std::vector &packets) { m_packets = &packets; }; - - MOCK_METHOD2(Connect, - lldb::ConnectionStatus(llvm::StringRef url, Status *error_ptr)); - MOCK_METHOD5(Read, size_t(void *dst, size_t dst_len, - const Timeout &timeout, - lldb::ConnectionStatus &status, Status *error_ptr)); - MOCK_METHOD0(GetURI, std::string()); - MOCK_METHOD0(InterruptRead, bool()); - - lldb::ConnectionStatus Disconnect(Status *error_ptr) { - return lldb::eConnectionStatusSuccess; - }; - - bool IsConnected() const { return true; }; - size_t Write(const void *dst, size_t dst_len, lldb::ConnectionStatus &status, - Status *error_ptr) { - m_packets->emplace_back(static_cast(dst), dst_len); - return dst_len; - }; - - lldb::IOObjectSP GetReadObject() { return lldb::IOObjectSP(); } - - std::vector *m_packets; -}; - -class MockServer : public GDBRemoteCommunicationServer { -public: - MockServer() - : GDBRemoteCommunicationServer("mock-server", "mock-server.listener") { - m_send_acks = false; - m_send_error_strings = true; - } - - PacketResult SendPacket(llvm::StringRef payload) { - return GDBRemoteCommunicationServer::SendPacketNoLock(payload); - } - - PacketResult GetPacket(StringExtractorGDBRemote &response) { - const bool sync_on_timeout = false; - return WaitForPacketNoLock(response, std::chrono::seconds(1), - sync_on_timeout); - } - - using GDBRemoteCommunicationServer::SendErrorResponse; - using GDBRemoteCommunicationServer::SendOKResponse; - using GDBRemoteCommunicationServer::SendUnimplementedResponse; -}; - -class MockServerWithMockConnection : public MockServer { -public: - MockServerWithMockConnection() : MockServer() { - SetConnection(std::make_unique(m_packets)); - } - - llvm::ArrayRef GetPackets() { return m_packets; }; - - std::vector m_packets; -}; - -} // namespace process_gdb_remote -} // namespace lldb_private - -#endif // LLDB_UNITTESTS_PROCESS_GDB_REMOTE_GDBREMOTETESTUTILS_H diff --git a/gnu/llvm/lldb/unittests/Process/gdb-remote/PortMapTest.cpp b/gnu/llvm/lldb/unittests/Process/gdb-remote/PortMapTest.cpp deleted file mode 100644 index 496a55be7ff..00000000000 --- a/gnu/llvm/lldb/unittests/Process/gdb-remote/PortMapTest.cpp +++ /dev/null @@ -1,115 +0,0 @@ -//===-- PortMapTest.cpp ---------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "llvm/Testing/Support/Error.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h" - -using namespace lldb_private::process_gdb_remote; - -TEST(PortMapTest, Constructors) { - // Default construct to empty map - GDBRemoteCommunicationServerPlatform::PortMap p1; - ASSERT_TRUE(p1.empty()); - - // Empty means no restrictions, return 0 and and bind to get a port - llvm::Expected available_port = p1.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::HasValue(0)); - - // Adding any port makes it not empty - p1.AllowPort(1); - ASSERT_FALSE(p1.empty()); - - // So we will return the added port this time - available_port = p1.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::HasValue(1)); - - // Construct from a range of ports - GDBRemoteCommunicationServerPlatform::PortMap p2(1, 4); - ASSERT_FALSE(p2.empty()); - - // Use up all the ports - for (uint16_t expected = 1; expected < 4; ++expected) { - available_port = p2.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::HasValue(expected)); - p2.AssociatePortWithProcess(*available_port, 1); - } - - // Now we fail since we're not an empty port map but all ports are used - available_port = p2.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::Failed()); -} - -TEST(PortMapTest, FreePort) { - GDBRemoteCommunicationServerPlatform::PortMap p(1, 4); - // Use up all the ports - for (uint16_t port = 1; port < 4; ++port) { - p.AssociatePortWithProcess(port, 1); - } - - llvm::Expected available_port = p.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::Failed()); - - // Can't free a port that isn't in the map - ASSERT_FALSE(p.FreePort(0)); - ASSERT_FALSE(p.FreePort(4)); - - // After freeing a port it becomes available - ASSERT_TRUE(p.FreePort(2)); - available_port = p.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::HasValue(2)); -} - -TEST(PortMapTest, FreePortForProcess) { - GDBRemoteCommunicationServerPlatform::PortMap p; - p.AllowPort(1); - p.AllowPort(2); - ASSERT_TRUE(p.AssociatePortWithProcess(1, 11)); - ASSERT_TRUE(p.AssociatePortWithProcess(2, 22)); - - // All ports have been used - llvm::Expected available_port = p.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::Failed()); - - // Can't free a port for a process that doesn't have any - ASSERT_FALSE(p.FreePortForProcess(33)); - - // You can move a used port to a new pid - ASSERT_TRUE(p.AssociatePortWithProcess(1, 99)); - - ASSERT_TRUE(p.FreePortForProcess(22)); - available_port = p.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::Succeeded()); - ASSERT_EQ(2, *available_port); - - // proces 22 no longer has a port - ASSERT_FALSE(p.FreePortForProcess(22)); -} - -TEST(PortMapTest, AllowPort) { - GDBRemoteCommunicationServerPlatform::PortMap p; - - // Allow port 1 and tie it to process 11 - p.AllowPort(1); - ASSERT_TRUE(p.AssociatePortWithProcess(1, 11)); - - // Allowing it a second time shouldn't change existing mapping - p.AllowPort(1); - llvm::Expected available_port = p.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::Failed()); - - // A new port is marked as free when allowed - p.AllowPort(2); - available_port = p.GetNextAvailablePort(); - ASSERT_THAT_EXPECTED(available_port, llvm::HasValue(2)); - - // 11 should still be tied to port 1 - ASSERT_TRUE(p.FreePortForProcess(11)); -} diff --git a/gnu/llvm/lldb/unittests/Process/minidump/CMakeLists.txt b/gnu/llvm/lldb/unittests/Process/minidump/CMakeLists.txt deleted file mode 100644 index ad5f1883147..00000000000 --- a/gnu/llvm/lldb/unittests/Process/minidump/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -add_lldb_unittest(LLDBMinidumpTests - MinidumpParserTest.cpp - RegisterContextMinidumpTest.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbTarget - lldbPluginProcessUtility - lldbPluginProcessMinidump - lldbUtilityHelpers - LLVMTestingSupport - LINK_COMPONENTS - ObjectYAML - Support - ) - -set(test_inputs - fizzbuzz_no_heap.dmp - fizzbuzz_wow64.dmp - linux-x86_64.dmp - regions-memlist64.dmp - ) - -add_unittest_inputs(LLDBMinidumpTests "${test_inputs}") diff --git a/gnu/llvm/lldb/unittests/Process/minidump/Inputs/fizzbuzz_no_heap.dmp b/gnu/llvm/lldb/unittests/Process/minidump/Inputs/fizzbuzz_no_heap.dmp deleted file mode 100644 index 19008c91fc3ea056d7b1e10bcf2079bfdf51ed08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6297 zcmeHKeN0nV6h8&TPlgOZHxV1g%(6K`DKSQ!AQToOjM{?8Rve{$LZL0#_Q52|5ZvNY z(YZMx`(v5^Y)dqoX71AwmWYdsBx8wLNR}o3Ap%MwZf0VPbiZ?7A74SpG&5V)`*QBN z_uO-S=iKw|JMX=GL%#9dk560Y6Ok6gZU5nsB3i7B!@<%)g<(W7;CY|}7)O8~1iu8D zgK;vbl0Y8V6Nbb195;HiuqK=7jEmK|!f zN&!bYz7M()Y)O8+;9`Fh7asAr8vz``O-D*eja940&~vYmhgbg82}uGD++G|Cws{%% zXAz{CpozAu7!E;_Vb=$vH+pz!+O{!P**{VgUfM1lOUdIeZSXaMYsvw+|Ix!^>&=u>|UauUwp4^?s>7R6d)plo@;_ zAP6%mhllD!b&*ILtT)vd@w4y|D4W)ig^I{4G`$#GQEzOxxB~f5F)U=D8q8%;hun~{ z);3^zA+w^gD0NFly>dWPOKFq}d_A;`z^I`rVB3OrTEuwd1PbtkTrAXlDnWv{c_SHq(RC=w9#*v&YK z;crB-g>uM5FQLz)EZT&7kuw1)YZfFQyt{;V3*H)Lq)MG z+3PGtUdiLNSY0-o)#IzQ7;0>?OLF_XmTeBNY;|hQKH2W5(Wa&9^cJJ1rb@D5ZKtE5 zp@t*ssDu=qxg>DRpa$BB}+@<;r)D(wh05I3Z_ zDg=N4WHSI7CIKq2lY0F3j5oYiCoTR*C;XYHhR&Pgal(j>cJGN7FNE4Q18G|f)H6IP zJ|9E^uy^L;KelO#7@r&?!#XO1eL+k-oze6Pn`F#gjq#KUUZr0w^Cw9y#?9?=J&#M$ z%NzoLJIookzwU9FX#@1qZ|YFC1A!df?s~`krxRK20OUom7eAB1cv!Bs`^nYy5D#S_ Slz~tNLKz5UAe4cJ&%j@zKl0cB diff --git a/gnu/llvm/lldb/unittests/Process/minidump/Inputs/fizzbuzz_wow64.dmp b/gnu/llvm/lldb/unittests/Process/minidump/Inputs/fizzbuzz_wow64.dmp deleted file mode 100644 index 3d97186f2cd210eb6249f660d6137b0a5f5942b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9280561 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

3Ngu*~j!6iGLhSg6Z%8JOZ;|0hnG&%a>lsDQw(x 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

trsuNmw! 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 z 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

(nBOEEbbpZN7ksD5 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≫ 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%0DxTpfb9SP7XaYj0Dw0D0G|N> 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 z z1|@5`^ITBxa84>ILmRx(c0gG{+7+Os%Doz(x)c(jE`LaS9ukr!!44OVWTDgv?n`cX zSKl@Ui=`%@6p$aKG@z)#!5{iR4+f-vl8{odA}a}y^yOZY1Yj1fmvl`Yh;UbpmTN>f zoSPvDN{&V;L+^Ox59*x+`3=2O5iSD{uRI-Z(28K`^;)55?x`ohN$;mf5yly{UDK*m z8f$x3j3TYnx2HPYfWzC@;jq3H2kNyJ{SWKltN*)XzLHa4=gG>@Qg5pR+LrYhCo8Th z`x^SarK}R`{X)GPx$cr-fxctx1+grR(j78tduQmH$_AhZ>(Gzgxihi=^dKisLl06v z_T?7K4ZZs#Z0J1@aYJt{!ZhB#LO2?fpqhAYjl2xA$18tla1dmefH^e0qwgr%C>O^$ zWVlz}wKt7((*G-*S`*Ce1D}>z+@-k}W-zzh6&cl|W3B6}p z(t&&L!Y=?m64$mDJ@K>UgRs$KXUOkgD!C_qr{<{!8l&>5%a$MSwKec%w}Km>PMaYG zEeX7Q%NGkgQ4`*A3e0VU6NUH9_Fsn&Nb@X)y9J!4ch&WI-+xHI6zA}_Kc2gBxvRD_ z$z?5vF`Qdm=zUe)?NKCIn~S{)c#O^11aPaOH^w*NEyW5$5#G4GUNY0Nb)%fyMwj?1 z=`|?+Dpjug2JddhyT>!>y~lXtu~PR_(L#saj8`=~?Uneyi8tZtFCK)<@mSI{nm|2 zAFbhS(V1D$d+Bx0LUZ+vhFbkL*3imbwfY0BiIs;O zm35x)@w)H}l@lD5=N4UAg{sYpMOXTe2xjWI>>^2l5?{7OSMZ)}Y9KN%m{cUEmzNiH zAnF@l>cm#n349ma2L>KXqo^-SBj4Z&Aw_{puv6cFfpNm%L2qZfe@3NzLri6pxd*Xt z@?r0>pm9`cI`5h`*=PJ@@`uKZu^nl&ZI+McXUiSMedYX#MJJA+1GD&YCG~-=v3ZE_ zAUAghb$me;C6b$c9k>W^hlbfCob>yhY8>!0tiYY^pY5a@%zs|^^cw#{nC zlWB-Kp6rXyxQ&*sPL|Cu#^5PexCi&hZqT}HytLbYqH_cBJo_G>qO`4|@ypp((YWF+bm%T)H>nzj zowD#LY6lzYd`hq|87yi~L@(s=ggn8`wAiaHoy4NYJMl>%K+fGI0mcm8V)gmY9j#zZL4TyvL#Mqosd+?_j{<0fLro-?>jWgHjhQmsfwk%C>+ z>-NTfJf19ryWF4QOwqgv=zOBts%bo2LWob%=JOmP{jX3&;jn92K^E+LJsE)e8yEaS_k7T?9L}i zN7(~5K05|e76XlPJV}M!w?PK5ljxgJ`#t(bTLQJ4Go#^~g@*6J3JcQsay5p9b3-&r zt-|H77a)Y8;jqtRfxbEqUK-DO)n3IY{T&+?AmG@rgg))dSa=0K&3BSeP7*4A0L@?4 zaqQDpeE@Mv5jxud6guZV42y>$oFC8nEQU!*LcSr4nn9wFDFfqb&4IjgCDn!T`~>-F za@9IvIE>UfB)n_7cZLuA4`Ve=9IHi1PW}2UgTu1gVOiro-;oWz=7Fo0v4Q(85PjlA zQizsN(!Boexb#~`x%A(TcIm$}xb)k`xb)k{y7W6TUHYBl zT>4$(UHaWwF8!Wtm;U<+F8$t#F8vRaT>5=EF8%(QF8zUAm;T2*m;Rv9rT;14r9U*w zrT@9WrT?YSrT?|arLUXq(*IWM(jT7V(*IuK(jO^x>HjEm>5tBJ>Hjpj^zL$(zTWK8 zAG5gh$17a=6IPf0uX!&0$@wn*sRvy82CYkfI@F~<6Xw#N)w%TN!d?2mBV79PkuLp( zD3`u5+NHl3Mcsf~HzBVVHq2MKPdS&@E)jGAUTI!If)@`&k#w@(o)~K!2*c$INt8I;gEJI+z z*K+hGi{tmPApHz^ysxcVe!QoxF?qoqw#G>hb#|t`Y`fUQ8f2^f>^SuDHJ_n&NOaXn z$E7-G$hY1xV=~!vwgjsl{(&ZwK6rr3)+p*m#UFs41O+vbf-04yoNO4CZatb|uU0L2 zhm~s7;mfCPNGQG%ycx*8p$yA}3^jFr$kVS{#c{|*Y8%m<^&*r8>m-NQH`dfCDI3=y z6S7Gw`ZQzZ*@9R$u8Fc`5?DhWGMB-vmI7p4GW1#;8nt);q(IA=!quFv`uN|X zX@kLJJJFX$M5Tfs-ix)rft`Snwe@xv9@Pd&j8S6)B$BtKkz{nQ42c<}X8&+x;^2E2~U=P*p`qz3mV zO+emWe1rR41Y`}Wb^3Gc^9=iJV4o-1=Lzz~6dO??E}f|#DYoccrTp42@L{Q2P;s?=lcOSh?RBS`tSN;hY|O|{PA=BFyMJW-kM z$ygdhkL^C`3@>+B6vt(_Nkz6}oVkZ;-PB{59;-ad9Vuoy?hK!XOh`W=q@O^#BFjy0 zVId|h=_iHslSo%)xoI`Eb$Wx4-hgy1TxWGe{54a({YN`Z*!}9MZdIxu0rI zmro-_up2Gb>e9Lz&7ZOzQ;#^qCALPT z>fvClN4zaj*_H6)POBEn;X8+&LuKd~s_%#)i`gw2sF`}^D?GDZUH_MiCiW4)i}mDy z2I`>Au!EYQV!x$w{H z_dxnt2%*egDx+FFkG}gg`5u&x@_{V< z0Ma|M^o)Z-dBPSde;WRI{XwMvi4f{PB$WS=(oudlOFtx0EqMesPW?ufDdV7O-S`6- zse3UD_wkKX3@{<9k!^HX@V#%@Bikg?D;<_|2=9{V&(-`XmARa$(UFb}w`2SX$J7Rg zr7>YJ3<=fJQm|~EI{X3qPv{>ubB3ZqUcbeW(hG`rmiKqCd$rrLvw*X#JI6rp1f}>{ zjB}Ltm0dV4x8?TbFavg>V3Ro>Bgq*riEC6XK8;xzSE*1fbt6E1p|byi&=^COL+3u% zgmZZ;jk>Lv2KkOI!}!`^_y zIq})c_$Wm_xn4eWWYBp%^{&CoM*%P(ag=TOD2UHK#-~B#bE}t65aUCmK;h-1bl=AK zG_>WTBt8cipA#aV?=g~@cD_a6yq-o&HA1AFa<%)1%OuZ( zU^5PpK$sAf;KX1C)PUP!Iy>4eg_%Grq2MIS^)jv7>aN||ePz*ITWz&nsj-SCLJ26< zs8rKJZR}>-n@-wBr6Fp{yx-@XJCg}N+U_6k%jZMp-t+rB=Q+>sb8cII!d+<8yZ!su z)%ojP8)`-ZM{;6SAsIr6bv@PD`>apJffmF48CmEOhdJVc7h>=hV zQT>y~E>W0_gs4TvF43Cou}%>7_iJJQ#T#v5Uo6sMGK7JgXI@|&u- z+kYJGYPZs^8cQn3_O%Ou+vc=Os*s#wYfk=CuUG$~`3=vl@tQL?mF zb(Rh86SXSuxK>s4x3nr7&?{HkfF9SXe(9FQv~?)}Et*w$OauB8s<;~iCPo6u$WrwG z7B(x@6wo2O|D`z%y2@;v4QkN+bj8V_`|UA}v*n`1%UB~pc@ow1ba2zKngpz}A?V)+ zHn_}cr;!lwCA~W=OqxcAyzCfKkBfO!YHb}4>ggh$&XBxvV`CA& z*UT~MN^F!m1LHxsQiJAuL`Mh)seUs^n^71}Lq{rMOHDw&KWN2oPD6fvHsm+z=C7ss z47J$L*25@p`-p~o>551l5SLVe{7d{Q$jhEjsASov{l>0?BpAEIlG39LE8^=mcFCG) z`+)UjEGg!w-mFs0o~JhyzC{mXFOeY3(tq5u{a!)!4z~bS(GQG~!yBXzP0a5i`(b)(?qrw-+YbV&ryP-c(>z ziF^BnOq0`VQZol0Vg~y7Ro(gON7p@N_uuF?a>dq(ZB|B|fqq8)Jtg!(q^(1xvH;M+ zIU4(W1cL~8La^ru;3X}xLY{uZlUf3yu#C*}w5!Do z=7QUvr$5lfD`S^{&e%0hbhUNnc`+gOD5I4N2xHnTrCf_~zo^XGtm{86c2&V|M<|FL ziwEqg<@_kS>eYz3R5M!@lRuH4q4G{wSbb}fWY6Z;S`lbb=)nR%D6zRY|6d+B*I zTS?QD`dpqAvexk+<5x7e<7VCxs+d9w1OpO`U5okK(^1XeVg-euN?k606D#;@%_EdX z(Ou8>?}N%_ht#kW9#jdpkPx|YrHCb76b|qxQN%BXYBN!y9)O{^s9KCVw?d@4X=b8a z<#=1n#2lSf#N*}q@hme@sj^E*tJY~)k`s&c33FQ{5n@`$ComS1G*rv!{WY%vn>K3<{ z_1k!>@h@%t6CzPCr+5^L0LBCW5**tUh`;PIC{-pQj`-*0Sd z*J1|=x-iF`*6TRQz>U@$>K&$MXh$|~1?j*Gv53I=Ee46?}zk~{9OAhw1J)!Vous>*> zug5&Ther)%=LUPJX?;_adbpft`)dLKwNd@YaaDV^cWH>Qp0bBq49K=}aRKvOa7X&B zbCR|~<=XUh~cHXNV=D=OgPuwqECFNV$2Hhi`5Zl{0koOSP+ZDW~5glW&#w7_%S z|CP*)lUK!#tlvRRDpLL)&-MzI(H20bg>TpGKd~%}*2v<9f>!Sz=<|`Kyo~cl$xl#CLi?MqVZ=R<=)SM1U&yh&jYJRi>64p4& z?lu%OyJ3s6j*2Z_&WNx^E2b#*X7wa<&3$I0+q~Xo+%HS3*`$n8vq>4HsSr`KNy!<< zsWIzXp=QG!BWZ~{&ED|KE!U8_zg|Or+~;N!_|DwCNn2jb$mL>DwLOpQJy&?6uHK}p z$J<=FvB^F8PdV49XvI$GJ;vzl+L*|$R>{!|u8w~4>S*58$xBkPnWNCRjCdfj+>o)*iG1)aW1-7vz&)_) zz{LKmB#uGc4Y8Zdm{+Wv;Zfks1XAnW))!=dj&`KlR;J-KD-`Y$XysVtOBJxw8D|ji z5Pnc+P1RW~@nv&zjLox?Gt3w^ZZ9tXHg9C}%J&};5EV<$=BTKgH)Txyk-6cuT*PFZ zn`8$ZHk$jfDf*gS*q^E;yk{rlX%w^IbHT>Q@ztSJ@x40kAtwEkd&=Y@qBd4bq7mY|an>w^*{X8|d^dWd01g4U~0%01?-Rw{NR zRqRw9P^>2~212GP4*TEVbUq>&E|S*5=Pw2~k{%iyU^%R+-z%8-ng^mTlB_R7kIjA7 zKa-rspGZ;oUYTK~6uotTxTpb)&DSfB=#An8Qs~3Vf=X`2Db0NEcc9XF*+ZOt;t;X* z*#nfJ6nh!9w45q-%lHHR)>Iiokw!hn@T834sX+l5CRvwstPH?kn%EVJQuiOz(CF9D zh#WTp1K70@SlepYEZD8+8l+Jzq>78^k=*1Z*#o{K(~1pK+OP+V!PojCBY80s5Ozxa zVS*I;Q)r-ObT89yMj9K{8#!_H2^11(><27&Ms+wnY1I1fJvHua9a{VKeoK=&6*D7b zD~lv$b4yJp&tNp!tkO`buywEa7i>jOQufWUm^t%9A2e+I{!-?I!q#{F9s-OF>l#z zeF$q&?Bo64GBhbcbF=m(p3B6o=yjmnwRR<&;Iv>(T@k~M9G)tMK;o-7tu&Hzm|v7k6z{8 zFV(Gon%Mk3nElt6naf=9M;;{Gu}uZpm=csDVv|{5blfYywN9hsJ|4RJop=$9!~;BQ zHyqt}zvFC(ID$sts5OJ;mH8RQ=3C}${frqn8t-zMO)j%&x)B_ehvn0qMsQ3&x#G7t z9T+PNuX)30yxWb9!{6jw_v+R*wFRinUX{*_`(=EhgbP-;%o;_U`RhSH!`2^0q3s9E zQMiFUoGa|%Y?OgWxAUi)8)YcQrs+-@Q6bA_Lz(a2EVKqBl&iS4zF0mR#IyGQy7c2bE#0! z^znkiL^dHab((?MSP$x-6SY`$K%V!a4_9`c^nL0+byJU?}=V{Xrx-qrTS^OWh%}8aH*H0`Wrv;6drW`K2&;gKbN4_OfFlQG%fN^T3+P6uu*5D6*79 zp_17DNF?;hXnsnnbxH&M6&m(IG$w z`6>={q*||H4}Z)7HXtNcbSXOQb((F@8OvW)G_c4kFGa5^InWh$(gGAsE|DWO&LX>VP@GxoZqJhOQ00u$l&!PWAXLZI$J+sW71h* zbLvaZV7R|fA><>fs2AkTXN3mExDN7tsUl?tj^MjB8(bZ)M;FAagy=e=mmCX}$V$e} zH)~yaJ?12z%X8;L0Hoo1q6@99%!q!I9&(N4mDrb$#MczM9K2$6HkW#w#?nHk{pR)< z?!uaQkK5nex9*>1LcN|uCv8bMNS$j+ojX=&^5cwdGy|0*j?(B_v#raFl^R!>H|#Z< zpt1XnW%O~-sCCO?>wUTG`cSYT{E(hqPn8U)BwATEPR&2=G#q~_){hF9pa z-&SRdfW*ZTM{*X^q%&XhmKYqe9GBS^nRgoEyeo*$l*-OQ1C*t-c|*Vd4Ntq+$AB|I zR2TTB3bpXGf13i~e&N|U)@Agxa^;{Hj7&URS3CXPt>@Sy^t6A8sWym)=*X;ntrlZ@MT87tV&NkHkE~5Zl*r=uT{RRuD;4JDU_NrKa zv{>yaoK&!4XUdz*w_b%P`C><+i!@E}1&%~NZ|hr!`g_DqLZ8ExK@?%H^}u0xN@a$1RtiH|K-%AAozE@&|A%#YPhy>s zU&zKjnRWgI8hJX_`NLn1v(CuU@Cupc3esenS~gNVPIwkf5h+fndY7W=dlgmRuc-P# zrGa->>!~NeLnRwLe1dGSL5T#?u1Rz?F1pweB^#{PgmPbWI+g>WkU}pJ4~mij!~;o# z)+GW$`CQg6v@E2ci4p>$(i?B5r+Jd7WW5Av(lM^#2N+&>qs;W5NS2vuAtljv5Vp*a z4l_WpuHXrc4H&WQM(kb=s|XD4d;hWVqbaeovX7vEj|IY^R+P%r6%(5{d(ZY)WN)jZ zTv{$N)oCpQ3>WE3cTfB)>R#omaa<_o4|biTLSYgf%&+2 z`drXj4dvCS^<0`;blFmwwsEjypjYLoSYIl3$V$F1wo}jcpQ_ZkV(*FdTR*o`pCA?Y zhyRszXKk1qe>vrA-rnjVcIxGn`34J-oFq>-Y{yY-)>q=7Z+pOheBHDS`M&1+S_^fN z0`rFZjJ5%z0Y?8&I`_e>+y_-I*1Sj4xesUMKCE)xX4{kL+{d$WA6L0(a8DTxCFTvC zM#D_&O8_QAChEcu2v(JlCUWOqqZ!dxVU>8zIL_Ag=3^}gegha2jSG~Z{WWMZ2R1MQ z0!fF>OR$%Vi08Dv`Wd0v%53&4 zi%?JmKU{(Zh!TXPCWD9(C?m4;guclF4_JGDF5>|C?bXXNDK~MX$B*nYG>+k;R>S$xtROS<1TIDUBw8hi@5Ls2z7ShY%0HdGO+)Dih|NGJa$t$)1gS@|ih0#XcDCeb-v8r($@<%t-4 zOr9K)wnM662Vvm%Nn>(~)zdD4qgD8Rx}xV)-6TI7t4zu0xLg{`qhj*5&NBH~^UO_o z8r}JBRVgD$?(bY6<2u+` zD?dMdW{OjdWqGtN-n|t_&W=7_wS|J4B2`=Y+5GQScgoMrRd>tJy;a-zi7o34O6|L= zzRsJceS`GnqM^ah^VAt4Z%|ytRcDgsX>XRt67^UwkDuf*x~A&W^3#a0QWwX161{*O zw4EJ<)!J?DzxY)_;fpEGMi`vIZ(8v32E+Gi-LSSoZJa$x^tYQjY+BW9ziMb-76@wf~ zg`B&tZj7$HI$Cgb^vbJaA#>PtaPaIp9q?aW-Qs^W9q=z^y`Jbih|SMXoSkN$^+g^M z9Cc5ADm4f1k+nLV(WEoZNEXK{OU%*r&PXU(5-GB-A{{GS(E5}BM}mJ{5!Z^rJ3$6W zozaXK;qJ++c2qm!0k<<~?R!~Z=&Fkb>Y@d8(R1oz*Gho*C>+v_ZE=Bh7m^@tNsPL2l~~LJs*kO9g&e6+KPpS% z^d&zPDOuHIO`{{JbA{9)8f^|s*X7hxvFhxKV$8vT=jnKX2f)XP0`S{4*fU|zsMAjp zODZcNqEac@OxejXm?;A17jU3(IOagwK&ALne8|fk0p9q>IV}@HG#E{^eTZlP+^YWa zRfl6;;R~>vt|UQ6fnol?$NFG)j^yYQ=cCYrDD*)5o1116FF#sc9khIOWE5~Bq3{J^ zC&@E8A215*C-Ui*R}?v@z^*&yh)xz1PZh7Fg|HBakkyL?`9$=L4QHDF$w{t%!B4KKAPwsf$Nxcj2+V8C@55vrKusy6snac1ceB)?r8D+MJ8K z^F|Y!7R(7*ljOiitVDrqa;Jc75Dmf+!o+X+efP=oTs9^(pG?;Vt4W}QTsCpKM|t7v$+97w4vlG0u&U8G98L)Koq zbWx_X*Ab=ks8KglN|#9KnX0rmWc`a>dS<3{5&VI8NC{A)beWVcSEY+WR+!Qhl);x4 zFnIeMOtu>z=&&HZX9n2)5T6$R^w{|sA)WI+Ut)#J?{# z)5m#_j<4j2KF^VuFY%!E!JtEojpvnvur0nh(e5ZI`aco9al+zN6OQFKk}Fy00~)FA!$W!4yE3R@0GCsX>u|^ zm?1RQ;2w_=vCkg&w7*S-7T;$)?LX&14`UL;K;Ym#WPMNV{n)gS)vu2Gc-p@&<(j?z zx1%NIo|DGLrby;NJ8=Waw({KlJ5c+Xqe6&N=AKzE``gCWPj4}cpvT^rYYFr?0;9`alZyR=cI>gEb`^p;;Nc04Tfv>~L zW$&APM)Q%5!=Cnb`j_T8Bs2EBjKloskw+4X9n!A%kwlI6kzg_(h3Wz z+Cz>d{o0ZSjyvbQ+z_;y52)cL&xqt&p7C;`D@nXbz{@F+TfMB+7|j(iWpL$pBhnrw zq39QBt0?aPt$9^z9$Mq%DtoJAL=QfGl_PqGStU3MN?wtAOJU?cngy9fPoHg62-!MW zWA=a1e;PG6s_u@;nKDJe2k%jX8*Rdl#@YUF?-vvmpWIujYr#`>g2l!0Tx?c-=1tCL zh5^p8Jwmc#8&Kdqzy9{UST`Tgg8QYaErAQR{8>G9)iU)@!_&F$*U{xw$Vhb^pt0DbIWb-ch(O z$FZ<3_Cb^NAF8e$a&o_VIVueuwYI63Bl2>@x`P*+RekI|VO5;$%|scfSfu%l1ORc& z)EmFV5&y`!-ewh1FdjxLL^`myiu)!Vu}?Ny9-1=>1x-E;`ZN+^u>dL$?~(N+)lWI2 zWDupn5t(zNaf7Q0csgSF@sDPw8$MU^rVyCE7t?W$+5bXFyZYf_PUU)l@0jUPHsW+}G0O`jHV%QEsnYu0{6B6ERC96`^|8 zV|IpYB1wz@Y?pPvohnC>SE3^;aqc15UQECzaeBDL`MVON+QY1H=Bn!?l%fTHxDb5LZ4BK zMLRlA3L^L!o4sj3WSZJaQ)H!Ev*9Goi1{B=VXefK*)1G3HkX{#!UEO8(Nnd+IRs7} zEGuWLoaK4q7fAJudELQ~vAN8eq^BT=v#iu9dkKkNPMfY$$cifSCy@07T;*JEW@9aY zKxP8SG6oBCj@i5QxI)&eTH+g>bJkt7b)yU4lw-p=&wR*_`C5xFSh4|QOK|pv0!%L6 z)_@X?>~3@D7QNT$P{P{Q;|hDH(bDX7eTksUS69BFcVtmXUi2m3HO>t`^)3x;jHJGzKPY0bCeP_LtaOOrA?{he+ua13?^l$w@b-*Eb*GP3q zPLqxI=DTK{tlYU~(2GEUI0`Ozn=jF3ngFOlj&~?hF&JmgQ#W71R8ns$odIc;2XBVO z72gh(Jz1Ly6bTWKGaB685*uZF{W(`R$9EXpg1d(vrmmO0r0- z;3x#AU`AVfQ)0Olhhd4181#1(Ja$X`Y}D1_tBmC#d$94cUcHeV%)EqX!uH#{qG#*N zsbXI1S)IUUEMk86N}xGx=P_#mBRlb|A|z9;D2ul^nKt4Lx>0Rz3zBdudZTZNGkSyP z>B49J0;aWKW-C;vmE=OOE>SaH2f6Uhu!^5)F+H4cmA~ueTUQ3q|@AYmAb$lkZPhcUx#2PPDzJghoWhj83Ek1hFOvlsxU+J>XCx zhgBh}UE5L7NIlzSWjRPZT+#K~?>+7PytTyVFZpzIa<%`(bw}0pY6|GyfS*})z@6pabUyy z$?}AA2~hZ{OwOw=w6HHQqaM^K$r0sA$E7*l!VJ5G>gc3&3$AntF8Rt`$0>YzYKd=J zcDyX+e&)D~p*aP-P(6$<4r3MDsAdAdOB zYQ&u4*=$9P*_SKKPR{B$yy+6p(`}=PC5TWD+m&O5&nl&KD#Jk`ef5Pb;xAbGEy^kC z)o9iH-sbR`BQBup)}f{709n_&;Hk|(B=$>cVnF>psQ&h;zaqH%e-Zr{n}1`jvHK9OEoP-ysy;x5>5%u= zMvaam{3Z*Gg#4PSf6S^E|J5o|RjSCZsYYo`Hl~@oqzU48)Clu1Fd&>)oxx<+yAr!C zsdE|9>yXSr#tem-VeXc(>e&cX&0R9D!Sj&k&D~O{sWD{Tjt#e>i_M4KrMR~wj;uI5-V@<~w&{O_;l_>4Oy z&n^D#YvngqP#Zt)S~rkbJj2TaK~&BeVobFDBPm1I`Vhg;O3(I5x5r)4D@>JPjw)RP zO~XB-A+<|Z^ARG`f{$4LwVSRJQdy`7WNPtBZ}Nh~+!;-}SkUS?v4nG4ByUxsL)J7s z-_$N?!BCL4wg5_y*}fLw35bbLWyJny?vhHWE37|(fnrs|kQo;#PROs{0ssH_b|c_XvBaeUp0Vcc=O^>t}K z@tlk)N90WjZSXvOox6c1^Ik<+dGa|)SmHJlT@*5RDKyPddPT8l7-pZWY>~e&S}2=t zN=?nNC14Cf|7OxEPQkd+e5y!wtu}`0x&vC+)R?UF6-3WGg|3pW_Nze|ak^UcdQrfTsi8wRmLg%~&&#~XeO9Zpt#BzdOdw@J6gbB+D+ z-2xOxbPA`)d9YSUd-ux%B5RywPA0+u*`v@FQm(fu$xrQ)&0&3#$M|kR2~}MltaC`y zq|_q~)sG3wtoYeYmWNRsn0WAD2uy4g6UWg++lVr1cuj5vi=LIychcg5==X4S1lKk< zt(TZRrzm18UeGUSS&yTD6_GO%i5e$#I?QSt0WO^JZ2vPEG$QUV6oDk1o_k{Qp~**^ z5{nnYbSo`JK8ye$g1V>uJCuitA4PQ^ZL*qwqTduhPRy;1T)6^Isx6o^ZYtGjAw0kRNJFf`qH*?FptXv%W_Q z)Ls>D8+EL{Nz9haMVT#u)qxi$Uj0?wSaDcn8fB^MN2}@y94!F?#E@azP{vDc3PCYN zgHcw*^JJF_7b!AIM7b&PzY)zf&NT}{N>B83Y=@kBo?eFO9v3cN*2g?g*Lw5zZ~Z`M zqtV>w+1^k4N{v?nS5dFe z!IX!_Lf~H-bw%I4L*))jF3UeWA$QnnR=KvS98@o(QLeJUSIR|7S^BnU>vL58A(0Ia zSr@ApOI|GNEM9CSyX!YL3+7Vn+A>UWXR&!C!su)Ww{O+V*yI-9s@a})iR8yL*kJAc zU)B{p_Ygshw(-J3oDlG}Fxm?}Pj?5++9K|b3R!PFEpV+B#K`N3+`LlZ5hcA1<}!EQ zE0Dh*Qi5Cp|LDdWyOh5rv5O;RaYiv01`7r&{t`=S<>z5j%WeP_Dr415^`3@zf`~|(;ZrIZ??0{r!k?1{#H{H5$kYB2Igt|fSD{&3W-M{~Ru#ouAf3~pUI;MTdYvNIiPcyI zXZ09MTrFm8X^XLh>uzdGfz(VO)o6W}bIOvC*QZNyO0afz%WD<|F(=f{reL`$xP^ie z^1Zi2Y1{-(wH=JQMXp-Nxbz7bfz1A3B+t5U^p-#e2M=!5bh|FNnig%U53% zb@`T+NAs}Km^CGjf~ye*)Bd9NC!2YQWoL;QYdr*VD;Tc$`u1xn!)Zbx+M-h%e8SnXJmVP)G7uNx6+H)molvEwj$c6!{%|Wl)Tk zzA4dJW{p$Z6u-&VQkW*wd|ifdtrMb|st8&?c}hVheh250W^>wBSNN=|V8dmHsvzW+ zGiyO>n_WW&J12ezj)PA?J$1cLP!HWfy17l&68mLpy*FrGpROgtUo1jnZMm*9@{ZIw zB6U6^b(WP&oz^m3jJggbp>-7ph}{yhxR+S4$FQx{_X?O#!Xs>_n70Yn!FhH%25H+Q zQJ7>gPSM1WaL^&g3qo~$Z3CXW@8O~*pWME*RXq%O?%v1)7eHYB&+BF)tn??Dh@wX# z#NEz9DDU+}@CU|{H-beqWL^8;3fu|jRZJ;OhiFEod_~ZjO|}}iqC~xn4kUT6pLUfe z)hy6zdeC~CG~+6U7Q2*T#mb;lKaivXPQkVh%g|0DRLeA>>J>uu6UqYcjz&f~fkfG! z@id9LQMD;c^B`?%`n2sw8e?FP(OV(-OuiIbuT7x-0kdt;x=88;hNa@?s2G`fqshT= z2u{6AomH+MN^EpKFGlr89(g41z#}Ab6bBgKrwJD2y+{l6BGv*TZ1csq0u1{Q0J2Eo zF?iD{c_ z+Qx0wSwzrt*Li|E5JHQOxd^}8O)@hwP-@ak}}6m30SBTb5gcCv2vx_UtDj6MA%~F)zq9q zhX9}No{H-v%@+3mN}yp=rb19a3|@aGiVsY|r(!xz+Rf6!%Xm4`E!?GAfK$lCeoE8a z+@h3bOicIYwXSGhyxY~l;4A5t!q8`?Kouir@YA%{DfUeQFoF{0*R-;?ZGkEvR2DJ6S7;|Z{f{iaVhF77+TtkV^H z)-Kj8#oER~R>6_X3Z@PF3nh=+_9{(ZPobLk67Bb{btbNxjf8@u3ujTZ+U!<>i%j5& zJ;!R1wR18912G${B5WGtB(-wYE>w^yQJanj&g#j#~wtJ)Kv&uQ8#F_x6VQ?^zL7-E;2b>+r&^eZ?{M)M59*37)mwCdyAZU z5TS*HfJ*Q}JN!I}?KN{uS^3OLQDbE^UVNsAwQy_rgxt)8#{@?U0UM*y+--$svltq3 zx8?Z)u4t)5tt$1Dqx|9>YQrC=4X|=IDQbVf9X(&4NzsmB0nCa_A=!BN2gPhX++-Cn zeXQ73@;W45zdxfNk}wO>L7ZoMhDVnkils#LIVN`rFrlDDH)hk6@OZv)l_^~P;|Fy1Pv3=p@TRM8FRFp7IR0h(qG1KTVKMUV&Cf1$3_w{ zMP2tRHdQ-D1B~vJbE$G$iyBOXC~?p&NO6twAk;GqF99-NrG-h2mXEoyR=(IM7BjHoQuR)(9EK(v$|38A zcoA$Ezoi-wz^O2sIdb?yOC563tdAu*Drk5M8(7t7yQ)g;>Yk2&ry`ycH40|RDEjfh z#fVS9G%P_C-}t#e8D$bEm)lTI-lmQ&0E}@sh)H6*n7y%~Ev1Pl=B0j-&0|AiX%aD= z#S%-?odi(;ZeQ$Zv{B;1#J)6PwaxlceW|pO1Exy3S(KYlMCXfJ{HS%6ZciR_8LTfh ztoPiX*)Re?wXH1mVjEp#EBRt}2*fMurB90WS>5WzHn%*bUaaWZsaP*PS=OQdR3n$i z2UOlz+d{K#rdbHwr!(r*WyB^tp$i$DF)tiRh19l^bi#6#ptiT{^$&aP z4L;FQMx?G@cCiTHT8$M|i~xAHF{GNMW48e%>kp!jjQV0@GF)gD4Sp;=+%aqLjVxFk z;YCh=PYlYiFNQ}N*5X>Db*^Y-Li9?_JROX&F)f;Hk|xNCRVqU;0s;46R{Gj(Xumj0 zcWIC2E?#UJc6NG-u)P`=+#tu%aYq^Q9O7PMlNEkM!FST;GIG^nGPf~j@OAb|#G$zD zir9vcn$n!eY|njN)o4!E(bpBmi9EVK#gJ}r6XjvPZ;rnI2$zwrbs2SDV;UL~7lRqO zzH7^(mzy=^c)MKHo+oN5#*74eil#AL{HtnO zWHzEg5ToP$AHgw@q-(jRcJOyp&Sqt$@G%u$+n;Fr&11wNN`S4L?#l2iOu}Om$h6RC zF&tPD`P+Uen385dSr$V=+A6cytk zrmS*h-F)LeaO{d953UDw#AL?PZLc;!>7zXQ3WZd5gMs zzn{UC1L2lx{r;PHOPM3yQVt|UqSFkc$!ZtTRrN0OHru$negT%3|9+KZ!U@NasTv~} zuE-Np1wP2UL=D9MtsQCya8Gl;!_zKPgQs#_Zw_t_37CuhW25yoTEK77FE>Fit|Kh` zmhmRjvCX$j0Z7+Cqt#B6@)nu>nuRUdO`HNR7pj+~#0~N$BY2I*@Tgcfs1cMTr<%D zn;9FT+Q&~}SIFx!U&#c(G+7T(7*G{7TK~e6B5NV5nu7@^-B{l|cX`kLE_Pkkuxq zjr4kcJRJY6GyaOJ`;WP)dD2CqLr8mg3l*^3{yz$aEZ3y)76Gdx*|I~G3g+D7s%}3J z`(W0K``YuR%9YjjLuqxQ-irX_&b&X9qP1E38=ip%%5Or~2wF2$`FwYTW6)xcDZoP4RC*QNTqRJCQ-W>JmG3i&XJgdL4@ z29ZbDb4!#3X#tmjHBA`NRGGmJnU*ng{|LZq&!mRjVgj z1)2vRLhc&}ReWeRpJ}XgfWFH6sw4BT6&#TRq!lA_BxQ_P@-(~f~hM_P>`}gCm3e-SX&rX)@B|T@-ye+tD_g=Tfh=BMYSg+ zPCkq@NJU5IB2H-z-pdmoZIa^w=Dde#7c#Y|3Rzu_VqU~g?2Cd`SzqqluL^Biq0fb> z?{@N~5N>yrBUTzqk{`F65KCqLAB`4EN&6F=Z)VC+!3nkz`7SmyJjXI&3D_0gC7Ue} z&PSBmxu6#JK}^MV!|@)8?PVSl3t~X4NQJ^CGYY%ipN(1n`GF0`4D`2D9IoL^q&o{h zm)IAhdV=ADpb)&DT3}GR&K8GJB|{4@7F;Mk$Xb~59^h~4&7Gx^^k$qRtNiYiPhfI8 zi2lsq)bQh~wK`f`$$bUtdPiVFO;f?9Qfen6k;&GevT&y;Sq}w55w|35FL-ktZ@mT-N4|(u$}39{?;uKqkj& zJ&dR!IZMdMBoi(^SV_V-IT}Ydc>Y*0EXN(fWxze+2p6fJRPmTVOH|2AwR#JFI0SbQ z4aPw15<#UAyfEBlp}!5JL>ReS>jWea@v6zX6+w`ZZ5OF09UKx1AdzDR!s311qotk> zj>0&^_532gr~^)}c$u|7-dz}Rh_;1`-dgscn&0;SphSFGnRoDCdC&&my!bvBs*Gwb zW(V7DezY{U@lkIq`Y1Ng6{00_-6(PJUC|kyr(g9vG2VEp)oZ;AodZv=#@bGab5AUB zh1IJIlw)5%WfLyz2f9Q-d|8PX#8Gl+(CX~61Ifo%Km#R+#`bptrTz3k38+pz8YnGg zfBO4?68-ytVnJ{IDo}cKfxiNjM|6pTcuUEj#(}c)g_D3HxRj2PFE*>o9xaVJpUg=X zu!5tPtMBDy#mJl0CCRtP0m?o|bBq&Mu|8^@UD7QEan5|jb#GPq1~4&^>X*R+K3 zquAd}vrAwC_Pp;{_7=~>21(Wr5mP@kSOOn@6wv)J= zEy;Jbek8v!4u}LsU$d(1){KH^$+J>>>qjD<#iqzdBBS}hDCy!ON*h@t7Qqb+S9cs< z<@t{2kJ+BGH9JJ8G^^*RICgQ4PYYr7Zb>zBxxQvuKtRO2 z*nU_U0e~n1Tp)0WWeK%+#m>&OtXt}(rPn^5>>3Y^=j6G3+FOoEZ<20+R@;U4Eb|pa z$jO?3OguT&p0~V2bAV2!8_pD~AxlTNuf8LkdE#7Uim34wBQ-sNQ6h@OhVGlUmM!Ax zxRY1mU5!oQE#PQ47g%!u9JnD}GE(g%5&4|!#3`V}o#kXla#vE~EIdli*txjoV#7pw zR_~NnlV0OI`6X_rz?dpes#cI%$zrM3jTKmxNKVuFKJ^xJ-m@o}dwCb*&yoW52k#~5 zlwe@aP`brOM>vKfezC)v2_m<{+IR5I2k&ntcrd;>_hvpOx)0yCeBk_3v5O?h5u3p! z4(oP<_j$0XXe58-^L@-mjIYVhVq)XtmG%M4CVfUH7L0s4{TMiT4f>PFUC%ew~r-bwjb4nJqMplU?C>>Tv%R*0Ku4Q_h0k$2YE#=;2mw zH(!$qmdRH?PjIkOk8r*MV%yTnv`CN(g+*V|VxH9!e-Xo90|PpXZ?j?{%*CpQf$FKR z+3~jOOQI(zbRbCRg@;%z-@I-7Z9S*a{I#42Dn0^c)yDT!`c?Y6dAqj#bZgIAk~OypJs57pgtfv*JG0R8P98Kb+_|hSzYdnwB_==^(Y% z8?KzHXy>bcRAQ{D8uK4(J-_i;8Ej^RI%A29^Z2^Kn|5sBo_b&YgB0;}^a_^4eKJJ)d0yH;-x0(a-&J)> zRox?}tDAfge9x?lNQ)Qw@)ZcatKfSII3&NW#;d-xIqv}(5`jS=PQJ`S?C2?#npT~p zggI5_rWRqQ{ah^RhV!13nsx^8C8z6EnJ*^l9Ga{&d4Bxl1`iBPMqPLD@NFZNp-9fw zeKxTA0hTP244}1QhZ>EuGm^vgmRLF=m~w`$y=#Z$$MTo>N7o(pkFKAr3(oHZpHnu- z#j}%{MbGtY z7wdQSra1dFd!kczf!YH*<*9R{yl#>|^3>_h=gBL7B{Hr1s=L$df=0Oxbxa z&k-!q+J+$OMzHhc#(A<(JsQ_2Nq>4cr`oY1pe%`333MH;B{nK^>0)NI3R=uU#H94d zTcxEFN6j6=U*{D11l?HZVQN`X?EDbAhgl_3At%yR6p9E{b9sj*XW>jnIFypftCZBBk8u=`|-CuInM2DiOb)&k_4Q+46O9ij`6f z7s2O15xdiDL!We*Jj0x35?|sr3L1>HPV1j2>boNL`x7XugrK;r1~N0auB~~}1d@lD zqwDMKO#?&Yn?e=b!kr*k0~EoFU6_ID+2%))93ZO+bOs-i7&in7t>yF>7W}gkJV_(5 z3o@09&5!KW%SNSaI&(tN6W1>+Se%yCu~TN-IAGfIWC)=bAeRLIRQe%(Z0*(IF&oZ(7(dPPLZE{K9&EC2D@?y%OP+&tZdP9)}#z zx*6Ts;26GF^XgJ=Vev1V87mm6C4#8XY%Par{NN^gedvM63!L+a@%f$k_#I>eWKXC; z6H6g-ji;jBnsP^S*p_PGRe}`H%Ae#+tgK5E*+zU%gFQCcTp*1h0QcJj2~Ma4%j{Kd z;O@t?yJZakkwe2GGFqPps1w{JL?S6)$;8^3%8yc6Rs0kcGYkn+>!|R9GW08UN*cgK z-jyO3q*~qK2Q`eJA}(HRy_-vowj*0pLi;dw94P)=EIBRQP8mKgohq(`c%TfO^}Ik( zr3g8Re;)V#zGRzBH*sA_L*lwpF2L+-K-tT2q~OG=H}HJy)QA2w=l?x|f-nj=rQ^wfqgI|~1)z5QW+AcS{yoInV- z4rxQCI$b-EX!|WL=BAd%tp6btmBW4=+wjLp%+0(lETZSGFYwxEo+tFutdcK#i&HGz z4lzgne=AZJahSu9G|aeM#P4aB)0`qv&*V4Ju@<1iw}%s(qt^HD)5e#_VHp{Kr*=gt zLWyvf26znzU;ucFsp_Hy9p!NyMR*)B)jgjHt_?yvtgYnC&DGqAAqF^cB!O=1Z_UO< z{Six#rPz~Y)YhTi3{)GnOKEPSZcbYMN~YyaJf&N%rsY4OP)p1IDKn+z>JwT<-i7he zGU2j;f%vi_C#^5X+SOC*x}3a`z`agxmD$fSaU<0>qt+`|_~Sn}0}tRWpTqBc{9bNy z{dVo#1Q(HSUTg4eP#S$m`bB4Ua1tl*kVtN6k&i%hHupxpu-5%fF39vS1HCe?)PUrz zW^Itn;$TL+$x`3U+QsByz<9%~t@|sb=G&$8x>(;OnxrZ9214gxP?qfynO2V6cRQAP z1MHRkF!(MbRROFO%xQ~WvcR2cy#nn@kLT$12Xc8yV2I|Ys>)!zgh)*$pf@rJyT$ti zIgG_OdI=raA&?#IDMUF}P~_I2>zsVX^mJ_tk+G`Zm*t9m_WuJQJPi5)1o@_X?7HMN zA?tDa!i~e4PnXNIIZ{w7HxD&&orvWo&j#M@)KlO(x5+Za*V0n-QF0n2cQUO>s3`X~ zr8vCL$+&#A*Y5l_ew>?n@09`S3o^S~e7@*e6$d!s(aN=#wZM0}1AD3QtRBmcGgB#`vh4&?^2y5j1=gB`3 zSCX7j@w(JF!}IiIG~VK$+ZgpM^55WE_by7PkNd2X2ju#I>6~Sk8wVz@x(R<=HlvFV zaX3-kX+iuY!Ar{OeGZW!O=0ge+ZKSSK*wNeqX3vu$c(lzabK)R4mcGxW&R1u6t9K& zK#9aeKq%O#e9wLu+kquiSnyF?UC|k;s2Bvyp1L~aX)A;%4}MC}w{18lIxSORu!JIz>ZC=^_=+Pe`8Fl@b3etOpO;*_q`7YpoeV4KD7K#>>+@e#Tl(34rk2c0 z5%d=*3KHc}WXb1WLGvL30fjEu<78uDF|h~wxGEg74p5Ycy9>DohHGi~<~%-6-3n(P z`3Al9s45WS020B6IEjP_$tgt}xmMqVVVGXdk;S{xGU5Ka= z2o46QABm>T%W}_f>}+z)d6Fx4svJ$diI1gJx~UR$P-Z4sm&WjNhC%_NV^VL)Sbhv2 zBI1Rwxj)Vm>tw4aM(upQ2ho0quqiPgPpGY{N}jIzC7z%^T&z)hrI4wv<2>23m60>@>YwKQriJeUM+RKyO>!M7r)zYgDX_e`g>y9DC0K=hM zFmww}Zo=hB@u=AoYt7WPbn$C5#TV)hEn!O&E4Z^OOvzM`NHRt!71S0VAD1J$!pmy! zjWVEawc}u#n5MF)F$7VNWmQXNPzciqA3*kWw52N$-|d3F8q12}b zPUXuR@~zic)uc_UjkJ zf+Wc%`}LNvAXz3%t3hEZ7dGh6PAm!w&L=OmUl+1N!uQEIbF4*roXJnxd1u>OdN{mM z7r0Or@HRpZhZW7ZU8n-&p-Pd5w-g>VS-%>V3rtT^EaF4rLQS6(aEFXJT3k9=CDRHS zTCiqRwtjP-Xq`#lNR7)Iy)4DqY^Y9Z{Za`|Kl5QFF>dbzR62RNB#-UX$=xKIGq!#t z4a8pH#y%LzZHML3fD9Esiu~RFEy~fQ)^hXuwjP%X(OctP1;|o@<RoZrhi8fh+@%ST*|6$Po*rI;idtqZ^GaOAC8N;k%e$*I=mm?*gaP$e$s%r%3L z2S$-iN6jmAC$Sy2S_rkVIRcykj(}340O=AFk=Qd)7ymeJY8IH*6OI7u;F>WbrzwPJ z$6)^^WHn58$ONBNa6NCN+Ep4Y=Ekl{hUa;@t~&3A(Ztfp@T*a-VBQn^wVZkcZXal)9xn!rRY_(- ziTIu(bAKAr9;Ji)O=ypUxFM99R|=R?#rJ{j#0GK9sV99W#GOp5DdMF$CA17elRjlyYn^$5bz9lBRhHP_C1zx;Tms86!UBVD<6VaJDPyiVJ-O&wwfe+3 z$Wo+)qrtF92@-75#g5N%0ts`z6zZPQRvN=zcvxuMNyb4JPy3kchPF`^H<9>n^$kXe zxKaWb6kwG5KqbhLO%D&0Y%U)GLYxib)Mf{sdYI`D-2a~iM&psj)bAIKjI8qvB$Z4vhaqSE1sL?~Fs`Ps2}H$uTOOh03s$o$V3 z+(&G*Jq2P4AynO%W6YC;_;p2cBsrD;I6RAQ+{ve2EYxPShH*$}Ac)&-l~6M!72O0e z%XVJjdJ`+rRB5NtaOui_k7;S1j7aXx)K;2LD4w>Z(jjaTYt1-Qb1OE95$TG=;+!0u zy2xR#rvgk-9Qq2^!0W7?r!Lq}e$iAth<10iP>;aT&J^;j*$W$euf_k;I=*!rc#m(( z@iQ!4iY%?!E1L9h4j6bv{6K2fesD3T-p%gWCsNE9y+0Y^QSWjPo1LbEpm0iNn@`nQ zTMd{rTux=WI>GC(L%>pTKm&!X9dvUNcm7elSZsAiVuTP_k zGI7t-j$mqoS0Vx)T(1UC3a~I2*c1c|&_o2FeiVC&EN+tH()GVNH!%&1c||B0B&r$` zR2h;BJ~&tNwvEad0%jY9ny@Y5W8SrwH*)5@0MeFN&0$lQv0CoyP}Hr_8e6BS8v~nJ zV;`b6R`X3x3?7iSM(eOHfP5ogj)bDQDRvXqLKUUV`ubMero$6V)5>fv?ktFr*u|1x zK(b;l#YcItM+dXKh5D5Fg7?G<4v=-Pm;nY8KIz_ zPpp|XYD7xIC0AkcyNnWY9Y7z^v?Ddn96}$~d#x2;6c;I$hHITUzV)uyw5BGKiCh(0 z!qIBZ;RFszRHQQT4Niv8$Z4?4!YjOl1DNx~0*F$A73@g3nk25NNxjK!(%efV7MlZG zQ$=Tfjt^VyhgMY$ogt6Ad4%xHWCOW+@@UYJJd1Y;b>bZj!I3QJ$)k`AY?iRIRIhZ9 z{;pZ_eA`wiUzvjViNA?C$-NT;9BjansJXc(H)IpbU zp3tdizshJ)iD4OVp0Dn2;G?4G_oCFRAxXw0g$e|dpBZmE9-;A2dQIxV%@%?ZU#fbr8#s z{;t$sC}%G!G?(|I$ul81-u8bKr8uyc$MzjS602;Y{s@*rzNQld#2MrvutFJ{Iolv# zc1hz8U%gBbyURs9a%stSQL(u|x$ThWE<#`@DCP2j%#{C_r~M)_uz6l6%l6T2DFn(R zrn3-BC&R!rjZOL#+8UY~-?`ut@jhJfDkZ%qmgHWZIjW?54DU#bxwsIXQ_HHVXTog6?8=wb3gO|l zVyRX+FICO(y{U|SS}A9b>xKC4D|#Uy;|rafrc*rqOU@d9^C8cjaw`#+r`-f$%e#HJ)5dQ%W_Lh~8W&NKPPBria8qh0f zwCz_b7a+xK+pm_UUjw!iz-qS&qK9N7NtAG0{sQxTY~3|tMVBJO%8DMH#7>yuZ+6Gt z5!Ukqf&DTU(nqgRyFwRSOF<5W0a5va#y#HZ_Sa({%<2|4LL#ZKJEq=hWzG%18aYQ0miSY$paGlkdmY&ObdIYzTPT zchYY*6gJ%UcS4~#8wv~4wZt%TO3YoWVeu!-5o^Cc0Q&w40+Ku*tugJ` z24^!zq-@j`Nwr^)x1W_)$lDLXwc$@k%vsDCSzlXM6q%>joF`jA>~wo!iF|85kAY4w z4{sfk8_vfMCSlc1bUeoxf{Bg+`3Z$D5ZhuXG;UfncJ~RD+r3x)eUiT%2BIHuW4bLl zZ#g=J8~cBRT`0a=TFZ@bgJ>rYG`nB_JT5<>@QUdSaF=w|qY4m4h+DL2s|8qqYl zl_@kms4i2+Q ze{H2XA*NQ9>$|eCO&qbVQw&iV&g~&KStayf(=N`Jv5L~#e#V{Enou!XQv=H$YVvF| zCvm@8A+=f!M$l>XFmO{Xn?@T5)h`C0#LheJkmP&NP zMyvA>-1)-sfvuk(wvGD5dSH##pMIf?`Z^r;v{t&z$T}p9W;ND6*9q{lucNhX?^*FM z_i0ExyhkAexXa;T+zla!O7e~n@iD&DuIML5YKxq)%Q;VsAKs2q=}CvCWP()?v66nw z_ZUdDe!avcl|OBJ{3TAQw8>ft>SKH1)7fFXDQ7gLdRd(*vfQYr*f3mnxY7yXVOxhP zCx{m6pqouc5{j%sFlEaGjom_GGFUtlX`eB`tI47DBp<3)`(`vxzi zBb01al@HkQrkSkgF8KsXqvnWw@eYn&k>=&XBC>h;I!dN_c|~|s^YR6%3-90!WIivv zyeZ8;)4W`^j_~k8GR0?*5+c+wOlq1P*ou?p4b~lCkl^Pr%0a z5+N((M9IC}Z>SWTG=Z7R?yg7;{x_A)giMMnyX@V)ju!LERt*-dlDywz%L;{EJL`$z? z;ECUQROCSkq&rotolP|Ih~yNYQrZI?9LMhC@q6t9wC5=V3< z4~*FnJ<~3b-aQ9iEaF>Y+NqNcr=NkrU0jZ%X_w<@C3Ba!+;x`q#T&&S6)WVTYJq^b z2BZsgfPaSusauscoktqIF|shM1%oK}@oaKg1Kb{_UXF6K=_fbI=yb5}IdrJH6W!{ZI^KWdV5*wUUvrA?y&xe`obW(s*8cdTT?k(kXe zNN_>`BnOm4#StEqwnn%)Z6@!LQi1+l>OkBBE{UEKTNT>$NHv5Ijf-n0>5^Dvhl;RG zlmF91*QP6$WgITMPZ>%}x#Z5EbT@gl3u>(C!>$DW@BO& z#O7;Pui02^Kw#EFv_f6BPWR_25J++i_C@lK`sj7do*1^>qSIKh6E$OSo?p( zuP56|hih(P83+l)g=T&Hd4}J0f^ZTaDwWl0id`&UR_KLnZDfB_-3^Jguhx35UERo1 zhDXqy{Y555Nw<9R2S?W=1W9^*GwI!N5Hbbj+|jFkxkRj7IR>d+id%|X?zr6!6`Ls zv26%V5DwO8Z!U1QrXi# zqC_tXx{>KqFx9lTf&>s)D?++URH?BIff#Zyk9DOU`=E1=;mm<53zhIkGhv7a}9e-U;1y>eMRSVmbs9RT3NHMKd`*xwK4#ry#V0d zdI1FvG87m~y`Lk1tVsZwQUqBu->k!NYXmD0Cwc?BomvX+5YazWC^oiMXc?wV>Qwij z&J7IQhSp_e<>o>AH0@=eau@+$p+v$@fkau^)`kbd#Z3ZRFI4b83|N6I&7cZG4R9>r z@;ZY{zt_V6o*oC$i#5U^3auwf&{J%rHiJJ!@BgZ`nd%?`IppyhNP0Az*wWxN23 zLCNrf1~;&mcy^X~7TE`IoK9r34Ktiu+nxv?quUeWz;zcz$ zQWg~eu(3n@a~oE)G}Cu1Pw0ZZe;DyMjL6c7YY=5-nHb)=2MYN1!Rt)O!kWwf4ANyA z8Qza`n^--7Y&Gl#xce>E*7KOx1*G~>El}e=THs<^P5<^e?*mq)JiZ(i>PCc8p!g)& zAz&}mR-?TrCr&7*k@XtDdJEV9p{V;%RFAmYmle}Viid~>8Z8+6BehDr`vpcWML7`z zjb#PDb{^(5QVS8qhLE1W`!#Gy4PolWuYxh;G}OS;3i8Hpdl4}YlT^Euoy7v2N@AG_ z3m4j#2r0MquR^&3fiz+&!G)H)=XWYMI;7l+j&hSxZjS^r5;u@YtAeyjOxHSNvkm-a zNcJ*zGa2&`yS+ac+_pb05yK2?|47g|h=nwRb}?$u6YY9(6?J6j+73738L`9~#=zew zmJ_}4VGL)Hq`A8i>+J{?YXb2@DzlN@gi0$Wfp)5mBc9baC%9i3Pm>bO$<~r}w1p<; z7ypIr$VhZu#qA`RgR8DF1(RW;!qZwZSJ-qLC!`1^%WHorApIPD_YI(FVt}{+cn!C^ zy6DAXxYTWV*cef;9TK6utwMPR{>*CF^^%}ZKeEo5T~Xq3ad*@!)S)$|K|`1*3uA3St=y08=NE$ig8T-UJg98O-LdQord7o-laP*X zN&tU;wNOJ;0b`7A9V%!yLqS--wnjm9aQDLtDp&7G0=Lzlv<5^*dSK5A|NGFU!b&;v zn90=HBRM9EW+|Z3M<_E*VuM@0J`{qdca#UUB zakjdGCZ3zdvA#?bVE;V235*p`HjqX3lF*Mek+^mi(vK`{uphroq4XX77=`jf@Xh&?-jCd;s1t=d=@bJH(`ax>L5hO zr3h7WRA3*)sFI@w>)SN^v-o0L>Ie*c=RaD@N4m?h+^SkWJbHZr(gd^VXv%>0tdnlXt9l{%jhHXds-Y22;vWlaWuT=IpnB8Fn=rF7?~gviPZdj zcr=bdl|$INo~PJ)R3D2W1^5h1%^Lo`fWQJoZ}cMsYl&Ju8tWu?W|k)l3j#%Op;QUG z)mSMx!tw;uzmPq>L7eV;9s=EPdwsa6DzAP2eYAYtNOFGP$M0Z`B%uHOKD}h^x4t6 znTj;a_pZNFn;XU+3(t^G0ZM+!D3)x{DXhabcQo3PzEKFEJ2FfN96QwO19Lalx!7dnC} z(n-NYa2))XdfY>L+iBaiQ$0vr`Zw3(;qu>7k7_AA!h-e41U#^%pGcSCMJVL)5qTK< z8H`OAzyx~q+pE{I{C}=q5sugxn7XarlH5+!Bh{S08G7@6Q}t2=#uAiF&%X(68aOhD zC%FxppQHU#iv3fPpw}^irsns78seVcvY3(*5}2-?fPoEtror1!+dznknfFh^dP6a@ zWFwA@aa0)-fZT4ApYwB&A{Ql_A&1!^?~FZs@%|L$K%(*Iq0f#lMfSlWC5qwL$pxqp zRhszcR(=3#ZaKP|DcHqI^ec9!FL-0YLj3*8V(86JD>ki^!vJRub~-@Hyb2iCLWi&u z62^Tv*0zrrNLs2$S@!(K=R;Kdln<$uENT%PkJjS+Ih*&jdBb`8e>EOhi3WfeIt-l4`%g7E4ItD6sWc++s3uX19 zE?~oM46BzG^%?=IGj%iMG-cBqj+GWFb~WpZNMGOoRw*}@Uca7Hg;eVB|7(@{th8&T zu=6_x$b?}PP0I-^9HD!cAA^w|y4r`QEHoZ%8bfbS*LWZAWcl^UZ(NAErb{-j3c=8e ziG$^S3?V5_e&Y?(q&yBu5Wv1%V*7cE*b&&XsQ^cl|AzDoh0fS|h&-W7AX6tjXkAa12KcD9aE-T<(!CRSaxLJFS zX?bsE#=n|i4vZhRjhai#kwmttodlUulScuYR5g*%{}3Cvo=ic(jyLE@B#dj^z=ro0 zw#A&3$YyFv%a)}5kyczF?AwRk0Fx&XGUJ(vU~f_^|L{O*6cCWKTl)LfWn(FF%I7%) z)4;w=YCvFQUG^UAG0OS(MucWd*8`4bHqp9cO^p$-0_WS{@Qer^#dlPG1B=;0JJErD z!lpm8Y~YT|D7skV%Zzc~2n`iCKqW|(ym|!WQgRfvt7GJ0p8h^}i~?UiZA?0}?OCSE zU0?V!mAPa^xGwt$TpNax)~6($2RkwTaJ<;ShJGR#oGoyB9K3D;?SmRoP9gyeTf5Bg zxd}$52B6{8wBHRU=<@Etmoi%tp*5HG>Cswx-pYa!qc<|4efhk)nk{vnozM;QG}#a% zK58efxeddN0K4>%HTP#G`?Gh_;pzn(t_E;ho^@bgFv9)O2u08gIfDF?!Hiv~tx1F| z$tw(oZCIuK1#jq7Tq#meUHq5b;eHRc*`S`n2tLlA3GF(*K77nMHX3I5vyE)hf|)>I z6_EQl?|htyyAdRZAVgD`1Gl|a<2H+th>-^t1{hihr3|7{NOz0T*C(I@hywo(ZazW1 zMPi#C8I&9oHlVCqX#*-2^~vRb01I|>5^0I2bE@pbeW-W+$YYjcbnQubnYLOucPe_- z;`12Mt@A*YO1Ww-hv^%seOoV^LcjG)$9_6_-+jOx|)3*L;N_i>UXBo z5Qm9BHpI;Ur*z|LvN*)AqLEEI0c`N9;CneUmT4FbZVxn)A}avLgLCbA3?DMSQ~%s^ z&tX6(VnFw=%df{E`UyUCr27`_p%Iw~!20%XHk88>XehhQB2^HEe*z*CuL5eY+n2e` zPs9JyI^4U;+!?r`E_)kGdFkI>Fud4Mp#jc@@~&%y(VcK9^Fktx`A8b`PoX8^>)k8@b{5;m`0hH- zrr;PSG2czFcs^7z#uNP6n`n%;h+|wh+X;^Ggpe`bLUU4&WBh_R#sU47ItXOY7~jOk zxL`wbHO6>k=oml4ul+rZ@klntkB5x$$lw@f-P1nCFR(EVy^S=+6(M6>A&hb5)l8Cf z?jzzDPsrt?!Cy+oxFTeXCxwpj$X_$Y-+7eAIEYQ8bc`nk$2jHj>&E!#KXw`8l3ax` zJ_#_wj46!q9=0?`V&^FIY>Q|p&i9mUo)jQikMn=O7Gf5Z65>G2!mmhp>arx^vdEGR zw4hMqOqeYoK#2QbT#h7N?!!q|a3?ryON(cql;aNcf!z&AHen%wxD)+Zv6l{A<%Sdz zG(kqebTT#}+;M(Kd|(jFD$|F;???zl(B8ygsK?5c`)0}mxZBOHTC!}g2TFvT{}$)D zA^W?6T`YE{fSd09g`;t@p-n4^Tw{K+JD;E4Ks&k78$W|L1WNts3u}$?=)3-kPt#m? z^txU2B4}8F9;_H*dsjeKoX}0qH$I4tgr0&Uu``2Bq_q%4uKZ~W137%u$3o_J1v8(E z%w2Plu{)>7Ot)Mi)4APtX>Oat-F{vr<_qcSjY1_ekRM6qzeQ(a(t}VYO%_S&&n^dn z^AhI0+UyoE94P=&iX+#Z!KYx47J|_mA4Qlbx{XB;IE55Ce>xM(Ao1B2Dg@w32?Ye! zGz$Y0csW5Cd64*Z*F1I#dHkX0JkaiB;+i_~zI0mI=74$t+?~SJ8bBGF)gUb?#2~g{ zD-n^Fr5_3I*U$gx0*tlJSfU^caXC3Ml^|0K*o~*h*dW zAx+z`j!q~EJk45IyJ{|nMKEpL2g-v*p@(CsCE7UFy&MWcZ1iw0>~9HLQwY<6j_^jW z_|q14U6iyr=8F0Go83T2xsch5n}Z1X_8Za#OOJJat8<;_Ua`&#g<__mnEz5|pcQrk zSzCjG-#yg1?fxF>JQJIrkZ)qzX#+o^L@bHjLqj%K{F82Bxa)|)egSbs=&MjUtaxJZ z!Tv?vRAuOzL9UNQ!O27c*0YjwoqBJMh9Rd6Ss;AAx zQ8!e1zvas`MsFNW#0cXV%H8mWOrXgq3`{rMs(`4~2iOORrY$RsI+A5*dKyILt(s_X z9HtfV(d#z@#jy~?&e)~&SeYlk6Ct?fN`!#+A!Y8l?SvqGLOd8(5CqwOAqdDDt68WsxkSVO%V&2A&>Ct> z1J~p8Qo2Isz80QCNbA&`R$pIVo}4D&2upgrC(IXZ@)&DwLwGfo7%s#PbC)3|#V97Q zxECRwdmeZ<=sjI|njnZ=YlheeQ9V$W+JcRpA8B#88pXu<{lEL2wz(nlgSt_aBZ%WUVU2AooB?W%Y#i1l z*5@ZMtiKS7^%n^1O9&h?{@BKLtXBjw*`@-pKJr&!J@UqKBDHO-c<}amt(hqu-nOybg>E8J)bFteS^&ECD?tz7Y^*63hW-x z8N0F4YN7H(VU{@9O2$D_NwUzgZ~Uxfs99n##t;?(h*okzAjIzoaWKrG&9yV{MM5t? zrGYTn%~aKTY0Wr2hfOCi-@re9L7YrfwRg&YVOD|0cR#Hp;fkQb-#~lAOX2{Q2qxX? zKg)6iP zgrJJFZpXh9o7h9$w7;Tm8-jU^=!CT~{z>3KBLzk)r6VV)yiW+g?N`VNeBp1%=>pVZ zGPcivI@B7&T*3;J+c~)xn$vxQ7$mEB`y(E4$Ra z2e@7?umyZVM_(E{P`Zce%J^GJ)J!dCQFS!R}U?rDUk{5_t%lT5=OcS;?gp=m>c#ptx zgCt&hr+7g<2pzMbGFUw|qj`>Q(I})t99Kjm5`hNCN~74cZBW!xO z89cjx0*2gd&Ye6<$}xiX1FtABiZOr; z;!T{)*?K7$fniB7j_@I!n`@h4I+K7s zZAf&SapdOmZzmxF>;kOD7TJ0KoF?q``efMV^*dsG&>7kf0^YuK3;_kd6>B2Id&cBx zsou%PlKZ7SJP)P~*Qr`uUkC1Eau@)J*wTHk;b1THLj>QxGdN2w`4sIL5%FMVwdxnA zNv+;P-klW-^$dbtcuHoYe~@;mfdZR(b(IRu=^vg3OFsb8C!eq|&v`60`m{|A`@UEsI6MjRvinKGPxyIp}^k>1)}n#^Z^?N z?ea_l5oZ@oUZeH_2<`2Ag<2Ho2a5@oH?VZ%U?Jg$Kz!ST1d_mstaCA_EXKhB@QGW5 zl+<6)aB9kIb&oMc(Dem3$-fA#Z>z*!XpEy|i%_K>a19JF2wWpZ#NLLYq(lh&h=pNq zqcv0pDOcJBlyMf+%bvio1sX*ZQX@>M$D2Yaxl&7Hz?v zM@(An8#o$u1vF5{PSC%#J~I4J;D-(=q}*l3pu$kbedVH1zk-yBrO9E%n3Vi)KLW}E zrIOq0@yzp0O5T19FRxz!=jlERL^L#pb6RN!!rwXAR!bF@jm$0&( zCz>2%okB@op?{FBy4Ig3&w(aXMkYih$rnLU2bvrPEvzu% z_;!f68Z+VvZ5(t1m^T3<{YV#?CFn!Waxc$vkIi!T7h3s9u$3#3H7+Jxazi>dp>Zv| zcM$FbZX=0%LBzHKZFe7oz!;gl6*OBXIDRhR`~0T2*~k2rp2R9KGbs9 zrS<1(!%yLI&DgpL(6Q!5Ky8cMHO#gKg;y!+4y=YxAjtuWM=Co>2pjmsq@tc~&r!$_ zIn_RCMRd+r=b!@C(|_Ok40@-`7t)J7I{YK1zrU^$pZ8?P99>Tr;~-PP9bG>gZ)gDL zJ1`e-N7vti|0o4&l#1DR8UFX9@5f5;wn1^v^zj>@U3B`m4OwCLOi$U66<&LXmV*Fm zwYIii4g_`Z@ z%aanBG|dpvE*YSJ&Z1M2LB1+QV2ogZ%wMH2g;ymUWw{Y>U}^Cs>K?&I0iW6fR1&v3 zzwIRgOWRA-!d(8|A&_)>i69d$`cq4D`D*4*t@JavwY@~(3V+MNFGPso=dYvi@ME<{ zlEN9peFN&&uZ9-{nEIl_Xvz_6n?d)rplqlg5)(hvL1|}#Rr9AOy@ko-nMkPEbj$G? zzAMHpUz6R6(>h$?!&qJRGo95-X;y7hQf}U|utju;$@jt03Jzk){s6VL@lVu85Hh2E zh)=N%io5woGtc#hFNk>drw|^Zix)Tvf#fCxOVAsl3=1x0;944gyFeOVfF-PZ6tF3^ zp?~ztS+eMt9bt$5smSp+M8BLC9{vvA!;j&5hHrW@aJJf5Ti*)py)+^QVh_DPMkyN; zf$M_U3yr@Bh#~AaEQeD5s|GXNz|1Ldi5*bENQtZVgC0KAa_TzqWiI;!%?(Q($8(I6lhNg<#cGBpy1{Ip}fiXXeHi4r^EclKRzLq z;DjtPL?b)EMCljZ%hE%LnOH4;5Trw}#G|Xnp`}sW%Fwu$?LEYW4R|_E1bCV<$)jS>tswFp$9xEb8C%r;3EEkti^V0FC$7umXW=}C zkpk@Q$3o+7AU^Lk8vJ|%k9H04L*=ysM=ju0z~@3vT6uI585kp(bkc9#!Ylv+Wg)3f z;>iP;`2vhoO!%)2!fow9e~_6zxqJhabC{hrDWxO#ia;7CRxUXEcLmbb7}G$i|HD9f zkv1kJKpJ;jZIOAfqXk6zn4K9% zZ;VC&dXMI&ebhCLzu*mK;-Dvzc%Yjxei^PM5w0Z@uKk@lT7qlu(RU3*WC_>M`@pqC z;2Lxq;~=da#a{YCfL`>*`w?G2vq12uqXW(OYDkAMTJ&2EUR!;n%XT#V9wC zp&6fr0ubI$M9;uTYP#=^c>WU*1lE^Vh2Ue>#dc6jw;gJml3_*Z6UOP{g0C+hc1nnQ zHVumf=j^^p!UB_-+_w)CEJ}`G<-y|%5U)HpY!E^%0C=NA*;vJ zA-=Ez$Jq@?a|2E;A*_OJr6zuX90VE`@S6Fh5s3XmP2bm;=7W22$QWE(lF2x%bXs|y z6Cu|~%mjdN0lv9>AIL|8m7^GMA%_1BMffjtqjr(JI<0OoWH`}nRV{qn9yVsi)=k7^ z4ybuZdW?Nv3;NK)mu+Pq0|gU~wTG3KNpjbl5a6=K0{}i9fnjmuMbM@W3X0jc)+DQm zs6Eyen2H4-?CGiR89vFUZtLflt@~t^dd(MiM!)<+mZka5h&8Y|&LSpi>es;zah_it z{j&YgISBQ#1i!rN`Fe36Jo;svorTg~QhG|IbDk*P!Du5GLPAK%LM{4t|0JJ~#ae9} z?ra1XYmJ8x&Q@yC>t3d)Sd1wM)rpKwfkCBv6l?x-i~HI&|JfG3o`iP5i2I{h)3Ky) z+yI|691{~LY3k=m><#p%9E+bd_CB5^(JxPu`J0Zjr%%pX=xVg!bT4dA<w@CV#~Wx(Ak|Pxp^43 zUWgfmo$rq9Xw@0q5t`#~A_j+6JNxo6VFj$vhS4Dc>=yUOZotM`qW1@$AcyLHCG6rl z_`gN6v2wHzh$6?h3MoTLj7vw(xw3WIWso&?Q_}hAM?_EMtROixReeT+C&v@4D=3KqDD0#t3%nmY8%40bKXs5_+)2 zbWt3;ZjC`vJE&TPE*!AzSUiD|KQ9Q)!v-|AR{6U@Dj}%UAGR9Mi8%Hz1Q!ojp~|iN zA_U?IT~b*T?H8z!;d6y(W^DCG@9jf6174?+^Z5I*B7hI*F4+=-xueKT3gBf(3d)RD zi4~*qDn0Op5*%zp&ZW53AS1LYt?5@giafZ$BEOFA@|K*(%tE^jbo-r14&HPuN%qe| zlGVnN21y*!1lAsBOfU|Zv(_D_Xoa5Hvg0_OC@OI~^`K3)PIgc*`F#tfq z0ZUX_f}+s75weoUJs(WeOx!;iOCg9&`ZAA$L-fH2Nv4)0g)oc~nE@Ol_Wa^~nMeGY zR_Hm)JcjwPB;guJ)ZwBKwEv=|fFDhbZE$tqA>3?^-a7!04nGvV zH@a?`B0;o|kfxlu47-H!F#g&WcZQHq*e}8=vA*#`Ho9r!0-K~+wdWjZX+BuN>kDHk zuvIl_VBMqyaInabl)O0jBMR!waR2le1d??XvY0n8{1BL66h0HeCk}oa;`p=AMDLaP za}|gZ3pW_i`h;T{6d%3!s#%Z_b?~bY4U5_~4>cCHQE;<{>^j1Fga=BZJPl}8n+Iq` zr%EyKIK^iX7G(4O7XMqA8~Q@kX4(|bf7)9K@jqro?i4lgC@qE;Y2I7F|J0XO!$t{D zUE8E29%fk>)M_j;<;Qzcj%LQw-h?S%;Wp5;a@ZXKy@Q^yAi0E~$;ffuJPhb-e5B+f zUS54w33Oo9^95iDG3$*4r2w-x_AU36EVm6h6SCZ+@DY#Aw=BAt-J0qaP3);*D zM&kvQ;sV3*0{akLAPz53kH!UX|0I@b5`e{#*u2`4kO(GpbSq3YLQjwJAdyTE0LF8L zhQ;x3qB^K0S!kd=$i^8!5%C@E2&#%86P0LTw55A#!$K9VbyYYL}P)O(-;m=oM3#H#O1sRU`35FxGBhfjd z(fdm?H=w~)ZY6<8Z0kyv-N%M*2C$}0Gl>Y!0*w+_o$48MW9-_niQDw(zen81TFjOVAv;&3360&3U@CB6;2HXFHUc}UquL_qiP5(hSiXG&4U0UW z>-t(WjH<^hQ05%u5}-s)G(b6*xTzL&dYo_rA$naSBIo6n)L#ps<=bfnDcOZrLV)?` ze~KHu{!Nx4Oj>RdgHqdro<$I*4D4+0pbAhOqt>yP3puzr6_>%-H%zHmm?R4-%Ka_k z?S~bx?MaDB9LN^En1($;^iE)2n~t);xFzdyJJ#SGm^r>vYK@p$h+Lu&@@OrhJYoZJ zusX@A(R`FaiScki$W}Mh&q0$jS!oa$5mSB(u^}yOXHEG*hQyTLO!1lpyJoa$jddJb z&9p@k%ss=mQ|`5+sBU!2Z6KPeMV7Ur$e)u;iQq?=qHGNK7)DAd3D$5}3bsl47oq=z zDj~!Epb5332s+$$0!F(ReQ;71cP1!^!cp?Ic&;vfGzP*%*9#0O&Y1*Z;l%oQIp z>R5`e+EdK#E`^j45zDY&A1veg?ovqa*NZ9Ew5Mpskn2(_>6|2{XlhS!u)7pe7FQfc zOVJHh zH*YaUlK)@%GbID0LyH0qXxHhBJS9|Jo&ysAgO>T?up6aquT|S9WAI&2)lS-8BY3hO zk2$8x_A*&@jHc1&ABbr=tnK~Ux8xR2q^oI>m^U+V)E1Y8Oy})5rGS*dar{Gyu(ZRq ziO5q@*&LWF%`;_2dTua9Y{f{tV@O*RJ^i*6jDE+#V@TQfFSHa?c`9fQmX@#}WXD@E z_6XqbpC=dM;yQ*9J#ZD~&>6KWSMHGksTPe9Rwv}$#+n=OhSYNzv?x$Tzhd>nKB2omYWEFg5Xklq zBUoZa#Az-8wDxE#?cyQlu(ngR-^wjNRegtTt7!mx?I?=C)sCVR+`MI6uFxVh2r!{4 z3d}=j->z*+Mw@o*>Vs(~YA5}V+eZI~ZKeOZN9ez83;r+J7+238QG3{9*e3Rf*vKBE zHn7LIb$D#OFJd1a{!DJi^Xw_#u^Ug2%N_gad;K}EQb!|N(Bm@fpKqtY9eeO~G-4P2 z_mgw=M`Eh=fa0n==poL(tiTio+_#Wb=DkKkl8 zDkBurn_}3Qt97;rdjNT_PyaIQHAv53Kk%qKYW-n%zssj~P+@@uf)qJ3o&?+B8Zv6J z2U%+{sqGe@$JmoC2jlkR9c-K?vsnW>+HS@AVT@`-9Grm?d^-BLeAcIyvoI!( z2jw94WzUCgGn0&D#q$sQ)2-o$)*2m|9OwB~bNZD5K+PqltoZ0HZ}{I3N1Z@Yupw38$>kT)Z~)5Tl9poZTd-LKVShG0+++P|Nr(6mmrvE6lZiwt zkSOZX(Y$Q~J*|)4LgGb!CohI;>UkBi4^kvYux~(1XG`7{lJ^!sHArKdB=5ZB{hZ|e zQ^|XS)FTyP8wc}OoQJu<`#O2;DX=u zl%`K!2vP+n4c{WkKRUnAlL#jbr(^EmckQA=&lb4gH$5MbgfF|L&~rPSH2jz({O3Ou zdIoL{4L>6Z|LIu_Xtwd6>#Jq442mT7p}+?CMyaFZ;+(_i>1hO7%nLt1YP{yH6e^k zl*zbaiQm3SVcae7Yf0;fw{vnBcL5Z#N#fT4KOTM!62FYBFzyWepwM&bHHzn#Lor4)$n^n;+HZl zjN1agdWl~p{Px4|n8fb{{Eon{yWbsX&%JQZ!j-eOaoqRxL|y4OUVJXX(=EQA#q&Je zB{&7@KOF8=F>F5GOW=Nl`x5R9+#7H&z-@!u2)7!JeiP89>2QnSmceP^=(icqZE(-S zy$p8*t^uwIjze1p!_hBSeD1{aAlw%5I~nyK2-k`}{SuCTNATP&zHi2J4O}r?2HYFK zkp{SCxG;PVhEv1QFBUkJ45x*&!)3wEf-8h8hg%7EFWfG;7vNrndkbzj9Q{7eK;7V; zh1(2w8{B-j32@iL4TNi+2#4n$JRgDE0CyW)A>1@LHQY6Dk#HA~?^keV;9_7y_(r%4 zxY=+eaO>bU!|jB76|Mp90-OSEON7(IIpB)n+;DfnZG}6Hyy^Fqe7SRZQROO*`-a}C zoNkW0E~3iqDu?IdDsE+T-7O`XM+AYrAYfdl{U>;zSLd9zBePUnI5NWRX63t%Mllqa2L2eRkJHH zDylMFt_s)mirLOW>M4Y-3@L1OMS6KvX-?^FPHqGXWuL4)vnzrzDfExr^s=h#!ii|E zqhP6Xb^+S^CY2V9B&O*|kN)kxHW1=Mx{in)1&MHUP>ZRXLh|Og1oF>ZfsP9ec$&%) zI$@HlV)^7bQ!=gUcvf>L7GPXK+sid$qKn3@x7MDs`6@ z6_n+m|Iw2i_pQ(m1=U@G2C{mU1K&C)@&)@!Kpbv)S3KbUPBqPNmO0&BGUldI&IE}p zXF({&cw9xm{|pwdXoaWL)$W_QvZ%~cRf_SI*-dCp zNrB4=T>GM>JJ2=C&hFcJKT#HvFRcprU4vfWi*CXc$`y;xpFrM z1|u4&+?2($DvPoUD)UOqHELm0aN`AE00h(oJv*ti3_S-aZ5iTDC@n9>SSFBT0U+_2 zQ(lN5jyq3&IaL`>kgkeV6U$0L5GGcj?^n9HA6OVeV#**7R8W!wVV=-Tu@HoR+mS-_ zB+!8pA?zV;da+9^01Z?F|7GyWak{F3XoAly$HZB)wE~6g$K|Z5ayyq#@{}`-Rce)7 z|1N$iZsM$Yj@c8^b23@72yR+c!L*8sTRoLjXOSYxJA4Jg$o1*)L7!(-EH5Z6r*7dm zMMnscNY)*W3Uo7OiFC)5aoIWJ0RC|pM;;8RRpX}RqzmPZo2DA48mAO$4}INE_q2j4 zHzQcYL!lVScOPy}xj^}gyYyTHrR_0TQiq8ZF6TH_Ko(6R=;)9-jHWVy4$j%7%blE@ zo5;uqdE`l3!g3+ski;AV6wBAyCAQ!#jW6e>5W&D$zST)BLfe))(Q1jWIEvZ>yW}c~ zE6p0YWRzAF6rvq$`k7W*=qhlnB9y5@tEihrFD{B&jNx09UR>;QR$)$#=B8B?6pP`R zD}jd!ij$2IUgo4mPcK+b*f}sXUV2DhGYE-!PrJU^2sv>Fjh zoLJ$ZkAdr5yn?6xhjksAB{B|@_Z-;Wx{3QeGBS%E8I4`7bS&p+pi1b z{t7n>R+A6m`8Av`IgHy2XCH~SULVFyOu(8A_33|H#(g*@jJqA~UkLvj@?Qxz3uQGU z|IB+(uT3&;^)?wds7A*9ewmD0`h<+T;Q<+Uz$fGGe@ezBSL3-ICP|8ATr137SP_50 zMue}Bai72~g&k&soea(~GmKjTw+8O_aL>ZM3U>nTbGQp|17=}O1*e6(8Lkj+1>D_m zkHftLcLeS;xF6wSau6TR2saIG0o*dU^>AC^UW9uG?w@e2a6@K?aW}wCgv*0l0q2K% z0`6tF!*HL&{RlUF4%TIGv*4D&-39kJ+^cYB;J$%V}>1Ch78mGA_M{7|tLY6wEGN zVAC-tvG@gLRRXVoS*M2(@FK;Dxr*tl(h;+VAY`(#vclD+ zr)YW=D>cEhWC><0=F_?3Xx<5yM!3V~DfrPl@lKg5(Z<45y1RPfi!hEXZ&mq`gyEKn@TCxm8gb zg7qw?+v6%1fe$}`Q5r9!z+FI5+iNI%(9)*I>Iqz2*NO!Fg@ueTET&huOP7c(q^#$Z z2bf)a#`gb5$dY3fag^B4p^{FsE zSxLbVv6l!z#X58ok_TQG>&cJdTsVvKZ)+Cmj+taKYJqy}f*sj5!eMidAbz&Ej= zsKiP0h**&-EKQ3_8JCXHonBr{8DP9jDl1spUDy;ya3x0R7=c0TcA&SHE=7foI(7J> zwusvudZ3v-gdhz~fWqF5WC|;FqNXgQa+Sn;74sBnco%;VVoaJ+@AN8R_e01`2p4_Q ztE3TGz9J#->QDPvvnzEeV~ zAeIhtMGa?bIx2;IiSt{R5*;olZF-?3g8MAm_hpC>;+=;r5FwlP39(B?Sl*Qu6ShdW z2$t1+r>i2wb541c1pRWIuF@r|I>-%pq26CF1bQLR3xQq;^g`gbLg10(m5|L6WHY*^ zh2&1BpG^E-h*fqbR^xN9-kyT>_B^byr@=2BYwUFR&c@n26KnF>2%QKYdd|T2Vmzm_ z6jR_k4R7-iFN5X!-u6Pzg5MW?xyaf4w4zAf}z{%4`*+si_^RJj(Ed)41N%AL|px%NQ!zo&!-uo>vAG zdB!8o`GG|qIovk5Jy#WZWP^%Wdv8UY>3Dw(&U$r`=TW$!av`5A#0`c~{enO0-)7|b z5Xv2mvV!Gq>ZaWB(cPE3rBk`rqW-c!!LJIfr;=EL|kOpEtA`Mj5A5z+)7+TC5LG2N9An9H#zbsIata3`5wwu zvQQ4YWnF*uNb~=fAB}7JL183{>6a=)dl`YY1U z-;z^DTwTltFMS1ZuOp=Qtrr5l5a6=PDuXQ_iizzC;1OAQFmSHgYOLz7<>* z+!B(qBIwaCB#?5cO0An&WN(;XNHsqAw+s+>q9jU1P_IP$sn?crC1@YVJ%gJ4dYF$#>~xlYq9m6p__|OE)y2hC z<9{(q#vKz@_ZebLYCF{;*kAM|^!kSPKNxLwOIqI@zWf=r$zzZ%Mti-e z75U6S%c*t({t(U*7OX-j_40B87wQ|`rL4}qe5F37JTl-Q{e^NM!GKzXjtUMKi-C(> zIjTuHN-q;@Bw#eh^^@O?gcBfMu=r&*yy0V^|(o2y!=x5CAObzQTChc zR{QVm+wDVAuTOm;bw92I$gplf-IdoWf3N(b@?q8Esz&t%^)yY6hSxM}GPF~*_vp9i z(+yJ$GmLr0-NwDfW2W~_5#|{44dzIT&SJMrx6HHr&hnV$T}z7fPU}hQ=hh}`xXo-^ zWLsl9ZTr|(Yxmnfw0~;n95QYL%JQgO>XquX>d)1B&Fz|>H8$-ZwEMMvbfa~xI=Oy~ zUa5EJ=juxVs~W>!4CTfR#)phA8V?zpjay7lnEq;d*Yu-FVZPCtgF(YlAh}HpRBiw#oL8?Il~QZL9r>)N`r-rp=IBpgRH&PB}(d z3z!{Jex&?N`5(;?ZKAeBTdTcIw?N;|IMq1M+-g2=DMMSf*%IxDUkN=FczmhuqsiAi zq07?WuW!?@HP#s)G&UH+%*~d0)+N?3TU2UXDz`@12YOj^P%~FMQ_pQeS{cWU)PAHL ztJml)`kVE0^!a*^zDEC${)9ftFxoKNu+UI!s4@5rdktp{e>Z528Ni7$;|k+iyy9-;Dv|Pez%kzbV=jXG$<#ZyIBoYg%k_nwFVdrrUu%8%#&A3ai_Cn{})8&(_n{%hti@=^3`Iwx?{* z+YZ>?w!LpVXZyj?fI&T&EeW8K;?`$p+Rg(A=weS9@AJKsQu3M^~hC={D*f&>hr$qifUk z*CztMGW65*x%$QWa(%UawZ2&|GrVGu8~YpMjn^B;8VyFfah7quvBrdv%O(;cP_rY)w&O*>7`ns%G^o8AD1eqj0= zpdK(?ZNA<-#;gL=Z#K^awpN&H&0EdSnopR|n!hxEZ60bFVM(#*EjG&p%Vf(mz&_Wq zz;cVli5^&Csj+OZY_@E*JY#v$Qg3<7avb>mxg}s}w)}`oJ(1Qp>j-O#Rc}qRPPR_B z<^u0at(&cXM8DM9{)ql~#dg?s+;-O1XuDwh#n#6jX^%x;jIk^2dixCf9D9Mi++Jrt z4r(weH6=AIb$aTS)RU>7rv586klLKe?S_69^n+YERB2P@DsNLhpxmx}L3vDhQh635 z<~!v)Rgr4B%B^}y^@i%0YLI%QdIfqVLsO&Kp=r?ErQM~yPB&gRKtDpC379X$h`wL{ zwEji?NBV#3zX$a*7#0|ggZhmz8jX{U3yjN*_ZoK@&l%;W;ih?}`%Lww?@Wn++hViV zyx#nv`H1;#^GD_w%V0~QMQyQICIMb9%WBIO%O5O%1g`G490k6fwfw{KFVMaVjA9P3 z4zgZjO#+l`)=XV2t?r2aAWaOyj$@27r}%GJxD&xYUf8%tInuCSADA*sh+NO19u-$KcU{KeolQ<{h|5`^^Ka}X1LVvY>A|Q2_{;0lD9}c>pHN0nNGej9JMyK%w;{jun@iHjkUeh^T z?wV`9)x6I9XY+n@nZ;{)&hm=oTZ~n+HP5=q`joZRI^1TkO}6FO7TE5vJ#Kp!)c9u5 z|NWrHO?FvoRBC$aovD9G{Wg_51-(1y>wd}+$_YxR@^0my(W-#*vQnYCQI)C6RaL5X zs{VwYepmH_s;~N5b&YzX`cLY8>H(TTnrk(qG?O$lHKm$LjaRc)^Md9L%`cih+M(JN zpzKG`va59?K;LiHxpnvJ_Uhi$y|0VY-vF#|>X(BC`t^U(@6jLApVIUCR{eN`#W2~h z+;F>Lo#9@?cEd9mpGOS;Fnn(qYD_k2j5CcZjc)@-`kRKBt}|&(sirBW0#li(+H}%% z0r+x*S!1@D9p(jQr@6+w!MwSBlufbBwk#4yRibq+#>-0Uqt@-#F*c>`X4`68t<7(H z&8D&E*caGewjZ$n$38w)mugF`OWl+DS}J!=#%)BuCn!g<5wK46k?J3+2=&$K7uBz- zKf|n9pecc_SEaT|dyOttm#2GH7p0Fy+Z2XqLxrK*@PeVIK z>ffuksb2$q_=ozudaOpHF>5A*V&9@!s&Q-TG+Q+XG)FY=YrY0YFju=od%Jcm=*NrN zNZmEMn{+zeLful`Hr-RYzw4TG7r-eDz&QCm>Z(O8CmN<1at)=1O3a>*8g>~@7(O(7 zZrF$!^BHgsIiMs@nw~S=XjYp|<_Vbl7MquttIYR-cQ|5x*W6%U2F_t4=I@GU9ydH`IAD0w@Q&f6Az)}Vgc+lO zKU!eW1miT!RdbCM#>X*F9WuTP+WDO^$`orF3JN;iw9r%qKHxsgN_$Q3m~JpnG*30p zHqSE`nM=$o%(t7@ns=C=0rhy%{GIu-IUaM75{U3Gx^tbB2(O=NJ42>9-vDQ76x zC=V<9sz#}1g7>~%wL!H@^#W+uMU`BgqRvwYR!7hqnal)hcq8({-!ynY0`YJxmr6`tJbD!Gqtm{%d{2R zt=jF{6WR}O^)^DM)){ogx>DUk7+1%1?*U$Ix)i-izer!C|DArTeix|SA^kt}N`uaD zGkW_u!(RxE@quJNoy}#y8Q!4MrYt?hAe| z*>sc1Y|1bdnMzF+;6rXVtp)wK&-9S#G4LYKf%AJ6yvRGIv!>5X=S^RMHvSAAaIpDW z^L6GF(8x6NEVIXam-$}vLl_CqVh(xR{66N9+bo}2c+8%}VZ>wRR9dapEX*hit%cTg z)(u!u?6MxQ9`QIs$&?xat(< z?grJTs&lIIDjt-qS=9o%%Bf@3@#+Mu_L6~1O0`yPR9nHJW~j5&)6@?2Z1r6ALiH`` zVs(kS5_A4a^#;t9o77t{_iqIa+^OCL4t6*2ZXamE8R)C&{q;hi7XrNy=!HNp1bQLR z3xQq;^g^H)0=*FEg+MO^dLhsYfnEswe;ESV^Ec5B7Lx|1d(`{H%BKB_N;f0Uz!9$w zts)K#!Nv8bTDyuzJW=uC8Z$`eb=6EkMyBrb=(pz%>r z{gcG}S0=gC*35*0pwrnNDNy2DXY&=LGXG%(o7ne#1;g0$-U1tYK2eauo*TsPI`*7Z zT2w-L^;CT_`7%u==gt=v%?ZXi$Aw)tKn4Sl_7NryKc`f9KzLrn{QsrqV$^)r;ENap{^xPlR;A zc<3Z5z*o{p{G;X!#}jpz{?a(Ee!L5M|KZ8nfVQx_W_5{|Hs0lg_G6A~7>LMd8!LNm zmv|Gxi;Ctvf+$gV{t?eeJl_?+FNoh{PIVvpjjBcQ$bJ>YD-)mhivD}W?~i1Vl|cND zM1L9JL+M80N$Dns$vA1bCGdY8@%?xPe;sk)! zRE4PDmc(Jorv=4gQZRIhv8ueNfLIpDo_!2$2Kg$KL~ ziVk@H^OwWky>0uwE4TyR=p{$Ir*n^ZSA^~N9)f%Ez(H@C_H}REm;+uj;>^(P_x3}) z`8V(Pu32=1-R+Ng^kPNhGZ!mTpT1bJ;`NIan;yPc@#O~>E53O4V#P){eZ$3y0z8Ml zc(LMRgin3rV#V$sFIKcPU933q+Qo|UzLzRKjlNXz;NgoE`<}d5G1`8)V$@F;>Bu`^J6meH!nFO27Ah4EKHiAG|tzui5pz_mcWM?|&-3V|5AQdhfFr0=*FE zg+MO^dLhsYfnEsoLg4>?2z+OpTurSs{V<$8>#vHdeg=;Gny(g~TbE6$-T+5_>EkC? z-w8Kn#N_J0@X6Kdh6?Eij)<#%|N6M<#fd_ig)=5sUzj(!y7K!;)xTs;t}glWr0Rzj z2yq*S#8rP18&`b}<=n20s~-REIb!P)t)JF)k?&<{Ndp0m_dW9 z_acnSpQ6lS&uK{aa$H>X@c6iDJ<=wQJmI|s?!e%<>bOBd+?acX@?`I$zQ-q5Uwe9T z^=7>9fU859ijO8&hry5X4R2ZFUAlUWH~E=6yaOxl^uDz4PH)rS)_4boZSY>S-07`@ zyUK85t3J>PiJ`wZNWdrx}r{m)77Q*f7WJmsB=@7JC?>3#Y06W-xzC%wz< zC%s47-t+zvdDgqD^*!%D?>p(;{ly9Ik$;}{PW$ma?-y%NdLNzlfp_Ik?|FwTI_(|i zJn8*I!AIV#1E;;&c;5c?``%@@eB^x-j>C7#EvLOt!0*JwQ(pg))7}iY(~D1g6W~|- z)k*JNO((rtxH))ViE{q6?WEUT^uAYFe$u-TdB6P66W%zu&k_F3ln=c5{0Xn`@dmHs z=l9yzDobVwdpER9r+p+N_G*kwmJ=U~N<0p@WZY`^;C4uvsK20L5cY8Jn+%@{t`N7~ z%b>9`2U-G(*j;`XzDbh=-IsSmPX%cYAk7P;%~AtR2s+rN$bdZw`sKjNL^l2lS_Vi@ zgcI5gO4%KL7Jq+wO8)!n7yVE<&|xQWxIWKN%*pLpGMi8-)C zR$Amtbi?jWg~x4f_Za1^N=bA~$w*YL9HlgttxQRrQAuV4JHE+450V5u65TLAmN;sP zUR#_9lafWqy+7)i1&s(~uj3}XmjjZd1tjlQTvhybZ_w2HJa z2wFHCtmjCRgYc8;RQO-uFJ{AfN2=Gt1|1lrF@*Y_G=q@#h+rKOfg!7y55c~OON8bH z!ZU(D{T8y?Q`&{_3t}GKUuqXB~LNSJD&PvITkX?P{aAzYrn;hsRk+gCloE4Z;SS+`IU+^AyuBi6oln?B=_ z?{t4sKhkXEV!|n``}izTPyet}Nk0XreTgtw0Tg;dh~!;wnJKZ$A*9-4m)_J*%V z&WiS&<*;NU#Mk~m)V&RS6xF#uKKqhnk}T{339b?#V9+S2(FM$Q0fVq12*C}JBpL$N zV%WRdTZ9=vB^cbSW*pbrd(~R6?FCdqHRm7+#uyqD7?`CDqiX?W7xREEpDz zng91WGqXFJ1hKvM^Z$K*$!B-xoH;MgdCv28p7Wd;NE?4TKabGMkeYyJjD^R$Y?{$> z2{(F@3r_}F0~{K#rQzCWf#*uoc=({H4fBYy(ZX_!jz&aJ3N`Aco1g_Y20=S|i=E*i z32jEA{3^6DxO^5yM|ew?rz@HlI#o7!UhYB3Lw}KmEeMD z7;UmH+Gg*OvU825x`dNt-BG5x;K8)iv5Y~#dA4RiS!5eM$-&LBnd^=|Z{0gt-9}dT zk(9b)0E33ZX=uIFo=OkR==Vt*(Ze&Sm6Sy}i5^QZ2MY#4OISK>BZ-k^uK|`)`91f% zb@T01cjhp4$EI-Hg7b3RIE=2$ZkALR`~w_!i=8;`PWxbv+l>4It{LBjI>$YQ>mu$s z^qAy0_jx()Rn+3S!}hP^xDQY!A8(f)%y9#(M?NjdaTlcx<+uy~E{-cmBaXWU-#J`K znwjIM_rI6pZeZ=y;M>jBrxC}kL7PdA8wcDH$5|kC&0NEzF2-f&9!)zJ$K@qx>0BK5 zjHzxa$Bj4D9iHRnq!Y(2O(%}KHQmf{6V6-r5mxsZR`=zUx)aaKalcF_dN_nyNsh}; z^ms0g8=FB~GcDsHaNPA7W@sm!x9(zA_cm5{V@lo031|y2_mB^|JWR^8`!hyQ;<+bL zD+%qz;D{uhEXYcgW@gQpl+4edogD6Ee7m`Q8AKckW4vm`NLV}@|Pqe%-7pOA7nLSyuDe(DFbLBX$xKYceTK0Qww9W%`Ft3w}p`$ z&9w$YK5OC1lol@Irs?><6`FBD_E7wf1Uh;AYcgky#l_9aZpJ8nE57r%f6l%L z_}`dKQtkn?UznJM%m3l_pJeU-l(oNuwZD(Ge>A22sR<0|mQ~6uo9TyU;X}0G;*=B& zOgpdCwK|B)avWbLbuU4ge6H9rSnA$@{37lqd>eL7y<@1%uA+W{euOX9L<<&N1M) z2b^Y(^ZZ>c>}D-kUFH@@T4=ahjH^;U6<0*D**dRj7B%tOWLGx&o#qOF*JwmZojAiJ zwWbX#bxTo;Y;m*fnrRw^S(9pWO`3GMi|_z$0l$+rOiHb56Fm~0`0dF#O47*~^tcwI zPRe<#ne|bBeXWFy1=Z2tD7;U&s2fKL;n$+;TpKW;{nfI2+bxz+nE!F0)yo)V5Y5sb zsHk=q4TxP+SyReXLo1$P5k3sKheA2D%sJs6rgwmm z=$)?3y$^<&=3E=;V3@U;<1D5bNu8h66vm^?uPf2wdFD5zKEasmDFxzl%&HC_-r_qL zlLlV7e43wsG&R;%z%5!{y4(SZ9nHO{mM*7}jpkm)l^eV{n%jY^JV?gT+-_Xuqr1`E z9<^2{eGpXbwB=085^d^#KU4Kl=4-r?Or^p(*5+Wn({qGJb6u>};o56A+QU4X_y;My zWngb~enEoPG#(jiv$NI-D6RG7wd0U?8E%gl;P|kE*)6DbEJB>6Lhm)DQ`HOkA@c^wNz><*T!=rA!*0q_d-Z&v-DcbeXK68 z9c#-mNm7#8JRs3zHk0W2hjf{}yq0i~3pvQ+%FXoIg@88ECU9v*dwjCJ{0^#%(g*O? zc%HM==Gx!|Oiy3TeWuouKD>~yZp=3jL-jSu&Y;lhGx!}T@Ry)plD-J7Ms2O^%OrjG ztBDb5<9Gxk(#B!v9>PWrT1!H1w3dTB+IgVySE*X92dLGbQ>!M8lfTcv6K`Ek8coB^ zMHZS{?0{Hj*IooX&>z2;`{P%&-;_FjGC(anIY89$F9Q_N{loxK#{&b@+U^0OjwkRw zGDaPSU6)TZJv?eYdz#7B?71=(F0M=*Jz7j_%%h|{KMKLh3mCeK=`mC40w}VM)_oq!x~8G zn@OaU9CI12adHIwuu^s|=U*B+? zF|^fhSjw_?5QKx_bun3|Netp2%^LndlbDb*t`s>#8jYkDqYGWmY*n>7KP5Ty63H18 zw2(6-KZlndR)*m$hT&`2$j3s;0^^Xf@I4rRwYeEJTsFi|m%5ni#OGsm2=+01kRTbi zve7JuAA(uEROuyDcmbcEqY@x7Nwqsj3KV@Y%0BIjQ4ZL#;KictR!h-BD>o{~iWa7E zlQ8Y16%!I31E;qsf*2Bii?Mbf>0;;JK|Zgoh`Z5-PFc_ziLxY}L1}E6E zne~}ZWVUAVSvO=ooYj-HIQx<8(T*n^?>H_Ral?pvM(i0eFklkq9KEy!Yxb|heeZl1E5z0;LWj?v##D>LHQHGP?B_K;qW@<K@L{Hfx)D*5jijA1rf{ zl#W3TZzT~NDN+h07jq{dmE5@Vv8t`|NyBNB|DT|D*n9B&4zXY{;B#59qak!J$|z*8 zv9a-xt{%07_(t;&vRlCSDqQToHc5YXep{nI?Y{Q?RPi^bKdM1*a;Cq9@X~9)+IyOo zZ~>OS5qIcsp8i{-m#fk1l>;O6cVpsLJ8ntue5OBoM>PH2sMotuuSdO6&x`a}yG3}1 z4*e~{o1?T}4X#rCeyM)HRKH)Ux3fUMzd*mgK)=60zh9~MTMY>4uUbzp#fa!{o?d=F zR$=tFST9$px3^d?H$PEct5>b#XQ}?XM2BOE-rf?u{#+ezbM<@;t2oc;)8>gZKk;)T z(j)^YLFtV~8Z<}gMEQJ8RwT-!64gtTCrU$_>d-H$Gj2mSTnRpn_{`UFvs53eUr#SV zn&Kem;olF+pm%xALms`|o66FR79sMG{wndA!rpd7-``<*3-C=?Hs@>C^xh(Om2 zo^B=L*@zb>;WHO;ba$g4Er;eqi;ny@BJ1dVMf69HwWeo>Z^A$QU4no5o5js$zmxRe zIr{Hx{nrmzwP;PP9V&c!)@t!V{L+dJ`jS*8*Mq!9{5tVrx%lovUIf49ybk1T8I*S% zdEr5MN0GM`d9(&)6M>&Y$lHcr+Rr!gT99`?lIA}4Ag^gq-ge|YV9FzypG02spuESB z_YCqz;6r1>57&r13BS~bG2U+>O7tq=oZb<38Fw$&fP0m?1SrJpQ6%GK$eV(^neb7N zk~6Mp_KoZBv1=+l4Q&~1m|MWPVZFWlLBG`g;Ctr0Boru!zjNuk`M7sk#zSA)uc#^A z_pg`k`1!KyUZjDat30)Jj=wT3e^BHT7TnYx&6^c^&yJJxW#A~<;d5|*gU(DwFOk2Y zsFPaJ^&VBkAMMzEfs#z`v0khk_7qF#UI6-a0ncY>(*@?`23Rkp7TOW4v5Z46S6XY} z6sBEj+Nsjw&&)fEHngF&Rzt02np>NXcrQCwW+jbXWhITh(K-&Ty^1!It(CET$~Axr z5HJYs=u3+LOGh4dOmzqe4@a%ElQ)7{0moUJeKs>5(tr~Up36}eyJ$8I5j48X5#K{~ zX>?a2LWu36A)o$6lO~7nD-RgI0NAE)!u}xN5!NcT>FLn4<6*O4O@r^n+-YcK(${wG zEPQQz?FF#8dsVBIRyMdpa|j{6U)bek) z4y{QTXLI}rt91@qakJGCYXx2(!%wz2QTIt)QLNZ#u2ozAVZFq3`&P{tQuKSs)w$$# zy58`HKux6jZHky}p;<;Wj=?(&E?OnNsn))Nag)Sf%)P44gn#WV%|^1U;PP-R{(@x; zt5C@nE-lq_1w0v$9~vP1^1vtg){Ne0%(Tj)eU%-mwz7R{0KNWVkPpmq*s%M#TTJ5_ zu7C5o$e7iO;De*T5sSHxu(qtFwW0=vwnALYeTW%Nj`JrpPRj=>?U@i3wN;aXTC_GI z|EA`JAdC@i3~Ox-VXOgbRa%o;=3p&4-BkA?tk4OMBW7xA;+MY~3P(o@9EVJBXq1c< z*N97iFHjw z!5*FVMsZk!VJ>MpdA;Q%1q|2MSd5!??~**BwRpm42m8)60Em+U zcQKv$N=I=w5UwlD)cH$bYZSLnr%p4b>>NWqI-q_uF9xmY4Ik==TE;7E*39*$an>U8 zj^;7FyLlMgo}1#|`BJ0!p}y$B^OH7YevF*aY{m#`>Svk>i!>V=7D=*bl7Lpph0uWT zC$qk_Nm|S`seCO4!T#(}+O~`V6`~t>)&4R^2HBeU_?*?^4nM7hXTg@*!SR;)Y+Blp z?@ia%r$_bm!C_WTtN%>NH(wtdLp{>&--hm@6D)Mr;conX5C3<-Dp;e#L_b5{>3Ib# zV6x$iw_;v_GdXk;hUx`O?a{j_>HVOqnQb`u&8S8f-=zKPfr;B;tNw4bHy==b7o(?9 z+<22#&ED~M_V7*G4*=o-+FgzI&j<07P-~G7e)ma&z6C60%6#U*g;mS3uZevaNjilT`f3mtv z?x_ejI4o7Ie$^sgrHU?DmFfA!GJ_6csB&Tu7}_#vvDVG9^IYz^h_ro4=pX8}lH^ z30J6MobYi7d93$Q%I|O)j^BrNUZr+2^a_A18-**CbqA?vxS^jD(qz9wDq1PGuBbh7 zfH$KH^CYGzm!T<7OG#Y{Dl00UyEec!g!Ab+Ml*o$Tj|4*Wd*{WKSf$bRlwJNvai%i}ld=bz2N?>0(2>p;P69B8pE zjZQk!3ZX5H&OPE?+%0Wsc9sW3`s3T|C>1;goJ;&{2Fy`)%5$dcVz7ac zKiza)WV&{lt_zH7M(34P)pEQ1H&2U4jr0kVynct^cJ3NeA9+V`)k~x1&Yd@JiCXSh z0BZOHKK#OkH}1ZN%V_kxgS!}E%+yId{|8T1syFV@-DNt zG4m}^I)q`5!?26?g9yQG;8#_25QVOWQzt~jEU+BD9b^J2j$z9P`WC1DR&_y z`8z?a13(#i%MPfyIT)O$C1wK=DwENqL5QK8U_Nzoqy+@pCy8BAGzgLjD4vBl*e!O6 zGbOQ~WgLQg#?)_TK5#FmG4Bb5a$2ADg^_;{Kr6L67y$}O2ND>5PO+0{xW(zkdqi` zBSBG(yz@Vi!_3y08xA1-DW+z56g&Rch#x8akwgcDauCeIz95V@qls=*f-E~TxmxtS<<6=8#;xl-i9t=q$+lx2STv}J$f73h3x8( zg*sh^epIouyBwrUI!}b;=9SW~RF&{rgTa|*w}l3*?j4NRQA3DmstK+xr6dKeVF>jz zG?~DwE7(chJc&Hn?~1gDJg7&sMg2M2Y!bl)bXFZ*F_>Up!4w%7=~7yeN@66n=dqwV zWikq&i;Up6V6(*jKx1A-z!Iu2mcdB6&YSo|&Oo}437Kr^)ssl%K zp$KEnm4TGebp(`mF(1b0Iur$|!t}es^T;vNo5IGAE+4{;vuseT9Xn_Bd#`0~66s1ap*4 zF(^!j!CTiQq+uwrgR)rQJ0+~GQvL{N<+u&3a<*!9b#;DBam==U~E6Rt930~;l; z2pR$V+JszP$rxa?bpI>RV+^h3x*$a^Aa=Nm?R2j{VtG& zG4yuj0i==?MiQlq28-bl-I9EPXu;4)`*r`5PHh)sV2Q!z1#hLnz7Eq>E_V^Z9rv`r z=zIapr+9+c7JCLP zJ2OERP{+$Kiw15wl@L1MHaa7hfR9ML{yp7&yofc_{TB$F zM0YI#nJu9RY_c3`?L$qIvqi9|lx2@-*Adt4Gb z!FrO|E{Vrr)q2HZL!fnHG?)dR%>qF1wGJcDCIiu4u}Hw`uSoeGgSDL~D|J%DW5T+W zNx_UjxKC&3Dq?c;+|#meF_~?KN z{+_-T!@x&Nu|0|I4rBgJ-5pjgLCQ2C@EoK}h?p`3ALvtXaEECMT)|$Nf)MgF^N3g8 z!Io~SKzJIHW{j~*c?GGYKo~|0+(sQ3>xSt;*LZZ0i9DEN9%w&@kQI&>tWASa8%vLh zdtl#7q5~96h8c5k{FaT}ST)41NFV^h$&~`jloVJzC()+wpm{;%mP_5p85!dni?0%` z&F+$7w|JU#>Yo1wlrEhTrw5A&%I_c#P(pNa!vd+HNQd$YxSNuAh)p#^83IWsF?JtP z$&!FE6=@RzBXV+MBe3keN=)+{sh9YY5?X_bpAe{{OrYvco}5Z~{2s`ds_K2cu>Gn+ zT#(%J>br70qKfM^T^Ej9oslS$KK%h$2+Eg`n!Yx%LH74oRZITfkR|Hx3AFipXrD)F zIIZTkkcy0J)m5<{eg;k8q0vdQKRz1-$BDD6s?EK@z$48XyCj(Znw5i5dI+g%SQEK< zxY#ma1z(C8yLXU@jFl$V+`4xnR1gdh+IwCh>g&X(3%X(+GzBK1jII7MWif}A@1g42 z?uXI0yu^-``xtqDbR!vTP4B>9Yl9PL-G`*xj!NanAclc!nkj9m+!=tu&6Ilw$V!F= zI&Ls!lCWU8>;jUFDQj1b5+#_*0t`r3PPj0-nGa>&EQ?*Io@W^_l)IFjz-#2BkX@;1 z>hSFyAfpcDW{fLAVg{gAv5EP<2ggiL48xJeb^&{~Scoz<#M>>T{sh zn87Y33j<0ro$}^O0L`tldrt6W0!=_3(VRgnS}!`a+>+Wp?6=2F?RP3aLn`S`N#$sp z?C(-)sYgS=t`? zS!gswkOgG>_&b&N{u3~yx`!Q=@G(?Xd)^5-q-Fg#`#x|sJq-qxZQ*!{^T8kB(sy8e zl|0XG+aKPa6W$2#sV%(UB^QMUaQ`mc58uvn^1vOc!}gm<-};N?HTH0;U7oW=B@dbN z!6hhS`;F@7<>GLw!`r~G{loQ`UEi3sFL}#d@Z8$MZ|!a#PpYE0k&sLAJ@|4mo~@nq#}$4zvG|0}g3P%<;84ANUiRk;Kyk zaBFy@gL5|h3v$q=Tw<3t6}i|Axy*6L5l4l(2DW=THMq#`X`yEPym$W9j`d3=zbl4W zbK!=3)737yJU(@?)h;h{$V-uNjZ0c=<>g9tX*-~(qV4PT-B;^$~=o;~b$InW#p zx}5hdE^@5>Z&Savvj8`|5nk+x8eCyN?*eQ*%E&?y|2+QW23{6VtNt9IC)}EY5&3M+ z`^lDzkz<>}dmyz*b|z>lFW5^o^`9?-!H!7fT~fKRHY$flkPJXZTz~ebFbW9yC@^3! zN~iLB!iQ3*O!NoUxyjUDyYd61l13?`h%9mz^2*h49wxe-#QaR-%$t$IjMzdWbpymz%x9!#VbK=5!bn{SgDy4^QmDELh8(Y?;owmB zSLn?sFe2(d9J1^3=oZaHcP}NYk5{f`=uUWZu1ruZq+lzk#Nd)n$=L&h*%XI_PCdZ zd!=@{6mmhk=H*gqm*u;(GTB6yYOt5~Z zezhp#6T#OzgC?f5*g1v&_>K zOPSbD{=+=6R#5W)OA}l0Je$~A!PVjtd{*FdCqDP!^8`N4_&kTtE_}3!#YPfM?0-C` z2|es0b$VJLJzz2|B!he0LLuW0loK3XMTj*^166~_j z86j2WYjZZG$@3Uce&U06G_9~=S0$JeD&;besllA>${eK3Wj!hZ z{*g2CJ*Z&Dk++oz1!d02N|x?|)?DM=XczAA77MGve+(bph_N7OakG+cE|JUZ(h`U4 zlB#%Vqdk`E+-0c`$FCAmJccNUmU_uDcW%AcEB>iFBT>~&RmbR6d1(n%Wy&ZtqWcBt zB(y#jcYVJRGAooHlW9dez>m?zL8a_jlcdcHw$Qx&^%-s6j>8!pvH<5Z8O{NwsOw_6 zH}*ZOsvS^?$oz~M0J?S8r8E;7P1ais;UBss02%i&h{8Z)r*Z}R%OLX;vxi z-2+TWdtYYXhuQZb_T7T-w#Zg|pB{r?k;rqnYG+s5akU3mYA)^bW1rL6G|mQ%+FGV4Z)P{Uehme>y%Fr;ezzhSS{_i^wxOZ;%{NC>XVYTjEm)vK?0l6$uI^wss8;?31yQWU*+fAx1MH>- zv~BIXa$7Wjg+IB1B1f?BKM=}!J6`KMxc0`-mDS33sE=M$?h~#KIXx}a^-_8znf*%U z=c*dq4P0u;g-C{5tyNmehg2-PT1$jZ!&TgHd{9U7ctXq618>Kp^EqoE#A$d?-<2XX ziv(>WrlMNIdq7!1twdQ8nnAUboe#!~i3TM=DS}%8(g|MrcCuvzwLY_Dx6W zDs?ASZ(~Jhnw95KQ;NKZOeo8|*?)lm5ptP7D-E|pmLL&Y_bFt+AV0j98smgpbU4(VbTNtK}%wd|Qdm zpF2Q4I$3N_Lb{TL2|IJl&8?9x|1-dd>@zcj6z`f=9{&Yn&?w!5E7&Q?E&TD4yGg|{|@Rj z>fa5I=gXiXPRYa_DiX2BEN$a`DOm!I<%dk^d z4_;>9j<%A*_a3B@b_l526di(HP-;erU@D+5lzjAJOa&r&T!)DP-6Q3c*6Ufa+hWov6G~id?Z39Y15J+ZE7E}Az zlnL%K5q?9L=LjZ0&0A&{X25+&t7;>&*UJk%bmPz7GDob_$bKK$zoqPB$QIuS=&R|U zW5pP2VU|@}+BA?55sE38j`#qo&T~X=h1KK;xA1el#bVs|8_jJwf9@Se3M!1fXQ*om z+)!YONfvpm{8ns&uBFiwN#n4y6%KR8pa?JLc( z2xDQGjc3N=Eht8MQ-H5b>rmP4gMQaACtVx+Et^5sLS>aaV>%|%b265V#gxy_3!_oX zJ3;)6)zN$~Ag5}1Hpx|Kg-a@`jFvhA>U(giR)$;it0as1-b(BvWnh@JsR2L^Cwo9$ z_<2CNQW^Z%sK?}U!n4DmShdX!lrt&1#4a`8>V%-flML0FY89{D3vZ=NPF?R%Zik@; zCmJEt(*k19H`7={+h{BpNtw%6&SRIVrGWN{dOaBu~a9rkNNZ#?Y0JF2H1=k3s^c{3IVMmPXE6L%VO>lK!tZUG3FA$f5PURVH zd`JEL0l5w08rgcBR3>KN%Fu|~*xlHgGI&gm`@R$wQ0Z!|tnXk$CR(D9sMrkJZcGc= zYhqUUU}a?`!jxI$oH~Ob^7NG=qEc#5l=>er9xx2<_E;vw1bVYdMN$7DUtGw5u}IUg zVx@c#E?Bc53ilLLdHSj$ekHL7ep^Wd+r=eOLEB!|k2CUpND%@tRHoagO2?C|$7EDW z9V^lssHzHCF+9blfiy-#dpLd%kUnBX_e>OnYoj+Yd@P}Qd>=ZS@Z?W)0c452m0An? zSr^VGinl`Sjc5Io=sG)sL4J(<#$s;$NLWcTl`vA_;()*}2)FV+-`Wp-J~6}7*L{>G zi!n|&R-_OXagZiv2{BvREX~$tDIV~ggf)rm_gFNWGqRg%`W2r)zHW*NpEg4rBC-vT zCI4w6fhSn8xa3!&{y4xstu=yM4~OYiLr?fRZvAE9Haj(Pt@73nHH<+n%?r2jKKI%` zBiwOG4)zi>S9EJZcn;@`EG0>T(4a1hm<{rLmS!50Q_BLu5q;FJu`n8yXEWRBJyq-h zdm}jf$U&eu_FG+}5?>G%Vf}R=$?WHgrmmtO>S_c~%Lvg%Ott*CGryvdo{B3FjKTdRn8(f@F&NR{#Kz*O@v$fZ4u>0a`y=pE8YJ(uXsyOYqb>KeX(keua zKsDy5xy`r(e8FFw1A7bYHij-ybDsvJ;X?%^0rluZCN3bD$nTsfkM^|qUKgC}t@7Kr zdfWL}3#@xp59x-HaVx2r+aA-^3=1_>_Q5D(3&U?=(MjqUTT2J87;IHEU?!7R#lIkB zUSu*AkwxtRtypZ5+iu^bkkwdL7Na{uxFPztkwEwe=CLWPbq#P&GIp2##R_Li3{$Y7V2yrzP}3XQTyGD>ZDD>K<+L)0P@e zK>%sf5az>-U6I#oC@)MigKY}%!HT^I1d>FiA1S$4->>$ZL|~I$ZjId%f^FoGXVX5r z`X0pb)$$B-&ZsAV4D9I}faNj31RLd|##UA~jg?}1<3_nPtenVpEuY8k*?~fBpHw5D z5u|XKro>il0W?pA%eRa)&;Ek27n%pVC3k^EL7NWc!atD~PiQ`nRSQi*HX3Dm3y|n@ zO8_VrVTU7zofgAkkuWqmla{iFTq-78d6l=p0gI+O_6auO`}{dp!4Dx|g${;QL33E@ z#%>#FF=*0|UCo^Z%z%-ch9KQ6+EKxdjY%PwnV8d2AeI%b&-qGkq|~MS1O}2}0W&mU zX95m*w&6mXatQ;C-9$6Yh`mJN0ZIH|+9HNXu z3%&#rQ+kMl;xQO=5985;QSrZq>BOw7$SLkQsr>gDI6MxDS-&EisXGEvt*Q*Sz#L$P z3k4S=;#SRl7;w%;i}xiK8I|Gqfas{iJ+dc2d4I0PP8hbkLiQIl!vVJ(kVL+ND>qH_ z*74%ShDA};=I7xQ;55U+q@?9`)FGp41ypOQ5mVRw0w7Jw-inGUD0xyAyr<8jPHKpw z)&54-sy5BSm>}&!8>)uwRT?X#3rPb5SqN$20V1F$vSJcG9=p=p&@X1ZW&_{GCI{8K z!Qmk4{wk&JQLrFwP4-JgppWn&mxRv44RMY_SA<#sN$OG8az0z+&ELR}GPGO7S06^;rsVz|t;TBiZhpG)xfw)ZE?ZOM*et zDs;iNI~{Il=SV7VS3EF?W&dNc_^9MZz?cFW0Xz4HvTg>95MMM&&8J>avQdsyIgIM4 zzZupQAroPg9jdqosOe!L&xfFG_h5S#s(JQQP>8eXetZL8Ss|#ORe&LO0JSJ)4=^7_ z{Ls6&&*JvFQP{xZV({q1f2IjkBOz)>nG!TsWb98(oBxAIP$piKGuvdPrLsF z?wKSWrB;P|X^K3`<&Ws=g*yPy5GRK2=F;7P^RRCtj*@NCJZviU^B}J7$7o%SxCFCX z0u4`vXCk^d(^?TwZh@av`2@Z-W*@^5%~tZmbhVg+sM?OLdZ05y=Jt15DJCj9pU+7~ zEaPyU&?L{}u~w4(Pt(%Lza7QXWUhpr5R%g6^6lihZrC1OkrSOC?#F71(03z9_V}5P z#;Nddw37z9_^i^>3E0y;N6Lg8`QX$q<(v#GLC0e4XurYt`r2M}AeWz(=H`WG7h_Hk zM1TB2akVJagm3TVU{9@|gJlX%T4fIthE%~2SE2kB;vG1nI0ZtN>PM@+;e&Qx`r04j2Bv>ed;xM7ZTh}ix>hnKo5ibBU z87rI1w0fu&8;$dgd;i8}kxbNoLZu+}jMAp|(2TRG9QVQvM=j3CJX}>)Rx2thGW#6+ z`|}*wvxYgLxwFB5wCJWikx622^xmAl47)fnTHafM;U+ZHNDOld4RcDrs($^EJ+d*$ z#O&2f%n!^aX1xp(vvnO%B13@clQOvGsvu1VKajb}9*U0{6 zc-+^fh2vT4`EW}k;>$LSl^Tx8uwST<{Aao0SoroHjxgD?k>(gH3EYBBA?~PB{s5K* zPo}{i($MS_((w)Bn-nGxKx^u7LocMr4cNNH@FOSdbhYvxI7}4}Y5Jm;gspjLT!D31X;rWYbgXp?89F+c50o0)rrqTC z2$JxD3Xx_I#VbGhlsTDk7VLdxDy9&Wd>STVe?a*YNuu`1NeXa5aw4RqGr%+r`g(wLZ5(?Ms~Ro!ItvRZlAr!tk#Oq55z$_fl1IX6`@{1fu)h?N;x?@brd zN=t7L`w+~i1^=wT(PDUiH>FK|U2+}_Uut%@X`#4LKRH!s^^j^aRbs+HI5XyB9@)0t zoa)yc2y20jeiT%+#qs+f-D5AA)IaPhnRqq^HBOQ^5uhYkEhxn za2<(`w?9SD(XTM-`w;1KDjBc@yOoEN!y%tgF2Y^-_>4%OT-=dQR8D<6>L`Qh0JrkO zU#Gw<5&a^NAyBB!Z4_dV+rAmV5P$Cqj5nD(YW-| z;zl+1NhF`u<77k!?$b!RH$u>a>?>osmn?E5tBU153ek zGuW6|Y!O+#v_jc3KtV>%rhe2Qp??~`Fh#1BE1)kSA|ro526-_cPlFEw8mNIHOgpIo zXN2|{G>ZkzO=H>2$ab?-ju1rHOC{0r!xe$bP$r$)g*9>%DhDe=2y`7D@wy-l#u(;C3=bGJ zTu8mKd~#C3oQH`>(M&Krm>U?A8cW+p1{1k87*l!c;sRF4FvS>+4|7btqQcWc&OF3p zle%noHeCp0!#6s6Il5)E;Z0*)aCw48D9MRqLM0gad(TpebWl4`q)#95mV8jC8EOx$ zv4jU~Yjf(uzUAV``tZHh4-RVEUExLFKAa)22bqT zXu$FiU($30A=(E@!g1T$(T!+tMB}}dWOJY>+d*cAD&rqwHs)M?0E~I%5oLf|o!+cV zB1*v!lXGb}lH>kulu;7ybUsTL`nXt-WU51QRdOQ>HaxtO%#9EIEYbKz#fpZMSf_rj7uF7rjj4{9WD7L{{rBvt{I5p4*kf``J6c4M;4KooJ1^}yp zG@yJ4Jqu0(ijQ{x4qfeTreb&E3x;Gqexl3vEQO7TIFe(8QxXt>OpqH|;3M0U6b*a8 zP?~5EGNg&!SOdTUJm!o*l5x!MBh@_}ZPweo@ccQuO zz2>_1R{#5H7=aSTfB>DoHiKM<%?jCSB-rWx?HB>uWqdjy`&+6iLs_BpO0`H5w@Tu3 zn&1G)a!6sDP)1w0I{7nV@FUc+v#grS%_Oxx({it@5)* z)21X-Bh1qQpTTIdt^Ite0%N-XVS0WB)(2Se!HRkH0mf!-tzN(K0gO%N6s2iF1F0re zUH1=hJGla{>wYeo1|NlI-wMXFkn*iPn4*03J3>`3fD*9zFc#qL!q9X>5?z<3MTr7WpJ>qA|iubGsSUde><=(v?16bszc`G5_$ zGFBeS!3si?nDn@rv`JW?6@xme2F!5-rjk^gKI6WX) zo~11E=@ohU^qGae8RVgeuKymWu#P><|)rQ^Vd;2X>cdVh{Dt+P18ngJlr= zJjoCh6<904*N7uZT#)3Ma-0xMs|K$Z4UMJ^OvgUr0Sfb9xgs{1G<^Uy0K9-cFv(l- zLlRFjlCavQJtngT!#*V2IxNMLNTy>%GDMKGiG*&7@~)hEpc>}RCeB)&KpjCsqiQR0 zkle=Aq?+PxQaxx#Evl|mesT=UaCli8#>q=~#Jx##@w5rPQrcLoaYJ{LR!^!a?klxZ zFsocrEM8QP;JWW30A~516Kk=gL4jTIKC~$>EG9F|a2K@PPZ9{th~tt#scZD!kdK~Y zW6(z|vk|S^S~;!+`&HuKV2sP@D{EoEX9kqHc%p0g63)b6`N8~rFxXG-)%GwDaL~yZ zg`TZ(9KxV)o}Cxr1ndaFw}RD*Y3Xf4(4;&sr>~?CacBE!xQp^AzUx(7(lPa_=(4V* z>Y8a4$_$80c@a-In#X%LIz*pb-X$-@7z0un{Lfu@;!?PEntU%GZgb(J*s14{7v5;M zB8IvIz1Dzr!{{N#i)iBf5T9kKyhLw1vWOv)b4;(Jfaw?1Sc&JAzS2hbi0lVhhcZFcplKWnv*Ngt=#)8~ zq^p!lcxWgFw2GmVsZ<@8qX+BP*kxwK+9UvQp;V(Ic6~kqLo`fEoAYHHHW`B2)X`iE zYYK=_vB2`jv55_w(AlXj@X^W@m5Lj;lj1ZqJy=3gV&eu#2{^FfcgKly9IZRVWCa~U zKgy1uBhVR&!#jfv4rkN9!-hv6UXQcsF}j>hXpR|-LpDP23!qH%j%(n(2fy=E8v5Ji z5zM67Z-=E$}ku+b{k#mI=iIKMh=kbTCF-fTa&9q${EoaoOrS zAmqtDz0zi_(g9S$TARr@RwYNy+;WyGiEmIEkYY%nacbC-S!!nyArXc4hJf6RiXIo(wN zJz7FXnRA~5Rw3uQ-$WVB(|VAuHs^892p)WZ_?h$BaR_606b0eq$vz0#15XB`IRepA zh}-8z(C7{m4wA=!_XL!eK^F!N_9(wb3Z;@bI5`hvA$fZk@)qsr@^&-i?IE$?{1C-1 zz$z1-HWxIh75ga=KUK=FvEVV0G(7>ZOLXE9B^D9ko{)dXfeEkJE?f|7Ic|XVNvmXf(NiNI7$w3+6XA7p`FeLgS zT8?fgs$?A(AVIE2I%!HSi`Ya`pCqK93@&He9i6lrSV#ckNj4j>yy|&t}H+*S&}@&q~%y70ckm`wv@hgO#5Kn*P*<_ zI_juaK7&8AyEwT{p$9TnU`rqC70Hba{wjRWAV#SMT(Nx3rNl>9oR;q`jLypmg#T>8 zQyR7P$`$g=Edz|H+R1hmm+PhBwbu$Pg2pD)bl(ih2CI4fE*yTJO_;+zz`CM9%xMx0 zm~c$!d%&sCEiZC~4?_NGdWnQ@a&08Hd-{AIijy>p5I&#o&q2sIg`dVAgGNyb?(R>K zrR@v0pf}0yhQE7cvc`YoHq>vM?Vquz!lnb+pHW2M(W=TA^EwAph{kAyOT&u_E!!3Y zH{h4HbQ(Bqd*( z)ZnJA_$1K~`MW9Y)`-X}_6r$U=4(1tI|8dmxC9Slh{0we^J8lvE(Y z7vTaDe&4J(FR;0o_C~WhiJp}@Cz@z zAU!^xiatII-))f+d^4H$_+pm3oW7Uo$8KME!TUJ%?rfTBBf;xBvtPx9vndbXXZGI* zy&*Wx>~BN^&Ipe@I(yAgQJe38v#AgFDZ>51PjIm=QSc*DH}mXN;y5m&QR*{g-zZm~ z^2n{Yg9mFmBRf%W(mDssPYmN;7xsN`>;<5#0C`y-r-op7syhi@#Y4fwiJKd7GgN3S z(h02^iQr@I2h+S31-R$_j~nf7rl;Z8f04CK7bKs@vQxFg};#}Vb4eHfM# zL?a_SdG^yJ7~aFNf{;s>@e!IL7-atrUWm{{!M7Np8G?npm*$AVI@lbwMb;q6%r&u5 z7n#h{zY1DfDlOQ?e*L@EG`a{cv0KQ*hMbN@Xu=?XApXhXX3b;#tTzn{#Tk$`3=4)0 zew`7S5}8hwmB;Q%NT;2Yqx=*ZDOF^KD_NsGHC%5W@b0Bq5o@Cnq9Alk~^ISoB@~8sULzrR!-h?aen1cYy)GbE!qmA%+?ND-uQTPAzJl4Xx-?iK0tVi<(^?TG7`NMK3;I(I?yn ztnu%rU_gJ|l;(h9!{RSAioTgzw8RwnrU6iRkx}%S)S^R&wJK3`!}*GCO%z>xzM}4N z1^|;%iw>PwKF=uHcjtL9a8IJ>8>vNyV&JLqMyp#>iw?!Wi9}I6L*7iULyL}{V6=L} z`HDW2C^|8<=uiwCo@lgs`i>L;h8B${iXJ&%(ZYPA)t{sm9m)lvMA3EUEBa!hXxaIS z{^ukEfbr)m+M6i)w@?ZOhEA+7*=V)xd`07lqEDw59XheoFE(1eE465znYU;y%2;tz zqWF^3;zMWb#YE8yQi~218y$(FJ^z$~g`qPxp}>H5|M`mEnkf22YSDc2(Acp4Gg0)8 z)S^R&)s-k(l3H{qtoeA+pr#LUQ;QC5wJK5cFVJ2l)iJcF6|avA9`-`Zyp~!t1+R%2 zyF5|+>D1yw;jK>;y*;(4S<{dr-7p5WJH;QV8#390j1U`x;C)w^S9g!KW;CWMM~Z3p zJ8b)X``3Ph(iPZrza2$nkkm_>huJSmx9{U5zp4%B_O}F8-$RV4DJ*)w1A}xU(2Qw;%m=!^+veaB= zR$Rc$icvu=D`{2?F%Y)&(6+L9TN{ra!ZU1K6cbY|MGsLhj%4o-+GYU{l<@K*%A2u1C_ z5+$N*?DgR}MdC%yU8Pp+e{ZC+@fvu2SQjpIq3)#4qLD6qBkneLD-cM87&(lL*(yqG zcuC$%cYOoG^Yz||;?{5*+PaPtepm_QJ&p2gvs*$0cm(-HBF^Y9F!z=ga@EArW!5EZ zYt|ELKB@Qg_%Sq24;tdQwNB@Qb6_lj#GDV#z=gb%^?U{~XGqn1CpaS$=pww?iY40^ zDsfo;!ujG^e*a(j=4c!(=^3u(=ow1A-W)lLU+0U5-TVLQ+TZPNj`Sh@P=tEj{})~! zXpVf2%jU;V<6GLR;JY<)3g5tQIzSSw;?%gORM~IBtB1A?s|58!+->`<2_R=`zfvId@ zG9F7eo1A+MS3j ziCUka77aI2QS9ny=|H{LEsjhA0;HsC_rrS$I2}?6Sfmr@je9j*H&IacK$H^BrZX6j z^VOY{(1K^etZ%E_icnney~JjZ7NEp01TDE5Jtrf5&If)-$cPfC^cx93`s5xDX%cr3X%6U2rwcqA-=FSD1qDD};&l;kz-1OOUux7>(}*f&<_4 z8IM(pGsF9>^CSicPJZ1_4^EEScRBzai_4KU=C?p}xiw_*xD}h5L|kmfLs4Qv4g1af zLkv0UP684S8;tHGf_=WZ%z_i9f%@l_cW-5aPAg!XI1lfo`J_jMGf_fE&}kA3q331v zf@4N_Y)wKEB9uXkWB7RG;M3+?dgyq7S)jS-nG*2eM2PpWHfD!hX%3`f`N600uFQ-5 z4xis4UN1lR7*bJ3(U!ABf$QFbh~^{Te-fF(lz_VHQC#e%J5yT&(I%0oGoWOAo5tj_ z?V`Ha)d;J%uHEiAg5ail>ESdg17&e}bd9wNbGRHrU1l;s0$PPB(I^$Dc>7ZX(EOK% z9D2rK|4KSIp01BA#COvw-?UfEo|19RN%$nlxbMZAu|r+TUyRd+@EcBQI*BtW zGu8EoyM+t&QB90RS|H*u)Ka^Ui9>pTG;i%2_*&=K|7ZJ_w(V#FEn;2B0-sX!`_K;W zto=ti%%%>r^$vq*;+uDvxBMUJFoQbG&^vUaiF0&F5t=-BvndR^kn3CsuiX@G$l-+b zBu8uzYWbqQv{dY?rqivj(OhGPODCK$IHbIxADStFXkjcK;YY;Kz^AXp;np044z#SK zXR7e~JMHyyGtpFiX13hOC~kTwXym7?ldaTA>?xeXrXbQ3vzRO=0u$vpXVb#~6c2Bu zE~}%P@dSzc?3}PMWDN$sMdwJ~CE3s-j6z14DMR$blec7`1ZRHN=E}c;{K*$bltgnl z`K_t1BXiv+wia9-#*ISpLNuD5AF|enJf0#ut2AGT(~nQcDlH`-#0S|k1;G&9%39D( zGX7XwBUiBKID{?WA$RcT!s#GoC`BM;NEB!2TR@nmnx%}`T0Hy0J5so#@|VTX4D$P4 zr?}Kx-Y>$CN)IcOh0DT9x{y~Uj0h{E#H)Spi&x-q_GR939*^~ZfBpDHvGH{6o)^mv ze`#4i!qb8zWCnVT+3O)RCBpFbwn?k6nl4W#U96$5GtpbvQ|cSa}?iNL%Zfgad;aYI!^cZEV2l#N}iW zyMvLFK#bhZdi{5H{wND^GHw3T4DZjZ1h^fN*U!i&QybLkPA~xBz&d1K?slwjsh6 ztDGT^f{3h_i|HXXD#C4B5r1O8Ub0}jyMHCNUCoOEoRlW(lur4;v&Ie$vlB$|Hh+hk zP)yJNreo9WWK^%Ry@CQooDbvC4;(x9Md7rkm6tI-c{ag|pm9XQ#Bm(z3h$aip-^2@ z2+uNdaIvogZ)&en+_z|}pBcxHl*S*1zl|WkQS3BoYZcnkTIttX;i(m#wbGA^eal%Z z@7%1n5@4+yVy#g92LR$q+M&RXSikbgG7yazr$k)oM1mZ9=2tP{?OaI>SGA9^x;+S$Ott49l{9f;xgO zz~!_R2&LwE^JU8lrKpB9ww()4p}Sn{BQ=dK^jaH^g=e==b)gL>VMc=Kz>NxdmQvIB5RyoL))xOLT*fgL$8O7Cw6*7Q-XtQE!>&}FryG0dV#wk+)a z4q;b)^VQYjSm0$GKKc06;&UrLx8w61KKJ936anF$!pdsAEDIaK?eumC`eR&x2%+`> ziAp+ifa3C z5@6Z{Wb7d_0|YvOu7H%*xbF+}?5*piM6YriP9TtcWvsZ2B~DY~v{HryTC!Efc-WCh*45*vpK^hy}qlB#8BPjhB4d&w* z3SRk_wR0VY8h25Am9ZY_sgn2Y28Wmh|DXxF!YE>_7Fb{Tpn} z<)_a0U7gUzV&)ltUK|%j4~U4vvmtWZSr39UinAR^c4!@DFsNenINxCidsz3*T?m@N zX;I;N=dMLo=dSl`Z`h9c-rnGOsN98;SOUo9d9B>2dTFB-(NnY@pi`nJuymw3dB}gN zUY%!e#yO^#WA~3}9@BP1R<^8!++YFAXDdl;=nvjz=0&(C2Obb8BOdQZL>Ma+buR*L z9kkPuf!725hIT~#c;<>51c~EjGcYRLpARiXFH}@>byhB8iYb>#8E$q477xP6+3EC? zF`L$>Vl8w#p3}_o#3fRBZ)~AFgX}KYR(W_uIv!u58Cz44;fAqgWQdt1?4U(2o|0${ z=9r4oF^D)3pSLbYxJ+(vLzk?ys_U}oV71APbT++#LZ#t@tHJ}>Yd;EEl&=s8BHpp1~%^iKKY-bwhAVe>`8Bq|ou~!x#7@;92mJ^PnvkO6ourKI| zcO!9$Jy!(fHr{7(uA7NoSmV{|dY96ScJUM*G!5a5JBD1wJyn~_C3rk|Yr3Uz4t6wO z1CTf)-MtIH3|V)3M=)gF1;W;lCDa>u$kf$|c#}RZlwloL>SJZ>mT|Ir7Y!8h)i$wFAj?6#|E zD8f`0PckK?c+df2GtrTVg`XQoG*!Rbq$pxodm=v^pW(b;#)L8gaW>Iqad{q2YvTfs zTBr9s^q|l>(Ocdt++JJ`L4kFoT%IpkV&A@_WmWWLQkil(LelV9eTFN!Jvz^Vy?K4f z+mJ71V5HM4)tLe1O-ODciJ1wsfd#MCX044Q&WmNE)ihG>IAs;GDm+f_L;9~EL(uI0 z5BIp)bDbyvPw@>nn?424O-g~XHX%DXJy&J5~ zrvJi~zLJ6xzR|8RHFnJD={tA^4^G$j!x|>}VJxeXoUX027^nB+O&BIl*YD6VHc%bF z$`hu@4f$|QsvEKp@xtqkIh&5)c4@ec@%SHb$lsz|fTxG)Jl;<{?j{~DI0uh^2eMld z^AkMYPduKN;ZUwr8btedpaBiF&i8uw2DvJIjexb z4}Ko0ArAMLCeQG&7fqgFwHOanBhHMTb%Fz6L>LFiRHSR1IXdp`PkkRjxgE4t#?qKE0MA~#h6!5A z)@l%^KKW})&rvX2(mW(t9id<;JU9rZVvfXOe#n-A_eWxpKX^_nt-^my;X{(YSzi{5K)4vPV^T)A zb+Y8??!kCGEyXzH2vfES{%rC=Di^au?#@UIcM)y|@%kaIP|s~T=%_tqmKN}(FuU^o-OpyNr{LW$E(4?(YyBKfV*7-Es0JJOyw!?a@d-rg$D-`+6Q7vFl1B42{$f zojq(uJ+7O_x2cPIsfP71DN12UT0d=U|AIh3jtn3lW*KsT7SpREEPa_UQCdczl}6AHk*$ zd4sS|6Zr%&SEY^JX{C*4ZP?VzXyxpQhGjPYu^GBUO1K79@@1CHY=RDjsGmqSzV{uiuOMA5?czyq&sp7W*dt#a1Fk?V+1SJRox+L=8Qrq?t~vuRvp3tQkEZgh$F- z*GS8PW^%)M>zbVrA1*@qH_N^CUS7-~S{f;weQ4PujbCI6nT=m$IV0rIA_R#W^t=Bb zd+!1lWtIPrKLaD8l7ohdrHQw+yfniwH|7SyD3&OSf|;l&!z~0GW_Yxu#RiOVoN{-q zt+qcW z<#W#YoX`23&-olS(w3T@q`8j=8@JI{6rb}kKWs0?1Q<>bE9-l51;yxGWl9vRd4}-K z7>v$&4;5nZs1_@HXCpNDijsyVmR?nvf|FcU=LcbFgr;dR7!`N_h^t+<;59)6cxys@ zOx&>IVrbczii=9sS{1x2E{3btvIQ7zT1$s|6&DAns#-84_p^xBetsw$|liADdeC&6hy)6FKyEQ(^O>4Hj%V5A7!2sfCvCE&km?FQuReV%d&7T{;t zXaW;*JpTnW?QQ-{%$;=4OO=3#6mWC$l6=qx{L z5GFvbZ)!-pZd2w7t*TX2H^r0l@t;U%I`s!%?ICY#nCjsfsJyCjIR1MDSk9x&6jkMM z@$(oyULh1Z6G7{>c`A_V;kIprirScna@#hVlB6UCboLBvF&cUyqMwZfZ|f!1gB#!s z1gKTBy)~hQ5#D;pC4BfPYkHspi!TP|V8m(oGydVQT*PpuCrP^29p+;xO;1vRs><1j zu3$}Smf!ocKl0&)-u#Ag=%&;n%F6Z6qrnbGp`buK!F;0 z;8hxLp@`uGMeH^iLA2o?P{PM`5MT0qC31a zqT1IMruw9Go#P>-sSZPHtEVdb;@U73a?8Z=sL1s#3Xyh`BIm=qi)J9_9@Vx@oQiD9 z21j`ySsk7xY)V3PK~`oIwux{uq7fN>+}m3Ix`{lK3(Ktbi<<_jJ*o~}&u^@q?vs6+vUVYA#HV)yS5edcfd@%hFh zh2isYbE;p%Z;=erE6QBl_6qa$2gB@ZzmCq8wFix*XL87DEIwGLrH z1X0y6S4vCA`zLWp475-m^Z*-0^^~cYkirfiEK&q}I*#P=meR?_U0!D-m;?bnJl8x6 zZ}mJ5T!4FKx6sSoO<!DO_Am*rWY ze9D4Z{0-c=Mi5wplSeQI1;#VM$Y~W@Ocx=&&IphMq_!pkrZp`+Ll_9fc|He7VO5p5 zKRn@2ZPK;{hK2jg6}AE3dwbG}{+UfT6mXHv(c<6jtylOjc)tn>L`?J7p8r>1;gN{I z%!nJ0q0p*2H(qtSlmgvEebA}B12c!Qcf1a&Dv6Y&poV3zK+_rULkj>fl&x0ooA#5q zNmt-8Fj%<8IogjQ9OnPW@%qt@7PlG|BdY99ygkR1fpNm|&!_`%MX)pQ#q`ra#KgGX zq4)ky6-MocW*?kBVRsT(Z43!OhXpk8LUEdB7}J?6U@Mg__&`BI(kK~MfCDcrY6 zGvo6vd9CS|m)8-Ygy7#W*Sp$d=8LMe-_v5v@?95-oPG0Zee;?yU7{??vSAibT|_rv zx+pCJaCD0+U5=Ij)CEFg;=EQM&|jM==v!>@F;}Iz5}=6=#kTC~QB?)<%}*hQcZTpU zD^U#4WkcGL+6KK0YTUoiyEi(JB7co^cU^1YC3XU6VM(>7lr3MR4Eu4qPRhXsi3XZCS6Kv;c z+JS;kk<+F{{o+wS|6O8#ESm6h<4pGKYAR`~7iU*66WQ#-t@Tdbdd||dTiYC`z2&E4 zT-&LCN&jC*|CZNsZoE`>7W2KfZBQEEA;EAuAuPw)_8CF@Xk3t_36Y8AUf6(AXxJcW zAP!X(wbD=lM9|0zXlgH@sZ#+0f%R7kxb3P1yg(^aPl;tf!;pU%cA4q30KT8`a1bix z-vi!hO2}P!U^aA*_}&J(bV4g3UG%A2Th&(P6q93Ih5krMYv|1(9NwWxY%ItUvZ>*1 zQwRsM-oun(Gt!^Cbx3--m&F_&o zp8z=lL7r&e2wyZXm?Ij?n2*GVB^DGo)142e5|{uj6Mn&_53FRIjnb9y13piU&$GAM z(NgUIXIT_ez-{qb#%rcKbk_z>GK~7@KHrwc?4SD%wEN6=@2j>2g50u_JIC0&`8}&2A&zB_?U?X5r$8 z?PZUDYALZ{`;$T|{DI)NquJwemd&EUOD2u z8YjiAWu;+xs}U}+yUVPye?a6=7MYaR?{`PH&tpznb5p_uSoQ4tMQ&HZ+xe>Gee;G57L^7$tH5+Rlc$Qf6S{WDYQy>rRxp#|zuAwQ{ ztp;ij+!0b3pPx?%ysiOiX(t0M2+oi?9ur;Qb+W-}(1X z*au9?1%~OdN%EXVy*A*CHJ_>rk$@;a2gPqf0NEqk#^J%>xt)TGSuiv$M)|`7%6<%< z(Ijg0vDh=A%}^TvTK1GX7DyRIO}LC`nQ6lCV6}myLib#)&Ml}j2{ZV!E}`*tjZlz_ zI@fan3#)TIDwT%%$m_g6P54OPQD+t`t22V%WWm8Yt5}`e#iOt!P@PY(Iz#30i3y(u zl=q~k2}LXw4(I4W?B1a1>I6JG;t_&7D0CBHx)b!TwjJl4ZaWDE{4*b8)g&cf1HEHO zR3tcInfwk!&O~N=H({&<9K%B#EBIsuVYKS3w(6|QI6AA&s;|xhQUiiJ1tiE&+7mRZ zJ<&jNuz(nXz!cucFnPk=!TSmfL+GdqnLrVJQ7s(mxo^pz0c6-dj9bCqhroa28`op} zzB7MbzURm1wdYXDaESIrL7=&cZbIXMKSENf%Eu53!tkVxrwmr_g&0+3F0&-7Dlee( zycZzn{w}l3a=UPAK~=R7;dlosBwkfT?`1#@3m&vnRo%+GjpNaKt@z1M1_Rb&x3h2p++dN;i*pfoD9~vSylA`>|#EbJLS{dxSbX3fkGj) zPVl7BhCbM`6SE5yX~Mrw1k0%u%jw!Ofkjh)6^ur2kf1t{KvOjKrw1bYBqTI=zzc$+ zv(HqOcf;0TLL3A!rVZ&A0$XU%N?M)v`*pOMl=s4wSE#UZoa*N|k=w`d9-SA^0iy|6 zdjxhT&^b$K+=yFMQ+^$bO>yd}3!x|29Rn&KT9R3;6~chKkz#w-VX6DLJRM`3;AQOM%xJJZD{g^Lt=n2Yb3>= z73G(ivsv8PYR}PxZ-12JY}8T(#3~3`!{BuDv56*0>Fr^YoL&d-OwB}j zoh?k^I}=^Xq?6mFG=9q?Kz>$c!pf+Jbm4`6kbKHiT0r-ClKp$ymo8c@pdoz1dlUXq z*IIYMe84?|-2xKXoHAw&?aLdkLym=91MN)34W8f1&ZwMFCJr%ZN%Dr?;eiqiCh0s% z623_fdXVTd$=n1zJW!JeJ^XK=->$Iz)ftHULv5ABgbw!|p4H zl%!u#q~zw{$?@<`!XPAS&~d^Cejd(sJER4NVHiRMllQW&v>y)c*X$#)3-A%}G*F1} zFmM_~(>?zCA(7)Q2EpB_KZ&R@PmOT*W&URkou5~f{e!Am^O_e!8;$=Cv?-tO7}YG0>n5|d8B(3Xz>(x?{|iR z1JD>9e8DapN4>&a$V}mm50>2VO_wtMxzS3gZ$-kJk%Jpgs&`au2qY+gJtNU4 z>B2EO@a|f#9~Uno*}=}Q@6f?7`r!s#@qkVkNhd%!L@Yc|4DcZo!O(L(^2?CxQp00w zDi4;8skopl8(wiC(j8TCA=<5~xG<|Mvf{$*vR)MzT0LR0HH{%#6`hl=Y1)j==s1n` zK2O|Z9Fq{QAA&Mj;Tf6lMA>jrro8!i@i6Im@#NXR=lO0F5?Cloy|n^4mJMkqLB;6A zAABDHg>6v%vyHf6!kd!_kzk|FoOq`KLj`1=c$(BLZ|%qaRv$Zb@V^#rCALEM(b-z2 z^zVlj!0tg6Z$%>wG#g(b4Cj^GmY_oNd2@XmJKOc{iCXhBtwXMLq;Z0PLW6g)2#G~^ ziO1P^WONs`i1CxjBJmt|F(6_G%JRbL_yGtwKr&hwI)NC=@-D=__29bSMxc)IcqT{X z-5r&%<^n6Y0jWCo8BNTTT3oX1!}pu0hLl9LVymL@)|Et|M z;{VO=LHIw>t;)r;?3?JrRSwJTF`mPyr#wg88OCZxE0%b#q~nHB1l=%Vf{t$XL>)<1 z83gAZf?GLZL^^G2oCgBl99m}Vm^ls-ji7Max;5&c+6EGJ_uYa;NR+4}+Y?g99J zi>Ft`KiV4U0!%q{LWMEJJ!!VE8z*A86YCyzcTLo~$7t00D`-x3o3y?#QA@)u08T<*xXl*^ zQIS@E|A5jCMK`3mP#MJA{{FtiaK9e-Qv{zVt#ch-qQjoaGM<4C5R>k{bjZ6y-B);e zU_K<8`=M^yW7BYR2(xIE`+C)mgSmJJt=}}&j);}y1EWGbiRh_}u0d%n8fJ!U8>O@1yy_VD-WD0}9%0py2g~bkFhMmcM zxS@x5^cGqwxHV(iJTW+@NS{p#@X~|}C`3x7p;Yr)jE+c1y*MsoF!hO_0!d&8Qm>n$ zsCHadZJ&a@%@G_)Y7bTd{p_xGsQh8my=RoZ)M!Yu_)?>=g~nE^d3KviiLoT?f0x>z zT7Mn#5HBP|Cx9!}EW9EGw9slsoF?|ZUJ*@2Htxc_E5pGecofxZyoIfAF1*Eq#DZH& zN!t;m>pWb;Pzziet6YS173C@p?ZL=dH%C!T?;QEV$ju~f{BxAPxeAEbx8MmijQe|_ zk1sqFVp5LiK(Yd@Trd{oC0_e!29|*M6gE%7bC5>yhbnMQ5tO|M^k+!%oe1f@F_wuWN7v^(EVQtT{XN7J4G$`oWWUU!wxv{BytRpImn}S z88cRxs_HE?8NCi304I#=D0w9kp}Q%Y@t!}Tqj8fG9Stw^bs!bH;9;RP=#_dHVRk4O zCEp)!ueMoC>`$!^t-)D>BYeWqw7Lt5R0#U*#UPd%H>jfsNTz5pQczolJfM#OLz^gb z>Nur8Rls~pq3ss5n1U>;R(PEP*YGJur*IG%LYcs5Rh17-0N(^+L0;3YDtiHTBBAj_dEZy;|AtcJD<+`I`+>5lRdkama`j8NL^-fv9l|W(aXn(Gx+n z2H-!>YX(Qd6W$M6;UDRz~mSPCz2UQK{>0VX*3>Ug2scYuq*jiHUprl9k}%0 zI>|FhEC#&0j*`stnq4Zsm)X(eqN1t@i|=!&LK?3}k_nzZuq%+DQ3(s~+Co9Yh`_WE zv*Tb9KXJ&aP-{wm6uO~?I^tzc4MjhWz53sG+|ftMF1d251 zKJQP52CNro$r_J3npo{T+beca)XS=>Vk$RSn-%S4tF|ja*Ys_X$R{Y9Ky=PC6m(R@ z&LOlzabH)llL)G3!Ffb7v7w+2xrXC_P}??wmvE5nCGS2LRq@VXO5}eh5+C+YxShqF`QLC#yL`1BUNn%XS9WPoGZjESxc-dbNT?C41du6Ym zkswW&g_1ietEyT{Sw2NIul(3EPRc`7Spx51K9x(`9q5^P%t7-(2}#0sM=!kd#~jqx zocj*wG??b!MvlhoQM!)0EKR7xOIyH9o?bIoecd>&!~YHVchpJ-!mj|iie1!J&J&3| zBlcHO(daR}O6Gl@>>b@i{8VXh_}Pe9r|gdraF;k1pqK`+g_&Ye=A8ub-^>$-PS-Kg zw(S7owrwM%Ak+h79i!zUY9x)8KQ`XBj*b87%Im0oi6Z7`94eL0!rIu#l46LX0dV3P z-pAl)a|K(HKA116s-MYc7c~jv{@Zp3=i#M+*wJ?P0ui<|SI%B1!nRWz3-QjE1m^n2 z2@J3_Bz-tV>Hy#M6*~vPlXGKVOod{wa#iQbWiCJS_pzx8%;mXB98B1&MPZiFc(PRE zGPw^=0YLQ;R1st47aO2#+g5|%K!ET?+qT!)|DE_hI}kWcpENAbOt?@)CEsE~b%2;? zM*lX7SE#_NEbY@a6J6I4i`dqXVS*M*$oXNHG2UOrlHj_cQa0B|bxJgzvS#r>o1q~$ zr-?3H`tB&_JAkjFoSy&}=s-bjgqu*3_j$5nUbBuu7?iuf!_QEoe;dtTKU+-vY%vKa z6MYP$ipUm3F$7$^AfO;I$1qR>Mnl8%$Vav;JPKz;`S?y*w`WA^VDK(Ntu(u|7y#52 zGutuVxUQoa7;l)YNuGGH@eUF@B)ASi?+#Tv@HYPYdW$vnDZIN_OWpmX*2mzbIk8b* zJCu@mcTsZAJydEg)*(0e`b<8}JDLMC+|LSNo7Z-cyw8Rb=VXjbbsAU}P;+q59li!6 zTH9|ro?63BF`N#o{NE$=Rw%j3d=~}&X2OLDwSfo&{03k%7lMOLH)sP$G0*e}i_x;) zDJgH=%k{2cY(MdJS^1vps>PYG@xeYQ;E2L5Au@1J8@6R1w+(t71Q`U?vFL`I_wh>4 zb&b8m>`7x04+Z~F;wgKJhP}N*`S^R2?h!hkQB{)Qawir{AoUVXp*lD)4S#0~KQ_tX zjFYgG-O>)Do73EDY{maKZS^m;zh}k{F(^7?ENI#cb>HTX2j!lTE(`_~S%u3ZC22uK zi$x6@`vy6-z7dOX>K4BEU?&#Vnx;y`>Y$>CY(k+?j84J^>p5TQW?$-hU+PApaxMU0 z5Y_WNz96=U5TdnOwI0z^%n%}qM zUm&H;{DJC$5$GQOEa+JJ*_SG{3$S}29NvXt^TA~BIW~*C4>9lkfRiNj?k(TM72b!d zHR0Irq*klez73#+UhtJy`gg5HdI&tM$02*fg#8on%CFy1N&BslG^a&C#G)3Vwt!wb~B_fSc=t!t%wr zzSUD&{ntbG2bPQIt2Y=~g`A>g?&kX)@ytN2`{+Wuaea0h(bkjk-<2JE{i-ruiI z&>qY6%}u<_25G~3EKyRUe*`qI(CE|fW=#p3Eu48p?5sh^w_C0K7$1eB@EG(a8Z%)S z4*pQ+ITS8H^MpTjlmB{59RF@~z$n%MA;At%D*89{LN!wGG_2}@=WQ7^x_KLg8=4Nz;Tz zY}lU&fu65P^d{c4X%*$aS9r!2s^{m=z~EwDg}};9xQdJg0{qtT$cN!GC!&UW1|lkA z6|S5%e_DP5k~ID!KaM^J{izk01pc~yweHERjNa!z^44JomaH$uBR1EelWGBX$-?2;Y`i~ zf@Dx|Bfk4B&>g&1OhYIFz$S-TaMh8Bd`NpioC69 z<%6(9Pq}}dw^ez6UvF!q8>%;>JyS`Pi=?g?=D;gJ-vJIx-;b&)lJX*1;8tH{fXZ#~ zVH!;{mq(QLsjv*;+%2%GDl6eB@pl^B3JhiDNwtMc}wGI76lD zJMe@kSLpswPz|`hHE1B*doZ^SVvy(hBBm;`gofQHr{cn9_t1(9&(Im$vmQG{9u=zf zHa2})8e`xLQLVpCbPBhCkt2cPdRAyNS{~+V0 zr$P1#go!A7MM6Np9ZklEX#=NXB1j}}3CSAN3fw?{pTNAPIgk{Y%I>qO*5{LdRue8t z5>pC7`=S&#yR9^j!f-)YUDsGq{?)T>JE%ZU@BA$^@_XfP#0TQ>eX&JnLt3?-L}FM1 zaTr72ly`Zv(!0Dx+3*YjpS9aS4UpC3ZK+|OA_hcqA)Zbm5P-e#tQ4}BLa2^?yVvnm zmI`%5Qn7+{jcw}um15nBu?fd%A;ImB?GYt02uh%aXu$H;5Y#dpwSueT4vzFI^MmSoOB+*nKif3-iPt%Zm;2T^Cw+a?pTu6 zn1)eH1b8F8=fNni+hAcd6=c@M0}BT%4Bhmh(;+%*ug8|HH_oQ%^oDxSji>2FA$FDm zx1!r#-*yTm;zlw%{XOUTmMJh}hy(YZ<@6}=;e*HP(s{RkUzYmfyDKaw&<*+|aIS z=W8(a+BNcg0!M~0LM(w~wQy7ewjGej-8B*Z=}J>pjAu~jZisiy2A@6vIo7s8l_IUd=u|R6pG=A0OOKm6d=Kb$)&AX zV{7{jm}(GJM!GUh%u`xb8V9=z>R-W#tOttA+Sh1QTb2HhP3Yaf?8K>bG# zp*vU$=<-JfZCaSDSc^bRetJ9EJ%x2GHIcfOLFm#>?AZXG@{491wgVs+NoAs=72}Im z0eX$Ny1noayvhRM2pl0{h|)+VX)e6QgCqYzt$?{HE4mzv{%9cGe`)FjpfQgTh{dbIPXpf`ILIl)sQ3zNdo-NRqzg2jTQe4JZZj;7xP=nh| z81C)5-3GvsDG(nYc@oFLxj$`sZB& zOB=(faU`s&9k(liDC!z;?aMzU!e6Guki_^`i{l?S%M+cLZifEi?dbi$e2jV3gD)@f(`y{$CZal^}hAUE`2W3M;ZKp##6I@g!_WmQetFg#g0CqVMp$1%ju`sWGl zLmc&?IfJ~~=ge8ks@t6T5*2KpFjvY66Bbhi`>SSf4`}B26kz)gNbrS;lSL&A05**M zn2BCtz+4jE048Cm6RuX_CAd`E_uNIgA-ZUcfvOjFU9Ki0ljd}w{Ogx;U!o)A@@T)B z6b!Iye0U!_+WdXlaC)SAcH41=;i0q=&mu7~pSFgh1UZN{mG#Fof@mP3;JDKL2}ubK z!*m2s60?UCunGkGYqmA^Fx`uAcmO=ty%4o3{CNP0Xf9B(F)6fJNPsIg-7u+M=N{1UKcTjOo)G8x7R zRvAHy^@1K>qic(U<^rvx3F{E4BRU?F*|!?&2S#tCudmRGIUHO<3nTMusRB>KkIJM2 zQt^!e;bs)sI9guN2SCbQ3L1%m3NPcqyG5uudP>VAswbhIXeT-`9GGrCs)W$SAuO*p zweWzHkJK965D;>xPI7smpl}A={4;6Xy?5>*R6X7NW0}Krr_v4VTxP*q2u@L?e}MO5 zZ}&~!i(&4e-izVxCW_o%QXyUYx3=abKdDQYf z`K?}XAcoQVU6&x@F^(kt-gC!f1i&r>HI2sk(6&h50M=r>2ZRy02w|coLYQ#TAspC4w?w%w$Sl1$;3Nu?~=~3>t6# z%TQVEE04sOAK{`S0M*kOVlKk*m}P5sH$^i z#bAA+H*hO4aGw&_@BC9Q`KDc>H-o3K^~#6);<)GHn+D0BurvtbpgKYn+k;2>ra`Oz zR9rxdLUyF&d0$i;?sdP7QyNc{KMc4S&kBFtAIs6rpe(|H^J@SRAXHzpa2(!^Aq1ju zrp-()eMKGm8p5?5*pMkY1b){Zgl@G&dg0S;h7#k|F;J`#yPqSB0v$c6(K!1^@z#IZ z>)$8~kZK$ZjUfZ!?*_{uoMwd>7p1n#m12$?X?*SgAylXoW@9zM8*QFb#P5EWQGxk{ z_y9g}l;dXd3n&lx6^dgO!NE4UeXyOzI~IVCIG^#TFQHvAGHv7uNBi;KByOJsGsFNC zhLJZkKDlwa9!X~qeSK<4rVMZR{u%Sczh78@8n$ESsQmdCZ8fC|A z9>GDcbYlk6r~-{b4{FJoHsZrii`t{U*g2{kw~JA$+oRs!IjWq35u=`LkDA^&Y9}N{ zt4;o`3BkIK?;N#zU31%`{zCBWXqJ3?$<8BaQOoc!GB|(!R1{#uze4fla$4=x=zS*K zJzSj2p!O#+FL41J4?B7t@}X>;5E%gQ(SaZ6H3=|nW5cmOU?Lgj>$n6wM;rPcI9V@R zBsq;khw{($&-diCkzzj1pFAegS2QLv05bt^iDt4>2aV&B_Wd*;Q3B9Uift_$h@jL! zNag&A((M5So#Vq8;J7;%V-58GJ8QP=@FlpA(LN)84T{UBnh10Q2%HA#n5J#)O0AV`GJ^EqRpLPgt| z(BpRnhZ#z%ZqKQ0?0T7ecoc+H7)mca?mtZb8?885necRaQ+DmF1yG3T- zDzhJu*~ftB6>HWuHZ9o0Xi199K0{`&l-V!I?1IdGR%Yj9Wi`qCTV?iUnY~43kCvrP zmf2H+b_pSezwsSNBlB*4jN9Qq;B5$V+txH}hL>CKZ5V-*%!UZhZG|gwePQ+d#+$9* zBg8er`U5^?gRCtSueTL+0jcl(3PXwb{t=xehe7Q@h7*@&l+f^TYp%)U9+lzW%?_K? z#Q!@dT`5iGLP8IOw&t2Np87=)np)gWNsCpLXEU+_kA@GWY*r}NMJ7}p^IVv)FM*O9 z2Y4EgTG1sn&g;SAY9kURqNYQIZ^ z%)$A(Zy{x!>q{=Z+*Q=t+f>9RsP=t^Iic7OlE-*(h{&GQ$8a9v^K9~YHv2r!`3$%p zcwHd%IS^ih^3e~CGt5Uk)m(i9==P61m)6s9RV|=6RglHQA8@ynJ~6Aj35N+T_1(z=xNML z@IR|UP_PNtSre~txj}kOC#Y=3pL&|VLFn49d*7OT1FtRNqnS?2D(`Rc0FqjrGYN# zb{T=Uu&Q?kDiME8k%2VDy6}X`gO~{KSuca}QAX1(J0p`|1fABZ9s4_kw4r;Eh`V@3 z4im$Qcx;dl#TrwSMjS6JDrjCS?By3ljvMxWD$;XHH3T(?yiu!!?$1tu#)_oWB3muj z@AyHrFrF)O_>L?$E%rDB?|qhJu?ciUn^#cY~sZaAbdxKwix@ za*e!S_ZWf#^P{|N;qL1TL!gKp44~%F&%nR~+h=twr0H?nl6J_@L(~L)O3eF4ke}Lf zKr0x+V%~ITQqA(lOdv)QLN+36ddgZ<$RfrjKZzj|#etDPDv#G5Bp`Xhz58%38*IG) zlxq9bRw#^f&rNYpOi@+E0xy6brri`GA@Cv|3Bqwu8mt$<4F>Bh2`Hp7g*b1&66rLy zg2W2>)kw5oWPGpnlQ1_abEd$ISihvfObi-`AbA(49FB!K1VR!?G=NcWWh}cZt4i8 z8@*!i{Zy1A8my1#h6i9L_2D%Q`LHpEE zopr7{>wI-qD<06m5elxue^Z_HZFSan)mgZR@qMrAtlH|Vy6UWBIB?;(NbIgoRcD>X zSxa@+r~4iC=+Q{9z)Zs_YfnrXv@)?DG4@;1gan+$VKf4qk-#sFcbJA#>7Jn(!Ds_1 zB96I-u!!ytiSzdi#Yw~IC-D%3$FO{2KaX3?>^^2An5}{j+Vk5n=Nib-wUgwm;h=fIk@4s-o=G4|+! z2fi6X3B?2FE}9NYl-$m&s$U5|hp^tWuAY7#!g9NW zz*#>j9@Sm#kJfUklhp(6A|MSCn zo`?;d!)s*WyMCYNIRYck|7BVDn8)%wIv5%U;~&Sa2qrjQRzI^=72+#Lq z!N~KGxBG8>@;x;$@^E?jVG;SBNigzoc|G4nSS<`~9P3j!ZsJk}SC3=j*GDQi0p`E@ zJAt@0?eWuBmAakFr+SK)xeH2))#^B8)5R~=*eUB_V-*}g!G05OR&Xb9QnGS%hhHW9 z)ZqQkm-)Q|zexBM$^62`DY!B4OOyFcgaJ(r*E^2fxW^KmA?-yf#RFo29P+zgo%ef;|Uj4oouq z^!U=R1@>^X?@KA(6xe6NEQBeBDT8?chJJs?cOT3Nm>*!m0D~J~)G)~~88EppE|_YV zKf-*Dc=Y=eZJ}QX+W945auTKnW+2?R!nD9X1z-9VOWzRqeTzKC;5!#)5sVGy82tL< zOTUwdD^PswMr!cg0&^?u2`~#`R>G`<`3uZGm=iF~FqdG$QKuVV)G$+E=D_5`G{f|b zQ*h&9a$u&y3`BhT6#?EAFzaC+h1m@A7nr}pyaV$A%qf`9VVYoCVU!q;{b7c|+zJy1 zV}nV7nFCXXIP_ZwR`6<=LYRdxQ(*`Ft5P;4(5KCr7%-r9z%ExzI|bu zk>@Fxy)au~Ho&Ze`7`3|g{g)47N+k6z!t^^vk0aFW;09;Og#)YQNi5=V}n@)b3e>e zFmJ=u!U!-*jGGOB*DEkJFh^jFsKXfe_s1A(#oVV~bjVEiT&HV!L2_cQzg((I*0&bj$6XLinv zf~Br(*Q%uKqM}mnI&PZNO*tm!69XI{ka(>?MWOf6FDw1ZTh6t^huco z#gmdsT+T^SOp4}oO`4&Zq?x2<#iCr~JtMo+?QpqDT-{SL?-Z(iL2+J}l+%mRhN6;X zcRO>EN|vw4b~({Lv^3AzJs(-zPPuSgva=|A71eBNc0rNHhAx|Zd;xE!*Ty3xXKDNU)<&2bl%_mq~n z+}s70qL?K)q%0`qm$_H1KpT21DNlEar$CP-U^eAIS#fuh4c@{>2ej9;HU*QHgFb;!^jo4cv;Ev$s-Ja69CCMeF zVwd(J|J3Zeo$1b^+&KWYyP(XOp3H4f%yiH8I9;oz7w49^mczTGI5=z<^}^6ezh^lH z+}x6MH%8=gZaL*M$5TA3cp3WHxy<8sl9l@j`J_ADvRuR=3^j8hNRfoZZj|jRD_G`C zFUSFG;5)szz&#HTFUfHtdkig(8_6Xv%}XOtIaYGq@2*h0V7?DZv6;o}ysp zbF=eGx!1&W9%tf;Wx@ETsU8?WPPa43Rp2gImR*$YWNSOey%4NTL3UBWyND5EBN_c@3KFw9)S#gE@%cSsGe6iDYh42K{f~BP;MVKL&J)LLWL#$t&?yJ?V zTnfKh?YvU>)oQm+3cp(Ic2VtubFv%k9-+3;+)OMkEs!SWODsjnid9|4_dlp4$!~5+ zD)3#wlvSANm_^)PS(up3+!9%qQ2T+j9Uk50PCr_e#L3Op9t@{U4r|qPjK8Ixyga8X z4GW>O*xhZVW8t0F2qg#XBwOJ)E~%)b)G6lMExqV1&p^q^)~=2Pj+^7mV;SAyT*ci) zE{2gX`8;B6hmzl{70zNrpz3#9lS_by5T&5h?OG)-kn4x_9APx6xxS*ECc-ifa=Ft> zGfQ}VTo6%n*K_GbPUi~lMy?3?V9_hc1iir0&v8nrx|W<;P`XTBU|)iElE>u&K!X|I z#?37%1>jhFxXI)~B+(UvmX&&zOQZ^@e1fouY=OTSZsTs?sOeH}b4%`a7ISD++J0&F{@m`!bXoEO?BGpK0AES??`itSn7LY-{!3q>Cca{Q1RHtALU7-?; z%IL3BIeZ*|Izy^gnC%0(#GFD;shc&CP0CX4X09F0az?5J5Uw2YH;$ALHg1@5-g9LMN5QAmVMdQEJ>1Iwyj>+SK8oi#I;mj`Uy0&tlTOC9} zc3YE2i(?u~NVnRqDqfZ^udGPF67>mW>zbLpT%3E|)0Gl9JEfe&Os>Id_i& zzEcW{bI^Q@>sgFm=eCmX949UIB2MQXCZFlcS2$gzB}DQk6%`Od;<9Av*%apHkxybN z>P{79WJoqher|4ue>NzoBBJ&o?%wX((Y+F~;)-Q?qi#e>P`em*{DH#6?xbSTM~h{# zr@Bg(i-A(p5dLjP3dxh|2i%CTpB3{w1v%oJZ5uWISOwK0uRBHAL zP^H>fk;3J^V0FTRaD_U}NlThDH%_FBhtOKooi3hPGS|73}pqx8Ujy9L$BJv?chO%$D3p|}P z_|N3Hzro~`<;Z9_B5WIv4@wCzufEW*!7H4#ozP0aFZ91+xj}C75?% zPQtXnToBS78pr zdKacpl3#KG1!rf;znb2ABz=j9M+&)xLdgi+(d2?=z-ffHK*ZXIV~5*={P-S zz)EMr>SgBA9Z4y((&w_tmy}Q30BQ4wp_*He7n{gk$v5*#zE_Njm_)xxnM#dXl!`4}Huy6XWjg3P zaR(42`p7q}IE^S4alcLrDvQgC>BtKG$h;-|mMC{*GDo_zI0sqD%OkJ3>2e=NQ~~cI zVz5Os!2R*8z=o7I$5cEcWfMWsUdcbRvp@RcO3{Pfh+Ud3X2gb2hm+8Ks&jdXYgLCI zppaa$JiCAqVjbS8*~I`LvZTskNm@b7i}rkpz+_cOD=8{iCd+NEE4#Q9ycZ`WEA2?o z?vETxxtS&Ig4|USEW~wAoGe!lNxXVcCZo~Plf){!5<5GkP_d(>Fwv38b?9Kk#z$QxHxD_7!vSB@;b3&$H7Yp6^${eYL#v z5q7n_apJ-yN`WK*&VKEdpvQmuP3ERaSp>5V30nTstlQHkbK)k4c4gvE5wx_&`A;p$ zfR^|RW~~fb{?n}6(+>*_f%}fv@aO1OM(=B0MpCyj=xyd}`vWl~ zWf;twl%=srd(8@((yfef*Sw6hZe`qj&C5vdR>s(CUd9~G(WO7e|2LEY76|(xYxcV( zXp!9i`6sa(zUqfed;RAb%W_ELy0!zi`>$~sN!|LKDxj3r;y<^};)3LFup2165mCfBx%bnZ?G7{PW7g!|g|`Sfn%irR2(%b3}%3~JA{EhD{K8H97MZ5fVk>p7H3 zT;nq4bX(6Ou6Y^QwjxjZ1;^D$*sm?Dz*=A>bd*8#!nG}9Mz{661(PsTD)-uaW^|k9 zKV9=OrgUpZ3_9l8(hN!6aEa-fmocRqtVaDel+l%LA9>BoNb816Mql$Xz>V!PKgdaI z$hG^WbsJaVXvekv&FKcKTdz5+W^|)Vu16!TEiReat&FH^UdEhmeLmru!)j(X`fB1e zFC(>EpHIH#Wz6VS#%iVIddJ zc{^xO_3$mFsr6s@{NKX2{GZ_W&FQv=TzlTn{{$WPe+!TIe*$N5+zNA^ht?>f*NI<} zFS*H&+)E@k*~!e8+*tbA{xnT;$4KrJ$xZpu{xv~zQ-0(&N^Z)F+-k{9bOgD_OYREE z9V59DBzLsrrV3O1$e0CI=7yOqq%wY$TayER^HFSVHBH@CYvQZvs99qtNp*LS!R z$bG8A9YgL~$=#+H!SXvGxqXl-qVO8YJy;>ScS`QfQutQMZHFup#or>ihf3|)EV;uZ z_hVhcH^NP@rXPJbNN%!|sg~l?9)sK!lACBla<7!!)IVfaNN%bNx$`AAt(D|nBDtx* z$UR?j)AdDir%7(&CsF<>lAHLi6qm{{N^S}xw_0)s$H#cd9ULDqk~=v5q9u0% z(o&walDk53Ur9bIn_J2)<8nABmy1~FQ(K;=78)*?L;6SBGnkbshTo~6n+n12bkGgJ zl2^UVO?5vja}%sdg9biqvq!woCYhV|fXy;D?bljl?ijdRWp3h^Uy`{Q9kW!*A3&t? zl|eV^Hxlk}nVaa}2)JWV@ko4$?+}GA@i?OKB_6>reCfO=246bM7=tgJn~cYo&S=iw z0L3LR$g1bp1A!h0^gy5o0zDAufj|!gdLYmPfgT9-K%fT#JrL-DKo10ZAn^Y<1nBnd zX0RS(V2E#L#1|jgPrRQCzEp+G6IRhb{|f$nz~t%@nZ+mn4X`b7E4Tyr27g;uKtCHX z7^Pn*M`!=RQ(6vTaR|x48OUP%r!z@9U!4Wnuf_PzTqaB zV_&eGQ%(G?d{UsTwy( z={p7gIc^4Sr79pvSHdmlR&d#fzY4X7I?NSH_D0X=E64}d8XpFYdTIJlToMJVCbAB2Hz6= z-OYKBM+|(@(56z9<-$GLj?d-Gy?wR%7vgTR0+6Rskb|CBh8q9+7cvW&&wa!6fG9vYHg5 z^dhN7;wa|0KFY1i!nypB!HjKgFD4o@t(IUSNilo4MHRF|Rgz&Fjp+H9u~C z#{8oB74vK6o#uDU2h7LJpPIig&$r}TT$Xz+Yc0RCJZ1TdWxM4)%MnYGb+Pp&>prX2 zHq-V8+uv;;+Kl!}`_uM!?AVgAy~GCfY4v$^hNe=pN%L3DyP7XFUu$AxGh=bPyE>UyW`i!Uy7dysC{Ps(tOFRwU{l_EQOYpmNk|?S=`o#txj8o z?Ue0CyUQLRM#U1bUS~A-#ctJppuH*X);L4lBXKXpy%kpzcO>q|xa)M;y5+iib*FS+ z>n`g;^#k;J{bKz;4PO|(GBg^#GyG^cZ}{2JW(YN^j7H-trngNsroEvK0{f!E(Ve%6iFavhlX(ZKrKd+h4Z7VgHx?ORCoj$Zz43 zq+X%+sP9uhtNuoPSv^zptmc45(4@p}irpKVs4ds-(_Ye+#8t%g)y3*EP|F(KNnM0~ zkbZ*Rrg!Mm^y~Dm>EFDI-%xKzGTv!iY^*l^-WX;YY8qvV zHzk>NnLaeto4zqkivMl=*7&w~NH}8LHJLffctEkz@(}ts%o=GOXDzorX8p|i3wk=i zmTFsw7W~2XtnDS+H@3^RzV;jJW9{+wT>EmgXOI0DwWk7dRM?(osLRw(s5P3`G`GbX zV*Ro2#@5IF5c^B4QaeI>t2R|TS6ijsqFo#Jc-+Tv=i`2fi_k^uM(XCG4_4>`x+iqo zbh~x?bsy@!(rNWc`V{>v{W5*2{;0k||C9cbUSSw$xYh8o;jrO^;a}(>!O&vpXVe(y z85bI}F$dNfA2Pmc+-Lm6*kBxB8g9xk<(Zb7c$3fcoar^wSyO}QJ5#IavMD0|#`sn7 zZ^XY7zc>DH{IU3t_gMa5c?Lasz;f7f!t#}+)uP1c zf7tqpb+>i0&1rMlR@r`Id(alJJz?8y`-|-j+dkU~+h?|)Y(Lv3+jVxk-C^Hg-)Y}# zCng#BU7d#Beqa4>^|zQM3XMuLUNc!^)7+!+qvu}))VSEB*jHn}j~%W3NgEY+ z14gSlZb{rKjDYvz4#w5SeHqsjcZ*J^OVZ8P<>*Q=B3{(}O}7)+;3tfWf%=vDHTsA2 zkLWk)U)Ar@AJP9)|1W*Leu%*V%(Ki;fO)mbu-@=4;PxaSb3 z+&pgiJHrrPS?aA{TN7+^Y>(Rhgn3wR`_k5E`_XpEhB2}kcoJ~PQ?F5P!iYblKCTwj zvo)ET98ICdqgkz~*8EQMxaLoq-I{%xCe8PnA+f_^r^HT+T^{R-eJu9L*gdfaV!w_3 zF?Oi-CT+5Iy0%2?*8WlZwDx_>>}Ejh#<-Zcsd0D2-4j<9w<+$Kxcza5;(ow58?GCr zOVOnQUMqD^>HefUs5=7Oc|kWqKSqB$#+XNcul_mxix_7o^cVGQ`mq>gX@+^gK^2%y zFB$3#Ck>Yj3gbBAL}P~WF5?=Ew2`KXCYxy{#+S$RfN6{A71LX$-KH;0568b7e<6Of zWu0ZDb**(iX3l!s>zMst+uCg5_M7du+y7**5plp)j*A04qSP97rn(9cIiMb>xkZz% zSqSX;3b5yb*hz7p#9aoCx?Y#8OV{10dsO#~E=I4`oAe3#O#KpluD%3Vvr7Ma{U7yz z(r*PWIEYr9)_;x}^Bvj}W{5D1GE6XN3`T>^Fdc1j86GzL!SJ+Uo1w;V&~VJ~iQ$al z--ZUmH-_&GKN&6%B#Qwpf6nr%<)q~^O9OD=B}=HapY;aoXzL`a)@rg& zu}-(nVr$$=>;2Yh>kHPuT3@riVI5_=&1SVNu;l?_U)q{&gY9ZN4;=oe{RLo|_w7f3 zIWdN6@D36_VQQ6nsJcY$Q$MQStNu>ist(cg(+tuK(~Qw*H5ScO%?!;P&0U(MntaTz zdo>lBb(mj&(`?hcrRftpICe~IVr*(`R_vwN!CI3xPy4aqld?nT`=SPyd18 zOGB$ci&gv)&w<1)_LXygk-#0cM(I&#*7D7ud_} z7526E_4Y^Xo9xfpU$Vb$e-jw%TRT@zJajylp*E;zsWa5e)fMU^>fV}hnq18W%}<)^ z(Vlx_pNl;O2u{_m)?Uyqj&sFrjeAh{vMyF{1QfFj|1=CT8cf9|d;HY+=J;u#E^5v3 zmcLpqS{ki-+r4(L{crZ|_A_>_nJv@YICY$QmwKOiyk>ChgxHF>S-LZrqy6nT8CJz7{U40<<{S0g?z`l$J${1);hvA#x}vGwM_-y%d)Ms zd2Nr|wqv$mXCGysjFob#eGcHe1<>7X|I|)Ma0cf6P3l|Kdi50bO!WeFuG*!(U%d{a z`C0WV>Nf#}W9m=UU#rhyTxZ6vi`@xG{}dacjn=BQw`&(^z1lx({{*r^>FLfjJkjpE9>#mPc8lEpZm3 zWv*qu#SO}9qvbKn>z19C8p~eGX-mCDz{pfu!>wbi<3Y`)SaSfcO3d`T&a>!R#s<|}i&PCW3(@xNPr$Fbm zn!@9w6~yizFM}(&<9|O`WrM9%0=Ra6oBQa?*q620h5EJ!$0;FKUC^R98UT>%TyZk0IZTHY6J`(MrdQn@clV!gc zkS>#RvfbJ6tJdLP0^-m?_ss-@j$Z;O*U2utOa(922DF7E#RYS_#Y>p%azZ;jV2(r_ z+J=K@C}_u5_Dc|bWj;OD9tiY6pa%jy5a@wG4+MH3&;x-U2=qXp2Le41`0s|m`oApT z^`{o_&pfe!Z{E9r-+FNYU)=jH{WPk_{hf>@E^UqfH!`;fNz9(1?Kio7w}u^7Vw6|h5S7TYi(M<-|^l8 ze$mziyhgo{{{ndpeQg1s`^y5J+W5tqqrA{^lwS~fl)v$Tqx^bnEq~zRVLs*O!~Bu~ zNBERWhxrP)&!!yZ-+BKde$1hh{Pxd}@C}Ijhs5LjlF>)_7?{J~)$!`$qr7`r9e>9| zNBMtmKFYuJ^)Y_s7f1Lk;Rs8!6?QJajvsUeZkXZDqx^E)QNA|mC|~hv9sj)RLq3!{ z%@0|0jK3fC`T*`3D0>6yu@b`UF$A6AE1K}3Jj_@nn4)bwMNBMbQALZBmsg6IP zLLJdoHO#q%r}&pI9Ojjm5A#o>9j0S-{J9(I__OJCe8l8hz8-OMLXPkUzOCao^*zET zJad%4SYOBgJGGXd^lTl!{`oq->6gR2zC6NzaPbKL z=D4GL6ylEo92TOUIfxg9_6$RPlkcwMM?HCzABOq~2tNzItnEknxv+-pn+)5_!g^LHQTx7_w2|8V|sepkV9eg?vIfa8QQ$M~cRNBDD3ALUL|Z+ z$PxZ@|0DdL(N`}v9Oci#r0hDzKau?*p9)jB!4iBKub{LQGUk^FP-w8NG!kAFc-@t6a_!v-ilz#&7d<-y&11z`nI>HY? znwH*2cpt_|ZR8Pt82oqQE5N*;dYl(fzo?-{_+*#^2-6(+h`%1=YXe|=04DnLqx>b* zcg00EXEjhPOe`x)kD;putrrvr@PaOqpefo-#LdcZXRwk)X9pd} zE$ei#i&p1k$CI7vbW-Sh%oeo;$_y_R9j&OSGaFQtq-&A$e}A4?E>_>ZzrVhidFHua zKF{a#c|MnC?_YM5?UnXdbEM1>)1|)n+jlTaqW!b8e3|&FvP^txj`@2VlkQ(8w)mHc z0naiq8)+f@-HN}NvzLkT4a-DV@iI{;T_(2Ox=bAW>@smp!7}lgMa#rRxy!`s=PncX zU%yP8jXJ3A%|*+^f82tycP$g2p1(}I6y*;f-?(U7j*?}f@ys&u^Lfj}_w$#DS1nv7 zwxivb(bl>=vySPRL!{z<1ElOB1Ej#ZL}|{9L}~ftAyUnhAyVHViPE%D1Er~t50rd} z`)9@w=^qOdr7_nHk%mqfA|1IjQ5rFBh;%{kfzp9r21rF;50LIZJ3zW&RH7sq10?%> ziPDPnA=2X9L}^q10n%laiPEsKL!>M65~VX)iBdn5y;2+~UG>@kDK24vls9pRw0zPK zY18;2($=&g(vp-!Hirj4$!70I#wJRK1|~{he>gx21Omz`cJm>0{;H}RkrjF z^6x;|WB9xLqipHT#%xJJ`RRDqpl|o!eIvfV!MhlF@{z}ea2dj%p^mX=V+-mWin>3? z-$Q8kAL!pi)Ek5F@rG<^8~Tv`Zno5nzef*eOEcfgmiFPV7t%8Ew+?^TppV%fXG^)L zFMxK9`fO?8+u2eOf6n9C(iHr?@jm*8cN_lV(T0rn(hzqi{ubc-Dzx(h%KjDYeu(n- zqOPs@+o5Mm`_XR=e`oPG9{pA@rwPs3QWfe*L|| z#e)*1gU1I-Wn%|R4^2;$z8jq=od8UD>IO*pQxc_RSl3Iiep|AEyH8?mTLwrkj7gM| zkoV37iBci{8ukp3b__sWs4rn^qO|wD0n*Z~@0BeBuJXP=K$?U$R$VnvdINcApDw;3 zQF6^fInWZ%2Lq&`sN+Gzr6D{UdB6G&@Qe1}%S@D-E=rX4T%Ra?G;n~_@yw z+30^5ZT%hn>KF;QM!g$Q$2WL4;jb_1*#7T<(xv?|mYhVX?ZQOqZ_f>oHUegYD04ab zPIQpyp%3u-G`m4P-8j-U@WzB@olKXr+8E53UH-s{IEN_^Qs z>A?+&(j_!*!1r#9^%UA`$xD>JpPwih&P3^2?BVsO+l{$wdSZZdubL=L5E7+-qK@N7 z21<8e+&aEjqQ2#aFt-@T5!4rpzg`z7N+16Pbt7&8=6p}=0EuYuc=WT+v_$Eu*@LA9 zjI9ZOQ_-(iu%>5@50FN95+(I>bH8r+?7p%Gdao_34ExKLUsh4J?j^Zwu~jMi(~xy# z`xmV(b3D7Y?BRzh%ld}zE8C6lUfjmAAKh!qR;RBm>v!$ivH-%v|9)SY`h~yjCZzwh z={|;Ex6nV$n5VVo1%wWdmn-?gA19TxPIpR1;znnjqy*Otkjpzdd`?4j7^2-stV3G; zemgfN*b+$}eB&~wBwh~bKiB3Rn4eFT=y9t#P6_hLk$5Y&ac~CmhsEbP?q4zCJMijm zvZ$pO`!FuwG9XU+z4+CL_vi~MV3ZXMpTlpHYC@}qpQ}}clO7|nF)2BBxev4?9pqb%n3Oi&bAj_cfOc9~>v?UYNlli|a(Dy6yNchT%G` z?mmRKy1Rir>*%@dAPYCrQ|xe`TDgEi89n(0CH7=Y7OJe!W47XlMKR_rP*Bt= zRDd)P0T%KE6spHlP*CDW0fV)pfBBeMVlhe>yD3A-jZ|F{dRKy(TURbrsR-c$S5FPaTYOx3?sk;al|UH$5yw-x^t7DydJ8=6$S}mD75= zL%ctLkpFku|;m`!6`Vv7zlAC)}ADxn_gwrC}CSN3O+U9O!Q%}#CZ?au!G zqtW@G?B*(_vzhY6M~Ao*InvqkP!wz95f(*#rYP3;^@!3GT2lS+Mff#c8&`4$-mc*T zHmeB)J^cq4!HZOcS6?Z-3CTy3{4D8Bev2#M5w{d!%F{D;5&Svnm!T-GnE7K)W2&DV z<~?{Td>6@!a4DA(^?#&1Mv%s0{W#U-dezs=6v-QJCtqi2iYuSp)h!~``*e;4gFOd&ow+D{h_ zbw~s8r?tsT8@X`kk{GN}^Ig!kg{?!d$Ao5pr{95Kcouz^H-}f_?af#aK9kOI|2~JB zimeBVRUs1I3gut-X3qoSv3p9!9tG5A9P134D_gmN9tNQSaE2;3dEr`vB3Jkf7x{ zm3rP!zL|1l7{7ik0%~rvytIQe#AHKE@)%;Xi7xddOr9z@qX3PL_MZ4PvWtT>Az1^) zkeq>BXPzM@P#HZLx#e;v=c_P8r;)gIV4UO%>Mk^k8K8AQQSQa)o4((8%po1dUqIN4 zHSi9bAC?fSO`Ha7n4fQqH$GGayZZp|4+|J?(35W@K7&eC!9kJlAQCv;L-}a^j?(vd zBk?I@(FBJYn_kqx`(^wFboelmx)-fL6YW}7GS*?@@I?<;_znAzd|U8Vk2fRQKvqin zeJQ;ECB$pBOBNSl8xn0Op-V&yOPYrFiQ>)rhcKmW?lZh{F(EDjg_A>oBgGE2+^%np z>rDLx1E=M#3EX9A`BO%QFSlia_kzXYlZZ#ZOiyEp?H2MECeLNMO|ulq#ah29Q;LF@RF?|2bSMN>M2h;SmDW`d5J&Fz$+Cd|R z3K8$fLj6tT*4mICiEC(FnJHEw;weO5^;%@6_&X^69BS-s2<@^Exm7tW9!MA4dH+pF z2?*_;0Ez^JHX^mHDQuv%LOan4{rH1aKWgz$Mqc@xMYOn1Gm=Z|0V2%#?9|q?$VY88 z!C_Z##1D0w{XK$Dd1jI&T!+A1jQuW#JqQ!c17=vxzL&xu{ucZvY(&2AH{)*w{(QhG z=k3b;!mj0VoyZ3;t3@5?i#~`t8FBwC-UR>&NFSd%0&3?SOv& zpBb$|7w{X&_}ylSegpodl{ekIe8qC#a{RLJmd^d#*kk`bveY3xj=$QwjlB$gP27u){*_XIVEUB| zLmY-kz5na=h(y^#C>t()hU3!3XLx1o)4uRVga)VXIj-O-RCW0}mzi zKx3LKqqO4F%_75tLTGzs_=f^?C}QFL zPaH(|9EikXW8uRwlwKGHFd3L^)bHB$c+wjJ6ompzva+A~;HP40(2htC6Tz}r0 z<>lp@)Mu7L(-~B==tdN7=iY*A7QX- zl(-4OkYI4?ymrL&(XwV8(Pq z8=zyYl13~C)8y(31UTPN?S86Xo1SW9IMt0bE5;tmqnCbx@dd@{1^VOotk}01PfonJ zWqkLXGPo=Z+-DDLr`ihh&7#I0s!~7xKF9fkzRgDEN_?_KCZY~9;AOf6 zB)k_7cTqB5xskqJ!lSzdxz&LcW1OW^{~VL((MQ*zyAkXa#o+yxn~2Qz+?F`9I}7!@ zu`L;PRVqH_AFaC$u+RI^Bv+uI z116vkLyH&@^{rSwYx4~(cIS-el@gR-*>bUN3t9Qq$l?iXr>QBdtt42?!7xJB7=6J+ z0z%&Z**wC3(aj+5qfvn_yo7}d(}BgkflMCx^;aPr-ip}nx$VMN`PyJYj0J^nZlQKe zTzSmoU;7tX5rc`l`I{JQP64tQN3mMTx(;%TAgzm86&>|Vn5v?s0p5*PrLq|ytosg# ze01clqf=?{yr1?;vHNY_|1J`>r>Vc{c80TPZU(WX@xLuPwRy?P(KT@(Dr;|1>dTfC z=pSLK<5ySar5d9j&ee zPvOKA7VS>~=&&hlS?_*~wgDfQilQxl?w&Te)tT=K78I&Nd%ED@Dxn#2kqwN$UAF-Mhzp*CcI2fv8rK)Qb0e#=duApEfMx!WI22@t4KD`Rp~Y>=lR%pI z_00>doY<%0?lKEs*@&@xP(PFjP zHf=Kaf*hNVAGjTeQu{evj8|X-wJN7^;^pq`W}6Cn=c=Dloc;i9D&HllUE4mEnpuJb_ja~@ zWye|cU?C#Z2dIK@2Z9xEWT6K@S&QkU8i>%^&Q9X}$3SAkGbm2BA+K8@RHSKSZ@soZ zzd0}sY+8WEz^`9NVPzP?Yx?sKJi$^@C}qR_2y1d1W=PZ8>Ddr}g!fNzrjWSSo$26}i`Zu)`y9(F@$9piecE`X1O3w!oj$XYc;y@FZW@}axZBc) zS5jfp?M;{;9)fqZ?W{uzUxAP|&k>kvE7t7AYW$`?8)sg)-D`zBwW1*eJwN+SM~>U zJ%5%J61xTXyB;_E;}Id7%<;EBOtuu(JuhP3@DWB@y6)S6SRgPl*YSIn@BXNR(Xo* zLbh~P7q56w+(Zt>Zc6K-G9Ri6wMG)|JVLSoO3m}+>yMx(5O$ushxd<00?AuiFmB9< z)oWSE`_mAaUgQvm2b9ey0ueur1+OjiGFZF%BYl}j+kX!DPGcEpEOSuQ*i93_SFN<@ zgOMpPE!ECf)fKxB^OaU4SJOlkyX*K3XQ}8LG(*~Mnjy0qzADF(=PA^AouTt$waijc zo)oPWi1#jbZ3>Yv>g!_lz~ZQvBu@_0|s zNWht_Culh2K>Hb>k9^k&RcS*=-PX#U5j@k1?BZxS%_5Fex6wC|6omrR%Dt==J2Vt6 zC7NOm0wA3|@0x&I0yvc=Khdh&c`GpSg_t~^J zs4uk;uK^?%+tCr`w=dJkeo<+I!#_lP^)^gI37)LpWTK*gf z5Wj`MisUC>;aw2jHsII6MC`<#f!JtkD#Y#ROog6PPU8C)akjZnv*v?qQ-x=|$oL9Q zw>$L=GZhjBG0khMJ~%E;TA)Q-M^F9Dm+gsGT#kx0;Te$s=Ts}WhOWX^voIZmUlfzl zh396KuRX)DY{|EQV6pihSQqJC)*Rbh#R7nd+NdK~d2@~ahI{2Hya9DBK@ zpS|}zu`||xQ~B_`ch6kdJte>~V1xNQJo?h(0(v;;5l@dk^oXN}JrBDlmL9e|0}iC) zNeD@*O}(Aukb+%4m_~w-Eu;}i<5uHtL{m5N+t3)KQX0L@Ts>ntQ~tL%Ek^?cYuq5n z^_Dhp;YAH-pVXO6raIH3_rajUmmG;|FPR7j9mLE9T%46Nh3b%XeTf|5I6R0+#P-+U z+XbLCMHbg$O2a?Y^gJJ-iZdA*BtR60oz94l5iil~fqC}1d7eCv7jjS^C==RHsvxbP zHV~-~$;9;k0OnoJ8JQB8HGYknlN#<18CH5#?sLLdmqv{Hv2X+jDKsgEKyOyAu=l}9=q>@SCM!Z(S@O0?d@ujvzC!%{I>eLf2C zRlSSVSiY)nv6^MUDLD@UNAwKR?#~&1UZT1dLzaajtG!3%-Rkeg3!^01>nv$XgY0@9 zc8;k|vU@pw8hWk@O;Ncst<2aZbbiaw2O%F8h;_J2zT5y*ff7t#)CAqo_xS5EBvapZ zr~wFo>Dz9`P=2FtvxC}N^sA>}M*4y$3JLKs;l&NW7v=Hbhu%aeUr+cuQm=&gW#@&w zUyH#aG%V{md2;J~Ci4T*Dan|K^GJDvTHXfvs9LT=L8z9WRLh&7b|-n@&fzS>i)#5R zA>p-{S|R9U5eHSFS}orTv7wRJ1U#rUszr6~PkH}?IB{#^NW@)YL(Y8TgOc_Mc!S$O zu-ObYBG_mKk0W@{47MToiWzK0@F_E>Be>ZNHY2#&44y>rRx{XSe4w?ZmqVnNh_=(q z8=>!Hf#ba2$^vb?|0m$o^zv5T|2+%nykBR5X5RlP3!LQrAFx0Zj;;tm^W}dF?-GUh z7h_(>f(6*Pbb@*nVvj)Xp}dkuv6h}%;SfmsI?m%5Sbjri!1_ z`3C^^Tt!RjrmUFY7q$sV*@1`&NZ5w=$W%+CCNvvDb5_>IB)52|G^iETxlU)P<5of) zq9>yjRctWCkiMA!GSr9Ly?s_s0+%S%`JmMp!)S9*6>zEw+aD!rv- z$05s19cKFSJC^%UuJq13eber|{ifx2 z%)aUN<##O0yz>s`NjrMfm{DnCQ%8*+?HV_3{HW2R#*P{{CY{?-MwPq9Fntim?>m5H zbd}fELwPiz8J> zzc>jp*1gd>#60~%7!wp4$DpL$LpAB2oMgzZ(5(1eMvRd-4TbnU&;x36{zh(99aELQtXEmrd^z~DGN*@4Mh&QR$o7SzxZX1H3Ocsz#`eZBO3;LV?< zj{`lBI8&4#9|JAAXAf*9w!aj`;ik1j8iC4|E#8EZipiiRy~{`w3S?_?oqSbpa?NL! zyh5CU!24?B=*$G<2Gn{IK%a#j5A@7e3CZa~^Qxt0AurfVmK_;$n^9b~4RY7|60~{4 zjIsSZ`e`gA*2#a#XBLQdnp=XkLeoIf_mM(?^`?tH9qK`!9!+sbPv9>~+tSOM#9@Vm z%Z7uUOzEj#it=dlQ5|R@BvF*5M;cUzM597E5=BPkTQj0*OTOm_{N}gBVLOcdSnw75olLM0Ai0&S4 zA{}&ie>L(?Br?GJ|3N|eg>&Bj7X;Ix?@*4R8l2$U>tnb#3D>6=;pq7%j8-j5(gvRd zZh^|Hp0Gk(dM@(6hx}dWAw)8Eh92m2TaB-Zas##BileL9l^d~m{-D^`5R&B3t?SOc zmVn;?co}@392v*2AJz+EKB}BoesX{yS@ad?hbFWyCM$zvq)kzCBWCZFTy!d2iz8k4 z#F2&}p%52R8RH7Qse{<8g%8|5(ti~NS<=CyDhmjBfr3PnhtobAdbnT^Dz>TONmXnjqs5iPo`?y&e;ER&1!s(JU_jsj)rWu>6H@@z5P)o+ zVkTOAyqQ=>iOJE#VP>MuccGaWMCn$_kQB{8ED)-;YvU3S!znckkS(e<7&IVo!B`@txJ_A5aD{AMJ z6SokVY2|!Zq6bcf2dJ)Aut0hkBaU_j-Q=uAPOOS1=)g!x0S_!=>|`199xP+_!!l-3 zri~>x|4}k)YM3URln+pDWF7e1nvye-R8iiJ&AtrX3uIcl%&wryQ)7smx)%wq({Jio zaZ256rZ9uPa%Nn8G7rD5<`{6p%4ns(dghkcIB{&B`iP>e1b{Bj@DuX3m!d zlQh(*#d)uj4_HckD0-wNU>jdJ;uC9KexCkpv<5EV7>`P7-0eW-_^ zOjlwtYnUl*92s00ACMIv9ymInZhGJdK(@vo09j0a3ltZ!QeOF($_o*uvq%8yVTLj- zZLkYzY1xvEQP06&_g>D+gVh`(u@M-e@qQ6x1jdXoLqY)d(=aF_`bWs3P+#y9kX$3q zJ4!su24t0vK$I4K`m-q<9mvph$HFBfD%k?L1^s#kJ#S&pRp+@aAfK^{FVuGN#3V(?1OtA5l%~1SLfD-f!m@t@C zX|wG})oSFX811b5UrWG|tu>taPhinu2TZ0eKB^Y!$`PLpDxMr@sg=i3+Eq`+3&*f+ zC^q~y0$OgX9JHu0;R>udwXz5Mi&`0v!>*QT(`I(HB7cT9rUYia<4|*T97j>1IG^;^1X9s?ZQ7l{cGoW%(Pj8mWZ^`my5# zGs#+p4L}nZn>8X5);g<+63Yp$dK2-hxgBb5JDOK>8$c)A-}8PW7K12Ca(~48+YwBI zHp}mWCKR+4_9ZOHS7qCZiC#TM@#Dx8(^a3A>*T9~{KGXhO|+9ic5p%^ZtM_=@Kzxw z6{9`=0T>VJad9-xEI`q96g?l&rh+a|W-oTnvGH;iI-&~4uPQpO76ECs@q1!1;b?}_ z$!U1)|d07P&m&YEIz8QKPY76@q;&iy6GD%aX%Be^uZDK?Yv&;%>LAxv`V zEL&hPEf5x)Of`7rI}$iAbpX|O0B<_*7lB2(UWUvtKSj$51Phq&<5+l?5lFVH?utqM z)FPa#LnsRUIdFPAI{M@x)=}lZ;Qm2xgBjX8$C@q^fSpHSbu#6jQ%b)ExCYjwS%^=A zxgsoI#bk68dl@?|U+)hIED3uaN89N|4ZLzc8emvl*Pn=()9?~&vk5B6kSzv$Jp2s0 z=EVJucv==(Z8Ry+TLz|O+pu%^sw|7O4ZDZ0%CMzF*tGshI?XUe{$cbLa&}BZA3*bI zSi$ki4Xn`)2z;3hF2mKd05hm%n6?5rLc0nv{1nXNaaZujcg5~0Si?Hn973IzduT)* zFrAuv5WA>Sp|eoYaqsZ?SXPog?XhNgvb@|J{oQw>pzRyTz`BDSs(XSpm8avC*F7I4 zv$E#UI*|=V1zYM&bT*v^07)GNkzCsBI_mz3uk7DdWRn$z)Oiiqbp!yjp#jAX#p(w# z(RV$49uU=L(jok6{jnhVx(Hq^3IX3R2xtVBCKI+5R08@o{{h1KOHX1}PGY&Ei=B=} z3{b}MlPRTN(FkO$e)kAK26)Adf|LX%s%H}DkMb#^C@B|jEw|Aus0jzPWP4Ut{v2%o z;}E}M<7)@J7SM}@uxy3FdM70t5h17sQs9+D>LygEl@?Sb3yn7KRWyyRp!F190BFF2 zB?fS9LdG0G41WmLuCm4f#6xg1)bH+Y{o5f~@_E&H)0z`K502dDPz+tsW#>=k6%D}sV{w4tr zmVuG&#DkOSP4K^s;<_Q8@d3oPOvnyDL94sr#g}mua>TAXODbVro({z&4w81|fme{= zTj4RPb|O$ssUt$3fM4vuX7lKcY*L-pDk|S1bko6gtz;9^t;N8(p6vP|4^$#3NleU_ zGogt|(>A<@qL;y99flMBRR99H)+rk|mVV``2QyNvZtg`*L8~$HpaW@S_~Fm~~XpCN@Ht4Rs1F{1M!+5dInviE8Meaz1FI%F_h0J|bo zpe-~>4$6mzBB9nwi}<_i!G)c4^2u}*1bmzY)?iU&;xHM%L9jzO@-2?>gTS)oW3cDm zWrJND{tu8K6j&{_B{yCWFSRt2;p*FnOUq5>{lENx1J0wf8O!d!iH?agAlR)H9BDWv zg@>cX&hQloPXG`($m-!jJUSDo-!M4!V7$OcL}9Mm(nVwciBb$1-HGn}ipD;Iw7|?{ z_kPg|0qT+2gm*cOR3*57bfa`F=V-FE->*)Shy4EPhb%clqLjn8{y62Fjm@h z0ZRy{47NoZX^WmzW215oI=&a7MjZOKbjd~PFlZEEa{KaY9Mb*x>)tP>*xuI$7J2pS z5c%wSiglbuPYyCp*b1$=@7ySemrq(as3@@-P*IZou*YkyW#7F3RK_uyP4QbCGTs&yp@ImM1L|FDRDpvn�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

@_j^r$w?>#6ar2z2`@ni{(jcX9cK-nFUW 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 z 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�nWj;AkI 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%0AsQWBe-yi3*a?Hwqr&Ka(?J^@XTuXG1 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±NTqjP$QiT@-5Tp*;rj`2MC3Ze))QTV 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

    w%Y%pz(h4<0uu#T`*#wUDBjBpUV(`w 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 u-niwGr^B30#pp1|O0m3!!^`I@&Y?NkOTRsp zvBlHqp3+hY6qac8*G_Z?439ny#6vg2?%#;$1Y0%B+^L5?WM1XfjN@&L;|1|-n24im zT#!{JT7i*K7({Nl*~ksR)7Z{ev3IlQCAtDHkv7-x)9w~y6PuY#5AYabCUT9AFz6fT z+(5)k1F0miITjO=S>E5$h2oeM3GyFsHM?h-zF8tWb9qmLYAGHz8vG2picyQjtiHej zFmi@33lG1Z?@$!5UWbG`Nh`}V!+lu+XbqvhL(1I2kHCo`{kXC5W68pC2V#ClQPwrc zFdytgwk1H$RfZhcf}@6;*lydFkKBG?f_NQB7ZVDP$R4x-sDNpwf;O5fcrvRp(-pXq zgqhDz#-`BrRl9jCIw@u0J4B!nz9S)g2kwulq`K@kF2lvQLpF0_`0`T2*$Hf!*#-OG z?@n}>!vWbAEPfW~ZZ0^FQY5%VDjaN_`52k?g!Lle`T0P*ZT!^#jt~ofqn^bEb`9rT zs7qxa&Lm~pso`34O`P85dZFDM%N@2_%%gb-l0^2=jIf+sX zNyd%5JLqU<;>~f?sP7!&3Vh49H;?dBdh9dYF2LBqd454%pwHKRBCuwa)qdvZ=cut~lcZ z$OGvJtvin8IXGKvO8*VlP{N*q9@%KDe!UA~DPzsgT#uDQm^Ir-B2AW4w7keKr$+K)dv)xxOSE zUZ*meNsZ5hu0$k3Qq>AwQdSlW90V?Nn9Kv{i!0*Ul!k{N0hJP;H;sRg=U(W;3$~cc zNVoUd%L$Ey%x2yw?Z}s9Y|@Vhw)y(KZ{!8mdprH_g|~l`Z>D2khEoEwICAxI)hjwm zje^tBHD8k8>jzSHa)>gw{H>HJoUM;2!$b7tnk#3bx?1Rj`3RKt{Q#tG%qB}g0f+e; zlK#6KY_ggm7Ki}o57Y7SRfw|w-YF5_5Q?XBKLrr}vr*`9wyks94&Nb3= zk@9>%TgN8OlK~YG>1H;LcYyH}OfvHgM%0*%Qla@TQm(h&xBo|**=7DKU6kkp8skvl z|LSDuJZl$(&K~~;SrY9NHf4u@gWdd;nq!u9_}lyWzv{3r!QWwmc{X|VO9t9}6OT^J zauQINd)JzHzj3t-lu3f=8D_Q zH)WGuofT)UCt-;OpGXAX1*1+VH#*uBNvdxE3mWz^AS*SInPl%gxr+9jk{Xg*Un_WV z^979NX2EQeg!qmWag$FtBoW7 zU(YV19=r<7DpQUE9=d_EKhssGeMHli&U zkc+3Z+?de7u&FzYHgb@`7JAPu^bTS1IrcK8=aXZ+0QDMvMRbVD%8iv*(&mK#;u?FU zIfUYx!J&_{re(VBbN``!$sgD{8D#1OW3_;ADB26g3hto$8vO^*d`!~RyR_OQt3h

    RM{n9F5 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

    B^FEz2n^Gh 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

    cHP$Py1PdaUKv*y}Wo{HFglItIbRDFtgB6 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

    N5{WfHTJw49>R{u)}*+l}Np(aY%}b&1hc^c4dzG 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

      Tu|wATUbQpneXk|svOC+%U}27qI1DyX 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∓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%0DfJ; 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

      ?Ad=F^!BmKB{^q(0ja>NJwjDZ>NPz-PA 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

      OL<8Zg`E58Iiwag7ay=e3tg- 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⋘Mnj&Lb;1Ga1LmCKhXg$<4g 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�HV)oUavOOqsxVd)Dm z;RSbDHyLku`;yco(TB}DzJjR&hi) zP4h$fuef+`rKs-b%KRhz(sau>;GZ5LX^gv;yVB?Ky>PXu!a;%xWhNrwKyEUwTP7*0 zUv|Ll&ntN7NXv(Lfo~$t{ zL!_rdp1ul*+&7}aGBhAfPfbt9^OoTK!0PZRXPn-)GA5@C89hCuV_HbqGpJpo*^Qlg zk%^W65cdTq_wZ`at_+5?a}!2u$`YIwu23q02@%`Q-%OQP$#cKHT1(%RB1#~(>~c8i zn~j<=ji$K-$;q=Vk{)Gua!UmS=0>;dehSr1LdktJQZ&DhCIfdmI};&rBiAHRoi9Cr z+1V>ZAa-!dmeJD}R|(&YCuk>oTZHDA%aH~qA#Wy^!oWM>QfUnF-mf7jdzfSiam@Ob ztK7f!e|t|B96J6QfGl>haYU#$spgt=Q=us*igzn7m9+bEZ6cAf`7I+En6+n`wq+EE zk(!pXgzi*`*qvL_c8QYGtde^ZUW|U<5Q?*x$ls4p1K7)ECy&&OeJJmR8u0s9RTS?h ze?5d9T<>o>q`W6Yl?u;q_~v6ME7M<_d8yRN(WER=!x1O-nH0CTM{3kjCHD`S$On>+ zpTzJC1?CFfwXb^YNKHvXzP=oe2U3nrE(PEwu{;fs)8I}6$>%I6afr33FLdS)nOIiXiMJ21mBjt*WwX$Mm(WS}w~MhAKw8n`25K4|}BvcQO>48>VWW zO|vMNh2=h_w*=1>lw5;n1ggFpu1T)vWo>3e@wQxYgveC6@0lwji4<@7<*` zmh=uaBhI)*WsJzlX|f!QuGm*y?p1TDXDw;?nh=r=Zcu#bio*z4VWI5 z(TwSV$tF{O@ld_CnE4W=YP3LbU?bE0qZCphsTr(_SH$9}YT_bLJZ(r~Doyflq_yp8E=*!cFnYxeqn|Izp3~8E4 zVLu$XSkPG$oFCRqKWP40f7+N1+rZuiSit~IJ-;W?Iq{lfCEjAX6Sl&3%% z27#}D$P&trgSbb+y7E_JYScF-J+FInVXk4MLh-nJrx@9JlAn=s|NNMGKJ;wXg4+9t zg!>(5>e7AlYCt%iJnSNWyJJ^oG9XqrME>1D_q8L+CD#;eQpvD-^?rl9H{w5(lB*YY zcW%|!OZRECk&1GQ!eLF-ywVnttHi(t6jQa_lu8R$0y(0RuVHz?arsW6*Ju2^{m#H& z1xs+!&ULu^dQtw3GMSq+Pt=JcdQQ1_6iJ3jXF_vfuEml4y--;<-kG7E@iO)rc@HIZ zFzK}N(h5~gDbr2fIIFZJiQb%Z=j3j82jRu zwzS&q)j|zQ5RA1zDjLWOq!I}E1Bzh!lDv>e{`vlJgB6P;sl;d6?AEsSf4gmWyIa?~ zyKTj`?gCoTuJtb<{@IqcZpG@hbZY^Xn&0O$f9{=o-@O6R?e`bB@6J6lbLPy`i^_{z&u9R`x5hWf`>gARB0bXgbA-9;T17Dl9N7y#QJ1A z=F&UFrYgghPWT};b$+|Ah5(KlWnjH%Tw5~OcX7Hbtn47#*b-qzEjA5$3TQL`13LZOhD3a;di81HMCIcC?e zIt(DSTlSp_ftbzIZp`$GKz*&U8K7sCGf$9|v|CZ0-c?t5-g>CWHG3Xj0TGT!8XC4r zy#g}W$gK`qo7jX2Ga9uT@ztazj?ql^N5s?fp85ukh+tqc(Z57^Q%e)~%H{cEDy>W0 z;#kv*=Bw@iWe(*z6X+13m*AU+Jv8d`(c}SI0OQ_RZWg0f&?N3@79em5rIO$g0RVOA z`1Fl>0Lg19Sc$rPL;`7|gdgU-TRYKHXitD~9UE07V8RC@GKHp|ECz+_4;Zr!yCFy! zoKkoo6ci=@azrEgG%=T*$CnBo;J^?lx?kLgz!a5dfI$^hv8ejeOsYN=o9Zt~H8Q7U zA>-l_XsPTmCBIilt`HzBl7Mxpv(XhI!oo3VB7sa1*w9H{#@LXBOFB4d6T&Y_uH_Y~ zf(J@SL3MKKlP@HpzgQ*^s-VSH1I3IW6gV|+zOq*EyakhW%%Nl84)F)=gl4v@SJYRT za5SK)zG3)V(Z#=iLyfU{V$m zn=+@tv>AFQ?}k9nhwEY94S^n<%D4Z9K*LYm5a@mTj{g&>hTRaz@WC4b70kE?O+n<~ z2g7xRPO9~FTpU#P{ANI8!goWU>8HYr8v+Ax-!*vBPs)<~bR;}H9qE^!jtdV<$A3eh zOx(Cl$9K<;^yP@be?wppZd7~74S_PW=7StrADA5iZ5~UwuW#g9*Gcv zeQJpYdWZiS5cCFaER_v`0d8GBuy@uG0M#eqYLM@SKo=-)2-KgP%L9U^D7Y(j)+<91C3Or`r0DDCd@Q_8| zMwe50KGOlrjq*}J1DS4!P$ykFT?|I4NIL_MgXQ|L&Ip(2R0WC+GjhH|UJAIz5g;|G zY{aXOsG#a5daR6fyi|$wS?b_ zAUXpo2|=bp!f#2da*4WCZY=ds+_+h6D*w*bmuZet}5`C*b{KwN6Hx*=lt)QbSbQ!cd3 zp{V3O`!!D9Er0;!-vVd?eH?=*ALS-!CL?s z)4lJ{m#7O>w*ZQe`L_T9?A-#m#t|bh&-zjEvw-TJf0MjuPlY8^-}$3JLb*ar*r0H- zh+4Wppr%B{a6bt2grpl<4;4%r@|&o{EQF^}&V0nF%YRh*x?d4dxP2)+pT_u8sShH8 z0rpj8(9h-0?>U=%gF$^*OVZqO&c*#$$mttZbzT;!ul#Gp@$9CXgQ2Eu*4wi84h z)V!5{I&cf1n>P4kqjw9S1{-#rnh+@`1v=j?fGUa>@P=k6!n)E>e7Qnheo;)RTL2Xr zA*&=vNE8vSF8>xl6`Yl3l#r(liFlzG3aOZ$coaeL8F~w#7g~7x={JXI5=+=9P5Ff0 z0;ti8qeFrUxmN&EuQ4*JD<#h(7>CkW2iB5V5F|dx!s-@4MM<#wf~ty$n|~CpoCbiW zap|8-)&L0F0((T(IDuOL0l-EM)qb_pQ(XuN+yW?Ln0JLpNRagWTL2kO+zgoCl%sC} zWF)y&1l$&N3!oQBb&-0lPe~cIQiV3<=?)6!HW>A7GMTZ!l}xG8wOT!7ig~vHh5=t0Etq3$=GI~v|6|oB;dn0bU`h11BWKuyakXbjavZm8N3D11Nk~09nLSg z3B~-W6MhTe8b{v(=(hqo=(C(AKAoITAogzV4g+*KyVleP>6~k zpdq&aigbdigBRGRI1rq#3IOUV0(2|=T|1En;}$@Xoc|sw7sN{UT}LH+4B05Mgz2e>B%C_A{Qee!-CF=fc%$!yUsNZnPi&SXk?7D{00AHG z7C?IQQb6+-K)`5^0CsJc{dt3N3m`oGw*a~Tk4=RZBhZX}GDCh)J>x`CnEkJYdbj*3vnV-n>&Ei@)yktjy4ph!dJABb zw>t$di3+&|(1;m&3!vxEnc*m^Ie97vi#1%k(y2w=0_cU1wvN;)#jsCA6uh8s0aQVe zK={nD;6xD(L88ucR7lM8rg~u{jHMKLe1P&73ck@}sw~0i!wlf#anFy{AK@i5u@FDn zZL6+V1fg5q0*D0Z>(}h_@qn-p;Ib@)odz@4vaVKmU(Ov^aj zoh4kY=}q0PqaChHukwUZL|f-ZtC{bO*e^myceYEsVKUL&m+Eav`oEgzUK{|-6W_4G z5$|+|jGpdD;XBjYi2`g+U@Al=M2AcXE*S?75xBKuLprm;YHo)mI8626$Y8px83;hH zem5iM0)jltw}8kH_*Gx@&Gb6_>T2iilIAWEguem^PXQA_y0N#Qj|bx;cz3e9wY6`P zaCEkI_gT&9o<82Mfr8U6hD-Or0Ia87Ivp>Baw@nN21jFLm<9wjN+&ZaxaZ3DF_@cnR+p4=FuZgktI8o@vM6BtBg=vghTx0-8`G^W z&W$?D1gmn8VS3CkMy5A<1Uao~nE^ONmhe_tqDy52PS2I;C81U`fFgH}Sv8KY$2Ex+8L<5s}~0&ppA54^M`ojJ~O;q zAu+n}ZtGl+kzQwdeG2o+cz5A?Mur#F%r~!p#XHS&lJU-RCl20DqDvxjS~Iw!f)I_$ z(KwI`8OiC_e#+5B(%7iGTQHVG5m;nKv?IR22z-GvjNixS~loCT4w zC=?{s?fQ*iLPn$oZ(8z2AUH9B7~-YAkv6}PHeX0vzLame56DqqN%6w{5F$3;GC+@t z*rQ_dt$b9Rz7`m60tISFq@*wcLTILUgAC4!6yFd{E_-PQgE+dKvGNgGR2O(jR11ny z0~`t22wP-KdBZZX-!j}h@`Bd>xCnKlE;Q{xDlTWkjmlwm^De;e z{%iaM(q>&vqhADXygLjZ>Wabh%JD2~JJ~1?j__oYsJeRZIDRBK4FgU_b4}&B8j4*hqwfzHO@LAUObHm`^_0ljn@Xri`Bm8-Q-_6Dy zsMkW&>-qGHsMlFx_>fLn7##VYOz^V{NaZUqrtZkHA+Q0bddZNBJ%d zgCj3B5%7FAsy;*7jw9-_1_SpTAw?&)Tp!D3j$8@D;=r(MQ#V#X&w+hQU#{ z^h5Mw?v| z21mZH3WFp3+Auisw=N8h{9O%rRGBx2#Q{%!Gz<=0i7+^Lq$LcFx@e7nw}rt`w#hJf zm9@P+4308d9|7+OgMzvSD!G*%$$LBH;ZI@J$i$>muME3xk6Xt`CEQ z&dp(PQ`1_%Dnhrtp43t@1C|6&+?p0)i;VQ_^1au^)E{gp5{ z!hbak4tl;828WFLdKkRa+WvQ8aP%?X2!n&3Z-&7^&$q(hv#jlZ9|lMGe+YwLWNrU; z7#wu|V;CH5{GY<$NcTHoaL|8y7##Tj8Stofd`DOu@YZ)3C!*iEGb|3;)W1Z)|1|>s zZxQhCg~377_ru^w_XlBc$dXnwr>xC?*g8?Bj7&_ffLVms@zX;vqz7TxO_fJCLyTJGN6W0X%`1K1h z9@!lh2YG)W434^ZFbs~o{4@gopMc-}Zv2F#{Sf^o=lO|o#LocE(~Uvb!(njL$s=KK zl>MV&aD;y>3=SFeco-aI_(T{S;r9R@RZn}v;vf(EBH&Mk!BOV>nZ_CT@s}a0c69qw z^oyw5r$g|OPo4>Zvwb`p21ok;6$VH6pNGMbzh8vG(N7!*gO^&{e+hV$uJbGUMYMxo zhv7qAJvUCA{~pKhH(~g|L(enL6#N9rpL4Yb!{VUKUWkDIHVi)9+Wuk~9A)!T7<`Vk z{eQyXDC6IS!NKpp4}+tw4n@HK5CQ++FgVKmj}h>f!{DIjPhoJ-b2tKiBn*ynI2r~A zJ+Fkpf&bMoIOusT436-}BH(|HfWICF2R&n9aNxJlcJt&M=$Q}(2QN+xg9A@N7#wZ1 zFamx`1bk8id@|rseN|Cd9MF1d7#w+<5(Y;ZofZa1-iiT_>L*SQi-UZ>Edm}Ru2WDM zfws)KtCFxdknv}P!I8#ag~8F5-yQ}>_^DxVl*c5#<;Acj_ z&jLJ3_k1t?BFgozBk;X10&a)F!B1z0!BKwaguzkX?+=56&!z(&)o0EKi-S7-Ko}e} zof`%RO{Ed=nPG77_<3P)(0YCt9QbF2!9h`jm>UL1d0!X- zFAsyGkGv=X{=qOf@_aGiQM$l~=r=XLT~kMz7lse%&kutme+!7KC?6MPL`7H};)#rgT5-m*9hALy!LoCtj@9u^0*RY$;=M8KCu zz-uDl9|?nl*2@9E`?T=)1WuiJMFhMq0=^RPsP%@OdA zM!*vh@D{+M%Dpu#4)WX<28Y~8M!?&dMnsvfAIGmF3?It2GYpRQa7`E-ys#k*j(l{5 z!GWhc0^S37R9W?obO@aDg13gjLGNe6;7IqgVQ|Qc z&xOH(|F$qV==^*LoOFI61kOJAi(zo!`BE4hbbdJu4tl;421od>hQWdVYhiGV2frQx z|GO|a=48GR20u$0KIX=naxV?Mw6^W*)4)`#R_C^Vo1qU6*S=iwdTj7%=q0(yxs@e{ zcU=}6diK0Y*5O@tY_Q<`NmfJd=`Fwh=$6;)*wDN2IWT{E${xA0C|7=D-~4N*#)e`5 z=B_Q~*Rdy=ndxu(M5m1kXJuNm4A8+t!d zST%BO(eR|OUCHwP#6^X#VF9tMI%mO?*2ou zAI`C213d*3ESaa=(&@u1igzz5BEDus&;7THKtylLoz6P>`fcl6W=y5YXr=5fq0GJCd1uY~=d+$5b6m_v+yEKmYMt$B^#!4-| zIys+p@?+3~5DYx}5Zs6GOvA^`)dlZ=Y}=B8f!~SJ`@JZ=e>G5(HWkLJtKUr=_`Rrw zZAQpZBOG#o9I86|UBSTbS+lXNtH#F0j2OV(1sXDVuE#To=N3G-;`tJu@8UsOpM|nM z3-4)oPs4jE-c#`|!Mgz6L$fpenF}rcTBGS?D-HzPIJ*ruAkI!>4>vY1%1YVM%P+ZRu}#)x2~{OSbY|@ zURb>rb{&Ad18J!pT})3C+=cb%`}MKexVA)sA@k5@uG`8VVC-n(*%BwOe@#XQs0SSEFV&*=_0~tGv{XQ_3>k z#XRU8XPquhcJ(pUHZ#$hZk(;n{ci3)VnrX)^8c;1)>2N5&X{vi{{sHlm)SGs%xkmD z>=|kCv%t1SxeGa)UO<+ZGq0;3SQ`2pY}_TLuUTQiRV`a4IH)~=gxhQf8#-(p4ugnB zJf053TNd2VC?f96lEqFGJSjrpaS~}a3E%@ql0REE*+?4{v@KZcd?=OaUW?n^HY8I$ z$*#46=ht?%VdGHe>{e@8TMD}ttGc@6O`zCsqVX>fsQAUS`IQF7~lv^i7 zLDrHdlW9@nILZNd;Li<-wc_eee(^Lm9^!`U;ou@f?$|Y8IKM)lK&SJ64l;C(UCKk~ z>{Kt9v?mE#`euR_V89&~UGg#jOKkM*^F?DA_!1_Vn72c)oV)s2M7=5aB)X=M61{tr zA#eh83jB^NAhxOrFZww%Kn`NF3Jm;i#o}%kqq0UdeEf=HPDm;0VVv@3n?pz)aJ0@^ zY*ku~R@`d9Zx!BkRy}?tv<8xBxiuSbSzomXwaQwAr`GzQH7Cz!F=G4SRaQA-*CV`# zg)O7bNtwrGi#SR6cLJ6{s7+`;wV-sdwbZHsO>ulT07_qM z4#U@C$dDBNB_T62_@eA&%wAw_05l`Qm{4M1nrS6zZKRMutOU|cA}0M4Ry*7_^4|-0 z8(gG3323K~T$bGO9^6xlu1v~p-9tk15F*7q zkBhYv8FrcDi6K%^Cp%f3nvSz?*cOtav0GxBGSlfwq}HQ{fFy++M=v%W!qH__^(t>B zE~e8U_CVHg_o-WEyw0dklo>;?6v_BW(MJ68xfwjQ!fF;RU=ifg61bOw%PLWac@|rMi^|*1pcJk8b(JK z39d^Z{T1Laa#^QHJt4wghp@6mwZcV?u14x?Q*0B&*hqDo2X9-7NFS9@jD zV0D1Q9g(*aiMb5vr$jrdgNyA+$`Flt10X5nf+f|WN@_OR3^gE@x9MMQLANvfNY&+t zOL}^MmvNX%1~hu|BN!qLNpzv>zX&&5%5y5%D>Qawd$>olKU4mpxz?iICC&DE^XJT- z^MSL^w(To7EgZiWWPhVuDzS;veZ(yeJTnlzfrU08)E|cQe2>HF;8+)%K680Bx?JqS zh01}GU98avys1Pd_LifmstaFTz2H>$hFA3Xt?0ZK*t3)U)O@F$s*V@(JX)oPY)!bU z2e%t_$0-_ckqwT5lKm*;MQ;}BaZhi?mMv0931(DxwL)Q{=tu*BofH_TmPpB^&puIE z@$!T|w%;yA&pi_vL9z9$7rm@eCeX@omzXGMp+$7!HUsGQ5G25oOqEH!17f8E*YVh$ zX}e7x^xS4+$8c*B#h=bVTkq;}1K{{92(~s*rnz=0I5dHFTMZr~ACrF@z-@JKZA2TI z4S#B|LYL`l?9H}zNVbA12L%OMJ=6`YEXvA zHpyO)t(7!cfU(a_pj9$#6Wna6wPcZ&tifwFyjM;ah21O39)~Cln%H9EKrJQEP+l9B+o~m)aeU zT2SAz2M}NC-0I495J{dU76n_B#JEi`x;5Ge-aQe9wxyma`!CfmGc~U`(3bG6JJ&#a z@I?<->q(@L9~y-@>cLGvynQc)u2eLFam9=7&&Y%8ecasyNEd3G+D=^bLe!&lc*=41 zV^Y>qUxKy|2t%Jp-zM9Mn~%JKlQru48F{qdP~MgZ`q`^=xjD1I!OUwXbj2*52IPRP zaD&hky8&T;$~LhGS|$0JEnRYd4Sf3qho@04)DP+3Ci1-z@!03GB>E78{Upb-ZK`)N z<%YjyY01Jqw-DC=hgnUC83>t8bbmOm z$L$eAn=iX9SBB)Z2An6D0uuCP=)rLq;wBE*k6-SKa5j#Y+WSAGAEW}gIU}>o>)weWxdkz#cav8w?q1&I663CM>f}m z<=~VoR)tq+I&q#>tNC$5Pp{J>_}B~Ag-H*)x8)j?^|%eg9nCP=H-l)D(zFFKWPL!R z*Ybk;e-~twg%Jx!>>Qb&jjyu<;o0jqK>KLGKO1h2DdgA~G8pmd0j&~JgMGamt1yl^ zie`vT^z0lhWFVzD4!4l%GJ%salrX8^Q)(^3xG5~X2J|F0;&G(jr{ZW_`7lbvR$%Qy zkHQqXktTJN6nY~mZ5u_J7Nk4Vckq=Gk`p&GDj(z|g}Zfi)e2n$^N&Ik)O9aZG&{p% z=iEs`sD{@;W~S{KV4>O;^x|GmVfKNPwqCh4fG&=~*niZbG%bs|Db*Ew^@`OOU&J}# zY+stZ>6gCa@|3Ub>l}!wr=TXR6ePGM1%uw7hzH3OJt#;O=p`fu5JJiq2ze;e^D%5`+%2ba3 z^c<87CF_E-<9(v`C1=M)?<_UfHq?TL@x=7-Ud-#@z#D~eEmG&~5qXYnCk;7AEut0N z){8G0dM#uidt%w+GmM@!;tUdJ2H2<9h+k?_onr2Y+^omKr1He*d-L;MDU{b*w9-2K znk8z^g-e|x3#z>m45#m{pO2ICZHrK9y(p`-=wUpqhjV5Ps?`6IbtLB*z20v8dAoE^ zqEE~QC{16_-nN^wy5lxE#^C(kacAeT)We3wF$Jz?f$}DssBeZaEjlzk{f^$7GQu62 zbN&u1Urf=bLtt1&;RSeeUHyv1@rH)x%ErdZ#Y?9IW|I8#Mv%IRE_9jeeOjlOB{Wk} zV#KSG<40)f5naBhjRw@eoKISc!?%FAE!nRSv8aXI^@uUjWv|oOvk`ZwV*-Np z+SG@ot0Zd|b1Xer;2gzLQ5QZjx8v1VX;0F@qz%Mrl9L)BwkIQ2kh=P@z=7+)g$L>c zQdYi*dwK3M*3O%Wgq&AaQgak61(WV6@P?K@ut$&vjS*?m0)H^O(k}{+!nQl#W_F-rN-N#pldVF}2Rp-uq1akT2^QQ=tmE+6X zimtY(y!kYC+~A0F?QQWA6N+d@;?l2i1+`dbP`VeCNerT85vIi~CU||lJJRb;^mMl4 z^!gL8!130GGF@qOF^yg6RbmWC30NcK%#1c0!!~8OfIRedLRJWVLJ(9xCVFLyRwJh* za0qUo+=kne$GFd1%W@8RTjAe=d8IsAE?0r_v5KiUnU>@CY0>&Hum>3f{okx1K2 zjq5<_?ot_#iRp8hpEg{!uB!?(EP~Fz0m85ks(-SrYtt;dMLukfJkyclFp-T8Vo!+U6apai z@oEf<&Ru$qU`etEx^JtCQqSgB^T18&>Jam9?G*lOjM(&;$_lK+N*%eraoGa9K3T>? zqQSSwjsH*i%PV-@I`P5?|H{^DvzV5!8#)rOS+H^Mh0R0Lu~Gn@ES*tv@kLo0tfbj5 zF+Cj~CDD~lvjO^}U~0mQBcZFXa4n?0j{_Kbd*9f{Bx0T76=*wKX|QcThZvk|dqgX=eYdxVN$ zUqXVjKq~N|4T1`i;ESp2#4KG@kS0YCq#A)xNmN(MUfgy%I$Jw1D+htl!!;i^g@la` zLnfijkvL~A3Z%0Qb5&wiI>1nEy;&|Hcj^gkunQU?`u0?ocbbP_)HN&LZl+XLt%gf69fL)b`#8y+T@sAND<_zvmKS!Q?|Tm*)oksr;1YV<#eQ` z_st?aUQTPIB51cITe8%qu`aH1D5r2yG5LkAiN#y3jmW^rsE4Lqs5YodY8a~D;~mHT z9K+B{T-};q6CegXN)mO1qj@p^C<{EQK6JI``5P3ejOm~v7j6%65(PcMnrIbRh1Mz7 zBx|x&WSweFu}-s!t<$ZySuv}`I>Y)a>+RN5>mAlRt#?_|tan@QvCg#4vfgX`we>#h z9P0v%Gq1ANSqrS|tq)rZt@B}*R$DYZC|fOzRa>lU zFly#pSsHO>U}iL%2VdyI$LlYg{&^R(zgUeo>=j+DT*@W%TgoiM8m*So_2>*Sv>;T~ z%L02<;*uGCvmn)ZEPVs!wJw3^nq@=ZQ}Ovt+cP0KmkZ0qEEYGz$3#vxxUJP+n^Of^b zz64d4*&mwffIC7GRwR--p#fkJ;*Ou}7NoL4%;n9tc?X6Vh{#DeP{h&BB8K4gq1GsF z?dSy6q={{!F3xE}j3?3xyBv?moFK18No(Q5a-=m3UP2jHH6i+P7Ovl>hNWtRV8rpw zXoQ|gPEhqGvW{!8lTvr1k7f|zRi)Pkq!Ok}68VFVfC*BiUI?107z!SsZbodPgyLd2 zm&EcVdvgdtb~A>3kQ(mEU{?XbI;Clv7*DSDPo8Tue?@VPQ5Gh@LfwRUg3ww_{^hv6 zpEA_oOd9TK`#)F*qt|Te;o0aI`hq!XYAct-n;RA{Z?28kHa9G-tdCcrKSwBWyMtT6 zLcLX&DTq3=&>yABF9ffnBVx}=joX_Q4V(Eo{#>Lj)(C>OajPJsIQuB=i`QaqvKz9D zHafOi&!@|@%#|T+-)tObIx)|^s=j&wxp^bHdKi*mNswlW%z&?>33Qz7aO^2zu~AYI zr!>E9(>HAk5d(7&SjWyt&txYgj7eqK)(*7(1!%o6Xic}M9nx)f3NL##=F>~)(qfMD|$;tmsSrxCZsji9F+YOB?>d*_IC82O3 zU9J#ZJY~wM=o#o7&vEkUUor({#hLv$Rs?D=x84Z%m1x&ZaL3_h3)ic?w0YA7!YGi zFC~X6SEbskv{~2kUXCuM4WQ~VMR_K?0w`7WCwo0_^-Zo^a1AcsN3XzJumPq;cpG&5 zBwB~G0hYEw!C0oHkL0hi^UARBOCc`0JE##l!`SfwKVSWM#T;rBqP1<;gt0A~q+Aue zr;NhnP)T$c5bKf#!5bd#_O1jb-=%;FO~K@ymobLUBbjCDuzh zHlocVEy8Fm5L_SiLNk=K2H>hF?a=(I{9Jt{HsWB|<5^J#S8xCSpdYQaYC${mMJ}qv zo7UM<+oELwdllyVt;}PCwGt_r79YVn;5X@_&4y|183%3B^1`$x`@bsvAXU^kH7D7k z#{Jx}7XD%MtwQ-WqZPBqYCu26JuA(4FNZd}0(qQ)lIQOg$~{{^%wOzG7WJUl@cs3a z&!>yTJ~bJK7Jr@K<4RGpY%!8!^H-{m&yN;x(5jfW_G#eptc%~eIye#T@N-2Q+BMs^ z-djK(mO8*&)hbVfCR$R^PLmdxRcJx9zaf9H{cyg86wwOPv#f4JIg;)S{?Ur#|3y0s zmLw&Cx8q1sZQ85){nURYyV5WbBlfMeHQ@Tfp7mu5 zYZLvQ-Pvv#!x}C1MX1^Y+a0dAbZx5iN93#o*A`~l*I#d+Xr!`*@^V!-GA-oIxdAzt zR{DSRj>2?*x)a+0XSeqCadig6iL)g&Sml@V0r+lctZZy*XkNaevAKFh)AA~7^z70^ zdPCdnYN0oNz^+`}ShK3Kv1Y~c=EWqE|CbD zYnC@RT-nfwxv;8ub!F4C#+laWRbqW>o!xLngBa$PVTu}e`*Quy-0IwiH9-uNHrg8# zDGnzRJ!wopLbFv_X_l7BSO8p{>95A+yLz8vUVe~}OQw-Gk^X8utsxc?r3$Ur{>4ORU4nv{&62Ij|M?OToAc4oOrI@#33%1tWC z!z7wDd*X`POhUB37FZ8}3Y_E6+jA~vOSn$kBbIh%L0mABZX3;g36jobCQ)2n{hZzO z$~Zhl34ODvpajJJ;yhMS>n6=&qPR{I2n!)Wm+Vn6Et>A|Z4i+{$87f-Py(_=*rijs>2B7MX>ws6BPk5bo6x3w20n-s0+Nl+C! z6-k0h%ccznCNP9W8rM8@esS7DYj0ap;;ZRVxm{qJYa$|diLUj%uoCF#2JKnQ(eNY@ z)}!cB^)jHUuM3oQNNBrMi*jxgudo|?Gl?#)Z!(8n*$P!E9z=41#HuJ%6qKqWMR``( zxPp`#0OcS0n@qB&Elp{WK_>+3g!U*wAtWYNg|HZ;^|uEhS;tFfNw%}?BvM(@R8yr{LP-SCpGa!83`YCJ>@EyL$pbnI zVwM+c{wcYuO|}#E3@yn`w2;x^$Sagk4T|xko&hfFBb1AsRS3a0N+!&jz!jq7cflG1 zn}-BS8FrEsyMp5lP*-91z~CiGi!EVYW%MaRkiC%-!)4Z~E@c|63riMGG(k$t=arVt zGPKR|^7VHoNSj>#q$tj|qCZXAZxxABK}TDVc;76YFi7f#Oi{DxZ&5MEB~n^~MA4@- zMt{>(-H>PwE=vh1t<+%FrmQz#wbdtujihEJkCVnrrL`;3+08v^Qsinyn=PUO$`Qm0 z?eVD|B{wFi55b-iT?dsnj|AEU!DRAmzfN?5JmRFdHVT6vY!t>8g=~`9gXsraH+mQl zR$;Hl@|0*ECzhw)9*lx?j<~O(XT8h|b|iD9OXMWk)0_24Y}fKY85b3mf`bL_7A&-L7K*5 zq|Zq+l-uzsP?n^#ga82#BziX4GztL^h|}IeFq{xg+VmDE1-kKRQ{_yfurBVuKnwNu zruX&sWii=>l85+$Pao!m#7eFj%cfNSAarXvO7NGZ!mi350!qjym4MPLNgoSMrz;E% zyxAt9IhD!va?KB1$A@{4*aF|_i7Fdi5BMn{*WDUbRCFh?y`^V8+7*nTI8}IojD~|4 zVela_ z1)Lx)GIoX&N@{+mKE9;60lPv)%b*EavWueO+H4XhOL%$UmM>rS&@FIA0vW5oWP-3K zyF|~r7}y|{fvp#ZEWDBEvZZ?lZ6baOX3VI7O}0umBv~1+G6Tujhe@Medp%}AG}(d7 zxb&-;^RR3L=}7iuyOSx=c=a@{#;(fa{p=9)%R{epH(=eQL9A4IlBgvCYaMr9Xu%ZW z1LX=Q*Wp+EsqLJuSDe;Ea>IxAk{n;7wrPM{*1H&A<7oY)fSOoom5^Jxm03c z;qe}>HMHD^CW%qAme`4gk!VJf>y?%$VxwOUEwO5fx&@ke^)|Cv4@nU8&o54wKn8US z8w*c?^&@z@zG{^TV=KsAorLQv!5Cy?nBo4pz9EGoicIoQ9gOsX?8AIi_oj3)dD6mY z-wE9$+O+jK`V-m&r%kbV&Wwh0!kU`k9i!!9lTJ@s^pjO98qhv4FDJIdGd^4P@03(8JO}|Vj81Tp@I<>X5jTn#0gJYKuHlj24=$K%$CCK&LZplds#XjcG&?! z2M{?>y>nhq(4)J8X4w@W!Q;yZ!F+DzDu)&aT8PvoTY^D+E!xH&JUz>*RCP`%7%d1P zRK~n7r{>Xe%@&rOvFG0Wn9SJ>=W; z*4ZU4x==)@dr${)eZBT6yri+Un8)Ct0&A{DM;`0}1@%~`^`$Tlb|}m< zYO>gJhtZ*{qj)V&<=aU@MVG3l4>5*9uy73K3WeeU)o9oqksr4=H)M<~HJPp`D$el- zQ!5o)?JxYxX-V32%+2?@4#l}>|XY9fK|oprY>1bK?}i)p^p zrrDT1j^Ic!X7Eb`msle|)JU-#Y2hUSPbpZ+7J7=5E*zyLofzd*FGEJoZIGZ?RPoxd z80)#!uUJ;jS%v2@GI?l^Jh!V1kA=F@80|E{P`@ z(mfmTvass0taEXwGO7)W1|A^LuhKPCeWu(5UNko96XNM$;@hQ^yH>Q8bAn0gFqwTdJ8M9hk3$sA1Dkv z|F;TfndD(Gc96bx)<%BI(Er;VRkTB;B^%GwqctpRi097I>W_Ahwy@sYgc_tZn|bzX zwFqgRgS-~|RWB7|4S9;C8QKD#HsI(3H_@ice~M(%-36vkRhGNKXybM=F=?MEDVC|q zG?xHIE5yb4$Go*8kLyLQ`{D9ZI$r1?cAY1ABB#u?-p^*@jSd&YC@J7CcLB(g^72b0 zDpU}gPFLn%Qb{gn%Wc4$=g8$_KhaoGsnM=fpYbaxrJX3x{7niQL|W_doU$ssQ+Rvl z{YBIA=5TtH)}yw&TwZK~oBZA__@2B-drI%bVOmVKgJVdShr`d$nzzW?UOwMQ-rfj? zAQiHFgLG@@ybO7x6=i<8o_M@qikdsds}apr-3R zsiuf+nw&7EnE<}!j(ONSaYwB zo!HV`vnD>1>k6e!%T_F3(p=YAKhq5Z++KvTg>q>60o$Vr)}M=4)YjHCHpZ)@`Rkia za^_6SC_a{0pT7Y6xIBTA?l7N@bC*!6oG0Z1EvKr)xQ+3d1+@)Z-ZG;UeNh1%*g#F| zBkt0c1eQy9o`S$LgNLh)u5t7f%}L=9YZ9d-LrqO7lU&x-*^Ssb$@vOY8oycSqQFIM z>Ke4?qV}V_W?F8IYhzzvI=fU?&kdq}7T3os8{^HZDwow%HP==)T#hg&d5#i}tVxY` zkkTkmQWB~-Oo1@#C&yG&J+Z@;UQqbuDLY)FBYYOmbVIRswPC9&+Z%V{;a)HGrba9G zFRT$dgzU@MJET8^Ee?kkjf4flA_BA++MP(P;@!Lv8nH*G+UdeQUoTv6)c zJYAnD5vzsp#80dH;rBscyr2T&t%8Gk{ z)`~qZ+~pHi2Y(sLbjfhU6GlZ4W@^0D!aNP1`n7))7ag_^^}wAzvK~&HUxM*YoKG#K zE3(|#4uiA?b)LTzXDkOLTvrLw1J)FOLhLj&#OoXF>dKmB@u~$dmPMoY7GCUSxb-N@ zBUR)Yf|xRE&#D92AU$xuPzF=-I877NIZZWgaJ`V0pjiy;y}Pqrna(n~QV2_ww;*LC zEKk!qiR4G$n)Ix4A_&`sF@p~u%tWJV={)ee69{d6{+7+dI~C392He9 zXMZtGHfJ6zns`o)3L$z+JH#Jt0n2t9sI{Ob%usL2fcZZud!PTQjWpA(+JM*NA zqb*8UY7KnzG zW5n6oZ40$k-r2IFl21FQJrZD~Po%Xmj~M@Nb&dgj}JMF~G2xp%?dNr8}}2TsH#i z8(wd^U`BSf{*N<}amV5UYrz8iE@;Q!f;oQw1q)_$q;+t_Lp~VFT8ChWJ%hhjS!Muw z%$RfG6=hLBm_Oy7M(!Z@|8lP*cSdr46*Q^ecIa^Yw*X_p=$H&Y1G-;2535Ya5+~Bh zy_7Q$M!K#-8bK;_c$pUc=iuhED=-Ruqb^I(!(X0nr&B!}uC#TwfKdCBXHC}Euc&XX z#eWPV+)Z{A)^g*JG;b1jYsv6!Jm)IYn_ipBbgf;_BT-YcTPe)cK`p|PkV`Z$(8YL7 zoKKqRTAq;-p|Q8BH!YeRZG&*sHI7K?#ff+9f^lj%4$=~yTpQ%sZ)lg{njrV)nm0;b z3E9BgFl!+{{C8pawInIM<@x>`mq;CdE%qCCp=@Ma${p@m_s(ABK5IW7|EPenN6wXU z7qOo8rLIN2P@mw+UCnaeH)rvC;LDqbC>uSg=1D)F8_+f@x50@1_lo zI+lY5t&ws*u17)SoVfIrX9KjMC2-DAuQ2?jdQ*Su=4}Dw%o(^(q)2^Y_wY88hXwzp`+2PczZoGRjDCA`Pp(4wu7xG*kuj#9pfM0xg-2+74Rh-r1KvFNZFnmgkld37ii zNZ!`x1~Lv!5(lFrbV6GGX_G%f+#PcI4AEI2n&~$p9jw6$1APw2Wp21ytJDg}cX5s@ zEi)|#`KLXXH9BRApu7@Rwyi=yuj=gO4ql+>Z55a9h!sy+BuGf?H>QzbTD0o!1n-_k z(rIl+EPGTehM~u@&)(S0VoRg9aXPThW1}OL@x+0no=ibkh5kh31E@UwT!5qLq`H?7 z)*j3R4u0O$CpTuh)*oE)wYiSi0@Dv%^ds$;amdaF&?2_%*_%+&Ft|&#IXE6LKQ$B? zYpdph73ktNcEXku$4|?%08#D)L$LLxBGAc_k@FxXQ6dgh9+h5LE$OrTQB|e_h5k|1 z4n{b%MwF;r1{Jjd?m}IPLxJ@c6ck{VvxX>9TkL>`c`!P7*y!VYc9^kZ>oV`Xa>}}K z)E{_Q*P%LxNRiNohLMKaiBy*KiatMuYol3@Jbq4;mEb37z{uG-p#p;2$ngQ1n0az& z5H9$JltN2HM1hb+eL<{x>+0D(8znj;m$+oC#afVlVhSzeJjp8_*aWAewO9*RK zoJcEg0fUT|VvS=UDMg4tNPZyY1{08jt5lJ()l=sgfA62=N8Z4e5RbUqHeJPJtj{$u7pNmY9YM!Q{H048O-(28F(%YXC@Qq z^%?g6)x3`$ONY<9@%|=rhKw|G1($iVe5ae0LEj^evb-6jGH6DZ!|%kyS7B_LM#;!? zp&g{fx!j63fPv-DGo^K0^BgvhQuAb+GErw{9KY3qyg^dmO75NKL>(zyFE(eqsaXck zRy(m%W_0}o=Q^lmo*c&Uv}gaEx@YY&zRvBB6*d!3m{}fgWKQYC>3w7KKSD*ttYmGr z6H6Mj##!duVy2g|OuIgglxKJJX8PvZ(ChSkkvJ6_5=q+nK!t;hIaMAufm2A;%|?WA z!a)8l@9jxq#RmFoX&<)6K>A?K$cwY862mWGxWX=5DBle1`PVHD`j`OBN_#L|gsfeUHB6l!rI<6H3GS2<)3Q=Gg-!8#Ox5U+D$)D^ z?up>g2URDBW5lJx&jS@^*^QE3`5|UdCoXHw92;Bb*L&Xw@w%e?I2N)(!eYcyWwuy%}y)Pa+t``d)_rfMg4 zk%@7+E|)Oc71ivym_B-94AZeTW^cyBc@m?3ufd%xqWVkg7N1YYO#5RVzq#1ay$O3U zJt#pQ%~K<|i9;BGlVbRJ)ahKPG7z*c)zz(z?_FqLxMYz$=u}m+uxRt)Q4AvT;L%k}jRycbbTj&YB|mnW3q&;U+& zCQ{IzbJyet z^4a0jHaEg_o(vcxrVLqB}7LlmF3c=>bkxgUR*DSKqOniRdPPt6b43@!WrXJkm zZBi(P!OhT)n>no;@DrMKv)I%D6*!PLsdqQ?=m2{9u&T-8W{Ev2?_%W)@~D|bgaM~n z1paayzYN7(Vkhp-@X?_5HU^-2v#qox3Gfw$tDM^*8t}h3xLj-_WhW?RG%%2mJ4Qs) zdGVoTmDzq~Z z@fy@HK$6AjA)MCZ9So)~L~6oSK;7M)FtTr}XMe||TKdI7O*C0KNlfCh2_GU!lbkk@ z6md+i>K6IITH(gd-fUWQjyNnv*vp92%{Xc(hCQYkH3fqXMvr&orro?aOa~_%$m6`- zz`f$o5R!;o(yGTcBBE^Ff|kUF+E%f41aGm9{K@#TBdfS{#vGjLWmXoxSz8UVZ$=@I zghgE9l7n(-#l`tUjz2k_Mj16u4A=ufQWHa^yxvG4g8hF~3bJv}vTaC1xs^j$JJsSi zH6|&0%uO~I@Qk%@p(F}ppyexYP+olvY=PFqL6`0eB}a*>bhj!}!g0M&hrvWdGPN-o z8c2uH`>5TXo7scmIm(+;k~T}P5i3ukWaWhfY0lMp)$Q>z!XtEDI+<#;af>&OsZrqtgF+u*V<6fD9OnwiD5eJY8C?b#ew+Q~{a8F6Hzz&&|OH zs`evU(4ZGZ^^~h@j?`H&A>XgoeFZ~iSf@Os{y6b;EYtzknk&^NK9LO(6Z32O98M); zWSU^T$RtOP7t>3$5@(``&BoAYWp8lesTgrJjlsxXLd;#gyC+oS&yDY~oSMV;mtbT# zS!UJX5P=UV(B1+KnU)p;#8hE{Lf9(W%;|6nCKiod7}~0KLuB+}Z;Xp$4Ng&U{ZJ*D zB-*U&E36GP04c6cbV&svp1Ue>waTr~C6i8t~t8$)lqDMC?cR#|J^qBdqJ!7BKipTVyWyGI8d5^OI zkLhpL1M@q3;p371ubu_|!(+zJ82A}~)7Kw!`FLo`9@qWerGC1D@qTKA{fyy$@-%?$+aAApXCe6%j3Os_Bk`~nEs~x`PJNg&L8oZ{wCj_UcS$HJ08Rqbt_c=@PFwQ-A z@5E!`4f6fgm41J-JPr-*b6&>7vVIot1IkU@X8pc<-X3QT9y1-&|F&E9Ip4)&`kVFt zv5!CD4C68V&GKP-r+vmB-=y>TFYR+)!(+xb@iYF%ANBj2d_n(;$Hw=6{y6@ZKJJhI z%>Z9)y24-oZGZOkh6`HuIG5pJIZwg+ZOTo$g84Y>(^4)rweE3R@#uCCeRw~w+@#m!%k=s^&W(7?dI{2b?f>}8ZM#9|6NvlE zZ9jfx5t@>$Mml==)7q29%m6A)BoFs|LySm zVZeVoGQ#{bKOHyhaW>+iy9w`BJeps>cFYU63-BjYxZ6Lz$GHa&mDbEhqz`9LMOsQ_pbr_10FM;DR2Jf6MLM`;ED3@x@nKo zhsX54&q(*3pWoxW2aoA**6WX2o^&3>WBQwX-O>7_vk{N!Z^r+_7xp+~cuap&K3w=k z$SXWi{$239ZXEv!ZBIHeJdCf){hLPq=6-39b15DZzu6x?4!;8d|0*N?2cL#Mg2#-1 zh2c;BS=;-h=p)a>`vN?yH^S{exU%p2>6jDn|KZ(!f3uv4@6{iU@4whYNVX8!KjyT|!49@9UVe%&)t2R;q&v+(G4X5wKz&U|)!Jb!pzw%0G? zeFvT>JX>Dy(`(ij(|K*h`22k8Z^w^+$tr(&2J`##-}?D6n9r}z^~VqP>o5O&{Bn5j z`yLl^%l^e4XD%LH4raf}e7@~~Eccrc=8HzS=|=rB+@Z<)ef4LSSHZ8Lzu+%l!@zGF7r6?i!J(Si5%%Ke{s@5f`}Gt>LgdHbEG@tFR%2I!4n z=`X)v`R}`6zgs3N=InR%0aLFb{jXl=PsgmM;@|IaY&;Cdzu)}rBQDO{4SL>Pv)_3y z9+O_PK93#S<4pOptfLKhZ&GgJH1&b%g1yd1@R)eab~t?cUgsb1nEs|5Bfi7Kema8X za@);*e>1m0#j z;@M{4IsM3f=PW#?zgbRCOnS;WfXDPV%i*!2r<|YTG5t;c`rMqo&NuOx{$_lZ<81pW zQSW=-_muM+JUUOoa8FE^;jY6whewACmV4v5GTdt)c*-e;TZc2tm+9VED#Ojf`w~1+ z;qII%!(D}U7oMnahtHGY{sHgpcyzcReP_>-;T}5wDd)fNM1^}_nGE++gntH4RJelK zGTeg*|1_ScaKBgKzJT|4@I-}s@&bu(E8d^Rqr;iyH+{}i&Ij>C)$7y?_c~|eG5yW< z^*sDu4)|Yh@a3)Ld!29LVcI{#`{&Bddi$CYZt;hoavJfN>6m=8Xz^ZWH6GL7%*Q+L zdCEB-5B;B0cuo0tFXHZ3@wNXqjr8AMwbv=dW8yd4=_&EO&U^5f{$~4Re(v~*KmE1H zG~vwqCx7~sb2}c!e^#Zt#Yq3QrF)$_@tF9{{1MNzeg5+Krh%XS|F~b)H{G9wTj$ek z$1ec>XFNA=^fKI^SNhAv;3*kfqJ_78oz%q z{?-kC{~+H^>GJyr<2Uq-@BfE@e=z@V|A}93v;*|FUh9?fSl?cEUFiti6IsFddkO9W z>9l?cw^^^j{LGl*=j$Lp{yF8<*(+-ADB2g>`|ZC<=1H+lIA(pUBOe!dN+f8^61 zo?pPN(|-tVGyU%c(m(K7zke{@&;OG@-C+IpeAOSnKY;&^ulfCh_>cV9kAE-_|JUF1 z^7SCxI$z&{Tl3>KxHUhv!foa^C`bPFE)U;V;nsZg9NcES`vP=){zqQC%iz{@{Pu^Q zy9{uR@1ueETkrAwUNhW5KJWYwKOJ`hA)6ZU-g@6&=O6K?rf2=bq{m%4E(Tne$L3w0 zdz*598t;En?xuV9I$d}e{o{+N+brK;zOR15?;qrozu)8c5AwhDFMd7>`oHUg-a6;5y&nBRe*Wuy z{&YqI^;idgoxd8mbvc;&7ya))^JzES_u$syg6W<6&vKm2IA0zI-_8JCK|Jq%(ogrT z0lN3WpK0*#0k}0i!Fss$0#XaoM=yQY`6ugk>%gps zok8mpR^Me0JD;^~v*rN)32U2m;a4AaI%c#!;k1o?kUWs9nqD&8HN9j6&-n)$R;~W} zHv3s;Zv0sJPwIw~2gkBUbMa%l4ig&XI7N&xVdV2(dyhQ1FsgQ<{o)!;FkrN;`1NdHhEz8gn<_( zWDn;a*mQ$XR|Pv?n3$RL$L}Ee6dCTf30kGwgEd{TC+=>mAA<~@_u5P~S!Cl4jXktO&z)K%(SXF-b#?2)t!;h~X&K`~3 z^gkA`t}DtduF74$_SAUsaP7+#566Z^06r2gPQ-5992>f@!LsIOOJalf;Lwj;ykuZU zY~aAr+ykhF+`x8ZZs!XH6-x_a17|1TUsw2%il4>?o^P?N^OsH?=r6J|6AK>9U1pD5 zv~B2cZ1A~y1gb9l_Jr8rQ*<_!j4U179X~|jfACWf&$**RV@L~rhvUUXv7t`_D2|^Zob-wKQghVeRxXqt|IF#jdzYnul;|&d*rdletF|7ugfI)5=rVb z1@YIkb?krQVdvnAV`z9y_vKz0-n>8dgC!G33WrKqTSv}6G@RXYcu4^m`+*Gw)3`X9mq`_jz5Zu7<~4V7?LKBStCn} za`T5b-=4d&aCqIF?X2$~d>e9< zV(iA}SzfWbCVf8k&0QsEy{8>L?djpow+^qnEf>E%*K}v@mE5{pbG5e}itUb7#BYxc zRm>{1Dw^&Dcf*l;c)0diC0vFcj14YgI`RFnyR4lD3eJz;H?Z?)u4zv$HGSadrLlp! zjsmNA%eKnNx%jgOH)Gw@;IV<1N+G*Ot~+zbhy|RQ|zlTF*KV z59NPA0~n6KeE*WkTkc@RGdTMO&8`uP# ziyz1}Jr}$E(USJzB}M0Nez|g z+)yO5dmuLSebh_^Fbv%eNBh9$16FMCrDl}<=A#8@leeKcTz%(+s~)^J_lpfQcU*cK)l}DV*@pRzXi03PK1niTccKE`IFyTP`U; z9w1&1pbyHen^y5!Z0o~xlKkw_T)YT{lslan&HZuUH}A{6cK++v*dvAg1y42)y#Bt} zO$~R!Bx?HiJAU)9gJNpWU36{x@Emj%1GC`Ke0BMbtJdwBYK;`1Ib8JOzr=o!njnMp zO?>fDe4V1crodgO+(mE~DEB0|Cn|U0i#zZ&S$(|??n%mB{NnfUHAQ_*h5J@X-~`41U zns^DtRP3f_02x{OIy%_);kV6O2jS3NLJ6>QV8_JRUCSp{?2O$s2*|+EiLtF8gJXCd z)Q1CXA3#($<`j;^i|ZgU>c%z}9(+6M5hA|g-s{iE#fu+1m|I?0{&@TF)XL#?&ndZp z$cSql1S&Mg=MD~nM%}&6Uxy}E1fTiqo{QZw7K2*ib6lrs6`|U5O`zh{L~P(4 zUu1#oB9bkeORQW?VXnS#<)}LYxe5??z-_y0Z z7)|Nl+R=BXODN-CgC!pXCYf8ql#l!J~Bk_Z)>ki%x z6a)87%^hNbTbRTRh3s^)Dz)WBbt|u#z|=s-!O1GYQYI0fnyZ~w@Y?XaTy@d#gmM<{ zgJ`#2=2xz4%bh+=u*uZi$~ll9<p!S0U z^QNWd9J#EJiDb_u)3CQGu`*{4e6++`DNCsC;Gig*>nE1)ShuUh+K$}pc=1mjTET2L z{VBoPD@vU@aC9to)ARhQEnyA%+Xe-BZE?=Zom%mLGwIA7NA|C~ci@4sbw-n>=zyF! zk}RpOJNN~VHnijVa|whDM2#Jsfnoz_Dr#hYyeM5VKVIydR=(ph5_jQ_7mt?jc=2VA zIyTvOaluZAtgQ(@Rof?6@7VFeJmju?#|sovMyz-V$XqqjHx~PDc534MmW2Kjr6gyW&4%gI__J&07ZqzgP|g@w0MP!NcW`ADN3zsQkg<+G!&n zezf5ATytT;&mofL$2OMd3Ud{4)aWOHqu~B6n_mZSyc`?sLt*65pPW@OB{tZ~kJ@RK zh+h#){cJl+R^%UNdhkzlEGtn{)aM&kQ>AxtCq_`NQ6(`5)X@PeJo9_u`O zsWrg@&u5PfJ)V8!YK)AB3n1+vic3s#NDI`rsZclz2F@iPk*;4CLEO%p7TfwX97?*x zhJHq}b2)Xg4%fLTkPNV!M7~7+p%GKJrrs?P=r-5OLF>!GAJ=84Qhwph-zJ4xW z58(A5TTtil`6=8Z_pF7)86MgLH%0zE55a-{Wr%Ylxp?XD$V+exf94>6@7XVYpA)}_ z@LTanZ0PR>CR!Cw#)e+2hm77G8+w)RUu24@j~BELFP=F3vBKOvLo zUUiC9zN6w$Y%mR1#ZmOReDBYkIzN6EdU1T@Cgtv7?uLh6#xKW8Lr38l87csVx{)Cw ztsD71Jr8!GSVb>>%U4iDTkc^Hba1o4tRq7#NQ7qz>hLjiX$*gT>TtYhLZ;MJSqJ*j ztGwI&%w1M;}J$`#wv2Tkg4t)MaMmhKk{UcrC6N;$%#0sFc|jZa_~df3SVH=$ikJv^N2d zqRRUJtE)TR4GC030wkRPK^B8igd}8Zkg#+Tgg^p>fXL#OLEI1%!>DMW(~_oaMPHrQ znb8@X!FSYgVO$6@7GH6UWQK?Otz!jS*xR3#8Jyzle;e}r$}TenW#I(Iww z-0f6`nUnLB;&A5o&CR~|V_H%azT!u+B`Bq$`=vPOGu@s|n*Z%Fi1(lrhFN9-rdGr+ zg>^1oDPgql|K21(M3&djE7PXBmDc-0Th&70TtYg3i!t9*y!HqgVN zIxRxL_!c?Iio5VlrkM>X_l;00QiI+z#dEJc{z=u;d6u-j;TLHyw3~;9L-iV6F1=&N z8pJ{Y*9?3%GsCfbxvJO{*O^b+jJ>9cE;7GZl>dpUUS{*{Kl`re|I(LDB6yxU3-6LC zPui3~u`^KU3KYi#3gZIBGT#@Kexf{(CVD)h=0cTjHc*&CpBY%#FHm^-hP=TRv=4c2 ztMFQUSo)f_jWlL**}P!^?~6hItz@D83uU2y9$56zM*m!{^Pmp@xse-I3Mb$V>7#A) znAvzgSlSdQJs2q6m%fAkD&TFHR*s+ryY+4S?g>62k53Agh9;$NM$xneirxtnF`*U? zcn^o)6nU~6p&2YXWKkBMHp}JjBv&tLVCX?)yk-do=&c<3xH>tm~yz_Z*f|ZJTzAl#aTLKDc&fv*#zej)}Z)QHI^ z9y^!^B8$i_r&uP7L+G7bTG~ zU+c6_=)NejH=u?88DU`8Rw)g7S`ASq`bbkzf z=yu}ia!#zbYW{^|R7G0EJY}9Td7dTw6C#4rpd|ZhbtB{7ibhV9qc;29V^yV$-lpYk zlf%)xOLDL+Ls}iFc zOggRG&;tT4QFi0oaLYK5C;bz~T9gaNk?ElvudAYn`_emUbt+@dkxUl&ny#s``a;QC z-6jUlzX}{RDnGxuhyh}#qGLIUiz@eQs#vepZDU-Xx(*eQA?Jb^-!F9K53ffBT-P9- zdyLVyuabZb4Kk`6ca+>&%QyzSr9qZlt%bfT2bObw?{uL4<2B}Ha4Jz9W263(18w>DX zONcDnK(jrveed?~w(pMKTzUNDPx=w4;-Fx$=;R^m_640i&{a7XXdYB>L?^${6fejwj@NQc7e*An8fpT*l;wHCTB0IUS2`l0Gnc67nvld46_S?A9{{ zcUkt#XwCnl8+~H(WVFuKQJRQfWao>=jd5YH$5$3+O%aVrZC>X)?2^1Mo9CQeo^#a# z_dMI&-EbyzeEreN>82^bnia&2;6{g;ogSKH2-lI+da=XVmUrLb8`~-aaRKjB=lWQ4 zdh6tR`f9qW;(AqjgqlKJI?b|qN_ZzxNo9EhmtpQyfPouzV6xo1z+K+4lurq%soJ;C5=R#igI zNE@?-Z$~NAKc}ox3JVqM8jqUOK9Tcv?_4)Zo1o&DEViU$?iik$tGt6Ya_VbZ)Ay{X^-R23WM=J|$LU^tn=JmQ6~B}D>FZD0lxM{2 zk9v|jntw3?qRE)m637 zmZ}T7X>~^CZV#9H?#n+*&h$88Q_Ktx7=^IGC=rGcX1euGM!l%l{LMd~t0WH@3Gd01 z)yyTas#Mu=ZYX(QRro)B5K^)p>X+(P-28@=Zu1*b9h%>eA`XAW&-tRfuZJEK$~Drw z8C>L)WNZGvG8Ar6Ys2!b1%LB>-E^Z~Bfg@|2lTP=0jF>6`#j4CcbCE1uNm$Ge=W7z zEU63v^o?QH{_`60ulY}IT@Iah?cDhxT33%RjoFDs`)CfRQ!)l(?n7aZMWlE2eoJjp ztmfai1m>B&+^W^YCA0To(Kc&+uuu&!++lL?{$%Sf`mBD|J*>wDydNQ-Jo)i=jnZS5 zTDRyjhKOOsV_DbSE}H*Nw49n96-g2>$x>UIm|Mb-eFmXEZ;U!}B#PBe=F3@DxQAD= z4*HQ&F+lHhpQL=V#cvdq=KoXgbM>p*D5%#6n9S7V?&iChFl-1X5TRbm`fvy}*fSwc z^SvdNCO^r#E*Mj*TdeDtatb&+8?>cvX6t-8wC_$bZ|Y4!{B}$ah4a543;U7ieJu9< zcwS_&aMr5(OGkcz$eK5Q?zDHw(Xn4q17t$9nx-K$K;GJu-gpWUS^FuCIXx6y^wd9@ z{-60|YbBJSde_y|gcf=ACS)xoYgWaN2+-;}`|7Rcb^vW@h!EeYJZsOHKV zrf{DsE~Z!>4?n`hFI{MQvuERd{X8ctlb=aOix18}axyEu11|sGis+zsrDwP1|4ZR-nrr7?RQJTqzR#KO zgN5_uI9b+=)Avr)YX6XDVIL5SMwQNBOz-WdbX%>}>sr=5*Ht;1s_I%c)skCGr%h z>t!0VOmEU28UCZnMwj)vKa6x{cT~}t^p9tU_wJ)dZ?m3(`g`<5eoP*Z=zA*c%qJ@q zy`_`Czn4~LZ7y=M!oq-I^l0CR=IND(B9CV>GH3eCA&Mlrt1oz*=$UAG9|y^4{O&V; zn~dMx{6>zFz2{k6e0U0DxVHKg%Pw)Uf6Bj0o(Ue5-?bs**NA1U5${@g6?3GrS6>hZ%$z?IDq@!Tbh> zv(vPtMc1jcg$>%f)z6(mE;MM`yEPj(;hpEGZ?eq}_}3WktLoR>&z}*!wQ8#VhHxA- z;@jvKZg{&AE}B5aJnR`HZwTzr|w@X#SCfs^Y7+o$xmiW3riF`q(pp;1RCbD+3QA z=sZMpo+-UPaxaysO#X$F{_T)OP!_i$UsHR1L5ay08B6@8-x3*)zr)iK9!ZnndRv

      1lnF8sRX9FKH%Hyay>Dz2AB_nbm@ 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

      7Gv|+> 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

      *3BX8?y=mbYFP`Qv4riNEU|3pbWytg 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

      Ut!a88f=a3IIs6Sz=skkH^8E}!fD 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

      XRedwU^zxK< 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�@R20*SwB6EQ?{!zU@N~nVIwfF+*R0 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

      &=TPYoVvn>yallcg?mZrA<8^fw z>FG6F8mIsW>`Ln>I@|TEgWJk6#Tk{xf@#At(n_jQ5uRvoemSTUc-z~D6S#Y$s4By2 zTn=ly$S!agdd(I*cs7b5M(w&{_Y-8j-KM5E5Svh#OBXr!)bGy`tgR~s zgUgh-cv~B0maG3v@Hq|1QHDKknF_GOmaAOK5v4?XjHY$3 z<8#D?%nm^uh|D((eQ-|Upj#f8Ascl$*(22C966cRkMXGwfAU$h`y(2&#YA-}ZTWf# z)uXK96Aas|-B0Y+N@S6-Acg{LBxUGV^)ocgE?`xanm?C5 zlv>*b#%0Dxbs0$J*|{uuifkW#nO6NZpnjLn!e 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 z zSTg~E%Mtqdx~dG<&H8G&@&Wtu2$#RKFF)n-A^WmtCD)H|y&{tCf1F=AJNP4z z0YVSqtf9vumfywy94=tM^1CdMg3BDrAjD}Z%!DO3vZ~CrY!~087Ax6V( zDZOu<(KkR`V`mrVVL7{a-W7kK{u5C^b^o0{l*y@8P~fnSz(&+dT2O*{)ld zVvbd&wy25m*+q3Q{iZ&xCE1L*K2#=!gLLHBM)CVk3XM@8?1Q!zt~W~S#CV5nj
      z+u|{hrkZF&%LVJcZ(ELR%?|n=6(lh?3R|!DMq93j|j~nbI2L% zoERsa62Q0TPymC+LjZ@&!8OZ`B}!e8s%r;C?f9qUIUJEF~}{T7!vqAJQK6%qFPae&QXWwQ6L{`klIwr&nI-*&n*u@9KNI zmf~vL3GxW~zruD#9a+Heot7;#lH(tTkIgze1LTQ>AmdElz915%+_s~S1SdtG((NhW zVShyaM*ZZ3GkV3Fb-X_ZOo@!}=klYbl8$S@T<({AV+)doOOP55@2Ah~HUW5asDbsu zdX{5ghH-z8-=mLN%`^Bd^%)gMjQgi@sjgPwCeeveWplD7P4z=Y1@wc&ZO8)g$Y-opg>0Y7GbJq%qyF+k=jV`YuYRCF1#Uiy?I)JG0 zMP>pC71B+u`DX5lKU$yEmmN7AjLY;f28Op%ifIoyVQE<3XtSh}{< z;c|hF_?NJ9U3%rF>IV9>qL|*L(>p)I#m;`OwW3(jXjD=PYU2M=iUX&)^dxulzbJBr zGJGJB!v{G-7S? zSGR?_?<~6Eq7hYc`EFQSCOboaHjDh`&o|kiAK~Cwaj~P{?Wlc$a02^-&zK9=k6BO` ze8OB1^en6k{TiCkw#X=2Zxq!u8@~|j zazC*@{Ocb5&YtNz6gMJy_{9fS`jkv5EsOtifFe3Ch0$$qu!T#*~?(~7zMB6`sd z&7y8=7T0GH7PxFLWt4i+&^9%%v`;@JUY)FnXy|!Vr|Nq=H43u^CjCxr*50yU?VT-K z8A{878_4b3QFLQcN6}4$o@$V-!zikvo5sc}`fkpxGm3(&f7?*nwvF!85>(K{VJz^Q zckGr6eZ;aCk8Kfc`#BmmS=ESaY+Nce>IE8p~NgdcfGevFOF<&DVbWWxiKR~0~P zYFAqu*Ym=swqu1U_{~#!8LeH5;Pwal)vtJkn%3GV}d1gLXGo)uYS-unulVb|68H%EH9qw%FA(7^Cz8^x1tJ*DA_LkIgj(utZ4 za{P^?nhhcxBlxp1HyyHEswV1wq#>0vD|$RTt4~JzRWreS8AF?tj+k}pTYuLZvV_|! zEdw3n*!Wg|Y-yjw3}teTI*8x#}``N zc{<-ifpLe%>pKLmF^RJg_zppC;}?R}#vQTl!q`#Q8;NL6ivLF9VL>vU{vUK!ABlHR+HZXE&OU2)fihcPNGlC@FJ72uX zR(3zmSL9`yDk*Jpg8w9kQ&0t5l7$U%P^bHulBp@}@}-^{(4`5R-?j|$E)0{zYHXQ-|)q2E!ms0CtkqFlLm|9uLeHbXZK|An|+>_ zYY66TS8LW!{hJR+;tt%a!X4u)B>^gLk*7kKaRCn&UXSxqBLH0U3BgwzSS_maw11mN>yC zxrTRJSt+`C!PiT=hPlV)Bznju`p0qrx4ZHHn_R_?83`J+Xz1I&!kSADAn>)Xq(V-C zNHWr6WzN5*kD4Ihw{>!L@es@Zn!6YSb^q+VxvV70CnaXI?rQg!2l zebM+AQ&hVBMV8;M3){UH3Z#qJAL;|5(-DB2ZW9&mw0AYJ4wQF#w+V-$T$5mA@uyc) zpY0u}dyjhZM;bnD{;9E!tcpCkdGq3`@~f^37TvUN*4nCT3U9ihYVDffbvNBO9Nu;; z6`N0IZ0D#-ySB-8$KufLaRTjfIEWWzTFN!ZBO~;UF8JI4GUe54=9}U!Be7psdO9P)fjO)kXgD^9bEH+7!__ny!w+|p zoaoiz%`zr;b0IhSO>9C-1FP(Db)U@}#KKi7`@MdYa`a@axnQw*nLnkSu59`~uLq|D zI89Oa={iGMc6~AA)04T5$+WAD;T?jU#Z`hVSFE}Ay6WJXb%RJVpZjk{oU-^bovO~U zn>q~&X15kwsJl`@ogdO#!a^;NuhcWuG4>^nZ}#feE0qd{uT^$@Ak*}kz`A%9+=yPU zZQM4lk712iy(HNAU6$5x%T(61uyf{Ep)5$UCaD&?wIO&juySeTSOKV$n}|9O9r!xx z+=ls89Cfxlh4BQ+idF0XM-O|YhI_W%&QQ2(NNkBiB179d4PeU5fp%h;ahywuPm6uksHPP*+`RD=_Bq)*;B~VwV6B3*K^-PRBSBi!4^~8n$Z@%1P?wA=3d`6A9GDS?O>7dM1xIpsImJsT56@bNIrYS5f7R9^(u@EbLBD)25McN zmii>>vr45;=e^^(crP-1Y!MgxWWwoovr&}!pFTOOn6Jhhgh2dH;(qBHEg>(==g*CXqa%H zRbKN4>gho;cjDPLirDFWAsRw)8&k8ZwUbxQsM9(*P<9tGX^;P z%C1w?XI&yeh-8}!ocYDh>NKp8JG>tz=?cwp`L60zj#E5{vsQ)lh;SrzGx91v44$Q4 zY3W0t5j-{eJ*m;B4m~TLd|kS8_Ly&9EUTRu+kb)mayoL~(c*8r_bH@bNN|Z?q}Qxi zdLb-&?(q??3pX=WrJ5S&2g#(e7nW}f3u^}YRC{3w62B-w*)FgqT)af}(@Gmb;}<4q zqT?AMFGH7;s2|;_+q@Y;wSTS6favD(X)faPjJR8B z8SgLV$1m6FKTCU~k@4nkTPrp`gaT$k>i`vE6a{vTjACewh196qwMW4UiSI6pt9&=z zw6Ri!~8Pc}uG zyXM9<>#iEcZ^_a#=OP0Z@$r;0>zNj=@OWu+`qalKaFnz!f5m0=0`<-`R#&-_(klm+ zn6_byLn?hNkec72AvIb3u0=y?;s9jM|3vuYa(@yhG<)lnW4}O7&D=@oalI$D0hplu zqa4QpR}Gy6gYfO(r%2%%@fR0C+l0<=Bl(vfso9 zcyJs8OoM>=1rmD0jPH)e(QUiWY?E_T^*F?Xcggt8q*8P5>mLP)XzIc%NXG6FzS0>{ zxo<2Zw9CjVuwXtRwiv~iHh8xB{YE{;Y~6hPjGk_LL7MVtd+N(>tPTp}5L?OKnl(2D_4R0(^Z24IT@%!A7T!3>`F;~^mhY!ui;4z4#HXV4J6W*}Y5jx9Qu+%78 zJ_w}un)Kk}Kq~c1I;I35jomv8ND;UN4Wu!TB?9SQyPi0ZO8t>IkP?`G5u^=+QR$i+ zuB!6iw9bav5I9}21`=7lW}w9X1}`1K;l-Te5>d%vcWVG%rTz@w3o4C=^ZPbbTC7oN z@gS6*4G)1*xqmWWCqU`LSBF9Aj~HiaDE;HnL@3>C*As_Qx&IXE`8p~MgHcH+xMuy= z@hAo#{r2C3&En$|VRPtqJ*WiO%;3GiW=qHOYtCBereYbN1k$j*-)_T z{nIe8{4PBPmRGkXg5~>mJ%eCb_>Ev0jyr|xt_xmw%~fkl*IXl8U>rii!^hX!{54nA ztQl7B--A_MMk1_Q8;8ScIqwBlHHokqMv~@hfXyES*v)n|g8(yz0_+#B3IBd=_g+z9>)Ywv&``IZJA}2AT8bs*YC-!#1@4+ z`8{T?!#Ycu&KzdloSkKgC+aZ33Y$!#)$XHW$B{Vy)NK;^8xwf&PgHD?(}h711LKW; zR6u=6ghn6Nm@m%#LCl3+*L@xxX1GBW1)dQ?9oFdpqKTkbR7!+2VlxRfX;~7@pP-4z zdD4WrAnVTg;|VE=hsA;{Gi|izb4(9E_q5kwfLIvbk?A=_*ZG$4s2L_6|KZP_>qbuR z4EH&!wYdW+dl6L(wYZIUe$Tbv(D`|cXjpI;u&JR{8(o8&JE18_e} zBfQyd$#rE)JJ+^wP&n@A|6i)(x=iiNUh$Gw*Lt{v5SRYzYN2{SW*ViA>!ed!piP(S|vO zs7DdYU<#EsL|mG8k?SIYnFdF9c#DzQO9Cty^Gg7D*t>(XB3d(7*%4 zHQK~ZJ>HL^-+Rcjv#!D_nup)%{0NQSK+oF7V8drHW8XRsU9mLKw>QE0)uM*Wl?~ql8oc*o7n}Zq|%>WE*YY zG9@mF5g++4zU)hs%LtsbmTKl^(Lg04dqwxOd-@WhBibO{a9jdNHL^6;yY`>?W-UvA zltcxRif9-%anc^pbaCbmBuSXM_ulTOy~NE9tikT)=|e{cr!2M!`XrvZ2n4Y)9YL8t z{PifR=DE$s>L-Px$?N_xa9A3_@KN&$FJfSXG42-4m~c_*x{V8lfgCPUmBTAo!uXjnEciLKvZkjL_ptEAvB{HTW8{ zC2kW70Q^sg`xAQ72t7|74U2sKF1v3+DVn~AY-i{ONq|Jj&G-gUFFgl>bMu$Dg0stv z<2$`+`}$t1HI_(_Og!CP#5KUU?bpP;@b+hs(;{m&@w@V>Ga_Brzme6rV=skqv6fY5 z98a8DZy)3}5yg>3B6a?hIB!wTqmz)U1vA~x952z>i3c%$)~v$91<{f;FfH_V{<$u@ zY+>sU93vYfd;#{rveP6R`5di>t{jbHqPR5+XQu3QKT}Lpd-pTzQ>|c9Cf?bnA=UP~ zvJcd%<$pLP_$oUBK^MavQ}gTl*S)V}M@dI<1veMC%$oF+ot{_OM_x_YO|(KXkNmYU z@A~=G-cYGoEGOvs=1CGWviY5w+14#i(@j{`O7px*&v!$oRx+*$mFBwSO3%&7A$NF( zGu-avVd&l5J&_T3JijfmX-~q(B;4tO*sW_1w-Ji0-yN<&@D#ZheJ|rQ=j?WMU(18< zRA0Sv^;N;E5?DAI%WZqM9H;;_mz|ef_B>PyQyS|tkYC+aBSA{db_s|vI+6}G6G|cJ zdsGdt69TJ(kTE04S0efh{a?z_sMna z5r(Cz?62C8^rT^L%G8E8Q9N|iWl)QJf_)}GI3Z){i1~NF*&#m36WWKH3@;*(NE(zk z_l-ERFX_)uuUQX>OT+EyWthg7%jdxsCkc2iHy7k^7J8{B-zu7upB@@r7;Y=TKV(|u zQE8FTXp)GAnl`G#jj4k6E%^ntT>%hVnwYo*7v z?q0yjIvcvohL}2hdAD#7WTL_ZV((C!hw$Oz+%{-E@!4Cg`sXFU@nhNqhy+hq79D=f zs(*t=mG(pJuq@XEakuIZJw}S0$MQocoy0>7O!0i>Zra18<=yMkw$Bh7<3ja2j1Ms5 zO+&%uNH_bsCE_Y;wGW!LSCWD5)kltfFrSeWBeWl1d?J^jQX(b>wR90YATUyFs3pvi zzX5HGZ9?BFCiI=&T?PCYq1_$cZuBaL#^KHyN7Jg>KLiT-mhPy@%tc*(ae#sy+65tiR~g12FNNNUc7 z8P~T>P3g3jCqcUBW?no7avyYGJOAgf^ zl$)*Fxv7vB@L5}M5$0YD`O*LguMKXaq5JgpZ(oog6?bau94k1h*2H0eU?NDS1v0USo0tBbBTKw+`S( zw92JQCI3yI=d0jqv4fW|?c02TDezRU{#j$!NIi3rc`OK9^&cO zy7md)okJK&oS+7&x1?^+CmEg0tKJ2Fevlv!f?+6D=A)`F2AAfDI68bLYZ-vTY%3or zttnWpF5h<)a#bIL=_GRhI@w0+k2pi4w8b${OKa5&VuXg&07BfrJPw!UWQWBYX{0U~ zDS{q}##$|u&d|;9fTuccTS|Os!2GcyQW5?c5@M5>!v$c4I`7S+Q9YBx+ei-+O*32~ zRUU!%5K-W{_m2t1y^>iV;Bk`QbvCR=0Qhe2nR)=tV%>N#lmtoolteOQwB#b`k&-^% zs{%?==%iSo9&LKh1Dt`5B)RYQMps~|8VwRh1bbD^5`AjH8<=xTFY0@u!EyZ6cC0<> z0-oRL6?S{M;|j+b$F+{@h)WT4taIGrSneosT;;e1C$sAuH}Y<|qttPeqms9^JYT1u zl<@8vu5aQi`yCE-y8LSHYk8W@w?V$W#u1{Nd?oia{I28eb(Ff1w^uo;_}?|$-N5fv zl&Ey9<@Z|3EO*RuT;^B|i0xl5UtHz5n)hpX_J8ZQkCxWzzF$Wz(#HQj66weAUM{Bx zgVf&+0sw9(=Pz56RAdMQbPC_@#LXn13^#<~^rHS;@EXd}Eyit;nn`g%Q zY~eAB)6C1}kS)7kJz~36j=>E;xMt6Lp%h7Xw;_$au-=uwAw9S#_Z^tj8sZ(KTh9B4 zv6LOnQPa_@fnjO+^{&{L`a4NsHS<1ViTAJD8?70Pw4fs+ZGRfinGNZ>;sNqz2Tl4F zub`fK4@s1NH6Bibst>Mhk&cwZ%Z^pn+1gL@2Z8d)&5WMDWW#+idP2W(b2U;9S(w5< z{rMT2fAUL&1*^G7_%$u4h}LANmpRZ-{=C?8)y5LjRfJwpXVZq+$AL3=B2>ezPO{s? zF}=PI`|P&J{qe6Jaie!>9-Jx7)8@VdjaeuJ^78x@t`Op8aVMd%d8GQ1P8Jfwj;Xm< zrbhg-PbK)o$uxE64GhWQD?4w)XPmmGrNPMQ@^P5?Mr0er?&M|fyFb(p`oQ8jIOZ?sqk8>mgSUXWQ~_$R6- z&l(utiMrA5UxAnEkLA4rx)bg5&uH^9IR>SeHv^q6%x$e^snzG7fow|sai$*3xu$*y z;hF+3KMCQ%iRKXib0YGHa&^~9QmAe;uTsf3F3lgSpUms*a&^_o%*c^eH(l`@3AuIo z6?XY#7;`;1BbV;DOiPam2V9MAI@b7_rv%>;Po2Zz#3@uxp#D^#M|KSvyVZP*zvVvT z1*uS-^WT~$NPwU(_Z`*y{REKRFP{ypqd=DJPxJ*J;!o5YI!Oi2lo7g{vA1^w#;HA@ z9gTMXR)__bo1Kt|dd?#Ps!;m4a281uf!c%)07erD!hJ9 z(z-dEY+hhmBzNPi>{w40Kw0?z`Pe75zn{Fw?$jDOWfVzBiSyOIDY5w-r!J&NHl4!2 z<`gh+U^F&Wu>K2nqb)Mk^InjQtA8uQChu;D>~^vGnnadC4Iv7)$%oEKB^0B^~mC?B4z7XKb3C?Zr- z@c5yx)kVA^bfwwRl38$B=!-#s>jaEhyakivHirWeGD3RSa)fuS8-YSd0Q#CPQ5x~02Rr{w$2iFcCuG-3V<|EDIQApCS>iG>8lwdBED$kdA`OtO3osCjR!D!w;Jny%JxE=Hvtd88 zcs5MjKNN?KeWG#bO^riogE-_9Bsx5t1&h@8j)L{Z`w^N_Gk|&WtL;o215LIac z?M7CqaWXtX&97lm&+onszYgd(ncwhDn|_nU8}Qg7Azonex1r%Z6#XVNJdE7QhkSI2t$?{=Av1dO57Nj9=>j}zvcDt=# z%kN&dB^m=_;+#plrD}GpFL&~gYOa4LCuM&r>R;75OZKu2Au)2SJ4^T6r80Es;3^i6 zxiItkwj8v#=#rJG3)dG5vmGnkr#@uM1B-GIybLM4LKhBU1!s@@rx$7nHID)HW2Uq4 zSiDt!nlrsUL#bqp!F*%3q^McaFMeHHrSs5z0w>=um&L`Nm(gbI(CU!ZnNWwxNG0Ca#a8jLOA3&9uYaJSa!s`=AD3m=FMGq+7)T;-uF)2#%sR3%_813C zJPSJWhmYBOve#?}k!1RvOuvQTCbG#xsY2I3HC6bjOc$ViIkvM%8qf>2 z+WX2oTazVt+wGu5v?fjMKTRe%Mkr>VDmSvn_sN{#&yBwihq|ME5)Qkv!k-hFLpcDQ) zY269=#Tm8Z*;>XU1GVO~q^FS2yxJMajBp+*U>6yy4j#6lG=u`Pd9&=x)SdQ5kV&J~ z0$fd9MwQbnOS95mH;N%K1<>3?HI;B{Q86RA7SvGv<5}vRq1BLcPcO;MS2$r$O7b_j zg2nk8(t?HNJl)3&i9zIPuO-1s&4obIboMb9!cVc$&GM&r)(7U4?Hu-TL{m81t7I86p2@IL^E+9MUMee6irq)&lhfvk%f*g zQ<4%7c#VPSBvzQQVY1mVT+t{k#?GfQLsw!M5t#*OXyGEO5!G)S)kXsIM)`Z8B5cR^%=%`Etl5QwU9Fy zN}zG-R~)>=XJ7cT6jrC6rgZh@<+0fbauARSk>fx|92k~m8G*5!p*k1*g@eA18&HY0cOdNDG z9~uCic!&;y?&=sXxr?V7bp95a5cutqre@Pr>?PO$*>yWM%Aig};G!k>AB`7x>q6tDnhtTcuS=Z5n%hu78V^9vi#O_HX7^ z3ii>e4c8RiK!#AYdQT$(yaX`E$puIftdI+tNF?S+k59&4Qa+cl*q`r$kLG%o*UrsB`FX<0X02BkLxJWiQ-!ElbK%;bjTV#S}zdE!Trro8;Z(?L2-7#k7 zf!fXddw_qB^6xMFOTG9&t%rYe`S%6?MzIWb@jI2@3;A~v*PAzsM7!Eih_qOw*lQf$ zafG~ zSIdh1+`-8ulUL!@qvrmB@9ocj$>)((bdPa_DhFN;cIWhj?%X@roy&E1+)Xzy zPK8r@pU6M-O`#OfwYmI< zD5D|u7D2q|ab&V4T-mfoDQw7H{=F25<`k>fZYnq=R_sfLsr`u>~f&bhk9DGs}a#Jc0p&WV*6N}J+u z?JvIGmfdo^pYhUmU5Qj^kvRTl=I%jxUDB_4A(H2b^6Yg6nO~A#e^P!)M*Y8#46x`m zz4>nf&vpy%D=$v8U!*6}B5kLzB(2Q-^rzvEM+C<&2xUEIFZh1VD2#hn?##E*Y|COd zLs>Q_X77-}$@~flYLey0HA@k!)7(MO%dc#OQ(1bGo)?8vhedkQ+2 zP$JVVQLIa3MeeonXegZR2yrquUw{7ppEvo^E-}cOHy+M{1Pp5YkgsCZ6t)!fKU!v3 zhjjGxdS~vjNQzaJL~;^>??$_Y@|VA;6*j#a(naYWObxF|m$cHoxBZ~>IZ^$Q-%nH~ zzB0cYl%h{bRjM4C1Rq}(*W}&8q=@I9m(qtR;ER8y9>gz|k_4L5&y_d>Ny&-EQ_{I2 zPw$5Nhc>*yT86HOcPo)Fi6(O1e-776G#;+vM3gvO7s3XkS)#mg@YG|QPjAb%%LvLW zOGdEBp9FgNlw0@6E_5cZ%gf8H<}G|lrek}ks!KZgnxs|dvGKy)x>|SBr+};Um@bQ% z%{K0^erVp!Ta97p)R6sZJ4JW11pAGHhhHh=Q+E@08erTKYbW}Ybl8TB=Gpuy^oJf& z43>?9%fdL=GI_y)@X|nX?i)+p&usEag_WS*X`~mkuH0K0{&H09`0L*o&253F!&*Fg zZ@n|}7xOL8J<|IPsfPZI4K(_c3{0&Ai0n$^W4Ea;6htq`n|%G(-JA~gFd0(A3OyMs z)%Ks-YT-fL6X{Cu1Xjkt{$p=WBkt=Nc19!~xX2adgV313dFlqNyf~g-z_(&Zp=RRA zFFZ+`x%Z6M$rVqW_}vo;Y7qIe2(ERJ9ea*Ra=jhM9){X0V-qLADYfke^{I6Pl^~6X zn=pi_Gy}G4182-y`XFiu!!aCbrOqzGx@vzr)}y@^}IiBuBl3dl1zI5;DdkcG%K!EROPaXzQ4CpXxnXqBK;$tw$~g z^P&0Cc5T*bn1TT$q&*x*~oxG?Lp zdOO)3i4*uCw;;Dj#eHfU^X+~{-v1&en;|#Hc63K{=PEz-OaaguU^g4b2KuL z(*0Yh_$eu6c33{5fw@w4g5G$!Setk_eaGv4DG=-C1}UNchTF)H)_l9%x9cx5iNl31 z{MbO*7F|~UQdUfnoA2b>u!8)>z%$KkpWcz8QwoX@JXU$EPTr?a|D@7*NvybZ+ zClx?_0x1NA;ST5&%g^>CY$XAzWDfIn>Svj(3FDsmJTUHAs{bzMuln)tk47&Z%W?^h zycoiPpG3n8(xM}HPGwkkCHZT$$17H4d|a7yzYGX`>a0H{`jo(B0B^LQa`xS%J~$B! zsmy;tARn6gO{KCZMfgVEtGeH!E&l*oRT ziev^Z;kk?Ay5M&xczUd$u6K69>)i#U(te`h1wlK9U2L#E$i6g>Ar}$CBonCBe7D@k z=7s$sHoCHH5M~V~^T<#@o%CZ&m3!TrKBMR6Q?h8x=2!TOgt&PNztN}m${o_Y<_GkJ z%WQr~Ul18{tG-A#n;+K~1kK#0FVNGs>5DA0`FVYjZ8d+&1(9)P_*D8#tOlE<-q)4b zYtJv5;ojc7U%zh_OF^Ht@q9+(Qy+Nn*R)@~-bcCv(gPZsisW6d?xh?bf}_mleSCxn zH#XX}Y{4R>oWz(SICk1jIK|z*tQi16lsv zVgq^Ze?YnF#o)u!r&&k|gNbD!Qu$Q1hN>bF{D82XvgT%yLWl=qG1;HL(iyt&K_Q83 z-Dw1L>9XOzoi&2n6Nx_TAaxi02no zDdi@5p|XC*%Av*vk~Y4I`vl?qlKA!{^L66qTWO7ve+FFYH7o~lA?k+wIy`UUz;H4$ zl$~{l^G}6zq@vzLn>ouB!MxE$SQ_*pW>FrJPXmFpi@u$NydFE!DMKdpUF&VX|FtIBL+sowU5^@Mmf>*K0ojc>sqB%3OYR__S zCvJ2Rd8_ZRCwG)x(!ITCj!Z5yJ6F$aQJ$XGRFWMSb0^0vMHOIkhy&E29}e27GJtR! zP+y7JVJru*%dceCZlM&id6~5%!42WB?CE-%a*-SL{8$^Z%GI^p6MLlLQRK%v>n_b- z;S9$19|AAO!wB|LRk^zCpK*QtKzzY>c@gU!?L;!m)myJqzv!gIgmvJR`mS_2aq|iv zo-wcr%>v?@IY}=P3-X7T!$iyiJwa+($2ro-A#3X6I5 z!>w%g*b3Jl$H_rGC3l_Ok5UZdVARE>fy`xr0+KGSBz&phQGisnM+n!v57T#}zDt`X zEA`VSq<%V4f0-_XZ7gg}IR3PbO&k08{X;9L$HMqv(-jA5W0fqXI7e4%QRmPPiOG%e z6}^R%5KpW_zn1s?DqT7W?v)%Nhn2T)K(CVFIKh#F0C12ufhCEFwaY#2p)sDfLnnyK zuq!gpta6#_oxSf)JQn^SIl}RPz2NQO30nJqAL||#^lSuCjjuLnydhv&hJ)}(gzN8g z=v}D_9fZqRuPs}&ygt!sigsc3wF)Bh+4Qp@H}A7(diRIlaP%H9l8i-8vwfJR?(hsP z%1<|Y8$V!u-kY!xfG?L#Oj_BoFf|vVwCtXUbfv?`#(T`Yf2P z!@kG`;b?&bcOurZ+Yxyy9L?5uW94p-SSRiZM_s`eQG9&xnr6oQ@+rqf+~W3;+LF}kDKJRs;m=co6MgE0 zM}(WSy>`f(@ld+3l-YU|LzOaQ0kgdpx_}9ZwBUu>AfL~qcab-$_yPfjsTj0#LD zIm`sJ_=fVO;lqB|>vD|j-8$5`h3WSIuk9k~61=wXasQ?9M1gMomDmW50gFxYYG7x8 zlgJT?mF(R|SM(ydk527{{oX5>#2P5z2Okxdf!e%XmZLPHQc0c^hfZu`}; zx{Cp(NoZR-eV@k4EkcFyuES8bpbbp_Hjz30W~op%Ie&a5}~e<0og69k+M?#I|tP zOkzGoPQVnwo$&Bfttl%Y(p!MM5g9-fgLEQU+2;=F<&^^yUN=s9)%S{?a5DLEf=bk` zp@`LH_ZfcSDb)g9`X#$`m53#Umc6`5mKfOc1EjiGz^8CH(*x)NfpkCD9JUSgB^Nkn zEa(^kfUzPuD6?!2&bc%)n#2aF;jZ_>yIrE>rQfWSGXWuZ{kZO0;zV$`OFZl&7=H&+ z{|XJ~9%J#*(%u$A;#d5$rQ+k3ihs3K9O>|WLQ0TBEfxQ0srZ1XaxE1KSECUv6+L9I zZK*icQqkK|K|;XK$wJiy84sp$9{uafaIYbDVr;@h%yl!D$Q9<|0Mm*&G5$vqbKbpa z5zk{uuFKW#3xFzq%G#*rzYNht?H9Wrk#v>o)DCLXgYhr-!1X|4_N%LS6srQ4(M)xF zVl8WREnQHPB?uUZl;KmC4OFqwuA)nw$|K}%U7e0>no{n;8q0Y^7u7k5m7b_8-N(>I zZ$FUxs<^4=}NQOL2APGY<1XK_L zArJ@`*p{3S(sd8`emMT@$@ln8vieB_mL`yB!(NIfERH|t1?|Xi; zX7BU=pMNrdw$=Ned``~!pR>>2Yp?fO`*H3J04M3@hN~Z4ps!c!-h;)H|`v5cU+q~-G-oahA)v_fOyjqi8dUr%t z9{%F9o2Q)h1mk2+BppORJ?R~r^yD#~q!dAkft|}IkMiWv>N}f$hj*Uj$&ed6H2rk& zaXmR(-sQ7OJ%6$G~{NO)6B>(>lX@w?0-~(ZD)$-iNmG&@!mePs*7* z;0EO&^m*B*fkHiqBV;T_D|q@ zSmVkMzIM!gQhTO6Q6>v!d`FFI1;|AmpP6*#<7*_)# z*p2@zvp=TTx#*UUwzJ}xaXN3S50f15^{-_<+mJRUv1ZMCs>q7wMGb4A9$&b?3YD@wcdss3WPXDfM z96nIxH(R;W{-ok;991AJMPC-hLpo3fRNj=9ZvBf=;f8nc$lHgk zsif?O+tKzCfMMEqKJ82+pk?o#=^Z>>EEN@He86@1(wq^v&?sbk3DJZPfNFY)u_XN z!mk}m%JHiyHzy3}?dy)e?UE%K4sM=RNAItWmmSno$B+{t9(ZvO_gOK zu8gWCU!65Zd(!L6UNYbMHo@rr*(`{huJ+K{OEpS|GVWKzE@l4w!okl8RprFkNec%b z6+mPp#%Nm*)zBd~qIbdRn>GIZ`BnRF+)Wlh&mYB@vVeUWI*UX}R+=H_zFA zloXFJ{FBdh^=n^%?*6^?2_JpMOI!Jmx@q?*XFb=ieIPcmnyE``4cR$BsV^&SGpt{8^0kQTry?G!>h;Z+Y%3JqWsr> zpoHT|zdTc01F7n>o)#O(blp~ZWBuD*xVPAIY?($ljTk5*2ydKxT-L-R{S6h;d(bsB=2NB7)rYh*9zOMeAD53NRUoY+8 zgTLLy4bSvR+MDm7N<_Jxb8KaDg%;n+M;nq#r^y_WFMn)|8<0tp0_{q3Mg?Cn)n!x@p&cPES$5 za&k%)%6=9!ey8s113*(|JTvx&TXj9mrnHX^F+EgQOOu5%y5M(g-`!qSV6MRU9RxWw@g^vqFFL z;APb8`Rx-6bmOL!Qn~KwGo;FXB1&y4G`-zYn()|g(S0z8? zX_n(@dt!Mn2=-rWm@%;7tY?Oz?x#1*_<|G^QTIa|^kJ)o7oDRoHqW@5C{f|~J$nBU zNnz>kz^oUFsnysfh2wWQ9KUy}+SdjX56pN>+cG?=ctWeB|6Z4mAg6;%FylkXHtbEQ z^mn}q)*t8{JoVJ3p#3LT60~1^^y!0}Hg6IVmMg@+cJnafe_uR)?PfFn!)kza{WnNy z!1!O%vxS2vkP|p-({(=|T8e`NE*KoI&x8s$E2pd)6oQJ*j_!@;Dr0r*S5|3(!c!Z! zId<+-E0PGFT7o%7V9MqwKXKfKtDnM`P#h%^KDS^{-^if4eWzUg+^Ub3D`8|*NDTJx zvS9G7KN2fGxbZM4@c;cOnV0W~dwwqNSui+VPsr2B4yFlpWm}uC7@pyiN3_>I&9PZ3B?9q7^BJeXN|wj(o3-eH21?3Nhrz2fw#lPi zs6}$OddPWMb%}SQ5 zhJ*iHQhik#=JcAD_pH-=sJ9uMn{N1mn%q!g@WFEYq_kOgFr@O}4G-!6sjBm)PnE+o zcQA}{(}bIEW}F4k^*u5$viYwW6Irm}R0XhwM(;O{=juD}5hvcv^9MVS3uV1`c<=^j zppF+(DlZ%Mg$&ov)~X+T&yq6U2V=Fm_Qf(p8p&Gud{)kNPftMg45^*x>=kMR2a)Mt zE7gNAj9Df7Ifiw;xVYM>foV{(U&^vvB^bow^E64SqyI?h;xf%PFag?Kr5(mgtuB|D z0qjAk=jR8n`8VFUYJ1Hw?ON4&__wCP>O1q~UBCCNM0ua*wc<`e-xn)eW)VIRZC*HO zsdh(T=bzzR?=1^76O$bc&ey!nGc^}9--TeBW?!-!0s9v$)9wc6>zXq8U4G9kW)9z9 zqWPW|2nD%u9VN{UJ{^V(AxbqthrxLzi(jRk9<=?%7)2E~b!ze= zyrC@tjJO52fVdz2Onfn86Elw-`~2$gGN)j_hVx4-&lWxx>w0YkLyfxxD0*Z4>AB^U zr(RD%F6YCP%c->pCI36%ClGvto{N?acnw&_KbCBE0XGtkb{C@$1!g{|+*{ zKftJN996D6W_HgdYY>Dy^pkTUcTM@Yx%WY-vpzSmIO_+e%YjeSm4;ua$uE0pa7wFo z_SkUhXsv5{*@h0mztb#zC%WtHH?f+OG>H-sdF8{w*rl@FW3;NR^P(Nj9v0Vy7me{! zjvvTlD0_AI@UsnHEth7OYgqqIkG z{5e{iP7N(CU|qqf;*ky0#_)ZRnOu6c<#oq!Jwpql6jO{owPemiBu@BSyXuhyapB;O zU+@hkX<^OEA)H5K9w_yckgv+LHnVf3h90{&TvM(fR!+Lb2+|4cAQUyk^3bwOuQ;JP@GvIku;F#h&Gi zu+i83-RPSZ9^*K)HS>BplihW2|as4&#u|M z^ON%zOkZ%!wo88Ryzh;l``!co=<;h$8vO?9SaWIr;$_PYTE6&P{b>LFe~W=qLuLP! zTV={^yRN&?A~&tY*UZ&Ym^Ec!!h-7_=sf+pe}4XkFOI$b?Yet&&*%-~Hmn=-`kyH^ z`i`ZPd+g@p4%_g#@@o#CTlEjB=%#UsNZulyHsnlZZE@-LP8+k~r01{u+%tp!_F9zD zu<99lUhW#Ht?sl+>&kIs-$9rrrL*wnmD==X z3pv)?t~w0cCt<&CKAu#h>3?m3 zpfPlILC`0FzNkLj)wyb?Da*%5b?{-I(fxm-kE#9gBOeiH8{boY{zt3At{nfyH-7f} zU7bJ2g#UEq2_h_tP$Ee}CfOco~=-8jG_>!~Xza!J3QNkZwDwzF& zp}&-p+_3!**kZ9P@`KxT_5Upgw>#d(KpO*X474%O#y}ebZ49(A(8fR;18oenF)$Jg zbZBU~AO)uj{a-xQbwY9AKc4l!SG@f3HRmsU_3Be~+_-#s@upcXU;UjYU$y$CzL&2a zNxhWm+x8dNEZpN4*YLqY{w5Ybzh>`IKKMO-)brPzw5^X5^qXVzW_?t7=#Ou6PSy3d zKEBhH+#+w)_{Y8Olb%>J^|Ix|j~=-~*BUtI?~DKU51%NChc(B}e*;;$xL0V;h0i?p z_Hn z=!kmn+22>Y?l69bLnbdTUZXYDqXqjtD#sD!iuLc`?vlY5AO0Vb!3+)uzq`DcrSmg7 zKce$KOuJgJ_r%iTiZX}q-Ix#5_{X`*<})V3h{*Zc$zoY?sQy1p$01sC zGrgFjfBf-0A4%v_U6<%?Z@JU+dHTiP6FvHWrmm?kN^A+Xx@S{$Q;C#zx}**{?R#wu zv@y`eKpO*X474%O#y}ebZ49(A@LP?6@t1wGj3wLW-)ubmRx@e4b8QT?G0?_98v|_& zv@y`eKpO*X474%O#y}ebzY+|@m~~@i;~Q@j+YR5T8;c))SaU%e@s4&8X!`s5o*$Uo zbhGA0_crg{J-@wPHE+6yR)YKyzTW{d7hW8 zyWWwTLs)soX&3x?QT$U;oYSct`LufaW4C>!DE{|y4c3=q=Kg)os$#&uum0ZBZxzL& zRYkFFIq%_-?=5{*QCzU9xTTy`Qe1f>OG36^U5wkIeEyktF4egEc+DT#rGN)EUAuH$ zQOsOjEbl6R-}Ql|A1aDBuPFw0P>n_L^$#swUldm>KQ*=l@wC5M`YzAIn83~n?Y}k# z+8AhKppAhx2HF^CW1x+JHU`=lXk(y_fi?!(7-(alje#}>+8AhKppAhx2HF^CW1x+J zHU`=lXk(y_fi?!(7-)fksk(orjt?w+#qd54=iL7N{nsA;^3`ld-T1d&Hzt1f7uT@y zXx~5n;+m=YJ^jgFToYyY)rWMr7k|tHxi5bF2A)^lW}qi)ehJ6ap@X}Rb!#67{k|~Y zpJ4=j9MF4{G>?NlA{vX2dE*mn#*g55+tA-Ql|4xHv^pB=Z~ty%pp5}z;2@ni_?za_ zi2t7@x#Qr4KAk!IGW(~@^yP2h|J}2mSi>=C=(tLI!f;I1Z;q)$$1I&W_Wh^j1;-h> z<~V2Q_`=^VFF2O#H^-*1 z9SOVj{6alPhu1xy+_Aj4QO~HO?)iY;ze~?9Z1Ma~J%32gZfxe^qw+exb*StlITJ)c_l#&6NR;faJ(i&tnz_1~hNwY$>BKpO)u5d-TE z`EX~?AC7**{%4)P&$n0n!>B1w&z|$~^S-?IKR*BNot`=R-*^1(xaTH4{?&KydGWbF zeiQdkzV((jU;dtN?Dgfp`uU!xy=CtFPrvtfk0O5hW%2Qy{`p__+Wrq_-0_yzzw+O9 z{^V|BR^GhiHA}zr#W}CM;;Zi)f8f%Cce?G5KD_HLdvzSb`~UInOL}U3C;h1V%D;QV!LRuI?;rT;S!++;@GtK?ly=U)>(RqMFlo$Nfa8akpLgsV zf6=kv6Nfyp|A*gm{mx(h%l~=BtUvqW*&n+8>(h3=`>FGy~ec7L#@S{nye&>W&|K+=HoO|(4 z&mRM>-tpR<4n1M=%XaG9@k8VP{_q83*1!2Rdw=Ewb9bNr?srZGH{fsM&@b*- zzV@)E#-F-!({|&Y`s(sqf3j$oH~q!LH?Dcb^Ka{W)64=I%-MDOH=X^lGmqctz$*{_ zKaVcle{l5oUI7groBa>RZ}`fb*F3lGee-55J96Cz&V9obhmQZu0aG5|bkryQ$3uI6 z*Ig^?Sr?UxcCEa{>+bW?LPIs-#K!J9o})=b|+u^hU5QcaF5mh z@qt(NuX^Xs@B7rWE1>5$e)dVeL)!jpW1x+JHU`=l_zlFsE&s6P{Y!rXyVM4`je#}> z+8AhKppAhx2HF^CW1x+JHU`=lXk(y_fi?yjFmObRG24b>FZpM0S;P1KLtmWH$5=OS zUiZGQuIcOe@|rV>FRvM+^SzzlT(fA>SJ%8=$9X!Q(!ED!d~?m^XMRm%vg!LYb%3WZQzH8{n>H<=QZzqbI&>J*Z%m>`5%7h!pC>pxX+(%>N@wcubp!ARU7x+ zY2C_iZ@b<1j(z<{PrH5W#{JeE@JCmD^QgZ+^tltiv}np(?>hRM=XX#3!|IH-S@3af3fDH3;*#w`>s0p8&6-d`~0(a zU3<_SFWd8Lw@tX=`_~-&*f#ghJ@TES_SomypPaY0xa8Fr{Nk!Z-uXWcJ7L+n^-Hfi z{`E8eeagp~WuJhyA}%Wix5FQ(1h z^V~D<-}d=`dikL*+il$TFW>Jk-`Mx`E~o7BzQ0*J{oD5)|Nb36yXW6+d)iyx^W<@B z_87c!;i|t`)wjoY4!GjSN6nah@0BZ$*m2e0uRiSDSHEuV;@Jm%|4ZM#`db^v^#1Wj z?pXB8*E}%my@x(N@s3YFK3^dK{;X3vXa<>f2- z^Bar$7gY*0{2bW4`N+>*xYq|BAN$44e2z*JeB zn>X(?)dikZ4Y&X38*6U={x{Z~@JiofPqB9`|NAxCD5|(c=RI^@uQQLY*ZI{tkN?+i zta+KvV|3n2=PsRh)_JX-^Tqq+I+8AhKppAhx2HF^CW1x+JHU`=lXk(y_fi?!(7-(al zje#}>+8AhKppAhx2HF^CW1x+JHU`=l7zqYCH0xwg({U#0V4loWotb}fhR!-=fBwGP z@)q}RY;ph2n)};pPF(YTa2*BrAIe(vrSCtcALsnZZk6ZDyLKs_{v&1q`R^HhV{Uy+ zrqiv?Vs3F-FXIp z7ZexjjiUGqK{Rsw9i-AdWh>oTEh}|*g<4rzLbh7}FILN%TUNq+%1}xA49tOhewl)G zuwPW{C)j)S?q#ZNm1xwT^|q*i`F{zD(@V@Q);nti4R=makD;G=0KV%M7p~J&@OTNR z6;F(9YO9f|TcRm-OxMvNsad49qKApIi(+5NgmynGA-PnoFB^i$T&XWXcHPqzvW{qe zaJ1&T>CAD&_Erw-b$zC;Kcn-2j$3uDMvI+wJg4h%I`6KdTNCrTb$-2$t2Bvll;n!z zh`m%s=iPJ^d+TeIYKUX;Yc0*ARN2Gj^+a7wERK`1>kt(=Zq&8@rb@k(&&PAG+SiEv7NB6mfxNFa;9A_>ritRf0oXRn4 zNm1;nGsl3gPu6*kjy_EdJymCp?xjU>aMzwwIUdpV(K>S+cTrJH(fJr11G?@g_7Ob$ zOnv5Ju8Z~C=~%mrc8m2BxYmwXLht&6b&P&nQQSDHSbvj_L-Zxi&e2k*I{I%eak5@` zS%3e#xqjLDZFG$PUD3SQeLcs+w-l1{-Pdy*@q2}&e)shpx9Pe^=M!}t@}8pDSiEvQ z$L;T>o{6e+;`;k;<$AC6qjY@m_qje=_m5tG-yd*2S@$QeU;jR?r|ABa^%uS$eLrPA z$0l8O6vycPG3&3to$F%YNFAf^5KeTyw4)dpFJ@bz^I9Eu{jZMV3Y|Zw;My@eQ^-=Smeexr(a>ik|EPwhXd_$W$=gV|FDdbV$1~_j0%&6ip zosZOU&VU$P=b2o8UNGp~r{kUnB|zI01D!e^`MXiYsBLwvWBS9ozn$vWamH74J-Qee zrQ`bVk1D!!-d4xGKNLLM7XxE-9QQAyig7w~9I|OtaocU`tBw!qy0}yC>Ud1o<8&Uc z@aYQjwg?!{v8Ll)A7W~T)%8!cO8AFa6Mkv z;|C_5(OGosyqAuL#UvfY%Lm5jxaHi=VrQLSt7Fnd+~0j*w2sHt30j@U=(z1|ow5SE ztDfBl-gPaw+FiKP{da<^-38n315drXQ}%rK0gelA=`0S@`EVT{)b&w1Pt|eUdphNN z>@NK5KG5}k+S+4aM;%9ex>LGt552p`z$2gUEPhzLa)9Hw$0###V4{xO9tZx3104JQ zi2JV^*g?l#x|UWO*j~r&n>vdfbsnSR-v7}34&B%B^v^n_|Mwi&O~*rpY|W@W2RN2> z>AG{zfo*l{yG>UyTIVr3j*}BPPUlzYIAX`H;?+8zq+`;qUBz6Tdv!ebx~^ir&S&a4 zPJ&W&?K#k)b#eZuDM;sdYy09@yx=m;z^wcbu3$~ z`is2=UZ>;sO9hY4hw7Mm6YEL#9ym_NxD6`PvG+iij>&(HPr8p}WS@cOKZJ+6&%jPP zmj90~(S4tRU346BcULi9=U3}^?0Uvk5U#4Td_2hvwb)0j`HmZM$ z@H1uLw)NaUMmpq}fpOPzecV8oj@xeAMly>R-zU4&r+XDbvUl7_0JaD}KoPMD7L2i0IRJrXM+F z=|2=gR+`HPG`E)WODSuOON)cWC(tr@wN9HlYJn)xPZF}gyFEn}GeSbr@Qg|Q#VBRq%RGMYzsSstym}5k1+= z(Y)2#R)s~$>xYY~mXkUXhH`80+LGtt-X;21wGUu5FKhb4Tj&V%k7W?bHCpAIBB2jb zY3`){x}C&J$&TJBophzVOjjZm}>x24_yM)tnU)v+%3MjQl2Ot2sp6^HB)WjJ>a|0H~S}KW0%VM00*u0 z>1=!AJbV98uXPNh9Pn2ejxSdIL@1qrho1 zw24-|;-y}dw6+2^d#4Gv)S7BQH|ITZ=@(ibx(RHW+pj2l3*A!tQRB$q`>(4HpJmJV z!{Y;ID@)0;e`2oyIY3W`23#VV$ml6Ko*q5JG7?q6HQ+1vxNODnHGm>|7c@5|ph4(Ca{}~f zelyxVC&O>mXEE*?;jyPeTlfp`19V5nk)fgQ7wP)kVGVc2i>iO?_1>m>uhi&e9z8B7 zCCDSoo?XC5I%CODJM_A}x{&#*Uzd7^{~36sj_}st7;}$lV9pL~YLAs6I)*n2wNrEo zo{*1LPkrCi!WKAhW8Wp{ob(YKg5-r~*~;VZE@rCaOhN8E84xr_{;3cBTcMft1W>I| z>-HScTOpUZuTzbI?Ma0X3x`Fk%U^PvrX8A?exk2hw`Q9jJaAsAy`VPwuUQ6NGraA{ z5%}!|P3RNnU@lcZ;m+XH1Os`f=wEts zYcSAzqF;2MrJBAbsJ0H%nv!SX-~`LV87y@=X1+@2Hgay+zmywJ(TH_io)Ivf;Al7z zADy;y&6n~kc^j0+TefVWHBIGYxvb9{iUwrzC7AZ5)rW$R6~zguYhA<;A|Uv zv96&&P^`7o+l!+g^gKyaQQWl^yl)NG&@I0zNa0fAM07JH*yJH zv9;*%@Wb+m-ExIbhTnx{h7-Ue*14Voa-aDAmjo}7ZRDvF)e~;e1dVdmtfAme^9c1J z7m$4v#r&F-GMtJa~4)AuQSmX|0CefOXNJ4W1C(Xo@#Hm+(&AL zHb@%qgk{8bA=%yf7f@8|t@fR9gUd=j&SPSa5!k|cToLR>mc%tM=Ht-^%RKPHnIXmD zuZ5*dluWpqDqKw$#AxaZ^v^tebE_6HL_;GHWQ#%X6{ zqZam@^HxLBQ;W$~JCdx9Hw88FkznqDXE+hbBzj2W#Ayr|iALLy;Q=#gJjFa`s*IO@ zyRziHD2xA(R|O~8;x8V~fx6XH(l|~LR`490mUJ-C<|ASOIpU?1|MptI21QNMo7(lIgF6SUGq;w^R@-K=88;v*zu)hzZ)&5{c5aZirdMy zxyOn3CzUvwt=1#6H($N6jtSkK^FMG#$>d)n$HZfBNW{qKNb(Mg#DU?VP-EhFI2s>@ zKB86Y>@rkKZ`8F8SItrTwvN^sYXyz-8(`Hwz2UK5wU#uOfw^eIIySYE@H9bqf_I}t z-Kddm?~5H{UDN^t;AhJtq~OQ2B}Ys&8uDu|&z2usn$w5115hLBla$577FaitMKR`b zjh4LFr%L`orY;bz!$w07Y6#9@yqg>r<7UPZGn*EuZuo<^20Ftpla$+-u30ks>)N=6 z7pcqgi`Pd4(|p$+m;LOJb?e=^YUx1L>K0wjv+-Hg5OFWrGG=5rPnGwkkso?WerdLk z0WtLeJKBiaz#-H{KUHmRM6}VH#@>aFFnvAefV@h~??GzlBkiQQ2+6zSdH7|yBmrA@ zLGKULd(QQ7FZDY2`{$H2hNdB7&>NWzK08^z*Jad>Xx_NYOX9m@#llL!-Oeb(tHxOJ zVTj68tMkiwX^r^}!+;hD+d@z3+N7<Wruexkwr~;W%^~9Jq7{Zluq-#?TJ- zgd*D$@YzoHmbjd)_g%kba+-J=3l#D*UA6NoGE0Hm=wY&Y)|}>}fNtdw&5^4dI%w`5 zS`x|IC+qGU5OP*+ImR-r3!yw3&N<&xij#+10PEmwBsCgi9wUY4EtAxc>YgS)Z=S}V zm}eNhu&zo`i{=sz>mNKp>lS>>Y2pUno2I&BmKFS!G!m`l?;NbRfTY>;4qn}ow`$x+ ze3-I90XgztZ81iCjn_%T+?$|3TY8Jxle2{h=31U12xscw+3FQDC0Pf?^T>mxak?1M zI!Jodd^fAa(|q;0YD>67zsOB6vS9q2BL0M1>N9c3jCnjp(?Z|k)tSpu?$>i5np<|x z3cS==8}nemWxe3hPV1I{jrY+JWH8J{@PPf<7%ecg&jKqeaJ!J&nx`WC^oa9$oNB}XfJtR)l7RG z^wn%>YNrZ;v7G2q9Y>~YW1ryy;}tGLJK1K3#4sjdPQr&kO9l0!r>%N{CZu+7Y-$=h z=p8d3(3$2^{5PKDqg=rusil~cP>0QYJ|2{COquKya3oLK`is_`#qiwFgx7#DU~6z+^Z3B*{pVqs$j$HId%j^4dqO*8)T=w07W7d-&vrj1{(y zQI@NWISDQP((GkeoWQyzc}w?(G2-kWh5?-w9voL#+N9GP{n~0hU=(Re{%h_VLs9G)SRpqGg!WeIyxg!Jscoeknmaz^Cdogc)-(3Ji-z4)f!n`ucnBIJn)Kb?jPbq=lUa$5Z-AW)nk@Iw3a*u zb7G7=F>1_c20hO?4rv2>V8eVuYz*arn0VFW*yeb=W_wtk@q=DS{b!E#mGXkumV89? z5>oN&#X*9%b)QW?`jz|$`b{=6ycv9Hq8g+ihu*%f`O!4UXPPGOIxul#Eg$^nVSwqLjt2Dasd7Dk&$Ec zMVgD3TZG{6R(^hPgy!A1gr&EHiuTabRb4wWh}H`+9enJbP;=xPfH}d%_|vpf z(~{8&4bUnQFedhsUU>6REIYmI*UTY}u}rP>NPawaTE!pyk4A70Z7&=TL#LoYUEY~~ zRU_rdT$w+4-n?Qgt$ zz-^xMb%cQ?&Fiq&QJuSsoyEp+H~A5-9a<64qgrD=-fLAGC0!~g9dLw%5+haHOcA6b zGi;vYVAqwNho-A$wi1rUiC#JV)|Whxa5hI0{cz4%iK4Xn30=Y>!4ZARb96Ly?h&|P?nv9f$gS%c@d(HeFUD6vP( z(DJ(W)UGpm*r{CGYfq`H9XxoCnz;_FD4N&So_l_q)}kbFRl-i51th+)ho8^WO!g_F zDJ&QD;!T-tM&xX7DYqptN*cKr$HvrgfnW&CMNWfA&~yBvwPuKEjS*5ZF}>p34%<&@y3 z;1xVG{Qcks##fMJ%MY3KG$suv5Ph-hp!0O$5h0hZrx^mvoju&G^8nn+h${Imd~n{j zywa}y&d_l{NyLC2FrS;sxpxZ8=n{{kGIJ(rvSwI=qZ2j~f6`~xg`{~oe&2fWk`hup zX7jGOnR<-dW~oK)g9AOsBvHY%_FN9~Tja06hI@&YwKSvYzyfnR^LCgQMV`}IvALhd zD*vP1iS*zV$H5^1%nR%j{M29Np=61$PsW+yfg{ln?17TBbJSQ}D^Xvk=^yjepfA$N z9Fnco{k-69%nP^H)KCTp6V9vfG;82V(&&sNFDSK3;2>WsKwR*aQU>#x%+9Y?wYhUK zVD@+&`$=P&8=x;3aDJm1hV)$&0R>V#+TEYMuEf(9Wvr2iqMj*qeRd1eE-q2-WQ zxR>8aGSDD-TulAWgC~k3smn@wp<#kc^LfuiknG&#aZvL85uwB7ff4HV9yeeYh*K}C zaW8MtyT}2f<*ZYAEAe{hACF~w$BAUU=y#r3hc@&+dZ6!vx0GEZeT~Y3DbHL%>cJ!0 zz_X%Q%L_(K%jji-4t}L9dKf-T?LL&X3m>OEIS|`(O?n~uh;^Aa^li#%C8{Nwzy)bM zEc|3Ljom2;u z4?o%2s_Kdh-ouk%l`zlg1LYH3H>&UUtEt(v%X^XU?hHSNw?keQ*-iU9HS$L2pWt@S zu{EX=#|9+in(A$1;9!xYEY>49w#e77P8U4pMpFn{FxHjUmIfuk5SkKcw9o8O&lIoK zuRTb}V4bd{-_M;TtCJqWx(Yh8K?g`j)jq#h0^p3gEj{gFuE%17SF zK{vxu|9;h@2?)IJUvnK7h!Xby;HZde&@S;N`!Y1YM=M}GxR$8AF;i%*9DbZ5iM(d^ zGq0=L)K8;`j4RHTt?}4ZwUvN!yDQe;S)`hxM3S&-Yyk`ARy*euL+y%XtA zt#5xv#-p(NY~w(L?mivn=gHg9~`} zJhg0W%q}DK#y-;?S#BgfR*0f0fULPDxH;l|drWW%8Zciy8W;=Rba$qk>T%>AxZn7p zvCoXHfg>N{26HE+DH~&Y&9Hio%KWldG4B`(`2C;*QVktB0#?T5LXW;QSi@d4LYwS| zqoBs@hqh1_40D84kGWTUGt(3t**gFa$Pn6xh&smUjUTcX_+v<~`7gMO`8l*4p6a4u z4Cs3r(mPkmZh$Scg}FD`5hzi`tznp{8qp2x)!}@nHJQ`#Sd9>@=M=VMGj4PM|G(=vI}_7SRBGv1lofQM`^JzAtL>IPqUbwGv9 zAa6wNNKfvW5TgKVSQ5)h^wl_wI_9di>X&drexB|a$^KncIb{3=zJ<4efN#b`OP1|e zo8U5F7m6FJ$ulxGLi^xNSr7E8ueMXxGf{$h6dv7==md;_A7d)0gdJoRMx*w_awb0v zPl)=lmq<*{maqlpA&(`26St0@tLs^!xd)?|iHnf5nk9%>za|2y}knbN`CjLG470&QgJ+ zMynewd2DilS`UqCn-j9_n278Qngo9mD?>&L8xD7dT~A&RZCU<+1NbRRoCBR`hkj+; zsc%vxAFXN+o7*!LXf5ocB?3rkDcGY;rA6v3kk zNl3iIzCFzEK119(L)xA%Mex->`-g9o)`!|q1&eKMH=`-@1r~c$1}ShE$0W$HWg8BL zGNuty$t-Q#VPgRb(~jRf0eNjIiXjgjTfln_KBGa)IRwJU&_C zahBet|A8B_qGa0=JdGtxwR}$@bQ!$nEK=gJEsbrnf+yO^wHVZjY*T2&zzEM8qz@zWgrwoQ!qMn2ICzruKJVhY zhA);f>3B1~Z{Gn5+pjZ6*&4t*v}tPxtrCp64mq>TfxK~e6k&mA$vkST8na=-x|xHf z>kj>_dPCM0=tx`8@C=jHsqV4sF)m<^93whsQV~$lZ}S40xpBq`9OM~5K!^?W_{Sva zIIi|Dt&y>WM#nBNvO=G*RF+pND&97WGeZ$pMHYRu=e z!Ws$TK79#1ITzqwQcs;Egs4UblC({%3bL_a)SIU&} z2?x;zoNR2!QJMH=qDTnpV|{K zUh8JAV!wDhS||#}QffnwGSADSSk0EimI4^y81pK0f`hBD z;jbXYSTJ*W^u>6dt#({LekFC;Cb?Iv@%G&+bzf*-l7%!Uz=w6M25h&KJOFI@SU8x$ ztHV~sIzroL>dQ;MQ25|<>P*%G4W0a=3p?P+g}R3fvAYT_Qhs`gpNkvl58a3|(a#}g zrUY*VkJ`tijCH$IJj>} zKchn~(LemjBx&;$oA&8+J$v}j1P_zBch04dt24&!|62YGMaUNz zw>A!0%b`WjQYSJWdGgqCB#mF()xs9yv7m|I0!zWXQeqOHT8l>+Xbv4YqbGqY#XI?! zB>IJSJ{;H0;NAJkLpQzp=$IMF#ZR6I_GH9x> z7kIq(`{7{IK4c`xMyvk)XV7Yn`U5W|$g7&(+6_uu%CNDfPjFpe#=d+tI;M1e%@LJ> zt9shxc`u~TbE4oG>-#EX0R{94okj_`oHLSO8=m~8d|i>b!x@8Idr>CsT1tJI?&7&W9`CZ|A+6HN+R>k?fz5=Oo*b ztV5~|y9bUPA>=q>`~&_XBZW7GZ;hr0(?|xCU0ix{L04xDz$d!d);h(uiJS0*$sJQq zih9rqfv;Y*Nk$M|ZTfP@KASULUcJ$*jg#&PUcgeP%$2_c5S(!4P#@9$)kp(t2At;Q zM(T_Nf8Hl&zOYgC9A>FjYhj*2NAn&uwB~Dmha8CCnKW!W_SX&v_yK8;hR}o5nev*{ zoA6lm5>h`bX*nzh>8%B-2~CT2#>YY{;At@TBfJg6m1=VSGQ|!39f_{!SUiyG*i-Ni zEnxfLRkW_T*Pb|8T4XZk*JQovF}fJb>YP*JJNyCWBErS2W8f>1^bKCKMhW{!AI!Dz zup@QiellgWjZ6YxTD?Z!(TA>;E7#cUVNgqTbzpy~nW?oNCypdiKXRCy@oMbV2}7%t z6+?^|=TM7CDX{(Pz^`$V!w;sMm1vB`fCFm61Mowd+nQ#`Sds+Q^@RB<&qn?x()jvJU*#5HA~h_zuW}af6(LpV;*p zd3BCI|EhgakPEVGP&d33fE8J^{6mo@J`H&USm|pRR~MEyS}>c5U@vLyi1hLuB1|*zW(=n?K`DHf_{tI-V;MywMttl#@QR%O#B$l!w*)$-#(N^W zk*s$s=)!jh>+N_QP6<0y)u>e;!+lS@c!v05x*$Wxr*T~{3GTu(qqoq5J|v7`fg-oo zSTDY9@Eeo`Hd|!ZY9GK@ZSYNs}Qe8zdJSwZ@PXPaci7Bkun>5MjR8*U@zap(auoG!km3giCozMtS z6wff`42Ps9-wLl`UfCi&4mfjvIB1{x6eC2~6I*a=4Mz|;gduUxBUQf)JXdd5wF&q% z{_NjGJ4rtQBYh&~!4?8RYJ+)lCzjkeM`f_?aJ_SH`2FnX9NuYn`IPxlRODY!BJB=j?1ad}3zylPqG=o<( z4X`##Em;FB3jHJh)GrDjqaA4uR_&Jw7i6Y_6TmgL(QSB>3IdB_xCFQA%HDL1h!p+UOf8LzG3U38J zf^lzfM9vnDBLl=;*UQ)(*mHElJuGm@CErs!rR)JvgZDI2<`~Dbuan*g_~YxT(Ae2O zkBQ}+5VVJmu@VSqf&OB_5cb7&IFlPt_*b+BuJbsK->lQaa-vVbXUbi`Ta4VAw*v~a zJ9E^DYAg?p+#Ogcig!uBrab3~iutFjjj$yiU(B^>z?s8jOh8xSL43SefzV9PXu&p` z(g~JZUL-8!YS1$5nt^Q$kHsETBTPxh2EM>zz5`W2l;@bL+KLu(If&lGZ2y>7n9tP> zn_HD6;|?te)`1l)1_UwB>=e{KC<26&rO~s(K9zzc9{X zdsc-F40V zq9o7pZw*KEmpPX1FE{}!9t%xAB|6Jl&hRA{i8AmGn1#RX|JhFh*WTlR`{+Syld#0R z3w7%D2VtM)Y2{OAD8g5;Wl!JD=6=u(dgGUdG{!sCGW;?ez)NfZcSSBD!JpnveMr8` zNMOg8U}gjL=YG~zE$N2j;v+aKhz>}&=UJ=<3@%2V@wfAx*-QnzW+)S}dC-^~Wsly1 zifN1{Ur*6&sgQp#3stwyMTPK74rZp_!Jau6!n;IVK-K6kB|Vk$OpVqu!4N&E?$O<> zSCZx?TA}?acYwQGU)6bNjk>ZLU*tFps2)<^`-B1djs0I-e&cM3{!hI`iu_F==o`|I z^sV{X<0)vPutnU@dr^fySta<*@<#d8E-esKCy6pfa(JR210@Yl7o3zQW1eT4svaIW zr6^U+;<)}QJZTRXx7Ay63B2vz;fKJ{P^?;8a0m5S|D?KN7DT{*R|!8pbNvkQW?V)T z8df9ZKee%Sc;TsPJzIm*-}5?6J-S$j$959Lk)^P&SjBp^9oj{kIZjWQ%JreS*>$1a z@nvlN9o?iA^i`VVBYO!e(DvdoPlGO`E^wN+0Vc@~q5Zu^*rkUE=Hn1HVw6njvUCByE*gZd=0b?xp1EY!!t^ri`{fiRqyR3n$w~b zdJN6&J$I^+c%vV0>thcTIYo0M4Fsmb4>i2aGa|yaHTEEBv^sh;V zMz)KFu19!Bb|Q~DU)q@`jjOlnTE!d6-^F(OUFSaX_K?KnKZG1L)<7$cAQJqx*{xf$ zj={1b+eAE7UO+4P333jXLBsO}O=@G7WMQH1R&(Zg)KbU4Y2jhgyY&w?^rQr*2L zrwBlnRA<+&!TGfgj)M5q2s~Kmg@jcbVERMf2lKC?N2eg zEK9bQw~*JmsM`Ao*!LZopY5D$%#+1uHa37PwT8Sk$M6ApQQTd^4oo=?V_b(Bf}zXo z(_0G|^COK2T0vTElTmm_Z}5fnr`rr@AFG9RZpq)VH|dLkj|@Fg9z5pAFk~S`#^ws= zQG;J|582Y?9m&uWDZ0u1t}4ezzaB38b)q0Z4rfZ@pkURq8`oHK#{Ga4-C@fRdZSJo zg^V}r-SA`UdggkoxtluaG~QBl9N!!4Q4iu7*$wn;tO&9sS9@0nd7~E0^=R0MYAd!5 zUU$@}FT96Bk2oy64)60o4gviad=uVJDiyvs{Yh5cIuos&N?PYy4)Yu$qeP}!^6Yb) zk1g$%esB*Bxh-3);j6ae2$k`slm&Zwh==k~>po!}Uw1*N>Cp>Stmh-hVISy2bzD5R zz5hMNxR2|=Kg{Eh_=a%aKj;;`g2&;D{OiKbxiJ?i=2(Orr9E&g2RSWM1er3h-rFeN zuH%ztPsI8fd5`zD+$yDZ`&Lx`zB!>pgC!sSQ?u*w?mqMJ`JNc$-x0S>CG z^-U|wXkCq9nf{@H^D&>v!W$78-kKwuy0_^+9!u)a?Ru}Lgo*cZ8*8r^4-LP-Ga{^2 zoZGEtGSLy#PI)v0J%f7~Z$%&2Z*{*Yli+OTy@2l4matW8sAf3AgZgzqa zSd;I7q&w0;`s?giZndK?!SPWKxD6~7%H4SGC|&`4>lVPe_e+5q9wVeh_%9;C*0^6k zjQf%H6TX52!j5{bM}8+P2XMCX*`rtYyx{hU_~9?So1|r0`6XbX>OUk678W(Ip0Zrc zy$N`q5WKV1dM-hy$f~BSZ;zxf*0Cc;&jyr@A4kmfOW(0 zB+ZE=nAY{4EPf>!V7}zWyd!9x!|DhLD`7oVwUNt*`XAIS1V<}9X`aBdMpH)aI&cI| z@S9S0+%Yw|L*h81+dS%w7Sp(rIe6>i8eqgTQ5+-Wc?{)Y8tEc4uqkP!pF$-gSOuANNNxH#;TxG8QF_@LWZ)M z0rWh%)W>P!+>7-#89-`q1}$`?^-MQzcn==N&Ju|b#bELAU~<3v#*%NV5xeyZv7WJM@3Sf&F2fVk1TIhd!7>xt5SU|) zOvIjz5_I3N{EU>JU5?1Yd*|Wx8=ia=C~57mm5o@*>oMHXH{+dg4|GV~$Ved!H`1+F zP*@8h4W4C%-o)=o`YC7{7=%udErwRP&mLTIq1w7qx-ROUr&3$WDWh8qN#xE)mP7u} z@6+@WQgCsKETsJrxF$ulX(TA-|A+imy%*wHbO-p%<>br~cd4B@Ws8xe=qc$7wt#{8 z4)`MZ>?tVHs&0HC=B~&4Gs^bSOaVXML=Gpmz>yfT$uDxsws$d`Iqv2?uZI9z!2EFM zU#7_}P8)8S2xpxRXNcVg;BtHHlk_$GR0YhxFJF?kjt0uLAi@IxG1d z@J{kaA_nI!Bhcu@#98RisIxHw4jt#L2^c3Ti~68%?hQsh3yGyvv+tc^cXYA6<>;N` zwA{8grNql_&CP3pJ`I2{Feq>x&3E(=Q$IyzA)_31ISQ6J|S zYOn{yF$RoY!Pi8?*b?L#KG_Ah7)t|nkWAjAztm^><`R$QANInt9&FSTjecg5mb(7IhoP72dlm9={|lB6TN2NbB+3fi1D5ic1p%=m z4LAjSR`n9=o9*v5dveswIH`FewG@yS#a%BLc4XEXG(`ecZA3OIviyyut5WQUc1v;} zkiPKPwrZueq%$LTgZ^LzjX4!vN&K5f=mAYpkh^(dIx!?6G;-r=!FZm>-PTD#y{d0u z3*?OSq#;OC?!tRES`w<+4tOHzRU{gXmw(HKxf4CLyk>gkV~fuAW0MoFU@>drzG2Tej_zIXF;EhPw#yTe$twc);?j< z;?i4%7DJ!Bgs2 zV+?`zz{92#T$y4f^2l(i;ZFE_Zdg9h&FHhO&5sYs3%M}W$lUt71+E8Ph;a;hZ9g@^ zevlwU9?Y3_@Ayerkg8U(4A7UP@vEbJ2}ilUO8q{f!{aev1a770q1(YedXl{`47qnM zg+Atj`ms#Qa-+q-YF7I~o$x|FJGMH$0FKlAcW^aZ5Zdk%6#|K=oK~CyHKTiunwt9n zy=-fPa@AG>N`K{p_n}+b8Qyc?XRH23oOwSM%U~66@E`HovLW2MR_In|6N5T;izn;a zfvbt#iJqVuQ6axP%gcE`BmfL~eF%O5zk-VbZ;bThBi8nH0xyh{RO4skEtj@{m3ZL4 z5>~td`}&SB(6YqKL;|5PkdivsTg!g4Mgo&)l6quW!p94*cTGr==ojc1Ef5EKP7T(vR%IDLMY?xd-k~BTFe0SQH;r zz38;C+mRuwgByD2WW1BK9k=GEp0nmVAcjdBlLU z);O}*42`A4&^7yc$rd*2r^Xl>ern9ypmFo4t08wYM58)5>p)^ouijTZYeh!3&4# z4BVs{P<1s{c@GRb2UXS7b^LYJFdv|K!fUku4%Em|vsJKmLwYSc=I_W5_zlOoDK{3i zC;Bqi!#r3|1s^&gF08Lk!LK<12WlJLV zAv{4cIgyR7S^~<$4>@KN#nIx7+1N|MvVc(zavRuI=bzvneCfQ+x;}wxb6QnT!FSk! zn73jcLHF1bvv-)XItc=B3)R^bC-s--#G)y$5g5z;>iW2sdf$OwiMqGfAJ|UVg*9)SSx-_jr>MiB@^GtyybVeZ{J6 zZ-yfmpr+N0BCb`yVkpG>UGZwekFcM<%6$IK3!jnt{rA_>D)3WUcL*lOfvb7Nx* z$x;=?oL@OVy$}vULpw**2qSts=VN9s;Ju_7^(p$tMk!l_lVi5y55u`dxA&dIb7a-YHK~1B#jwgN(!Avv~~XQ z>Tk3%F%vy%hKMhs1?C-hzzg)fb>E^7^vZJ7s&1e+9U8gZF}`_|*Z^7)!`Pa@6_y$E zW3&{I<~-jT&SYuwe&@Ju9_LQko6v5C)U5!eAvENMnS2=$0W)tx&fyVeI63xFT<20Yl0Mpg)*D#e4XOhG)*uS5~os z;4j7N=A?Sg4x1QROK_FOlF()NacFnjmumS&{valvT}o0l4{B}$s-&~vTeuhxhWk1E zAzk)91Gd0~^YpFT0cO6Mdf>2DrH#ntC2t|TDf;KT-v7GM7r_=bX9>;!2_|G?OECGX zyY?Zm*J#_AmuyZBNlvgt?OUtc-==+Wbzij=xEE-5qG{r-`RZL?@uuQz%}t!4Rdmej zo2|JleVS!CzvL6R_l5QA)~&Q%7uni}Mqhcgk9n%P_PZ`dg{q#ZXwNqr?-9(hND zvla_)DCU89RkLLiZYBy04R3rA)#B+Pf2_Txlx=5YdCN-L^T*h-ML-^tC*;@~U5lPD z{4sumuEsW|-Bha)UVSv@I{bgYkA-4CN#+SzQ;_>Zo4Z^{YjsQ~B&R6&zD-ZrTOdzf zXY(AM(Al(7wLW0YPb1q5bhiGH|B2njQ_jmU^fmabp4Vyp2tM(7sKcW;&IdL^&`2Zr zDIl?(ZJfVU)!{%(onYPZcSMHvp{mcT+UUjP#Get)XO}c;wgbkRbNh`Hv79i{M>ZB% zs}kn7zy@$foI$zJuI7pOK1j?h3(2hWTpOum-4UZ={7ODmnnhV>fx)6FMGVR8bJMiy zFC>d+$s|UJuezt!oL`7|799uuh|`cPGGow;0kyl<$S*KIqGUZ=mQ*)yh3(-rYQjX_R&qcgZUoOulRmEx*+#UB3g`b6#HbBp|_M}L-N)Y zXQ{P1-!!5K`VW5ubpw)L2ORKEa2}juZV2quLE(Ky`UIanH>45m6_|lrw>;0JIsO<4 zE)5wP63!2tIT0%y9dJwop7g;(3MSImNb11_+#a4|k1S_MUGNOr9!Ww+ zM1IBNL-;nqJGswksn17lqOPRfk_Q;EeXJk1^hHTL4dj$vq?iNm5rjs_17k(;g<+WB zNoejfc*=e8$VTM7w-;oclllYA>vkv#s~r4|CBAAL##>r4l{y{sFT~NSf_1IBLcMSPhRi)o87SmI#ST zexCI??ZZped_uKv2`*y&7YbK%?P-OKZFazBX>aZC*Y)sM4O_}I{wiT(T(b3k6+NN= z))$?8t|Z#g4iXAaqC4TooF^A=vA&t&LB2kSej%nfP&{{8d5yiY45K077o;rNVt79= z`qJ7!YhX*m%Gv|FLcJgkiZ;**t?{zue$Y4Y6A_E~jC^_;QNiDMDfQ=CDq#t{V%4G- zT4VAO+KH8nXbxh^sFmEoi-p}$pI7pwRee#jzk&5)>o#{n$3}>^Rxg?Z4U0AQ80pBk zq$p->5f_d1w!-Mv=+rBy3{lJ|L36@q;4^Y0jkL#~v0X#rMiQq+jrMDD`%T8m5j>fI zunQ4Q*n0@eT#d`CQFJ~Q_K@I9{!DIZ!`A0EsLtkwW%T!1BlZP)dW+nFC&y^jjCa6l z*+E_@8T|sc^vzxj+>f?0ZzRbJuAR`8j}Zei(U+r;h^Fu$9H*g6U3++srj6UTH%8o$ za(Vg4oWIhNdK4ocj;N}wME%$c@Iedq1@J=c&pLMSczb9Md^n(VcHCn!X_OQ#iEf7G z)QIBTCh{*`8c=3=;hF7LerDCVA9kpKOy-)LO-Wz0H()a&9E> z5_mTq7nJgZO{?zR9x(7097V=r~P2^x3*1V|$8z&rmk{Y~AbCJ-!KhwvIE(E1q!VSyT5R=5s*x&BM_v*dV_11i~K2vba76&jYF=GgVO=^FkD8NWf`leZ~$Ll?DXleNm zPUQ@K!E?TMZL%_^v9&n)JD0EK`KT9NhAbz34hc(78f7?q+mx4Tj?#i+x3uJ&$SE{( zOYBGM^Ao;K`K+lQi@aR z`jRA(`WQp8cLOx$GTS=jG|}6TgCDpUsR@l?uL@fDy`V~t#ncDalU8u$_9ve!(k$`7 zjl~3;u@VaWL)%mf8!5$HwX3Eb#Q|hMH zIVR7B4PPg`P4afJ$|rP1wQuIe9+l(WnE#XfH%ddf&`;o~(RZPA{kWF3bq+&l(#S4Z zQd9mmq+{R(>*C;H^CTlIv_VeYo-(-2Awi>f)Gu(*Tt1cI?U0#(y(&9Zy|`BJ_lb{@ zgTzVZ8Dj;^Hpd6}735m+juW2I#vvtv!8$q?1vV_&O&Ps3s+D>KPbVKb=MJ)=rVIba zJ`VVkAqCbZ=5VwqyRBM=t#g8k|NY?ES30-eHw?Ts+IT!stPW8r)FdhaTXp#do??|< zhMWvmx4N3G>IG5K(q>-qjt$gN^^u#i*45kslH1%`D=5*=)iL=zH<9x$*hsq+kQMNn z8DM7K8G0vSgWfobbVlFf8_iy~t(9#{(%Q-Y3b<2!iG%AQsPiGk6vE`zeC_at0>+DyKdo)G( zgZ7icMxpP_wbqVA;b9witIB=0+F=8$GXb}>?<_Uhi)364&af?UOkPJB=L(!xGWTP9 zQXS}~#`PVEL-Vn~I^4i-kvRyx7CJjw31g~%NJrZfai)Uk(^6TDLF#xQG+iz;buiVv z8?aURCbCjki7NLrb7&#$vSmIQdAnQZ%H_YpwnoysUtN16llPZ`%iu55lKc%8+@rjB z4vl+vKPg<|`{SMAU7p54tGk*M)5hC>!+yGKe>03lA(I z7ibG$I&cUov_3vN(GYK89qZ;FZ%rN|TT++P3Qn{xiCIF19V^Kwh5eJrBZd?f`eJCu zPz350LdQnWEkhA=ys-Ds9rQj~teC@L+fC%`tR|R=IaJ6qzXJl>1vGwD?qiKv?0Sqg zMkB`DZriYCk1_RuZ+nH!Nce@4_DX^a>Uasru?J8-vbZU~zp=*XB^?!P%p8|XKoI}$F4XVCVPSG=l>ab;} z7G&2pG^EC!AY53r|IJz^!A8A3B^DXcpk#`uLPzIWPpDxT4oSoocsB>~Kv8pV*5_&o zWCXf9SBXW8-aBq_KF1zU;^-r`P@j7XHSkRX0_Q6G)Q+E%O-(wj*>6pm-KZhgyN!J~ zQJKk8${eh*k3VXj1BbCM_DDUxKuI z>4?zca8UU7sSd^*=IKe&6zI*gzASVWZxj3E?GqbcDYfrNg9D*{R7#y$TYz3X+@=XJ%&!qaX^DQ4^fwU<5`Sbv}&7 zEAL_O!2QDSl}-4VS3(Jw&J(|4H)rbX*t43!t;0yZr*EQjUEBm-BBI?A^mW|py~2Vr zshwPp2HyLJv_sg4W$IB#f3kj!Jld!|=z+gYA3O^^;d{6)=e$C{lWaBCn`{96!o!MO zd=C58+c;Bg%+$L`4Kb=UeQ1wnIYq9?ZJ~ka32)-{U{{^zN^&%%=ULP&4m zM#GF2GG*;?JF5sb@VsJ#+gh^9k=KPiPHKjjI?num@=S zN-t?IMW6|KmkSPQhAMg&S_jJ-(&Kowx5TA$L*O%zyjIY2-C_&}D?r`=ZVBGXGp%rddz0t~JsLA@;pbqpa;~Br z^s$|570_8 z2dp>hW~4CBqUAam8s$4?ZwZ>`ap4n(^?8qn}bdKYN!DwEDF5t8= zlbdJ(z@sWGI@ zBm2NdJzyv-BBRD=P-i*tR;#P(sI}SlTECO`rY?GH8{knJqz8KuD~QsFb68Q22ZjXY zQrzsvGbdxVTFH3`IYMulpOH>}rM_3CE9XYbciMs5u;Y0Xf1r<@p+g3laTfM;Qi%oQ z2|k#o7W-7Dy02Vc1&ZKNN}pEFO2g+5z3Yro$UX1_i$_b*2-O~$W>G4|>b5(!(#`q9 zyIbg>sAqwoVcqY7vL`WK5HMBSWG)HZR~_R4PAs~mB6!u%(;x7NhYM}$^<&OugtY28qj(a`Zh!(6HZ zmwDc%&O4~Kf@DFP&?Hzi`jPZ{o@3d1eT}|&sxOUtdA(VW+5|@DiR?6HHHw0m{l&FudxTV{IUKfV2@*7P>=sOa7fasp->hd6F3>fO z5#XE{)yOkN`G|k;C2?hvA8;L*1FF^94bkqViM z9BVD3ycRaoYgDNLpA^ZcFbjUiU#pCuqBy>x8M`+(LTsiw^)60=r7nf zYlv727a$CJ#P|9)na48KleFmfzc!v{brZ^==jG+s#@qeWUU;-FdS-lDzKRtfr(}Bk zOwNiV@FZeaXXR)owlo&3qm_x)G(E&NhysQ7#y3hQ<`1_~VUFRPg z8P&yjh82~2D_z(mSrv0w9qT!d~wi;H+MS8lg$bpU(Yipsj>J)B#g}=Ve$)RB{%E5bRTp~Y7FR5^4Z<4 z{Pn|``c5Afac9h8>KnuV@?`6hnH?=)C^LaWa^0wg2%fU|D`?1HZI^ zU)sPgZGd%z%MpJ-(xX~}3?#XDqCC%;zaziI;neZwVX1(Ka`|3_xhG?^0>#}CVQvK- z$&wPk=l81DovaCZI3Wg2M6qOgpgo!4X&NdI`o+WgVq1IfdvfIEW`1S~<}>U$b3Wn{ zr?ALJ`)VfdQM2T{pu+5= zSG}xyk_A!KCErL-Y2Nvk+*A(hyK<7xv-^Y0x9o=GN#PJRrm3S#wTvckilB{tw^o zkG7|W%=Rmdk@T|s-Jt8vcxT(|E~(n{tvx(+zgPppDyT?meTNL$GqRz*_D6+_=)~NH zdCjiN=8iORYR1~P5stofh9C3)a0bWNZS0!$R#t7c-|M6GP{YtQ)Ou3gg`3)?5juW0 z=y+q@ol&ba^ls@;Zg&O;7g7@(QI^w7S{ZiG$3^Q%65D_$YOYw26wNmo5?L8iB(I&R> zjbR%XtB$u%5GSm}wEz&vwG1^+)MDKWi<j)I)+{k-Z#(z8f#??Y%4;KEy zN^hOVHK&+wwZ>-6cDmgjVGPk9%t#g_Mle&^`}Uch-7sd~*Bt9G2h=yZpJDHI$ga!3 zc~?9ln(6s-cQkW-Z^-D*Dx2hZYSdhccYE*8pWR2gM=)ooJ6!g8Y9Zp~h_0a7QA7=G zUwz*(ZFsBkO)6(JIwvI&{*_fjQVWXp4rKK#gH-tW*T;Y2U61eP;9H*%9n48UICvBX zf--(v0Dd#u3P^dA{S`-6YoPt3gHfdD+DHBKGsNPS<>x2-;X0e!d&Aa8 z*&Bkz)6vE*pa|Q*Ux(gWR3AastdYt#;#zDRl>E8JL^xcOSOTBw{ z@WL&X8G{=t@2qp>{pZilo%gx*lG!iDXnYS7_aSnR;_VyKk@+)T-mg0xInQ}o26x76 zA0M;leQt7Or^Utid(m)Sj@vODD{^2@>*@KC`rYv#_eOH_WJ&a5rHdOOkvq>g;-m4i z9p5p2GH5z)i;srw?9<>4?X&Fo_$Jr8L$a5{$IQ(1y*WOf@;a&p-i=rN%E;s1N? zj?Rz#hf)z3G$kVd(b=(-ES}nq8!kagqtcO2M;6H>H zc&#o=AL-YHgPu`D8+kgs^Q@nNK-Gmh=7Xm}R==BzES#G(*c-(yRq(Kl$6MZr_{u6; zcF*;lF*4CU*&z{pFXyTua=Qfktc{~e8VY+>MdkICF)I0V?V_w5&qtjZErG5F-&k>X z&_zvuG*W4*_ZY52_==_5N(eurzNwg=j*Qk3uTodfjOXsGv}KPfeKI9SWooto-frI$ zC+@!QI{%8bRPHnHMd+Q8)bD1U*$d$L0kp-p8!`^N`_kt^TX0D9*80-ntJU_31p5IUXslC@4D%;V9i7372mHk6EY z)>>JA=riXCX3gh#9PgOo^5O5F!0O;1T}9C|dDga5g@>^!%}n5LWH4LODW0?-)~rN9U-M$iT1wgd`5uL z^art(8Rz}jb2ayg)iT&)?l)%g{I;e=|Hm{|KP^&NMt)R1!|W4h)I!Fp(TSz*e#b_t zZutI58`%5C)*6@#DH^5l(dZ!A(Uw2_153c(tSh%GX!9CK@d}-H1_#@`fLT+`;a~gC ztu_<{DXk~g^!qi^<5l*dj zpH*x!GBca9kCOFgR>X2d{Ou@?&2j~cdZn**XnpdBjy&rEb=B3_+gI)0-exe7FcxPG zj;F{^&ui*LDYK$u-srZQ{xiBzO%vRG~CJ^WEVfSgB)B@ou#goC0?A%d-ikA(b;Zg*v5NdYHbigga`n+; zi+Q{GtIFohbC87STVHGn{Ss6>TGkhnNks|Dj|Gf+oeLRYz2930*={mpbp8TVpkTUdV>^d~W=8=Azdv@vwQ! zc?9JmmIeo$EpN}`AE9+5arww{pbpL|9yGW^)m$X{O(!epU%B2EC%RP-6R@Fh(LYP% znD6S6YiGe)FV?rq&i46}@hvl)qee@P9c?9QrmXg{@;cdX{(pa1M)sW{{6)aPituh}U*axyxr@O1v0 zdXVMic+UM^bcXODH6!Qys)Ojh?b5B@#yiRcFfM*B^2~KH0f7=EyCx zAYaA>nS;vE{oEJ<2`Cw;=BZ@sQ14C{=zfMm({FAe`vU*2yE*m9 z2Fa}8eQAb9%n~YL>@B6(*B&=|2cMq!>g~CmVNXa%BSE2N*jux>8*sZEKr9U4CQb`J7M9dx+`5o4qG~re3W0 z8$Qy9gTKo$FH(k9EZ7<8z4057IP%)kNiJuce*Nkxx%N3%l)m)PvzFys&2H={nZ?tu zdTz{SC(3WUWL$U3m_fO+;P}`LyqOdAyJV;jh|PRrR>%xMs#bDreIk6S`tqCfxsRZsfw@$5u5b&ocb zaalay2yDmO8c(0#jxK)s?3fL_#C!C`k}^*z?BjTVHRDvA;a@PnQ`=tH-^yEPSY+{i^j)@6a|r z;peB(wz@pE0wG8AYUlCM=Jtka(c1M4ECP==K3W?cb$#Qv$g0+=kf7)w+Pl^R+DBd= ze#hh$O`cmVN=N9uFSmbM<#uQ24$CCh13B0$V=oQV@B5?G1a`wGC4*Z-KV%$<)U(H+ z&3YDF>Ccv(;W@{2Fv6A&V^2n_TqlujYom-&HidP9%h;mx(ou39lq%R!c&98koi1ZF zGQukTX5YCtaQ(MhTql!o2V#q&dO#@K?@+0%-@GGvd3@w2kLe>9gHP~0_i7?7@~k7D zXT@vVHNl<=wO9d*e;`Ms2<8(1)4MB9kp6i|p~uTHBG}8*b57?eG*AcYK}YB{9Q0dZ z_j&l%ei&gs6KmW4jxl2o84gr`}?DBCfjec{>ZU?Lt(8$)Bhub$A+ajx;%=w z>9}Hl`yB$Wx4Dr5`#L~9F!$}7)gB7pe|LBMzjx#zb9-dlYIUD+-x<7|e%=~5GI`Ye z^th@*zm;(+pCI0xfyK{30kE3vjLe)mJ*c=WoQ-~C)H{q(D{T+PGh`b?E+U0>#y+kQ zQBp5&d*0~@C*KY_u_p{G*Mh4$=^4$k{Pdc9HMP`CQ@Z(emmsraLr*Oq92oxo@xLD) z5_o;xi?H8ahs-L*oXT}Y=*ra7&6sB>8UNz3csVtD{D_(==Zxcjy#s*jJ*ny{{b{TUS;qQs<|m6mL3S ze<)k)9SO8gb&1w1Vs3K?E0$UhiJYxV!zFu|`Q9aDbj$~PT&TQ>{P+OlYNft)it@~N z)cKt4a$Z{!shNqp8mMw3v(RjP4pz-J0j1r~Z;f}s2ljL445^fx1wln2H}NP>)v7Jr zfh1L-&ynGXyDdLb5$c!af2}eJdT-+13q$r#4;r5x`5Uu?-FCx@?|)hO=3LRO@f_bt=8d`0 zi585so*p=zTYgXBh6tZ;Mut*)@SK>!UO?Zc*DQjcsgU^>JfXMWPbiuJT=(`q+cQcL zi5Q(2Mtrx{DxT?6T&@`{&*Xc(``UldmKi|y+0(ac8NrLbp23_(pnfB3&6bfXLoYO} zuGg~sVy!7c?Tdq#c~A14mA+f6#&cV^y30FVzFFfnYap8=*3UUaVk&&YnUP2Ypn_9p z)~7Qq>G>xL$D+N%oSIL&jJ#^S=@boG2=$@$t#z7OzHapJajx5E4+Kclfz+QkQ| z+saRloRtLXTx^}nEjUZ;jQxfCneJHSe(&m$JtF($g6V%{#fA#)NGr4L647U_Q^ED9 zwYM{<-gZnG$2<$VO21TnP^oRvv8d0$1G?E?xcb}UT3}@i9ogNdcG|ACd`0@pLd|Cc zGTw+!U@*C-c_$csYL)3oTd@Lr;}E;P@qA;I$RZUI>F{V@ZUiRal{qVItYgMUydt|c2m?sKJaJU%pI z-NsQcGMxtFoI8As>rh!U@zY)cbHqBvhQA*1%Dm1Pp4}D9MK8!zs8}0Z*0%!W+h^&} zbo9WI*iT2SNq;9fLXBUXy64Tz4Gaml(ebBROr0%Pd*^x9RbCyl)xOaq3#dL=#_m0X zqp|1x*!@hxEM4*uBMBIfSI?2J=*rB?^37}bx^8Ybj!&b5$D!eIWxJibBwMS0f4Sn` zah;NH{D_>4ZulqF4tpe69{^YGtUilOkq5aR{=p~r#=o^r!e1V&vX9-;t(>*wx;Ge* zc#PcQJs^WS5P*kB{zN9`>UbnN@)y$!S2; zqP@l-!e!kP+TkX#U@zHN-nScO(o^Z@woaX0ww`ruxNs+{LfAYKlVW8HFWO|H5y&~q z^{AVi9tflGU&jzeAg)0{;owbZ)(+4QQjY$u?YMykyZXwI9TKDiP|rLVpBa@v8 z1^fKS@sayiSKl|TLw~K);h*XgEKOxwKEnRl%PaJrxf4I|X>E;>u*)u=%7{?O0Xq zm*6ixjs0T-*zV`X9Pz_%H9C_cXf1lsQQk+K+n%jE$^rGhL}*XPXT2u1cIf!mVS~5V z{Drs38nL>L$k;#hv+`%gjnuF@caMB|>>xrGdsK|Puv)Cwn8y7GWc>P-xy<$~!hS67 zEAd1W+SQ}|U+6V!LWATG(3O48$lqPh@jo!-#g(6&a@_I*j%H6&R-eFNq=Ge&YlzN0 zDpZu$Gr?^%%gzcjsmya4v&bW3i`=1BBgLY=e1$JcFSf^A8GSFiSr5_tvV3*u{$jit zJr*J#StN44dE|y(eWFM1$c@-l(Hn1rdUz@t(ru|uMn%EI1}m#`@iYC9$N;^nKW&Em z6ATbTv7m1I$6VNtPA>_{-2>%%a`Z6s7^(lKA@j@e#_4D{`{(zRi7HpC6 z&`?zu(%vnDr+R0Ftf_M$P5WMA9}|m=W|*PuF1d$VtO&N9wP=h?o*FWVCOg(tl}LOe zBVaZ->U+85yKH#h-<;{(`^PrdW;WI**sDf1pK3Jg_^x4*X}Slj*V;!}*>%Z7RJ}lV@M_^zl`-sf~L;8Jp zJvNx#gQ@meHKjKn4QQE2i-?Wg^KUqg>4-*pFCf$}LoP+Xyv1@V8XwgIwf5ZS!VXFbSWO{)Xgxh|au0eux7WAleKW-1 zFRwk5AX2afJNvUC)mqJZ`3csw-x->tHT~DU2cSUT^HbGBp2iw#@4XzOM@|l6U*WNM z!`kpNyDMnxCg*uXGCECLnvf@2!4mmb>zLPgg5u`L#>d#jKM#Anxs2m^$2ONJhYX3s z&SZQ`_eA>4VZeKyBo{-XW|*_b5^w_r>kGahm=K2Od^Jm(E~KmBH>#_ALgENK)C=CNc5*fGdWgbtrbR%u-hdaZt$ zd%k0(o@W-T@0pK2ccfz6?h;9c&kR;@?h_)W6q+Q{&dw0#obebGB7Xq2Q`c@YMDiLw zr8{m%5b0w-i&aMSo-LJzmxX+{eRugVh18f=;<6T#0G zKE~G0+;?I}hM%o3@wKmvK7ZM2aCGciAJyg)>pEK~bM+i=jGs{#*Bkf8^Y_Qx^i8lm zdjfEW&8W@NZjc|V#NMHEwi{~L?1Oz_{fwFW?lyEA9a4A96e7uzMrDuBjK9w7zC209 z1m*T)DBpTNJAk7V_K{y)z1Q#XI^{3s{O}5OP^}Nc4eLI1y!mWjpQvNyTI(2CHu9^R z*kS=_x+vQ3wyC;4y!_;fmw4km!f6cH^MsAOIeN(mj4;}BKTWjl1!u)0e6Yv!&X}K? zCEcl`ycLhd?p!rf?$-U#k4BP*+x?^xC+c^64V`E~UrtpVJ*rNm@P|!mXL7jT zhZAm=<;f==HCGH8dFmX=zn9ku?v6d*=;-lQ2mDUHixrz@>#P0(_Jg$qA9}Z_at1t` z{06MW*FZ7yKXLE8{elq8&S-N!8*3&r{OsC!0?&g{)gLb0|Epm?Z44_=k~kd^L|AaxlCl+&K<7EOO!d|rR#Dkrs}z@cPYdbZ#~=TkQQ+^F}K0{`%W*Du)XnocOg*8A{o!d3Q*O6|L%k&v6Mm!w&HB z{fT(>Ki8#Q|9jpu_jj-KHSa&)_p0J0Gx{neX9s2GN~3qNsB;Rdtxn0?=yqen=>w2M zlTXDjQlZD%(>vSeWfgIugpL{UkXh|eW6S)OYA?3K%3{BXijkwC#DzTDbF+Mt<#sPs zB)csC)cCmWj;GA9T~B|o`c3w8T*o!OHs4~f&G|a_TK_2tcL^dpcQq-0dMum)I_A|( zNgSV%r)nlG=Tr`Ulev%ZSsy#E(Jgk=T+%e_zxN};?Jt^M-%Vc6>u<~Fd8r)ndAITT z>>BUzRXMg!nGs8R68Am96q$W*jOE(uO-5pj^iAxS%pJqpeZL>gnzZs1um&toG!;px zT0Bqp(Yt3lRG@f2kp`4x9D8iuUgnti5x$It zcdTR`;9~GbOzc%zVJ)=vyqHm{0x~J-%IkVxJ{YPF>lq_J-xZQ*wzr8+*YnLTQd_wnbc?FV|J^5) zllQT&PmOW7$LjdJ==~uz_Diu|WM+0-K3X7DSXrZutsk0 z^T>e?Q7}7|5%DozLROYKr8?*M3l_%?QTl;a$McFKyUXcxRNaX#kP~?d$UuB&6f+U5 zi>{fttW=hdfoem(v6gn8h^po;DAx* ze#Sg6^4wF1$HcObr+CpN8e9Ej^QT0S%6H>Ky|2N@;76~*LUGm7{l3+$XX>|%V|3CA z?+o2pRnF1=a>#=>K)iV*Z11J<3D#M+lg<04oy%I3emyoQGFnCG&q%%7|2$75>0i}4 ze@hi}B-fs2Zb#em&)pK+Eb(GcTlBt{dF9T5%QXsaH58d{b^T!Itj>J?+tjfAukanj z3~u|q!RIPXaDkex-+d8}0IfwykQ>`iPbeJ??N1yp|KPp!8hSp{D-5xq`&h8x?}i>P zh9AroV=$m{hVBOsd85^#>At_Q_7IN7KV6f0W+Imi&v z+biq)$y&pyndTOM6LEq-v&J|9qGb>{!sCpKNPAupm}v?1e|&;=d1aK!46xDkKGEMf zDl`7ykMZL}P%xjF!t#wRuI-80#ZldW7*KZE0cAU8l_Fjxz6Y7xQFKbpB`LAvZ&6O73)z4!!pK7qTuFgpO9sZn0c=iuUc7 zy|pqeEZydaK}WDhy6U#^R2ol?Z*6>O==k<{2BbQ72LcsMIQf3FV`>NdB-V;kDquOQ1& zJiu398UMlcJWgaqO&KhMijr4lq4S${`mCZWw(06>=MX%(Gv+>uWoYDxVrZDFMf!zA z8cr)3*|Z3I8?k9)4l;4yv*?*f!rhYHGh&yKg1Ug#7vUkI%&(5#xa*khvJRNIpVi|kvE;_#5YyvAs{^%;X0Q_fnOE5|5 zwmw64L*AqXA8XtkWago0={>c#pO%|MCH*2?&qE7LLXo%nu({#S7>KFC%AAV_jx?6{c&gqx1nUtQp=lKbw22M zG@1%e+1qw}$Jfi(jA`7)t_$hocj$NqI@ys|iy7K2zC!hAM6kD4@*w|8EWJ5@yg~QS z+@0<-*0jY~yV!O;oi`YnXT>*gE;;p_mld6bgXo=kBVF`EmTQJzbPxeRIee|pyOo9d zW&D|r>wIxb2hj}~OF>cIB}`Y9>XIsrr|Gi>Kjygnx%HFWUmeX{7bCD((P{a3F-5-_F)-RqJf60Bd>8XLwtfm+} z`VG!hwevT!l-6hZO8&QoZP8PrTH|Tz6u)5>{fM7t@{H}yw$jb7uew1C^g9?~-Z}g1 z!*^z@&9~yrU5%MWsM+#^)Q_~4GdI|4t!zOPX8^HaYo@xdn|pb4H#Rqf^Lzi4d!zA# zWV|z_`%H`#HFFIx`)fm{krM0Z+&8a`>f42|P2`>%EM^H^jyJG}8C8zz0cat%Yln$g z**l~~RStp#scGm`7~^?c {1)y#0<`5JvN{ux_&ad1F%ppzl0d~~&vudVh8T0B^_ zn0-cf$CLCbXKvYf$X}x;Y&+F8+DncEcjoX}m+brQ{UnG|z6#=KA^SS0czk~7>E6)y z$A{$EQ4CTkZ{CNV%2|=Qr!@Kd>=pJQXTQ1}RFjiZ&24#~R}tbFK_BNl)jt4V#Cts$ z8$iR^a|z9r9|a#{BWC+_!{Cqik~>E#_gDW$$8;^I3tkvM6L-^j@p}X+bL_Z^#WS+I z`OUb|CQlpB9^ns2K(s?! zozLyQ4u0>|L**}U?WvV|Kk_t|y)fS8l%F#H_!!5tRu@CY+i&;2b7h5CnUU{tB#gvg z8&qL0>|b)eI?4;5I7{#KO~ zwyJEDTFILjW#mAj$xmF9Ko??J-3Ccd0`G;px>;^n{&~e|zQt1yLS}XsZ>=`Lei?d! zU)o?-?;^%~MIv%#b5!=<;5~CzM0CHrvNxjun>wyDV_ATb z>=LTC_R$w@6F>62@-J)_bI^cYVKCF~7Ceg$_(o8-az5@#&ldVl(@iaSZKp9tC{d z#^R5(+P2>$UU4;<53{-E5svP*cNyJS$!heRGvNcwYp<_AnUR)}9l0i4J%N2s1V2f} z7oS2J8Rhjx547|gWh+mmX?|PYnwSBN%}k=-y^G`VX?xchsTT#8HO9lVm|u9$iMK*B>(qITVYD96A8`j%^OavojqT&302*79Gx?R~8g$8qKxT8D0Ahm#QJU z4z15pg@z(ma>y>XpLF}k3O(}P<~4f@D;f2^Idu(KrXP|~u+|DPZBfy>*FJ+c^H%PV z_1PJhyFC(vBQMt0Lrq^h>N&M%2Z9erHNZYU#Ztvrq}I`?YcMk}BO57ONzDDtRTkV3 zZGQ@F6CaT~`?ABsyapa@NeoIn=t#Z{`>pwMzKs#}81fNn1aPA~4efZV6t*yXb1E(t6AK4M1>FXbPE$R`dg9e|Iz#}GR2Sjp4_9| z8=f4I3i1K)5_w~ZR#w<3mX7~dHZ3a9Lxg^_2)O7nF$2;fW=ueWqTN2rA~Gkd+F}Xs z@hO-mMMU&%FSTo*IDT(v=GMv$c3oLic$L4<=?rt94eIMX{RPCuMtr;Oj38%D&z1@t zJww5R@#I(6c&A3iGwXwo4e4fAMKroB-)VMRIaptpf#&V{^epM38sz5Ab7Y`C(Q%NE zPiy~A?|~LQUwABfQaO4%HQlS+ylx&AX;seHaq@_7bpG-{k@_BYY!(ivs~I)8kX&Hi ziDE58Zh&^8!P==zoCw$G;9|A0ZO0>XBp2WB@x5-I$o?igh8|=iJ^M&gx}I%dYu`}p zI!I;3*!K|~BHwIdp@rH>TDG45xU}KRiDmluqteu|ezs|N=ykeS8trL4Vo%Oc&7H(O zC6UAFIlCVvYkMnZoX`Ewe9m+3qje%6_^Z~<+V=dV+eZF}9lZL`E0*PNhwkrkoZCvw3S!>^0rH!nb+%+Yx9sY__j)u)MSn}_;5qef z&zX*>Ir5e6lYLa8SI1vtEjWfm_cvg7>^;iL=DbKsQhk`O5Y@N$Rd2Hv^?Et*lQ=oc zCn#d?wQGzxTKkNw6MQO>F7N8!k>-rTSA#y}(P zpf=BcZj9h8>1hVX=d}u}8|owwf{dDo01j!}^A3OVrOeQ)<5mJI zt;gbm31k-i?4fxW+~Ya3#muW-@m1n0oxafXt0OPG81Ek2ro6|0;>qTnys^z*)h)Wg zdyjHLEr;yd?-JTp1V`WPA#GcJjwr^G_xbSkSuRrLDX1%t{@xnDx;3QAP%h@L=H^E$ zsrJIrXHH)G&2B_eH4pdnmGLvY{W{vCwRvyfmcKc2nZfTV0Gm4pm7zkfW2DEDE;Z}m z%kqU`GpqsMUw(6}0^T3v+*z}HdkM$ufWZv-&T2~5NRlaGJ?86Vns^a7AT~rYB0#JL zA4JNWO743)tQ|T|_Vp~g_;@gS$M+Z`_gkiyQ~5p>cg{ZVXMrCq2RlgTeS7AH6*Rhm zAg-r~<5OK8LA_|X;)!&s6Gu9_p=ECe$EWAI^=3^&iDu?eTf7e)-x*Z*ip`T?^uDNt zS)r&bdtS$%cavgi&`ocapFTU@Mf%u$tYEg<>;eL7Q~TD+C%E^_csEw1WbOSHMdH-n zx~QDF`xs3darj?;7E^jRn5W_eXt(BsuB{As7EcQ4)nOt`)oIZXo(&2^@jSx4(Lv>T{9k^} zvGUy#udj1e6xxn}oam=I4%Uwr=gMD{H$tOtKCP(c+&u%t3nTxnmc^WJ9@-n%0*m*@ty(nB;!W^N*5Ph6vN!SW$Ue3bKV_5MQWA-t z9OoD5=eyVF%j-VEVCr_^oGVdP2qOxO!_{Nj5 zFh;chO;lqtO#yZc(R=K=5xSMyyJ{WQZ9X`L=y)pBjr~zljck_@)1l;R))DSbs z?$7}iuWh2=WG;Dgo(Ed2v*&7-c{|;p@WrqfYYV-AnT$@vj$~E5Syd|*S6*m5>bp8C z+nv`16B*z=9kAKvZ{9fo6QJ8Dpd3%}efw&4FK5cBWz|;s!S~m^+?X>X9=zwf9<~-8 z>Vxl4v#m;5slbzoe$wfl3Oo#NIhxbFMLFsJq4WpC9`#pfnIjdN2v+iL>N00_OuZIV z;O%ZpAVeexKja(O5md4-iP8B@n^KqfaMj3EfbKvA53wI?_xMStj%{@6!{LZwBaezrJ{~nkJJ1UAs-8$R2T7%DFICWq=a3flXOIi7dycQ9{al)#4tNfq#H*=2%>imQe2Wph zZ{D6I(f~WCOtE12v*%^ENok=~JMhR2eGqe_8Lh8&X_ozc=ZPmCo@3}^^e&6ud@QXv(Z>pd&u^P)6={qn~YbG zDZsC~3+JVepA5|VqxG3CAtZ;byI;HOBXuPR3hI!hU{`vAy-Dk*c{h7MAw&Na?*vEt zx;5XM+aLv9K#b%U#744L?EQmxBQ<_LkLt{k?9bn`JQ>&Qm4QZZheRVeem~FKGBB65 z57tY}KG1XQ?b#tSBFUFG_0XyA&1r1FzIxmNA^6*TXNRjVXbH_kpVUjN*Kj|NG}0@) z>6x};TBF;)8M?h#r8LuCYj4|(cD~oY@?$8YiwSxWX+**DYoiW-=O^sDKAY>l8DDBW zhBb%y#u2tq+2K*5FIZ8yrDc!-YX4$Be>GR$_BE>)&=Hwj2G8a+8dec0&T9@wv=y%) zATlcC);7v#(S0H|XF-%K5`!b=wVuuFPmR3wjd3OcZpZ*RRR-#ak=*}M7A@xN?+ltd z)WjaLxcObzCGia??6rI0vi)Ex&pxZ!{FcHK|OM?D~pyLbGD4C)~P6{MCBK& zg8L_z-x~kfWkx%6q{*N4G-ZbzQ{hktMAlg4^@@94R$hOr~KlPxd&UeO3_rb;7*CxMOXRnOV^gMrX9bc<8Q>^*8>MnVN zue^!9n){JUU{UivDSR}Qoz`dl?>q6Gtw$Wm)J!x$2-n4Ou913NPp!etLC- zG?S_Etklmok5Bszf3d81HvSHWGCmKhJ?Ro$?Pfl&E8T>J$aT z#cJpl;ey(+tYz{1_eg+=$8sOQ*PTzvFV^JRFmOT;|blXN{htjp{V zl*B%Bq9W+#S@_r2Gw{p8{h8^}$~jp*y#S?LoS7fRQ;)onS~us#BBgIV%+>npOfW4p zLFI9Ms@=Pf2K2=f>U(a{d1ZY@8?rliV7y3WS!y38`sA}@Rr9yZ1S?&&M1wq!UPUO; z@3)r^jlaDEZ2_;o z_%NdOdb8@$ZvXm!`q$zrlB}#Fx<@juGRHQ^TOuj&m=i5}7^`2AK%Ef-2}^$rA# z{hFAQF^{s;+>toziQn*x*B{Qhzk@NI>C8)(3O#lYlpS1esi-JyVDW{@u;-H1(j%3oTat0!E_I?X`Z(B-um=SI0?=D z`?u`AsV{VmPTp>r{dJR>eIP6?8gl<59@q2Zxlhvds7>9u+Cie$x0O8E557eHjpRgJ za0Oh%%bA`3BBLKQ8cVj&bn2V*K$LAq$Oxz2z<;tx@R)e&+@J#Qy|QLo!3b=va)Dm4 z6W5F(^1ZjnWqjYpk$;}{$D8`$ciXr<&pyq$*||J}0%g_xeX=_cf1mAGze1mQUAqRN zCt~yERa`qlR%8X|;2EQ630aexyFhk|ctcD~jPR^e{M0ox#;lW5;~uCtMF+Nr1kigS zE_Q;&7De<1uqNaRp6)3Ozn!+e*ZT0|%{7_H3f_D6GWN7b5Vezcpfjj{0y zWMd5hO48x~^Yw3dG@m24V71YZ48vLwe4Ftzl=fT#EmZFxIn&uPilKe}GJEE>5}5B} zg{HaZ4$hg`R(EX~z3H;yilSH{T`%gX%E{oevdp=X2v5i3!QJDH_l-v1kuJM0qrqbo z1heh7Z(~<~KUff6YHvEypY?kzA)bQ@R{`)6atbTR@)_jpI)_%ak0?F=L~7J$VzfG(bJl0C@<(%E{0wQp7jYS>cHLkD$yqY~<-_sG8mQ^#wXc%V zEc=;f=E{iMeRVeOjvk(Ti1OR&pzodiN+?mcMGYTO1)(`@-+G410WxM)Op2NSJX+sgjZFWiupy@yqnM7JQd2bu=8tO8gWcBY=Q&GHr#=a`0dcN7VJ7q`Se z{2P3oG3xgCn{&R_c$;sd*xv6jue69UWcQ#@b=#1kh|8`bQh zqO*lY=vF*6ECaq-&9(2TCb-Bip|;15qnO8>jMqC#;VC<4&5vuX4r@Z9tUS1~ zYFysNzw*vd)Ay2VOMMMcEB*RPKfA8c&pu0-Yu=mCuNJU}ihiN!yG@rzd}i(Ct)(TA zdd_7+(>tfLZS7kc>$TMLO-47DH|x4&+Tm*Mq1=3&$ZEg#kdeE*ZZdB2C08_Z%3r%e zBIMh(=O~?=tO}aZnHS+{IlWjpQn#s_(1V8)Ly$f{Bez6$ydJ+GHc@e9We=ado}#A3 zCknHIANEH?**)H$%RyY@OLTOEQ>$t>k-!{#!ZX>sk^pOZ#gZuGx@csw=OGrdEI)lj z8$M?vAPG5!yMuEcBvkKLczQ2oYhUSsJc=%V-gvpGF3|$fG~U#|lZq-J9dU7;sLjaf zhM@&A2RL_6Cz_$tck1qxNW=4x?oF}tm`{41S$gWR^(K~+9CWtGs<>_{pUUd^$+%30 z&8i~OIl7nUUz;9oPHQyqR#04gzPP~y^YPo`uf6KOH~1l2BP)7wtnc1iZv{Pyd+8D* zizDuT@QAz<>Awb`m&&gEnk}!!z4tGB1)_79s4 zF*iMftXUq}q`n^ivDPG4#cqtCR(_T5rB+r4iS+4yOSN&AchHkH!+!SY?zKVl#h9<( zLXY;TFN}kBgeqQP`JQAdj5*?@*Ll@7!&Xjz-}?(ASICV8uEVjK!yc33rB;8TiR^+m zT4u2B^?2*%FjBnMX1Lw-j5Mm|Oy+|w;osUOK2%b0Kg#7*E;QHCef{alaeEpSWbNV5 z78pOeg@WpxM6aJ}G(P(Hu}M95J{`C$eeC#H&%L0`iWmJ*J*MxHapzsc*jebN-o_rU z_flm$ug*~~x>L(j7-S=*3-VE@VZJ^mcMQI<*=zY=a3BWQRXn|aYwmy7KBsNB~CsKcd>)yhfZfc!Uls9Z0^fOv30j!5viZA+R6`{aH z?2QQK?%Aqb=Cznv9@X)G|JBZ9F&BFgXPKFw=+Ds25|`~29(y`nOf9}FdfZb#XV*EI8BOR9$bkP+BY1)iy=>p^8A0-XENjkJuq-57yX%lUl?ir{e3_^C z9SM-@%#nW?R$6sfdcQ|KYDcb5h+SkWoR(1cAc=bk6IVJW1S=nR4)l1c|BNnO11_!o z%ZdpfAGERl68nE)&}c1z&%H1{rE;S4$qy(;pI408U^ zeXo5s>>;z^PusmijsXqiZ%D89sTT&Mp3|pl2Q5+S)NIt}^i>&~oGiWq6}JbswF|g# zY2Hsq4%O+eE}xMCWKIPPhVv}ecy!i>XM=NiC((iE>Mn0+dTxw>jFlEoKzZu^A}A(GY`xH^qYkxb=-T^b z>Gv{O39vJ5|&v#IhH`vkRiCf?yg$RNH-MOT%(atdcXTPeEe<9uw;?)b=@F;AaD zw;~de@QFWJ?KE?Uj9{5}fpcojb4BPN`Ompo%*lJ*RcnzxHt^3>wN~?y!AIav3sgc+` zUd>6b{MMkRZbX^ur@T*eB2q&)H1v8mH|^6I`^@<7`uvjTI^q;P9~k)b#)wDA(46_f zm=CQYbx!_eweQ?X94Yl)!uOB2gP^IOjJ5V-v`A2u{Sj)Ua_>a$BdKEvJ!1v4!AKB0 za_i&HdBEkBre`$T>o!QHT>JM5vIq6{prP9+X#eV%Kb#^tZLO$Fm4L3`A*dHEVE?y< z-6Co2ZtDv~HNU+F`)3C913Gj|nlVP1h(3&4yBjj^WwZaImA-CsmB%|GxVT@2t<#il_7+PRnh!5$xRz z3~M~55ww6Wp6JLQyZOeD4}c~=6%!+eg9d-z8U4EbkAR;;dwVQ>ltb0+JvqF+OEn3L}YAaE=9zB z5Hfg{_-0kk3Q_uIHTQRi9lgDC=logaX7=W(*vY80$U1?yj0&6heqHskkGhHY;qJ#z z++-Z&XAS7xDbat=AddYaa{gsyhxfcamEBK=4zIIMG`RH+(CXh(-R_<>Yvq0mOtN4y zH*(;PtaAnpI)LY(PkBCa5FH*2>|n1XvU+!F^zRM7zP!r*Z-$Za@l=uXN_3Dl)pd2f z=8T9KZB=EzfvC7$DgNt0+x2nY&YG1In6S^y5;Jd-ff8||QN|)J6HVtzGHB+W!RLnV zkeyZAQG_=>)7zyxKwc-p^;|*Pw~^aue?Ft@>!sjp^{EpN={}ixAEBxv0wFsMGr`wWn?eC2kj;b4`x4w%s43NS;RRhmR!#Koh9}OPA(7 zTRv`$_whw$BT75RzQcd6JLJ4oI}m}Kt*>B06*g{1h#8=*dj0Sat0LBN2m8hN@1^n6 zrw2N`G*%)mM}>BO{QKa34Ohq}c)E8j%>b*TG3V@366tJvQ(tIf&v+}RrFHz){z~n8)}w;q zRbvOuqlIPp%YRq7%A-Xyv9G#a-Rsp=&SjNdsN;ST542%Dfi62E>MPg-IWu;LPt*vr zHu(-VI+NCGr5Elr{$>8r@8nWOM4tDe#^@~($IeRUwzudd^$4hJHSG~rR;Ev?0P4MOoSB$sKbsxe4=u7s4I%211jO8?=;|@ z@bY)f4$@;L?n|E$3~MG*x+mML2|0<0dn%wax5KFT(? z87Z_<<(Zv91vMEf4$0K93+x0dLznK$JlcQO&v%})z3o~Y{Qu!PD|5Jmm%s2mJnV?> znQI|N-zUYHu^Ho);BS|O}{u&RfH)?FNauuJ@pSocE8$7_~YNg4DBHFQPGRyKbHiyoqo+#PO@e8Xa z>+%sGMx7b*(9;*DEvsI{v1D$ZgbU4j`?&MM~Om&!*wh)-zc zp`AYR*8W3_2%25zjzX^*|8~~^Iu9y$JOq{1XJ&<(+JRCyF4g!|D4OqCV75YpAW7Ny z%)S1ptdnybp~SrYFiT_^RdRCC9?en>Vxe~QDr%*IWX%MQD)wJC`9=mvf|bEJ({QxR zf^Uh3nXlxNe8M-5YWC|TAWovYWWv=~*`D{^?n8WVrAztv(Ad}X!R5EdNYS~z;JW@t z*KEsd%Cj#0ZTB7DZ!*fd(jN?DFo!H&^eCj_%=_r>c$^`>HM9f;B5dqNo2-sE(I-^L zQcqDpoJYIhL9KrzKkfEQZt?cdk7w*>|C=Vu7sltrR;Bgauqd<1%ZKk7x2m?DPYx(~ z{GQy7bs#Eox{u(Bz9uTfh8Uku9PyNW#*#mBB`4RD?7{GM&kRr1R_^)0_R+=hyYNk3 zfww(9{<}T8V7JG=w+32282>)X?shF}^m}eV^LF0gE4xYQgpx0S1@L()>LF32d@63b zIu}X07KzP0jy#|R-;9@J-Mr&*6lwM1>_wT(4nZ%>8ufA{aRIN74O$(c2#7x`Y zzX{s9zO)^8%R)1siJ|+91>Lz9$^EqEb9#y>gEh^gz!$f81@-3~yUu__BH9As^G2Ss*v$P$$qx=O87**|j|J&*^qXc7FqFtzvFj#gVs zem@yHjgH14PgCD!*Z zO=mNn#;VDG@C)|UGCFjmO4;TS^qcTAGzhXM^FY2xn7oVJliS2zS*?Q@{l)Q_NaMFg zV=K``_b9xKaZk;TPRV=FXZOp{5uWMKs-M{>m=hUB=e6HY41+7;rRaHk{6=N{%BU!j z4t5^>fD2I5t8e(OQxT~yI+k`k+tJFTsIQfwTYMjR!CmiU)Zd^AAMM?^Xz8`)dq?|-t6oVA znpaod*AV{UD^dnopdZvKDfj*(6!v~Mzg0{wOBQF5sTvn~o*uoM%jI_-uAShO+Y!3Y z>sMwHc-K5?4f~dM1vjfaM2^lo{M{NB`3+a^h)wUqGYyd8GMX=jV5a{X7~! z)_&Ci6o(UEYh{Hh&+n{H{0t%ycgV{16Qu0v05s0uW=%zszi58i`=OcNs1U3||BTGK zWqqR(diDfPSw(Tu&)=NR44_g^3aUV}-&mmcg%YtgGbNsx!|+>=)0H(*<6aD!Uwe3F zQtKu*xf4t8BMwsWCu1TWTZ;;MTGoJ4jZ)gymVQE%wl_ktn(-F0I_Wt!7Qsz@s zzH7$8YV`XDMyFr&!*@wCqJcD#GB$GThX!Ca4TBimJ?lKQ` z^gZ4R|1{RlJtzJqmgAB9=4w3EaJLd{2J{F`_n#=5e(mb}E`M#QH3%LQX^!=mCeNNBGN=8gu8q(YggeIJS|d!%G+R$JAeX|! z?U-B75@*3-`%}^{Ruc`79(hHu7L)_oDrbY|xuY&-_jjYYqr89C=DfdVu6d9LQ4@OL zsATyoO_t}z1HI_)(`_)Crq-aEkV>?i=qGRZfm!dlvDNu`ii0tc$1Jxa>CEw|^6+T7 zWbo4!gFS1|Yn@xGwA{P@?BG6Y1tJ_wM^o=f8|9}(oB6M^2_d&l zX9WF-=t_iE1a*G-l)I_$fD=~o#k%rlauB4g}@h~(); zPl6zSEX;R|kiigRw>6bG#c4t;2qcX3#@fx5J%eXtAV>EH5IONy@5Y+r%&Y7BR33P1 zo_&5C8Jv!I7t`!G+J!BTisXsEw6DzXoO6KCu8)MCkfWH07@$S9B$6HO) zhaZl6L^)bu-HJYVyiR()*?7T=w!2r;6W?Yn`1#)7@NRfV=2j);Nqad(p7h(|>qj(D z2i$D8*W=B9|C;%g0oDRv=eRDJUW_M^*_X!u+Yg*8y&iX}>N_W`Baa~K0l`vXmp}cd zmUqoQzkNp!B{y~rJ_uk=mvy>$w>*jL#3ZCbG!xT_i|mcsXDZ+Z9Ws#`K8-6mF@<#S z-m)`2w2*?hNqOxlJF9h`#E0WqQ^hBuS1ttCWR&JYd+BVs zt`5npJ94(;ehFhso-4AMya%0tw?J#4Jj7wNnpsq}hINi(to z%e9um<-KiwV(^sJyE&iOW@T@mM&BNNi50)z{4`cFBZaXu-!?q&%Xs^E))UDC$=y?R zxe5?1u@3_+7>W0_2@$}m5Zrtmn^s1wlWN-_P2$K~@3+Yg!tHF)Z>JS_7vMX=W3Y)x zS*rqD-jMrSfl2D`e>VNiJ#FSVwz1TRBKfwv{h47;=5TbI7=t>==&)U_C01A+^s3Da z4c`J?Qu$I7xX*%&Hj(4Ujs7G16PKU_&mc28;%l21hc4=g>HtGM`70FXiD&|y;YqPm z-Xve^ySb4AV^F{0ec_?^Evu)%6WPa*yK>=yxA`{9V0n20yn$1EmUssZ>`Xx`v9F4K zPz^t5Ql!u-=6%-G4vc^%-YE*+I+=vxH!qWKG+RT?+k8CTC9<}8KXB!~*nn$)XvFN( zaft2Eir%xLT(=if!v=$n=AJu%(KK^_n18yS>Z5OcZZ0TuKcX35u-3@JtghggbyO$u zM~$}A>+p`Ezla90;Q3on&27O0&!pgO%ncs!*YZeYIae}AlIaxXY(PA3S^jy@{>Iq* zONZ7w4_Ws^e$*1&$9rr1>(1E+gNiz*;GKQ*NfErCya^nr+$dP_II{#x?ZMhXp8KD< zWjy&W^CD~SiI3HX3FlB*lk(W;-VwC*DzUL8rcGr^U4n;*oX%b>us)Usj|e-Wh4^xq#Kur|o0K%C_>w z^Hc|upKo$KrNdd?a3EiB0#(Lr>p6b6zlvlo#(z>?t3;>md0EhKiJhgJkcHs~82 zM+Rt<->uYn;z%+?I3jgl3)xrp+0#L-!l>8LUiSH`?@MhY)>Ivx=v}neN`gAdEM3Dq zP4y^ed(EhK@k@@?LL!sVJP~^<&*%WD5ru2VEcQwl+PD#~3EFf@?e8)&_WGr@2T-0M zXF>Z}u2A}cl`|s)`eJ25zY>q2%zlHM9<3^Nq~1$X`t&o`Gx2f#XO@z=7d<*xtI48n zUfrCl(e<()JyF<&yujLyAwi_$nhz_z&Z;-M!sCj~>_0_dMQOTR5lp#I=7f zdZc%yUEVBCyg853GR-5CH=nP-_npv3@1GFe$Q1hx6{2VI4zt^NAI0nwr@MdiK8d&1 z5|2>nNQUH>c)ytUMYXG-Ke)$nw-hMJrLL`+TI4yRb(@RfdgVw<#hbE-#LL+ zjem7k2rDon<0szR-&+CBBg?+a#rbM?%>Qb2*la1W>v=zn@pW4-FzQne{SQpZ8a(!C zMkfbW9{+ho_2&my`>I2|*u&vd{F!&N&PB9y2Mt}3>Z;7tI~&p1YJiBSC0)hr!MC`- z&F6XsLC^i^F^fAh&DEY6^hli%m%Y)+Q1?18GD?SfL?dKB<|y+F=6E$jmwn};>}R?= zXv%#-&yDerg{v`~y$BML3-lc-Vh-~|QTqRNib9_vQ&N7(+-pTD`#80%a}frMw9X?# zMq(9n$W!+F;GxxQBwm8Vl4BlcddC#Nn|h3Q%#tWsawkQqVR=S3zqS1CT02^opRNr5 zXlUWj#`Bma#((y{%5t_gS2)LhnnZ)KF5eijn||L(T0YfisSfS^A%7%W_XYc1V`9=%S2ruM+fXl=Z8&oO z))-qGCr1-Wymb!$MXTUS|CY1Z`6-{L(=TP*YKY}mXAw^a>FDwj4MW8;c8Gx-P9`bc0 z%Ts&=v1aMzOc1r{EJu+RszV)hSe?M#KkscW+6w1EsxNK~!nc_ZS#`Po&J*Nc9~v`- zcAmEeoYCd~5x9H4b~nOd#l{dg zMB`QmVnHJ7OcOIa$|`qkfZFoTpf9VsR6)JQijz`9{z8B86XP>2;%h?&dRv_}F7!b5 z@i!!ccCv;}9Om|7W(aESWfcms;EVAek^yf;6m)rXq9$2d*>G||YFqpC><=blF$NTi zDA@qtf*0sb#0U>Q8!x3-V14PibNz;0_~cwr;A(<@uQ8E$s1jp%UUbF-h!WJ9 zTmP(c3ucqp?-$2^tRdhVJ!2_*>p2a1y0!w|A=}b>cumy`Qi4L+g=w6(Qd58Mu|HQ^ z_FOc4?=fs%A3_@F!P$`{xs>Z=*jSx9g0k$?B$sDR6EEZ0y-(FSSMnR<{{AWOW{*T- zb)s182MwH)@6#*g*tz@Ey7xs=fBYD73WnIRz;fI*LzW(&&iJf{U#?Oq?8%BY_Jah? zS=c*J(F0!50+n+ zbQUI=Ns%MvE@?7^<4$^6#=wGMv?hvO}*B1 zIY$!Q-bRcEx?2Y>3VFNhkdqHBIF7Y!qk!+EKd`q3|B9W}Xjfs^i7o7tf8q=t0^h(kR|5^5K6+ zwUgcx+3KN>CLegkzG5lfJ4uGfsO(rfqN#jHy1Tx$S&(z49}D^Qq21@!8!;K3&r4Qj zYSy;dVO!q5j5t`n@?i9uK03xj=G<3L2GoB#tCTD{$sODX;)b0Us9sQFHJs3~Sao+o7@l5a~8K4{+JI&!EF{NS+ z<2f#Jjzlhfvv$jSW<}LyGIbBygN?eY`&mHynGoPwktfTgD5fh{i+%Q9pu0zGL zY|lDW&MJpO05;w?4ZVvD(miZ!`G?3dZKDp z%={J&^|Pf-8%b=&8_X8?_cP7Uj&j9rxsNI%G-pSt^pJjDyfok8e!Ol)7C>zTnkjej zo+@U$O1dmRyz&b$?oZa(L-rS6yf=2izBuxJdcuwZb>7p5oGY&lR&Fcpil-Orsm^D{ zTUEQ(n#{i13l1dnE_u-VyBzu_&K#{X!l~cjQT-a4 z?~WefH1mK3es4Lk4ix4+Z0y+~jk)LR8X#092lFSNM|$(~AmX+!do->*p#hM=+sx`ua7jpxfm-)_eb;_h+VSzV73v=S!w%K2n~kHQ`~ziHzED==7M0wIxquBf7zk=ke|g zi5EgCd$SO_Yj)=Bs^Yo%Mjw8{V(kQnK6+aBRyiR@=F142q5$o&@gt2N$sw5*5smy7 z{4!SAiJNs58oHjXZ^#+zyvE*MT>Vk@&dLAI8UXLe_u!eHOJ+M|SE;p+dNb}yam}jo z<(V5|YPZblek3*%i+HDZ7mu-5``uza{AJ}U+CgqDOg08$QsPgUR(E=E0=txz2@^!OI>_1#u2m4>G$!_n3s2-x}xB1pQgg<-{_#Z!Y9wEpIF_15r$&)>}Io?CVD z`4MGV?aVDfZw)W~ye}0a+9xjsRXmjx3!nYItOvB7cj}mFWu$tKG4X|9gMPQoT~GUJ zys-CRULUzB+2%3r*$pOk^kU;M7gjn(TSfjU-uNepYU$B};mem>1 zgPD+0bu1z?cmPY}n8*{1%07v3Mpd=#;^x^%5*@il*+)E<3DPON`qaB9ccf*1rrQ$! zM4fr-ipsZI&W`;~NSD6&vqO96x-1u66G!U2*IdV7GnLuzpJuf9r2DgyM|lP<7PcQX zSqu3Zc^_Cx7H6EBpO1xnd&PTq;APgxjMpi^UUnk$FA3B%V26cPRFNY!}nOv``3wy$MCPX1$6-8z|IqFz| z+H}9fMeQNn_lhO?9Nkj1!!y~nJKu~NIemY~$vR~#qpM_p zAOqAX9q5(Ay*E^^k#odfUq>(=J9^gGLTB&wY4O$JK8?ZKOdn6kz8pLoOV13;;HT{L zXbuqAJO;Ez*TmlFq57N0Jl8z0wt0@Uor;3Yc;300y5lpe{EsqbEFAe~w#Sdp_94YT z=i6oqWw(VeITJ2ck;mJ;rE6~{L*0>%koFQJb37z}{GL34Bzl1V`_{+rL~d~q-jJxA z=z;NxEv=Ed_ZVEP_Kz2IALZT1ik4Of7o|_S6)=oDn2OJo@O@*%{L4yXMGz$pM+mm3n$sy{mz?u%&cRFW+H{ zA!j9vFT_SFV&D;M0{^m-fcjgn7i8$vY^6@+Gjs>5S{4D3X zlZ;+GF#rTcCPW6i^?K<(epdH5E1>Q@e04~Vhz+`vX(bzAJ;b#uqS;aY|BFV$?eQjj z5VNorv_NOG?lLl?t-561(^~l@qilBu9C5R)Up_NtoX_Ae5|q=Oriyb$q?KN5axQXu zB+Yp^wNV}UW%=>2=g9hqx?1Zxnq%(ZZmACPCmYL36%wE-hO6W%WR_HyXqf+Et!Rop zWqd-lYZf}BgKyTS1`qf(a}8fFeVzSth~qFXEg zEF*u>3ThrQxaY?FybB#rOqF?bW{wQ0dI?xn&N=e-ybI#`)2Pexfp#S=RV?EV@4GwH5tE!>%GI^~tewvCCAy<8!4N zx}lH1885Y>Ek1*tIiXz|WduA8Zdmbw7gp*R3G`1S;+uXxJAOw#B71n{X(|`dIL||A zMO4RvBC|y#hYf=ZMi3-MC$e&xzZyRNu@wWUBx@|}x?{{1U7+#LnoM)HUbKbI>fwgk z$gxKkwqyA6vOr|(Tbe*BHRrSi*QREW#> z{or`-4+l;7*-g$Su~sr;-;6l>9$aNX+g@ViQ>c%m_Pfb`XUzGDfhwOEG+qoDf?e*( zHqUr={00VAL>zaDj(0BCh>2Em*1(#8y|MVm=f-#-uie@h|q*Y;pH!6#z~- zNdpZx88x!_{YKxN(a&WM{;e^F6`u&0TT{V>MBKdpsrEkAhG#li2UA|?0bF(k8VkMY z$ji_#c8V9@88p2xsKfg3tT`9x`GTH_wzQ_I*04)Z&OLHHAL+T5I>#TNn$C)r6#q4{ zpc&6^qeU$^_^8+Ox#zXWzj!O1;+)+GIzemKdL+l+h=9i)_TN`-f<%39#!L4T2w6l%+Ee()bmKd~ib(Dxul zJFyXCi3k&K?5jC>uFJUAkcs{Ghs?864y&|N^5(R)EZ_MLrmu7UL>H_3d(S%e-iyY2 zRy<<@{X=3R=&1M9iQT71bO8B5Mtqbf6RW`aN5Lx)k_yc#0B@|Ey61tP9I@%{_$(-v z`M&coes$D|RTJ~U6Oa-*;Th!VSS~NAQHdht17@~0D=`-wGUn{Fq0sZUgPuEM3}k1f z0T*h;JT{&(=fLQd45;+C#X(~Z92nh=Fwk4?pd+4x1AZb`2}g`ap9*<@b^K&L6uN(O zL%Ny2;=NM3Sm*h|;G66rz2DStVk}g`KU%P7AG$<J^$O@CG2O=iW6$ryOU_dB+S`yVvkYuwrT zui4|S6103 zH-^tpuw8!v-LNDy04=?b7fCFGwxh9?irJK!EQkk*Gp?UqVp!>--ON=hqv7t6eY4$ZGbh2 zcwqUS>bW}XvFNhN;nBxGrn=X1vyNUGJL|-tbK2=T#){n`&RkkLk_W^1?WW^wGiV|S zXPNQD^3h{{K0IV}Z}_RF+h=MLMUSxTc9ShJ1`IXcHp&Yh-HQn}k~ApUhkb98r()^1POKXHl(35u7zwIHV(B#}a0?EBB5Vi|q9$n?o^0$zMSvJW(}pS{L; z{f6U^S*R^~40w0tmVJfRIDI|+rCaP^?(x7kxJL$s??j4N$WcuGi-$ZM*$IE67E`)f z4L0k&p4efk1?NgG|%l<#k-eM&a1Fm-^&->+P{`Mnbf=y{9cXy1M|> zvpAHV58h6`5T1HYmCwk_IU_ym;+V&7+vnfEUcUJ0y}{Go~rQfrDDd& z`YqT@^$`n*EV{n-`JtNTJ&=Lbuj(>ngt>0LZk=MT6OUtKUwWi za$hANu8_Zk&u=!reLNq+YtL&F@34Ph1z~gw1@l_p`H>Q(u`XhaJRV!eGGal+gY)B( zL6BkAn$M{*yH7*Se2Y{thFEc3rF2Xmb=G{63i~4p)Jpw1u79WTjGqSEeCHUadOvBO zH|aOkpR$iMcPx4ou6rCkf5ub^kcr`f$df&d;`)jp|jIP8? z_$G&`ted%x>IyWM^HH6vE&fHWh3h5ZZC)Bn?|J98SJv~k*!8itmZjp7a!ig#6zRJ; zPxTLr7vGn1W032WL~nCc{GiJuywn&_yOnNrVjZ=2qcXx=7j;|R){@K*jlHwh@wva- zc{!T3`)}#)w1@5EXwm=4=4;zLd>fUi_SnDXJ;`M&M>%R2Sv?9}e*NPC|X zhU#xT^og6I*Ioj#4fN!$0BnFt1`q4!?1_z;+4yg+To!{4KwaKEl_P6m$*^m@*P8qj zYokfVBQEvMzS1MJE}Km)Pqv@k9?75CkqAwh@e5-<>7TU=H+alVcnE?W(VKa`yUv64 zB3--i&HyqgyJIV`KX+~p(Y)5W&DpN!o%-Zr@OYjk(8B#P*)IZ}^Zj3HrLg>*B$lDS zo6MU%CU4EG-@2L;-@9oIsYh>-3tgpmT&EetB|AvzSD-WI>(%j1aemI*steTPO|3W) zA>b={;`Ny)m~nZd$Xn~6bxyaVGm$a-^@3IA6UQB+@x6v^?o&NfWgn}j-w2{?D;V+T z-k_ko|N49Yot)}3ZgKjiwi1ckIU|$Jexe}2yia=8uX#(YmE5G#b;nI&N$m;6K2K-n z-@ft#^BF2DWDC{3!?ayj-TS-UqM#&*b92v%M8JXAVECYCNLEKoeAN6t)^|Emj`N;l zPVI$i3;O%_>s0n|&PJ%)LwAo4N9(6^?t+{uJ9u)pdm*^lM@3WMZ=`0g9o*hWdru;L zaY&9B$P>hGIApKP=f+?9$Xl&uhL2qFhYY|je2d&V@;ztc#P2)f$<8IK(EScN#vxig zip|U(5=xf^9J~2^k#D*N^QcD{zR$~QZfdM^`);2fR&u%SQ?RmseeH%ROEik-^?Kw7 zW4z;c<_rkE%=-m{lh{g5iN&AEe6Rt$iE%1Q^E5YZLdA977DVXu{`H_YevtK+^kpLH zPWkCtkm@lM{Eu-fG*w)o;Sp9c7JMN^torr!9XJ#{qNN_^YQGrL@B3=R8}|s_9&5wT zUacYA8v3{xKVPo5>fRf>X^$&st%Q1^_rbe-YHoEzuMza&KP$8BM}T*FI_`Edqe$l82KI(-a;mHmpNgQOvKFi{~F(*`Jq)}-kMVRL~=3uOh%N@hfL{r%(~Ee!5Q~_ zi_>ZrP5jrDqyIL3a`%tjSL^iXFQCnK8JSj0Os3MUtBLs zkMrl=VMHYWqQdPy@&!%8-**~+N46WwMryMptnos6hjbtYpvl0aq-wKZ3-&+&aa!i?Ab z!r0UI1YFlKH7^L3&36kSq3Zjc?k@Kpj{Rljj4Y5q_NjwgM%C^9!lT%^k3S$Ro)#G) z1uQr##=kj!V#fN*IlU1(dDh)}U`r5X-_7bfKE-vv8-w0va13p7zS0b&^maLH? zMH~!eL~9f?4 z?~Xl#S>_Nqt4c;N(}cwki}V8Zv3;iK#yhf;vgAW-p%$t2ZF7{2S?5c5hB|%wB;0_J z^Inn6V1JGiLoY7><>2kNY94HO{`PFY1ry5VvkF@ra35ZzN9^{5kmvVjyW#%V-yV0_ zhP!2q{lwsm=#cX!NXT4}9)&sr&Gu+x#^;Ranz!&SEbZuxoJ*t!^1tG}{$t znKMJl@wBY>wi9`8zd;`Q!xeScM+Z$rb!0US4l*{11=uFNc2NTf6uC^&CyGDOVH|%l_y3Uc7=XR6IX7bOcqAQ*hf% zE78N9O}qzgl(+SMnQ!#`iLC99hD5*%?{Io$)wwdR_1$P4iETT6%Yx4&_Vv-N*}xYp zucHbY~x??vk%31Xb=gemrjBzm~AAkwghCCbMuaVsuM3?kz@J zyHppk%wQQAfV}+1>bGY7#yR%l>D|~WpYUX?^~Lc!_^w~y9=|a!<8scPys!2hVMp>a zpMx?2kZGWI^mx7fC;_rjdyvFW{^s6VdT&pT9K?u=$4D=G3&1Y$GOLJGO{se1JCP_@ zucgn?XIY4?7h^`ERjEq{fZt%Y&M&>Gm=Y#0S?C8kEAL6@WI z-A;35A7BVRW6nY@8XSu)b(}kO;%nx*BN-!?3~ygmqO2d+y&LEuJUHw1&t1=J=zqTX z0-P2;N@sEpc$j@z3#Si&g^ys(ty6+O(n4^<<%slt)vD$riJQ<$B#`roJ3x78^nyJKw>o%)MaasPN;a0a3 zyl!7>OZTZP63eb{q1}1_G6q@aP98l<@~Ca56`rDjEjL>)QtGFDBpiQt%=h9dBQzZU z%xvmlPt7rgi>;?9yeUPq4x(3NWkn)#LoLW|O-xJzk+Dv&Zz~N(31(~0siuyy2C(2_ zj52q|3gu>+lts6u)9ChrF)FAJC&|B~qry&c1O6NvzJiGJJlHy?f%-1LIrd(z5;0Pk zo8KB^bxrHpv!`9(Rp@IlZ)T3@AyTMZ0_^J;G5h_t)9}-4@Na7oM|q4s6{`Zvz`(8T z=s9Ml$st1hJVNgbQq{rDOb7OWkIjD-XF=-V|4|Nedail253ILHpP!}MVr34=y0bEe zr9d&QN3th~5MUS1A zpyRUqeWT^Yfy~^Bu*Ng1Ut6nwa}guU5q+H^xtTM0aK`lo>k^|= zU%4Pp7N40LP2>6LyZbM3?bSh1FtIr3k-Api@KXA<`39crWVM&Tqi90Dm4x3=@Ud~f zUhE~F1*PfnRrwFbd&>TT{31TVy9`U#%Y zO#N5m&AVTo88W}MB0H85`?!8Io>aPE+G!r=%ploC5OQBhm#_ZQRh@8pY-}YRhKva2 zBGX5a*-g4o`c-B*?yZ!6b(!dW!6fSkGri*VCxh4OJR(~;Aor$vX3a3U5msVG;CTSX za&KtjPsJUrA$@{3x3+vbY7`&8(sJUK#dPd$UH@lgJXcdykVjg!U~xImbhF4Gw&E{BLC`;L_!g9qS-7wZW+4 zPB(eTTr229g|ld(GRD(ZP5t0V?u;~7B2uziS+eeZ=l`F*w+Yqsy7K)V`S!phCUHm; zOz1%kl(;Uj)K#UbQsuhzaa^U3qN_@U>e#I&BC@S&OYT-YZ8zt-CO+0XmF=hP|LPRT}6 z)j7|z_uA{@zdrWb`@!yO*Mn?UbxE{(RM8=C(2n4x)x9-5rCr>dkyJara(`d#e9tPMsRq+__j0Po!^bc;++(NKwG~Gz@VRzt;jMhH z7yB76gm$QE1u`%f8Yt-ybEn%* zO^#E0DwfBAx6sI1!6f#@gb1|@%@aqnG=y8uHi*b zA99kuVR`C^-iGFzonxDItdpq`uf<@?EG-1w7iQuSgw(YI*E0S3K6ob0x97(rYTWtk z9=$z(KG&Jn&J^urN7j1%Xx}vrvT|ifif)pYb$sRhYV#fsPsPqlp5<&SJnfotF7yN} zX@7qts#(Gb{GWEv()afK6z+)Yd9pRt*iL z9+Q6bp8KubG*e%zwxuVg5vh=~^`rAXeR-<&;TycWYyNL%bB<~t*U6JJm{yj zfAStoMkMk}>{~Dr{>t7HO~m&470{U={Uc(j-?8!vrWhyZ-2VOE`qF!<20$ePzTq`; zeay8JKZV-1$H7S7cQ*K2T13;#*~XkZdv{%f4oC}3a&J|QW&PZRJ&In4=fOV5P*>wm z_%*&sU}^Oy_*sX?M($b%6iLsBz7>_RYVthBWQICsd-H(Dd*#M>+wui!@x#RTa8o=b zvrsJz?z3;HuZ4i0oPTlm6<@?aI((bVH0-Wu$UPzVK`}acz2Z}?&C)XN&#Our6?_8M zi5lPrRz^&$F1XEnY583J_0^z99^rC~i_giJY>67_y7h0qCTC%(Ye-hTE$VW}`{>Mp z<++}{A=4U3)NJo?=CSXDzgd6DoboVc$+cMDD_7c`A!%B#Gia$hZ?TQOXHEJ-oNxKG zH}j6F3EIseBX;*+tII}=UW&R|OPajBMCs*2m%#@thgziS92q&Hg{>UcMaiNToC24s zc4yviZ$(@>AAOS+wsNa8fPU1#RbjokS>oFgMQ+>SdXHbK(%{wbRAclq4?uZUlC(dd zzFX?TmVeDV9*HrrK%q~qyQyL&)JI3g^>rw%RTIzg;=b1m&#@nHCeI#9s**0>YPzzj zSz+?^HA-jvF`~lWjW}60II?x3A$%IQes0pf_O6urW*?``cktBFQGM>4 zH|RQ;kF@qwI=mz33U7K;o@Sn0rMc*FOyLWATKD`7`l^SUSBm=+*z(-fn`__j@!)b= z=+!_>G_lojW94=>r|93&!brMcm-4{GrrkZ{F=7zcXcyh+VZ>)8sgV_BD|%ax6Pxm# zD`AB`|NmG};%f;_YZWK*jQj;$%jy;q z(Vi8$Vtyzdl$H48&NTh`9rJw(Tab0j+|TMWky5Lb;Kfo8ZGT=LYK85poQgul{%t1( z($$%F&z(CYSIb_-kvN4#HB{WV7}Qa}v;W|{2PYpuGgUm6=cgA59k6V+T~qHHwKB_% z6{nwbmh)1XCs)cU;4L1=r_?j(zoPO^(~%xntoj7hSqjhAa@>I zcW$#h?NisNQQRHH=~yq)P<&#kB!AY+qUN6K=(Kk0%f2cJN!UTbVqce zVpfq~FT7cje~b3j{#)ylU63s!Ia`usySzN&j^s`&pYD!Js{Jbd0gAKzr=6JmwW3tEv3^sZ8lLm5x1eFkAYKe zb#L+Qq6-<7dljnS+EzF74DC~2piy~lU$P9UpNZ&_w)SFo_F}QVYBo*33|cRSjwyDO z|Etz7>#Vz@*oi9(UQ6ZM1I6yUX3cd=?j$wP}9`8hSaKMOX}kYI9d1l z4|gtm_g??CGV`J8{dQ}BYWxvc4;R|Eq(80q^17(X;l-q%@DhBMzZ;DrWH+VL^g*%F z_IX>G(8IBhDwX@AHOEEE4_Bw(xFz)4u6sFWzBQIo^0n5ubN%b|c!W7~i=aBF-I(mm z8rvt?GhSSgJvwCS-U*&j_ZT6)k|q&+g0bv{FXSP*G8gU zNo&43b0+Th3V*vBHiuN_RG{s7woj5EK6-9%HpT}N>Rmtl9y>;3ptjy;@QwJ1@^e|d zyp=G7_vl^28=-%auH@sj6FXaiiZyzEJ zYaFAs@_x-@&7+#@wmQa%VC9PS9=3iQp3r_}tE2AA@##MK8RBPg78DVd)Dg%8zZL(- zhv>JabCWE`w41W!aW57f*;G-$LO?)p{<~pESQzUV(U>~WVkBcw7u0PNLSOsfetwVp z;!59yh1XWKlB|NDA@X~wa%g{}p3H5lmx^SS3Cp(liBIUuCOz**g*WOr0l&%Qc!PaG z?WDq8*)so4mwN*&o11Vff8`;Kuj*MX1*|0V8r(P;k(3?04?r$Q65h_|tPbhJKMzY+xEq7PI-GX{IKnG=7HRhvtU=T)QW)Qpg#^gc(?*}uo)Sy2qv z6N7oP?sK%AJj~JRS5{vgKdByOD=|eax>y_9`^2xtK0ckgJnNf3d=h|l-YT6WUf79w zGy2s%)9I(wtz5HYSC*7RwYRHbkMNP*8)c=)84OnJgN~|?L}=)`xO!%jH`K+TYlOY_ z&8^={gxEj+OY?~_kaDlPrt00IgZ;fej;qKud@S&nU<5 zd#^@%Pkr9Yhn@K09>S5VSZJmEB4Ln>*6xb?BNu+umx{ zGaA!X1muFhkR~O9pd<2sx--}@I8P`-CO%ZfOcvVn9*$}+6hsjk`wg_o+?=Lg6n^e5 zjD9I*BjWN%rk{u|ZAZGH$PsJF{V#M23?#BdGZp)Si^5t*q3zlvr#b)7tsaq>kNgUc zB?)_lT3_@)8@Lm`AAQf?l{0l z>D+rCd*e5eqxx*Tx@oHQc05~~H@5ixcwlno=vm7^-!glZmr_>1%JdfYf(+9y^@x!) z5&zmog#zn1<;Yqw`v`C3Zxj_l5tzJo_A#0RLGd)(98T z@p)8li&jRc6(qi|uQT_$m3+q6RX*eS(SB9R^OTU|ICufABMN(4==m#aOqxe_Y07%K zM*A&PIy2Vl^WU6jf4l)-zy~aNj@2J-$uA;a@E6WA9=3fwBupQ z-&$++%$fsB<=m5Wky+5WCGX;hskOUTJ6ZKQ)X!v0pRdv=YXs=IBhC>eh)?HMh-Y2C zen;Ba(hAycz@C>zAmlGA1IMA)ITC&l58=#&N(vrV5*7E9FS|pn<-S*dkC@vfvVjKl z`TOyESBv=>dQ40z**i9ZQZ$nj?LEbJ$Ir+&yu%ntT8gUr`hxxAwMv+&zu~YVLu?`Hrb+W1bx)bdrNaqEgF{jsCdRROEgt~ z;?>b>wiBa3p`@m~+?H1{9Q}81VMwtQEVB#;iz&bgji+Er>02HBr#AsND&p~^wZGwHtfkFMtIUcTc_@*B?zE@wgePWXQ=sz&`=O!5H}DjWX03Zn z6^Jv}ZM4I9V2WM|d^Lh?vh=a;xnp8kt13!D`F2`rjUcmui`wy!{;=~#)*wEJBkBT# zMo?POFEmx#CG&uXse^shlv{?Q3-9oOd zrN6xv&Y3IIRAVw`&wMDmRQb7k>&^FZCmiw`#AEcFruh`3ti+V@*Dg~GIxcA z98P?k*MPO_3)0kFxQ)xSGDf#f)hdLrl$b}g2x*w;RYf7SCOwRMO2!=6E}BIX;HV-_ z{wBU4Z&@m+mzqyh*6-p@Q>|0o86M=tcvsmqF^8T)LqoGEIe>(dz8Nk$zmPXUZi-yUz*(&}Dot}BMA6rUoZgUpynA-^+*hi*!T&5cDfH!7O2+Gme-a8>jMF`wa z!umNwi*AkHp3m+GyRU-OeR9n#AJ6>A);@#E5p-FT>wB{M#K&5PU#ENX{VY&~H);oB zi{^+@ zjD;tL5?6lAV}7C<2XEK2C3BR~yJ(tYw^5aNX`Rmf;iCLKa#iH1m zmSsIsOqDhdXO#E3C&paDFUYd?7gMD*I)@(V;s|rlhnjDLgd=SgYQcZ?V$^!|$Hm4i zU*wb=M1J2`aZb0j(>caU$8rE|ED3!Z3+))=`SJ+N2+~?>$Ect9Tq(0vPLuX%M{%q$ z5g+Fn#Pd4N*#GbZUP1kH(vsevND~xWj_!1-{V3E8^Ztu^*G+G^NcMX{FNmRU_aLMC z#@+Gv-H=w*T~?o#?BBRXlhq|>49rr;#7gnBk=HmX zuoR|g_l~UhcxTQC-Pf9y_O34lziTAede-$)vqW}7hq#Nk&sjm4Lh`O?ldQhsuX-s8CKo0Guw5zB{fFb|#eb3Xwn#mq ze%aQlep?N5j%?->)XjMv>;q{imUw{V0G8c;@B=Dy-5 zi=P}>&vrAdL(^(ytXH~F?G`?uHRLbqOjhjB${Mf#Osv6Y7WG??_gF-1M=fF5)@iZ#_A> z#82CzBAH5kn@yn2reE2ob&&AicQ+J*$*f~Ozo8|jD{;>+J9ll_h zPzr}qFNFf~Nn}~#pz>4vECRgB0i;x2R8+jElOZLcUqH~Oc@J%RV#FAy}en9cz@jd>@AO0X}G2`0-;34`! ze^ARw(ZcWHJvT*Eq!&&tuSE2F1@M8xgf!VGR@F-`l^G4a6`Ax^M@it_k{ z?Xk($aD6X7)4Ik~fzq~Y>E;M)WR1&Ic*gcTCcTR<#OQP|F4N!pA|xmKL5H)hVf_&b zVmsKDwP}evJtxt7>;~x~Gx1wv5{(jHYbTnhQMgp=L%%CI?^x5pq*_&NZ*FiTVPufy zD~3Y{d=d()g%ZmKF6j(ct{H8|W-IP!J(8DsvkjenZ?vN2ld2doFd6;BC$95UOB7;zibLD;bR&$icCoAcx2wHn zy437Ho?js_d=n=x1h-_t?QSybNBbE=9!rq}krvubt%Q|$w#QdLTdvP#P2+oek%{7c z<+Ny+GwZ*d?plqSH4p8FK_4(&Nq)& zXv*9Z@GZtFZ>>|hfj*{p#A>u(K*xvH(qdNTXK6z%udV4qaMsGYSScM9@-Znha?stN z8kvm{Y3v6w{L1HS8EYk+SfyJg12 zRn{RIJfr;O;m({s9%sD;B;n|8Ju9Tf|*E+nt)YX@l9s187hz}WE z>ggN)_8Q(%th{L21ijpi?nErgKg7uxG9GxlBbj(w%Ay)E5*G`)D6`UPkC zv4i@Wb+o7CjKxHvcwewZ5vuuVF1~*tnT;@5dWC%uxf7>=zU~$m9+KO`U9eAHgM6BJ z#Wf&Vxcqv}S$PK3PHoe@a7*%Ub2@SdRW_MR1vErVmjX|bfOvf(Wh4#)3QyX@fsh$D-7u)R(R8n*HS^&hJ7I+ zdhYp?VpsU>^^>`I-$Pbqx?f+U8|r+b0V-Wz_dcufWwZ*Rkx`m=MPo}l)a5BVQzU=5 zyO$S?Mkj_wMj9=-lee%!xo5ZKh%1bjUOMOeQSf1B#ic4c)lcRljX5I@<8KvjOT(ot zqg*Cq8+4@ZWT;~AT5;<~jVXOiOgIlub$_UM4h_9d&DVp)KOa(}err8+brFriLR76# z^eJ3zusCKH->og^bN~C1w0a!)X^ek4u(|*CE@L^T66Kb6orU!Y0lap+ z^xv(pKJOZ`M){fkCM$LTwx4gkzWp%P^Y|j|={XKUw>eNpSw{^RfbM6WPJTdK%v)Hm zYE(;FU>ZSGWYP0+oVl!{XqwIxeVVUhIR~kDrWvT>(f|7G&~Q+eFM?=)8J*P059tb+ zk{$w`QG8&1pdv<8qcA~_d$@^ereQh#&@FbN~IW# z#lw&dr(CG@`qm7~u$9>SU30G8pHr%l}xLPB{uSN0V-)E(0rfx%s{Sk*UqYTi)X zr{6j9LYCSC%spv8oO)YlatD9q#qQeTt5t>yEcqzb+vJySZS?SHZ0ph6@UF)5jxV<39rDWv(|S}TM0U;Jl~Zog1Nhi#y{yz;75S&k*YQ(c z$~Gxfw*I5Dxm(s!C{1kl@>P%9o-TY~%K4LsVUs5hmbvi~@ZL2AQ1-c197rc$J*SlK zzZmadjrX*}%N`K1af_1HDer)Ir^tS@&4n}e(eK-ehiCp-%=`FiUd7V*kNnECYvy2? zG@^}GOp$yClCmD7dCumD>Y$umNaUB7`nL57DM%n9t4t$def687VJh~cxQ?!#`1ND1~7l~Hj5xuhNXEmf_34At|D`d|gQ^*GO0){S4{U3U;9RrBn{x_xbLe&d}bqSf@#Sx?1i zrtBQ|9N_Ryteo$z!eP~HRk7`Tq%s-lm)Bms@@U4s>&Ww7xkKNu7hmYdLN978$Ep=$ zYJUw0w-xr5v*=&#>ymUCL30Sr&`kPNrJra7)(dijZ9TQ1(6jM#cP$eETZZ20r|Uv@ z>f1gqgon8j&w*e347)7HdgZ4iC&ucJ?Sx=gHNsfy9NpsSy7agwpDd;Mbv`3S^@H6{grZKNz%=|qgR51 zl7g&0S2~i2Xz)4X9=Mg^L?zk@)0*qO3s@yOJ(sUNzWEIWST!~*`sWhxI*$f- z;5yL=Rh{b%xBOH;L+0F2<2{Xkc|%v8SmZ}mR;XK`Y1Cf%0yTe9v^~N*e&%z*Psh`} z_eqJ1m_S6cdkc#cRBb;RhM`K^hI0Ae%O^Gw?pnomi74STe8cZQ@J0ieZm$SJm+hB zaVz;I@i}@9os5oFx>ATghHpkukVF-Lx$a5=WCpxZsgsV)HOACTQ?1wcT2!+J$w1#I zm{Xu^#rbE=zv1!upgd0lR8Nyy)Y^;ujxD(QpXInC*F@aj&Iw=a-InG|{5j~n>?`ct zuxj)M{wpT~InZVB5dT8Hf;H((cdw~Djl{tWXveCm&9xkvTXOP3`evlr4^7!AlW36f z@a8QvsK^wX2>`~4Dh7!4;-$HXm ziM?japFodujOB<=I^SE2SE}!j+NMS;MB;b{AyFFz%+Ez6GG%r!(tv6qNz0Rk?<1+! zw;WIO*hu{A9`fo-*lX}QM`Q1<^b31xV~BGxo_5DnwR2?CBXXY2mpw`P#9qh(V@m8>z)Br|Ye{BC50* z9U?ZtPo*c;Xjm`R0Yyu#+%K*8%>0Ut&^vCx#frHvOFxAhV{2e#_)Pc?2R!YEwwSji6=Ry)xL|Ba}fcM`Fjq`8NKXXgxd#}X0$Q(0P z25mO$N?nokragy_RU_1M4k>U?l;Cw@{-B4KyA*Q$ts=b;?!m4Ae%wW^l+3M2RRi*@<< zwV?TG%-C0E+WkOcOQfN%gF{EH9hk>suc7ZI9Apm1v&t*%;qdqHQNAN98T>5kYw$r9 zmGY^5imiM!7Ty%e2|vFxeKBT2Uf8gzgZ8e(tm2t!Ouf93F%ruTVq!M1QdB82f`{4( zSNtJOU`}Eu>#FL+@HS&3bRCM|kgG^M&slb!Lhnt3Vz#fx{KRamz}{8k_3>KUnb40) zc9-@CDrtQBPZD+tAB4x|CpA}s2K9S}l?%#I4tSn$RWT9rdnevKIX2CqM)|AqIu-ma)(5@qi7{2 zA~MHrv8U83ICy0GTKxW6tP38tH*F=#XMZH?%t#rGH%{c!_6d@*&MH}lusEpUK1XDz zcugK(J0$i1crNnuUdxv;c^&>zzc{y=nJyz^4mL@a0UwNls;uZ19p(F~o1mZMPAQ{G zuWG}L!AQ&A>tfOQ(R0T5_7)K3Z1^vvZ;kv_jJ30xvF46KXH$v1*w^L1s#zj4S9+m< z-?)0IKda6m|1A!nkM*?Hd{o)FvisyERTJ|%D3wWr9w&Lx1ZAA< z9B6TVS*pd^?9Li-IBO*4pU?|Cwr$@XGaI$6KUf45wS5g*vFkwalZeOJ0h$e-<%zoA zuH^auw{;TNfno4aD^@?4(BZ)??E!gYENjh}f`hJ+WW0wK>ZX-{9q~PTG0Jj@0^oN> zzQmjI@x;RX8SgJ^TkgLj#;^voS~RwOG_|*bo<{jK)g^eAky>hV%|9&jLvzNVeeR70 zGPisjW1?N~!;#P!gXZ+Q(kKs{w0u}-*>)^ZgFWQl4ECiAx#uX+ll;KQ?-*l_;$uldA*+F}nIZJ+kl&JL=job_BtOYHty^P$B2#Ph9ETa% z=+2X9G*q)T(OJO3t6S1;o^pjrwP-~pn<({+&+T(Q#pCTgp4-m# z`XTVQ&s>-r{t9LK?4cqHk)F}Mj(L==xY|}#cZu3nq(7`b_qfD+io4rv1+L*S9c|#rv7@AWH~2EjXC1L# zj`x*?Dcg8v6+=k(TFuQd!K;IgSuMfm!8DuKxJ|9uSw?1I=CHDb?C5T50l9`R-0_E7 z12S7rCn$luS(UhhrV#;rY4xsp4P+%fMvgUIv9+}v%&U1yR)Vi=A=?plEa?h%IntGy zwGaW;T0^DG7I2v3Q#;P@H?7xo>c%7btNlnD;XC{#2H&jFM`Oizhflsco|deg5lZel zwVijDg9GrL`qOI=qh2hRuIP!sSf$CBA*{8kS88-J-5SoMm! z#xsHANJepz<2tF=OFVe>BG8t-VVN92{~spp7dph8vG$v<2fY3zin04W_jw=e@D_|OLEP!T0JoX zr=Q4=u<3RuL^YfdmQ;P}dGE6T)*t3$HLf;jEj`t}M^C@EWS7Y`aeF+Ed6rL$dpZ6= z0DuU)=PGu`ElB=Yy8&x@2%0j=V>(vp(O7#` z`X+!lykDAo9Yjw?I=CI3>ydDz5jRWks|)lpF4i4A0tFsE>hv=pb#D+J8Ov7Ri`Hob)0~nF%w+muJD zoRNC2 zb-jgC(u{}3!`q}1zA3*Fz01`F&P(%j%5oEL(H3fjmQAm-;yqO5uB+%KPt3LcEY^B? z6**GRflJE!)yiOxtgD)kzHz|HHKO=H+^ZdB`4{P&X!0s*_tZ9&RLjgd0`<=k z=Jv5t@9SHyu)S}6CFVOHIshKCD@1nJ)_y9Fs>NfaMoj*UFGi2nalfuP<@m|cP&FWF z*cP*~oOv&pJm-4Eo~CUvdpyTF#GWRwXrwpm#%guOdc2Ki9*^3`4?j8pO*bDkY)9Ms zLECf)yf-Zm!CXXT>di`zNIh3)m*F6O8ua0v?5~C{el9Fm=OI5s zPqhO@4DodQJ$d`yKJ;Q8zw1hk3%zb{^7;K3>vZC<=x+7oU^?B8v5xMaF6eT4FyuwA zg}zPgT~K3}ymsYeyX!2Cl#XgOyov6R8Mi$?ba%;rv8A#mqWk4A9^fb z%HF=ZMA6PstTR5jpgweZ@!Y$>``PD4ytY2lGF5K`O`Ci?b~3stcT?0aD?~yqot2le zHFex($H_F22QNR@W6Juq%F++I0%a3zPuk@hsIcT)EA40qwG?(n>t5i^=9vAsmMJvt zM$}D|Dx3pPrQ0JNQ=K>C>2`m0qmp1hgW`Mf%}%+cO6t3MNutIS`T z*N&w4&s8{SQD*#0b>O--ucjjUI{K=9AtQ70*1^8AWa+>Jv;3>-&;KoR1SJbkKKzL3E6{dJU0(@z$7b2zhFe?}Fj)@z|H_7g<% zz5ia`A+eOFxX*KpmDDNe9YyP@{vl6e#u(YAX=zVs-B_RGYKa*xh0oJH5O)Rdw65$@ zmE1o`nwD%jF|efx-e={|((iXYgr0ppVjG+83QVdx-{x-@gW-QW*KzWrb}op-~m zoAs5Op7Z$?UVt@Z->S(PC$^&jyto{1%YVZ$djMqVx*`5SIgh$eau2IY)A^se30XPu zi+l-43%0fOfAxQ{Z=gs8i>^;p?$=25FJt8FcQRru#V^zZnP0ZV3WfH>=jg2VI<~8` zycGP}jrZGpqMijC)lTr>L}R+SKi9jiCX;LT`tUnDtC7YzGThwc*(!B?T#=c&EO}(X zy$zbSrCPzJxSp!DXi~<^NnGVk>gv|}M4jljIp^4zpDOlN-({=4=5D{gw4NrNKUm6B z68jhhyRZhq&1Y7cMeTuG^~OF)<3GD#`}6#eet*t75uLdg5B5gT9V%t)FMp zzOmv5Wjg9P+MJt!>6e1`dO~OvIgEB^;BL)oy{Ce%SZ9c0>3_%_VRG(_6MwmyA0BZM z8J%pS+w$aP_HnN+FUWb`aKe-^^Hg->6(BFOoH;^qo zh01}Gf4_;b&#kmho#X9JuCy-W5%o`I6sX_#`&G3^ly`l{+I$}sU9Z)(w7ec|!KCl5 z&JJszOcjGol>8u8em&0k8^P2MKeClR2kh4bJy<9C82<2|;%}m%M_6kv-bh|jxuUa< z_HEhR=DpUp7Ifg?bk8e`t=(#!^Sw5m%jQH0)tfxY(0-$46J4!l$!l{C82%z_yq|CF zl+B?%tyJp10X2t<@jg%Vx|PuVdAD?F39Kk72b+k&nAeV3$Ym4>B$QR}@L^poom zE1?ZS@SgUAQss){{^)u;=-LfxdaATz-*RO{DVXdTkvh*Pk409hvI={_P!Lp+hH+5V zfG_>~)i}CA+Px92CJ|@s#8XJDew8m}LTsR@RJu~d|#{Yu=Q>~`fX}%&8l*Ctp=n(Ue@wo6%zg z;{(zT1yj`ppTztJf%)N-c8yWYq@tt_Ss5YyF}D4@h*-#=KQBNw7Z8{Esr+) zuE#>Qmu_gR>P!b6>s(0SO8np4y&1Z`8p!sQ8zZS7+;oj%O1Q%vI%KZaUe(I$t&6?p z&%2I4D7<_m>d3m=tCd|FnJ^1CaakA8ailKY=}+l^ME#vuXiwXpNVPXBg~b0^)6hI% z#r0ULzF%&Ri%;?iXe^xI#t>pJVl4J}Rb5EWqc{NjA6bC((*7ssseW?4Mn5lFdrt>< zDtEje32$e*3~M^mERR?n`_&4HoM-hYQOu@mE^8PEQAEH zu!lp>`d(<)Z?3K^5j$@wkaeWp+gfcebih&%0%_@uQZ0m?E6?k7|GupI(XftlVF`R` zsdgVf9(0mj@@`vSy0p?t-}pSR*G(xWD%%RJ+m)0YDR#DFtv|pRa-Tqc;a}FJi^*<7^=GD-g zoz;DktqiOS@=wpMv@pAr4$8ASr#V-@jnex}qG48jJtDvF?Cr&i;8o4`-sJS+fMV${ThMG@2Lh@ z>+n>%xgV66Q>ZR4;fN031(uqF)AZ;cn1@EqIZAom+eHBOvc%)nCp)LcJ76iUk1c6F znu<5V_b5x~zYAXFkd@AlK9gAA<~6ECa7Uc#C+tm;!HvFjCrcsU<5_Yi>X@p~IKxv0 z-Rsmy>z3?z6Mfb$d@4HXdMPVmp1b2GyTKvp7JPD+r@ap0gY90oW>QIXZDSOf_j_Vj z!m~fN$0@YB?V`;n21$vIO{kGoO7wvFz^wX>oOu`Wt)v18BMB;CqC%On^?uWOEF~eW z?cFk0o%rErV=R=Plil3zgn4S^B%5%961Ktv8qBZXJ z9DB7d#r(_TEx#iUjov&AtgrdNvW`pJs@Ik6<+tt3G4wp^4caS*=Xh!IYggitl6g3f zv6U68=StODeY1;-L;Cwo+LAlB#t-CAq(PkQj0Q~sgRBj4uk!}~us(KSbkJ)gv4iT) zylwzTt31S&IXYnh+MUpsH!Y_&G9ez4b!eyBU5f2axkh*9;*qomm-UX#xpMfyZ_IFF2>1vC+d6>p;1 zz5lKiV^bX8Q~VTnR($+qaR*ILJg7G%JRQHmUJeg;D#C3>p5JVRJ05d;&!Zae5+>ce z7ugnzS_E2WBiqy-j6dh6CnB5tt3ZtN5urV`C)=muXAiCZu8jVvz>~}I#8Wpie0_twZ(cI3kB}F3>{yWvt-l?- z#5B>nvb)N3=8-R4=+8#AS^6mJrTYfn5#7{0X{5vLF4U3GhZ8F=#|}p7#q&WUyUUDF zyL*(~TJPI;GuH9%N3@a&;)@go+Y`|zvJ)$BcdzE&u8qN{SK`jf^A+}4=DH|qntoI;Y5#H5+@_$=l{!(VXseCl$gSxnw#2T+J7iQ?1@YPs;?G3> z^L%4dUhj;<^#n#aAOAlW9T(@q{*DCZLt#(B>zwdV}kXVfyr2Eh8jZI95 zh2#q1OOBsXy?euZGD?25KDN4ZwdK3^SICN$4_sQkeKr1mBL0E@Sg>>TBU|pp(B~{H zLzmE+TeCO+-i>)$4HQOi$~SuHP`RKkp>xr~ax`{qD{W2$ZiB#BO0R{~f$1F19$R`Z z#GmT_=UDHWit}~LI7d_u7+S;cypM+dwsP**CNGP9BO&XnR#7v%n){^<{A6VVn|;+1 z{b)8GBEO?oR|G|HebX9x%h2wHtj3&b*R9HxTO84%dV>jp(VpnFY)NI@E#^A{cntt~yWs|7g#T zYJL0nHY1&Bu~U}hUX`qdw$%?&%KB5!cK=2C_}0ROlZR2;#uxSUR{XWZkTJf3bts01 zvq)N;L-x7GCC%To3fETuv?}23+O55KS2%kss@>xmmnz%nf1l|>8F43;q0xvFKu~rO z*)@QE?K$im=zX*#Vk{CMR4S3tG6~Bm1TWEW!(LG7wgO@i{6eNW07?S{|vUu<0~IAjzi&JcUIc!gje<81{>O(f0}x<$GezF zTDd!RlpWMHI|ey=-*Pi!L1}hufrFs6v`xJe{VsItE1^d_2UvAIxz+BJ;t9;X=tbY- z-$8U@9F60d;h$_$Js-qN=%RmSU09Agjs)8B?&h(Cbj+B$AmATgGgb_zCoV_5@nZa+ z3`;-H(czurvr!b))`>Qa(0?^C{aZVZaja5l>&RG#{yg88MTE;qL3u-+gqWtEZ@{tj z*_SQbx?6Qz((60TMQ!>! z+#9A95WBQH=JUC!mCU(gTGLN>X5CM-8?uF$?Ykq*9L?Cr0!GQ@lQ)dQ4vD_GO7%c` zMZ`f|RAV>S1`dxtTM==sWB%HoCTW>xZPmW@KR+&VTN;hJWxe5zn@n}m0)2!QMH8k9 z4(Qwrbz(*Obqu`px@U96-yq@BYg(TvkpIv*QdSQ|sW&aY_jXSOg9sq4 z@WJ5A`PI+hyDdUhM~#jr(0QpUGgJRWv6IUAo^RY5-=4~~ylR!rqvrWZ#VhMZhVG1U z>XRM~AF~rrfki~CXpFRw(QS!sM5(M+7$V%3OnF{;l<6PMD8I&>-;Y_*4>0al&-!kW z#o_uI=Qh-p#cS#Q_}c|=#=KUH~eR{N3|ZvazWqwJ8hW0-m9bnLtw#$q+zcPDPVmWl!{5yL`@~?U+B6rh=9L>YJ z*32Fqqc|qKS(=?QcwCSNzUS#Aq5*Q0{pu~AUU3z%SdA&v|ISRxwWJZ)e(Eapm~+!q z&;Re2j&*pmjr|;4Ba;4l#_>;w{>-+o#NI~UXs&yxh(}U$mrlKrwR~?C&(6KD?-0>$%HiXJVPCmnb?4$w*d3Ka_R^~5Wi)#EvSAqOHG;AZ%S&Eh|)Ap|@({3HQ;jTOrN`2T%CDehOZGtMHWGL;Hmh)raNVEXC@FR52$CM`qs$8s%61 zKK_I}SiAC_tYlZr5x?ch71?=~wttTM$*Bz~;z2W2%WQqeoEmW)?+vQzX-B-CDSJ2D z3@!Ef8>^}m62O-DHyT(g5v(38H=ag*Gm zR^8Ag+kUH&peYp@)-GhMd5dF;ibeQoqD7uJb+VXtWULJ7X`Nb8)qiW#`+KxWrrg;I zMu27Dv_>ASdRxu5G@BHq=EwhtliX8w*e1*w6%%95+S;0e(N=OR2s7RGGoIe)u5 zR*#-a7kI+?l=e}`RL}}}Jo?yV7g(_>WZtD{$EBl@n@K@sMl#2lA+y8k{cUfV!?tf` zh3Br2IvT*by#Ha{zERcz(U1UlR zV&h5M$*|eoz53Z`q{E8ks{NX`2hX$60_{COpY}=cQb^yKi!yuAv(*$oVf(f=nxCMD z_BC~~6;wekiFDMw%`@-EI^vrnHPtL6oxAwE<$YC|9J$Co6pcHM-DbpTsx-A@ZukD# zLK9le{R&{=HgBIV?@C*J-f7zrrr>AtbUuc0LzThpsG1^k%Q4B$*!$Yw%38isJNUcc z3)s9Z4eS-~ghmm6)VJIIBjObL<#hUwXW`t%8-GXtKt1vvG&*%EwNl^HvR<~c327K1 zZ?d<&s0Lr}_NedT=jedMTCh3CK=z`X98eEa<{RXtro;B(?7;5}>2en;vDKWx9?Ns6lcFz;ygbg~@-O!e?^@}Z`)1b5aIDYl4=I)eCsb#syN&2O zI%0pOSOP7{+CWBU#6WXBQj|;m!+b@S=VCtbyH*htU9lT+J#s%JMJ)y&M)ZiT;rrOr zLXU~fh$WG*v{Ch&d39?FolhKTb7O4P?^~Nk^*3Rg+W}0;gR!0>r?e`%3l~CiSQffA+E%q;G?j}dOA<}S-q1)J|4@2 z`hLxfrw%8c$eU(rACYX8TCA)|{Xn&gn30LtyjIO~J*ahm3DzhdD7{VFU`2@@MFz`1ki^Rjo9GNBVA-!>37@Y&# zydJ$TzgP1B<+=UJ<~zV&FZ}pcj0+Yb9b|_^K#4i2-CTYP63c3HMDj{Fhc1~q#kSJv z7I)DrPKj)$P_gaKYQ~47R(mDR_fWOT8W7qF(uo-q}pat1DTta&mk8 z5k4NRkj-S&)N+jH!64NTm4l<3=(kX(RxaSLcWCtv@gB2yMO9|S5t_|<(*;}2(8s6r!tqi60Jx-Y$sROMxGDd%+TJ?M8R7MRt%a-eY`G(F} z_rDgpPsa67tW#XmZ#ehHeLCC>b0PAY3#&gr6mpubHo| z%Cr&1<|w$!_p7<#bN+J`|Y)=n1|n zI={5y9(r0wvn<{yy24vJD}qLYKSCbHQ(Z?frTu}dqkdt`Z;)}pJ3M6G`3xr=dqXWz zP0goj&Q)WNZ7pX%{^r55?s?u|T>}BJL!vO%InB4{%KLrpA}$j3;J-vwk0fCIwiz3~ z*;pf;8|7^C^HSc|$8)rns63$U6O#TwGkTskPPABlA>v}?A$TOJEnpxXySLq}qI`K_8f_#)83>pmBP__jbvz2 z>p4bzW$iZ~7g*v%0Tr3IiwSCMy&EwkU+`j;#5Lrr)Ytm8sD?qs+m_eX!Qh?uAdEiP z75JxkMZCcp9na9Kpu8WivQ5vuD(aQ~ZRgd>pd{(9<3Nil3)pnla&05Zo#<{bqUSg@ z?oq9TxQ*C>e#5NbXbg5*i7pwdp1ivdlDM=dh51|9I@ax3>zvYDB3Q+#s>}%yg#5Jv z%2UdN-9uwpFUiJpUR>!eevvU!yZaqxG9LAZ%`2N83%{}xqs+%rFCv~#y#`c%kRG^( zjiI5g7J434ymF^!n((I&$CLQKTCXHlM}mr)@y30Hc*Gw?klQ@jBEZ~gb{FVUz5zeB zmz#O{dW?B_rEyv39<9QD4ow2{)DsPoi$n4}`6g&c?7(yKyY6~P3AjT>-AtxPF_e8} z=3IC`)kCQB>Q9bs6vJ=NWBhEbjH!+xodU%jEn$b&6CwodwYhrDos!Dw=)Cb>mgB1t z<&1z0tFDT?sB2nkUY9w69`3|%RTJ8VCPoIw*^v-s+fm`Fl-CL;)p5co(2SH#*Aq8% zhP_VoTbMt`hQ6!GD}~PN_VKvnW83JWV(6^gD7GYbrMjE^Y-gF*xTy+{@JsRmg-zK( z^h2mC4H;ooi}qO`*sR5-3fr}v%+WII#PB6oYOh2@S#h|nT8JJ;pOzc=ncq!AE9i=- zRRiMOZDhEFb+!q|XCN?|FRALSIi=>vG}W3t@46o97~U&kzlS_gv8W<@bsjPsQmboU zn%CN6o+dv{5j8Q(D7y{qa}H~kwohWT?!#R#xCL@$f0x($>X!1K_uwD{A{+1oZADVz z`(qJdo{yg#jVfjC3X)-?fy!G{M|&a8H7L#lqs;fs7PXYe8A}uU)aQ;)u1CK8tdBUH z2n>sKMqqw^80*-dUz+;>q(xK-3K0=0(yO(QxnHtJkOX)~J!e?ryt~HM3Tj9qwGQyo zzSn@SrA7lsRG~Ej;9ZpoLy_%H(J>ZFyphtHVifZ)vtqEoH_pk{Yp;Q7;#XsIGPZWd z+H@I3Oq->pbL;z)m&aUMt0X`)g=Dplq<54BT+_#~Cfo6a$Tc4eYUcRAiNYQMs>O*$ z?2jrK8qCw~Rc1CSKvct6AK0oWgB&Ac4sc7+uYCgiLswM^80}-An_gQ_VQ-PiL)l{G zc}7y6n`h>}2yFIzP{kfD{qT6Z5lpBTeh2um`VdnrdxoG*|kzxp!c{ z0S%PKfNk(yy1AM2Ny9ISjOV=v?kKQUTDI${O+DC_o>3=h%Q>wNY(Z+N!9tk1HhP8E z%KCJUgPNja26P$EK@5l0ieAYWU1$H7pYw+Q49|s!o`bq@)lckWr0sJlj@Bp|+Esd{ zwvS%*H19zn_1cqW-pdwR`^}uX$7Z1qIB(=9D`)*=n@_K*Rb(o84m4@2`NiST<{k*- zer~1T|FA+^?IN^@RCA4_sbZ$;j#pOF(@oqpI&AqR9Z;2GiFb2Nn5KGOZteprPj!X^ zPH(o?Rx?$RC7zc5A*z_4;UyMT{ee}Wlh(iQOkWK75sl9y=p_pSm+?ue0m~{>JtI2g ztz{ehsMz4)^Mp)=vvNd#TIW39m)F7S>o+Z08{32=?LDc7zmAGANb38snq1S($ZlCO z?cR&)Nk)78DR}^YhZb%;z8wEW7gY12+cWnf`YIW?==h-@Tj<&%tLieup6E5W(^}s0 zOqs_U!Fg8Ji|n<#r4Ac)hAG08{it$i9};!ki1A5~8;pxK-P2ce*@;sCHKp7QVf3Rh&8i_dK0P~2ssm&`N zm8atOXybU!F^}IVdYPwh)vrxIj4S@`Sv2?L_tGZSd&J6!^1;Uu73d4mAl)KH9OVXR ze}8vx%@V8?+P{!*CrZ!y7Sh^{Q9(f0p{@iqJfnIPcy}pgAKgmh@!5ZUC}_-;o9j0} z_HN;I_0ZM_GE<@UJQq-oWvWuoPL?r8nl_R;YupWPTfZ6Gdk)SU`tz5vE1nZh(1|5J zW6$Q^6uix`p_Y9hcMuCH7(>y5IwXWl!uV>RODk^AhN)9aCOI%IxzHEA5Am=;P&h7yG8psThO5 zhui@#pg6yM^r&L9^f472j(bF_wNOOe&%@i#^Be-+Pyj`b!dp^`@?r`!qZdmg(I z14ZAwF<&o5X}s;hJU~*qN5G>%0~jGMAg^f(S|4_B1OaDV!_tXABSddKp82gCJZ(KW zy30z5ch&1fXNl^L`i*SFc))5oXX1KR>b`Cqu>KHM#7mjIf&xlUu4rS<^uxV*cb7b}Gb#8d3>X;)F z?-J?U$DAe*-yLD5s;@lQQiU+J>;KiV?u<*WhCFqPEMAyg2%5k?uQF$X<8!a$-=imO zgw(FbJh*a$j=BA2ZHCb}PkD9qm5{qu-{xW_*;69%G<|$yJR$jWK?PV;@k!Q(mr5kH z3_%{GY6~4#T(_qzcQ|@06n0}B_AQ!IR++J|IWT)d4oXm|7O_%ql9lF8l`on(AzjX)cSTZu>ItHpD@MV``H zn6enfkbF_WcQ<&v_VjV2SFi`PkkPG`uT^$t8NwDcF-)( zYbvLpFzG~kSXv?mxY=TWa9gxUs)+-#EojZC#xsF;@~NDAsQDi8zITSu2i6UeV+;8e zFrxtfweP5QEoqvItv9Xlvn;QVnxs#;vjFBp2OMv8&Fgux@C~b*M`Hb$#HBSVvP}?q zVig{_o~LSg*+;APaeb}7`W9>P+=rxJ6Y4w^oaHI*zES)r?9X`Vp}l)Ap(-PBB$l)% zrfcug@mJPFt-aC~$4ANoRUxk9RX!7Yd^2zajDlluQ`(uCf=~QxGx|@840~NRZ_!Bf zLMJzwk=3K2%7g0Z9QdXP2LDHNz}xmeMmVAoN#&{7P3QYj;1V*h#%Y~(G@kG~M7CfJ zyCu)x;QWiR7CgAWU_vI2eW1Z@Rs;QH+qyZNndvox3dLDSg0C1nw5p5n^xWQ3-meuN zTC&o7#YBt>9-D7o1%3K|6DOjs1S&ip*$GduD!68yXltvIcb>$Sgf(8$^L(L4xDS$e zZMNo~wyc9_RIkJoiD%e`^dY0jszcocuBh|ZwSvJ+RH;}iGdves&kXXdLW&W!{R~%P4DN1R8ijd8@m%wF zS9Jm;*pGT{Z?(waQjFbJ3BIx?U2~ea=Ak_qIg%3+_I0@V8b#Zt=Pt$?)X@$P6^*8^ z8sTonE2gr~pSeN0$H7s~CS6r68$PRM-&%llq^(h{pLgzi)7zyy@FeICbm0jy267Cq zXpBw>QC9nXK3LhV)|qu)N5;yHwa4yNIS&`v~wD`~^*y zzhGlYJZsB>S`W%zvXDRGqsLUZl5D z6a!|FRrb0y*MG}^y5FUk6CZ$oL8FxYi5h#P>KV!HW%0f@i{*hdrReg}ytYno{FRa)R>0H*eila)Gzj)b?|A<9*SA3k$vYA$8GtwzVjhRgfQSfe} zlpfXO%`0WzjD->}kp|JXGFEz6TpdD>Y;Tw2L_X5zSrA$EW6^EhopZ=k)O^Jnhh&Vp zb8A8tAbLjbttEKmDfo?kqRHO9(<Il=O?}Mta*W4so{C**J^xpsCD?OX z(41as9qCE9(;H42rGuV>3#hcV4FxZ^wr zysG_7if6nwk1g%zE&rya-1C9EyL)zxXHPqXi>hU|)uVNo=TY1KiFW4Y3Tk#cdKIiy zxlVE@zu&|f`>`ckbjUtbIRIQ@-sp&=#knwr6u0#yyGsRr)~>@V)}@M6a2Z2<&8HvPudhW7Z8uLUNSp+ z7i(l7UNBpY3v!+4lGcUIVqH{%bdo3Md#&&YzqIN8GU;%xh*_L7V}s%Xc2Ln7Zu4YX z4G{scEvw)kQ*Pca7dPd- zq+dN}#YztJ;#tONV}3;vjuGHU zi;KBKU<(vNDP!(w#J1}DrT{;AzFCi{PS5A4MzrM4o%x04I(tZI>)fp{T|UHhPu3z! z(i)+yjUxGpG>+(nwb;6_Y(1?yBfod`({=r&oYrf;9%~-+yw?lG>C6tzRqGSCdQ?O+ zpudfXepqbre9XQRPxL&nCCSV78jX!*Z0KA~THSKb`q0nd_19QdD~5~cEs|6Zu{u3e zE0Je6)uU<>ny(!=+wZZU*6VSmUhV0VpyBui8fqN3Up_pw;uv{6KIdxu8ykiXx z+R;D9I{TmZdT{z5Vn*U~`XtB@pWd)ieH+Phf=%q1>b-t1i8WBO$77=r=yL0oRkP%M z;TBI=J9?dNk@fmsgonP0e$UWSVNGr0BE~YuzZieAj{qTDEvR~H8Gs+mL&T-^2t`=w znEyF{#r^TKSQ(gGZG~P!&py)rX*yeUfG778uRIv7{cY7?oYA76j*pW@ zerg|P-s>q-kIx&;g`R+dthtV2KWAD%NuEjz@yOa=9gW?_Cf2;UbRG@bF2wk)?C`+b z@FwY4_Hp9Q5Yi1X=Q~k8nD!X=+HeoJt5Gra+ zmwrJpL(WYF41J>?3;reTt=16>^A^#n_amTbz7N^Hmlf}7n>+~wYh%#un)$C$Ghm#y!t@89I_?t)bgJ(dsF?7UTd0?LlDJ7!M# zfjLAlbYShSWPLqqu*~sX&|^Pl9nCzCzV`YZ!)F(H*7gsozFK2ev_sVmY}PZA??DsX z!JbX=$R;Ek5S;y7MKB)IUt|_0D7JwMNQ$gky9}!JVbO}TB}I)Z?Ii~=_wHIr0sg8^ z%4jwB!AIL}dkNa=RTCjohSRP7y&dn9BVdz66V^e-n%4wIJ<;>7U}6+}7<@GfpgU-a z{%hS&~Oi&+^dmpi>k02-eT-O{!sF5$K*qPt93(PVMIne}&_z zW9@9@1irt=HM0@&+8*H*krDU!AsNtYDF!eqg9*yj>dAaXA@X?gNplUy_N?XY{Wfis zlB0v>#FDKi-9OJ0!!t`TCDdiW*-=&Flci*ul9sA9a3D{*9S$$70j(8P5A%*V0rTp8!b!Vx^Qv{zG~JPL(87}`Gsiycea>M}ao-Dn@7D^=uA|tR??3F*7z*3yoo9NSs9BiL`72aFOtjl{(po^*y%j-CI3?m(j7z~ zZO+ddLIw~6U$hzFyrOCP?H_1OinO2?Bp{~}f+ZS_R>-re-z(d1d&-2U*05!t@!`fb z!%63^9&agbUXmo;OfBA!y|g!97z-59vAWbzA-+(;ds!*B5B>maz+?0@j^Ytp)Ld_q z{;vo9J2&hsV@xC4{M{a(JqsGoerAi$AAchJ8Ck110^0JAJh3zrI^`>^^Fj^&hO|fg zr52!UE_qjLOe5`U?Lg?jo}m1UW;37LxErjQ&-dC!Ue0k3pMVw7(d90B&pDFqh->n0 zvO6m3=D@p!p3zvcA)Oml&L)44{k3xGXE1VVPZy1&D^vTmzMY0h0nEp{Niwd(q;)6< zN7|-2Ye8_v^B7yu4CW+Pr-sfRJGz1AY~_`xSp5#ZR-G>L_i(=6k&&o6*B4VbO~iV; zK>_rUQPw_;k$kW`x__bBNS3iCv10A6m?QjXOfp@fNo2)-RZ87G2+o08NxJ_dS31&+ z(To>Xx!YWWp&v_18NOfmGnT_)_>B>!jMnnC$l9eH$bq|EWcTPxdJ#+aCx2A5XXk?| z4p@q#o2=9bDzLmG|+;xY)`q0F@wv%3d zAF9C@{>Dhp-0&9D^o2VTi?`SD{ouYhRndlZKvSM{P)!Hk<_>mNL8X6uPgE#2uMv1a{8-BfQUdBse>lF&%vNzHMsFG(C49zU()4uUv7|(pCo~!5V3pcFxJ_ z9ah+Dr!>ZSfkr`NC4b*_EWYcvNQIo|h4{C>ILi3Q1dc6bD$4oYTlM@ZV@5*CwsKYC z4WqRc{&v4qk&+?;)<OJn)vsq3boEFX-`J=B`5%2+U`R15v>8;wC4e?f``w< z|GgU5#IUz|`XA0#S%Onku~O5rQ_b3DbeyJN7kubX?0KJw(Q0@3dRbQ5llmS-Su^&+ zT?)cg+k8D}yy!#>A=M4Dsxew9^+b2P5mhM)uYp@w?h7lKIFkX*!##YXk87SnSd-hR8Tym0+ERtN8p*@b+-%fM0N86OYDxC3jH0Mcs5D2sVI+ zs(ZrJAzFG_d3%FFdz&--1Wk1#dhMyJ*kj3DkMS#y$*zc0nHv|>ai~Mq5Yu-jLiPD}~S)O`hoTXQ} zTJpj+or*9D2|Hvz@{rirCXF3&!E*gl3G4GWw5{$s zNpFwD{XNR%U1M&utd=TOSJ5BnVO3b1u;<&WN}lwU-+ffp*Xs2rYl--unm^u778Uo& zMx5!mVkDm>S+?H%W@3!$r)0gO-B-tqDg2!(AEju+YM4%qlnrR!xJUy z`4JDU#kly9yjd#OcY7iKACC;rtz_MvuAu^^=*srBorG^M8GaO)x)Zv*4o`31>ThMN zrSH!Err-%{$^M~Q1H_)y$8_s(wT?BRt7DJ6*3YDlERA{?wM^G3jBUIJS@n=G z0-B{BDE3;UmB8-+jS zbiM;k?1jQfPLOh+%fE`f%D;@!xm^xiCXQ#Xm|T}WNhtV-c;Z`8vC$6K-^bq`h`SY; z>Ga__w3s_PZsAsRPW*is_HsY@?YAiz|MUQIg}^>xg{w$A1)9 z-Df5AgdjQg3bikQE@Z6pjriMgRAkA0P}bH~o#Y{uQ)y47a<{eT8l$wM+$s-d`rj^b zQ;WjdPhF}aZ;r5P>~iZ?aXZC4AKrwnW%p}aVf$pYO??o%gT1Wz-gn#ild&gy&eus0e-QQ*Wnyt#E5lsUf%5AAQ4kjscN zO`k3COpht@Zg=v#8%WP=5UUDykyi`eae;jlki{VXxRT(PnSkqY6N+_!4KR2XT{4EoEEc zpR&xfyV@tP9J$;|BtZ^FH`OTUkyAG%{VlhXx1J`>>7847tBeA<-^|fqd%i@y4$kU? zi$Y6liR=QcvnQGBho8kl>iM;~WU#P#@6lT`n(=S+O=tYy;wlzO7SvKczBg-5uXYK+ zeR?;@Rq(0UH2+oYo{`xLx28WBe)vNCw#L))!aTo8zen`mUYhwq@Nai72J7`?)XzdM z7`;^7e?^Sq`U1A?Xa}pmRq)lwHZz%;%_;{ZUQ&KbMK$-9Z?}%GX?nfzxz8Be-H<-ZRAh`# zk_CW0HCi~l{gB&B^QY;jGyI}PO!Ng3QI}5~lN2&;G`77EvH+pd3XFKSE`sQ51lqNd zHKHBfv%B5oS$jDCkn)iv$TX;f&2NLVE=gAQjEM>@0^D9wJQDS`Hl|3vwDmRfZMmM6 zHu*{0qBGRx2-2&PcSR%626Dx3#6O$0*K51Iv}2lnKf~-=jY@o8){0L~7p$SJJxk)F z+|)9~*Apud=km1P@MyUgb-T&_%uM#O6OfiaN%}(HzOF+wn|t*0+KsvEukTRVs&$yW zm0(m6Wp;W?kjVM?GyVLk-)ujwYRcB&@2pm%(>|)4i5jZMerA5JOS?+fn6BMIzBwjk zwe)tF6XfSaQT0~p&AgTDTw!D^x)Ac-u|HN0#~qr7$YaTSljihMpsJ7Kdl&F6>gNDs zsJPbedH->0ZTnq|<$f4?L0A)aeo(Oo2c$w+ws6d zZqED16({m$h#wZYgF(awxjOi%ou2l@yH>Nl1_j>}jp?H5za@mX2D#1i^M#gNpY*AZ z7P%!|ClT0}^9a-Qb{S(ta~&5yrqQ7_>jv2T?y7DsHX@iln^r|0tAJZI9%zLDm^ zpHkiP_rt{BN-MM3pHy0t9;kk7uSS?X2z^H?dS;!F7nYT68e5$at?jO(`Dm<&o3553 z0(6J!fMN;wugYc3*KH$tuMhITB6*&F$O+JER+1-o>vvDq(U|)U>sQb2KmE4!v!=GT z_a>#R>a**tQ;3ZAszTE4eM`GIIj!^e`tk*lly2M7S6KM-d>mEZk*jKn=$Q3tX-WwsR}!5f;+zqq_#sMQMq(5=27_ zx%q=g4z&H(@w6#y?{C}>jodbYmMg*?^N_g}sn@U7k~wo~AFE>zFHia(o+eC_ztz!t zicNYy@)pU(b~=Jd{^ zupA1&c;tBtgX5)#LA zpT`ljk%6_#!=QmwHq0qoiDpcmpx?x(9znen8FN)ST2yy$1eE~Q^;K2DuIR>q7R9k6 ztHrZGo$5$Ly5Mx}@BlSmyn%%Hjz1)wx)U<#L6^=q@niB({;~B*Bjm~4MD|g8vq1S4k(A@?F`e~U>mxY?H)Snpd5d?p&6bAk zqV~!qOVr<1)9Lk*OzT^%O_|fiVpAbcZX4$w8hT+B7a|q>xwK6d<|l3SN!xP^`X+g9 zPg#qRXyiQp`pLpvzMWZ~IU`Z@2Vd|)j7BUgJ0pg9D85npc>MQh=!*ENJMG8}kup2y z+#{I?!&|8v*1mZxAf45&!KJ-f%r&wTbB;Uv*4azW1w~*RnFrLeicyA>Rx5ju9>2t*+sou2|~aZH|;yS~I{ssqReyXPmBwnP{1kzB_s zVSwaJwxS*2O1tfVCu`2FSST@57%Y44Q4xG0Lav>UqnOe5Bd+i_5KYqIi-yU^dd_rY z*R8J`Q^ks?x-8eCDte>Uprbfc$5*U=VI_sR6#LV1LSwBI&6ErkA?Ny9J#n3<&Wc>} z4B0{JKA!Qz4SKRXvv>>6qd%-e(FOn3%?-+Ju)j7V8)-nD2Ww@GOTMFz6JFlu8W_Kg z_3?0$;|L`-$!t@7sIJXcW$ywi;?Jobp!HC4ZpAM@!R)%!ug*tz zeW>OF2eqR)Uyxef8vjJdWhc-|87`FR8?n$$2F$a1!%+jeLd1%XkS`f#88_l4C;*}L z-}c)vihAQ^se;M{1wMPcSDBjc&^HykQc21 zH?y-qlwJ-AgU_RrAEwB9)oMtk-8zImR&RGCPI8Y{?Wh}m+%@2eXWoVvn|yVvV~Q>- zrU);Mnw5H4`$5Jx#-gvrte!WnJnWg8+>f8A@7|U^IRi7y7hP(1+C|6u25QQw=ZoyP9K|Qf0It&Qu$Ja zSQdsS;vJ;Heqv@MmTb-Aa{cp2keP&G_-^jB+W%ZX->^hsHUXOx)FFJ%>VcNI(^b9yf3CaN_xb!GBIim18u zM75R?E^fwG>^#5H*5^aU{Y`m7u2HgXBP`*EV#b>DqM4Z|Z1ydt6?|fc#}Z?ldAw8Y zV&os~QH*bMbaF-N@yK5;L=F0`=~T?=waS*op~IW2?E)Fi^;Xg6t6|;jVv@N~%j2#+ z5EqW5?tCq7A$n^1T44Fb)r~|C#osQ*n*Jt!^3@fF^Sr-ci_W|5SaD}yUBcJX$ECA(5XAu;T&0p zVt07U?~*2u+(bPMsxrCdhll_bf~Wj zW;{=S9e<;)gWiLPL_5~CR&r>j;-Dq7Am5C+s3|4dXdg?xB|2db`chYL zeNz51weQKI141_Zbbk+CZ$qqEb6Q=`jF5RT8Wmld$nY!4zW?0Ku6E7S3OkCsOiWtFUrTd2BHk8#U)gFtq8i7M$l2dvmKG@HY2#woAdneb5#zfZ2?kSk5xIh{rJ>o8-Iu`h_vzlkD-{yahz}N%hNGGj*(fd*Ob1?n0 z7Ul{(dK-7`Z?Ab<`L;N*zd72hs$zNKC%*fkkS>w1BmoA?D(lW^-66mSfy-!waYXw` zNCoNgoociNw31x-wj{ZedG}6{OMm_f&EXrU)h`IAL7x5;Mb-hf87DhHmC4|Lw4!pjNAIB1!reFTityy`QSF(+~m-R+< zg&&nQ)}A$Vum9cwnv4eK8MBO(h&mLlD{B?!t8Ww~n`ut|S8S)QO^1eipXSuHzC@IH z&i385Z)!}rsrYH(&t}?<&g<<|K84i~cc}gkl2DiHwQ(eeo6+iO$D8DRP>ycq)7`6_ zbQ|fc&Qa;83ujj*}k1c-> z57oA@!HgU#H(XKi8d&>0_WONV!{)g>)_Pp5RB-0@dU$o+4?E{e#lU%{R!8!QSJg8! zM&7?vEkEpWcdw?V>ZbHVeq}Q^vTpIsuwcG}OT>A1=$S`twW8hCA-+sob1XpKfqzyH z&}JIub!;LcYD4%T#-TQ%nuud1um8xQt$&?9K!x=NL{Vf~<=$GQPA;g6Lwgl?*cyQ_ z-v0UIOmKVtocu)i14dH;VO3P6=;7qH&NjN)|9aQkn)Pj)xwq%o6!edM99p1rL7tfv zv)Z)lcEy`@-+KJg!ko)~_3-BA%t>0iYvuc0iS5HN&>W}XtLMo`H!(hEbTqa(a%khO z`JAuEoI9b3y(Eky=xeRQ2$?w#AR8tQ_THDJKB`^hdfc6CKJYesQ<-mXs)HnL?dm|D zrFB@39y~OA2hpg^de4o!Cx}3*Z)kVrvJb~=&;CW7uLluTji@8D=SZEHFPwmqZTz@@ z)ad24AKSn4(D-+l{-l?>ZRQW-Q+{6T_~v4cF^{m<%`!9Ipr<_TID}f2yfIOmIQ0E^ zruVl=xoxNBqxoBVv0euAJchYsv72p25rwe=zfP^sdwk5PUI9k(?P8lL0IS%Q5mJF& zU|VKTxhk*urK0c9lso^j(^1_Vsj)8#r>mu_id=7SP~A{pw04HJjA3ALt*TO^Cep&g z;^V27fj&o~yQB3CMoc8&?u~8g?3cqIJv?2Fx7vy%X1o<-<$K(^k%W6?Rl>q0PWR@ChgI=)@8Y&QQugtY|Ja`HLH=< zy3@!MzI)5*vq$YU+w$x!x$PZstO;LD^ZSM7@$P3`x1w-*T|rb3r0&o1BwVa#O*T_3 zT~PFph+sQuqm5P{eq3ljA8W!ZQfovHFRb*DYQO$|HMB|H0LC28U~P2%b#(O{wh1yo z9bQ;FP~>k!uZ+o!C|Yl7M72kAc$#W0bSK8re#JLqeAQfxYNjY7Aj{KS#In2!du?=< z6Ctb|?teGpj=zgP(|?sTT-)Q7@fJ>dK1N`j;8fO!;UY9r8@?V@clijArKLaTpf++P z_@ka->jrNygI9?}GfMK^Rdi27gS)KY@R#CeoC{E%G@n^(&|Z$CAX&IH6A99%=@=?+ zYI6rAnyQ>RS20ch;h+D*KYtXZyC~kR{{5e={;j`#@qhd8AHMKE{-4MHdFMa9_La}w z^MCz!|L*_(xBtV#|Ifd9@2UUg|M>lX^IyKP_vq|Duf|XQllX@RJ{$kM8UOJ2cj6!Z z?*F|PfB4+qUoJ)e-39+5{`()tKcA0(mVS=>?}~S>mUlk=lmnk~;8PBK%7ITg z@F@pA<-n&L_>=>ma^O=Ae9D1OIq;{-fjd@pfM<^V>e!zjk2M_mOw=*rzT|s8d-BN1 zFP{9%lP6D}IeGTv-=6%RPX6yF-#Pj2$@fmafAWKqAD;Z^)R9wno;rH! ze?IlUo_hDxzd!ZCsSi(mbn5>-^`D=9==8|1BwKKstu_s+h5 z_Gf2*e)e}~zi{7~`<}S(`h73n_xgQr-1pvnKfmvH_kH31Blq8V|FQe8-2eRjFW&#s z{cqg==KXKo|H1tq-~WsIe}Dhx>eKJefJUw`1a2VQ*OjR)R(;GGA4`oPBz{OW<2 z^n=e#A4fUn&yIce*qz6Y9((lI?y;{Qd+yk)$KE>j<6|El`zUzv+hdML_ZybO3_2{SEoLE z`p(lwPoF$}_Vj}*e!hJAN2lLB{o~Vb2RA=D{maw8I{jz&e)irw?>&0&`FkI|_u9SB z-uueEuipFGy|3T<_Py`i``*3p-}~XcAKm-Qdw+HBpPl*ana`j3^D}>O=E#||XC6HB z)sNt%iMyQR|D7C*Dqs~-g)i`yZdQiQt25SYi3R*jDq_#-gr(M^A^@4f@ zy`4T%pRX^{ckBD~EBbZa-v~DH83m0pMg^ml(asoZj5HP*yN!Lu72~?$Zw8wMO~w?= zNHZEO+do;$Dpq~8X^b@#ZMw)>X6>`CSl6v!JIu~t=RnIAw2Rt;t=P5g`Y&2H4sDxY z-?B-(FWH@}Z5c*jsxXmg-DqY!vx+&$#51>;M7MQwumY>Fwb8oC+x9e@z+Pbq7tE#P z3ZiWVv~7K^G1rHS;f8XtXx(LK-+1l>+V>Ingv-K*^ZED)z5?2~9oo2u+sez(&Ii%b zx6sy)_$Pb@A&WbbYNN$_pv5N(Q{Az2TDUJf5;BNcL`AHR7Vj^{h%?1ljH82Yt7niH zjG}01ytE2qXCK-*Sk53ba-WIa}2hE_bGC+aDU zFe3+AQ7|IVj#Z4>7^6{W&rU`(#%h1JRVTaSbt_u-y5Y2H1+zBVbi6qeV|BNgVBRu= zt%6nst2V}}Gg3EMr>#d;7PMe}yOrJFjVq;)SP z&pzp(6fd2SPD|&c1dN*}QXaXK{78Nx`(YeJD-YE58cFme5x9L6W3k1ADB-dYA@xy) zD&sLm7AfbIOG-NRn3hE!3W>GGNHh*xLFk#;?L2lzd$}WDh#w+Ogm8?(ly_@AkQv2{ zV+yl88^M-iYqAa5v*=@Y*@tX8E*m7sN$vvo9rryqkYCBi@dx;$d_l;EMS_nQB1THL zrAJa4IjdSn-Jsr81zph%Jwh*o5myB*_LEM+{SceLd|ZAqKb4=!$MW;}MZD7k*YTV9 zttfFfzt8QBC-~F+IX;2E!e4iL=6$zs62V^x7E%iBgrV{{d7FGlJ}rl#_hf+#P+S>M zMqP$`2V&G0)fi3Cel%J;&&l`^2AjI<7;cH&Kx?fH)h224wJ)_t+6Dc#-qh-8^|QuW zN39O_5POqNBK$}WTp!3BV$Lz>%eW=4GGC3soG9^1~ces2_2jxLjN>9uv<%i}*=x zjLy&oPQS`+)-@ZNP0bc&8?%Gi#q4hOGW(eW%^~J+bF}%PInm^;a@Kp0{GoO|ySKg2 z{=unZv>%v%LQ*lAnRl5>?2qhI_6V0!2-l|RJDu|}e#GI^*JG?65{qDjjg>p81+-0C zy!MrLQM&@^c1z2s>v{t{N^gbH(MgZid+2@i{`y}1pdRn)F3YHh5z!GNq6fyrG-H?X zqw&NbrX%B0nqg)JGYjh7&g_Iy(Zk$hwtz-*di;EQk-ZF>X`M~R`?>nC2Gf{n&U8Ut zXENKF<4gl~3%ecK<`(pgKbMz#m%GLl<9G2lc|p*GXyJ*#ieHIWrTI#t5};O87pNC7 z#%+Ngigf6$NC}GLP#6PrIGRn z^0)E>*+&Udaw|QQLCR?K`!s51wWS)ZzORl}zrr07)pS}`tpNH$Tdj-sk^Y7LP;YO3 zW|p${SSKyA%G=J_**p9kVVN*h{7St9tx?20XOcKS#C;KW;12TXguX&Ov9q{X+$d&{ z&P#Wt%ltMZohfq{dg^z^Uc=|QMQQ>RhuHYx87Bh$i#0FvuJoCF^ zI;oqK78<*Td`sSiXZ2TGsJ+$u>QgmHv$XnJXRV?BRL>2$JInmsJcd@g>9iH`cl&Dy zV{u)$_qi$J0&z9)+bM=fxuv2~8Q5F>r6JNpNWd-98R>?U8rnjUOUo7I0rGHJg3hm` zG*enDeUv-OV`zzV+6nEFc0fO`U)JxS9iQq!MmnRlG1vGKz4*D2&3wm{%*9qQyN&&c zy~I9jpK?)!{~>>hPY)Y051yNYhU+7R z$?s?jv=!P~ZL_vVJD{!5gN-yOb%VXb{=z9Y+~1X*DVdCr{rQ=uOh4uWW-2p_`GI-P z^kN62T_>`iv4`2O*^6v8SYRBdaHqMAka6pUbmBm9nlwV5gMQRRX`^&gdMmlre0phU zt#sxyv!a#LHtjO@X58(#ebq+$GX5k7?1dCeCZ-oGz^~cs`~#jB4hiRltHSrLJr)M- z91a_o!4pJ?6~str>L}P|(PAHH>yhGkaVj+SB5{?t33_{<7%!d{6QI2l#YZBMf~7Di zixdv)je)+3kSai**M~*i4tlE(bk<1dtEsLnw+dP+4%#V|oL(*@t8z=ZtK3r_D^G>( zc1ZpTBjYF8S4pj8R`Mu?6&bc$HKiVOR$t{qht z&d6fqG6opKjM2t8V~Q~gHgzDRQYJGOY%c@ybDa69xg33dhnd>SVCAq(tFkrHT4j+4 ze|LPOW_|c!e0{N(_<^_rJ?*@>QdzBUGjH1uY!d13jt_xRnTkwz<~?RI#>hUVHyZ$S z4u}^-OKKrMlvAk9)!V9{7NTX=YH0nn<=S2Cq4r$!*VF2m_0o{4{q!OFhsGzyXT}a= zuW`xnm_<-O%PehHf`!-$BXbz!{5bQb`PB5aQp5V6WPN2lvvR@C?_`g)C)ae%+!QvXJ^ipT5^C4|(YmK4#KGde8 zXMdx8rxnm!>#8vVSjWQN-C%4t_89TTDdQXCrt!=uVsKoVzES$G3Y)ef*GKU6oX+tuBW z#)s7t>etW+m(@<%DD5L4unM}f1Nz%QbBXzbncgY{yRRoav-OZ5?d(C&cKhs0Hi_}a zoK(cC84pt**3l_OVHK__SBqR?yO4u(toJulpm*mn1KDfrV|Fq36?aznNlvGkuml?DqxIW(q9wRmKH4S>sAMffRqyuzAJadNmoc)x`Dntk$3lD^xVrJ<(X@#6xEreQ~)@vFKjc%}& zCmZ{X2S!cvJ#(9V(Ei>gasIA-vVtop@bI*23ttI2#E(TkHMN$*K;iNJBnq3{Od%!> zn-%^_X|@8|zAiTeTIVu+kRQ2hyw2C<*YkT}+sW|N4+y7)MEDii#G;}qT4HHeV)YV7 zqud4JDe<0oS&K4qThATcnE?5R%_5ZIFYJ)&!=K<`>&|p+vPAFm-D85-GVp_=**cuT zm*;EpP2lNNlQv7DJVx%Qc2(bn=6X*Z1p8ow+Fws^tVWOj&e-SRN&=8KK?uvQKn=I@ zUw~IgCoB<)hyzfci?H!JNjs&lq?^*W@(sBgq}V#8oO)3$sV&s@Yen@*`cgdvUSw(5 z+1=nH4n_++H;Y*oe2I^&8CC_m4n}`8dU^?V-=+LPD$2&(hBJlED|2z z_P17O-2~ zp}MeExG8XGi$>5My~I&?`rG0U=qEklg_M(9%kRmv<)boDLZP*$DDz+uWKw&ngVo{c z7WE6YlvWMaXBU02KE?0_0=REPfZKNpvIF_CVh3pxMr3PPp^mJtX*MxQWPq!qA2Yt} z3brISi>o6v71|5^z&Feg76@CwI2;mg3-^R!;uvv0^i^t%u#xh7xi55yAMV~je`bW4 z8LiwH!LzO9@WTD=5Sv5=xHcRME9hf(F8duD#HEF0IuQ2AR9F88^2PWX{QLaZLV|c- zd@S~o21=$<1zu`>cu==sclf|k{TOyY3VoC{%>KwG(E-TOL0$|~gUQCqY=1FY?kf+G zKa^+4Yvuk*8MUN-N}px+g?uD20c0$$tp#l}gxSUHhm3y!*`AKg!xm#dU_WAKu?u1G zZH7g1m_5T@W)s;bY#>*Fs|ioOGdB^nT*~d@uJiYKA0Y#{t=-BFwV0Nu?=iZ#V|x;O z)F)O1EQJbo6+6=985)C2Y6S`A^tK*g9s1i7;IWeN0VED}iDibdpRn`T4eT-8sTe15 z<+-|CBd!%t`GlLtZNzB(j?0O0(}N!b%V;CN2OgLvR2J%h0g4u;3#$c1oG7-H#=v`> zEqy8-kxI!m<=gU)=n;YNP5UZSmF3Dt==d+8E6IErTDl z%Q%jEJu}x?$ADf2Ff`rl(e}soF8iqcqccuc1>jvZ$Vq}vUxsN3MrHsrjERG_5YIeh zshmct@H&Hlhv=bCc8xjg8D75UbDSNOw6z`~>zSfQ@a9ol^=JnQwsKv>Dcp-n!7 zt^AQRT{7hIu#XF?JE7Aasi`zyqYC`ZX3)_ktO#q4bbl ze4+&Nig_IzNuqflyyg>=SpHV9l@eA#2CJym0B!famBP7iLIBBvO)kb}$})H44Di4% zYB-SSl>?RG*`DRDa<{lRaVPE{p+#!*jWzgXpgUf_#rPM*hTUF&7>95258&0jaD6-gax{`p}{O; z~^d)%|K`?Okmktc=;(64)8Hv>&vm zS{c1LeDUevtM=$$fv@s4vKz&Wa$u>t8Sfi2jm@woj~fZl`agqnOktKWqre*sF?X6L z%`@f=QvpA575x>~R)iO)Qs8V(GQn&#HxD||u|OQow2Jb9G6U?|cIBbstEN#S!Kg)` zjT^$2J+67c%G3pW77Z(5qW-DAK@T%4IBgag=*qQV<{fD8bJmxi+xlrg2-j9o%YuJ3N~*kk`wEP_eo=8JtL%G(ldft<$z? zXS8p%J78P9cJyF51}|*@I|l6dC+tqh+w@#<&f;2ggJ5HC<-X(&!#B#yLOug$3Z5HmX};PYPhTD(Gz?ReG8O!1^yVzkr==Tg~C~lkwhX3t?ix z*w}7V$dRZa;uo<6sGY$}NEfdniDd5)jJpXYD$_xNXgUNgr0 zz&vi67~5;CTUKpwMr*-99)f3xr;80FCxBm8aL1FF+srej7CQxZxPg+xxC~qqSg4!8 z!|da)^3mWih6C$uNVZYt14`YdC;dsDuOsj4@jDEkm{S^k3W-g$i-w17RGvT z@;kt^U6ABIM(Ft-qdw%w20Tfk`53Yzr`5=6V|BE)SdZaJqy`tZ6gKx~_GO!_3UqTtdFa^5 zOaa#5%5l#Sp-9WW2fpwqe-R!+5cFX-*ejKVnnG7$fG`A}P=Kh5<;2SHdYg#D#f9Ql zSS>k}T}nK-(92*D3SlgCL5yG&{DQUc2Qq3r7>v@8K6M~3W}&AZ1Iv6Hqct-|NjrTh ze7pzO!e^ysuEXC;K^({u6aTZ?MJ}?E2Tn%*X$)$`x+nn8o9yNli$miGA z7zc1Rh*ZEO9(D`3%CoRz+e#luxnbSZ(uV4D^v(Jtc-o7Nb@2Z7!{43@>nYKyXt##U zTL_kTC%mAa9r+Lz~YRtu+hhAg6+s9EtS5II?64S_F!~ERmDV^;oiEnf<@Gqoyk6cKQ)#AlwacN!BBW8 zG4SMh>8z9}8?diSz%#PUdglA)1ap=-56sth&_d%Z!UVbP;RE))F4LLm0UbMv`3%0= zd1evUobSk|K+peN=qT2dOFOd5p*+0+B58Lok#%WXOPS74HqP-vV0r1O-e1B z)(=uET(74u){7dfF&gs94>oFf*fxi)iRkT#uu;7j?1E+C%LcLUuyx?S++a&{e!R?k zU<;VgfC=CoXGr7Jz3{edEvH^gZ-)NaO%DObJlwqCU>O~R|AB~*Cm75A;Br#BEL&qK zrCb3z=deB(44G+7giRXc%I;iDUa(e$nd0CdB*?{b%$JZHP1%-gH;lL1+-7bMXY%#< zDBfTEPL?3|8>5f*N57n@Rsk~-@96XK-g}zv_f`w&oG$AoSN zN9J_s!+drluzXz|+*bv;dU+jNn;U@froeammTv^l;kuAYYzyz@r1(%&rCErj6qK9F zYaquA$g#bUh&7HWby1Dxy~^MUDag<2V{ zyohdfL#$&kc(d=V2Z%xFb_;k1yP!>6mW+^uAXioeFe$+_I<`O=W;*p>IDr^4m{b{kegwM&W+Zu>ZuLMXljgyZ~YYZV;^%YZ2Pv>AgiFw zfTs>}d9RPbl&)hoL1Ibp+3O=RbAuy7H({wz8UFTO(U9JU%{u|T{;+gXx+wX{mEmPH zhShpPK9BhD9r-c1|MW^Wa9mZCn()_}Djg697zocJCFJQU^|@LXao^eSh7UllpF{03 z>v{BY`Y?U0{tt^CL4i@RGnYmWLPL z5XkkhhFEj0%doKXz~h?WM$v)^|3U_JJA<^0#*n$o97T`0xLpP7o$3aG|(YGNcepo-Nf202ZYyypxMkb?<(bpJc zd}MrKoHOnl0cNO~%?t^7eOV%B*9u0 zggXQoC4EDPz`rssB z9xLsYj-eM`l@g^8Ih~vb`3szE%VoiZII+kn$X3Vz-?t0=kXf+2FDW-+eLquDft$#$ z7DIomsMdt;Xou*~Aaxk*kJV_Wy~t6xq55i}S{5xge3l6=GrJsPiP0taV&x$R>w}~1 zsIS!T>V8IQM7Ap;K33mofgalv*2ylzG-YI#^hUp&5BagqinsDRS_Qf_m}CLYK1>?) z$qr06WQ=?UZ#fvcE-Q3QQ??7+6V|8`r8oy>@8VfoL6?Y~*rE}VtrEdhk9h|Lgv z7=&m;1}P_^3gwV#(-$`8RA~hw-9+}t#bpzWZUeca+(RBAe=Ns>L-AKqDOnNIE2KCv zpn5>H9dPXfWXFI}I0;+sJEaIXUPCPdByX!twPD&d_%-E_)v;EuhTb~T_|!1qA@njQ znN8s}J%Z$^3XA55gA0THhfPW5G{&ZrJu{J=2G(gE;+HuvDrGK$s|b(aJ!Hvz1onLw zVm23Gm*3!W@H3J4PO2VS^_RM7Kk=Pc$DR(8y~P0N+@_*l2Dw&mx=Xw)KPS9l%?KJra!n zUxkpoY$I?>7g!d|dpB5CEx@Qp3q6Gii2AKVYwbeh;25~vZxBVg3qCltm|mQOIMG4z zs2C`Pg3B%jdvPMhz-;7o?7$efg4jZk{EnN!QxR-n2WWtyXt_`2<^b&Vxp7LG#eB^nXtI&(Alk|I`9Xw`?17wkOnfDnddT<7PvIMeO=7GEX3hd=GM4C%t#5cwh_Q7~x zBQBL5$q`CzWDc!In=Mkefq(bY!nDGO2Upjcp=N^-1$nN8>VL7&kR z5MR`6+nxp+Z8t3buf1a`I@qG07p7<F<8yW&asYg} zRAA_AZaIG+ITlX7Rh0Muo^@)pK^i%myan9Tr|KF=lKRMM=&QvTAAnEeOdD~71Bf}_ z0{0L7gj;+Ao-CNn%>Ia9W|hmqtIMn%)Y9ukVMlH@t{EZLX~*+|4HNA00GYtuL_#)C zh8`;n3HvVcHL7FOR#C%@5ahVEaBR-_V3*ge&&0w@A7qS0>|!~1j6$$M3OLV|5bVY` z<}<6AJxmHn@+0g!Vn1mFw0gX>Mct*&)e@N}FwOn!ZFqtZ_ntnmZBz4E;D62M zQwtr0LAc6^F;o}3A?`d)ULiMzz0gN#2wRSXg}Ck2ADm_hWGpp9G;^6#m+%lb=Wx5^ z1A7zSnGn~PS_@1Lz+Nv29W@X!jF1opRSv&@oBMt295Uqr^6rR{-d7^4x0euzc)bJDr``mJlH>57xJ}y#?0W3HyS#{UT9E$o;{PGarH_T@R^$p1A}& zD+E?Z6}An0)P<0Do6y6)Mh4jp_Ivgnt`OG%T;vGuL-0M*Vfi0~%s=gVumOAu@RRNN z{$R;R!#a7)`yvA;E#h;6UjeLm6vZjofY?Rp= z(X$Vbb8`*6}bsl?qr2wu%hQ{*d7_fa4ka8&~#(kWRqS54o4A zk=Z3edOJSv669Te35zZzo1PU}4Os;(V5Llk4vB>xeSm133`yIW>y9YKd~iy~VXyn} zfqW5gItE`7{#0AO8{Z3z%mMhC5BRE(R-M7AZxqf!1{X)vzA8L~kHuMt)8_`uTtpHP zfA1{~1_wM>S}d(a?EOc?VFKk)xd8O10u9;|QP9Qc(RW-1zJ}5Sx^lF#AAHp%MTDL# z2ZrX9dKS!Rdt||khMjTnC9Xwv9;lYmo5IfMihQ9Z`fB|%*v40p7xhqoqE|&mLL*qn zGa*+N0qMiwD9-@t2(z476;hx-^x#bR;>+RN`Xkz%9`Rwv7A%XH*IZa6tF1#|@h`w; z&IKO71hDRCcL&yk?NgAcKYD%VXm6hlgvV2csm9b|9PeNevz$?p@i?D74qR)%_Up*? z7ifnXW+%(1h!5DSw#yb}2goTk7-uc%E!&f;QirM3Z?i_`Vl`T}G( z9n_B^!g@)6hJG7rWJJb{Zj?f%VjuW|vyqv&*7zLW-~~i}zc*s6;fS$Mg+;g7+6!Cy zy7i-#7P))*>>?QVr4f0rjs7|hR>y8+N1gKKki|f*pwE^<f98RUYLRLUuJ5UY1QwfB`xu$8}54nqP2s$q!S-vMuuMa!vqz{*uXW>GJAmV<%d zG32;igB0+A712nKfe-fqY~po@w4K$n84kBn5`J7uSbmNlw-Nc+JJCnKGkD}<+lXO1 z5@0TDjV;I>2|>If6S7C%K_9II+qpZe=N-WK5Ln3U$k}CpZ6w&pb&#t&AXBf~cN}>z zK7>R7+c4z&$c%+7&q46{N0?9Bto1Gg-)_~@W za`1}{AsK*Q26)LH=w`oXML8^)DrVqe;&w`(KP&$r2+!R?&9pIHL1)t?u z;FsW+geXN61$t|+GFKj%hiQoyt9KnveB=qVC1er40D_H6S5aF z+cM&T?cpbk0b4ZF&FH%4V6rL%?`$R{Ba;moxbV3qRXjY_0$o>u>2VdVwSLH=!Sta-K0RgdD`? zGAxbzu#nPlc@W=bVbwN#A&HJ6=5d#M%n?2fe9Hnn3t3(sj9E0K&tPG=Fx_pbP(+h5 zOLZ`(przDVav~Edas?O4D3vZi;q|RpKF^WKXL>l$rQ!C&!YJmI6ZL`SuE(PnVx&6L97YxQ)Co35C zZipL4`T@4zGg#9d*ctHP7O`vCqv);Y5znc_)j&^e0bXY~eCOrdI^+mlK%6raR%R538z<%JsXS%wIsgh{ZYRtkZz@>x+rp2JZwwf@i?;@meOgoI<$ zgy{zxZ2|J7rV8OoZIu|#%mtiC3~^(e_4s^{(t+Z9si>S)TaO6n9__52*+BLnmK1J2 zW_?JiY8X#-fqzrfv<SSsj08WU9(eeN5xvaDRtB@u4*dO4@Z94Ohno%GU?Zaa9CScVK1fK9 zoVG#e(^G)%Pr@^BQF#%ClVB@X6`LZvCs?k6Op+y#^jFLUh=+X+d-Mik&naA=$cLE= zi+&p-rH+)W2wQ$NyPLJSGHA_DkV&@+OyUse?&qE29M%y%~`3`CywBMYNPerf}cO(i$G<7$z55V4S)QdiN(}zU0vJLmD{t;V{g% zaAwXdgEg}b^P#rFQrwOC7fJc$=ioVC!Hk+)h;QG=OsOZjw~sn=Gcq8*GlvoG&a^3N zFtC0U!vLe@%(|(95$Md>pC&Rm(X{HQi0WI8?@q)rhq^%h?Zeq~+cLM`HRU`|;+p&&E~11-`P5yqZqx3OTqS0fu~7d)L4 z=zZ6Ol89f7d!b3TBWEB0o_Q8TUJ6MPW(}%^CLu?Qd?Ou`>ceeK`TYN5!Y^**)js7@e}a0YoVdO zgnfR|x&iyrnURputFyZgWceM?@K?U6)Va8!JZsJ*4+bSIg3hl zFic&Mfig~+4sZ4;axU^?224}1@sr>eY=zh5WD}=>&S9W&Du8!tt4)MouoHQM>A;C~ z(|aLTZW6}SMtuiH(s8iw*PYoi@DZ}Ws-0|-@!s*D9`VhNU>&+ZLXO}kNX_Mqav5bj zm|-Vxd=6#`G%~+8!>lIO$H;)|3+Zvn{>d3Du_@eK^=#mDnxG|DF$`?1J?u&L8?@R} zz7lfn1`6}QkeFg`v6)m?&I$?tBc3G~eX{|qn@yNW@f6Hs0nDp$a$7jq;pq(yebC8N zIba?&2O;<3YbyZrqOKx-pTgx}f?&h!LF}p@mlg;!U>-(Kn7G2csZn z`dkK+_k(6(}&`8ZZC$%WWS5kyZ!=$o=u zb&Ss_jLsOBJ4-1n6r2`i*3Lb;F`iK&MX!e%OKCH6LKn-VOH!` zaXsc@Y?so@Il=Dsz?{tKV0ACbSCJQA4L(|Ztvl?+i^dIO5`2Kgh#H;-a-ptW(F+#) zZT6;=Rc2)iUdw9vf}9gGI7Yz&{ZYw_*vE&6O8u;=S{v1*L(YX* zL4KpKQ5<7dGBiZBOCj^Dl2Og53A?@_q)cV=j@8BSbR$At&T|IeTaLEo!!8JQxzP^X z7QVF9TKZmUs)RWmGb+>_<07ovY5W7R75dF1DL~F5_kg{94t>PWOlQurS0MIx7>t^m zLlW(+Um$WJJ7UhUKm4}?$fvu>=Z8IX4n5sQy>E$6#Ol&5_`V)+c(cHiZva>B%s_bV zaLzHIt}V0x)}t>txGAu~m%(4mgG{uUi2NTzPQh`+Ni#zK4wD|KiFz&Q$^3|e-!`{7 z<7&LO-t(Zzu7k%b%$9}6K8D@OUSfB^55EhZy%2cfO;QHr?)gHF;5V_MuKgX&jg;2O zH|2uJ56-A&SN$+s;+RvXRo?Sk*;uXy|D0cp9+%H;?C;wi9e+ept;zth2~7D27>hB*EJb>7@Ef zYvj*vQB!E^tr8gPp(F#U5R8msjcviTbYvOcrZ*Cwqrgz?2S0I*8Gf_54G_Xi<`m`%)&*ryF9w~g2hakSImaf?VYEQy*x_g(1}vcFQo ziiiX=)>0mZd5n|fdGKO?g#VfmanEANXIP*d#jLmch#>vBCmBt7K5TU z(I+D}=CPg+@_)7Q6=s}HG{1KGVPr}-x92=d_|~wqh9I(d8!em>^V({N!_dl;5Z}-- zVSs4?4D?QCqF->o4?{gUQ-psuiiyY!CK^ePJ+#} z1W}rMV3nRib7z4*;4zP<9_-c5h%ybpoPbU6)(^usxCB26bGP9i5HR;y`9geS>3y}5 z_EgUdJ2Ry#4|}lL`JebGA+7kcGD9t{k@4Ps`!TGJR4?YCcYtP|ZY%{Kc>;O8cfm$h zf`v8)tu@V@51FO2b*oakvSKVU@DCyyP!!qFEw#@2a7Q-BdBDfGh3n3<@Gl`yNM z6Xw)>2rGLP?4@Iff8B@Qlu0T88B|f)2;TEYX)0!P&4m|y9C@dgx z;YtCeIP7i%etsn|p`&4W&ql`ZdF6)k4rbtrh$Ov>_dtwPcVITkLCDE8S}s`M`O&wE zgP)f)4SlQ>qDz&)iPqF?y)5#PDZ&Ne z38JrAq*_vQWXle9vqNS;f-i*+6DRq|>D6qQ<h;Il3^KsC&Ieycz)blvh(OndpWO;MIXw^$9f~}q$(X}4AD+QFc-p(+ z8=TP3>9_624z^*bT;D7MahKC9{F-I^OagPaLK)*qL z_%qnn1(BKYF0x(5g26wH%=#SgRRy%>Bt(~v;9UbZrF^j9Y|KhMftF2#on2Y2r%pmN zW2JTz8QdYr650;mD+vBPgTB29@5wk}p5+j;Hk&;-4~U~F<`%Z8_N zZTre#77DU8kbBY@R?IZaKgk4ZtTH$#9+8Lkn29?8Zv%(}i~BR5QK$%BtTpC`6-6%j z=i+|M2RjSfx`WgYHC>5Z(r(BV2}ZWfd4+>znO}Pkd65nE6}n~gM)pTfGaPJWO1rpy zA37zKYpVn@<+#a0Ys}cM248a}THeWo?~Xb0!}Kxm8>S&nvjkY5&=(mbB9%MNhr>2o z!0Z>Qij~af$SEO_-m)e_m+FX6w?!mck6n z(bhEhhN)cr--cPviO2-11FIkfc;&g~A+xN5Ra`1JU!fdR7JcLtKNZ^b9_C9&h^@ty zV846Fa}m<1V%J6Ag2fBJ&0Ag-%)ZXVW@CH8XJ3Qt&d=3AJsMFAlHjeQ4?N$6Ohz_0 ziyTU{PZ*@ohw$rpc%z*#Lw1)n0dchB;630=B&Kp@Yg5?X_n7R!uf3pxUq{XcByVar z4)iW&csn{J7W22(vtM9_{W11u=oJqPFX&fKfV&8I=V^6PalhG5fw5tcPBRR4hSG+C}JC0W*86K=O=3 z6nKSn2iCTuWi!Ky= z9cImYkarvbe`qB9op@v^l)@W~>VQ>`hKI8P?;Uvnt+2YgZFAymdp&EuHWPy!i!?*XwB$ovlje~?AWff?<0l`NQlmWVuAqNPLB zqZY!`n$FnZ>57AN$v6| zUnoIFW}~^$9xU7lV-g}|YcTg~FJ|pt#``}Kjr3+-WFTom< zE|{IKE2S~wGnpAMj?gBN-e=#>sN6`dk(?O}@8|k4@Z|y++S=A`=bEV0?wDW@8&4~b zga5M;a}w6N??ynQx;aBx-1p$r$2+K^5PfdPc0x2-h(t1yzV0KRhwSSzB`Q>f7iibJOV=#jC__XU}p;A-B$|oFe9`^B2P zI(~=(`4C^?NBl_u2_!)zn1qlNBot#k6|{94NT;+U9Z3(nCL_s2GQ+ORO0tpckY_nb zE|MGeNFI`xyaV~~A^AxG_+N!cVNwJ#tr-3{i4w3!@R~J(R1Jd3H3Z>L0!2bV&=X8! zLyaQvzlW6~rNOVkfx*={8i_F?re#%+#3HkkMnv2NH_#)1}XlF;nI&S+ix&kuz8B@H~0n$>+&mpkSfGMT!pcUJxZ&Q8gV? zqwI*1rAn76TdsVCij^u?samaiWR04&YS*b-uYQAujT$#;+AOMhiNRWEt>3V5)8;LoZT)=P_P8B8ckSM@_ltdB?muww(BUKTM~@vpaq`qxr@uaP z_T2dk7Zbj@bot7+SFc_F?#9hqx9@zPc=v~U_kVow@X=2{KYsG`+4GXkowamJ?^>o+ ze5S7+lcJ#4#nou2M) zzZZvW{J zF0gW46zHsE%PR1{zrRGSYdUb{N*fu0t8j7N-}=F(mnWJvd%649cl2K?qP%mk_Nz0s zY`YwK!ixjVFWRkId-vC46K&h?_5ct3e{gB{KlRMc#EJju#q&S?boAjU0u%v?07ZZz zKoOt_Py{Ff6ak6=MSvne5ugZA1SkR&0g3=cfFeK1)Gvnp45-<0Df5(Zky7>d%OS`3GSsZ;oSJ4g#Aidh@}5$qTemJ- z&aR3u`v2B)I{D)iTWyzUTzJ*SUO1>YCy-)*#Yu2@xp;$>17Ci(e>>KWxBZ#;v+bpy zCA<9Z-QDcfsK|FUEJIp15f%&OO{e{37{fuYE~=;=f>j{(nIo{#&cy6`KF8 zwWIZ-2v7tl0u%v?07c;cG6G4SzhS-UpEYXoKaR^^@*4lgv7wJg5ugZA1SkR&0g3=c zfFeKg5u@e&Nn@q#GHimK^`Y1t7aOO-BDwp{rN6)RP)Qngz3 z$Qm_k)vi;wUi}6Q8#Qjyv{_X17A;$~Zqv41`wksDb?(wNx?A^md-UwpyHDSK@AV%r z@Smvh-&$ss<%Fb(PDR%H_z?TWN|G&pzJ&M?U*bpnNdO5XK_r-jkQ5}8q$H_GYLbS8 zk+dWoNl!A6j3g7uOtO%yBpb<2a*&)P7s*Y+Ngk4yyhHL456Mpokbx8PszgYi9X+u+vFbkncO8u$r7@K zY$svwEF+(jtz-^aNWJieZMp5~qwp1Phoo|c{(o_d}pp2nU=o-j`akKifl z$>AX$!_(B$%+t_Q+tc3D#uMd<^mOvH^|bS}^0f9e@YMIz^wjcn^mOoK@uc*O^bGZk z^^Et#cvkyeB$NE&{O0-X@>@@K`z`RB>bKZ$onNlJd;Qk?70TN@?`qOIZ>zlF@8o&s zA*qme70H@+BgvL`Q1}`W>xp%mpJ@5@{H^o1$=@=6RQ|l-r#%NeUwcaBkI3I4f5-er z{w{=kXF{Gyc_!u=pC@ZTIxFv3uBd?K(Z(Fa6w4=cB)E=Xv?1Wb=yc zt9N~MBfDgC=bZBtl{-3hv+WKqFaCeD)ArZzbNkm1|M8;*^4bMnT;0@eY8TjDAj)o* z{O6DCKcc0h3N#(K8$ZiyKXN~lmym3~=*#_P&0g;Q^&S0}MI_jlZr-u&?_Qj_jF!J< zU$^ZWFAgMpV>{=af&F&qEv zW>E!-+IjO9wTqk%vVXRVzdY}8qOMW+YFKvq7e`CHJp21QPL$Qn!}4DGugyE5+{GB^nog^wVRMe=7$*`nxy! zKKbpu!OG=N*xQc3IQ)H$zg_rqmUZ5Zz4OI($BXTr7u)2ULt9Rs`f}68&rTfQx9#(- zd%rlie#7RY#||8c-+%h6!^tmvv40WUbND-pzw`LJuxj-hY+f$UUhdg;CU-yAiz8un z?iYJ$z1!EMU2uvQC;zdHk8c{3ozf0{>m34ZJHYny$2F-^zxBfZo|BH?`^$@0X#VA5 zXaN)fiU37`B0v$K2v7w6b_Bw`C59N*oBmm&CV%_Q{<{kNOJ3uD*Q3zdPy{Ff6ak6= zMSvne5ugZA1SkR&0g3=cfFeK7&ojP~v8r`k?yFGgL>fNVr zzxVnN82Dcg0dW@};*%oGC)|heiSUW^iNe=Evqt;G_>9LdV%=Y@dgHfoKJjlH`7>qz zJFiXfN&L4xvv1g+Si^mp7gtBP+eqIi-)P?$-|@b&zN>uWeB*r+d=q_%UzlIGALAF{ z7wH$}7ws40H{LJSZS_(%9h`bYUk`^Wf?e{pTB|0@4D z|9Jld|3rTh5Ec*~zyw4DLUgU}7K%3JVGkVuB)qB7>rWqJv_B#s|d)tqO_@ ziVsSXaAh~Ccnq)-;$q6+W-A4lCJzuwy&4I%Y`$k9PhcL8oQ@n)Si&$ zFTOs1KJUfe5O}M`;?KJ{M+jkG zelPL781^3)@}70}pB5_Oo-O?H8t=Jl?lt+{qux*Fc>d>~JuiTDbF!;F$@aa!{WG6Q z&*c0j=}CtWXZiOH(KVRQpd#+>;;O_p~HUHGHw>`n#|DZkose1lixo={a^gaIh-?t`} z`L?b9Xz$spslD6Zt2aIWst5iWuK#X)g30Uan@^bh?3?GD@5#?Q`)@9P=KPz#^?rBC zO#b)!Rliq$B~ppheX+J8tw;>kXsiRVI?M0<{_i+XNXYAz{>8W7KJVQBZOg0k$+gUz zzxeI)-@G#U_bZUDiO=7@CSC80f?r#%KL7J;@^bz@+4yTEId@8``N@-~Pre%INk_eP z@qT;#SW+#WqyGzkNze28Hum!0x4vF-(zm~gom0+lmGQQ7Z~IMB-IBJyb**#US>AU3 zpFZcULGsU}JN|mTyjLdG{6DimU)`-+$nP4ovfBjqXGfDfue?`)j|H*d5^W?vBYIp2q{SLc(hsYs!OGtIH zpB#8`>#I_e z_M&q9eQQ#g$+v$NhyTmhC&w*m|KE;B(sLwjA3cA4O*)>mO@21%Sn_T1^Ui+qbI$&s zIsfKwz2BWOlmESb)t@Q*m&iV0J zfBKCpVxGr5AA}Ft`Dng!((lwajuGh|P5N}cCts5P;@`ZV{F##P|J7%5%KEJ`-gfS7ze!%d-z($y z&i~eZ{;uP1*7X${PkR2^J-pXDXOfn1^5@s2-x3o3`tn}6lBFYyS1eVvS@p72E0!r< zJF=K8HmhB-RF$&$R=(_ue}#*)4965_i}S@9XB|*9ym7dWpSjnkO7VK3ufBPUFH^Qk zl^5lguP<@Tuaz$qmy(z66z}}Zz5e&gf4%y@T0AejUi)O#XWmkLnObFP7cW<<^o!b; zVHKWzqxOZ17cMR`Sc-GbC&PIWO2R0zc9q&?-f{;Q|JMNGlvhvS6#oCUcdfB;9oKm% z+17STGYg7g+16Gzwkt8NEK?85w9KYUk(9`alr|z|F$UXEFN?AzkH}1nvU+!QOJb+xGS3TfZQ< zbhqy5$nV?Vw*WMoL*1RzxCh(vUub$}d-IZ{w05_5>_6D9Ld@(-If@S7TQ zJR|9Tzq}W~eFWXx-^hD&D{Fq8eYEfVCt>e?cFl;ZpE5_k&s_!}pY0Lw2z;awh>l4g zX+ym79s!SlN8lbKuxhoLHU|4M*H+eC{vN~N#odNL<862Rjb%o_zCZuL_6t%!SZFPH z$Fcp?EhJ<94PTnSc42(0^2YhI*Dfq>z1vF2@4R*){FSNqFR}c1n&s@vR(Oadw1Hd{R^MZCms>{%YR)W zHjsG4lJQmP_|F{wTemcN;9>{*q>CYtde6ob7)v0@|Pft3F6ogmI9CxHSHc_??_bmTZ3_Ub2u7 zf6pV}5%36j1Uv#B0gr%3z$4%h@Ce)k1dg|i{bci~se1d?+xC~(8>`%UT+jG_n0DPA zoMqux2=&~} z1Uv#B0gu3nN8m>-V`Hz6hX2@fI+#~3tolI9*jrmrzRtL*;`~}S-&!v_Lzy~9H=7;i zeQYu1gbum&nq%gSdD)yWM{t$Je;hi5tCw&UpFxCAd>pSf4E*IgyHCDZwdaq%`-lI0 z>dh*Xd$gtvhH`Gl^q*({Y~#1Eb@7dkzp&?V!SQ}zcG^5)4wzn7a0MS9gqEjK&*z}? zQPgiQt`1r1>UTg|ihe@O9^#+}V(3-Y#^r_6TqG`_|C42o2l z$KnMeROQ?w4}s$o0hu;KXi=x|x5J#pUlur?3vyS&#hO6Fm8YA-XO(F+Jtd%8g}$g% zehRry!jqpg7v--6vkxUJ4GrDjMtI0d)N(EGbAQxOwawalD??}ZPhVG~_3_WGf~)Lm zbnquXUdL*!a$DB-e;U_UY7egZ>E`^#KVJVz>VF?Dy_X$ziTLU|nzLNj>BI_pIr!eU zAkQjct>@`?zHjfm5iyc;0b_pGzPpn7?pJO`=>{qHc;h#0{^g&!=hqf28ytSoUg-UW z_-jd?$u6@Y97|QN{2P<8cW3_P=T4vbcbz=tu~sfrFExWanN$y6D{o#iF^%zdc|MVl+GrUmrFX(1$Z|{Z;k+T=)Q+C|lXAYYeadiZIZXb6kf7__ZOef}Plb>5S zz9#Z(bL(7wz03oz%k!B}$Dcc5wL6Cy->^A}F_!k9u$H?6`9XfoygbMMsm0Ws;4>(6 zo8>bMewS@S339QTMLO%b{GWO-CQU8;|zsA(?wrLRB5;!yo-Db{1))`2kROcU0Mds&PUe9We z>M!+E-SkV&p2uZ|GaB%xw=8B)TsCEB{frAgt)Ht2{f*>Pe|qdNY9$*%XsPw1`fL4U z8shcS8OSSbPbpp0KGaX$i14qIxaE}aSDfdBX4^e&Ho(Fxd|()@?5Gy8=W_msLIoC7 zd&Iu_d6C~_TRGmd6PiA@Sbde#g>qPburE{iWrtsbY2a;hMfh6+hiRdY!uL*Kb;dQ? zS+v)qwrw5JVz$3RdtJ1Bp}R+13{I&gVo!*ZU1X&(eBZp*XNTHlx4E{ffgQEpg}x(MQWo2m1BEi}R*iGFZQ* z+9Qe;SXAwm_L!LzdAd$c30upxE=%?jIgyxt>-W(q|0v?jKx(V}xcC?dY zW)!s@Ce}CFf2sCbU}?o;re$mt?X|8b`s@T(rYVtM%3qhN8~M`y?HC_<&9q7Ut6Ai` zyT*(NeE>d8U*oKjMEe0ZewML6M;U7G-?ogM=X}6?#?{Bmz>{f8 zBdmb)g>F`FKZQg;mKO1dlph-|BpSLio?hS)Yim zz>`?8jI{UqS<$yvTf?nGV|#ii>rMy zKS^cRJA3z{2WILI_%F|TLiMD5n4i=XMV_t~u8KS>9EbTpKJ5$fsnkBTN9waKv%%T7 zA9FgUW|6;K_37*j^|V58kot6s3eYJT+Gj-mxac(}G-npW=qof;YOmTS_SVb`-+uGF zWz{J3a@l*(>_hZzz|MrC`m(=)|JLUk9o~(M)jvLOtlcN%!a7p@` z>L!V&X*?z+^5P?BJigR!$Cj6X?ywmVe$*G^OKnk}*Y(1X&?r`5(bD>MVFcsYeZ-FK zZY1SXVZ2~o`002tvnc;I%qaGPTdR4_bYQ&bF#Y&wqCY`j7xcnSZ9ffRd@;weichbN z=y6W(68!`HL(Smhu71=%I_3H0^AD~lIFCGz&uNh!w1;4QqVv(KB7Z)#!#;Dt&Z5GR zg7!oI%(UpQ?WsX%71Shj7i6CctS{d`>Uv%A(ebnR>kcoSPmBuxQvT*-yGQ|}1}?V3 z6;_yN57$#o!e8SL*Aw;_$#-K-h-;<&gZcyIVSKB}Zglpj|MUxg)oeuQUAFeZNOw7T zz%NH0ikJ4kMUkid@09RgE`LkvsdlixK!22OdcxVO>xWL!N6U=}t$Y@n2h#ph^U=V5 z;V1EtOi|>&fcD5VCHc#3|6+QpoveSvN7C6%4i9aA{i2_i8xgt{y&C(?!|2(LBePun zqezZC)LyCo%(%#V4!s%El<;3J`;&TFAvn-p)PGIp$+*9FiauIyQ0P4T{S4Y_G`?QR zd`j(8e;*fl>hBZ6f4S^U>Zx{!zh|17oV_~UG>bl3Zcu2hx7ky>i018F%lSL_706TV zm3U8GQREX#rU{W(*?QwnX4K^@v1(XUe@TsOb$IFcd|C9h%HmKI zx(^Z$KrT_q<6O>PFkTeML+#i0Gbi%2{ahFRio!wE0_`LkJ+N^3FiKiL?ZU+V6nJC? zw>dm?{&hw4)smA!??nx@p$;^a!vp1VEUWhG_%SE)bo{s>{Fm4Eq_%GUj`5?e@RYMx z;~SSnAL`09DKuy6eW(}C;GN%vwzC}VFEf8Au$jroDh9!3)8gFeej1?+j`yoa{i$0L+zLTG;N-C@=nUyA|>+gJ|1xkINqW^tsfM9 zG+s3!`Zz1mzJ>0AU$mJ{+j@I&bkP*m< z#*_AApMxlI+;ro1uk@vTK+<^@OSj?fLVYXsX8p9lp6s)6Je$QnmSGwcx&x!gi^D_L1D&Fu8ag6$vKBjm zO?RZ1Du)O7709zF{B-}jAo7F#Z^^%N|4M2`scyc;{qI?kr~Os4(5@8X{X)}^^0u|Q zSqkkdwcgYIKB&WJwLooPW`|g z`eRY#sXtz?NdKht&>x#xo&M^Nox)%B9}(K^<780_3(w;#^+(lT{jn(W)gPwRX>s=YElt(_Hl+wct^rYYfHdHN zFY=AvV`v{EIP%SaXrlk4|Ig&x9Y1})@w)IUwcil(4mk?H^oZye#J`1JT)#dW9 zS)BQ<`BD3QLghD|;CJN?`04xiTn}f&-mJWDa(xkgy?E3A5ReOP-3dJTMkaTe&f54M z@hb{HjZZWSt@bLuJ8d24ZeUQKnaN#o{D-pultqMm$gUS_=XMNONu7h|Ew>{^SWO&e^R%VO?Pi=H+#vp>_G^3Xg-5c#>_d%nN8kle zYzgPE>J9tNPy)yIGV%KYORN9N{H7)^`sn_~718JJ?QbMova^Bn0nWE)MIW6HGz$%U zaxAI(aujwwBwK?qj5lLE&ou3E_-ed)NS{T@T5VjG>rl6=(hKZd{HZ4ryW_K5569P0)XVKm#qX1|ds9kvWdF+j z6Vv1H*LciT(GTTvEUWd)2yq^|y4CTQU~f16!aW7)Z&HK8PyMA)X!UpHM?9Yczcy>f zK4?wd-R>R{<#!&sfT{Y6%&&v@(S!Xj;h)sE*T(nr;6r@(n73M9{cW@-qra!6XWHnK zM<9s+{jGM?tiEAf`_S{C(0Vp`mv1J+A9UMLeEm}mJ6`**x8SY()coi>-}(L1Z&vZ6 zzX#F=fk$6E`r1O@4^Hah=}!&v)xziNOJKXS7qk7(wtTkrF? zCJWJfdYz#lY%bh~6F(#$fAP|eb8q0sBtK`2dj0otzmoL&zyB4uh3V@*?6Mn$sg2>i zyM09)G<~&W<2!5D81o -#include -#include - -#include "client/linux/handler/exception_handler.h" - -static bool dumpCallback(const google_breakpad::MinidumpDescriptor &descriptor, - void *context, bool succeeded) { - printf("Dump path: %s\n", descriptor.path()); - return succeeded; -} - -void crash() { - volatile int *a = (int *)(NULL); - *a = 1; -} - -int main(int argc, char *argv[]) { - google_breakpad::MinidumpDescriptor descriptor("/tmp"); - google_breakpad::ExceptionHandler eh(descriptor, NULL, dumpCallback, NULL, - true, -1); - printf("pid: %d\n", getpid()); - crash(); - return 0; -} diff --git a/gnu/llvm/lldb/unittests/Process/minidump/Inputs/linux-x86_64.dmp b/gnu/llvm/lldb/unittests/Process/minidump/Inputs/linux-x86_64.dmp deleted file mode 100644 index 29a12d6a2ebca007c0360a49ab7a46fb7f34ed80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38320 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 diff --git a/gnu/llvm/lldb/unittests/Process/minidump/MinidumpParserTest.cpp b/gnu/llvm/lldb/unittests/Process/minidump/MinidumpParserTest.cpp deleted file mode 100644 index e3f23c5fe33..00000000000 --- a/gnu/llvm/lldb/unittests/Process/minidump/MinidumpParserTest.cpp +++ /dev/null @@ -1,910 +0,0 @@ -//===-- MinidumpTypesTest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/Process/minidump/MinidumpParser.h" -#include "Plugins/Process/minidump/MinidumpTypes.h" -#include "Plugins/Process/minidump/RegisterContextMinidump_x86_32.h" -#include "Plugins/Process/minidump/RegisterContextMinidump_x86_64.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Target/MemoryRegionInfo.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/DataExtractor.h" -#include "lldb/Utility/FileSpec.h" -#include "llvm/ADT/ArrayRef.h" -#include "llvm/ADT/Optional.h" -#include "llvm/ObjectYAML/yaml2obj.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/MemoryBuffer.h" -#include "llvm/Support/Path.h" -#include "llvm/Support/YAMLTraits.h" -#include "llvm/Testing/Support/Error.h" -#include "gtest/gtest.h" - -// C includes - -// C++ includes -#include - -using namespace lldb_private; -using namespace minidump; - -class MinidumpParserTest : public testing::Test { -public: - SubsystemRAII subsystems; - - void SetUpData(const char *minidump_filename) { - std::string filename = GetInputFilePath(minidump_filename); - auto BufferPtr = FileSystem::Instance().CreateDataBuffer(filename, -1, 0); - ASSERT_NE(BufferPtr, nullptr); - llvm::Expected expected_parser = - MinidumpParser::Create(BufferPtr); - ASSERT_THAT_EXPECTED(expected_parser, llvm::Succeeded()); - parser = std::move(*expected_parser); - ASSERT_GT(parser->GetData().size(), 0UL); - } - - llvm::Error SetUpFromYaml(llvm::StringRef yaml) { - std::string data; - llvm::raw_string_ostream os(data); - llvm::yaml::Input YIn(yaml); - if (!llvm::yaml::convertYAML(YIn, os, [](const llvm::Twine &Msg) {})) - return llvm::createStringError(llvm::inconvertibleErrorCode(), - "convertYAML() failed"); - - os.flush(); - auto data_buffer_sp = - std::make_shared(data.data(), data.size()); - auto expected_parser = MinidumpParser::Create(std::move(data_buffer_sp)); - if (!expected_parser) - return expected_parser.takeError(); - parser = std::move(*expected_parser); - return llvm::Error::success(); - } - - llvm::Optional parser; -}; - -TEST_F(MinidumpParserTest, InvalidMinidump) { - std::string duplicate_streams; - llvm::raw_string_ostream os(duplicate_streams); - llvm::yaml::Input YIn(R"( ---- !minidump -Streams: - - Type: LinuxAuxv - Content: DEADBEEFBAADF00D - - Type: LinuxAuxv - Content: DEADBEEFBAADF00D - )"); - - ASSERT_TRUE(llvm::yaml::convertYAML(YIn, os, [](const llvm::Twine &Msg){})); - os.flush(); - auto data_buffer_sp = std::make_shared( - duplicate_streams.data(), duplicate_streams.size()); - ASSERT_THAT_EXPECTED(MinidumpParser::Create(data_buffer_sp), llvm::Failed()); -} - -TEST_F(MinidumpParserTest, GetThreadsAndGetThreadContext) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ThreadList - Threads: - - Thread Id: 0x00003E81 - Stack: - Start of Memory Range: 0x00007FFCEB34A000 - Content: C84D04BCE97F00 - Context: 00000000000000 -... -)"), - llvm::Succeeded()); - llvm::ArrayRef thread_list; - - thread_list = parser->GetThreads(); - ASSERT_EQ(1UL, thread_list.size()); - - const minidump::Thread &thread = thread_list[0]; - - EXPECT_EQ(0x3e81u, thread.ThreadId); - - llvm::ArrayRef context = parser->GetThreadContext(thread); - EXPECT_EQ(7u, context.size()); -} - -TEST_F(MinidumpParserTest, GetArchitecture) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: SystemInfo - Processor Arch: AMD64 - Processor Level: 6 - Processor Revision: 16130 - Number of Processors: 1 - Platform ID: Linux - CPU: - Vendor ID: GenuineIntel - Version Info: 0x00000000 - Feature Info: 0x00000000 -... -)"), - llvm::Succeeded()); - ASSERT_EQ(llvm::Triple::ArchType::x86_64, - parser->GetArchitecture().GetMachine()); - ASSERT_EQ(llvm::Triple::OSType::Linux, - parser->GetArchitecture().GetTriple().getOS()); -} - -TEST_F(MinidumpParserTest, GetMiscInfo_no_stream) { - // Test that GetMiscInfo returns nullptr when the minidump does not contain - // this stream. - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: -... -)"), - llvm::Succeeded()); - EXPECT_EQ(nullptr, parser->GetMiscInfo()); -} - -TEST_F(MinidumpParserTest, GetLinuxProcStatus) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: SystemInfo - Processor Arch: AMD64 - Processor Level: 6 - Processor Revision: 16130 - Number of Processors: 1 - Platform ID: Linux - CSD Version: 'Linux 3.13.0-91-generic' - CPU: - Vendor ID: GenuineIntel - Version Info: 0x00000000 - Feature Info: 0x00000000 - - Type: LinuxProcStatus - Text: | - Name: a.out - State: t (tracing stop) - Tgid: 16001 - Ngid: 0 - Pid: 16001 - PPid: 13243 - TracerPid: 16002 - Uid: 404696 404696 404696 404696 - Gid: 5762 5762 5762 5762 -... -)"), - llvm::Succeeded()); - llvm::Optional proc_status = parser->GetLinuxProcStatus(); - ASSERT_TRUE(proc_status.hasValue()); - lldb::pid_t pid = proc_status->GetPid(); - ASSERT_EQ(16001UL, pid); -} - -TEST_F(MinidumpParserTest, GetPid) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: SystemInfo - Processor Arch: AMD64 - Processor Level: 6 - Processor Revision: 16130 - Number of Processors: 1 - Platform ID: Linux - CSD Version: 'Linux 3.13.0-91-generic' - CPU: - Vendor ID: GenuineIntel - Version Info: 0x00000000 - Feature Info: 0x00000000 - - Type: LinuxProcStatus - Text: | - Name: a.out - State: t (tracing stop) - Tgid: 16001 - Ngid: 0 - Pid: 16001 - PPid: 13243 - TracerPid: 16002 - Uid: 404696 404696 404696 404696 - Gid: 5762 5762 5762 5762 -... -)"), - llvm::Succeeded()); - llvm::Optional pid = parser->GetPid(); - ASSERT_TRUE(pid.hasValue()); - ASSERT_EQ(16001UL, pid.getValue()); -} - -TEST_F(MinidumpParserTest, GetFilteredModuleList) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ModuleList - Modules: - - Base of Image: 0x0000000000400000 - Size of Image: 0x00001000 - Module Name: '/tmp/test/linux-x86_64_not_crashed' - CodeView Record: 4C4570426CCF3F60FFA7CC4B86AE8FF44DB2576A68983611 - - Base of Image: 0x0000000000600000 - Size of Image: 0x00002000 - Module Name: '/tmp/test/linux-x86_64_not_crashed' - CodeView Record: 4C4570426CCF3F60FFA7CC4B86AE8FF44DB2576A68983611 -... -)"), - llvm::Succeeded()); - llvm::ArrayRef modules = parser->GetModuleList(); - std::vector filtered_modules = - parser->GetFilteredModuleList(); - EXPECT_EQ(2u, modules.size()); - ASSERT_EQ(1u, filtered_modules.size()); - const minidump::Module &M = *filtered_modules[0]; - EXPECT_THAT_EXPECTED(parser->GetMinidumpFile().getString(M.ModuleNameRVA), - llvm::HasValue("/tmp/test/linux-x86_64_not_crashed")); -} - -TEST_F(MinidumpParserTest, GetExceptionStream) { - SetUpData("linux-x86_64.dmp"); - const llvm::minidump::ExceptionStream *exception_stream = - parser->GetExceptionStream(); - ASSERT_NE(nullptr, exception_stream); - ASSERT_EQ(11UL, exception_stream->ExceptionRecord.ExceptionCode); -} - -void check_mem_range_exists(MinidumpParser &parser, const uint64_t range_start, - const uint64_t range_size) { - llvm::Optional range = parser.FindMemoryRange(range_start); - ASSERT_TRUE(range.hasValue()) << "There is no range containing this address"; - EXPECT_EQ(range_start, range->start); - EXPECT_EQ(range_start + range_size, range->start + range->range_ref.size()); -} - -TEST_F(MinidumpParserTest, FindMemoryRange) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: MemoryList - Memory Ranges: - - Start of Memory Range: 0x00007FFCEB34A000 - Content: C84D04BCE9 - - Start of Memory Range: 0x0000000000401D46 - Content: 5421 -... -)"), - llvm::Succeeded()); - EXPECT_EQ(llvm::None, parser->FindMemoryRange(0x00)); - EXPECT_EQ(llvm::None, parser->FindMemoryRange(0x2a)); - EXPECT_EQ((minidump::Range{0x401d46, llvm::ArrayRef{0x54, 0x21}}), - parser->FindMemoryRange(0x401d46)); - EXPECT_EQ(llvm::None, parser->FindMemoryRange(0x401d46 + 2)); - - EXPECT_EQ( - (minidump::Range{0x7ffceb34a000, - llvm::ArrayRef{0xc8, 0x4d, 0x04, 0xbc, 0xe9}}), - parser->FindMemoryRange(0x7ffceb34a000 + 2)); - EXPECT_EQ(llvm::None, parser->FindMemoryRange(0x7ffceb34a000 + 5)); -} - -TEST_F(MinidumpParserTest, GetMemory) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: MemoryList - Memory Ranges: - - Start of Memory Range: 0x00007FFCEB34A000 - Content: C84D04BCE9 - - Start of Memory Range: 0x0000000000401D46 - Content: 5421 -... -)"), - llvm::Succeeded()); - - EXPECT_EQ((llvm::ArrayRef{0x54}), parser->GetMemory(0x401d46, 1)); - EXPECT_EQ((llvm::ArrayRef{0x54, 0x21}), - parser->GetMemory(0x401d46, 4)); - - EXPECT_EQ((llvm::ArrayRef{0xc8, 0x4d, 0x04, 0xbc, 0xe9}), - parser->GetMemory(0x7ffceb34a000, 5)); - EXPECT_EQ((llvm::ArrayRef{0xc8, 0x4d, 0x04}), - parser->GetMemory(0x7ffceb34a000, 3)); - - EXPECT_EQ(llvm::ArrayRef(), parser->GetMemory(0x500000, 512)); -} - -TEST_F(MinidumpParserTest, FindMemoryRangeWithFullMemoryMinidump) { - SetUpData("fizzbuzz_wow64.dmp"); - - // There are a lot of ranges in the file, just testing with some of them - EXPECT_FALSE(parser->FindMemoryRange(0x00).hasValue()); - EXPECT_FALSE(parser->FindMemoryRange(0x2a).hasValue()); - check_mem_range_exists(*parser, 0x10000, 65536); // first range - check_mem_range_exists(*parser, 0x40000, 4096); - EXPECT_FALSE(parser->FindMemoryRange(0x40000 + 4096).hasValue()); - check_mem_range_exists(*parser, 0x77c12000, 8192); - check_mem_range_exists(*parser, 0x7ffe0000, 4096); // last range - EXPECT_FALSE(parser->FindMemoryRange(0x7ffe0000 + 4096).hasValue()); -} - -constexpr auto yes = MemoryRegionInfo::eYes; -constexpr auto no = MemoryRegionInfo::eNo; -constexpr auto unknown = MemoryRegionInfo::eDontKnow; - -TEST_F(MinidumpParserTest, GetMemoryRegionInfo) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: MemoryInfoList - Memory Ranges: - - Base Address: 0x0000000000000000 - Allocation Protect: [ ] - Region Size: 0x0000000000010000 - State: [ MEM_FREE ] - Protect: [ PAGE_NO_ACCESS ] - Type: [ ] - - Base Address: 0x0000000000010000 - Allocation Protect: [ PAGE_READ_WRITE ] - Region Size: 0x0000000000021000 - State: [ MEM_COMMIT ] - Type: [ MEM_MAPPED ] - - Base Address: 0x0000000000040000 - Allocation Protect: [ PAGE_EXECUTE_WRITE_COPY ] - Region Size: 0x0000000000001000 - State: [ MEM_COMMIT ] - Protect: [ PAGE_READ_ONLY ] - Type: [ MEM_IMAGE ] - - Base Address: 0x000000007FFE0000 - Allocation Protect: [ PAGE_READ_ONLY ] - Region Size: 0x0000000000001000 - State: [ MEM_COMMIT ] - Type: [ MEM_PRIVATE ] - - Base Address: 0x000000007FFE1000 - Allocation Base: 0x000000007FFE0000 - Allocation Protect: [ PAGE_READ_ONLY ] - Region Size: 0x000000000000F000 - State: [ MEM_RESERVE ] - Protect: [ PAGE_NO_ACCESS ] - Type: [ MEM_PRIVATE ] -... -)"), - llvm::Succeeded()); - - EXPECT_THAT( - parser->BuildMemoryRegions(), - testing::Pair(testing::ElementsAre( - MemoryRegionInfo({0x0, 0x10000}, no, no, no, no, - ConstString(), unknown, 0, unknown), - MemoryRegionInfo({0x10000, 0x21000}, yes, yes, no, yes, - ConstString(), unknown, 0, unknown), - MemoryRegionInfo({0x40000, 0x1000}, yes, no, no, yes, - ConstString(), unknown, 0, unknown), - MemoryRegionInfo({0x7ffe0000, 0x1000}, yes, no, no, yes, - ConstString(), unknown, 0, unknown), - MemoryRegionInfo({0x7ffe1000, 0xf000}, no, no, no, yes, - ConstString(), unknown, 0, unknown)), - true)); -} - -TEST_F(MinidumpParserTest, GetMemoryRegionInfoFromMemoryList) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: MemoryList - Memory Ranges: - - Start of Memory Range: 0x0000000000001000 - Content: '31313131313131313131313131313131' - - Start of Memory Range: 0x0000000000002000 - Content: '3333333333333333333333333333333333333333333333333333333333333333' -... -)"), - llvm::Succeeded()); - - // Test we can get memory regions from the MINIDUMP_MEMORY_LIST stream when - // we don't have a MemoryInfoListStream. - - EXPECT_THAT( - parser->BuildMemoryRegions(), - testing::Pair( - testing::ElementsAre( - MemoryRegionInfo({0x1000, 0x10}, yes, unknown, unknown, yes, - ConstString(), unknown, 0, unknown), - MemoryRegionInfo({0x2000, 0x20}, yes, unknown, unknown, yes, - ConstString(), unknown, 0, unknown)), - false)); -} - -TEST_F(MinidumpParserTest, GetMemoryRegionInfoFromMemory64List) { - SetUpData("regions-memlist64.dmp"); - - // Test we can get memory regions from the MINIDUMP_MEMORY64_LIST stream when - // we don't have a MemoryInfoListStream. - EXPECT_THAT( - parser->BuildMemoryRegions(), - testing::Pair( - testing::ElementsAre( - MemoryRegionInfo({0x1000, 0x10}, yes, unknown, unknown, yes, - ConstString(), unknown, 0, unknown), - MemoryRegionInfo({0x2000, 0x20}, yes, unknown, unknown, yes, - ConstString(), unknown, 0, unknown)), - false)); -} - -TEST_F(MinidumpParserTest, GetMemoryRegionInfoLinuxMaps) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: LinuxMaps - Text: | - 400d9000-400db000 r-xp 00000000 b3:04 227 /system/bin/app_process - 400db000-400dc000 r--p 00001000 b3:04 227 /system/bin/app_process - 400dc000-400dd000 rw-p 00000000 00:00 0 - 400ec000-400ed000 r--p 00000000 00:00 0 - 400ee000-400ef000 rw-p 00010000 b3:04 300 /system/bin/linker - 400fc000-400fd000 rwxp 00001000 b3:04 1096 /system/lib/liblog.so - -... -)"), - llvm::Succeeded()); - // Test we can get memory regions from the linux /proc//maps stream when - // we don't have a MemoryInfoListStream. - ConstString app_process("/system/bin/app_process"); - ConstString linker("/system/bin/linker"); - ConstString liblog("/system/lib/liblog.so"); - EXPECT_THAT(parser->BuildMemoryRegions(), - testing::Pair( - testing::ElementsAre( - MemoryRegionInfo({0x400d9000, 0x2000}, yes, no, yes, yes, - app_process, unknown, 0, unknown), - MemoryRegionInfo({0x400db000, 0x1000}, yes, no, no, yes, - app_process, unknown, 0, unknown), - MemoryRegionInfo({0x400dc000, 0x1000}, yes, yes, no, yes, - ConstString(), unknown, 0, unknown), - MemoryRegionInfo({0x400ec000, 0x1000}, yes, no, no, yes, - ConstString(), unknown, 0, unknown), - MemoryRegionInfo({0x400ee000, 0x1000}, yes, yes, no, yes, - linker, unknown, 0, unknown), - MemoryRegionInfo({0x400fc000, 0x1000}, yes, yes, yes, yes, - liblog, unknown, 0, unknown)), - true)); -} - -TEST_F(MinidumpParserTest, GetMemoryRegionInfoLinuxMapsError) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: LinuxMaps - Text: | - 400d9000-400db000 r?xp 00000000 b3:04 227 - 400fc000-400fd000 rwxp 00001000 b3:04 1096 -... -)"), - llvm::Succeeded()); - // Test that when a /proc/maps region fails to parse - // we handle the error and continue with the rest. - EXPECT_THAT(parser->BuildMemoryRegions(), - testing::Pair(testing::ElementsAre(MemoryRegionInfo( - {0x400fc000, 0x1000}, yes, yes, yes, yes, - ConstString(nullptr), unknown, 0, unknown)), - true)); -} - -// Windows Minidump tests -TEST_F(MinidumpParserTest, GetArchitectureWindows) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: SystemInfo - Processor Arch: X86 - Processor Level: 6 - Processor Revision: 15876 - Number of Processors: 32 - Product type: 1 - Major Version: 6 - Minor Version: 1 - Build Number: 7601 - Platform ID: Win32NT - CSD Version: Service Pack 1 - Suite Mask: 0x0100 - CPU: - Vendor ID: GenuineIntel - Version Info: 0x000306E4 - Feature Info: 0xBFEBFBFF - AMD Extended Features: 0x771EEC80 -... -)"), - llvm::Succeeded()); - ASSERT_EQ(llvm::Triple::ArchType::x86, - parser->GetArchitecture().GetMachine()); - ASSERT_EQ(llvm::Triple::OSType::Win32, - parser->GetArchitecture().GetTriple().getOS()); -} - -TEST_F(MinidumpParserTest, GetLinuxProcStatus_no_stream) { - // Test that GetLinuxProcStatus returns nullptr when the minidump does not - // contain this stream. - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: -... -)"), - llvm::Succeeded()); - EXPECT_EQ(llvm::None, parser->GetLinuxProcStatus()); -} - -TEST_F(MinidumpParserTest, GetMiscInfoWindows) { - SetUpData("fizzbuzz_no_heap.dmp"); - const MinidumpMiscInfo *misc_info = parser->GetMiscInfo(); - ASSERT_NE(nullptr, misc_info); - llvm::Optional pid = misc_info->GetPid(); - ASSERT_TRUE(pid.hasValue()); - ASSERT_EQ(4440UL, pid.getValue()); -} - -TEST_F(MinidumpParserTest, GetPidWindows) { - SetUpData("fizzbuzz_no_heap.dmp"); - llvm::Optional pid = parser->GetPid(); - ASSERT_TRUE(pid.hasValue()); - ASSERT_EQ(4440UL, pid.getValue()); -} - -// wow64 -TEST_F(MinidumpParserTest, GetPidWow64) { - SetUpData("fizzbuzz_wow64.dmp"); - llvm::Optional pid = parser->GetPid(); - ASSERT_TRUE(pid.hasValue()); - ASSERT_EQ(7836UL, pid.getValue()); -} - -// Register tests -#define REG_VAL32(x) *(reinterpret_cast(x)) -#define REG_VAL64(x) *(reinterpret_cast(x)) - -TEST_F(MinidumpParserTest, GetThreadContext_x86_32) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ThreadList - Threads: - - Thread Id: 0x00026804 - Stack: - Start of Memory Range: 0x00000000FF9DD000 - Content: 68D39DFF - Context: 0F0001000000000000000000000000000000000000000000000000007F03FFFF0000FFFFFFFFFFFF09DC62F72300000088E36CF72B00FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063000000000000002B0000002B000000A88204085CD59DFF008077F7A3D49DFF01000000000000003CD59DFFA082040823000000820201002CD59DFF2B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -)"), - llvm::Succeeded()); - - llvm::ArrayRef thread_list = parser->GetThreads(); - const minidump::Thread &thread = thread_list[0]; - llvm::ArrayRef registers(parser->GetThreadContext(thread)); - const MinidumpContext_x86_32 *context; - EXPECT_TRUE(consumeObject(registers, context).Success()); - - EXPECT_EQ(MinidumpContext_x86_32_Flags(uint32_t(context->context_flags)), - MinidumpContext_x86_32_Flags::x86_32_Flag | - MinidumpContext_x86_32_Flags::Full | - MinidumpContext_x86_32_Flags::FloatingPoint); - - EXPECT_EQ(0x00000000u, context->eax); - EXPECT_EQ(0xf7778000u, context->ebx); - EXPECT_EQ(0x00000001u, context->ecx); - EXPECT_EQ(0xff9dd4a3u, context->edx); - EXPECT_EQ(0x080482a8u, context->edi); - EXPECT_EQ(0xff9dd55cu, context->esi); - EXPECT_EQ(0xff9dd53cu, context->ebp); - EXPECT_EQ(0xff9dd52cu, context->esp); - EXPECT_EQ(0x080482a0u, context->eip); - EXPECT_EQ(0x00010282u, context->eflags); - EXPECT_EQ(0x0023u, context->cs); - EXPECT_EQ(0x0000u, context->fs); - EXPECT_EQ(0x0063u, context->gs); - EXPECT_EQ(0x002bu, context->ss); - EXPECT_EQ(0x002bu, context->ds); - EXPECT_EQ(0x002bu, context->es); -} - -TEST_F(MinidumpParserTest, GetThreadContext_x86_64) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ThreadList - Threads: - - Thread Id: 0x00003E81 - Stack: - Start of Memory Range: 0x00007FFCEB34A000 - Content: C84D04BCE97F00 - Context: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0010000000000033000000000000000000000006020100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010A234EBFC7F000010A234EBFC7F00000000000000000000F09C34EBFC7F0000C0A91ABCE97F00000000000000000000A0163FBCE97F00004602000000000000921C40000000000030A434EBFC7F000000000000000000000000000000000000C61D4000000000007F0300000000000000000000000000000000000000000000801F0000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF00FFFFFFFFFFFFFF00FFFFFFFF25252525252525252525252525252525000000000000000000000000000000000000000000000000000000000000000000FFFF00FFFFFFFFFFFFFF00FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -... -)"), - llvm::Succeeded()); - llvm::ArrayRef thread_list = parser->GetThreads(); - const minidump::Thread &thread = thread_list[0]; - llvm::ArrayRef registers(parser->GetThreadContext(thread)); - const MinidumpContext_x86_64 *context; - EXPECT_TRUE(consumeObject(registers, context).Success()); - - EXPECT_EQ(MinidumpContext_x86_64_Flags(uint32_t(context->context_flags)), - MinidumpContext_x86_64_Flags::x86_64_Flag | - MinidumpContext_x86_64_Flags::Control | - MinidumpContext_x86_64_Flags::FloatingPoint | - MinidumpContext_x86_64_Flags::Integer); - EXPECT_EQ(0x0000000000000000u, context->rax); - EXPECT_EQ(0x0000000000000000u, context->rbx); - EXPECT_EQ(0x0000000000000010u, context->rcx); - EXPECT_EQ(0x0000000000000000u, context->rdx); - EXPECT_EQ(0x00007ffceb349cf0u, context->rdi); - EXPECT_EQ(0x0000000000000000u, context->rsi); - EXPECT_EQ(0x00007ffceb34a210u, context->rbp); - EXPECT_EQ(0x00007ffceb34a210u, context->rsp); - EXPECT_EQ(0x00007fe9bc1aa9c0u, context->r8); - EXPECT_EQ(0x0000000000000000u, context->r9); - EXPECT_EQ(0x00007fe9bc3f16a0u, context->r10); - EXPECT_EQ(0x0000000000000246u, context->r11); - EXPECT_EQ(0x0000000000401c92u, context->r12); - EXPECT_EQ(0x00007ffceb34a430u, context->r13); - EXPECT_EQ(0x0000000000000000u, context->r14); - EXPECT_EQ(0x0000000000000000u, context->r15); - EXPECT_EQ(0x0000000000401dc6u, context->rip); - EXPECT_EQ(0x00010206u, context->eflags); - EXPECT_EQ(0x0033u, context->cs); - EXPECT_EQ(0x0000u, context->ss); -} - -TEST_F(MinidumpParserTest, GetThreadContext_x86_32_wow64) { - SetUpData("fizzbuzz_wow64.dmp"); - llvm::ArrayRef thread_list = parser->GetThreads(); - const minidump::Thread &thread = thread_list[0]; - llvm::ArrayRef registers(parser->GetThreadContextWow64(thread)); - const MinidumpContext_x86_32 *context; - EXPECT_TRUE(consumeObject(registers, context).Success()); - - EXPECT_EQ(MinidumpContext_x86_32_Flags(uint32_t(context->context_flags)), - MinidumpContext_x86_32_Flags::x86_32_Flag | - MinidumpContext_x86_32_Flags::Full | - MinidumpContext_x86_32_Flags::FloatingPoint | - MinidumpContext_x86_32_Flags::ExtendedRegisters); - - EXPECT_EQ(0x00000000u, context->eax); - EXPECT_EQ(0x0037f608u, context->ebx); - EXPECT_EQ(0x00e61578u, context->ecx); - EXPECT_EQ(0x00000008u, context->edx); - EXPECT_EQ(0x00000000u, context->edi); - EXPECT_EQ(0x00000002u, context->esi); - EXPECT_EQ(0x0037f654u, context->ebp); - EXPECT_EQ(0x0037f5b8u, context->esp); - EXPECT_EQ(0x77ce01fdu, context->eip); - EXPECT_EQ(0x00000246u, context->eflags); - EXPECT_EQ(0x0023u, context->cs); - EXPECT_EQ(0x0053u, context->fs); - EXPECT_EQ(0x002bu, context->gs); - EXPECT_EQ(0x002bu, context->ss); - EXPECT_EQ(0x002bu, context->ds); - EXPECT_EQ(0x002bu, context->es); -} - -TEST_F(MinidumpParserTest, MinidumpDuplicateModuleMinAddress) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ModuleList - Modules: - - Base of Image: 0x0000000000002000 - Size of Image: 0x00001000 - Module Name: '/tmp/a' - CodeView Record: '' - - Base of Image: 0x0000000000001000 - Size of Image: 0x00001000 - Module Name: '/tmp/a' - CodeView Record: '' -... -)"), - llvm::Succeeded()); - // If we have a module mentioned twice in the module list, the filtered - // module list should contain the instance with the lowest BaseOfImage. - std::vector filtered_modules = - parser->GetFilteredModuleList(); - ASSERT_EQ(1u, filtered_modules.size()); - EXPECT_EQ(0x0000000000001000u, filtered_modules[0]->BaseOfImage); -} - -TEST_F(MinidumpParserTest, MinidumpDuplicateModuleMappedFirst) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ModuleList - Modules: - - Base of Image: 0x400d0000 - Size of Image: 0x00002000 - Module Name: '/usr/lib/libc.so' - CodeView Record: '' - - Base of Image: 0x400d3000 - Size of Image: 0x00001000 - Module Name: '/usr/lib/libc.so' - CodeView Record: '' - - Type: LinuxMaps - Text: | - 400d0000-400d2000 r--p 00000000 b3:04 227 /usr/lib/libc.so - 400d2000-400d3000 rw-p 00000000 00:00 0 - 400d3000-400d4000 r-xp 00010000 b3:04 227 /usr/lib/libc.so - 400d4000-400d5000 rwxp 00001000 b3:04 227 /usr/lib/libc.so -... -)"), - llvm::Succeeded()); - // If we have a module mentioned twice in the module list, and we have full - // linux maps for all of the memory regions, make sure we pick the one that - // has a consecutive region with a matching path that has executable - // permissions. If clients open an object file with mmap, breakpad can create - // multiple mappings for a library errnoneously and the lowest address isn't - // always the right address. In this case we check the consective memory - // regions whose path matches starting at the base of image address and make - // sure one of the regions is executable and prefer that one. - // - // This test will make sure that if the executable is second in the module - // list, that it will become the selected module in the filtered list. - std::vector filtered_modules = - parser->GetFilteredModuleList(); - ASSERT_EQ(1u, filtered_modules.size()); - EXPECT_EQ(0x400d3000u, filtered_modules[0]->BaseOfImage); -} - -TEST_F(MinidumpParserTest, MinidumpDuplicateModuleMappedSecond) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ModuleList - Modules: - - Base of Image: 0x400d0000 - Size of Image: 0x00002000 - Module Name: '/usr/lib/libc.so' - CodeView Record: '' - - Base of Image: 0x400d3000 - Size of Image: 0x00001000 - Module Name: '/usr/lib/libc.so' - CodeView Record: '' - - Type: LinuxMaps - Text: | - 400d0000-400d1000 r-xp 00010000 b3:04 227 /usr/lib/libc.so - 400d1000-400d2000 rwxp 00001000 b3:04 227 /usr/lib/libc.so - 400d2000-400d3000 rw-p 00000000 00:00 0 - 400d3000-400d5000 r--p 00000000 b3:04 227 /usr/lib/libc.so -... -)"), - llvm::Succeeded()); - // If we have a module mentioned twice in the module list, and we have full - // linux maps for all of the memory regions, make sure we pick the one that - // has a consecutive region with a matching path that has executable - // permissions. If clients open an object file with mmap, breakpad can create - // multiple mappings for a library errnoneously and the lowest address isn't - // always the right address. In this case we check the consective memory - // regions whose path matches starting at the base of image address and make - // sure one of the regions is executable and prefer that one. - // - // This test will make sure that if the executable is first in the module - // list, that it will remain the correctly selected module in the filtered - // list. - std::vector filtered_modules = - parser->GetFilteredModuleList(); - ASSERT_EQ(1u, filtered_modules.size()); - EXPECT_EQ(0x400d0000u, filtered_modules[0]->BaseOfImage); -} - -TEST_F(MinidumpParserTest, MinidumpDuplicateModuleMappedSecondHigh) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ModuleList - Modules: - - Base of Image: 0x400d3000 - Size of Image: 0x00002000 - Module Name: '/usr/lib/libc.so' - CodeView Record: '' - - Base of Image: 0x400d0000 - Size of Image: 0x00001000 - Module Name: '/usr/lib/libc.so' - CodeView Record: '' - - Type: LinuxMaps - Text: | - 400d0000-400d2000 r--p 00000000 b3:04 227 /usr/lib/libc.so - 400d2000-400d3000 rw-p 00000000 00:00 0 - 400d3000-400d4000 r-xp 00010000 b3:04 227 /usr/lib/libc.so - 400d4000-400d5000 rwxp 00001000 b3:04 227 /usr/lib/libc.so -... -)"), - llvm::Succeeded()); - // If we have a module mentioned twice in the module list, and we have full - // linux maps for all of the memory regions, make sure we pick the one that - // has a consecutive region with a matching path that has executable - // permissions. If clients open an object file with mmap, breakpad can create - // multiple mappings for a library errnoneously and the lowest address isn't - // always the right address. In this case we check the consective memory - // regions whose path matches starting at the base of image address and make - // sure one of the regions is executable and prefer that one. - // - // This test will make sure that if the executable is first in the module - // list, that it will remain the correctly selected module in the filtered - // list, even if the non-executable module was loaded at a lower base address. - std::vector filtered_modules = - parser->GetFilteredModuleList(); - ASSERT_EQ(1u, filtered_modules.size()); - EXPECT_EQ(0x400d3000u, filtered_modules[0]->BaseOfImage); -} - -TEST_F(MinidumpParserTest, MinidumpDuplicateModuleSeparateCode) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ModuleList - Modules: - - Base of Image: 0x400d0000 - Size of Image: 0x00002000 - Module Name: '/usr/lib/libc.so' - CodeView Record: '' - - Base of Image: 0x400d5000 - Size of Image: 0x00001000 - Module Name: '/usr/lib/libc.so' - CodeView Record: '' - - Type: LinuxMaps - Text: | - 400d0000-400d3000 r--p 00000000 b3:04 227 /usr/lib/libc.so - 400d3000-400d5000 rw-p 00000000 00:00 0 - 400d5000-400d6000 r--p 00000000 b3:04 227 /usr/lib/libc.so - 400d6000-400d7000 r-xp 00010000 b3:04 227 /usr/lib/libc.so - 400d7000-400d8000 rwxp 00001000 b3:04 227 /usr/lib/libc.so -... -)"), - llvm::Succeeded()); - // If we have a module mentioned twice in the module list, and we have full - // linux maps for all of the memory regions, make sure we pick the one that - // has a consecutive region with a matching path that has executable - // permissions. If clients open an object file with mmap, breakpad can create - // multiple mappings for a library errnoneously and the lowest address isn't - // always the right address. In this case we check the consective memory - // regions whose path matches starting at the base of image address and make - // sure one of the regions is executable and prefer that one. - // - // This test will make sure if binaries are compiled with "-z separate-code", - // where the first region for a binary won't be marked as executable, that - // it gets selected by detecting the second consecutive mapping at 0x400d7000 - // when asked about the a module mamed "/usr/lib/libc.so" at 0x400d5000. - std::vector filtered_modules = - parser->GetFilteredModuleList(); - ASSERT_EQ(1u, filtered_modules.size()); - EXPECT_EQ(0x400d5000u, filtered_modules[0]->BaseOfImage); -} - -TEST_F(MinidumpParserTest, MinidumpModuleOrder) { - ASSERT_THAT_ERROR(SetUpFromYaml(R"( ---- !minidump -Streams: - - Type: ModuleList - Modules: - - Base of Image: 0x0000000000002000 - Size of Image: 0x00001000 - Module Name: '/tmp/a' - CodeView Record: '' - - Base of Image: 0x0000000000001000 - Size of Image: 0x00001000 - Module Name: '/tmp/b' - CodeView Record: '' -... -)"), - llvm::Succeeded()); - // Test module filtering does not affect the overall module order. Previous - // versions of the MinidumpParser::GetFilteredModuleList() function would sort - // all images by address and modify the order of the modules. - std::vector filtered_modules = - parser->GetFilteredModuleList(); - ASSERT_EQ(2u, filtered_modules.size()); - EXPECT_EQ(0x0000000000002000u, filtered_modules[0]->BaseOfImage); - EXPECT_THAT_EXPECTED( - parser->GetMinidumpFile().getString(filtered_modules[0]->ModuleNameRVA), - llvm::HasValue("/tmp/a")); - EXPECT_EQ(0x0000000000001000u, filtered_modules[1]->BaseOfImage); - EXPECT_THAT_EXPECTED( - parser->GetMinidumpFile().getString(filtered_modules[1]->ModuleNameRVA), - llvm::HasValue("/tmp/b")); -} diff --git a/gnu/llvm/lldb/unittests/Process/minidump/RegisterContextMinidumpTest.cpp b/gnu/llvm/lldb/unittests/Process/minidump/RegisterContextMinidumpTest.cpp deleted file mode 100644 index b7d25b2d4f0..00000000000 --- a/gnu/llvm/lldb/unittests/Process/minidump/RegisterContextMinidumpTest.cpp +++ /dev/null @@ -1,201 +0,0 @@ -//===-- RegisterContextMinidumpTest.cpp -----------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/Process/Utility/RegisterContextLinux_i386.h" -#include "Plugins/Process/Utility/RegisterContextLinux_x86_64.h" -#include "Plugins/Process/minidump/RegisterContextMinidump_x86_32.h" -#include "Plugins/Process/minidump/RegisterContextMinidump_x86_64.h" -#include "Plugins/Process/minidump/RegisterContextMinidump_ARM.h" -#include "lldb/Utility/DataBuffer.h" -#include "llvm/ADT/StringRef.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb_private::minidump; - -static uint32_t reg32(const DataBuffer &Buf, const RegisterInfo &Info) { - return *reinterpret_cast(Buf.GetBytes() + Info.byte_offset); -} - -static uint64_t reg64(const DataBuffer &Buf, const RegisterInfo &Info) { - return *reinterpret_cast(Buf.GetBytes() + Info.byte_offset); -} - -TEST(RegisterContextMinidump, ConvertMinidumpContext_x86_32) { - MinidumpContext_x86_32 Context; - Context.context_flags = - static_cast(MinidumpContext_x86_32_Flags::x86_32_Flag | - MinidumpContext_x86_32_Flags::Control | - MinidumpContext_x86_32_Flags::Segments | - MinidumpContext_x86_32_Flags::Integer); - Context.eax = 0x00010203; - Context.ebx = 0x04050607; - Context.ecx = 0x08090a0b; - Context.edx = 0x0c0d0e0f; - Context.edi = 0x10111213; - Context.esi = 0x14151617; - Context.ebp = 0x18191a1b; - Context.esp = 0x1c1d1e1f; - Context.eip = 0x20212223; - Context.eflags = 0x24252627; - Context.cs = 0x2829; - Context.fs = 0x2a2b; - Context.gs = 0x2c2d; - Context.ss = 0x2e2f; - Context.ds = 0x3031; - Context.es = 0x3233; - llvm::ArrayRef ContextRef(reinterpret_cast(&Context), - sizeof(Context)); - - ArchSpec arch("i386-pc-linux"); - auto RegInterface = std::make_unique(arch); - lldb::DataBufferSP Buf = - ConvertMinidumpContext_x86_32(ContextRef, RegInterface.get()); - ASSERT_EQ(RegInterface->GetGPRSize(), Buf->GetByteSize()); - - const RegisterInfo *Info = RegInterface->GetRegisterInfo(); - ASSERT_NE(nullptr, Info); - - EXPECT_EQ(Context.eax, reg32(*Buf, Info[lldb_eax_i386])); - EXPECT_EQ(Context.ebx, reg32(*Buf, Info[lldb_ebx_i386])); - EXPECT_EQ(Context.ecx, reg32(*Buf, Info[lldb_ecx_i386])); - EXPECT_EQ(Context.edx, reg32(*Buf, Info[lldb_edx_i386])); - EXPECT_EQ(Context.edi, reg32(*Buf, Info[lldb_edi_i386])); - EXPECT_EQ(Context.esi, reg32(*Buf, Info[lldb_esi_i386])); - EXPECT_EQ(Context.ebp, reg32(*Buf, Info[lldb_ebp_i386])); - EXPECT_EQ(Context.esp, reg32(*Buf, Info[lldb_esp_i386])); - EXPECT_EQ(Context.eip, reg32(*Buf, Info[lldb_eip_i386])); - EXPECT_EQ(Context.eflags, reg32(*Buf, Info[lldb_eflags_i386])); - EXPECT_EQ(Context.cs, reg32(*Buf, Info[lldb_cs_i386])); - EXPECT_EQ(Context.fs, reg32(*Buf, Info[lldb_fs_i386])); - EXPECT_EQ(Context.gs, reg32(*Buf, Info[lldb_gs_i386])); - EXPECT_EQ(Context.ss, reg32(*Buf, Info[lldb_ss_i386])); - EXPECT_EQ(Context.ds, reg32(*Buf, Info[lldb_ds_i386])); - EXPECT_EQ(Context.es, reg32(*Buf, Info[lldb_es_i386])); -} - -TEST(RegisterContextMinidump, ConvertMinidumpContext_x86_64) { - MinidumpContext_x86_64 Context; - Context.context_flags = - static_cast(MinidumpContext_x86_64_Flags::x86_64_Flag | - MinidumpContext_x86_64_Flags::Control | - MinidumpContext_x86_64_Flags::Segments | - MinidumpContext_x86_64_Flags::Integer); - Context.rax = 0x0001020304050607; - Context.rbx = 0x08090a0b0c0d0e0f; - Context.rcx = 0x1011121314151617; - Context.rdx = 0x18191a1b1c1d1e1f; - Context.rdi = 0x2021222324252627; - Context.rsi = 0x28292a2b2c2d2e2f; - Context.rbp = 0x3031323334353637; - Context.rsp = 0x38393a3b3c3d3e3f; - Context.r8 = 0x4041424344454647; - Context.r9 = 0x48494a4b4c4d4e4f; - Context.r10 = 0x5051525354555657; - Context.r11 = 0x58595a5b5c5d5e5f; - Context.r12 = 0x6061626364656667; - Context.r13 = 0x68696a6b6c6d6e6f; - Context.r14 = 0x7071727374757677; - Context.r15 = 0x78797a7b7c7d7e7f; - Context.rip = 0x8081828384858687; - Context.eflags = 0x88898a8b; - Context.cs = 0x8c8d; - Context.fs = 0x8e8f; - Context.gs = 0x9091; - Context.ss = 0x9293; - Context.ds = 0x9495; - Context.ss = 0x9697; - llvm::ArrayRef ContextRef(reinterpret_cast(&Context), - sizeof(Context)); - - ArchSpec arch("x86_64-pc-linux"); - auto RegInterface = std::make_unique(arch); - lldb::DataBufferSP Buf = - ConvertMinidumpContext_x86_64(ContextRef, RegInterface.get()); - ASSERT_EQ(RegInterface->GetGPRSize(), Buf->GetByteSize()); - - const RegisterInfo *Info = RegInterface->GetRegisterInfo(); - EXPECT_EQ(Context.rax, reg64(*Buf, Info[lldb_rax_x86_64])); - EXPECT_EQ(Context.rbx, reg64(*Buf, Info[lldb_rbx_x86_64])); - EXPECT_EQ(Context.rcx, reg64(*Buf, Info[lldb_rcx_x86_64])); - EXPECT_EQ(Context.rdx, reg64(*Buf, Info[lldb_rdx_x86_64])); - EXPECT_EQ(Context.rdi, reg64(*Buf, Info[lldb_rdi_x86_64])); - EXPECT_EQ(Context.rsi, reg64(*Buf, Info[lldb_rsi_x86_64])); - EXPECT_EQ(Context.rbp, reg64(*Buf, Info[lldb_rbp_x86_64])); - EXPECT_EQ(Context.rsp, reg64(*Buf, Info[lldb_rsp_x86_64])); - EXPECT_EQ(Context.r8, reg64(*Buf, Info[lldb_r8_x86_64])); - EXPECT_EQ(Context.r9, reg64(*Buf, Info[lldb_r9_x86_64])); - EXPECT_EQ(Context.r10, reg64(*Buf, Info[lldb_r10_x86_64])); - EXPECT_EQ(Context.r11, reg64(*Buf, Info[lldb_r11_x86_64])); - EXPECT_EQ(Context.r12, reg64(*Buf, Info[lldb_r12_x86_64])); - EXPECT_EQ(Context.r13, reg64(*Buf, Info[lldb_r13_x86_64])); - EXPECT_EQ(Context.r14, reg64(*Buf, Info[lldb_r14_x86_64])); - EXPECT_EQ(Context.r15, reg64(*Buf, Info[lldb_r15_x86_64])); - EXPECT_EQ(Context.rip, reg64(*Buf, Info[lldb_rip_x86_64])); - EXPECT_EQ(Context.eflags, reg64(*Buf, Info[lldb_rflags_x86_64])); - EXPECT_EQ(Context.cs, reg64(*Buf, Info[lldb_cs_x86_64])); - EXPECT_EQ(Context.fs, reg64(*Buf, Info[lldb_fs_x86_64])); - EXPECT_EQ(Context.gs, reg64(*Buf, Info[lldb_gs_x86_64])); - EXPECT_EQ(Context.ss, reg64(*Buf, Info[lldb_ss_x86_64])); - EXPECT_EQ(Context.ds, reg64(*Buf, Info[lldb_ds_x86_64])); - EXPECT_EQ(Context.es, reg64(*Buf, Info[lldb_es_x86_64])); -} - -static void TestARMRegInfo(const lldb_private::RegisterInfo *info) { - // Make sure we have valid register numbers for eRegisterKindEHFrame and - // eRegisterKindDWARF for GPR registers r0-r15 so that we can unwind - // correctly when using this information. - llvm::StringRef name(info->name); - llvm::StringRef alt_name(info->alt_name); - if (name.startswith("r") || alt_name.startswith("r")) { - EXPECT_NE(info->kinds[lldb::eRegisterKindEHFrame], LLDB_INVALID_REGNUM); - EXPECT_NE(info->kinds[lldb::eRegisterKindDWARF], LLDB_INVALID_REGNUM); - } - // Verify generic register are set correctly - if (name == "r0") { - EXPECT_EQ(info->kinds[lldb::eRegisterKindGeneric], - (uint32_t)LLDB_REGNUM_GENERIC_ARG1); - } else if (name == "r1") { - EXPECT_EQ(info->kinds[lldb::eRegisterKindGeneric], - (uint32_t)LLDB_REGNUM_GENERIC_ARG2); - } else if (name == "r2") { - EXPECT_EQ(info->kinds[lldb::eRegisterKindGeneric], - (uint32_t)LLDB_REGNUM_GENERIC_ARG3); - } else if (name == "r3") { - EXPECT_EQ(info->kinds[lldb::eRegisterKindGeneric], - (uint32_t)LLDB_REGNUM_GENERIC_ARG4); - } else if (name == "sp") { - EXPECT_EQ(info->kinds[lldb::eRegisterKindGeneric], - (uint32_t)LLDB_REGNUM_GENERIC_SP); - } else if (name == "fp") { - EXPECT_EQ(info->kinds[lldb::eRegisterKindGeneric], - (uint32_t)LLDB_REGNUM_GENERIC_FP); - } else if (name == "lr") { - EXPECT_EQ(info->kinds[lldb::eRegisterKindGeneric], - (uint32_t)LLDB_REGNUM_GENERIC_RA); - } else if (name == "pc") { - EXPECT_EQ(info->kinds[lldb::eRegisterKindGeneric], - (uint32_t)LLDB_REGNUM_GENERIC_PC); - } else if (name == "cpsr") { - EXPECT_EQ(info->kinds[lldb::eRegisterKindGeneric], - (uint32_t)LLDB_REGNUM_GENERIC_FLAGS); - } -} - -TEST(RegisterContextMinidump, CheckRegisterContextMinidump_ARM) { - size_t num_regs = RegisterContextMinidump_ARM::GetRegisterCountStatic(); - const lldb_private::RegisterInfo *reg_info; - for (size_t reg=0; reg' which is -// incompatible with C -#if _MSC_VER -#pragma warning (push) -#pragma warning (disable : 4190) -#endif - -extern "C" llvm::Expected LLDBSwigLuaBreakpointCallbackFunction( - lua_State *L, lldb::StackFrameSP stop_frame_sp, - lldb::BreakpointLocationSP bp_loc_sp, StructuredDataImpl *extra_args_impl) { - return false; -} - -extern "C" llvm::Expected LLDBSwigLuaWatchpointCallbackFunction( - lua_State *L, lldb::StackFrameSP stop_frame_sp, lldb::WatchpointSP wp_sp) { - return false; -} - -#if _MSC_VER -#pragma warning (pop) -#endif - -#pragma clang diagnostic pop - -TEST(LuaTest, RunValid) { - Lua lua; - llvm::Error error = lua.Run("foo = 1"); - EXPECT_FALSE(static_cast(error)); -} - -TEST(LuaTest, RunInvalid) { - Lua lua; - llvm::Error error = lua.Run("nil = foo"); - EXPECT_TRUE(static_cast(error)); - EXPECT_EQ(llvm::toString(std::move(error)), - "[string \"buffer\"]:1: unexpected symbol near 'nil'\n"); -} diff --git a/gnu/llvm/lldb/unittests/ScriptInterpreter/Lua/ScriptInterpreterTests.cpp b/gnu/llvm/lldb/unittests/ScriptInterpreter/Lua/ScriptInterpreterTests.cpp deleted file mode 100644 index e4aebfb650c..00000000000 --- a/gnu/llvm/lldb/unittests/ScriptInterpreter/Lua/ScriptInterpreterTests.cpp +++ /dev/null @@ -1,56 +0,0 @@ -//===-- LuaTests.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/Platform/Linux/PlatformLinux.h" -#include "Plugins/ScriptInterpreter/Lua/ScriptInterpreterLua.h" -#include "lldb/Core/Debugger.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Interpreter/CommandReturnObject.h" -#include "lldb/Target/Platform.h" -#include "lldb/Utility/Reproducer.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb_private::repro; -using namespace lldb; - -namespace { -class ScriptInterpreterTest : public ::testing::Test { -public: - void SetUp() override { - llvm::cantFail(Reproducer::Initialize(ReproducerMode::Off, llvm::None)); - FileSystem::Initialize(); - HostInfo::Initialize(); - - // Pretend Linux is the host platform. - platform_linux::PlatformLinux::Initialize(); - ArchSpec arch("powerpc64-pc-linux"); - Platform::SetHostPlatform( - platform_linux::PlatformLinux::CreateInstance(true, &arch)); - } - void TearDown() override { - platform_linux::PlatformLinux::Terminate(); - HostInfo::Terminate(); - FileSystem::Terminate(); - Reproducer::Terminate(); - } -}; -} // namespace - -TEST_F(ScriptInterpreterTest, ExecuteOneLine) { - DebuggerSP debugger_sp = Debugger::CreateInstance(); - ASSERT_TRUE(debugger_sp); - - ScriptInterpreterLua script_interpreter(*debugger_sp); - CommandReturnObject result(/*colors*/ false); - EXPECT_TRUE(script_interpreter.ExecuteOneLine("foo = 1", &result)); - EXPECT_FALSE(script_interpreter.ExecuteOneLine("nil = foo", &result)); - EXPECT_TRUE(result.GetErrorData().startswith( - "error: lua failed attempting to evaluate 'nil = foo'")); -} diff --git a/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/CMakeLists.txt b/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/CMakeLists.txt deleted file mode 100644 index 90a53bf1751..00000000000 --- a/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -add_lldb_unittest(ScriptInterpreterPythonTests - PythonDataObjectsTests.cpp - PythonTestSuite.cpp - - LINK_LIBS - lldbHost - lldbPluginScriptInterpreterPython - LLVMTestingSupport - LINK_COMPONENTS - Support - ) - -if(Python3_RPATH) - set_property(TARGET ScriptInterpreterPythonTests APPEND PROPERTY BUILD_RPATH "${Python3_RPATH}") -endif() diff --git a/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp b/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp deleted file mode 100644 index 75a1f5e67d3..00000000000 --- a/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonDataObjectsTests.cpp +++ /dev/null @@ -1,861 +0,0 @@ -//===-- PythonDataObjectsTests.cpp ----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/ScriptInterpreter/Python/lldb-python.h" -#include "gtest/gtest.h" - -#include "Plugins/ScriptInterpreter/Python/PythonDataObjects.h" -#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h" -#include "lldb/Host/File.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/lldb-enumerations.h" -#include "llvm/Testing/Support/Error.h" - -#include "PythonTestSuite.h" - -using namespace lldb_private; -using namespace lldb_private::python; -using llvm::Error; -using llvm::Expected; - -class PythonDataObjectsTest : public PythonTestSuite { -public: - void SetUp() override { - PythonTestSuite::SetUp(); - - m_sys_module = unwrapIgnoringErrors(PythonModule::Import("sys")); - m_main_module = PythonModule::MainModule(); - m_builtins_module = PythonModule::BuiltinsModule(); - } - - void TearDown() override { - m_sys_module.Reset(); - m_main_module.Reset(); - m_builtins_module.Reset(); - - PythonTestSuite::TearDown(); - } - -protected: - PythonModule m_sys_module; - PythonModule m_main_module; - PythonModule m_builtins_module; -}; - -TEST_F(PythonDataObjectsTest, TestOwnedReferences) { - // After creating a new object, the refcount should be >= 1 - PyObject *obj = PyLong_FromLong(3); - Py_ssize_t original_refcnt = obj->ob_refcnt; - EXPECT_LE(1, original_refcnt); - - // If we take an owned reference, the refcount should be the same - PythonObject owned_long(PyRefType::Owned, obj); - EXPECT_EQ(original_refcnt, owned_long.get()->ob_refcnt); - - // Take another reference and verify that the refcount increases by 1 - PythonObject strong_ref(owned_long); - EXPECT_EQ(original_refcnt + 1, strong_ref.get()->ob_refcnt); - - // If we reset the first one, the refcount should be the original value. - owned_long.Reset(); - EXPECT_EQ(original_refcnt, strong_ref.get()->ob_refcnt); -} - -TEST_F(PythonDataObjectsTest, TestResetting) { - PythonDictionary dict(PyInitialValue::Empty); - - PyObject *new_dict = PyDict_New(); - dict = Take(new_dict); - EXPECT_EQ(new_dict, dict.get()); - - dict = Take(PyDict_New()); - EXPECT_NE(nullptr, dict.get()); - dict.Reset(); - EXPECT_EQ(nullptr, dict.get()); -} - -TEST_F(PythonDataObjectsTest, TestBorrowedReferences) { - PythonInteger long_value(PyRefType::Owned, PyLong_FromLong(3)); - Py_ssize_t original_refcnt = long_value.get()->ob_refcnt; - EXPECT_LE(1, original_refcnt); - - PythonInteger borrowed_long(PyRefType::Borrowed, long_value.get()); - EXPECT_EQ(original_refcnt + 1, borrowed_long.get()->ob_refcnt); -} - -TEST_F(PythonDataObjectsTest, TestGlobalNameResolutionNoDot) { - PythonObject sys_module = m_main_module.ResolveName("sys"); - EXPECT_EQ(m_sys_module.get(), sys_module.get()); - EXPECT_TRUE(sys_module.IsAllocated()); - EXPECT_TRUE(PythonModule::Check(sys_module.get())); -} - -TEST_F(PythonDataObjectsTest, TestModuleNameResolutionNoDot) { - PythonObject sys_path = m_sys_module.ResolveName("path"); - PythonObject sys_version_info = m_sys_module.ResolveName("version_info"); - EXPECT_TRUE(sys_path.IsAllocated()); - EXPECT_TRUE(sys_version_info.IsAllocated()); - - EXPECT_TRUE(PythonList::Check(sys_path.get())); -} - -TEST_F(PythonDataObjectsTest, TestTypeNameResolutionNoDot) { - PythonObject sys_version_info = m_sys_module.ResolveName("version_info"); - - PythonObject version_info_type(PyRefType::Owned, - PyObject_Type(sys_version_info.get())); - EXPECT_TRUE(version_info_type.IsAllocated()); - PythonObject major_version_field = version_info_type.ResolveName("major"); - EXPECT_TRUE(major_version_field.IsAllocated()); -} - -TEST_F(PythonDataObjectsTest, TestInstanceNameResolutionNoDot) { - PythonObject sys_version_info = m_sys_module.ResolveName("version_info"); - PythonObject major_version_field = sys_version_info.ResolveName("major"); - PythonObject minor_version_field = sys_version_info.ResolveName("minor"); - - EXPECT_TRUE(major_version_field.IsAllocated()); - EXPECT_TRUE(minor_version_field.IsAllocated()); - - auto major_version_value = As(major_version_field); - auto minor_version_value = As(minor_version_field); - - EXPECT_THAT_EXPECTED(major_version_value, llvm::HasValue(PY_MAJOR_VERSION)); - EXPECT_THAT_EXPECTED(minor_version_value, llvm::HasValue(PY_MINOR_VERSION)); -} - -TEST_F(PythonDataObjectsTest, TestGlobalNameResolutionWithDot) { - PythonObject sys_path = m_main_module.ResolveName("sys.path"); - EXPECT_TRUE(sys_path.IsAllocated()); - EXPECT_TRUE(PythonList::Check(sys_path.get())); - - auto version_major = - As(m_main_module.ResolveName("sys.version_info.major")); - - auto version_minor = - As(m_main_module.ResolveName("sys.version_info.minor")); - - EXPECT_THAT_EXPECTED(version_major, llvm::HasValue(PY_MAJOR_VERSION)); - EXPECT_THAT_EXPECTED(version_minor, llvm::HasValue(PY_MINOR_VERSION)); -} - -TEST_F(PythonDataObjectsTest, TestDictionaryResolutionWithDot) { - // Make up a custom dictionary with "sys" pointing to the `sys` module. - PythonDictionary dict(PyInitialValue::Empty); - dict.SetItemForKey(PythonString("sys"), m_sys_module); - - // Now use that dictionary to resolve `sys.version_info.major` - auto version_major = As( - PythonObject::ResolveNameWithDictionary("sys.version_info.major", dict)); - - auto version_minor = As( - PythonObject::ResolveNameWithDictionary("sys.version_info.minor", dict)); - - EXPECT_THAT_EXPECTED(version_major, llvm::HasValue(PY_MAJOR_VERSION)); - EXPECT_THAT_EXPECTED(version_minor, llvm::HasValue(PY_MINOR_VERSION)); -} - -TEST_F(PythonDataObjectsTest, TestPythonInteger) { - // Test that integers behave correctly when wrapped by a PythonInteger. - -#if PY_MAJOR_VERSION < 3 - // Verify that `PythonInt` works correctly when given a PyInt object. - // Note that PyInt doesn't exist in Python 3.x, so this is only for 2.x - PyObject *py_int = PyInt_FromLong(12); - EXPECT_TRUE(PythonInteger::Check(py_int)); - PythonInteger python_int(PyRefType::Owned, py_int); - - EXPECT_EQ(PyObjectType::Integer, python_int.GetObjectType()); - auto python_int_value = As(python_int); - EXPECT_THAT_EXPECTED(python_int_value, llvm::HasValue(12)); -#endif - - // Verify that `PythonInteger` works correctly when given a PyLong object. - PyObject *py_long = PyLong_FromLong(12); - EXPECT_TRUE(PythonInteger::Check(py_long)); - PythonInteger python_long(PyRefType::Owned, py_long); - EXPECT_EQ(PyObjectType::Integer, python_long.GetObjectType()); - - // Verify that you can reset the value and that it is reflected properly. - python_long.SetInteger(40); - auto e = As(python_long); - EXPECT_THAT_EXPECTED(e, llvm::HasValue(40)); - - // Test that creating a `PythonInteger` object works correctly with the - // int constructor. - PythonInteger constructed_int(7); - auto value = As(constructed_int); - EXPECT_THAT_EXPECTED(value, llvm::HasValue(7)); -} - -TEST_F(PythonDataObjectsTest, TestPythonBoolean) { - // Test PythonBoolean constructed from Py_True - EXPECT_TRUE(PythonBoolean::Check(Py_True)); - PythonBoolean python_true(PyRefType::Owned, Py_True); - EXPECT_EQ(PyObjectType::Boolean, python_true.GetObjectType()); - - // Test PythonBoolean constructed from Py_False - EXPECT_TRUE(PythonBoolean::Check(Py_False)); - PythonBoolean python_false(PyRefType::Owned, Py_False); - EXPECT_EQ(PyObjectType::Boolean, python_false.GetObjectType()); - - auto test_from_long = [](long value) { - PyObject *py_bool = PyBool_FromLong(value); - EXPECT_TRUE(PythonBoolean::Check(py_bool)); - PythonBoolean python_boolean(PyRefType::Owned, py_bool); - EXPECT_EQ(PyObjectType::Boolean, python_boolean.GetObjectType()); - EXPECT_EQ(bool(value), python_boolean.GetValue()); - }; - - // Test PythonBoolean constructed from long integer values. - test_from_long(0); // Test 'false' value. - test_from_long(1); // Test 'true' value. - test_from_long(~0); // Any value != 0 is 'true'. -} - -TEST_F(PythonDataObjectsTest, TestPythonBytes) { - static const char *test_bytes = "PythonDataObjectsTest::TestPythonBytes"; - PyObject *py_bytes = PyBytes_FromString(test_bytes); - EXPECT_TRUE(PythonBytes::Check(py_bytes)); - PythonBytes python_bytes(PyRefType::Owned, py_bytes); - -#if PY_MAJOR_VERSION < 3 - EXPECT_TRUE(PythonString::Check(py_bytes)); - EXPECT_EQ(PyObjectType::String, python_bytes.GetObjectType()); -#else - EXPECT_FALSE(PythonString::Check(py_bytes)); - EXPECT_EQ(PyObjectType::Bytes, python_bytes.GetObjectType()); -#endif - - llvm::ArrayRef bytes = python_bytes.GetBytes(); - EXPECT_EQ(bytes.size(), strlen(test_bytes)); - EXPECT_EQ(0, ::memcmp(bytes.data(), test_bytes, bytes.size())); -} - -TEST_F(PythonDataObjectsTest, TestPythonByteArray) { - static const char *test_bytes = "PythonDataObjectsTest::TestPythonByteArray"; - llvm::StringRef orig_bytes(test_bytes); - PyObject *py_bytes = - PyByteArray_FromStringAndSize(test_bytes, orig_bytes.size()); - EXPECT_TRUE(PythonByteArray::Check(py_bytes)); - PythonByteArray python_bytes(PyRefType::Owned, py_bytes); - EXPECT_EQ(PyObjectType::ByteArray, python_bytes.GetObjectType()); - - llvm::ArrayRef after_bytes = python_bytes.GetBytes(); - EXPECT_EQ(after_bytes.size(), orig_bytes.size()); - EXPECT_EQ(0, ::memcmp(orig_bytes.data(), test_bytes, orig_bytes.size())); -} - -TEST_F(PythonDataObjectsTest, TestPythonString) { - // Test that strings behave correctly when wrapped by a PythonString. - - static const char *test_string = "PythonDataObjectsTest::TestPythonString1"; - static const char *test_string2 = "PythonDataObjectsTest::TestPythonString2"; - -#if PY_MAJOR_VERSION < 3 - // Verify that `PythonString` works correctly when given a PyString object. - // Note that PyString doesn't exist in Python 3.x, so this is only for 2.x - PyObject *py_string = PyString_FromString(test_string); - EXPECT_TRUE(PythonString::Check(py_string)); - PythonString python_string(PyRefType::Owned, py_string); - - EXPECT_EQ(PyObjectType::String, python_string.GetObjectType()); - EXPECT_STREQ(test_string, python_string.GetString().data()); -#else - // Verify that `PythonString` works correctly when given a PyUnicode object. - PyObject *py_unicode = PyUnicode_FromString(test_string); - EXPECT_TRUE(PythonString::Check(py_unicode)); - PythonString python_unicode(PyRefType::Owned, py_unicode); - EXPECT_EQ(PyObjectType::String, python_unicode.GetObjectType()); - EXPECT_STREQ(test_string, python_unicode.GetString().data()); -#endif - - // Test that creating a `PythonString` object works correctly with the - // string constructor - PythonString constructed_string(test_string2); - EXPECT_EQ(test_string2, constructed_string.GetString()); -} - -TEST_F(PythonDataObjectsTest, TestPythonStringToStr) { - const char *GetString = "PythonDataObjectsTest::TestPythonStringToStr"; - - PythonString str(GetString); - EXPECT_EQ(GetString, str.GetString()); - - PythonString str_str = str.Str(); - EXPECT_EQ(GetString, str_str.GetString()); -} - -TEST_F(PythonDataObjectsTest, TestPythonIntegerToStr) {} - -TEST_F(PythonDataObjectsTest, TestPythonIntegerToStructuredInteger) { - PythonInteger integer(7); - auto int_sp = integer.CreateStructuredInteger(); - EXPECT_EQ(7U, int_sp->GetValue()); -} - -TEST_F(PythonDataObjectsTest, TestPythonStringToStructuredString) { - static const char *test_string = - "PythonDataObjectsTest::TestPythonStringToStructuredString"; - PythonString constructed_string(test_string); - auto string_sp = constructed_string.CreateStructuredString(); - EXPECT_EQ(test_string, string_sp->GetStringValue()); -} - -TEST_F(PythonDataObjectsTest, TestPythonListValueEquality) { - // Test that a list which is built through the native - // Python API behaves correctly when wrapped by a PythonList. - static const unsigned list_size = 2; - static const long long_value0 = 5; - static const char *const string_value1 = "String Index 1"; - - PyObject *py_list = PyList_New(2); - EXPECT_TRUE(PythonList::Check(py_list)); - PythonList list(PyRefType::Owned, py_list); - - PythonObject list_items[list_size]; - list_items[0] = PythonInteger(long_value0); - list_items[1] = PythonString(string_value1); - - for (unsigned i = 0; i < list_size; ++i) - list.SetItemAtIndex(i, list_items[i]); - - EXPECT_EQ(list_size, list.GetSize()); - EXPECT_EQ(PyObjectType::List, list.GetObjectType()); - - // Verify that the values match - PythonObject chk_value1 = list.GetItemAtIndex(0); - PythonObject chk_value2 = list.GetItemAtIndex(1); - EXPECT_TRUE(PythonInteger::Check(chk_value1.get())); - EXPECT_TRUE(PythonString::Check(chk_value2.get())); - - PythonInteger chk_int(PyRefType::Borrowed, chk_value1.get()); - PythonString chk_str(PyRefType::Borrowed, chk_value2.get()); - - auto chkint = As(chk_value1); - ASSERT_THAT_EXPECTED(chkint, llvm::HasValue(long_value0)); - EXPECT_EQ(string_value1, chk_str.GetString()); -} - -TEST_F(PythonDataObjectsTest, TestPythonListManipulation) { - // Test that manipulation of a PythonList behaves correctly when - // wrapped by a PythonDictionary. - - static const long long_value0 = 5; - static const char *const string_value1 = "String Index 1"; - - PythonList list(PyInitialValue::Empty); - PythonInteger integer(long_value0); - PythonString string(string_value1); - - list.AppendItem(integer); - list.AppendItem(string); - EXPECT_EQ(2U, list.GetSize()); - - // Verify that the values match - PythonObject chk_value1 = list.GetItemAtIndex(0); - PythonObject chk_value2 = list.GetItemAtIndex(1); - EXPECT_TRUE(PythonInteger::Check(chk_value1.get())); - EXPECT_TRUE(PythonString::Check(chk_value2.get())); - - PythonInteger chk_int(PyRefType::Borrowed, chk_value1.get()); - PythonString chk_str(PyRefType::Borrowed, chk_value2.get()); - - auto e = As(chk_int); - EXPECT_THAT_EXPECTED(e, llvm::HasValue(long_value0)); - EXPECT_EQ(string_value1, chk_str.GetString()); -} - -TEST_F(PythonDataObjectsTest, TestPythonListToStructuredList) { - static const long long_value0 = 5; - static const char *const string_value1 = "String Index 1"; - - PythonList list(PyInitialValue::Empty); - list.AppendItem(PythonInteger(long_value0)); - list.AppendItem(PythonString(string_value1)); - - auto array_sp = list.CreateStructuredArray(); - EXPECT_EQ(lldb::eStructuredDataTypeInteger, - array_sp->GetItemAtIndex(0)->GetType()); - EXPECT_EQ(lldb::eStructuredDataTypeString, - array_sp->GetItemAtIndex(1)->GetType()); - - auto int_sp = array_sp->GetItemAtIndex(0)->GetAsInteger(); - auto string_sp = array_sp->GetItemAtIndex(1)->GetAsString(); - - EXPECT_EQ(long_value0, long(int_sp->GetValue())); - EXPECT_EQ(string_value1, string_sp->GetValue()); -} - -TEST_F(PythonDataObjectsTest, TestPythonTupleSize) { - PythonTuple tuple(PyInitialValue::Empty); - EXPECT_EQ(0U, tuple.GetSize()); - - tuple = PythonTuple(3); - EXPECT_EQ(3U, tuple.GetSize()); -} - -TEST_F(PythonDataObjectsTest, TestPythonTupleValues) { - PythonTuple tuple(3); - - PythonInteger int_value(1); - PythonString string_value("Test"); - PythonObject none_value(PyRefType::Borrowed, Py_None); - - tuple.SetItemAtIndex(0, int_value); - tuple.SetItemAtIndex(1, string_value); - tuple.SetItemAtIndex(2, none_value); - - EXPECT_EQ(tuple.GetItemAtIndex(0).get(), int_value.get()); - EXPECT_EQ(tuple.GetItemAtIndex(1).get(), string_value.get()); - EXPECT_EQ(tuple.GetItemAtIndex(2).get(), none_value.get()); -} - -TEST_F(PythonDataObjectsTest, TestPythonTupleInitializerList) { - PythonInteger int_value(1); - PythonString string_value("Test"); - PythonObject none_value(PyRefType::Borrowed, Py_None); - PythonTuple tuple{int_value, string_value, none_value}; - EXPECT_EQ(3U, tuple.GetSize()); - - EXPECT_EQ(tuple.GetItemAtIndex(0).get(), int_value.get()); - EXPECT_EQ(tuple.GetItemAtIndex(1).get(), string_value.get()); - EXPECT_EQ(tuple.GetItemAtIndex(2).get(), none_value.get()); -} - -TEST_F(PythonDataObjectsTest, TestPythonTupleInitializerList2) { - PythonInteger int_value(1); - PythonString string_value("Test"); - PythonObject none_value(PyRefType::Borrowed, Py_None); - - PythonTuple tuple{int_value.get(), string_value.get(), none_value.get()}; - EXPECT_EQ(3U, tuple.GetSize()); - - EXPECT_EQ(tuple.GetItemAtIndex(0).get(), int_value.get()); - EXPECT_EQ(tuple.GetItemAtIndex(1).get(), string_value.get()); - EXPECT_EQ(tuple.GetItemAtIndex(2).get(), none_value.get()); -} - -TEST_F(PythonDataObjectsTest, TestPythonTupleToStructuredList) { - PythonInteger int_value(1); - PythonString string_value("Test"); - - PythonTuple tuple{int_value.get(), string_value.get()}; - - auto array_sp = tuple.CreateStructuredArray(); - EXPECT_EQ(tuple.GetSize(), array_sp->GetSize()); - EXPECT_EQ(lldb::eStructuredDataTypeInteger, - array_sp->GetItemAtIndex(0)->GetType()); - EXPECT_EQ(lldb::eStructuredDataTypeString, - array_sp->GetItemAtIndex(1)->GetType()); -} - -TEST_F(PythonDataObjectsTest, TestPythonDictionaryValueEquality) { - // Test that a dictionary which is built through the native - // Python API behaves correctly when wrapped by a PythonDictionary. - static const unsigned dict_entries = 2; - const char *key_0 = "Key 0"; - int key_1 = 1; - const int value_0 = 0; - const char *value_1 = "Value 1"; - - PythonObject py_keys[dict_entries]; - PythonObject py_values[dict_entries]; - - py_keys[0] = PythonString(key_0); - py_keys[1] = PythonInteger(key_1); - py_values[0] = PythonInteger(value_0); - py_values[1] = PythonString(value_1); - - PyObject *py_dict = PyDict_New(); - EXPECT_TRUE(PythonDictionary::Check(py_dict)); - PythonDictionary dict(PyRefType::Owned, py_dict); - - for (unsigned i = 0; i < dict_entries; ++i) - PyDict_SetItem(py_dict, py_keys[i].get(), py_values[i].get()); - EXPECT_EQ(dict.GetSize(), dict_entries); - EXPECT_EQ(PyObjectType::Dictionary, dict.GetObjectType()); - - // Verify that the values match - PythonObject chk_value1 = dict.GetItemForKey(py_keys[0]); - PythonObject chk_value2 = dict.GetItemForKey(py_keys[1]); - EXPECT_TRUE(PythonInteger::Check(chk_value1.get())); - EXPECT_TRUE(PythonString::Check(chk_value2.get())); - - PythonString chk_str(PyRefType::Borrowed, chk_value2.get()); - auto chkint = As(chk_value1); - - EXPECT_THAT_EXPECTED(chkint, llvm::HasValue(value_0)); - EXPECT_EQ(value_1, chk_str.GetString()); -} - -TEST_F(PythonDataObjectsTest, TestPythonDictionaryManipulation) { - // Test that manipulation of a dictionary behaves correctly when wrapped - // by a PythonDictionary. - static const unsigned dict_entries = 2; - - const char *const key_0 = "Key 0"; - const char *const key_1 = "Key 1"; - const long value_0 = 1; - const char *const value_1 = "Value 1"; - - PythonString keys[dict_entries]; - PythonObject values[dict_entries]; - - keys[0] = PythonString(key_0); - keys[1] = PythonString(key_1); - values[0] = PythonInteger(value_0); - values[1] = PythonString(value_1); - - PythonDictionary dict(PyInitialValue::Empty); - for (int i = 0; i < 2; ++i) - dict.SetItemForKey(keys[i], values[i]); - - EXPECT_EQ(dict_entries, dict.GetSize()); - - // Verify that the keys and values match - PythonObject chk_value1 = dict.GetItemForKey(keys[0]); - PythonObject chk_value2 = dict.GetItemForKey(keys[1]); - EXPECT_TRUE(PythonInteger::Check(chk_value1.get())); - EXPECT_TRUE(PythonString::Check(chk_value2.get())); - - auto chkint = As(chk_value1); - PythonString chk_str(PyRefType::Borrowed, chk_value2.get()); - - EXPECT_THAT_EXPECTED(chkint, llvm::HasValue(value_0)); - EXPECT_EQ(value_1, chk_str.GetString()); -} - -TEST_F(PythonDataObjectsTest, TestPythonDictionaryToStructuredDictionary) { - static const char *const string_key0 = "String Key 0"; - static const char *const string_key1 = "String Key 1"; - - static const char *const string_value0 = "String Value 0"; - static const long int_value1 = 7; - - PythonDictionary dict(PyInitialValue::Empty); - dict.SetItemForKey(PythonString(string_key0), PythonString(string_value0)); - dict.SetItemForKey(PythonString(string_key1), PythonInteger(int_value1)); - - auto dict_sp = dict.CreateStructuredDictionary(); - EXPECT_EQ(2U, dict_sp->GetSize()); - - EXPECT_TRUE(dict_sp->HasKey(string_key0)); - EXPECT_TRUE(dict_sp->HasKey(string_key1)); - - auto string_sp = dict_sp->GetValueForKey(string_key0)->GetAsString(); - auto int_sp = dict_sp->GetValueForKey(string_key1)->GetAsInteger(); - - EXPECT_EQ(string_value0, string_sp->GetValue()); - EXPECT_EQ(int_value1, long(int_sp->GetValue())); -} - -TEST_F(PythonDataObjectsTest, TestPythonCallableCheck) { - PythonObject sys_exc_info = m_sys_module.ResolveName("exc_info"); - PythonObject none(PyRefType::Borrowed, Py_None); - - EXPECT_TRUE(PythonCallable::Check(sys_exc_info.get())); - EXPECT_FALSE(PythonCallable::Check(none.get())); -} - -TEST_F(PythonDataObjectsTest, TestPythonCallableInvoke) { - auto list = m_builtins_module.ResolveName("list").AsType(); - PythonInteger one(1); - PythonString two("two"); - PythonTuple three = {one, two}; - - PythonTuple tuple_to_convert = {one, two, three}; - PythonObject result = list({tuple_to_convert}); - - EXPECT_TRUE(PythonList::Check(result.get())); - auto list_result = result.AsType(); - EXPECT_EQ(3U, list_result.GetSize()); - EXPECT_EQ(one.get(), list_result.GetItemAtIndex(0).get()); - EXPECT_EQ(two.get(), list_result.GetItemAtIndex(1).get()); - EXPECT_EQ(three.get(), list_result.GetItemAtIndex(2).get()); -} - -TEST_F(PythonDataObjectsTest, TestPythonFile) { - auto file = FileSystem::Instance().Open(FileSpec(FileSystem::DEV_NULL), - File::eOpenOptionRead); - ASSERT_THAT_EXPECTED(file, llvm::Succeeded()); - auto py_file = PythonFile::FromFile(*file.get(), "r"); - ASSERT_THAT_EXPECTED(py_file, llvm::Succeeded()); - EXPECT_TRUE(PythonFile::Check(py_file.get().get())); -} - -TEST_F(PythonDataObjectsTest, TestObjectAttributes) { - PythonInteger py_int(42); - EXPECT_TRUE(py_int.HasAttribute("numerator")); - EXPECT_FALSE(py_int.HasAttribute("this_should_not_exist")); - - auto numerator_attr = As(py_int.GetAttributeValue("numerator")); - - EXPECT_THAT_EXPECTED(numerator_attr, llvm::HasValue(42)); -} - -TEST_F(PythonDataObjectsTest, TestExtractingUInt64ThroughStructuredData) { - // Make up a custom dictionary with "sys" pointing to the `sys` module. - const char *key_name = "addr"; - const uint64_t value = 0xf000000000000000ull; - PythonDictionary python_dict(PyInitialValue::Empty); - PythonInteger python_ull_value(PyRefType::Owned, - PyLong_FromUnsignedLongLong(value)); - python_dict.SetItemForKey(PythonString(key_name), python_ull_value); - StructuredData::ObjectSP structured_data_sp = - python_dict.CreateStructuredObject(); - EXPECT_TRUE((bool)structured_data_sp); - if (structured_data_sp) { - StructuredData::Dictionary *structured_dict_ptr = - structured_data_sp->GetAsDictionary(); - EXPECT_TRUE(structured_dict_ptr != nullptr); - if (structured_dict_ptr) { - StructuredData::ObjectSP structured_addr_value_sp = - structured_dict_ptr->GetValueForKey(key_name); - EXPECT_TRUE((bool)structured_addr_value_sp); - const uint64_t extracted_value = - structured_addr_value_sp->GetIntegerValue(123); - EXPECT_TRUE(extracted_value == value); - } - } -} - -TEST_F(PythonDataObjectsTest, TestCallable) { - - PythonDictionary globals(PyInitialValue::Empty); - auto builtins = PythonModule::BuiltinsModule(); - llvm::Error error = globals.SetItem("__builtins__", builtins); - ASSERT_FALSE(error); - - { - PyObject *o = PyRun_String("lambda x : x", Py_eval_input, globals.get(), - globals.get()); - ASSERT_FALSE(o == NULL); - auto lambda = Take(o); - auto arginfo = lambda.GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 1u); - } - - { - PyObject *o = PyRun_String("lambda x,y=0: x", Py_eval_input, globals.get(), - globals.get()); - ASSERT_FALSE(o == NULL); - auto lambda = Take(o); - auto arginfo = lambda.GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 2u); - } - - { - PyObject *o = PyRun_String("lambda x,y=0, **kw: x", Py_eval_input, - globals.get(), globals.get()); - ASSERT_FALSE(o == NULL); - auto lambda = Take(o); - auto arginfo = lambda.GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 2u); - } - - { - PyObject *o = PyRun_String("lambda x,y,*a: x", Py_eval_input, globals.get(), - globals.get()); - ASSERT_FALSE(o == NULL); - auto lambda = Take(o); - auto arginfo = lambda.GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, - PythonCallable::ArgInfo::UNBOUNDED); - } - - { - PyObject *o = PyRun_String("lambda x,y,*a,**kw: x", Py_eval_input, - globals.get(), globals.get()); - ASSERT_FALSE(o == NULL); - auto lambda = Take(o); - auto arginfo = lambda.GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, - PythonCallable::ArgInfo::UNBOUNDED); - } - - { - const char *script = R"( -class Foo: - def bar(self, x): - return x - @classmethod - def classbar(cls, x): - return x - @staticmethod - def staticbar(x): - return x - def __call__(self, x): - return x -obj = Foo() -bar_bound = Foo().bar -bar_class = Foo().classbar -bar_static = Foo().staticbar -bar_unbound = Foo.bar - - -class OldStyle: - def __init__(self, one, two, three): - pass - -class NewStyle(object): - def __init__(self, one, two, three): - pass - -)"; - PyObject *o = - PyRun_String(script, Py_file_input, globals.get(), globals.get()); - ASSERT_FALSE(o == NULL); - Take(o); - - auto bar_bound = As(globals.GetItem("bar_bound")); - ASSERT_THAT_EXPECTED(bar_bound, llvm::Succeeded()); - auto arginfo = bar_bound.get().GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 1u); - - auto bar_unbound = As(globals.GetItem("bar_unbound")); - ASSERT_THAT_EXPECTED(bar_unbound, llvm::Succeeded()); - arginfo = bar_unbound.get().GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 2u); - - auto bar_class = As(globals.GetItem("bar_class")); - ASSERT_THAT_EXPECTED(bar_class, llvm::Succeeded()); - arginfo = bar_class.get().GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 1u); - - auto bar_static = As(globals.GetItem("bar_static")); - ASSERT_THAT_EXPECTED(bar_static, llvm::Succeeded()); - arginfo = bar_static.get().GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 1u); - - auto obj = As(globals.GetItem("obj")); - ASSERT_THAT_EXPECTED(obj, llvm::Succeeded()); - arginfo = obj.get().GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 1u); - - auto oldstyle = As(globals.GetItem("OldStyle")); - ASSERT_THAT_EXPECTED(oldstyle, llvm::Succeeded()); - arginfo = oldstyle.get().GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 3u); - - auto newstyle = As(globals.GetItem("NewStyle")); - ASSERT_THAT_EXPECTED(newstyle, llvm::Succeeded()); - arginfo = newstyle.get().GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 3u); - } - -#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 3 - - // the old implementation of GetArgInfo just doesn't work on builtins. - - { - auto builtins = PythonModule::BuiltinsModule(); - auto hex = As(builtins.GetAttribute("hex")); - ASSERT_THAT_EXPECTED(hex, llvm::Succeeded()); - auto arginfo = hex.get().GetArgInfo(); - ASSERT_THAT_EXPECTED(arginfo, llvm::Succeeded()); - EXPECT_EQ(arginfo.get().max_positional_args, 1u); - } - -#endif -} - -TEST_F(PythonDataObjectsTest, TestScript) { - - static const char script[] = R"( -def factorial(n): - if n > 1: - return n * factorial(n-1) - else: - return 1; -main = factorial -)"; - - PythonScript factorial(script); - - EXPECT_THAT_EXPECTED(As(factorial(5ll)), llvm::HasValue(120)); -} - -TEST_F(PythonDataObjectsTest, TestExceptions) { - - static const char script[] = R"( -def foo(): - return bar() -def bar(): - return baz() -def baz(): - return 1 / 0 -main = foo -)"; - - PythonScript foo(script); - - EXPECT_THAT_EXPECTED( - foo(), llvm::Failed(testing::Property( - &PythonException::ReadBacktrace, - testing::AllOf(testing::ContainsRegex("line 3, in foo"), - testing::ContainsRegex("line 5, in bar"), - testing::ContainsRegex("line 7, in baz"), - testing::ContainsRegex("ZeroDivisionError"))))); - - static const char script2[] = R"( -class MyError(Exception): - def __str__(self): - return self.my_message - -def main(): - raise MyError("lol") - -)"; - - PythonScript lol(script2); - - EXPECT_THAT_EXPECTED(lol(), - llvm::Failed(testing::Property( - &PythonException::ReadBacktrace, - testing::ContainsRegex("unprintable MyError")))); -} - -TEST_F(PythonDataObjectsTest, TestRun) { - - PythonDictionary globals(PyInitialValue::Empty); - - auto x = As(runStringOneLine("40 + 2", globals, globals)); - ASSERT_THAT_EXPECTED(x, llvm::Succeeded()); - EXPECT_EQ(x.get(), 42l); - - Expected r = runStringOneLine("n = 42", globals, globals); - ASSERT_THAT_EXPECTED(r, llvm::Succeeded()); - auto y = As(globals.GetItem("n")); - ASSERT_THAT_EXPECTED(y, llvm::Succeeded()); - EXPECT_EQ(y.get(), 42l); - - const char script[] = R"( -def foobar(): - return "foo" + "bar" + "baz" -g = foobar() -)"; - - r = runStringMultiLine(script, globals, globals); - ASSERT_THAT_EXPECTED(r, llvm::Succeeded()); - auto g = As(globals.GetItem("g")); - ASSERT_THAT_EXPECTED(g, llvm::HasValue("foobarbaz")); -} \ No newline at end of file diff --git a/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp b/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp deleted file mode 100644 index f93733b3a5b..00000000000 --- a/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp +++ /dev/null @@ -1,286 +0,0 @@ -//===-- PythonTestSuite.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "Plugins/ScriptInterpreter/Python/lldb-python.h" - -#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h" -#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPythonImpl.h" -#include "lldb/API/SBError.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" - -#include "PythonTestSuite.h" - -using namespace lldb_private; -class TestScriptInterpreterPython : public ScriptInterpreterPythonImpl { -public: - using ScriptInterpreterPythonImpl::Initialize; - using ScriptInterpreterPythonImpl::InitializePrivate; -}; - -void PythonTestSuite::SetUp() { - FileSystem::Initialize(); - HostInfoBase::Initialize(); - // ScriptInterpreterPython::Initialize() depends on HostInfo being - // initializedso it can compute the python directory etc. - TestScriptInterpreterPython::Initialize(); - TestScriptInterpreterPython::InitializePrivate(); - - // Although we don't care about concurrency for the purposes of running - // this test suite, Python requires the GIL to be locked even for - // deallocating memory, which can happen when you call Py_DECREF or - // Py_INCREF. So acquire the GIL for the entire duration of this - // test suite. - m_gil_state = PyGILState_Ensure(); -} - -void PythonTestSuite::TearDown() { - PyGILState_Release(m_gil_state); - - TestScriptInterpreterPython::Terminate(); - HostInfoBase::Terminate(); - FileSystem::Terminate(); -} - -// The following functions are the Pythonic implementations of the required -// callbacks. Because they're defined in libLLDB which we cannot link for the -// unit test, we have a 'default' implementation here. - -#if PY_MAJOR_VERSION >= 3 -extern "C" PyObject *PyInit__lldb(void) { return nullptr; } -#define LLDBSwigPyInit PyInit__lldb -#else -extern "C" void init_lldb(void) {} -#define LLDBSwigPyInit init_lldb -#endif - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wreturn-type-c-linkage" - -// Disable warning C4190: 'LLDBSwigPythonBreakpointCallbackFunction' has -// C-linkage specified, but returns UDT 'llvm::Expected' which is -// incompatible with C -#if _MSC_VER -#pragma warning (push) -#pragma warning (disable : 4190) -#endif - -extern "C" llvm::Expected LLDBSwigPythonBreakpointCallbackFunction( - const char *python_function_name, const char *session_dictionary_name, - const lldb::StackFrameSP &sb_frame, - const lldb::BreakpointLocationSP &sb_bp_loc, - StructuredDataImpl *args_impl) { - return false; -} - -#if _MSC_VER -#pragma warning (pop) -#endif - -#pragma clang diagnostic pop - -extern "C" bool LLDBSwigPythonWatchpointCallbackFunction( - const char *python_function_name, const char *session_dictionary_name, - const lldb::StackFrameSP &sb_frame, const lldb::WatchpointSP &sb_wp) { - return false; -} - -extern "C" bool LLDBSwigPythonCallTypeScript( - const char *python_function_name, void *session_dictionary, - const lldb::ValueObjectSP &valobj_sp, void **pyfunct_wrapper, - const lldb::TypeSummaryOptionsSP &options_sp, std::string &retval) { - return false; -} - -extern "C" void * -LLDBSwigPythonCreateSyntheticProvider(const char *python_class_name, - const char *session_dictionary_name, - const lldb::ValueObjectSP &valobj_sp) { - return nullptr; -} - -extern "C" void * -LLDBSwigPythonCreateCommandObject(const char *python_class_name, - const char *session_dictionary_name, - const lldb::DebuggerSP debugger_sp) { - return nullptr; -} - -extern "C" void *LLDBSwigPythonCreateScriptedThreadPlan( - const char *python_class_name, const char *session_dictionary_name, - StructuredDataImpl *args_data, - std::string &error_string, - const lldb::ThreadPlanSP &thread_plan_sp) { - return nullptr; -} - -extern "C" bool LLDBSWIGPythonCallThreadPlan(void *implementor, - const char *method_name, - Event *event_sp, bool &got_error) { - return false; -} - -extern "C" void *LLDBSwigPythonCreateScriptedBreakpointResolver( - const char *python_class_name, const char *session_dictionary_name, - lldb_private::StructuredDataImpl *args, lldb::BreakpointSP &bkpt_sp) { - return nullptr; -} - -extern "C" unsigned int -LLDBSwigPythonCallBreakpointResolver(void *implementor, const char *method_name, - lldb_private::SymbolContext *sym_ctx) { - return 0; -} - -extern "C" size_t LLDBSwigPython_CalculateNumChildren(void *implementor, - uint32_t max) { - return 0; -} - -extern "C" void *LLDBSwigPython_GetChildAtIndex(void *implementor, - uint32_t idx) { - return nullptr; -} - -extern "C" int LLDBSwigPython_GetIndexOfChildWithName(void *implementor, - const char *child_name) { - return 0; -} - -extern "C" void *LLDBSWIGPython_CastPyObjectToSBData(void *data) { - return nullptr; -} - -extern "C" void *LLDBSWIGPython_CastPyObjectToSBError(void *data) { - return nullptr; -} - -extern "C" void *LLDBSWIGPython_CastPyObjectToSBValue(void *data) { - return nullptr; -} - -extern lldb::ValueObjectSP -LLDBSWIGPython_GetValueObjectSPFromSBValue(void *data) { - return nullptr; -} - -extern "C" bool LLDBSwigPython_UpdateSynthProviderInstance(void *implementor) { - return false; -} - -extern "C" bool -LLDBSwigPython_MightHaveChildrenSynthProviderInstance(void *implementor) { - return false; -} - -extern "C" void * -LLDBSwigPython_GetValueSynthProviderInstance(void *implementor) { - return nullptr; -} - -extern "C" bool -LLDBSwigPythonCallCommand(const char *python_function_name, - const char *session_dictionary_name, - lldb::DebuggerSP &debugger, const char *args, - lldb_private::CommandReturnObject &cmd_retobj, - lldb::ExecutionContextRefSP exe_ctx_ref_sp) { - return false; -} - -extern "C" bool -LLDBSwigPythonCallCommandObject(void *implementor, lldb::DebuggerSP &debugger, - const char *args, - lldb_private::CommandReturnObject &cmd_retobj, - lldb::ExecutionContextRefSP exe_ctx_ref_sp) { - return false; -} - -extern "C" bool -LLDBSwigPythonCallModuleInit(const char *python_module_name, - const char *session_dictionary_name, - lldb::DebuggerSP &debugger) { - return false; -} - -extern "C" void * -LLDBSWIGPythonCreateOSPlugin(const char *python_class_name, - const char *session_dictionary_name, - const lldb::ProcessSP &process_sp) { - return nullptr; -} - -extern "C" void *LLDBSwigPythonCreateScriptedProcess( - const char *python_class_name, const char *session_dictionary_name, - const lldb::TargetSP &target_sp, StructuredDataImpl *args_impl, - std::string &error_string) { - return nullptr; -} - -extern "C" void * -LLDBSWIGPython_CreateFrameRecognizer(const char *python_class_name, - const char *session_dictionary_name) { - return nullptr; -} - -extern "C" void * -LLDBSwigPython_GetRecognizedArguments(void *implementor, - const lldb::StackFrameSP &frame_sp) { - return nullptr; -} - -extern "C" bool LLDBSWIGPythonRunScriptKeywordProcess( - const char *python_function_name, const char *session_dictionary_name, - lldb::ProcessSP &process, std::string &output) { - return false; -} - -extern "C" bool LLDBSWIGPythonRunScriptKeywordThread( - const char *python_function_name, const char *session_dictionary_name, - lldb::ThreadSP &thread, std::string &output) { - return false; -} - -extern "C" bool LLDBSWIGPythonRunScriptKeywordTarget( - const char *python_function_name, const char *session_dictionary_name, - lldb::TargetSP &target, std::string &output) { - return false; -} - -extern "C" bool LLDBSWIGPythonRunScriptKeywordFrame( - const char *python_function_name, const char *session_dictionary_name, - lldb::StackFrameSP &frame, std::string &output) { - return false; -} - -extern "C" bool LLDBSWIGPythonRunScriptKeywordValue( - const char *python_function_name, const char *session_dictionary_name, - lldb::ValueObjectSP &value, std::string &output) { - return false; -} - -extern "C" void * -LLDBSWIGPython_GetDynamicSetting(void *module, const char *setting, - const lldb::TargetSP &target_sp) { - return nullptr; -} - -extern "C" void *LLDBSwigPythonCreateScriptedStopHook( - lldb::TargetSP target_sp, const char *python_class_name, - const char *session_dictionary_name, - lldb_private::StructuredDataImpl *args_impl, Status &error) { - return nullptr; -} - -extern "C" bool -LLDBSwigPythonStopHookCallHandleStop(void *implementor, - lldb::ExecutionContextRefSP exc_ctx_sp, - lldb::StreamSP stream) { - return false; -} diff --git a/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.h b/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.h deleted file mode 100644 index 07e3eba9e9d..00000000000 --- a/gnu/llvm/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.h +++ /dev/null @@ -1,21 +0,0 @@ -//===-- PythonTestSuite.cpp -------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -using namespace lldb_private; - -class PythonTestSuite : public testing::Test { -public: - void SetUp() override; - - void TearDown() override; - -private: - PyGILState_STATE m_gil_state; -}; diff --git a/gnu/llvm/lldb/unittests/Signals/CMakeLists.txt b/gnu/llvm/lldb/unittests/Signals/CMakeLists.txt deleted file mode 100644 index e3f2e884d93..00000000000 --- a/gnu/llvm/lldb/unittests/Signals/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -add_lldb_unittest(SignalsTests - UnixSignalsTest.cpp - - LINK_LIBS - lldbTarget - ) diff --git a/gnu/llvm/lldb/unittests/Signals/UnixSignalsTest.cpp b/gnu/llvm/lldb/unittests/Signals/UnixSignalsTest.cpp deleted file mode 100644 index 1a53f0a2495..00000000000 --- a/gnu/llvm/lldb/unittests/Signals/UnixSignalsTest.cpp +++ /dev/null @@ -1,139 +0,0 @@ -//===-- UnixSignalsTest.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -#include - -#include "gtest/gtest.h" - -#include "lldb/Target/UnixSignals.h" -#include "llvm/Support/FormatVariadic.h" - -using namespace lldb; -using namespace lldb_private; -using llvm::None; - -class TestSignals : public UnixSignals { -public: - TestSignals() { - m_signals.clear(); - AddSignal(2, "SIG2", false, true, true, "DESC2"); - AddSignal(4, "SIG4", true, false, true, "DESC4"); - AddSignal(8, "SIG8", true, true, true, "DESC8"); - AddSignal(16, "SIG16", true, false, false, "DESC16"); - } -}; - -void ExpectEqArrays(llvm::ArrayRef expected, - llvm::ArrayRef observed, const char *file, - int line) { - std::string location = llvm::formatv("{0}:{1}", file, line); - ASSERT_EQ(expected.size(), observed.size()) << location; - - for (size_t i = 0; i < observed.size(); ++i) { - ASSERT_EQ(expected[i], observed[i]) - << "array index: " << i << "location:" << location; - } -} - -#define EXPECT_EQ_ARRAYS(expected, observed) \ - ExpectEqArrays((expected), (observed), __FILE__, __LINE__); - -TEST(UnixSignalsTest, Iteration) { - TestSignals signals; - - EXPECT_EQ(4, signals.GetNumSignals()); - EXPECT_EQ(2, signals.GetFirstSignalNumber()); - EXPECT_EQ(4, signals.GetNextSignalNumber(2)); - EXPECT_EQ(8, signals.GetNextSignalNumber(4)); - EXPECT_EQ(16, signals.GetNextSignalNumber(8)); - EXPECT_EQ(LLDB_INVALID_SIGNAL_NUMBER, signals.GetNextSignalNumber(16)); -} - -TEST(UnixSignalsTest, GetInfo) { - TestSignals signals; - - bool should_suppress = false, should_stop = false, should_notify = false; - int32_t signo = 4; - std::string name = - signals.GetSignalInfo(signo, should_suppress, should_stop, should_notify); - EXPECT_EQ("SIG4", name); - EXPECT_EQ(true, should_suppress); - EXPECT_EQ(false, should_stop); - EXPECT_EQ(true, should_notify); - - EXPECT_EQ(true, signals.GetShouldSuppress(signo)); - EXPECT_EQ(false, signals.GetShouldStop(signo)); - EXPECT_EQ(true, signals.GetShouldNotify(signo)); - EXPECT_EQ(name, signals.GetSignalAsCString(signo)); -} - -TEST(UnixSignalsTest, VersionChange) { - TestSignals signals; - - int32_t signo = 8; - uint64_t ver = signals.GetVersion(); - EXPECT_GT(ver, 0ull); - EXPECT_EQ(true, signals.GetShouldSuppress(signo)); - EXPECT_EQ(true, signals.GetShouldStop(signo)); - EXPECT_EQ(true, signals.GetShouldNotify(signo)); - - EXPECT_EQ(signals.GetVersion(), ver); - - signals.SetShouldSuppress(signo, false); - EXPECT_LT(ver, signals.GetVersion()); - ver = signals.GetVersion(); - - signals.SetShouldStop(signo, true); - EXPECT_LT(ver, signals.GetVersion()); - ver = signals.GetVersion(); - - signals.SetShouldNotify(signo, false); - EXPECT_LT(ver, signals.GetVersion()); - ver = signals.GetVersion(); - - EXPECT_EQ(false, signals.GetShouldSuppress(signo)); - EXPECT_EQ(true, signals.GetShouldStop(signo)); - EXPECT_EQ(false, signals.GetShouldNotify(signo)); - - EXPECT_EQ(ver, signals.GetVersion()); -} - -TEST(UnixSignalsTest, GetFilteredSignals) { - TestSignals signals; - - auto all_signals = signals.GetFilteredSignals(None, None, None); - std::vector expected = {2, 4, 8, 16}; - EXPECT_EQ_ARRAYS(expected, all_signals); - - auto supressed = signals.GetFilteredSignals(true, None, None); - expected = {4, 8, 16}; - EXPECT_EQ_ARRAYS(expected, supressed); - - auto not_supressed = signals.GetFilteredSignals(false, None, None); - expected = {2}; - EXPECT_EQ_ARRAYS(expected, not_supressed); - - auto stopped = signals.GetFilteredSignals(None, true, None); - expected = {2, 8}; - EXPECT_EQ_ARRAYS(expected, stopped); - - auto not_stopped = signals.GetFilteredSignals(None, false, None); - expected = {4, 16}; - EXPECT_EQ_ARRAYS(expected, not_stopped); - - auto notified = signals.GetFilteredSignals(None, None, true); - expected = {2, 4, 8}; - EXPECT_EQ_ARRAYS(expected, notified); - - auto not_notified = signals.GetFilteredSignals(None, None, false); - expected = {16}; - EXPECT_EQ_ARRAYS(expected, not_notified); - - auto signal4 = signals.GetFilteredSignals(true, false, true); - expected = {4}; - EXPECT_EQ_ARRAYS(expected, signal4); -} diff --git a/gnu/llvm/lldb/unittests/Symbol/CMakeLists.txt b/gnu/llvm/lldb/unittests/Symbol/CMakeLists.txt deleted file mode 100644 index 748faf33b55..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -add_lldb_unittest(SymbolTests - LocateSymbolFileTest.cpp - PostfixExpressionTest.cpp - TestTypeSystem.cpp - TestTypeSystemClang.cpp - TestClangASTImporter.cpp - TestDWARFCallFrameInfo.cpp - TestType.cpp - TestLineEntry.cpp - - LINK_LIBS - lldbHost - lldbSymbol - lldbUtilityHelpers - lldbPluginObjectFileELF - lldbPluginObjectFileMachO - lldbPluginSymbolFileDWARF - lldbPluginSymbolFileSymtab - lldbPluginTypeSystemClang - LLVMTestingSupport - ) - -set(test_inputs - inlined-functions.yaml - ) -add_unittest_inputs(SymbolTests "${test_inputs}") diff --git a/gnu/llvm/lldb/unittests/Symbol/Inputs/inlined-functions.yaml b/gnu/llvm/lldb/unittests/Symbol/Inputs/inlined-functions.yaml deleted file mode 100644 index 8498cf7f6d3..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/Inputs/inlined-functions.yaml +++ /dev/null @@ -1,929 +0,0 @@ ---- !mach-o -FileHeader: - magic: 0xFEEDFACF - cputype: 0x01000007 - cpusubtype: 0x00000003 - filetype: 0x00000001 - ncmds: 4 - sizeofcmds: 1160 - flags: 0x00002000 - reserved: 0x00000000 -LoadCommands: - - cmd: LC_SEGMENT_64 - cmdsize: 1032 - segname: '' - vmaddr: 0 - vmsize: 2022 - fileoff: 1192 - filesize: 2022 - maxprot: 7 - initprot: 7 - nsects: 6 - flags: 0 - Sections: - - sectname: __text - segname: __TEXT - addr: 0x0000000000000000 - size: 224 - offset: 0x000004A8 - align: 4 - reloff: 0x00000C90 - nreloc: 1 - flags: 0x80000400 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_str - segname: __DWARF - addr: 0x00000000000000E0 - size: 223 - offset: 0x00000588 - align: 0 - reloff: 0x00000000 - nreloc: 0 - flags: 0x02000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_abbrev - segname: __DWARF - addr: 0x00000000000001BF - size: 190 - offset: 0x00000667 - align: 0 - reloff: 0x00000000 - nreloc: 0 - flags: 0x02000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_info - segname: __DWARF - addr: 0x000000000000027D - size: 583 - offset: 0x00000725 - align: 0 - reloff: 0x00000C98 - nreloc: 8 - flags: 0x02000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __compact_unwind - segname: __LD - addr: 0x0000000000000670 - size: 64 - offset: 0x00000B18 - align: 3 - reloff: 0x00000CD8 - nreloc: 2 - flags: 0x02000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_line - segname: __DWARF - addr: 0x0000000000000718 - size: 206 - offset: 0x00000BC0 - align: 0 - reloff: 0x00000CE8 - nreloc: 1 - flags: 0x02000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - cmd: LC_BUILD_VERSION - cmdsize: 24 - platform: 1 - minos: 658944 - sdk: 658944 - ntools: 0 - - cmd: LC_SYMTAB - cmdsize: 24 - symoff: 3312 - nsyms: 2 - stroff: 3344 - strsize: 20 - - cmd: LC_DYSYMTAB - cmdsize: 80 - ilocalsym: 0 - nlocalsym: 0 - iextdefsym: 0 - nextdefsym: 2 - iundefsym: 2 - nundefsym: 0 - tocoff: 0 - ntoc: 0 - modtaboff: 0 - nmodtab: 0 - extrefsymoff: 0 - nextrefsyms: 0 - indirectsymoff: 0 - nindirectsyms: 0 - extreloff: 0 - nextrel: 0 - locreloff: 0 - nlocrel: 0 -LinkEditData: - NameList: - - n_strx: 7 - n_type: 0x0F - n_sect: 1 - n_desc: 0 - n_value: 0 - - n_strx: 1 - n_type: 0x0F - n_sect: 1 - n_desc: 0 - n_value: 32 - StringTable: - - '' - - _main - - __Z4sum3iii - - '' -DWARF: - debug_str: - - 'Apple LLVM version 10.0.1 (clang-1001.0.46.3)' - - inlined-functions.cpp - - '/Users/aadsm/Projects/llvm-project/lldb/unittests/Symbol/Inputs' - - sum3 - - _Z4sum3iii - - _Z4sum2ii - - sum2 - - int - - a - - b - - result - - _Z4sum4iiii - - sum4 - - c - - d - - main - - argc - - argv - - char - - sum - debug_abbrev: - - Table: - - Code: 0x00000001 - Tag: DW_TAG_compile_unit - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_producer - Form: DW_FORM_strp - - Attribute: DW_AT_language - Form: DW_FORM_data2 - - Attribute: DW_AT_name - Form: DW_FORM_strp - - Attribute: DW_AT_stmt_list - Form: DW_FORM_sec_offset - - Attribute: DW_AT_comp_dir - Form: DW_FORM_strp - - Attribute: DW_AT_low_pc - Form: DW_FORM_addr - - Attribute: DW_AT_high_pc - Form: DW_FORM_data4 - - Code: 0x00000002 - Tag: DW_TAG_subprogram - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_low_pc - Form: DW_FORM_addr - - Attribute: DW_AT_high_pc - Form: DW_FORM_data4 - - Attribute: DW_AT_frame_base - Form: DW_FORM_exprloc - - Attribute: DW_AT_linkage_name - Form: DW_FORM_strp - - Attribute: DW_AT_name - Form: DW_FORM_strp - - Attribute: DW_AT_decl_file - Form: DW_FORM_data1 - - Attribute: DW_AT_decl_line - Form: DW_FORM_data1 - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - - Attribute: DW_AT_external - Form: DW_FORM_flag_present - - Code: 0x00000003 - Tag: DW_TAG_formal_parameter - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_location - Form: DW_FORM_exprloc - - Attribute: DW_AT_name - Form: DW_FORM_strp - - Attribute: DW_AT_decl_file - Form: DW_FORM_data1 - - Attribute: DW_AT_decl_line - Form: DW_FORM_data1 - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - - Code: 0x00000004 - Tag: DW_TAG_variable - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_location - Form: DW_FORM_exprloc - - Attribute: DW_AT_name - Form: DW_FORM_strp - - Attribute: DW_AT_decl_file - Form: DW_FORM_data1 - - Attribute: DW_AT_decl_line - Form: DW_FORM_data1 - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - - Code: 0x00000005 - Tag: DW_TAG_subprogram - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_linkage_name - Form: DW_FORM_strp - - Attribute: DW_AT_name - Form: DW_FORM_strp - - Attribute: DW_AT_decl_file - Form: DW_FORM_data1 - - Attribute: DW_AT_decl_line - Form: DW_FORM_data1 - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - - Attribute: DW_AT_external - Form: DW_FORM_flag_present - - Attribute: DW_AT_inline - Form: DW_FORM_data1 - - Code: 0x00000006 - Tag: DW_TAG_formal_parameter - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_name - Form: DW_FORM_strp - - Attribute: DW_AT_decl_file - Form: DW_FORM_data1 - - Attribute: DW_AT_decl_line - Form: DW_FORM_data1 - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - - Code: 0x00000007 - Tag: DW_TAG_variable - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_name - Form: DW_FORM_strp - - Attribute: DW_AT_decl_file - Form: DW_FORM_data1 - - Attribute: DW_AT_decl_line - Form: DW_FORM_data1 - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - - Code: 0x00000008 - Tag: DW_TAG_base_type - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_name - Form: DW_FORM_strp - - Attribute: DW_AT_encoding - Form: DW_FORM_data1 - - Attribute: DW_AT_byte_size - Form: DW_FORM_data1 - - Code: 0x00000009 - Tag: DW_TAG_subprogram - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_low_pc - Form: DW_FORM_addr - - Attribute: DW_AT_high_pc - Form: DW_FORM_data4 - - Attribute: DW_AT_frame_base - Form: DW_FORM_exprloc - - Attribute: DW_AT_name - Form: DW_FORM_strp - - Attribute: DW_AT_decl_file - Form: DW_FORM_data1 - - Attribute: DW_AT_decl_line - Form: DW_FORM_data1 - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - - Attribute: DW_AT_external - Form: DW_FORM_flag_present - - Code: 0x0000000A - Tag: DW_TAG_inlined_subroutine - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_abstract_origin - Form: DW_FORM_ref4 - - Attribute: DW_AT_low_pc - Form: DW_FORM_addr - - Attribute: DW_AT_high_pc - Form: DW_FORM_data4 - - Attribute: DW_AT_call_file - Form: DW_FORM_data1 - - Attribute: DW_AT_call_line - Form: DW_FORM_data1 - - Code: 0x0000000B - Tag: DW_TAG_formal_parameter - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_location - Form: DW_FORM_exprloc - - Attribute: DW_AT_abstract_origin - Form: DW_FORM_ref4 - - Code: 0x0000000C - Tag: DW_TAG_variable - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_location - Form: DW_FORM_exprloc - - Attribute: DW_AT_abstract_origin - Form: DW_FORM_ref4 - - Code: 0x0000000D - Tag: DW_TAG_pointer_type - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_type - Form: DW_FORM_ref4 - debug_info: - - Version: 4 - AddrSize: 8 - Entries: - - AbbrCode: 0x00000001 - Values: - - Value: 0x0000000000000000 - - Value: 0x0000000000000004 - - Value: 0x000000000000002E - - Value: 0x0000000000000000 - - Value: 0x0000000000000044 - - Value: 0x0000000000000000 - - Value: 0x00000000000000E0 - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000000 - - Value: 0x000000000000001E - - Value: 0x0000000000000001 - BlockData: - - 0x56 - - Value: 0x0000000000000089 - - Value: 0x0000000000000084 - - Value: 0x0000000000000001 - - Value: 0x0000000000000006 - - Value: 0x00000000000000B2 - - Value: 0x0000000000000001 - - AbbrCode: 0x00000003 - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x7C - - Value: 0x00000000000000A7 - - Value: 0x0000000000000001 - - Value: 0x0000000000000006 - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000003 - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x78 - - Value: 0x00000000000000A9 - - Value: 0x0000000000000001 - - Value: 0x0000000000000006 - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000003 - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x74 - - Value: 0x00000000000000C3 - - Value: 0x0000000000000001 - - Value: 0x0000000000000006 - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000004 - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x70 - - Value: 0x00000000000000AB - - Value: 0x0000000000000001 - - Value: 0x0000000000000007 - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000000 - - AbbrCode: 0x00000005 - Values: - - Value: 0x0000000000000094 - - Value: 0x000000000000009E - - Value: 0x0000000000000001 - - Value: 0x0000000000000001 - - Value: 0x00000000000000B2 - - Value: 0x0000000000000001 - - Value: 0x0000000000000001 - - AbbrCode: 0x00000006 - Values: - - Value: 0x00000000000000A7 - - Value: 0x0000000000000001 - - Value: 0x0000000000000001 - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000006 - Values: - - Value: 0x00000000000000A9 - - Value: 0x0000000000000001 - - Value: 0x0000000000000001 - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000007 - Values: - - Value: 0x00000000000000AB - - Value: 0x0000000000000001 - - Value: 0x0000000000000002 - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000000 - - AbbrCode: 0x00000008 - Values: - - Value: 0x00000000000000A3 - - Value: 0x0000000000000005 - - Value: 0x0000000000000004 - - AbbrCode: 0x00000005 - Values: - - Value: 0x00000000000000B2 - - Value: 0x00000000000000BE - - Value: 0x0000000000000001 - - Value: 0x000000000000000B - - Value: 0x00000000000000B2 - - Value: 0x0000000000000001 - - Value: 0x0000000000000001 - - AbbrCode: 0x00000006 - Values: - - Value: 0x00000000000000A7 - - Value: 0x0000000000000001 - - Value: 0x000000000000000B - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000006 - Values: - - Value: 0x00000000000000A9 - - Value: 0x0000000000000001 - - Value: 0x000000000000000B - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000006 - Values: - - Value: 0x00000000000000C3 - - Value: 0x0000000000000001 - - Value: 0x000000000000000B - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000006 - Values: - - Value: 0x00000000000000C5 - - Value: 0x0000000000000001 - - Value: 0x000000000000000B - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000007 - Values: - - Value: 0x00000000000000AB - - Value: 0x0000000000000001 - - Value: 0x000000000000000C - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000000 - - AbbrCode: 0x00000009 - Values: - - Value: 0x0000000000000020 - - Value: 0x00000000000000C0 - - Value: 0x0000000000000001 - BlockData: - - 0x56 - - Value: 0x00000000000000C7 - - Value: 0x0000000000000001 - - Value: 0x0000000000000011 - - Value: 0x00000000000000B2 - - Value: 0x0000000000000001 - - AbbrCode: 0x00000003 - Values: - - Value: 0x0000000000000003 - BlockData: - - 0x91 - - 0xB4 - - 0x7F - - Value: 0x00000000000000CC - - Value: 0x0000000000000001 - - Value: 0x0000000000000011 - - Value: 0x00000000000000B2 - - AbbrCode: 0x00000003 - Values: - - Value: 0x0000000000000003 - BlockData: - - 0x91 - - 0xA8 - - 0x7F - - Value: 0x00000000000000D1 - - Value: 0x0000000000000001 - - Value: 0x0000000000000011 - - Value: 0x0000000000000235 - - AbbrCode: 0x00000004 - Values: - - Value: 0x0000000000000003 - BlockData: - - 0x91 - - 0xA4 - - 0x7F - - Value: 0x00000000000000DB - - Value: 0x0000000000000001 - - Value: 0x0000000000000013 - - Value: 0x00000000000000B2 - - AbbrCode: 0x0000000A - Values: - - Value: 0x0000000000000080 - - Value: 0x000000000000005A - - Value: 0x0000000000000025 - - Value: 0x0000000000000001 - - Value: 0x0000000000000012 - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x44 - - Value: 0x0000000000000090 - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x40 - - Value: 0x000000000000009B - - AbbrCode: 0x0000000C - Values: - - Value: 0x0000000000000003 - BlockData: - - 0x91 - - 0xBC - - 0x7F - - Value: 0x00000000000000A6 - - AbbrCode: 0x00000000 - - AbbrCode: 0x0000000A - Values: - - Value: 0x00000000000000B9 - - Value: 0x000000000000007F - - Value: 0x000000000000003C - - Value: 0x0000000000000001 - - Value: 0x0000000000000013 - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x64 - - Value: 0x00000000000000C9 - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x60 - - Value: 0x00000000000000D4 - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x5C - - Value: 0x00000000000000DF - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x58 - - Value: 0x00000000000000EA - - AbbrCode: 0x0000000C - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x54 - - Value: 0x00000000000000F5 - - AbbrCode: 0x0000000A - Values: - - Value: 0x0000000000000080 - - Value: 0x000000000000008B - - Value: 0x000000000000000C - - Value: 0x0000000000000001 - - Value: 0x000000000000000C - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x70 - - Value: 0x0000000000000090 - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x6C - - Value: 0x000000000000009B - - AbbrCode: 0x0000000C - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x68 - - Value: 0x00000000000000A6 - - AbbrCode: 0x00000000 - - AbbrCode: 0x0000000A - Values: - - Value: 0x0000000000000080 - - Value: 0x00000000000000A3 - - Value: 0x0000000000000009 - - Value: 0x0000000000000001 - - Value: 0x000000000000000C - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x7C - - Value: 0x0000000000000090 - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x78 - - Value: 0x000000000000009B - - AbbrCode: 0x0000000C - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x74 - - Value: 0x00000000000000A6 - - AbbrCode: 0x00000000 - - AbbrCode: 0x00000000 - - AbbrCode: 0x0000000A - Values: - - Value: 0x0000000000000080 - - Value: 0x00000000000000CC - - Value: 0x0000000000000009 - - Value: 0x0000000000000001 - - Value: 0x0000000000000014 - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x50 - - Value: 0x0000000000000090 - - AbbrCode: 0x0000000B - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x4C - - Value: 0x000000000000009B - - AbbrCode: 0x0000000C - Values: - - Value: 0x0000000000000002 - BlockData: - - 0x91 - - 0x48 - - Value: 0x00000000000000A6 - - AbbrCode: 0x00000000 - - AbbrCode: 0x00000000 - - AbbrCode: 0x0000000D - Values: - - Value: 0x000000000000023A - - AbbrCode: 0x0000000D - Values: - - Value: 0x000000000000023F - - AbbrCode: 0x00000008 - Values: - - Value: 0x00000000000000D6 - - Value: 0x0000000000000006 - - Value: 0x0000000000000001 - - AbbrCode: 0x00000000 - debug_line: - - Length: 202 - Version: 4 - PrologueLength: 45 - MinInstLength: 1 - MaxOpsPerInst: 1 - DefaultIsStmt: 1 - LineBase: 251 - LineRange: 14 - OpcodeBase: 13 - StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ] - Files: - - Name: inlined-functions.cpp - DirIdx: 0 - ModTime: 0 - Length: 0 - Opcodes: - - Opcode: DW_LNS_extended_op - ExtLen: 9 - SubOpcode: DW_LNE_set_address - Data: 0 - - Opcode: 0x17 - Data: 0 - - Opcode: DW_LNS_set_column - Data: 18 - - Opcode: DW_LNS_set_prologue_end - Data: 18 - - Opcode: 0xC9 - Data: 18 - - Opcode: DW_LNS_set_column - Data: 20 - - Opcode: DW_LNS_negate_stmt - Data: 20 - - Opcode: 0x3C - Data: 20 - - Opcode: DW_LNS_set_column - Data: 24 - - Opcode: 0x3C - Data: 24 - - Opcode: DW_LNS_set_column - Data: 9 - - Opcode: 0x3C - Data: 9 - - Opcode: DW_LNS_set_column - Data: 12 - - Opcode: DW_LNS_negate_stmt - Data: 12 - - Opcode: 0x3D - Data: 12 - - Opcode: DW_LNS_set_column - Data: 5 - - Opcode: DW_LNS_negate_stmt - Data: 5 - - Opcode: 0x3C - Data: 5 - - Opcode: DW_LNS_set_column - Data: 0 - - Opcode: DW_LNS_negate_stmt - Data: 0 - - Opcode: DW_LNS_advance_line - SData: 9 - Data: 0 - - Opcode: 0x4A - Data: 0 - - Opcode: DW_LNS_set_column - Data: 5 - - Opcode: DW_LNS_set_prologue_end - Data: 5 - - Opcode: DW_LNS_const_add_pc - Data: 5 - - Opcode: 0x59 - Data: 5 - - Opcode: DW_LNS_set_column - Data: 18 - - Opcode: DW_LNS_advance_line - SData: -16 - Data: 18 - - Opcode: DW_LNS_advance_pc - Data: 36 - - Opcode: DW_LNS_copy - Data: 36 - - Opcode: DW_LNS_set_column - Data: 20 - - Opcode: DW_LNS_negate_stmt - Data: 20 - - Opcode: 0x3C - Data: 20 - - Opcode: DW_LNS_set_column - Data: 9 - - Opcode: 0x3C - Data: 9 - - Opcode: DW_LNS_set_column - Data: 23 - - Opcode: DW_LNS_negate_stmt - Data: 23 - - Opcode: DW_LNS_advance_line - SData: 10 - Data: 23 - - Opcode: DW_LNS_const_add_pc - Data: 23 - - Opcode: 0xD6 - Data: 23 - - Opcode: DW_LNS_set_column - Data: 26 - - Opcode: DW_LNS_negate_stmt - Data: 26 - - Opcode: 0x3C - Data: 26 - - Opcode: DW_LNS_set_column - Data: 18 - - Opcode: DW_LNS_negate_stmt - Data: 18 - - Opcode: DW_LNS_advance_line - SData: -10 - Data: 18 - - Opcode: 0x90 - Data: 18 - - Opcode: DW_LNS_set_column - Data: 20 - - Opcode: DW_LNS_negate_stmt - Data: 20 - - Opcode: 0x3C - Data: 20 - - Opcode: DW_LNS_set_column - Data: 9 - - Opcode: 0x3C - Data: 9 - - Opcode: DW_LNS_set_column - Data: 12 - - Opcode: DW_LNS_negate_stmt - Data: 12 - - Opcode: 0x3D - Data: 12 - - Opcode: DW_LNS_set_column - Data: 36 - - Opcode: DW_LNS_advance_line - SData: 9 - Data: 36 - - Opcode: 0x3C - Data: 36 - - Opcode: DW_LNS_set_column - Data: 39 - - Opcode: DW_LNS_negate_stmt - Data: 39 - - Opcode: 0x3C - Data: 39 - - Opcode: DW_LNS_set_column - Data: 18 - - Opcode: DW_LNS_negate_stmt - Data: 18 - - Opcode: DW_LNS_advance_line - SData: -10 - Data: 18 - - Opcode: 0x90 - Data: 18 - - Opcode: DW_LNS_set_column - Data: 20 - - Opcode: DW_LNS_negate_stmt - Data: 20 - - Opcode: 0x3C - Data: 20 - - Opcode: DW_LNS_set_column - Data: 9 - - Opcode: 0x3C - Data: 9 - - Opcode: DW_LNS_set_column - Data: 29 - - Opcode: DW_LNS_negate_stmt - Data: 29 - - Opcode: DW_LNS_advance_line - SData: 10 - Data: 29 - - Opcode: 0x3C - Data: 29 - - Opcode: DW_LNS_set_column - Data: 9 - - Opcode: DW_LNS_negate_stmt - Data: 9 - - Opcode: 0x3C - Data: 9 - - Opcode: DW_LNS_set_column - Data: 12 - - Opcode: DW_LNS_negate_stmt - Data: 12 - - Opcode: 0x3D - Data: 12 - - Opcode: 0x67 - Data: 12 - - Opcode: DW_LNS_set_column - Data: 9 - - Opcode: 0x41 - Data: 9 - - Opcode: DW_LNS_set_column - Data: 18 - - Opcode: DW_LNS_advance_line - SData: -17 - Data: 18 - - Opcode: DW_LNS_const_add_pc - Data: 18 - - Opcode: 0x12 - Data: 18 - - Opcode: DW_LNS_set_column - Data: 20 - - Opcode: DW_LNS_negate_stmt - Data: 20 - - Opcode: 0x3C - Data: 20 - - Opcode: DW_LNS_set_column - Data: 9 - - Opcode: 0x3C - Data: 9 - - Opcode: DW_LNS_set_column - Data: 5 - - Opcode: DW_LNS_negate_stmt - Data: 5 - - Opcode: DW_LNS_advance_line - SData: 19 - Data: 5 - - Opcode: 0x3C - Data: 5 - - Opcode: DW_LNS_advance_pc - Data: 11 - - Opcode: DW_LNS_extended_op - ExtLen: 1 - SubOpcode: DW_LNE_end_sequence - Data: 11 -... diff --git a/gnu/llvm/lldb/unittests/Symbol/LocateSymbolFileTest.cpp b/gnu/llvm/lldb/unittests/Symbol/LocateSymbolFileTest.cpp deleted file mode 100644 index c51b1ba4904..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/LocateSymbolFileTest.cpp +++ /dev/null @@ -1,48 +0,0 @@ -//===-- SymbolsTest.cpp ---------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Symbol/LocateSymbolFile.h" -#include "lldb/Target/Target.h" -#include "lldb/Utility/Reproducer.h" - -using namespace lldb_private; - -namespace { -class SymbolsTest : public ::testing::Test { -public: - SubsystemRAII subsystems; -}; -} // namespace - -TEST_F( - SymbolsTest, - TerminateLocateExecutableSymbolFileForUnknownExecutableAndUnknownSymbolFile) { - ModuleSpec module_spec; - FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - FileSpec symbol_file_spec = - Symbols::LocateExecutableSymbolFile(module_spec, search_paths); - EXPECT_TRUE(symbol_file_spec.GetFilename().IsEmpty()); -} - -TEST_F(SymbolsTest, - LocateExecutableSymbolFileForUnknownExecutableAndMissingSymbolFile) { - ModuleSpec module_spec; - // using a GUID here because the symbol file shouldn't actually exist on disk - module_spec.GetSymbolFileSpec().SetFile( - "4A524676-B24B-4F4E-968A-551D465EBAF1.so", FileSpec::Style::native); - FileSpecList search_paths = Target::GetDefaultDebugFileSearchPaths(); - FileSpec symbol_file_spec = - Symbols::LocateExecutableSymbolFile(module_spec, search_paths); - EXPECT_TRUE(symbol_file_spec.GetFilename().IsEmpty()); -} diff --git a/gnu/llvm/lldb/unittests/Symbol/PostfixExpressionTest.cpp b/gnu/llvm/lldb/unittests/Symbol/PostfixExpressionTest.cpp deleted file mode 100644 index 9f66aeed6b6..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/PostfixExpressionTest.cpp +++ /dev/null @@ -1,194 +0,0 @@ -//===-- PostfixExpressionTest.cpp -----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Symbol/PostfixExpression.h" -#include "lldb/Utility/DataExtractor.h" -#include "lldb/Utility/StreamString.h" -#include "llvm/DebugInfo/DWARF/DWARFExpression.h" -#include "llvm/Support/FormatVariadic.h" -#include "llvm/Support/raw_ostream.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb_private::postfix; - -static std::string ToString(BinaryOpNode::OpType type) { - switch (type) { - case BinaryOpNode::Align: - return "@"; - case BinaryOpNode::Minus: - return "-"; - case BinaryOpNode::Plus: - return "+"; - } - llvm_unreachable("Fully covered switch!"); -} - -static std::string ToString(UnaryOpNode::OpType type) { - switch (type) { - case UnaryOpNode::Deref: - return "^"; - } - llvm_unreachable("Fully covered switch!"); -} - -struct ASTPrinter : public Visitor { -protected: - std::string Visit(BinaryOpNode &binary, Node *&) override { - return std::string( - llvm::formatv("{0}({1}, {2})", ToString(binary.GetOpType()), - Dispatch(binary.Left()), Dispatch(binary.Right()))); - } - - std::string Visit(InitialValueNode &, Node *&) override { return "InitialValue"; } - - std::string Visit(IntegerNode &integer, Node *&) override { - return std::string(llvm::formatv("int({0})", integer.GetValue())); - } - - std::string Visit(RegisterNode ®, Node *&) override { - return std::string(llvm::formatv("reg({0})", reg.GetRegNum())); - } - - std::string Visit(SymbolNode &symbol, Node *&) override { - return std::string(symbol.GetName()); - } - - std::string Visit(UnaryOpNode &unary, Node *&) override { - return std::string(llvm::formatv("{0}({1})", ToString(unary.GetOpType()), - Dispatch(unary.Operand()))); - } - -public: - static std::string Print(Node *node) { - if (node) - return ASTPrinter().Dispatch(node); - return "nullptr"; - } -}; - -static std::string ParseOneAndStringify(llvm::StringRef expr) { - llvm::BumpPtrAllocator alloc; - return ASTPrinter::Print(ParseOneExpression(expr, alloc)); -} - -TEST(PostfixExpression, ParseOneExpression) { - EXPECT_EQ("int(47)", ParseOneAndStringify("47")); - EXPECT_EQ("$foo", ParseOneAndStringify("$foo")); - EXPECT_EQ("+(int(1), int(2))", ParseOneAndStringify("1 2 +")); - EXPECT_EQ("-(int(1), int(2))", ParseOneAndStringify("1 2 -")); - EXPECT_EQ("@(int(1), int(2))", ParseOneAndStringify("1 2 @")); - EXPECT_EQ("+(int(1), +(int(2), int(3)))", ParseOneAndStringify("1 2 3 + +")); - EXPECT_EQ("+(+(int(1), int(2)), int(3))", ParseOneAndStringify("1 2 + 3 +")); - EXPECT_EQ("^(int(1))", ParseOneAndStringify("1 ^")); - EXPECT_EQ("^(^(int(1)))", ParseOneAndStringify("1 ^ ^")); - EXPECT_EQ("^(+(int(1), ^(int(2))))", ParseOneAndStringify("1 2 ^ + ^")); - EXPECT_EQ("-($foo, int(47))", ParseOneAndStringify("$foo 47 -")); - EXPECT_EQ("+(int(47), int(-42))", ParseOneAndStringify("47 -42 +")); - - EXPECT_EQ("nullptr", ParseOneAndStringify("+")); - EXPECT_EQ("nullptr", ParseOneAndStringify("^")); - EXPECT_EQ("nullptr", ParseOneAndStringify("1 +")); - EXPECT_EQ("nullptr", ParseOneAndStringify("1 2 ^")); - EXPECT_EQ("nullptr", ParseOneAndStringify("1 2 3 +")); - EXPECT_EQ("nullptr", ParseOneAndStringify("^ 1")); - EXPECT_EQ("nullptr", ParseOneAndStringify("+ 1 2")); - EXPECT_EQ("nullptr", ParseOneAndStringify("1 + 2")); - EXPECT_EQ("nullptr", ParseOneAndStringify("1 2")); - EXPECT_EQ("nullptr", ParseOneAndStringify("")); -} - -static std::vector> -ParseFPOAndStringify(llvm::StringRef prog) { - llvm::BumpPtrAllocator alloc; - std::vector> parsed = - ParseFPOProgram(prog, alloc); - std::vector> result; - for (const auto &p : parsed) - result.emplace_back(p.first.str(), ASTPrinter::Print(p.second)); - return result; -} - -TEST(PostfixExpression, ParseFPOProgram) { - EXPECT_THAT(ParseFPOAndStringify("a 1 ="), - testing::ElementsAre(std::make_pair("a", "int(1)"))); - EXPECT_THAT(ParseFPOAndStringify("a 1 = b 2 3 + ="), - testing::ElementsAre(std::make_pair("a", "int(1)"), - std::make_pair("b", "+(int(2), int(3))"))); - - EXPECT_THAT(ParseFPOAndStringify(""), testing::IsEmpty()); - EXPECT_THAT(ParseFPOAndStringify("="), testing::IsEmpty()); - EXPECT_THAT(ParseFPOAndStringify("a 1"), testing::IsEmpty()); - EXPECT_THAT(ParseFPOAndStringify("a 1 = ="), testing::IsEmpty()); - EXPECT_THAT(ParseFPOAndStringify("a 1 + ="), testing::IsEmpty()); - EXPECT_THAT(ParseFPOAndStringify("= a 1 ="), testing::IsEmpty()); -} - -static std::string ParseAndGenerateDWARF(llvm::StringRef expr) { - llvm::BumpPtrAllocator alloc; - Node *ast = ParseOneExpression(expr, alloc); - if (!ast) - return "Parse failed."; - if (!ResolveSymbols(ast, [&](SymbolNode &symbol) -> Node * { - if (symbol.GetName() == "INIT") - return MakeNode(alloc); - - uint32_t num; - if (to_integer(symbol.GetName().drop_front(), num)) - return MakeNode(alloc, num); - return nullptr; - })) { - return "Resolution failed."; - } - - const size_t addr_size = 4; - StreamString dwarf(Stream::eBinary, addr_size, lldb::eByteOrderLittle); - ToDWARF(*ast, dwarf); - - // print dwarf expression to comparable textual representation - llvm::DataExtractor extractor(dwarf.GetString(), /*IsLittleEndian=*/true, - addr_size); - - std::string result; - llvm::raw_string_ostream os(result); - llvm::DWARFExpression(extractor, addr_size, llvm::dwarf::DWARF32) - .print(os, llvm::DIDumpOptions(), nullptr, nullptr); - return std::move(os.str()); -} - -TEST(PostfixExpression, ToDWARF) { - EXPECT_EQ("DW_OP_consts +0", ParseAndGenerateDWARF("0")); - - EXPECT_EQ("DW_OP_breg1 +0", ParseAndGenerateDWARF("R1")); - - EXPECT_EQ("DW_OP_bregx 0x41 +0", ParseAndGenerateDWARF("R65")); - - EXPECT_EQ("DW_OP_pick 0x0", ParseAndGenerateDWARF("INIT")); - - EXPECT_EQ("DW_OP_pick 0x0, DW_OP_pick 0x1, DW_OP_plus", - ParseAndGenerateDWARF("INIT INIT +")); - - EXPECT_EQ("DW_OP_breg1 +0, DW_OP_pick 0x1, DW_OP_plus", - ParseAndGenerateDWARF("R1 INIT +")); - - EXPECT_EQ("DW_OP_consts +1, DW_OP_pick 0x1, DW_OP_deref, DW_OP_plus", - ParseAndGenerateDWARF("1 INIT ^ +")); - - EXPECT_EQ("DW_OP_consts +4, DW_OP_consts +5, DW_OP_plus", - ParseAndGenerateDWARF("4 5 +")); - - EXPECT_EQ("DW_OP_consts +4, DW_OP_consts +5, DW_OP_minus", - ParseAndGenerateDWARF("4 5 -")); - - EXPECT_EQ("DW_OP_consts +4, DW_OP_deref", ParseAndGenerateDWARF("4 ^")); - - EXPECT_EQ("DW_OP_breg6 +0, DW_OP_consts +128, DW_OP_lit1, DW_OP_minus, " - "DW_OP_not, DW_OP_and", - ParseAndGenerateDWARF("R6 128 @")); -} diff --git a/gnu/llvm/lldb/unittests/Symbol/TestClangASTImporter.cpp b/gnu/llvm/lldb/unittests/Symbol/TestClangASTImporter.cpp deleted file mode 100644 index c8ffd099716..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/TestClangASTImporter.cpp +++ /dev/null @@ -1,258 +0,0 @@ -//===-- TestClangASTImporter.cpp ------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "Plugins/ExpressionParser/Clang/ClangASTImporter.h" -#include "Plugins/ExpressionParser/Clang/ClangASTMetadata.h" -#include "Plugins/ExpressionParser/Clang/ClangUtil.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/Symbol/ClangTestUtils.h" -#include "lldb/Core/Declaration.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "clang/AST/DeclCXX.h" - -using namespace clang; -using namespace lldb; -using namespace lldb_private; - -class TestClangASTImporter : public testing::Test { -public: - SubsystemRAII subsystems; -}; - -TEST_F(TestClangASTImporter, CanImportInvalidType) { - ClangASTImporter importer; - EXPECT_FALSE(importer.CanImport(CompilerType())); -} - -TEST_F(TestClangASTImporter, ImportInvalidType) { - ClangASTImporter importer; - EXPECT_FALSE(importer.Import(CompilerType())); -} - -TEST_F(TestClangASTImporter, CopyDeclTagDecl) { - // Tests that the ClangASTImporter::CopyDecl can copy TagDecls. - clang_utils::SourceASTWithRecord source; - - std::unique_ptr target_ast = clang_utils::createAST(); - - ClangASTImporter importer; - clang::Decl *imported = - importer.CopyDecl(&target_ast->getASTContext(), source.record_decl); - ASSERT_NE(nullptr, imported); - - // Check that we got the correct decl by just comparing their qualified name. - clang::TagDecl *imported_tag_decl = llvm::cast(imported); - EXPECT_EQ(source.record_decl->getQualifiedNameAsString(), - imported_tag_decl->getQualifiedNameAsString()); - // We did a minimal import of the tag decl. - EXPECT_TRUE(imported_tag_decl->hasExternalLexicalStorage()); - - // Check that origin was set for the imported declaration. - ClangASTImporter::DeclOrigin origin = importer.GetDeclOrigin(imported); - EXPECT_TRUE(origin.Valid()); - EXPECT_EQ(origin.ctx, &source.ast->getASTContext()); - EXPECT_EQ(origin.decl, source.record_decl); -} - -TEST_F(TestClangASTImporter, CopyTypeTagDecl) { - // Tests that the ClangASTImporter::CopyType can copy TagDecls types. - clang_utils::SourceASTWithRecord source; - - std::unique_ptr target_ast = clang_utils::createAST(); - - ClangASTImporter importer; - CompilerType imported = importer.CopyType(*target_ast, source.record_type); - ASSERT_TRUE(imported.IsValid()); - - // Check that we got the correct decl by just comparing their qualified name. - clang::TagDecl *imported_tag_decl = ClangUtil::GetAsTagDecl(imported); - EXPECT_EQ(source.record_decl->getQualifiedNameAsString(), - imported_tag_decl->getQualifiedNameAsString()); - // We did a minimal import of the tag decl. - EXPECT_TRUE(imported_tag_decl->hasExternalLexicalStorage()); - - // Check that origin was set for the imported declaration. - ClangASTImporter::DeclOrigin origin = - importer.GetDeclOrigin(imported_tag_decl); - EXPECT_TRUE(origin.Valid()); - EXPECT_EQ(origin.ctx, &source.ast->getASTContext()); - EXPECT_EQ(origin.decl, source.record_decl); -} - -TEST_F(TestClangASTImporter, CompleteFwdDeclWithOtherOrigin) { - // Create an AST with a full type that is defined. - clang_utils::SourceASTWithRecord source_with_definition; - - // Create an AST with a type thst is only a forward declaration with the - // same name as the one in the other source. - std::unique_ptr fwd_decl_source = clang_utils::createAST(); - CompilerType fwd_decl_type = clang_utils::createRecord( - *fwd_decl_source, source_with_definition.record_decl->getName()); - - // Create a target and import the forward decl. - std::unique_ptr target = clang_utils::createAST(); - ClangASTImporter importer; - CompilerType imported = importer.CopyType(*target, fwd_decl_type); - ASSERT_TRUE(imported.IsValid()); - EXPECT_FALSE(imported.IsDefined()); - - // Now complete the forward decl with the definition from the other source. - // This should define the decl and give it the fields of the other origin. - clang::TagDecl *imported_tag_decl = ClangUtil::GetAsTagDecl(imported); - importer.CompleteTagDeclWithOrigin(imported_tag_decl, - source_with_definition.record_decl); - ASSERT_TRUE(imported.IsValid()); - EXPECT_TRUE(imported.IsDefined()); - EXPECT_EQ(1U, imported.GetNumFields()); -} - -TEST_F(TestClangASTImporter, DeportDeclTagDecl) { - // Tests that the ClangASTImporter::DeportDecl completely copies TagDecls. - clang_utils::SourceASTWithRecord source; - - std::unique_ptr target_ast = clang_utils::createAST(); - - ClangASTImporter importer; - clang::Decl *imported = - importer.DeportDecl(&target_ast->getASTContext(), source.record_decl); - ASSERT_NE(nullptr, imported); - - // Check that we got the correct decl by just comparing their qualified name. - clang::TagDecl *imported_tag_decl = llvm::cast(imported); - EXPECT_EQ(source.record_decl->getQualifiedNameAsString(), - imported_tag_decl->getQualifiedNameAsString()); - // The record should be completed as we deported it. - EXPECT_FALSE(imported_tag_decl->hasExternalLexicalStorage()); - - // Deporting doesn't update the origin map. - EXPECT_FALSE(importer.GetDeclOrigin(imported_tag_decl).Valid()); -} - -TEST_F(TestClangASTImporter, DeportTypeTagDecl) { - // Tests that the ClangASTImporter::CopyType can deport TagDecl types. - clang_utils::SourceASTWithRecord source; - - std::unique_ptr target_ast = clang_utils::createAST(); - - ClangASTImporter importer; - CompilerType imported = importer.DeportType(*target_ast, source.record_type); - ASSERT_TRUE(imported.IsValid()); - - // Check that we got the correct decl by just comparing their qualified name. - clang::TagDecl *imported_tag_decl = ClangUtil::GetAsTagDecl(imported); - EXPECT_EQ(source.record_decl->getQualifiedNameAsString(), - imported_tag_decl->getQualifiedNameAsString()); - // The record should be completed as we deported it. - EXPECT_FALSE(imported_tag_decl->hasExternalLexicalStorage()); - - // Deporting doesn't update the origin map. - EXPECT_FALSE(importer.GetDeclOrigin(imported_tag_decl).Valid()); -} - -TEST_F(TestClangASTImporter, MetadataPropagation) { - // Tests that AST metadata is propagated when copying declarations. - - clang_utils::SourceASTWithRecord source; - - const lldb::user_id_t metadata = 123456; - source.ast->SetMetadataAsUserID(source.record_decl, metadata); - - std::unique_ptr target_ast = clang_utils::createAST(); - - ClangASTImporter importer; - clang::Decl *imported = - importer.CopyDecl(&target_ast->getASTContext(), source.record_decl); - ASSERT_NE(nullptr, imported); - - // Check that we got the same Metadata. - ASSERT_NE(nullptr, importer.GetDeclMetadata(imported)); - EXPECT_EQ(metadata, importer.GetDeclMetadata(imported)->GetUserID()); -} - -TEST_F(TestClangASTImporter, MetadataPropagationIndirectImport) { - // Tests that AST metadata is propagated when copying declarations when - // importing one declaration into a temporary context and then to the - // actual destination context. - - clang_utils::SourceASTWithRecord source; - - const lldb::user_id_t metadata = 123456; - source.ast->SetMetadataAsUserID(source.record_decl, metadata); - - std::unique_ptr temporary_ast = clang_utils::createAST(); - - ClangASTImporter importer; - clang::Decl *temporary_imported = - importer.CopyDecl(&temporary_ast->getASTContext(), source.record_decl); - ASSERT_NE(nullptr, temporary_imported); - - std::unique_ptr target_ast = clang_utils::createAST(); - clang::Decl *imported = - importer.CopyDecl(&target_ast->getASTContext(), temporary_imported); - ASSERT_NE(nullptr, imported); - - // Check that we got the same Metadata. - ASSERT_NE(nullptr, importer.GetDeclMetadata(imported)); - EXPECT_EQ(metadata, importer.GetDeclMetadata(imported)->GetUserID()); -} - -TEST_F(TestClangASTImporter, MetadataPropagationAfterCopying) { - // Tests that AST metadata is propagated when copying declarations even - // when the metadata was set after the declaration has already been copied. - - clang_utils::SourceASTWithRecord source; - const lldb::user_id_t metadata = 123456; - - std::unique_ptr target_ast = clang_utils::createAST(); - - ClangASTImporter importer; - clang::Decl *imported = - importer.CopyDecl(&target_ast->getASTContext(), source.record_decl); - ASSERT_NE(nullptr, imported); - - // The TagDecl has been imported. Now set the metadata of the source and - // make sure the imported one will directly see it. - source.ast->SetMetadataAsUserID(source.record_decl, metadata); - - // Check that we got the same Metadata. - ASSERT_NE(nullptr, importer.GetDeclMetadata(imported)); - EXPECT_EQ(metadata, importer.GetDeclMetadata(imported)->GetUserID()); -} - -TEST_F(TestClangASTImporter, RecordLayout) { - // Test that it is possible to register RecordDecl layouts and then later - // correctly retrieve them. - - clang_utils::SourceASTWithRecord source; - - ClangASTImporter importer; - ClangASTImporter::LayoutInfo layout_info; - layout_info.bit_size = 15; - layout_info.alignment = 2; - layout_info.field_offsets[source.field_decl] = 1; - importer.SetRecordLayout(source.record_decl, layout_info); - - uint64_t bit_size; - uint64_t alignment; - llvm::DenseMap field_offsets; - llvm::DenseMap base_offsets; - llvm::DenseMap vbase_offsets; - importer.LayoutRecordType(source.record_decl, bit_size, alignment, - field_offsets, base_offsets, vbase_offsets); - - EXPECT_EQ(15U, bit_size); - EXPECT_EQ(2U, alignment); - EXPECT_EQ(1U, field_offsets.size()); - EXPECT_EQ(1U, field_offsets[source.field_decl]); - EXPECT_EQ(0U, base_offsets.size()); - EXPECT_EQ(0U, vbase_offsets.size()); -} diff --git a/gnu/llvm/lldb/unittests/Symbol/TestDWARFCallFrameInfo.cpp b/gnu/llvm/lldb/unittests/Symbol/TestDWARFCallFrameInfo.cpp deleted file mode 100644 index 86a6cf0cacb..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/TestDWARFCallFrameInfo.cpp +++ /dev/null @@ -1,257 +0,0 @@ -//===-- TestDWARFCallFrameInfo.cpp ----------------------------------------===// -// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "Plugins/ObjectFile/ELF/ObjectFileELF.h" -#include "Plugins/Process/Utility/RegisterContext_x86.h" -#include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" - -#include "lldb/Core/Module.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Core/Section.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Symbol/DWARFCallFrameInfo.h" -#include "lldb/Utility/StreamString.h" -#include "llvm/Testing/Support/Error.h" - -#include "llvm/Support/FileUtilities.h" -#include "llvm/Support/Path.h" -#include "llvm/Support/Program.h" -#include "llvm/Support/raw_ostream.h" - -using namespace lldb_private; -using namespace lldb; - -class DWARFCallFrameInfoTest : public testing::Test { - SubsystemRAII - subsystems; - -protected: - void TestBasic(DWARFCallFrameInfo::Type type, llvm::StringRef symbol); -}; - -namespace lldb_private { -static std::ostream &operator<<(std::ostream &OS, const UnwindPlan::Row &row) { - StreamString SS; - row.Dump(SS, nullptr, nullptr, 0); - return OS << SS.GetData(); -} -} // namespace lldb_private - -static UnwindPlan::Row GetExpectedRow0() { - UnwindPlan::Row row; - row.SetOffset(0); - row.GetCFAValue().SetIsRegisterPlusOffset(dwarf_rsp_x86_64, 8); - row.SetRegisterLocationToAtCFAPlusOffset(dwarf_rip_x86_64, -8, false); - return row; -} - -static UnwindPlan::Row GetExpectedRow1() { - UnwindPlan::Row row; - row.SetOffset(1); - row.GetCFAValue().SetIsRegisterPlusOffset(dwarf_rsp_x86_64, 16); - row.SetRegisterLocationToAtCFAPlusOffset(dwarf_rip_x86_64, -8, false); - row.SetRegisterLocationToAtCFAPlusOffset(dwarf_rbp_x86_64, -16, false); - return row; -} - -static UnwindPlan::Row GetExpectedRow2() { - UnwindPlan::Row row; - row.SetOffset(4); - row.GetCFAValue().SetIsRegisterPlusOffset(dwarf_rbp_x86_64, 16); - row.SetRegisterLocationToAtCFAPlusOffset(dwarf_rip_x86_64, -8, false); - row.SetRegisterLocationToAtCFAPlusOffset(dwarf_rbp_x86_64, -16, false); - return row; -} - -void DWARFCallFrameInfoTest::TestBasic(DWARFCallFrameInfo::Type type, - llvm::StringRef symbol) { - auto ExpectedFile = TestFile::fromYaml(R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_DYN - Machine: EM_X86_64 - Entry: 0x0000000000000260 -Sections: - - Name: .text - Type: SHT_PROGBITS - Flags: [ SHF_ALLOC, SHF_EXECINSTR ] - Address: 0x0000000000000260 - AddressAlign: 0x0000000000000010 - Content: 554889E5897DFC8B45FC5DC30F1F4000554889E5897DFC8B45FC5DC30F1F4000554889E5897DFC8B45FC5DC3 -#0000000000000260 : -# 260: 55 push %rbp -# 261: 48 89 e5 mov %rsp,%rbp -# 264: 89 7d fc mov %edi,-0x4(%rbp) -# 267: 8b 45 fc mov -0x4(%rbp),%eax -# 26a: 5d pop %rbp -# 26b: c3 retq -# 26c: 0f 1f 40 00 nopl 0x0(%rax) -# -#0000000000000270 : -# 270: 55 push %rbp -# 271: 48 89 e5 mov %rsp,%rbp -# 274: 89 7d fc mov %edi,-0x4(%rbp) -# 277: 8b 45 fc mov -0x4(%rbp),%eax -# 27a: 5d pop %rbp -# 27b: c3 retq -# 27c: 0f 1f 40 00 nopl 0x0(%rax) -# -#0000000000000280 : -# 280: 55 push %rbp -# 281: 48 89 e5 mov %rsp,%rbp -# 284: 89 7d fc mov %edi,-0x4(%rbp) -# 287: 8b 45 fc mov -0x4(%rbp),%eax -# 28a: 5d pop %rbp -# 28b: c3 retq - - Name: .eh_frame - Type: SHT_X86_64_UNWIND - Flags: [ SHF_ALLOC ] - Address: 0x0000000000000290 - AddressAlign: 0x0000000000000008 - Content: 1400000000000000017A5200017810011B0C0708900100001C0000001C000000B0FFFFFF0C00000000410E108602430D0600000000000000 -#00000000 0000000000000014 00000000 CIE -# Version: 1 -# Augmentation: "zR" -# Code alignment factor: 1 -# Data alignment factor: -8 -# Return address column: 16 -# Augmentation data: 1b -# -# DW_CFA_def_cfa: r7 (rsp) ofs 8 -# DW_CFA_offset: r16 (rip) at cfa-8 -# DW_CFA_nop -# DW_CFA_nop -# -#00000018 000000000000001c 0000001c FDE cie=00000000 pc=ffffffffffffffd0..ffffffffffffffdc -# DW_CFA_advance_loc: 1 to ffffffffffffffd1 -# DW_CFA_def_cfa_offset: 16 -# DW_CFA_offset: r6 (rbp) at cfa-16 -# DW_CFA_advance_loc: 3 to ffffffffffffffd4 -# DW_CFA_def_cfa_register: r6 (rbp) -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop - - Name: .debug_frame - Type: SHT_PROGBITS - AddressAlign: 0x0000000000000008 - Content: 14000000FFFFFFFF03000178100C070890010000000000001C0000000000000070020000000000000C00000000000000410E108602430D0614000000FFFFFFFF040008000178100C07089001000000001C0000003800000080020000000000000C00000000000000410E108602430D06 -#00000000 0000000000000014 ffffffff CIE -# Version: 3 -# Augmentation: "" -# Code alignment factor: 1 -# Data alignment factor: -8 -# Return address column: 16 -# -# DW_CFA_def_cfa: r7 (rsp) ofs 8 -# DW_CFA_offset: r16 (rip) at cfa-8 -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# -#00000018 000000000000001c 00000000 FDE cie=00000000 pc=0000000000000270..000000000000027c -# DW_CFA_advance_loc: 1 to 0000000000000271 -# DW_CFA_def_cfa_offset: 16 -# DW_CFA_offset: r6 (rbp) at cfa-16 -# DW_CFA_advance_loc: 3 to 0000000000000274 -# DW_CFA_def_cfa_register: r6 (rbp) -# -#00000038 0000000000000014 ffffffff CIE -# Version: 4 -# Augmentation: "" -# Pointer Size: 8 -# Segment Size: 0 -# Code alignment factor: 1 -# Data alignment factor: -8 -# Return address column: 16 -# -# DW_CFA_def_cfa: r7 (rsp) ofs 8 -# DW_CFA_offset: r16 (rip) at cfa-8 -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# DW_CFA_nop -# -#00000050 000000000000001c 00000038 FDE cie=00000038 pc=0000000000000280..000000000000028c -# DW_CFA_advance_loc: 1 to 0000000000000281 -# DW_CFA_def_cfa_offset: 16 -# DW_CFA_offset: r6 (rbp) at cfa-16 -# DW_CFA_advance_loc: 3 to 0000000000000284 -# DW_CFA_def_cfa_register: r6 (rbp) -Symbols: - - Name: eh_frame - Type: STT_FUNC - Section: .text - Value: 0x0000000000000260 - Size: 0x000000000000000C - Binding: STB_GLOBAL - - Name: debug_frame3 - Type: STT_FUNC - Section: .text - Value: 0x0000000000000270 - Size: 0x000000000000000C - Binding: STB_GLOBAL - - Name: debug_frame4 - Type: STT_FUNC - Section: .text - Value: 0x0000000000000280 - Size: 0x000000000000000C - Binding: STB_GLOBAL -... -)"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - - auto module_sp = std::make_shared(ExpectedFile->moduleSpec()); - SectionList *list = module_sp->GetSectionList(); - ASSERT_NE(nullptr, list); - - auto section_sp = list->FindSectionByType(type == DWARFCallFrameInfo::EH - ? eSectionTypeEHFrame - : eSectionTypeDWARFDebugFrame, - false); - ASSERT_NE(nullptr, section_sp); - - DWARFCallFrameInfo cfi(*module_sp->GetObjectFile(), section_sp, type); - - const Symbol *sym = module_sp->FindFirstSymbolWithNameAndType( - ConstString(symbol), eSymbolTypeAny); - ASSERT_NE(nullptr, sym); - - UnwindPlan plan(eRegisterKindGeneric); - ASSERT_TRUE(cfi.GetUnwindPlan(sym->GetAddress(), plan)); - ASSERT_EQ(3, plan.GetRowCount()); - EXPECT_EQ(GetExpectedRow0(), *plan.GetRowAtIndex(0)); - EXPECT_EQ(GetExpectedRow1(), *plan.GetRowAtIndex(1)); - EXPECT_EQ(GetExpectedRow2(), *plan.GetRowAtIndex(2)); -} - -TEST_F(DWARFCallFrameInfoTest, Basic_dwarf3) { - TestBasic(DWARFCallFrameInfo::DWARF, "debug_frame3"); -} - -TEST_F(DWARFCallFrameInfoTest, Basic_dwarf4) { - TestBasic(DWARFCallFrameInfo::DWARF, "debug_frame4"); -} - -TEST_F(DWARFCallFrameInfoTest, Basic_eh) { - TestBasic(DWARFCallFrameInfo::EH, "eh_frame"); -} diff --git a/gnu/llvm/lldb/unittests/Symbol/TestLineEntry.cpp b/gnu/llvm/lldb/unittests/Symbol/TestLineEntry.cpp deleted file mode 100644 index 5fc53749703..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/TestLineEntry.cpp +++ /dev/null @@ -1,208 +0,0 @@ -//===-- TestLineEntry.cpp -------------------------------------------------===// -// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" -#include - -#include "Plugins/ObjectFile/Mach-O/ObjectFileMachO.h" -#include "Plugins/SymbolFile/DWARF/DWARFASTParserClang.h" -#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" - -#include "lldb/Core/Module.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Symbol/CompileUnit.h" -#include "lldb/Symbol/SymbolContext.h" - -#include "llvm/Support/FileUtilities.h" -#include "llvm/Support/Program.h" -#include "llvm/Testing/Support/Error.h" - -using namespace lldb_private; -using namespace lldb; - -class LineEntryTest : public testing::Test { - SubsystemRAII - subsystem; - -public: - void SetUp() override; - -protected: - llvm::Expected GetLineEntryForLine(uint32_t line); - llvm::Optional m_file; - ModuleSP m_module_sp; -}; - -void LineEntryTest::SetUp() { - auto ExpectedFile = TestFile::fromYamlFile("inlined-functions.yaml"); - ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded()); - m_file.emplace(std::move(*ExpectedFile)); - m_module_sp = std::make_shared(m_file->moduleSpec()); -} - -llvm::Expected LineEntryTest::GetLineEntryForLine(uint32_t line) { - // TODO: Handle SourceLocationSpec column information - SymbolContextList sc_comp_units; - SymbolContextList sc_line_entries; - FileSpec file_spec("inlined-functions.cpp"); - m_module_sp->ResolveSymbolContextsForFileSpec( - file_spec, line, /*check_inlines=*/true, lldb::eSymbolContextCompUnit, - sc_comp_units); - if (sc_comp_units.GetSize() == 0) - return llvm::createStringError(llvm::inconvertibleErrorCode(), - "No comp unit found on the test object."); - - SourceLocationSpec location_spec(file_spec, line, /*column=*/llvm::None, - /*check_inlines=*/true, - /*exact_match=*/true); - - sc_comp_units[0].comp_unit->ResolveSymbolContext( - location_spec, eSymbolContextLineEntry, sc_line_entries); - if (sc_line_entries.GetSize() == 0) - return llvm::createStringError(llvm::inconvertibleErrorCode(), - "No line entry found on the test object."); - return sc_line_entries[0].line_entry; -} - -TEST_F(LineEntryTest, GetSameLineContiguousAddressRangeNoInlines) { - auto line_entry = GetLineEntryForLine(18); - ASSERT_THAT_EXPECTED(line_entry, llvm::Succeeded()); - bool include_inlined_functions = false; - auto range = - line_entry->GetSameLineContiguousAddressRange(include_inlined_functions); - ASSERT_EQ(range.GetByteSize(), (uint64_t)0x24); -} - -TEST_F(LineEntryTest, GetSameLineContiguousAddressRangeOneInline) { - auto line_entry = GetLineEntryForLine(18); - ASSERT_THAT_EXPECTED(line_entry, llvm::Succeeded()); - bool include_inlined_functions = true; - auto range = - line_entry->GetSameLineContiguousAddressRange(include_inlined_functions); - ASSERT_EQ(range.GetByteSize(), (uint64_t)0x49); -} - -TEST_F(LineEntryTest, GetSameLineContiguousAddressRangeNestedInline) { - auto line_entry = GetLineEntryForLine(12); - ASSERT_THAT_EXPECTED(line_entry, llvm::Succeeded()); - bool include_inlined_functions = true; - auto range = - line_entry->GetSameLineContiguousAddressRange(include_inlined_functions); - ASSERT_EQ(range.GetByteSize(), (uint64_t)0x33); -} - -/* -# inlined-functions.cpp -inline __attribute__((always_inline)) int sum2(int a, int b) { - int result = a + b; - return result; -} - -int sum3(int a, int b, int c) { - int result = a + b + c; - return result; -} - -inline __attribute__((always_inline)) int sum4(int a, int b, int c, int d) { - int result = sum2(a, b) + sum2(c, d); - result += 0; - return result; -} - -int main(int argc, char** argv) { - sum3(3, 4, 5) + sum2(1, 2); - int sum = sum4(1, 2, 3, 4); - sum2(5, 6); - return 0; -} - -// g++ -c inlined-functions.cpp -o inlined-functions.o -g -Wno-unused-value -// obj2yaml inlined-functions.o > inlined-functions.yaml - -# Dump of source line per address: -# inlined-functions.cpp is src.cpp for space considerations. -0x20: src.cpp:17 -0x21: src.cpp:17 -0x26: src.cpp:17 -0x27: src.cpp:17 -0x29: src.cpp:17 -0x2e: src.cpp:17 -0x2f: src.cpp:17 -0x31: src.cpp:17 -0x36: src.cpp:18 -0x37: src.cpp:18 -0x39: src.cpp:18 -0x3e: src.cpp:18 -0x3f: src.cpp:18 -0x41: src.cpp:18 -0x46: src.cpp:18 -0x47: src.cpp:18 -0x49: src.cpp:18 -0x4e: src.cpp:18 -0x4f: src.cpp:18 -0x51: src.cpp:18 -0x56: src.cpp:18 -0x57: src.cpp:18 -0x59: src.cpp:18 -0x5e: src.cpp:18 -> sum2@src.cpp:2 -0x5f: src.cpp:18 -> sum2@src.cpp:2 -0x61: src.cpp:18 -> sum2@src.cpp:2 -0x66: src.cpp:18 -> sum2@src.cpp:2 -0x67: src.cpp:18 -> sum2@src.cpp:2 -0x69: src.cpp:18 -> sum2@src.cpp:2 -0x6e: src.cpp:18 -> sum2@src.cpp:2 -0x6f: src.cpp:18 -> sum2@src.cpp:2 -0x71: src.cpp:18 -> sum2@src.cpp:2 -0x76: src.cpp:18 -> sum2@src.cpp:2 -0x77: src.cpp:18 -> sum2@src.cpp:2 -0x79: src.cpp:18 -> sum2@src.cpp:2 -0x7e: src.cpp:18 -> sum2@src.cpp:2 -0x7f: src.cpp:19 -> sum4@src.cpp:12 -0x81: src.cpp:19 -> sum4@src.cpp:12 -0x86: src.cpp:19 -> sum4@src.cpp:12 -0x87: src.cpp:19 -> sum4@src.cpp:12 -0x89: src.cpp:19 -> sum4@src.cpp:12 -0x8e: src.cpp:19 -> sum4@src.cpp:12 -> sum2@src.cpp:2 -0x8f: src.cpp:19 -> sum4@src.cpp:12 -> sum2@src.cpp:2 -0x91: src.cpp:19 -> sum4@src.cpp:12 -> sum2@src.cpp:2 -0x96: src.cpp:19 -> sum4@src.cpp:12 -> sum2@src.cpp:3 -0x97: src.cpp:19 -> sum4@src.cpp:12 -0x99: src.cpp:19 -> sum4@src.cpp:12 -0x9e: src.cpp:19 -> sum4@src.cpp:12 -0x9f: src.cpp:19 -> sum4@src.cpp:12 -0xa1: src.cpp:19 -> sum4@src.cpp:12 -0xa6: src.cpp:19 -> sum4@src.cpp:12 -> sum2@src.cpp:2 -0xa7: src.cpp:19 -> sum4@src.cpp:12 -> sum2@src.cpp:2 -0xa9: src.cpp:19 -> sum4@src.cpp:12 -> sum2@src.cpp:2 -0xae: src.cpp:19 -> sum4@src.cpp:12 -0xaf: src.cpp:19 -> sum4@src.cpp:12 -0xb1: src.cpp:19 -> sum4@src.cpp:12 -0xb6: src.cpp:19 -> sum4@src.cpp:13 -0xb7: src.cpp:19 -> sum4@src.cpp:13 -0xb9: src.cpp:19 -> sum4@src.cpp:14 -0xbe: src.cpp:19 -0xbf: src.cpp:19 -0xc1: src.cpp:19 -0xc6: src.cpp:19 -0xc7: src.cpp:19 -0xc9: src.cpp:19 -0xce: src.cpp:20 -> sum2@src.cpp:2 -0xcf: src.cpp:20 -> sum2@src.cpp:2 -0xd1: src.cpp:20 -> sum2@src.cpp:2 -0xd6: src.cpp:21 -0xd7: src.cpp:21 -0xd9: src.cpp:21 -0xde: src.cpp:21 -*/ diff --git a/gnu/llvm/lldb/unittests/Symbol/TestType.cpp b/gnu/llvm/lldb/unittests/Symbol/TestType.cpp deleted file mode 100644 index 73f5811434f..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/TestType.cpp +++ /dev/null @@ -1,94 +0,0 @@ -//===-- TestType.cpp ------------------------------------------------------===// -// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Symbol/Type.h" - -using namespace lldb; -using namespace lldb_private; - -namespace { -void TestGetTypeScopeAndBasenameHelper(const char *full_type, - bool expected_is_scoped, - const char *expected_scope, - const char *expected_name) { - llvm::StringRef scope, name; - lldb::TypeClass type_class; - bool is_scoped = - Type::GetTypeScopeAndBasename(full_type, scope, name, type_class); - EXPECT_EQ(is_scoped, expected_is_scoped); - if (expected_is_scoped) { - EXPECT_EQ(scope, expected_scope); - EXPECT_EQ(name, expected_name); - } -} -} - -TEST(Type, GetTypeScopeAndBasename) { - TestGetTypeScopeAndBasenameHelper("int", false, "", ""); - TestGetTypeScopeAndBasenameHelper("std::string", true, "std::", "string"); - TestGetTypeScopeAndBasenameHelper("std::set", true, "std::", "set"); - TestGetTypeScopeAndBasenameHelper("std::set>", true, - "std::", "set>"); - TestGetTypeScopeAndBasenameHelper("std::string::iterator", true, - "std::string::", "iterator"); - TestGetTypeScopeAndBasenameHelper("std::set::iterator", true, - "std::set::", "iterator"); - TestGetTypeScopeAndBasenameHelper( - "std::set>::iterator", true, - "std::set>::", "iterator"); - TestGetTypeScopeAndBasenameHelper( - "std::set>::iterator", true, - "std::set>::", "iterator"); -} - -TEST(Type, CompilerContextPattern) { - std::vector mms = { - {CompilerContextKind::Module, ConstString("A")}, - {CompilerContextKind::Module, ConstString("B")}, - {CompilerContextKind::Struct, ConstString("S")}}; - EXPECT_TRUE(contextMatches(mms, mms)); - std::vector mmc = { - {CompilerContextKind::Module, ConstString("A")}, - {CompilerContextKind::Module, ConstString("B")}, - {CompilerContextKind::Class, ConstString("S")}}; - EXPECT_FALSE(contextMatches(mms, mmc)); - std::vector ms = { - {CompilerContextKind::Module, ConstString("A")}, - {CompilerContextKind::Struct, ConstString("S")}}; - std::vector mas = { - {CompilerContextKind::Module, ConstString("A")}, - {CompilerContextKind::AnyModule, ConstString("*")}, - {CompilerContextKind::Struct, ConstString("S")}}; - EXPECT_TRUE(contextMatches(mms, mas)); - EXPECT_TRUE(contextMatches(ms, mas)); - EXPECT_FALSE(contextMatches(mas, ms)); - std::vector mmms = { - {CompilerContextKind::Module, ConstString("A")}, - {CompilerContextKind::Module, ConstString("B")}, - {CompilerContextKind::Module, ConstString("C")}, - {CompilerContextKind::Struct, ConstString("S")}}; - EXPECT_TRUE(contextMatches(mmms, mas)); - std::vector mme = { - {CompilerContextKind::Module, ConstString("A")}, - {CompilerContextKind::Module, ConstString("B")}, - {CompilerContextKind::Enum, ConstString("S")}}; - std::vector mma = { - {CompilerContextKind::Module, ConstString("A")}, - {CompilerContextKind::Module, ConstString("B")}, - {CompilerContextKind::AnyType, ConstString("S")}}; - EXPECT_TRUE(contextMatches(mme, mma)); - EXPECT_TRUE(contextMatches(mms, mma)); - std::vector mme2 = { - {CompilerContextKind::Module, ConstString("A")}, - {CompilerContextKind::Module, ConstString("B")}, - {CompilerContextKind::Enum, ConstString("S2")}}; - EXPECT_FALSE(contextMatches(mme2, mma)); -} diff --git a/gnu/llvm/lldb/unittests/Symbol/TestTypeSystem.cpp b/gnu/llvm/lldb/unittests/Symbol/TestTypeSystem.cpp deleted file mode 100644 index 59297a7475d..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/TestTypeSystem.cpp +++ /dev/null @@ -1,92 +0,0 @@ -//===-- TestTypeSystem.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestingSupport/SubsystemRAII.h" -#include "lldb/Core/Module.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Symbol/TypeSystem.h" -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -class TestTypeSystemMap : public testing::Test { -public: - SubsystemRAII subsystems; -}; - -TEST_F(TestTypeSystemMap, GetTypeSystemForLanguageWithInvalidModule) { - // GetTypeSystemForLanguage called with an invalid Module. - TypeSystemMap map; - Module module{ModuleSpec()}; - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeUnknown, &module, - /*can_create=*/true), - llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); - - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeUnknown, &module, - /*can_create=*/false), - llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); - - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeC, &module, - /*can_create=*/true), - llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeC, &module, - /*can_create=*/false), - llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); -} - -TEST_F(TestTypeSystemMap, GetTypeSystemForLanguageWithNoModule) { - // GetTypeSystemForLanguage called with no Module. - TypeSystemMap map; - Module *module = nullptr; - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeUnknown, module, - /*can_create=*/true), - llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); - - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeUnknown, module, - /*can_create=*/false), - llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); - - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeC, module, /*can_create=*/true), - llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeC, module, - /*can_create=*/false), - llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); -} - -TEST_F(TestTypeSystemMap, GetTypeSystemForLanguageWithNoTarget) { - // GetTypeSystemForLanguage called with no Target. - TypeSystemMap map; - Target *target = nullptr; - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeUnknown, target, - /*can_create=*/true), - llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); - - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeUnknown, target, - /*can_create=*/false), - llvm::FailedWithMessage("TypeSystem for language unknown doesn't exist")); - - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeC, target, /*can_create=*/true), - llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); - EXPECT_THAT_EXPECTED( - map.GetTypeSystemForLanguage(eLanguageTypeC, target, - /*can_create=*/false), - llvm::FailedWithMessage("TypeSystem for language c doesn't exist")); -} diff --git a/gnu/llvm/lldb/unittests/Symbol/TestTypeSystemClang.cpp b/gnu/llvm/lldb/unittests/Symbol/TestTypeSystemClang.cpp deleted file mode 100644 index 10f59147dd1..00000000000 --- a/gnu/llvm/lldb/unittests/Symbol/TestTypeSystemClang.cpp +++ /dev/null @@ -1,936 +0,0 @@ -//===-- TestTypeSystemClang.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/ExpressionParser/Clang/ClangUtil.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/Symbol/ClangTestUtils.h" -#include "lldb/Core/Declaration.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "clang/AST/DeclCXX.h" -#include "clang/AST/DeclObjC.h" -#include "clang/AST/ExprCXX.h" -#include "gtest/gtest.h" - -using namespace clang; -using namespace lldb; -using namespace lldb_private; - -class TestTypeSystemClang : public testing::Test { -public: - SubsystemRAII subsystems; - - void SetUp() override { - m_ast.reset( - new TypeSystemClang("test ASTContext", HostInfo::GetTargetTriple())); - } - - void TearDown() override { m_ast.reset(); } - -protected: - std::unique_ptr m_ast; - - QualType GetBasicQualType(BasicType type) const { - return ClangUtil::GetQualType(m_ast->GetBasicTypeFromAST(type)); - } - - QualType GetBasicQualType(const char *name) const { - return ClangUtil::GetQualType( - m_ast->GetBuiltinTypeByName(ConstString(name))); - } -}; - -TEST_F(TestTypeSystemClang, TestGetBasicTypeFromEnum) { - clang::ASTContext &context = m_ast->getASTContext(); - - EXPECT_TRUE( - context.hasSameType(GetBasicQualType(eBasicTypeBool), context.BoolTy)); - EXPECT_TRUE( - context.hasSameType(GetBasicQualType(eBasicTypeChar), context.CharTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeChar16), - context.Char16Ty)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeChar32), - context.Char32Ty)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeDouble), - context.DoubleTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeDoubleComplex), - context.DoubleComplexTy)); - EXPECT_TRUE( - context.hasSameType(GetBasicQualType(eBasicTypeFloat), context.FloatTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeFloatComplex), - context.FloatComplexTy)); - EXPECT_TRUE( - context.hasSameType(GetBasicQualType(eBasicTypeHalf), context.HalfTy)); - EXPECT_TRUE( - context.hasSameType(GetBasicQualType(eBasicTypeInt), context.IntTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeInt128), - context.Int128Ty)); - EXPECT_TRUE( - context.hasSameType(GetBasicQualType(eBasicTypeLong), context.LongTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeLongDouble), - context.LongDoubleTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeLongDoubleComplex), - context.LongDoubleComplexTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeLongLong), - context.LongLongTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeNullPtr), - context.NullPtrTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeObjCClass), - context.getObjCClassType())); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeObjCID), - context.getObjCIdType())); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeObjCSel), - context.getObjCSelType())); - EXPECT_TRUE( - context.hasSameType(GetBasicQualType(eBasicTypeShort), context.ShortTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeSignedChar), - context.SignedCharTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeUnsignedChar), - context.UnsignedCharTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeUnsignedInt), - context.UnsignedIntTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeUnsignedInt128), - context.UnsignedInt128Ty)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeUnsignedLong), - context.UnsignedLongTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeUnsignedLongLong), - context.UnsignedLongLongTy)); - EXPECT_TRUE(context.hasSameType(GetBasicQualType(eBasicTypeUnsignedShort), - context.UnsignedShortTy)); - EXPECT_TRUE( - context.hasSameType(GetBasicQualType(eBasicTypeVoid), context.VoidTy)); - EXPECT_TRUE( - context.hasSameType(GetBasicQualType(eBasicTypeWChar), context.WCharTy)); -} - -TEST_F(TestTypeSystemClang, TestGetBasicTypeFromName) { - EXPECT_EQ(GetBasicQualType(eBasicTypeChar), GetBasicQualType("char")); - EXPECT_EQ(GetBasicQualType(eBasicTypeSignedChar), - GetBasicQualType("signed char")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedChar), - GetBasicQualType("unsigned char")); - EXPECT_EQ(GetBasicQualType(eBasicTypeWChar), GetBasicQualType("wchar_t")); - EXPECT_EQ(GetBasicQualType(eBasicTypeSignedWChar), - GetBasicQualType("signed wchar_t")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedWChar), - GetBasicQualType("unsigned wchar_t")); - EXPECT_EQ(GetBasicQualType(eBasicTypeShort), GetBasicQualType("short")); - EXPECT_EQ(GetBasicQualType(eBasicTypeShort), GetBasicQualType("short int")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedShort), - GetBasicQualType("unsigned short")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedShort), - GetBasicQualType("unsigned short int")); - EXPECT_EQ(GetBasicQualType(eBasicTypeInt), GetBasicQualType("int")); - EXPECT_EQ(GetBasicQualType(eBasicTypeInt), GetBasicQualType("signed int")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedInt), - GetBasicQualType("unsigned int")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedInt), - GetBasicQualType("unsigned")); - EXPECT_EQ(GetBasicQualType(eBasicTypeLong), GetBasicQualType("long")); - EXPECT_EQ(GetBasicQualType(eBasicTypeLong), GetBasicQualType("long int")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedLong), - GetBasicQualType("unsigned long")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedLong), - GetBasicQualType("unsigned long int")); - EXPECT_EQ(GetBasicQualType(eBasicTypeLongLong), - GetBasicQualType("long long")); - EXPECT_EQ(GetBasicQualType(eBasicTypeLongLong), - GetBasicQualType("long long int")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedLongLong), - GetBasicQualType("unsigned long long")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedLongLong), - GetBasicQualType("unsigned long long int")); - EXPECT_EQ(GetBasicQualType(eBasicTypeInt128), GetBasicQualType("__int128_t")); - EXPECT_EQ(GetBasicQualType(eBasicTypeUnsignedInt128), - GetBasicQualType("__uint128_t")); - EXPECT_EQ(GetBasicQualType(eBasicTypeVoid), GetBasicQualType("void")); - EXPECT_EQ(GetBasicQualType(eBasicTypeBool), GetBasicQualType("bool")); - EXPECT_EQ(GetBasicQualType(eBasicTypeFloat), GetBasicQualType("float")); - EXPECT_EQ(GetBasicQualType(eBasicTypeDouble), GetBasicQualType("double")); - EXPECT_EQ(GetBasicQualType(eBasicTypeLongDouble), - GetBasicQualType("long double")); - EXPECT_EQ(GetBasicQualType(eBasicTypeObjCID), GetBasicQualType("id")); - EXPECT_EQ(GetBasicQualType(eBasicTypeObjCSel), GetBasicQualType("SEL")); - EXPECT_EQ(GetBasicQualType(eBasicTypeNullPtr), GetBasicQualType("nullptr")); -} - -void VerifyEncodingAndBitSize(TypeSystemClang &clang_context, - lldb::Encoding encoding, unsigned int bit_size) { - clang::ASTContext &context = clang_context.getASTContext(); - - CompilerType type = - clang_context.GetBuiltinTypeForEncodingAndBitSize(encoding, bit_size); - EXPECT_TRUE(type.IsValid()); - - QualType qtype = ClangUtil::GetQualType(type); - EXPECT_FALSE(qtype.isNull()); - if (qtype.isNull()) - return; - - uint64_t actual_size = context.getTypeSize(qtype); - EXPECT_EQ(bit_size, actual_size); - - const clang::Type *type_ptr = qtype.getTypePtr(); - EXPECT_NE(nullptr, type_ptr); - if (!type_ptr) - return; - - EXPECT_TRUE(type_ptr->isBuiltinType()); - switch (encoding) { - case eEncodingSint: - EXPECT_TRUE(type_ptr->isSignedIntegerType()); - break; - case eEncodingUint: - EXPECT_TRUE(type_ptr->isUnsignedIntegerType()); - break; - case eEncodingIEEE754: - EXPECT_TRUE(type_ptr->isFloatingType()); - break; - default: - FAIL() << "Unexpected encoding"; - break; - } -} - -TEST_F(TestTypeSystemClang, TestBuiltinTypeForEncodingAndBitSize) { - // Make sure we can get types of every possible size in every possible - // encoding. - // We can't make any guarantee about which specific type we get, because the - // standard - // isn't that specific. We only need to make sure the compiler hands us some - // type that - // is both a builtin type and matches the requested bit size. - VerifyEncodingAndBitSize(*m_ast, eEncodingSint, 8); - VerifyEncodingAndBitSize(*m_ast, eEncodingSint, 16); - VerifyEncodingAndBitSize(*m_ast, eEncodingSint, 32); - VerifyEncodingAndBitSize(*m_ast, eEncodingSint, 64); - VerifyEncodingAndBitSize(*m_ast, eEncodingSint, 128); - - VerifyEncodingAndBitSize(*m_ast, eEncodingUint, 8); - VerifyEncodingAndBitSize(*m_ast, eEncodingUint, 16); - VerifyEncodingAndBitSize(*m_ast, eEncodingUint, 32); - VerifyEncodingAndBitSize(*m_ast, eEncodingUint, 64); - VerifyEncodingAndBitSize(*m_ast, eEncodingUint, 128); - - VerifyEncodingAndBitSize(*m_ast, eEncodingIEEE754, 32); - VerifyEncodingAndBitSize(*m_ast, eEncodingIEEE754, 64); -} - -TEST_F(TestTypeSystemClang, TestDisplayName) { - TypeSystemClang ast("some name", llvm::Triple()); - EXPECT_EQ("some name", ast.getDisplayName()); -} - -TEST_F(TestTypeSystemClang, TestDisplayNameEmpty) { - TypeSystemClang ast("", llvm::Triple()); - EXPECT_EQ("", ast.getDisplayName()); -} - -TEST_F(TestTypeSystemClang, TestGetEnumIntegerTypeInvalid) { - EXPECT_FALSE(m_ast->GetEnumerationIntegerType(CompilerType()).IsValid()); -} - -TEST_F(TestTypeSystemClang, TestGetEnumIntegerTypeUnexpectedType) { - CompilerType int_type = m_ast->GetBasicType(lldb::eBasicTypeInt); - CompilerType t = m_ast->GetEnumerationIntegerType(int_type); - EXPECT_FALSE(t.IsValid()); -} - -TEST_F(TestTypeSystemClang, TestGetEnumIntegerTypeBasicTypes) { - // All possible underlying integer types of enums. - const std::vector types_to_test = { - eBasicTypeInt, eBasicTypeUnsignedInt, eBasicTypeLong, - eBasicTypeUnsignedLong, eBasicTypeLongLong, eBasicTypeUnsignedLongLong, - }; - - for (bool scoped : {true, false}) { - SCOPED_TRACE("scoped: " + std::to_string(scoped)); - for (lldb::BasicType basic_type : types_to_test) { - SCOPED_TRACE(std::to_string(basic_type)); - - TypeSystemClang ast("enum_ast", HostInfo::GetTargetTriple()); - CompilerType basic_compiler_type = ast.GetBasicType(basic_type); - EXPECT_TRUE(basic_compiler_type.IsValid()); - - CompilerType enum_type = ast.CreateEnumerationType( - "my_enum", ast.GetTranslationUnitDecl(), OptionalClangModuleID(), - Declaration(), basic_compiler_type, scoped); - - CompilerType t = ast.GetEnumerationIntegerType(enum_type); - // Check that the type we put in at the start is found again. - EXPECT_EQ(basic_compiler_type.GetTypeName(), t.GetTypeName()); - } - } -} - -TEST_F(TestTypeSystemClang, TestOwningModule) { - TypeSystemClang ast("module_ast", HostInfo::GetTargetTriple()); - CompilerType basic_compiler_type = ast.GetBasicType(BasicType::eBasicTypeInt); - CompilerType enum_type = ast.CreateEnumerationType( - "my_enum", ast.GetTranslationUnitDecl(), OptionalClangModuleID(100), - Declaration(), basic_compiler_type, false); - auto *ed = TypeSystemClang::GetAsEnumDecl(enum_type); - EXPECT_FALSE(!ed); - EXPECT_EQ(ed->getOwningModuleID(), 100u); - - CompilerType record_type = ast.CreateRecordType( - nullptr, OptionalClangModuleID(200), lldb::eAccessPublic, "FooRecord", - clang::TTK_Struct, lldb::eLanguageTypeC_plus_plus, nullptr); - auto *rd = TypeSystemClang::GetAsRecordDecl(record_type); - EXPECT_FALSE(!rd); - EXPECT_EQ(rd->getOwningModuleID(), 200u); - - CompilerType class_type = - ast.CreateObjCClass("objc_class", ast.GetTranslationUnitDecl(), - OptionalClangModuleID(300), false, false); - auto *cd = TypeSystemClang::GetAsObjCInterfaceDecl(class_type); - EXPECT_FALSE(!cd); - EXPECT_EQ(cd->getOwningModuleID(), 300u); -} - -TEST_F(TestTypeSystemClang, TestIsClangType) { - clang::ASTContext &context = m_ast->getASTContext(); - lldb::opaque_compiler_type_t bool_ctype = - TypeSystemClang::GetOpaqueCompilerType(&context, lldb::eBasicTypeBool); - CompilerType bool_type(m_ast.get(), bool_ctype); - CompilerType record_type = m_ast->CreateRecordType( - nullptr, OptionalClangModuleID(100), lldb::eAccessPublic, "FooRecord", - clang::TTK_Struct, lldb::eLanguageTypeC_plus_plus, nullptr); - // Clang builtin type and record type should pass - EXPECT_TRUE(ClangUtil::IsClangType(bool_type)); - EXPECT_TRUE(ClangUtil::IsClangType(record_type)); - - // Default constructed type should fail - EXPECT_FALSE(ClangUtil::IsClangType(CompilerType())); -} - -TEST_F(TestTypeSystemClang, TestRemoveFastQualifiers) { - CompilerType record_type = m_ast->CreateRecordType( - nullptr, OptionalClangModuleID(), lldb::eAccessPublic, "FooRecord", - clang::TTK_Struct, lldb::eLanguageTypeC_plus_plus, nullptr); - QualType qt; - - qt = ClangUtil::GetQualType(record_type); - EXPECT_EQ(0u, qt.getLocalFastQualifiers()); - record_type = record_type.AddConstModifier(); - record_type = record_type.AddVolatileModifier(); - record_type = record_type.AddRestrictModifier(); - qt = ClangUtil::GetQualType(record_type); - EXPECT_NE(0u, qt.getLocalFastQualifiers()); - record_type = ClangUtil::RemoveFastQualifiers(record_type); - qt = ClangUtil::GetQualType(record_type); - EXPECT_EQ(0u, qt.getLocalFastQualifiers()); -} - -TEST_F(TestTypeSystemClang, TestConvertAccessTypeToAccessSpecifier) { - EXPECT_EQ(AS_none, - TypeSystemClang::ConvertAccessTypeToAccessSpecifier(eAccessNone)); - EXPECT_EQ(AS_none, TypeSystemClang::ConvertAccessTypeToAccessSpecifier( - eAccessPackage)); - EXPECT_EQ(AS_public, - TypeSystemClang::ConvertAccessTypeToAccessSpecifier(eAccessPublic)); - EXPECT_EQ(AS_private, TypeSystemClang::ConvertAccessTypeToAccessSpecifier( - eAccessPrivate)); - EXPECT_EQ(AS_protected, TypeSystemClang::ConvertAccessTypeToAccessSpecifier( - eAccessProtected)); -} - -TEST_F(TestTypeSystemClang, TestUnifyAccessSpecifiers) { - // Unifying two of the same type should return the same type - EXPECT_EQ(AS_public, - TypeSystemClang::UnifyAccessSpecifiers(AS_public, AS_public)); - EXPECT_EQ(AS_private, - TypeSystemClang::UnifyAccessSpecifiers(AS_private, AS_private)); - EXPECT_EQ(AS_protected, - TypeSystemClang::UnifyAccessSpecifiers(AS_protected, AS_protected)); - - // Otherwise the result should be the strictest of the two. - EXPECT_EQ(AS_private, - TypeSystemClang::UnifyAccessSpecifiers(AS_private, AS_public)); - EXPECT_EQ(AS_private, - TypeSystemClang::UnifyAccessSpecifiers(AS_private, AS_protected)); - EXPECT_EQ(AS_private, - TypeSystemClang::UnifyAccessSpecifiers(AS_public, AS_private)); - EXPECT_EQ(AS_private, - TypeSystemClang::UnifyAccessSpecifiers(AS_protected, AS_private)); - EXPECT_EQ(AS_protected, - TypeSystemClang::UnifyAccessSpecifiers(AS_protected, AS_public)); - EXPECT_EQ(AS_protected, - TypeSystemClang::UnifyAccessSpecifiers(AS_public, AS_protected)); - - // None is stricter than everything (by convention) - EXPECT_EQ(AS_none, - TypeSystemClang::UnifyAccessSpecifiers(AS_none, AS_public)); - EXPECT_EQ(AS_none, - TypeSystemClang::UnifyAccessSpecifiers(AS_none, AS_protected)); - EXPECT_EQ(AS_none, - TypeSystemClang::UnifyAccessSpecifiers(AS_none, AS_private)); - EXPECT_EQ(AS_none, - TypeSystemClang::UnifyAccessSpecifiers(AS_public, AS_none)); - EXPECT_EQ(AS_none, - TypeSystemClang::UnifyAccessSpecifiers(AS_protected, AS_none)); - EXPECT_EQ(AS_none, - TypeSystemClang::UnifyAccessSpecifiers(AS_private, AS_none)); -} - -TEST_F(TestTypeSystemClang, TestRecordHasFields) { - CompilerType int_type = m_ast->GetBasicType(eBasicTypeInt); - - // Test that a record with no fields returns false - CompilerType empty_base = m_ast->CreateRecordType( - nullptr, OptionalClangModuleID(), lldb::eAccessPublic, "EmptyBase", - clang::TTK_Struct, lldb::eLanguageTypeC_plus_plus, nullptr); - TypeSystemClang::StartTagDeclarationDefinition(empty_base); - TypeSystemClang::CompleteTagDeclarationDefinition(empty_base); - - RecordDecl *empty_base_decl = TypeSystemClang::GetAsRecordDecl(empty_base); - EXPECT_NE(nullptr, empty_base_decl); - EXPECT_FALSE(TypeSystemClang::RecordHasFields(empty_base_decl)); - - // Test that a record with direct fields returns true - CompilerType non_empty_base = m_ast->CreateRecordType( - nullptr, OptionalClangModuleID(), lldb::eAccessPublic, "NonEmptyBase", - clang::TTK_Struct, lldb::eLanguageTypeC_plus_plus, nullptr); - TypeSystemClang::StartTagDeclarationDefinition(non_empty_base); - FieldDecl *non_empty_base_field_decl = m_ast->AddFieldToRecordType( - non_empty_base, "MyField", int_type, eAccessPublic, 0); - TypeSystemClang::CompleteTagDeclarationDefinition(non_empty_base); - RecordDecl *non_empty_base_decl = - TypeSystemClang::GetAsRecordDecl(non_empty_base); - EXPECT_NE(nullptr, non_empty_base_decl); - EXPECT_NE(nullptr, non_empty_base_field_decl); - EXPECT_TRUE(TypeSystemClang::RecordHasFields(non_empty_base_decl)); - - std::vector> bases; - - // Test that a record with no direct fields, but fields in a base returns true - CompilerType empty_derived = m_ast->CreateRecordType( - nullptr, OptionalClangModuleID(), lldb::eAccessPublic, "EmptyDerived", - clang::TTK_Struct, lldb::eLanguageTypeC_plus_plus, nullptr); - TypeSystemClang::StartTagDeclarationDefinition(empty_derived); - std::unique_ptr non_empty_base_spec = - m_ast->CreateBaseClassSpecifier(non_empty_base.GetOpaqueQualType(), - lldb::eAccessPublic, false, false); - bases.push_back(std::move(non_empty_base_spec)); - bool result = m_ast->TransferBaseClasses(empty_derived.GetOpaqueQualType(), - std::move(bases)); - TypeSystemClang::CompleteTagDeclarationDefinition(empty_derived); - EXPECT_TRUE(result); - CXXRecordDecl *empty_derived_non_empty_base_cxx_decl = - m_ast->GetAsCXXRecordDecl(empty_derived.GetOpaqueQualType()); - RecordDecl *empty_derived_non_empty_base_decl = - TypeSystemClang::GetAsRecordDecl(empty_derived); - EXPECT_EQ(1u, TypeSystemClang::GetNumBaseClasses( - empty_derived_non_empty_base_cxx_decl, false)); - EXPECT_TRUE( - TypeSystemClang::RecordHasFields(empty_derived_non_empty_base_decl)); - - // Test that a record with no direct fields, but fields in a virtual base - // returns true - CompilerType empty_derived2 = m_ast->CreateRecordType( - nullptr, OptionalClangModuleID(), lldb::eAccessPublic, "EmptyDerived2", - clang::TTK_Struct, lldb::eLanguageTypeC_plus_plus, nullptr); - TypeSystemClang::StartTagDeclarationDefinition(empty_derived2); - std::unique_ptr non_empty_vbase_spec = - m_ast->CreateBaseClassSpecifier(non_empty_base.GetOpaqueQualType(), - lldb::eAccessPublic, true, false); - bases.push_back(std::move(non_empty_vbase_spec)); - result = m_ast->TransferBaseClasses(empty_derived2.GetOpaqueQualType(), - std::move(bases)); - TypeSystemClang::CompleteTagDeclarationDefinition(empty_derived2); - EXPECT_TRUE(result); - CXXRecordDecl *empty_derived_non_empty_vbase_cxx_decl = - m_ast->GetAsCXXRecordDecl(empty_derived2.GetOpaqueQualType()); - RecordDecl *empty_derived_non_empty_vbase_decl = - TypeSystemClang::GetAsRecordDecl(empty_derived2); - EXPECT_EQ(1u, TypeSystemClang::GetNumBaseClasses( - empty_derived_non_empty_vbase_cxx_decl, false)); - EXPECT_TRUE( - TypeSystemClang::RecordHasFields(empty_derived_non_empty_vbase_decl)); -} - -TEST_F(TestTypeSystemClang, TemplateArguments) { - TypeSystemClang::TemplateParameterInfos infos; - infos.names.push_back("T"); - infos.args.push_back(TemplateArgument(m_ast->getASTContext().IntTy)); - infos.names.push_back("I"); - llvm::APSInt arg(llvm::APInt(8, 47)); - infos.args.push_back(TemplateArgument(m_ast->getASTContext(), arg, - m_ast->getASTContext().IntTy)); - - // template struct foo; - ClassTemplateDecl *decl = m_ast->CreateClassTemplateDecl( - m_ast->GetTranslationUnitDecl(), OptionalClangModuleID(), eAccessPublic, - "foo", TTK_Struct, infos); - ASSERT_NE(decl, nullptr); - - // foo - ClassTemplateSpecializationDecl *spec_decl = - m_ast->CreateClassTemplateSpecializationDecl( - m_ast->GetTranslationUnitDecl(), OptionalClangModuleID(), decl, - TTK_Struct, infos); - ASSERT_NE(spec_decl, nullptr); - CompilerType type = m_ast->CreateClassTemplateSpecializationType(spec_decl); - ASSERT_TRUE(type); - m_ast->StartTagDeclarationDefinition(type); - m_ast->CompleteTagDeclarationDefinition(type); - - // typedef foo foo_def; - CompilerType typedef_type = type.CreateTypedef( - "foo_def", m_ast->CreateDeclContext(m_ast->GetTranslationUnitDecl()), 0); - - CompilerType auto_type( - m_ast.get(), - m_ast->getASTContext() - .getAutoType(ClangUtil::GetCanonicalQualType(typedef_type), - clang::AutoTypeKeyword::Auto, false) - .getAsOpaquePtr()); - - CompilerType int_type(m_ast.get(), - m_ast->getASTContext().IntTy.getAsOpaquePtr()); - for (CompilerType t : {type, typedef_type, auto_type}) { - SCOPED_TRACE(t.GetTypeName().AsCString()); - - EXPECT_EQ(m_ast->GetTemplateArgumentKind(t.GetOpaqueQualType(), 0), - eTemplateArgumentKindType); - EXPECT_EQ(m_ast->GetTypeTemplateArgument(t.GetOpaqueQualType(), 0), - int_type); - EXPECT_EQ(llvm::None, - m_ast->GetIntegralTemplateArgument(t.GetOpaqueQualType(), 0)); - - EXPECT_EQ(m_ast->GetTemplateArgumentKind(t.GetOpaqueQualType(), 1), - eTemplateArgumentKindIntegral); - EXPECT_EQ(m_ast->GetTypeTemplateArgument(t.GetOpaqueQualType(), 1), - CompilerType()); - auto result = m_ast->GetIntegralTemplateArgument(t.GetOpaqueQualType(), 1); - ASSERT_NE(llvm::None, result); - EXPECT_EQ(arg, result->value); - EXPECT_EQ(int_type, result->type); - } -} - -class TestCreateClassTemplateDecl : public TestTypeSystemClang { -protected: - /// The class templates created so far by the Expect* functions below. - llvm::DenseSet m_created_templates; - - /// Utility function for creating a class template. - ClassTemplateDecl * - CreateClassTemplate(const TypeSystemClang::TemplateParameterInfos &infos) { - ClassTemplateDecl *decl = m_ast->CreateClassTemplateDecl( - m_ast->GetTranslationUnitDecl(), OptionalClangModuleID(), eAccessPublic, - "foo", TTK_Struct, infos); - return decl; - } - - /// Creates a new class template with the given template parameters. - /// Asserts that a new ClassTemplateDecl is created. - /// \param description The gtest scope string that should describe the input. - /// \param infos The template parameters that the class template should have. - /// \returns The created ClassTemplateDecl. - ClassTemplateDecl * - ExpectNewTemplate(std::string description, - const TypeSystemClang::TemplateParameterInfos &infos) { - SCOPED_TRACE(description); - ClassTemplateDecl *first_template = CreateClassTemplate(infos); - // A new template should have been created. - EXPECT_FALSE(m_created_templates.contains(first_template)) - << "Didn't create new class template but reused this existing decl:\n" - << ClangUtil::DumpDecl(first_template); - m_created_templates.insert(first_template); - - // Creating a new template with the same arguments should always return - // the template created above. - ClassTemplateDecl *second_template = CreateClassTemplate(infos); - EXPECT_EQ(first_template, second_template) - << "Second attempt to create class template didn't reuse first decl:\n" - << ClangUtil::DumpDecl(first_template) << "\nInstead created/reused:\n" - << ClangUtil::DumpDecl(second_template); - return first_template; - } - - /// Tries to create a new class template but asserts that an existing class - /// template in the current AST is reused (in contract so a new class - /// template being created). - /// \param description The gtest scope string that should describe the input. - /// \param infos The template parameters that the class template should have. - void - ExpectReusedTemplate(std::string description, - const TypeSystemClang::TemplateParameterInfos &infos, - ClassTemplateDecl *expected) { - SCOPED_TRACE(description); - ClassTemplateDecl *td = CreateClassTemplate(infos); - EXPECT_EQ(td, expected) - << "Created/reused class template is:\n" - << ClangUtil::DumpDecl(td) << "\nExpected to reuse:\n" - << ClangUtil::DumpDecl(expected); - } -}; - -TEST_F(TestCreateClassTemplateDecl, FindExistingTemplates) { - // This tests the logic in TypeSystemClang::CreateClassTemplateDecl that - // decides whether an existing ClassTemplateDecl in the AST can be reused. - // The behaviour should follow the C++ rules for redeclaring templates - // (e.g., parameter names can be changed/omitted.) - - // This describes a class template *instantiation* from which we will infer - // the structure of the class template. - TypeSystemClang::TemplateParameterInfos infos; - - // Test an empty template parameter list: <> - ExpectNewTemplate("<>", infos); - - // Test that with T = int creates a new template. - infos.names = {"T"}; - infos.args = {TemplateArgument(m_ast->getASTContext().IntTy)}; - ClassTemplateDecl *single_type_arg = ExpectNewTemplate("", infos); - - // Test that changing the parameter name doesn't create a new class template. - infos.names = {"A"}; - ExpectReusedTemplate(" (A = int)", infos, single_type_arg); - - // Test that changing the used type doesn't create a new class template. - infos.args = {TemplateArgument(m_ast->getASTContext().FloatTy)}; - ExpectReusedTemplate(" (A = float)", infos, single_type_arg); - - // Test that creates a new template with A = int - // and I = 47; - infos.names.push_back("I"); - infos.args.push_back(TemplateArgument(m_ast->getASTContext(), - llvm::APSInt(llvm::APInt(8, 47)), - m_ast->getASTContext().SignedCharTy)); - ClassTemplateDecl *type_and_char_value = - ExpectNewTemplate(" (I = 47)", infos); - - // Change the value of the I parameter to 123. The previously created - // class template should still be reused. - infos.args.pop_back(); - infos.args.push_back(TemplateArgument(m_ast->getASTContext(), - llvm::APSInt(llvm::APInt(8, 123)), - m_ast->getASTContext().SignedCharTy)); - ExpectReusedTemplate(" (I = 123)", infos, - type_and_char_value); - - // Change the type of the I parameter to int so we have . - // The class template from above can't be reused. - infos.args.pop_back(); - infos.args.push_back(TemplateArgument(m_ast->getASTContext(), - llvm::APSInt(llvm::APInt(32, 47)), - m_ast->getASTContext().IntTy)); - ExpectNewTemplate(" (I = 123)", infos); - - // Test a second type parameter will also cause a new template to be created. - // We now have . - infos.names.push_back("B"); - infos.args.push_back(TemplateArgument(m_ast->getASTContext().IntTy)); - ClassTemplateDecl *type_and_char_value_and_type = - ExpectNewTemplate("", infos); - - // Remove all the names from the parameters which shouldn't influence the - // way the templates get merged. - infos.names = {"", "", ""}; - ExpectReusedTemplate("", infos, - type_and_char_value_and_type); -} - -TEST_F(TestCreateClassTemplateDecl, FindExistingTemplatesWithParameterPack) { - // The same as FindExistingTemplates but for templates with parameter packs. - - TypeSystemClang::TemplateParameterInfos infos; - infos.packed_args = - std::make_unique(); - infos.packed_args->names = {"", ""}; - infos.packed_args->args = {TemplateArgument(m_ast->getASTContext().IntTy), - TemplateArgument(m_ast->getASTContext().IntTy)}; - ClassTemplateDecl *type_pack = - ExpectNewTemplate(" (int, int)", infos); - - // Special case: An instantiation for a parameter pack with no values fits - // to whatever class template we find. There isn't enough information to - // do an actual comparison here. - infos.packed_args = - std::make_unique(); - ExpectReusedTemplate("<...> (no values in pack)", infos, type_pack); - - // Change the type content of pack type values. - infos.packed_args->names = {"", ""}; - infos.packed_args->args = {TemplateArgument(m_ast->getASTContext().IntTy), - TemplateArgument(m_ast->getASTContext().LongTy)}; - ExpectReusedTemplate(" (int, long)", infos, type_pack); - - // Change the number of pack values. - infos.packed_args->args = {TemplateArgument(m_ast->getASTContext().IntTy)}; - ExpectReusedTemplate(" (int)", infos, type_pack); - - // The names of the pack values shouldn't matter. - infos.packed_args->names = {"A", "B"}; - ExpectReusedTemplate(" (int)", infos, type_pack); - - // Changing the kind of template argument will create a new template. - infos.packed_args->args = {TemplateArgument(m_ast->getASTContext(), - llvm::APSInt(llvm::APInt(32, 1)), - m_ast->getASTContext().IntTy)}; - ClassTemplateDecl *int_pack = ExpectNewTemplate(" (int = 1)", infos); - - // Changing the value of integral parameters will not create a new template. - infos.packed_args->args = {TemplateArgument( - m_ast->getASTContext(), llvm::APSInt(llvm::APInt(32, 123)), - m_ast->getASTContext().IntTy)}; - ExpectReusedTemplate(" (int = 123)", infos, int_pack); - - // Changing the integral type will create a new template. - infos.packed_args->args = {TemplateArgument(m_ast->getASTContext(), - llvm::APSInt(llvm::APInt(64, 1)), - m_ast->getASTContext().LongTy)}; - ExpectNewTemplate(" (long = 1)", infos); - - // Prependinding a non-pack parameter will create a new template. - infos.names = {"T"}; - infos.args = {TemplateArgument(m_ast->getASTContext().IntTy)}; - ExpectNewTemplate(" (T = int, long = 1)", infos); -} - -TEST_F(TestTypeSystemClang, OnlyPackName) { - TypeSystemClang::TemplateParameterInfos infos; - infos.pack_name = "A"; - EXPECT_FALSE(infos.IsValid()); -} - -static QualType makeConstInt(clang::ASTContext &ctxt) { - QualType result(ctxt.IntTy); - result.addConst(); - return result; -} - -TEST_F(TestTypeSystemClang, TestGetTypeClassDeclType) { - clang::ASTContext &ctxt = m_ast->getASTContext(); - auto *nullptr_expr = new (ctxt) CXXNullPtrLiteralExpr(ctxt.NullPtrTy, SourceLocation()); - QualType t = ctxt.getDecltypeType(nullptr_expr, makeConstInt(ctxt)); - EXPECT_EQ(lldb::eTypeClassBuiltin, m_ast->GetTypeClass(t.getAsOpaquePtr())); -} - -TEST_F(TestTypeSystemClang, TestGetTypeClassTypeOf) { - clang::ASTContext &ctxt = m_ast->getASTContext(); - QualType t = ctxt.getTypeOfType(makeConstInt(ctxt)); - EXPECT_EQ(lldb::eTypeClassBuiltin, m_ast->GetTypeClass(t.getAsOpaquePtr())); -} - -TEST_F(TestTypeSystemClang, TestGetTypeClassTypeOfExpr) { - clang::ASTContext &ctxt = m_ast->getASTContext(); - auto *nullptr_expr = new (ctxt) CXXNullPtrLiteralExpr(ctxt.NullPtrTy, SourceLocation()); - QualType t = ctxt.getTypeOfExprType(nullptr_expr); - EXPECT_EQ(lldb::eTypeClassBuiltin, m_ast->GetTypeClass(t.getAsOpaquePtr())); -} - -TEST_F(TestTypeSystemClang, TestGetTypeClassNested) { - clang::ASTContext &ctxt = m_ast->getASTContext(); - QualType t_base = ctxt.getTypeOfType(makeConstInt(ctxt)); - QualType t = ctxt.getTypeOfType(t_base); - EXPECT_EQ(lldb::eTypeClassBuiltin, m_ast->GetTypeClass(t.getAsOpaquePtr())); -} - -TEST_F(TestTypeSystemClang, TestFunctionTemplateConstruction) { - // Tests creating a function template. - - CompilerType int_type = m_ast->GetBasicType(lldb::eBasicTypeInt); - clang::TranslationUnitDecl *TU = m_ast->GetTranslationUnitDecl(); - - // Prepare the declarations/types we need for the template. - CompilerType clang_type = - m_ast->CreateFunctionType(int_type, nullptr, 0U, false, 0U); - FunctionDecl *func = m_ast->CreateFunctionDeclaration( - TU, OptionalClangModuleID(), "foo", clang_type, StorageClass::SC_None, - false); - TypeSystemClang::TemplateParameterInfos empty_params; - - // Create the actual function template. - clang::FunctionTemplateDecl *func_template = - m_ast->CreateFunctionTemplateDecl(TU, OptionalClangModuleID(), func, - empty_params); - - EXPECT_EQ(TU, func_template->getDeclContext()); - EXPECT_EQ("foo", func_template->getName()); - EXPECT_EQ(clang::AccessSpecifier::AS_none, func_template->getAccess()); -} - -TEST_F(TestTypeSystemClang, TestFunctionTemplateInRecordConstruction) { - // Tests creating a function template inside a record. - - CompilerType int_type = m_ast->GetBasicType(lldb::eBasicTypeInt); - clang::TranslationUnitDecl *TU = m_ast->GetTranslationUnitDecl(); - - // Create a record we can put the function template int. - CompilerType record_type = - clang_utils::createRecordWithField(*m_ast, "record", int_type, "field"); - clang::TagDecl *record = ClangUtil::GetAsTagDecl(record_type); - - // Prepare the declarations/types we need for the template. - CompilerType clang_type = - m_ast->CreateFunctionType(int_type, nullptr, 0U, false, 0U); - // We create the FunctionDecl for the template in the TU DeclContext because: - // 1. FunctionDecls can't be in a Record (only CXXMethodDecls can). - // 2. It is mirroring the behavior of DWARFASTParserClang::ParseSubroutine. - FunctionDecl *func = m_ast->CreateFunctionDeclaration( - TU, OptionalClangModuleID(), "foo", clang_type, StorageClass::SC_None, - false); - TypeSystemClang::TemplateParameterInfos empty_params; - - // Create the actual function template. - clang::FunctionTemplateDecl *func_template = - m_ast->CreateFunctionTemplateDecl(record, OptionalClangModuleID(), func, - empty_params); - - EXPECT_EQ(record, func_template->getDeclContext()); - EXPECT_EQ("foo", func_template->getName()); - EXPECT_EQ(clang::AccessSpecifier::AS_public, func_template->getAccess()); -} - -TEST_F(TestTypeSystemClang, TestDeletingImplicitCopyCstrDueToMoveCStr) { - // We need to simulate this behavior in our AST that we construct as we don't - // have a Sema instance that can do this for us: - // C++11 [class.copy]p7, p18: - // If the class definition declares a move constructor or move assignment - // operator, an implicitly declared copy constructor or copy assignment - // operator is defined as deleted. - - // Create a record and start defining it. - llvm::StringRef class_name = "S"; - CompilerType t = clang_utils::createRecord(*m_ast, class_name); - m_ast->StartTagDeclarationDefinition(t); - - // Create a move constructor that will delete the implicit copy constructor. - CompilerType return_type = m_ast->GetBasicType(lldb::eBasicTypeVoid); - CompilerType param_type = t.GetRValueReferenceType(); - CompilerType function_type = - m_ast->CreateFunctionType(return_type, ¶m_type, /*num_params*/ 1, - /*variadic=*/false, /*quals*/ 0U); - bool is_virtual = false; - bool is_static = false; - bool is_inline = false; - bool is_explicit = true; - bool is_attr_used = false; - bool is_artificial = false; - m_ast->AddMethodToCXXRecordType( - t.GetOpaqueQualType(), class_name, nullptr, function_type, - lldb::AccessType::eAccessPublic, is_virtual, is_static, is_inline, - is_explicit, is_attr_used, is_artificial); - - // Complete the definition and check the created record. - m_ast->CompleteTagDeclarationDefinition(t); - auto *record = llvm::cast(ClangUtil::GetAsTagDecl(t)); - // We can't call defaultedCopyConstructorIsDeleted() as this requires that - // the Decl passes through Sema which will actually compute this field. - // Instead we check that there is no copy constructor declared by the user - // which only leaves a non-deleted defaulted copy constructor as an option - // that our record will have no simple copy constructor. - EXPECT_FALSE(record->hasUserDeclaredCopyConstructor()); - EXPECT_FALSE(record->hasSimpleCopyConstructor()); -} - -TEST_F(TestTypeSystemClang, TestNotDeletingUserCopyCstrDueToMoveCStr) { - // Tests that we don't delete the a user-defined copy constructor when - // a move constructor is provided. - // See also the TestDeletingImplicitCopyCstrDueToMoveCStr test. - llvm::StringRef class_name = "S"; - CompilerType t = clang_utils::createRecord(*m_ast, class_name); - m_ast->StartTagDeclarationDefinition(t); - - CompilerType return_type = m_ast->GetBasicType(lldb::eBasicTypeVoid); - bool is_virtual = false; - bool is_static = false; - bool is_inline = false; - bool is_explicit = true; - bool is_attr_used = false; - bool is_artificial = false; - // Create a move constructor. - { - CompilerType param_type = t.GetRValueReferenceType(); - CompilerType function_type = - m_ast->CreateFunctionType(return_type, ¶m_type, /*num_params*/ 1, - /*variadic=*/false, /*quals*/ 0U); - m_ast->AddMethodToCXXRecordType( - t.GetOpaqueQualType(), class_name, nullptr, function_type, - lldb::AccessType::eAccessPublic, is_virtual, is_static, is_inline, - is_explicit, is_attr_used, is_artificial); - } - // Create a copy constructor. - { - CompilerType param_type = t.GetLValueReferenceType().AddConstModifier(); - CompilerType function_type = - m_ast->CreateFunctionType(return_type, ¶m_type, /*num_params*/ 1, - /*variadic=*/false, /*quals*/ 0U); - m_ast->AddMethodToCXXRecordType( - t.GetOpaqueQualType(), class_name, nullptr, function_type, - lldb::AccessType::eAccessPublic, is_virtual, is_static, is_inline, - is_explicit, is_attr_used, is_artificial); - } - - // Complete the definition and check the created record. - m_ast->CompleteTagDeclarationDefinition(t); - auto *record = llvm::cast(ClangUtil::GetAsTagDecl(t)); - EXPECT_TRUE(record->hasUserDeclaredCopyConstructor()); -} - -TEST_F(TestTypeSystemClang, AddMethodToObjCObjectType) { - // Create an interface decl and mark it as having external storage. - CompilerType c = m_ast->CreateObjCClass("A", m_ast->GetTranslationUnitDecl(), - OptionalClangModuleID(), - /*IsForwardDecl*/ false, - /*IsInternal*/ false); - ObjCInterfaceDecl *interface = m_ast->GetAsObjCInterfaceDecl(c); - m_ast->SetHasExternalStorage(c.GetOpaqueQualType(), true); - EXPECT_TRUE(interface->hasExternalLexicalStorage()); - - // Add a method to the interface. - std::vector args; - CompilerType func_type = - m_ast->CreateFunctionType(m_ast->GetBasicType(lldb::eBasicTypeInt), - args.data(), args.size(), /*variadic*/ false, - /*quals*/ 0, clang::CallingConv::CC_C); - bool variadic = false; - bool artificial = false; - bool objc_direct = false; - clang::ObjCMethodDecl *method = TypeSystemClang::AddMethodToObjCObjectType( - c, "-[A foo]", func_type, lldb::eAccessPublic, artificial, variadic, - objc_direct); - ASSERT_NE(method, nullptr); - - // The interface decl should still have external lexical storage. - EXPECT_TRUE(interface->hasExternalLexicalStorage()); - - // Test some properties of the created ObjCMethodDecl. - EXPECT_FALSE(method->isVariadic()); - EXPECT_TRUE(method->isImplicit()); - EXPECT_FALSE(method->isDirectMethod()); - EXPECT_EQ(method->getDeclName().getObjCSelector().getAsString(), "foo"); -} - -TEST(TestScratchTypeSystemClang, InferSubASTFromLangOpts) { - LangOptions lang_opts; - EXPECT_EQ( - ScratchTypeSystemClang::DefaultAST, - ScratchTypeSystemClang::InferIsolatedASTKindFromLangOpts(lang_opts)); - - lang_opts.Modules = true; - EXPECT_EQ( - ScratchTypeSystemClang::IsolatedASTKind::CppModules, - ScratchTypeSystemClang::InferIsolatedASTKindFromLangOpts(lang_opts)); -} - -TEST_F(TestTypeSystemClang, GetExeModuleWhenMissingSymbolFile) { - CompilerType compiler_type = m_ast->GetBasicTypeFromAST(lldb::eBasicTypeInt); - lldb_private::Type t(0, nullptr, ConstString("MyType"), llvm::None, nullptr, - 0, {}, {}, compiler_type, - lldb_private::Type::ResolveState::Full); - // Test that getting the execution module when no type system is present - // is handled gracefully. - ModuleSP module = t.GetExeModule(); - EXPECT_EQ(module.get(), nullptr); -} - diff --git a/gnu/llvm/lldb/unittests/SymbolFile/CMakeLists.txt b/gnu/llvm/lldb/unittests/SymbolFile/CMakeLists.txt deleted file mode 100644 index 804555f8c90..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -add_subdirectory(DWARF) -add_subdirectory(NativePDB) -if (LLVM_ENABLE_DIA_SDK) - add_subdirectory(PDB) -endif() diff --git a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/CMakeLists.txt b/gnu/llvm/lldb/unittests/SymbolFile/DWARF/CMakeLists.txt deleted file mode 100644 index 76215c31b2a..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ -add_lldb_unittest(SymbolFileDWARFTests - DWARFASTParserClangTests.cpp - DWARFDIETest.cpp - DWARFUnitTest.cpp - SymbolFileDWARFTests.cpp - XcodeSDKModuleTests.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbSymbol - lldbPluginObjectFilePECOFF - lldbPluginSymbolFileDWARF - lldbPluginSymbolFilePDB - lldbPluginTypeSystemClang - lldbPluginPlatformMacOSX - lldbUtilityHelpers - lldbSymbolHelpers - LINK_COMPONENTS - Support - DebugInfoPDB - ) - -set(test_inputs - test-dwarf.exe) - -add_unittest_inputs(SymbolFileDWARFTests "${test_inputs}") diff --git a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp b/gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp deleted file mode 100644 index 435da1f9643..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp +++ /dev/null @@ -1,118 +0,0 @@ -//===-- DWARFASTParserClangTests.cpp --------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/SymbolFile/DWARF/DWARFASTParserClang.h" -#include "Plugins/SymbolFile/DWARF/DWARFCompileUnit.h" -#include "Plugins/SymbolFile/DWARF/DWARFDIE.h" -#include "TestingSupport/Symbol/YAMLModuleTester.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -namespace { -class DWARFASTParserClangTests : public testing::Test {}; - -class DWARFASTParserClangStub : public DWARFASTParserClang { -public: - using DWARFASTParserClang::DWARFASTParserClang; - using DWARFASTParserClang::LinkDeclContextToDIE; - - std::vector GetDeclContextToDIEMapKeys() { - std::vector keys; - for (const auto &it : m_decl_ctx_to_die) - keys.push_back(it.first); - return keys; - } -}; -} // namespace - -// If your implementation needs to dereference the dummy pointers we are -// defining here, causing this test to fail, feel free to delete it. -TEST_F(DWARFASTParserClangTests, - EnsureAllDIEsInDeclContextHaveBeenParsedParsesOnlyMatchingEntries) { - - /// Auxiliary debug info. - const char *yamldata = R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_386 -DWARF: - debug_abbrev: - - Table: - - Code: 0x00000001 - Tag: DW_TAG_compile_unit - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_language - Form: DW_FORM_data2 - - Code: 0x00000002 - Tag: DW_TAG_base_type - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_encoding - Form: DW_FORM_data1 - - Attribute: DW_AT_byte_size - Form: DW_FORM_data1 - debug_info: - - Version: 4 - AddrSize: 8 - Entries: - - AbbrCode: 0x00000001 - Values: - - Value: 0x000000000000000C - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000007 # DW_ATE_unsigned - - Value: 0x0000000000000004 - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000007 # DW_ATE_unsigned - - Value: 0x0000000000000008 - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000005 # DW_ATE_signed - - Value: 0x0000000000000008 - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000008 # DW_ATE_unsigned_char - - Value: 0x0000000000000001 - - AbbrCode: 0x00000000 -)"; - - YAMLModuleTester t(yamldata); - ASSERT_TRUE((bool)t.GetDwarfUnit()); - - TypeSystemClang ast_ctx("dummy ASTContext", HostInfoBase::GetTargetTriple()); - DWARFASTParserClangStub ast_parser(ast_ctx); - - DWARFUnit *unit = t.GetDwarfUnit(); - const DWARFDebugInfoEntry *die_first = unit->DIE().GetDIE(); - const DWARFDebugInfoEntry *die_child0 = die_first->GetFirstChild(); - const DWARFDebugInfoEntry *die_child1 = die_child0->GetSibling(); - const DWARFDebugInfoEntry *die_child2 = die_child1->GetSibling(); - const DWARFDebugInfoEntry *die_child3 = die_child2->GetSibling(); - std::vector dies = { - DWARFDIE(unit, die_child0), DWARFDIE(unit, die_child1), - DWARFDIE(unit, die_child2), DWARFDIE(unit, die_child3)}; - std::vector decl_ctxs = { - (clang::DeclContext *)1LL, (clang::DeclContext *)2LL, - (clang::DeclContext *)2LL, (clang::DeclContext *)3LL}; - for (int i = 0; i < 4; ++i) - ast_parser.LinkDeclContextToDIE(decl_ctxs[i], dies[i]); - ast_parser.EnsureAllDIEsInDeclContextHaveBeenParsed( - CompilerDeclContext(nullptr, decl_ctxs[1])); - - EXPECT_THAT(ast_parser.GetDeclContextToDIEMapKeys(), - testing::UnorderedElementsAre(decl_ctxs[0], decl_ctxs[3])); -} - diff --git a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFDIETest.cpp b/gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFDIETest.cpp deleted file mode 100644 index 7fc37cefea2..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFDIETest.cpp +++ /dev/null @@ -1,105 +0,0 @@ -//===-- DWARFDIETest.cpp ----------------------------------------------=---===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/SymbolFile/DWARF/DWARFDIE.h" -#include "TestingSupport/Symbol/YAMLModuleTester.h" -#include "llvm/ADT/STLExtras.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(DWARFDIETest, ChildIteration) { - // Tests DWARFDIE::child_iterator. - - const char *yamldata = R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_386 -DWARF: - debug_abbrev: - - Table: - - Code: 0x00000001 - Tag: DW_TAG_compile_unit - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_language - Form: DW_FORM_data2 - - Code: 0x00000002 - Tag: DW_TAG_base_type - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_encoding - Form: DW_FORM_data1 - - Attribute: DW_AT_byte_size - Form: DW_FORM_data1 - debug_info: - - Version: 4 - AddrSize: 8 - Entries: - - AbbrCode: 0x00000001 - Values: - - Value: 0x000000000000000C - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000007 # DW_ATE_unsigned - - Value: 0x0000000000000004 - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000007 # DW_ATE_unsigned - - Value: 0x0000000000000008 - - AbbrCode: 0x00000002 - Values: - - Value: 0x0000000000000005 # DW_ATE_signed - - Value: 0x0000000000000008 - - AbbrCode: 0x00000000 -)"; - - YAMLModuleTester t(yamldata); - ASSERT_TRUE((bool)t.GetDwarfUnit()); - - DWARFUnit *unit = t.GetDwarfUnit(); - const DWARFDebugInfoEntry *die_first = unit->DIE().GetDIE(); - - // Create a DWARFDIE that has three DW_TAG_base_type children. - DWARFDIE top_die(unit, die_first); - - // Create the iterator range that has the three tags as elements. - llvm::iterator_range children = top_die.children(); - - // Compare begin() to the first child DIE. - DWARFDIE::child_iterator child_iter = children.begin(); - ASSERT_NE(child_iter, children.end()); - const DWARFDebugInfoEntry *die_child0 = die_first->GetFirstChild(); - EXPECT_EQ((*child_iter).GetDIE(), die_child0); - - // Step to the second child DIE. - ++child_iter; - ASSERT_NE(child_iter, children.end()); - const DWARFDebugInfoEntry *die_child1 = die_child0->GetSibling(); - EXPECT_EQ((*child_iter).GetDIE(), die_child1); - - // Step to the third child DIE. - ++child_iter; - ASSERT_NE(child_iter, children.end()); - const DWARFDebugInfoEntry *die_child2 = die_child1->GetSibling(); - EXPECT_EQ((*child_iter).GetDIE(), die_child2); - - // Step to the end of the range. - ++child_iter; - EXPECT_EQ(child_iter, children.end()); - - // Take one of the DW_TAG_base_type DIEs (which has no children) and make - // sure the children range is now empty. - DWARFDIE no_children_die(unit, die_child0); - EXPECT_TRUE(no_children_die.children().empty()); -} diff --git a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFUnitTest.cpp b/gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFUnitTest.cpp deleted file mode 100644 index f5cfd1e6112..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/DWARFUnitTest.cpp +++ /dev/null @@ -1,86 +0,0 @@ -//===-- DWARFUnitTest.cpp -------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/SymbolFile/DWARF/DWARFUnit.h" -#include "TestingSupport/Symbol/YAMLModuleTester.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(DWARFUnitTest, NullUnitDie) { - // Make sure we don't crash parsing a null unit DIE. - const char *yamldata = R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_386 -DWARF: - debug_abbrev: - - Table: - - Code: 0x00000001 - Tag: DW_TAG_compile_unit - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_language - Form: DW_FORM_data2 - debug_info: - - Version: 4 - AddrSize: 8 - Entries: - - AbbrCode: 0x00000000 -)"; - - YAMLModuleTester t(yamldata); - ASSERT_TRUE((bool)t.GetDwarfUnit()); - - DWARFUnit *unit = t.GetDwarfUnit(); - const DWARFDebugInfoEntry *die_first = unit->DIE().GetDIE(); - ASSERT_NE(die_first, nullptr); - EXPECT_TRUE(die_first->IsNULL()); -} - -TEST(DWARFUnitTest, MissingSentinel) { - // Make sure we don't crash if the debug info is missing a null DIE sentinel. - const char *yamldata = R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_386 -DWARF: - debug_abbrev: - - Table: - - Code: 0x00000001 - Tag: DW_TAG_compile_unit - Children: DW_CHILDREN_yes - Attributes: - - Attribute: DW_AT_language - Form: DW_FORM_data2 - debug_info: - - Version: 4 - AddrSize: 8 - Entries: - - AbbrCode: 0x00000001 - Values: - - Value: 0x000000000000000C -)"; - - YAMLModuleTester t(yamldata); - ASSERT_TRUE((bool)t.GetDwarfUnit()); - - DWARFUnit *unit = t.GetDwarfUnit(); - const DWARFDebugInfoEntry *die_first = unit->DIE().GetDIE(); - ASSERT_NE(die_first, nullptr); - EXPECT_EQ(die_first->GetFirstChild(), nullptr); - EXPECT_EQ(die_first->GetSibling(), nullptr); -} diff --git a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/Inputs/test-dwarf.cpp b/gnu/llvm/lldb/unittests/SymbolFile/DWARF/Inputs/test-dwarf.cpp deleted file mode 100644 index a987e6a9a36..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/Inputs/test-dwarf.cpp +++ /dev/null @@ -1,6 +0,0 @@ -// Compile with "cl /c /Zi /GR- test.cpp" -// Link with "link test.obj /debug /nodefaultlib /entry:main /out:test.exe" - -int __cdecl _purecall(void) { return 0; } - -int main(int argc, char **argv) { return 0; } diff --git a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/SymbolFileDWARFTests.cpp b/gnu/llvm/lldb/unittests/SymbolFile/DWARF/SymbolFileDWARFTests.cpp deleted file mode 100644 index 92fb798d5d4..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/SymbolFileDWARFTests.cpp +++ /dev/null @@ -1,531 +0,0 @@ -//===-- SymbolFileDWARFTests.cpp ------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "llvm/ADT/STLExtras.h" -#include "llvm/DebugInfo/PDB/PDBSymbolData.h" -#include "llvm/DebugInfo/PDB/PDBSymbolExe.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/Path.h" - -#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" -#include "Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.h" -#include "Plugins/SymbolFile/DWARF/DWARFDataExtractor.h" -#include "Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.h" -#include "Plugins/SymbolFile/DWARF/DWARFDebugArangeSet.h" -#include "Plugins/SymbolFile/DWARF/DWARFDebugAranges.h" -#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" -#include "Plugins/SymbolFile/PDB/SymbolFilePDB.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" -#include "lldb/Core/Address.h" -#include "lldb/Core/Module.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Symbol/CompileUnit.h" -#include "lldb/Symbol/LineTable.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/DataEncoder.h" -#include "lldb/Utility/FileSpec.h" -#include "lldb/Utility/StreamString.h" - -using namespace lldb; -using namespace lldb_private; - -class SymbolFileDWARFTests : public testing::Test { - SubsystemRAII - subsystems; - -public: - void SetUp() override { - m_dwarf_test_exe = GetInputFilePath("test-dwarf.exe"); - } - -protected: - std::string m_dwarf_test_exe; -}; - -TEST_F(SymbolFileDWARFTests, TestAbilitiesForDWARF) { - // Test that when we have Dwarf debug info, SymbolFileDWARF is used. - FileSpec fspec(m_dwarf_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFile *symfile = module->GetSymbolFile(); - ASSERT_NE(nullptr, symfile); - EXPECT_EQ(symfile->GetPluginName(), SymbolFileDWARF::GetPluginNameStatic()); - - uint32_t expected_abilities = SymbolFile::kAllAbilities; - EXPECT_EQ(expected_abilities, symfile->CalculateAbilities()); -} - -TEST_F(SymbolFileDWARFTests, TestAbbrevOrder1Start1) { - // Test that if we have a .debug_abbrev that contains ordered abbreviation - // codes that start at 1, that we get O(1) access. - - const auto byte_order = eByteOrderLittle; - const uint8_t addr_size = 4; - StreamString encoder(Stream::eBinary, addr_size, byte_order); - encoder.PutULEB128(1); // Abbrev code 1 - encoder.PutULEB128(DW_TAG_compile_unit); - encoder.PutHex8(DW_CHILDREN_yes); - encoder.PutULEB128(DW_AT_name); - encoder.PutULEB128(DW_FORM_strp); - encoder.PutULEB128(0); - encoder.PutULEB128(0); - - encoder.PutULEB128(2); // Abbrev code 2 - encoder.PutULEB128(DW_TAG_subprogram); - encoder.PutHex8(DW_CHILDREN_no); - encoder.PutULEB128(DW_AT_name); - encoder.PutULEB128(DW_FORM_strp); - encoder.PutULEB128(0); - encoder.PutULEB128(0); - - encoder.PutULEB128(0); // Abbrev code 0 (termination) - - DWARFDataExtractor data; - data.SetData(encoder.GetData(), encoder.GetSize(), byte_order); - DWARFAbbreviationDeclarationSet abbrev_set; - lldb::offset_t data_offset = 0; - llvm::Error error = abbrev_set.extract(data, &data_offset); - EXPECT_FALSE(bool(error)); - // Make sure we have O(1) access to each abbreviation by making sure the - // index offset is 1 and not UINT32_MAX - EXPECT_EQ(abbrev_set.GetIndexOffset(), 1u); - - auto abbrev1 = abbrev_set.GetAbbreviationDeclaration(1); - EXPECT_EQ(abbrev1->Tag(), DW_TAG_compile_unit); - EXPECT_TRUE(abbrev1->HasChildren()); - EXPECT_EQ(abbrev1->NumAttributes(), 1u); - auto abbrev2 = abbrev_set.GetAbbreviationDeclaration(2); - EXPECT_EQ(abbrev2->Tag(), DW_TAG_subprogram); - EXPECT_FALSE(abbrev2->HasChildren()); - EXPECT_EQ(abbrev2->NumAttributes(), 1u); -} - -TEST_F(SymbolFileDWARFTests, TestAbbrevOrder1Start5) { - // Test that if we have a .debug_abbrev that contains ordered abbreviation - // codes that start at 5, that we get O(1) access. - - const auto byte_order = eByteOrderLittle; - const uint8_t addr_size = 4; - StreamString encoder(Stream::eBinary, addr_size, byte_order); - encoder.PutULEB128(5); // Abbrev code 5 - encoder.PutULEB128(DW_TAG_compile_unit); - encoder.PutHex8(DW_CHILDREN_yes); - encoder.PutULEB128(DW_AT_name); - encoder.PutULEB128(DW_FORM_strp); - encoder.PutULEB128(0); - encoder.PutULEB128(0); - - encoder.PutULEB128(6); // Abbrev code 6 - encoder.PutULEB128(DW_TAG_subprogram); - encoder.PutHex8(DW_CHILDREN_no); - encoder.PutULEB128(DW_AT_name); - encoder.PutULEB128(DW_FORM_strp); - encoder.PutULEB128(0); - encoder.PutULEB128(0); - - encoder.PutULEB128(0); // Abbrev code 0 (termination) - - DWARFDataExtractor data; - data.SetData(encoder.GetData(), encoder.GetSize(), byte_order); - DWARFAbbreviationDeclarationSet abbrev_set; - lldb::offset_t data_offset = 0; - llvm::Error error = abbrev_set.extract(data, &data_offset); - EXPECT_FALSE(bool(error)); - // Make sure we have O(1) access to each abbreviation by making sure the - // index offset is 5 and not UINT32_MAX - EXPECT_EQ(abbrev_set.GetIndexOffset(), 5u); - - auto abbrev1 = abbrev_set.GetAbbreviationDeclaration(5); - EXPECT_EQ(abbrev1->Tag(), DW_TAG_compile_unit); - EXPECT_TRUE(abbrev1->HasChildren()); - EXPECT_EQ(abbrev1->NumAttributes(), 1u); - auto abbrev2 = abbrev_set.GetAbbreviationDeclaration(6); - EXPECT_EQ(abbrev2->Tag(), DW_TAG_subprogram); - EXPECT_FALSE(abbrev2->HasChildren()); - EXPECT_EQ(abbrev2->NumAttributes(), 1u); -} - -TEST_F(SymbolFileDWARFTests, TestAbbrevOutOfOrder) { - // Test that if we have a .debug_abbrev that contains unordered abbreviation - // codes, that we can access the information correctly. - - const auto byte_order = eByteOrderLittle; - const uint8_t addr_size = 4; - StreamString encoder(Stream::eBinary, addr_size, byte_order); - encoder.PutULEB128(2); // Abbrev code 2 - encoder.PutULEB128(DW_TAG_compile_unit); - encoder.PutHex8(DW_CHILDREN_yes); - encoder.PutULEB128(DW_AT_name); - encoder.PutULEB128(DW_FORM_strp); - encoder.PutULEB128(0); - encoder.PutULEB128(0); - - encoder.PutULEB128(1); // Abbrev code 1 - encoder.PutULEB128(DW_TAG_subprogram); - encoder.PutHex8(DW_CHILDREN_no); - encoder.PutULEB128(DW_AT_name); - encoder.PutULEB128(DW_FORM_strp); - encoder.PutULEB128(0); - encoder.PutULEB128(0); - - encoder.PutULEB128(0); // Abbrev code 0 (termination) - - DWARFDataExtractor data; - data.SetData(encoder.GetData(), encoder.GetSize(), byte_order); - DWARFAbbreviationDeclarationSet abbrev_set; - lldb::offset_t data_offset = 0; - llvm::Error error = abbrev_set.extract(data, &data_offset); - EXPECT_FALSE(bool(error)); - // Make sure we don't have O(1) access to each abbreviation by making sure - // the index offset is UINT32_MAX - EXPECT_EQ(abbrev_set.GetIndexOffset(), UINT32_MAX); - - auto abbrev1 = abbrev_set.GetAbbreviationDeclaration(2); - EXPECT_EQ(abbrev1->Tag(), DW_TAG_compile_unit); - EXPECT_TRUE(abbrev1->HasChildren()); - EXPECT_EQ(abbrev1->NumAttributes(), 1u); - auto abbrev2 = abbrev_set.GetAbbreviationDeclaration(1); - EXPECT_EQ(abbrev2->Tag(), DW_TAG_subprogram); - EXPECT_FALSE(abbrev2->HasChildren()); - EXPECT_EQ(abbrev2->NumAttributes(), 1u); -} - -TEST_F(SymbolFileDWARFTests, TestAbbrevInvalidNULLTag) { - // Test that we detect when an abbreviation has a NULL tag and that we get - // an error when decoding. - - const auto byte_order = eByteOrderLittle; - const uint8_t addr_size = 4; - StreamString encoder(Stream::eBinary, addr_size, byte_order); - encoder.PutULEB128(1); // Abbrev code 1 - encoder.PutULEB128(0); // Invalid NULL tag here! - encoder.PutHex8(DW_CHILDREN_no); - encoder.PutULEB128(0); - encoder.PutULEB128(0); - - encoder.PutULEB128(0); // Abbrev code 0 (termination) - - DWARFDataExtractor data; - data.SetData(encoder.GetData(), encoder.GetSize(), byte_order); - DWARFAbbreviationDeclarationSet abbrev_set; - lldb::offset_t data_offset = 0; - llvm::Error error = abbrev_set.extract(data, &data_offset); - // Verify we get an error - EXPECT_TRUE(bool(error)); - EXPECT_EQ("abbrev decl requires non-null tag.", - llvm::toString(std::move(error))); - -} - -TEST_F(SymbolFileDWARFTests, TestAbbrevNullAttrValidForm) { - // Test that we detect when an abbreviation has a NULL attribute and a non - // NULL form and that we get an error when decoding. - - const auto byte_order = eByteOrderLittle; - const uint8_t addr_size = 4; - StreamString encoder(Stream::eBinary, addr_size, byte_order); - encoder.PutULEB128(1); // Abbrev code 1 - encoder.PutULEB128(DW_TAG_compile_unit); - encoder.PutHex8(DW_CHILDREN_no); - encoder.PutULEB128(0); // Invalid NULL DW_AT - encoder.PutULEB128(DW_FORM_strp); // With a valid form - encoder.PutULEB128(0); - encoder.PutULEB128(0); - - encoder.PutULEB128(0); // Abbrev code 0 (termination) - - DWARFDataExtractor data; - data.SetData(encoder.GetData(), encoder.GetSize(), byte_order); - DWARFAbbreviationDeclarationSet abbrev_set; - lldb::offset_t data_offset = 0; - llvm::Error error = abbrev_set.extract(data, &data_offset); - // Verify we get an error - EXPECT_TRUE(bool(error)); - EXPECT_EQ("malformed abbreviation declaration attribute", - llvm::toString(std::move(error))); -} - -TEST_F(SymbolFileDWARFTests, TestAbbrevValidAttrNullForm) { - // Test that we detect when an abbreviation has a valid attribute and a - // NULL form and that we get an error when decoding. - - const auto byte_order = eByteOrderLittle; - const uint8_t addr_size = 4; - StreamString encoder(Stream::eBinary, addr_size, byte_order); - encoder.PutULEB128(1); // Abbrev code 1 - encoder.PutULEB128(DW_TAG_compile_unit); - encoder.PutHex8(DW_CHILDREN_no); - encoder.PutULEB128(DW_AT_name); // Valid attribute - encoder.PutULEB128(0); // NULL form - encoder.PutULEB128(0); - encoder.PutULEB128(0); - - encoder.PutULEB128(0); // Abbrev code 0 (termination) - - DWARFDataExtractor data; - data.SetData(encoder.GetData(), encoder.GetSize(), byte_order); - DWARFAbbreviationDeclarationSet abbrev_set; - lldb::offset_t data_offset = 0; - llvm::Error error = abbrev_set.extract(data, &data_offset); - // Verify we get an error - EXPECT_TRUE(bool(error)); - EXPECT_EQ("malformed abbreviation declaration attribute", - llvm::toString(std::move(error))); -} - -TEST_F(SymbolFileDWARFTests, TestAbbrevMissingTerminator) { - // Test that we detect when an abbreviation has a valid attribute and a - // form, but is missing the NULL attribute and form that terminates an - // abbreviation - - const auto byte_order = eByteOrderLittle; - const uint8_t addr_size = 4; - StreamString encoder(Stream::eBinary, addr_size, byte_order); - encoder.PutULEB128(1); // Abbrev code 1 - encoder.PutULEB128(DW_TAG_compile_unit); - encoder.PutHex8(DW_CHILDREN_no); - encoder.PutULEB128(DW_AT_name); - encoder.PutULEB128(DW_FORM_strp); - // Don't add the NULL DW_AT and NULL DW_FORM terminator - - DWARFDataExtractor data; - data.SetData(encoder.GetData(), encoder.GetSize(), byte_order); - DWARFAbbreviationDeclarationSet abbrev_set; - lldb::offset_t data_offset = 0; - llvm::Error error = abbrev_set.extract(data, &data_offset); - // Verify we get an error - EXPECT_TRUE(bool(error)); - EXPECT_EQ("abbreviation declaration attribute list not terminated with a " - "null entry", llvm::toString(std::move(error))); -} - -TEST_F(SymbolFileDWARFTests, ParseArangesNonzeroSegmentSize) { - // This `.debug_aranges` table header is a valid 32bit big-endian section - // according to the DWARFv5 spec:6.2.1, but contains segment selectors which - // are not supported by lldb, and should be gracefully rejected - const unsigned char binary_data[] = { - 0, 0, 0, 41, // unit_length (length field not including this field itself) - 0, 2, // DWARF version number (half) - 0, 0, 0, 0, // offset into the .debug_info_table (ignored for the purposes - // of this test - 4, // address size - 1, // segment size - // alignment for the first tuple which "begins at an offset that is a - // multiple of the size of a single tuple". Tuples are nine bytes in this - // example. - 0, 0, 0, 0, 0, 0, - // BEGIN TUPLES - 1, 0, 0, 0, 4, 0, 0, 0, - 1, // a 1byte object starting at address 4 in segment 1 - 0, 0, 0, 0, 4, 0, 0, 0, - 1, // a 1byte object starting at address 4 in segment 0 - // END TUPLES - 0, 0, 0, 0, 0, 0, 0, 0, 0 // terminator - }; - DWARFDataExtractor data; - data.SetData(static_cast(binary_data), sizeof binary_data, - lldb::ByteOrder::eByteOrderBig); - DWARFDebugArangeSet debug_aranges; - offset_t off = 0; - llvm::Error error = debug_aranges.extract(data, &off); - EXPECT_TRUE(bool(error)); - EXPECT_EQ("segmented arange entries are not supported", - llvm::toString(std::move(error))); - EXPECT_EQ(off, 12U); // Parser should read no further than the segment size -} - -TEST_F(SymbolFileDWARFTests, ParseArangesWithMultipleTerminators) { - // This .debug_aranges set has multiple terminator entries which appear in - // binaries produced by popular linux compilers and linker combinations. We - // must be able to parse all the way through the data for each - // DWARFDebugArangeSet. Previously the DWARFDebugArangeSet::extract() - // function would stop parsing as soon as we ran into a terminator even - // though the length field stated that there was more data that follows. This - // would cause the next DWARFDebugArangeSet to be parsed immediately - // following the first terminator and it would attempt to decode the - // DWARFDebugArangeSet header using the remaining segment + address pairs - // from the remaining bytes. - unsigned char binary_data[] = { - 0, 0, 0, 0, // unit_length that will be set correctly after this - 0, 2, // DWARF version number (uint16_t) - 0, 0, 0, 0, // CU offset (ignored for the purposes of this test) - 4, // address size - 0, // segment size - 0, 0, 0, 0, // alignment for the first tuple - // BEGIN TUPLES - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // premature terminator - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, // [0x1000-0x1100) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // premature terminator - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, // [0x2000-0x2010) - // END TUPLES - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // terminator - }; - // Set the big endian length correctly. - const offset_t binary_data_size = sizeof(binary_data); - binary_data[3] = (uint8_t)binary_data_size - 4; - DWARFDataExtractor data; - data.SetData(static_cast(binary_data), sizeof binary_data, - lldb::ByteOrder::eByteOrderBig); - DWARFDebugArangeSet set; - offset_t off = 0; - llvm::Error error = set.extract(data, &off); - // Multiple terminators are not fatal as they do appear in binaries. - EXPECT_FALSE(bool(error)); - // Parser should read all terminators to the end of the length specified. - EXPECT_EQ(off, binary_data_size); - ASSERT_EQ(set.NumDescriptors(), 2U); - ASSERT_EQ(set.GetDescriptorRef(0).address, (dw_addr_t)0x1000); - ASSERT_EQ(set.GetDescriptorRef(0).length, (dw_addr_t)0x100); - ASSERT_EQ(set.GetDescriptorRef(1).address, (dw_addr_t)0x2000); - ASSERT_EQ(set.GetDescriptorRef(1).length, (dw_addr_t)0x10); -} - -TEST_F(SymbolFileDWARFTests, ParseArangesIgnoreEmpty) { - // This .debug_aranges set has some address ranges which have zero length - // and we ensure that these are ignored by our DWARFDebugArangeSet parser - // and not included in the descriptors that are returned. - unsigned char binary_data[] = { - 0, 0, 0, 0, // unit_length that will be set correctly after this - 0, 2, // DWARF version number (uint16_t) - 0, 0, 0, 0, // CU offset (ignored for the purposes of this test) - 4, // address size - 0, // segment size - 0, 0, 0, 0, // alignment for the first tuple - // BEGIN TUPLES - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, // [0x1000-0x1100) - 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x1100-0x1100) - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, // [0x2000-0x2010) - 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, // [0x2010-0x2010) - // END TUPLES - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // terminator - }; - // Set the big endian length correctly. - const offset_t binary_data_size = sizeof(binary_data); - binary_data[3] = (uint8_t)binary_data_size - 4; - DWARFDataExtractor data; - data.SetData(static_cast(binary_data), sizeof binary_data, - lldb::ByteOrder::eByteOrderBig); - DWARFDebugArangeSet set; - offset_t off = 0; - llvm::Error error = set.extract(data, &off); - // Multiple terminators are not fatal as they do appear in binaries. - EXPECT_FALSE(bool(error)); - // Parser should read all terminators to the end of the length specified. - // Previously the DWARFDebugArangeSet would stop at the first terminator - // entry and leave the offset in the middle of the current - // DWARFDebugArangeSet data, and that would cause the next extracted - // DWARFDebugArangeSet to fail. - EXPECT_EQ(off, binary_data_size); - ASSERT_EQ(set.NumDescriptors(), 2U); - ASSERT_EQ(set.GetDescriptorRef(0).address, (dw_addr_t)0x1000); - ASSERT_EQ(set.GetDescriptorRef(0).length, (dw_addr_t)0x100); - ASSERT_EQ(set.GetDescriptorRef(1).address, (dw_addr_t)0x2000); - ASSERT_EQ(set.GetDescriptorRef(1).length, (dw_addr_t)0x10); -} - -TEST_F(SymbolFileDWARFTests, ParseAranges) { - // Test we can successfully parse a DWARFDebugAranges. The initial error - // checking code had a bug where it would always return an empty address - // ranges for everything in .debug_aranges and no error. - unsigned char binary_data[] = { - 0, 0, 0, 0, // unit_length that will be set correctly after this - 2, 0, // DWARF version number - 255, 0, 0, 0, // offset into the .debug_info_table - 8, // address size - 0, // segment size - 0, 0, 0, 0, // pad bytes - // BEGIN TUPLES - // First tuple: [0x1000-0x1100) - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Address 0x1000 - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Size 0x0100 - // Second tuple: [0x2000-0x2100) - 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Address 0x2000 - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Size 0x0100 - // Terminating tuple - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Terminator - }; - // Set the little endian length correctly. - binary_data[0] = sizeof(binary_data) - 4; - DWARFDataExtractor data; - data.SetData(static_cast(binary_data), sizeof binary_data, - lldb::ByteOrder::eByteOrderLittle); - DWARFDebugAranges debug_aranges; - debug_aranges.extract(data); - EXPECT_EQ(debug_aranges.GetNumRanges(), 2u); - EXPECT_EQ(debug_aranges.FindAddress(0x0fff), DW_INVALID_OFFSET); - EXPECT_EQ(debug_aranges.FindAddress(0x1000), 255u); - EXPECT_EQ(debug_aranges.FindAddress(0x1100 - 1), 255u); - EXPECT_EQ(debug_aranges.FindAddress(0x1100), DW_INVALID_OFFSET); - EXPECT_EQ(debug_aranges.FindAddress(0x1fff), DW_INVALID_OFFSET); - EXPECT_EQ(debug_aranges.FindAddress(0x2000), 255u); - EXPECT_EQ(debug_aranges.FindAddress(0x2100 - 1), 255u); - EXPECT_EQ(debug_aranges.FindAddress(0x2100), DW_INVALID_OFFSET); -} - -TEST_F(SymbolFileDWARFTests, ParseArangesSkipErrors) { - // Test we can successfully parse a DWARFDebugAranges that contains some - // valid DWARFDebugArangeSet objects and some with errors as long as their - // length is set correctly. This helps LLDB ensure that it can parse newer - // .debug_aranges version that LLDB currently doesn't support, or ignore - // errors in individual DWARFDebugArangeSet objects as long as the length - // is set correctly. - const unsigned char binary_data[] = { - // This DWARFDebugArangeSet is well formed and has a single address range - // for [0x1000-0x1100) with a CU offset of 0x00000000. - 0, 0, 0, 28, // unit_length that will be set correctly after this - 0, 2, // DWARF version number (uint16_t) - 0, 0, 0, 0, // CU offset = 0x00000000 - 4, // address size - 0, // segment size - 0, 0, 0, 0, // alignment for the first tuple - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, // [0x1000-0x1100) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // terminator - // This DWARFDebugArangeSet has the correct length, but an invalid - // version. We need to be able to skip this correctly and ignore it. - 0, 0, 0, 20, // unit_length that will be set correctly after this - 0, 44, // invalid DWARF version number (uint16_t) - 0, 0, 1, 0, // CU offset = 0x00000100 - 4, // address size - 0, // segment size - 0, 0, 0, 0, // alignment for the first tuple - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // terminator - // This DWARFDebugArangeSet is well formed and has a single address range - // for [0x2000-0x2100) with a CU offset of 0x00000000. - 0, 0, 0, 28, // unit_length that will be set correctly after this - 0, 2, // DWARF version number (uint16_t) - 0, 0, 2, 0, // CU offset = 0x00000200 - 4, // address size - 0, // segment size - 0, 0, 0, 0, // alignment for the first tuple - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, // [0x2000-0x2100) - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // terminator - }; - - DWARFDataExtractor data; - data.SetData(static_cast(binary_data), sizeof binary_data, - lldb::ByteOrder::eByteOrderBig); - DWARFDebugAranges debug_aranges; - debug_aranges.extract(data); - EXPECT_EQ(debug_aranges.GetNumRanges(), 2u); - EXPECT_EQ(debug_aranges.FindAddress(0x0fff), DW_INVALID_OFFSET); - EXPECT_EQ(debug_aranges.FindAddress(0x1000), 0u); - EXPECT_EQ(debug_aranges.FindAddress(0x1100 - 1), 0u); - EXPECT_EQ(debug_aranges.FindAddress(0x1100), DW_INVALID_OFFSET); - EXPECT_EQ(debug_aranges.FindAddress(0x1fff), DW_INVALID_OFFSET); - EXPECT_EQ(debug_aranges.FindAddress(0x2000), 0x200u); - EXPECT_EQ(debug_aranges.FindAddress(0x2100 - 1), 0x200u); - EXPECT_EQ(debug_aranges.FindAddress(0x2100), DW_INVALID_OFFSET); -} diff --git a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/XcodeSDKModuleTests.cpp b/gnu/llvm/lldb/unittests/SymbolFile/DWARF/XcodeSDKModuleTests.cpp deleted file mode 100644 index 9fb4602a41e..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/DWARF/XcodeSDKModuleTests.cpp +++ /dev/null @@ -1,75 +0,0 @@ -//===-- XcodeSDKModuleTests.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "Plugins/Platform/MacOSX/PlatformMacOSX.h" -#include "Plugins/SymbolFile/DWARF/DWARFCompileUnit.h" -#include "Plugins/SymbolFile/DWARF/DWARFDIE.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "TestingSupport/Symbol/YAMLModuleTester.h" -#include "lldb/Core/PluginManager.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -#ifdef __APPLE__ -namespace { -class XcodeSDKModuleTests : public testing::Test { - SubsystemRAII subsystems; -}; -} // namespace - - -TEST_F(XcodeSDKModuleTests, TestModuleGetXcodeSDK) { - const char *yamldata = R"( ---- !ELF -FileHeader: - Class: ELFCLASS64 - Data: ELFDATA2LSB - Type: ET_EXEC - Machine: EM_386 -DWARF: - debug_str: - - MacOSX10.9.sdk - debug_abbrev: - - Table: - - Code: 0x00000001 - Tag: DW_TAG_compile_unit - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_language - Form: DW_FORM_data2 - - Attribute: DW_AT_APPLE_sdk - Form: DW_FORM_strp - debug_info: - - Version: 2 - AddrSize: 8 - Entries: - - AbbrCode: 0x00000001 - Values: - - Value: 0x000000000000000C - - Value: 0x0000000000000000 - - AbbrCode: 0x00000000 -... -)"; - - YAMLModuleTester t(yamldata); - DWARFUnit *dwarf_unit = t.GetDwarfUnit(); - auto *dwarf_cu = llvm::cast(dwarf_unit); - ASSERT_TRUE(static_cast(dwarf_cu)); - SymbolFileDWARF &sym_file = dwarf_cu->GetSymbolFileDWARF(); - CompUnitSP comp_unit = sym_file.GetCompileUnitAtIndex(0); - ASSERT_TRUE(static_cast(comp_unit.get())); - ModuleSP module = t.GetModule(); - ASSERT_EQ(module->GetSourceMappingList().GetSize(), 0u); - XcodeSDK sdk = sym_file.ParseXcodeSDK(*comp_unit); - ASSERT_EQ(sdk.GetType(), XcodeSDK::Type::MacOSX); - ASSERT_EQ(module->GetSourceMappingList().GetSize(), 1u); -} -#endif diff --git a/gnu/llvm/lldb/unittests/SymbolFile/NativePDB/CMakeLists.txt b/gnu/llvm/lldb/unittests/SymbolFile/NativePDB/CMakeLists.txt deleted file mode 100644 index b82199f21dd..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/NativePDB/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -add_lldb_unittest(SymbolFileNativePDBTests - PdbFPOProgramToDWARFExpressionTests.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbSymbol - lldbPluginSymbolFileNativePDB - lldbUtilityHelpers - LINK_COMPONENTS - Support - DebugInfoPDB - ) diff --git a/gnu/llvm/lldb/unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp b/gnu/llvm/lldb/unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp deleted file mode 100644 index 3692f0c94c5..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp +++ /dev/null @@ -1,131 +0,0 @@ -//===-- PDBFPOProgramToDWARFExpressionTests.cpp ---------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "Plugins/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpression.h" - -#include "lldb/Core/StreamBuffer.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/DataBufferHeap.h" -#include "lldb/Utility/DataExtractor.h" -#include "lldb/Utility/StreamString.h" -#include "llvm/DebugInfo/DWARF/DWARFExpression.h" - -using namespace lldb; -using namespace lldb_private; -using namespace lldb_private::npdb; - -/// Valid programs tests - -static void -CheckValidProgramTranslation(llvm::StringRef fpo_program, - llvm::StringRef target_register_name, - llvm::StringRef expected_dwarf_expression) { - // program translation - StreamBuffer<32> stream(Stream::eBinary, 4, eByteOrderLittle); - ASSERT_TRUE(TranslateFPOProgramToDWARFExpression( - fpo_program, target_register_name, llvm::Triple::x86, stream)); - - // print dwarf expression to comparable textual representation - llvm::DataExtractor extractor({stream.GetData(), stream.GetSize()}, - /*IsLittleEndian=*/true, /*AddressSize=*/4); - - std::string result; - llvm::raw_string_ostream os(result); - llvm::DWARFExpression(extractor, /*AddressSize=*/4, llvm::dwarf::DWARF32) - .print(os, llvm::DIDumpOptions(), nullptr, nullptr); - - // actual check - ASSERT_EQ(expected_dwarf_expression, os.str()); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, SingleAssignmentRegisterRef) { - CheckValidProgramTranslation("$T0 $ebp = ", "$T0", "DW_OP_breg6 +0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, MultipleIndependentAssignments) { - CheckValidProgramTranslation("$T1 1 = $T0 0 =", "$T0", "DW_OP_consts +0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, MultipleDependentAssignments) { - CheckValidProgramTranslation( - "$T1 $ebp 4 + = $T0 $T1 8 - 128 @ = ", "$T0", - "DW_OP_breg6 +0, DW_OP_consts +4, DW_OP_plus, DW_OP_consts +8, " - "DW_OP_minus, DW_OP_consts +128, DW_OP_lit1, DW_OP_minus, DW_OP_not, " - "DW_OP_and"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, DependencyChain) { - CheckValidProgramTranslation("$T1 0 = $T0 $T1 = $ebp $T0 =", "$ebp", - "DW_OP_consts +0"); -} - -/// Invalid programs tests -static void -CheckInvalidProgramTranslation(llvm::StringRef fpo_program, - llvm::StringRef target_register_name) { - // initial setup - ArchSpec arch_spec("i686-pc-windows"); - llvm::Triple::ArchType arch_type = arch_spec.GetMachine(); - ByteOrder byte_order = arch_spec.GetByteOrder(); - uint32_t address_size = arch_spec.GetAddressByteSize(); - - // program translation - StreamBuffer<32> stream(Stream::eBinary, address_size, byte_order); - EXPECT_FALSE(TranslateFPOProgramToDWARFExpression( - fpo_program, target_register_name, arch_type, stream)); - EXPECT_EQ((size_t)0, stream.GetSize()); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, InvalidAssignmentSingle) { - CheckInvalidProgramTranslation("$T0 0", "$T0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, InvalidAssignmentMultiple) { - CheckInvalidProgramTranslation("$T1 0 = $T0 0", "$T0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, UnknownOp) { - CheckInvalidProgramTranslation("$T0 $ebp 0 & = ", "$T0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, InvalidOpBinary) { - CheckInvalidProgramTranslation("$T0 0 + = ", "$T0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, InvalidOpUnary) { - CheckInvalidProgramTranslation("$T0 ^ = ", "$T0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, MissingTargetRegister) { - CheckInvalidProgramTranslation("$T1 0 = ", "$T0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, UnresolvedRegisterReference) { - CheckInvalidProgramTranslation("$T0 $abc = ", "$T0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, - UnresolvedRegisterAssignmentReference) { - CheckInvalidProgramTranslation("$T2 0 = $T0 $T1 = ", "$T0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, - UnresolvedCyclicRegisterAssignmentReference) { - CheckInvalidProgramTranslation("$T1 $T0 = $T0 $T1 = ", "$T0"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, - UnresolvedDependentCyclicRegisterAssignmentReference) { - CheckInvalidProgramTranslation("$T1 $T0 = $T0 $T1 = $T2 $T1 =", "$T2"); -} - -TEST(PDBFPOProgramToDWARFExpressionTests, UnsupportedRASearch) { - CheckInvalidProgramTranslation("$T0 .raSearch = ", "$T0"); -} diff --git a/gnu/llvm/lldb/unittests/SymbolFile/PDB/CMakeLists.txt b/gnu/llvm/lldb/unittests/SymbolFile/PDB/CMakeLists.txt deleted file mode 100644 index 8fc2167ee6b..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/PDB/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -add_lldb_unittest(SymbolFilePDBTests - SymbolFilePDBTests.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbSymbol - lldbPluginObjectFilePECOFF - lldbPluginSymbolFileDWARF - lldbPluginSymbolFilePDB - lldbPluginTypeSystemClang - lldbUtilityHelpers - LLVMTestingSupport - LINK_COMPONENTS - Support - DebugInfoPDB - ) - -set(test_inputs - test-pdb.exe - test-pdb.pdb - test-pdb-types.exe - test-pdb-types.pdb) - -add_unittest_inputs(SymbolFilePDBTests "${test_inputs}") diff --git a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-alt.cpp b/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-alt.cpp deleted file mode 100644 index 33d7df0e4a8..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-alt.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// Compile with "cl /c /Zi /GR- test-pdb-alt.cpp" -// Link with "link test-pdb.obj test-pdb-alt.obj /debug /nodefaultlib -// /entry:main /out:test-pdb.exe" - -#include "test-pdb.h" - -int bar(int n) { return n - 1; } diff --git a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-nested.h b/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-nested.h deleted file mode 100644 index 9d399555823..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-nested.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef TEST_PDB_NESTED_H -#define TEST_PDB_NESTED_H - -inline int baz(int n) { return n + 1; } - -#endif diff --git a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-types.cpp b/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-types.cpp deleted file mode 100644 index 363be7b3c49..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-types.cpp +++ /dev/null @@ -1,79 +0,0 @@ -// Compile with "cl /c /Zi /GR- /EHsc test-pdb-types.cpp" -// Link with "link test-pdb-types.obj /debug /nodefaultlib /entry:main -// /out:test-pdb-types.exe" - -using namespace std; - -// Sizes of builtin types -static const int sizeof_char = sizeof(char); -static const int sizeof_uchar = sizeof(unsigned char); -static const int sizeof_short = sizeof(short); -static const int sizeof_ushort = sizeof(unsigned short); -static const int sizeof_int = sizeof(int); -static const int sizeof_uint = sizeof(unsigned int); -static const int sizeof_long = sizeof(long); -static const int sizeof_ulong = sizeof(unsigned long); -static const int sizeof_longlong = sizeof(long long); -static const int sizeof_ulonglong = sizeof(unsigned long long); -static const int sizeof_int64 = sizeof(__int64); -static const int sizeof_uint64 = sizeof(unsigned __int64); -static const int sizeof_float = sizeof(float); -static const int sizeof_double = sizeof(double); -static const int sizeof_bool = sizeof(bool); -static const int sizeof_wchar = sizeof(wchar_t); - -enum Enum { - EValue1 = 1, - EValue2 = 2, -}; - -enum ShortEnum : short { ESValue1 = 1, ESValue2 = 2 }; - -namespace NS { -class NSClass { - float f; - double d; -}; -} // namespace NS - -class Class { -public: - class NestedClass { - Enum e; - }; - ShortEnum se; -}; - -int test_func(int a, int b) { return a + b; } - -typedef Class ClassTypedef; -typedef NS::NSClass NSClassTypedef; -typedef int (*FuncPointerTypedef)(); -typedef int (*VariadicFuncPointerTypedef)(char, ...); -FuncPointerTypedef GlobalFunc; -VariadicFuncPointerTypedef GlobalVariadicFunc; -int GlobalArray[10]; - -static const int sizeof_NSClass = sizeof(NS::NSClass); -static const int sizeof_Class = sizeof(Class); -static const int sizeof_NestedClass = sizeof(Class::NestedClass); -static const int sizeof_Enum = sizeof(Enum); -static const int sizeof_ShortEnum = sizeof(ShortEnum); -static const int sizeof_ClassTypedef = sizeof(ClassTypedef); -static const int sizeof_NSClassTypedef = sizeof(NSClassTypedef); -static const int sizeof_FuncPointerTypedef = sizeof(FuncPointerTypedef); -static const int sizeof_VariadicFuncPointerTypedef = - sizeof(VariadicFuncPointerTypedef); -static const int sizeof_GlobalArray = sizeof(GlobalArray); - -int main(int argc, char **argv) { - ShortEnum e1; - Enum e2; - Class c1; - Class::NestedClass c2; - NS::NSClass c3; - - ClassTypedef t1; - NSClassTypedef t2; - return test_func(1, 2); -} diff --git a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-types.pdb b/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb-types.pdb deleted file mode 100644 index 1a249e3635ce49676b6319660540925bd779f5aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102400 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 z 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 diff --git a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.cpp b/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.cpp deleted file mode 100644 index 77956acd875..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.cpp +++ /dev/null @@ -1,9 +0,0 @@ -// Compile with "cl /c /Zi /GR- test-pdb.cpp" -// Link with "link test-pdb.obj /debug /nodefaultlib /entry:main -// /out:test-pdb.exe" - -#include "test-pdb.h" - -int __cdecl _purecall(void) { return 0; } - -int main(int argc, char **argv) { return foo(argc) + bar(argc); } diff --git a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.h b/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.h deleted file mode 100644 index c935de334d7..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef TEST_PDB_H -#define TEST_PDB_H - -#include "test-pdb-nested.h" - -int bar(int n); - -inline int foo(int n) { return baz(n) + 1; } - -#endif diff --git a/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.pdb b/gnu/llvm/lldb/unittests/SymbolFile/PDB/Inputs/test-pdb.pdb deleted file mode 100644 index f43d334d215a780e420337a61342242ee903141b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110592 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 diff --git a/gnu/llvm/lldb/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp b/gnu/llvm/lldb/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp deleted file mode 100644 index 7c7d1902eef..00000000000 --- a/gnu/llvm/lldb/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp +++ /dev/null @@ -1,627 +0,0 @@ -//===-- PythonDataObjectsTests.cpp ----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "llvm/ADT/STLExtras.h" -#include "llvm/DebugInfo/PDB/PDBSymbolData.h" -#include "llvm/DebugInfo/PDB/PDBSymbolExe.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/Path.h" -#include "llvm/Testing/Support/Error.h" - -#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" -#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" -#include "Plugins/SymbolFile/PDB/SymbolFilePDB.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "TestingSupport/TestUtilities.h" -#include "lldb/Core/Address.h" -#include "lldb/Core/Module.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Symbol/CompileUnit.h" -#include "lldb/Symbol/LineTable.h" -#include "lldb/Symbol/TypeMap.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/FileSpec.h" - -#if defined(_WIN32) -#include "lldb/Host/windows/windows.h" -#include -#endif - -#include - -using namespace lldb_private; - -class SymbolFilePDBTests : public testing::Test { -public: - void SetUp() override { -// Initialize and TearDown the plugin every time, so we get a brand new -// AST every time so that modifications to the AST from each test don't -// leak into the next test. -#if defined(_WIN32) - ::CoInitializeEx(nullptr, COINIT_MULTITHREADED); -#endif - - FileSystem::Initialize(); - HostInfo::Initialize(); - ObjectFilePECOFF::Initialize(); - SymbolFileDWARF::Initialize(); - TypeSystemClang::Initialize(); - SymbolFilePDB::Initialize(); - - m_pdb_test_exe = GetInputFilePath("test-pdb.exe"); - m_types_test_exe = GetInputFilePath("test-pdb-types.exe"); - } - - void TearDown() override { - SymbolFilePDB::Terminate(); - TypeSystemClang::Initialize(); - SymbolFileDWARF::Terminate(); - ObjectFilePECOFF::Terminate(); - HostInfo::Terminate(); - FileSystem::Terminate(); - -#if defined(_WIN32) - ::CoUninitialize(); -#endif - } - -protected: - std::string m_pdb_test_exe; - std::string m_types_test_exe; - - bool FileSpecMatchesAsBaseOrFull(const FileSpec &left, - const FileSpec &right) const { - // If the filenames don't match, the paths can't be equal - if (!left.FileEquals(right)) - return false; - // If BOTH have a directory, also compare the directories. - if (left.GetDirectory() && right.GetDirectory()) - return left.DirectoryEquals(right); - - // If one has a directory but not the other, they match. - return true; - } - - void VerifyLineEntry(lldb::ModuleSP module, const SymbolContext &sc, - const FileSpec &spec, LineTable <, uint32_t line, - lldb::addr_t addr) { - LineEntry entry; - Address address; - EXPECT_TRUE(module->ResolveFileAddress(addr, address)); - - EXPECT_TRUE(lt.FindLineEntryByAddress(address, entry)); - EXPECT_EQ(line, entry.line); - EXPECT_EQ(address, entry.range.GetBaseAddress()); - - EXPECT_TRUE(FileSpecMatchesAsBaseOrFull(spec, entry.file)); - } - - bool ContainsCompileUnit(const SymbolContextList &sc_list, - const FileSpec &spec) const { - for (size_t i = 0; i < sc_list.GetSize(); ++i) { - const SymbolContext &sc = sc_list[i]; - if (FileSpecMatchesAsBaseOrFull(sc.comp_unit->GetPrimaryFile(), spec)) - return true; - } - return false; - } - - uint64_t GetGlobalConstantInteger(llvm::pdb::IPDBSession &session, - llvm::StringRef var) const { - auto global = session.getGlobalScope(); - auto results = - global->findChildren(llvm::pdb::PDB_SymType::Data, var, - llvm::pdb::PDB_NameSearchFlags::NS_Default); - uint32_t count = results->getChildCount(); - if (count == 0) - return -1; - - auto item = results->getChildAtIndex(0); - auto symbol = llvm::dyn_cast(item.get()); - if (!symbol) - return -1; - llvm::pdb::Variant value = symbol->getValue(); - switch (value.Type) { - case llvm::pdb::PDB_VariantType::Int16: - return value.Value.Int16; - case llvm::pdb::PDB_VariantType::Int32: - return value.Value.Int32; - case llvm::pdb::PDB_VariantType::UInt16: - return value.Value.UInt16; - case llvm::pdb::PDB_VariantType::UInt32: - return value.Value.UInt32; - default: - return 0; - } - } -}; - -TEST_F(SymbolFilePDBTests, TestAbilitiesForPDB) { - // Test that when we have PDB debug info, SymbolFilePDB is used. - FileSpec fspec(m_pdb_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFile *symfile = module->GetSymbolFile(); - EXPECT_NE(nullptr, symfile); - EXPECT_EQ(symfile->GetPluginName(), SymbolFilePDB::GetPluginNameStatic()); - - uint32_t expected_abilities = SymbolFile::kAllAbilities; - EXPECT_EQ(expected_abilities, symfile->CalculateAbilities()); -} - -TEST_F(SymbolFilePDBTests, TestResolveSymbolContextBasename) { - // Test that attempting to call ResolveSymbolContext with only a basename - // finds all full paths - // with the same basename - FileSpec fspec(m_pdb_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFile *symfile = module->GetSymbolFile(); - - FileSpec header_spec("test-pdb.cpp"); - SymbolContextList sc_list; - SourceLocationSpec location_spec(header_spec, /*line=*/0); - uint32_t result_count = symfile->ResolveSymbolContext( - location_spec, lldb::eSymbolContextCompUnit, sc_list); - EXPECT_EQ(1u, result_count); - EXPECT_TRUE(ContainsCompileUnit(sc_list, header_spec)); -} - -TEST_F(SymbolFilePDBTests, TestResolveSymbolContextFullPath) { - // Test that attempting to call ResolveSymbolContext with a full path only - // finds the one source - // file that matches the full path. - FileSpec fspec(m_pdb_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFile *symfile = module->GetSymbolFile(); - - FileSpec header_spec( - R"spec(D:\src\llvm\tools\lldb\unittests\SymbolFile\PDB\Inputs\test-pdb.cpp)spec"); - SymbolContextList sc_list; - SourceLocationSpec location_spec(header_spec, /*line=*/0); - uint32_t result_count = symfile->ResolveSymbolContext( - location_spec, lldb::eSymbolContextCompUnit, sc_list); - EXPECT_GE(1u, result_count); - EXPECT_TRUE(ContainsCompileUnit(sc_list, header_spec)); -} - -TEST_F(SymbolFilePDBTests, TestLookupOfHeaderFileWithInlines) { - // Test that when looking up a header file via ResolveSymbolContext (i.e. a - // file that was not by itself - // compiled, but only contributes to the combined code of other source files), - // a SymbolContext is returned - // for each compiland which has line contributions from the requested header. - FileSpec fspec(m_pdb_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFile *symfile = module->GetSymbolFile(); - - FileSpec header_specs[] = {FileSpec("test-pdb.h"), - FileSpec("test-pdb-nested.h")}; - FileSpec main_cpp_spec("test-pdb.cpp"); - FileSpec alt_cpp_spec("test-pdb-alt.cpp"); - for (const auto &hspec : header_specs) { - SymbolContextList sc_list; - SourceLocationSpec location_spec(hspec, /*line=*/0, /*column=*/llvm::None, - /*check_inlines=*/true); - uint32_t result_count = symfile->ResolveSymbolContext( - location_spec, lldb::eSymbolContextCompUnit, sc_list); - EXPECT_EQ(2u, result_count); - EXPECT_TRUE(ContainsCompileUnit(sc_list, main_cpp_spec)); - EXPECT_TRUE(ContainsCompileUnit(sc_list, alt_cpp_spec)); - } -} - -TEST_F(SymbolFilePDBTests, TestLookupOfHeaderFileWithNoInlines) { - // Test that when looking up a header file via ResolveSymbolContext (i.e. a - // file that was not by itself - // compiled, but only contributes to the combined code of other source files), - // that if check_inlines - // is false, no SymbolContexts are returned. - FileSpec fspec(m_pdb_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFile *symfile = module->GetSymbolFile(); - - FileSpec header_specs[] = {FileSpec("test-pdb.h"), - FileSpec("test-pdb-nested.h")}; - for (const auto &hspec : header_specs) { - SymbolContextList sc_list; - SourceLocationSpec location_spec(hspec, /*line=*/0); - uint32_t result_count = symfile->ResolveSymbolContext( - location_spec, lldb::eSymbolContextCompUnit, sc_list); - EXPECT_EQ(0u, result_count); - } -} - -TEST_F(SymbolFilePDBTests, TestLineTablesMatchAll) { - // Test that when calling ResolveSymbolContext with a line number of 0, all - // line entries from - // the specified files are returned. - FileSpec fspec(m_pdb_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFile *symfile = module->GetSymbolFile(); - - FileSpec source_file("test-pdb.cpp"); - FileSpec header1("test-pdb.h"); - FileSpec header2("test-pdb-nested.h"); - uint32_t cus = symfile->GetNumCompileUnits(); - EXPECT_EQ(2u, cus); - - SymbolContextList sc_list; - lldb::SymbolContextItem scope = - lldb::eSymbolContextCompUnit | lldb::eSymbolContextLineEntry; - - SourceLocationSpec location_spec( - source_file, /*line=*/0, /*column=*/llvm::None, /*check_inlines=*/true); - uint32_t count = symfile->ResolveSymbolContext(location_spec, scope, sc_list); - EXPECT_EQ(1u, count); - SymbolContext sc; - EXPECT_TRUE(sc_list.GetContextAtIndex(0, sc)); - - LineTable *lt = sc.comp_unit->GetLineTable(); - EXPECT_NE(nullptr, lt); - count = lt->GetSize(); - // We expect one extra entry for termination (per function) - EXPECT_EQ(16u, count); - - VerifyLineEntry(module, sc, source_file, *lt, 7, 0x401040); - VerifyLineEntry(module, sc, source_file, *lt, 8, 0x401043); - VerifyLineEntry(module, sc, source_file, *lt, 9, 0x401045); - - VerifyLineEntry(module, sc, source_file, *lt, 13, 0x401050); - VerifyLineEntry(module, sc, source_file, *lt, 14, 0x401054); - VerifyLineEntry(module, sc, source_file, *lt, 15, 0x401070); - - VerifyLineEntry(module, sc, header1, *lt, 9, 0x401090); - VerifyLineEntry(module, sc, header1, *lt, 10, 0x401093); - VerifyLineEntry(module, sc, header1, *lt, 11, 0x4010a2); - - VerifyLineEntry(module, sc, header2, *lt, 5, 0x401080); - VerifyLineEntry(module, sc, header2, *lt, 6, 0x401083); - VerifyLineEntry(module, sc, header2, *lt, 7, 0x401089); -} - -TEST_F(SymbolFilePDBTests, TestLineTablesMatchSpecific) { - // Test that when calling ResolveSymbolContext with a specific line number, - // only line entries - // which match the requested line are returned. - FileSpec fspec(m_pdb_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFile *symfile = module->GetSymbolFile(); - - FileSpec source_file("test-pdb.cpp"); - FileSpec header1("test-pdb.h"); - FileSpec header2("test-pdb-nested.h"); - uint32_t cus = symfile->GetNumCompileUnits(); - EXPECT_EQ(2u, cus); - - SymbolContextList sc_list; - lldb::SymbolContextItem scope = - lldb::eSymbolContextCompUnit | lldb::eSymbolContextLineEntry; - - // First test with line 7, and verify that only line 7 entries are added. - SourceLocationSpec location_spec( - source_file, /*line=*/7, /*column=*/llvm::None, /*check_inlines=*/true); - uint32_t count = symfile->ResolveSymbolContext(location_spec, scope, sc_list); - EXPECT_EQ(1u, count); - SymbolContext sc; - EXPECT_TRUE(sc_list.GetContextAtIndex(0, sc)); - - LineTable *lt = sc.comp_unit->GetLineTable(); - EXPECT_NE(nullptr, lt); - count = lt->GetSize(); - // We expect one extra entry for termination - EXPECT_EQ(3u, count); - - VerifyLineEntry(module, sc, source_file, *lt, 7, 0x401040); - VerifyLineEntry(module, sc, header2, *lt, 7, 0x401089); - - sc_list.Clear(); - // Then test with line 9, and verify that only line 9 entries are added. - location_spec = SourceLocationSpec( - source_file, /*line=*/9, /*column=*/llvm::None, /*check_inlines=*/true); - count = symfile->ResolveSymbolContext(location_spec, scope, sc_list); - EXPECT_EQ(1u, count); - EXPECT_TRUE(sc_list.GetContextAtIndex(0, sc)); - - lt = sc.comp_unit->GetLineTable(); - EXPECT_NE(nullptr, lt); - count = lt->GetSize(); - // We expect one extra entry for termination - EXPECT_EQ(3u, count); - - VerifyLineEntry(module, sc, source_file, *lt, 9, 0x401045); - VerifyLineEntry(module, sc, header1, *lt, 9, 0x401090); -} - -TEST_F(SymbolFilePDBTests, TestSimpleClassTypes) { - FileSpec fspec(m_types_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFilePDB *symfile = - static_cast(module->GetSymbolFile()); - llvm::pdb::IPDBSession &session = symfile->GetPDBSession(); - llvm::DenseSet searched_files; - TypeMap results; - symfile->FindTypes(ConstString("Class"), CompilerDeclContext(), 0, - searched_files, results); - EXPECT_EQ(1u, results.GetSize()); - lldb::TypeSP udt_type = results.GetTypeAtIndex(0); - EXPECT_EQ(ConstString("Class"), udt_type->GetName()); - CompilerType compiler_type = udt_type->GetForwardCompilerType(); - EXPECT_TRUE(TypeSystemClang::IsClassType(compiler_type.GetOpaqueQualType())); - EXPECT_EQ(GetGlobalConstantInteger(session, "sizeof_Class"), - udt_type->GetByteSize(nullptr)); -} - -TEST_F(SymbolFilePDBTests, TestNestedClassTypes) { - FileSpec fspec(m_types_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFilePDB *symfile = - static_cast(module->GetSymbolFile()); - llvm::pdb::IPDBSession &session = symfile->GetPDBSession(); - llvm::DenseSet searched_files; - TypeMap results; - - auto clang_ast_ctx_or_err = - symfile->GetTypeSystemForLanguage(lldb::eLanguageTypeC_plus_plus); - ASSERT_THAT_EXPECTED(clang_ast_ctx_or_err, llvm::Succeeded()); - - auto clang_ast_ctx = - llvm::dyn_cast_or_null(&clang_ast_ctx_or_err.get()); - EXPECT_NE(nullptr, clang_ast_ctx); - - symfile->FindTypes(ConstString("Class"), CompilerDeclContext(), 0, - searched_files, results); - EXPECT_EQ(1u, results.GetSize()); - - auto Class = results.GetTypeAtIndex(0); - EXPECT_TRUE(Class); - EXPECT_TRUE(Class->IsValidType()); - - auto ClassCompilerType = Class->GetFullCompilerType(); - EXPECT_TRUE(ClassCompilerType.IsValid()); - - auto ClassDeclCtx = clang_ast_ctx->GetDeclContextForType(ClassCompilerType); - EXPECT_NE(nullptr, ClassDeclCtx); - - // There are two symbols for nested classes: one belonging to enclosing class - // and one is global. We process correctly this case and create the same - // compiler type for both, but `FindTypes` may return more than one type - // (with the same compiler type) because the symbols have different IDs. - - TypeMap more_results; - auto ClassCompilerDeclCtx = CompilerDeclContext(clang_ast_ctx, ClassDeclCtx); - symfile->FindTypes(ConstString("NestedClass"), ClassCompilerDeclCtx, 0, - searched_files, more_results); - EXPECT_LE(1u, more_results.GetSize()); - - lldb::TypeSP udt_type = more_results.GetTypeAtIndex(0); - EXPECT_EQ(ConstString("NestedClass"), udt_type->GetName()); - - CompilerType compiler_type = udt_type->GetForwardCompilerType(); - EXPECT_TRUE(TypeSystemClang::IsClassType(compiler_type.GetOpaqueQualType())); - - EXPECT_EQ(GetGlobalConstantInteger(session, "sizeof_NestedClass"), - udt_type->GetByteSize(nullptr)); -} - -TEST_F(SymbolFilePDBTests, TestClassInNamespace) { - FileSpec fspec(m_types_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFilePDB *symfile = - static_cast(module->GetSymbolFile()); - llvm::pdb::IPDBSession &session = symfile->GetPDBSession(); - llvm::DenseSet searched_files; - TypeMap results; - - auto clang_ast_ctx_or_err = - symfile->GetTypeSystemForLanguage(lldb::eLanguageTypeC_plus_plus); - ASSERT_THAT_EXPECTED(clang_ast_ctx_or_err, llvm::Succeeded()); - - auto clang_ast_ctx = - llvm::dyn_cast_or_null(&clang_ast_ctx_or_err.get()); - EXPECT_NE(nullptr, clang_ast_ctx); - - clang::ASTContext &ast_ctx = clang_ast_ctx->getASTContext(); - - auto tu = ast_ctx.getTranslationUnitDecl(); - EXPECT_NE(nullptr, tu); - - symfile->ParseDeclsForContext(CompilerDeclContext( - clang_ast_ctx, static_cast(tu))); - - auto ns_namespace = symfile->FindNamespace(ConstString("NS"), CompilerDeclContext()); - EXPECT_TRUE(ns_namespace.IsValid()); - - symfile->FindTypes(ConstString("NSClass"), ns_namespace, 0, searched_files, - results); - EXPECT_EQ(1u, results.GetSize()); - - lldb::TypeSP udt_type = results.GetTypeAtIndex(0); - EXPECT_EQ(ConstString("NSClass"), udt_type->GetName()); - - CompilerType compiler_type = udt_type->GetForwardCompilerType(); - EXPECT_TRUE(TypeSystemClang::IsClassType(compiler_type.GetOpaqueQualType())); - - EXPECT_EQ(GetGlobalConstantInteger(session, "sizeof_NSClass"), - udt_type->GetByteSize(nullptr)); -} - -TEST_F(SymbolFilePDBTests, TestEnumTypes) { - FileSpec fspec(m_types_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFilePDB *symfile = - static_cast(module->GetSymbolFile()); - llvm::pdb::IPDBSession &session = symfile->GetPDBSession(); - llvm::DenseSet searched_files; - const char *EnumsToCheck[] = {"Enum", "ShortEnum"}; - for (auto Enum : EnumsToCheck) { - TypeMap results; - symfile->FindTypes(ConstString(Enum), CompilerDeclContext(), 0, - searched_files, results); - EXPECT_EQ(1u, results.GetSize()); - lldb::TypeSP enum_type = results.GetTypeAtIndex(0); - EXPECT_EQ(ConstString(Enum), enum_type->GetName()); - CompilerType compiler_type = enum_type->GetFullCompilerType(); - EXPECT_TRUE(TypeSystemClang::IsEnumType(compiler_type.GetOpaqueQualType())); - clang::EnumDecl *enum_decl = TypeSystemClang::GetAsEnumDecl(compiler_type); - EXPECT_NE(nullptr, enum_decl); - EXPECT_EQ(2, std::distance(enum_decl->enumerator_begin(), - enum_decl->enumerator_end())); - - std::string sizeof_var = "sizeof_"; - sizeof_var.append(Enum); - EXPECT_EQ(GetGlobalConstantInteger(session, sizeof_var), - enum_type->GetByteSize(nullptr)); - } -} - -TEST_F(SymbolFilePDBTests, TestArrayTypes) { - // In order to get this test working, we need to support lookup by symbol - // name. Because array - // types themselves do not have names, only the symbols have names (i.e. the - // name of the array). -} - -TEST_F(SymbolFilePDBTests, TestFunctionTypes) { - // In order to get this test working, we need to support lookup by symbol - // name. Because array - // types themselves do not have names, only the symbols have names (i.e. the - // name of the array). -} - -TEST_F(SymbolFilePDBTests, TestTypedefs) { - FileSpec fspec(m_types_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFilePDB *symfile = - static_cast(module->GetSymbolFile()); - llvm::pdb::IPDBSession &session = symfile->GetPDBSession(); - llvm::DenseSet searched_files; - TypeMap results; - - const char *TypedefsToCheck[] = {"ClassTypedef", "NSClassTypedef", - "FuncPointerTypedef", - "VariadicFuncPointerTypedef"}; - for (auto Typedef : TypedefsToCheck) { - TypeMap results; - symfile->FindTypes(ConstString(Typedef), CompilerDeclContext(), 0, - searched_files, results); - EXPECT_EQ(1u, results.GetSize()); - lldb::TypeSP typedef_type = results.GetTypeAtIndex(0); - EXPECT_EQ(ConstString(Typedef), typedef_type->GetName()); - CompilerType compiler_type = typedef_type->GetFullCompilerType(); - TypeSystemClang *clang_type_system = - llvm::dyn_cast_or_null(compiler_type.GetTypeSystem()); - EXPECT_TRUE( - clang_type_system->IsTypedefType(compiler_type.GetOpaqueQualType())); - - std::string sizeof_var = "sizeof_"; - sizeof_var.append(Typedef); - EXPECT_EQ(GetGlobalConstantInteger(session, sizeof_var), - typedef_type->GetByteSize(nullptr)); - } -} - -TEST_F(SymbolFilePDBTests, TestRegexNameMatch) { - FileSpec fspec(m_types_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFilePDB *symfile = - static_cast(module->GetSymbolFile()); - TypeMap results; - - symfile->FindTypesByRegex(RegularExpression(".*"), 0, results); - EXPECT_GT(results.GetSize(), 1u); - - // We expect no exception thrown if the given regex can't be compiled - results.Clear(); - symfile->FindTypesByRegex(RegularExpression("**"), 0, results); - EXPECT_EQ(0u, results.GetSize()); -} - -TEST_F(SymbolFilePDBTests, TestMaxMatches) { - FileSpec fspec(m_types_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFilePDB *symfile = - static_cast(module->GetSymbolFile()); - llvm::DenseSet searched_files; - TypeMap results; - const ConstString name("ClassTypedef"); - symfile->FindTypes(name, CompilerDeclContext(), 0, searched_files, results); - // Try to limit ourselves from 1 to 10 results, otherwise we could - // be doing this thousands of times. The idea is just to make sure - // that for a variety of values, the number of limited results - // always comes out to the number we are expecting. - uint32_t num_results = results.GetSize(); - uint32_t iterations = std::min(num_results, 10u); - for (uint32_t i = 1; i <= iterations; ++i) { - TypeMap more_results; - symfile->FindTypes(name, CompilerDeclContext(), i, searched_files, - more_results); - uint32_t num_limited_results = more_results.GetSize(); - EXPECT_EQ(i, num_limited_results); - } -} - -TEST_F(SymbolFilePDBTests, TestNullName) { - FileSpec fspec(m_types_test_exe); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolFilePDB *symfile = - static_cast(module->GetSymbolFile()); - llvm::DenseSet searched_files; - TypeMap results; - symfile->FindTypes(ConstString(), CompilerDeclContext(), 0, searched_files, - results); - EXPECT_EQ(0u, results.GetSize()); -} - -TEST_F(SymbolFilePDBTests, TestFindSymbolsWithNameAndType) { - FileSpec fspec(m_pdb_test_exe.c_str()); - ArchSpec aspec("i686-pc-windows"); - lldb::ModuleSP module = std::make_shared(fspec, aspec); - - SymbolContextList sc_list; - module->FindSymbolsWithNameAndType(ConstString("?foo@@YAHH@Z"), - lldb::eSymbolTypeAny, sc_list); - EXPECT_EQ(1u, sc_list.GetSize()); - - SymbolContext sc; - EXPECT_TRUE(sc_list.GetContextAtIndex(0, sc)); - EXPECT_STREQ("int foo(int)", - sc.GetFunctionName(Mangled::ePreferDemangled).AsCString()); -} diff --git a/gnu/llvm/lldb/unittests/Target/ABITest.cpp b/gnu/llvm/lldb/unittests/Target/ABITest.cpp deleted file mode 100644 index 6ac34c872f2..00000000000 --- a/gnu/llvm/lldb/unittests/Target/ABITest.cpp +++ /dev/null @@ -1,26 +0,0 @@ -//===-- ABITest.cpp -------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/ABI.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(MCBasedABI, MapRegisterName) { - auto map = [](std::string name) { - MCBasedABI::MapRegisterName(name, "foo", "bar"); - return name; - }; - EXPECT_EQ("bar", map("foo")); - EXPECT_EQ("bar0", map("foo0")); - EXPECT_EQ("bar47", map("foo47")); - EXPECT_EQ("foo47x", map("foo47x")); - EXPECT_EQ("fooo47", map("fooo47")); - EXPECT_EQ("bar47", map("bar47")); -} - diff --git a/gnu/llvm/lldb/unittests/Target/CMakeLists.txt b/gnu/llvm/lldb/unittests/Target/CMakeLists.txt deleted file mode 100644 index 2c3ba699b0e..00000000000 --- a/gnu/llvm/lldb/unittests/Target/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -add_lldb_unittest(TargetTests - ABITest.cpp - ExecutionContextTest.cpp - MemoryRegionInfoTest.cpp - ModuleCacheTest.cpp - PathMappingListTest.cpp - RemoteAwarePlatformTest.cpp - StackFrameRecognizerTest.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbPluginObjectFileELF - lldbPluginPlatformLinux - lldbPluginSymbolFileSymtab - lldbTarget - lldbSymbol - lldbUtility - lldbUtilityHelpers - LINK_COMPONENTS - Support - ) - -add_unittest_inputs(TargetTests TestModule.so) diff --git a/gnu/llvm/lldb/unittests/Target/ExecutionContextTest.cpp b/gnu/llvm/lldb/unittests/Target/ExecutionContextTest.cpp deleted file mode 100644 index 7456faf65f6..00000000000 --- a/gnu/llvm/lldb/unittests/Target/ExecutionContextTest.cpp +++ /dev/null @@ -1,120 +0,0 @@ -//===-- ExecutionContextTest.cpp ------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/ExecutionContext.h" -#include "Plugins/Platform/Linux/PlatformLinux.h" -#include "lldb/Core/Debugger.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Target/Platform.h" -#include "lldb/Target/Process.h" -#include "lldb/Target/Target.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/Endian.h" -#include "lldb/Utility/Reproducer.h" -#include "lldb/lldb-enumerations.h" -#include "lldb/lldb-forward.h" -#include "lldb/lldb-private-enumerations.h" -#include "lldb/lldb-private.h" -#include "llvm/Support/FormatVariadic.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb_private::repro; -using namespace lldb; - -namespace { -class ExecutionContextTest : public ::testing::Test { -public: - void SetUp() override { - llvm::cantFail(Reproducer::Initialize(ReproducerMode::Off, llvm::None)); - FileSystem::Initialize(); - HostInfo::Initialize(); - platform_linux::PlatformLinux::Initialize(); - } - void TearDown() override { - platform_linux::PlatformLinux::Terminate(); - HostInfo::Terminate(); - FileSystem::Terminate(); - Reproducer::Terminate(); - } -}; - -class DummyProcess : public Process { -public: - using Process::Process; - - bool CanDebug(lldb::TargetSP target, bool plugin_specified_by_name) override { - return true; - } - Status DoDestroy() override { return {}; } - void RefreshStateAfterStop() override {} - size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, - Status &error) override { - return 0; - } - bool DoUpdateThreadList(ThreadList &old_thread_list, - ThreadList &new_thread_list) override { - return false; - } - ConstString GetPluginName() override { return ConstString("Dummy"); } - uint32_t GetPluginVersion() override { return 0; } -}; -} // namespace - -TEST_F(ExecutionContextTest, GetByteOrder) { - ExecutionContext exe_ctx(nullptr, nullptr, nullptr); - EXPECT_EQ(endian::InlHostByteOrder(), exe_ctx.GetByteOrder()); -} - -TEST_F(ExecutionContextTest, GetByteOrderTarget) { - ArchSpec arch("powerpc64-pc-linux"); - - Platform::SetHostPlatform( - platform_linux::PlatformLinux::CreateInstance(true, &arch)); - - DebuggerSP debugger_sp = Debugger::CreateInstance(); - ASSERT_TRUE(debugger_sp); - - TargetSP target_sp; - PlatformSP platform_sp; - Status error = debugger_sp->GetTargetList().CreateTarget( - *debugger_sp, "", arch, eLoadDependentsNo, platform_sp, target_sp); - ASSERT_TRUE(target_sp); - ASSERT_TRUE(target_sp->GetArchitecture().IsValid()); - ASSERT_TRUE(platform_sp); - - ExecutionContext target_ctx(target_sp, false); - EXPECT_EQ(target_sp->GetArchitecture().GetByteOrder(), - target_ctx.GetByteOrder()); -} - -TEST_F(ExecutionContextTest, GetByteOrderProcess) { - ArchSpec arch("powerpc64-pc-linux"); - - Platform::SetHostPlatform( - platform_linux::PlatformLinux::CreateInstance(true, &arch)); - - DebuggerSP debugger_sp = Debugger::CreateInstance(); - ASSERT_TRUE(debugger_sp); - - TargetSP target_sp; - PlatformSP platform_sp; - Status error = debugger_sp->GetTargetList().CreateTarget( - *debugger_sp, "", arch, eLoadDependentsNo, platform_sp, target_sp); - ASSERT_TRUE(target_sp); - ASSERT_TRUE(target_sp->GetArchitecture().IsValid()); - ASSERT_TRUE(platform_sp); - - ListenerSP listener_sp(Listener::MakeListener("dummy")); - ProcessSP process_sp = std::make_shared(target_sp, listener_sp); - ASSERT_TRUE(process_sp); - - ExecutionContext process_ctx(process_sp); - EXPECT_EQ(process_sp->GetByteOrder(), process_ctx.GetByteOrder()); -} diff --git a/gnu/llvm/lldb/unittests/Target/Inputs/TestModule.c b/gnu/llvm/lldb/unittests/Target/Inputs/TestModule.c deleted file mode 100644 index 6347f726494..00000000000 --- a/gnu/llvm/lldb/unittests/Target/Inputs/TestModule.c +++ /dev/null @@ -1,9 +0,0 @@ -// Compile with $CC -nostdlib -shared TestModule.c -o TestModule.so -// The actual contents of the test module is not important here. I am using this -// because it -// produces an extremely tiny (but still perfectly valid) module. - -void boom(void) { - char *BOOM; - *BOOM = 47; -} diff --git a/gnu/llvm/lldb/unittests/Target/MemoryRegionInfoTest.cpp b/gnu/llvm/lldb/unittests/Target/MemoryRegionInfoTest.cpp deleted file mode 100644 index c272b23b233..00000000000 --- a/gnu/llvm/lldb/unittests/Target/MemoryRegionInfoTest.cpp +++ /dev/null @@ -1,19 +0,0 @@ -//===-- MemoryRegionInfoTest.cpp ------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/MemoryRegionInfo.h" -#include "llvm/Support/FormatVariadic.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(MemoryRegionInfoTest, Formatv) { - EXPECT_EQ("yes", llvm::formatv("{0}", MemoryRegionInfo::eYes).str()); - EXPECT_EQ("no", llvm::formatv("{0}", MemoryRegionInfo::eNo).str()); - EXPECT_EQ("don't know", llvm::formatv("{0}", MemoryRegionInfo::eDontKnow).str()); -} diff --git a/gnu/llvm/lldb/unittests/Target/ModuleCacheTest.cpp b/gnu/llvm/lldb/unittests/Target/ModuleCacheTest.cpp deleted file mode 100644 index 273338c8369..00000000000 --- a/gnu/llvm/lldb/unittests/Target/ModuleCacheTest.cpp +++ /dev/null @@ -1,158 +0,0 @@ -#include "gtest/gtest.h" - -#include "llvm/ADT/SmallString.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/Path.h" - -#include "Plugins/ObjectFile/ELF/ObjectFileELF.h" -#include "Plugins/SymbolFile/Symtab/SymbolFileSymtab.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" -#include "lldb/Core/Module.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Symbol/SymbolContext.h" -#include "lldb/Target/ModuleCache.h" - -using namespace lldb_private; -using namespace lldb; - -namespace { - -class ModuleCacheTest : public testing::Test { - SubsystemRAII - subsystems; - -public: - void SetUp() override; - -protected: - FileSpec s_cache_dir; - std::string s_test_executable; - - void TryGetAndPut(const FileSpec &cache_dir, const char *hostname, - bool expect_download); -}; -} - -static const char dummy_hostname[] = "dummy_hostname"; -static const char dummy_remote_dir[] = "bin"; -static const char module_name[] = "TestModule.so"; -static const char module_uuid[] = - "F4E7E991-9B61-6AD4-0073-561AC3D9FA10-C043A476"; -static const size_t module_size = 5602; - -static FileSpec GetDummyRemotePath() { - FileSpec fs("/", FileSpec::Style::posix); - fs.AppendPathComponent(dummy_remote_dir); - fs.AppendPathComponent(module_name); - return fs; -} - -static FileSpec GetUuidView(FileSpec spec) { - spec.AppendPathComponent(".cache"); - spec.AppendPathComponent(module_uuid); - spec.AppendPathComponent(module_name); - return spec; -} - -static FileSpec GetSysrootView(FileSpec spec, const char *hostname) { - spec.AppendPathComponent(hostname); - spec.AppendPathComponent(dummy_remote_dir); - spec.AppendPathComponent(module_name); - return spec; -} - -void ModuleCacheTest::SetUp() { - s_cache_dir = HostInfo::GetProcessTempDir(); - s_test_executable = GetInputFilePath(module_name); -} - -static void VerifyDiskState(const FileSpec &cache_dir, const char *hostname) { - FileSpec uuid_view = GetUuidView(cache_dir); - EXPECT_TRUE(FileSystem::Instance().Exists(uuid_view)) - << "uuid_view is: " << uuid_view.GetCString(); - EXPECT_EQ(module_size, FileSystem::Instance().GetByteSize(uuid_view)); - - FileSpec sysroot_view = GetSysrootView(cache_dir, hostname); - EXPECT_TRUE(FileSystem::Instance().Exists(sysroot_view)) - << "sysroot_view is: " << sysroot_view.GetCString(); - EXPECT_EQ(module_size, FileSystem::Instance().GetByteSize(sysroot_view)); -} - -void ModuleCacheTest::TryGetAndPut(const FileSpec &cache_dir, - const char *hostname, bool expect_download) { - ModuleCache mc; - ModuleSpec module_spec; - module_spec.GetFileSpec() = GetDummyRemotePath(); - module_spec.GetUUID().SetFromStringRef(module_uuid); - module_spec.SetObjectSize(module_size); - ModuleSP module_sp; - bool did_create; - bool download_called = false; - - Status error = mc.GetAndPut( - cache_dir, hostname, module_spec, - [&download_called, this](const ModuleSpec &module_spec, - const FileSpec &tmp_download_file_spec) { - download_called = true; - EXPECT_STREQ(GetDummyRemotePath().GetCString(), - module_spec.GetFileSpec().GetCString()); - std::error_code ec = llvm::sys::fs::copy_file( - s_test_executable, tmp_download_file_spec.GetCString()); - EXPECT_FALSE(ec); - return Status(); - }, - [](const ModuleSP &module_sp, const FileSpec &tmp_download_file_spec) { - return Status("Not supported."); - }, - module_sp, &did_create); - EXPECT_EQ(expect_download, download_called); - - EXPECT_TRUE(error.Success()) << "Error was: " << error.AsCString(); - EXPECT_TRUE(did_create); - ASSERT_TRUE(bool(module_sp)); - - SymbolContextList sc_list; - module_sp->FindFunctionSymbols(ConstString("boom"), eFunctionNameTypeFull, - sc_list); - EXPECT_EQ(1u, sc_list.GetSize()); - EXPECT_STREQ(GetDummyRemotePath().GetCString(), - module_sp->GetPlatformFileSpec().GetCString()); - EXPECT_STREQ(module_uuid, module_sp->GetUUID().GetAsString().c_str()); -} - -TEST_F(ModuleCacheTest, GetAndPut) { - FileSpec test_cache_dir = s_cache_dir; - test_cache_dir.AppendPathComponent("GetAndPut"); - - const bool expect_download = true; - TryGetAndPut(test_cache_dir, dummy_hostname, expect_download); - VerifyDiskState(test_cache_dir, dummy_hostname); -} - -TEST_F(ModuleCacheTest, GetAndPutUuidExists) { - FileSpec test_cache_dir = s_cache_dir; - test_cache_dir.AppendPathComponent("GetAndPutUuidExists"); - - FileSpec uuid_view = GetUuidView(test_cache_dir); - std::error_code ec = - llvm::sys::fs::create_directories(uuid_view.GetDirectory().GetCString()); - ASSERT_FALSE(ec); - ec = llvm::sys::fs::copy_file(s_test_executable, uuid_view.GetCString()); - ASSERT_FALSE(ec); - - const bool expect_download = false; - TryGetAndPut(test_cache_dir, dummy_hostname, expect_download); - VerifyDiskState(test_cache_dir, dummy_hostname); -} - -TEST_F(ModuleCacheTest, GetAndPutStrangeHostname) { - FileSpec test_cache_dir = s_cache_dir; - test_cache_dir.AppendPathComponent("GetAndPutStrangeHostname"); - - const bool expect_download = true; - TryGetAndPut(test_cache_dir, "tab\tcolon:asterisk*", expect_download); - VerifyDiskState(test_cache_dir, "tab_colon_asterisk_"); -} diff --git a/gnu/llvm/lldb/unittests/Target/PathMappingListTest.cpp b/gnu/llvm/lldb/unittests/Target/PathMappingListTest.cpp deleted file mode 100644 index 90b6f1134a2..00000000000 --- a/gnu/llvm/lldb/unittests/Target/PathMappingListTest.cpp +++ /dev/null @@ -1,140 +0,0 @@ -//===-- PathMappingListTest.cpp -------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/PathMappingList.h" -#include "lldb/Utility/FileSpec.h" -#include "llvm/ADT/ArrayRef.h" -#include "gtest/gtest.h" -#include - -using namespace lldb_private; - -namespace { -struct Matches { - FileSpec original; - FileSpec remapped; - Matches(const char *o, const char *r) : original(o), remapped(r) {} - Matches(const char *o, llvm::sys::path::Style style, const char *r) - : original(o, style), remapped(r) {} -}; -} // namespace - -static void TestPathMappings(const PathMappingList &map, - llvm::ArrayRef matches, - llvm::ArrayRef fails) { - ConstString actual_remapped; - for (const auto &fail : fails) { - SCOPED_TRACE(fail.GetCString()); - EXPECT_FALSE(map.RemapPath(fail, actual_remapped)) - << "actual_remapped: " << actual_remapped.GetCString(); - } - for (const auto &match : matches) { - SCOPED_TRACE(match.original.GetPath() + " -> " + match.remapped.GetPath()); - std::string orig_normalized = match.original.GetPath(); - EXPECT_TRUE( - map.RemapPath(ConstString(match.original.GetPath()), actual_remapped)); - EXPECT_EQ(FileSpec(actual_remapped.GetStringRef()), match.remapped); - FileSpec unmapped_spec; - EXPECT_TRUE(map.ReverseRemapPath(match.remapped, unmapped_spec)); - std::string unmapped_path = unmapped_spec.GetPath(); - EXPECT_EQ(unmapped_path, orig_normalized); - } -} - -TEST(PathMappingListTest, RelativeTests) { - Matches matches[] = { - {".", "/tmp"}, - {"./", "/tmp"}, - {"./////", "/tmp"}, - {"./foo.c", "/tmp/foo.c"}, - {"foo.c", "/tmp/foo.c"}, - {"./bar/foo.c", "/tmp/bar/foo.c"}, - {"bar/foo.c", "/tmp/bar/foo.c"}, - }; - ConstString fails[] = { -#ifdef _WIN32 - ConstString("C:\\"), - ConstString("C:\\a"), -#else - ConstString("/a"), - ConstString("/"), -#endif - }; - PathMappingList map; - map.Append(ConstString("."), ConstString("/tmp"), false); - TestPathMappings(map, matches, fails); - PathMappingList map2; - map2.Append(ConstString(""), ConstString("/tmp"), false); - TestPathMappings(map, matches, fails); -} - -TEST(PathMappingListTest, AbsoluteTests) { - PathMappingList map; - map.Append(ConstString("/old"), ConstString("/new"), false); - Matches matches[] = { - {"/old", "/new"}, - {"/old/", "/new"}, - {"/old/foo/.", "/new/foo"}, - {"/old/foo.c", "/new/foo.c"}, - {"/old/foo.c/.", "/new/foo.c"}, - {"/old/./foo.c", "/new/foo.c"}, - }; - ConstString fails[] = { - ConstString("/foo"), - ConstString("/"), - ConstString("foo.c"), - ConstString("./foo.c"), - ConstString("../foo.c"), - ConstString("../bar/foo.c"), - }; - TestPathMappings(map, matches, fails); -} - -TEST(PathMappingListTest, RemapRoot) { - PathMappingList map; - map.Append(ConstString("/"), ConstString("/new"), false); - Matches matches[] = { - {"/old", "/new/old"}, - {"/old/", "/new/old"}, - {"/old/foo/.", "/new/old/foo"}, - {"/old/foo.c", "/new/old/foo.c"}, - {"/old/foo.c/.", "/new/old/foo.c"}, - {"/old/./foo.c", "/new/old/foo.c"}, - }; - ConstString fails[] = { - ConstString("foo.c"), - ConstString("./foo.c"), - ConstString("../foo.c"), - ConstString("../bar/foo.c"), - }; - TestPathMappings(map, matches, fails); -} - -#ifndef _WIN32 -TEST(PathMappingListTest, CrossPlatformTests) { - PathMappingList map; - map.Append(ConstString(R"(C:\old)"), ConstString("/new"), false); - Matches matches[] = { - {R"(C:\old)", llvm::sys::path::Style::windows, "/new"}, - {R"(C:\old\)", llvm::sys::path::Style::windows, "/new"}, - {R"(C:\old\foo\.)", llvm::sys::path::Style::windows, "/new/foo"}, - {R"(C:\old\foo.c)", llvm::sys::path::Style::windows, "/new/foo.c"}, - {R"(C:\old\foo.c\.)", llvm::sys::path::Style::windows, "/new/foo.c"}, - {R"(C:\old\.\foo.c)", llvm::sys::path::Style::windows, "/new/foo.c"}, - }; - ConstString fails[] = { - ConstString("/foo"), - ConstString("/"), - ConstString("foo.c"), - ConstString("./foo.c"), - ConstString("../foo.c"), - ConstString("../bar/foo.c"), - }; - TestPathMappings(map, matches, fails); -} -#endif diff --git a/gnu/llvm/lldb/unittests/Target/RemoteAwarePlatformTest.cpp b/gnu/llvm/lldb/unittests/Target/RemoteAwarePlatformTest.cpp deleted file mode 100644 index be9fbc347a2..00000000000 --- a/gnu/llvm/lldb/unittests/Target/RemoteAwarePlatformTest.cpp +++ /dev/null @@ -1,94 +0,0 @@ -//===-- RemoteAwarePlatformTest.cpp ---------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/RemoteAwarePlatform.h" -#include "lldb/Core/Debugger.h" -#include "lldb/Core/Module.h" -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Target/Platform.h" -#include "lldb/Target/Process.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb; -using namespace testing; - -class RemoteAwarePlatformTester : public RemoteAwarePlatform { -public: - using RemoteAwarePlatform::RemoteAwarePlatform; - - MOCK_METHOD0(GetDescription, const char *()); - MOCK_METHOD0(GetPluginVersion, uint32_t()); - MOCK_METHOD0(GetPluginName, ConstString()); - MOCK_METHOD2(GetSupportedArchitectureAtIndex, bool(uint32_t, ArchSpec &)); - MOCK_METHOD4(Attach, - ProcessSP(ProcessAttachInfo &, Debugger &, Target *, Status &)); - MOCK_METHOD0(CalculateTrapHandlerSymbolNames, void()); - - void SetRemotePlatform(lldb::PlatformSP platform) { - m_remote_platform_sp = platform; - } -}; - -class TargetPlatformTester : public Platform { -public: - using Platform::Platform; - - MOCK_METHOD0(GetDescription, const char *()); - MOCK_METHOD0(GetPluginVersion, uint32_t()); - MOCK_METHOD0(GetPluginName, ConstString()); - MOCK_METHOD2(GetSupportedArchitectureAtIndex, bool(uint32_t, ArchSpec &)); - MOCK_METHOD4(Attach, - ProcessSP(ProcessAttachInfo &, Debugger &, Target *, Status &)); - MOCK_METHOD0(CalculateTrapHandlerSymbolNames, void()); - MOCK_METHOD0(GetUserIDResolver, UserIDResolver &()); - - MOCK_METHOD2(ResolveExecutable, - std::pair(const ModuleSpec &, - const FileSpecList *)); - Status - ResolveExecutable(const ModuleSpec &module_spec, - lldb::ModuleSP &exe_module_sp, - const FileSpecList *module_search_paths_ptr) /*override*/ { - auto pair = ResolveExecutable(module_spec, module_search_paths_ptr); - exe_module_sp = pair.second; - return pair.first; - } -}; - -namespace { -class RemoteAwarePlatformTest : public testing::Test { -public: - static void SetUpTestCase() { FileSystem::Initialize(); } - static void TearDownTestCase() { FileSystem::Terminate(); } -}; -} // namespace - -TEST_F(RemoteAwarePlatformTest, TestResolveExecutabelOnClientByPlatform) { - ModuleSpec executable_spec; - ModuleSP expected_executable(new Module(executable_spec)); - - auto platform_sp = std::make_shared(false); - EXPECT_CALL(*platform_sp, ResolveExecutable(_, _)) - .WillRepeatedly(Return(std::make_pair(Status(), expected_executable))); - - RemoteAwarePlatformTester platform(false); - EXPECT_CALL(platform, GetSupportedArchitectureAtIndex(_, _)) - .WillRepeatedly(Return(false)); - - platform.SetRemotePlatform(platform_sp); - - ModuleSP resolved_sp; - lldb_private::Status status = - platform.ResolveExecutable(executable_spec, resolved_sp, nullptr); - - ASSERT_TRUE(status.Success()); - EXPECT_EQ(expected_executable.get(), resolved_sp.get()); -} diff --git a/gnu/llvm/lldb/unittests/Target/StackFrameRecognizerTest.cpp b/gnu/llvm/lldb/unittests/Target/StackFrameRecognizerTest.cpp deleted file mode 100644 index bf458b3b141..00000000000 --- a/gnu/llvm/lldb/unittests/Target/StackFrameRecognizerTest.cpp +++ /dev/null @@ -1,81 +0,0 @@ -//===-- StackFrameRecognizerTest.cpp --------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/StackFrameRecognizer.h" -#include "Plugins/Platform/Linux/PlatformLinux.h" -#include "lldb/Core/Debugger.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Utility/Reproducer.h" -#include "lldb/lldb-enumerations.h" -#include "lldb/lldb-forward.h" -#include "lldb/lldb-private-enumerations.h" -#include "lldb/lldb-private.h" -#include "llvm/Support/FormatVariadic.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb_private::repro; -using namespace lldb; - -namespace { -class StackFrameRecognizerTest : public ::testing::Test { -public: - void SetUp() override { - llvm::cantFail(Reproducer::Initialize(ReproducerMode::Off, llvm::None)); - FileSystem::Initialize(); - HostInfo::Initialize(); - - // Pretend Linux is the host platform. - platform_linux::PlatformLinux::Initialize(); - ArchSpec arch("powerpc64-pc-linux"); - Platform::SetHostPlatform( - platform_linux::PlatformLinux::CreateInstance(true, &arch)); - } - - void TearDown() override { - platform_linux::PlatformLinux::Terminate(); - HostInfo::Terminate(); - FileSystem::Terminate(); - Reproducer::Terminate(); - } -}; - -class DummyStackFrameRecognizer : public StackFrameRecognizer { -public: - std::string GetName() override { return "Dummy StackFrame Recognizer"; } -}; - -void RegisterDummyStackFrameRecognizer(StackFrameRecognizerManager &manager) { - RegularExpressionSP module_regex_sp = nullptr; - RegularExpressionSP symbol_regex_sp(new RegularExpression("boom")); - - StackFrameRecognizerSP dummy_recognizer_sp(new DummyStackFrameRecognizer()); - - manager.AddRecognizer(dummy_recognizer_sp, module_regex_sp, symbol_regex_sp, - false); -} - -} // namespace - -TEST_F(StackFrameRecognizerTest, NullModuleRegex) { - DebuggerSP debugger_sp = Debugger::CreateInstance(); - ASSERT_TRUE(debugger_sp); - - StackFrameRecognizerManager manager; - - RegisterDummyStackFrameRecognizer(manager); - - bool any_printed = false; - manager.ForEach([&any_printed](uint32_t recognizer_id, std::string name, - std::string function, - llvm::ArrayRef symbols, - bool regexp) { any_printed = true; }); - - EXPECT_TRUE(any_printed); -} diff --git a/gnu/llvm/lldb/unittests/TestingSupport/CMakeLists.txt b/gnu/llvm/lldb/unittests/TestingSupport/CMakeLists.txt deleted file mode 100644 index c62bc3b023b..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL ON) -add_lldb_library(lldbUtilityHelpers - MockTildeExpressionResolver.cpp - TestUtilities.cpp - - LINK_LIBS - lldbUtility - gtest - - LINK_COMPONENTS - Support - ObjectYAML - ) - -add_subdirectory(Symbol) diff --git a/gnu/llvm/lldb/unittests/TestingSupport/Host/NativeProcessTestUtils.h b/gnu/llvm/lldb/unittests/TestingSupport/Host/NativeProcessTestUtils.h deleted file mode 100644 index 4efb18397d9..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/Host/NativeProcessTestUtils.h +++ /dev/null @@ -1,156 +0,0 @@ -//===-- NativeProcessTestUtils.cpp ------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_TESTINGSUPPORT_HOST_NATIVEPROCESSTESTUTILS_H -#define LLDB_UNITTESTS_TESTINGSUPPORT_HOST_NATIVEPROCESSTESTUTILS_H - -#include "lldb/Host/common/NativeProcessProtocol.h" -#include "llvm/Testing/Support/Error.h" -#include "gmock/gmock.h" - -using namespace lldb_private; -using namespace lldb; -using namespace testing; - -namespace lldb_private { - -class MockDelegate : public NativeProcessProtocol::NativeDelegate { -public: - MOCK_METHOD1(InitializeDelegate, void(NativeProcessProtocol *Process)); - MOCK_METHOD2(ProcessStateChanged, - void(NativeProcessProtocol *Process, StateType State)); - MOCK_METHOD1(DidExec, void(NativeProcessProtocol *Process)); - MOCK_METHOD2(NewSubprocessImpl, - void(NativeProcessProtocol *parent_process, - std::unique_ptr &child_process)); - // This is a hack to avoid MOCK_METHOD2 incompatibility with std::unique_ptr - // passed as value. - void NewSubprocess(NativeProcessProtocol *parent_process, - std::unique_ptr child_process) { - NewSubprocessImpl(parent_process, child_process); - } -}; - -// NB: This class doesn't use the override keyword to avoid -// -Winconsistent-missing-override warnings from the compiler. The -// inconsistency comes from the overriding definitions in the MOCK_*** macros. -template class MockProcess : public T { -public: - MockProcess(NativeProcessProtocol::NativeDelegate &Delegate, - const ArchSpec &Arch, lldb::pid_t Pid = 1) - : T(Pid, -1, Delegate), Arch(Arch) {} - - MOCK_METHOD1(Resume, Status(const ResumeActionList &ResumeActions)); - MOCK_METHOD0(Halt, Status()); - MOCK_METHOD0(Detach, Status()); - MOCK_METHOD1(Signal, Status(int Signo)); - MOCK_METHOD0(Kill, Status()); - MOCK_METHOD0(GetSharedLibraryInfoAddress, addr_t()); - MOCK_METHOD0(UpdateThreads, size_t()); - MOCK_CONST_METHOD0(GetAuxvData, - llvm::ErrorOr>()); - MOCK_METHOD2(GetLoadedModuleFileSpec, - Status(const char *ModulePath, FileSpec &Spec)); - MOCK_METHOD2(GetFileLoadAddress, - Status(const llvm::StringRef &FileName, addr_t &Addr)); - - const ArchSpec &GetArchitecture() const /*override*/ { return Arch; } - Status SetBreakpoint(lldb::addr_t Addr, uint32_t Size, - bool Hardware) /*override*/ { - if (Hardware) - return this->SetHardwareBreakpoint(Addr, Size); - else - return this->SetSoftwareBreakpoint(Addr, Size); - } - - // Redirect base class Read/Write Memory methods to functions whose signatures - // are more mock-friendly. - Status ReadMemory(addr_t Addr, void *Buf, size_t Size, - size_t &BytesRead) /*override*/ { - auto ExpectedMemory = this->ReadMemory(Addr, Size); - if (!ExpectedMemory) { - BytesRead = 0; - return Status(ExpectedMemory.takeError()); - } - BytesRead = ExpectedMemory->size(); - assert(BytesRead <= Size); - std::memcpy(Buf, ExpectedMemory->data(), BytesRead); - return Status(); - } - - Status WriteMemory(addr_t Addr, const void *Buf, size_t Size, - size_t &BytesWritten) /*override*/ { - auto ExpectedBytes = this->WriteMemory( - Addr, llvm::makeArrayRef(static_cast(Buf), Size)); - if (!ExpectedBytes) { - BytesWritten = 0; - return Status(ExpectedBytes.takeError()); - } - BytesWritten = *ExpectedBytes; - return Status(); - } - - MOCK_METHOD2(ReadMemory, - llvm::Expected>(addr_t Addr, size_t Size)); - MOCK_METHOD2(WriteMemory, - llvm::Expected(addr_t Addr, - llvm::ArrayRef Data)); - - using T::GetSoftwareBreakpointTrapOpcode; - llvm::Expected> ReadMemoryWithoutTrap(addr_t Addr, - size_t Size) { - std::vector Data(Size, 0); - size_t BytesRead; - Status ST = - T::ReadMemoryWithoutTrap(Addr, Data.data(), Data.size(), BytesRead); - if (ST.Fail()) - return ST.ToError(); - Data.resize(BytesRead); - return std::move(Data); - } - -private: - ArchSpec Arch; -}; - -class FakeMemory { -public: - FakeMemory(llvm::ArrayRef Data, addr_t start_addr = 0) - : Data(Data), m_start_addr(start_addr) {} - - FakeMemory(const void *Data, size_t data_size, addr_t start_addr = 0) - : Data((const uint8_t *)Data, ((const uint8_t *)Data) + data_size), - m_start_addr(start_addr) {} - - llvm::Expected> Read(addr_t Addr, size_t Size) { - Addr -= m_start_addr; - if (Addr >= Data.size()) - return llvm::createStringError(llvm::inconvertibleErrorCode(), - "Address out of range."); - Size = std::min(Size, Data.size() - (size_t)Addr); - auto Begin = std::next(Data.begin(), Addr); - return std::vector(Begin, std::next(Begin, Size)); - } - - llvm::Expected Write(addr_t Addr, llvm::ArrayRef Chunk) { - Addr -= m_start_addr; - if (Addr >= Data.size()) - return llvm::createStringError(llvm::inconvertibleErrorCode(), - "Address out of range."); - size_t Size = std::min(Chunk.size(), Data.size() - (size_t)Addr); - std::copy_n(Chunk.begin(), Size, &Data[Addr]); - return Size; - } - -private: - std::vector Data; - addr_t m_start_addr; -}; -} // namespace lldb_private - -#endif diff --git a/gnu/llvm/lldb/unittests/TestingSupport/MockTildeExpressionResolver.cpp b/gnu/llvm/lldb/unittests/TestingSupport/MockTildeExpressionResolver.cpp deleted file mode 100644 index 2e103b9e61f..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/MockTildeExpressionResolver.cpp +++ /dev/null @@ -1,79 +0,0 @@ -//===-- MockTildeExpressionResolver.cpp -----------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "MockTildeExpressionResolver.h" -#include "llvm/Support/Path.h" - -using namespace lldb_private; -using namespace llvm; - -MockTildeExpressionResolver::MockTildeExpressionResolver(StringRef CurrentUser, - StringRef HomeDir) - : CurrentUser(CurrentUser) { - UserDirectories.insert(std::make_pair(CurrentUser, HomeDir)); -} - -void MockTildeExpressionResolver::AddKnownUser(StringRef User, - StringRef HomeDir) { - assert(UserDirectories.find(User) == UserDirectories.end()); - UserDirectories.insert(std::make_pair(User, HomeDir)); -} - -void MockTildeExpressionResolver::Clear() { - CurrentUser = StringRef(); - UserDirectories.clear(); -} - -void MockTildeExpressionResolver::SetCurrentUser(StringRef User) { - assert(UserDirectories.find(User) != UserDirectories.end()); - CurrentUser = User; -} - -bool MockTildeExpressionResolver::ResolveExact(StringRef Expr, - SmallVectorImpl &Output) { - Output.clear(); - - assert(!llvm::any_of( - Expr, [](char c) { return llvm::sys::path::is_separator(c); })); - assert(Expr.empty() || Expr[0] == '~'); - Expr = Expr.drop_front(); - if (Expr.empty()) { - auto Dir = UserDirectories[CurrentUser]; - Output.append(Dir.begin(), Dir.end()); - return true; - } - - for (const auto &User : UserDirectories) { - if (User.getKey() != Expr) - continue; - Output.append(User.getValue().begin(), User.getValue().end()); - return true; - } - return false; -} - -bool MockTildeExpressionResolver::ResolvePartial(StringRef Expr, - StringSet<> &Output) { - Output.clear(); - - assert(!llvm::any_of( - Expr, [](char c) { return llvm::sys::path::is_separator(c); })); - assert(Expr.empty() || Expr[0] == '~'); - Expr = Expr.drop_front(); - - SmallString<16> QualifiedName("~"); - for (const auto &User : UserDirectories) { - if (!User.getKey().startswith(Expr)) - continue; - QualifiedName.resize(1); - QualifiedName.append(User.getKey().begin(), User.getKey().end()); - Output.insert(QualifiedName); - } - - return !Output.empty(); -} diff --git a/gnu/llvm/lldb/unittests/TestingSupport/MockTildeExpressionResolver.h b/gnu/llvm/lldb/unittests/TestingSupport/MockTildeExpressionResolver.h deleted file mode 100644 index c96e2d248bf..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/MockTildeExpressionResolver.h +++ /dev/null @@ -1,36 +0,0 @@ -//===-- MockTildeExpressionResolver.h ---------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_TESTINGSUPPORT_MOCKTILDEEXPRESSIONRESOLVER_H -#define LLDB_UNITTESTS_TESTINGSUPPORT_MOCKTILDEEXPRESSIONRESOLVER_H - -#include "lldb/Utility/TildeExpressionResolver.h" - -#include "llvm/ADT/SmallString.h" -#include "llvm/ADT/StringMap.h" - -namespace lldb_private { -class MockTildeExpressionResolver : public TildeExpressionResolver { - llvm::StringRef CurrentUser; - llvm::StringMap UserDirectories; - -public: - MockTildeExpressionResolver(llvm::StringRef CurrentUser, - llvm::StringRef HomeDir); - - void AddKnownUser(llvm::StringRef User, llvm::StringRef HomeDir); - void Clear(); - void SetCurrentUser(llvm::StringRef User); - - bool ResolveExact(llvm::StringRef Expr, - llvm::SmallVectorImpl &Output) override; - bool ResolvePartial(llvm::StringRef Expr, llvm::StringSet<> &Output) override; -}; -} // namespace lldb_private - -#endif diff --git a/gnu/llvm/lldb/unittests/TestingSupport/SubsystemRAII.h b/gnu/llvm/lldb/unittests/TestingSupport/SubsystemRAII.h deleted file mode 100644 index 3df104b8af2..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/SubsystemRAII.h +++ /dev/null @@ -1,90 +0,0 @@ -//===- SubsystemRAII.h ------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_TESTINGSUPPORT_SUBSYSTEMRAII_H -#define LLDB_UNITTESTS_TESTINGSUPPORT_SUBSYSTEMRAII_H - -#include "llvm/Support/Error.h" -#include "llvm/Testing/Support/Error.h" -#include "gtest/gtest.h" -#include - -namespace lldb_private { - -namespace detail { -/// Initializes and deinitializes a single subsystem. -/// @see SubsystemRAII -template struct SubsystemRAIICase { - - /// Calls ::Initialize if it has a void return type. - template - typename std::enable_if< - std::is_same::value>::type - CallInitialize() { - T::Initialize(); - } - - /// Calls ::Initialize if it has a llvm::Error return type and checks - /// the Error instance for success. - template - typename std::enable_if< - std::is_same::value>::type - CallInitialize() { - ASSERT_THAT_ERROR(T::Initialize(), llvm::Succeeded()); - } - - SubsystemRAIICase() { CallInitialize(); } - ~SubsystemRAIICase() { T::Terminate(); } -}; -} // namespace detail - -template class SubsystemRAII {}; - -/// RAII for initializing and deinitializing LLDB subsystems. -/// -/// This RAII takes care of calling the Initialize and Terminate functions for -/// the subsystems specified by its template arguments. The ::Initialize -/// functions are called on construction for each subsystem template parameter -/// in the order in which they are passed as template parameters. -/// The ::Terminate functions are called in the reverse order at destruction -/// time. -/// -/// If the ::Initialize function returns an llvm::Error this function handles -/// the Error instance (by checking that there is no error). -/// -/// Constructing this RAII in a scope like this: -/// -/// @code{.cpp} -/// { -/// SubsystemRAII Subsystems; -/// DoingTestWork(); -/// } -/// @endcode -/// -/// is equivalent to the following code: -/// -/// @code{.cpp} -/// { -/// FileSystem::Initialize(); -/// HostInfo::Initialize(); -/// ASSERT_THAT_ERROR(Socket::Initialize(), llvm::Succeeded()); -/// -/// DoingTestWork(); -/// -/// Socket::Terminate(); -/// FileSystem::Terminate(); -/// HostInfo::Terminate(); -/// } -/// @endcode -template class SubsystemRAII { - detail::SubsystemRAIICase CurrentSubsystem; - SubsystemRAII RemainingSubsystems; -}; -} // namespace lldb_private - -#endif // LLDB_UNITTESTS_TESTINGSUPPORT_SUBSYSTEMRAII_H diff --git a/gnu/llvm/lldb/unittests/TestingSupport/Symbol/CMakeLists.txt b/gnu/llvm/lldb/unittests/TestingSupport/Symbol/CMakeLists.txt deleted file mode 100644 index c4eef2e453d..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/Symbol/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL ON) -add_lldb_library(lldbSymbolHelpers - YAMLModuleTester.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbPluginExpressionParserClang - lldbPluginObjectFileELF - lldbPluginSymbolFileDWARF - lldbPluginTypeSystemClang - lldbUtilityHelpers - LLVMTestingSupport - - LINK_COMPONENTS - ObjectYAML - ) diff --git a/gnu/llvm/lldb/unittests/TestingSupport/Symbol/ClangTestUtils.h b/gnu/llvm/lldb/unittests/TestingSupport/Symbol/ClangTestUtils.h deleted file mode 100644 index 6524f093ab9..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/Symbol/ClangTestUtils.h +++ /dev/null @@ -1,75 +0,0 @@ -//===- ClangTestUtils.h -----------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_TESTINGSUPPORT_SYMBOL_CLANGTESTUTILS_H -#define LLDB_UNITTESTS_TESTINGSUPPORT_SYMBOL_CLANGTESTUTILS_H - -#include "Plugins/ExpressionParser/Clang/ClangUtil.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "lldb/Host/HostInfo.h" - -namespace lldb_private { -namespace clang_utils { -inline clang::DeclarationName getDeclarationName(TypeSystemClang &ast, - llvm::StringRef name) { - clang::IdentifierInfo &II = ast.getASTContext().Idents.get(name); - return ast.getASTContext().DeclarationNames.getIdentifier(&II); -} - -inline std::unique_ptr createAST() { - return std::make_unique("test ASTContext", - HostInfo::GetTargetTriple()); -} - -inline CompilerType createRecord(TypeSystemClang &ast, llvm::StringRef name) { - return ast.CreateRecordType(ast.getASTContext().getTranslationUnitDecl(), - OptionalClangModuleID(), - lldb::AccessType::eAccessPublic, name, 0, - lldb::LanguageType::eLanguageTypeC); -} - -/// Create a record with the given name and a field with the given type -/// and name. -inline CompilerType createRecordWithField(TypeSystemClang &ast, - llvm::StringRef record_name, - CompilerType field_type, - llvm::StringRef field_name) { - CompilerType t = createRecord(ast, record_name); - - TypeSystemClang::StartTagDeclarationDefinition(t); - ast.AddFieldToRecordType(t, field_name, field_type, - lldb::AccessType::eAccessPublic, 7); - TypeSystemClang::CompleteTagDeclarationDefinition(t); - - return t; -} - -/// Constructs a TypeSystemClang that contains a single RecordDecl that contains -/// a single FieldDecl. Utility class as this setup is a common starting point -/// for unit test that exercise the ASTImporter. -struct SourceASTWithRecord { - std::unique_ptr ast; - CompilerType record_type; - clang::RecordDecl *record_decl = nullptr; - clang::FieldDecl *field_decl = nullptr; - SourceASTWithRecord() { - ast = createAST(); - record_type = createRecordWithField( - *ast, "Source", ast->GetBasicType(lldb::BasicType::eBasicTypeChar), - "a_field"); - record_decl = - llvm::cast(ClangUtil::GetAsTagDecl(record_type)); - field_decl = *record_decl->fields().begin(); - assert(field_decl); - } -}; - -} // namespace clang_utils -} // namespace lldb_private - -#endif diff --git a/gnu/llvm/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.cpp b/gnu/llvm/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.cpp deleted file mode 100644 index 15db62451f9..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.cpp +++ /dev/null @@ -1,26 +0,0 @@ -//===-- YAMLModuleTester.cpp ----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestingSupport/Symbol/YAMLModuleTester.h" -#include "Plugins/SymbolFile/DWARF/DWARFDebugInfo.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "lldb/Core/Section.h" -#include "llvm/ObjectYAML/DWARFEmitter.h" - -using namespace lldb_private; - -YAMLModuleTester::YAMLModuleTester(llvm::StringRef yaml_data) { - llvm::Expected File = TestFile::fromYaml(yaml_data); - EXPECT_THAT_EXPECTED(File, llvm::Succeeded()); - m_file = std::move(*File); - - m_module_sp = std::make_shared(m_file->moduleSpec()); - auto &symfile = *llvm::cast(m_module_sp->GetSymbolFile()); - - m_dwarf_unit = symfile.DebugInfo().GetUnitAtIndex(0); -} diff --git a/gnu/llvm/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.h b/gnu/llvm/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.h deleted file mode 100644 index 60715ab2c16..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/Symbol/YAMLModuleTester.h +++ /dev/null @@ -1,43 +0,0 @@ -//===- YAMLModuleTester.h ---------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_TESTINGSUPPORT_SYMBOL_YAMLMODULETESTER_H -#define LLDB_UNITTESTS_TESTINGSUPPORT_SYMBOL_YAMLMODULETESTER_H - -#include "Plugins/ObjectFile/ELF/ObjectFileELF.h" -#include "Plugins/SymbolFile/DWARF/DWARFUnit.h" -#include "Plugins/SymbolFile/DWARF/SymbolFileDWARF.h" -#include "Plugins/TypeSystem/Clang/TypeSystemClang.h" -#include "TestingSupport/SubsystemRAII.h" -#include "TestingSupport/TestUtilities.h" -#include "lldb/Core/Module.h" -#include "lldb/Host/HostInfo.h" - -namespace lldb_private { - -/// Helper class that can construct a module from YAML and evaluate -/// DWARF expressions on it. -class YAMLModuleTester { -protected: - SubsystemRAII - subsystems; - llvm::Optional m_file; - lldb::ModuleSP m_module_sp; - DWARFUnit *m_dwarf_unit; - -public: - /// Parse the debug info sections from the YAML description. - YAMLModuleTester(llvm::StringRef yaml_data); - DWARFUnit *GetDwarfUnit() const { return m_dwarf_unit; } - lldb::ModuleSP GetModule() const { return m_module_sp; } -}; - -} // namespace lldb_private - -#endif // LLDB_UNITTESTS_TESTINGSUPPORT_SYMBOL_YAMLMODULETESTER_H diff --git a/gnu/llvm/lldb/unittests/TestingSupport/TestUtilities.cpp b/gnu/llvm/lldb/unittests/TestingSupport/TestUtilities.cpp deleted file mode 100644 index 86f3d1a7dfa..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/TestUtilities.cpp +++ /dev/null @@ -1,46 +0,0 @@ -//===-- TestUtilities.cpp -------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestUtilities.h" -#include "llvm/ADT/SmallString.h" -#include "llvm/ObjectYAML/yaml2obj.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/Path.h" -#include "llvm/Support/Program.h" -#include "llvm/Support/YAMLTraits.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -extern const char *TestMainArgv0; - -std::string lldb_private::GetInputFilePath(const llvm::Twine &name) { - llvm::SmallString<128> result = llvm::sys::path::parent_path(TestMainArgv0); - llvm::sys::fs::make_absolute(result); - llvm::sys::path::append(result, "Inputs", name); - return std::string(result.str()); -} - -llvm::Expected TestFile::fromYaml(llvm::StringRef Yaml) { - std::string Buffer; - llvm::raw_string_ostream OS(Buffer); - llvm::yaml::Input YIn(Yaml); - if (!llvm::yaml::convertYAML(YIn, OS, [](const llvm::Twine &Msg) {})) - return llvm::createStringError(llvm::inconvertibleErrorCode(), - "convertYAML() failed"); - return TestFile(std::move(Buffer)); -} - -llvm::Expected TestFile::fromYamlFile(const llvm::Twine &Name) { - auto BufferOrError = - llvm::MemoryBuffer::getFile(GetInputFilePath(Name), /*IsText=*/false, - /*RequiresNullTerminator=*/false); - if (!BufferOrError) - return llvm::errorCodeToError(BufferOrError.getError()); - return fromYaml(BufferOrError.get()->getBuffer()); -} diff --git a/gnu/llvm/lldb/unittests/TestingSupport/TestUtilities.h b/gnu/llvm/lldb/unittests/TestingSupport/TestUtilities.h deleted file mode 100644 index 811c4c15212..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/TestUtilities.h +++ /dev/null @@ -1,56 +0,0 @@ -//===- TestUtilities.h ------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_TESTINGSUPPORT_TESTUTILITIES_H -#define LLDB_UNITTESTS_TESTINGSUPPORT_TESTUTILITIES_H - -#include "lldb/Core/ModuleSpec.h" -#include "lldb/Utility/DataBuffer.h" -#include "llvm/ADT/SmallString.h" -#include "llvm/ADT/Twine.h" -#include "llvm/Support/Error.h" -#include "llvm/Support/FileUtilities.h" -#include - -#define ASSERT_NO_ERROR(x) \ - if (std::error_code ASSERT_NO_ERROR_ec = x) { \ - llvm::SmallString<128> MessageStorage; \ - llvm::raw_svector_ostream Message(MessageStorage); \ - Message << #x ": did not return errc::success.\n" \ - << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \ - << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \ - GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \ - } else { \ - } - -namespace lldb_private { -std::string GetInputFilePath(const llvm::Twine &name); - -class TestFile { -public: - static llvm::Expected fromYaml(llvm::StringRef Yaml); - static llvm::Expected fromYamlFile(const llvm::Twine &Name); - - ModuleSpec moduleSpec() { - return ModuleSpec(FileSpec(), UUID(), dataBuffer()); - } - -private: - TestFile(std::string &&Buffer) : Buffer(std::move(Buffer)) {} - - lldb::DataBufferSP dataBuffer() { - auto *Data = reinterpret_cast(Buffer.data()); - return std::make_shared(const_cast(Data), - Buffer.size()); - } - - std::string Buffer; -}; -} - -#endif diff --git a/gnu/llvm/lldb/unittests/TestingSupport/module.modulemap b/gnu/llvm/lldb/unittests/TestingSupport/module.modulemap deleted file mode 100644 index 81d2b988875..00000000000 --- a/gnu/llvm/lldb/unittests/TestingSupport/module.modulemap +++ /dev/null @@ -1,17 +0,0 @@ - -module lldb_TestingSupport { - requires cplusplus - module TestUtilities { header "TestUtilities.h" export * } - module MockTildeExpressionResolver { header "MockTildeExpressionResolver.h" export * } -} - -module lldb_TestingSupport_Host { - requires cplusplus - module NativeProcessTestUtils { header "Host/NativeProcessTestUtils.h" export * } -} - -module lldb_TestingSupport_Symbol { - requires cplusplus - module ClangTestUtils { header "Symbol/ClangTestUtils.h" export * } - module YAMLModuleTester { header "Symbol/YAMLModuleTester.h" export * } -} diff --git a/gnu/llvm/lldb/unittests/Thread/CMakeLists.txt b/gnu/llvm/lldb/unittests/Thread/CMakeLists.txt deleted file mode 100644 index d6e365adac5..00000000000 --- a/gnu/llvm/lldb/unittests/Thread/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -add_lldb_unittest(ThreadTests - ThreadTest.cpp - - LINK_LIBS - lldbCore - lldbHost - lldbTarget - lldbSymbol - lldbUtility - lldbUtilityHelpers - lldbInterpreter - lldbBreakpoint - lldbPluginPlatformLinux - ) - diff --git a/gnu/llvm/lldb/unittests/Thread/ThreadTest.cpp b/gnu/llvm/lldb/unittests/Thread/ThreadTest.cpp deleted file mode 100644 index a8387a5f03f..00000000000 --- a/gnu/llvm/lldb/unittests/Thread/ThreadTest.cpp +++ /dev/null @@ -1,163 +0,0 @@ -//===-- ThreadTest.cpp ------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/Thread.h" -#include "Plugins/Platform/Linux/PlatformLinux.h" -#include "lldb/Core/Debugger.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Target/Process.h" -#include "lldb/Target/StopInfo.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/Reproducer.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb_private::repro; -using namespace lldb; - -namespace { -class ThreadTest : public ::testing::Test { -public: - void SetUp() override { - llvm::cantFail(Reproducer::Initialize(ReproducerMode::Off, llvm::None)); - FileSystem::Initialize(); - HostInfo::Initialize(); - platform_linux::PlatformLinux::Initialize(); - } - void TearDown() override { - platform_linux::PlatformLinux::Terminate(); - HostInfo::Terminate(); - FileSystem::Terminate(); - Reproducer::Terminate(); - } -}; - -class DummyProcess : public Process { -public: - using Process::Process; - - bool CanDebug(lldb::TargetSP target, bool plugin_specified_by_name) override { - return true; - } - Status DoDestroy() override { return {}; } - void RefreshStateAfterStop() override {} - size_t DoReadMemory(lldb::addr_t vm_addr, void *buf, size_t size, - Status &error) override { - return 0; - } - bool DoUpdateThreadList(ThreadList &old_thread_list, - ThreadList &new_thread_list) override { - return false; - } - ConstString GetPluginName() override { return ConstString("Dummy"); } - uint32_t GetPluginVersion() override { return 0; } - - ProcessModID &GetModIDNonConstRef() { return m_mod_id; } -}; - -class DummyThread : public Thread { -public: - using Thread::Thread; - - ~DummyThread() override { DestroyThread(); } - - void RefreshStateAfterStop() override {} - - lldb::RegisterContextSP GetRegisterContext() override { return nullptr; } - - lldb::RegisterContextSP - CreateRegisterContextForFrame(StackFrame *frame) override { - return nullptr; - } - - bool CalculateStopInfo() override { return false; } - - bool IsStillAtLastBreakpointHit() override { return true; } -}; -} // namespace - -TargetSP CreateTarget(DebuggerSP &debugger_sp, ArchSpec &arch) { - PlatformSP platform_sp; - TargetSP target_sp; - debugger_sp->GetTargetList().CreateTarget( - *debugger_sp, "", arch, eLoadDependentsNo, platform_sp, target_sp); - - return target_sp; -} - -TEST_F(ThreadTest, SetStopInfo) { - ArchSpec arch("powerpc64-pc-linux"); - - Platform::SetHostPlatform( - platform_linux::PlatformLinux::CreateInstance(true, &arch)); - - DebuggerSP debugger_sp = Debugger::CreateInstance(); - ASSERT_TRUE(debugger_sp); - - TargetSP target_sp = CreateTarget(debugger_sp, arch); - ASSERT_TRUE(target_sp); - - ListenerSP listener_sp(Listener::MakeListener("dummy")); - ProcessSP process_sp = std::make_shared(target_sp, listener_sp); - ASSERT_TRUE(process_sp); - - DummyProcess *process = static_cast(process_sp.get()); - - ThreadSP thread_sp = std::make_shared(*process_sp.get(), 0); - ASSERT_TRUE(thread_sp); - - StopInfoSP stopinfo_sp = - StopInfo::CreateStopReasonWithBreakpointSiteID(*thread_sp.get(), 0); - ASSERT_TRUE(stopinfo_sp->IsValid() == true); - - /* - Should make stopinfo valid. - */ - process->GetModIDNonConstRef().BumpStopID(); - ASSERT_TRUE(stopinfo_sp->IsValid() == false); - - thread_sp->SetStopInfo(stopinfo_sp); - ASSERT_TRUE(stopinfo_sp->IsValid() == true); -} - -TEST_F(ThreadTest, GetPrivateStopInfo) { - ArchSpec arch("powerpc64-pc-linux"); - - Platform::SetHostPlatform( - platform_linux::PlatformLinux::CreateInstance(true, &arch)); - - DebuggerSP debugger_sp = Debugger::CreateInstance(); - ASSERT_TRUE(debugger_sp); - - TargetSP target_sp = CreateTarget(debugger_sp, arch); - ASSERT_TRUE(target_sp); - - ListenerSP listener_sp(Listener::MakeListener("dummy")); - ProcessSP process_sp = std::make_shared(target_sp, listener_sp); - ASSERT_TRUE(process_sp); - - DummyProcess *process = static_cast(process_sp.get()); - - ThreadSP thread_sp = std::make_shared(*process_sp.get(), 0); - ASSERT_TRUE(thread_sp); - - StopInfoSP stopinfo_sp = - StopInfo::CreateStopReasonWithBreakpointSiteID(*thread_sp.get(), 0); - ASSERT_TRUE(stopinfo_sp); - - thread_sp->SetStopInfo(stopinfo_sp); - - /* - Should make stopinfo valid if thread is at last breakpoint hit. - */ - process->GetModIDNonConstRef().BumpStopID(); - ASSERT_TRUE(stopinfo_sp->IsValid() == false); - StopInfoSP new_stopinfo_sp = thread_sp->GetPrivateStopInfo(); - ASSERT_TRUE(new_stopinfo_sp && stopinfo_sp->IsValid() == true); -} diff --git a/gnu/llvm/lldb/unittests/UnwindAssembly/ARM64/CMakeLists.txt b/gnu/llvm/lldb/unittests/UnwindAssembly/ARM64/CMakeLists.txt deleted file mode 100644 index f3bbd71df32..00000000000 --- a/gnu/llvm/lldb/unittests/UnwindAssembly/ARM64/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -add_lldb_unittest(Arm64InstEmulationTests - TestArm64InstEmulation.cpp - LINK_LIBS - lldbCore - lldbSymbol - lldbTarget - lldbPluginUnwindAssemblyInstEmulation - lldbPluginDisassemblerLLVMC - lldbPluginInstructionARM64 - lldbPluginProcessUtility - LINK_COMPONENTS - Support - ${LLVM_TARGETS_TO_BUILD}) diff --git a/gnu/llvm/lldb/unittests/UnwindAssembly/ARM64/TestArm64InstEmulation.cpp b/gnu/llvm/lldb/unittests/UnwindAssembly/ARM64/TestArm64InstEmulation.cpp deleted file mode 100644 index b3ad351c716..00000000000 --- a/gnu/llvm/lldb/unittests/UnwindAssembly/ARM64/TestArm64InstEmulation.cpp +++ /dev/null @@ -1,857 +0,0 @@ -//===-- TestArm64InstEmulation.cpp ----------------------------------------===// - -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include - -#include "Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h" - -#include "lldb/Core/Address.h" -#include "lldb/Core/AddressRange.h" -#include "lldb/Symbol/UnwindPlan.h" -#include "lldb/Target/UnwindAssembly.h" -#include "lldb/Utility/ArchSpec.h" - -#include "Plugins/Disassembler/LLVMC/DisassemblerLLVMC.h" -#include "Plugins/Instruction/ARM64/EmulateInstructionARM64.h" -#include "Plugins/Process/Utility/lldb-arm64-register-enums.h" -#include "llvm/Support/TargetSelect.h" - -using namespace lldb; -using namespace lldb_private; - -class TestArm64InstEmulation : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); - - // virtual void SetUp() override { } - // virtual void TearDown() override { } - -protected: -}; - -void TestArm64InstEmulation::SetUpTestCase() { - llvm::InitializeAllTargets(); - llvm::InitializeAllAsmPrinters(); - llvm::InitializeAllTargetMCs(); - llvm::InitializeAllDisassemblers(); - DisassemblerLLVMC::Initialize(); - EmulateInstructionARM64::Initialize(); -} - -void TestArm64InstEmulation::TearDownTestCase() { - DisassemblerLLVMC::Terminate(); - EmulateInstructionARM64::Terminate(); -} - -TEST_F(TestArm64InstEmulation, TestSimpleDarwinFunction) { - ArchSpec arch("arm64-apple-ios10"); - std::unique_ptr engine( - static_cast( - UnwindAssemblyInstEmulation::CreateInstance(arch))); - ASSERT_NE(nullptr, engine); - - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - UnwindPlan::Row::RegisterLocation regloc; - - // 'int main() { }' compiled for arm64-apple-ios with clang - uint8_t data[] = { - 0xfd, 0x7b, 0xbf, 0xa9, // 0xa9bf7bfd : stp x29, x30, [sp, #-0x10]! - 0xfd, 0x03, 0x00, 0x91, // 0x910003fd : mov x29, sp - 0xff, 0x43, 0x00, 0xd1, // 0xd10043ff : sub sp, sp, #0x10 - - 0xbf, 0x03, 0x00, 0x91, // 0x910003bf : mov sp, x29 - 0xfd, 0x7b, 0xc1, 0xa8, // 0xa8c17bfd : ldp x29, x30, [sp], #16 - 0xc0, 0x03, 0x5f, 0xd6, // 0xd65f03c0 : ret - }; - - // UnwindPlan we expect: - - // row[0]: 0: CFA=sp +0 => - // row[1]: 4: CFA=sp+16 => fp=[CFA-16] lr=[CFA-8] - // row[2]: 8: CFA=fp+16 => fp=[CFA-16] lr=[CFA-8] - // row[2]: 16: CFA=sp+16 => fp=[CFA-16] lr=[CFA-8] - // row[3]: 20: CFA=sp +0 => fp= lr= - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - sample_range, data, sizeof(data), unwind_plan)); - - // CFA=sp +0 - row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - // CFA=sp+16 => fp=[CFA-16] lr=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_fp_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // CFA=fp+16 => fp=[CFA-16] lr=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(8); - EXPECT_EQ(8ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_fp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_fp_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // CFA=sp+16 => fp=[CFA-16] lr=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(16); - EXPECT_EQ(16ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_fp_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // CFA=sp +0 => fp= lr= - row_sp = unwind_plan.GetRowForFunctionOffset(20); - EXPECT_EQ(20ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(TestArm64InstEmulation, TestMediumDarwinFunction) { - ArchSpec arch("arm64-apple-ios10"); - std::unique_ptr engine( - static_cast( - UnwindAssemblyInstEmulation::CreateInstance(arch))); - ASSERT_NE(nullptr, engine); - - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - UnwindPlan::Row::RegisterLocation regloc; - - // disassembly of -[NSPlaceholderString initWithBytes:length:encoding:] - // from Foundation for iOS. - uint8_t data[] = { - 0xf6, 0x57, 0xbd, 0xa9, // 0: 0xa9bd57f6 stp x22, x21, [sp, #-48]! - 0xf4, 0x4f, 0x01, 0xa9, // 4: 0xa9014ff4 stp x20, x19, [sp, #16] - 0xfd, 0x7b, 0x02, 0xa9, // 8: 0xa9027bfd stp x29, x30, [sp, #32] - 0xfd, 0x83, 0x00, 0x91, // 12: 0x910083fd add x29, sp, #32 - 0xff, 0x43, 0x00, 0xd1, // 16: 0xd10043ff sub sp, sp, #16 - - // [... function body ...] - 0x1f, 0x20, 0x03, 0xd5, // 20: 0xd503201f nop - - 0xbf, 0x83, 0x00, 0xd1, // 24: 0xd10083bf sub sp, x29, #32 - 0xfd, 0x7b, 0x42, 0xa9, // 28: 0xa9427bfd ldp x29, x30, [sp, #32] - 0xf4, 0x4f, 0x41, 0xa9, // 32: 0xa9414ff4 ldp x20, x19, [sp, #16] - 0xf6, 0x57, 0xc3, 0xa8, // 36: 0xa8c357f6 ldp x22, x21, [sp], #48 - 0x01, 0x16, 0x09, 0x14, // 40: 0x14091601 b 0x18f640524 ; symbol stub - // for: CFStringCreateWithBytes - }; - - // UnwindPlan we expect: - // 0: CFA=sp +0 => - // 4: CFA=sp+48 => x21=[CFA-40] x22=[CFA-48] - // 8: CFA=sp+48 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // 12: CFA=sp+48 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // fp=[CFA-16] lr=[CFA-8] - // 16: CFA=fp+16 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // fp=[CFA-16] lr=[CFA-8] - - // [... function body ...] - - // 28: CFA=sp+48 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // fp=[CFA-16] lr=[CFA-8] - // 32: CFA=sp+48 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] fp= - // lr= - // 36: CFA=sp+48 => x19= x20= x21=[CFA-40] x22=[CFA-48] fp= - // lr= - // 40: CFA=sp +0 => x19= x20= x21= x22= fp= - // lr= - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - sample_range, data, sizeof(data), unwind_plan)); - - // 0: CFA=sp +0 => - row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - // 4: CFA=sp+48 => x21=[CFA-40] x22=[CFA-48] - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_EQ(48, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x21_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-40, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x22_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-48, regloc.GetOffset()); - - // 8: CFA=sp+48 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - row_sp = unwind_plan.GetRowForFunctionOffset(8); - EXPECT_EQ(8ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_EQ(48, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x19_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-24, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x20_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-32, regloc.GetOffset()); - - // 12: CFA=sp+48 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // fp=[CFA-16] lr=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(12); - EXPECT_EQ(12ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_EQ(48, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_fp_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 16: CFA=fp+16 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // fp=[CFA-16] lr=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(16); - EXPECT_EQ(16ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_fp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - // 28: CFA=sp+48 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // fp=[CFA-16] lr=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(28); - EXPECT_EQ(28ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(48, row_sp->GetCFAValue().GetOffset()); - - // 32: CFA=sp+48 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] fp= - // lr= - row_sp = unwind_plan.GetRowForFunctionOffset(32); - EXPECT_EQ(32ull, row_sp->GetOffset()); - - // I'd prefer if these restored registers were cleared entirely instead of set - // to IsSame... - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_fp_arm64, regloc)); - EXPECT_TRUE(regloc.IsSame()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_arm64, regloc)); - EXPECT_TRUE(regloc.IsSame()); - - // 36: CFA=sp+48 => x19= x20= x21=[CFA-40] x22=[CFA-48] fp= - // lr= - row_sp = unwind_plan.GetRowForFunctionOffset(36); - EXPECT_EQ(36ull, row_sp->GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x19_arm64, regloc)); - EXPECT_TRUE(regloc.IsSame()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x20_arm64, regloc)); - EXPECT_TRUE(regloc.IsSame()); - - // 40: CFA=sp +0 => x19= x20= x21= x22= fp= - // lr= - row_sp = unwind_plan.GetRowForFunctionOffset(40); - EXPECT_EQ(40ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x21_arm64, regloc)); - EXPECT_TRUE(regloc.IsSame()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x22_arm64, regloc)); - EXPECT_TRUE(regloc.IsSame()); -} - -TEST_F(TestArm64InstEmulation, TestFramelessThreeEpilogueFunction) { - ArchSpec arch("arm64-apple-ios10"); - std::unique_ptr engine( - static_cast( - UnwindAssemblyInstEmulation::CreateInstance(arch))); - ASSERT_NE(nullptr, engine); - - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - UnwindPlan::Row::RegisterLocation regloc; - - // disassembly of JSC::ARM64LogicalImmediate::findBitRange<16u> - // from JavaScriptcore for iOS. - uint8_t data[] = { - 0x08, 0x3c, 0x0f, 0x53, // 0: 0x530f3c08 ubfx w8, w0, #15, #1 - 0x68, 0x00, 0x00, 0x39, // 4: 0x39000068 strb w8, [x3] - 0x08, 0x3c, 0x40, 0xd2, // 8: 0xd2403c08 eor x8, x0, #0xffff - 0x1f, 0x00, 0x71, 0xf2, // 12: 0xf271001f tst x0, #0x8000 - - // [...] - - 0x3f, 0x01, 0x0c, 0xeb, // 16: 0xeb0c013f cmp x9, x12 - 0x81, 0x00, 0x00, 0x54, // 20: 0x54000081 b.ne +34 - 0x5f, 0x00, 0x00, 0xb9, // 24: 0xb900005f str wzr, [x2] - 0xe0, 0x03, 0x00, 0x32, // 28: 0x320003e0 orr w0, wzr, #0x1 - 0xc0, 0x03, 0x5f, 0xd6, // 32: 0xd65f03c0 ret - 0x89, 0x01, 0x09, 0xca, // 36: 0xca090189 eor x9, x12, x9 - - // [...] - - 0x08, 0x05, 0x00, 0x11, // 40: 0x11000508 add w8, w8, #0x1 - 0x48, 0x00, 0x00, 0xb9, // 44: 0xb9000048 str w8, [x2] - 0xe0, 0x03, 0x00, 0x32, // 48: 0x320003e0 orr w0, wzr, #0x1 - 0xc0, 0x03, 0x5f, 0xd6, // 52: 0xd65f03c0 ret - 0x00, 0x00, 0x80, 0x52, // 56: 0x52800000 mov w0, #0x0 - 0xc0, 0x03, 0x5f, 0xd6, // 60: 0xd65f03c0 ret - - }; - - // UnwindPlan we expect: - // 0: CFA=sp +0 => - // (possibly with additional rows at offsets 36 and 56 saying the same thing) - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - sample_range, data, sizeof(data), unwind_plan)); - - // 0: CFA=sp +0 => - row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(32); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x19_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x20_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x21_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x22_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x23_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x24_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x25_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x26_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x27_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_x28_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_fp_arm64, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(gpr_lr_arm64, regloc)); - - row_sp = unwind_plan.GetRowForFunctionOffset(36); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(52); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(56); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(60); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(TestArm64InstEmulation, TestRegisterSavedTwice) { - ArchSpec arch("arm64-apple-ios10"); - std::unique_ptr engine( - static_cast( - UnwindAssemblyInstEmulation::CreateInstance(arch))); - ASSERT_NE(nullptr, engine); - - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - UnwindPlan::Row::RegisterLocation regloc; - - // disassembly of mach_msg_sever_once from libsystem_kernel.dylib for iOS. - uint8_t data[] = { - - 0xfc, 0x6f, 0xba, 0xa9, // 0: 0xa9ba6ffc stp x28, x27, [sp, #-0x60]! - 0xfa, 0x67, 0x01, 0xa9, // 4: 0xa90167fa stp x26, x25, [sp, #0x10] - 0xf8, 0x5f, 0x02, 0xa9, // 8: 0xa9025ff8 stp x24, x23, [sp, #0x20] - 0xf6, 0x57, 0x03, 0xa9, // 12: 0xa90357f6 stp x22, x21, [sp, #0x30] - 0xf4, 0x4f, 0x04, 0xa9, // 16: 0xa9044ff4 stp x20, x19, [sp, #0x40] - 0xfd, 0x7b, 0x05, 0xa9, // 20: 0xa9057bfd stp x29, x30, [sp, #0x50] - 0xfd, 0x43, 0x01, 0x91, // 24: 0x910143fd add x29, sp, #0x50 - 0xff, 0xc3, 0x00, 0xd1, // 28: 0xd100c3ff sub sp, sp, #0x30 - - // mid-function, store x20 & x24 on the stack at a different location. - // this should not show up in the unwind plan; caller's values are not - // being saved to stack. - 0xf8, 0x53, 0x01, 0xa9, // 32: 0xa90153f8 stp x24, x20, [sp, #0x10] - - // mid-function, copy x20 and x19 off of the stack -- but not from - // their original locations. unwind plan should ignore this. - 0xf4, 0x4f, 0x41, 0xa9, // 36: 0xa9414ff4 ldp x20, x19, [sp, #0x10] - - // epilogue - 0xbf, 0x43, 0x01, 0xd1, // 40: 0xd10143bf sub sp, x29, #0x50 - 0xfd, 0x7b, 0x45, 0xa9, // 44: 0xa9457bfd ldp x29, x30, [sp, #0x50] - 0xf4, 0x4f, 0x44, 0xa9, // 48: 0xa9444ff4 ldp x20, x19, [sp, #0x40] - 0xf6, 0x57, 0x43, 0xa9, // 52: 0xa94357f6 ldp x22, x21, [sp, #0x30] - 0xf8, 0x5f, 0x42, 0xa9, // 56: 0xa9425ff8 ldp x24, x23, [sp, #0x20] - 0xfa, 0x67, 0x41, 0xa9, // 60: 0xa94167fa ldp x26, x25, [sp, #0x10] - 0xfc, 0x6f, 0xc6, 0xa8, // 64: 0xa8c66ffc ldp x28, x27, [sp], #0x60 - 0xc0, 0x03, 0x5f, 0xd6, // 68: 0xd65f03c0 ret - }; - - // UnwindPlan we expect: - // 0: CFA=sp +0 => - // 4: CFA=sp+96 => x27=[CFA-88] x28=[CFA-96] - // 8: CFA=sp+96 => x25=[CFA-72] x26=[CFA-80] x27=[CFA-88] x28=[CFA-96] - // 12: CFA=sp+96 => x23=[CFA-56] x24=[CFA-64] x25=[CFA-72] x26=[CFA-80] - // x27=[CFA-88] x28=[CFA-96] - // 16: CFA=sp+96 => x21=[CFA-40] x22=[CFA-48] x23=[CFA-56] x24=[CFA-64] - // x25=[CFA-72] x26=[CFA-80] x27=[CFA-88] x28=[CFA-96] - // 20: CFA=sp+96 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // x23=[CFA-56] x24=[CFA-64] x25=[CFA-72] x26=[CFA-80] x27=[CFA-88] - // x28=[CFA-96] - // 24: CFA=sp+96 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // x23=[CFA-56] x24=[CFA-64] x25=[CFA-72] x26=[CFA-80] x27=[CFA-88] - // x28=[CFA-96] fp=[CFA-16] lr=[CFA-8] - // 28: CFA=fp+16 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // x23=[CFA-56] x24=[CFA-64] x25=[CFA-72] x26=[CFA-80] x27=[CFA-88] - // x28=[CFA-96] fp=[CFA-16] lr=[CFA-8] - - // 44: CFA=sp+96 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // x23=[CFA-56] x24=[CFA-64] x25=[CFA-72] x26=[CFA-80] x27=[CFA-88] - // x28=[CFA-96] fp=[CFA-16] lr=[CFA-8] - // 48: CFA=sp+96 => x19=[CFA-24] x20=[CFA-32] x21=[CFA-40] x22=[CFA-48] - // x23=[CFA-56] x24=[CFA-64] x25=[CFA-72] x26=[CFA-80] x27=[CFA-88] - // x28=[CFA-96] - // 52: CFA=sp+96 => x21=[CFA-40] x22=[CFA-48] x23=[CFA-56] x24=[CFA-64] - // x25=[CFA-72] x26=[CFA-80] x27=[CFA-88] x28=[CFA-96] - // 56: CFA=sp+96 => x23=[CFA-56] x24=[CFA-64] x25=[CFA-72] x26=[CFA-80] - // x27=[CFA-88] x28=[CFA-96] - // 60: CFA=sp+96 => x25=[CFA-72] x26=[CFA-80] x27=[CFA-88] x28=[CFA-96] - // 64: CFA=sp+96 => x27=[CFA-88] x28=[CFA-96] - // 68: CFA=sp +0 => - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - sample_range, data, sizeof(data), unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(36); - EXPECT_EQ(28ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_fp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x20_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-32, regloc.GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(40); - EXPECT_EQ(28ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_fp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_x20_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-32, regloc.GetOffset()); -} - -TEST_F(TestArm64InstEmulation, TestRegisterDoubleSpills) { - ArchSpec arch("arm64-apple-ios10"); - std::unique_ptr engine( - static_cast( - UnwindAssemblyInstEmulation::CreateInstance(arch))); - ASSERT_NE(nullptr, engine); - - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - UnwindPlan::Row::RegisterLocation regloc; - - // this file built with clang for iOS arch arm64 optimization -Os - // #include - // double foo(double in) { - // double arr[32]; - // for (int i = 0; i < 32; i++) - // arr[i] = in + i; - // for (int i = 2; i < 30; i++) - // arr[i] = ((((arr[i - 1] * arr[i - 2] * 0.2) + (0.7 * arr[i])) / - // ((((arr[i] * 0.73) + 0.65) * (arr[i - 1] + 0.2)) - ((arr[i + 1] + (arr[i] - // * 0.32) + 0.52) / 0.3) + (0.531 * arr[i - 2]))) + ((arr[i - 1] + 5) / - // ((arr[i + 2] + 0.4) / arr[i])) + (arr[5] * (0.17 + arr[7] * arr[i])) + - // ((i > 5 ? (arr[i - 3]) : arr[i - 1]) * 0.263) + (((arr[i - 2] + arr[i - - // 1]) * 0.3252) + 3.56) - (arr[i + 1] * 0.852311)) * ((arr[i] * 85234.1345) - // + (77342.451324 / (arr[i - 2] + arr[i - 1] - 73425341.33455))) + (arr[i] - // * 875712013.55) - (arr[i - 1] * 0.5555) - ((arr[i] * (arr[i + 1] + - // 17342834.44) / 8688200123.555)) + (arr[i - 2] + 8888.888); - // return arr[16]; - //} - // int main(int argc, char **argv) { printf("%g\n", foo(argc)); } - - // so function foo() uses enough registers that it spills the callee-saved - // floating point registers. - uint8_t data[] = { - // prologue - 0xef, 0x3b, 0xba, 0x6d, // 0: 0x6dba3bef stp d15, d14, [sp, #-0x60]! - 0xed, 0x33, 0x01, 0x6d, // 4: 0x6d0133ed stp d13, d12, [sp, #0x10] - 0xeb, 0x2b, 0x02, 0x6d, // 8: 0x6d022beb stp d11, d10, [sp, #0x20] - 0xe9, 0x23, 0x03, 0x6d, // 12: 0x6d0323e9 stp d9, d8, [sp, #0x30] - 0xfc, 0x6f, 0x04, 0xa9, // 16: 0xa9046ffc stp x28, x27, [sp, #0x40] - 0xfd, 0x7b, 0x05, 0xa9, // 20: 0xa9057bfd stp x29, x30, [sp, #0x50] - 0xfd, 0x43, 0x01, 0x91, // 24: 0x910143fd add x29, sp, #0x50 - 0xff, 0x43, 0x04, 0xd1, // 28: 0xd10443ff sub sp, sp, #0x110 - - // epilogue - 0xbf, 0x43, 0x01, 0xd1, // 32: 0xd10143bf sub sp, x29, #0x50 - 0xfd, 0x7b, 0x45, 0xa9, // 36: 0xa9457bfd ldp x29, x30, [sp, #0x50] - 0xfc, 0x6f, 0x44, 0xa9, // 40: 0xa9446ffc ldp x28, x27, [sp, #0x40] - 0xe9, 0x23, 0x43, 0x6d, // 44: 0x6d4323e9 ldp d9, d8, [sp, #0x30] - 0xeb, 0x2b, 0x42, 0x6d, // 48: 0x6d422beb ldp d11, d10, [sp, #0x20] - 0xed, 0x33, 0x41, 0x6d, // 52: 0x6d4133ed ldp d13, d12, [sp, #0x10] - 0xef, 0x3b, 0xc6, 0x6c, // 56: 0x6cc63bef ldp d15, d14, [sp], #0x60 - 0xc0, 0x03, 0x5f, 0xd6, // 60: 0xd65f03c0 ret - }; - - // UnwindPlan we expect: - // 0: CFA=sp +0 => - // 4: CFA=sp+96 => d14=[CFA-88] d15=[CFA-96] - // 8: CFA=sp+96 => d12=[CFA-72] d13=[CFA-80] d14=[CFA-88] d15=[CFA-96] - // 12: CFA=sp+96 => d10=[CFA-56] d11=[CFA-64] d12=[CFA-72] d13=[CFA-80] - // d14=[CFA-88] d15=[CFA-96] - // 16: CFA=sp+96 => d8=[CFA-40] d9=[CFA-48] d10=[CFA-56] d11=[CFA-64] - // d12=[CFA-72] d13=[CFA-80] d14=[CFA-88] d15=[CFA-96] - // 20: CFA=sp+96 => x27=[CFA-24] x28=[CFA-32] d8=[CFA-40] d9=[CFA-48] - // d10=[CFA-56] d11=[CFA-64] d12=[CFA-72] d13=[CFA-80] d14=[CFA-88] - // d15=[CFA-96] - // 24: CFA=sp+96 => x27=[CFA-24] x28=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // d8=[CFA-40] d9=[CFA-48] d10=[CFA-56] d11=[CFA-64] d12=[CFA-72] - // d13=[CFA-80] d14=[CFA-88] d15=[CFA-96] - // 28: CFA=fp+16 => x27=[CFA-24] x28=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // d8=[CFA-40] d9=[CFA-48] d10=[CFA-56] d11=[CFA-64] d12=[CFA-72] - // d13=[CFA-80] d14=[CFA-88] d15=[CFA-96] - // 36: CFA=sp+96 => x27=[CFA-24] x28=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // d8=[CFA-40] d9=[CFA-48] d10=[CFA-56] d11=[CFA-64] d12=[CFA-72] - // d13=[CFA-80] d14=[CFA-88] d15=[CFA-96] - // 40: CFA=sp+96 => x27=[CFA-24] x28=[CFA-32] d8=[CFA-40] d9=[CFA-48] - // d10=[CFA-56] d11=[CFA-64] d12=[CFA-72] d13=[CFA-80] d14=[CFA-88] - // d15=[CFA-96] - // 44: CFA=sp+96 => d8=[CFA-40] d9=[CFA-48] d10=[CFA-56] d11=[CFA-64] - // d12=[CFA-72] d13=[CFA-80] d14=[CFA-88] d15=[CFA-96] - // 48: CFA=sp+96 => d10=[CFA-56] d11=[CFA-64] d12=[CFA-72] d13=[CFA-80] - // d14=[CFA-88] d15=[CFA-96] - // 52: CFA=sp+96 => d12=[CFA-72] d13=[CFA-80] d14=[CFA-88] d15=[CFA-96] - // 56: CFA=sp+96 => d14=[CFA-88] d15=[CFA-96] - // 60: CFA=sp +0 => - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - sample_range, data, sizeof(data), unwind_plan)); - - // 28: CFA=fp+16 => x27=[CFA-24] x28=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // d8=[CFA-40] d9=[CFA-48] d10=[CFA-56] d11=[CFA-64] d12=[CFA-72] - // d13=[CFA-80] d14=[CFA-88] d15=[CFA-96] - row_sp = unwind_plan.GetRowForFunctionOffset(28); - EXPECT_EQ(28ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_fp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(fpu_d15_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-96, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(fpu_d14_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-88, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(fpu_d13_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-80, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(fpu_d12_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-72, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(fpu_d11_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-64, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(fpu_d10_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-56, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(fpu_d9_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-48, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(fpu_d8_arm64, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-40, regloc.GetOffset()); - - // 60: CFA=sp +0 => - row_sp = unwind_plan.GetRowForFunctionOffset(60); - EXPECT_EQ(60ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - if (row_sp->GetRegisterInfo(fpu_d8_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } - if (row_sp->GetRegisterInfo(fpu_d9_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } - if (row_sp->GetRegisterInfo(fpu_d10_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } - if (row_sp->GetRegisterInfo(fpu_d11_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } - if (row_sp->GetRegisterInfo(fpu_d12_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } - if (row_sp->GetRegisterInfo(fpu_d13_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } - if (row_sp->GetRegisterInfo(fpu_d14_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } - if (row_sp->GetRegisterInfo(fpu_d15_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } - if (row_sp->GetRegisterInfo(gpr_x27_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } - if (row_sp->GetRegisterInfo(gpr_x28_arm64, regloc)) { - EXPECT_TRUE(regloc.IsSame()); - } -} - -TEST_F(TestArm64InstEmulation, TestRetguardEmptyFunction) { - ArchSpec arch("arm64-unknown-openbsd6.4"); - std::unique_ptr engine( - static_cast( - UnwindAssemblyInstEmulation::CreateInstance(arch))); - ASSERT_NE(nullptr, engine); - - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - UnwindPlan::Row::RegisterLocation regloc; - - // void main() { } compiled on arm64-unknown-openbsd6.4 with -fret-protector - uint8_t data[] = { - 0x2f, 0x37, 0x00, 0xf0, // 0: adrp x15, #7237632 - 0xef, 0x35, 0x43, 0xf9, // 4: ldr x15, [x15, #1640] - 0xef, 0x01, 0x1e, 0xca, // 8: eor x15, x15, x30 - 0xef, 0x0f, 0x1f, 0xf8, // 12: str x15, [sp, #-16]! - 0xef, 0x07, 0x41, 0xf8, // 16: ldr x15, [sp], #16 - 0x29, 0x37, 0x00, 0xf0, // 20: adrp x9, #7237632 - 0x29, 0x35, 0x43, 0xf9, // 24: ldr x9, [x9, #1640] - 0xef, 0x01, 0x1e, 0xca, // 28: eor x15, x15, x30 - 0xef, 0x01, 0x09, 0xeb, // 32: subs x15, x15, x9 - 0x4f, 0x00, 0x00, 0xb4, // 36: cbz x15, #8 - 0x20, 0x00, 0x20, 0xd4, // 40: brk #0x1 - 0xc0, 0x03, 0x5f, 0xd6, // 44: ret - }; - - // UnwindPlan we expect - // 0: CFA=sp+0 - // 16: CFA=sp+16 - // 20: CFA=sp+0 - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - sample_range, data, sizeof(data), unwind_plan)); - - // 0: CFA=sp+0 - row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(0ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(8); - EXPECT_EQ(0ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(12); - EXPECT_EQ(0ull, row_sp->GetOffset()); - - // 16: CFA=sp+16 - row_sp = unwind_plan.GetRowForFunctionOffset(16); - EXPECT_EQ(16ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - // 20: CFA=sp+0 - row_sp = unwind_plan.GetRowForFunctionOffset(20); - EXPECT_EQ(20ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(24); - EXPECT_EQ(20ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(28); - EXPECT_EQ(20ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(32); - EXPECT_EQ(20ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(36); - EXPECT_EQ(20ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(40); - EXPECT_EQ(20ull, row_sp->GetOffset()); -} - -TEST_F(TestArm64InstEmulation, TestCFARegisterTrackedAcrossJumps) { - ArchSpec arch("arm64-apple-ios10"); - std::unique_ptr engine( - static_cast( - UnwindAssemblyInstEmulation::CreateInstance(arch))); - ASSERT_NE(nullptr, engine); - - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - UnwindPlan::Row::RegisterLocation regloc; - - uint8_t data[] = { - // prologue - 0xf4, 0x4f, 0xbe, 0xa9, // 0: 0xa9be4ff4 stp x20, x19, [sp, #-0x20]! - 0xfd, 0x7b, 0x01, 0xa9, // 4: 0xa9017bfd stp x29, x30, [sp, #0x10] - 0xfd, 0x43, 0x00, 0x91, // 8: 0x910043fd add x29, sp, #0x10 - 0xff, 0x43, 0x00, 0xd1, // 12: 0xd10043ff sub sp, sp, #0x10 - // conditional branch over a mid-function epilogue - 0xeb, 0x00, 0x00, 0x54, // 16: 0x540000eb b.lt <+44> - // mid-function epilogue - 0x1f, 0x20, 0x03, 0xd5, // 20: 0xd503201f nop - 0xe0, 0x03, 0x13, 0xaa, // 24: 0xaa1303e0 mov x0, x19 - 0xbf, 0x43, 0x00, 0xd1, // 28: 0xd10043bf sub sp, x29, #0x10 - 0xfd, 0x7b, 0x41, 0xa9, // 32: 0xa9417bfd ldp x29, x30, [sp, #0x10] - 0xf4, 0x4f, 0xc2, 0xa8, // 36: 0xa8c24ff4 ldp x20, x19, [sp], #0x20 - 0xc0, 0x03, 0x5f, 0xd6, // 40: 0xd65f03c0 ret - // unwind state restored, we're using a frame pointer, let's change the - // stack pointer and see no change in how the CFA is computed - 0x1f, 0x20, 0x03, 0xd5, // 44: 0xd503201f nop - 0xff, 0x43, 0x00, 0xd1, // 48: 0xd10043ff sub sp, sp, #0x10 - 0x1f, 0x20, 0x03, 0xd5, // 52: 0xd503201f nop - // final epilogue - 0xe0, 0x03, 0x13, 0xaa, // 56: 0xaa1303e0 mov x0, x19 - 0xbf, 0x43, 0x00, 0xd1, // 60: 0xd10043bf sub sp, x29, #0x10 - 0xfd, 0x7b, 0x41, 0xa9, // 64: 0xa9417bfd ldp x29, x30, [sp, #0x10] - 0xf4, 0x4f, 0xc2, 0xa8, // 68: 0xa8c24ff4 ldp x20, x19, [sp], #0x20 - 0xc0, 0x03, 0x5f, 0xd6, // 72: 0xd65f03c0 ret - - 0x1f, 0x20, 0x03, 0xd5, // 52: 0xd503201f nop - }; - - // UnwindPlan we expect: - // row[0]: 0: CFA=sp +0 => - // row[1]: 4: CFA=sp+32 => x19=[CFA-24] x20=[CFA-32] - // row[2]: 8: CFA=sp+32 => x19=[CFA-24] x20=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // row[3]: 12: CFA=fp+16 => x19=[CFA-24] x20=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // row[4]: 32: CFA=sp+32 => x19=[CFA-24] x20=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // row[5]: 36: CFA=sp+32 => x19=[CFA-24] x20=[CFA-32] fp= lr= - // row[6]: 40: CFA=sp +0 => x19= x20= fp= lr= - // row[7]: 44: CFA=fp+16 => x19=[CFA-24] x20=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // row[8]: 64: CFA=sp+32 => x19=[CFA-24] x20=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // row[9]: 68: CFA=sp+32 => x19=[CFA-24] x20=[CFA-32] fp= lr= - // row[10]: 72: CFA=sp +0 => x19= x20= fp= lr= - - // The specific bug we're looking for is this incorrect CFA definition, - // where the InstEmulation is using the $sp value mixed in with $fp, - // it looks like this: - // - // row[7]: 44: CFA=fp+16 => x19=[CFA-24] x20=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // row[8]: 52: CFA=fp+64 => x19=[CFA-24] x20=[CFA-32] fp=[CFA-16] lr=[CFA-8] - // row[9]: 68: CFA=fp+64 => x19=[CFA-24] x20=[CFA-32] fp= lr= - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - sample_range, data, sizeof(data), unwind_plan)); - - // Confirm CFA at mid-func epilogue 'ret' is $sp+0 - row_sp = unwind_plan.GetRowForFunctionOffset(40); - EXPECT_EQ(40ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - // After the 'ret', confirm we're back to the correct CFA of $fp+16 - row_sp = unwind_plan.GetRowForFunctionOffset(44); - EXPECT_EQ(44ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_fp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - // Confirm that we have no additional UnwindPlan rows before the - // real epilogue -- we still get the Row at offset 44. - row_sp = unwind_plan.GetRowForFunctionOffset(60); - EXPECT_EQ(44ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_fp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - // And in the epilogue, confirm that we start by switching back to - // defining the CFA in terms of $sp. - row_sp = unwind_plan.GetRowForFunctionOffset(64); - EXPECT_EQ(64ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_sp_arm64); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(32, row_sp->GetCFAValue().GetOffset()); -} - diff --git a/gnu/llvm/lldb/unittests/UnwindAssembly/CMakeLists.txt b/gnu/llvm/lldb/unittests/UnwindAssembly/CMakeLists.txt deleted file mode 100644 index 136fcd9ae97..00000000000 --- a/gnu/llvm/lldb/unittests/UnwindAssembly/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -if ("AArch64" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(ARM64) -endif() - -if ("PowerPC" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(PPC64) -endif() - -if ("X86" IN_LIST LLVM_TARGETS_TO_BUILD) - add_subdirectory(x86) -endif() diff --git a/gnu/llvm/lldb/unittests/UnwindAssembly/PPC64/CMakeLists.txt b/gnu/llvm/lldb/unittests/UnwindAssembly/PPC64/CMakeLists.txt deleted file mode 100644 index 679f7664cb8..00000000000 --- a/gnu/llvm/lldb/unittests/UnwindAssembly/PPC64/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -add_lldb_unittest(PPC64InstEmulationTests - TestPPC64InstEmulation.cpp - LINK_LIBS - lldbCore - lldbSymbol - lldbTarget - lldbPluginUnwindAssemblyInstEmulation - lldbPluginDisassemblerLLVMC - lldbPluginInstructionPPC64 - lldbPluginProcessUtility - LINK_COMPONENTS - Support - ${LLVM_TARGETS_TO_BUILD}) diff --git a/gnu/llvm/lldb/unittests/UnwindAssembly/PPC64/TestPPC64InstEmulation.cpp b/gnu/llvm/lldb/unittests/UnwindAssembly/PPC64/TestPPC64InstEmulation.cpp deleted file mode 100644 index 9892e18d99c..00000000000 --- a/gnu/llvm/lldb/unittests/UnwindAssembly/PPC64/TestPPC64InstEmulation.cpp +++ /dev/null @@ -1,258 +0,0 @@ -//===-- TestPPC64InstEmulation.cpp ----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include - -#include "Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.h" - -#include "lldb/Core/Address.h" -#include "lldb/Core/AddressRange.h" -#include "lldb/Symbol/UnwindPlan.h" -#include "lldb/Target/UnwindAssembly.h" -#include "lldb/Utility/ArchSpec.h" - -#include "Plugins/Disassembler/LLVMC/DisassemblerLLVMC.h" -#include "Plugins/Instruction/PPC64/EmulateInstructionPPC64.h" -#include "Plugins/Process/Utility/lldb-ppc64le-register-enums.h" -#include "llvm/Support/TargetSelect.h" - -using namespace lldb; -using namespace lldb_private; - -class TestPPC64InstEmulation : public testing::Test { -public: - static void SetUpTestCase(); - static void TearDownTestCase(); - - // virtual void SetUp() override { } - // virtual void TearDown() override { } - -protected: -}; - -void TestPPC64InstEmulation::SetUpTestCase() { - llvm::InitializeAllTargets(); - llvm::InitializeAllAsmPrinters(); - llvm::InitializeAllTargetMCs(); - llvm::InitializeAllDisassemblers(); - DisassemblerLLVMC::Initialize(); - EmulateInstructionPPC64::Initialize(); -} - -void TestPPC64InstEmulation::TearDownTestCase() { - DisassemblerLLVMC::Terminate(); - EmulateInstructionPPC64::Terminate(); -} - -TEST_F(TestPPC64InstEmulation, TestSimpleFunction) { - ArchSpec arch("powerpc64le-linux-gnu"); - std::unique_ptr engine( - static_cast( - UnwindAssemblyInstEmulation::CreateInstance(arch))); - ASSERT_NE(nullptr, engine); - - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - UnwindPlan::Row::RegisterLocation regloc; - - // prologue and epilogue of: - // int main() { - // int i = test(); - // return i; - // } - // - // compiled with clang -O0 -g - uint8_t data[] = { - // prologue - 0x02, 0x10, 0x40, 0x3c, // 0: lis r2, 4098 - 0x00, 0x7f, 0x42, 0x38, // 4: addi r2, r2, 32512 - 0xa6, 0x02, 0x08, 0x7c, // 8: mflr r0 - 0xf8, 0xff, 0xe1, 0xfb, // 12: std r31, -8(r1) - 0x10, 0x00, 0x01, 0xf8, // 16: std r0, 16(r1) - 0x91, 0xff, 0x21, 0xf8, // 20: stdu r1, -112(r1) - 0x78, 0x0b, 0x3f, 0x7c, // 24: mr r31, r1 - 0x00, 0x00, 0x60, 0x38, // 28: li r3, 0 - 0x64, 0x00, 0x7f, 0x90, // 32: stw r3, 100(r31) - - // epilogue - 0x70, 0x00, 0x21, 0x38, // 36: addi r1, r1, 112 - 0x10, 0x00, 0x01, 0xe8, // 40: ld r0, 16(r1) - 0xf8, 0xff, 0xe1, 0xeb, // 44: ld r31, -8(r1) - 0xa6, 0x03, 0x08, 0x7c, // 48: mtlr r0 - 0x20, 0x00, 0x80, 0x4e // 52: blr - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - sample_range, data, sizeof(data), unwind_plan)); - - // 0: CFA=sp+0 - row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r1_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - // 1: CFA=sp+0 => fp=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(16); - EXPECT_EQ(16ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r1_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_r31_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 2: CFA=sp+0 => fp=[CFA-8] lr=[CFA+16] - row_sp = unwind_plan.GetRowForFunctionOffset(20); - EXPECT_EQ(20ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r1_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(16, regloc.GetOffset()); - - // 3: CFA=sp+112 => fp=[CFA-8] lr=[CFA+16] - row_sp = unwind_plan.GetRowForFunctionOffset(24); - EXPECT_EQ(24ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r1_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(112, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_r31_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(16, regloc.GetOffset()); - - // 4: CFA=r31+112 => fp=[CFA-8] lr=[CFA+16] - row_sp = unwind_plan.GetRowForFunctionOffset(28); - EXPECT_EQ(28ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r31_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(112, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_r31_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(16, regloc.GetOffset()); - - // 5: CFA=sp+0 => fp=[CFA-8] lr=[CFA+16] - row_sp = unwind_plan.GetRowForFunctionOffset(40); - EXPECT_EQ(40ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r1_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_r31_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(16, regloc.GetOffset()); -} - -TEST_F(TestPPC64InstEmulation, TestMediumFunction) { - ArchSpec arch("powerpc64le-linux-gnu"); - std::unique_ptr engine( - static_cast( - UnwindAssemblyInstEmulation::CreateInstance(arch))); - ASSERT_NE(nullptr, engine); - - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - UnwindPlan::Row::RegisterLocation regloc; - - // prologue and epilogue of main() (call-func.c), - // with several calls and stack variables. - // - // compiled with clang -O0 -g - uint8_t data[] = { - // prologue - 0xa6, 0x02, 0x08, 0x7c, // 0: mflr r0 - 0xf8, 0xff, 0xe1, 0xfb, // 4: std r31, -8(r1) - 0x10, 0x00, 0x01, 0xf8, // 8: std r0, 16(r1) - 0x78, 0x0b, 0x3e, 0x7c, // 12: mr r30, r1 - 0xe0, 0x06, 0x20, 0x78, // 16: clrldi r0, r1, 59 - 0xa0, 0xfa, 0x00, 0x20, // 20: subfic r0, r0, -1376 - 0x6a, 0x01, 0x21, 0x7c, // 24: stdux r1, r1, r0 - 0x78, 0x0b, 0x3f, 0x7c, // 28: mr r31, r1 - - // epilogue - 0x00, 0x00, 0x21, 0xe8, // 32: ld r1, 0(r1) - 0x20, 0x00, 0x80, 0x4e // 36: blr - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - sample_range, data, sizeof(data), unwind_plan)); - - // 0: CFA=sp+0 - row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r1_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - // 1: CFA=sp+0 => fp=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(8); - EXPECT_EQ(8ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r1_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_r31_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 2: CFA=sp+0 => fp=[CFA-8] lr=[CFA+16] - row_sp = unwind_plan.GetRowForFunctionOffset(12); - EXPECT_EQ(12ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r1_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(gpr_lr_ppc64le, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(16, regloc.GetOffset()); - - // 3: CFA=r30 - row_sp = unwind_plan.GetRowForFunctionOffset(16); - EXPECT_EQ(16ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r30_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(32); - EXPECT_EQ(16ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r30_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); - - // 4: CFA=sp+0 - row_sp = unwind_plan.GetRowForFunctionOffset(36); - EXPECT_EQ(36ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == gpr_r1_ppc64le); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(0, row_sp->GetCFAValue().GetOffset()); -} diff --git a/gnu/llvm/lldb/unittests/UnwindAssembly/x86/CMakeLists.txt b/gnu/llvm/lldb/unittests/UnwindAssembly/x86/CMakeLists.txt deleted file mode 100644 index 2b5b31f7906..00000000000 --- a/gnu/llvm/lldb/unittests/UnwindAssembly/x86/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -add_lldb_unittest(UnwindAssemblyx86Tests - Testx86AssemblyInspectionEngine.cpp - LINK_LIBS - lldbCore - lldbSymbol - lldbPluginUnwindAssemblyX86 - LINK_COMPONENTS - Support - ${LLVM_TARGETS_TO_BUILD} - ) diff --git a/gnu/llvm/lldb/unittests/UnwindAssembly/x86/Testx86AssemblyInspectionEngine.cpp b/gnu/llvm/lldb/unittests/UnwindAssembly/x86/Testx86AssemblyInspectionEngine.cpp deleted file mode 100644 index 8267ecbf57e..00000000000 --- a/gnu/llvm/lldb/unittests/UnwindAssembly/x86/Testx86AssemblyInspectionEngine.cpp +++ /dev/null @@ -1,3117 +0,0 @@ -//===-- Testx86AssemblyInspectionEngine.cpp -------------------------------===// - -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include -#include - -#include "Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.h" -#include "lldb/Core/Address.h" -#include "lldb/Core/AddressRange.h" -#include "lldb/Symbol/UnwindPlan.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/StreamString.h" - -#include "llvm/Support/TargetSelect.h" - -using namespace lldb; -using namespace lldb_private; - -class Testx86AssemblyInspectionEngine : public testing::Test { -public: - static void SetUpTestCase(); - - // static void TearDownTestCase() { } - - // virtual void SetUp() override { } - - // virtual void TearDown() override { } - -protected: -}; - -void Testx86AssemblyInspectionEngine::SetUpTestCase() { - llvm::InitializeAllTargets(); - llvm::InitializeAllAsmPrinters(); - llvm::InitializeAllTargetMCs(); - llvm::InitializeAllDisassemblers(); -} - -// only defining the register names / numbers that the unwinder is actually -// using today - -// names should match the constants below. These will be the eRegisterKindLLDB -// register numbers. - -const char *x86_64_reg_names[] = {"rax", "rbx", "rcx", "rdx", "rsp", "rbp", - "rsi", "rdi", "r8", "r9", "r10", "r11", - "r12", "r13", "r14", "r15", "rip"}; - -enum x86_64_regs { - k_rax = 0, - k_rbx = 1, - k_rcx = 2, - k_rdx = 3, - k_rsp = 4, - k_rbp = 5, - k_rsi = 6, - k_rdi = 7, - k_r8 = 8, - k_r9 = 9, - k_r10 = 10, - k_r11 = 11, - k_r12 = 12, - k_r13 = 13, - k_r14 = 14, - k_r15 = 15, - k_rip = 16 -}; - -// names should match the constants below. These will be the eRegisterKindLLDB -// register numbers. - -const char *i386_reg_names[] = {"eax", "ecx", "edx", "ebx", "esp", - "ebp", "esi", "edi", "eip"}; - -enum i386_regs { - k_eax = 0, - k_ecx = 1, - k_edx = 2, - k_ebx = 3, - k_esp = 4, - k_ebp = 5, - k_esi = 6, - k_edi = 7, - k_eip = 8 -}; - -std::unique_ptr Getx86_64Inspector() { - - ArchSpec arch("x86_64-apple-macosx"); - std::unique_ptr engine( - new x86AssemblyInspectionEngine(arch)); - - std::vector lldb_regnums; - int i = 0; - for (const auto &name : x86_64_reg_names) { - x86AssemblyInspectionEngine::lldb_reg_info ri; - ri.name = name; - ri.lldb_regnum = i++; - lldb_regnums.push_back(ri); - } - - engine->Initialize(lldb_regnums); - return engine; -} - -std::unique_ptr Geti386Inspector() { - - ArchSpec arch("i386-apple-macosx"); - std::unique_ptr engine( - new x86AssemblyInspectionEngine(arch)); - - std::vector lldb_regnums; - int i = 0; - for (const auto &name : i386_reg_names) { - x86AssemblyInspectionEngine::lldb_reg_info ri; - ri.name = name; - ri.lldb_regnum = i++; - lldb_regnums.push_back(ri); - } - - engine->Initialize(lldb_regnums); - return engine; -} - -namespace lldb_private { -static std::ostream &operator<<(std::ostream &OS, - const UnwindPlan::Row::FAValue &CFA) { - StreamString S; - CFA.Dump(S, nullptr, nullptr); - return OS << S.GetData(); -} -} // namespace lldb_private - -TEST_F(Testx86AssemblyInspectionEngine, TestSimple64bitFrameFunction) { - std::unique_ptr engine = Getx86_64Inspector(); - - // 'int main() { }' compiled for x86_64-apple-macosx with clang - uint8_t data[] = { - 0x55, // offset 0 -- pushq %rbp - 0x48, 0x89, 0xe5, // offset 1 -- movq %rsp, %rbp - 0x31, 0xc0, // offset 4 -- xorl %eax, %eax - 0x5d, // offset 6 -- popq %rbp - 0xc3 // offset 7 -- retq - }; - - AddressRange sample_range(0x1000, sizeof(data)); - - UnwindPlan unwind_plan(eRegisterKindLLDB); - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - // Expect four unwind rows: - // 0: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - // 1: CFA=rsp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - // 4: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - // 7: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - - EXPECT_TRUE(unwind_plan.GetInitialCFARegister() == k_rsp); - EXPECT_TRUE(unwind_plan.GetUnwindPlanValidAtAllInstructions() == - eLazyBoolYes); - EXPECT_TRUE(unwind_plan.GetSourcedFromCompiler() == eLazyBoolNo); - - UnwindPlan::Row::RegisterLocation regloc; - - // 0: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - UnwindPlan::RowSP row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 1: CFA=rsp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 4: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 7: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(7); - EXPECT_EQ(7ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestSimple32bitFrameFunction) { - std::unique_ptr engine = Geti386Inspector(); - - // 'int main() { }' compiled for i386-apple-macosx with clang - uint8_t data[] = { - 0x55, // offset 0 -- pushl %ebp - 0x89, 0xe5, // offset 1 -- movl %esp, %ebp - 0x31, 0xc0, // offset 3 -- xorl %eax, %eax - 0x5d, // offset 5 -- popl %ebp - 0xc3 // offset 6 -- retl - }; - - AddressRange sample_range(0x1000, sizeof(data)); - - UnwindPlan unwind_plan(eRegisterKindLLDB); - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - // Expect four unwind rows: - // 0: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - // 1: CFA=esp +8 => ebp=[CFA-8] esp=CFA+0 eip=[CFA-4] - // 3: CFA=ebp +8 => ebp=[CFA-8] esp=CFA+0 eip=[CFA-4] - // 6: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - - EXPECT_TRUE(unwind_plan.GetInitialCFARegister() == k_esp); - EXPECT_TRUE(unwind_plan.GetUnwindPlanValidAtAllInstructions() == - eLazyBoolYes); - EXPECT_TRUE(unwind_plan.GetSourcedFromCompiler() == eLazyBoolNo); - - UnwindPlan::Row::RegisterLocation regloc; - - // offset 0 -- pushl %ebp - UnwindPlan::RowSP row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_eip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_TRUE(regloc.GetOffset() == -4); - - // 1: CFA=esp +8 => ebp=[CFA-8] esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_eip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-4, regloc.GetOffset()); - - // 3: CFA=ebp +8 => ebp=[CFA-8] esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(3); - EXPECT_EQ(3ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_ebp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_eip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-4, regloc.GetOffset()); - - // 6: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(6); - EXPECT_EQ(6ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_eip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-4, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, Test64bitFramelessBigStackFrame) { - std::unique_ptr engine = Getx86_64Inspector(); - - // this source file: - // - // #include - // int main (int argc, char **argv) - // { - // - // const int arrsize = 60; - // int buf[arrsize * arrsize]; - // int accum = argc; - // for (int i = 0; i < arrsize; i++) - // for (int j = 0; j < arrsize; j++) - // { - // if (i > 0 && j > 0) - // { - // int n = buf[(i-1) * (j-1)] * 2; - // int m = buf[(i-1) * (j-1)] / 2; - // int j = buf[(i-1) * (j-1)] + 2; - // int k = buf[(i-1) * (j-1)] - 2; - // printf ("%d ", n + m + j + k); - // buf[(i-1) * (j-1)] += n - m + j - k; - // } - // buf[i*j] = accum++; - // } - // - // return buf[(arrsize * arrsize) - 2] + printf ("%d\n", buf[(arrsize * - // arrsize) - 3]); - // } - // - // compiled 'clang -fomit-frame-pointer -Os' for x86_64-apple-macosx - - uint8_t data[] = { - 0x55, // offset 0 -- pushq %rbp - 0x41, 0x57, // offset 1 -- pushq %r15 - 0x41, 0x56, // offset 3 -- pushq %r14 - 0x41, 0x55, // offset 5 -- pushq %r13 - 0x41, 0x54, // offset 7 -- pushq %r12 - 0x53, // offset 9 -- pushq %rbx - 0x48, 0x81, 0xec, 0x68, 0x38, 0x00, - 0x00, // offset 10 -- subq $0x3868, %rsp - - // .... - - 0x48, 0x81, 0xc4, 0x68, 0x38, 0x00, - 0x00, // offset 17 -- addq $0x3868, %rsp - 0x5b, // offset 24 -- popq %rbx - 0x41, 0x5c, // offset 25 -- popq %r12 - 0x41, 0x5d, // offset 27 -- popq %r13 - 0x41, 0x5e, // offset 29 -- popq %r14 - 0x41, 0x5f, // offset 31 -- popq %r15 - 0x5d, // offset 33 -- popq %rbp - 0xc3, // offset 34 -- retq - 0xe8, 0x12, 0x34, 0x56, 0x78 // offset 35 -- callq whatever - }; - - AddressRange sample_range(0x1000, sizeof(data)); - - UnwindPlan unwind_plan(eRegisterKindLLDB); - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - // Unwind rules should look like - // 0: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - // 1: CFA=rsp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - // 3: CFA=rsp+24 => rbp=[CFA-16] rsp=CFA+0 r15=[CFA-24] rip=[CFA-8] - // 5: CFA=rsp+32 => rbp=[CFA-16] rsp=CFA+0 r14=[CFA-32] r15=[CFA-24] - // rip=[CFA-8 - // 7: CFA=rsp+40 => rbp=[CFA-16] rsp=CFA+0 r13=[CFA-40] r14=[CFA-32] - // r15=[CFA-24] rip=[CFA-8] - // 9: CFA=rsp+48 => rbp=[CFA-16] rsp=CFA+0 r12=[CFA-48] r13=[CFA-40] - // r14=[CFA-32] r15=[CFA-24] rip=[CFA-8] - // 10: CFA=rsp+56 => rbx=[CFA-56] rbp=[CFA-16] rsp=CFA+0 r12=[CFA-48] - // r13=[CFA-40] r14=[CFA-32] r15=[CFA-24] rip=[CFA-8] - // 17: CFA=rsp+14496 => rbx=[CFA-56] rbp=[CFA-16] rsp=CFA+0 r12=[CFA-48] - // r13=[CFA-40] r14=[CFA-32] r15=[CFA-24] rip=[CFA-8] - - // 24: CFA=rsp+56 => rbx=[CFA-56] rbp=[CFA-16] rsp=CFA+0 r12=[CFA-48] - // r13=[CFA-40] r14=[CFA-32] r15=[CFA-24] rip=[CFA-8] - // 25: CFA=rsp+48 => rbp=[CFA-16] rsp=CFA+0 r12=[CFA-48] r13=[CFA-40] - // r14=[CFA-32] r15=[CFA-24] rip=[CFA-8] - // 27: CFA=rsp+40 => rbp=[CFA-16] rsp=CFA+0 r13=[CFA-40] r14=[CFA-32] - // r15=[CFA-24] rip=[CFA-8] - // 29: CFA=rsp+32 => rbp=[CFA-16] rsp=CFA+0 r14=[CFA-32] r15=[CFA-24] - // rip=[CFA-8] - // 31: CFA=rsp+24 => rbp=[CFA-16] rsp=CFA+0 r15=[CFA-24] rip=[CFA-8] - // 33: CFA=rsp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - // 34: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - - UnwindPlan::Row::RegisterLocation regloc; - - // grab the Row for when the prologue has finished executing: - // 17: CFA=rsp+14496 => rbx=[CFA-56] rbp=[CFA-16] rsp=CFA+0 r12=[CFA-48] - // r13=[CFA-40] r14=[CFA-32] r15=[CFA-24] rip=[CFA-8] - - UnwindPlan::RowSP row_sp = unwind_plan.GetRowForFunctionOffset(17); - - EXPECT_EQ(17ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(14496, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rbp, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r15, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-24, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r14, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-32, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r13, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-40, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r12, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-48, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rbx, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-56, regloc.GetOffset()); - - // grab the Row for when the epilogue has finished executing: - // 34: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - - row_sp = unwind_plan.GetRowForFunctionOffset(34); - - EXPECT_EQ(34ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // these could be set to IsSame and be valid -- meaning that the - // register value is the same as the caller's -- but I'd rather - // they not be mentioned at all. - - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rax, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rcx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rdx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbp, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rsi, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rdi, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r8, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r9, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r10, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r11, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r12, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r13, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r14, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r15, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, Test32bitFramelessBigStackFrame) { - std::unique_ptr engine = Geti386Inspector(); - - // this source file: - // - // #include - // int main (int argc, char **argv) - // { - // - // const int arrsize = 60; - // int buf[arrsize * arrsize]; - // int accum = argc; - // for (int i = 0; i < arrsize; i++) - // for (int j = 0; j < arrsize; j++) - // { - // if (i > 0 && j > 0) - // { - // int n = buf[(i-1) * (j-1)] * 2; - // int m = buf[(i-1) * (j-1)] / 2; - // int j = buf[(i-1) * (j-1)] + 2; - // int k = buf[(i-1) * (j-1)] - 2; - // printf ("%d ", n + m + j + k); - // buf[(i-1) * (j-1)] += n - m + j - k; - // } - // buf[i*j] = accum++; - // } - // - // return buf[(arrsize * arrsize) - 2] + printf ("%d\n", buf[(arrsize * - // arrsize) - 3]); - // } - // - // compiled 'clang -arch i386 -fomit-frame-pointer -Os' for i386-apple-macosx - - // simplified assembly version of the above function, which is used as the - // input - // data: - // - // .section __TEXT,__text,regular,pure_instructions - // .macosx_version_min 10, 12 - // .globl _main - // .align 4, 0x90 - // _main: ## @main - // ## BB#0: - // pushl %ebp - // pushl %ebx - // pushl %edi - // pushl %esi - // L0$pb: - // subl $0x386c, %esp - // calll L1 - // L1: - // popl %ecx - // movl %ecx, 0x8(%esp) - // subl $0x8, %esp - // pushl %eax - // pushl 0x20(%esp) - // calll _puts - // addl $0x10, %esp - // incl %ebx - // addl $0x386c, %esp - // popl %esi - // popl %edi - // popl %ebx - // popl %ebp - // retl - // - // .section __TEXT,__cstring,cstring_literals - // L_.str: ## @.str - // .asciz "HI" - // - // - // .subsections_via_symbols - - uint8_t data[] = { - 0x55, - // offset 0 -- pushl %ebp - - 0x53, - // offset 1 -- pushl %ebx - - 0x57, - // offset 2 -- pushl %edi - - 0x56, - // offset 3 -- pushl %esi - - 0x81, 0xec, 0x6c, 0x38, 0x00, 0x00, - // offset 4 -- subl $0x386c, %esp - - 0xe8, 0x00, 0x00, 0x00, 0x00, - // offset 10 -- calll 0 - // call the next instruction, to put the pc on the stack - - 0x59, - // offset 15 -- popl %ecx - // pop the saved pc address into ecx - - 0x89, 0x4c, 0x24, 0x08, - // offset 16 -- movl %ecx, 0x8(%esp) - - // .... - - 0x83, 0xec, 0x08, - // offset 20 -- subl $0x8, %esp - - 0x50, - // offset 23 -- pushl %eax - - 0xff, 0x74, 0x24, 0x20, - // offset 24 -- pushl 0x20(%esp) - - 0xe8, 0x8c, 0x00, 0x00, 0x00, - // offset 28 -- calll puts - - 0x83, 0xc4, 0x10, - // offset 33 -- addl $0x10, %esp - // get esp back to the value it was before the - // alignment & argument saves for the puts call - - 0x43, - // offset 36 -- incl %ebx - - // .... - - 0x81, 0xc4, 0x6c, 0x38, 0x00, 0x00, - // offset 37 -- addl $0x386c, %esp - - 0x5e, - // offset 43 -- popl %esi - - 0x5f, - // offset 44 -- popl %edi - - 0x5b, - // offset 45 -- popl %ebx - - 0x5d, - // offset 46 -- popl %ebp - - 0xc3, - // offset 47 -- retl - - 0xe8, 0x12, 0x34, 0x56, 0x78, - // offset 48 -- calll __stack_chk_fail - }; - - AddressRange sample_range(0x1000, sizeof(data)); - - UnwindPlan unwind_plan(eRegisterKindLLDB); - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - // Unwind rules should look like - // - // 0: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - // 1: CFA=esp +8 => ebp=[CFA-8] esp=CFA+0 eip=[CFA-4] - // 2: CFA=esp+12 => ebx=[CFA-12] ebp=[CFA-8] esp=CFA+0 eip=[CFA-4] - // 3: CFA=esp+16 => ebx=[CFA-12] edi=[CFA-16] ebp=[CFA-8] esp=CFA+0 - // eip=[CFA-4] - // 4: CFA=esp+20 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // 10: CFA=esp+14464 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // 15: CFA=esp+14468 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // 16: CFA=esp+14464 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // - // .... - // - // 23: CFA=esp+14472 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // 24: CFA=esp+14476 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // 28: CFA=esp+14480 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // 36: CFA=esp+14464 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // - // ..... - // - // 37: CFA=esp+14464 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // 43: CFA=esp+20 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - // 44: CFA=esp+16 => ebx=[CFA-12] edi=[CFA-16] ebp=[CFA-8] esp=CFA+0 - // eip=[CFA-4] - // 45: CFA=esp+12 => ebx=[CFA-12] ebp=[CFA-8] esp=CFA+0 eip=[CFA-4] - // 46: CFA=esp +8 => ebp=[CFA-8] esp=CFA+0 eip=[CFA-4] - // 47: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - // 48: CFA=esp+14480 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - // Check that we get the CFA correct for the pic base setup sequence - - // CFA=esp+14464 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(10); - EXPECT_EQ(10ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(14464, row_sp->GetCFAValue().GetOffset()); - - // 15: CFA=esp+14468 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(15); - EXPECT_EQ(15ull, row_sp->GetOffset()); - EXPECT_EQ(14468, row_sp->GetCFAValue().GetOffset()); - - // 16: CFA=esp+14464 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(16); - EXPECT_EQ(16ull, row_sp->GetOffset()); - EXPECT_EQ(14464, row_sp->GetCFAValue().GetOffset()); - - // Check that the row for offset 16 has the registers saved that we expect - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_eip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-4, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_ebp, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_ebx, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-12, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_edi, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_esi, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-20, regloc.GetOffset()); - - // - // Check the pushing & popping around the call printf instruction - - // 23: CFA=esp+14472 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(23); - EXPECT_EQ(23ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(14472, row_sp->GetCFAValue().GetOffset()); - - // 24: CFA=esp+14476 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(24); - EXPECT_EQ(24ull, row_sp->GetOffset()); - EXPECT_EQ(14476, row_sp->GetCFAValue().GetOffset()); - - // 28: CFA=esp+14480 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(28); - EXPECT_EQ(28ull, row_sp->GetOffset()); - EXPECT_EQ(14480, row_sp->GetCFAValue().GetOffset()); - - // 36: CFA=esp+14464 => ebx=[CFA-12] edi=[CFA-16] esi=[CFA-20] ebp=[CFA-8] - // esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(36); - EXPECT_EQ(36ull, row_sp->GetOffset()); - EXPECT_EQ(14464, row_sp->GetCFAValue().GetOffset()); - - // Check that the epilogue gets us back to the original unwind state - - // 47: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(47); - EXPECT_EQ(47ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_eip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-4, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_esp, regloc)); - EXPECT_TRUE(regloc.IsCFAPlusOffset()); - EXPECT_EQ(0, regloc.GetOffset()); - - // Check that no unexpected registers were saved - - EXPECT_FALSE(row_sp->GetRegisterInfo(k_eax, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ebx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ecx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_edx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_esi, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_edi, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ebp, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, Test64bitFramelessSmallStackFrame) { - std::unique_ptr engine = Getx86_64Inspector(); - - // this source file: - // #include - // int main () { - // puts ("HI"); - // } - // - // compiled 'clang -fomit-frame-pointer' for x86_64-apple-macosx - - uint8_t data[] = { - 0x50, - // offset 0 -- pushq %rax - - 0x48, 0x8d, 0x3d, 0x32, 0x00, 0x00, 0x00, - // offset 1 -- leaq 0x32(%rip), %rdi ; "HI" - - 0xe8, 0x0b, 0x00, 0x00, 0x00, - // offset 8 -- callq 0x100000f58 ; puts - - 0x31, 0xc9, - // offset 13 -- xorl %ecx, %ecx - - 0x89, 0x44, 0x24, 0x04, - // offset 15 -- movl %eax, 0x4(%rsp) - - 0x89, 0xc8, - // offset 19 -- movl %ecx, %eax - - 0x59, - // offset 21 -- popq %rcx - - 0xc3 - // offset 22 -- retq - }; - - AddressRange sample_range(0x1000, sizeof(data)); - - UnwindPlan unwind_plan(eRegisterKindLLDB); - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - // Unwind rules should look like - // 0: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - // 1: CFA=rsp+16 => rsp=CFA+0 rip=[CFA-8] - // 22: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - - UnwindPlan::Row::RegisterLocation regloc; - - // grab the Row for when the prologue has finished executing: - // 1: CFA=rsp+16 => rsp=CFA+0 rip=[CFA-8] - - UnwindPlan::RowSP row_sp = unwind_plan.GetRowForFunctionOffset(13); - - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // none of these were spilled - - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rax, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rcx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rdx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbp, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rsi, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rdi, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r8, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r9, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r10, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r11, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r12, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r13, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r14, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r15, regloc)); - - // grab the Row for when the epilogue has finished executing: - // 22: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - - row_sp = unwind_plan.GetRowForFunctionOffset(22); - - EXPECT_EQ(22ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, Test32bitFramelessSmallStackFrame) { - std::unique_ptr engine = Geti386Inspector(); - - // this source file: - // #include - // int main () { - // puts ("HI"); - // } - // - // compiled 'clang -arch i386 -fomit-frame-pointer' for i386-apple-macosx - - uint8_t data[] = { - 0x83, 0xec, 0x0c, - // offset 0 -- subl $0xc, %esp - - 0xe8, 0x00, 0x00, 0x00, 0x00, - // offset 3 -- calll 0 {call the next instruction, to put the pc on - // the stack} - - 0x58, - // offset 8 -- popl %eax {pop the saved pc value off stack, into eax} - - 0x8d, 0x80, 0x3a, 0x00, 0x00, 0x00, - // offset 9 -- leal 0x3a(%eax),%eax - - 0x89, 0x04, 0x24, - // offset 15 -- movl %eax, (%esp) - - 0xe8, 0x0d, 0x00, 0x00, 0x00, - // offset 18 -- calll 0x1f94 (puts) - - 0x31, 0xc9, - // offset 23 -- xorl %ecx, %ecx - - 0x89, 0x44, 0x24, 0x08, - // offset 25 -- movl %eax, 0x8(%esp) - - 0x89, 0xc8, - // offset 29 -- movl %ecx, %eax - - 0x83, 0xc4, 0x0c, - // offset 31 -- addl $0xc, %esp - - 0xc3 - // offset 34 -- retl - }; - - AddressRange sample_range(0x1000, sizeof(data)); - - UnwindPlan unwind_plan(eRegisterKindLLDB); - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - // Unwind rules should look like - // row[0]: 0: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - // row[1]: 3: CFA=esp+16 => esp=CFA+0 eip=[CFA-4] - // row[2]: 8: CFA=esp+20 => esp=CFA+0 eip=[CFA-4] - // row[3]: 9: CFA=esp+16 => esp=CFA+0 eip=[CFA-4] - // row[4]: 34: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - - UnwindPlan::Row::RegisterLocation regloc; - - // Check unwind state before we set up the picbase register - // 3: CFA=esp+16 => esp=CFA+0 eip=[CFA-4] - - UnwindPlan::RowSP row_sp = unwind_plan.GetRowForFunctionOffset(3); - - EXPECT_EQ(3ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - // Check unwind state after we call the next instruction - // 8: CFA=esp+20 => esp=CFA+0 eip=[CFA-4] - - row_sp = unwind_plan.GetRowForFunctionOffset(8); - EXPECT_EQ(8ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(20, row_sp->GetCFAValue().GetOffset()); - - // Check unwind state after we pop the pic base value off the stack - // row[3]: 9: CFA=esp+16 => esp=CFA+0 eip=[CFA-4] - - row_sp = unwind_plan.GetRowForFunctionOffset(9); - EXPECT_EQ(9ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - // Check that no unexpected registers were saved - - EXPECT_FALSE(row_sp->GetRegisterInfo(k_eax, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ebx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ecx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_edx, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_esi, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_edi, regloc)); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ebp, regloc)); - - // verify that we get back to the original unwind state before the ret - // 34: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - - row_sp = unwind_plan.GetRowForFunctionOffset(34); - EXPECT_EQ(34ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushRBP) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0x55, // pushq %rbp - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rbp, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); - - std::unique_ptr engine32 = Geti386Inspector(); - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rbp, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushImm) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0x68, 0xff, 0xff, 0x01, 0x69, // pushq $0x6901ffff - 0x6a, 0x7d, // pushl $0x7d - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(5); - EXPECT_EQ(5ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(7); - EXPECT_EQ(7ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(24, row_sp->GetCFAValue().GetOffset()); - - std::unique_ptr engine32 = Geti386Inspector(); - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(5); - EXPECT_EQ(5ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(7); - EXPECT_EQ(7ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(12, row_sp->GetCFAValue().GetOffset()); -} - -// We treat 'pushq $0' / 'pushl $0' specially - this shows up -// in the first function called in a new thread and it needs to -// put a 0 as the saved pc. We pretend it didn't change the CFA. -TEST_F(Testx86AssemblyInspectionEngine, TestPush0) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0x6a, 0x00, // pushq $0 - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - - // We're verifying that no row was created for the 'pushq $0' - EXPECT_EQ(0ull, row_sp->GetOffset()); - - std::unique_ptr engine32 = Geti386Inspector(); - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - - // We're verifying that no row was created for the 'pushq $0' - EXPECT_EQ(0ull, row_sp->GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushExtended) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0xff, 0x74, 0x24, 0x20, // pushl 0x20(%esp) - 0xff, 0xb6, 0xce, 0x01, 0xf0, 0x00, // pushl 0xf001ce(%esi) - 0xff, 0x30, // pushl (%eax) - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - std::unique_ptr engine32 = Geti386Inspector(); - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(10); - EXPECT_EQ(10ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(12, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(12); - EXPECT_EQ(12ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushR15) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0x41, 0x57, // pushq %r15 - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r15, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushR14) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0x41, 0x56, // pushq %r14 - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r14, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushR13) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0x41, 0x55, // pushq %r13 - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r13, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushR12) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0x41, 0x54, // pushq %r13 - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r12, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushRBX) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0x53, // pushq %rbx - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rbx, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); -} - -// The ABI is hardcoded in x86AssemblyInspectionEngine such that -// eax, ecx, edx are all considered volatile and push/pops of them are -// not tracked (except to keep track of stack pointer movement) -TEST_F(Testx86AssemblyInspectionEngine, TestPushEAX) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x50, // pushl %eax - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_FALSE(row_sp->GetRegisterInfo(k_eax, regloc)); -} - -// The ABI is hardcoded in x86AssemblyInspectionEngine such that -// eax, ecx, edx are all considered volatile and push/pops of them are -// not tracked (except to keep track of stack pointer movement) -TEST_F(Testx86AssemblyInspectionEngine, TestPushECX) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x51, // pushl %ecx - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ecx, regloc)); -} - -// The ABI is hardcoded in x86AssemblyInspectionEngine such that -// eax, ecx, edx are all considered volatile and push/pops of them are -// not tracked (except to keep track of stack pointer movement) -TEST_F(Testx86AssemblyInspectionEngine, TestPushEDX) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x52, // pushl %edx - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_FALSE(row_sp->GetRegisterInfo(k_edx, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushEBX) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x53, // pushl %ebx - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_ebx, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushEBP) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x55, // pushl %ebp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_ebp, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushRBPWithREX) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data[] = { - 0x40, 0x55, // pushq %rbp - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rbp, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushESI) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x56, // pushl %esi - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_esi, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPushEDI) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x57, // pushl %edi - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_edi, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestMovRSPtoRBP) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - - uint8_t data64_1[] = { - 0x48, 0x8b, 0xec, // movq %rsp, %rbp - 0x90 // nop - }; - - AddressRange sample_range(0x1000, sizeof(data64_1)); - UnwindPlan unwind_plan(eRegisterKindLLDB); - - std::unique_ptr engine64 = Getx86_64Inspector(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data64_1, sizeof(data64_1), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(3); - - EXPECT_EQ(3ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - uint8_t data64_2[] = { - 0x48, 0x89, 0xe5, // movq %rsp, %rbp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data64_2)); - unwind_plan.Clear(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data64_2, sizeof(data64_2), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(3); - EXPECT_EQ(3ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - uint8_t data32_1[] = { - 0x8b, 0xec, // movl %rsp, %rbp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data32_1)); - unwind_plan.Clear(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data32_1, sizeof(data32_1), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_ebp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - uint8_t data32_2[] = { - 0x89, 0xe5, // movl %rsp, %rbp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data32_2)); - unwind_plan.Clear(); - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data32_2, sizeof(data32_2), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_ebp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestSubRSP) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine64 = Getx86_64Inspector(); - - uint8_t data1[] = { - 0x48, 0x81, 0xec, 0x00, 0x01, 0x00, 0x00, // subq $0x100, $rsp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data1)); - - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data1, sizeof(data1), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(7); - EXPECT_EQ(7ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(264, row_sp->GetCFAValue().GetOffset()); - - uint8_t data2[] = { - 0x48, 0x83, 0xec, 0x10, // subq $0x10, %rsp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data2)); - - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data2, sizeof(data2), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(24, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestSubESP) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data1[] = { - 0x81, 0xec, 0x00, 0x01, 0x00, 0x00, // subl $0x100, %esp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data1)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data1, sizeof(data1), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(6); - EXPECT_EQ(6ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(260, row_sp->GetCFAValue().GetOffset()); - - uint8_t data2[] = { - 0x83, 0xec, 0x10, // subq $0x10, %esp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data2)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data2, sizeof(data2), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(3); - EXPECT_EQ(3ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(20, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestAddRSP) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine64 = Getx86_64Inspector(); - - uint8_t data1[] = { - 0x48, 0x81, 0xc4, 0x00, 0x01, 0x00, 0x00, // addq $0x100, %rsp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data1)); - - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data1, sizeof(data1), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(7); - EXPECT_EQ(7ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8 - 256, row_sp->GetCFAValue().GetOffset()); - - uint8_t data2[] = { - 0x48, 0x83, 0xc4, 0x10, // addq $0x10, %rsp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data2)); - - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data2, sizeof(data2), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8 - 16, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestAddESP) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data1[] = { - 0x81, 0xc4, 0x00, 0x01, 0x00, 0x00, // addl $0x100, %esp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data1)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data1, sizeof(data1), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(6); - EXPECT_EQ(6ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4 - 256, row_sp->GetCFAValue().GetOffset()); - - uint8_t data2[] = { - 0x83, 0xc4, 0x10, // addq $0x10, %esp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data2)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data2, sizeof(data2), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(3); - EXPECT_EQ(3ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4 - 16, row_sp->GetCFAValue().GetOffset()); -} - -// FIXME add test for lea_rsp_pattern_p - -TEST_F(Testx86AssemblyInspectionEngine, TestPopRBX) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Getx86_64Inspector(); - - uint8_t data[] = { - 0x53, // pushq %rbx - 0x5b, // popq %rbx - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbx, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopRBP) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Getx86_64Inspector(); - - uint8_t data[] = { - 0x55, // pushq %rbp - 0x5d, // popq %rbp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbp, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopR12) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Getx86_64Inspector(); - - uint8_t data[] = { - 0x41, 0x54, // pushq %r12 - 0x41, 0x5c, // popq %r12 - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r12, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopR13) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Getx86_64Inspector(); - - uint8_t data[] = { - 0x41, 0x55, // pushq %r13 - 0x41, 0x5d, // popq %r13 - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r13, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopR14) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Getx86_64Inspector(); - - uint8_t data[] = { - 0x41, 0x56, // pushq %r14 - 0x41, 0x5e, // popq %r14 - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r14, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopR15) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Getx86_64Inspector(); - - uint8_t data[] = { - 0x41, 0x57, // pushq %r15 - 0x41, 0x5f, // popq %r15 - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_r15, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopEBX) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Geti386Inspector(); - - uint8_t data[] = { - 0x53, // pushl %ebx - 0x5b, // popl %ebx - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ebx, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopEBP) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Geti386Inspector(); - - uint8_t data[] = { - 0x55, // pushl %ebp - 0x5d, // popl %ebp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ebp, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopRBPWithREX) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Getx86_64Inspector(); - - uint8_t data[] = { - 0x40, 0x55, // pushq %rbp - 0x40, 0x5d, // popq %rbp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbp, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopESI) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Geti386Inspector(); - - uint8_t data[] = { - 0x56, // pushl %esi - 0x5e, // popl %esi - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_esi, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestPopEDI) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Geti386Inspector(); - - uint8_t data[] = { - 0x57, // pushl %edi - 0x5f, // popl %edi - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_edi, regloc)); -} - -// We don't track these registers, but make sure the CFA address is updated -// if we're defining the CFA in term of esp. -TEST_F(Testx86AssemblyInspectionEngine, Testi386IgnoredRegisters) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine = Geti386Inspector(); - - uint8_t data[] = { - 0x0e, // push cs - 0x16, // push ss - 0x1e, // push ds - 0x06, // push es - - 0x07, // pop es - 0x1f, // pop ds - 0x17, // pop ss - - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(20, row_sp->GetCFAValue().GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(7); - EXPECT_EQ(7ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestLEAVE) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine64 = Getx86_64Inspector(); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x55, // push %rbp/ebp - 0xc9, // leave - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbp, regloc)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ebp, regloc)); -} - -// In i386, which lacks pc-relative addressing, a common code sequence -// is to call the next instruction (i.e. call imm32, value of 0) which -// pushes the addr of the next insn on the stack, and then pop that value -// into a register (the "pic base" register). -TEST_F(Testx86AssemblyInspectionEngine, TestCALLNextInsn) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0xe8, 0x00, 0x00, 0x00, 0x00, // call 0 - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(5); - EXPECT_EQ(5ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - EXPECT_FALSE(row_sp->GetRegisterInfo(k_ebp, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestSpillRegToStackViaMOVx86_64) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine64 = Getx86_64Inspector(); - - uint8_t data[] = { - 0x55, // pushq %rbp - 0x48, 0x89, 0xe5, // movq %rsp, %rbp - 0x4c, 0x89, 0x75, 0xc0, // movq %r14, -0x40(%rbp) - 0x4c, 0x89, 0xbd, 0x28, 0xfa, 0xff, 0xff, // movq %r15, -0x5d8(%rbp) - 0x48, 0x89, 0x5d, 0xb8, // movq %rbx, -0x48(%rbp) - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(19); - EXPECT_EQ(19ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r14, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-80, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_r15, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-1512, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rbx, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-88, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestSpillRegToStackViaMOVi386) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x55, // pushl %ebp - 0x89, 0xe5, // movl %esp, %ebp - 0x89, 0x9d, 0xb0, 0xfe, 0xff, 0xff, // movl %ebx, -0x150(%ebp) - 0x89, 0x75, 0xe0, // movl %esi, -0x20(%ebp) - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(12); - EXPECT_EQ(12ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_ebx, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-344, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_esi, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-40, regloc.GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestSpArithx86_64Augmented) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine64 = Getx86_64Inspector(); - - uint8_t data[] = { - 0x55, // pushq %rbp - 0x48, 0x89, 0xe5, // movq %rsp, %rbp - - // x86AssemblyInspectionEngine::AugmentUnwindPlanFromCallSite - // has a bug where it can't augment a function that is just - // prologue+epilogue - it needs at least one other instruction - // in between. - - 0x90, // nop - 0x48, 0x81, 0xec, 0x88, 0, 0, 0, // subq $0x88, %rsp - 0x90, // nop - 0x48, 0x81, 0xc4, 0x88, 0, 0, 0, // addq $0x88, %rsp - - 0x5d, // popq %rbp - 0xc3 // retq - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - unwind_plan.SetSourceName("unit testing hand-created unwind plan"); - unwind_plan.SetPlanValidAddressRange(sample_range); - unwind_plan.SetRegisterKind(eRegisterKindLLDB); - - row_sp = std::make_shared(); - - // Describe offset 0 - row_sp->SetOffset(0); - row_sp->GetCFAValue().SetIsRegisterPlusOffset(k_rsp, 8); - - regloc.SetAtCFAPlusOffset(-8); - row_sp->SetRegisterInfo(k_rip, regloc); - - unwind_plan.AppendRow(row_sp); - - // Allocate a new Row, populate it with the existing Row contents. - UnwindPlan::Row *new_row = new UnwindPlan::Row; - *new_row = *row_sp.get(); - row_sp.reset(new_row); - - // Describe offset 1 - row_sp->SetOffset(1); - row_sp->GetCFAValue().SetIsRegisterPlusOffset(k_rsp, 16); - regloc.SetAtCFAPlusOffset(-16); - row_sp->SetRegisterInfo(k_rbp, regloc); - unwind_plan.AppendRow(row_sp); - - // Allocate a new Row, populate it with the existing Row contents. - new_row = new UnwindPlan::Row; - *new_row = *row_sp.get(); - row_sp.reset(new_row); - - // Describe offset 4 - row_sp->SetOffset(4); - row_sp->GetCFAValue().SetIsRegisterPlusOffset(k_rsp, 16); - unwind_plan.AppendRow(row_sp); - - RegisterContextSP reg_ctx_sp; - EXPECT_TRUE(engine64->AugmentUnwindPlanFromCallSite( - data, sizeof(data), sample_range, unwind_plan, reg_ctx_sp)); - - // Before we touch the stack pointer, we should still refer to the - // row from after the prologue. - row_sp = unwind_plan.GetRowForFunctionOffset(5); - EXPECT_EQ(4ull, row_sp->GetOffset()); - - // Check the first stack pointer update. - row_sp = unwind_plan.GetRowForFunctionOffset(12); - EXPECT_EQ(12ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_EQ(152, row_sp->GetCFAValue().GetOffset()); - - // After the nop, we should still refer to the same row. - row_sp = unwind_plan.GetRowForFunctionOffset(13); - EXPECT_EQ(12ull, row_sp->GetOffset()); - - // Check that the second stack pointer update is reflected in the - // unwind plan. - row_sp = unwind_plan.GetRowForFunctionOffset(20); - EXPECT_EQ(20ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestSimplex86_64Augmented) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine64 = Getx86_64Inspector(); - - uint8_t data[] = { - 0x55, // pushq %rbp - 0x48, 0x89, 0xe5, // movq %rsp, %rbp - - // x86AssemblyInspectionEngine::AugmentUnwindPlanFromCallSite - // has a bug where it can't augment a function that is just - // prologue+epilogue - it needs at least one other instruction - // in between. - 0x90, // nop - - 0x5d, // popq %rbp - 0xc3 // retq - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - unwind_plan.SetSourceName("unit testing hand-created unwind plan"); - unwind_plan.SetPlanValidAddressRange(sample_range); - unwind_plan.SetRegisterKind(eRegisterKindLLDB); - - row_sp = std::make_shared(); - - // Describe offset 0 - row_sp->SetOffset(0); - row_sp->GetCFAValue().SetIsRegisterPlusOffset(k_rsp, 8); - - regloc.SetAtCFAPlusOffset(-8); - row_sp->SetRegisterInfo(k_rip, regloc); - - unwind_plan.AppendRow(row_sp); - - // Allocate a new Row, populate it with the existing Row contents. - UnwindPlan::Row *new_row = new UnwindPlan::Row; - *new_row = *row_sp.get(); - row_sp.reset(new_row); - - // Describe offset 1 - row_sp->SetOffset(1); - row_sp->GetCFAValue().SetIsRegisterPlusOffset(k_rsp, 16); - regloc.SetAtCFAPlusOffset(-16); - row_sp->SetRegisterInfo(k_rbp, regloc); - unwind_plan.AppendRow(row_sp); - - // Allocate a new Row, populate it with the existing Row contents. - new_row = new UnwindPlan::Row; - *new_row = *row_sp.get(); - row_sp.reset(new_row); - - // Describe offset 4 - row_sp->SetOffset(4); - row_sp->GetCFAValue().SetIsRegisterPlusOffset(k_rbp, 16); - unwind_plan.AppendRow(row_sp); - - RegisterContextSP reg_ctx_sp; - EXPECT_TRUE(engine64->AugmentUnwindPlanFromCallSite( - data, sizeof(data), sample_range, unwind_plan, reg_ctx_sp)); - - row_sp = unwind_plan.GetRowForFunctionOffset(6); - EXPECT_EQ(6ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - // x86AssemblyInspectionEngine::AugmentUnwindPlanFromCallSite - // doesn't track register restores (pop'ing a reg value back from - // the stack) - it was just written to make stepping work correctly. - // Technically we should be able to do the following test, but it - // won't work today - the unwind plan will still say that the caller's - // rbp is on the stack. - // EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbp, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestSimplei386ugmented) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - - uint8_t data[] = { - 0x55, // pushl %ebp - 0x89, 0xe5, // movl %esp, %ebp - - // x86AssemblyInspectionEngine::AugmentUnwindPlanFromCallSite - // has a bug where it can't augment a function that is just - // prologue+epilogue - it needs at least one other instruction - // in between. - 0x90, // nop - - 0x5d, // popl %ebp - 0xc3 // retl - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - unwind_plan.SetSourceName("unit testing hand-created unwind plan"); - unwind_plan.SetPlanValidAddressRange(sample_range); - unwind_plan.SetRegisterKind(eRegisterKindLLDB); - - row_sp = std::make_shared(); - - // Describe offset 0 - row_sp->SetOffset(0); - row_sp->GetCFAValue().SetIsRegisterPlusOffset(k_esp, 4); - - regloc.SetAtCFAPlusOffset(-4); - row_sp->SetRegisterInfo(k_eip, regloc); - - unwind_plan.AppendRow(row_sp); - - // Allocate a new Row, populate it with the existing Row contents. - UnwindPlan::Row *new_row = new UnwindPlan::Row; - *new_row = *row_sp.get(); - row_sp.reset(new_row); - - // Describe offset 1 - row_sp->SetOffset(1); - row_sp->GetCFAValue().SetIsRegisterPlusOffset(k_esp, 8); - regloc.SetAtCFAPlusOffset(-8); - row_sp->SetRegisterInfo(k_ebp, regloc); - unwind_plan.AppendRow(row_sp); - - // Allocate a new Row, populate it with the existing Row contents. - new_row = new UnwindPlan::Row; - *new_row = *row_sp.get(); - row_sp.reset(new_row); - - // Describe offset 3 - row_sp->SetOffset(3); - row_sp->GetCFAValue().SetIsRegisterPlusOffset(k_ebp, 8); - unwind_plan.AppendRow(row_sp); - - RegisterContextSP reg_ctx_sp; - EXPECT_TRUE(engine32->AugmentUnwindPlanFromCallSite( - data, sizeof(data), sample_range, unwind_plan, reg_ctx_sp)); - - row_sp = unwind_plan.GetRowForFunctionOffset(5); - EXPECT_EQ(5ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_EQ(4, row_sp->GetCFAValue().GetOffset()); - - // x86AssemblyInspectionEngine::AugmentUnwindPlanFromCallSite - // doesn't track register restores (pop'ing a reg value back from - // the stack) - it was just written to make stepping work correctly. - // Technically we should be able to do the following test, but it - // won't work today - the unwind plan will still say that the caller's - // ebp is on the stack. - // EXPECT_FALSE(row_sp->GetRegisterInfo(k_ebp, regloc)); -} - -// Check that the i386 disassembler disassembles past an opcode that -// is only valid in 32-bit mode (non-long mode), and the x86_64 disassembler -// stops -// disassembling at that point (long-mode). -TEST_F(Testx86AssemblyInspectionEngine, Test32BitOnlyInstruction) { - UnwindPlan::Row::RegisterLocation regloc; - UnwindPlan::RowSP row_sp; - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - std::unique_ptr engine64 = Getx86_64Inspector(); - - uint8_t data[] = { - 0x43, // incl $ebx --- an invalid opcode in 64-bit mode - 0x55, // pushl %ebp - 0x90 // nop - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(2ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_ebp, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - unwind_plan.Clear(); - - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - row_sp = unwind_plan.GetRowForFunctionOffset(2); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_FALSE(row_sp->GetRegisterInfo(k_rbp, regloc)); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestStackRealign8BitDisp_i386) { - std::unique_ptr engine = Geti386Inspector(); - - uint8_t data[] = { - 0x55, // pushl %ebp - 0x89, 0xe5, // movl %esp, %ebp - 0x53, // pushl %ebx - 0x83, 0xe4, 0xf0, // andl $-16, %esp - 0x83, 0xec, 0x10, // subl $16, %esp - 0x8d, 0x65, 0xfc, // leal -4(%ebp), %esp - 0x5b, // popl %ebx - 0x5d, // popl %ebp - 0xc3, // retl - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan plan(eRegisterKindLLDB); - ASSERT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly(data, sizeof(data), - sample_range, plan)); - - UnwindPlan::Row::FAValue esp_plus_4, esp_plus_8, ebp_plus_8; - esp_plus_4.SetIsRegisterPlusOffset(k_esp, 4); - esp_plus_8.SetIsRegisterPlusOffset(k_esp, 8); - ebp_plus_8.SetIsRegisterPlusOffset(k_ebp, 8); - - EXPECT_EQ(esp_plus_4, plan.GetRowForFunctionOffset(0)->GetCFAValue()); - EXPECT_EQ(esp_plus_8, plan.GetRowForFunctionOffset(1)->GetCFAValue()); - for (size_t i = 3; i < sizeof(data) - 2; ++i) - EXPECT_EQ(ebp_plus_8, plan.GetRowForFunctionOffset(i)->GetCFAValue()) - << "i: " << i; - EXPECT_EQ(esp_plus_4, - plan.GetRowForFunctionOffset(sizeof(data) - 1)->GetCFAValue()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestStackRealign32BitDisp_x86_64) { - std::unique_ptr engine = Getx86_64Inspector(); - - uint8_t data[] = { - 0x55, // pushq %rbp - 0x48, 0x89, 0xe5, // movq %rsp, %rbp - 0x53, // pushl %rbx - 0x48, 0x83, 0xe4, 0xf0, // andq $-16, %rsp - 0x48, 0x81, 0xec, 0x00, 0x01, 0x00, 0x00, // subq $256, %rsp - 0x48, 0x8d, 0x65, 0xf8, // leaq -8(%rbp), %rsp - 0x5b, // popq %rbx - 0x5d, // popq %rbp - 0xc3, // retq - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan plan(eRegisterKindLLDB); - ASSERT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly(data, sizeof(data), - sample_range, plan)); - - UnwindPlan::Row::FAValue rsp_plus_8, rsp_plus_16, rbp_plus_16; - rsp_plus_8.SetIsRegisterPlusOffset(k_rsp, 8); - rsp_plus_16.SetIsRegisterPlusOffset(k_rsp, 16); - rbp_plus_16.SetIsRegisterPlusOffset(k_rbp, 16); - - EXPECT_EQ(rsp_plus_8, plan.GetRowForFunctionOffset(0)->GetCFAValue()); - EXPECT_EQ(rsp_plus_16, plan.GetRowForFunctionOffset(1)->GetCFAValue()); - for (size_t i = 4; i < sizeof(data) - 2; ++i) - EXPECT_EQ(rbp_plus_16, plan.GetRowForFunctionOffset(i)->GetCFAValue()) - << "i: " << i; - EXPECT_EQ(rsp_plus_8, - plan.GetRowForFunctionOffset(sizeof(data) - 1)->GetCFAValue()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestStackRealignMSVC_i386) { - std::unique_ptr engine = Geti386Inspector(); - - uint8_t data[] = { - 0x53, // offset 00 -- pushl %ebx - 0x8b, 0xdc, // offset 01 -- movl %esp, %ebx - 0x83, 0xec, 0x08, // offset 03 -- subl $8, %esp - 0x81, 0xe4, 0x00, 0xff, 0xff, 0xff, // offset 06 -- andl $-256, %esp - 0x83, 0xc4, 0x04, // offset 12 -- addl $4, %esp - 0x55, // offset 15 -- pushl %ebp - 0x8b, 0xec, // offset 16 -- movl %esp, %ebp - 0x81, 0xec, 0x00, 0x02, 0x00, 0x00, // offset 18 -- subl $512, %esp - 0x89, 0x7d, 0xfc, // offset 24 -- movl %edi, -4(%ebp) - 0x8b, 0xe5, // offset 27 -- movl %ebp, %esp - 0x5d, // offset 29 -- popl %ebp - 0x8b, 0xe3, // offset 30 -- movl %ebx, %esp - 0x5b, // offset 32 -- popl %ebx - 0xc3 // offset 33 -- retl - }; - - AddressRange sample_range(0x1000, sizeof(data)); - UnwindPlan plan(eRegisterKindLLDB); - ASSERT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly(data, sizeof(data), - sample_range, plan)); - - UnwindPlan::Row::FAValue esp_minus_4, esp_plus_0, esp_plus_4, esp_plus_8, - ebx_plus_8, ebp_plus_0; - esp_minus_4.SetIsRegisterPlusOffset(k_esp, -4); - esp_plus_0.SetIsRegisterPlusOffset(k_esp, 0); - esp_plus_4.SetIsRegisterPlusOffset(k_esp, 4); - esp_plus_8.SetIsRegisterPlusOffset(k_esp, 8); - ebx_plus_8.SetIsRegisterPlusOffset(k_ebx, 8); - ebp_plus_0.SetIsRegisterPlusOffset(k_ebp, 0); - - // Test CFA - EXPECT_EQ(esp_plus_4, plan.GetRowForFunctionOffset(0)->GetCFAValue()); - EXPECT_EQ(esp_plus_8, plan.GetRowForFunctionOffset(1)->GetCFAValue()); - for (size_t i = 3; i < 33; ++i) - EXPECT_EQ(ebx_plus_8, plan.GetRowForFunctionOffset(i)->GetCFAValue()) - << "i: " << i; - EXPECT_EQ(esp_plus_4, plan.GetRowForFunctionOffset(33)->GetCFAValue()); - - // Test AFA - EXPECT_EQ(esp_plus_0, plan.GetRowForFunctionOffset(12)->GetAFAValue()); - EXPECT_EQ(esp_minus_4, plan.GetRowForFunctionOffset(15)->GetAFAValue()); - EXPECT_EQ(esp_plus_0, plan.GetRowForFunctionOffset(16)->GetAFAValue()); - for (size_t i = 18; i < 30; ++i) - EXPECT_EQ(ebp_plus_0, plan.GetRowForFunctionOffset(i)->GetAFAValue()) - << "i: " << i; - EXPECT_EQ(esp_minus_4, plan.GetRowForFunctionOffset(30)->GetAFAValue()); - - // Test saved register - UnwindPlan::Row::RegisterLocation reg_loc; - EXPECT_TRUE( - plan.GetRowForFunctionOffset(27)->GetRegisterInfo(k_edi, reg_loc)); - EXPECT_TRUE(reg_loc.IsAtAFAPlusOffset()); - EXPECT_EQ(-4, reg_loc.GetOffset()); -} - -// Give the disassembler random bytes to test that it doesn't exceed -// the bounds of the array when run under clang's address sanitizer. -TEST_F(Testx86AssemblyInspectionEngine, TestDisassemblyJunkBytes) { - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - std::unique_ptr engine64 = Getx86_64Inspector(); - - uint8_t data[] = { - 0x10, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - unwind_plan.Clear(); - - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - -} - -TEST_F(Testx86AssemblyInspectionEngine, TestRetguard64bitFrameFunction) { - std::unique_ptr engine = Getx86_64Inspector(); - - // 'int main() { }' compiled for amd64-unknown-openbsd6.4 with -fret-protector - uint8_t data[] = { - 0x4c, 0x8b, 0x1d, 0xf1, 0x0c, 0x00, 0x00, // offset 0 -- movq 3313(%rip), %r11 - 0x4c, 0x33, 0x1c, 0x24, // offset 7 -- xorq (%rsp), %r11 - 0x55, // offset 11 -- pushq %rbp - 0x48, 0x89, 0xe5, // offset 12 -- movq %rsp, %rbp - 0x41, 0x53, // offset 15 -- pushq %r11 - 0x31, 0xc0, // offset 17 -- xorl %eax, %eax - 0x41, 0x5b, // offset 19 -- popq %r11 - 0x5d, // offset 21 -- popq %rbp - 0x4c, 0x33, 0x1c, 0x24, // offset 22 -- xorq (%rsp), %r11 - 0x4c, 0x3b, 0x1d, 0xd7, 0x0c, 0x00, 0x00, // offset 26 -- cmp 3287(%rsp), %r11 - 0x0f, 0x84, 0x02, 0x00, 0x00, 0x00, // offset 33 -- je +2 - 0xcc, // offset 39 -- int3 - 0xcc, // offset 40 -- int3 - 0xc3 // offset 41 -- retq - }; - - AddressRange sample_range(0x1000, sizeof(data)); - - UnwindPlan unwind_plan(eRegisterKindLLDB); - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - // We expect 4 rows in the unwind plan, corresponding to offsets - // 0: CFA=rsp+8 => rsp=CFA+0, rip=[CFA-8] - // 12: CFA=rsp+16 => rsp=CFA+0, rip=[CFA-8], rbp=[CFA-16] - // 15: CFA=rbp+16 => rsp=CFA+0, rip=[CFA-8], rbp=[CFA-16] - // 22: CFA=rsp+8 => rsp=CFA+0, rip=[CFA-8] - - EXPECT_TRUE(unwind_plan.GetInitialCFARegister() == k_rsp); - EXPECT_TRUE(unwind_plan.GetUnwindPlanValidAtAllInstructions() == - eLazyBoolYes); - EXPECT_TRUE(unwind_plan.GetSourcedFromCompiler() == eLazyBoolNo); - - UnwindPlan::Row::RegisterLocation regloc; - - // 0: CFA=rsp+8 => rsp=CFA+0, rip=[CFA-8] - UnwindPlan::RowSP row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rsp, regloc)); - EXPECT_TRUE(regloc.IsCFAPlusOffset()); - EXPECT_EQ(0, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(7); - EXPECT_EQ(0ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(11); - EXPECT_EQ(0ull, row_sp->GetOffset()); - - // 12: CFA=rsp+16 => rsp=CFA+0, rip=[CFA-8], rbp=[CFA-16] - row_sp = unwind_plan.GetRowForFunctionOffset(12); - EXPECT_EQ(12ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rsp, regloc)); - EXPECT_TRUE(regloc.IsCFAPlusOffset()); - EXPECT_EQ(0, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rbp, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); - - // 15: CFA=rbp+16 => rsp=CFA+0, rip=[CFA-8], rbp=[CFA-16] - row_sp = unwind_plan.GetRowForFunctionOffset(15); - EXPECT_EQ(15ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rsp, regloc)); - EXPECT_TRUE(regloc.IsCFAPlusOffset()); - EXPECT_EQ(0, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rbp, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-16, regloc.GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(17); - EXPECT_EQ(15ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(19); - EXPECT_EQ(15ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(21); - EXPECT_EQ(15ull, row_sp->GetOffset()); - - // 22: CFA=rsp+8 => rsp=CFA+0, rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(22); - EXPECT_EQ(22ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rsp, regloc)); - EXPECT_TRUE(regloc.IsCFAPlusOffset()); - EXPECT_EQ(0, regloc.GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - row_sp = unwind_plan.GetRowForFunctionOffset(26); - EXPECT_EQ(22ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(33); - EXPECT_EQ(22ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(39); - EXPECT_EQ(22ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(40); - EXPECT_EQ(22ull, row_sp->GetOffset()); - row_sp = unwind_plan.GetRowForFunctionOffset(41); - EXPECT_EQ(22ull, row_sp->GetOffset()); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestSimple64bitPrologueDetection) { - std::unique_ptr engine = Getx86_64Inspector(); - - // 'int main() { }' compiled for x86_64-apple-macosx with clang - uint8_t data[] = { - 0x55, // offset 0 -- pushq %rbp - 0x48, 0x89, 0xe5, // offset 1 -- movq %rsp, %rbp - 0x31, 0xc0, // offset 4 -- xorl %eax, %eax - 0x5d, // offset 6 -- popq %rbp - 0xc3 // offset 7 -- retq - }; - - size_t offset = 0; - EXPECT_TRUE(engine->FindFirstNonPrologueInstruction(data, sizeof(data), offset)); - EXPECT_EQ(4ull, offset); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestRetguard64bitPrologueDetection) { - std::unique_ptr engine = Getx86_64Inspector(); - - // 'int main() { }' compiled for amd64-unknown-openbsd6.4 with -fret-protector - uint8_t data[] = { - 0x4c, 0x8b, 0x1d, 0xf1, 0x0c, 0x00, 0x00, // offset 0 -- movq 3313(%rip), %r11 - 0x4c, 0x33, 0x1c, 0x24, // offset 7 -- xorq (%rsp), %r11 - 0x55, // offset 11 -- pushq %rbp - 0x48, 0x89, 0xe5, // offset 12 -- movq %rsp, %rbp - 0x41, 0x53, // offset 15 -- pushq %r11 - 0x31, 0xc0, // offset 17 -- xorl %eax, %eax - 0x41, 0x5b, // offset 19 -- popq %r11 - 0x5d, // offset 21 -- popq %rbp - 0x4c, 0x33, 0x1c, 0x24, // offset 22 -- xorq (%rsp), %r11 - 0x4c, 0x3b, 0x1d, 0xd7, 0x0c, 0x00, 0x00, // offset 26 -- cmp 3287(%rsp), %r11 - 0x0f, 0x84, 0x02, 0x00, 0x00, 0x00, // offset 33 -- je +2 - 0xcc, // offset 39 -- int3 - 0xcc, // offset 40 -- int3 - 0xc3 // offset 41 -- retq - }; - - size_t offset = 0; - EXPECT_TRUE(engine->FindFirstNonPrologueInstruction(data, sizeof(data), offset)); - EXPECT_EQ(17ull, offset); -} - -TEST_F(Testx86AssemblyInspectionEngine, TestReturnDetect) { - std::unique_ptr engine = Getx86_64Inspector(); - - // Single fragment with all four return forms. - // We want to verify that the unwind state is reset after each ret. - uint8_t data[] = { - 0x55, // offset 0 -- pushq %rbp - 0x48, 0x89, 0xe5, // offset 1 -- movq %rsp, %rbp - 0x31, 0xc0, // offset 4 -- xorl %eax, %eax - 0x5d, // offset 6 -- popq %rbp - 0xc3, // offset 7 -- retq - 0x31, 0xc0, // offset 8 -- xorl %eax, %eax - 0x5d, // offset 10 -- popq %rbp - 0xcb, // offset 11 -- retf - 0x31, 0xc0, // offset 12 -- xorl %eax, %eax - 0x5d, // offset 14 -- popq %rbp - 0xc2, 0x22, 0x11, // offset 15 -- retq 0x1122 - 0x31, 0xc0, // offset 18 -- xorl %eax, %eax - 0x5d, // offset 20 -- popq %rbp - 0xca, 0x44, 0x33, // offset 21 -- retf 0x3344 - 0x31, 0xc0, // offset 24 -- xorl %eax, %eax - }; - - AddressRange sample_range(0x1000, sizeof(data)); - - UnwindPlan unwind_plan(eRegisterKindLLDB); - EXPECT_TRUE(engine->GetNonCallSiteUnwindPlanFromAssembly( - UnwindPlan::RowSP row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - data, sizeof(data), sample_range, unwind_plan)); - - // Expect following unwind rows: - // 0: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - // 1: CFA=rsp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - // 4: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - // 7: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - // 8: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - // 11: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - // 12: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - // 15: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - // 18: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - // 21: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - // 24: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - - EXPECT_TRUE(unwind_plan.GetInitialCFARegister() == k_rsp); - EXPECT_TRUE(unwind_plan.GetUnwindPlanValidAtAllInstructions() == - eLazyBoolYes); - EXPECT_TRUE(unwind_plan.GetSourcedFromCompiler() == eLazyBoolNo); - - UnwindPlan::Row::RegisterLocation regloc; - - // 0: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - UnwindPlan::RowSP row_sp = unwind_plan.GetRowForFunctionOffset(0); - EXPECT_EQ(0ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 1: CFA=rsp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(1); - EXPECT_EQ(1ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 4: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(4); - EXPECT_EQ(4ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 7: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(7); - EXPECT_EQ(7ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 8: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(8); - EXPECT_EQ(8ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 11: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(11); - EXPECT_EQ(11ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 12: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(12); - EXPECT_EQ(12ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 15: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(15); - EXPECT_EQ(15ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 18: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(18); - EXPECT_EQ(18ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 21: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(21); - EXPECT_EQ(21ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(8, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); - - // 24: CFA=rbp+16 => rbp=[CFA-16] rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(24); - EXPECT_EQ(24ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(16, row_sp->GetCFAValue().GetOffset()); - - EXPECT_TRUE(row_sp->GetRegisterInfo(k_rip, regloc)); - EXPECT_TRUE(regloc.IsAtCFAPlusOffset()); - EXPECT_EQ(-8, regloc.GetOffset()); -} - - -// Test mid-function epilogues - the unwind state post-prologue -// should be re-instated. - -TEST_F(Testx86AssemblyInspectionEngine, TestDisassemblyMidFunctionEpilogues) { - AddressRange sample_range; - UnwindPlan unwind_plan(eRegisterKindLLDB); - std::unique_ptr engine32 = Geti386Inspector(); - std::unique_ptr engine64 = Getx86_64Inspector(); - - uint8_t data[] = { - 0x55, // <+0>: pushq %rbp - 0x48, 0x89, 0xe5, // <+1>: movq %rsp, %rbp - 0x48, 0x83, 0xec, 0x70, // <+4>: subq $0x70, %rsp - 0x90, // <+8>: nop // prologue set up - - 0x74, 0x7, // <+9>: je 7 <+18> - 0x48, 0x83, 0xc4, 0x70, // <+11>: addq $0x70, %rsp - 0x5d, // <+15>: popq %rbp - 0xff, 0xe0, // <+16>: jmpq *%rax // epilogue completed - - 0x90, // <+18>: nop // prologue setup back - - 0x74, 0x7, // <+19>: je 6 <+27> - 0x48, 0x83, 0xc4, 0x70, // <+21>: addq $0x70, %rsp - 0x5d, // <+25>: popq %rbp - 0xc3, // <+26>: retq // epilogue completed - - 0x90, // <+27>: nop // prologue setup back - - 0x48, 0x83, 0xc4, 0x70, // <+28>: addq $0x70, %rsp - 0x5d, // <+32>: popq %rbp - 0xc3, // <+33>: retq // epilogue completed - - }; - - sample_range = AddressRange(0x1000, sizeof(data)); - - int wordsize = 4; - EXPECT_TRUE(engine32->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - // Check that we've unwound the stack after the first mid-function epilogue - // row: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - UnwindPlan::RowSP row_sp = unwind_plan.GetRowForFunctionOffset(16); - EXPECT_EQ(16ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(wordsize, row_sp->GetCFAValue().GetOffset()); - - // Check that we've reinstated the stack frame setup - // unwind instructions after a jmpq *%eax - // row: CFA=ebp +8 => esp=CFA+0 eip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(18); - EXPECT_EQ(18ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_ebp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(wordsize * 2, row_sp->GetCFAValue().GetOffset()); - - // Check that we've reinstated the stack frame setup - // unwind instructions after a mid-function retq - // row: CFA=ebp +8 => esp=CFA+0 eip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(27); - EXPECT_EQ(27ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_ebp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(wordsize * 2, row_sp->GetCFAValue().GetOffset()); - - // After last instruction in the function, verify that - // the stack frame has been unwound - // row: CFA=esp +4 => esp=CFA+0 eip=[CFA-4] - row_sp = unwind_plan.GetRowForFunctionOffset(33); - EXPECT_EQ(33ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_esp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(wordsize, row_sp->GetCFAValue().GetOffset()); - - - unwind_plan.Clear(); - - wordsize = 8; - EXPECT_TRUE(engine64->GetNonCallSiteUnwindPlanFromAssembly( - data, sizeof(data), sample_range, unwind_plan)); - - // Check that we've unwound the stack after the first mid-function epilogue - // row: CFA=rsp +8 => rsp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(16); - EXPECT_EQ(16ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(wordsize, row_sp->GetCFAValue().GetOffset()); - - // Check that we've reinstated the stack frame setup - // unwind instructions after a jmpq *%eax - // row: CFA=rbp+16 => rsp=CFA+0 rip=[CFA-16] - row_sp = unwind_plan.GetRowForFunctionOffset(18); - EXPECT_EQ(18ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(wordsize * 2, row_sp->GetCFAValue().GetOffset()); - - // Check that we've reinstated the stack frame setup - // unwind instructions after a mid-function retq - // row: CFA=rbp+16 => rsp=CFA+0 rip=[CFA-16] - row_sp = unwind_plan.GetRowForFunctionOffset(27); - EXPECT_EQ(27ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rbp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(wordsize * 2, row_sp->GetCFAValue().GetOffset()); - - // After last instruction in the function, verify that - // the stack frame has been unwound - // row: CFA=rsp +8 => esp=CFA+0 rip=[CFA-8] - row_sp = unwind_plan.GetRowForFunctionOffset(33); - EXPECT_EQ(33ull, row_sp->GetOffset()); - EXPECT_TRUE(row_sp->GetCFAValue().GetRegisterNumber() == k_rsp); - EXPECT_TRUE(row_sp->GetCFAValue().IsRegisterPlusOffset() == true); - EXPECT_EQ(wordsize, row_sp->GetCFAValue().GetOffset()); - - -} diff --git a/gnu/llvm/lldb/unittests/Utility/AnsiTerminalTest.cpp b/gnu/llvm/lldb/unittests/Utility/AnsiTerminalTest.cpp deleted file mode 100644 index a6dbfd61061..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/AnsiTerminalTest.cpp +++ /dev/null @@ -1,54 +0,0 @@ -//===-- AnsiTerminalTest.cpp ----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/AnsiTerminal.h" - -using namespace lldb_private; - -TEST(AnsiTerminal, Empty) { EXPECT_EQ("", ansi::FormatAnsiTerminalCodes("")); } - -TEST(AnsiTerminal, WhiteSpace) { - EXPECT_EQ(" ", ansi::FormatAnsiTerminalCodes(" ")); -} - -TEST(AnsiTerminal, AtEnd) { - EXPECT_EQ("abc\x1B[30m", - ansi::FormatAnsiTerminalCodes("abc${ansi.fg.black}")); -} - -TEST(AnsiTerminal, AtStart) { - EXPECT_EQ("\x1B[30mabc", - ansi::FormatAnsiTerminalCodes("${ansi.fg.black}abc")); -} - -TEST(AnsiTerminal, KnownPrefix) { - EXPECT_EQ("${ansi.fg.redish}abc", - ansi::FormatAnsiTerminalCodes("${ansi.fg.redish}abc")); -} - -TEST(AnsiTerminal, Unknown) { - EXPECT_EQ("${ansi.fg.foo}abc", - ansi::FormatAnsiTerminalCodes("${ansi.fg.foo}abc")); -} - -TEST(AnsiTerminal, Incomplete) { - EXPECT_EQ("abc${ansi.", ansi::FormatAnsiTerminalCodes("abc${ansi.")); -} - -TEST(AnsiTerminal, Twice) { - EXPECT_EQ("\x1B[30m\x1B[31mabc", - ansi::FormatAnsiTerminalCodes("${ansi.fg.black}${ansi.fg.red}abc")); -} - -TEST(AnsiTerminal, Basic) { - EXPECT_EQ( - "abc\x1B[31mabc\x1B[0mabc", - ansi::FormatAnsiTerminalCodes("abc${ansi.fg.red}abc${ansi.normal}abc")); -} diff --git a/gnu/llvm/lldb/unittests/Utility/ArchSpecTest.cpp b/gnu/llvm/lldb/unittests/Utility/ArchSpecTest.cpp deleted file mode 100644 index 1ef646acdef..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/ArchSpecTest.cpp +++ /dev/null @@ -1,490 +0,0 @@ -//===-- ArchSpecTest.cpp --------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/ArchSpec.h" -#include "llvm/BinaryFormat/ELF.h" -#include "llvm/BinaryFormat/MachO.h" -#include "llvm/Support/YAMLParser.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(ArchSpecTest, TestParseMachCPUDashSubtypeTripleSimple) { - - // Success conditions. Valid cpu/subtype combinations using both - and . - ArchSpec AS; - EXPECT_TRUE(ParseMachCPUDashSubtypeTriple("12-10", AS)); - EXPECT_EQ(12u, AS.GetMachOCPUType()); - EXPECT_EQ(10u, AS.GetMachOCPUSubType()); - - AS = ArchSpec(); - EXPECT_TRUE(ParseMachCPUDashSubtypeTriple("12-15", AS)); - EXPECT_EQ(12u, AS.GetMachOCPUType()); - EXPECT_EQ(15u, AS.GetMachOCPUSubType()); - - AS = ArchSpec(); - EXPECT_TRUE(ParseMachCPUDashSubtypeTriple("12.15", AS)); - EXPECT_EQ(12u, AS.GetMachOCPUType()); - EXPECT_EQ(15u, AS.GetMachOCPUSubType()); - - // Failure conditions. - - // Valid string, unknown cpu/subtype. - AS = ArchSpec(); - EXPECT_TRUE(ParseMachCPUDashSubtypeTriple("13.11", AS)); - EXPECT_EQ(0u, AS.GetMachOCPUType()); - EXPECT_EQ(0u, AS.GetMachOCPUSubType()); - - // Missing / invalid cpu or subtype - AS = ArchSpec(); - EXPECT_FALSE(ParseMachCPUDashSubtypeTriple("13", AS)); - - AS = ArchSpec(); - EXPECT_FALSE(ParseMachCPUDashSubtypeTriple("13.A", AS)); - - AS = ArchSpec(); - EXPECT_FALSE(ParseMachCPUDashSubtypeTriple("A.13", AS)); - - // Empty string. - AS = ArchSpec(); - EXPECT_FALSE(ParseMachCPUDashSubtypeTriple("", AS)); -} - -TEST(ArchSpecTest, TestParseMachCPUDashSubtypeTripleExtra) { - ArchSpec AS; - EXPECT_TRUE(ParseMachCPUDashSubtypeTriple("12-15-vendor-os", AS)); - EXPECT_EQ(12u, AS.GetMachOCPUType()); - EXPECT_EQ(15u, AS.GetMachOCPUSubType()); - EXPECT_EQ("vendor", AS.GetTriple().getVendorName()); - EXPECT_EQ("os", AS.GetTriple().getOSName()); - - AS = ArchSpec(); - EXPECT_TRUE(ParseMachCPUDashSubtypeTriple("12-10-vendor-os-name", AS)); - EXPECT_EQ(12u, AS.GetMachOCPUType()); - EXPECT_EQ(10u, AS.GetMachOCPUSubType()); - EXPECT_EQ("vendor", AS.GetTriple().getVendorName()); - EXPECT_EQ("os", AS.GetTriple().getOSName()); - - AS = ArchSpec(); - EXPECT_TRUE(ParseMachCPUDashSubtypeTriple("12-15-vendor.os-name", AS)); - EXPECT_EQ(12u, AS.GetMachOCPUType()); - EXPECT_EQ(15u, AS.GetMachOCPUSubType()); - EXPECT_EQ("vendor.os", AS.GetTriple().getVendorName()); - EXPECT_EQ("name", AS.GetTriple().getOSName()); - - // These there should parse correctly, but the vendor / OS should be defaulted - // since they are unrecognized. - AS = ArchSpec(); - EXPECT_TRUE(ParseMachCPUDashSubtypeTriple("12-10-vendor", AS)); - EXPECT_EQ(12u, AS.GetMachOCPUType()); - EXPECT_EQ(10u, AS.GetMachOCPUSubType()); - EXPECT_EQ("apple", AS.GetTriple().getVendorName()); - EXPECT_EQ("", AS.GetTriple().getOSName()); - - AS = ArchSpec(); - EXPECT_FALSE(ParseMachCPUDashSubtypeTriple("12.10.10", AS)); - - AS = ArchSpec(); - EXPECT_FALSE(ParseMachCPUDashSubtypeTriple("12-10.10", AS)); -} - -TEST(ArchSpecTest, TestSetTriple) { - ArchSpec AS; - - // Various flavors of valid triples. - EXPECT_TRUE(AS.SetTriple("12-10-apple-darwin")); - EXPECT_EQ(uint32_t(llvm::MachO::CPU_TYPE_ARM), AS.GetMachOCPUType()); - EXPECT_EQ(10u, AS.GetMachOCPUSubType()); - EXPECT_TRUE(llvm::StringRef(AS.GetTriple().str()) - .consume_front("armv7f-apple-darwin")); - EXPECT_EQ(ArchSpec::eCore_arm_armv7f, AS.GetCore()); - - AS = ArchSpec(); - EXPECT_TRUE(AS.SetTriple("18.100-apple-darwin")); - EXPECT_EQ(uint32_t(llvm::MachO::CPU_TYPE_POWERPC), AS.GetMachOCPUType()); - EXPECT_EQ(100u, AS.GetMachOCPUSubType()); - EXPECT_TRUE(llvm::StringRef(AS.GetTriple().str()) - .consume_front("powerpc-apple-darwin")); - EXPECT_EQ(ArchSpec::eCore_ppc_ppc970, AS.GetCore()); - - AS = ArchSpec(); - EXPECT_TRUE(AS.SetTriple("i686-pc-windows")); - EXPECT_EQ(llvm::Triple::x86, AS.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::PC, AS.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::Win32, AS.GetTriple().getOS()); - EXPECT_TRUE( - llvm::StringRef(AS.GetTriple().str()).consume_front("i686-pc-windows")); - EXPECT_STREQ("i686", AS.GetArchitectureName()); - EXPECT_EQ(ArchSpec::eCore_x86_32_i686, AS.GetCore()); - - // Various flavors of invalid triples. - AS = ArchSpec(); - EXPECT_FALSE(AS.SetTriple("unknown-unknown-unknown")); - - AS = ArchSpec(); - EXPECT_FALSE(AS.SetTriple("unknown")); - - AS = ArchSpec(); - EXPECT_FALSE(AS.SetTriple("")); -} - -TEST(ArchSpecTest, MergeFrom) { - { - ArchSpec A; - ArchSpec B("x86_64-pc-linux"); - - EXPECT_FALSE(A.IsValid()); - ASSERT_TRUE(B.IsValid()); - EXPECT_EQ(llvm::Triple::ArchType::x86_64, B.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::VendorType::PC, B.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::OSType::Linux, B.GetTriple().getOS()); - EXPECT_EQ(ArchSpec::eCore_x86_64_x86_64, B.GetCore()); - - A.MergeFrom(B); - ASSERT_TRUE(A.IsValid()); - EXPECT_EQ(llvm::Triple::ArchType::x86_64, A.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::VendorType::PC, A.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::OSType::Linux, A.GetTriple().getOS()); - EXPECT_EQ(ArchSpec::eCore_x86_64_x86_64, A.GetCore()); - } - { - ArchSpec A("aarch64"); - ArchSpec B("aarch64--linux-android"); - - ArchSpec C("arm64_32"); - ArchSpec D("arm64_32--watchos"); - - EXPECT_TRUE(A.IsValid()); - EXPECT_TRUE(B.IsValid()); - EXPECT_TRUE(C.IsValid()); - EXPECT_TRUE(D.IsValid()); - - EXPECT_EQ(llvm::Triple::ArchType::aarch64, B.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor, - B.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::OSType::Linux, B.GetTriple().getOS()); - EXPECT_EQ(llvm::Triple::EnvironmentType::Android, - B.GetTriple().getEnvironment()); - - A.MergeFrom(B); - EXPECT_EQ(llvm::Triple::ArchType::aarch64, A.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor, - A.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::OSType::Linux, A.GetTriple().getOS()); - EXPECT_EQ(llvm::Triple::EnvironmentType::Android, - A.GetTriple().getEnvironment()); - - EXPECT_EQ(llvm::Triple::ArchType::aarch64_32, D.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor, - D.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::OSType::WatchOS, D.GetTriple().getOS()); - - C.MergeFrom(D); - EXPECT_EQ(llvm::Triple::ArchType::aarch64_32, C.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor, - C.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::OSType::WatchOS, C.GetTriple().getOS()); - } - { - ArchSpec A, B; - A.SetArchitecture(eArchTypeELF, llvm::ELF::EM_ARM, - LLDB_INVALID_CPUTYPE, llvm::ELF::ELFOSABI_NONE); - B.SetArchitecture(eArchTypeELF, llvm::ELF::EM_ARM, - LLDB_INVALID_CPUTYPE, llvm::ELF::ELFOSABI_LINUX); - - EXPECT_TRUE(A.IsValid()); - EXPECT_TRUE(B.IsValid()); - - EXPECT_EQ(llvm::Triple::ArchType::arm, B.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor, - B.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::OSType::Linux, B.GetTriple().getOS()); - EXPECT_EQ(llvm::Triple::EnvironmentType::UnknownEnvironment, - B.GetTriple().getEnvironment()); - - A.MergeFrom(B); - EXPECT_EQ(llvm::Triple::ArchType::arm, A.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor, - A.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::OSType::Linux, A.GetTriple().getOS()); - EXPECT_EQ(llvm::Triple::EnvironmentType::UnknownEnvironment, - A.GetTriple().getEnvironment()); - } - { - ArchSpec A("arm--linux-eabihf"); - ArchSpec B("armv8l--linux-gnueabihf"); - - EXPECT_TRUE(A.IsValid()); - EXPECT_TRUE(B.IsValid()); - - EXPECT_EQ(llvm::Triple::ArchType::arm, A.GetTriple().getArch()); - EXPECT_EQ(llvm::Triple::ArchType::arm, B.GetTriple().getArch()); - - EXPECT_EQ(ArchSpec::eCore_arm_generic, A.GetCore()); - EXPECT_EQ(ArchSpec::eCore_arm_armv8l, B.GetCore()); - - EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor, - A.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor, - B.GetTriple().getVendor()); - - EXPECT_EQ(llvm::Triple::OSType::Linux, A.GetTriple().getOS()); - EXPECT_EQ(llvm::Triple::OSType::Linux, B.GetTriple().getOS()); - - EXPECT_EQ(llvm::Triple::EnvironmentType::EABIHF, - A.GetTriple().getEnvironment()); - EXPECT_EQ(llvm::Triple::EnvironmentType::GNUEABIHF, - B.GetTriple().getEnvironment()); - - A.MergeFrom(B); - EXPECT_EQ(llvm::Triple::ArchType::arm, A.GetTriple().getArch()); - EXPECT_EQ(ArchSpec::eCore_arm_armv8l, A.GetCore()); - EXPECT_EQ(llvm::Triple::VendorType::UnknownVendor, - A.GetTriple().getVendor()); - EXPECT_EQ(llvm::Triple::OSType::Linux, A.GetTriple().getOS()); - EXPECT_EQ(llvm::Triple::EnvironmentType::EABIHF, - A.GetTriple().getEnvironment()); - } -} - -TEST(ArchSpecTest, MergeFromMachOUnknown) { - class MyArchSpec : public ArchSpec { - public: - MyArchSpec() { - this->SetTriple("unknown-mach-64"); - this->m_core = ArchSpec::eCore_uknownMach64; - this->m_byte_order = eByteOrderLittle; - this->m_flags = 0; - } - }; - - MyArchSpec A; - ASSERT_TRUE(A.IsValid()); - MyArchSpec B; - ASSERT_TRUE(B.IsValid()); - A.MergeFrom(B); - ASSERT_EQ(A.GetCore(), ArchSpec::eCore_uknownMach64); -} - -TEST(ArchSpecTest, Compatibility) { - { - ArchSpec A("x86_64-apple-macosx10.12"); - ArchSpec B("x86_64-apple-macosx10.12"); - ASSERT_TRUE(A.IsExactMatch(B)); - ASSERT_TRUE(A.IsCompatibleMatch(B)); - } - { - // The version information is auxiliary to support availability but - // doesn't affect compatibility. - ArchSpec A("x86_64-apple-macosx10.11"); - ArchSpec B("x86_64-apple-macosx10.12"); - ASSERT_TRUE(A.IsExactMatch(B)); - ASSERT_TRUE(A.IsCompatibleMatch(B)); - } - { - ArchSpec A("x86_64-apple-macosx10.13"); - ArchSpec B("x86_64h-apple-macosx10.13"); - ASSERT_FALSE(A.IsExactMatch(B)); - ASSERT_TRUE(A.IsCompatibleMatch(B)); - } - { - ArchSpec A("x86_64-apple-macosx"); - ArchSpec B("x86_64-apple-ios-simulator"); - ASSERT_FALSE(A.IsExactMatch(B)); - ASSERT_FALSE(A.IsCompatibleMatch(B)); - } - { - ArchSpec A("x86_64-*-*"); - ArchSpec B("x86_64-apple-ios-simulator"); - ASSERT_FALSE(A.IsExactMatch(B)); - ASSERT_FALSE(A.IsCompatibleMatch(B)); - ASSERT_FALSE(B.IsExactMatch(A)); - ASSERT_FALSE(B.IsCompatibleMatch(A)); - } - { - ArchSpec A("x86_64-apple-ios"); - ArchSpec B("x86_64-apple-ios-simulator"); - ASSERT_FALSE(A.IsExactMatch(B)); - ASSERT_FALSE(A.IsCompatibleMatch(B)); - ASSERT_FALSE(B.IsExactMatch(A)); - ASSERT_FALSE(B.IsCompatibleMatch(A)); - } - { - // FIXME: This is surprisingly not equivalent to "x86_64-*-*". - ArchSpec A("x86_64"); - ArchSpec B("x86_64-apple-ios-simulator"); - ASSERT_FALSE(A.IsExactMatch(B)); - ASSERT_TRUE(A.IsCompatibleMatch(B)); - ASSERT_FALSE(B.IsExactMatch(A)); - ASSERT_TRUE(B.IsCompatibleMatch(A)); - } - { - ArchSpec A("arm64-apple-ios"); - ArchSpec B("arm64-apple-ios-simulator"); - ASSERT_FALSE(A.IsExactMatch(B)); - ASSERT_FALSE(A.IsCompatibleMatch(B)); - ASSERT_FALSE(B.IsCompatibleMatch(A)); - ASSERT_FALSE(B.IsCompatibleMatch(A)); - } - { - ArchSpec A("arm64-*-*"); - ArchSpec B("arm64-apple-ios"); - ASSERT_FALSE(A.IsExactMatch(B)); - // FIXME: This looks unintuitive and we should investigate whether - // this is the desired behavior. - ASSERT_FALSE(A.IsCompatibleMatch(B)); - } - { - ArchSpec A("x86_64-*-*"); - ArchSpec B("x86_64-apple-ios-simulator"); - ASSERT_FALSE(A.IsExactMatch(B)); - // FIXME: See above, though the extra environment complicates things. - ASSERT_FALSE(A.IsCompatibleMatch(B)); - } - { - ArchSpec A("x86_64"); - ArchSpec B("x86_64-apple-macosx10.14"); - // FIXME: The exact match also looks unintuitive. - ASSERT_TRUE(A.IsExactMatch(B)); - ASSERT_TRUE(A.IsCompatibleMatch(B)); - } - { - ArchSpec A("x86_64"); - ArchSpec B("x86_64-apple-ios12.0.0-macabi"); - // FIXME: The exact match also looks unintuitive. - ASSERT_TRUE(A.IsExactMatch(B)); - ASSERT_TRUE(A.IsCompatibleMatch(B)); - } - { - ArchSpec A("x86_64-apple-ios12.0.0"); - ArchSpec B("x86_64-apple-ios12.0.0-macabi"); - ASSERT_FALSE(A.IsExactMatch(B)); - ASSERT_FALSE(A.IsCompatibleMatch(B)); - } - { - ArchSpec A("x86_64-apple-macosx10.14.2"); - ArchSpec B("x86_64-apple-ios12.0.0-macabi"); - ASSERT_FALSE(A.IsExactMatch(B)); - ASSERT_TRUE(A.IsCompatibleMatch(B)); - } - { - ArchSpec A("x86_64-apple-macosx10.14.2"); - ArchSpec B("x86_64-apple-ios12.0.0-macabi"); - // ios-macabi wins. - A.MergeFrom(B); - ASSERT_TRUE(A.IsExactMatch(B)); - } - { - ArchSpec A("x86_64-apple-macosx10.14.2"); - ArchSpec B("x86_64-apple-ios12.0.0-macabi"); - ArchSpec C(B); - // ios-macabi wins. - B.MergeFrom(A); - ASSERT_TRUE(B.IsExactMatch(C)); - } -} - -TEST(ArchSpecTest, OperatorBool) { - EXPECT_FALSE(ArchSpec()); - EXPECT_TRUE(ArchSpec("x86_64-pc-linux")); -} - -TEST(ArchSpecTest, TripleComponentsWereSpecified) { - { - ArchSpec A(""); - ArchSpec B("-"); - ArchSpec C("--"); - ArchSpec D("---"); - - ASSERT_FALSE(A.TripleVendorWasSpecified()); - ASSERT_FALSE(A.TripleOSWasSpecified()); - ASSERT_FALSE(A.TripleEnvironmentWasSpecified()); - - ASSERT_FALSE(B.TripleVendorWasSpecified()); - ASSERT_FALSE(B.TripleOSWasSpecified()); - ASSERT_FALSE(B.TripleEnvironmentWasSpecified()); - - ASSERT_FALSE(C.TripleVendorWasSpecified()); - ASSERT_FALSE(C.TripleOSWasSpecified()); - ASSERT_FALSE(C.TripleEnvironmentWasSpecified()); - - ASSERT_FALSE(D.TripleVendorWasSpecified()); - ASSERT_FALSE(D.TripleOSWasSpecified()); - ASSERT_FALSE(D.TripleEnvironmentWasSpecified()); - } - { - // TODO: llvm::Triple::normalize treats the missing components from these - // triples as specified unknown components instead of unspecified - // components. We need to either change the behavior in llvm or work around - // this in lldb. - ArchSpec A("armv7"); - ArchSpec B("armv7-"); - ArchSpec C("armv7--"); - ArchSpec D("armv7---"); - - ASSERT_FALSE(A.TripleVendorWasSpecified()); - ASSERT_FALSE(A.TripleOSWasSpecified()); - ASSERT_FALSE(A.TripleEnvironmentWasSpecified()); - - ASSERT_TRUE(B.TripleVendorWasSpecified()); - ASSERT_FALSE(B.TripleOSWasSpecified()); - ASSERT_FALSE(B.TripleEnvironmentWasSpecified()); - - ASSERT_TRUE(C.TripleVendorWasSpecified()); - ASSERT_TRUE(C.TripleOSWasSpecified()); - ASSERT_FALSE(C.TripleEnvironmentWasSpecified()); - - ASSERT_TRUE(D.TripleVendorWasSpecified()); - ASSERT_TRUE(D.TripleOSWasSpecified()); - ASSERT_TRUE(D.TripleEnvironmentWasSpecified()); - } - { - ArchSpec A("x86_64-unknown"); - ArchSpec B("powerpc-unknown-linux"); - ArchSpec C("i386-pc-windows-msvc"); - ArchSpec D("aarch64-unknown-linux-android"); - - ASSERT_TRUE(A.TripleVendorWasSpecified()); - ASSERT_FALSE(A.TripleOSWasSpecified()); - ASSERT_FALSE(A.TripleEnvironmentWasSpecified()); - - ASSERT_TRUE(B.TripleVendorWasSpecified()); - ASSERT_TRUE(B.TripleOSWasSpecified()); - ASSERT_FALSE(B.TripleEnvironmentWasSpecified()); - - ASSERT_TRUE(C.TripleVendorWasSpecified()); - ASSERT_TRUE(C.TripleOSWasSpecified()); - ASSERT_TRUE(C.TripleEnvironmentWasSpecified()); - - ASSERT_TRUE(D.TripleVendorWasSpecified()); - ASSERT_TRUE(D.TripleOSWasSpecified()); - ASSERT_TRUE(D.TripleEnvironmentWasSpecified()); - } -} - -TEST(ArchSpecTest, YAML) { - std::string buffer; - llvm::raw_string_ostream os(buffer); - - // Serialize. - llvm::yaml::Output yout(os); - std::vector archs = {ArchSpec("x86_64-pc-linux"), - ArchSpec("x86_64-apple-macosx10.12"), - ArchSpec("i686-pc-windows")}; - yout << archs; - os.flush(); - - // Deserialize. - std::vector deserialized; - llvm::yaml::Input yin(buffer); - yin >> deserialized; - - EXPECT_EQ(archs, deserialized); -} diff --git a/gnu/llvm/lldb/unittests/Utility/ArgsTest.cpp b/gnu/llvm/lldb/unittests/Utility/ArgsTest.cpp deleted file mode 100644 index 0b153a8d593..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/ArgsTest.cpp +++ /dev/null @@ -1,344 +0,0 @@ -//===-- ArgsTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/Args.h" -#include "lldb/Utility/FileSpec.h" -#include "lldb/Utility/StringList.h" - -#include -#include - -using namespace lldb_private; - -TEST(ArgsTest, TestSingleArg) { - Args args; - args.SetCommandString("arg"); - EXPECT_EQ(1u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg"); -} - -TEST(ArgsTest, TestSingleQuotedArgWithSpace) { - Args args; - args.SetCommandString("\"arg with space\""); - EXPECT_EQ(1u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg with space"); -} - -TEST(ArgsTest, TestSingleArgWithQuotedSpace) { - Args args; - args.SetCommandString("arg\\ with\\ space"); - EXPECT_EQ(1u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg with space"); -} - -TEST(ArgsTest, TestTrailingBackslash) { - Args args; - args.SetCommandString("arg\\"); - EXPECT_EQ(1u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg\\"); -} - -TEST(ArgsTest, TestQuotedTrailingBackslash) { - Args args; - args.SetCommandString("\"arg\\"); - EXPECT_EQ(1u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg\\"); -} - -TEST(ArgsTest, TestUnknownEscape) { - Args args; - args.SetCommandString("arg\\y"); - EXPECT_EQ(1u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg\\y"); -} - -TEST(ArgsTest, TestQuotedUnknownEscape) { - Args args; - args.SetCommandString("\"arg\\y"); - EXPECT_EQ(1u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg\\y"); -} - -TEST(ArgsTest, TestMultipleArgs) { - Args args; - args.SetCommandString("this has multiple args"); - EXPECT_EQ(4u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "this"); - EXPECT_STREQ(args.GetArgumentAtIndex(1), "has"); - EXPECT_STREQ(args.GetArgumentAtIndex(2), "multiple"); - EXPECT_STREQ(args.GetArgumentAtIndex(3), "args"); -} - -TEST(ArgsTest, TestOverwriteArgs) { - Args args; - args.SetCommandString("this has multiple args"); - EXPECT_EQ(4u, args.GetArgumentCount()); - args.SetCommandString("arg"); - EXPECT_EQ(1u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "arg"); -} - -TEST(ArgsTest, TestAppendArg) { - Args args; - args.SetCommandString("first_arg"); - EXPECT_EQ(1u, args.GetArgumentCount()); - args.AppendArgument(llvm::StringRef("second_arg")); - EXPECT_EQ(2u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "first_arg"); - EXPECT_STREQ(args.GetArgumentAtIndex(1), "second_arg"); -} - -TEST(ArgsTest, TestInsertArg) { - Args args; - args.AppendArgument("1"); - args.AppendArgument("2"); - args.AppendArgument("3"); - args.InsertArgumentAtIndex(1, "1.5"); - args.InsertArgumentAtIndex(4, "3.5"); - - ASSERT_EQ(5u, args.GetArgumentCount()); - EXPECT_STREQ("1", args.GetArgumentAtIndex(0)); - EXPECT_STREQ("1.5", args.GetArgumentAtIndex(1)); - EXPECT_STREQ("2", args.GetArgumentAtIndex(2)); - EXPECT_STREQ("3", args.GetArgumentAtIndex(3)); - EXPECT_STREQ("3.5", args.GetArgumentAtIndex(4)); -} - -TEST(ArgsTest, TestArgv) { - Args args; - EXPECT_EQ(nullptr, args.GetArgumentVector()); - - args.AppendArgument("1"); - EXPECT_NE(nullptr, args.GetArgumentVector()[0]); - EXPECT_EQ(nullptr, args.GetArgumentVector()[1]); - - args.AppendArgument("2"); - EXPECT_NE(nullptr, args.GetArgumentVector()[0]); - EXPECT_NE(nullptr, args.GetArgumentVector()[1]); - EXPECT_EQ(nullptr, args.GetArgumentVector()[2]); - - args.AppendArgument("3"); - EXPECT_NE(nullptr, args.GetArgumentVector()[0]); - EXPECT_NE(nullptr, args.GetArgumentVector()[1]); - EXPECT_NE(nullptr, args.GetArgumentVector()[2]); - EXPECT_EQ(nullptr, args.GetArgumentVector()[3]); - - args.InsertArgumentAtIndex(1, "1.5"); - EXPECT_NE(nullptr, args.GetArgumentVector()[0]); - EXPECT_NE(nullptr, args.GetArgumentVector()[1]); - EXPECT_NE(nullptr, args.GetArgumentVector()[2]); - EXPECT_NE(nullptr, args.GetArgumentVector()[3]); - EXPECT_EQ(nullptr, args.GetArgumentVector()[4]); - - args.InsertArgumentAtIndex(4, "3.5"); - EXPECT_NE(nullptr, args.GetArgumentVector()[0]); - EXPECT_NE(nullptr, args.GetArgumentVector()[1]); - EXPECT_NE(nullptr, args.GetArgumentVector()[2]); - EXPECT_NE(nullptr, args.GetArgumentVector()[3]); - EXPECT_NE(nullptr, args.GetArgumentVector()[4]); - EXPECT_EQ(nullptr, args.GetArgumentVector()[5]); -} - -TEST(ArgsTest, StringListConstructor) { - StringList list; - list << "foo" - << "bar" - << "baz"; - Args args(list); - ASSERT_EQ(3u, args.GetArgumentCount()); - EXPECT_EQ("foo", args[0].ref()); - EXPECT_EQ("bar", args[1].ref()); - EXPECT_EQ("baz", args[2].ref()); -} - -TEST(ArgsTest, GetQuotedCommandString) { - Args args; - const char *str = "process launch -o stdout.txt -- \"a b c\""; - args.SetCommandString(str); - - std::string stdstr; - ASSERT_TRUE(args.GetQuotedCommandString(stdstr)); - EXPECT_EQ(str, stdstr); -} - -TEST(ArgsTest, BareSingleQuote) { - Args args; - args.SetCommandString("a\\'b"); - EXPECT_EQ(1u, args.GetArgumentCount()); - - EXPECT_STREQ("a'b", args.GetArgumentAtIndex(0)); -} - -TEST(ArgsTest, DoubleQuotedItem) { - Args args; - args.SetCommandString("\"a b c\""); - EXPECT_EQ(1u, args.GetArgumentCount()); - - EXPECT_STREQ("a b c", args.GetArgumentAtIndex(0)); -} - -TEST(ArgsTest, AppendArguments) { - Args args; - const char *argv[] = {"1", "2", nullptr}; - const char *argv2[] = {"3", "4", nullptr}; - - args.AppendArguments(argv); - ASSERT_EQ(2u, args.GetArgumentCount()); - EXPECT_STREQ("1", args.GetArgumentVector()[0]); - EXPECT_STREQ("2", args.GetArgumentVector()[1]); - EXPECT_EQ(nullptr, args.GetArgumentVector()[2]); - EXPECT_STREQ("1", args.GetArgumentAtIndex(0)); - EXPECT_STREQ("2", args.GetArgumentAtIndex(1)); - - args.AppendArguments(argv2); - ASSERT_EQ(4u, args.GetArgumentCount()); - EXPECT_STREQ("1", args.GetArgumentVector()[0]); - EXPECT_STREQ("2", args.GetArgumentVector()[1]); - EXPECT_STREQ("3", args.GetArgumentVector()[2]); - EXPECT_STREQ("4", args.GetArgumentVector()[3]); - EXPECT_EQ(nullptr, args.GetArgumentVector()[4]); - EXPECT_STREQ("1", args.GetArgumentAtIndex(0)); - EXPECT_STREQ("2", args.GetArgumentAtIndex(1)); - EXPECT_STREQ("3", args.GetArgumentAtIndex(2)); - EXPECT_STREQ("4", args.GetArgumentAtIndex(3)); -} - -TEST(ArgsTest, GetArgumentArrayRef) { - Args args("foo bar"); - auto ref = args.GetArgumentArrayRef(); - ASSERT_EQ(2u, ref.size()); - EXPECT_STREQ("foo", ref[0]); - EXPECT_STREQ("bar", ref[1]); -} - -TEST(ArgsTest, EscapeLLDBCommandArgument) { - const std::string foo = "foo'"; - EXPECT_EQ("foo\\'", Args::EscapeLLDBCommandArgument(foo, '\0')); - EXPECT_EQ("foo'", Args::EscapeLLDBCommandArgument(foo, '\'')); - EXPECT_EQ("foo'", Args::EscapeLLDBCommandArgument(foo, '`')); - EXPECT_EQ("foo'", Args::EscapeLLDBCommandArgument(foo, '"')); - - const std::string bar = "bar\""; - EXPECT_EQ("bar\\\"", Args::EscapeLLDBCommandArgument(bar, '\0')); - EXPECT_EQ("bar\"", Args::EscapeLLDBCommandArgument(bar, '\'')); - EXPECT_EQ("bar\"", Args::EscapeLLDBCommandArgument(bar, '`')); - EXPECT_EQ("bar\\\"", Args::EscapeLLDBCommandArgument(bar, '"')); - - const std::string baz = "baz`"; - EXPECT_EQ("baz\\`", Args::EscapeLLDBCommandArgument(baz, '\0')); - EXPECT_EQ("baz`", Args::EscapeLLDBCommandArgument(baz, '\'')); - EXPECT_EQ("baz`", Args::EscapeLLDBCommandArgument(baz, '`')); - EXPECT_EQ("baz\\`", Args::EscapeLLDBCommandArgument(baz, '"')); - - const std::string quux = "quux\t"; - EXPECT_EQ("quux\\\t", Args::EscapeLLDBCommandArgument(quux, '\0')); - EXPECT_EQ("quux\t", Args::EscapeLLDBCommandArgument(quux, '\'')); - EXPECT_EQ("quux\t", Args::EscapeLLDBCommandArgument(quux, '`')); - EXPECT_EQ("quux\t", Args::EscapeLLDBCommandArgument(quux, '"')); -} - -TEST(ArgsTest, ReplaceArgumentAtIndexShort) { - Args args; - args.SetCommandString("foo ba b"); - args.ReplaceArgumentAtIndex(0, "f"); - EXPECT_EQ(3u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "f"); -} - -TEST(ArgsTest, ReplaceArgumentAtIndexEqual) { - Args args; - args.SetCommandString("foo ba b"); - args.ReplaceArgumentAtIndex(0, "bar"); - EXPECT_EQ(3u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "bar"); -} - -TEST(ArgsTest, ReplaceArgumentAtIndexLonger) { - Args args; - args.SetCommandString("foo ba b"); - args.ReplaceArgumentAtIndex(0, "baar"); - EXPECT_EQ(3u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(0), "baar"); -} - -TEST(ArgsTest, ReplaceArgumentAtIndexOutOfRange) { - Args args; - args.SetCommandString("foo ba b"); - args.ReplaceArgumentAtIndex(3, "baar"); - EXPECT_EQ(3u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(2), "b"); -} - -TEST(ArgsTest, ReplaceArgumentAtIndexFarOutOfRange) { - Args args; - args.SetCommandString("foo ba b"); - args.ReplaceArgumentAtIndex(4, "baar"); - EXPECT_EQ(3u, args.GetArgumentCount()); - EXPECT_STREQ(args.GetArgumentAtIndex(2), "b"); -} - -TEST(ArgsTest, Yaml) { - std::string buffer; - llvm::raw_string_ostream os(buffer); - - // Serialize. - Args args; - args.SetCommandString("this 'has' \"multiple\" args"); - llvm::yaml::Output yout(os); - yout << args; - os.flush(); - - llvm::outs() << buffer; - - // Deserialize. - Args deserialized; - llvm::yaml::Input yin(buffer); - yin >> deserialized; - - EXPECT_EQ(4u, deserialized.GetArgumentCount()); - EXPECT_STREQ(deserialized.GetArgumentAtIndex(0), "this"); - EXPECT_STREQ(deserialized.GetArgumentAtIndex(1), "has"); - EXPECT_STREQ(deserialized.GetArgumentAtIndex(2), "multiple"); - EXPECT_STREQ(deserialized.GetArgumentAtIndex(3), "args"); - - llvm::ArrayRef entries = deserialized.entries(); - EXPECT_EQ(entries[0].GetQuoteChar(), '\0'); - EXPECT_EQ(entries[1].GetQuoteChar(), '\''); - EXPECT_EQ(entries[2].GetQuoteChar(), '"'); - EXPECT_EQ(entries[3].GetQuoteChar(), '\0'); -} - -TEST(ArgsTest, GetShellSafeArgument) { - // Try escaping with bash at start/middle/end of the argument. - FileSpec bash("/bin/bash", FileSpec::Style::posix); - EXPECT_EQ(Args::GetShellSafeArgument(bash, "\"b"), "\\\"b"); - EXPECT_EQ(Args::GetShellSafeArgument(bash, "a\""), "a\\\""); - EXPECT_EQ(Args::GetShellSafeArgument(bash, "a\"b"), "a\\\"b"); - - FileSpec zsh("/bin/zsh", FileSpec::Style::posix); - EXPECT_EQ(Args::GetShellSafeArgument(zsh, R"('";()<>&|\)"), - R"(\'\"\;\(\)\<\>\&\|\\)"); - // Normal characters and expressions that shouldn't be escaped. - EXPECT_EQ(Args::GetShellSafeArgument(zsh, "aA$1*"), "aA$1*"); - - // String that doesn't need to be escaped - EXPECT_EQ(Args::GetShellSafeArgument(bash, "a"), "a"); - - // Try escaping with tcsh and the tcsh-specific "$" escape. - FileSpec tcsh("/bin/tcsh", FileSpec::Style::posix); - EXPECT_EQ(Args::GetShellSafeArgument(tcsh, "a$b"), "a\\$b"); - // Bash however doesn't need escaping for "$". - EXPECT_EQ(Args::GetShellSafeArgument(bash, "a$b"), "a$b"); - - // Try escaping with an unknown shell. - FileSpec unknown_shell("/bin/unknown_shell", FileSpec::Style::posix); - EXPECT_EQ(Args::GetShellSafeArgument(unknown_shell, "a'b"), "a\\'b"); - EXPECT_EQ(Args::GetShellSafeArgument(unknown_shell, "a\"b"), "a\\\"b"); -} diff --git a/gnu/llvm/lldb/unittests/Utility/BroadcasterTest.cpp b/gnu/llvm/lldb/unittests/Utility/BroadcasterTest.cpp deleted file mode 100644 index 8ff45399893..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/BroadcasterTest.cpp +++ /dev/null @@ -1,74 +0,0 @@ -//===-- BroadcasterTest.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/Broadcaster.h" -#include "lldb/Utility/Event.h" -#include "lldb/Utility/Listener.h" -#include "lldb/Utility/Predicate.h" - -#include - -using namespace lldb; -using namespace lldb_private; - -TEST(BroadcasterTest, BroadcastEvent) { - EventSP event_sp; - Broadcaster broadcaster(nullptr, "test-broadcaster"); - std::chrono::seconds timeout(0); - - // Create a listener, sign it up, make sure it receives an event. - ListenerSP listener1_sp = Listener::MakeListener("test-listener1"); - const uint32_t event_mask1 = 1; - EXPECT_EQ(event_mask1, - listener1_sp->StartListeningForEvents(&broadcaster, event_mask1)); - broadcaster.BroadcastEvent(event_mask1, nullptr); - EXPECT_TRUE(listener1_sp->GetEvent(event_sp, timeout)); - EXPECT_EQ(event_mask1, event_sp->GetType()); - - { - // Add one more listener, make sure it works as well. - ListenerSP listener2_sp = Listener::MakeListener("test-listener2"); - const uint32_t event_mask2 = 1; - EXPECT_EQ(event_mask2, listener2_sp->StartListeningForEvents( - &broadcaster, event_mask1 | event_mask2)); - broadcaster.BroadcastEvent(event_mask2, nullptr); - EXPECT_TRUE(listener2_sp->GetEvent(event_sp, timeout)); - EXPECT_EQ(event_mask2, event_sp->GetType()); - - // Both listeners should get this event. - broadcaster.BroadcastEvent(event_mask1, nullptr); - EXPECT_TRUE(listener1_sp->GetEvent(event_sp, timeout)); - EXPECT_EQ(event_mask1, event_sp->GetType()); - EXPECT_TRUE(listener2_sp->GetEvent(event_sp, timeout)); - EXPECT_EQ(event_mask2, event_sp->GetType()); - } - - // Now again only one listener should be active. - broadcaster.BroadcastEvent(event_mask1, nullptr); - EXPECT_TRUE(listener1_sp->GetEvent(event_sp, timeout)); - EXPECT_EQ(event_mask1, event_sp->GetType()); -} - -TEST(BroadcasterTest, EventTypeHasListeners) { - EventSP event_sp; - Broadcaster broadcaster(nullptr, "test-broadcaster"); - - const uint32_t event_mask = 1; - EXPECT_FALSE(broadcaster.EventTypeHasListeners(event_mask)); - - { - ListenerSP listener_sp = Listener::MakeListener("test-listener"); - EXPECT_EQ(event_mask, - listener_sp->StartListeningForEvents(&broadcaster, event_mask)); - EXPECT_TRUE(broadcaster.EventTypeHasListeners(event_mask)); - } - - EXPECT_FALSE(broadcaster.EventTypeHasListeners(event_mask)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/CMakeLists.txt b/gnu/llvm/lldb/unittests/Utility/CMakeLists.txt deleted file mode 100644 index 3dd910412e6..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/CMakeLists.txt +++ /dev/null @@ -1,58 +0,0 @@ -add_lldb_unittest(UtilityTests - AnsiTerminalTest.cpp - ArgsTest.cpp - OptionsWithRawTest.cpp - ArchSpecTest.cpp - BroadcasterTest.cpp - ConstStringTest.cpp - CompletionRequestTest.cpp - DataExtractorTest.cpp - EnvironmentTest.cpp - EventTest.cpp - FileSpecTest.cpp - FlagsTest.cpp - ListenerTest.cpp - LogTest.cpp - NameMatchesTest.cpp - PredicateTest.cpp - ProcessInfoTest.cpp - ProcessInstanceInfoTest.cpp - RangeMapTest.cpp - RangeTest.cpp - RegisterValueTest.cpp - RegularExpressionTest.cpp - ReproducerInstrumentationTest.cpp - ReproducerTest.cpp - ScalarTest.cpp - SharedClusterTest.cpp - StateTest.cpp - StatusTest.cpp - StreamTeeTest.cpp - StreamTest.cpp - StringExtractorGDBRemoteTest.cpp - StringExtractorTest.cpp - StringLexerTest.cpp - StringListTest.cpp - StructuredDataTest.cpp - SubsystemRAIITest.cpp - TildeExpressionResolverTest.cpp - TimeoutTest.cpp - TimerTest.cpp - UriParserTest.cpp - UserIDResolverTest.cpp - UUIDTest.cpp - VASprintfTest.cpp - VMRangeTest.cpp - XcodeSDKTest.cpp - - LINK_LIBS - lldbUtility - lldbUtilityHelpers - LLVMTestingSupport - LINK_COMPONENTS - Support - ) - -add_unittest_inputs(UtilityTests - StructuredData-basic.json - ) diff --git a/gnu/llvm/lldb/unittests/Utility/CompletionRequestTest.cpp b/gnu/llvm/lldb/unittests/Utility/CompletionRequestTest.cpp deleted file mode 100644 index 02a5f5366a4..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/CompletionRequestTest.cpp +++ /dev/null @@ -1,276 +0,0 @@ -//===-- CompletionRequestTest.cpp -----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/CompletionRequest.h" -using namespace lldb_private; - -TEST(CompletionRequest, Constructor) { - std::string command = "a bad c"; - const unsigned cursor_pos = 3; - const size_t arg_index = 1; - StringList matches; - CompletionResult result; - - CompletionRequest request(command, cursor_pos, result); - result.GetMatches(matches); - - EXPECT_EQ(request.GetRawLine(), "a b"); - EXPECT_EQ(request.GetRawLineWithUnusedSuffix(), command); - EXPECT_EQ(request.GetRawCursorPos(), cursor_pos); - EXPECT_EQ(request.GetCursorIndex(), arg_index); - - EXPECT_EQ(request.GetParsedLine().GetArgumentCount(), 2u); - EXPECT_EQ(request.GetCursorArgumentPrefix().str(), "b"); -} - -TEST(CompletionRequest, FakeLastArg) { - // We insert an empty fake argument into the argument list when the - // cursor is after a space. - std::string command = "a bad c "; - const unsigned cursor_pos = command.size(); - CompletionResult result; - - CompletionRequest request(command, cursor_pos, result); - - EXPECT_EQ(request.GetRawLine(), command); - EXPECT_EQ(request.GetRawLineWithUnusedSuffix(), command); - EXPECT_EQ(request.GetRawCursorPos(), cursor_pos); - EXPECT_EQ(request.GetCursorIndex(), 3U); - - EXPECT_EQ(request.GetParsedLine().GetArgumentCount(), 4U); - EXPECT_EQ(request.GetCursorArgumentPrefix().str(), ""); -} - -TEST(CompletionRequest, TryCompleteCurrentArgGood) { - std::string command = "a bad c"; - StringList matches, descriptions; - CompletionResult result; - - CompletionRequest request(command, 3, result); - request.TryCompleteCurrentArg("boo", "car"); - result.GetMatches(matches); - result.GetDescriptions(descriptions); - - EXPECT_EQ(1U, result.GetResults().size()); - EXPECT_STREQ("boo", matches.GetStringAtIndex(0U)); - EXPECT_EQ(1U, descriptions.GetSize()); - EXPECT_STREQ("car", descriptions.GetStringAtIndex(0U)); -} - -TEST(CompletionRequest, TryCompleteCurrentArgBad) { - std::string command = "a bad c"; - CompletionResult result; - - CompletionRequest request(command, 3, result); - request.TryCompleteCurrentArg("car", "card"); - - EXPECT_EQ(0U, result.GetResults().size()); -} - -TEST(CompletionRequest, TryCompleteCurrentArgMode) { - std::string command = "a bad c"; - CompletionResult result; - - CompletionRequest request(command, 3, result); - request.TryCompleteCurrentArg("bar", "bard"); - - EXPECT_EQ(1U, result.GetResults().size()); - EXPECT_EQ(CompletionMode::Partial, result.GetResults()[0].GetMode()); -} - -TEST(CompletionRequest, ShiftArguments) { - std::string command = "a bad c"; - const unsigned cursor_pos = 3; - const size_t arg_index = 1; - StringList matches; - CompletionResult result; - - CompletionRequest request(command, cursor_pos, result); - result.GetMatches(matches); - - EXPECT_EQ(request.GetRawLine(), "a b"); - EXPECT_EQ(request.GetRawLineWithUnusedSuffix(), command); - EXPECT_EQ(request.GetRawCursorPos(), cursor_pos); - EXPECT_EQ(request.GetCursorIndex(), arg_index); - - EXPECT_EQ(request.GetParsedLine().GetArgumentCount(), 2u); - EXPECT_STREQ(request.GetParsedLine().GetArgumentAtIndex(1), "b"); - - // Shift away the 'a' argument. - request.ShiftArguments(); - - // The raw line/cursor stays identical. - EXPECT_EQ(request.GetRawLine(), "a b"); - EXPECT_EQ(request.GetRawLineWithUnusedSuffix(), command); - EXPECT_EQ(request.GetRawCursorPos(), cursor_pos); - - // Partially parsed line and cursor should be updated. - EXPECT_EQ(request.GetCursorIndex(), arg_index - 1U); - EXPECT_EQ(request.GetParsedLine().GetArgumentCount(), 1u); - EXPECT_EQ(request.GetCursorArgumentPrefix().str(), "b"); -} - -TEST(CompletionRequest, DuplicateFiltering) { - std::string command = "a bad c"; - const unsigned cursor_pos = 3; - StringList matches; - - CompletionResult result; - CompletionRequest request(command, cursor_pos, result); - result.GetMatches(matches); - - EXPECT_EQ(0U, result.GetNumberOfResults()); - - // Add foo twice - request.AddCompletion("foo"); - result.GetMatches(matches); - - EXPECT_EQ(1U, result.GetNumberOfResults()); - EXPECT_EQ(1U, matches.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - - request.AddCompletion("foo"); - result.GetMatches(matches); - - EXPECT_EQ(1U, result.GetNumberOfResults()); - EXPECT_EQ(1U, matches.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - - // Add bar twice - request.AddCompletion("bar"); - result.GetMatches(matches); - - EXPECT_EQ(2U, result.GetNumberOfResults()); - EXPECT_EQ(2U, matches.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - EXPECT_STREQ("bar", matches.GetStringAtIndex(1)); - - request.AddCompletion("bar"); - result.GetMatches(matches); - - EXPECT_EQ(2U, result.GetNumberOfResults()); - EXPECT_EQ(2U, matches.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - EXPECT_STREQ("bar", matches.GetStringAtIndex(1)); - - // Add foo again. - request.AddCompletion("foo"); - result.GetMatches(matches); - - EXPECT_EQ(2U, result.GetNumberOfResults()); - EXPECT_EQ(2U, matches.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - EXPECT_STREQ("bar", matches.GetStringAtIndex(1)); - - // Add something with an existing prefix - request.AddCompletion("foobar"); - result.GetMatches(matches); - - EXPECT_EQ(3U, result.GetNumberOfResults()); - EXPECT_EQ(3U, matches.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - EXPECT_STREQ("bar", matches.GetStringAtIndex(1)); - EXPECT_STREQ("foobar", matches.GetStringAtIndex(2)); -} - -TEST(CompletionRequest, DuplicateFilteringWithComments) { - std::string command = "a bad c"; - const unsigned cursor_pos = 3; - StringList matches, descriptions; - - CompletionResult result; - CompletionRequest request(command, cursor_pos, result); - result.GetMatches(matches); - result.GetDescriptions(descriptions); - - EXPECT_EQ(0U, result.GetNumberOfResults()); - - // Add foo twice with same comment - request.AddCompletion("foo", "comment"); - result.GetMatches(matches); - result.GetDescriptions(descriptions); - - EXPECT_EQ(1U, result.GetNumberOfResults()); - EXPECT_EQ(1U, matches.GetSize()); - EXPECT_EQ(1U, descriptions.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - EXPECT_STREQ("comment", descriptions.GetStringAtIndex(0)); - - request.AddCompletion("foo", "comment"); - result.GetMatches(matches); - result.GetDescriptions(descriptions); - - EXPECT_EQ(1U, result.GetNumberOfResults()); - EXPECT_EQ(1U, matches.GetSize()); - EXPECT_EQ(1U, descriptions.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - EXPECT_STREQ("comment", descriptions.GetStringAtIndex(0)); - - // Add bar twice with different comments - request.AddCompletion("bar", "comment"); - result.GetMatches(matches); - result.GetDescriptions(descriptions); - - EXPECT_EQ(2U, result.GetNumberOfResults()); - EXPECT_EQ(2U, matches.GetSize()); - EXPECT_EQ(2U, descriptions.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - EXPECT_STREQ("bar", matches.GetStringAtIndex(1)); - - request.AddCompletion("bar", "another comment"); - result.GetMatches(matches); - result.GetDescriptions(descriptions); - - EXPECT_EQ(3U, result.GetNumberOfResults()); - EXPECT_EQ(3U, matches.GetSize()); - EXPECT_EQ(3U, descriptions.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - EXPECT_STREQ("comment", descriptions.GetStringAtIndex(0)); - EXPECT_STREQ("bar", matches.GetStringAtIndex(1)); - EXPECT_STREQ("comment", descriptions.GetStringAtIndex(1)); - EXPECT_STREQ("bar", matches.GetStringAtIndex(2)); - EXPECT_STREQ("another comment", descriptions.GetStringAtIndex(2)); - - // Add foo again with no comment - request.AddCompletion("foo"); - result.GetMatches(matches); - result.GetDescriptions(descriptions); - - EXPECT_EQ(4U, result.GetNumberOfResults()); - EXPECT_EQ(4U, matches.GetSize()); - EXPECT_EQ(4U, descriptions.GetSize()); - EXPECT_STREQ("foo", matches.GetStringAtIndex(0)); - EXPECT_STREQ("comment", descriptions.GetStringAtIndex(0)); - EXPECT_STREQ("bar", matches.GetStringAtIndex(1)); - EXPECT_STREQ("comment", descriptions.GetStringAtIndex(1)); - EXPECT_STREQ("bar", matches.GetStringAtIndex(2)); - EXPECT_STREQ("another comment", descriptions.GetStringAtIndex(2)); - EXPECT_STREQ("foo", matches.GetStringAtIndex(3)); - EXPECT_STREQ("", descriptions.GetStringAtIndex(3)); -} - -TEST(CompletionRequest, TestCompletionOwnership) { - std::string command = "a bad c"; - const unsigned cursor_pos = 3; - StringList matches; - - CompletionResult result; - CompletionRequest request(command, cursor_pos, result); - - std::string Temporary = "bar"; - request.AddCompletion(Temporary); - // Manipulate our completion. The request should have taken a copy, so that - // shouldn't influence anything. - Temporary[0] = 'f'; - - result.GetMatches(matches); - EXPECT_EQ(1U, result.GetNumberOfResults()); - EXPECT_STREQ("bar", matches.GetStringAtIndex(0)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp b/gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp deleted file mode 100644 index 96624b39130..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/ConstStringTest.cpp +++ /dev/null @@ -1,159 +0,0 @@ -//===-- ConstStringTest.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/ConstString.h" -#include "llvm/Support/FormatVariadic.h" -#include "llvm/Support/YAMLParser.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(ConstStringTest, format_provider) { - EXPECT_EQ("foo", llvm::formatv("{0}", ConstString("foo")).str()); -} - -TEST(ConstStringTest, MangledCounterpart) { - ConstString uvw("uvw"); - ConstString counterpart; - EXPECT_FALSE(uvw.GetMangledCounterpart(counterpart)); - EXPECT_EQ("", counterpart.GetStringRef()); - - ConstString xyz; - xyz.SetStringWithMangledCounterpart("xyz", uvw); - EXPECT_EQ("xyz", xyz.GetStringRef()); - - EXPECT_TRUE(xyz.GetMangledCounterpart(counterpart)); - EXPECT_EQ("uvw", counterpart.GetStringRef()); - - EXPECT_TRUE(uvw.GetMangledCounterpart(counterpart)); - EXPECT_EQ("xyz", counterpart.GetStringRef()); -} - -TEST(ConstStringTest, UpdateMangledCounterpart) { - { // Add counterpart - ConstString some1; - some1.SetStringWithMangledCounterpart("some", ConstString("")); - } - { // Overwrite empty string - ConstString some2; - some2.SetStringWithMangledCounterpart("some", ConstString("one")); - } - { // Overwrite with identical value - ConstString some2; - some2.SetStringWithMangledCounterpart("some", ConstString("one")); - } - { // Check counterpart is set - ConstString counterpart; - EXPECT_TRUE(ConstString("some").GetMangledCounterpart(counterpart)); - EXPECT_EQ("one", counterpart.GetStringRef()); - } -} - -TEST(ConstStringTest, FromMidOfBufferStringRef) { - // StringRef's into bigger buffer: no null termination - const char *buffer = "abcdefghi"; - llvm::StringRef foo_ref(buffer, 3); - llvm::StringRef bar_ref(buffer + 3, 3); - - ConstString foo(foo_ref); - - ConstString bar; - bar.SetStringWithMangledCounterpart(bar_ref, foo); - EXPECT_EQ("def", bar.GetStringRef()); - - ConstString counterpart; - EXPECT_TRUE(bar.GetMangledCounterpart(counterpart)); - EXPECT_EQ("abc", counterpart.GetStringRef()); - - EXPECT_TRUE(foo.GetMangledCounterpart(counterpart)); - EXPECT_EQ("def", counterpart.GetStringRef()); -} - -TEST(ConstStringTest, NullAndEmptyStates) { - ConstString foo("foo"); - EXPECT_FALSE(!foo); - EXPECT_FALSE(foo.IsEmpty()); - EXPECT_FALSE(foo.IsNull()); - - ConstString empty(""); - EXPECT_TRUE(!empty); - EXPECT_TRUE(empty.IsEmpty()); - EXPECT_FALSE(empty.IsNull()); - - ConstString null; - EXPECT_TRUE(!null); - EXPECT_TRUE(null.IsEmpty()); - EXPECT_TRUE(null.IsNull()); -} - -TEST(ConstStringTest, CompareConstString) { - ConstString foo("foo"); - ConstString foo2("foo"); - ConstString bar("bar"); - - EXPECT_TRUE(foo == foo2); - EXPECT_TRUE(foo2 == foo); - EXPECT_TRUE(foo == ConstString("foo")); - - EXPECT_FALSE(foo == bar); - EXPECT_FALSE(foo2 == bar); - EXPECT_FALSE(foo == ConstString("bar")); - EXPECT_FALSE(foo == ConstString("different")); - EXPECT_FALSE(foo == ConstString("")); - EXPECT_FALSE(foo == ConstString()); - - ConstString empty(""); - EXPECT_FALSE(empty == ConstString("bar")); - EXPECT_FALSE(empty == ConstString()); - EXPECT_TRUE(empty == ConstString("")); - - ConstString null; - EXPECT_FALSE(null == ConstString("bar")); - EXPECT_TRUE(null == ConstString()); - EXPECT_FALSE(null == ConstString("")); -} - -TEST(ConstStringTest, CompareStringRef) { - ConstString foo("foo"); - - EXPECT_TRUE(foo == "foo"); - EXPECT_TRUE(foo != ""); - EXPECT_FALSE(foo == static_cast(nullptr)); - EXPECT_TRUE(foo != "bar"); - - ConstString empty(""); - EXPECT_FALSE(empty == "foo"); - EXPECT_FALSE(empty != ""); - EXPECT_FALSE(empty == static_cast(nullptr)); - EXPECT_TRUE(empty != "bar"); - - ConstString null; - EXPECT_FALSE(null == "foo"); - EXPECT_TRUE(null != ""); - EXPECT_TRUE(null == static_cast(nullptr)); - EXPECT_TRUE(null != "bar"); -} - -TEST(ConstStringTest, YAML) { - std::string buffer; - llvm::raw_string_ostream os(buffer); - - // Serialize. - std::vector strings = {ConstString("foo"), ConstString("bar"), - ConstString("")}; - llvm::yaml::Output yout(os); - yout << strings; - os.flush(); - - // Deserialize. - std::vector deserialized; - llvm::yaml::Input yin(buffer); - yin >> deserialized; - - EXPECT_EQ(strings, deserialized); -} diff --git a/gnu/llvm/lldb/unittests/Utility/DataExtractorTest.cpp b/gnu/llvm/lldb/unittests/Utility/DataExtractorTest.cpp deleted file mode 100644 index 536e69755d1..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/DataExtractorTest.cpp +++ /dev/null @@ -1,403 +0,0 @@ -//===-- DataExtractorTest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/DataExtractor.h" - -using namespace lldb_private; - -TEST(DataExtractorTest, GetBitfield) { - uint8_t buffer[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}; - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, sizeof(void *)); - - lldb::offset_t offset; - - offset = 0; - ASSERT_EQ(buffer[1], LE.GetMaxU64Bitfield(&offset, sizeof(buffer), 8, 8)); - offset = 0; - ASSERT_EQ(buffer[1], BE.GetMaxU64Bitfield(&offset, sizeof(buffer), 8, 8)); - offset = 0; - ASSERT_EQ(static_cast(0xEFCDAB8967452301), - LE.GetMaxU64Bitfield(&offset, sizeof(buffer), 64, 0)); - offset = 0; - ASSERT_EQ(static_cast(0x0123456789ABCDEF), - BE.GetMaxU64Bitfield(&offset, sizeof(buffer), 64, 0)); - offset = 0; - ASSERT_EQ(static_cast(0x01234567), - BE.GetMaxU64Bitfield(&offset, sizeof(buffer), 32, 0)); - offset = 0; - ASSERT_EQ(static_cast(0x012345678), - BE.GetMaxU64Bitfield(&offset, sizeof(buffer), 36, 0)); - - offset = 0; - ASSERT_EQ(int8_t(buffer[1]), - LE.GetMaxS64Bitfield(&offset, sizeof(buffer), 8, 8)); - offset = 0; - ASSERT_EQ(int8_t(buffer[1]), - BE.GetMaxS64Bitfield(&offset, sizeof(buffer), 8, 8)); - offset = 0; - ASSERT_EQ(static_cast(0xEFCDAB8967452301), - LE.GetMaxS64Bitfield(&offset, sizeof(buffer), 64, 0)); - offset = 0; - ASSERT_EQ(static_cast(0x0123456789ABCDEF), - BE.GetMaxS64Bitfield(&offset, sizeof(buffer), 64, 0)); -} - -TEST(DataExtractorTest, PeekData) { - uint8_t buffer[] = {0x01, 0x02, 0x03, 0x04}; - DataExtractor E(buffer, sizeof buffer, lldb::eByteOrderLittle, 4); - - EXPECT_EQ(buffer + 0, E.PeekData(0, 0)); - EXPECT_EQ(buffer + 0, E.PeekData(0, 4)); - EXPECT_EQ(nullptr, E.PeekData(0, 5)); - - EXPECT_EQ(buffer + 2, E.PeekData(2, 0)); - EXPECT_EQ(buffer + 2, E.PeekData(2, 2)); - EXPECT_EQ(nullptr, E.PeekData(2, 3)); - - EXPECT_EQ(buffer + 4, E.PeekData(4, 0)); - EXPECT_EQ(nullptr, E.PeekData(4, 1)); -} - -TEST(DataExtractorTest, GetCStr) { - uint8_t buffer[] = {'X', 'f', 'o', 'o', '\0'}; - DataExtractor E(buffer, sizeof buffer, lldb::eByteOrderLittle, 4); - - lldb::offset_t offset = 1; - EXPECT_STREQ("foo", E.GetCStr(&offset)); - EXPECT_EQ(5U, offset); -} - -TEST(DataExtractorTest, GetCStrEmpty) { - uint8_t buffer[] = {'X', '\0'}; - DataExtractor E(buffer, sizeof buffer, lldb::eByteOrderLittle, 4); - - lldb::offset_t offset = 1; - EXPECT_STREQ("", E.GetCStr(&offset)); - EXPECT_EQ(2U, offset); -} - -TEST(DataExtractorTest, GetCStrUnterminated) { - uint8_t buffer[] = {'X', 'f', 'o', 'o'}; - DataExtractor E(buffer, sizeof buffer, lldb::eByteOrderLittle, 4); - - lldb::offset_t offset = 1; - EXPECT_EQ(nullptr, E.GetCStr(&offset)); - EXPECT_EQ(1U, offset); -} - -TEST(DataExtractorTest, GetCStrAtEnd) { - uint8_t buffer[] = {'X'}; - DataExtractor E(buffer, sizeof buffer, lldb::eByteOrderLittle, 4); - - lldb::offset_t offset = 1; - EXPECT_EQ(nullptr, E.GetCStr(&offset)); - EXPECT_EQ(1U, offset); -} - -TEST(DataExtractorTest, GetCStrAtNullOffset) { - uint8_t buffer[] = {'f', 'o', 'o', '\0'}; - DataExtractor E(buffer, sizeof buffer, lldb::eByteOrderLittle, 4); - - lldb::offset_t offset = 0; - EXPECT_STREQ("foo", E.GetCStr(&offset)); - EXPECT_EQ(4U, offset); -} - -TEST(DataExtractorTest, UncommonAddressSize) { - uint8_t buffer[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}; - DataExtractor E2(buffer, sizeof buffer, lldb::eByteOrderLittle, 2); - DataExtractor E5(buffer, sizeof buffer, lldb::eByteOrderLittle, 5); - DataExtractor E7(buffer, sizeof buffer, lldb::eByteOrderLittle, 7); - - lldb::offset_t offset; - - // Test 2-byte addresses (for AVR). - offset = 0; - EXPECT_EQ(0x0201U, E2.GetMaxU64(&offset, 2)); - EXPECT_EQ(2U, offset); - offset = 0; - EXPECT_EQ(0x0201U, E2.GetAddress(&offset)); - EXPECT_EQ(2U, offset); - - // Test 5-byte addresses. - offset = 0; - EXPECT_EQ(0x030201U, E5.GetMaxU64(&offset, 3)); - EXPECT_EQ(3U, offset); - offset = 3; - EXPECT_EQ(0x0807060504U, E5.GetAddress(&offset)); - EXPECT_EQ(8U, offset); - - // Test 7-byte addresses. - offset = 0; - EXPECT_EQ(0x0504030201U, E7.GetMaxU64(&offset, 5)); - EXPECT_EQ(5U, offset); - offset = 0; - EXPECT_EQ(0x07060504030201U, E7.GetAddress(&offset)); - EXPECT_EQ(7U, offset); -} - -TEST(DataExtractorTest, GetMaxU64) { - uint8_t buffer[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}; - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, sizeof(void *)); - - lldb::offset_t offset; - - // Check with the minimum allowed byte size. - offset = 0; - EXPECT_EQ(0x01U, LE.GetMaxU64(&offset, 1)); - EXPECT_EQ(1U, offset); - offset = 0; - EXPECT_EQ(0x01U, BE.GetMaxU64(&offset, 1)); - EXPECT_EQ(1U, offset); - - // Check with a non-zero offset. - offset = 1; - EXPECT_EQ(0x0302U, LE.GetMaxU64(&offset, 2)); - EXPECT_EQ(3U, offset); - offset = 1; - EXPECT_EQ(0x0203U, BE.GetMaxU64(&offset, 2)); - EXPECT_EQ(3U, offset); - - // Check with the byte size not being a multiple of 2. - offset = 0; - EXPECT_EQ(0x07060504030201U, LE.GetMaxU64(&offset, 7)); - EXPECT_EQ(7U, offset); - offset = 0; - EXPECT_EQ(0x01020304050607U, BE.GetMaxU64(&offset, 7)); - EXPECT_EQ(7U, offset); - - // Check with the maximum allowed byte size. - offset = 0; - EXPECT_EQ(0x0807060504030201U, LE.GetMaxU64(&offset, 8)); - EXPECT_EQ(8U, offset); - offset = 0; - EXPECT_EQ(0x0102030405060708U, BE.GetMaxU64(&offset, 8)); - EXPECT_EQ(8U, offset); -} - -TEST(DataExtractorTest, GetMaxS64) { - uint8_t buffer[] = {0x01, 0x02, 0x83, 0x04, 0x05, 0x06, 0x07, 0x08}; - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, sizeof(void *)); - - lldb::offset_t offset; - - // Check with the minimum allowed byte size. - offset = 0; - EXPECT_EQ(0x01, LE.GetMaxS64(&offset, 1)); - EXPECT_EQ(1U, offset); - offset = 0; - EXPECT_EQ(0x01, BE.GetMaxS64(&offset, 1)); - EXPECT_EQ(1U, offset); - - // Check that sign extension works correctly. - offset = 0; - int64_t value = LE.GetMaxS64(&offset, 3); - EXPECT_EQ(0xffffffffff830201U, *reinterpret_cast(&value)); - EXPECT_EQ(3U, offset); - offset = 2; - value = BE.GetMaxS64(&offset, 3); - EXPECT_EQ(0xffffffffff830405U, *reinterpret_cast(&value)); - EXPECT_EQ(5U, offset); - - // Check with the maximum allowed byte size. - offset = 0; - EXPECT_EQ(0x0807060504830201, LE.GetMaxS64(&offset, 8)); - EXPECT_EQ(8U, offset); - offset = 0; - EXPECT_EQ(0x0102830405060708, BE.GetMaxS64(&offset, 8)); - EXPECT_EQ(8U, offset); -} - -TEST(DataExtractorTest, GetMaxU64_unchecked) { - uint8_t buffer[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}; - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, sizeof(void *)); - - lldb::offset_t offset; - - // Check with the minimum allowed byte size. - offset = 0; - EXPECT_EQ(0x01U, LE.GetMaxU64_unchecked(&offset, 1)); - EXPECT_EQ(1U, offset); - offset = 0; - EXPECT_EQ(0x01U, BE.GetMaxU64_unchecked(&offset, 1)); - EXPECT_EQ(1U, offset); - - // Check with a non-zero offset. - offset = 1; - EXPECT_EQ(0x0302U, LE.GetMaxU64_unchecked(&offset, 2)); - EXPECT_EQ(3U, offset); - offset = 1; - EXPECT_EQ(0x0203U, BE.GetMaxU64_unchecked(&offset, 2)); - EXPECT_EQ(3U, offset); - - // Check with the byte size not being a multiple of 2. - offset = 0; - EXPECT_EQ(0x07060504030201U, LE.GetMaxU64_unchecked(&offset, 7)); - EXPECT_EQ(7U, offset); - offset = 0; - EXPECT_EQ(0x01020304050607U, BE.GetMaxU64_unchecked(&offset, 7)); - EXPECT_EQ(7U, offset); - - // Check with the maximum allowed byte size. - offset = 0; - EXPECT_EQ(0x0807060504030201U, LE.GetMaxU64_unchecked(&offset, 8)); - EXPECT_EQ(8U, offset); - offset = 0; - EXPECT_EQ(0x0102030405060708U, BE.GetMaxU64_unchecked(&offset, 8)); - EXPECT_EQ(8U, offset); -} - -TEST(DataExtractorTest, GetSLEB128_bit63) { - uint8_t buffer[] = {0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0x7f}; - - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, sizeof(void *)); - - lldb::offset_t offset; - - int64_t expected = - 0b1111111100000001111111000000011111110000000111111100000001111111; - offset = 0; - EXPECT_EQ(expected, LE.GetSLEB128(&offset)); - EXPECT_EQ(9U, offset); - offset = 0; - EXPECT_EQ(expected, BE.GetSLEB128(&offset)); - EXPECT_EQ(9U, offset); -} - -TEST(DataExtractorTest, GetULEB128_bit63) { - uint8_t buffer[] = {0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0x7f}; - - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, sizeof(void *)); - - lldb::offset_t offset; - - uint64_t expected = - 0b0111111100000001111111000000011111110000000111111100000001111111; - offset = 0; - EXPECT_EQ(expected, LE.GetULEB128(&offset)); - EXPECT_EQ(9U, offset); - offset = 0; - EXPECT_EQ(expected, BE.GetULEB128(&offset)); - EXPECT_EQ(9U, offset); -} - -TEST(DataExtractorTest, GetFloat) { - float expected = 4.0f; - lldb::offset_t offset; - - { - uint8_t buffer[] = {0x00, 0x00, 0x80, 0x40}; - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - - offset = 0; - EXPECT_DOUBLE_EQ(expected, LE.GetFloat(&offset)); - EXPECT_EQ(4U, offset); - } - - { - uint8_t buffer[] = {0x40, 0x80, 0x00, 0x00}; - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, - sizeof(void *)); - offset = 0; - EXPECT_DOUBLE_EQ(expected, BE.GetFloat(&offset)); - EXPECT_EQ(4U, offset); - } -} - -TEST(DataExtractorTest, GetFloatUnaligned) { - float expected = 4.0f; - lldb::offset_t offset; - - { - uint8_t buffer[] = {0x00, 0x00, 0x00, 0x80, 0x40}; - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - - offset = 1; - EXPECT_DOUBLE_EQ(expected, LE.GetFloat(&offset)); - EXPECT_EQ(5U, offset); - } - - { - uint8_t buffer[] = {0x00, 0x40, 0x80, 0x00, 0x00}; - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, - sizeof(void *)); - offset = 1; - EXPECT_DOUBLE_EQ(expected, BE.GetFloat(&offset)); - EXPECT_EQ(5U, offset); - } -} - -TEST(DataExtractorTest, GetDouble) { - if (sizeof(double) != 8) - return; - - double expected = 4.0f; - lldb::offset_t offset; - - { - uint8_t buffer[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40}; - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - - offset = 0; - EXPECT_DOUBLE_EQ(expected, LE.GetDouble(&offset)); - EXPECT_EQ(8U, offset); - } - - { - uint8_t buffer[] = {0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, - sizeof(void *)); - offset = 0; - EXPECT_DOUBLE_EQ(expected, BE.GetDouble(&offset)); - EXPECT_EQ(8U, offset); - } -} - -TEST(DataExtractorTest, GetDoubleUnaligned) { - if (sizeof(double) != 8) - return; - - float expected = 4.0f; - lldb::offset_t offset; - - { - uint8_t buffer[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40}; - DataExtractor LE(buffer, sizeof(buffer), lldb::eByteOrderLittle, - sizeof(void *)); - - offset = 1; - EXPECT_DOUBLE_EQ(expected, LE.GetDouble(&offset)); - EXPECT_EQ(9U, offset); - } - - { - uint8_t buffer[] = {0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - DataExtractor BE(buffer, sizeof(buffer), lldb::eByteOrderBig, - sizeof(void *)); - offset = 1; - EXPECT_DOUBLE_EQ(expected, BE.GetDouble(&offset)); - EXPECT_EQ(9U, offset); - } -} diff --git a/gnu/llvm/lldb/unittests/Utility/EnvironmentTest.cpp b/gnu/llvm/lldb/unittests/Utility/EnvironmentTest.cpp deleted file mode 100644 index bbc9b124564..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/EnvironmentTest.cpp +++ /dev/null @@ -1,48 +0,0 @@ -//===-- EnvironmentTest.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/Environment.h" - -using namespace lldb_private; - -TEST(EnvironmentTest, EnvpConstruction) { - const char **Envp1 = nullptr; - EXPECT_EQ(0u, Environment(Envp1).size()); - - const char *Envp2[] = {"FOO=BAR", nullptr}; - EXPECT_EQ("BAR", Environment(Envp2).lookup("FOO")); - - const char *Envp3[] = {"FOO=BAR", "FOO=BAZ", nullptr}; - EXPECT_EQ("BAR", Environment(Envp3).lookup("FOO")); - - const char *Envp4[] = {"FOO=", "BAR", nullptr}; - Environment Env4(Envp4); - ASSERT_EQ(2u, Env4.size()); - EXPECT_EQ("", Environment(Envp4).find("FOO")->second); - EXPECT_EQ("", Environment(Envp4).find("BAR")->second); - - const char *Envp5[] = {"FOO=BAR=BAZ", nullptr}; - EXPECT_EQ("BAR=BAZ", Environment(Envp5).lookup("FOO")); -} - -TEST(EnvironmentTest, EnvpConversion) { - std::string FOO_EQ_BAR("FOO=BAR"); - std::string BAR_EQ_BAZ("BAR=BAZ"); - - Environment Env; - Env.insert(FOO_EQ_BAR); - Env.insert(BAR_EQ_BAZ); - Environment::Envp Envp = Env.getEnvp(); - const char *const *Envp_ = Envp; - - EXPECT_TRUE(FOO_EQ_BAR == Envp_[0] || FOO_EQ_BAR == Envp_[1]); - EXPECT_TRUE(BAR_EQ_BAZ == Envp_[0] || BAR_EQ_BAZ == Envp_[1]); - EXPECT_EQ(nullptr, Envp_[2]); -} diff --git a/gnu/llvm/lldb/unittests/Utility/EventTest.cpp b/gnu/llvm/lldb/unittests/Utility/EventTest.cpp deleted file mode 100644 index 5f8f2b5ec89..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/EventTest.cpp +++ /dev/null @@ -1,24 +0,0 @@ -//===-- EventTest.cpp -----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/Event.h" -#include "lldb/Utility/StreamString.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -static std::string to_string(const EventDataBytes &E) { - StreamString S; - E.Dump(&S); - return std::string(S.GetString()); -} - -TEST(EventTest, DumpEventDataBytes) { - EXPECT_EQ(R"("foo")", to_string(EventDataBytes("foo"))); - EXPECT_EQ("01 02 03", to_string(EventDataBytes("\x01\x02\x03"))); -} diff --git a/gnu/llvm/lldb/unittests/Utility/FileSpecTest.cpp b/gnu/llvm/lldb/unittests/Utility/FileSpecTest.cpp deleted file mode 100644 index 3dd355284ce..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/FileSpecTest.cpp +++ /dev/null @@ -1,447 +0,0 @@ -//===-- FileSpecTest.cpp --------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/FileSpec.h" - -using namespace lldb_private; - -static FileSpec PosixSpec(llvm::StringRef path) { - return FileSpec(path, FileSpec::Style::posix); -} - -static FileSpec WindowsSpec(llvm::StringRef path) { - return FileSpec(path, FileSpec::Style::windows); -} - -TEST(FileSpecTest, FileAndDirectoryComponents) { - FileSpec fs_posix("/foo/bar", FileSpec::Style::posix); - EXPECT_STREQ("/foo/bar", fs_posix.GetCString()); - EXPECT_STREQ("/foo", fs_posix.GetDirectory().GetCString()); - EXPECT_STREQ("bar", fs_posix.GetFilename().GetCString()); - - FileSpec fs_windows("F:\\bar", FileSpec::Style::windows); - EXPECT_STREQ("F:\\bar", fs_windows.GetCString()); - // EXPECT_STREQ("F:\\", fs_windows.GetDirectory().GetCString()); // It returns - // "F:/" - EXPECT_STREQ("bar", fs_windows.GetFilename().GetCString()); - - FileSpec fs_posix_root("/", FileSpec::Style::posix); - EXPECT_STREQ("/", fs_posix_root.GetCString()); - EXPECT_EQ(nullptr, fs_posix_root.GetDirectory().GetCString()); - EXPECT_STREQ("/", fs_posix_root.GetFilename().GetCString()); - - FileSpec fs_net_drive("//net", FileSpec::Style::posix); - EXPECT_STREQ("//net", fs_net_drive.GetCString()); - EXPECT_EQ(nullptr, fs_net_drive.GetDirectory().GetCString()); - EXPECT_STREQ("//net", fs_net_drive.GetFilename().GetCString()); - - FileSpec fs_net_root("//net/", FileSpec::Style::posix); - EXPECT_STREQ("//net/", fs_net_root.GetCString()); - EXPECT_STREQ("//net", fs_net_root.GetDirectory().GetCString()); - EXPECT_STREQ("/", fs_net_root.GetFilename().GetCString()); - - FileSpec fs_windows_drive("F:", FileSpec::Style::windows); - EXPECT_STREQ("F:", fs_windows_drive.GetCString()); - EXPECT_EQ(nullptr, fs_windows_drive.GetDirectory().GetCString()); - EXPECT_STREQ("F:", fs_windows_drive.GetFilename().GetCString()); - - FileSpec fs_windows_root("F:\\", FileSpec::Style::windows); - EXPECT_STREQ("F:\\", fs_windows_root.GetCString()); - EXPECT_STREQ("F:", fs_windows_root.GetDirectory().GetCString()); - // EXPECT_STREQ("\\", fs_windows_root.GetFilename().GetCString()); // It - // returns "/" - - FileSpec fs_posix_long("/foo/bar/baz", FileSpec::Style::posix); - EXPECT_STREQ("/foo/bar/baz", fs_posix_long.GetCString()); - EXPECT_STREQ("/foo/bar", fs_posix_long.GetDirectory().GetCString()); - EXPECT_STREQ("baz", fs_posix_long.GetFilename().GetCString()); - - FileSpec fs_windows_long("F:\\bar\\baz", FileSpec::Style::windows); - EXPECT_STREQ("F:\\bar\\baz", fs_windows_long.GetCString()); - // EXPECT_STREQ("F:\\bar", fs_windows_long.GetDirectory().GetCString()); // It - // returns "F:/bar" - EXPECT_STREQ("baz", fs_windows_long.GetFilename().GetCString()); - - FileSpec fs_posix_trailing_slash("/foo/bar/", FileSpec::Style::posix); - EXPECT_STREQ("/foo/bar", fs_posix_trailing_slash.GetCString()); - EXPECT_STREQ("/foo", fs_posix_trailing_slash.GetDirectory().GetCString()); - EXPECT_STREQ("bar", fs_posix_trailing_slash.GetFilename().GetCString()); - - FileSpec fs_windows_trailing_slash("F:\\bar\\", FileSpec::Style::windows); - EXPECT_STREQ("F:\\bar", fs_windows_trailing_slash.GetCString()); - EXPECT_STREQ("bar", fs_windows_trailing_slash.GetFilename().GetCString()); -} - -TEST(FileSpecTest, AppendPathComponent) { - FileSpec fs_posix("/foo", FileSpec::Style::posix); - fs_posix.AppendPathComponent("bar"); - EXPECT_STREQ("/foo/bar", fs_posix.GetCString()); - EXPECT_STREQ("/foo", fs_posix.GetDirectory().GetCString()); - EXPECT_STREQ("bar", fs_posix.GetFilename().GetCString()); - - FileSpec fs_posix_2("/foo", FileSpec::Style::posix); - fs_posix_2.AppendPathComponent("//bar/baz"); - EXPECT_STREQ("/foo/bar/baz", fs_posix_2.GetCString()); - EXPECT_STREQ("/foo/bar", fs_posix_2.GetDirectory().GetCString()); - EXPECT_STREQ("baz", fs_posix_2.GetFilename().GetCString()); - - FileSpec fs_windows("F:\\bar", FileSpec::Style::windows); - fs_windows.AppendPathComponent("baz"); - EXPECT_STREQ("F:\\bar\\baz", fs_windows.GetCString()); - // EXPECT_STREQ("F:\\bar", fs_windows.GetDirectory().GetCString()); // It - // returns "F:/bar" - EXPECT_STREQ("baz", fs_windows.GetFilename().GetCString()); - - FileSpec fs_posix_root("/", FileSpec::Style::posix); - fs_posix_root.AppendPathComponent("bar"); - EXPECT_STREQ("/bar", fs_posix_root.GetCString()); - EXPECT_STREQ("/", fs_posix_root.GetDirectory().GetCString()); - EXPECT_STREQ("bar", fs_posix_root.GetFilename().GetCString()); - - FileSpec fs_windows_root("F:\\", FileSpec::Style::windows); - fs_windows_root.AppendPathComponent("bar"); - EXPECT_STREQ("F:\\bar", fs_windows_root.GetCString()); - // EXPECT_STREQ("F:\\", fs_windows_root.GetDirectory().GetCString()); // It - // returns "F:/" - EXPECT_STREQ("bar", fs_windows_root.GetFilename().GetCString()); -} - -TEST(FileSpecTest, CopyByAppendingPathComponent) { - FileSpec fs = PosixSpec("/foo").CopyByAppendingPathComponent("bar"); - EXPECT_STREQ("/foo/bar", fs.GetCString()); - EXPECT_STREQ("/foo", fs.GetDirectory().GetCString()); - EXPECT_STREQ("bar", fs.GetFilename().GetCString()); -} - -TEST(FileSpecTest, PrependPathComponent) { - FileSpec fs_posix("foo", FileSpec::Style::posix); - fs_posix.PrependPathComponent("/bar"); - EXPECT_STREQ("/bar/foo", fs_posix.GetCString()); - - FileSpec fs_posix_2("foo/bar", FileSpec::Style::posix); - fs_posix_2.PrependPathComponent("/baz"); - EXPECT_STREQ("/baz/foo/bar", fs_posix_2.GetCString()); - - FileSpec fs_windows("baz", FileSpec::Style::windows); - fs_windows.PrependPathComponent("F:\\bar"); - EXPECT_STREQ("F:\\bar\\baz", fs_windows.GetCString()); - - FileSpec fs_posix_root("bar", FileSpec::Style::posix); - fs_posix_root.PrependPathComponent("/"); - EXPECT_STREQ("/bar", fs_posix_root.GetCString()); - - FileSpec fs_windows_root("bar", FileSpec::Style::windows); - fs_windows_root.PrependPathComponent("F:\\"); - EXPECT_STREQ("F:\\bar", fs_windows_root.GetCString()); -} - -TEST(FileSpecTest, EqualSeparator) { - EXPECT_EQ(WindowsSpec("C:\\foo\\bar"), WindowsSpec("C:/foo/bar")); -} - -TEST(FileSpecTest, EqualDotsWindows) { - std::pair tests[] = { - {R"(C:\foo\bar\baz)", R"(C:\foo\foo\..\bar\baz)"}, - {R"(C:\bar\baz)", R"(C:\foo\..\bar\baz)"}, - {R"(C:\bar\baz)", R"(C:/foo/../bar/baz)"}, - {R"(C:/bar/baz)", R"(C:\foo\..\bar\baz)"}, - {R"(C:\bar)", R"(C:\foo\..\bar)"}, - {R"(C:\foo\bar)", R"(C:\foo\.\bar)"}, - {R"(C:\foo\bar)", R"(C:\foo\bar\.)"}, - }; - - for (const auto &test : tests) { - SCOPED_TRACE(llvm::Twine(test.first) + " <=> " + test.second); - EXPECT_EQ(WindowsSpec(test.first), WindowsSpec(test.second)); - } -} - -TEST(FileSpecTest, EqualDotsPosix) { - std::pair tests[] = { - {R"(/foo/bar/baz)", R"(/foo/foo/../bar/baz)"}, - {R"(/bar/baz)", R"(/foo/../bar/baz)"}, - {R"(/bar)", R"(/foo/../bar)"}, - {R"(/foo/bar)", R"(/foo/./bar)"}, - {R"(/foo/bar)", R"(/foo/bar/.)"}, - }; - - for (const auto &test : tests) { - SCOPED_TRACE(llvm::Twine(test.first) + " <=> " + test.second); - EXPECT_EQ(PosixSpec(test.first), PosixSpec(test.second)); - } -} - -TEST(FileSpecTest, EqualDotsPosixRoot) { - std::pair tests[] = { - {R"(/)", R"(/..)"}, - {R"(/)", R"(/.)"}, - {R"(/)", R"(/foo/..)"}, - }; - - for (const auto &test : tests) { - SCOPED_TRACE(llvm::Twine(test.first) + " <=> " + test.second); - EXPECT_EQ(PosixSpec(test.first), PosixSpec(test.second)); - } -} - -TEST(FileSpecTest, GuessPathStyle) { - EXPECT_EQ(FileSpec::Style::posix, FileSpec::GuessPathStyle("/foo/bar.txt")); - EXPECT_EQ(FileSpec::Style::posix, FileSpec::GuessPathStyle("//net/bar.txt")); - EXPECT_EQ(FileSpec::Style::windows, - FileSpec::GuessPathStyle(R"(C:\foo.txt)")); - EXPECT_EQ(FileSpec::Style::windows, - FileSpec::GuessPathStyle(R"(\\net\foo.txt)")); - EXPECT_EQ(llvm::None, FileSpec::GuessPathStyle("foo.txt")); - EXPECT_EQ(llvm::None, FileSpec::GuessPathStyle("foo/bar.txt")); -} - -TEST(FileSpecTest, GetPath) { - std::pair posix_tests[] = { - {"/foo/.././bar", "/bar"}, - {"/foo/./../bar", "/bar"}, - {"/foo/../bar", "/bar"}, - {"/foo/./bar", "/foo/bar"}, - {"/foo/..", "/"}, - {"/foo/.", "/foo"}, - {"/foo//bar", "/foo/bar"}, - {"/foo//bar/baz", "/foo/bar/baz"}, - {"/foo//bar/./baz", "/foo/bar/baz"}, - {"/./foo", "/foo"}, - {"/", "/"}, - {"//", "/"}, - {"//net", "//net"}, - {"/..", "/"}, - {"/.", "/"}, - {"..", ".."}, - {".", "."}, - {"../..", "../.."}, - {"foo/..", "."}, - {"foo/../bar", "bar"}, - {"../foo/..", ".."}, - {"./foo", "foo"}, - {"././foo", "foo"}, - {"../foo", "../foo"}, - {"../../foo", "../../foo"}, - }; - for (auto test : posix_tests) { - SCOPED_TRACE(llvm::Twine("test.first = ") + test.first); - EXPECT_EQ(test.second, PosixSpec(test.first).GetPath()); - } - - std::pair windows_tests[] = { - {R"(c:\bar\..\bar)", R"(c:\bar)"}, - {R"(c:\bar\.\bar)", R"(c:\bar\bar)"}, - {R"(c:\bar\..)", R"(c:\)"}, - {R"(c:\bar\.)", R"(c:\bar)"}, - {R"(c:\.\bar)", R"(c:\bar)"}, - {R"(\)", R"(\)"}, - {R"(\\)", R"(\)"}, - {R"(\\net)", R"(\\net)"}, - {R"(c:\..)", R"(c:\)"}, - {R"(c:\.)", R"(c:\)"}, - {R"(\..)", R"(\)"}, - // {R"(c:..)", R"(c:..)"}, - {R"(..)", R"(..)"}, - {R"(.)", R"(.)"}, - {R"(c:..\..)", R"(c:)"}, - {R"(..\..)", R"(..\..)"}, - {R"(foo\..)", R"(.)"}, - {R"(foo\..\bar)", R"(bar)"}, - {R"(..\foo\..)", R"(..)"}, - {R"(.\foo)", R"(foo)"}, - {R"(.\.\foo)", R"(foo)"}, - {R"(..\foo)", R"(..\foo)"}, - {R"(..\..\foo)", R"(..\..\foo)"}, - }; - for (auto test : windows_tests) { - SCOPED_TRACE(llvm::Twine("test.first = ") + test.first); - EXPECT_EQ(test.second, WindowsSpec(test.first).GetPath()); - } -} - -TEST(FileSpecTest, FormatFileSpec) { - auto win = FileSpec::Style::windows; - - FileSpec F; - EXPECT_EQ("(empty)", llvm::formatv("{0}", F).str()); - EXPECT_EQ("(empty)", llvm::formatv("{0:D}", F).str()); - EXPECT_EQ("(empty)", llvm::formatv("{0:F}", F).str()); - - F = FileSpec("C:\\foo\\bar.txt", win); - EXPECT_EQ("C:\\foo\\bar.txt", llvm::formatv("{0}", F).str()); - EXPECT_EQ("C:\\foo\\", llvm::formatv("{0:D}", F).str()); - EXPECT_EQ("bar.txt", llvm::formatv("{0:F}", F).str()); - - F = FileSpec("foo\\bar.txt", win); - EXPECT_EQ("foo\\bar.txt", llvm::formatv("{0}", F).str()); - EXPECT_EQ("foo\\", llvm::formatv("{0:D}", F).str()); - EXPECT_EQ("bar.txt", llvm::formatv("{0:F}", F).str()); - - F = FileSpec("foo", win); - EXPECT_EQ("foo", llvm::formatv("{0}", F).str()); - EXPECT_EQ("foo", llvm::formatv("{0:F}", F).str()); - EXPECT_EQ("(empty)", llvm::formatv("{0:D}", F).str()); -} - -TEST(FileSpecTest, IsRelative) { - llvm::StringRef not_relative[] = { - "/", - "/a", - "/a/", - "/a/b", - "/a/b/", - "//", - "//a/", - "//a/b", - "//a/b/", - "~", - "~/", - "~/a", - "~/a/", - "~/a/b", - "~/a/b/", - "/foo/.", - "/foo/..", - "/foo/../", - "/foo/../.", - }; - for (const auto &path: not_relative) { - SCOPED_TRACE(path); - EXPECT_FALSE(PosixSpec(path).IsRelative()); - } - llvm::StringRef is_relative[] = { - ".", - "./", - ".///", - "a", - "./a", - "./a/", - "./a/", - "./a/b", - "./a/b/", - "../foo", - "foo/bar.c", - "./foo/bar.c" - }; - for (const auto &path: is_relative) { - SCOPED_TRACE(path); - EXPECT_TRUE(PosixSpec(path).IsRelative()); - } -} - -TEST(FileSpecTest, RemoveLastPathComponent) { - FileSpec fs_posix("/foo/bar/baz", FileSpec::Style::posix); - EXPECT_STREQ("/foo/bar/baz", fs_posix.GetCString()); - EXPECT_TRUE(fs_posix.RemoveLastPathComponent()); - EXPECT_STREQ("/foo/bar", fs_posix.GetCString()); - EXPECT_TRUE(fs_posix.RemoveLastPathComponent()); - EXPECT_STREQ("/foo", fs_posix.GetCString()); - EXPECT_TRUE(fs_posix.RemoveLastPathComponent()); - EXPECT_STREQ("/", fs_posix.GetCString()); - EXPECT_FALSE(fs_posix.RemoveLastPathComponent()); - EXPECT_STREQ("/", fs_posix.GetCString()); - - FileSpec fs_posix_relative("./foo/bar/baz", FileSpec::Style::posix); - EXPECT_STREQ("foo/bar/baz", fs_posix_relative.GetCString()); - EXPECT_TRUE(fs_posix_relative.RemoveLastPathComponent()); - EXPECT_STREQ("foo/bar", fs_posix_relative.GetCString()); - EXPECT_TRUE(fs_posix_relative.RemoveLastPathComponent()); - EXPECT_STREQ("foo", fs_posix_relative.GetCString()); - EXPECT_FALSE(fs_posix_relative.RemoveLastPathComponent()); - EXPECT_STREQ("foo", fs_posix_relative.GetCString()); - - FileSpec fs_posix_relative2("./", FileSpec::Style::posix); - EXPECT_STREQ(".", fs_posix_relative2.GetCString()); - EXPECT_FALSE(fs_posix_relative2.RemoveLastPathComponent()); - EXPECT_STREQ(".", fs_posix_relative2.GetCString()); - EXPECT_FALSE(fs_posix_relative.RemoveLastPathComponent()); - EXPECT_STREQ(".", fs_posix_relative2.GetCString()); - - FileSpec fs_windows("C:\\foo\\bar\\baz", FileSpec::Style::windows); - EXPECT_STREQ("C:\\foo\\bar\\baz", fs_windows.GetCString()); - EXPECT_TRUE(fs_windows.RemoveLastPathComponent()); - EXPECT_STREQ("C:\\foo\\bar", fs_windows.GetCString()); - EXPECT_TRUE(fs_windows.RemoveLastPathComponent()); - EXPECT_STREQ("C:\\foo", fs_windows.GetCString()); - EXPECT_TRUE(fs_windows.RemoveLastPathComponent()); - EXPECT_STREQ("C:\\", fs_windows.GetCString()); - EXPECT_TRUE(fs_windows.RemoveLastPathComponent()); - EXPECT_STREQ("C:", fs_windows.GetCString()); - EXPECT_FALSE(fs_windows.RemoveLastPathComponent()); - EXPECT_STREQ("C:", fs_windows.GetCString()); -} - -TEST(FileSpecTest, Equal) { - auto Eq = [](const char *a, const char *b, bool full) { - return FileSpec::Equal(PosixSpec(a), PosixSpec(b), full); - }; - EXPECT_TRUE(Eq("/foo/bar", "/foo/bar", true)); - EXPECT_TRUE(Eq("/foo/bar", "/foo/bar", false)); - - EXPECT_FALSE(Eq("/foo/bar", "/foo/baz", true)); - EXPECT_FALSE(Eq("/foo/bar", "/foo/baz", false)); - - EXPECT_FALSE(Eq("/bar/foo", "/baz/foo", true)); - EXPECT_FALSE(Eq("/bar/foo", "/baz/foo", false)); - - EXPECT_FALSE(Eq("/bar/foo", "foo", true)); - EXPECT_TRUE(Eq("/bar/foo", "foo", false)); - - EXPECT_FALSE(Eq("foo", "/bar/foo", true)); - EXPECT_TRUE(Eq("foo", "/bar/foo", false)); -} - -TEST(FileSpecTest, Match) { - auto Match = [](const char *pattern, const char *file) { - return FileSpec::Match(PosixSpec(pattern), PosixSpec(file)); - }; - EXPECT_TRUE(Match("/foo/bar", "/foo/bar")); - EXPECT_FALSE(Match("/foo/bar", "/oof/bar")); - EXPECT_FALSE(Match("/foo/bar", "/foo/baz")); - EXPECT_FALSE(Match("/foo/bar", "bar")); - EXPECT_FALSE(Match("/foo/bar", "")); - - EXPECT_TRUE(Match("bar", "/foo/bar")); - EXPECT_FALSE(Match("bar", "/foo/baz")); - EXPECT_TRUE(Match("bar", "bar")); - EXPECT_FALSE(Match("bar", "baz")); - EXPECT_FALSE(Match("bar", "")); - - EXPECT_TRUE(Match("", "/foo/bar")); - EXPECT_TRUE(Match("", "")); - -} - -TEST(FileSpecTest, Yaml) { - std::string buffer; - llvm::raw_string_ostream os(buffer); - - // Serialize. - FileSpec fs_windows("F:\\bar", FileSpec::Style::windows); - llvm::yaml::Output yout(os); - yout << fs_windows; - os.flush(); - - // Deserialize. - FileSpec deserialized; - llvm::yaml::Input yin(buffer); - yin >> deserialized; - - EXPECT_EQ(deserialized.GetPathStyle(), fs_windows.GetPathStyle()); - EXPECT_EQ(deserialized.GetFilename(), fs_windows.GetFilename()); - EXPECT_EQ(deserialized.GetDirectory(), fs_windows.GetDirectory()); - EXPECT_EQ(deserialized, fs_windows); -} - -TEST(FileSpecTest, OperatorBool) { - EXPECT_FALSE(FileSpec()); - EXPECT_FALSE(FileSpec("")); - EXPECT_TRUE(FileSpec("/foo/bar")); -} diff --git a/gnu/llvm/lldb/unittests/Utility/FlagsTest.cpp b/gnu/llvm/lldb/unittests/Utility/FlagsTest.cpp deleted file mode 100644 index c33a19547a6..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/FlagsTest.cpp +++ /dev/null @@ -1,163 +0,0 @@ -//===-- FlagsTest.cpp -----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/Flags.h" - -using namespace lldb_private; - -enum DummyFlags { - eFlag0 = 1 << 0, - eFlag1 = 1 << 1, - eFlag2 = 1 << 2, - eAllFlags = (eFlag0 | eFlag1 | eFlag2) -}; - -TEST(Flags, GetBitSize) { - Flags f; - // Methods like ClearCount depend on this specific value, so we test - // against it here. - EXPECT_EQ(32U, f.GetBitSize()); -} - -TEST(Flags, Reset) { - Flags f; - f.Reset(0x3); - EXPECT_EQ(0x3U, f.Get()); -} - -TEST(Flags, Clear) { - Flags f; - f.Reset(0x3); - EXPECT_EQ(0x3U, f.Get()); - - f.Clear(0x5); - EXPECT_EQ(0x2U, f.Get()); - - f.Clear(); - EXPECT_EQ(0x0U, f.Get()); -} - -TEST(Flags, AllSet) { - Flags f; - - EXPECT_FALSE(f.AllSet(eFlag0 | eFlag1)); - - f.Set(eFlag0); - EXPECT_FALSE(f.AllSet(eFlag0 | eFlag1)); - - f.Set(eFlag1); - EXPECT_TRUE(f.AllSet(eFlag0 | eFlag1)); - - f.Clear(eFlag1); - EXPECT_FALSE(f.AllSet(eFlag0 | eFlag1)); - - f.Clear(eFlag0); - EXPECT_FALSE(f.AllSet(eFlag0 | eFlag1)); -} - -TEST(Flags, AnySet) { - Flags f; - - EXPECT_FALSE(f.AnySet(eFlag0 | eFlag1)); - - f.Set(eFlag0); - EXPECT_TRUE(f.AnySet(eFlag0 | eFlag1)); - - f.Set(eFlag1); - EXPECT_TRUE(f.AnySet(eFlag0 | eFlag1)); - - f.Clear(eFlag1); - EXPECT_TRUE(f.AnySet(eFlag0 | eFlag1)); - - f.Clear(eFlag0); - EXPECT_FALSE(f.AnySet(eFlag0 | eFlag1)); -} - -TEST(Flags, Test) { - Flags f; - - EXPECT_FALSE(f.Test(eFlag0)); - EXPECT_FALSE(f.Test(eFlag1)); - EXPECT_FALSE(f.Test(eFlag2)); - - f.Set(eFlag0); - EXPECT_TRUE(f.Test(eFlag0)); - EXPECT_FALSE(f.Test(eFlag1)); - EXPECT_FALSE(f.Test(eFlag2)); - - f.Set(eFlag1); - EXPECT_TRUE(f.Test(eFlag0)); - EXPECT_TRUE(f.Test(eFlag1)); - EXPECT_FALSE(f.Test(eFlag2)); - - f.Clear(eFlag0); - EXPECT_FALSE(f.Test(eFlag0)); - EXPECT_TRUE(f.Test(eFlag1)); - EXPECT_FALSE(f.Test(eFlag2)); - - // FIXME: Should Flags assert on Test(eFlag0 | eFlag1) (more than one bit)? -} - -TEST(Flags, AllClear) { - Flags f; - - EXPECT_TRUE(f.AllClear(eFlag0 | eFlag1)); - - f.Set(eFlag0); - EXPECT_FALSE(f.AllClear(eFlag0 | eFlag1)); - - f.Set(eFlag1); - f.Clear(eFlag0); - EXPECT_FALSE(f.AllClear(eFlag0 | eFlag1)); - - f.Clear(eFlag1); - EXPECT_TRUE(f.AnyClear(eFlag0 | eFlag1)); -} - -TEST(Flags, AnyClear) { - Flags f; - EXPECT_TRUE(f.AnyClear(eFlag0 | eFlag1)); - - f.Set(eFlag0); - EXPECT_TRUE(f.AnyClear(eFlag0 | eFlag1)); - - f.Set(eFlag1); - f.Set(eFlag0); - EXPECT_FALSE(f.AnyClear(eFlag0 | eFlag1)); - - f.Clear(eFlag1); - EXPECT_TRUE(f.AnyClear(eFlag0 | eFlag1)); - - f.Clear(eFlag0); - EXPECT_TRUE(f.AnyClear(eFlag0 | eFlag1)); -} - -TEST(Flags, IsClear) { - Flags f; - - EXPECT_TRUE(f.IsClear(eFlag0)); - EXPECT_TRUE(f.IsClear(eFlag1)); - - f.Set(eFlag0); - EXPECT_FALSE(f.IsClear(eFlag0)); - EXPECT_TRUE(f.IsClear(eFlag1)); - - f.Set(eFlag1); - EXPECT_FALSE(f.IsClear(eFlag0)); - EXPECT_FALSE(f.IsClear(eFlag1)); - - f.Clear(eFlag0); - EXPECT_TRUE(f.IsClear(eFlag0)); - EXPECT_FALSE(f.IsClear(eFlag1)); - - f.Clear(eFlag1); - EXPECT_TRUE(f.IsClear(eFlag0)); - EXPECT_TRUE(f.IsClear(eFlag1)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/Inputs/StructuredData-basic.json b/gnu/llvm/lldb/unittests/Utility/Inputs/StructuredData-basic.json deleted file mode 100644 index b5d8bb58d9b..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/Inputs/StructuredData-basic.json +++ /dev/null @@ -1 +0,0 @@ -[1, 2, 3] diff --git a/gnu/llvm/lldb/unittests/Utility/ListenerTest.cpp b/gnu/llvm/lldb/unittests/Utility/ListenerTest.cpp deleted file mode 100644 index bf38955a8e7..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/ListenerTest.cpp +++ /dev/null @@ -1,113 +0,0 @@ -//===-- ListenerTest.cpp --------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/Broadcaster.h" -#include "lldb/Utility/Listener.h" -#include -#include - -using namespace lldb; -using namespace lldb_private; - -TEST(ListenerTest, GetEventImmediate) { - EventSP event_sp; - Broadcaster broadcaster(nullptr, "test-broadcaster"); - - // Create a listener, sign it up, make sure it receives an event. - ListenerSP listener_sp = Listener::MakeListener("test-listener"); - const uint32_t event_mask = 1; - ASSERT_EQ(event_mask, - listener_sp->StartListeningForEvents(&broadcaster, event_mask)); - - const std::chrono::seconds timeout(0); - // Without any events sent, these should return false. - EXPECT_FALSE(listener_sp->GetEvent(event_sp, timeout)); - EXPECT_FALSE(listener_sp->GetEventForBroadcaster(nullptr, event_sp, timeout)); - EXPECT_FALSE( - listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, timeout)); - EXPECT_FALSE(listener_sp->GetEventForBroadcasterWithType( - &broadcaster, event_mask, event_sp, timeout)); - - // Now send events and make sure they get it. - broadcaster.BroadcastEvent(event_mask, nullptr); - EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout)); - - broadcaster.BroadcastEvent(event_mask, nullptr); - EXPECT_TRUE(listener_sp->GetEventForBroadcaster(nullptr, event_sp, timeout)); - - broadcaster.BroadcastEvent(event_mask, nullptr); - EXPECT_TRUE( - listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, timeout)); - - broadcaster.BroadcastEvent(event_mask, nullptr); - EXPECT_FALSE(listener_sp->GetEventForBroadcasterWithType( - &broadcaster, event_mask * 2, event_sp, timeout)); - EXPECT_TRUE(listener_sp->GetEventForBroadcasterWithType( - &broadcaster, event_mask, event_sp, timeout)); -} - -TEST(ListenerTest, GetEventWait) { - EventSP event_sp; - Broadcaster broadcaster(nullptr, "test-broadcaster"); - - // Create a listener, sign it up, make sure it receives an event. - ListenerSP listener_sp = Listener::MakeListener("test-listener"); - const uint32_t event_mask = 1; - ASSERT_EQ(event_mask, - listener_sp->StartListeningForEvents(&broadcaster, event_mask)); - - // Without any events sent, these should make a short wait and return false. - std::chrono::microseconds timeout(10); - EXPECT_FALSE(listener_sp->GetEvent(event_sp, timeout)); - EXPECT_FALSE(listener_sp->GetEventForBroadcaster(nullptr, event_sp, timeout)); - EXPECT_FALSE( - listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, timeout)); - EXPECT_FALSE(listener_sp->GetEventForBroadcasterWithType( - &broadcaster, event_mask, event_sp, timeout)); - - // Now send events and make sure they get it. - broadcaster.BroadcastEvent(event_mask, nullptr); - EXPECT_TRUE(listener_sp->GetEvent(event_sp, timeout)); - - broadcaster.BroadcastEvent(event_mask, nullptr); - EXPECT_TRUE(listener_sp->GetEventForBroadcaster(nullptr, event_sp, timeout)); - - broadcaster.BroadcastEvent(event_mask, nullptr); - EXPECT_TRUE( - listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, timeout)); - - broadcaster.BroadcastEvent(event_mask, nullptr); - EXPECT_FALSE(listener_sp->GetEventForBroadcasterWithType( - &broadcaster, event_mask * 2, event_sp, timeout)); - EXPECT_TRUE(listener_sp->GetEventForBroadcasterWithType( - &broadcaster, event_mask, event_sp, timeout)); - - auto delayed_broadcast = [&] { - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - broadcaster.BroadcastEvent(event_mask, nullptr); - }; - - // These should do an infinite wait at return the event our asynchronous - // broadcast sends. - std::future async_broadcast = - std::async(std::launch::async, delayed_broadcast); - EXPECT_TRUE(listener_sp->GetEvent(event_sp, llvm::None)); - async_broadcast.get(); - - async_broadcast = std::async(std::launch::async, delayed_broadcast); - EXPECT_TRUE( - listener_sp->GetEventForBroadcaster(&broadcaster, event_sp, llvm::None)); - async_broadcast.get(); - - async_broadcast = std::async(std::launch::async, delayed_broadcast); - EXPECT_TRUE(listener_sp->GetEventForBroadcasterWithType( - &broadcaster, event_mask, event_sp, llvm::None)); - async_broadcast.get(); -} diff --git a/gnu/llvm/lldb/unittests/Utility/LogTest.cpp b/gnu/llvm/lldb/unittests/Utility/LogTest.cpp deleted file mode 100644 index dfbb1f09214..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/LogTest.cpp +++ /dev/null @@ -1,313 +0,0 @@ -//===-- LogTest.cpp -------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "lldb/Utility/Log.h" -#include "lldb/Utility/StreamString.h" -#include "llvm/Support/ManagedStatic.h" -#include "llvm/Support/Threading.h" -#include - -using namespace lldb; -using namespace lldb_private; - -enum { FOO = 1, BAR = 2 }; -static constexpr Log::Category test_categories[] = { - {{"foo"}, {"log foo"}, FOO}, {{"bar"}, {"log bar"}, BAR}, -}; -static constexpr uint32_t default_flags = FOO; - -static Log::Channel test_channel(test_categories, default_flags); - -// Wrap enable, disable and list functions to make them easier to test. -static bool EnableChannel(std::shared_ptr stream_sp, - uint32_t log_options, llvm::StringRef channel, - llvm::ArrayRef categories, - std::string &error) { - error.clear(); - llvm::raw_string_ostream error_stream(error); - return Log::EnableLogChannel(stream_sp, log_options, channel, categories, - error_stream); -} - -static bool DisableChannel(llvm::StringRef channel, - llvm::ArrayRef categories, - std::string &error) { - error.clear(); - llvm::raw_string_ostream error_stream(error); - return Log::DisableLogChannel(channel, categories, error_stream); -} - -static bool ListCategories(llvm::StringRef channel, std::string &result) { - result.clear(); - llvm::raw_string_ostream result_stream(result); - return Log::ListChannelCategories(channel, result_stream); -} - -namespace { -// A test fixture which provides tests with a pre-registered channel. -struct LogChannelTest : public ::testing::Test { - void TearDown() override { Log::DisableAllLogChannels(); } - - static void SetUpTestCase() { - Log::Register("chan", test_channel); - } - - static void TearDownTestCase() { - Log::Unregister("chan"); - llvm::llvm_shutdown(); - } -}; - -// A test fixture which provides tests with a pre-registered and pre-enabled -// channel. Additionally, the messages written to that channel are captured and -// made available via getMessage(). -class LogChannelEnabledTest : public LogChannelTest { - llvm::SmallString<0> m_messages; - std::shared_ptr m_stream_sp = - std::make_shared(m_messages); - Log *m_log; - size_t m_consumed_bytes = 0; - -protected: - std::shared_ptr getStream() { return m_stream_sp; } - Log *getLog() { return m_log; } - llvm::StringRef takeOutput(); - llvm::StringRef logAndTakeOutput(llvm::StringRef Message); - -public: - void SetUp() override; -}; -} // end anonymous namespace - -void LogChannelEnabledTest::SetUp() { - LogChannelTest::SetUp(); - - std::string error; - ASSERT_TRUE(EnableChannel(m_stream_sp, 0, "chan", {}, error)); - - m_log = test_channel.GetLogIfAll(FOO); - ASSERT_NE(nullptr, m_log); -} - -llvm::StringRef LogChannelEnabledTest::takeOutput() { - llvm::StringRef result = m_stream_sp->str().drop_front(m_consumed_bytes); - m_consumed_bytes+= result.size(); - return result; -} - -llvm::StringRef LogChannelEnabledTest::logAndTakeOutput(llvm::StringRef Message) { - LLDB_LOG(m_log, "{0}", Message); - return takeOutput(); -} - -TEST(LogTest, LLDB_LOG_nullptr) { - Log *log = nullptr; - LLDB_LOG(log, "{0}", 0); // Shouldn't crash -} - -TEST(LogTest, Register) { - llvm::llvm_shutdown_obj obj; - Log::Register("chan", test_channel); - Log::Unregister("chan"); - Log::Register("chan", test_channel); - Log::Unregister("chan"); -} - -TEST(LogTest, Unregister) { - llvm::llvm_shutdown_obj obj; - Log::Register("chan", test_channel); - EXPECT_EQ(nullptr, test_channel.GetLogIfAny(FOO)); - std::string message; - std::shared_ptr stream_sp( - new llvm::raw_string_ostream(message)); - EXPECT_TRUE(Log::EnableLogChannel(stream_sp, 0, "chan", {"foo"}, llvm::nulls())); - EXPECT_NE(nullptr, test_channel.GetLogIfAny(FOO)); - Log::Unregister("chan"); - EXPECT_EQ(nullptr, test_channel.GetLogIfAny(FOO)); -} - -TEST_F(LogChannelTest, Enable) { - EXPECT_EQ(nullptr, test_channel.GetLogIfAll(FOO)); - std::string message; - std::shared_ptr stream_sp( - new llvm::raw_string_ostream(message)); - std::string error; - ASSERT_FALSE(EnableChannel(stream_sp, 0, "chanchan", {}, error)); - EXPECT_EQ("Invalid log channel 'chanchan'.\n", error); - - EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {}, error)); - EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO)); - EXPECT_EQ(nullptr, test_channel.GetLogIfAll(BAR)); - - EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {"bar"}, error)); - EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO | BAR)); - - EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {"baz"}, error)); - EXPECT_NE(std::string::npos, error.find("unrecognized log category 'baz'")) - << "error: " << error; - EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO | BAR)); -} - -TEST_F(LogChannelTest, EnableOptions) { - EXPECT_EQ(nullptr, test_channel.GetLogIfAll(FOO)); - std::string message; - std::shared_ptr stream_sp( - new llvm::raw_string_ostream(message)); - std::string error; - EXPECT_TRUE( - EnableChannel(stream_sp, LLDB_LOG_OPTION_VERBOSE, "chan", {}, error)); - - Log *log = test_channel.GetLogIfAll(FOO); - ASSERT_NE(nullptr, log); - EXPECT_TRUE(log->GetVerbose()); -} - -TEST_F(LogChannelTest, Disable) { - EXPECT_EQ(nullptr, test_channel.GetLogIfAll(FOO)); - std::string message; - std::shared_ptr stream_sp( - new llvm::raw_string_ostream(message)); - std::string error; - EXPECT_TRUE(EnableChannel(stream_sp, 0, "chan", {"foo", "bar"}, error)); - EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO | BAR)); - - EXPECT_TRUE(DisableChannel("chan", {"bar"}, error)); - EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO)); - EXPECT_EQ(nullptr, test_channel.GetLogIfAll(BAR)); - - EXPECT_TRUE(DisableChannel("chan", {"baz"}, error)); - EXPECT_NE(std::string::npos, error.find("unrecognized log category 'baz'")) - << "error: " << error; - EXPECT_NE(nullptr, test_channel.GetLogIfAll(FOO)); - EXPECT_EQ(nullptr, test_channel.GetLogIfAll(BAR)); - - EXPECT_TRUE(DisableChannel("chan", {}, error)); - EXPECT_EQ(nullptr, test_channel.GetLogIfAny(FOO | BAR)); -} - -TEST_F(LogChannelTest, List) { - std::string list; - EXPECT_TRUE(ListCategories("chan", list)); - std::string expected = - R"(Logging categories for 'chan': - all - all available logging categories - default - default set of logging categories - foo - log foo - bar - log bar -)"; - EXPECT_EQ(expected, list); - - EXPECT_FALSE(ListCategories("chanchan", list)); - EXPECT_EQ("Invalid log channel 'chanchan'.\n", list); -} - -TEST_F(LogChannelEnabledTest, log_options) { - std::string Err; - EXPECT_EQ("Hello World\n", logAndTakeOutput("Hello World")); - EXPECT_TRUE(EnableChannel(getStream(), LLDB_LOG_OPTION_THREADSAFE, "chan", {}, - Err)); - EXPECT_EQ("Hello World\n", logAndTakeOutput("Hello World")); - - { - EXPECT_TRUE(EnableChannel(getStream(), LLDB_LOG_OPTION_PREPEND_SEQUENCE, - "chan", {}, Err)); - llvm::StringRef Msg = logAndTakeOutput("Hello World"); - int seq_no; - EXPECT_EQ(1, sscanf(Msg.str().c_str(), "%d Hello World", &seq_no)); - } - - { - EXPECT_TRUE(EnableChannel(getStream(), LLDB_LOG_OPTION_PREPEND_FILE_FUNCTION, - "chan", {}, Err)); - llvm::StringRef Msg = logAndTakeOutput("Hello World"); - char File[12]; - char Function[17]; - - sscanf(Msg.str().c_str(), "%[^:]:%s Hello World", File, Function); - EXPECT_STRCASEEQ("LogTest.cpp", File); - EXPECT_STREQ("logAndTakeOutput", Function); - } - - EXPECT_TRUE(EnableChannel( - getStream(), LLDB_LOG_OPTION_PREPEND_PROC_AND_THREAD, "chan", {}, Err)); - EXPECT_EQ(llvm::formatv("[{0,0+4}/{1,0+4}] Hello World\n", ::getpid(), - llvm::get_threadid()) - .str(), - logAndTakeOutput("Hello World")); -} - -TEST_F(LogChannelEnabledTest, LLDB_LOG_ERROR) { - LLDB_LOG_ERROR(getLog(), llvm::Error::success(), "Foo failed: {0}"); - ASSERT_EQ("", takeOutput()); - - LLDB_LOG_ERROR(getLog(), - llvm::make_error( - "My Error", llvm::inconvertibleErrorCode()), - "Foo failed: {0}"); - ASSERT_EQ("Foo failed: My Error\n", takeOutput()); - - // Doesn't log, but doesn't assert either - LLDB_LOG_ERROR(nullptr, - llvm::make_error( - "My Error", llvm::inconvertibleErrorCode()), - "Foo failed: {0}"); -} - -TEST_F(LogChannelEnabledTest, LogThread) { - // Test that we are able to concurrently write to a log channel and disable - // it. - std::string err; - - // Start logging on one thread. Concurrently, try disabling the log channel. - std::thread log_thread([this] { LLDB_LOG(getLog(), "Hello World"); }); - EXPECT_TRUE(DisableChannel("chan", {}, err)); - log_thread.join(); - - // The log thread either managed to write to the log in time, or it didn't. In - // either case, we should not trip any undefined behavior (run the test under - // TSAN to verify this). - EXPECT_THAT(takeOutput(), testing::AnyOf("", "Hello World\n")); -} - -TEST_F(LogChannelEnabledTest, LogVerboseThread) { - // Test that we are able to concurrently check the verbose flag of a log - // channel and enable it. - std::string err; - - // Start logging on one thread. Concurrently, try enabling the log channel - // (with different log options). - std::thread log_thread([this] { LLDB_LOGV(getLog(), "Hello World"); }); - EXPECT_TRUE( - EnableChannel(getStream(), LLDB_LOG_OPTION_VERBOSE, "chan", {}, err)); - log_thread.join(); - - // The log thread either managed to write to the log, or it didn't. In either - // case, we should not trip any undefined behavior (run the test under TSAN to - // verify this). - EXPECT_THAT(takeOutput(), testing::AnyOf("", "Hello World\n")); -} - -TEST_F(LogChannelEnabledTest, LogGetLogThread) { - // Test that we are able to concurrently get mask of a Log object and disable - // it. - std::string err; - - // Try fetching the log mask on one thread. Concurrently, try disabling the - // log channel. - uint32_t mask; - std::thread log_thread([this, &mask] { mask = getLog()->GetMask().Get(); }); - EXPECT_TRUE(DisableChannel("chan", {}, err)); - log_thread.join(); - - // The mask should be either zero of "FOO". In either case, we should not trip - // any undefined behavior (run the test under TSAN to verify this). - EXPECT_THAT(mask, testing::AnyOf(0, FOO)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/NameMatchesTest.cpp b/gnu/llvm/lldb/unittests/Utility/NameMatchesTest.cpp deleted file mode 100644 index 9992f2ff8c3..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/NameMatchesTest.cpp +++ /dev/null @@ -1,57 +0,0 @@ -//===-- NameMatchesTest.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/NameMatches.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(NameMatchesTest, Ignore) { - EXPECT_TRUE(NameMatches("foo", NameMatch::Ignore, "bar")); -} - -TEST(NameMatchesTest, Equals) { - EXPECT_TRUE(NameMatches("foo", NameMatch::Equals, "foo")); - EXPECT_FALSE(NameMatches("foo", NameMatch::Equals, "bar")); -} - -TEST(NameMatchesTest, Contains) { - EXPECT_TRUE(NameMatches("foobar", NameMatch::Contains, "foo")); - EXPECT_TRUE(NameMatches("foobar", NameMatch::Contains, "oob")); - EXPECT_TRUE(NameMatches("foobar", NameMatch::Contains, "bar")); - EXPECT_TRUE(NameMatches("foobar", NameMatch::Contains, "foobar")); - EXPECT_TRUE(NameMatches("", NameMatch::Contains, "")); - EXPECT_FALSE(NameMatches("", NameMatch::Contains, "foo")); - EXPECT_FALSE(NameMatches("foobar", NameMatch::Contains, "baz")); -} - -TEST(NameMatchesTest, StartsWith) { - EXPECT_TRUE(NameMatches("foo", NameMatch::StartsWith, "f")); - EXPECT_TRUE(NameMatches("foo", NameMatch::StartsWith, "")); - EXPECT_TRUE(NameMatches("", NameMatch::StartsWith, "")); - EXPECT_FALSE(NameMatches("foo", NameMatch::StartsWith, "b")); - EXPECT_FALSE(NameMatches("", NameMatch::StartsWith, "b")); -} - -TEST(NameMatchesTest, EndsWith) { - EXPECT_TRUE(NameMatches("foo", NameMatch::EndsWith, "o")); - EXPECT_TRUE(NameMatches("foo", NameMatch::EndsWith, "")); - EXPECT_TRUE(NameMatches("", NameMatch::EndsWith, "")); - EXPECT_FALSE(NameMatches("foo", NameMatch::EndsWith, "b")); - EXPECT_FALSE(NameMatches("", NameMatch::EndsWith, "b")); -} - -TEST(NameMatchesTest, RegularExpression) { - EXPECT_TRUE(NameMatches("foobar", NameMatch::RegularExpression, "foo")); - EXPECT_TRUE(NameMatches("foobar", NameMatch::RegularExpression, "f[oa]o")); - EXPECT_FALSE(NameMatches("foo", NameMatch::RegularExpression, "")); - EXPECT_FALSE(NameMatches("", NameMatch::RegularExpression, "")); - EXPECT_FALSE(NameMatches("foo", NameMatch::RegularExpression, "b")); - EXPECT_FALSE(NameMatches("", NameMatch::RegularExpression, "b")); - EXPECT_FALSE(NameMatches("^a", NameMatch::RegularExpression, "^a")); -} diff --git a/gnu/llvm/lldb/unittests/Utility/OptionsWithRawTest.cpp b/gnu/llvm/lldb/unittests/Utility/OptionsWithRawTest.cpp deleted file mode 100644 index e7b159b8d40..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/OptionsWithRawTest.cpp +++ /dev/null @@ -1,182 +0,0 @@ -//===-- OptionsWithRawTest.cpp --------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/Args.h" -#include "lldb/Utility/StringList.h" - -using namespace lldb_private; - -TEST(OptionsWithRawTest, EmptyInput) { - // An empty string is just an empty suffix without any arguments. - OptionsWithRaw args(""); - ASSERT_FALSE(args.HasArgs()); - ASSERT_STREQ(args.GetRawPart().c_str(), ""); -} - -TEST(OptionsWithRawTest, SingleWhitespaceInput) { - // Only whitespace is just a suffix. - OptionsWithRaw args(" "); - ASSERT_FALSE(args.HasArgs()); - ASSERT_STREQ(args.GetRawPart().c_str(), " "); -} - -TEST(OptionsWithRawTest, WhitespaceInput) { - // Only whitespace is just a suffix. - OptionsWithRaw args(" "); - ASSERT_FALSE(args.HasArgs()); - ASSERT_STREQ(args.GetRawPart().c_str(), " "); -} - -TEST(OptionsWithRawTest, ArgsButNoDelimiter) { - // This counts as a suffix because there is no -- at the end. - OptionsWithRaw args("-foo bar"); - ASSERT_FALSE(args.HasArgs()); - ASSERT_STREQ(args.GetRawPart().c_str(), "-foo bar"); -} - -TEST(OptionsWithRawTest, ArgsButNoLeadingDash) { - // No leading dash means we have no arguments. - OptionsWithRaw args("foo bar --"); - ASSERT_FALSE(args.HasArgs()); - ASSERT_STREQ(args.GetRawPart().c_str(), "foo bar --"); -} - -TEST(OptionsWithRawTest, QuotedSuffix) { - // We need to have a way to escape the -- to make it usable as an argument. - OptionsWithRaw args("-foo \"--\" bar"); - ASSERT_FALSE(args.HasArgs()); - ASSERT_STREQ(args.GetRawPart().c_str(), "-foo \"--\" bar"); -} - -TEST(OptionsWithRawTest, EmptySuffix) { - // An empty suffix with arguments. - OptionsWithRaw args("-foo --"); - ASSERT_TRUE(args.HasArgs()); - ASSERT_EQ(args.GetArgString(), "-foo "); - ASSERT_EQ(args.GetArgStringWithDelimiter(), "-foo --"); - - auto ref = args.GetArgs().GetArgumentArrayRef(); - ASSERT_EQ(1u, ref.size()); - EXPECT_STREQ("-foo", ref[0]); - - ASSERT_STREQ(args.GetRawPart().c_str(), ""); -} - -TEST(OptionsWithRawTest, EmptySuffixSingleWhitespace) { - // A single whitespace also countas as an empty suffix (because that usually - // separates the suffix from the double dash. - OptionsWithRaw args("-foo -- "); - ASSERT_TRUE(args.HasArgs()); - ASSERT_EQ(args.GetArgString(), "-foo "); - ASSERT_EQ(args.GetArgStringWithDelimiter(), "-foo -- "); - - auto ref = args.GetArgs().GetArgumentArrayRef(); - ASSERT_EQ(1u, ref.size()); - EXPECT_STREQ("-foo", ref[0]); - - ASSERT_STREQ(args.GetRawPart().c_str(), ""); -} - -TEST(OptionsWithRawTest, WhitespaceSuffix) { - // A single whtiespace character as a suffix. - OptionsWithRaw args("-foo -- "); - ASSERT_TRUE(args.HasArgs()); - ASSERT_EQ(args.GetArgString(), "-foo "); - ASSERT_EQ(args.GetArgStringWithDelimiter(), "-foo -- "); - - auto ref = args.GetArgs().GetArgumentArrayRef(); - ASSERT_EQ(1u, ref.size()); - EXPECT_STREQ("-foo", ref[0]); - - ASSERT_STREQ(args.GetRawPart().c_str(), " "); -} - -TEST(OptionsWithRawTest, LeadingSpaceArgs) { - // Whitespace before the first dash needs to be ignored. - OptionsWithRaw args(" -foo -- bar"); - ASSERT_TRUE(args.HasArgs()); - ASSERT_EQ(args.GetArgString(), " -foo "); - ASSERT_EQ(args.GetArgStringWithDelimiter(), " -foo -- "); - - auto ref = args.GetArgs().GetArgumentArrayRef(); - ASSERT_EQ(1u, ref.size()); - EXPECT_STREQ("-foo", ref[0]); - - ASSERT_STREQ(args.GetRawPart().c_str(), "bar"); -} - -TEST(OptionsWithRawTest, SingleWordSuffix) { - // A single word as a suffix. - OptionsWithRaw args("-foo -- bar"); - ASSERT_TRUE(args.HasArgs()); - ASSERT_EQ(args.GetArgString(), "-foo "); - ASSERT_EQ(args.GetArgStringWithDelimiter(), "-foo -- "); - - auto ref = args.GetArgs().GetArgumentArrayRef(); - ASSERT_EQ(1u, ref.size()); - EXPECT_STREQ("-foo", ref[0]); - - ASSERT_STREQ(args.GetRawPart().c_str(), "bar"); -} - -TEST(OptionsWithRawTest, MultiWordSuffix) { - // Multiple words as a suffix. - OptionsWithRaw args("-foo -- bar baz"); - ASSERT_TRUE(args.HasArgs()); - ASSERT_EQ(args.GetArgString(), "-foo "); - ASSERT_EQ(args.GetArgStringWithDelimiter(), "-foo -- "); - - auto ref = args.GetArgs().GetArgumentArrayRef(); - ASSERT_EQ(1u, ref.size()); - EXPECT_STREQ("-foo", ref[0]); - - ASSERT_STREQ(args.GetRawPart().c_str(), "bar baz"); -} - -TEST(OptionsWithRawTest, UnterminatedQuote) { - // A quote character in the suffix shouldn't influence the parsing. - OptionsWithRaw args("-foo -- bar \" "); - ASSERT_TRUE(args.HasArgs()); - ASSERT_EQ(args.GetArgString(), "-foo "); - ASSERT_EQ(args.GetArgStringWithDelimiter(), "-foo -- "); - - auto ref = args.GetArgs().GetArgumentArrayRef(); - ASSERT_EQ(1u, ref.size()); - EXPECT_STREQ("-foo", ref[0]); - - ASSERT_STREQ(args.GetRawPart().c_str(), "bar \" "); -} - -TEST(OptionsWithRawTest, TerminatedQuote) { - // A part of the suffix is quoted, which shouldn't influence the parsing. - OptionsWithRaw args("-foo -- bar \"a\" "); - ASSERT_TRUE(args.HasArgs()); - ASSERT_EQ(args.GetArgString(), "-foo "); - ASSERT_EQ(args.GetArgStringWithDelimiter(), "-foo -- "); - - auto ref = args.GetArgs().GetArgumentArrayRef(); - ASSERT_EQ(1u, ref.size()); - EXPECT_STREQ("-foo", ref[0]); - - ASSERT_STREQ(args.GetRawPart().c_str(), "bar \"a\" "); -} - -TEST(OptionsWithRawTest, EmptyArgsOnlySuffix) { - // Empty argument list, but we have a suffix. - OptionsWithRaw args("-- bar"); - ASSERT_TRUE(args.HasArgs()); - ASSERT_EQ(args.GetArgString(), ""); - ASSERT_EQ(args.GetArgStringWithDelimiter(), "-- "); - - auto ref = args.GetArgs().GetArgumentArrayRef(); - ASSERT_EQ(0u, ref.size()); - - ASSERT_STREQ(args.GetRawPart().c_str(), "bar"); -} diff --git a/gnu/llvm/lldb/unittests/Utility/PredicateTest.cpp b/gnu/llvm/lldb/unittests/Utility/PredicateTest.cpp deleted file mode 100644 index 8752e9361ca..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/PredicateTest.cpp +++ /dev/null @@ -1,33 +0,0 @@ -//===-- PredicateTest.cpp -------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/Predicate.h" -#include "gtest/gtest.h" -#include - -using namespace lldb_private; - -TEST(Predicate, WaitForValueEqualTo) { - Predicate P(0); - EXPECT_TRUE(P.WaitForValueEqualTo(0)); - EXPECT_FALSE(P.WaitForValueEqualTo(1, std::chrono::milliseconds(10))); - - std::thread Setter([&P] { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - P.SetValue(1, eBroadcastAlways); - }); - EXPECT_TRUE(P.WaitForValueEqualTo(1)); - Setter.join(); -} - -TEST(Predicate, WaitForValueNotEqualTo) { - Predicate P(0); - EXPECT_EQ(0, P.WaitForValueNotEqualTo(1)); - EXPECT_EQ(llvm::None, - P.WaitForValueNotEqualTo(0, std::chrono::milliseconds(10))); -} diff --git a/gnu/llvm/lldb/unittests/Utility/ProcessInfoTest.cpp b/gnu/llvm/lldb/unittests/Utility/ProcessInfoTest.cpp deleted file mode 100644 index b2fdbde70da..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/ProcessInfoTest.cpp +++ /dev/null @@ -1,19 +0,0 @@ -//===-- ProcessInfoTest.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/ProcessInfo.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(ProcessInfoTest, Constructor) { - ProcessInfo Info("foo", ArchSpec("x86_64-pc-linux"), 47); - EXPECT_STREQ("foo", Info.GetName()); - EXPECT_EQ(ArchSpec("x86_64-pc-linux"), Info.GetArchitecture()); - EXPECT_EQ(47u, Info.GetProcessID()); -} diff --git a/gnu/llvm/lldb/unittests/Utility/ProcessInstanceInfoTest.cpp b/gnu/llvm/lldb/unittests/Utility/ProcessInstanceInfoTest.cpp deleted file mode 100644 index a3f850cfb9b..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/ProcessInstanceInfoTest.cpp +++ /dev/null @@ -1,167 +0,0 @@ -//===-- ProcessInstanceInfoTest.cpp ---------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Target/Process.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -namespace { -/// A very simple resolver which fails for even ids and returns a simple string -/// for odd ones. -class DummyUserIDResolver : public UserIDResolver { -protected: - llvm::Optional DoGetUserName(id_t uid) override { - if (uid % 2) - return ("user" + llvm::Twine(uid)).str(); - return llvm::None; - } - - llvm::Optional DoGetGroupName(id_t gid) override { - if (gid % 2) - return ("group" + llvm::Twine(gid)).str(); - return llvm::None; - } -}; -} // namespace - -TEST(ProcessInstanceInfo, Dump) { - ProcessInstanceInfo info("a.out", ArchSpec("x86_64-pc-linux"), 47); - info.SetUserID(1); - info.SetEffectiveUserID(2); - info.SetGroupID(3); - info.SetEffectiveGroupID(4); - - DummyUserIDResolver resolver; - StreamString s; - info.Dump(s, resolver); - EXPECT_STREQ(R"( pid = 47 - name = a.out - file = a.out - arch = x86_64-pc-linux - uid = 1 (user1) - gid = 3 (group3) - euid = 2 () - egid = 4 () -)", - s.GetData()); -} - -TEST(ProcessInstanceInfo, DumpTable) { - ProcessInstanceInfo info("a.out", ArchSpec("x86_64-pc-linux"), 47); - info.SetUserID(1); - info.SetEffectiveUserID(2); - info.SetGroupID(3); - info.SetEffectiveGroupID(4); - - DummyUserIDResolver resolver; - StreamString s; - - const bool show_args = false; - const bool verbose = true; - ProcessInstanceInfo::DumpTableHeader(s, show_args, verbose); - info.DumpAsTableRow(s, resolver, show_args, verbose); - EXPECT_STREQ( - R"(PID PARENT USER GROUP EFF USER EFF GROUP TRIPLE ARGUMENTS -====== ====== ========== ========== ========== ========== ============================== ============================ -47 0 user1 group3 2 4 x86_64-pc-linux -)", - s.GetData()); -} - -TEST(ProcessInstanceInfo, DumpTable_invalidUID) { - ProcessInstanceInfo info("a.out", ArchSpec("aarch64-unknown-linux-android"), 47); - - DummyUserIDResolver resolver; - StreamString s; - - const bool show_args = false; - const bool verbose = false; - ProcessInstanceInfo::DumpTableHeader(s, show_args, verbose); - info.DumpAsTableRow(s, resolver, show_args, verbose); - EXPECT_STREQ( - R"(PID PARENT USER TRIPLE NAME -====== ====== ========== ============================== ============================ -47 0 aarch64-unknown-linux-android a.out -)", - s.GetData()); -} - -TEST(ProcessInstanceInfoMatch, Name) { - ProcessInstanceInfo info_bar, info_empty; - info_bar.GetExecutableFile().SetFile("/foo/bar", FileSpec::Style::posix); - - ProcessInstanceInfoMatch match; - match.SetNameMatchType(NameMatch::Equals); - match.GetProcessInfo().GetExecutableFile().SetFile("bar", - FileSpec::Style::posix); - - EXPECT_TRUE(match.Matches(info_bar)); - EXPECT_FALSE(match.Matches(info_empty)); - - match.GetProcessInfo().GetExecutableFile() = FileSpec(); - EXPECT_TRUE(match.Matches(info_bar)); - EXPECT_TRUE(match.Matches(info_empty)); -} - -TEST(ProcessInstanceInfo, Yaml) { - std::string buffer; - llvm::raw_string_ostream os(buffer); - - // Serialize. - ProcessInstanceInfo info("a.out", ArchSpec("x86_64-pc-linux"), 47); - info.SetUserID(1); - info.SetEffectiveUserID(2); - info.SetGroupID(3); - info.SetEffectiveGroupID(4); - llvm::yaml::Output yout(os); - yout << info; - os.flush(); - - // Deserialize. - ProcessInstanceInfo deserialized; - llvm::yaml::Input yin(buffer); - yin >> deserialized; - - EXPECT_EQ(deserialized.GetNameAsStringRef(), info.GetNameAsStringRef()); - EXPECT_EQ(deserialized.GetArchitecture(), info.GetArchitecture()); - EXPECT_EQ(deserialized.GetUserID(), info.GetUserID()); - EXPECT_EQ(deserialized.GetGroupID(), info.GetGroupID()); - EXPECT_EQ(deserialized.GetEffectiveUserID(), info.GetEffectiveUserID()); - EXPECT_EQ(deserialized.GetEffectiveGroupID(), info.GetEffectiveGroupID()); -} - -TEST(ProcessInstanceInfoList, Yaml) { - std::string buffer; - llvm::raw_string_ostream os(buffer); - - // Serialize. - ProcessInstanceInfo info("a.out", ArchSpec("x86_64-pc-linux"), 47); - info.SetUserID(1); - info.SetEffectiveUserID(2); - info.SetGroupID(3); - info.SetEffectiveGroupID(4); - ProcessInstanceInfoList list; - list.push_back(info); - llvm::yaml::Output yout(os); - yout << list; - os.flush(); - - // Deserialize. - ProcessInstanceInfoList deserialized; - llvm::yaml::Input yin(buffer); - yin >> deserialized; - - ASSERT_EQ(deserialized.size(), static_cast(1)); - EXPECT_EQ(deserialized[0].GetNameAsStringRef(), info.GetNameAsStringRef()); - EXPECT_EQ(deserialized[0].GetArchitecture(), info.GetArchitecture()); - EXPECT_EQ(deserialized[0].GetUserID(), info.GetUserID()); - EXPECT_EQ(deserialized[0].GetGroupID(), info.GetGroupID()); - EXPECT_EQ(deserialized[0].GetEffectiveUserID(), info.GetEffectiveUserID()); - EXPECT_EQ(deserialized[0].GetEffectiveGroupID(), info.GetEffectiveGroupID()); -} diff --git a/gnu/llvm/lldb/unittests/Utility/RangeMapTest.cpp b/gnu/llvm/lldb/unittests/Utility/RangeMapTest.cpp deleted file mode 100644 index 97432dca983..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/RangeMapTest.cpp +++ /dev/null @@ -1,162 +0,0 @@ -//===-- RangeTest.cpp -----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/RangeMap.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(RangeVector, CombineConsecutiveRanges) { - using RangeVector = RangeVector; - using Entry = RangeVector::Entry; - - RangeVector V; - V.Append(0, 1); - V.Append(5, 1); - V.Append(6, 1); - V.Append(10, 9); - V.Append(15, 1); - V.Append(20, 9); - V.Append(21, 9); - V.Sort(); - V.CombineConsecutiveRanges(); - EXPECT_THAT(V, testing::ElementsAre(Entry(0, 1), Entry(5, 2), Entry(10, 9), - Entry(20, 10))); - - V.Clear(); - V.Append(0, 20); - V.Append(5, 1); - V.Append(10, 1); - V.Sort(); - V.CombineConsecutiveRanges(); - EXPECT_THAT(V, testing::ElementsAre(Entry(0, 20))); -} - -using RangeDataVectorT = RangeDataVector; -using EntryT = RangeDataVectorT::Entry; - -static testing::Matcher EntryIs(uint32_t ID) { - return testing::Pointee(testing::Field(&EntryT::data, ID)); -} - -std::vector FindEntryIndexes(uint32_t address, RangeDataVectorT map) { - std::vector result; - map.FindEntryIndexesThatContain(address, result); - return result; -} - -TEST(RangeDataVector, FindEntryThatContains) { - RangeDataVectorT Map; - uint32_t NextID = 0; - Map.Append(EntryT(0, 10, NextID++)); - Map.Append(EntryT(10, 10, NextID++)); - Map.Append(EntryT(20, 10, NextID++)); - Map.Sort(); - - EXPECT_THAT(Map.FindEntryThatContains(0), EntryIs(0)); - EXPECT_THAT(Map.FindEntryThatContains(9), EntryIs(0)); - EXPECT_THAT(Map.FindEntryThatContains(10), EntryIs(1)); - EXPECT_THAT(Map.FindEntryThatContains(19), EntryIs(1)); - EXPECT_THAT(Map.FindEntryThatContains(20), EntryIs(2)); - EXPECT_THAT(Map.FindEntryThatContains(29), EntryIs(2)); - EXPECT_THAT(Map.FindEntryThatContains(30), nullptr); -} - -TEST(RangeDataVector, FindEntryThatContains_Overlap) { - RangeDataVectorT Map; - uint32_t NextID = 0; - Map.Append(EntryT(0, 40, NextID++)); - Map.Append(EntryT(10, 20, NextID++)); - Map.Append(EntryT(20, 10, NextID++)); - Map.Sort(); - - // With overlapping intervals, the intention seems to be to return the first - // interval which contains the address. - EXPECT_THAT(Map.FindEntryThatContains(25), EntryIs(0)); - - // However, this does not always succeed. - // TODO: This should probably return the range (0, 40) as well. - EXPECT_THAT(Map.FindEntryThatContains(35), nullptr); -} - -TEST(RangeDataVector, CustomSort) { - // First the default ascending order sorting of the data field. - auto Map = RangeDataVectorT(); - Map.Append(EntryT(0, 10, 50)); - Map.Append(EntryT(0, 10, 52)); - Map.Append(EntryT(0, 10, 53)); - Map.Append(EntryT(0, 10, 51)); - Map.Sort(); - - EXPECT_THAT(Map.GetSize(), 4); - EXPECT_THAT(Map.GetEntryRef(0).data, 50); - EXPECT_THAT(Map.GetEntryRef(1).data, 51); - EXPECT_THAT(Map.GetEntryRef(2).data, 52); - EXPECT_THAT(Map.GetEntryRef(3).data, 53); - - // And then a custom descending order sorting of the data field. - class CtorParam {}; - class CustomSort { - public: - CustomSort(CtorParam) {} - bool operator()(const uint32_t a_data, const uint32_t b_data) { - return a_data > b_data; - } - }; - using RangeDataVectorCustomSortT = - RangeDataVector; - using EntryT = RangeDataVectorT::Entry; - - auto MapC = RangeDataVectorCustomSortT(CtorParam()); - MapC.Append(EntryT(0, 10, 50)); - MapC.Append(EntryT(0, 10, 52)); - MapC.Append(EntryT(0, 10, 53)); - MapC.Append(EntryT(0, 10, 51)); - MapC.Sort(); - - EXPECT_THAT(MapC.GetSize(), 4); - EXPECT_THAT(MapC.GetEntryRef(0).data, 53); - EXPECT_THAT(MapC.GetEntryRef(1).data, 52); - EXPECT_THAT(MapC.GetEntryRef(2).data, 51); - EXPECT_THAT(MapC.GetEntryRef(3).data, 50); -} - -TEST(RangeDataVector, FindEntryIndexesThatContain) { - RangeDataVectorT Map; - Map.Append(EntryT(0, 10, 10)); - Map.Append(EntryT(10, 10, 11)); - Map.Append(EntryT(20, 10, 12)); - Map.Sort(); - - EXPECT_THAT(FindEntryIndexes(0, Map), testing::ElementsAre(10)); - EXPECT_THAT(FindEntryIndexes(9, Map), testing::ElementsAre(10)); - EXPECT_THAT(FindEntryIndexes(10, Map), testing::ElementsAre(11)); - EXPECT_THAT(FindEntryIndexes(19, Map), testing::ElementsAre(11)); - EXPECT_THAT(FindEntryIndexes(20, Map), testing::ElementsAre(12)); - EXPECT_THAT(FindEntryIndexes(29, Map), testing::ElementsAre(12)); - EXPECT_THAT(FindEntryIndexes(30, Map), testing::ElementsAre()); -} - -TEST(RangeDataVector, FindEntryIndexesThatContain_Overlap) { - RangeDataVectorT Map; - Map.Append(EntryT(0, 40, 10)); - Map.Append(EntryT(10, 20, 11)); - Map.Append(EntryT(20, 10, 12)); - Map.Sort(); - - EXPECT_THAT(FindEntryIndexes(0, Map), testing::ElementsAre(10)); - EXPECT_THAT(FindEntryIndexes(9, Map), testing::ElementsAre(10)); - EXPECT_THAT(FindEntryIndexes(10, Map), testing::ElementsAre(10, 11)); - EXPECT_THAT(FindEntryIndexes(19, Map), testing::ElementsAre(10, 11)); - EXPECT_THAT(FindEntryIndexes(20, Map), testing::ElementsAre(10, 11, 12)); - EXPECT_THAT(FindEntryIndexes(29, Map), testing::ElementsAre(10, 11, 12)); - EXPECT_THAT(FindEntryIndexes(30, Map), testing::ElementsAre(10)); - EXPECT_THAT(FindEntryIndexes(39, Map), testing::ElementsAre(10)); - EXPECT_THAT(FindEntryIndexes(40, Map), testing::ElementsAre()); -} diff --git a/gnu/llvm/lldb/unittests/Utility/RangeTest.cpp b/gnu/llvm/lldb/unittests/Utility/RangeTest.cpp deleted file mode 100644 index cfc281c8fd6..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/RangeTest.cpp +++ /dev/null @@ -1,328 +0,0 @@ -//===-- RangeTest.cpp -----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/RangeMap.h" -#include -#include - -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(RangeTest, SizeTypes) { - Range r; - static_assert(std::is_same::value, - "RangeBase type is not equal to the given one."); - static_assert(std::is_same::value, - "RangeEnd type is not equal to the given one."); - static_assert(std::is_same::value, - "Size type is not equal to the given one."); -} - -typedef Range RangeT; - -TEST(RangeTest, DefaultConstructor) { - RangeT r; - EXPECT_FALSE(r.IsValid()); - EXPECT_EQ(0U, r.GetByteSize()); - EXPECT_EQ(0U, r.GetRangeBase()); - EXPECT_EQ(0U, r.GetRangeEnd()); -} - -TEST(RangeTest, Constructor) { - RangeT r(3, 5); - EXPECT_TRUE(r.IsValid()); - EXPECT_EQ(5U, r.GetByteSize()); - EXPECT_EQ(3U, r.GetRangeBase()); - EXPECT_EQ(8U, r.GetRangeEnd()); -} - -TEST(RangeTest, Copy) { - RangeT orig(3, 5); - RangeT r = orig; - EXPECT_TRUE(r.IsValid()); - EXPECT_EQ(5U, r.GetByteSize()); - EXPECT_EQ(3U, r.GetRangeBase()); - EXPECT_EQ(8U, r.GetRangeEnd()); -} - -TEST(RangeTest, Clear) { - RangeT r(3, 5); - r.Clear(); - EXPECT_TRUE(r == RangeT()); -} - -TEST(RangeTest, ClearWithStarAddress) { - RangeT r(3, 5); - r.Clear(4); - EXPECT_TRUE(r == RangeT(4, 0)); -} - -TEST(RangeTest, SetRangeBase) { - RangeT r(3, 5); - r.SetRangeBase(6); - EXPECT_EQ(6U, r.GetRangeBase()); - EXPECT_EQ(11U, r.GetRangeEnd()); - EXPECT_EQ(5U, r.GetByteSize()); -} - -TEST(RangeTest, Slide) { - RangeT r(3, 5); - r.Slide(1); - EXPECT_EQ(4U, r.GetRangeBase()); - EXPECT_EQ(9U, r.GetRangeEnd()); - EXPECT_EQ(5U, r.GetByteSize()); - - r.Slide(2); - EXPECT_EQ(6U, r.GetRangeBase()); - EXPECT_EQ(11U, r.GetRangeEnd()); - EXPECT_EQ(5U, r.GetByteSize()); -} - -TEST(RangeTest, SlideZero) { - RangeT r(3, 5); - r.Slide(0); - EXPECT_EQ(3U, r.GetRangeBase()); - EXPECT_EQ(8U, r.GetRangeEnd()); - EXPECT_EQ(5U, r.GetByteSize()); -} - -TEST(RangeTest, ContainsAddr) { - RangeT r(3, 5); - EXPECT_FALSE(r.Contains(0)); - EXPECT_FALSE(r.Contains(1)); - EXPECT_FALSE(r.Contains(2)); - EXPECT_TRUE(r.Contains(3)); - EXPECT_TRUE(r.Contains(4)); - EXPECT_TRUE(r.Contains(5)); - EXPECT_TRUE(r.Contains(6)); - EXPECT_TRUE(r.Contains(7)); - EXPECT_FALSE(r.Contains(8)); - EXPECT_FALSE(r.Contains(9)); - EXPECT_FALSE(r.Contains(10)); -} - -TEST(RangeTest, ContainsAddrInvalid) { - RangeT r; - EXPECT_FALSE(r.Contains(0)); - EXPECT_FALSE(r.Contains(1)); - EXPECT_FALSE(r.Contains(2)); - EXPECT_FALSE(r.Contains(3)); - EXPECT_FALSE(r.Contains(4)); -} - -TEST(RangeTest, ContainsEndInclusive) { - RangeT r(3, 5); - EXPECT_FALSE(r.ContainsEndInclusive(0)); - EXPECT_FALSE(r.ContainsEndInclusive(1)); - EXPECT_FALSE(r.ContainsEndInclusive(2)); - EXPECT_TRUE(r.ContainsEndInclusive(3)); - EXPECT_TRUE(r.ContainsEndInclusive(4)); - EXPECT_TRUE(r.ContainsEndInclusive(5)); - EXPECT_TRUE(r.ContainsEndInclusive(6)); - EXPECT_TRUE(r.ContainsEndInclusive(7)); - EXPECT_TRUE(r.ContainsEndInclusive(8)); - EXPECT_FALSE(r.ContainsEndInclusive(9)); - EXPECT_FALSE(r.ContainsEndInclusive(10)); -} - -TEST(RangeTest, ContainsEndInclusiveInvalid) { - RangeT r; - // FIXME: This is probably not intended. - EXPECT_TRUE(r.ContainsEndInclusive(0)); - - EXPECT_FALSE(r.ContainsEndInclusive(1)); - EXPECT_FALSE(r.ContainsEndInclusive(2)); -} - -TEST(RangeTest, ContainsRange) { - RangeT r(3, 5); - - // Range always contains itself. - EXPECT_TRUE(r.Contains(r)); - // Invalid range. - EXPECT_FALSE(r.Contains(RangeT())); - // Range starts and ends before. - EXPECT_FALSE(r.Contains(RangeT(0, 3))); - // Range starts before but contains beginning. - EXPECT_FALSE(r.Contains(RangeT(0, 4))); - // Range starts before but contains beginning and more. - EXPECT_FALSE(r.Contains(RangeT(0, 5))); - // Range starts before and contains the other. - EXPECT_FALSE(r.Contains(RangeT(0, 9))); - // Range is fully inside. - EXPECT_TRUE(r.Contains(RangeT(4, 3))); - // Range has same start, but not as large. - EXPECT_TRUE(r.Contains(RangeT(3, 4))); - // Range has same end, but starts earlier. - EXPECT_TRUE(r.Contains(RangeT(4, 4))); - // Range starts inside, but stops after the end of r. - EXPECT_FALSE(r.Contains(RangeT(4, 5))); - // Range starts directly after r. - EXPECT_FALSE(r.Contains(RangeT(8, 2))); - // Range starts directly after r. - EXPECT_FALSE(r.Contains(RangeT(9, 2))); - - // Invalid range with different start. - // FIXME: The first two probably not intended. - EXPECT_TRUE(r.Contains(RangeT(3, 0))); - EXPECT_TRUE(r.Contains(RangeT(4, 0))); - EXPECT_FALSE(r.Contains(RangeT(8, 0))); -} - -TEST(RangeTest, ContainsRangeStartingFromZero) { - RangeT r(0, 3); - EXPECT_TRUE(r.Contains(r)); - - // FIXME: This is probably not intended. - EXPECT_TRUE(r.Contains(RangeT())); -} - -TEST(RangeTest, Union) { - RangeT r(3, 5); - - // Ranges that we can't merge because it's not adjoin/intersecting. - EXPECT_FALSE(r.Union(RangeT(9, 1))); - // Check that we didn't modify our range. - EXPECT_EQ(r, RangeT(3, 5)); - - // Another range we can't merge, but before r. - EXPECT_FALSE(r.Union(RangeT(1, 1))); - EXPECT_EQ(r, RangeT(3, 5)); - - // Merge an adjoin range after. - EXPECT_TRUE(r.Union(RangeT(8, 2))); - EXPECT_EQ(r, RangeT(3, 7)); - - // Merge an adjoin range before. - EXPECT_TRUE(r.Union(RangeT(1, 2))); - EXPECT_EQ(r, RangeT(1, 9)); - - // Merge an intersecting range after. - EXPECT_TRUE(r.Union(RangeT(8, 3))); - EXPECT_EQ(r, RangeT(1, 10)); - - // Merge an intersecting range before. - EXPECT_TRUE(r.Union(RangeT(0, 1))); - EXPECT_EQ(r, RangeT(0, 11)); - - // Merge a few ranges inside that shouldn't do anything. - EXPECT_TRUE(r.Union(RangeT(0, 3))); - EXPECT_EQ(r, RangeT(0, 11)); - EXPECT_TRUE(r.Union(RangeT(5, 1))); - EXPECT_EQ(r, RangeT(0, 11)); - EXPECT_TRUE(r.Union(RangeT(9, 2))); - EXPECT_EQ(r, RangeT(0, 11)); -} - -TEST(RangeTest, DoesAdjoinOrIntersect) { - RangeT r(3, 4); - - EXPECT_FALSE(r.DoesAdjoinOrIntersect(RangeT(1, 1))); - EXPECT_TRUE(r.DoesAdjoinOrIntersect(RangeT(1, 2))); - EXPECT_TRUE(r.DoesAdjoinOrIntersect(RangeT(2, 2))); - EXPECT_TRUE(r.DoesAdjoinOrIntersect(RangeT(4, 2))); - EXPECT_TRUE(r.DoesAdjoinOrIntersect(RangeT(6, 2))); - EXPECT_TRUE(r.DoesAdjoinOrIntersect(RangeT(7, 2))); - EXPECT_FALSE(r.DoesAdjoinOrIntersect(RangeT(8, 2))); -} - -TEST(RangeTest, DoesIntersect) { - RangeT r(3, 4); - - EXPECT_FALSE(r.DoesIntersect(RangeT(1, 1))); - EXPECT_FALSE(r.DoesIntersect(RangeT(1, 2))); - EXPECT_TRUE(r.DoesIntersect(RangeT(2, 2))); - EXPECT_TRUE(r.DoesIntersect(RangeT(4, 2))); - EXPECT_TRUE(r.DoesIntersect(RangeT(6, 2))); - EXPECT_FALSE(r.DoesIntersect(RangeT(7, 2))); - EXPECT_FALSE(r.DoesIntersect(RangeT(8, 2))); -} - -TEST(RangeTest, LessThan) { - RangeT r(10, 20); - - // Equal range. - EXPECT_FALSE(r < RangeT(10, 20)); - EXPECT_FALSE(RangeT(10, 20) < r); - - auto expect_ordered_less_than = [](RangeT r1, RangeT r2) { - EXPECT_TRUE(r1 < r2); - EXPECT_FALSE(r2 < r1); - }; - - // Same start, but bigger size. - expect_ordered_less_than(r, RangeT(10, 21)); - - // Start before and ends before. - expect_ordered_less_than(RangeT(9, 20), r); - - // Start before and equal size. - expect_ordered_less_than(RangeT(9, 21), r); - - // Start before and bigger size. - expect_ordered_less_than(RangeT(9, 22), r); - - // Start after and ends before. - expect_ordered_less_than(r, RangeT(11, 18)); - - // Start after and equal size. - expect_ordered_less_than(r, RangeT(11, 19)); - - // Start after and bigger size. - expect_ordered_less_than(r, RangeT(11, 20)); -} - -TEST(RangeTest, Equal) { - RangeT r(10, 20); - - // Equal range. - EXPECT_TRUE(r == RangeT(10, 20)); - - // Same start, different size. - EXPECT_FALSE(r == RangeT(10, 21)); - - // Different start, same size. - EXPECT_FALSE(r == RangeT(9, 20)); - - // Different start, different size. - EXPECT_FALSE(r == RangeT(9, 21)); - EXPECT_FALSE(r == RangeT(11, 19)); -} - -TEST(RangeTest, NotEqual) { - RangeT r(10, 20); - - EXPECT_FALSE(r != RangeT(10, 20)); - - EXPECT_TRUE(r != RangeT(10, 21)); - EXPECT_TRUE(r != RangeT(9, 20)); - EXPECT_TRUE(r != RangeT(9, 21)); -} - -// Comparison tests for invalid ranges (size == 0). - -TEST(RangeTest, LessThanInvalid) { - EXPECT_TRUE(RangeT() < RangeT(1, 0)); - EXPECT_TRUE(RangeT() < RangeT(2, 0)); - EXPECT_TRUE(RangeT(1, 0) < RangeT(2, 0)); -} - -TEST(RangeTest, EqualInvalid) { - RangeT r; - EXPECT_TRUE(r == RangeT()); - // Another invalid range, but with a different start. - EXPECT_FALSE(r == RangeT(3, 0)); -} - -TEST(RangeTest, NotEqualInvalid) { - RangeT r; - EXPECT_FALSE(r != RangeT()); - EXPECT_FALSE(r == RangeT(3, 0)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/RegisterValueTest.cpp b/gnu/llvm/lldb/unittests/Utility/RegisterValueTest.cpp deleted file mode 100644 index 5dd39ca04a2..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/RegisterValueTest.cpp +++ /dev/null @@ -1,55 +0,0 @@ -//===-- RegisterValueTest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/RegisterValue.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using llvm::APInt; - -TEST(RegisterValueTest, GetSet8) { - RegisterValue R8(uint8_t(47)); - EXPECT_EQ(47u, R8.GetAsUInt8()); - R8 = uint8_t(42); - EXPECT_EQ(42u, R8.GetAsUInt8()); - EXPECT_EQ(42u, R8.GetAsUInt16()); - EXPECT_EQ(42u, R8.GetAsUInt32()); - EXPECT_EQ(42u, R8.GetAsUInt64()); -} - -TEST(RegisterValueTest, GetScalarValue) { - using RV = RegisterValue; - const auto &Get = [](const RV &V) -> llvm::Optional { - Scalar S; - if (V.GetScalarValue(S)) - return S; - return llvm::None; - }; - EXPECT_EQ(Get(RV(uint8_t(47))), Scalar(47)); - EXPECT_EQ(Get(RV(uint16_t(4747))), Scalar(4747)); - EXPECT_EQ(Get(RV(uint32_t(47474242))), Scalar(47474242)); - EXPECT_EQ(Get(RV(uint64_t(4747424247474242))), Scalar(4747424247474242)); - EXPECT_EQ(Get(RV(APInt::getMaxValue(128))), Scalar(APInt::getMaxValue(128))); - EXPECT_EQ(Get(RV(47.5f)), Scalar(47.5f)); - EXPECT_EQ(Get(RV(47.5)), Scalar(47.5)); - EXPECT_EQ(Get(RV(47.5L)), Scalar(47.5L)); - EXPECT_EQ(Get(RV({0xff, 0xee, 0xdd, 0xcc}, lldb::eByteOrderLittle)), - Scalar(0xccddeeff)); - EXPECT_EQ(Get(RV({0xff, 0xee, 0xdd, 0xcc}, lldb::eByteOrderBig)), - Scalar(0xffeeddcc)); - EXPECT_EQ(Get(RV({0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x77, 0x66, - 0x55, 0x44, 0x33, 0x22, 0x11, 0x00}, - lldb::eByteOrderLittle)), - Scalar((APInt(128, 0x0011223344556677ull) << 64) | - APInt(128, 0x8899aabbccddeeff))); - EXPECT_EQ(Get(RV({0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x77, 0x66, - 0x55, 0x44, 0x33, 0x22, 0x11, 0x00}, - lldb::eByteOrderBig)), - Scalar((APInt(128, 0xffeeddccbbaa9988ull) << 64) | - APInt(128, 0x7766554433221100))); -} diff --git a/gnu/llvm/lldb/unittests/Utility/RegularExpressionTest.cpp b/gnu/llvm/lldb/unittests/Utility/RegularExpressionTest.cpp deleted file mode 100644 index 4ac8f4953aa..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/RegularExpressionTest.cpp +++ /dev/null @@ -1,65 +0,0 @@ -//===-- RegularExpressionTest.cpp -----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/RegularExpression.h" -#include "llvm/ADT/SmallVector.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace llvm; - -TEST(RegularExpression, Valid) { - RegularExpression r1("^[0-9]+$"); - cantFail(r1.GetError()); - EXPECT_TRUE(r1.IsValid()); - EXPECT_EQ("^[0-9]+$", r1.GetText()); - EXPECT_TRUE(r1.Execute("916")); -} - -TEST(RegularExpression, CopyAssignment) { - RegularExpression r1("^[0-9]+$"); - RegularExpression r2 = r1; - cantFail(r2.GetError()); - EXPECT_TRUE(r2.IsValid()); - EXPECT_EQ("^[0-9]+$", r2.GetText()); - EXPECT_TRUE(r2.Execute("916")); -} - -TEST(RegularExpression, Empty) { - RegularExpression r1(""); - Error err = r1.GetError(); - EXPECT_TRUE(static_cast(err)); - consumeError(std::move(err)); - EXPECT_FALSE(r1.IsValid()); - EXPECT_EQ("", r1.GetText()); - EXPECT_FALSE(r1.Execute("916")); -} - -TEST(RegularExpression, Invalid) { - RegularExpression r1("a[b-"); - Error err = r1.GetError(); - EXPECT_TRUE(static_cast(err)); - consumeError(std::move(err)); - EXPECT_FALSE(r1.IsValid()); - EXPECT_EQ("a[b-", r1.GetText()); - EXPECT_FALSE(r1.Execute("ab")); -} - -TEST(RegularExpression, Match) { - RegularExpression r1("[0-9]+([a-f])?:([0-9]+)"); - cantFail(r1.GetError()); - EXPECT_TRUE(r1.IsValid()); - EXPECT_EQ("[0-9]+([a-f])?:([0-9]+)", r1.GetText()); - - SmallVector matches; - EXPECT_TRUE(r1.Execute("9a:513b", &matches)); - EXPECT_EQ(3u, matches.size()); - EXPECT_EQ("9a:513", matches[0].str()); - EXPECT_EQ("a", matches[1].str()); - EXPECT_EQ("513", matches[2].str()); -} diff --git a/gnu/llvm/lldb/unittests/Utility/ReproducerInstrumentationTest.cpp b/gnu/llvm/lldb/unittests/Utility/ReproducerInstrumentationTest.cpp deleted file mode 100644 index ce259c5969e..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/ReproducerInstrumentationTest.cpp +++ /dev/null @@ -1,1167 +0,0 @@ -//===-- ReproducerInstrumentationTest.cpp ---------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include -#include - -#include "lldb/Utility/ReproducerInstrumentation.h" - -using namespace lldb_private; -using namespace lldb_private::repro; - -struct Foo { - int m = 1; -}; -struct Bar { - double m = 2; -}; - -bool operator==(const Foo &LHS, const Foo &RHS) { return LHS.m == RHS.m; } -bool operator==(const Bar &LHS, const Bar &RHS) { return LHS.m == RHS.m; } - -struct Pod { - bool a = true; - bool b = false; - char c = 'a'; - float d = 1.1f; - int e = 2; - long long f = 3; - long g = 4; - short h = 5; - unsigned char i = 'b'; - unsigned int j = 6; - unsigned long long k = 7; - unsigned long l = 8; - unsigned short m = 9; - - Pod() {} -}; - -class TestingRegistry : public Registry { -public: - TestingRegistry(); -}; - -static std::unique_ptr g_registry; -static llvm::Optional g_serializer; -static llvm::Optional g_deserializer; - -class TestInstrumentationData : public InstrumentationData { -public: - TestInstrumentationData() : InstrumentationData() {} - TestInstrumentationData(Serializer &serializer, Registry ®istry) - : InstrumentationData(serializer, registry) {} - TestInstrumentationData(Deserializer &deserializer, Registry ®istry) - : InstrumentationData(deserializer, registry) {} -}; - -inline TestInstrumentationData GetTestInstrumentationData() { - assert(!(g_serializer && g_deserializer)); - if (g_serializer) - return TestInstrumentationData(*g_serializer, *g_registry); - if (g_deserializer) - return TestInstrumentationData(*g_deserializer, *g_registry); - return TestInstrumentationData(); -} - -class TestInstrumentationDataRAII { -public: - TestInstrumentationDataRAII(llvm::raw_string_ostream &os) { - g_registry = std::make_unique(); - g_serializer.emplace(os); - g_deserializer.reset(); - } - - TestInstrumentationDataRAII(llvm::StringRef buffer) { - g_registry = std::make_unique(); - g_serializer.reset(); - g_deserializer.emplace(buffer); - } - - ~TestInstrumentationDataRAII() { Reset(); } - - void Reset() { - g_registry.reset(); - g_serializer.reset(); - g_deserializer.reset(); - } - - static std::unique_ptr - GetRecordingData(llvm::raw_string_ostream &os) { - return std::make_unique(os); - } - - static std::unique_ptr - GetReplayData(llvm::StringRef buffer) { - return std::make_unique(buffer); - } -}; - -#define LLDB_GET_INSTRUMENTATION_DATA() GetTestInstrumentationData() - -enum class Class { - Foo, - Bar, -}; - -class Instrumented { -public: - virtual ~Instrumented() = default; - virtual void Validate() = 0; - virtual bool IsA(Class c) = 0; -}; - -class InstrumentedFoo : public Instrumented { -public: - InstrumentedFoo() = default; - /// Instrumented methods. - /// { - InstrumentedFoo(int i); - InstrumentedFoo(const InstrumentedFoo &foo); - InstrumentedFoo &operator=(const InstrumentedFoo &foo); - void A(int a); - int GetA(); - void B(int &b) const; - int &GetB(); - int C(float *c); - float GetC(); - int D(const char *d) const; - size_t GetD(char *buffer, size_t length); - static void E(double e); - double GetE(); - static int F(); - bool GetF(); - void Validate() override; - //// } - virtual bool IsA(Class c) override { return c == Class::Foo; } - -private: - int m_a = 0; - mutable int m_b = 0; - float m_c = 0; - mutable std::string m_d = {}; - static double g_e; - static bool g_f; - mutable int m_called = 0; -}; - -class InstrumentedBar : public Instrumented { -public: - /// Instrumented methods. - /// { - InstrumentedBar(); - InstrumentedFoo GetInstrumentedFoo(); - InstrumentedFoo &GetInstrumentedFooRef(); - InstrumentedFoo *GetInstrumentedFooPtr(); - void SetInstrumentedFoo(InstrumentedFoo *foo); - void SetInstrumentedFoo(InstrumentedFoo &foo); - void Validate() override; - /// } - virtual bool IsA(Class c) override { return c == Class::Bar; } - -private: - bool m_get_instrumend_foo_called = false; - InstrumentedFoo *m_foo_set_by_ptr = nullptr; - InstrumentedFoo *m_foo_set_by_ref = nullptr; -}; - -double InstrumentedFoo::g_e = 0; -bool InstrumentedFoo::g_f = false; - -struct Validator { - enum Validation { valid, invalid }; - Validator(Class clazz, Validation validation) - : clazz(clazz), validation(validation) {} - Class clazz; - Validation validation; -}; - -void ValidateObjects(std::vector objects, - std::vector validators) { - ASSERT_EQ(validators.size(), objects.size()); - for (size_t i = 0; i < validators.size(); ++i) { - Validator &validator = validators[i]; - Instrumented *instrumented = static_cast(objects[i]); - EXPECT_TRUE(instrumented->IsA(validator.clazz)); - switch (validator.validation) { - case Validator::valid: - instrumented->Validate(); - break; - case Validator::invalid: - break; - } - } -} - -InstrumentedFoo::InstrumentedFoo(int i) { - LLDB_RECORD_CONSTRUCTOR(InstrumentedFoo, (int), i); -} - -InstrumentedFoo::InstrumentedFoo(const InstrumentedFoo &foo) { - LLDB_RECORD_CONSTRUCTOR(InstrumentedFoo, (const InstrumentedFoo &), foo); -} - -InstrumentedFoo &InstrumentedFoo::operator=(const InstrumentedFoo &foo) { - LLDB_RECORD_METHOD(InstrumentedFoo &, - InstrumentedFoo, operator=,(const InstrumentedFoo &), foo); - return *this; -} - -void InstrumentedFoo::A(int a) { - LLDB_RECORD_METHOD(void, InstrumentedFoo, A, (int), a); - B(a); - m_a = a; -} - -int InstrumentedFoo::GetA() { - LLDB_RECORD_METHOD_NO_ARGS(int, InstrumentedFoo, GetA); - - return m_a; -} - -void InstrumentedFoo::B(int &b) const { - LLDB_RECORD_METHOD_CONST(void, InstrumentedFoo, B, (int &), b); - m_called++; - m_b = b; -} - -int &InstrumentedFoo::GetB() { - LLDB_RECORD_METHOD_NO_ARGS(int &, InstrumentedFoo, GetB); - - return m_b; -} - -int InstrumentedFoo::C(float *c) { - LLDB_RECORD_METHOD(int, InstrumentedFoo, C, (float *), c); - m_c = *c; - return 1; -} - -float InstrumentedFoo::GetC() { - LLDB_RECORD_METHOD_NO_ARGS(float, InstrumentedFoo, GetC); - - return m_c; -} - -int InstrumentedFoo::D(const char *d) const { - LLDB_RECORD_METHOD_CONST(int, InstrumentedFoo, D, (const char *), d); - m_d = std::string(d); - return 2; -} - -size_t InstrumentedFoo::GetD(char *buffer, size_t length) { - LLDB_RECORD_CHAR_PTR_METHOD(size_t, InstrumentedFoo, GetD, (char *, size_t), - buffer, "", length); - ::snprintf(buffer, length, "%s", m_d.c_str()); - return m_d.size(); -} - -void InstrumentedFoo::E(double e) { - LLDB_RECORD_STATIC_METHOD(void, InstrumentedFoo, E, (double), e); - g_e = e; -} - -double InstrumentedFoo::GetE() { - LLDB_RECORD_METHOD_NO_ARGS(double, InstrumentedFoo, GetE); - - return g_e; -} - -int InstrumentedFoo::F() { - LLDB_RECORD_STATIC_METHOD_NO_ARGS(int, InstrumentedFoo, F); - g_f = true; - return 3; -} - -bool InstrumentedFoo::GetF() { - LLDB_RECORD_METHOD_NO_ARGS(bool, InstrumentedFoo, GetF); - - return g_f; -} - -void InstrumentedFoo::Validate() { - LLDB_RECORD_METHOD_NO_ARGS(void, InstrumentedFoo, Validate); - EXPECT_EQ(m_a, 100); - EXPECT_EQ(m_b, 200); - EXPECT_NEAR(m_c, 300.3, 0.01); - EXPECT_EQ(m_d, "bar"); - EXPECT_NEAR(g_e, 400.4, 0.01); - EXPECT_EQ(g_f, true); - EXPECT_EQ(2, m_called); -} - -InstrumentedBar::InstrumentedBar() { - LLDB_RECORD_CONSTRUCTOR_NO_ARGS(InstrumentedBar); -} - -InstrumentedFoo InstrumentedBar::GetInstrumentedFoo() { - LLDB_RECORD_METHOD_NO_ARGS(InstrumentedFoo, InstrumentedBar, - GetInstrumentedFoo); - m_get_instrumend_foo_called = true; - return LLDB_RECORD_RESULT(InstrumentedFoo(0)); -} - -InstrumentedFoo &InstrumentedBar::GetInstrumentedFooRef() { - LLDB_RECORD_METHOD_NO_ARGS(InstrumentedFoo &, InstrumentedBar, - GetInstrumentedFooRef); - InstrumentedFoo *foo = new InstrumentedFoo(0); - m_get_instrumend_foo_called = true; - return LLDB_RECORD_RESULT(*foo); -} - -InstrumentedFoo *InstrumentedBar::GetInstrumentedFooPtr() { - LLDB_RECORD_METHOD_NO_ARGS(InstrumentedFoo *, InstrumentedBar, - GetInstrumentedFooPtr); - InstrumentedFoo *foo = new InstrumentedFoo(0); - m_get_instrumend_foo_called = true; - return LLDB_RECORD_RESULT(foo); -} - -void InstrumentedBar::SetInstrumentedFoo(InstrumentedFoo *foo) { - LLDB_RECORD_METHOD(void, InstrumentedBar, SetInstrumentedFoo, - (InstrumentedFoo *), foo); - m_foo_set_by_ptr = foo; -} - -void InstrumentedBar::SetInstrumentedFoo(InstrumentedFoo &foo) { - LLDB_RECORD_METHOD(void, InstrumentedBar, SetInstrumentedFoo, - (InstrumentedFoo &), foo); - m_foo_set_by_ref = &foo; -} - -void InstrumentedBar::Validate() { - LLDB_RECORD_METHOD_NO_ARGS(void, InstrumentedBar, Validate); - - EXPECT_TRUE(m_get_instrumend_foo_called); - EXPECT_NE(m_foo_set_by_ptr, nullptr); - EXPECT_EQ(m_foo_set_by_ptr, m_foo_set_by_ref); -} - -TestingRegistry::TestingRegistry() { - Registry &R = *this; - - LLDB_REGISTER_CONSTRUCTOR(InstrumentedFoo, (int i)); - LLDB_REGISTER_CONSTRUCTOR(InstrumentedFoo, (const InstrumentedFoo &)); - LLDB_REGISTER_METHOD(InstrumentedFoo &, - InstrumentedFoo, operator=,(const InstrumentedFoo &)); - LLDB_REGISTER_METHOD(void, InstrumentedFoo, A, (int)); - LLDB_REGISTER_METHOD_CONST(void, InstrumentedFoo, B, (int &)); - LLDB_REGISTER_METHOD(int, InstrumentedFoo, C, (float *)); - LLDB_REGISTER_METHOD_CONST(int, InstrumentedFoo, D, (const char *)); - LLDB_REGISTER_STATIC_METHOD(void, InstrumentedFoo, E, (double)); - LLDB_REGISTER_STATIC_METHOD(int, InstrumentedFoo, F, ()); - LLDB_REGISTER_METHOD(void, InstrumentedFoo, Validate, ()); - - LLDB_REGISTER_CONSTRUCTOR(InstrumentedBar, ()); - LLDB_REGISTER_METHOD(InstrumentedFoo, InstrumentedBar, GetInstrumentedFoo, - ()); - LLDB_REGISTER_METHOD(InstrumentedFoo &, InstrumentedBar, - GetInstrumentedFooRef, ()); - LLDB_REGISTER_METHOD(InstrumentedFoo *, InstrumentedBar, - GetInstrumentedFooPtr, ()); - LLDB_REGISTER_METHOD(void, InstrumentedBar, SetInstrumentedFoo, - (InstrumentedFoo *)); - LLDB_REGISTER_METHOD(void, InstrumentedBar, SetInstrumentedFoo, - (InstrumentedFoo &)); - LLDB_REGISTER_METHOD(void, InstrumentedBar, Validate, ()); - LLDB_REGISTER_METHOD(int, InstrumentedFoo, GetA, ()); - LLDB_REGISTER_METHOD(int &, InstrumentedFoo, GetB, ()); - LLDB_REGISTER_METHOD(float, InstrumentedFoo, GetC, ()); - LLDB_REGISTER_METHOD(size_t, InstrumentedFoo, GetD, (char *, size_t)); - LLDB_REGISTER_METHOD(double, InstrumentedFoo, GetE, ()); - LLDB_REGISTER_METHOD(bool, InstrumentedFoo, GetF, ()); -} - -static const Pod p; - -TEST(IndexToObjectTest, ObjectForIndex) { - IndexToObject index_to_object; - Foo foo; - Bar bar; - - EXPECT_EQ(nullptr, index_to_object.GetObjectForIndex(1)); - EXPECT_EQ(nullptr, index_to_object.GetObjectForIndex(2)); - - index_to_object.AddObjectForIndex(1, foo); - index_to_object.AddObjectForIndex(2, &bar); - - EXPECT_EQ(&foo, index_to_object.GetObjectForIndex(1)); - EXPECT_EQ(&bar, index_to_object.GetObjectForIndex(2)); -} - -TEST(DeserializerTest, HasData) { - { - Deserializer deserializer(""); - EXPECT_FALSE(deserializer.HasData(1)); - } - - { - Deserializer deserializer("a"); - EXPECT_TRUE(deserializer.HasData(1)); - EXPECT_FALSE(deserializer.HasData(2)); - } -} - -TEST(SerializationRountripTest, SerializeDeserializePod) { - std::string str; - llvm::raw_string_ostream os(str); - - Serializer serializer(os); - serializer.SerializeAll(p.a, p.b, p.c, p.d, p.e, p.f, p.g, p.h, p.i, p.j, p.k, - p.l, p.m); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - EXPECT_EQ(p.a, deserializer.Deserialize()); - EXPECT_EQ(p.b, deserializer.Deserialize()); - EXPECT_EQ(p.c, deserializer.Deserialize()); - EXPECT_EQ(p.d, deserializer.Deserialize()); - EXPECT_EQ(p.e, deserializer.Deserialize()); - EXPECT_EQ(p.f, deserializer.Deserialize()); - EXPECT_EQ(p.g, deserializer.Deserialize()); - EXPECT_EQ(p.h, deserializer.Deserialize()); - EXPECT_EQ(p.i, deserializer.Deserialize()); - EXPECT_EQ(p.j, deserializer.Deserialize()); - EXPECT_EQ(p.k, deserializer.Deserialize()); - EXPECT_EQ(p.l, deserializer.Deserialize()); - EXPECT_EQ(p.m, deserializer.Deserialize()); -} - -TEST(SerializationRountripTest, SerializeDeserializePodPointers) { - std::string str; - llvm::raw_string_ostream os(str); - - Serializer serializer(os); - serializer.SerializeAll(&p.a, &p.b, &p.c, &p.d, &p.e, &p.f, &p.g, &p.h, &p.i, - &p.j, &p.k, &p.l, &p.m); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - EXPECT_EQ(p.a, *deserializer.Deserialize()); - EXPECT_EQ(p.b, *deserializer.Deserialize()); - EXPECT_EQ(p.c, *deserializer.Deserialize()); - EXPECT_EQ(p.d, *deserializer.Deserialize()); - EXPECT_EQ(p.e, *deserializer.Deserialize()); - EXPECT_EQ(p.f, *deserializer.Deserialize()); - EXPECT_EQ(p.g, *deserializer.Deserialize()); - EXPECT_EQ(p.h, *deserializer.Deserialize()); - EXPECT_EQ(p.i, *deserializer.Deserialize()); - EXPECT_EQ(p.j, *deserializer.Deserialize()); - EXPECT_EQ(p.k, *deserializer.Deserialize()); - EXPECT_EQ(p.l, *deserializer.Deserialize()); - EXPECT_EQ(p.m, *deserializer.Deserialize()); -} - -TEST(SerializationRountripTest, SerializeDeserializePodReferences) { - std::string str; - llvm::raw_string_ostream os(str); - - Serializer serializer(os); - serializer.SerializeAll(p.a, p.b, p.c, p.d, p.e, p.f, p.g, p.h, p.i, p.j, p.k, - p.l, p.m); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - EXPECT_EQ(p.a, deserializer.Deserialize()); - EXPECT_EQ(p.b, deserializer.Deserialize()); - EXPECT_EQ(p.c, deserializer.Deserialize()); - EXPECT_EQ(p.d, deserializer.Deserialize()); - EXPECT_EQ(p.e, deserializer.Deserialize()); - EXPECT_EQ(p.f, deserializer.Deserialize()); - EXPECT_EQ(p.g, deserializer.Deserialize()); - EXPECT_EQ(p.h, deserializer.Deserialize()); - EXPECT_EQ(p.i, deserializer.Deserialize()); - EXPECT_EQ(p.j, deserializer.Deserialize()); - EXPECT_EQ(p.k, deserializer.Deserialize()); - EXPECT_EQ(p.l, deserializer.Deserialize()); - EXPECT_EQ(p.m, deserializer.Deserialize()); -} - -TEST(SerializationRountripTest, SerializeDeserializeCString) { - const char *cstr = "string"; - - std::string str; - llvm::raw_string_ostream os(str); - - Serializer serializer(os); - serializer.SerializeAll(cstr); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - EXPECT_STREQ(cstr, deserializer.Deserialize()); -} - -TEST(SerializationRountripTest, SerializeDeserializeCStringNull) { - const char *cstr = nullptr; - - std::string str; - llvm::raw_string_ostream os(str); - - Serializer serializer(os); - serializer.SerializeAll(cstr); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - EXPECT_EQ(nullptr, deserializer.Deserialize()); -} - -TEST(SerializationRountripTest, SerializeDeserializeCStringArray) { - const char *foo = "foo"; - const char *bar = "bar"; - const char *baz = "baz"; - const char *arr[4] = {foo, bar, baz, nullptr}; - - std::string str; - llvm::raw_string_ostream os(str); - - Serializer serializer(os); - serializer.SerializeAll(static_cast(arr)); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - const char **deserialized = deserializer.Deserialize(); - EXPECT_STREQ("foo", deserialized[0]); - EXPECT_STREQ("bar", deserialized[1]); - EXPECT_STREQ("baz", deserialized[2]); -} - -TEST(SerializationRountripTest, SerializeDeserializeCStringArrayNullptrElem) { - const char *arr[1] = {nullptr}; - - std::string str; - llvm::raw_string_ostream os(str); - - Serializer serializer(os); - serializer.SerializeAll(static_cast(arr)); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - const char **deserialized = deserializer.Deserialize(); - EXPECT_EQ(nullptr, deserialized); -} - -TEST(SerializationRountripTest, SerializeDeserializeCStringArrayNullptr) { - std::string str; - llvm::raw_string_ostream os(str); - - Serializer serializer(os); - serializer.SerializeAll(static_cast(nullptr)); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - const char **deserialized = deserializer.Deserialize(); - EXPECT_EQ(nullptr, deserialized); -} - -TEST(SerializationRountripTest, SerializeDeserializeObjectPointer) { - Foo foo; - Bar bar; - - std::string str; - llvm::raw_string_ostream os(str); - - unsigned sequence = 123; - - Serializer serializer(os); - serializer.SerializeAll(sequence, static_cast(1)); - serializer.SerializeAll(sequence, static_cast(2)); - serializer.SerializeAll(&foo, &bar); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - deserializer.HandleReplayResult(&foo); - deserializer.HandleReplayResult(&bar); - - EXPECT_EQ(foo, *deserializer.Deserialize()); - EXPECT_EQ(bar, *deserializer.Deserialize()); -} - -TEST(SerializationRountripTest, SerializeDeserializeObjectReference) { - Foo foo; - Bar bar; - - std::string str; - llvm::raw_string_ostream os(str); - - unsigned sequence = 123; - - Serializer serializer(os); - serializer.SerializeAll(sequence, static_cast(1)); - serializer.SerializeAll(sequence, static_cast(2)); - serializer.SerializeAll(foo, bar); - - llvm::StringRef buffer(os.str()); - Deserializer deserializer(buffer); - - deserializer.HandleReplayResult(&foo); - deserializer.HandleReplayResult(&bar); - - EXPECT_EQ(foo, deserializer.Deserialize()); - EXPECT_EQ(bar, deserializer.Deserialize()); -} - -TEST(RecordReplayTest, InstrumentedFoo) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - InstrumentedFoo foo(0); - foo.A(100); - foo.B(b); - foo.C(&c); - foo.D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - } - - TestingRegistry registry; - Deserializer deserializer(os.str()); - registry.Replay(deserializer); - - ValidateObjects(deserializer.GetAllObjects(), - {{Class::Foo, Validator::valid}}); -} - -TEST(RecordReplayTest, InstrumentedFooSameThis) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - InstrumentedFoo *foo = new InstrumentedFoo(0); - foo->A(100); - foo->B(b); - foo->C(&c); - foo->D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo->Validate(); - foo->~InstrumentedFoo(); - - InstrumentedFoo *foo2 = new (foo) InstrumentedFoo(0); - foo2->A(100); - foo2->B(b); - foo2->C(&c); - foo2->D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo2->Validate(); - delete foo2; - } - - TestingRegistry registry; - Deserializer deserializer(os.str()); - registry.Replay(deserializer); - - ValidateObjects(deserializer.GetAllObjects(), - {{Class::Foo, Validator::valid}}); -} - -TEST(RecordReplayTest, InstrumentedBar) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - InstrumentedBar bar; - InstrumentedFoo foo = bar.GetInstrumentedFoo(); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - foo.A(100); - foo.B(b); - foo.C(&c); - foo.D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - bar.SetInstrumentedFoo(foo); - bar.SetInstrumentedFoo(&foo); - bar.Validate(); - } - - TestingRegistry registry; - Deserializer deserializer(os.str()); - registry.Replay(deserializer); - - ValidateObjects( - deserializer.GetAllObjects(), - { - {Class::Bar, Validator::valid}, // bar - {Class::Foo, Validator::invalid}, // bar.GetInstrumentedFoo() - {Class::Foo, Validator::valid}, // foo - }); -} - -TEST(RecordReplayTest, InstrumentedBarRef) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - InstrumentedBar bar; - InstrumentedFoo &foo = bar.GetInstrumentedFooRef(); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - foo.A(100); - foo.B(b); - foo.C(&c); - foo.D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - bar.SetInstrumentedFoo(foo); - bar.SetInstrumentedFoo(&foo); - bar.Validate(); - } - - TestingRegistry registry; - Deserializer deserializer(os.str()); - registry.Replay(deserializer); - - ValidateObjects( - deserializer.GetAllObjects(), - {{Class::Bar, Validator::valid}, {Class::Foo, Validator::valid}}); -} - -TEST(RecordReplayTest, InstrumentedBarPtr) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - InstrumentedBar bar; - InstrumentedFoo &foo = *(bar.GetInstrumentedFooPtr()); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - foo.A(100); - foo.B(b); - foo.C(&c); - foo.D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - bar.SetInstrumentedFoo(foo); - bar.SetInstrumentedFoo(&foo); - bar.Validate(); - } - - TestingRegistry registry; - Deserializer deserializer(os.str()); - registry.Replay(deserializer); - - ValidateObjects( - deserializer.GetAllObjects(), - {{Class::Bar, Validator::valid}, {Class::Foo, Validator::valid}}); -} - -TEST(PassiveReplayTest, InstrumentedFoo) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - InstrumentedFoo foo(0); - foo.A(100); - foo.B(b); - foo.C(&c); - foo.D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - EXPECT_EQ(foo.GetB(), 200); - EXPECT_NEAR(foo.GetC(), 300.3, 0.01); - char buffer[100]; - foo.GetD(buffer, 100); - EXPECT_STREQ(buffer, "bar"); - EXPECT_NEAR(foo.GetE(), 400.4, 0.01); - EXPECT_EQ(foo.GetF(), true); - } - - std::string buffer = os.str(); - - { - auto data = TestInstrumentationDataRAII::GetReplayData(buffer); - - int b = 999; - float c = 999.9f; - double e = 999.9; - - InstrumentedFoo foo(9); - foo.A(999); - foo.B(b); - foo.C(&c); - foo.D("999"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - EXPECT_EQ(foo.GetB(), 200); - EXPECT_NEAR(foo.GetC(), 300.3, 0.01); - char buffer[100]; - foo.GetD(buffer, 100); - EXPECT_STREQ(buffer, "bar"); - EXPECT_NEAR(foo.GetE(), 400.4, 0.01); - EXPECT_EQ(foo.GetF(), true); - } -} - -TEST(PassiveReplayTest, InstrumentedFooInvalid) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - InstrumentedFoo foo(0); - foo.A(100); - foo.B(b); - foo.C(&c); - foo.D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - EXPECT_EQ(foo.GetB(), 200); - EXPECT_NEAR(foo.GetC(), 300.3, 0.01); - EXPECT_NEAR(foo.GetE(), 400.4, 0.01); - EXPECT_EQ(foo.GetF(), true); - } - - std::string buffer = os.str(); - - { - auto data = TestInstrumentationDataRAII::GetReplayData(buffer); - - int b = 999; - float c = 999.9f; - double e = 999.9; - - InstrumentedFoo foo(9); - foo.A(999); - foo.B(b); - foo.C(&c); - foo.D("999"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - // Detect divergence. - EXPECT_DEATH(foo.GetA(), ""); - } -} - -TEST(PassiveReplayTest, InstrumentedBar) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - InstrumentedBar bar; - InstrumentedFoo foo = bar.GetInstrumentedFoo(); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - foo.A(100); - foo.B(b); - foo.C(&c); - foo.D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - EXPECT_EQ(foo.GetB(), 200); - EXPECT_NEAR(foo.GetC(), 300.3, 0.01); - char buffer[100]; - foo.GetD(buffer, 100); - EXPECT_STREQ(buffer, "bar"); - EXPECT_NEAR(foo.GetE(), 400.4, 0.01); - EXPECT_EQ(foo.GetF(), true); - - bar.SetInstrumentedFoo(foo); - bar.SetInstrumentedFoo(&foo); - bar.Validate(); - } - - std::string buffer = os.str(); - - { - auto data = TestInstrumentationDataRAII::GetReplayData(buffer); - - InstrumentedBar bar; - InstrumentedFoo foo = bar.GetInstrumentedFoo(); - - int b = 99; - float c = 999.9f; - double e = 999.9; - - foo.A(999); - foo.B(b); - foo.C(&c); - foo.D("999"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - EXPECT_EQ(foo.GetB(), 200); - EXPECT_NEAR(foo.GetC(), 300.3, 0.01); - char buffer[100]; - foo.GetD(buffer, 100); - EXPECT_STREQ(buffer, "bar"); - EXPECT_NEAR(foo.GetE(), 400.4, 0.01); - EXPECT_EQ(foo.GetF(), true); - - bar.SetInstrumentedFoo(foo); - bar.SetInstrumentedFoo(&foo); - bar.Validate(); - } -} - -TEST(PassiveReplayTest, InstrumentedBarRef) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - InstrumentedBar bar; - InstrumentedFoo &foo = bar.GetInstrumentedFooRef(); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - foo.A(100); - foo.B(b); - foo.C(&c); - foo.D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - EXPECT_EQ(foo.GetB(), 200); - EXPECT_NEAR(foo.GetC(), 300.3, 0.01); - char buffer[100]; - foo.GetD(buffer, 100); - EXPECT_STREQ(buffer, "bar"); - EXPECT_NEAR(foo.GetE(), 400.4, 0.01); - EXPECT_EQ(foo.GetF(), true); - - bar.SetInstrumentedFoo(foo); - bar.SetInstrumentedFoo(&foo); - bar.Validate(); - } - - std::string buffer = os.str(); - - { - auto data = TestInstrumentationDataRAII::GetReplayData(buffer); - - InstrumentedBar bar; - InstrumentedFoo &foo = bar.GetInstrumentedFooRef(); - - int b = 99; - float c = 999.9f; - double e = 999.9; - - foo.A(999); - foo.B(b); - foo.C(&c); - foo.D("999"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - EXPECT_EQ(foo.GetB(), 200); - EXPECT_NEAR(foo.GetC(), 300.3, 0.01); - char buffer[100]; - foo.GetD(buffer, 100); - EXPECT_STREQ(buffer, "bar"); - EXPECT_NEAR(foo.GetE(), 400.4, 0.01); - EXPECT_EQ(foo.GetF(), true); - - bar.SetInstrumentedFoo(foo); - bar.SetInstrumentedFoo(&foo); - bar.Validate(); - } -} - -TEST(PassiveReplayTest, InstrumentedBarPtr) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - InstrumentedBar bar; - InstrumentedFoo &foo = *(bar.GetInstrumentedFooPtr()); - - int b = 200; - float c = 300.3f; - double e = 400.4; - - foo.A(100); - foo.B(b); - foo.C(&c); - foo.D("bar"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - EXPECT_EQ(foo.GetB(), 200); - EXPECT_NEAR(foo.GetC(), 300.3, 0.01); - char buffer[100]; - foo.GetD(buffer, 100); - EXPECT_STREQ(buffer, "bar"); - EXPECT_NEAR(foo.GetE(), 400.4, 0.01); - EXPECT_EQ(foo.GetF(), true); - - bar.SetInstrumentedFoo(foo); - bar.SetInstrumentedFoo(&foo); - bar.Validate(); - } - - std::string buffer = os.str(); - - { - auto data = TestInstrumentationDataRAII::GetReplayData(buffer); - - InstrumentedBar bar; - InstrumentedFoo &foo = *(bar.GetInstrumentedFooPtr()); - - int b = 99; - float c = 999.9f; - double e = 999.9; - - foo.A(999); - foo.B(b); - foo.C(&c); - foo.D("999"); - InstrumentedFoo::E(e); - InstrumentedFoo::F(); - foo.Validate(); - - EXPECT_EQ(foo.GetA(), 100); - EXPECT_EQ(foo.GetB(), 200); - EXPECT_NEAR(foo.GetC(), 300.3, 0.01); - char buffer[100]; - foo.GetD(buffer, 100); - EXPECT_STREQ(buffer, "bar"); - EXPECT_NEAR(foo.GetE(), 400.4, 0.01); - EXPECT_EQ(foo.GetF(), true); - - bar.SetInstrumentedFoo(foo); - bar.SetInstrumentedFoo(&foo); - bar.Validate(); - } -} - -TEST(RecordReplayTest, ValidSequence) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - unsigned sequence = 1; - int (*f)() = &lldb_private::repro::invoke::method< - InstrumentedFoo::F>::record; - unsigned id = g_registry->GetID(uintptr_t(f)); - g_serializer->SerializeAll(sequence, id); - - unsigned result = 0; - g_serializer->SerializeAll(sequence, result); - } - - TestingRegistry registry; - Deserializer deserializer(os.str()); - registry.Replay(deserializer); -} - -TEST(RecordReplayTest, InvalidSequence) { - std::string str; - llvm::raw_string_ostream os(str); - - { - auto data = TestInstrumentationDataRAII::GetRecordingData(os); - - unsigned sequence = 1; - int (*f)() = &lldb_private::repro::invoke::method< - InstrumentedFoo::F>::record; - unsigned id = g_registry->GetID(uintptr_t(f)); - g_serializer->SerializeAll(sequence, id); - - unsigned result = 0; - unsigned invalid_sequence = 2; - g_serializer->SerializeAll(invalid_sequence, result); - } - - TestingRegistry registry; - Deserializer deserializer(os.str()); - EXPECT_DEATH(registry.Replay(deserializer), ""); -} diff --git a/gnu/llvm/lldb/unittests/Utility/ReproducerTest.cpp b/gnu/llvm/lldb/unittests/Utility/ReproducerTest.cpp deleted file mode 100644 index b276de3bf1a..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/ReproducerTest.cpp +++ /dev/null @@ -1,262 +0,0 @@ -//===-- ReproducerTest.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "lldb/Utility/FileSpec.h" -#include "lldb/Utility/Reproducer.h" -#include "lldb/Utility/ReproducerProvider.h" -#include "llvm/ADT/ScopeExit.h" -#include "llvm/Support/Error.h" -#include "llvm/Testing/Support/Error.h" - -using namespace llvm; -using namespace lldb_private; -using namespace lldb_private::repro; - -class DummyProvider : public repro::Provider { -public: - struct Info { - static const char *name; - static const char *file; - }; - - DummyProvider(const FileSpec &directory) : Provider(directory) {} - - static char ID; -}; - -class YamlMultiProvider - : public MultiProvider { -public: - struct Info { - static const char *name; - static const char *file; - }; - - YamlMultiProvider(const FileSpec &directory) : MultiProvider(directory) {} - - static char ID; -}; - -const char *DummyProvider::Info::name = "dummy"; -const char *DummyProvider::Info::file = "dummy.yaml"; -const char *YamlMultiProvider::Info::name = "mutli"; -const char *YamlMultiProvider::Info::file = "mutli.yaml"; -char DummyProvider::ID = 0; -char YamlMultiProvider::ID = 0; - -class DummyReproducer : public Reproducer { -public: - DummyReproducer() : Reproducer(){}; - - using Reproducer::SetCapture; - using Reproducer::SetReplay; -}; - -struct YamlData { - YamlData() : i(-1) {} - YamlData(int i) : i(i) {} - int i; -}; - -inline bool operator==(const YamlData &LHS, const YamlData &RHS) { - return LHS.i == RHS.i; -} - -LLVM_YAML_IS_DOCUMENT_LIST_VECTOR(YamlData) - -namespace llvm { -namespace yaml { -template <> struct MappingTraits { - static void mapping(IO &io, YamlData &Y) { io.mapRequired("i", Y.i); }; -}; -} // namespace yaml -} // namespace llvm - -TEST(ReproducerTest, SetCapture) { - DummyReproducer reproducer; - - // Initially both generator and loader are unset. - EXPECT_EQ(nullptr, reproducer.GetGenerator()); - EXPECT_EQ(nullptr, reproducer.GetLoader()); - - // Enable capture and check that means we have a generator. - EXPECT_THAT_ERROR( - reproducer.SetCapture(FileSpec("//bogus/path", FileSpec::Style::posix)), - Succeeded()); - EXPECT_NE(nullptr, reproducer.GetGenerator()); - EXPECT_EQ(FileSpec("//bogus/path", FileSpec::Style::posix), - reproducer.GetGenerator()->GetRoot()); - EXPECT_EQ(FileSpec("//bogus/path", FileSpec::Style::posix), - reproducer.GetReproducerPath()); - - // Ensure that we cannot enable replay. - EXPECT_THAT_ERROR( - reproducer.SetReplay(FileSpec("//bogus/path", FileSpec::Style::posix)), - Failed()); - EXPECT_EQ(nullptr, reproducer.GetLoader()); - - // Ensure we can disable the generator again. - EXPECT_THAT_ERROR(reproducer.SetCapture(llvm::None), Succeeded()); - EXPECT_EQ(nullptr, reproducer.GetGenerator()); - EXPECT_EQ(nullptr, reproducer.GetLoader()); -} - -TEST(ReproducerTest, SetReplay) { - DummyReproducer reproducer; - - // Initially both generator and loader are unset. - EXPECT_EQ(nullptr, reproducer.GetGenerator()); - EXPECT_EQ(nullptr, reproducer.GetLoader()); - - // Expected to fail because we can't load the index. - EXPECT_THAT_ERROR( - reproducer.SetReplay(FileSpec("//bogus/path", FileSpec::Style::posix)), - Failed()); - // However the loader should still be set, which we check here. - EXPECT_NE(nullptr, reproducer.GetLoader()); - - // Make sure the bogus path is correctly set. - EXPECT_EQ(FileSpec("//bogus/path", FileSpec::Style::posix), - reproducer.GetLoader()->GetRoot()); - EXPECT_EQ(FileSpec("//bogus/path", FileSpec::Style::posix), - reproducer.GetReproducerPath()); - - // Ensure that we cannot enable replay. - EXPECT_THAT_ERROR( - reproducer.SetCapture(FileSpec("//bogus/path", FileSpec::Style::posix)), - Failed()); - EXPECT_EQ(nullptr, reproducer.GetGenerator()); -} - -TEST(GeneratorTest, Create) { - DummyReproducer reproducer; - - EXPECT_THAT_ERROR( - reproducer.SetCapture(FileSpec("//bogus/path", FileSpec::Style::posix)), - Succeeded()); - auto &generator = *reproducer.GetGenerator(); - - auto *provider = generator.Create(); - EXPECT_NE(nullptr, provider); - EXPECT_EQ(FileSpec("//bogus/path", FileSpec::Style::posix), - provider->GetRoot()); -} - -TEST(GeneratorTest, Get) { - DummyReproducer reproducer; - - EXPECT_THAT_ERROR( - reproducer.SetCapture(FileSpec("//bogus/path", FileSpec::Style::posix)), - Succeeded()); - auto &generator = *reproducer.GetGenerator(); - - auto *provider = generator.Create(); - EXPECT_NE(nullptr, provider); - - auto *provider_alt = generator.Get(); - EXPECT_EQ(provider, provider_alt); -} - -TEST(GeneratorTest, GetOrCreate) { - DummyReproducer reproducer; - - EXPECT_THAT_ERROR( - reproducer.SetCapture(FileSpec("//bogus/path", FileSpec::Style::posix)), - Succeeded()); - auto &generator = *reproducer.GetGenerator(); - - auto &provider = generator.GetOrCreate(); - EXPECT_EQ(FileSpec("//bogus/path", FileSpec::Style::posix), - provider.GetRoot()); - - auto &provider_alt = generator.GetOrCreate(); - EXPECT_EQ(&provider, &provider_alt); -} - -TEST(GeneratorTest, YamlMultiProvider) { - SmallString<128> root; - std::error_code ec = llvm::sys::fs::createUniqueDirectory("reproducer", root); - ASSERT_FALSE(static_cast(ec)); - - auto cleanup = llvm::make_scope_exit( - [&] { EXPECT_FALSE(llvm::sys::fs::remove_directories(root.str())); }); - - YamlData data0(0); - YamlData data1(1); - YamlData data2(2); - YamlData data3(3); - - { - DummyReproducer reproducer; - EXPECT_THAT_ERROR(reproducer.SetCapture(FileSpec(root.str())), Succeeded()); - - auto &generator = *reproducer.GetGenerator(); - auto *provider = generator.Create(); - ASSERT_NE(nullptr, provider); - - auto *recorder = provider->GetNewRecorder(); - ASSERT_NE(nullptr, recorder); - recorder->Record(data0); - recorder->Record(data1); - - recorder = provider->GetNewRecorder(); - ASSERT_NE(nullptr, recorder); - recorder->Record(data2); - recorder->Record(data3); - - generator.Keep(); - } - - { - DummyReproducer reproducer; - EXPECT_THAT_ERROR(reproducer.SetReplay(FileSpec(root.str())), Succeeded()); - - auto &loader = *reproducer.GetLoader(); - std::unique_ptr> multi_loader = - repro::MultiLoader::Create(&loader); - - // Read the first file. - { - llvm::Optional file = multi_loader->GetNextFile(); - EXPECT_TRUE(static_cast(file)); - - auto buffer = llvm::MemoryBuffer::getFile(*file); - EXPECT_TRUE(static_cast(buffer)); - - yaml::Input yin((*buffer)->getBuffer()); - std::vector data; - yin >> data; - - ASSERT_EQ(data.size(), 2U); - EXPECT_THAT(data, testing::ElementsAre(data0, data1)); - } - - // Read the second file. - { - llvm::Optional file = multi_loader->GetNextFile(); - EXPECT_TRUE(static_cast(file)); - - auto buffer = llvm::MemoryBuffer::getFile(*file); - EXPECT_TRUE(static_cast(buffer)); - - yaml::Input yin((*buffer)->getBuffer()); - std::vector data; - yin >> data; - - ASSERT_EQ(data.size(), 2U); - EXPECT_THAT(data, testing::ElementsAre(data2, data3)); - } - - // There is no third file. - llvm::Optional file = multi_loader->GetNextFile(); - EXPECT_FALSE(static_cast(file)); - } -} diff --git a/gnu/llvm/lldb/unittests/Utility/ScalarTest.cpp b/gnu/llvm/lldb/unittests/Utility/ScalarTest.cpp deleted file mode 100644 index 1e65cd53573..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/ScalarTest.cpp +++ /dev/null @@ -1,402 +0,0 @@ -//===-- ScalarTest.cpp ----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/DataExtractor.h" -#include "lldb/Utility/Endian.h" -#include "lldb/Utility/Scalar.h" -#include "lldb/Utility/Status.h" -#include "lldb/Utility/StreamString.h" -#include "llvm/Testing/Support/Error.h" - -using namespace lldb_private; -using llvm::APFloat; -using llvm::APInt; -using llvm::Failed; -using llvm::Succeeded; - -template -bool checkInequality(T c1, T c2) { - return (Scalar(c1) != Scalar(c2)); -} - -template -bool checkEquality(T c1, T c2) { - return (Scalar(c1) == Scalar(c2)); -} - -TEST(ScalarTest, Equality) { - ASSERT_TRUE(checkInequality(23, 24)); - ASSERT_TRUE(checkEquality(96, 96)); - ASSERT_TRUE(checkInequality(4.0f, 4.5f)); - ASSERT_TRUE(checkEquality(4.0f, 4.0f)); - - auto apint1 = APInt(64, 234); - auto apint2 = APInt(64, 246); - ASSERT_TRUE(checkInequality(apint1, apint2)); - ASSERT_TRUE(checkEquality(apint1, apint1)); - - Scalar void1; - Scalar void2; - float f1 = 2.0; - ASSERT_TRUE(void1 == void2); - ASSERT_FALSE(void1 == Scalar(f1)); -} - -TEST(ScalarTest, Comparison) { - auto s1 = Scalar(23); - auto s2 = Scalar(46); - ASSERT_TRUE(s1 < s2); - ASSERT_TRUE(s1 <= s2); - ASSERT_TRUE(s2 > s1); - ASSERT_TRUE(s2 >= s1); -} - -TEST(ScalarTest, ComparisonFloat) { - auto s1 = Scalar(23.0f); - auto s2 = Scalar(46.0f); - ASSERT_TRUE(s1 < s2); - ASSERT_TRUE(s1 <= s2); - ASSERT_TRUE(s2 > s1); - ASSERT_TRUE(s2 >= s1); -} - -template static void CheckConversion(T val) { - SCOPED_TRACE("val = " + std::to_string(val)); - EXPECT_EQ((signed char)val, Scalar(val).SChar()); - EXPECT_EQ((unsigned char)val, Scalar(val).UChar()); - EXPECT_EQ((short)val, Scalar(val).SShort()); - EXPECT_EQ((unsigned short)val, Scalar(val).UShort()); - EXPECT_EQ((int)val, Scalar(val).SInt()); - EXPECT_EQ((unsigned)val, Scalar(val).UInt()); - EXPECT_EQ((long)val, Scalar(val).SLong()); - EXPECT_EQ((unsigned long)val, Scalar(val).ULong()); - EXPECT_EQ((long long)val, Scalar(val).SLongLong()); - EXPECT_EQ((unsigned long long)val, Scalar(val).ULongLong()); - EXPECT_NEAR((float)val, Scalar(val).Float(), std::abs(val / 1e6)); - EXPECT_NEAR((double)val, Scalar(val).Double(), std::abs(val / 1e12)); - EXPECT_NEAR((long double)val, Scalar(val).LongDouble(), std::abs(val / 1e12)); -} - -TEST(ScalarTest, Getters) { - CheckConversion(0x87654321); - CheckConversion(0x87654321u); - CheckConversion(0x87654321l); - CheckConversion(0x87654321ul); - CheckConversion(0x8765432112345678ll); - CheckConversion(0x8765432112345678ull); - CheckConversion(42.25f); - CheckConversion(42.25); - CheckConversion(42.25L); - - EXPECT_EQ(APInt(128, 1) << 70, Scalar(std::pow(2.0f, 70.0f)).SInt128(APInt())); - EXPECT_EQ(APInt(128, -1, true) << 70, - Scalar(-std::pow(2.0f, 70.0f)).SInt128(APInt())); - EXPECT_EQ(APInt(128, 1) << 70, - Scalar(std::pow(2.0f, 70.0f)).UInt128(APInt())); - EXPECT_EQ(APInt(128, 0), Scalar(-std::pow(2.0f, 70.0f)).UInt128(APInt())); - - EXPECT_EQ(APInt(128, 1) << 70, Scalar(std::pow(2.0, 70.0)).SInt128(APInt())); - EXPECT_EQ(APInt(128, -1, true) << 70, - Scalar(-std::pow(2.0, 70.0)).SInt128(APInt())); - EXPECT_EQ(APInt(128, 1) << 70, Scalar(std::pow(2.0, 70.0)).UInt128(APInt())); - EXPECT_EQ(APInt(128, 0), Scalar(-std::pow(2.0, 70.0)).UInt128(APInt())); -} - -TEST(ScalarTest, RightShiftOperator) { - int a = 0x00001000; - int b = 0xFFFFFFFF; - int c = 4; - Scalar a_scalar(a); - Scalar b_scalar(b); - Scalar c_scalar(c); - ASSERT_EQ(a >> c, a_scalar >> c_scalar); - ASSERT_EQ(b >> c, b_scalar >> c_scalar); -} - -TEST(ScalarTest, GetBytes) { - uint8_t Storage[256]; - int a = 0x01020304; - long long b = 0x0102030405060708LL; - float c = 1234567.89e32f; - double d = 1234567.89e42; - char e[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - char f[32] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}; - Scalar a_scalar(a); - Scalar b_scalar(b); - Scalar c_scalar(c); - Scalar d_scalar(d); - Scalar e_scalar; - Scalar f_scalar; - DataExtractor e_data(e, sizeof(e), endian::InlHostByteOrder(), - sizeof(void *)); - DataExtractor f_data(f, sizeof(f), endian::InlHostByteOrder(), - sizeof(void *)); - a_scalar.GetBytes(Storage); - ASSERT_EQ(0, memcmp(&a, Storage, sizeof(a))); - b_scalar.GetBytes(Storage); - ASSERT_EQ(0, memcmp(&b, Storage, sizeof(b))); - c_scalar.GetBytes(Storage); - ASSERT_EQ(0, memcmp(&c, Storage, sizeof(c))); - d_scalar.GetBytes(Storage); - ASSERT_EQ(0, memcmp(&d, Storage, sizeof(d))); - ASSERT_THAT_ERROR( - e_scalar.SetValueFromData(e_data, lldb::eEncodingUint, sizeof(e)) - .ToError(), - llvm::Succeeded()); - e_scalar.GetBytes(Storage); - ASSERT_EQ(0, memcmp(e, Storage, sizeof(e))); - ASSERT_THAT_ERROR( - f_scalar.SetValueFromData(f_data, lldb::eEncodingUint, sizeof(f)) - .ToError(), - llvm::Succeeded()); - f_scalar.GetBytes(Storage); - ASSERT_EQ(0, memcmp(f, Storage, sizeof(f))); -} - -TEST(ScalarTest, SetValueFromData) { - uint8_t a[] = {1, 2, 3, 4}; - Scalar s; - ASSERT_THAT_ERROR( - s.SetValueFromData( - DataExtractor(a, sizeof(a), lldb::eByteOrderLittle, sizeof(void *)), - lldb::eEncodingSint, sizeof(a)) - .ToError(), - llvm::Succeeded()); - EXPECT_EQ(0x04030201, s); - ASSERT_THAT_ERROR( - s.SetValueFromData( - DataExtractor(a, sizeof(a), lldb::eByteOrderBig, sizeof(void *)), - lldb::eEncodingSint, sizeof(a)) - .ToError(), - llvm::Succeeded()); - EXPECT_EQ(0x01020304, s); -} - -TEST(ScalarTest, CastOperations) { - long long a = 0xf1f2f3f4f5f6f7f8LL; - Scalar a_scalar(a); - EXPECT_EQ((signed char)a, a_scalar.SChar()); - EXPECT_EQ((unsigned char)a, a_scalar.UChar()); - EXPECT_EQ((signed short)a, a_scalar.SShort()); - EXPECT_EQ((unsigned short)a, a_scalar.UShort()); - EXPECT_EQ((signed int)a, a_scalar.SInt()); - EXPECT_EQ((unsigned int)a, a_scalar.UInt()); - EXPECT_EQ((signed long)a, a_scalar.SLong()); - EXPECT_EQ((unsigned long)a, a_scalar.ULong()); - EXPECT_EQ((signed long long)a, a_scalar.SLongLong()); - EXPECT_EQ((unsigned long long)a, a_scalar.ULongLong()); - - int a2 = 23; - Scalar a2_scalar(a2); - EXPECT_EQ((float)a2, a2_scalar.Float()); - EXPECT_EQ((double)a2, a2_scalar.Double()); - EXPECT_EQ((long double)a2, a2_scalar.LongDouble()); - - EXPECT_EQ(std::numeric_limits::min(), Scalar(-1.0f).UInt()); - EXPECT_EQ(std::numeric_limits::max(), Scalar(1e11f).UInt()); - EXPECT_EQ(std::numeric_limits::min(), - Scalar(-1.0).ULongLong()); - EXPECT_EQ(std::numeric_limits::max(), - Scalar(1e22).ULongLong()); - - EXPECT_EQ(std::numeric_limits::min(), Scalar(-1e11f).SInt()); - EXPECT_EQ(std::numeric_limits::max(), Scalar(1e11f).SInt()); - EXPECT_EQ(std::numeric_limits::min(), Scalar(-1e22).SLongLong()); - EXPECT_EQ(std::numeric_limits::max(), Scalar(1e22).SLongLong()); -} - -TEST(ScalarTest, ExtractBitfield) { - uint32_t len = sizeof(long long) * 8; - - long long a1 = 0xf1f2f3f4f5f6f7f8LL; - long long b1 = 0xff1f2f3f4f5f6f7fLL; - Scalar s_scalar(a1); - ASSERT_TRUE(s_scalar.ExtractBitfield(0, 0)); - EXPECT_EQ(s_scalar, a1); - ASSERT_TRUE(s_scalar.ExtractBitfield(len, 0)); - EXPECT_EQ(s_scalar, a1); - ASSERT_TRUE(s_scalar.ExtractBitfield(len - 4, 4)); - EXPECT_EQ(s_scalar, b1); - - unsigned long long a2 = 0xf1f2f3f4f5f6f7f8ULL; - unsigned long long b2 = 0x0f1f2f3f4f5f6f7fULL; - Scalar u_scalar(a2); - ASSERT_TRUE(u_scalar.ExtractBitfield(0, 0)); - EXPECT_EQ(u_scalar, a2); - ASSERT_TRUE(u_scalar.ExtractBitfield(len, 0)); - EXPECT_EQ(u_scalar, a2); - ASSERT_TRUE(u_scalar.ExtractBitfield(len - 4, 4)); - EXPECT_EQ(u_scalar, b2); -} - -template static std::string ScalarGetValue(T value) { - StreamString stream; - Scalar(value).GetValue(&stream, false); - return std::string(stream.GetString()); -} - -TEST(ScalarTest, GetValue) { - EXPECT_EQ("12345", ScalarGetValue(12345)); - EXPECT_EQ("-12345", ScalarGetValue(-12345)); - EXPECT_EQ("12345", ScalarGetValue(12345)); - EXPECT_EQ(std::to_string(std::numeric_limits::max()), - ScalarGetValue(std::numeric_limits::max())); - - EXPECT_EQ("12345", ScalarGetValue(12345)); - EXPECT_EQ("-12345", ScalarGetValue(-12345)); - EXPECT_EQ("12345", ScalarGetValue(12345)); - EXPECT_EQ(std::to_string(std::numeric_limits::max()), - ScalarGetValue(std::numeric_limits::max())); - - EXPECT_EQ("12345678", ScalarGetValue(12345678L)); - EXPECT_EQ("-12345678", ScalarGetValue(-12345678L)); - EXPECT_EQ("12345678", ScalarGetValue(12345678UL)); - EXPECT_EQ(std::to_string(std::numeric_limits::max()), - ScalarGetValue(std::numeric_limits::max())); - - EXPECT_EQ("1234567890123", ScalarGetValue(1234567890123LL)); - EXPECT_EQ("-1234567890123", - ScalarGetValue(-1234567890123LL)); - EXPECT_EQ("1234567890123", - ScalarGetValue(1234567890123ULL)); - EXPECT_EQ(std::to_string(std::numeric_limits::max()), - ScalarGetValue(std::numeric_limits::max())); -} - -TEST(ScalarTest, LongLongAssigmentOperator) { - Scalar ull; - ull = std::numeric_limits::max(); - EXPECT_EQ(std::numeric_limits::max(), ull.ULongLong()); - - Scalar sll; - sll = std::numeric_limits::max(); - EXPECT_EQ(std::numeric_limits::max(), sll.SLongLong()); -} - -TEST(ScalarTest, Division) { - Scalar lhs(5.0); - Scalar rhs(2.0); - Scalar r = lhs / rhs; - EXPECT_TRUE(r.IsValid()); - EXPECT_EQ(r, Scalar(2.5)); -} - -TEST(ScalarTest, Promotion) { - Scalar a(47); - EXPECT_TRUE(a.IntegralPromote(64, true)); - EXPECT_TRUE(a.IsSigned()); - EXPECT_EQ(APInt(64, 47), a.UInt128(APInt())); - - EXPECT_FALSE(a.IntegralPromote(32, true)); - EXPECT_FALSE(a.IntegralPromote(32, false)); - EXPECT_TRUE(a.IsSigned()); - - EXPECT_TRUE(a.IntegralPromote(64, false)); - EXPECT_FALSE(a.IsSigned()); - EXPECT_EQ(APInt(64, 47), a.UInt128(APInt())); - - EXPECT_FALSE(a.IntegralPromote(64, true)); - - EXPECT_TRUE(a.FloatPromote(APFloat::IEEEdouble())); - EXPECT_EQ(Scalar::e_float, a.GetType()); - EXPECT_EQ(47.0, a.Double()); - - EXPECT_FALSE(a.FloatPromote(APFloat::IEEEsingle())); - EXPECT_TRUE(a.FloatPromote(APFloat::x87DoubleExtended())); - EXPECT_EQ(47.0L, a.LongDouble()); -} - -TEST(ScalarTest, SetValueFromCString) { - Scalar a; - - EXPECT_THAT_ERROR( - a.SetValueFromCString("1234567890123", lldb::eEncodingUint, 8).ToError(), - Succeeded()); - EXPECT_EQ(1234567890123ull, a); - - EXPECT_THAT_ERROR( - a.SetValueFromCString("-1234567890123", lldb::eEncodingSint, 8).ToError(), - Succeeded()); - EXPECT_EQ(-1234567890123ll, a); - - EXPECT_THAT_ERROR( - a.SetValueFromCString("asdf", lldb::eEncodingSint, 8).ToError(), - Failed()); - EXPECT_THAT_ERROR( - a.SetValueFromCString("asdf", lldb::eEncodingUint, 8).ToError(), - Failed()); - EXPECT_THAT_ERROR( - a.SetValueFromCString("1234567890123", lldb::eEncodingUint, 4).ToError(), - Failed()); - EXPECT_THAT_ERROR(a.SetValueFromCString("123456789012345678901234567890", - lldb::eEncodingUint, 8) - .ToError(), - Failed()); - EXPECT_THAT_ERROR( - a.SetValueFromCString("-123", lldb::eEncodingUint, 8).ToError(), - Failed()); - EXPECT_THAT_ERROR( - a.SetValueFromCString("-2147483648", lldb::eEncodingSint, 4).ToError(), - Succeeded()); - EXPECT_EQ(-2147483648, a); - EXPECT_THAT_ERROR( - a.SetValueFromCString("-2147483649", lldb::eEncodingSint, 4).ToError(), - Failed()); - EXPECT_THAT_ERROR( - a.SetValueFromCString("47.25", lldb::eEncodingIEEE754, 4).ToError(), - Succeeded()); - EXPECT_EQ(47.25f, a); - EXPECT_THAT_ERROR( - a.SetValueFromCString("asdf", lldb::eEncodingIEEE754, 4).ToError(), - Failed()); -} - -TEST(ScalarTest, APIntConstructor) { - for (auto &width : {8, 16, 32}) { - Scalar A(APInt(width, 24)); - EXPECT_TRUE(A.IsSigned()); - EXPECT_EQ(A.GetType(), Scalar::e_int); - EXPECT_EQ(APInt(width, 24), A.UInt128(APInt())); - } -} - -TEST(ScalarTest, Scalar_512) { - Scalar Z(APInt(512, 0)); - ASSERT_TRUE(Z.IsZero()); - Z.MakeUnsigned(); - ASSERT_TRUE(Z.IsZero()); - - Scalar S(APInt(512, 2000)); - ASSERT_STREQ(S.GetTypeAsCString(), "int"); - - ASSERT_TRUE(S.MakeUnsigned()); - EXPECT_EQ(S.GetType(), Scalar::e_int); - EXPECT_FALSE(S.IsSigned()); - ASSERT_STREQ(S.GetTypeAsCString(), "int"); - EXPECT_EQ(S.GetByteSize(), 64U); - - ASSERT_TRUE(S.MakeSigned()); - EXPECT_EQ(S.GetType(), Scalar::e_int); - EXPECT_TRUE(S.IsSigned()); - EXPECT_EQ(S.GetByteSize(), 64U); -} - -TEST(ScalarTest, TruncOrExtendTo) { - Scalar S(0xffff); - S.TruncOrExtendTo(12, true); - EXPECT_EQ(S.UInt128(APInt()), APInt(12, 0xfffu)); - S.TruncOrExtendTo(20, true); - EXPECT_EQ(S.UInt128(APInt()), APInt(20, 0xfffffu)); - S.TruncOrExtendTo(24, false); - EXPECT_EQ(S.UInt128(APInt()), APInt(24, 0x0fffffu)); - S.TruncOrExtendTo(16, false); - EXPECT_EQ(S.UInt128(APInt()), APInt(16, 0xffffu)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/SharedClusterTest.cpp b/gnu/llvm/lldb/unittests/Utility/SharedClusterTest.cpp deleted file mode 100644 index 56dd4da2ed9..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/SharedClusterTest.cpp +++ /dev/null @@ -1,58 +0,0 @@ -//===-- SharedClusterTest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/SharedCluster.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -namespace { -class DestructNotifier { -public: - DestructNotifier(std::vector &Queue, int Key) : Queue(Queue), Key(Key) {} - ~DestructNotifier() { Queue.push_back(Key); } - - std::vector &Queue; - const int Key; -}; -} // namespace - -TEST(SharedCluster, ClusterManager) { - std::vector Queue; - { - auto CM = ClusterManager::Create(); - auto *One = new DestructNotifier(Queue, 1); - auto *Two = new DestructNotifier(Queue, 2); - CM->ManageObject(One); - CM->ManageObject(Two); - - ASSERT_THAT(Queue, testing::IsEmpty()); - { - std::shared_ptr OnePtr = CM->GetSharedPointer(One); - ASSERT_EQ(OnePtr->Key, 1); - ASSERT_THAT(Queue, testing::IsEmpty()); - - { - std::shared_ptr OnePtrCopy = OnePtr; - ASSERT_EQ(OnePtrCopy->Key, 1); - ASSERT_THAT(Queue, testing::IsEmpty()); - } - - { - std::shared_ptr TwoPtr = CM->GetSharedPointer(Two); - ASSERT_EQ(TwoPtr->Key, 2); - ASSERT_THAT(Queue, testing::IsEmpty()); - } - - ASSERT_THAT(Queue, testing::IsEmpty()); - } - ASSERT_THAT(Queue, testing::IsEmpty()); - } - ASSERT_THAT(Queue, testing::ElementsAre(1, 2)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/StateTest.cpp b/gnu/llvm/lldb/unittests/Utility/StateTest.cpp deleted file mode 100644 index d91a23123b0..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/StateTest.cpp +++ /dev/null @@ -1,30 +0,0 @@ -//===-- StateTest.cpp -----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/State.h" -#include "llvm/Support/FormatVariadic.h" -#include "gtest/gtest.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(StateTest, Formatv) { - EXPECT_EQ("invalid", llvm::formatv("{0}", eStateInvalid).str()); - EXPECT_EQ("unloaded", llvm::formatv("{0}", eStateUnloaded).str()); - EXPECT_EQ("connected", llvm::formatv("{0}", eStateConnected).str()); - EXPECT_EQ("attaching", llvm::formatv("{0}", eStateAttaching).str()); - EXPECT_EQ("launching", llvm::formatv("{0}", eStateLaunching).str()); - EXPECT_EQ("stopped", llvm::formatv("{0}", eStateStopped).str()); - EXPECT_EQ("running", llvm::formatv("{0}", eStateRunning).str()); - EXPECT_EQ("stepping", llvm::formatv("{0}", eStateStepping).str()); - EXPECT_EQ("crashed", llvm::formatv("{0}", eStateCrashed).str()); - EXPECT_EQ("detached", llvm::formatv("{0}", eStateDetached).str()); - EXPECT_EQ("exited", llvm::formatv("{0}", eStateExited).str()); - EXPECT_EQ("suspended", llvm::formatv("{0}", eStateSuspended).str()); - -} diff --git a/gnu/llvm/lldb/unittests/Utility/StatusTest.cpp b/gnu/llvm/lldb/unittests/Utility/StatusTest.cpp deleted file mode 100644 index 9b9d870cd12..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/StatusTest.cpp +++ /dev/null @@ -1,96 +0,0 @@ -//===-- StatusTest.cpp ----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/Status.h" -#include "gtest/gtest.h" - -#ifdef _WIN32 -#include -#endif - -using namespace lldb_private; -using namespace lldb; - -TEST(StatusTest, Formatv) { - EXPECT_EQ("", llvm::formatv("{0}", Status()).str()); - EXPECT_EQ("Hello Status", llvm::formatv("{0}", Status("Hello Status")).str()); - EXPECT_EQ("Hello", llvm::formatv("{0:5}", Status("Hello Error")).str()); -} - -TEST(StatusTest, ErrorConstructor) { - EXPECT_TRUE(Status(llvm::Error::success()).Success()); - - Status eagain( - llvm::errorCodeToError(std::error_code(EAGAIN, std::generic_category()))); - EXPECT_TRUE(eagain.Fail()); - EXPECT_EQ(eErrorTypePOSIX, eagain.GetType()); - EXPECT_EQ(Status::ValueType(EAGAIN), eagain.GetError()); - - Status foo(llvm::make_error( - "foo", llvm::inconvertibleErrorCode())); - EXPECT_TRUE(foo.Fail()); - EXPECT_EQ(eErrorTypeGeneric, foo.GetType()); - EXPECT_STREQ("foo", foo.AsCString()); - - foo = llvm::Error::success(); - EXPECT_TRUE(foo.Success()); -} - -TEST(StatusTest, ErrorCodeConstructor) { - EXPECT_TRUE(Status(std::error_code()).Success()); - - Status eagain = std::error_code(EAGAIN, std::generic_category()); - EXPECT_TRUE(eagain.Fail()); - EXPECT_EQ(eErrorTypePOSIX, eagain.GetType()); - EXPECT_EQ(Status::ValueType(EAGAIN), eagain.GetError()); -} - -TEST(StatusTest, ErrorConversion) { - EXPECT_FALSE(bool(Status().ToError())); - - llvm::Error eagain = Status(EAGAIN, ErrorType::eErrorTypePOSIX).ToError(); - EXPECT_TRUE(bool(eagain)); - std::error_code ec = llvm::errorToErrorCode(std::move(eagain)); - EXPECT_EQ(EAGAIN, ec.value()); - EXPECT_EQ(std::generic_category(), ec.category()); - - llvm::Error foo = Status("foo").ToError(); - EXPECT_TRUE(bool(foo)); - EXPECT_EQ("foo", llvm::toString(std::move(foo))); -} - -#ifdef _WIN32 -TEST(StatusTest, ErrorWin32) { - auto success = Status(NO_ERROR, ErrorType::eErrorTypeWin32); - EXPECT_STREQ(NULL, success.AsCString()); - EXPECT_FALSE(success.ToError()); - EXPECT_TRUE(success.Success()); - - WCHAR name[128]{}; - ULONG nameLen = llvm::array_lengthof(name); - ULONG langs = 0; - GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &langs, - reinterpret_cast(&name), &nameLen); - // Skip the following tests on non-English, non-US, locales because the - // formatted messages will be different. - bool skip = wcscmp(L"en-US", name) != 0; - - auto s = Status(ERROR_ACCESS_DENIED, ErrorType::eErrorTypeWin32); - EXPECT_TRUE(s.Fail()); - if (!skip) - EXPECT_STREQ("Access is denied. ", s.AsCString()); - - s.SetError(ERROR_IPSEC_IKE_TIMED_OUT, ErrorType::eErrorTypeWin32); - if (!skip) - EXPECT_STREQ("Negotiation timed out ", s.AsCString()); - - s.SetError(16000, ErrorType::eErrorTypeWin32); - if (!skip) - EXPECT_STREQ("unknown error", s.AsCString()); -} -#endif diff --git a/gnu/llvm/lldb/unittests/Utility/StreamTeeTest.cpp b/gnu/llvm/lldb/unittests/Utility/StreamTeeTest.cpp deleted file mode 100644 index e92ee3eb022..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/StreamTeeTest.cpp +++ /dev/null @@ -1,198 +0,0 @@ -//===-- StreamTeeTest.cpp -------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/StreamTee.h" -#include "lldb/Utility/StreamString.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(StreamTeeTest, DefaultConstructor) { - // Test the default constructor. - StreamTee tee; - ASSERT_EQ(0U, tee.GetNumStreams()); -} - -TEST(StreamTeeTest, Constructor1Stream) { - // Test the constructor for a single stream. - lldb::StreamSP s1(std::make_shared()); - StreamTee tee(s1); - - ASSERT_EQ(1U, tee.GetNumStreams()); - EXPECT_EQ(s1, tee.GetStreamAtIndex(0U)); -} - -TEST(StreamTeeTest, Constructor2Streams) { - // Test the constructor for two streams. - lldb::StreamSP s1(std::make_shared()); - lldb::StreamSP s2(std::make_shared()); - StreamTee tee(s1, s2); - - ASSERT_EQ(2U, tee.GetNumStreams()); - EXPECT_EQ(s1, tee.GetStreamAtIndex(0U)); - EXPECT_EQ(s2, tee.GetStreamAtIndex(1U)); -} - -TEST(StreamTeeTest, CopyConstructor) { - // Test the copy constructor. - lldb::StreamSP s1(std::make_shared()); - lldb::StreamSP s2(std::make_shared()); - StreamTee tee1(s1, s2); - StreamTee tee2(tee1); - - ASSERT_EQ(2U, tee2.GetNumStreams()); - EXPECT_EQ(s1, tee2.GetStreamAtIndex(0U)); - EXPECT_EQ(s2, tee2.GetStreamAtIndex(1U)); -} - -TEST(StreamTeeTest, Assignment) { - // Test the assignment of StreamTee. - lldb::StreamSP s1(std::make_shared()); - lldb::StreamSP s2(std::make_shared()); - StreamTee tee1(s1, s2); - StreamTee tee2 = tee1; - - ASSERT_EQ(2U, tee2.GetNumStreams()); - EXPECT_EQ(s1, tee2.GetStreamAtIndex(0U)); - EXPECT_EQ(s2, tee2.GetStreamAtIndex(1U)); -} - -TEST(StreamTeeTest, Write) { - // Test that write is sent out to all children. - auto ss1 = new StreamString(); - auto ss2 = new StreamString(); - lldb::StreamSP s1(ss1); - lldb::StreamSP s2(ss2); - StreamTee tee(s1, s2); - - tee << "foo"; - tee.Flush(); - - ASSERT_EQ(2U, tee.GetNumStreams()); - EXPECT_EQ("foo", ss1->GetString().str()); - EXPECT_EQ("foo", ss2->GetString().str()); - - tee << "bar"; - tee.Flush(); - EXPECT_EQ("foobar", ss1->GetString().str()); - EXPECT_EQ("foobar", ss2->GetString().str()); -} - -namespace { - struct FlushTestStream : public Stream { - unsigned m_flush_count = false; - void Flush() override { - ++m_flush_count; - } - size_t WriteImpl(const void *src, size_t src_len) override { - return src_len; - } - }; -} - -TEST(StreamTeeTest, Flush) { - // Check that Flush is distributed to all streams. - auto fs1 = new FlushTestStream(); - auto fs2 = new FlushTestStream(); - lldb::StreamSP s1(fs1); - lldb::StreamSP s2(fs2); - StreamTee tee(s1, s2); - - tee << "foo"; - tee.Flush(); - - ASSERT_EQ(2U, tee.GetNumStreams()); - EXPECT_EQ(1U, fs1->m_flush_count); - EXPECT_EQ(1U, fs2->m_flush_count); - - tee << "bar"; - tee.Flush(); - EXPECT_EQ(2U, fs1->m_flush_count); - EXPECT_EQ(2U, fs2->m_flush_count); -} - -TEST(StreamTeeTest, AppendStream) { - // Append new streams to our StreamTee. - auto ss1 = new StreamString(); - auto ss2 = new StreamString(); - lldb::StreamSP s1(ss1); - lldb::StreamSP s2(ss2); - - StreamTee tee; - - ASSERT_EQ(0U, tee.GetNumStreams()); - - tee.AppendStream(s1); - ASSERT_EQ(1U, tee.GetNumStreams()); - EXPECT_EQ(s1, tee.GetStreamAtIndex(0U)); - - tee.AppendStream(s2); - ASSERT_EQ(2U, tee.GetNumStreams()); - EXPECT_EQ(s1, tee.GetStreamAtIndex(0U)); - EXPECT_EQ(s2, tee.GetStreamAtIndex(1U)); -} - -TEST(StreamTeeTest, GetStreamAtIndexOutOfBounds) { - // The index we check for is not in the bounds of the StreamTee. - lldb::StreamSP s1(std::make_shared()); - StreamTee tee(s1); - - ASSERT_EQ(1U, tee.GetNumStreams()); - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(1)); -} - -TEST(StreamTeeTest, GetStreamAtIndexOutOfBoundsEmpty) { - // Same as above, but with an empty StreamTee. - StreamTee tee; - ASSERT_EQ(0U, tee.GetNumStreams()); - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(0U)); - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(1U)); -} - -TEST(StreamTeeTest, SetStreamAtIndexOverwrite) { - // We overwrite an existing stream at a given index. - lldb::StreamSP s1(std::make_shared()); - StreamTee tee(s1); - - ASSERT_EQ(1U, tee.GetNumStreams()); - EXPECT_EQ(s1, tee.GetStreamAtIndex(0U)); - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(1U)); - - lldb::StreamSP s2(std::make_shared()); - tee.SetStreamAtIndex(0U, s2); - EXPECT_EQ(1U, tee.GetNumStreams()); - EXPECT_EQ(s2, tee.GetStreamAtIndex(0U)); - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(1)); -} - -TEST(StreamTeeTest, SetStreamAtIndexOutOfBounds) { - // We place a new stream out of the bounds of the current StreamTee. - lldb::StreamSP s1(std::make_shared()); - StreamTee tee(s1); - - ASSERT_EQ(1U, tee.GetNumStreams()); - EXPECT_EQ(s1, tee.GetStreamAtIndex(0U)); - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(1U)); - - // Place a new stream out of bounds of the current array. The StreamTee should - // resize itself until it can contain this index. - lldb::StreamSP s2(std::make_shared()); - tee.SetStreamAtIndex(4U, s2); - // Check that the vector has been resized. - EXPECT_EQ(5U, tee.GetNumStreams()); - // Is our stream at the right place? - EXPECT_EQ(s2, tee.GetStreamAtIndex(4U)); - - // Existing stream should still be there. - EXPECT_EQ(s1, tee.GetStreamAtIndex(0U)); - // Other elements are all invalid StreamSPs. - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(1U)); - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(2U)); - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(3U)); - EXPECT_EQ(lldb::StreamSP(), tee.GetStreamAtIndex(5U)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/StreamTest.cpp b/gnu/llvm/lldb/unittests/Utility/StreamTest.cpp deleted file mode 100644 index 940d49fdfdb..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/StreamTest.cpp +++ /dev/null @@ -1,696 +0,0 @@ -//===-- StreamTest.cpp ----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/StreamString.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -namespace { -struct StreamTest : ::testing::Test { - // Note: Stream is an abstract class, so we use StreamString to test it. To - // make it easier to change this later, only methods in this class explicitly - // refer to the StringStream class. - StreamString s; - // We return here a std::string because that way gtest can print better - // assertion messages. - std::string TakeValue() { - std::string result = s.GetString().str(); - s.Clear(); - return result; - } -}; -} - -namespace { -// A StreamTest where we expect the Stream output to be binary. -struct BinaryStreamTest : StreamTest { - void SetUp() override { - s.GetFlags().Set(Stream::eBinary); - } -}; -} - -TEST_F(StreamTest, AddressPrefix) { - DumpAddress(s.AsRawOstream(), 0x1, 1, "foo"); - EXPECT_EQ("foo0x01", TakeValue()); -} - -TEST_F(StreamTest, AddressEmptyPrefix) { - DumpAddress(s.AsRawOstream(), 0x1, 1, nullptr); - EXPECT_EQ("0x01", TakeValue()); - DumpAddress(s.AsRawOstream(), 0x1, 1, ""); - EXPECT_EQ("0x01", TakeValue()); -} - -TEST_F(StreamTest, AddressSuffix) { - DumpAddress(s.AsRawOstream(), 0x1, 1, nullptr, "foo"); - EXPECT_EQ("0x01foo", TakeValue()); -} - -TEST_F(StreamTest, AddressNoSuffix) { - DumpAddress(s.AsRawOstream(), 0x1, 1, nullptr, nullptr); - EXPECT_EQ("0x01", TakeValue()); - DumpAddress(s.AsRawOstream(), 0x1, 1, nullptr, ""); - EXPECT_EQ("0x01", TakeValue()); -} - -TEST_F(StreamTest, AddressPrefixAndSuffix) { - DumpAddress(s.AsRawOstream(), 0x1, 1, "foo", "bar"); - EXPECT_EQ("foo0x01bar", TakeValue()); -} - -TEST_F(StreamTest, AddressSize) { - DumpAddress(s.AsRawOstream(), 0x0, 0); - EXPECT_EQ("0x0", TakeValue()); - DumpAddress(s.AsRawOstream(), 0x1, 0); - EXPECT_EQ("0x1", TakeValue()); - - DumpAddress(s.AsRawOstream(), 0x1, 1); - EXPECT_EQ("0x01", TakeValue()); - DumpAddress(s.AsRawOstream(), 0xf1, 1); - EXPECT_EQ("0xf1", TakeValue()); - DumpAddress(s.AsRawOstream(), 0xff, 1); - EXPECT_EQ("0xff", TakeValue()); - DumpAddress(s.AsRawOstream(), 0x100, 1); - EXPECT_EQ("0x100", TakeValue()); - - DumpAddress(s.AsRawOstream(), 0xf00, 4); - EXPECT_EQ("0x00000f00", TakeValue()); - DumpAddress(s.AsRawOstream(), 0x100, 8); - EXPECT_EQ("0x0000000000000100", TakeValue()); -} - -TEST_F(StreamTest, AddressRange) { - DumpAddressRange(s.AsRawOstream(), 0x100, 0x101, 2); - EXPECT_EQ("[0x0100-0x0101)", TakeValue()); -} - -TEST_F(StreamTest, AddressRangeEmptyRange) { - DumpAddressRange(s.AsRawOstream(), 0x100, 0x100, 2); - EXPECT_EQ("[0x0100-0x0100)", TakeValue()); - DumpAddressRange(s.AsRawOstream(), 0x0, 0x0, 2); - EXPECT_EQ("[0x0000-0x0000)", TakeValue()); -} - -TEST_F(StreamTest, AddressRangeInvalidRange) { - DumpAddressRange(s.AsRawOstream(), 0x100, 0x0FF, 2); - EXPECT_EQ("[0x0100-0x00ff)", TakeValue()); - DumpAddressRange(s.AsRawOstream(), 0x100, 0x0, 2); - EXPECT_EQ("[0x0100-0x0000)", TakeValue()); -} - -TEST_F(StreamTest, AddressRangeSize) { - DumpAddressRange(s.AsRawOstream(), 0x100, 0x101, 0); - EXPECT_EQ("[0x100-0x101)", TakeValue()); - DumpAddressRange(s.AsRawOstream(), 0x100, 0x101, 2); - EXPECT_EQ("[0x0100-0x0101)", TakeValue()); - DumpAddressRange(s.AsRawOstream(), 0x100, 0x101, 4); - EXPECT_EQ("[0x00000100-0x00000101)", TakeValue()); - - DumpAddressRange(s.AsRawOstream(), 0x100, 0x101, 4); - EXPECT_EQ("[0x00000100-0x00000101)", TakeValue()); - DumpAddressRange(s.AsRawOstream(), 0x1, 0x101, 4); - EXPECT_EQ("[0x00000001-0x00000101)", TakeValue()); - DumpAddressRange(s.AsRawOstream(), 0x101, 0x1, 4); - EXPECT_EQ("[0x00000101-0x00000001)", TakeValue()); - - DumpAddressRange(s.AsRawOstream(), 0x1, 0x101, 1); - EXPECT_EQ("[0x01-0x101)", TakeValue()); -} - -TEST_F(StreamTest, ChangingByteOrder) { - s.SetByteOrder(lldb::eByteOrderPDP); - EXPECT_EQ(lldb::eByteOrderPDP, s.GetByteOrder()); -} - -TEST_F(StreamTest, SetIndentLevel) { - s.Indent("a"); - EXPECT_EQ("a", TakeValue()); - - s.SetIndentLevel(3); - s.Indent("a"); - EXPECT_EQ(" a", TakeValue()); - - s.SetIndentLevel(2); - s.Indent("a"); - EXPECT_EQ(" a", TakeValue()); - - s.SetIndentLevel(0); - s.Indent("a"); - EXPECT_EQ("a", TakeValue()); -} - -TEST_F(StreamTest, Indent) { - s.SetIndentLevel(2); - const char *nullptr_cstring = nullptr; - s.Indent(nullptr_cstring); - EXPECT_EQ(" ", TakeValue()); - - s.Indent(""); - EXPECT_EQ(" ", TakeValue()); - - s.Indent(" "); - EXPECT_EQ(" ", TakeValue()); - - s.Indent(" aa"); - EXPECT_EQ(" aa", TakeValue()); -} - -TEST_F(StreamTest, PutChar) { - s.PutChar('a'); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ("a", TakeValue()); - - s.PutChar('1'); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ("1", TakeValue()); -} - -TEST_F(StreamTest, PutCharWhitespace) { - s.PutChar(' '); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ(" ", TakeValue()); - - s.PutChar('\n'); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ("\n", TakeValue()); - - s.PutChar('\r'); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ("\r", TakeValue()); - - s.PutChar('\t'); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ("\t", TakeValue()); -} - -TEST_F(StreamTest, PutCString) { - s.PutCString(""); - EXPECT_EQ(0U, s.GetWrittenBytes()); - EXPECT_EQ("", TakeValue()); - - s.PutCString("foobar"); - EXPECT_EQ(6U, s.GetWrittenBytes()); - EXPECT_EQ("foobar", TakeValue()); - - s.PutCString(" "); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ(" ", TakeValue()); -} - -TEST_F(StreamTest, PutCStringWithStringRef) { - s.PutCString(llvm::StringRef("")); - EXPECT_EQ(0U, s.GetWrittenBytes()); - EXPECT_EQ("", TakeValue()); - - s.PutCString(llvm::StringRef("foobar")); - EXPECT_EQ(6U, s.GetWrittenBytes()); - EXPECT_EQ("foobar", TakeValue()); - - s.PutCString(llvm::StringRef(" ")); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ(" ", TakeValue()); -} - -TEST_F(StreamTest, QuotedCString) { - s.QuotedCString("foo"); - EXPECT_EQ(5U, s.GetWrittenBytes()); - EXPECT_EQ(R"("foo")", TakeValue()); - - s.QuotedCString("ba r"); - EXPECT_EQ(6U, s.GetWrittenBytes()); - EXPECT_EQ(R"("ba r")", TakeValue()); - - s.QuotedCString(" "); - EXPECT_EQ(3U, s.GetWrittenBytes()); - EXPECT_EQ(R"(" ")", TakeValue()); -} - -TEST_F(StreamTest, PutCharNull) { - s.PutChar('\0'); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ(std::string("\0", 1), TakeValue()); - - s.PutChar('a'); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ(std::string("a", 1), TakeValue()); -} - -TEST_F(StreamTest, PutStringAsRawHex8) { - s.PutStringAsRawHex8(""); - EXPECT_EQ(0U, s.GetWrittenBytes()); - EXPECT_EQ("", TakeValue()); - - s.PutStringAsRawHex8("foobar"); - EXPECT_EQ(12U, s.GetWrittenBytes()); - EXPECT_EQ("666f6f626172", TakeValue()); - - s.PutStringAsRawHex8(" "); - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ("20", TakeValue()); -} - -TEST_F(StreamTest, PutHex8) { - s.PutHex8((uint8_t)55); - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ("37", TakeValue()); - - s.PutHex8(std::numeric_limits::max()); - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ("ff", TakeValue()); - - s.PutHex8((uint8_t)0); - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ("00", TakeValue()); -} - -TEST_F(StreamTest, PutNHex8) { - s.PutNHex8(0, (uint8_t)55); - EXPECT_EQ(0U, s.GetWrittenBytes()); - EXPECT_EQ("", TakeValue()); - - s.PutNHex8(1, (uint8_t)55); - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ("37", TakeValue()); - - s.PutNHex8(2, (uint8_t)55); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("3737", TakeValue()); - - s.PutNHex8(1, (uint8_t)56); - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ("38", TakeValue()); -} - -TEST_F(StreamTest, PutHex16ByteOrderLittle) { - s.PutHex16(0x1234U, lldb::eByteOrderLittle); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("3412", TakeValue()); - - s.PutHex16(std::numeric_limits::max(), lldb::eByteOrderLittle); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("ffff", TakeValue()); - - s.PutHex16(0U, lldb::eByteOrderLittle); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("0000", TakeValue()); -} - -TEST_F(StreamTest, PutHex16ByteOrderBig) { - s.PutHex16(0x1234U, lldb::eByteOrderBig); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("1234", TakeValue()); - - s.PutHex16(std::numeric_limits::max(), lldb::eByteOrderBig); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("ffff", TakeValue()); - - s.PutHex16(0U, lldb::eByteOrderBig); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("0000", TakeValue()); -} - -TEST_F(StreamTest, PutHex32ByteOrderLittle) { - s.PutHex32(0x12345678U, lldb::eByteOrderLittle); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("78563412", TakeValue()); - - s.PutHex32(std::numeric_limits::max(), lldb::eByteOrderLittle); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("ffffffff", TakeValue()); - - s.PutHex32(0U, lldb::eByteOrderLittle); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("00000000", TakeValue()); -} - -TEST_F(StreamTest, PutHex32ByteOrderBig) { - s.PutHex32(0x12345678U, lldb::eByteOrderBig); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("12345678", TakeValue()); - - s.PutHex32(std::numeric_limits::max(), lldb::eByteOrderBig); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("ffffffff", TakeValue()); - - s.PutHex32(0U, lldb::eByteOrderBig); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("00000000", TakeValue()); -} - -TEST_F(StreamTest, PutHex64ByteOrderLittle) { - s.PutHex64(0x1234567890ABCDEFU, lldb::eByteOrderLittle); - EXPECT_EQ(16U, s.GetWrittenBytes()); - EXPECT_EQ("efcdab9078563412", TakeValue()); - - s.PutHex64(std::numeric_limits::max(), lldb::eByteOrderLittle); - EXPECT_EQ(16U, s.GetWrittenBytes()); - EXPECT_EQ("ffffffffffffffff", TakeValue()); - - s.PutHex64(0U, lldb::eByteOrderLittle); - EXPECT_EQ(16U, s.GetWrittenBytes()); - EXPECT_EQ("0000000000000000", TakeValue()); -} - -TEST_F(StreamTest, PutHex64ByteOrderBig) { - s.PutHex64(0x1234567890ABCDEFU, lldb::eByteOrderBig); - EXPECT_EQ(16U, s.GetWrittenBytes()); - EXPECT_EQ("1234567890abcdef", TakeValue()); - - s.PutHex64(std::numeric_limits::max(), lldb::eByteOrderBig); - EXPECT_EQ(16U, s.GetWrittenBytes()); - EXPECT_EQ("ffffffffffffffff", TakeValue()); - - s.PutHex64(0U, lldb::eByteOrderBig); - EXPECT_EQ(16U, s.GetWrittenBytes()); - EXPECT_EQ("0000000000000000", TakeValue()); -} - -TEST_F(StreamTest, PutMaxHex64ByteOrderBig) { - std::size_t bytes; - bytes = s.PutMaxHex64(0x12U, 1, lldb::eByteOrderBig); - EXPECT_EQ(2U, bytes); - bytes = s.PutMaxHex64(0x1234U, 2, lldb::eByteOrderBig); - EXPECT_EQ(4U, bytes); - bytes = s.PutMaxHex64(0x12345678U, 4, lldb::eByteOrderBig); - EXPECT_EQ(8U, bytes); - bytes = s.PutMaxHex64(0x1234567890ABCDEFU, 8, lldb::eByteOrderBig); - EXPECT_EQ(16U, bytes); - EXPECT_EQ(30U, s.GetWrittenBytes()); - EXPECT_EQ("121234123456781234567890abcdef", TakeValue()); -} - -TEST_F(StreamTest, PutMaxHex64ByteOrderLittle) { - std::size_t bytes; - bytes = s.PutMaxHex64(0x12U, 1, lldb::eByteOrderLittle); - EXPECT_EQ(2U, bytes); - bytes = s.PutMaxHex64(0x1234U, 2, lldb::eByteOrderLittle); - EXPECT_EQ(4U, bytes); - bytes = s.PutMaxHex64(0x12345678U, 4, lldb::eByteOrderLittle); - EXPECT_EQ(8U, bytes); - bytes = s.PutMaxHex64(0x1234567890ABCDEFU, 8, lldb::eByteOrderLittle); - EXPECT_EQ(16U, bytes); - EXPECT_EQ(30U, s.GetWrittenBytes()); - EXPECT_EQ("12341278563412efcdab9078563412", TakeValue()); -} - -// Shift operator tests. - -TEST_F(StreamTest, ShiftOperatorChars) { - s << 'a' << 'b'; - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ("ab", TakeValue()); -} - -TEST_F(StreamTest, ShiftOperatorStrings) { - s << "cstring\n"; - EXPECT_EQ(8U, s.GetWrittenBytes()); - s << llvm::StringRef("llvm::StringRef\n"); - EXPECT_EQ(24U, s.GetWrittenBytes()); - EXPECT_EQ("cstring\nllvm::StringRef\n", TakeValue()); -} - -TEST_F(StreamTest, ShiftOperatorPtr) { - // This test is a bit tricky because pretty much everything related to - // pointer printing seems to lead to UB or IB. So let's make the most basic - // test that just checks that we print *something*. This way we at least know - // that pointer printing doesn't do really bad things (e.g. crashing, reading - // OOB/uninitialized memory which the sanitizers would spot). - - // Shift our own pointer to the output. - int i = 3; - int *ptr = &i; - s << ptr; - - EXPECT_NE(0U, s.GetWrittenBytes()); - EXPECT_TRUE(!TakeValue().empty()); -} - -TEST_F(StreamTest, PutPtr) { - // See the ShiftOperatorPtr test for the rationale. - int i = 3; - int *ptr = &i; - s.PutPointer(ptr); - - EXPECT_NE(0U, s.GetWrittenBytes()); - EXPECT_TRUE(!TakeValue().empty()); -} - -// Alias to make it more clear that 'invalid' means for the Stream interface -// that it should use the host byte order. -const static auto hostByteOrder = lldb::eByteOrderInvalid; - -// PutRawBytes/PutBytesAsRawHex tests. - -TEST_F(StreamTest, PutBytesAsRawHex8ToBigEndian) { - uint32_t value = 0x12345678; - s.PutBytesAsRawHex8(static_cast(&value), sizeof(value), - hostByteOrder, lldb::eByteOrderBig); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("78563412", TakeValue()); -} - -TEST_F(StreamTest, PutRawBytesToBigEndian) { - uint32_t value = 0x12345678; - s.PutRawBytes(static_cast(&value), sizeof(value), - hostByteOrder, lldb::eByteOrderBig); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("\x78\x56\x34\x12", TakeValue()); -} - -TEST_F(StreamTest, PutBytesAsRawHex8ToLittleEndian) { - uint32_t value = 0x12345678; - s.PutBytesAsRawHex8(static_cast(&value), sizeof(value), - hostByteOrder, lldb::eByteOrderLittle); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("12345678", TakeValue()); -} - -TEST_F(StreamTest, PutRawBytesToLittleEndian) { - uint32_t value = 0x12345678; - s.PutRawBytes(static_cast(&value), sizeof(value), - hostByteOrder, lldb::eByteOrderLittle); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("\x12\x34\x56\x78", TakeValue()); -} - -TEST_F(StreamTest, PutBytesAsRawHex8ToMixedEndian) { - uint32_t value = 0x12345678; - s.PutBytesAsRawHex8(static_cast(&value), sizeof(value), - hostByteOrder, lldb::eByteOrderPDP); - - // FIXME: PDP byte order is not actually implemented but Stream just silently - // prints the value in some random byte order... -#if 0 - EXPECT_EQ("34127856", TakeValue()); -#endif -} - -TEST_F(StreamTest, PutRawBytesToMixedEndian) { - uint32_t value = 0x12345678; - s.PutRawBytes(static_cast(&value), sizeof(value), - lldb::eByteOrderInvalid, lldb::eByteOrderPDP); - - // FIXME: PDP byte order is not actually implemented but Stream just silently - // prints the value in some random byte order... -#if 0 - EXPECT_EQ("\x34\x12\x78\x56", TakeValue()); -#endif -} - -// ULEB128 support for binary streams. - -TEST_F(BinaryStreamTest, PutULEB128OneByte) { - auto bytes = s.PutULEB128(0x74ULL); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ("\x74", TakeValue()); - EXPECT_EQ(1U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128TwoBytes) { - auto bytes = s.PutULEB128(0x1985ULL); - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ("\x85\x33", TakeValue()); - EXPECT_EQ(2U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128ThreeBytes) { - auto bytes = s.PutULEB128(0x5023ULL); - EXPECT_EQ(3U, s.GetWrittenBytes()); - EXPECT_EQ("\xA3\xA0\x1", TakeValue()); - EXPECT_EQ(3U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128FourBytes) { - auto bytes = s.PutULEB128(0xA48032ULL); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("\xB2\x80\x92\x5", TakeValue()); - EXPECT_EQ(4U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128FiveBytes) { - auto bytes = s.PutULEB128(0x12345678ULL); - EXPECT_EQ(5U, s.GetWrittenBytes()); - EXPECT_EQ("\xF8\xAC\xD1\x91\x1", TakeValue()); - EXPECT_EQ(5U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128SixBytes) { - auto bytes = s.PutULEB128(0xABFE3FAFDFULL); - EXPECT_EQ(6U, s.GetWrittenBytes()); - EXPECT_EQ("\xDF\xDF\xFE\xF1\xBF\x15", TakeValue()); - EXPECT_EQ(6U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128SevenBytes) { - auto bytes = s.PutULEB128(0xDABFE3FAFDFULL); - EXPECT_EQ(7U, s.GetWrittenBytes()); - EXPECT_EQ("\xDF\xDF\xFE\xF1\xBF\xB5\x3", TakeValue()); - EXPECT_EQ(7U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128EightBytes) { - auto bytes = s.PutULEB128(0x7CDABFE3FAFDFULL); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("\xDF\xDF\xFE\xF1\xBF\xB5\xF3\x3", TakeValue()); - EXPECT_EQ(8U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128NineBytes) { - auto bytes = s.PutULEB128(0x327CDABFE3FAFDFULL); - EXPECT_EQ(9U, s.GetWrittenBytes()); - EXPECT_EQ("\xDF\xDF\xFE\xF1\xBF\xB5\xF3\x93\x3", TakeValue()); - EXPECT_EQ(9U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128MaxValue) { - auto bytes = s.PutULEB128(std::numeric_limits::max()); - EXPECT_EQ(10U, s.GetWrittenBytes()); - EXPECT_EQ("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x1", TakeValue()); - EXPECT_EQ(10U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128Zero) { - auto bytes = s.PutULEB128(0x0U); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ(std::string("\0", 1), TakeValue()); - EXPECT_EQ(1U, bytes); -} - -TEST_F(BinaryStreamTest, PutULEB128One) { - auto bytes = s.PutULEB128(0x1U); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ("\x1", TakeValue()); - EXPECT_EQ(1U, bytes); -} - -// SLEB128 support for binary streams. - -TEST_F(BinaryStreamTest, PutSLEB128OneByte) { - auto bytes = s.PutSLEB128(0x74LL); - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ(std::string("\xF4\0", 2), TakeValue()); - EXPECT_EQ(2U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128TwoBytes) { - auto bytes = s.PutSLEB128(0x1985LL); - EXPECT_EQ(2U, s.GetWrittenBytes()); - EXPECT_EQ("\x85\x33", TakeValue()); - EXPECT_EQ(2U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128ThreeBytes) { - auto bytes = s.PutSLEB128(0x5023LL); - EXPECT_EQ(3U, s.GetWrittenBytes()); - EXPECT_EQ("\xA3\xA0\x1", TakeValue()); - EXPECT_EQ(3U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128FourBytes) { - auto bytes = s.PutSLEB128(0xA48032LL); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("\xB2\x80\x92\x5", TakeValue()); - EXPECT_EQ(4U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128FiveBytes) { - auto bytes = s.PutSLEB128(0x12345678LL); - EXPECT_EQ(5U, s.GetWrittenBytes()); - EXPECT_EQ("\xF8\xAC\xD1\x91\x1", TakeValue()); - EXPECT_EQ(5U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128SixBytes) { - auto bytes = s.PutSLEB128(0xABFE3FAFDFLL); - EXPECT_EQ(6U, s.GetWrittenBytes()); - EXPECT_EQ("\xDF\xDF\xFE\xF1\xBF\x15", TakeValue()); - EXPECT_EQ(6U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128SevenBytes) { - auto bytes = s.PutSLEB128(0xDABFE3FAFDFLL); - EXPECT_EQ(7U, s.GetWrittenBytes()); - EXPECT_EQ("\xDF\xDF\xFE\xF1\xBF\xB5\x3", TakeValue()); - EXPECT_EQ(7U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128EightBytes) { - auto bytes = s.PutSLEB128(0x7CDABFE3FAFDFLL); - EXPECT_EQ(8U, s.GetWrittenBytes()); - EXPECT_EQ("\xDF\xDF\xFE\xF1\xBF\xB5\xF3\x3", TakeValue()); - EXPECT_EQ(8U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128NineBytes) { - auto bytes = s.PutSLEB128(0x327CDABFE3FAFDFLL); - EXPECT_EQ(9U, s.GetWrittenBytes()); - EXPECT_EQ("\xDF\xDF\xFE\xF1\xBF\xB5\xF3\x93\x3", TakeValue()); - EXPECT_EQ(9U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128MaxValue) { - auto bytes = s.PutSLEB128(std::numeric_limits::max()); - EXPECT_EQ(10U, s.GetWrittenBytes()); - EXPECT_EQ(std::string("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0", 10), TakeValue()); - EXPECT_EQ(10U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128Zero) { - auto bytes = s.PutSLEB128(0x0); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ(std::string("\0", 1), TakeValue()); - EXPECT_EQ(1U, bytes); -} - -TEST_F(BinaryStreamTest, PutSLEB128One) { - auto bytes = s.PutSLEB128(0x1); - EXPECT_EQ(1U, s.GetWrittenBytes()); - EXPECT_EQ(std::string("\x1", 1), TakeValue()); - EXPECT_EQ(1U, bytes); -} - -// SLEB128/ULEB128 support for non-binary streams. - -// The logic for this is very simple, so it should be enough to test some basic -// use cases. - -TEST_F(StreamTest, PutULEB128) { - auto bytes = s.PutULEB128(0x74ULL); - EXPECT_EQ(4U, s.GetWrittenBytes()); - EXPECT_EQ("0x74", TakeValue()); - EXPECT_EQ(4U, bytes); -} - -TEST_F(StreamTest, PutSLEB128) { - auto bytes = s.PutSLEB128(0x1985LL); - EXPECT_EQ(6U, s.GetWrittenBytes()); - EXPECT_EQ("0x6533", TakeValue()); - EXPECT_EQ(6U, bytes); -} diff --git a/gnu/llvm/lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp b/gnu/llvm/lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp deleted file mode 100644 index 88362c028a9..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp +++ /dev/null @@ -1,185 +0,0 @@ -#include "gmock/gmock.h" -#include "gtest/gtest.h" -#include - -#include "lldb/Utility/StringExtractorGDBRemote.h" -#include "lldb/lldb-defines.h" - -TEST(StringExtractorGDBRemoteTest, GetPidTid) { - StringExtractorGDBRemote ex(""); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - // invalid/short values - - ex.Reset("narf"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset(";1234"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset(".1234"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("pnarf"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p;1234"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p.1234"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p1234."); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p1234.;1234"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("-2"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p1234.-2"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p-2"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p-2.1234"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - // overflow - - ex.Reset("p10000000000000000"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p10000000000000000.0"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("10000000000000000"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p0.10000000000000000"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - ex.Reset("p10000000000000000.10000000000000000"); - EXPECT_EQ(ex.GetPidTid(0), llvm::None); - - // invalid: all processes but specific thread - - ex.Reset("p-1.0"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - ex.Reset("p-1.1234"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - ex.Reset("p-1.123456789ABCDEF0"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - // unsupported: pid/tid 0 - - ex.Reset("0"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - ex.Reset("p0"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - ex.Reset("p0.0"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - ex.Reset("p0.-1"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - ex.Reset("p0.1234"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - ex.Reset("p0.123456789ABCDEF0"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - ex.Reset("p1234.0"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - ex.Reset("p123456789ABCDEF0.0"); - EXPECT_EQ(ex.GetPidTid(100), llvm::None); - - // pure thread id - - ex.Reset("-1"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(100, StringExtractorGDBRemote::AllThreads)); - - ex.Reset("1234"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), ::testing::Pair(100, 0x1234ULL)); - - ex.Reset("123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(100, 0x123456789ABCDEF0ULL)); - - // pure process id - - ex.Reset("p-1"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(StringExtractorGDBRemote::AllProcesses, - StringExtractorGDBRemote::AllThreads)); - - ex.Reset("p1234"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x1234ULL, StringExtractorGDBRemote::AllThreads)); - - ex.Reset("p123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x123456789ABCDEF0ULL, - StringExtractorGDBRemote::AllThreads)); - - ex.Reset("pFFFFFFFFFFFFFFFF"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(StringExtractorGDBRemote::AllProcesses, - StringExtractorGDBRemote::AllThreads)); - - // combined thread id + process id - - ex.Reset("p-1.-1"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(StringExtractorGDBRemote::AllProcesses, - StringExtractorGDBRemote::AllThreads)); - - ex.Reset("p1234.-1"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x1234ULL, StringExtractorGDBRemote::AllThreads)); - - ex.Reset("p1234.123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x1234ULL, 0x123456789ABCDEF0ULL)); - - ex.Reset("p123456789ABCDEF0.-1"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x123456789ABCDEF0ULL, - StringExtractorGDBRemote::AllThreads)); - - ex.Reset("p123456789ABCDEF0.1234"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x123456789ABCDEF0ULL, 0x1234ULL)); - - ex.Reset("p123456789ABCDEF0.123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x123456789ABCDEF0ULL, 0x123456789ABCDEF0ULL)); - - ex.Reset("p123456789ABCDEF0.123456789ABCDEF0"); - EXPECT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x123456789ABCDEF0ULL, 0x123456789ABCDEF0ULL)); -} - -TEST(StringExtractorGDBRemoteTest, GetPidTidMultipleValues) { - StringExtractorGDBRemote ex("1234;p12;p1234.-1"); - ASSERT_THAT(ex.GetPidTid(100).getValue(), ::testing::Pair(100, 0x1234ULL)); - ASSERT_EQ(ex.GetChar(), ';'); - ASSERT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x12ULL, StringExtractorGDBRemote::AllThreads)); - ASSERT_EQ(ex.GetChar(), ';'); - ASSERT_THAT(ex.GetPidTid(100).getValue(), - ::testing::Pair(0x1234ULL, StringExtractorGDBRemote::AllThreads)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/StringExtractorTest.cpp b/gnu/llvm/lldb/unittests/Utility/StringExtractorTest.cpp deleted file mode 100644 index 1908cf37b07..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/StringExtractorTest.cpp +++ /dev/null @@ -1,697 +0,0 @@ -#include "gtest/gtest.h" -#include - -#include "lldb/Utility/StringExtractor.h" - -namespace { -class StringExtractorTest : public ::testing::Test {}; -} // namespace - -TEST_F(StringExtractorTest, InitEmpty) { - llvm::StringRef kEmptyString = ""; - StringExtractor ex(kEmptyString); - - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(0u, ex.GetFilePos()); - ASSERT_EQ(kEmptyString, ex.GetStringRef()); - ASSERT_EQ(true, ex.Empty()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, InitMisc) { - llvm::StringRef kInitMiscString = "Hello, StringExtractor!"; - StringExtractor ex(kInitMiscString); - - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(0u, ex.GetFilePos()); - ASSERT_EQ(kInitMiscString, ex.GetStringRef()); - ASSERT_EQ(false, ex.Empty()); - ASSERT_EQ(kInitMiscString.size(), ex.GetBytesLeft()); - ASSERT_EQ(kInitMiscString[0], *ex.Peek()); -} - -TEST_F(StringExtractorTest, DecodeHexU8_Underflow) { - llvm::StringRef kEmptyString = ""; - StringExtractor ex(kEmptyString); - - ASSERT_EQ(-1, ex.DecodeHexU8()); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(0u, ex.GetFilePos()); - ASSERT_EQ(true, ex.Empty()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, DecodeHexU8_Underflow2) { - StringExtractor ex("1"); - - ASSERT_EQ(-1, ex.DecodeHexU8()); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(0u, ex.GetFilePos()); - ASSERT_EQ(1u, ex.GetBytesLeft()); - ASSERT_EQ('1', *ex.Peek()); -} - -TEST_F(StringExtractorTest, DecodeHexU8_InvalidHex) { - llvm::StringRef kInvalidHex = "xa"; - StringExtractor ex(kInvalidHex); - - ASSERT_EQ(-1, ex.DecodeHexU8()); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(0u, ex.GetFilePos()); - ASSERT_EQ(2u, ex.GetBytesLeft()); - ASSERT_EQ('x', *ex.Peek()); -} - -TEST_F(StringExtractorTest, DecodeHexU8_InvalidHex2) { - llvm::StringRef kInvalidHex = "ax"; - StringExtractor ex(kInvalidHex); - - ASSERT_EQ(-1, ex.DecodeHexU8()); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(0u, ex.GetFilePos()); - ASSERT_EQ(2u, ex.GetBytesLeft()); - ASSERT_EQ('a', *ex.Peek()); -} - -TEST_F(StringExtractorTest, DecodeHexU8_Exact) { - llvm::StringRef kValidHexPair = "12"; - StringExtractor ex(kValidHexPair); - - ASSERT_EQ(0x12, ex.DecodeHexU8()); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(2u, ex.GetFilePos()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, DecodeHexU8_Extra) { - llvm::StringRef kValidHexPair = "1234"; - StringExtractor ex(kValidHexPair); - - ASSERT_EQ(0x12, ex.DecodeHexU8()); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(2u, ex.GetFilePos()); - ASSERT_EQ(2u, ex.GetBytesLeft()); - ASSERT_EQ('3', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_Underflow) { - llvm::StringRef kEmptyString = ""; - StringExtractor ex(kEmptyString); - - ASSERT_EQ(0xab, ex.GetHexU8(0xab)); - ASSERT_EQ(false, ex.IsGood()); - ASSERT_EQ(UINT64_MAX, ex.GetFilePos()); - ASSERT_EQ(true, ex.Empty()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_Underflow2) { - llvm::StringRef kOneNibble = "1"; - StringExtractor ex(kOneNibble); - - ASSERT_EQ(0xbc, ex.GetHexU8(0xbc)); - ASSERT_EQ(false, ex.IsGood()); - ASSERT_EQ(UINT64_MAX, ex.GetFilePos()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_InvalidHex) { - llvm::StringRef kInvalidHex = "xx"; - StringExtractor ex(kInvalidHex); - - ASSERT_EQ(0xcd, ex.GetHexU8(0xcd)); - ASSERT_EQ(false, ex.IsGood()); - ASSERT_EQ(UINT64_MAX, ex.GetFilePos()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_Exact) { - llvm::StringRef kValidHexPair = "12"; - StringExtractor ex(kValidHexPair); - - ASSERT_EQ(0x12, ex.GetHexU8(0x12)); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(2u, ex.GetFilePos()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_Extra) { - llvm::StringRef kValidHexPair = "1234"; - StringExtractor ex(kValidHexPair); - - ASSERT_EQ(0x12, ex.GetHexU8(0x12)); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(2u, ex.GetFilePos()); - ASSERT_EQ(2u, ex.GetBytesLeft()); - ASSERT_EQ('3', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_Underflow_NoEof) { - llvm::StringRef kEmptyString = ""; - StringExtractor ex(kEmptyString); - const bool kSetEofOnFail = false; - - ASSERT_EQ(0xab, ex.GetHexU8(0xab, kSetEofOnFail)); - ASSERT_EQ(false, ex.IsGood()); // this result seems inconsistent with - // kSetEofOnFail == false - ASSERT_EQ(UINT64_MAX, ex.GetFilePos()); - ASSERT_EQ(true, ex.Empty()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_Underflow2_NoEof) { - llvm::StringRef kOneNibble = "1"; - StringExtractor ex(kOneNibble); - const bool kSetEofOnFail = false; - - ASSERT_EQ(0xbc, ex.GetHexU8(0xbc, kSetEofOnFail)); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(0u, ex.GetFilePos()); - ASSERT_EQ(1u, ex.GetBytesLeft()); - ASSERT_EQ('1', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_InvalidHex_NoEof) { - llvm::StringRef kInvalidHex = "xx"; - StringExtractor ex(kInvalidHex); - const bool kSetEofOnFail = false; - - ASSERT_EQ(0xcd, ex.GetHexU8(0xcd, kSetEofOnFail)); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(0u, ex.GetFilePos()); - ASSERT_EQ(2u, ex.GetBytesLeft()); - ASSERT_EQ('x', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_Exact_NoEof) { - llvm::StringRef kValidHexPair = "12"; - StringExtractor ex(kValidHexPair); - const bool kSetEofOnFail = false; - - ASSERT_EQ(0x12, ex.GetHexU8(0x12, kSetEofOnFail)); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(2u, ex.GetFilePos()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexU8_Extra_NoEof) { - llvm::StringRef kValidHexPair = "1234"; - StringExtractor ex(kValidHexPair); - const bool kSetEofOnFail = false; - - ASSERT_EQ(0x12, ex.GetHexU8(0x12, kSetEofOnFail)); - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(2u, ex.GetFilePos()); - ASSERT_EQ(2u, ex.GetBytesLeft()); - ASSERT_EQ('3', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexBytes) { - llvm::StringRef kHexEncodedBytes = "abcdef0123456789xyzw"; - const size_t kValidHexPairs = 8; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[kValidHexPairs]; - ASSERT_EQ(kValidHexPairs, ex.GetHexBytes(dst, 0xde)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); - EXPECT_EQ(0x89, dst[7]); - - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(2 * kValidHexPairs, ex.GetFilePos()); - ASSERT_EQ(false, ex.Empty()); - ASSERT_EQ(4u, ex.GetBytesLeft()); - ASSERT_EQ('x', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexBytes_FullString) { - llvm::StringRef kHexEncodedBytes = "abcdef0123456789"; - const size_t kValidHexPairs = 8; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[kValidHexPairs]; - ASSERT_EQ(kValidHexPairs, ex.GetHexBytes(dst, 0xde)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); - EXPECT_EQ(0x89, dst[7]); -} - -TEST_F(StringExtractorTest, GetHexBytes_OddPair) { - llvm::StringRef kHexEncodedBytes = "abcdef012345678w"; - const size_t kValidHexPairs = 7; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[8]; - ASSERT_EQ(kValidHexPairs, ex.GetHexBytes(dst, 0xde)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); - - // This one should be invalid - EXPECT_EQ(0xde, dst[7]); -} - -TEST_F(StringExtractorTest, GetHexBytes_OddPair2) { - llvm::StringRef kHexEncodedBytes = "abcdef012345678"; - const size_t kValidHexPairs = 7; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[8]; - ASSERT_EQ(kValidHexPairs, ex.GetHexBytes(dst, 0xde)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); - - EXPECT_EQ(0xde, dst[7]); -} - -TEST_F(StringExtractorTest, GetHexBytes_Underflow) { - llvm::StringRef kHexEncodedBytes = "abcdef0123456789xyzw"; - const size_t kValidHexPairs = 8; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[12]; - ASSERT_EQ(kValidHexPairs, ex.GetHexBytes(dst, 0xde)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); - EXPECT_EQ(0x89, dst[7]); - // these bytes should be filled with fail_fill_value 0xde - EXPECT_EQ(0xde, dst[8]); - EXPECT_EQ(0xde, dst[9]); - EXPECT_EQ(0xde, dst[10]); - EXPECT_EQ(0xde, dst[11]); - - ASSERT_EQ(false, ex.IsGood()); - ASSERT_EQ(UINT64_MAX, ex.GetFilePos()); - ASSERT_EQ(false, ex.Empty()); - ASSERT_EQ(0u, ex.GetBytesLeft()); - ASSERT_EQ(nullptr, ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexBytes_Partial) { - llvm::StringRef kHexEncodedBytes = "abcdef0123456789xyzw"; - const size_t kReadBytes = 4; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[12]; - memset(dst, 0xab, sizeof(dst)); - ASSERT_EQ( - kReadBytes, - ex.GetHexBytes(llvm::MutableArrayRef(dst, kReadBytes), 0xde)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - // these bytes should be unchanged - EXPECT_EQ(0xab, dst[4]); - EXPECT_EQ(0xab, dst[5]); - EXPECT_EQ(0xab, dst[6]); - EXPECT_EQ(0xab, dst[7]); - EXPECT_EQ(0xab, dst[8]); - EXPECT_EQ(0xab, dst[9]); - EXPECT_EQ(0xab, dst[10]); - EXPECT_EQ(0xab, dst[11]); - - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(kReadBytes * 2, ex.GetFilePos()); - ASSERT_EQ(false, ex.Empty()); - ASSERT_EQ(12u, ex.GetBytesLeft()); - ASSERT_EQ('2', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexBytesAvail) { - llvm::StringRef kHexEncodedBytes = "abcdef0123456789xyzw"; - const size_t kValidHexPairs = 8; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[kValidHexPairs]; - ASSERT_EQ(kValidHexPairs, ex.GetHexBytesAvail(dst)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); - EXPECT_EQ(0x89, dst[7]); - - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(2 * kValidHexPairs, ex.GetFilePos()); - ASSERT_EQ(false, ex.Empty()); - ASSERT_EQ(4u, ex.GetBytesLeft()); - ASSERT_EQ('x', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexBytesAvail_FullString) { - llvm::StringRef kHexEncodedBytes = "abcdef0123456789"; - const size_t kValidHexPairs = 8; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[kValidHexPairs]; - ASSERT_EQ(kValidHexPairs, ex.GetHexBytesAvail(dst)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); - EXPECT_EQ(0x89, dst[7]); -} - -TEST_F(StringExtractorTest, GetHexBytesAvail_OddPair) { - llvm::StringRef kHexEncodedBytes = "abcdef012345678w"; - const size_t kValidHexPairs = 7; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[8]; - ASSERT_EQ(kValidHexPairs, ex.GetHexBytesAvail(dst)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); -} - -TEST_F(StringExtractorTest, GetHexBytesAvail_OddPair2) { - llvm::StringRef kHexEncodedBytes = "abcdef012345678"; - const size_t kValidHexPairs = 7; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[8]; - ASSERT_EQ(kValidHexPairs, ex.GetHexBytesAvail(dst)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); -} - -TEST_F(StringExtractorTest, GetHexBytesAvail_Underflow) { - llvm::StringRef kHexEncodedBytes = "abcdef0123456789xyzw"; - const size_t kValidHexPairs = 8; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[12]; - memset(dst, 0xef, sizeof(dst)); - ASSERT_EQ(kValidHexPairs, ex.GetHexBytesAvail(dst)); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - EXPECT_EQ(0x23, dst[4]); - EXPECT_EQ(0x45, dst[5]); - EXPECT_EQ(0x67, dst[6]); - EXPECT_EQ(0x89, dst[7]); - // these bytes should be unchanged - EXPECT_EQ(0xef, dst[8]); - EXPECT_EQ(0xef, dst[9]); - EXPECT_EQ(0xef, dst[10]); - EXPECT_EQ(0xef, dst[11]); - - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(kValidHexPairs * 2, ex.GetFilePos()); - ASSERT_EQ(false, ex.Empty()); - ASSERT_EQ(4u, ex.GetBytesLeft()); - ASSERT_EQ('x', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetHexBytesAvail_Partial) { - llvm::StringRef kHexEncodedBytes = "abcdef0123456789xyzw"; - const size_t kReadBytes = 4; - StringExtractor ex(kHexEncodedBytes); - - uint8_t dst[12]; - memset(dst, 0xab, sizeof(dst)); - ASSERT_EQ(kReadBytes, ex.GetHexBytesAvail( - llvm::MutableArrayRef(dst, kReadBytes))); - EXPECT_EQ(0xab, dst[0]); - EXPECT_EQ(0xcd, dst[1]); - EXPECT_EQ(0xef, dst[2]); - EXPECT_EQ(0x01, dst[3]); - // these bytes should be unchanged - EXPECT_EQ(0xab, dst[4]); - EXPECT_EQ(0xab, dst[5]); - EXPECT_EQ(0xab, dst[6]); - EXPECT_EQ(0xab, dst[7]); - EXPECT_EQ(0xab, dst[8]); - EXPECT_EQ(0xab, dst[9]); - EXPECT_EQ(0xab, dst[10]); - EXPECT_EQ(0xab, dst[11]); - - ASSERT_EQ(true, ex.IsGood()); - ASSERT_EQ(kReadBytes * 2, ex.GetFilePos()); - ASSERT_EQ(false, ex.Empty()); - ASSERT_EQ(12u, ex.GetBytesLeft()); - ASSERT_EQ('2', *ex.Peek()); -} - -TEST_F(StringExtractorTest, GetNameColonValueSuccess) { - llvm::StringRef kNameColonPairs = "key1:value1;key2:value2;"; - StringExtractor ex(kNameColonPairs); - - llvm::StringRef name; - llvm::StringRef value; - EXPECT_TRUE(ex.GetNameColonValue(name, value)); - EXPECT_EQ("key1", name); - EXPECT_EQ("value1", value); - EXPECT_TRUE(ex.GetNameColonValue(name, value)); - EXPECT_EQ("key2", name); - EXPECT_EQ("value2", value); - EXPECT_EQ(0u, ex.GetBytesLeft()); -} - -TEST_F(StringExtractorTest, GetNameColonValueContainsColon) { - llvm::StringRef kNameColonPairs = "key1:value1:value2;key2:value3;"; - StringExtractor ex(kNameColonPairs); - - llvm::StringRef name; - llvm::StringRef value; - EXPECT_TRUE(ex.GetNameColonValue(name, value)); - EXPECT_EQ("key1", name); - EXPECT_EQ("value1:value2", value); - EXPECT_TRUE(ex.GetNameColonValue(name, value)); - EXPECT_EQ("key2", name); - EXPECT_EQ("value3", value); - EXPECT_EQ(0u, ex.GetBytesLeft()); -} - -TEST_F(StringExtractorTest, GetNameColonValueNoSemicolon) { - llvm::StringRef kNameColonPairs = "key1:value1"; - StringExtractor ex(kNameColonPairs); - - llvm::StringRef name; - llvm::StringRef value; - EXPECT_FALSE(ex.GetNameColonValue(name, value)); - EXPECT_EQ(0u, ex.GetBytesLeft()); -} - -TEST_F(StringExtractorTest, GetNameColonValueNoColon) { - llvm::StringRef kNameColonPairs = "key1value1;"; - StringExtractor ex(kNameColonPairs); - - llvm::StringRef name; - llvm::StringRef value; - EXPECT_FALSE(ex.GetNameColonValue(name, value)); - EXPECT_EQ(0u, ex.GetBytesLeft()); -} - -TEST_F(StringExtractorTest, GetU32LittleEndian) { - StringExtractor ex(""); - EXPECT_EQ(0x0ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("0"); - EXPECT_EQ(0x0ull, ex.GetHexMaxU32(true, 1)); - - ex.Reset("1"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("01"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("001"); - EXPECT_EQ(0x100ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("12"); - EXPECT_EQ(0x12ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("123"); - EXPECT_EQ(0x312ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("1203"); - EXPECT_EQ(0x312ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("1234"); - EXPECT_EQ(0x3412ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("12340"); - EXPECT_EQ(0x3412ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("123400"); - EXPECT_EQ(0x3412ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("12345670"); - EXPECT_EQ(0x70563412ull, ex.GetHexMaxU32(true, 0)); - - ex.Reset("123456701"); - EXPECT_EQ(0ull, ex.GetHexMaxU32(true, 0)); -} - -TEST_F(StringExtractorTest, GetU32BigEndian) { - StringExtractor ex(""); - EXPECT_EQ(0x0ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("0"); - EXPECT_EQ(0x0ull, ex.GetHexMaxU32(false, 1)); - - ex.Reset("1"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("01"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("001"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("12"); - EXPECT_EQ(0x12ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("123"); - EXPECT_EQ(0x123ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("1203"); - EXPECT_EQ(0x1203ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("1234"); - EXPECT_EQ(0x1234ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("12340"); - EXPECT_EQ(0x12340ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("123400"); - EXPECT_EQ(0x123400ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("12345670"); - EXPECT_EQ(0x12345670ull, ex.GetHexMaxU32(false, 0)); - - ex.Reset("123456700"); - EXPECT_EQ(0ull, ex.GetHexMaxU32(false, 0)); -} - -TEST_F(StringExtractorTest, GetU64LittleEndian) { - StringExtractor ex(""); - EXPECT_EQ(0x0ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("0"); - EXPECT_EQ(0x0ull, ex.GetHexMaxU64(true, 1)); - - ex.Reset("1"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("01"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("001"); - EXPECT_EQ(0x100ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("12"); - EXPECT_EQ(0x12ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("123"); - EXPECT_EQ(0x312ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("1203"); - EXPECT_EQ(0x312ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("1234"); - EXPECT_EQ(0x3412ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("12340"); - EXPECT_EQ(0x3412ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("123400"); - EXPECT_EQ(0x3412ull, ex.GetHexMaxU64(true, 0)); - - ex.Reset("123456789ABCDEF0"); - EXPECT_EQ(0xF0DEBC9A78563412ULL, ex.GetHexMaxU64(true, 0)); - - ex.Reset("123456789ABCDEF01"); - EXPECT_EQ(0ull, ex.GetHexMaxU64(true, 0)); -} - -TEST_F(StringExtractorTest, GetU64BigEndian) { - StringExtractor ex(""); - EXPECT_EQ(0x0ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("0"); - EXPECT_EQ(0x0ull, ex.GetHexMaxU64(false, 1)); - - ex.Reset("1"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("01"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("001"); - EXPECT_EQ(0x1ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("12"); - EXPECT_EQ(0x12ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("123"); - EXPECT_EQ(0x123ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("1203"); - EXPECT_EQ(0x1203ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("1234"); - EXPECT_EQ(0x1234ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("12340"); - EXPECT_EQ(0x12340ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("123400"); - EXPECT_EQ(0x123400ull, ex.GetHexMaxU64(false, 0)); - - ex.Reset("123456789ABCDEF0"); - EXPECT_EQ(0x123456789ABCDEF0ULL, ex.GetHexMaxU64(false, 0)); - - ex.Reset("123456789ABCDEF000"); - EXPECT_EQ(0ull, ex.GetHexMaxU64(false, 0)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/StringLexerTest.cpp b/gnu/llvm/lldb/unittests/Utility/StringLexerTest.cpp deleted file mode 100644 index f7a81bddcea..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/StringLexerTest.cpp +++ /dev/null @@ -1,140 +0,0 @@ -//===-- StringLexerTest.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/StringLexer.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(StringLexerTest, GetUnlexed) { - StringLexer l("foo"); - EXPECT_EQ("foo", l.GetUnlexed()); - l.Next(); - EXPECT_EQ("oo", l.GetUnlexed()); - l.Next(); - l.Next(); - EXPECT_EQ("", l.GetUnlexed()); -} - -TEST(StringLexerTest, HasAtLeast) { - StringLexer l("foo"); - EXPECT_FALSE(l.HasAtLeast(5)); - EXPECT_FALSE(l.HasAtLeast(4)); - EXPECT_TRUE(l.HasAtLeast(3)); - EXPECT_TRUE(l.HasAtLeast(2)); - EXPECT_TRUE(l.HasAtLeast(1)); - - l.Next(); - EXPECT_FALSE(l.HasAtLeast(5)); - EXPECT_FALSE(l.HasAtLeast(4)); - EXPECT_FALSE(l.HasAtLeast(3)); - EXPECT_TRUE(l.HasAtLeast(2)); - EXPECT_TRUE(l.HasAtLeast(1)); - - l.Next(); - l.Next(); - EXPECT_FALSE(l.HasAtLeast(5)); - EXPECT_FALSE(l.HasAtLeast(4)); - EXPECT_FALSE(l.HasAtLeast(3)); - EXPECT_FALSE(l.HasAtLeast(2)); - EXPECT_FALSE(l.HasAtLeast(1)); -} - -TEST(StringLexerTest, AdvanceIf) { - StringLexer l("foobar"); - - EXPECT_FALSE(l.AdvanceIf("oo")); - // Skip the "fo" part. - EXPECT_TRUE(l.AdvanceIf("fo")); - EXPECT_FALSE(l.AdvanceIf("obarz")); - // Skip the remaining string. - EXPECT_TRUE(l.AdvanceIf("obar")); - - EXPECT_FALSE(l.AdvanceIf("obarz")); - EXPECT_FALSE(l.AdvanceIf("foo")); - EXPECT_FALSE(l.AdvanceIf("o")); - EXPECT_FALSE(l.AdvanceIf(" ")); -} - -TEST(StringLexerTest, PutBack) { - StringLexer l("foo"); - - l.Next(); - l.PutBack(1); - EXPECT_EQ("foo", l.GetUnlexed()); - - l.Next(); - l.Next(); - l.Next(); - l.PutBack(2); - EXPECT_EQ("oo", l.GetUnlexed()); - - l.PutBack(1); - EXPECT_EQ("foo", l.GetUnlexed()); -} - -TEST(StringLexerTest, Peek) { - StringLexer l("foo"); - - EXPECT_EQ('f', l.Peek()); - l.Next(); - EXPECT_EQ('o', l.Peek()); - l.Next(); - EXPECT_EQ('o', l.Peek()); -} - -TEST(StringLexerTest, Next) { - StringLexer l("foo"); - EXPECT_EQ('f', l.Next()); - EXPECT_EQ('o', l.Next()); - EXPECT_EQ('o', l.Next()); -} - -TEST(StringLexerTest, NextIf) { - StringLexer l("foo"); - - EXPECT_FALSE(l.NextIf('\0')); - EXPECT_FALSE(l.NextIf(' ')); - EXPECT_FALSE(l.NextIf('o')); - - EXPECT_TRUE(l.NextIf('f')); - - EXPECT_FALSE(l.NextIf('\0')); - EXPECT_FALSE(l.NextIf(' ')); - EXPECT_FALSE(l.NextIf('f')); - - EXPECT_TRUE(l.NextIf('o')); - - EXPECT_FALSE(l.NextIf('\0')); - EXPECT_FALSE(l.NextIf(' ')); - EXPECT_FALSE(l.NextIf('f')); - - EXPECT_TRUE(l.NextIf('o')); -} - -TEST(StringLexerTest, NextIfList) { - StringLexer l("foo"); - - EXPECT_FALSE(l.NextIf({'\0', ' ', 'o'}).first); - - auto r = l.NextIf({'f'}); - EXPECT_TRUE(r.first); - EXPECT_EQ('f', r.second); - - EXPECT_FALSE(l.NextIf({'\0', ' ', 'f'}).first); - - r = l.NextIf({'f', 'o'}); - EXPECT_TRUE(r.first); - EXPECT_EQ('o', r.second); - - EXPECT_FALSE(l.NextIf({'\0', ' ', 'f'}).first); - - r = l.NextIf({'*', 'f', 'o', 'o'}); - EXPECT_TRUE(r.first); - EXPECT_EQ('o', r.second); -} diff --git a/gnu/llvm/lldb/unittests/Utility/StringListTest.cpp b/gnu/llvm/lldb/unittests/Utility/StringListTest.cpp deleted file mode 100644 index 08d55a51c70..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/StringListTest.cpp +++ /dev/null @@ -1,524 +0,0 @@ -//===-- StringListTest.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/StringList.h" -#include "lldb/Utility/StreamString.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -TEST(StringListTest, DefaultConstructor) { - StringList s; - EXPECT_EQ(0U, s.GetSize()); -} - -TEST(StringListTest, Assignment) { - StringList orig; - orig.AppendString("foo"); - orig.AppendString("bar"); - - StringList s = orig; - - ASSERT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); - - ASSERT_EQ(2U, orig.GetSize()); - EXPECT_STREQ("foo", orig.GetStringAtIndex(0)); - EXPECT_STREQ("bar", orig.GetStringAtIndex(1)); -} - -TEST(StringListTest, AppendStringStdString) { - StringList s; - s.AppendString("foo"); - ASSERT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - - s.AppendString("bar"); - ASSERT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); -} - -TEST(StringListTest, AppendStringCString) { - StringList s; - s.AppendString("foo", strlen("foo")); - ASSERT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - - s.AppendString("bar", strlen("bar")); - ASSERT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); -} - -TEST(StringListTest, AppendStringMove) { - StringList s; - std::string foo = "foo"; - std::string bar = "bar"; - - s.AppendString(std::move(foo)); - ASSERT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - - s.AppendString(std::move(bar)); - ASSERT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); -} - -TEST(StringListTest, ShiftStdString) { - StringList s; - std::string foo = "foo"; - std::string bar = "bar"; - - s << foo; - ASSERT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - - s << bar; - ASSERT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); -} - -TEST(StringListTest, ShiftCString) { - StringList s; - s << "foo"; - ASSERT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - - s << "bar"; - ASSERT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); -} - -TEST(StringListTest, ShiftMove) { - StringList s; - std::string foo = "foo"; - std::string bar = "bar"; - - s << std::move(foo); - ASSERT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - - s << std::move(bar); - ASSERT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); -} - -TEST(StringListTest, AppendListCStringArrayEmpty) { - StringList s; - s.AppendList(nullptr, 0); - EXPECT_EQ(0U, s.GetSize()); -} - -TEST(StringListTest, AppendListCStringArray) { - StringList s; - const char *items[3] = {"foo", "", "bar"}; - s.AppendList(items, 3); - - EXPECT_EQ(3U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("", s.GetStringAtIndex(1)); - EXPECT_STREQ("bar", s.GetStringAtIndex(2)); -} - -TEST(StringListTest, AppendList) { - StringList other; - other.AppendString("foo"); - other.AppendString(""); - other.AppendString("bar"); - - StringList empty; - - StringList s; - s.AppendList(other); - - EXPECT_EQ(3U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("", s.GetStringAtIndex(1)); - EXPECT_STREQ("bar", s.GetStringAtIndex(2)); - - EXPECT_EQ(3U, other.GetSize()); - EXPECT_STREQ("foo", other.GetStringAtIndex(0)); - EXPECT_STREQ("", other.GetStringAtIndex(1)); - EXPECT_STREQ("bar", other.GetStringAtIndex(2)); - - s.AppendList(empty); - s.AppendList(other); - EXPECT_EQ(6U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("", s.GetStringAtIndex(1)); - EXPECT_STREQ("bar", s.GetStringAtIndex(2)); - EXPECT_STREQ("foo", s.GetStringAtIndex(3)); - EXPECT_STREQ("", s.GetStringAtIndex(4)); - EXPECT_STREQ("bar", s.GetStringAtIndex(5)); - - EXPECT_EQ(3U, other.GetSize()); - EXPECT_STREQ("foo", other.GetStringAtIndex(0)); - EXPECT_STREQ("", other.GetStringAtIndex(1)); - EXPECT_STREQ("bar", other.GetStringAtIndex(2)); -} - -TEST(StringListTest, GetSize) { - StringList s; - s.AppendString("foo"); - EXPECT_EQ(1U, s.GetSize()); - - s.AppendString("foo"); - EXPECT_EQ(2U, s.GetSize()); - - s.AppendString("foobar"); - EXPECT_EQ(3U, s.GetSize()); -} - -TEST(StringListTest, SetSize) { - StringList s; - s.SetSize(3); - EXPECT_EQ(3U, s.GetSize()); - EXPECT_STREQ("", s.GetStringAtIndex(0)); - EXPECT_STREQ("", s.GetStringAtIndex(1)); - EXPECT_STREQ("", s.GetStringAtIndex(2)); -} - -TEST(StringListTest, SplitIntoLines) { - StringList s; - s.SplitIntoLines("\nfoo\nbar\n\n"); - EXPECT_EQ(4U, s.GetSize()); - EXPECT_STREQ("", s.GetStringAtIndex(0)); - EXPECT_STREQ("foo", s.GetStringAtIndex(1)); - EXPECT_STREQ("bar", s.GetStringAtIndex(2)); - EXPECT_STREQ("", s.GetStringAtIndex(3)); -} - -TEST(StringListTest, SplitIntoLinesSingleTrailingCR) { - StringList s; - s.SplitIntoLines("\r"); - EXPECT_EQ(1U, s.GetSize()); - EXPECT_STREQ("", s.GetStringAtIndex(0)); -} - -TEST(StringListTest, SplitIntoLinesEmpty) { - StringList s; - s.SplitIntoLines(""); - EXPECT_EQ(0U, s.GetSize()); -} - -TEST(StringListTest, LongestCommonPrefixEmpty) { - StringList s; - std::string prefix = s.LongestCommonPrefix(); - EXPECT_EQ("", prefix); -} - -TEST(StringListTest, LongestCommonPrefix) { - StringList s; - s.AppendString("foo"); - s.AppendString("foobar"); - s.AppendString("foo"); - s.AppendString("foozar"); - - std::string prefix = s.LongestCommonPrefix(); - EXPECT_EQ("foo", prefix); -} - -TEST(StringListTest, LongestCommonPrefixSingleElement) { - StringList s; - s.AppendString("foo"); - - std::string prefix = s.LongestCommonPrefix(); - EXPECT_EQ("foo", prefix); -} - -TEST(StringListTest, LongestCommonPrefixDuplicateElement) { - StringList s; - s.AppendString("foo"); - s.AppendString("foo"); - - std::string prefix = s.LongestCommonPrefix(); - EXPECT_EQ("foo", prefix); -} - -TEST(StringListTest, LongestCommonPrefixNoPrefix) { - StringList s; - s.AppendString("foo"); - s.AppendString("1foobar"); - s.AppendString("2foo"); - s.AppendString("3foozar"); - - std::string prefix = s.LongestCommonPrefix(); - EXPECT_EQ("", prefix); -} - -TEST(StringListTest, Clear) { - StringList s; - s.Clear(); - EXPECT_EQ(0U, s.GetSize()); - - s.AppendString("foo"); - s.Clear(); - EXPECT_EQ(0U, s.GetSize()); - - s.AppendString("foo"); - s.AppendString("foo"); - s.Clear(); - EXPECT_EQ(0U, s.GetSize()); -} - -TEST(StringListTest, PopBack) { - StringList s; - s.AppendString("foo"); - s.AppendString("bar"); - s.AppendString("boo"); - - s.PopBack(); - EXPECT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); - - s.PopBack(); - EXPECT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - - s.PopBack(); - EXPECT_EQ(0U, s.GetSize()); -} - -TEST(StringListTest, RemoveBlankLines) { - StringList s; - - // Nothing to remove yet. - s.RemoveBlankLines(); - EXPECT_EQ(0U, s.GetSize()); - - // Add some lines. - s.AppendString(""); - s.AppendString(""); - s.AppendString("\t"); - s.AppendString(""); - s.AppendString(" "); - s.AppendString(""); - s.AppendString(""); - s.AppendString("f"); - s.AppendString(""); - s.AppendString(""); - - // And remove all the empty ones again. - s.RemoveBlankLines(); - - EXPECT_EQ(3U, s.GetSize()); - EXPECT_STREQ("\t", s.GetStringAtIndex(0)); - EXPECT_STREQ(" ", s.GetStringAtIndex(1)); - EXPECT_STREQ("f", s.GetStringAtIndex(2)); -} - -TEST(StringListTest, InsertStringAtIndexStart) { - StringList s; - - s.InsertStringAtIndex(0, "bar"); - EXPECT_EQ(1U, s.GetSize()); - EXPECT_STREQ("bar", s.GetStringAtIndex(0)); - - s.InsertStringAtIndex(0, "foo"); - EXPECT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); -} - -TEST(StringListTest, InsertStringAtIndexEnd) { - StringList s; - - s.InsertStringAtIndex(0, "foo"); - EXPECT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - - s.InsertStringAtIndex(1, "bar"); - EXPECT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); -} - -TEST(StringListTest, InsertStringAtIndexOutOfBounds) { - StringList s; - - s.InsertStringAtIndex(1, "foo"); - EXPECT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - - // FIXME: Inserting at an OOB index will always just append to the list. This - // seems not very intuitive. - s.InsertStringAtIndex(3, "bar"); - EXPECT_EQ(2U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); - EXPECT_STREQ("bar", s.GetStringAtIndex(1)); -} - -TEST(StringListTest, InsertStringAtIndexStdString) { - StringList s; - - std::string foo = "foo"; - s.InsertStringAtIndex(0, foo); - EXPECT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); -} - -TEST(StringListTest, InsertStringAtIndexMove) { - StringList s; - - std::string foo = "foo"; - s.InsertStringAtIndex(0, std::move(foo)); - EXPECT_EQ(1U, s.GetSize()); - EXPECT_STREQ("foo", s.GetStringAtIndex(0)); -} - -TEST(StringListTest, CopyListEmpty) { - StringList s; - - EXPECT_EQ("", s.CopyList()); - EXPECT_EQ("", s.CopyList("+")); -} - -TEST(StringListTest, CopyListSingle) { - StringList s; - s.AppendString("ab"); - - EXPECT_EQ("ab", s.CopyList()); - EXPECT_EQ("-ab", s.CopyList("-")); -} - -TEST(StringListTest, CopyList) { - StringList s; - s.AppendString("ab"); - s.AppendString("cd"); - - EXPECT_EQ("ab\ncd", s.CopyList()); - EXPECT_EQ("-ab\n-cd", s.CopyList("-")); -} - -TEST(StringListTest, Join) { - StringList s; - s.AppendString("ab"); - s.AppendString("cd"); - - StreamString ss; - s.Join(" ", ss); - - EXPECT_EQ("ab cd", ss.GetString()); -} - -TEST(StringListTest, JoinEmpty) { - StringList s; - - StreamString ss; - s.Join(" ", ss); - - EXPECT_EQ("", ss.GetString()); -} - -TEST(StringListTest, JoinSingle) { - StringList s; - s.AppendString("foo"); - - StreamString ss; - s.Join(" ", ss); - - EXPECT_EQ("foo", ss.GetString()); -} - -TEST(StringListTest, JoinThree) { - StringList s; - s.AppendString("1"); - s.AppendString("2"); - s.AppendString("3"); - - StreamString ss; - s.Join(" ", ss); - - EXPECT_EQ("1 2 3", ss.GetString()); -} - -TEST(StringListTest, JoinNonSpace) { - StringList s; - s.AppendString("1"); - s.AppendString("2"); - s.AppendString("3"); - - StreamString ss; - s.Join(".", ss); - - EXPECT_EQ("1.2.3", ss.GetString()); -} - -TEST(StringListTest, JoinMultiCharSeparator) { - StringList s; - s.AppendString("1"); - s.AppendString("2"); - s.AppendString("3"); - - StreamString ss; - s.Join("--", ss); - - EXPECT_EQ("1--2--3", ss.GetString()); -} - -TEST(StringListTest, GetMaxStringLengthEqualSize) { - StringList s; - s.AppendString("123"); - s.AppendString("123"); - EXPECT_EQ(3U, s.GetMaxStringLength()); -} - -TEST(StringListTest, GetMaxStringLengthIncreasingSize) { - StringList s; - s.AppendString("123"); - s.AppendString("1234"); - EXPECT_EQ(4U, s.GetMaxStringLength()); -} - -TEST(StringListTest, GetMaxStringLengthDecreasingSize) { - StringList s; - s.AppendString("1234"); - s.AppendString("123"); - EXPECT_EQ(4U, s.GetMaxStringLength()); -} - -TEST(StringListTest, GetMaxStringLengthMixed) { - StringList s; - s.AppendString("123"); - s.AppendString("1"); - s.AppendString("123"); - s.AppendString("1234"); - s.AppendString("123"); - s.AppendString("1"); - EXPECT_EQ(4U, s.GetMaxStringLength()); -} - -TEST(StringListTest, GetMaxStringLengthEmpty) { - StringList s; - EXPECT_EQ(0U, s.GetMaxStringLength()); -} - -TEST(StringListTest, ForRangeEmpty) { - StringList s; - for (const std::string &e : s) - FAIL() << "Shouldn't have hit an element in for range" << e; -} - -TEST(StringListTest, ForRange) { - StringList s; - s.AppendString("a"); - s.AppendString("b"); - s.AppendString("c"); - std::vector recorded; - for (const std::string &e : s) - recorded.push_back(e); - EXPECT_THAT(recorded, testing::ElementsAre("a", "b", "c")); -} diff --git a/gnu/llvm/lldb/unittests/Utility/StructuredDataTest.cpp b/gnu/llvm/lldb/unittests/Utility/StructuredDataTest.cpp deleted file mode 100644 index cb5e418cd95..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/StructuredDataTest.cpp +++ /dev/null @@ -1,47 +0,0 @@ -//===-- StructuredDataTest.cpp --------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "TestingSupport/TestUtilities.h" -#include "lldb/Utility/Status.h" -#include "lldb/Utility/StreamString.h" -#include "lldb/Utility/StructuredData.h" -#include "llvm/Support/Path.h" - -using namespace lldb; -using namespace lldb_private; - -TEST(StructuredDataTest, StringDump) { - std::pair TestCases[] = { - {R"(asdfg)", R"("asdfg")"}, - {R"(as"df)", R"("as\"df")"}, - {R"(as\df)", R"("as\\df")"}, - }; - for (auto P : TestCases) { - StreamString S; - const bool pretty_print = false; - StructuredData::String(P.first).Dump(S, pretty_print); - EXPECT_EQ(P.second, S.GetString()); - } -} - -TEST(StructuredDataTest, ParseJSONFromFile) { - Status status; - auto object_sp = StructuredData::ParseJSONFromFile( - FileSpec("non-existing-file.json"), status); - EXPECT_EQ(nullptr, object_sp); - - std::string input = GetInputFilePath("StructuredData-basic.json"); - object_sp = StructuredData::ParseJSONFromFile(FileSpec(input), status); - ASSERT_NE(nullptr, object_sp); - - StreamString S; - object_sp->Dump(S, false); - EXPECT_EQ("[1,2,3]", S.GetString()); -} diff --git a/gnu/llvm/lldb/unittests/Utility/SubsystemRAIITest.cpp b/gnu/llvm/lldb/unittests/Utility/SubsystemRAIITest.cpp deleted file mode 100644 index 1a23bfc716f..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/SubsystemRAIITest.cpp +++ /dev/null @@ -1,99 +0,0 @@ -//===-- SubsystemRAIITest.cpp ---------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest-spi.h" -#include "gtest/gtest.h" - -#include "TestingSupport/SubsystemRAII.h" - -using namespace lldb_private; - -namespace { - -enum class SystemState { - /// Start state of the subsystem. - Start, - /// Initialize has been called but Terminate hasn't been called yet. - Initialized, - /// Terminate has been called. - Terminated -}; - -struct TestSubsystem { - static SystemState state; - static void Initialize() { - assert(state == SystemState::Start); - state = SystemState::Initialized; - } - static void Terminate() { - assert(state == SystemState::Initialized); - state = SystemState::Terminated; - } -}; -} // namespace - -SystemState TestSubsystem::state = SystemState::Start; - -TEST(SubsystemRAIITest, NormalSubsystem) { - // Tests that SubsystemRAII handles Initialize functions that return void. - EXPECT_EQ(SystemState::Start, TestSubsystem::state); - { - SubsystemRAII subsystem; - EXPECT_EQ(SystemState::Initialized, TestSubsystem::state); - } - EXPECT_EQ(SystemState::Terminated, TestSubsystem::state); -} - -static const char *SubsystemErrorString = "Initialize failed"; - -namespace { -struct TestSubsystemWithError { - static SystemState state; - static bool will_fail; - static llvm::Error Initialize() { - assert(state == SystemState::Start); - state = SystemState::Initialized; - if (will_fail) - return llvm::make_error( - SubsystemErrorString, llvm::inconvertibleErrorCode()); - return llvm::Error::success(); - } - static void Terminate() { - assert(state == SystemState::Initialized); - state = SystemState::Terminated; - } - /// Reset the subsystem to the default state for testing. - static void Reset() { state = SystemState::Start; } -}; -} // namespace - -SystemState TestSubsystemWithError::state = SystemState::Start; -bool TestSubsystemWithError::will_fail = false; - -TEST(SubsystemRAIITest, SubsystemWithErrorSuccess) { - // Tests that SubsystemRAII handles llvm::success() returned from - // Initialize. - TestSubsystemWithError::Reset(); - EXPECT_EQ(SystemState::Start, TestSubsystemWithError::state); - { - TestSubsystemWithError::will_fail = false; - SubsystemRAII subsystem; - EXPECT_EQ(SystemState::Initialized, TestSubsystemWithError::state); - } - EXPECT_EQ(SystemState::Terminated, TestSubsystemWithError::state); -} - -TEST(SubsystemRAIITest, SubsystemWithErrorFailure) { - // Tests that SubsystemRAII handles any errors returned from - // Initialize. - TestSubsystemWithError::Reset(); - EXPECT_EQ(SystemState::Start, TestSubsystemWithError::state); - TestSubsystemWithError::will_fail = true; - EXPECT_FATAL_FAILURE(SubsystemRAII subsystem, - SubsystemErrorString); -} diff --git a/gnu/llvm/lldb/unittests/Utility/TildeExpressionResolverTest.cpp b/gnu/llvm/lldb/unittests/Utility/TildeExpressionResolverTest.cpp deleted file mode 100644 index bcb7fdb8604..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/TildeExpressionResolverTest.cpp +++ /dev/null @@ -1,39 +0,0 @@ -#include "gtest/gtest.h" - -#include "TestingSupport/MockTildeExpressionResolver.h" -#include "lldb/Utility/TildeExpressionResolver.h" - -#include "llvm/ADT/SmallString.h" - -using namespace llvm; -using namespace lldb_private; - -TEST(TildeExpressionResolver, ResolveFullPath) { - MockTildeExpressionResolver Resolver("James", "/james"); - Resolver.AddKnownUser("Kirk", "/kirk"); - Resolver.AddKnownUser("Lars", "/lars"); - Resolver.AddKnownUser("Jason", "/jason"); - Resolver.AddKnownUser("Larry", "/larry"); - - SmallString<32> Result; - ASSERT_TRUE(Resolver.ResolveFullPath("~", Result)); - EXPECT_EQ("/james", Result); - ASSERT_TRUE(Resolver.ResolveFullPath("~/", Result)); - EXPECT_EQ("/james/", Result); - - ASSERT_TRUE(Resolver.ResolveFullPath("~James/bar/baz", Result)); - EXPECT_EQ("/james/bar/baz", Result); - - ASSERT_TRUE(Resolver.ResolveFullPath("~Jason/", Result)); - EXPECT_EQ("/jason/", Result); - - ASSERT_TRUE(Resolver.ResolveFullPath("~Lars", Result)); - EXPECT_EQ("/lars", Result); - - ASSERT_FALSE(Resolver.ResolveFullPath("~Jaso", Result)); - EXPECT_EQ("~Jaso", Result); - ASSERT_FALSE(Resolver.ResolveFullPath("", Result)); - EXPECT_EQ("", Result); - ASSERT_FALSE(Resolver.ResolveFullPath("Jason", Result)); - EXPECT_EQ("Jason", Result); -} diff --git a/gnu/llvm/lldb/unittests/Utility/TimeoutTest.cpp b/gnu/llvm/lldb/unittests/Utility/TimeoutTest.cpp deleted file mode 100644 index 222ee5db177..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/TimeoutTest.cpp +++ /dev/null @@ -1,29 +0,0 @@ -//===-- TimeoutTest.cpp ---------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/Timeout.h" -#include "llvm/Support/FormatVariadic.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace std::chrono; - -TEST(TimeoutTest, Construction) { - EXPECT_FALSE(Timeout(llvm::None)); - EXPECT_TRUE(bool(Timeout(seconds(0)))); - EXPECT_EQ(seconds(0), *Timeout(seconds(0))); - EXPECT_EQ(seconds(3), *Timeout(seconds(3))); - EXPECT_TRUE(bool(Timeout(Timeout(seconds(0))))); -} - -TEST(TimeoutTest, Format) { - EXPECT_EQ("", - llvm::formatv("{0}", Timeout(llvm::None)).str()); - EXPECT_EQ("1000 ms", - llvm::formatv("{0}", Timeout(seconds(1))).str()); -} diff --git a/gnu/llvm/lldb/unittests/Utility/TimerTest.cpp b/gnu/llvm/lldb/unittests/Utility/TimerTest.cpp deleted file mode 100644 index c6d1facdebb..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/TimerTest.cpp +++ /dev/null @@ -1,108 +0,0 @@ -//===-- TimerTest.cpp -----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/StreamString.h" -#include "lldb/Utility/Timer.h" -#include "gtest/gtest.h" -#include - -using namespace lldb_private; - -TEST(TimerTest, CategoryTimes) { - Timer::ResetCategoryTimes(); - { - static Timer::Category tcat("CAT1"); - Timer t(tcat, "."); - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - } - StreamString ss; - Timer::DumpCategoryTimes(&ss); - double seconds; - ASSERT_EQ(1, sscanf(ss.GetData(), "%lf sec for CAT1", &seconds)); - EXPECT_LT(0.001, seconds); - EXPECT_GT(0.1, seconds); -} - -TEST(TimerTest, CategoryTimesNested) { - Timer::ResetCategoryTimes(); - { - static Timer::Category tcat1("CAT1"); - Timer t1(tcat1, "."); - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - // Explicitly testing the same category as above. - Timer t2(tcat1, "."); - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - } - StreamString ss; - Timer::DumpCategoryTimes(&ss); - double seconds; - // It should only appear once. - ASSERT_EQ(ss.GetString().count("CAT1"), 1U); - ASSERT_EQ(1, sscanf(ss.GetData(), "%lf sec for CAT1", &seconds)); - EXPECT_LT(0.002, seconds); - EXPECT_GT(0.2, seconds); -} - -TEST(TimerTest, CategoryTimes2) { - Timer::ResetCategoryTimes(); - { - static Timer::Category tcat1("CAT1"); - Timer t1(tcat1, "."); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - static Timer::Category tcat2("CAT2"); - Timer t2(tcat2, "."); - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - } - StreamString ss; - Timer::DumpCategoryTimes(&ss); - double seconds1, seconds2; - ASSERT_EQ(2, sscanf(ss.GetData(), - "%lf sec (total: %*fs; child: %*fs; count: %*d) for " - "CAT1%*[\n ]%lf sec for CAT2", - &seconds1, &seconds2)) - << "String: " << ss.GetData(); - EXPECT_LT(0.01, seconds1); - EXPECT_GT(1, seconds1); - EXPECT_LT(0.001, seconds2); - EXPECT_GT(0.1, seconds2); -} - -TEST(TimerTest, CategoryTimesStats) { - Timer::ResetCategoryTimes(); - { - static Timer::Category tcat1("CAT1"); - Timer t1(tcat1, "."); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - static Timer::Category tcat2("CAT2"); - { - Timer t2(tcat2, "."); - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - } - { - Timer t3(tcat2, "."); - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - } - } - // Example output: - // 0.105202764 sec (total: 0.132s; child: 0.027s; count: 1) for CAT1 - // 0.026772798 sec (total: 0.027s; child: 0.000s; count: 2) for CAT2 - StreamString ss; - Timer::DumpCategoryTimes(&ss); - double seconds1, total1, child1, seconds2; - int count1, count2; - ASSERT_EQ( - 6, sscanf(ss.GetData(), - "%lf sec (total: %lfs; child: %lfs; count: %d) for CAT1%*[\n\r ]" - "%lf sec (total: %*fs; child: %*fs; count: %d) for CAT2", - &seconds1, &total1, &child1, &count1, &seconds2, &count2)) - << "String: " << ss.GetData(); - EXPECT_NEAR(total1 - child1, seconds1, 0.002); - EXPECT_EQ(1, count1); - EXPECT_NEAR(child1, seconds2, 0.002); - EXPECT_EQ(2, count2); -} diff --git a/gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp b/gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp deleted file mode 100644 index 1c84315d402..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp +++ /dev/null @@ -1,95 +0,0 @@ -//===-- UUIDTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/UUID.h" - -using namespace lldb_private; - -TEST(UUIDTest, RelationalOperators) { - UUID empty; - UUID a16 = UUID::fromData("1234567890123456", 16); - UUID b16 = UUID::fromData("1234567890123457", 16); - UUID a20 = UUID::fromData("12345678901234567890", 20); - UUID b20 = UUID::fromData("12345678900987654321", 20); - - EXPECT_EQ(empty, empty); - EXPECT_EQ(a16, a16); - EXPECT_EQ(a20, a20); - - EXPECT_NE(a16, b16); - EXPECT_NE(a20, b20); - EXPECT_NE(a16, a20); - EXPECT_NE(empty, a16); - - EXPECT_LT(empty, a16); - EXPECT_LT(a16, a20); - EXPECT_LT(a16, b16); - EXPECT_GT(a20, b20); -} - -TEST(UUIDTest, Validity) { - UUID empty; - std::vector zeroes(20, 0); - UUID a16 = UUID::fromData(zeroes.data(), 16); - UUID a20 = UUID::fromData(zeroes.data(), 20); - UUID a16_0 = UUID::fromOptionalData(zeroes.data(), 16); - UUID a20_0 = UUID::fromOptionalData(zeroes.data(), 20); - UUID from_str; - from_str.SetFromStringRef("00000000-0000-0000-0000-000000000000"); - UUID opt_from_str; - opt_from_str.SetFromOptionalStringRef("00000000-0000-0000-0000-000000000000"); - - EXPECT_FALSE(empty); - EXPECT_TRUE(a16); - EXPECT_TRUE(a20); - EXPECT_TRUE(from_str); - EXPECT_FALSE(a16_0); - EXPECT_FALSE(a20_0); - EXPECT_FALSE(opt_from_str); -} - -TEST(UUIDTest, SetFromStringRef) { - UUID u; - EXPECT_TRUE(u.SetFromStringRef("404142434445464748494a4b4c4d4e4f")); - EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u); - - EXPECT_TRUE(u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f")); - EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u); - - EXPECT_TRUE( - u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f-50515253")); - EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u); - - EXPECT_TRUE(u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f")); - - EXPECT_FALSE(u.SetFromStringRef("40xxxxx")); - EXPECT_FALSE(u.SetFromStringRef("")); - EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u) - << "uuid was changed by failed parse calls"; - - EXPECT_TRUE(u.SetFromStringRef("404142434445464748494a4b4c4d4e4f-50515253")); - EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u); - - EXPECT_TRUE(u.SetFromStringRef("40414243")); - EXPECT_EQ(UUID::fromData("@ABCD", 4), u); - - EXPECT_FALSE(u.SetFromStringRef("4")); -} - -TEST(UUIDTest, StringConverion) { - EXPECT_EQ("40414243", UUID::fromData("@ABC", 4).GetAsString()); - EXPECT_EQ("40414243-4445-4647", UUID::fromData("@ABCDEFG", 8).GetAsString()); - EXPECT_EQ("40414243-4445-4647-4849-4A4B", - UUID::fromData("@ABCDEFGHIJK", 12).GetAsString()); - EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F", - UUID::fromData("@ABCDEFGHIJKLMNO", 16).GetAsString()); - EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F-50515253", - UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20).GetAsString()); -} diff --git a/gnu/llvm/lldb/unittests/Utility/UriParserTest.cpp b/gnu/llvm/lldb/unittests/Utility/UriParserTest.cpp deleted file mode 100644 index c88a647ef93..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/UriParserTest.cpp +++ /dev/null @@ -1,175 +0,0 @@ -#include "lldb/Utility/UriParser.h" -#include "gtest/gtest.h" - -using namespace lldb_private; - -// result strings (scheme/hostname/port/path) passed into UriParser::Parse -// are initialized to kAsdf so we can verify that they are unmodified if the -// URI is invalid -static const char *kAsdf = "asdf"; - -class UriTestCase { -public: - UriTestCase(const char *uri, const char *scheme, const char *hostname, - int port, const char *path) - : m_uri(uri), m_result(true), m_scheme(scheme), m_hostname(hostname), - m_port(port), m_path(path) {} - - UriTestCase(const char *uri) - : m_uri(uri), m_result(false), m_scheme(kAsdf), m_hostname(kAsdf), - m_port(1138), m_path(kAsdf) {} - - const char *m_uri; - bool m_result; - const char *m_scheme; - const char *m_hostname; - int m_port; - const char *m_path; -}; - -#define VALIDATE \ - llvm::StringRef scheme(kAsdf); \ - llvm::StringRef hostname(kAsdf); \ - int port(1138); \ - llvm::StringRef path(kAsdf); \ - EXPECT_EQ(testCase.m_result, \ - UriParser::Parse(testCase.m_uri, scheme, hostname, port, path)); \ - EXPECT_STREQ(testCase.m_scheme, scheme.str().c_str()); \ - EXPECT_STREQ(testCase.m_hostname, hostname.str().c_str()); \ - EXPECT_EQ(testCase.m_port, port); \ - EXPECT_STREQ(testCase.m_path, path.str().c_str()); - -TEST(UriParserTest, Minimal) { - const UriTestCase testCase("x://y", "x", "y", -1, "/"); - VALIDATE -} - -TEST(UriParserTest, MinimalPort) { - const UriTestCase testCase("x://y:1", "x", "y", 1, "/"); - llvm::StringRef scheme(kAsdf); - llvm::StringRef hostname(kAsdf); - int port(1138); - llvm::StringRef path(kAsdf); - bool result = UriParser::Parse(testCase.m_uri, scheme, hostname, port, path); - EXPECT_EQ(testCase.m_result, result); - - EXPECT_STREQ(testCase.m_scheme, scheme.str().c_str()); - EXPECT_STREQ(testCase.m_hostname, hostname.str().c_str()); - EXPECT_EQ(testCase.m_port, port); - EXPECT_STREQ(testCase.m_path, path.str().c_str()); -} - -TEST(UriParserTest, MinimalPath) { - const UriTestCase testCase("x://y/", "x", "y", -1, "/"); - VALIDATE -} - -TEST(UriParserTest, MinimalPortPath) { - const UriTestCase testCase("x://y:1/", "x", "y", 1, "/"); - VALIDATE -} - -TEST(UriParserTest, LongPath) { - const UriTestCase testCase("x://y/abc/def/xyz", "x", "y", -1, "/abc/def/xyz"); - VALIDATE -} - -TEST(UriParserTest, TypicalPortPathIPv4) { - const UriTestCase testCase("connect://192.168.100.132:5432/", "connect", - "192.168.100.132", 5432, "/"); - VALIDATE; -} - -TEST(UriParserTest, TypicalPortPathIPv6) { - const UriTestCase testCase( - "connect://[2601:600:107f:db64:a42b:4faa:284:3082]:5432/", "connect", - "2601:600:107f:db64:a42b:4faa:284:3082", 5432, "/"); - VALIDATE; -} - -TEST(UriParserTest, BracketedHostnamePort) { - const UriTestCase testCase("connect://[192.168.100.132]:5432/", "connect", - "192.168.100.132", 5432, "/"); - llvm::StringRef scheme(kAsdf); - llvm::StringRef hostname(kAsdf); - int port(1138); - llvm::StringRef path(kAsdf); - bool result = UriParser::Parse(testCase.m_uri, scheme, hostname, port, path); - EXPECT_EQ(testCase.m_result, result); - - EXPECT_STREQ(testCase.m_scheme, scheme.str().c_str()); - EXPECT_STREQ(testCase.m_hostname, hostname.str().c_str()); - EXPECT_EQ(testCase.m_port, port); - EXPECT_STREQ(testCase.m_path, path.str().c_str()); -} - -TEST(UriParserTest, BracketedHostname) { - const UriTestCase testCase("connect://[192.168.100.132]", "connect", - "192.168.100.132", -1, "/"); - VALIDATE -} - -TEST(UriParserTest, BracketedHostnameWithPortIPv4) { - // Android device over IPv4: port is a part of the hostname. - const UriTestCase testCase("connect://[192.168.100.132:1234]", "connect", - "192.168.100.132:1234", -1, "/"); - VALIDATE -} - -TEST(UriParserTest, BracketedHostnameWithPortIPv6) { - // Android device over IPv6: port is a part of the hostname. - const UriTestCase testCase( - "connect://[[2601:600:107f:db64:a42b:4faa:284]:1234]", "connect", - "[2601:600:107f:db64:a42b:4faa:284]:1234", -1, "/"); - VALIDATE -} - -TEST(UriParserTest, BracketedHostnameWithColon) { - const UriTestCase testCase("connect://[192.168.100.132:5555]:1234", "connect", - "192.168.100.132:5555", 1234, "/"); - VALIDATE -} - -TEST(UriParserTest, SchemeHostSeparator) { - const UriTestCase testCase("x:/y"); - VALIDATE -} - -TEST(UriParserTest, SchemeHostSeparator2) { - const UriTestCase testCase("x:y"); - VALIDATE -} - -TEST(UriParserTest, SchemeHostSeparator3) { - const UriTestCase testCase("x//y"); - VALIDATE -} - -TEST(UriParserTest, SchemeHostSeparator4) { - const UriTestCase testCase("x/y"); - VALIDATE -} - -TEST(UriParserTest, BadPort) { - const UriTestCase testCase("x://y:a/"); - VALIDATE -} - -TEST(UriParserTest, BadPort2) { - const UriTestCase testCase("x://y:5432a/"); - VALIDATE -} - -TEST(UriParserTest, Empty) { - const UriTestCase testCase(""); - VALIDATE -} - -TEST(UriParserTest, PortOverflow) { - const UriTestCase testCase("x://" - "y:" - "0123456789012345678901234567890123456789012345678" - "9012345678901234567890123456789012345678901234567" - "89/"); - VALIDATE -} diff --git a/gnu/llvm/lldb/unittests/Utility/UserIDResolverTest.cpp b/gnu/llvm/lldb/unittests/Utility/UserIDResolverTest.cpp deleted file mode 100644 index 7cd89609b35..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/UserIDResolverTest.cpp +++ /dev/null @@ -1,47 +0,0 @@ -//===-- UserIDResolverTest.cpp --------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/UserIDResolver.h" -#include "gmock/gmock.h" - -using namespace lldb_private; -using namespace testing; - -namespace { -class TestUserIDResolver : public UserIDResolver { -public: - MOCK_METHOD1(DoGetUserName, llvm::Optional(id_t uid)); - MOCK_METHOD1(DoGetGroupName, llvm::Optional(id_t gid)); -}; -} // namespace - -TEST(UserIDResolver, GetUserName) { - StrictMock r; - llvm::StringRef user47("foo"); - EXPECT_CALL(r, DoGetUserName(47)).Times(1).WillOnce(Return(user47.str())); - EXPECT_CALL(r, DoGetUserName(42)).Times(1).WillOnce(Return(llvm::None)); - - // Call functions twice to make sure the caching works. - EXPECT_EQ(user47, r.GetUserName(47)); - EXPECT_EQ(user47, r.GetUserName(47)); - EXPECT_EQ(llvm::None, r.GetUserName(42)); - EXPECT_EQ(llvm::None, r.GetUserName(42)); -} - -TEST(UserIDResolver, GetGroupName) { - StrictMock r; - llvm::StringRef group47("foo"); - EXPECT_CALL(r, DoGetGroupName(47)).Times(1).WillOnce(Return(group47.str())); - EXPECT_CALL(r, DoGetGroupName(42)).Times(1).WillOnce(Return(llvm::None)); - - // Call functions twice to make sure the caching works. - EXPECT_EQ(group47, r.GetGroupName(47)); - EXPECT_EQ(group47, r.GetGroupName(47)); - EXPECT_EQ(llvm::None, r.GetGroupName(42)); - EXPECT_EQ(llvm::None, r.GetGroupName(42)); -} diff --git a/gnu/llvm/lldb/unittests/Utility/VASprintfTest.cpp b/gnu/llvm/lldb/unittests/Utility/VASprintfTest.cpp deleted file mode 100644 index a04cd27362d..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/VASprintfTest.cpp +++ /dev/null @@ -1,66 +0,0 @@ -//===-- VASprintfTest.cpp -------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "lldb/Utility/VASPrintf.h" -#include "llvm/ADT/SmallString.h" - -#include "gtest/gtest.h" - -#include - -#if defined (_WIN32) -#define TEST_ENCODING ".932" // On Windows, test codepage 932 -#else -#define TEST_ENCODING "C" // ...otherwise, any widely available uni-byte LC -#endif - -using namespace lldb_private; -using namespace llvm; - -static bool Sprintf(llvm::SmallVectorImpl &Buffer, const char *Fmt, ...) { - va_list args; - va_start(args, Fmt); - bool Result = VASprintf(Buffer, Fmt, args); - va_end(args); - return Result; -} - -TEST(VASprintfTest, NoBufferResize) { - std::string TestStr("small"); - - llvm::SmallString<32> BigBuffer; - ASSERT_TRUE(Sprintf(BigBuffer, "%s", TestStr.c_str())); - EXPECT_STREQ(TestStr.c_str(), BigBuffer.c_str()); - EXPECT_EQ(TestStr.size(), BigBuffer.size()); -} - -TEST(VASprintfTest, BufferResize) { - std::string TestStr("bigger"); - llvm::SmallString<4> SmallBuffer; - ASSERT_TRUE(Sprintf(SmallBuffer, "%s", TestStr.c_str())); - EXPECT_STREQ(TestStr.c_str(), SmallBuffer.c_str()); - EXPECT_EQ(TestStr.size(), SmallBuffer.size()); -} - -TEST(VASprintfTest, EncodingError) { - // Save the current locale first. - std::string Current(::setlocale(LC_ALL, nullptr)); - - // Ensure tested locale is successfully set - ASSERT_TRUE(setlocale(LC_ALL, TEST_ENCODING)); - - wchar_t Invalid[2]; - Invalid[0] = 0x100; - Invalid[1] = 0; - llvm::SmallString<32> Buffer; - EXPECT_FALSE(Sprintf(Buffer, "%ls", Invalid)); - EXPECT_EQ("", Buffer); - - // Ensure we've restored the original locale once tested - ASSERT_TRUE(setlocale(LC_ALL, Current.c_str())); -} diff --git a/gnu/llvm/lldb/unittests/Utility/VMRangeTest.cpp b/gnu/llvm/lldb/unittests/Utility/VMRangeTest.cpp deleted file mode 100644 index 064f12090b9..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/VMRangeTest.cpp +++ /dev/null @@ -1,151 +0,0 @@ -//===-- VMRangeTest.cpp ---------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include - -#include "lldb/Utility/VMRange.h" - -using namespace lldb_private; - -namespace lldb_private { -void PrintTo(const VMRange &v, std::ostream *os) { - (*os) << "VMRange(" << v.GetBaseAddress() << ", " << v.GetEndAddress() << ")"; -} -} // namespace lldb_private - -TEST(VMRange, IsValid) { - VMRange range; - EXPECT_FALSE(range.IsValid()); - - range.Reset(0x1, 0x100); - EXPECT_TRUE(range.IsValid()); - - range.Reset(0x1, 0x1); - EXPECT_FALSE(range.IsValid()); -} - -TEST(VMRange, Clear) { - VMRange range(0x100, 0x200); - EXPECT_NE(VMRange(), range); - range.Clear(); - EXPECT_EQ(VMRange(), range); -} - -TEST(VMRange, Comparison) { - VMRange range1(0x100, 0x200); - VMRange range2(0x100, 0x200); - EXPECT_EQ(range1, range2); - - EXPECT_NE(VMRange(0x100, 0x1ff), range1); - EXPECT_NE(VMRange(0x100, 0x201), range1); - EXPECT_NE(VMRange(0x0ff, 0x200), range1); - EXPECT_NE(VMRange(0x101, 0x200), range1); - - range2.Clear(); - EXPECT_NE(range1, range2); -} - -TEST(VMRange, Reset) { - VMRange range(0x100, 0x200); - EXPECT_FALSE(VMRange(0x200, 0x200) == range); - range.Reset(0x200, 0x200); - EXPECT_TRUE(VMRange(0x200, 0x200) == range); -} - -TEST(VMRange, SetEndAddress) { - VMRange range(0x100, 0x200); - - range.SetEndAddress(0xFF); - EXPECT_EQ(0U, range.GetByteSize()); - EXPECT_FALSE(range.IsValid()); - - range.SetEndAddress(0x101); - EXPECT_EQ(1U, range.GetByteSize()); - EXPECT_TRUE(range.IsValid()); -} - -TEST(VMRange, ContainsAddr) { - VMRange range(0x100, 0x200); - - EXPECT_FALSE(range.Contains(0x00)); - EXPECT_FALSE(range.Contains(0xFF)); - EXPECT_TRUE(range.Contains(0x100)); - EXPECT_TRUE(range.Contains(0x101)); - EXPECT_TRUE(range.Contains(0x1FF)); - EXPECT_FALSE(range.Contains(0x200)); - EXPECT_FALSE(range.Contains(0x201)); - EXPECT_FALSE(range.Contains(0xFFF)); - EXPECT_FALSE(range.Contains(std::numeric_limits::max())); -} - -TEST(VMRange, ContainsRange) { - VMRange range(0x100, 0x200); - - EXPECT_FALSE(range.Contains(VMRange(0x0, 0x0))); - - EXPECT_FALSE(range.Contains(VMRange(0x0, 0x100))); - EXPECT_FALSE(range.Contains(VMRange(0x0, 0x101))); - EXPECT_TRUE(range.Contains(VMRange(0x100, 0x105))); - EXPECT_TRUE(range.Contains(VMRange(0x101, 0x105))); - EXPECT_TRUE(range.Contains(VMRange(0x100, 0x1FF))); - EXPECT_TRUE(range.Contains(VMRange(0x105, 0x200))); - EXPECT_FALSE(range.Contains(VMRange(0x105, 0x201))); - EXPECT_FALSE(range.Contains(VMRange(0x200, 0x201))); - EXPECT_TRUE(range.Contains(VMRange(0x100, 0x200))); - EXPECT_FALSE( - range.Contains(VMRange(0x105, std::numeric_limits::max()))); - - // Empty range. - EXPECT_TRUE(range.Contains(VMRange(0x100, 0x100))); - - range.Clear(); - EXPECT_FALSE(range.Contains(VMRange(0x0, 0x0))); -} - -TEST(VMRange, Ordering) { - VMRange range1(0x44, 0x200); - VMRange range2(0x100, 0x1FF); - VMRange range3(0x100, 0x200); - - EXPECT_LE(range1, range1); - EXPECT_GE(range1, range1); - - EXPECT_LT(range1, range2); - EXPECT_LT(range2, range3); - - EXPECT_GT(range2, range1); - EXPECT_GT(range3, range2); - - // Ensure that < and > are always false when comparing ranges with themselves. - EXPECT_FALSE(range1 < range1); - EXPECT_FALSE(range2 < range2); - EXPECT_FALSE(range3 < range3); - - EXPECT_FALSE(range1 > range1); - EXPECT_FALSE(range2 > range2); - EXPECT_FALSE(range3 > range3); -} - -TEST(VMRange, CollectionContains) { - VMRange::collection collection = {VMRange(0x100, 0x105), - VMRange(0x108, 0x110)}; - - EXPECT_FALSE(VMRange::ContainsValue(collection, 0xFF)); - EXPECT_TRUE(VMRange::ContainsValue(collection, 0x100)); - EXPECT_FALSE(VMRange::ContainsValue(collection, 0x105)); - EXPECT_TRUE(VMRange::ContainsValue(collection, 0x109)); - - EXPECT_TRUE(VMRange::ContainsRange(collection, VMRange(0x100, 0x104))); - EXPECT_TRUE(VMRange::ContainsRange(collection, VMRange(0x108, 0x100))); - EXPECT_FALSE(VMRange::ContainsRange(collection, VMRange(0xFF, 0x100))); - - // TODO: Implement and test ContainsRange with values that span multiple - // ranges in the collection. -} diff --git a/gnu/llvm/lldb/unittests/Utility/XcodeSDKTest.cpp b/gnu/llvm/lldb/unittests/Utility/XcodeSDKTest.cpp deleted file mode 100644 index 69e4d2caa01..00000000000 --- a/gnu/llvm/lldb/unittests/Utility/XcodeSDKTest.cpp +++ /dev/null @@ -1,241 +0,0 @@ -//===-- XcodeSDKTest.cpp --------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include "lldb/Utility/FileSpec.h" -#include "lldb/Utility/XcodeSDK.h" - -#include "llvm/ADT/StringRef.h" -#include "llvm/ADT/Triple.h" - -#include - -using namespace lldb_private; - -TEST(XcodeSDKTest, ParseTest) { - EXPECT_EQ(XcodeSDK::GetAnyMacOS().GetType(), XcodeSDK::MacOSX); - EXPECT_EQ(XcodeSDK("MacOSX.sdk").GetType(), XcodeSDK::MacOSX); - EXPECT_EQ(XcodeSDK("iPhoneSimulator.sdk").GetType(), XcodeSDK::iPhoneSimulator); - EXPECT_EQ(XcodeSDK("iPhoneOS.sdk").GetType(), XcodeSDK::iPhoneOS); - EXPECT_EQ(XcodeSDK("AppleTVSimulator.sdk").GetType(), XcodeSDK::AppleTVSimulator); - EXPECT_EQ(XcodeSDK("AppleTVOS.sdk").GetType(), XcodeSDK::AppleTVOS); - EXPECT_EQ(XcodeSDK("WatchSimulator.sdk").GetType(), XcodeSDK::WatchSimulator); - EXPECT_EQ(XcodeSDK("WatchOS.sdk").GetType(), XcodeSDK::watchOS); - EXPECT_EQ(XcodeSDK("Linux.sdk").GetType(), XcodeSDK::Linux); - EXPECT_EQ(XcodeSDK("MacOSX.sdk").GetVersion(), llvm::VersionTuple()); - EXPECT_EQ(XcodeSDK("MacOSX10.9.sdk").GetVersion(), llvm::VersionTuple(10, 9)); - EXPECT_EQ(XcodeSDK("MacOSX10.15.4.sdk").GetVersion(), llvm::VersionTuple(10, 15)); - EXPECT_EQ(XcodeSDK("MacOSX.sdk").IsAppleInternalSDK(), false); - EXPECT_EQ(XcodeSDK("MacOSX10.15.Internal.sdk").GetType(), XcodeSDK::MacOSX); - EXPECT_EQ(XcodeSDK("MacOSX10.15.Internal.sdk").GetVersion(), - llvm::VersionTuple(10, 15)); - EXPECT_EQ(XcodeSDK("MacOSX10.15.Internal.sdk").IsAppleInternalSDK(), true); - EXPECT_EQ(XcodeSDK().GetType(), XcodeSDK::unknown); - EXPECT_EQ(XcodeSDK().GetVersion(), llvm::VersionTuple()); -} - -TEST(XcodeSDKTest, MergeTest) { - XcodeSDK sdk("MacOSX.sdk"); - sdk.Merge(XcodeSDK("WatchOS.sdk")); - // This doesn't make any particular sense and shouldn't happen in practice, we - // just want to guarantee a well-defined behavior when choosing one - // SDK to fit all CUs in an lldb::Module. - // -> The higher number wins. - EXPECT_EQ(sdk.GetType(), XcodeSDK::watchOS); - sdk.Merge(XcodeSDK("WatchOS1.1.sdk")); - EXPECT_EQ(sdk.GetVersion(), llvm::VersionTuple(1, 1)); - sdk.Merge(XcodeSDK("WatchOS2.0.sdk")); - EXPECT_EQ(sdk.GetVersion(), llvm::VersionTuple(2, 0)); - sdk.Merge(XcodeSDK("WatchOS1.1.Internal.sdk")); - EXPECT_EQ(sdk.GetVersion(), llvm::VersionTuple(2, 0)); - EXPECT_EQ(sdk.IsAppleInternalSDK(), true); - XcodeSDK empty; - empty.Merge(XcodeSDK("MacOSX10.14.Internal.sdk")); - EXPECT_EQ(empty.GetString(), llvm::StringRef("MacOSX10.14.Internal.sdk")); -} - -#ifndef _WIN32 -TEST(XcodeSDKTest, SDKSupportsModules) { - std::string base = "/Applications/Xcode.app/Contents/Developer/Platforms/"; - EXPECT_TRUE(XcodeSDK::SDKSupportsModules( - XcodeSDK::Type::iPhoneSimulator, - FileSpec( - base + - "iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk"))); - EXPECT_TRUE(XcodeSDK::SDKSupportsModules( - XcodeSDK::Type::iPhoneSimulator, - FileSpec(base + "iPhoneSimulator.platform/Developer/SDKs/" - "iPhoneSimulator12.0.Internal.sdk"))); - EXPECT_FALSE(XcodeSDK::SDKSupportsModules( - XcodeSDK::Type::iPhoneSimulator, - FileSpec( - base + - "iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.2.sdk"))); - EXPECT_TRUE(XcodeSDK::SDKSupportsModules( - XcodeSDK::Type::MacOSX, - FileSpec(base + "MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk"))); - EXPECT_FALSE(XcodeSDK::SDKSupportsModules( - XcodeSDK::Type::MacOSX, - FileSpec(base + "MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk"))); -} -#endif - -TEST(XcodeSDKTest, SDKSupportsSwift) { - EXPECT_TRUE(XcodeSDK("iPhoneSimulator12.0.sdk").SupportsSwift()); - EXPECT_TRUE(XcodeSDK("iPhoneSimulator12.0.Internal.sdk").SupportsSwift()); - EXPECT_FALSE(XcodeSDK("iPhoneSimulator7.2.sdk").SupportsSwift()); - EXPECT_TRUE(XcodeSDK("MacOSX10.10.sdk").SupportsSwift()); - EXPECT_FALSE(XcodeSDK("MacOSX10.9.sdk").SupportsSwift()); - EXPECT_TRUE(XcodeSDK("Linux.sdk").SupportsSwift()); - EXPECT_TRUE(XcodeSDK("MacOSX.sdk").SupportsSwift()); - EXPECT_FALSE(XcodeSDK("EverythingElse.sdk").SupportsSwift()); -} - -TEST(XcodeSDKTest, GetCanonicalNameAndConstruct) { - XcodeSDK::Info info; - info.type = XcodeSDK::Type::MacOSX; - EXPECT_EQ("macosx", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::iPhoneSimulator; - EXPECT_EQ("iphonesimulator", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::iPhoneOS; - EXPECT_EQ("iphoneos", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::AppleTVSimulator; - EXPECT_EQ("appletvsimulator", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::AppleTVOS; - EXPECT_EQ("appletvos", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::WatchSimulator; - EXPECT_EQ("watchsimulator", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::watchOS; - EXPECT_EQ("watchos", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::Linux; - EXPECT_EQ("linux", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::unknown; - EXPECT_EQ("", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.internal = true; - info.type = XcodeSDK::Type::MacOSX; - EXPECT_EQ("macosx.internal", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::iPhoneSimulator; - EXPECT_EQ("iphonesimulator.internal", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::iPhoneOS; - EXPECT_EQ("iphoneos.internal", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::AppleTVSimulator; - EXPECT_EQ("appletvsimulator.internal", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::AppleTVOS; - EXPECT_EQ("appletvos.internal", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::WatchSimulator; - EXPECT_EQ("watchsimulator.internal", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::watchOS; - EXPECT_EQ("watchos.internal", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::MacOSX; - info.version = llvm::VersionTuple(10, 9); - EXPECT_EQ("macosx10.9.internal", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); - - info.type = XcodeSDK::Type::iPhoneOS; - info.version = llvm::VersionTuple(7, 0); - EXPECT_EQ("iphoneos7.0.internal", XcodeSDK::GetCanonicalName(info)); - EXPECT_EQ(XcodeSDK(info).Parse(), info); -} - -TEST(XcodeSDKTest, GetSDKTypeForTriple) { - EXPECT_EQ( - XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-apple-macosx10.14")), - XcodeSDK::Type::MacOSX); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-apple-darwin")), - XcodeSDK::Type::MacOSX); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple( - llvm::Triple("x86_64-apple-ios13.4-simulator")), - XcodeSDK::Type::iPhoneSimulator); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-ios13.4")), - XcodeSDK::Type::iPhoneOS); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple( - llvm::Triple("x86_64-apple-ios13.4-macabi")), - XcodeSDK::Type::MacOSX); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple( - llvm::Triple("x86_64-apple-tvos-simulator")), - XcodeSDK::Type::AppleTVSimulator); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-tvos")), - XcodeSDK::Type::AppleTVOS); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple( - llvm::Triple("x86_64-apple-watchos-simulator")), - XcodeSDK::Type::WatchSimulator); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("arm64-apple-watchos")), - XcodeSDK::Type::watchOS); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("x86_64-unknown-linux")), - XcodeSDK::Type::Linux); - EXPECT_EQ(XcodeSDK::GetSDKTypeForTriple(llvm::Triple("i386-unknown-netbsd")), - XcodeSDK::Type::unknown); -} - -TEST(XcodeSDKTest, FindXcodeContentsDirectoryInPath) { - std::string standard = - "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/" - "Developer/SDKs/MacOSX.sdk"; - EXPECT_EQ("/Applications/Xcode.app/Contents", - XcodeSDK::FindXcodeContentsDirectoryInPath(standard)); - - std::string standard_version = - "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/" - "Developer/SDKs/MacOSX10.15.sdk"; - EXPECT_EQ("/Applications/Xcode.app/Contents", - XcodeSDK::FindXcodeContentsDirectoryInPath(standard_version)); - - std::string beta = "/Applications/Xcode-beta.app/Contents/Developer/" - "Platforms/MacOSX.platform/" - "Developer/SDKs/MacOSX10.15.sdk"; - EXPECT_EQ("/Applications/Xcode-beta.app/Contents", - XcodeSDK::FindXcodeContentsDirectoryInPath(beta)); - - std::string no_app = - "/Applications/Xcode/Contents/Developer/Platforms/MacOSX.platform/" - "Developer/SDKs/MacOSX10.15.sdk"; - EXPECT_EQ("", XcodeSDK::FindXcodeContentsDirectoryInPath(no_app)); - - std::string no_contents = - "/Applications/Xcode.app/Developer/Platforms/MacOSX.platform/" - "Developer/SDKs/MacOSX10.15.sdk"; - EXPECT_EQ("", XcodeSDK::FindXcodeContentsDirectoryInPath(no_contents)); - - std::string no_capitalization = - "/Applications/Xcode.app/contents/Developer/Platforms/MacOSX.platform/" - "Developer/SDKs/MacOSX10.15.sdk"; - EXPECT_EQ("", XcodeSDK::FindXcodeContentsDirectoryInPath(no_capitalization)); -} diff --git a/gnu/llvm/lldb/unittests/debugserver/CMakeLists.txt b/gnu/llvm/lldb/unittests/debugserver/CMakeLists.txt deleted file mode 100644 index fd488c1623b..00000000000 --- a/gnu/llvm/lldb/unittests/debugserver/CMakeLists.txt +++ /dev/null @@ -1,42 +0,0 @@ -# Note: debugserver is a Darwin-only implementation of a remote debugging -# server. It is not intended to be used on other platforms. The tests are here -# because using the LLDB Host API is convenient and allows testing of both parts -# of the debugserver communication path. If you are looking for a non-darwin -# remote debugging server, please use lldb-server. - -add_lldb_unittest(debugserverTests - JSONTest.cpp - RNBSocketTest.cpp - debugserver_LogCallback.cpp - - LINK_LIBS - lldbDebugserverCommon - lldbHost - LLVMTestingSupport - LINK_COMPONENTS - Support - ) - -target_include_directories(debugserverTests PRIVATE - ${LLDB_SOURCE_DIR}/tools/debugserver/source - ${LLDB_SOURCE_DIR}/tools/debugserver/source/MacOSX) - -if(APPLE_EMBEDDED) - set_property(TARGET debugserverTests APPEND PROPERTY COMPILE_DEFINITIONS - WITH_LOCKDOWN - WITH_FBS - WITH_BKS - ) - - add_lldb_unittest(debugserverNonUITests - JSONTest.cpp - RNBSocketTest.cpp - debugserver_LogCallback.cpp - - LINK_LIBS - lldbDebugserverCommon_NonUI - lldbHost - LINK_COMPONENTS - Support - ) -endif() diff --git a/gnu/llvm/lldb/unittests/debugserver/JSONTest.cpp b/gnu/llvm/lldb/unittests/debugserver/JSONTest.cpp deleted file mode 100644 index ee359cc341d..00000000000 --- a/gnu/llvm/lldb/unittests/debugserver/JSONTest.cpp +++ /dev/null @@ -1,89 +0,0 @@ -//===-- JSONTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gmock/gmock.h" -#include "gtest/gtest.h" - -#include "JSON.h" - -template -void TestJSON(JSONValue *json_val, const std::function &test_func) { - ASSERT_THAT(json_val, testing::NotNull()); - ASSERT_TRUE(T::classof(json_val)); - test_func(static_cast(*json_val)); -} - -JSONValue::SP ParseJSON(const char *json_string) { - return JSONParser(json_string).ParseJSONValue(); -} - -template -void ParseAndTestJSON( - const char *json_string, - const std::function &test_func = [](T &) {}) { - auto json_val = ParseJSON(json_string); - TestJSON(json_val.get(), test_func); -} - -TEST(JSON, Parse) { - ParseAndTestJSON("\"foo\"", [](JSONString &string_val) { - EXPECT_EQ(string_val.GetData(), "foo"); - }); - EXPECT_THAT(ParseJSON("\"foo"), testing::IsNull()); - ParseAndTestJSON("3", [](JSONNumber &number_val) { - EXPECT_EQ(number_val.GetAsSigned(), 3); - EXPECT_EQ(number_val.GetAsUnsigned(), 3u); - EXPECT_EQ(number_val.GetAsDouble(), 3.0); - }); - ParseAndTestJSON("-5", [](JSONNumber &number_val) { - EXPECT_EQ(number_val.GetAsSigned(), -5); - EXPECT_EQ(number_val.GetAsDouble(), -5.0); - }); - ParseAndTestJSON("-6.4", [](JSONNumber &number_val) { - EXPECT_EQ(number_val.GetAsSigned(), -6); - EXPECT_EQ(number_val.GetAsDouble(), -6.4); - }); - EXPECT_THAT(ParseJSON("-1.2.3"), testing::IsNull()); - ParseAndTestJSON("true"); - ParseAndTestJSON("false"); - ParseAndTestJSON("null"); - ParseAndTestJSON( - "{ \"key1\": 4, \"key2\": \"foobar\" }", [](JSONObject &obj_val) { - TestJSON(obj_val.GetObject("key1").get(), - [](JSONNumber &number_val) { - EXPECT_EQ(number_val.GetAsSigned(), 4); - EXPECT_EQ(number_val.GetAsUnsigned(), 4u); - EXPECT_EQ(number_val.GetAsDouble(), 4.0); - }); - TestJSON(obj_val.GetObject("key2").get(), - [](JSONString &string_val) { - EXPECT_EQ(string_val.GetData(), "foobar"); - }); - }); - ParseAndTestJSON("[1, \"bar\", 3.14]", [](JSONArray &array_val) { - EXPECT_EQ(array_val.GetNumElements(), 3u); - TestJSON(array_val.GetObject(0).get(), - [](JSONNumber &number_val) { - EXPECT_EQ(number_val.GetAsSigned(), 1); - EXPECT_EQ(number_val.GetAsUnsigned(), 1u); - EXPECT_EQ(number_val.GetAsDouble(), 1.0); - }); - TestJSON( - array_val.GetObject(1).get(), - [](JSONString &string_val) { EXPECT_EQ(string_val.GetData(), "bar"); }); - TestJSON(array_val.GetObject(2).get(), - [](JSONNumber &number_val) { - EXPECT_EQ(number_val.GetAsSigned(), 3); - EXPECT_EQ(number_val.GetAsUnsigned(), 3u); - EXPECT_EQ(number_val.GetAsDouble(), 3.14); - }); - }); - ParseAndTestJSON("[]", [](JSONArray &array_val) { - EXPECT_EQ(array_val.GetNumElements(), 0u); - }); -} diff --git a/gnu/llvm/lldb/unittests/debugserver/RNBSocketTest.cpp b/gnu/llvm/lldb/unittests/debugserver/RNBSocketTest.cpp deleted file mode 100644 index 2625a6d36b5..00000000000 --- a/gnu/llvm/lldb/unittests/debugserver/RNBSocketTest.cpp +++ /dev/null @@ -1,162 +0,0 @@ -//===-- RNBSocketTest.cpp -------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "gtest/gtest.h" - -#include -#include -#include - -#include "RNBDefs.h" -#include "RNBSocket.h" -#include "lldb/Host/Socket.h" -#include "lldb/Host/StringConvert.h" -#include "lldb/Host/common/TCPSocket.h" -#include "llvm/Testing/Support/Error.h" - -using namespace lldb_private; - -std::string hello = "Hello, world!"; -std::string goodbye = "Goodbye!"; - -static void ServerCallbackv4(const void *baton, in_port_t port) { - auto child_pid = fork(); - if (child_pid == 0) { - char addr_buffer[256]; - sprintf(addr_buffer, "%s:%d", (const char *)baton, port); - llvm::Expected> socket_or_err = - Socket::TcpConnect(addr_buffer, false); - ASSERT_THAT_EXPECTED(socket_or_err, llvm::Succeeded()); - Socket *client_socket = socket_or_err->get(); - - char buffer[32]; - size_t read_size = 32; - Status err = client_socket->Read((void *)&buffer[0], read_size); - if (err.Fail()) - abort(); - std::string Recv(&buffer[0], read_size); - if (Recv != hello) - abort(); - size_t write_size = goodbye.length(); - err = client_socket->Write(goodbye.c_str(), write_size); - if (err.Fail()) - abort(); - if (write_size != goodbye.length()) - abort(); - delete client_socket; - exit(0); - } -} - -void TestSocketListen(const char *addr) { - // Skip IPv6 tests if there isn't a valid interafce - auto addresses = lldb_private::SocketAddress::GetAddressInfo( - addr, NULL, AF_UNSPEC, SOCK_STREAM, IPPROTO_TCP); - if (addresses.size() == 0) - return; - - char addr_wrap[256]; - if (addresses.front().GetFamily() == AF_INET6) - sprintf(addr_wrap, "[%s]", addr); - else - sprintf(addr_wrap, "%s", addr); - - RNBSocket server_socket; - auto result = - server_socket.Listen(addr, 0, ServerCallbackv4, (const void *)addr_wrap); - ASSERT_TRUE(result == rnb_success); - result = server_socket.Write(hello.c_str(), hello.length()); - ASSERT_TRUE(result == rnb_success); - std::string bye; - result = server_socket.Read(bye); - ASSERT_TRUE(result == rnb_success); - ASSERT_EQ(bye, goodbye); - - int exit_status; - wait(&exit_status); - ASSERT_EQ(exit_status, 0); -} - -TEST(RNBSocket, LoopBackListenIPv4) { TestSocketListen("127.0.0.1"); } - -TEST(RNBSocket, LoopBackListenIPv6) { TestSocketListen("::1"); } - -TEST(RNBSocket, AnyListen) { TestSocketListen("*"); } - -void TestSocketConnect(const char *addr) { - // Skip IPv6 tests if there isn't a valid interafce - auto addresses = lldb_private::SocketAddress::GetAddressInfo( - addr, NULL, AF_UNSPEC, SOCK_STREAM, IPPROTO_TCP); - if (addresses.size() == 0) - return; - - char addr_wrap[256]; - if (addresses.front().GetFamily() == AF_INET6) - sprintf(addr_wrap, "[%s]:0", addr); - else - sprintf(addr_wrap, "%s:0", addr); - - Socket *server_socket; - Predicate port_predicate; - port_predicate.SetValue(0, eBroadcastNever); - llvm::Expected> socket_or_err = - Socket::TcpListen(addr_wrap, false, &port_predicate); - ASSERT_THAT_EXPECTED(socket_or_err, llvm::Succeeded()); - server_socket = socket_or_err->get(); - - auto port = ((TCPSocket *)server_socket)->GetLocalPortNumber(); - auto child_pid = fork(); - if (child_pid != 0) { - RNBSocket client_socket; - auto result = client_socket.Connect(addr, port); - ASSERT_TRUE(result == rnb_success); - result = client_socket.Write(hello.c_str(), hello.length()); - ASSERT_TRUE(result == rnb_success); - std::string bye; - result = client_socket.Read(bye); - ASSERT_TRUE(result == rnb_success); - ASSERT_EQ(bye, goodbye); - } else { - Socket *connected_socket; - Status err = server_socket->Accept(connected_socket); - if (err.Fail()) { - llvm::errs() << err.AsCString(); - abort(); - } - char buffer[32]; - size_t read_size = 32; - err = connected_socket->Read((void *)&buffer[0], read_size); - if (err.Fail()) { - llvm::errs() << err.AsCString(); - abort(); - } - std::string Recv(&buffer[0], read_size); - if (Recv != hello) { - llvm::errs() << err.AsCString(); - abort(); - } - size_t write_size = goodbye.length(); - err = connected_socket->Write(goodbye.c_str(), write_size); - if (err.Fail()) { - llvm::errs() << err.AsCString(); - abort(); - } - if (write_size != goodbye.length()) { - llvm::errs() << err.AsCString(); - abort(); - } - exit(0); - } - int exit_status; - wait(&exit_status); - ASSERT_EQ(exit_status, 0); -} - -TEST(RNBSocket, LoopBackConnectIPv4) { TestSocketConnect("127.0.0.1"); } - -TEST(RNBSocket, LoopBackConnectIPv6) { TestSocketConnect("::1"); } diff --git a/gnu/llvm/lldb/unittests/debugserver/debugserver_LogCallback.cpp b/gnu/llvm/lldb/unittests/debugserver/debugserver_LogCallback.cpp deleted file mode 100644 index 2c7da2d127c..00000000000 --- a/gnu/llvm/lldb/unittests/debugserver/debugserver_LogCallback.cpp +++ /dev/null @@ -1,17 +0,0 @@ -//===-- debugserver_LogCallback.cpp ---------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -// this function is defined in debugserver.cpp, but is needed to link the -// debugserver Common library. It is for logging only, so it is left -// unimplemented here. - -#include -#include - -void FileLogCallback(void *baton, uint32_t flags, const char *format, - va_list args) {} diff --git a/gnu/llvm/lldb/unittests/gtest_common.h b/gnu/llvm/lldb/unittests/gtest_common.h deleted file mode 100644 index 3a92123a949..00000000000 --- a/gnu/llvm/lldb/unittests/gtest_common.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef LLDB_UNITTESTS_GTEST_COMMON_H - -#define LLDB_UNITTESTS_GTEST_COMMON_H - -//===-- gtest_common.h ------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#if defined(LLDB_GTEST_COMMON_H) -#error "gtest_common.h should not be included manually." -#else -#define LLDB_GTEST_COMMON_H -#endif - -// This header file is force included by all of LLDB's unittest compilation -// units. Be very leary about putting anything in this file. - -#endif diff --git a/gnu/llvm/lldb/unittests/tools/CMakeLists.txt b/gnu/llvm/lldb/unittests/tools/CMakeLists.txt deleted file mode 100644 index 055fc6e6f5d..00000000000 --- a/gnu/llvm/lldb/unittests/tools/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -if(LLDB_TOOL_LLDB_SERVER_BUILD) - add_subdirectory(lldb-server) -endif() diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/CMakeLists.txt b/gnu/llvm/lldb/unittests/tools/lldb-server/CMakeLists.txt deleted file mode 100644 index 1a7603077b8..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -set(ALL_LLDB_TEST_EXECUTABLES) - -function(add_lldb_test_executable test_name) - set(EXCLUDE_FROM_ALL ON) - add_llvm_executable(${test_name} NO_INSTALL_RPATH ${ARGN}) - set(outdir ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}) - set_output_directory(${test_name} BINARY_DIR ${outdir} LIBRARY_DIR ${outdir}) - list(APPEND ALL_LLDB_TEST_EXECUTABLES ${test_name}) - set(ALL_LLDB_TEST_EXECUTABLES ${ALL_LLDB_TEST_EXECUTABLES} PARENT_SCOPE) - set_target_properties(${test_name} PROPERTIES FOLDER "lldb tests") -endfunction() - -add_lldb_test_executable(thread_inferior inferior/thread_inferior.cpp) -add_lldb_test_executable(environment_check inferior/environment_check.cpp) - -if(LLDB_CAN_USE_DEBUGSERVER AND (LLDB_TOOL_DEBUGSERVER_BUILD OR LLDB_USE_SYSTEM_DEBUGSERVER)) - if(LLDB_USE_SYSTEM_DEBUGSERVER) - lldb_find_system_debugserver(debugserver_path) - else() - set(debugserver_path $) - endif() - add_definitions(-DLLDB_SERVER="${debugserver_path}" -DLLDB_SERVER_IS_DEBUGSERVER=1) -else() - add_definitions(-DLLDB_SERVER="$" -DLLDB_SERVER_IS_DEBUGSERVER=0) -endif() - -add_definitions( - -DLLDB_TEST_INFERIOR_PATH="${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}" - -DLLDB_TEST_INFERIOR_SUFFIX="${CMAKE_EXECUTABLE_SUFFIX}" - ) -add_subdirectory(tests) diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/inferior/environment_check.cpp b/gnu/llvm/lldb/unittests/tools/lldb-server/inferior/environment_check.cpp deleted file mode 100644 index 7d8063cc8c8..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/inferior/environment_check.cpp +++ /dev/null @@ -1,19 +0,0 @@ -//===-- thread_inferior.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -#include - -int main() { - const char *value = std::getenv("LLDB_TEST_MAGIC_VARIABLE"); - if (!value) - return 1; - if (std::string(value) != "LLDB_TEST_MAGIC_VALUE") - return 2; - return 0; -} diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/inferior/thread_inferior.cpp b/gnu/llvm/lldb/unittests/tools/lldb-server/inferior/thread_inferior.cpp deleted file mode 100644 index 43e9b8cbc10..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/inferior/thread_inferior.cpp +++ /dev/null @@ -1,40 +0,0 @@ -//===-- thread_inferior.cpp -----------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include -#include -#include -#include -#include - -int main(int argc, char* argv[]) { - int thread_count = 2; - if (argc > 1) { - thread_count = std::stoi(argv[1], nullptr, 10); - } - - std::atomic delay(true); - std::vector threads; - for (int i = 0; i < thread_count; i++) { - threads.push_back(std::thread([&delay] { - while (delay.load()) - std::this_thread::sleep_for(std::chrono::seconds(1)); - })); - } - - // Cause a break. - volatile char *p = nullptr; - *p = 'a'; - - delay.store(false); - for (std::thread& t : threads) { - t.join(); - } - - return 0; -} diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/CMakeLists.txt b/gnu/llvm/lldb/unittests/tools/lldb-server/tests/CMakeLists.txt deleted file mode 100644 index ed5eb88ba52..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -add_lldb_unittest(LLDBServerTests - LLGSTest.cpp - MessageObjects.cpp - TestBase.cpp - TestClient.cpp - ThreadIdsInJstopinfoTest.cpp - - LINK_LIBS - lldbHost - lldbCore - lldbInterpreter - lldbTarget - lldbPluginPlatformLinux - lldbPluginProcessGDBRemote - - LLVMTestingSupport - LINK_COMPONENTS - Support - ) - -add_dependencies(LLDBServerTests lldb-server ${ALL_LLDB_TEST_EXECUTABLES}) diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp b/gnu/llvm/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp deleted file mode 100644 index 92efeffde7f..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/LLGSTest.cpp +++ /dev/null @@ -1,77 +0,0 @@ -//===-- LLGSTest.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestBase.h" -#include "lldb/Host/Host.h" -#include "llvm/Testing/Support/Error.h" - -using namespace llgs_tests; -using namespace lldb_private; -using namespace llvm; - -#ifdef SendMessage -#undef SendMessage -#endif - -// Disable this test on Windows as it appears to have a race condition -// that causes lldb-server not to exit after the inferior hangs up. -#if !defined(_WIN32) -TEST_F(TestBase, LaunchModePreservesEnvironment) { - putenv(const_cast("LLDB_TEST_MAGIC_VARIABLE=LLDB_TEST_MAGIC_VALUE")); - - auto ClientOr = TestClient::launch(getLogFileName(), - {getInferiorPath("environment_check")}); - ASSERT_THAT_EXPECTED(ClientOr, Succeeded()); - auto &Client = **ClientOr; - - ASSERT_THAT_ERROR(Client.ContinueAll(), Succeeded()); - ASSERT_THAT_EXPECTED( - Client.GetLatestStopReplyAs(), - HasValue(testing::Property(&StopReply::getKind, - WaitStatus{WaitStatus::Exit, 0}))); -} -#endif - -TEST_F(TestBase, DS_TEST(DebugserverEnv)) { - // Test that --env takes precedence over inherited environment variables. - putenv(const_cast("LLDB_TEST_MAGIC_VARIABLE=foobar")); - - auto ClientOr = TestClient::launchCustom(getLogFileName(), - { "--env", "LLDB_TEST_MAGIC_VARIABLE=LLDB_TEST_MAGIC_VALUE" }, - {getInferiorPath("environment_check")}); - ASSERT_THAT_EXPECTED(ClientOr, Succeeded()); - auto &Client = **ClientOr; - - ASSERT_THAT_ERROR(Client.ContinueAll(), Succeeded()); - ASSERT_THAT_EXPECTED( - Client.GetLatestStopReplyAs(), - HasValue(testing::Property(&StopReply::getKind, - WaitStatus{WaitStatus::Exit, 0}))); -} - -TEST_F(TestBase, LLGS_TEST(vAttachRichError)) { - auto ClientOr = TestClient::launch(getLogFileName(), - {getInferiorPath("environment_check")}); - ASSERT_THAT_EXPECTED(ClientOr, Succeeded()); - auto &Client = **ClientOr; - - // Until we enable error strings we should just get the error code. - ASSERT_THAT_ERROR(Client.SendMessage("vAttach;1"), - Failed(testing::Property( - &ErrorInfoBase::message, "Error 255"))); - - ASSERT_THAT_ERROR(Client.SendMessage("QEnableErrorStrings"), Succeeded()); - - // Now, we expect the full error message. - ASSERT_THAT_ERROR( - Client.SendMessage("vAttach;1"), - Failed(testing::Property( - &ErrorInfoBase::message, - testing::StartsWith( - "cannot attach to process 1 when another process with pid")))); -} diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/MessageObjects.cpp b/gnu/llvm/lldb/unittests/tools/lldb-server/tests/MessageObjects.cpp deleted file mode 100644 index 77bc3a5e6ee..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/MessageObjects.cpp +++ /dev/null @@ -1,375 +0,0 @@ -//===-- MessageObjects.cpp ------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "MessageObjects.h" -#include "lldb/Utility/Args.h" -#include "lldb/Utility/StringExtractor.h" -#include "llvm/ADT/StringExtras.h" -#include "gtest/gtest.h" - -using namespace lldb_private; -using namespace lldb; -using namespace llvm; -namespace llgs_tests { - -Expected ProcessInfo::create(StringRef response) { - ProcessInfo process_info; - auto elements_or_error = SplitUniquePairList("ProcessInfo", response); - if (!elements_or_error) - return elements_or_error.takeError(); - - auto &elements = *elements_or_error; - if (elements["pid"].getAsInteger(16, process_info.m_pid)) - return make_parsing_error("ProcessInfo: pid"); - if (elements["parent-pid"].getAsInteger(16, process_info.m_parent_pid)) - return make_parsing_error("ProcessInfo: parent-pid"); - if (elements["real-uid"].getAsInteger(16, process_info.m_real_uid)) - return make_parsing_error("ProcessInfo: real-uid"); - if (elements["real-gid"].getAsInteger(16, process_info.m_real_gid)) - return make_parsing_error("ProcessInfo: real-uid"); - if (elements["effective-uid"].getAsInteger(16, process_info.m_effective_uid)) - return make_parsing_error("ProcessInfo: effective-uid"); - if (elements["effective-gid"].getAsInteger(16, process_info.m_effective_gid)) - return make_parsing_error("ProcessInfo: effective-gid"); - if (elements["ptrsize"].getAsInteger(10, process_info.m_ptrsize)) - return make_parsing_error("ProcessInfo: ptrsize"); - - process_info.m_triple = fromHex(elements["triple"]); - StringRef endian_str = elements["endian"]; - if (endian_str == "little") - process_info.m_endian = support::little; - else if (endian_str == "big") - process_info.m_endian = support::big; - else - return make_parsing_error("ProcessInfo: endian"); - - return process_info; -} - -lldb::pid_t ProcessInfo::GetPid() const { return m_pid; } - -support::endianness ProcessInfo::GetEndian() const { return m_endian; } - -//====== ThreadInfo ============================================================ -ThreadInfo::ThreadInfo(StringRef name, StringRef reason, RegisterMap registers, - unsigned int) - : m_name(name.str()), m_reason(reason.str()), - m_registers(std::move(registers)) {} - -const RegisterValue *ThreadInfo::ReadRegister(unsigned int Id) const { - auto Iter = m_registers.find(Id); - return Iter == m_registers.end() ? nullptr : &Iter->getSecond(); -} - -//====== JThreadsInfo ========================================================== - -Expected -JThreadsInfo::parseRegisters(const StructuredData::Dictionary &Dict, - ArrayRef RegInfos) { - RegisterMap Result; - - auto KeysObj = Dict.GetKeys(); - auto Keys = KeysObj->GetAsArray(); - for (size_t i = 0; i < Keys->GetSize(); i++) { - StringRef KeyStr, ValueStr; - Keys->GetItemAtIndexAsString(i, KeyStr); - Dict.GetValueForKeyAsString(KeyStr, ValueStr); - unsigned int Register; - if (!llvm::to_integer(KeyStr, Register, 10)) - return make_parsing_error("JThreadsInfo: register key[{0}]", i); - - auto RegValOr = - parseRegisterValue(RegInfos[Register], ValueStr, support::big); - if (!RegValOr) - return RegValOr.takeError(); - Result[Register] = std::move(*RegValOr); - } - return std::move(Result); -} - -Expected JThreadsInfo::create(StringRef Response, - ArrayRef RegInfos) { - JThreadsInfo jthreads_info; - - StructuredData::ObjectSP json = - StructuredData::ParseJSON(std::string(Response)); - StructuredData::Array *array = json->GetAsArray(); - if (!array) - return make_parsing_error("JThreadsInfo: JSON array"); - - for (size_t i = 0; i < array->GetSize(); i++) { - StructuredData::Dictionary *thread_info; - array->GetItemAtIndexAsDictionary(i, thread_info); - if (!thread_info) - return make_parsing_error("JThreadsInfo: JSON obj at {0}", i); - - StringRef name, reason; - thread_info->GetValueForKeyAsString("name", name); - thread_info->GetValueForKeyAsString("reason", reason); - uint64_t signal; - thread_info->GetValueForKeyAsInteger("signal", signal); - uint64_t tid; - thread_info->GetValueForKeyAsInteger("tid", tid); - - StructuredData::Dictionary *register_dict; - thread_info->GetValueForKeyAsDictionary("registers", register_dict); - if (!register_dict) - return make_parsing_error("JThreadsInfo: registers JSON obj"); - - auto RegsOr = parseRegisters(*register_dict, RegInfos); - if (!RegsOr) - return RegsOr.takeError(); - jthreads_info.m_thread_infos[tid] = - ThreadInfo(name, reason, std::move(*RegsOr), signal); - } - - return jthreads_info; -} - -const ThreadInfoMap &JThreadsInfo::GetThreadInfos() const { - return m_thread_infos; -} - -Expected RegisterInfoParser::create(StringRef Response) { - auto ElementsOr = SplitUniquePairList("RegisterInfoParser", Response); - if (!ElementsOr) - return ElementsOr.takeError(); - auto &Elements = *ElementsOr; - - RegisterInfo Info = { - nullptr, // Name - nullptr, // Alt name - 0, // byte size - 0, // offset - eEncodingUint, // encoding - eFormatHex, // format - { - LLDB_INVALID_REGNUM, // eh_frame reg num - LLDB_INVALID_REGNUM, // DWARF reg num - LLDB_INVALID_REGNUM, // generic reg num - LLDB_INVALID_REGNUM, // process plugin reg num - LLDB_INVALID_REGNUM // native register number - }, - nullptr, - nullptr, - nullptr, // Dwarf expression opcode bytes pointer - 0 // Dwarf expression opcode bytes length - }; - Info.name = ConstString(Elements["name"]).GetCString(); - if (!Info.name) - return make_parsing_error("qRegisterInfo: name"); - - Info.alt_name = ConstString(Elements["alt-name"]).GetCString(); - - if (!to_integer(Elements["bitsize"], Info.byte_size, 10)) - return make_parsing_error("qRegisterInfo: bit-size"); - Info.byte_size /= CHAR_BIT; - - if (!to_integer(Elements["offset"], Info.byte_offset, 10)) - Info.byte_offset = LLDB_INVALID_INDEX32; - - Info.encoding = Args::StringToEncoding(Elements["encoding"]); - if (Info.encoding == eEncodingInvalid) - return make_parsing_error("qRegisterInfo: encoding"); - - Info.format = StringSwitch(Elements["format"]) - .Case("binary", eFormatBinary) - .Case("decimal", eFormatDecimal) - .Case("hex", eFormatHex) - .Case("float", eFormatFloat) - .Case("vector-sint8", eFormatVectorOfSInt8) - .Case("vector-uint8", eFormatVectorOfUInt8) - .Case("vector-sint16", eFormatVectorOfSInt16) - .Case("vector-uint16", eFormatVectorOfUInt16) - .Case("vector-sint32", eFormatVectorOfSInt32) - .Case("vector-uint32", eFormatVectorOfUInt32) - .Case("vector-float32", eFormatVectorOfFloat32) - .Case("vector-uint64", eFormatVectorOfUInt64) - .Case("vector-uint128", eFormatVectorOfUInt128) - .Default(eFormatInvalid); - if (Info.format == eFormatInvalid) - return make_parsing_error("qRegisterInfo: format"); - - Info.kinds[eRegisterKindGeneric] = - Args::StringToGenericRegister(Elements["generic"]); - - return std::move(Info); -} - -Expected parseRegisterValue(const RegisterInfo &Info, - StringRef HexValue, - llvm::support::endianness Endian, - bool ZeroPad) { - SmallString<128> Storage; - if (ZeroPad && HexValue.size() < Info.byte_size * 2) { - Storage.insert(Storage.begin(), Info.byte_size * 2 - HexValue.size(), '0'); - Storage += HexValue; - HexValue = Storage; - } - - SmallVector Bytes(HexValue.size() / 2); - StringExtractor(HexValue).GetHexBytes(Bytes, '\xcc'); - RegisterValue Value; - Status ST; - Value.SetFromMemoryData( - &Info, Bytes.data(), Bytes.size(), - Endian == support::little ? eByteOrderLittle : eByteOrderBig, ST); - if (ST.Fail()) - return ST.ToError(); - return Value; -} - -//====== StopReply ============================================================= -Expected> -StopReply::create(StringRef Response, llvm::support::endianness Endian, - ArrayRef RegInfos) { - if (Response.size() < 3) - return make_parsing_error("StopReply: Invalid packet"); - if (Response.consume_front("T")) - return StopReplyStop::create(Response, Endian, RegInfos); - if (Response.consume_front("W")) - return StopReplyExit::create(Response); - return make_parsing_error("StopReply: Invalid packet"); -} - -Expected StopReplyStop::parseRegisters( - const StringMap> &Elements, - support::endianness Endian, ArrayRef RegInfos) { - - RegisterMap Result; - for (const auto &E : Elements) { - StringRef Key = E.getKey(); - const auto &Val = E.getValue(); - if (Key.size() != 2) - continue; - - unsigned int Reg; - if (!to_integer(Key, Reg, 16)) - continue; - - if (Val.size() != 1) - return make_parsing_error( - "StopReplyStop: multiple entries for register field [{0:x}]", Reg); - - auto RegValOr = parseRegisterValue(RegInfos[Reg], Val[0], Endian); - if (!RegValOr) - return RegValOr.takeError(); - Result[Reg] = std::move(*RegValOr); - } - return std::move(Result); -} - -Expected> -StopReplyStop::create(StringRef Response, support::endianness Endian, - ArrayRef RegInfos) { - unsigned int Signal; - StringRef SignalStr = Response.take_front(2); - Response = Response.drop_front(2); - if (!to_integer(SignalStr, Signal, 16)) - return make_parsing_error("StopReply: stop signal"); - - auto Elements = SplitPairList(Response); - for (StringRef Field : - {"name", "reason", "thread", "threads", "thread-pcs"}) { - // This will insert an empty field if there is none. In the future, we - // should probably differentiate between these fields not being present and - // them being empty, but right now no tests depends on this. - if (Elements.insert({Field, {""}}).first->second.size() != 1) - return make_parsing_error( - "StopReply: got multiple responses for the {0} field", Field); - } - StringRef Name = Elements["name"][0]; - StringRef Reason = Elements["reason"][0]; - - lldb::tid_t Thread; - if (!to_integer(Elements["thread"][0], Thread, 16)) - return make_parsing_error("StopReply: thread"); - - SmallVector Threads; - SmallVector Pcs; - Elements["threads"][0].split(Threads, ','); - Elements["thread-pcs"][0].split(Pcs, ','); - if (Threads.size() != Pcs.size()) - return make_parsing_error("StopReply: thread/PC count mismatch"); - - RegisterMap ThreadPcs; - const RegisterInfo *PcInfo = find_if(RegInfos, [](const RegisterInfo &Info) { - return Info.kinds[eRegisterKindGeneric] == LLDB_REGNUM_GENERIC_PC; - }); - assert(PcInfo); - - for (auto ThreadPc : zip(Threads, Pcs)) { - lldb::tid_t Id; - if (!to_integer(std::get<0>(ThreadPc), Id, 16)) - return make_parsing_error("StopReply: Thread id '{0}'", - std::get<0>(ThreadPc)); - - auto PcOr = parseRegisterValue(*PcInfo, std::get<1>(ThreadPc), Endian, - /*ZeroPad*/ true); - if (!PcOr) - return PcOr.takeError(); - ThreadPcs[Id] = std::move(*PcOr); - } - - auto RegistersOr = parseRegisters(Elements, Endian, RegInfos); - if (!RegistersOr) - return RegistersOr.takeError(); - - return std::make_unique(Signal, Thread, Name, - std::move(ThreadPcs), - std::move(*RegistersOr), Reason); -} - -Expected> -StopReplyExit::create(StringRef Response) { - uint8_t Status; - if (!to_integer(Response, Status, 16)) - return make_parsing_error("StopReply: exit status"); - return std::make_unique(Status); -} - -//====== Globals =============================================================== -Expected> SplitUniquePairList(StringRef caller, - StringRef str) { - SmallVector elements; - str.split(elements, ';'); - - StringMap pairs; - for (StringRef s : elements) { - std::pair pair = s.split(':'); - if (pairs.count(pair.first)) - return make_parsing_error("{0}: Duplicate Key: {1}", caller, pair.first); - - pairs.insert(pair); - } - - return pairs; -} - -StringMap> SplitPairList(StringRef str) { - SmallVector elements; - str.split(elements, ';'); - - StringMap> pairs; - for (StringRef s : elements) { - std::pair pair = s.split(':'); - pairs[pair.first].push_back(pair.second); - } - - return pairs; -} -} // namespace llgs_tests - -std::ostream &lldb_private::operator<<(std::ostream &OS, - const RegisterValue &RegVal) { - ArrayRef Bytes(static_cast(RegVal.GetBytes()), - RegVal.GetByteSize()); - return OS << formatv("RegisterValue[{0}]: {1:@[x-2]}", RegVal.GetByteSize(), - make_range(Bytes.begin(), Bytes.end())) - .str(); -} diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/MessageObjects.h b/gnu/llvm/lldb/unittests/tools/lldb-server/tests/MessageObjects.h deleted file mode 100644 index ff3f76ae3f0..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/MessageObjects.h +++ /dev/null @@ -1,186 +0,0 @@ -//===-- MessageObjects.h ----------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_TOOLS_LLDB_SERVER_TESTS_MESSAGEOBJECTS_H -#define LLDB_UNITTESTS_TOOLS_LLDB_SERVER_TESTS_MESSAGEOBJECTS_H - -#include "lldb/Host/Host.h" -#include "lldb/Utility/RegisterValue.h" -#include "lldb/Utility/StructuredData.h" -#include "lldb/lldb-types.h" -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/SmallString.h" -#include "llvm/Support/Endian.h" -#include "llvm/Support/Error.h" -#include "llvm/Support/FormatVariadic.h" -#include - -namespace llgs_tests { -class ThreadInfo; -typedef llvm::DenseMap ThreadInfoMap; -typedef llvm::DenseMap RegisterMap; - -template struct Parser { using result_type = T; }; - -class ProcessInfo : public Parser { -public: - static llvm::Expected create(llvm::StringRef response); - lldb::pid_t GetPid() const; - llvm::support::endianness GetEndian() const; - -private: - ProcessInfo() = default; - lldb::pid_t m_pid; - lldb::pid_t m_parent_pid; - uint32_t m_real_uid; - uint32_t m_real_gid; - uint32_t m_effective_uid; - uint32_t m_effective_gid; - std::string m_triple; - llvm::SmallString<16> m_ostype; - llvm::support::endianness m_endian; - unsigned int m_ptrsize; -}; - -class ThreadInfo { -public: - ThreadInfo() = default; - ThreadInfo(llvm::StringRef name, llvm::StringRef reason, - RegisterMap registers, unsigned int signal); - - const lldb_private::RegisterValue *ReadRegister(unsigned int Id) const; - -private: - std::string m_name; - std::string m_reason; - RegisterMap m_registers; -}; - -class JThreadsInfo : public Parser { -public: - static llvm::Expected - create(llvm::StringRef Response, - llvm::ArrayRef RegInfos); - - const ThreadInfoMap &GetThreadInfos() const; - -private: - static llvm::Expected - parseRegisters(const lldb_private::StructuredData::Dictionary &Dict, - llvm::ArrayRef RegInfos); - - JThreadsInfo() = default; - ThreadInfoMap m_thread_infos; -}; - -struct RegisterInfoParser : public Parser { - static llvm::Expected - create(llvm::StringRef Response); -}; - -llvm::Expected -parseRegisterValue(const lldb_private::RegisterInfo &Info, - llvm::StringRef HexValue, llvm::support::endianness Endian, - bool ZeroPad = false); - -class StopReply : public Parser> { -public: - StopReply() = default; - virtual ~StopReply() = default; - - static llvm::Expected> - create(llvm::StringRef Response, llvm::support::endianness Endian, - llvm::ArrayRef RegInfos); - - // for llvm::cast<> - virtual lldb_private::WaitStatus getKind() const = 0; - - StopReply(const StopReply &) = delete; - void operator=(const StopReply &) = delete; -}; - -class StopReplyStop : public StopReply { -public: - StopReplyStop(uint8_t Signal, lldb::tid_t ThreadId, llvm::StringRef Name, - RegisterMap ThreadPcs, RegisterMap Registers, - llvm::StringRef Reason) - : Signal(Signal), ThreadId(ThreadId), Name(Name), - ThreadPcs(std::move(ThreadPcs)), Registers(std::move(Registers)), - Reason(Reason) {} - - static llvm::Expected> - create(llvm::StringRef Response, llvm::support::endianness Endian, - llvm::ArrayRef RegInfos); - - const RegisterMap &getThreadPcs() const { return ThreadPcs; } - lldb::tid_t getThreadId() const { return ThreadId; } - - // for llvm::cast<> - lldb_private::WaitStatus getKind() const override { - return lldb_private::WaitStatus{lldb_private::WaitStatus::Stop, Signal}; - } - static bool classof(const StopReply *R) { - return R->getKind().type == lldb_private::WaitStatus::Stop; - } - -private: - static llvm::Expected parseRegisters( - const llvm::StringMap> &Elements, - llvm::support::endianness Endian, - llvm::ArrayRef RegInfos); - - uint8_t Signal; - lldb::tid_t ThreadId; - std::string Name; - RegisterMap ThreadPcs; - RegisterMap Registers; - std::string Reason; -}; - -class StopReplyExit : public StopReply { -public: - explicit StopReplyExit(uint8_t Status) : Status(Status) {} - - static llvm::Expected> - create(llvm::StringRef response); - - // for llvm::cast<> - lldb_private::WaitStatus getKind() const override { - return lldb_private::WaitStatus{lldb_private::WaitStatus::Exit, Status}; - } - static bool classof(const StopReply *R) { - return R->getKind().type == lldb_private::WaitStatus::Exit; - } - -private: - uint8_t Status; -}; - -// Common functions for parsing packet data. -llvm::Expected> -SplitUniquePairList(llvm::StringRef caller, llvm::StringRef s); - -llvm::StringMap> -SplitPairList(llvm::StringRef s); - -template -llvm::Error make_parsing_error(llvm::StringRef format, Args &&... args) { - std::string error = - "Unable to parse " + - llvm::formatv(format.data(), std::forward(args)...).str(); - return llvm::make_error(error, - llvm::inconvertibleErrorCode()); -} - -} // namespace llgs_tests - -namespace lldb_private { -std::ostream &operator<<(std::ostream &OS, const RegisterValue &RegVal); -} - -#endif // LLDB_UNITTESTS_TOOLS_LLDB_SERVER_TESTS_MESSAGEOBJECTS_H diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestBase.cpp b/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestBase.cpp deleted file mode 100644 index eeb73f05575..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestBase.cpp +++ /dev/null @@ -1,35 +0,0 @@ -//===-- TestBase.cpp ------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestBase.h" -#include - -using namespace llgs_tests; -using namespace llvm; - -std::string TestBase::getLogFileName() { - const auto *test_info = - ::testing::UnitTest::GetInstance()->current_test_info(); - assert(test_info); - - const char *Dir = getenv("LOG_FILE_DIRECTORY"); - if (!Dir) - return ""; - - if (!llvm::sys::fs::is_directory(Dir)) { - GTEST_LOG_(WARNING) << "Cannot access log directory: " << Dir; - return ""; - } - - SmallString<64> DirStr(Dir); - sys::path::append(DirStr, std::string("server-") + - test_info->test_case_name() + "-" + - test_info->name() + ".log"); - return std::string(DirStr.str()); -} - diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestBase.h b/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestBase.h deleted file mode 100644 index 6b0a9cdfd7c..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestBase.h +++ /dev/null @@ -1,59 +0,0 @@ -//===-- TestBase.h ----------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_TOOLS_LLDB_SERVER_TESTS_TESTBASE_H -#define LLDB_UNITTESTS_TOOLS_LLDB_SERVER_TESTS_TESTBASE_H - -#include "TestClient.h" -#include "lldb/Host/FileSystem.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Host/Socket.h" -#include "llvm/Support/Path.h" -#include "llvm/Testing/Support/Error.h" -#include "gtest/gtest.h" - -namespace llgs_tests { - -class TestBase: public ::testing::Test { -public: - static void SetUpTestCase() { - lldb_private::FileSystem::Initialize(); - lldb_private::HostInfo::Initialize(); - ASSERT_THAT_ERROR(lldb_private::Socket::Initialize(), llvm::Succeeded()); - } - - static void TearDownTestCase() { - lldb_private::Socket::Terminate(); - lldb_private::HostInfo::Terminate(); - lldb_private::FileSystem::Terminate(); - } - - static std::string getInferiorPath(llvm::StringRef Name) { - llvm::SmallString<64> Path(LLDB_TEST_INFERIOR_PATH); - llvm::sys::path::append(Path, Name + LLDB_TEST_INFERIOR_SUFFIX); - return std::string(Path.str()); - } - - static std::string getLogFileName(); -}; - -class StandardStartupTest: public TestBase { -public: - void SetUp() override { - auto ClientOr = TestClient::launch(getLogFileName()); - ASSERT_THAT_EXPECTED(ClientOr, llvm::Succeeded()); - Client = std::move(*ClientOr); - } - -protected: - std::unique_ptr Client; -}; - -} // namespace llgs_tests - -#endif // LLDB_UNITTESTS_TOOLS_LLDB_SERVER_TESTS_TESTBASE_H diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestClient.cpp b/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestClient.cpp deleted file mode 100644 index 0bb60f26219..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestClient.cpp +++ /dev/null @@ -1,276 +0,0 @@ -//===-- TestClient.cpp ----------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestClient.h" -#include "lldb/Host/HostInfo.h" -#include "lldb/Host/common/TCPSocket.h" -#include "lldb/Host/posix/ConnectionFileDescriptorPosix.h" -#include "lldb/Utility/Args.h" -#include "llvm/ADT/StringExtras.h" -#include "llvm/Support/Path.h" -#include "llvm/Testing/Support/Error.h" -#include "gtest/gtest.h" -#include -#include -#include -#include - -using namespace lldb; -using namespace lldb_private; -using namespace llvm; -using namespace llgs_tests; - -#ifdef SendMessage -#undef SendMessage -#endif - -TestClient::TestClient(std::unique_ptr Conn) { - SetConnection(std::move(Conn)); - SetPacketTimeout(std::chrono::seconds(10)); -} - -TestClient::~TestClient() { - if (!IsConnected()) - return; - - EXPECT_THAT_ERROR(SendMessage("k"), Succeeded()); -} - -Error TestClient::initializeConnection() { - if (SendAck() == 0) - return make_error("Sending initial ACK failed.", - inconvertibleErrorCode()); - - if (Error E = SendMessage("QStartNoAckMode")) - return E; - - m_send_acks = false; - return Error::success(); -} - -Expected> TestClient::launch(StringRef Log) { - return launch(Log, {}); -} - -Expected> TestClient::launch(StringRef Log, ArrayRef InferiorArgs) { - return launchCustom(Log, {}, InferiorArgs); -} - -Expected> TestClient::launchCustom(StringRef Log, ArrayRef ServerArgs, ArrayRef InferiorArgs) { - const ArchSpec &arch_spec = HostInfo::GetArchitecture(); - Args args; - args.AppendArgument(LLDB_SERVER); - if (IsLldbServer()) - args.AppendArgument("gdbserver"); - args.AppendArgument("--reverse-connect"); - - if (!Log.empty()) { - args.AppendArgument(("--log-file=" + Log).str()); - if (IsLldbServer()) - args.AppendArgument("--log-channels=gdb-remote packets"); - else - args.AppendArgument("--log-flags=0x800000"); - } - - Status status; - TCPSocket listen_socket(true, false); - status = listen_socket.Listen("127.0.0.1:0", 5); - if (status.Fail()) - return status.ToError(); - - args.AppendArgument( - ("127.0.0.1:" + Twine(listen_socket.GetLocalPortNumber())).str()); - - for (StringRef arg : ServerArgs) - args.AppendArgument(arg); - - if (!InferiorArgs.empty()) { - args.AppendArgument("--"); - for (StringRef arg : InferiorArgs) - args.AppendArgument(arg); - } - - ProcessLaunchInfo Info; - Info.SetArchitecture(arch_spec); - Info.SetArguments(args, true); - Info.GetEnvironment() = Host::GetEnvironment(); - // TODO: Use this callback to detect botched launches. If lldb-server does not - // start, we can print a nice error message here instead of hanging in - // Accept(). - Info.SetMonitorProcessCallback(&ProcessLaunchInfo::NoOpMonitorCallback, - false); - - status = Host::LaunchProcess(Info); - if (status.Fail()) - return status.ToError(); - - Socket *accept_socket; - listen_socket.Accept(accept_socket); - auto Conn = std::make_unique(accept_socket); - auto Client = std::unique_ptr(new TestClient(std::move(Conn))); - - if (Error E = Client->initializeConnection()) - return std::move(E); - - if (!InferiorArgs.empty()) { - if (Error E = Client->queryProcess()) - return std::move(E); - } - - return std::move(Client); -} - -Error TestClient::SetInferior(llvm::ArrayRef inferior_args) { - if (SendEnvironment(Host::GetEnvironment()) != 0) { - return make_error("Failed to set launch environment", - inconvertibleErrorCode()); - } - std::stringstream command; - command << "A"; - for (size_t i = 0; i < inferior_args.size(); i++) { - if (i > 0) - command << ','; - std::string hex_encoded = toHex(inferior_args[i]); - command << hex_encoded.size() << ',' << i << ',' << hex_encoded; - } - - if (Error E = SendMessage(command.str())) - return E; - if (Error E = SendMessage("qLaunchSuccess")) - return E; - if (Error E = queryProcess()) - return E; - return Error::success(); -} - -Error TestClient::ListThreadsInStopReply() { - return SendMessage("QListThreadsInStopReply"); -} - -Error TestClient::SetBreakpoint(unsigned long address) { - return SendMessage(formatv("Z0,{0:x-},1", address).str()); -} - -Error TestClient::ContinueAll() { return Continue("vCont;c"); } - -Error TestClient::ContinueThread(unsigned long thread_id) { - return Continue(formatv("vCont;c:{0:x-}", thread_id).str()); -} - -const llgs_tests::ProcessInfo &TestClient::GetProcessInfo() { - return *m_process_info; -} - -Expected TestClient::GetJThreadsInfo() { - return SendMessage("jThreadsInfo", m_register_infos); -} - -const StopReply &TestClient::GetLatestStopReply() { - assert(m_stop_reply); - return *m_stop_reply; -} - -Error TestClient::SendMessage(StringRef message) { - std::string dummy_string; - return SendMessage(message, dummy_string); -} - -Error TestClient::SendMessage(StringRef message, std::string &response_string) { - if (Error E = SendMessage(message, response_string, PacketResult::Success)) - return E; - StringExtractorGDBRemote Extractor(response_string); - if (Extractor.IsErrorResponse()) - return Extractor.GetStatus().ToError(); - return Error::success(); -} - -Error TestClient::SendMessage(StringRef message, std::string &response_string, - PacketResult expected_result) { - StringExtractorGDBRemote response; - GTEST_LOG_(INFO) << "Send Packet: " << message.str(); - PacketResult result = SendPacketAndWaitForResponse(message, response); - response.GetEscapedBinaryData(response_string); - GTEST_LOG_(INFO) << "Read Packet: " << response_string; - if (result != expected_result) - return make_error( - formatv("Error sending message `{0}`: {1}", message, result).str(), - inconvertibleErrorCode()); - - return Error::success(); -} - -unsigned int TestClient::GetPcRegisterId() { - assert(m_pc_register != LLDB_INVALID_REGNUM); - return m_pc_register; -} - -Error TestClient::qProcessInfo() { - m_process_info = None; - auto InfoOr = SendMessage("qProcessInfo"); - if (!InfoOr) - return InfoOr.takeError(); - m_process_info = std::move(*InfoOr); - return Error::success(); -} - -Error TestClient::qRegisterInfos() { - uint32_t reg_offset = 0; - for (unsigned int Reg = 0;; ++Reg) { - std::string Message = formatv("qRegisterInfo{0:x-}", Reg).str(); - Expected InfoOr = SendMessage(Message); - if (!InfoOr) { - consumeError(InfoOr.takeError()); - break; - } - m_register_infos.emplace_back(std::move(*InfoOr)); - - if (m_register_infos[Reg].byte_offset == LLDB_INVALID_INDEX32) - m_register_infos[Reg].byte_offset = reg_offset; - - reg_offset = - m_register_infos[Reg].byte_offset + m_register_infos[Reg].byte_size; - if (m_register_infos[Reg].kinds[eRegisterKindGeneric] == - LLDB_REGNUM_GENERIC_PC) - m_pc_register = Reg; - } - if (m_pc_register == LLDB_INVALID_REGNUM) - return make_parsing_error("qRegisterInfo: generic"); - return Error::success(); -} - -Error TestClient::queryProcess() { - if (Error E = qProcessInfo()) - return E; - if (Error E = qRegisterInfos()) - return E; - return Error::success(); -} - -Error TestClient::Continue(StringRef message) { - assert(m_process_info.hasValue()); - - auto StopReplyOr = SendMessage( - message, m_process_info->GetEndian(), m_register_infos); - if (!StopReplyOr) - return StopReplyOr.takeError(); - - m_stop_reply = std::move(*StopReplyOr); - if (!isa(m_stop_reply)) { - StringExtractorGDBRemote R; - PacketResult result = ReadPacket(R, GetPacketTimeout(), false); - if (result != PacketResult::ErrorDisconnected) { - return make_error( - formatv("Expected connection close after sending {0}. Got {1}/{2} " - "instead.", - message, result, R.GetStringRef()) - .str(), - inconvertibleErrorCode()); - } - } - return Error::success(); -} diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestClient.h b/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestClient.h deleted file mode 100644 index 32a21a4411c..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/TestClient.h +++ /dev/null @@ -1,112 +0,0 @@ -//===-- TestClient.h --------------------------------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLDB_UNITTESTS_TOOLS_LLDB_SERVER_TESTS_TESTCLIENT_H -#define LLDB_UNITTESTS_TOOLS_LLDB_SERVER_TESTS_TESTCLIENT_H - -#include "MessageObjects.h" -#include "Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h" -#include "lldb/Host/ProcessLaunchInfo.h" -#include "lldb/Utility/ArchSpec.h" -#include "lldb/Utility/Connection.h" -#include "llvm/ADT/Optional.h" -#include "llvm/Support/Casting.h" -#include "llvm/Support/FormatVariadic.h" -#include -#include - -#if LLDB_SERVER_IS_DEBUGSERVER -#define LLGS_TEST(x) DISABLED_ ## x -#define DS_TEST(x) x -#else -#define LLGS_TEST(x) x -#define DS_TEST(x) DISABLED_ ## x -#endif - -namespace llgs_tests { -class TestClient - : public lldb_private::process_gdb_remote::GDBRemoteCommunicationClient { -public: - static bool IsDebugServer() { return LLDB_SERVER_IS_DEBUGSERVER; } - static bool IsLldbServer() { return !IsDebugServer(); } - - /// Launches the server, connects it to the client and returns the client. If - /// Log is non-empty, the server will write it's log to this file. - static llvm::Expected> launch(llvm::StringRef Log); - - /// Launches the server, while specifying the inferior on its command line. - /// When the client connects, it already has a process ready. - static llvm::Expected> - launch(llvm::StringRef Log, llvm::ArrayRef InferiorArgs); - - /// Allows user to pass additional arguments to the server. Be careful when - /// using this for generic tests, as the two stubs have different - /// command-line interfaces. - static llvm::Expected> - launchCustom(llvm::StringRef Log, llvm::ArrayRef ServerArgs, llvm::ArrayRef InferiorArgs); - - - ~TestClient() override; - llvm::Error SetInferior(llvm::ArrayRef inferior_args); - llvm::Error ListThreadsInStopReply(); - llvm::Error SetBreakpoint(unsigned long address); - llvm::Error ContinueAll(); - llvm::Error ContinueThread(unsigned long thread_id); - const ProcessInfo &GetProcessInfo(); - llvm::Expected GetJThreadsInfo(); - const StopReply &GetLatestStopReply(); - template llvm::Expected GetLatestStopReplyAs() { - assert(m_stop_reply); - if (const auto *Reply = llvm::dyn_cast(m_stop_reply.get())) - return *Reply; - return llvm::make_error( - llvm::formatv("Unexpected Stop Reply {0}", m_stop_reply->getKind()), - llvm::inconvertibleErrorCode()); - } - llvm::Error SendMessage(llvm::StringRef message); - llvm::Error SendMessage(llvm::StringRef message, - std::string &response_string); - llvm::Error SendMessage(llvm::StringRef message, std::string &response_string, - PacketResult expected_result); - - template - llvm::Expected SendMessage(llvm::StringRef Message, - CreateArgs &&... Args); - unsigned int GetPcRegisterId(); - -private: - TestClient(std::unique_ptr Conn); - - llvm::Error initializeConnection(); - llvm::Error qProcessInfo(); - llvm::Error qRegisterInfos(); - llvm::Error queryProcess(); - llvm::Error Continue(llvm::StringRef message); - std::string FormatFailedResult( - const std::string &message, - lldb_private::process_gdb_remote::GDBRemoteCommunication::PacketResult - result); - - llvm::Optional m_process_info; - std::unique_ptr m_stop_reply; - std::vector m_register_infos; - unsigned int m_pc_register = LLDB_INVALID_REGNUM; -}; - -template -llvm::Expected -TestClient::SendMessage(llvm::StringRef Message, CreateArgs &&... Args) { - std::string ResponseText; - if (llvm::Error E = SendMessage(Message, ResponseText)) - return std::move(E); - return P::create(ResponseText, std::forward(Args)...); -} - -} // namespace llgs_tests - -#endif // LLDB_UNITTESTS_TOOLS_LLDB_SERVER_TESTS_TESTCLIENT_H diff --git a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/ThreadIdsInJstopinfoTest.cpp b/gnu/llvm/lldb/unittests/tools/lldb-server/tests/ThreadIdsInJstopinfoTest.cpp deleted file mode 100644 index 2306b434a6d..00000000000 --- a/gnu/llvm/lldb/unittests/tools/lldb-server/tests/ThreadIdsInJstopinfoTest.cpp +++ /dev/null @@ -1,59 +0,0 @@ -//===-- ThreadsInJstopinfoTest.cpp ----------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "TestBase.h" -#include "TestClient.h" -#include "lldb/Utility/DataExtractor.h" -#include "llvm/Support/FormatVariadic.h" -#include "llvm/Support/Path.h" -#include "llvm/Testing/Support/Error.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" -#include - -using namespace llgs_tests; -using namespace lldb_private; -using namespace llvm; -using namespace lldb; -using namespace testing; - -#ifdef __NetBSD__ -#define SKIP_ON_NETBSD(x) DISABLED_ ## x -#else -#define SKIP_ON_NETBSD(x) x -#endif - -TEST_F(StandardStartupTest, SKIP_ON_NETBSD(TestStopReplyContainsThreadPcs)) { - // This inferior spawns 4 threads, then forces a break. - ASSERT_THAT_ERROR( - Client->SetInferior({getInferiorPath("thread_inferior"), "4"}), - Succeeded()); - - ASSERT_THAT_ERROR(Client->ListThreadsInStopReply(), Succeeded()); - ASSERT_THAT_ERROR(Client->ContinueAll(), Succeeded()); - unsigned int pc_reg = Client->GetPcRegisterId(); - ASSERT_NE(pc_reg, UINT_MAX); - - auto jthreads_info = Client->GetJThreadsInfo(); - ASSERT_THAT_EXPECTED(jthreads_info, Succeeded()); - - auto stop_reply = Client->GetLatestStopReplyAs(); - ASSERT_THAT_EXPECTED(stop_reply, Succeeded()); - auto stop_reply_pcs = stop_reply->getThreadPcs(); - auto thread_infos = jthreads_info->GetThreadInfos(); - ASSERT_EQ(stop_reply_pcs.size(), thread_infos.size()) - << "Thread count mismatch."; - - for (auto stop_reply_pc : stop_reply_pcs) { - unsigned long tid = stop_reply_pc.first; - ASSERT_TRUE(thread_infos.find(tid) != thread_infos.end()) - << "Thread ID: " << tid << " not in JThreadsInfo."; - EXPECT_THAT(thread_infos[tid].ReadRegister(pc_reg), - Pointee(Eq(stop_reply_pc.second))); - } -} -- 2.20.1

      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 z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz 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®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≪$&mWW@s|NB28wc|ZlHAxb_>|Q)<{{~`0 zQRrLD)|{=sL9%g$kMAqcj;i3~b@?N|q2!@flGud%bGhGY-%DJr|CtYy7LPDf8FFih z$4IkQct}cKe8PVJ^5Y{NUTcYWf&VqXwZeO7D{)D#(9Qm5K1lXQ9_N06|BhJ)tR)A` z7;vWhH<2^Y;jU4vwsn%KG0o z6u9eWxSbTnSl-)d4FyT{Gm_$YtqB)dlPBp`OKkLWFmg51??9Svz78N`w>K2T>Sx4e zUBf43!~1oSGbv)e45+-1eC&yQ;`w4fritt|ST zK^~Xei@7Yhk<0Rh`~54@_`8N|E6T~XVm{ec+(Nb$caUwxU1VFaVqtBE)Oo1622vGX zMfVqtihP_E`GgXQW}J#59a)E(QKDkuHxD&S^h9VRL&E@Jkw{}5+KJ'gHL;)bwF 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%0Dl+j>2RtTb@sdQQ0e=md2A+US134n5A`=1u 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%0DXs;k)Zw;HA=*quPN#B=cvAp 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 z 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