From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 2020B6EC40; Thu, 4 Jun 2026 12:32:35 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 2020B6EC40 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1780565555; bh=r+suwgmMY9+AOVL2lhfMDAA5+tX5DddlHJyo270qKwg=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=pUrnV/Ink6Vmcm+OYLbzl5AnyEpV0srbV2LQ/erPIUSJgI71ohyPSACTBpzHWtmMz /PAOSM4lS8tkiU8aonaM2SGlhWhDnWMTBcS+9BjSEz++/YUCddHhBvgXAJWV7PloPX Mb3WGWYzhK93TimXVxjsQvv3CWmrCcziv2gDZ3ks= Received: from send175.i.mail.ru (send175.i.mail.ru [95.163.59.14]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id CEC9C6EC40 for ; Thu, 4 Jun 2026 12:31:32 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org CEC9C6EC40 Received: by exim-smtp-5b85998476-kbmmh with esmtpa (envelope-from ) id 1wV4QF-00000000I8o-3735; Thu, 04 Jun 2026 12:31:32 +0300 To: Sergey Bronnikov , Evgeniy Temirgaleev Date: Thu, 4 Jun 2026 12:30:50 +0300 Message-ID: <20260604093052.2221827-3-skaplun@tarantool.org> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260604093052.2221827-1-skaplun@tarantool.org> References: <20260604093052.2221827-1-skaplun@tarantool.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: B8F34718100C35BD X-77F55803: 4F1203BC0FB41BD9FAD06046D747065BEB96030766291D485387FB17E9EB4AB0182A05F53808504041806452CE1654B63DE06ABAFEAF6705A810271CA3EFF4D391590B24FD7EC5C2A65EC38BD4A67DDF X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE77545ECFDF1E157EBEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB5533756660A56BB7F6F20B60913558FC3A2DFBAA6F911E34BE6722F38818592C6CC2BD69389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C06030C3405640F6718941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B6E232F00D8D26902CA471835C12D1D977C4224003CC8364762BB6847A3DEAEFB0F43C7A68FF6260569E8FC8737B5C2249EC8D19AE6D49635B68655334FD4449CB9ECD01F8117BC8BEAAAE862A0553A39223F8577A6DFFEA7CA819EB9AE8EA3DE343847C11F186F3C59DAA53EE0834AAEE X-C1DE0DAB: 0D63561A33F958A5AD0308D5714EAEC15002B1117B3ED69614E3E7260E125CD2FB820E9FE7BD014C823CB91A9FED034534781492E4B8EEAD69BF13FED57427F1C79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34CAB70F9BE574AE9C625B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D6599680D121A3D37990032B1135F59C3CBD7ED870375C6AD7F70126DE79AD03D0A3726C47D1F9509104B8341EE9D5BE9A0A59A3C46B998685B6EF77CD829DB9C1E015CDC686511735FCC7CEAA0681F5848F4C41F94D744909CECFA6C6B0C050A61A8CAF69B82BA93681CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVRI2994ruhLUCAotkGVTONU= X-DA7885C5: 23C005FBD50B0953F255D290C0D534F946F71D2208C8731D703D869026F98EBA5B736DB12ADF41455B1A4C17EAA7BC4BEF2421ABFA55128DAF83EF9164C44C7E X-Mailru-Sender: 689FA8AB762F7393520AF17B8A65FDE2BFF5DF6B32E1935C6034FF430E69FBFF9F35A80BBD7D25ADE49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH luajit 2/4] dbg: fix DUALNUM detection for LLDB X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sergey Kaplun via Tarantool-patches Reply-To: Sergey Kaplun Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" The `lj-arch` command on LLDB reports 'LJ_DUALNUM: True' for the single-number build since the `module.FindSymbol()` returns an invalid `SBSymbol` object [1], which is not `None`. This leads to invalid DUALNUM mode detection. This patch fixes this by checking that the returned symbol is valid. [1]: https://lldb.llvm.org/python_api/lldb.SBModule.html#lldb.SBModule.FindSymbol --- src/luajit_dbg.py | 3 ++- .../debug-extension-tests.py | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/luajit_dbg.py b/src/luajit_dbg.py index 410f0191..300d65e9 100644 --- a/src/luajit_dbg.py +++ b/src/luajit_dbg.py @@ -498,7 +498,8 @@ class _LLDBDebugger(Debugger): global LJ_64, LJ_DUALNUM, LJ_FR2, LJ_GC64 IRT_P64 = 9 module = self.target.modules[0] - LJ_DUALNUM = module.FindSymbol('lj_lib_checknumber') is not None + dualnum_sym = module.FindSymbol('lj_lib_checknumber') + LJ_DUALNUM = dualnum_sym is not None and dualnum_sym.IsValid() irtype_enum = self.target.FindFirstType('IRType').enum_members for member in irtype_enum: if member.name == 'IRT_PTR': diff --git a/test/tarantool-debugger-tests/debug-extension-tests.py b/test/tarantool-debugger-tests/debug-extension-tests.py index 7cb60d84..06a118ff 100644 --- a/test/tarantool-debugger-tests/debug-extension-tests.py +++ b/test/tarantool-debugger-tests/debug-extension-tests.py @@ -92,6 +92,17 @@ def execute_process(cmd, timeout=TIMEOUT): return process.stdout +IS_DUALNUM = execute_process([ + LUAJIT_BINARY, '-e', "print(require('ffi').abi('dualnum'))" +]).strip() == 'true' + +# If it is the guaranteed DUALNUM build (for example, on aarch64), +# we use this regexp for the guaranteed 'integer' check and +# 'number' for single-number build. +RX_INT = r'integer' if IS_DUALNUM else r'number' +RX_ISDUALNUM = r'True' if IS_DUALNUM else r'False' + + class TestCaseBase(unittest.TestCase): @classmethod def construct_cmds(cls): @@ -150,7 +161,7 @@ class TestLJArch(TestCaseBase): pattern = ( r'LJ_64: (True|False), ' r'LJ_GC64: (True|False), ' - r'LJ_DUALNUM: (True|False)' + r'LJ_DUALNUM: ' + RX_ISDUALNUM ) @@ -265,7 +276,7 @@ class TestLJTV(TestCaseBase): r'cdata @ ' + RX_ADDR + r'\n' r'table @ ' + RX_ADDR + r' \(asize: \d+, hmask: ' + RX_HASH + r'\)\n' r'userdata @ ' + RX_ADDR + r'\n' - r'(number|integer) .*1.*\n' + RX_INT + r' .*1.*\n' r'number 1.1\d+\n' ) -- 2.54.0