[Lldb-commits] [PATCH] D116707: [lldb] fix memory leak in "GetGDBServerRegisterInfoXMLAndProcess"

2022-01-10 Thread Pavel Labath via Phabricator via lldb-commits
labath accepted this revision.
labath added a comment.

Cool, thanks. Do you need someone to commit this for you?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116707/new/

https://reviews.llvm.org/D116707

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116896: [lldb] [gdb-remote] Support client fallback for servers without reg defs (WIP)

2022-01-10 Thread Michał Górny via Phabricator via lldb-commits
mgorny updated this revision to Diff 398542.
mgorny edited the summary of this revision.
mgorny added a comment.
Herald added a subscriber: thopre.

Simplify the macros. Add a test.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116896/new/

https://reviews.llvm.org/D116896

Files:
  lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
  lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
  lldb/test/API/functionalities/gdb_remote_client/amd64-fallback-regs.FileCheck

Index: lldb/test/API/functionalities/gdb_remote_client/amd64-fallback-regs.FileCheck
===
--- /dev/null
+++ lldb/test/API/functionalities/gdb_remote_client/amd64-fallback-regs.FileCheck
@@ -0,0 +1,76 @@
+CHECK-DAG: rax = 0x0807060504030201
+CHECK-DAG: rbx = 0x1817161514131211
+CHECK-DAG: rcx = 0x2827262524232221
+CHECK-DAG: rdx = 0x3837363534333231
+CHECK-DAG: rsi = 0x4847464544434241
+CHECK-DAG: rdi = 0x5857565554535251
+CHECK-DAG: rbp = 0x6867666564636261
+CHECK-DAG: rsp = 0x7877767574737271
+CHECK-DAG: r8 = 0x8887868584838281
+CHECK-DAG: r9 = 0x9897969594939291
+CHECK-DAG: r10 = 0xa8a7a6a5a4a3a2a1
+CHECK-DAG: r11 = 0xb8b7b6b5b4b3b2b1
+CHECK-DAG: r12 = 0xc8c7c6c5c4c3c2c1
+CHECK-DAG: r13 = 0xd8d7d6d5d4d3d2d1
+CHECK-DAG: r14 = 0xe8e7e6e5e4e3e2e1
+CHECK-DAG: r15 = 0xf8f7f6f5f4f3f2f1
+CHECK-DAG: rip = 0x100f0e0d0c0b0a09
+CHECK-DAG: eflags = 0x1c1b1a19
+CHECK-DAG: cs = 0x2c2b2a29
+CHECK-DAG: ss = 0x3c3b3a39
+
+CHECK-DAG: eax = 0x04030201
+CHECK-DAG: ebx = 0x14131211
+CHECK-DAG: ecx = 0x24232221
+CHECK-DAG: edx = 0x34333231
+CHECK-DAG: esi = 0x44434241
+CHECK-DAG: edi = 0x54535251
+CHECK-DAG: ebp = 0x64636261
+CHECK-DAG: esp = 0x74737271
+CHECK-DAG: r8d = 0x84838281
+CHECK-DAG: r9d = 0x94939291
+CHECK-DAG: r10d = 0xa4a3a2a1
+CHECK-DAG: r11d = 0xb4b3b2b1
+CHECK-DAG: r12d = 0xc4c3c2c1
+CHECK-DAG: r13d = 0xd4d3d2d1
+CHECK-DAG: r14d = 0xe4e3e2e1
+CHECK-DAG: r15d = 0xf4f3f2f1
+
+CHECK-DAG: ax = 0x0201
+CHECK-DAG: bx = 0x1211
+CHECK-DAG: cx = 0x2221
+CHECK-DAG: dx = 0x3231
+CHECK-DAG: si = 0x4241
+CHECK-DAG: di = 0x5251
+CHECK-DAG: bp = 0x6261
+CHECK-DAG: sp = 0x7271
+CHECK-DAG: r8w = 0x8281
+CHECK-DAG: r9w = 0x9291
+CHECK-DAG: r10w = 0xa2a1
+CHECK-DAG: r11w = 0xb2b1
+CHECK-DAG: r12w = 0xc2c1
+CHECK-DAG: r13w = 0xd2d1
+CHECK-DAG: r14w = 0xe2e1
+CHECK-DAG: r15w = 0xf2f1
+
+CHECK-DAG: ah = 0x02
+CHECK-DAG: bh = 0x12
+CHECK-DAG: ch = 0x22
+CHECK-DAG: dh = 0x32
+
+CHECK-DAG: al = 0x01
+CHECK-DAG: bl = 0x11
+CHECK-DAG: cl = 0x21
+CHECK-DAG: dl = 0x31
+CHECK-DAG: sil = 0x41
+CHECK-DAG: dil = 0x51
+CHECK-DAG: bpl = 0x61
+CHECK-DAG: spl = 0x71
+CHECK-DAG: r8l = 0x81
+CHECK-DAG: r9l = 0x91
+CHECK-DAG: r10l = 0xa1
+CHECK-DAG: r11l = 0xb1
+CHECK-DAG: r12l = 0xc1
+CHECK-DAG: r13l = 0xd1
+CHECK-DAG: r14l = 0xe1
+CHECK-DAG: r15l = 0xf1
Index: lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
===
--- /dev/null
+++ lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
@@ -0,0 +1,86 @@
+from __future__ import print_function
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+from lldbsuite.test.gdbclientutils import *
+from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase
+
+
+class TestGDBServerTargetXML(GDBRemoteTestBase):
+
+mydir = TestBase.compute_mydir(__file__)
+
+@skipIfRemote
+@skipIfLLVMTargetMissing("X86")
+def test_x86_64_regs(self):
+"""Test grabbing various x86_64 registers from gdbserver."""
+class MyResponder(MockGDBServerResponder):
+reg_data = (
+"0102030405060708"  # rax
+"1112131415161718"  # rbx
+"2122232425262728"  # rcx
+"3132333435363738"  # rdx
+"4142434445464748"  # rsi
+"5152535455565758"  # rdi
+"6162636465666768"  # rbp
+"7172737475767778"  # rsp
+"8182838485868788"  # r8
+"9192939495969798"  # r9
+"a1a2a3a4a5a6a7a8"  # r10
+"b1b2b3b4b5b6b7b8"  # r11
+"c1c2c3c4c5c6c7c8"  # r12
+"d1d2d3d4d5d6d7d8"  # r13
+"e1e2e3e4e5e6e7e8"  # r14
+"f1f2f3f4f5f6f7f8"  # r15
+"090a0b0c0d0e0f10"  # rip
+"191a1b1c"  # eflags
+"292a2b2c"  # cs
+"393a3b3c"  # ss
+)
+
+def readRegister(self, regnum):
+return ""
+
+def readRegisters(self):
+return self.reg_data
+
+def writeRegisters(self, reg_hex):
+self.reg_data = reg_hex
+return "OK"
+
+def haltReason(self):
+return "T02thread:1ff0d;threads:1ff0d;thread-pcs:00010001bc00;07:0102030405060708;10:1112131415161718;"
+
+self.server.responder = MyResponder(

[Lldb-commits] [PATCH] D116845: [LLDB][NativePDB] Add support for inlined functions

2022-01-10 Thread Pavel Labath via Phabricator via lldb-commits
labath added a comment.

I don't know much about PDBs, but the code seems ok. I particularly like the 
test case.

The one part that bothers me is the "two-phased" setting of line tables. IIUC, 
the problem is that the inline line info is in the block descriptor, so you 
need to parse block info in order to create a line table, but in order to 
actually create an lldb_private::Block, you need the call site info from the 
caller, which is in the pdb line table. This creates a sort of a dependency 
loop, is that right?

Although, at the moment, I can't think of anything that would break in this 
setup, this two-phase design (where you temporarily install an incomplete line 
table) definitely seems like a code smell, and a possible future maintenance 
burden. Is there any way around that? AFAICT, the "temporary" line table is 
accessed only from `SymbolFileNativePDB::ParseInlineSite`. Could we maybe 
change that function so that it reads the line table from some temporary 
location, so that we only install a "real" line table once it is final? The 
CompileUnit objects have a [GS]etUserData methods which can be used to store 
opaque pointers. Maybe you could store it there? Or maybe inside the 
`CompileUnitIndex` ?




Comment at: lldb/source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.cpp:116
+llvm::BinaryStreamReader reader(ss.getRecordData());
+if (auto ec = inlinee_lines.initialize(reader)) {
+  consumeError(std::move(ec));

We usually use `ec` for variables of type `std::error_code`. This is doubly 
confusing since you have also used auto (whose usage does not fit the current 
guidelines -- "use when the type is obvious from the context").



Comment at: 
lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp:346-349
+  lldbassert(sym.kind() == S_BLOCK32 || sym.kind() == S_INLINESITE);
 
-  // This is a block.  Its parent is either a function or another block.  In
-  // either case, its parent can be viewed as a block (e.g. a function contains
-  // 1 big block.  So just get the parent block and add this block to it.
-  BlockSym block(static_cast(sym.kind()));
-  cantFail(SymbolDeserializer::deserializeAs(sym, block));
-  lldbassert(block.Parent != 0);
-  PdbCompilandSymId parent_id(block_id.modi, block.Parent);
-  Block &parent_block = GetOrCreateBlock(parent_id);
-  lldb::user_id_t opaque_block_uid = toOpaqueUid(block_id);
   BlockSP child_block = std::make_shared(opaque_block_uid);
+  if (sym.kind() == S_BLOCK32) {

Use a switch and put the assert on the default branch?



Comment at: 
lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h:164-165
 private:
+  // This is a copy of LineTable::Entry, used only in ParseLineTable to
+  // deduplicate line table entries.
+  struct LineTableEntry {

Would you be able to use `LineTable::Entry` out-of-the box if it was made 
public? I don't see any strong reason for why it would have to remain hidden...



Comment at: lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h:313
+  llvm::DenseMap> m_inline_sites;
+  // A map from file id in records to file index in supported files.
+  llvm::DenseMap m_file_indexes;




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116845/new/

https://reviews.llvm.org/D116845

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116896: [lldb] [gdb-remote] Support client fallback for servers without reg defs (WIP)

2022-01-10 Thread Pavel Labath via Phabricator via lldb-commits
labath added a reviewer: jasonmolenda.
labath added a comment.

This looks pretty okay I'd say. I might consider putting the actual definitions 
into a separate cpp file, simply because it's easy, and ProcessGDBRemote.cpp is 
already too big.




Comment at: 
lldb/test/API/functionalities/gdb_remote_client/amd64-fallback-regs.FileCheck:1
+CHECK-DAG: rax = 0x0807060504030201
+CHECK-DAG: rbx = 0x1817161514131211

I actually think it would be better if this was defined inline in the python 
file, as then you could intersperse these lines with the definitions (which you 
have already formatted in a way that makes this easy), and it would be 
immediately obvious that the two lines describe the same data (modulo 
endianness).


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116896/new/

https://reviews.llvm.org/D116896

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116853: [CMake][LLDB] Resolve install conflict when `LLDB_BUILD_FRAMEWORK=ON`

2022-01-10 Thread LJC via Phabricator via lldb-commits
paperchalice updated this revision to Diff 398569.
paperchalice edited the summary of this revision.
paperchalice added a comment.

Install python scripts into canonical resource path.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116853/new/

https://reviews.llvm.org/D116853

Files:
  lldb/bindings/python/CMakeLists.txt


Index: lldb/bindings/python/CMakeLists.txt
===
--- lldb/bindings/python/CMakeLists.txt
+++ lldb/bindings/python/CMakeLists.txt
@@ -163,7 +163,7 @@
 
   # Install the LLDB python module
   if(LLDB_BUILD_FRAMEWORK)
-set(LLDB_PYTHON_INSTALL_PATH 
${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Resources/Python)
+set(LLDB_PYTHON_INSTALL_PATH 
${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Resources/Python)
   else()
 set(LLDB_PYTHON_INSTALL_PATH ${LLDB_PYTHON_RELATIVE_PATH})
   endif()


Index: lldb/bindings/python/CMakeLists.txt
===
--- lldb/bindings/python/CMakeLists.txt
+++ lldb/bindings/python/CMakeLists.txt
@@ -163,7 +163,7 @@
 
   # Install the LLDB python module
   if(LLDB_BUILD_FRAMEWORK)
-set(LLDB_PYTHON_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Resources/Python)
+set(LLDB_PYTHON_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Resources/Python)
   else()
 set(LLDB_PYTHON_INSTALL_PATH ${LLDB_PYTHON_RELATIVE_PATH})
   endif()
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116896: [lldb] [gdb-remote] Support client fallback for servers without reg defs (WIP)

2022-01-10 Thread Michał Górny via Phabricator via lldb-commits
mgorny added inline comments.



Comment at: 
lldb/test/API/functionalities/gdb_remote_client/amd64-fallback-regs.FileCheck:1
+CHECK-DAG: rax = 0x0807060504030201
+CHECK-DAG: rbx = 0x1817161514131211

labath wrote:
> I actually think it would be better if this was defined inline in the python 
> file, as then you could intersperse these lines with the definitions (which 
> you have already formatted in a way that makes this easy), and it would be 
> immediately obvious that the two lines describe the same data (modulo 
> endianness).
Using `self.match`, writing into a temporary file for FileCheck or do you have 
some other testing method on your mind?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116896/new/

https://reviews.llvm.org/D116896

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116896: [lldb] [gdb-remote] Support client fallback for servers without reg defs (WIP)

2022-01-10 Thread Michał Górny via Phabricator via lldb-commits
mgorny updated this revision to Diff 398595.
mgorny added a comment.

Inline FileCheck input in the test file.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116896/new/

https://reviews.llvm.org/D116896

Files:
  lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
  lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py

Index: lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
===
--- /dev/null
+++ lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
@@ -0,0 +1,154 @@
+from __future__ import print_function
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+from lldbsuite.test.gdbclientutils import *
+from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase
+
+import binascii
+
+
+class TestGDBServerTargetXML(GDBRemoteTestBase):
+
+mydir = TestBase.compute_mydir(__file__)
+
+@staticmethod
+def filecheck_to_blob(fc):
+for l in fc.strip().splitlines():
+val = l.split('0x')[1]
+yield binascii.b2a_hex(bytes(reversed(binascii.a2b_hex(val.decode()
+
+@skipIfRemote
+@skipIfLLVMTargetMissing("X86")
+def test_x86_64_regs(self):
+"""Test grabbing various x86_64 registers from gdbserver."""
+
+GPRS = '''
+CHECK-AMD64-DAG: rax = 0x0807060504030201
+CHECK-AMD64-DAG: rbx = 0x1817161514131211
+CHECK-AMD64-DAG: rcx = 0x2827262524232221
+CHECK-AMD64-DAG: rdx = 0x3837363534333231
+CHECK-AMD64-DAG: rsi = 0x4847464544434241
+CHECK-AMD64-DAG: rdi = 0x5857565554535251
+CHECK-AMD64-DAG: rbp = 0x6867666564636261
+CHECK-AMD64-DAG: rsp = 0x7877767574737271
+CHECK-AMD64-DAG: r8 = 0x8887868584838281
+CHECK-AMD64-DAG: r9 = 0x9897969594939291
+CHECK-AMD64-DAG: r10 = 0xa8a7a6a5a4a3a2a1
+CHECK-AMD64-DAG: r11 = 0xb8b7b6b5b4b3b2b1
+CHECK-AMD64-DAG: r12 = 0xc8c7c6c5c4c3c2c1
+CHECK-AMD64-DAG: r13 = 0xd8d7d6d5d4d3d2d1
+CHECK-AMD64-DAG: r14 = 0xe8e7e6e5e4e3e2e1
+CHECK-AMD64-DAG: r15 = 0xf8f7f6f5f4f3f2f1
+CHECK-AMD64-DAG: rip = 0x100f0e0d0c0b0a09
+CHECK-AMD64-DAG: eflags = 0x1c1b1a19
+CHECK-AMD64-DAG: cs = 0x2c2b2a29
+CHECK-AMD64-DAG: ss = 0x3c3b3a39
+'''
+
+SUPPL = '''
+CHECK-AMD64-DAG: eax = 0x04030201
+CHECK-AMD64-DAG: ebx = 0x14131211
+CHECK-AMD64-DAG: ecx = 0x24232221
+CHECK-AMD64-DAG: edx = 0x34333231
+CHECK-AMD64-DAG: esi = 0x44434241
+CHECK-AMD64-DAG: edi = 0x54535251
+CHECK-AMD64-DAG: ebp = 0x64636261
+CHECK-AMD64-DAG: esp = 0x74737271
+CHECK-AMD64-DAG: r8d = 0x84838281
+CHECK-AMD64-DAG: r9d = 0x94939291
+CHECK-AMD64-DAG: r10d = 0xa4a3a2a1
+CHECK-AMD64-DAG: r11d = 0xb4b3b2b1
+CHECK-AMD64-DAG: r12d = 0xc4c3c2c1
+CHECK-AMD64-DAG: r13d = 0xd4d3d2d1
+CHECK-AMD64-DAG: r14d = 0xe4e3e2e1
+CHECK-AMD64-DAG: r15d = 0xf4f3f2f1
+
+CHECK-AMD64-DAG: ax = 0x0201
+CHECK-AMD64-DAG: bx = 0x1211
+CHECK-AMD64-DAG: cx = 0x2221
+CHECK-AMD64-DAG: dx = 0x3231
+CHECK-AMD64-DAG: si = 0x4241
+CHECK-AMD64-DAG: di = 0x5251
+CHECK-AMD64-DAG: bp = 0x6261
+CHECK-AMD64-DAG: sp = 0x7271
+CHECK-AMD64-DAG: r8w = 0x8281
+CHECK-AMD64-DAG: r9w = 0x9291
+CHECK-AMD64-DAG: r10w = 0xa2a1
+CHECK-AMD64-DAG: r11w = 0xb2b1
+CHECK-AMD64-DAG: r12w = 0xc2c1
+CHECK-AMD64-DAG: r13w = 0xd2d1
+CHECK-AMD64-DAG: r14w = 0xe2e1
+CHECK-AMD64-DAG: r15w = 0xf2f1
+
+CHECK-AMD64-DAG: ah = 0x02
+CHECK-AMD64-DAG: bh = 0x12
+CHECK-AMD64-DAG: ch = 0x22
+CHECK-AMD64-DAG: dh = 0x32
+
+CHECK-AMD64-DAG: al = 0x01
+CHECK-AMD64-DAG: bl = 0x11
+CHECK-AMD64-DAG: cl = 0x21
+CHECK-AMD64-DAG: dl = 0x31
+CHECK-AMD64-DAG: sil = 0x41
+CHECK-AMD64-DAG: dil = 0x51
+CHECK-AMD64-DAG: bpl = 0x61
+CHECK-AMD64-DAG: spl = 0x71
+CHECK-AMD64-DAG: r8l = 0x81
+CHECK-AMD64-DAG: r9l = 0x91
+CHECK-AMD64-DAG: r10l = 0xa1
+CHECK-AMD64-DAG: r11l = 0xb1
+CHECK-AMD64-DAG: r12l = 0xc1
+CHECK-AMD64-DAG: r13l = 0xd1
+CHECK-AMD64-DAG: r14l = 0xe1
+CHECK-AMD64-DAG: r15l = 0xf1
+'''
+
+class MyResponder(MockGDBServerResponder):
+reg_data = ''.join(self.filecheck_to_blob(GPRS))
+
+def readRegister(self, regnum):
+return ""
+
+def readRegisters(self):
+return self.reg_data
+
+def writeRegisters(self, reg_hex):
+self.reg_data = reg_hex
+return "OK"
+
+def haltReason(self):
+return "T02thread:1ff0d;threads:1ff0d;thread-pcs:00010001bc00;07:0102030405060708;10:1112131415161718;"
+
+self.server.responder = MyResponder()
+
+target = self.createTarget("basic_eh_frame.yaml")
+process = self.connect(target)
+lldbutil.expect_state_changes(self, self.dbg.GetListener(), process,
+  [lldb.eStateStopped])
+
+# test all registers
+self.filecheck("register read --all", __file__,
+   filecheck_options='--check-prefix=CHECK-AMD64')
+
+# test generic aliases
+self.match("register read arg4",
+   ["rcx = 

[Lldb-commits] [PATCH] D116539: [lldb/platform-gdb] Clear cached protocol state upon disconnection

2022-01-10 Thread Pavel Labath via Phabricator via lldb-commits
labath added inline comments.



Comment at: 
lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp:84
 bool PlatformAndroidRemoteGDBServer::LaunchGDBServer(lldb::pid_t &pid,
  std::string &connect_url) 
{
   uint16_t remote_port = 0;

JDevlieghere wrote:
> Should this have `assert(IsConnected());` like 
> `PlatformRemoteGDBServer::LaunchGDBServer` does?
Yeah, I guess it should.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116539/new/

https://reviews.llvm.org/D116539

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] 8ccfcab - [lldb/platform-gdb] Clear cached protocol state upon disconnection

2022-01-10 Thread Pavel Labath via lldb-commits

Author: Pavel Labath
Date: 2022-01-10T16:27:30+01:00
New Revision: 8ccfcab34ffb068f127e88be9fb1f42bb46f3af4

URL: 
https://github.com/llvm/llvm-project/commit/8ccfcab34ffb068f127e88be9fb1f42bb46f3af4
DIFF: 
https://github.com/llvm/llvm-project/commit/8ccfcab34ffb068f127e88be9fb1f42bb46f3af4.diff

LOG: [lldb/platform-gdb] Clear cached protocol state upon disconnection

Previously we would persist the flags indicating whether the remote side
supports a particular feature across reconnects, which is obviously not
a good idea.

I implement the clearing by nuking (its the only way to be sure :) the
entire GDBRemoteCommunication object in the disconnect operation and
creating a new one upon connection. This allows us to maintain a nice
invariant that the GDBRemoteCommunication object (which is now a
pointer) exists only if it is connected. The downside to that is that a
lot of functions now needs to check the validity of the pointer instead
of blindly accessing the object.

The process communication does not suffer from the same issue because we
always destroy the entire Process object for a relaunch.

Differential Revision: https://reviews.llvm.org/D116539

Added: 


Modified: 
lldb/packages/Python/lldbsuite/test/lldbgdbclient.py
lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp
lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
lldb/test/API/functionalities/gdb_remote_client/TestGDBRemotePlatformFile.py

Removed: 




diff  --git a/lldb/packages/Python/lldbsuite/test/lldbgdbclient.py 
b/lldb/packages/Python/lldbsuite/test/lldbgdbclient.py
index dd5b044dfc4d9..320ae0d6bdf9d 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbgdbclient.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbgdbclient.py
@@ -58,7 +58,7 @@ def connect(self, target):
 self.assertTrue(process, PROCESS_IS_VALID)
 return process
 
-def assertPacketLogContains(self, packets):
+def assertPacketLogContains(self, packets, log=None):
 """
 Assert that the mock server's packet log contains the given packets.
 
@@ -69,9 +69,10 @@ def assertPacketLogContains(self, packets):
 The check does not require that the packets be consecutive, but does
 require that they are ordered in the log as they ordered in the arg.
 """
+if log is None:
+log = self.server.responder.packetLog
 i = 0
 j = 0
-log = self.server.responder.packetLog
 
 while i < len(packets) and j < len(log):
 if log[j] == packets[i]:

diff  --git 
a/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp 
b/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp
index d172ce5802c05..4765bedd477f1 100644
--- a/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp
+++ b/lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp
@@ -82,9 +82,11 @@ 
PlatformAndroidRemoteGDBServer::~PlatformAndroidRemoteGDBServer() {
 
 bool PlatformAndroidRemoteGDBServer::LaunchGDBServer(lldb::pid_t &pid,
  std::string &connect_url) 
{
+  assert(IsConnected());
   uint16_t remote_port = 0;
   std::string socket_name;
-  if (!m_gdb_client.LaunchGDBServer("127.0.0.1", pid, remote_port, 
socket_name))
+  if (!m_gdb_client_up->LaunchGDBServer("127.0.0.1", pid, remote_port,
+socket_name))
 return false;
 
   Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PLATFORM));
@@ -98,8 +100,9 @@ bool 
PlatformAndroidRemoteGDBServer::LaunchGDBServer(lldb::pid_t &pid,
 }
 
 bool PlatformAndroidRemoteGDBServer::KillSpawnedProcess(lldb::pid_t pid) {
+  assert(IsConnected());
   DeleteForwardPort(pid);
-  return m_gdb_client.KillSpawnedProcess(pid);
+  return m_gdb_client_up->KillSpawnedProcess(pid);
 }
 
 Status PlatformAndroidRemoteGDBServer::ConnectRemote(Args &args) {

diff  --git 
a/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp 
b/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
index 66090c2ee1a05..0929a060d0b87 100644
--- a/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
+++ b/lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
@@ -96,7 +96,8 @@ bool PlatformRemoteGDBServer::GetModuleSpec(const FileSpec 
&module_file_spec,
 
   const auto module_path = module_file_spec.GetPath(false);
 
-  if (!m_gdb_client.GetModuleInfo(module_file_spec, arch, module_spec)) {
+  if (!m_gdb_client_up ||
+  !m_gdb_client_up->GetModuleInfo(module_file_spec, arch, module_spec)) {
 LLDB_LOGF(
 log,
 "PlatformRemoteGDBServer::%s - failed to get module info for %s:%s",
@@ -127,11 +128,7 @@ Status PlatformRemoteGDBServer::GetFileWithUUID(const 
FileSpec &plat

[Lldb-commits] [PATCH] D116539: [lldb/platform-gdb] Clear cached protocol state upon disconnection

2022-01-10 Thread Pavel Labath via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG8ccfcab34ffb: [lldb/platform-gdb] Clear cached protocol 
state upon disconnection (authored by labath).

Changed prior to commit:
  https://reviews.llvm.org/D116539?vs=397067&id=398636#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116539/new/

https://reviews.llvm.org/D116539

Files:
  lldb/packages/Python/lldbsuite/test/lldbgdbclient.py
  lldb/source/Plugins/Platform/Android/PlatformAndroidRemoteGDBServer.cpp
  lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
  lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
  lldb/test/API/functionalities/gdb_remote_client/TestGDBRemotePlatformFile.py

Index: lldb/test/API/functionalities/gdb_remote_client/TestGDBRemotePlatformFile.py
===
--- lldb/test/API/functionalities/gdb_remote_client/TestGDBRemotePlatformFile.py
+++ lldb/test/API/functionalities/gdb_remote_client/TestGDBRemotePlatformFile.py
@@ -107,6 +107,25 @@
 "vFile:close:5",
 ])
 
+self.runCmd("platform disconnect")
+
+# For a new onnection, we should attempt vFile:size once again.
+server2 = MockGDBServer(self.server_socket_class())
+server2.responder = Responder()
+server2.start()
+self.addTearDownHook(lambda:server2.stop())
+self.runCmd("platform connect " + server2.get_connect_url())
+self.match("platform get-size /other/file.txt",
+   [r"File size of /other/file\.txt \(remote\): 66051"])
+
+self.assertPacketLogContains([
+"vFile:size:2f6f746865722f66696c652e747874",
+"vFile:open:2f6f746865722f66696c652e747874,,",
+"vFile:fstat:5",
+"vFile:close:5",
+],
+log=server2.responder.packetLog)
+
 @skipIfWindows
 def test_file_permissions(self):
 """Test 'platform get-permissions'"""
Index: lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
===
--- lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
+++ lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.h
@@ -153,7 +153,8 @@
   GetPendingGdbServerList(std::vector &connection_urls);
 
 protected:
-  process_gdb_remote::GDBRemoteCommunicationClient m_gdb_client;
+  std::unique_ptr
+  m_gdb_client_up;
   std::string m_platform_description; // After we connect we can get a more
   // complete description of what we are
   // connected to
Index: lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
===
--- lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
+++ lldb/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
@@ -96,7 +96,8 @@
 
   const auto module_path = module_file_spec.GetPath(false);
 
-  if (!m_gdb_client.GetModuleInfo(module_file_spec, arch, module_spec)) {
+  if (!m_gdb_client_up ||
+  !m_gdb_client_up->GetModuleInfo(module_file_spec, arch, module_spec)) {
 LLDB_LOGF(
 log,
 "PlatformRemoteGDBServer::%s - failed to get module info for %s:%s",
@@ -127,11 +128,7 @@
 
 /// Default Constructor
 PlatformRemoteGDBServer::PlatformRemoteGDBServer()
-: Platform(false), // This is a remote platform
-  m_gdb_client() {
-  m_gdb_client.SetPacketTimeout(
-  process_gdb_remote::ProcessGDBRemote::GetPacketTimeout());
-}
+: Platform(/*is_host=*/false) {}
 
 /// Destructor.
 ///
@@ -147,29 +144,36 @@
 }
 
 bool PlatformRemoteGDBServer::GetRemoteOSVersion() {
-  m_os_version = m_gdb_client.GetOSVersion();
+  if (m_gdb_client_up)
+m_os_version = m_gdb_client_up->GetOSVersion();
   return !m_os_version.empty();
 }
 
 llvm::Optional PlatformRemoteGDBServer::GetRemoteOSBuildString() {
-  return m_gdb_client.GetOSBuildString();
+  if (!m_gdb_client_up)
+return llvm::None;
+  return m_gdb_client_up->GetOSBuildString();
 }
 
 llvm::Optional
 PlatformRemoteGDBServer::GetRemoteOSKernelDescription() {
-  return m_gdb_client.GetOSKernelDescription();
+  if (!m_gdb_client_up)
+return llvm::None;
+  return m_gdb_client_up->GetOSKernelDescription();
 }
 
 // Remote Platform subclasses need to override this function
 ArchSpec PlatformRemoteGDBServer::GetRemoteSystemArchitecture() {
-  return m_gdb_client.GetSystemArchitecture();
+  if (!m_gdb_client_up)
+return ArchSpec();
+  return m_gdb_client_up->GetSystemArchitecture();
 }
 
 FileSpec PlatformRemoteGDBServer::GetRemoteWorkingDirectory() {
   if (IsConnected()) {
 Log *log = GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM);
 FileSpec working_dir;
-if (m_gdb_client.GetWorkingDir(working_dir) && log)
+if (m_gdb_client_up->GetWorkin

[Lldb-commits] [PATCH] D116788: [lldb] Set result error state in 'frame variable'

2022-01-10 Thread Greg Clayton via Phabricator via lldb-commits
clayborg added a comment.

I would vote that if any argument or option is specified, and results in 
something not being found, that an error be returned. The error state doesn't 
do anything for the user on the command line, but it is nice to know that 
something failed to produce a result due to arguments being given. Any tests 
that are failing now when they didn't before can be modified.

Slo the cases I can think of are:

- "frame variable" with no args that results in no variables being displayed 
because there is no debug info returns an error like "no debug information for 
current stack frame"
- "frame variable" with no args that results in no variables being displayed 
and there is debug info, returns an error like "no variables found in debug 
information"
- "frame variable" with any args or options that do not find a match returns an 
error with possible multiple strings like "no variables found that match the 
name '%s'" (for a argument) or "no variables found that matches the regular 
expression '%s'" (for options)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116788/new/

https://reviews.llvm.org/D116788

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116896: [lldb] [gdb-remote] Support client fallback for servers without reg defs (WIP)

2022-01-10 Thread Michał Górny via Phabricator via lldb-commits
mgorny updated this revision to Diff 398644.
mgorny added a comment.

Split the new code into a separate file.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116896/new/

https://reviews.llvm.org/D116896

Files:
  lldb/source/Plugins/Process/gdb-remote/CMakeLists.txt
  lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterFallback.cpp
  lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterFallback.h
  lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
  lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py

Index: lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
===
--- /dev/null
+++ lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
@@ -0,0 +1,189 @@
+from __future__ import print_function
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+from lldbsuite.test.gdbclientutils import *
+from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase
+
+import binascii
+
+
+class TestGDBServerTargetXML(GDBRemoteTestBase):
+
+mydir = TestBase.compute_mydir(__file__)
+
+@staticmethod
+def filecheck_to_blob(fc):
+for l in fc.strip().splitlines():
+val = l.split('0x')[1]
+yield binascii.b2a_hex(bytes(reversed(binascii.a2b_hex(val.decode()
+
+@skipIfRemote
+@skipIfLLVMTargetMissing("X86")
+def test_x86_64_regs(self):
+"""Test grabbing various x86_64 registers from gdbserver."""
+
+GPRS = '''
+CHECK-AMD64-DAG: rax = 0x0807060504030201
+CHECK-AMD64-DAG: rbx = 0x1817161514131211
+CHECK-AMD64-DAG: rcx = 0x2827262524232221
+CHECK-AMD64-DAG: rdx = 0x3837363534333231
+CHECK-AMD64-DAG: rsi = 0x4847464544434241
+CHECK-AMD64-DAG: rdi = 0x5857565554535251
+CHECK-AMD64-DAG: rbp = 0x6867666564636261
+CHECK-AMD64-DAG: rsp = 0x7877767574737271
+CHECK-AMD64-DAG: r8 = 0x8887868584838281
+CHECK-AMD64-DAG: r9 = 0x9897969594939291
+CHECK-AMD64-DAG: r10 = 0xa8a7a6a5a4a3a2a1
+CHECK-AMD64-DAG: r11 = 0xb8b7b6b5b4b3b2b1
+CHECK-AMD64-DAG: r12 = 0xc8c7c6c5c4c3c2c1
+CHECK-AMD64-DAG: r13 = 0xd8d7d6d5d4d3d2d1
+CHECK-AMD64-DAG: r14 = 0xe8e7e6e5e4e3e2e1
+CHECK-AMD64-DAG: r15 = 0xf8f7f6f5f4f3f2f1
+CHECK-AMD64-DAG: rip = 0x100f0e0d0c0b0a09
+CHECK-AMD64-DAG: eflags = 0x1c1b1a19
+CHECK-AMD64-DAG: cs = 0x2c2b2a29
+CHECK-AMD64-DAG: ss = 0x3c3b3a39
+'''
+
+SUPPL = '''
+CHECK-AMD64-DAG: eax = 0x04030201
+CHECK-AMD64-DAG: ebx = 0x14131211
+CHECK-AMD64-DAG: ecx = 0x24232221
+CHECK-AMD64-DAG: edx = 0x34333231
+CHECK-AMD64-DAG: esi = 0x44434241
+CHECK-AMD64-DAG: edi = 0x54535251
+CHECK-AMD64-DAG: ebp = 0x64636261
+CHECK-AMD64-DAG: esp = 0x74737271
+CHECK-AMD64-DAG: r8d = 0x84838281
+CHECK-AMD64-DAG: r9d = 0x94939291
+CHECK-AMD64-DAG: r10d = 0xa4a3a2a1
+CHECK-AMD64-DAG: r11d = 0xb4b3b2b1
+CHECK-AMD64-DAG: r12d = 0xc4c3c2c1
+CHECK-AMD64-DAG: r13d = 0xd4d3d2d1
+CHECK-AMD64-DAG: r14d = 0xe4e3e2e1
+CHECK-AMD64-DAG: r15d = 0xf4f3f2f1
+
+CHECK-AMD64-DAG: ax = 0x0201
+CHECK-AMD64-DAG: bx = 0x1211
+CHECK-AMD64-DAG: cx = 0x2221
+CHECK-AMD64-DAG: dx = 0x3231
+CHECK-AMD64-DAG: si = 0x4241
+CHECK-AMD64-DAG: di = 0x5251
+CHECK-AMD64-DAG: bp = 0x6261
+CHECK-AMD64-DAG: sp = 0x7271
+CHECK-AMD64-DAG: r8w = 0x8281
+CHECK-AMD64-DAG: r9w = 0x9291
+CHECK-AMD64-DAG: r10w = 0xa2a1
+CHECK-AMD64-DAG: r11w = 0xb2b1
+CHECK-AMD64-DAG: r12w = 0xc2c1
+CHECK-AMD64-DAG: r13w = 0xd2d1
+CHECK-AMD64-DAG: r14w = 0xe2e1
+CHECK-AMD64-DAG: r15w = 0xf2f1
+
+CHECK-AMD64-DAG: ah = 0x02
+CHECK-AMD64-DAG: bh = 0x12
+CHECK-AMD64-DAG: ch = 0x22
+CHECK-AMD64-DAG: dh = 0x32
+
+CHECK-AMD64-DAG: al = 0x01
+CHECK-AMD64-DAG: bl = 0x11
+CHECK-AMD64-DAG: cl = 0x21
+CHECK-AMD64-DAG: dl = 0x31
+CHECK-AMD64-DAG: sil = 0x41
+CHECK-AMD64-DAG: dil = 0x51
+CHECK-AMD64-DAG: bpl = 0x61
+CHECK-AMD64-DAG: spl = 0x71
+CHECK-AMD64-DAG: r8l = 0x81
+CHECK-AMD64-DAG: r9l = 0x91
+CHECK-AMD64-DAG: r10l = 0xa1
+CHECK-AMD64-DAG: r11l = 0xb1
+CHECK-AMD64-DAG: r12l = 0xc1
+CHECK-AMD64-DAG: r13l = 0xd1
+CHECK-AMD64-DAG: r14l = 0xe1
+CHECK-AMD64-DAG: r15l = 0xf1
+'''
+
+class MyResponder(MockGDBServerResponder):
+reg_data = ''.join(self.filecheck_to_blob(GPRS))
+
+def readRegister(self, regnum):
+return ""
+
+def readRegisters(self):
+return self.reg_data
+
+def writeRegisters(self, reg_hex):
+self.reg_data = reg_hex
+return "OK"
+
+def haltReason(self):
+return "T02thread:1ff0d;threads:1ff0d;thread-pcs:00010001bc00;07:0102030405060708;10:1112131415161718;"
+
+self.server.responder = MyResponder()
+
+target = self.createTarget("basic_eh_frame.yaml")
+process = self.connect(target)
+lldbutil.expect_state_changes(self, self.dbg.GetListener(), process,
+  [lldb.eStateStopped])
+
+# test all registers
+self.filecheck("register rea

[Lldb-commits] [PATCH] D114722: [LLDB] Fix Python GIL-not-held issues

2022-01-10 Thread Jordan Rupprecht via Phabricator via lldb-commits
rupprecht updated this revision to Diff 398652.
rupprecht added a comment.

Rebase


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D114722/new/

https://reviews.llvm.org/D114722

Files:
  lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
  lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h
  lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp

Index: lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
===
--- lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -1420,9 +1420,9 @@
Locker::FreeLock);
 ret_val = LLDBSWIGPython_CreateFrameRecognizer(class_name,
m_dictionary_name.c_str());
-  }
 
-  return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+  }
 }
 
 lldb::ValueObjectListSP ScriptInterpreterPythonImpl::GetRecognizedArguments(
@@ -1484,9 +1484,9 @@
Locker::FreeLock);
 ret_val = LLDBSWIGPythonCreateOSPlugin(
 class_name, m_dictionary_name.c_str(), process_sp);
-  }
 
-  return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+  }
 }
 
 StructuredData::DictionarySP ScriptInterpreterPythonImpl::OSPlugin_RegisterInfo(
@@ -1742,9 +1742,9 @@
 args_data, error_str, thread_plan_sp);
 if (!ret_val)
   return {};
-  }
 
-  return StructuredData::ObjectSP(new StructuredPythonObject(ret_val));
+return StructuredData::ObjectSP(new StructuredPythonObject(ret_val));
+  }
 }
 
 bool ScriptInterpreterPythonImpl::ScriptedThreadPlanExplainsStop(
@@ -1844,9 +1844,9 @@
 ret_val = LLDBSwigPythonCreateScriptedBreakpointResolver(
 class_name, python_interpreter->m_dictionary_name.c_str(), args_data,
 bkpt_sp);
-  }
 
-  return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+  }
 }
 
 bool ScriptInterpreterPythonImpl::ScriptedBreakpointResolverSearchCallback(
@@ -1919,9 +1919,9 @@
 ret_val = LLDBSwigPythonCreateScriptedStopHook(
 target_sp, class_name, python_interpreter->m_dictionary_name.c_str(),
 args_data, error);
-  }
 
-  return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+  }
 }
 
 bool ScriptInterpreterPythonImpl::ScriptedStopHookHandleStop(
@@ -2017,9 +2017,9 @@
Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
 ret_val = LLDBSwigPythonCreateSyntheticProvider(
 class_name, python_interpreter->m_dictionary_name.c_str(), valobj);
-  }
 
-  return StructuredData::ObjectSP(new StructuredPythonObject(ret_val));
+return StructuredData::ObjectSP(new StructuredPythonObject(ret_val));
+  }
 }
 
 StructuredData::GenericSP
@@ -2039,9 +2039,9 @@
Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
 ret_val = LLDBSwigPythonCreateCommandObject(
 class_name, m_dictionary_name.c_str(), debugger_sp);
-  }
 
-  return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+return StructuredData::GenericSP(new StructuredPythonObject(ret_val));
+  }
 }
 
 bool ScriptInterpreterPythonImpl::GenerateTypeScriptFunction(
@@ -2151,8 +2151,11 @@
 return false;
   }
 
-  if (new_callee && old_callee != new_callee)
+  if (new_callee && old_callee != new_callee) {
+Locker py_lock(this,
+   Locker::AcquireLock | Locker::InitSession | Locker::NoSTDIN);
 callee_wrapper_sp = std::make_shared(new_callee);
+  }
 
   return ret_val;
 }
Index: lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h
===
--- lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h
+++ lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h
@@ -88,12 +88,21 @@
   StructuredPythonObject() : StructuredData::Generic() {}
 
   StructuredPythonObject(void *obj) : StructuredData::Generic(obj) {
+assert(PyGILState_Check());
 Py_XINCREF(GetValue());
   }
 
   ~StructuredPythonObject() override {
-if (Py_IsInitialized())
-  Py_XDECREF(GetValue());
+if (Py_IsInitialized()) {
+  if (_Py_IsFinalizing()) {
+// Leak GetValue() rather than crashing the process.
+// https://docs.python.org/3/c-api/init.html#c.PyGILState_Ensure
+  } else {
+auto gstate = PyGILState_Ensure();
+Py_XDECREF(GetValue());
+PyGILState_Release(gstate);
+  }
+}
 SetValue(nullptr);
   }
 
@@ -264,8 +273,16 @@
   

[Lldb-commits] [PATCH] D100810: [llvm] Use `GNUInstallDirs` to support custom installation dirs

2022-01-10 Thread John Ericson via Phabricator via lldb-commits
Ericson2314 updated this revision to Diff 398219.
Ericson2314 marked 4 inline comments as done.
Ericson2314 added a comment.

Rebase


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100810/new/

https://reviews.llvm.org/D100810

Files:
  llvm/CMakeLists.txt
  llvm/cmake/modules/AddLLVM.cmake
  llvm/cmake/modules/AddSphinxTarget.cmake
  llvm/cmake/modules/CMakeLists.txt
  llvm/cmake/modules/LLVMInstallSymlink.cmake
  llvm/docs/CMake.rst
  llvm/examples/Bye/CMakeLists.txt
  llvm/tools/llvm-config/BuildVariables.inc.in
  llvm/tools/llvm-config/llvm-config.cpp
  llvm/tools/lto/CMakeLists.txt
  llvm/tools/opt-viewer/CMakeLists.txt
  llvm/tools/remarks-shlib/CMakeLists.txt

Index: llvm/tools/remarks-shlib/CMakeLists.txt
===
--- llvm/tools/remarks-shlib/CMakeLists.txt
+++ llvm/tools/remarks-shlib/CMakeLists.txt
@@ -19,7 +19,7 @@
   endif()
   
   install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/Remarks.h
-DESTINATION include/llvm-c
+DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/llvm-c"
 COMPONENT Remarks)
 
   if (APPLE)
Index: llvm/tools/opt-viewer/CMakeLists.txt
===
--- llvm/tools/opt-viewer/CMakeLists.txt
+++ llvm/tools/opt-viewer/CMakeLists.txt
@@ -8,7 +8,7 @@
 
 foreach (file ${files})
   install(PROGRAMS ${file}
-DESTINATION share/opt-viewer
+DESTINATION "${CMAKE_INSTALL_DATADIR}/opt-viewer"
 COMPONENT opt-viewer)
 endforeach (file)
 
Index: llvm/tools/lto/CMakeLists.txt
===
--- llvm/tools/lto/CMakeLists.txt
+++ llvm/tools/lto/CMakeLists.txt
@@ -33,7 +33,7 @@
 ${SOURCES} DEPENDS intrinsics_gen)
 
 install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/lto.h
-  DESTINATION include/llvm-c
+  DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/llvm-c"
   COMPONENT LTO)
 
 if (APPLE)
Index: llvm/tools/llvm-config/llvm-config.cpp
===
--- llvm/tools/llvm-config/llvm-config.cpp
+++ llvm/tools/llvm-config/llvm-config.cpp
@@ -357,10 +357,16 @@
 ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
   } else {
 ActivePrefix = CurrentExecPrefix;
-ActiveIncludeDir = ActivePrefix + "/include";
-SmallString<256> path(LLVM_TOOLS_INSTALL_DIR);
-sys::fs::make_absolute(ActivePrefix, path);
-ActiveBinDir = std::string(path.str());
+{
+  SmallString<256> Path(LLVM_INSTALL_INCLUDEDIR);
+  sys::fs::make_absolute(ActivePrefix, Path);
+  ActiveIncludeDir = std::string(Path.str());
+}
+{
+  SmallString<256> Path(LLVM_TOOLS_INSTALL_DIR);
+  sys::fs::make_absolute(ActivePrefix, Path);
+  ActiveBinDir = std::string(Path.str());
+}
 ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
 ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
 ActiveIncludeOption = "-I" + ActiveIncludeDir;
Index: llvm/tools/llvm-config/BuildVariables.inc.in
===
--- llvm/tools/llvm-config/BuildVariables.inc.in
+++ llvm/tools/llvm-config/BuildVariables.inc.in
@@ -23,6 +23,7 @@
 #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
 #define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
 #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"
+#define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@"
 #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
 #define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"
 #define LLVM_BUILD_SYSTEM "@LLVM_BUILD_SYSTEM@"
Index: llvm/examples/Bye/CMakeLists.txt
===
--- llvm/examples/Bye/CMakeLists.txt
+++ llvm/examples/Bye/CMakeLists.txt
@@ -14,6 +14,6 @@
 BUILDTREE_ONLY
)
 
-  install(TARGETS ${name} RUNTIME DESTINATION examples)
+  install(TARGETS ${name} RUNTIME DESTINATION "${LLVM_EXAMPLES_INSTALL_DIR}")
   set_target_properties(${name} PROPERTIES FOLDER "Examples")
 endif()
Index: llvm/docs/CMake.rst
===
--- llvm/docs/CMake.rst
+++ llvm/docs/CMake.rst
@@ -252,6 +252,22 @@
   Sets the C++ standard to conform to when building LLVM.  Possible values are
   14, 17, 20.  LLVM Requires C++ 14 or higher.  This defaults to 14.
 
+**CMAKE_INSTALL_BINDIR**:PATH
+  The path to install executables, relative to the *CMAKE_INSTALL_PREFIX*.
+  Defaults to "bin".
+
+**CMAKE_INSTALL_INCLUDEDIR**:PATH
+  The path to install header files, relative to the *CMAKE_INSTALL_PREFIX*.
+  Defaults to "include".
+
+**CMAKE_INSTALL_DOCDIR**:PATH
+  The path to install documentation, relative to the *CMAKE_INSTALL_PREFIX*.
+  Defaults to "share/doc".
+
+**CMAKE_INSTALL_MANDIR**:PATH
+  The path to install manpage files, relative to the *CMAKE_INSTALL_PREFIX*.
+  Defaults to "share/man".
+
 .. _LLVM-related variables:
 
 LLVM-related variables
@@ -598,12 +614,12 @@
 **LLVM_INSTALL_OCAMLDOC_HTML_DIR**:STRING

[Lldb-commits] [PATCH] D100810: [llvm] Use `GNUInstallDirs` to support custom installation dirs

2022-01-10 Thread John Ericson via Phabricator via lldb-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rGfeeff8a37c35: [llvm] Use `GNUInstallDirs` to support custom 
installation dirs (authored by Ericson2314).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100810/new/

https://reviews.llvm.org/D100810

Files:
  llvm/CMakeLists.txt
  llvm/cmake/modules/AddLLVM.cmake
  llvm/cmake/modules/AddSphinxTarget.cmake
  llvm/cmake/modules/CMakeLists.txt
  llvm/cmake/modules/LLVMInstallSymlink.cmake
  llvm/docs/CMake.rst
  llvm/examples/Bye/CMakeLists.txt
  llvm/tools/llvm-config/BuildVariables.inc.in
  llvm/tools/llvm-config/llvm-config.cpp
  llvm/tools/lto/CMakeLists.txt
  llvm/tools/opt-viewer/CMakeLists.txt
  llvm/tools/remarks-shlib/CMakeLists.txt

Index: llvm/tools/remarks-shlib/CMakeLists.txt
===
--- llvm/tools/remarks-shlib/CMakeLists.txt
+++ llvm/tools/remarks-shlib/CMakeLists.txt
@@ -19,7 +19,7 @@
   endif()
   
   install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/Remarks.h
-DESTINATION include/llvm-c
+DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/llvm-c"
 COMPONENT Remarks)
 
   if (APPLE)
Index: llvm/tools/opt-viewer/CMakeLists.txt
===
--- llvm/tools/opt-viewer/CMakeLists.txt
+++ llvm/tools/opt-viewer/CMakeLists.txt
@@ -8,7 +8,7 @@
 
 foreach (file ${files})
   install(PROGRAMS ${file}
-DESTINATION share/opt-viewer
+DESTINATION "${CMAKE_INSTALL_DATADIR}/opt-viewer"
 COMPONENT opt-viewer)
 endforeach (file)
 
Index: llvm/tools/lto/CMakeLists.txt
===
--- llvm/tools/lto/CMakeLists.txt
+++ llvm/tools/lto/CMakeLists.txt
@@ -33,7 +33,7 @@
 ${SOURCES} DEPENDS intrinsics_gen)
 
 install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/lto.h
-  DESTINATION include/llvm-c
+  DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/llvm-c"
   COMPONENT LTO)
 
 if (APPLE)
Index: llvm/tools/llvm-config/llvm-config.cpp
===
--- llvm/tools/llvm-config/llvm-config.cpp
+++ llvm/tools/llvm-config/llvm-config.cpp
@@ -357,10 +357,16 @@
 ("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
   } else {
 ActivePrefix = CurrentExecPrefix;
-ActiveIncludeDir = ActivePrefix + "/include";
-SmallString<256> path(LLVM_TOOLS_INSTALL_DIR);
-sys::fs::make_absolute(ActivePrefix, path);
-ActiveBinDir = std::string(path.str());
+{
+  SmallString<256> Path(LLVM_INSTALL_INCLUDEDIR);
+  sys::fs::make_absolute(ActivePrefix, Path);
+  ActiveIncludeDir = std::string(Path.str());
+}
+{
+  SmallString<256> Path(LLVM_TOOLS_INSTALL_DIR);
+  sys::fs::make_absolute(ActivePrefix, Path);
+  ActiveBinDir = std::string(Path.str());
+}
 ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
 ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
 ActiveIncludeOption = "-I" + ActiveIncludeDir;
Index: llvm/tools/llvm-config/BuildVariables.inc.in
===
--- llvm/tools/llvm-config/BuildVariables.inc.in
+++ llvm/tools/llvm-config/BuildVariables.inc.in
@@ -23,6 +23,7 @@
 #define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
 #define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
 #define LLVM_LIBDIR_SUFFIX "@LLVM_LIBDIR_SUFFIX@"
+#define LLVM_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@"
 #define LLVM_TARGETS_BUILT "@LLVM_TARGETS_BUILT@"
 #define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"
 #define LLVM_BUILD_SYSTEM "@LLVM_BUILD_SYSTEM@"
Index: llvm/examples/Bye/CMakeLists.txt
===
--- llvm/examples/Bye/CMakeLists.txt
+++ llvm/examples/Bye/CMakeLists.txt
@@ -14,6 +14,6 @@
 BUILDTREE_ONLY
)
 
-  install(TARGETS ${name} RUNTIME DESTINATION examples)
+  install(TARGETS ${name} RUNTIME DESTINATION "${LLVM_EXAMPLES_INSTALL_DIR}")
   set_target_properties(${name} PROPERTIES FOLDER "Examples")
 endif()
Index: llvm/docs/CMake.rst
===
--- llvm/docs/CMake.rst
+++ llvm/docs/CMake.rst
@@ -252,6 +252,22 @@
   Sets the C++ standard to conform to when building LLVM.  Possible values are
   14, 17, 20.  LLVM Requires C++ 14 or higher.  This defaults to 14.
 
+**CMAKE_INSTALL_BINDIR**:PATH
+  The path to install executables, relative to the *CMAKE_INSTALL_PREFIX*.
+  Defaults to "bin".
+
+**CMAKE_INSTALL_INCLUDEDIR**:PATH
+  The path to install header files, relative to the *CMAKE_INSTALL_PREFIX*.
+  Defaults to "include".
+
+**CMAKE_INSTALL_DOCDIR**:PATH
+  The path to install documentation, relative to the *CMAKE_INSTALL_PREFIX*.
+  Defaults to "share/doc".
+
+**CMAKE_INSTALL_MANDIR**:PATH
+  The path to install manpage files, relative to the *CMAKE_INSTALL_PREFIX*.
+  Defaults to "share/man".
+
 .. _LLVM-related variables:
 
 LLVM-related variables

[Lldb-commits] [PATCH] D100810: [llvm] Use `GNUInstallDirs` to support custom installation dirs

2022-01-10 Thread John Ericson via Phabricator via lldb-commits
Ericson2314 added inline comments.



Comment at: llvm/cmake/modules/AddSphinxTarget.cmake:1
 include(GNUInstallDirs)
 

N.B. this already had it from an earlier revision of mine, so didn't need to 
add it.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100810/new/

https://reviews.llvm.org/D100810

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D100810: [llvm] Use `GNUInstallDirs` to support custom installation dirs

2022-01-10 Thread John Ericson via Phabricator via lldb-commits
Ericson2314 added a comment.

OK, at long last, I this is the attempt that's gonna make it!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100810/new/

https://reviews.llvm.org/D100810

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D99484: Use `GNUInstallDirs` to support custom installation dirs.

2022-01-10 Thread John Ericson via Phabricator via lldb-commits
Ericson2314 updated this revision to Diff 398318.
Ericson2314 added a comment.

Rebase on top of fixed polly


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99484/new/

https://reviews.llvm.org/D99484

Files:
  clang-tools-extra/clang-doc/tool/CMakeLists.txt
  clang-tools-extra/clang-include-fixer/find-all-symbols/tool/CMakeLists.txt
  clang-tools-extra/clang-include-fixer/tool/CMakeLists.txt
  clang-tools-extra/clang-tidy/CMakeLists.txt
  clang-tools-extra/clang-tidy/tool/CMakeLists.txt
  clang-tools-extra/modularize/CMakeLists.txt
  clang/CMakeLists.txt
  clang/cmake/modules/AddClang.cmake
  clang/tools/c-index-test/CMakeLists.txt
  clang/tools/clang-format/CMakeLists.txt
  clang/tools/clang-nvlink-wrapper/CMakeLists.txt
  clang/tools/clang-rename/CMakeLists.txt
  clang/tools/libclang/CMakeLists.txt
  clang/tools/scan-build-py/CMakeLists.txt
  clang/tools/scan-build/CMakeLists.txt
  clang/tools/scan-view/CMakeLists.txt
  clang/utils/hmaptool/CMakeLists.txt
  compiler-rt/cmake/base-config-ix.cmake
  libc/CMakeLists.txt
  libcxx/CMakeLists.txt
  libcxx/cmake/Modules/HandleLibCXXABI.cmake
  libcxxabi/CMakeLists.txt
  libunwind/CMakeLists.txt
  llvm/cmake/modules/LLVMInstallSymlink.cmake
  mlir/CMakeLists.txt
  mlir/cmake/modules/AddMLIR.cmake
  openmp/CMakeLists.txt
  openmp/libompd/src/CMakeLists.txt
  openmp/runtime/src/CMakeLists.txt
  openmp/tools/multiplex/CMakeLists.txt
  polly/CMakeLists.txt
  polly/cmake/CMakeLists.txt
  polly/lib/External/CMakeLists.txt
  pstl/CMakeLists.txt

Index: pstl/CMakeLists.txt
===
--- pstl/CMakeLists.txt
+++ pstl/CMakeLists.txt
@@ -7,6 +7,8 @@
 #===--===##
 cmake_minimum_required(VERSION 3.13.4)
 
+include(GNUInstallDirs)
+
 set(PARALLELSTL_VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/include/pstl/internal/pstl_config.h")
 file(STRINGS "${PARALLELSTL_VERSION_FILE}" PARALLELSTL_VERSION_SOURCE REGEX "#define _PSTL_VERSION .*$")
 string(REGEX REPLACE "#define _PSTL_VERSION (.*)$" "\\1" PARALLELSTL_VERSION_SOURCE "${PARALLELSTL_VERSION_SOURCE}")
@@ -90,10 +92,10 @@
   "${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfigVersion.cmake"
 DESTINATION lib/cmake/ParallelSTL)
 install(DIRECTORY include/
-DESTINATION include
+DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
 PATTERN "*.in" EXCLUDE)
 install(FILES "${PSTL_CONFIG_SITE_PATH}"
-DESTINATION include)
+DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
 
 add_custom_target(install-pstl
   COMMAND "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake_install.cmake" -DCOMPONENT=ParallelSTL)
Index: polly/lib/External/CMakeLists.txt
===
--- polly/lib/External/CMakeLists.txt
+++ polly/lib/External/CMakeLists.txt
@@ -290,7 +290,7 @@
 install(DIRECTORY
   ${ISL_SOURCE_DIR}/include/
   ${ISL_BINARY_DIR}/include/
-  DESTINATION include/polly
+  DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/polly"
   FILES_MATCHING
   PATTERN "*.h"
   PATTERN "CMakeFiles" EXCLUDE
Index: polly/cmake/CMakeLists.txt
===
--- polly/cmake/CMakeLists.txt
+++ polly/cmake/CMakeLists.txt
@@ -1,5 +1,6 @@
 # Keep this in sync with llvm/cmake/CMakeLists.txt!
 
+include(ExtendPath)
 include(FindPrefixFromConfig)
 
 set(LLVM_INSTALL_PACKAGE_DIR "lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm")
@@ -83,17 +84,18 @@
 # Generate PollyConfig.cmake for the install tree.
 unset(POLLY_EXPORTS)
 find_prefix_from_config(POLLY_CONFIG_CODE POLLY_INSTALL_PREFIX "${POLLY_INSTALL_PACKAGE_DIR}")
-set(POLLY_CONFIG_LLVM_CMAKE_DIR "\${POLLY_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
-set(POLLY_CONFIG_CMAKE_DIR "\${POLLY_INSTALL_PREFIX}/${POLLY_INSTALL_PACKAGE_DIR}")
-set(POLLY_CONFIG_LIBRARY_DIRS "\${POLLY_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}")
+extend_path(POLLY_CONFIG_LLVM_CMAKE_DIR "\${POLLY_INSTALL_PREFIX}" "${LLVM_INSTALL_PACKAGE_DIR}")
+extend_path(POLLY_CONFIG_CMAKE_DIR "\${POLLY_INSTALL_PREFIX}" "${POLLY_INSTALL_PACKAGE_DIR}")
+extend_path(POLLY_CONFIG_LIBRARY_DIRS "\${POLLY_INSTALL_PREFIX}" "lib${LLVM_LIBDIR_SUFFIX}")
+extend_path(base_includedir "\${POLLY_INSTALL_PREFIX}" "${CMAKE_INSTALL_INCLUDEDIR}")
 if (POLLY_BUNDLED_ISL)
   set(POLLY_CONFIG_INCLUDE_DIRS
-"\${POLLY_INSTALL_PREFIX}/include"
-"\${POLLY_INSTALL_PREFIX}/include/polly"
+"${base_includedir}"
+"${base_includedir}/polly"
 )
 else()
   set(POLLY_CONFIG_INCLUDE_DIRS
-"\${POLLY_INSTALL_PREFIX}/include"
+"${base_includedir}"
 ${ISL_INCLUDE_DIRS}
 )
 endif()
@@ -110,12 +112,12 @@
 foreach(tgt IN LISTS POLLY_CONFIG_EXPORTED_TARGETS)
   get_target_property(tgt_type ${tgt} TYPE)
   if (tgt_type STREQUAL "EXECUTABLE")
-set(tgt_prefix "bin/")
+set(tgt_prefix "${CMAKE_INSTALL_BINDIR}/")
   else()
-set(tg

[Lldb-commits] [PATCH] D99484: Use `GNUInstallDirs` to support custom installation dirs.

2022-01-10 Thread John Ericson via Phabricator via lldb-commits
Ericson2314 updated this revision to Diff 398366.
Ericson2314 added a comment.

Make sure possibly exposed modules have their own `include(GNUInstallDirs)`s


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99484/new/

https://reviews.llvm.org/D99484

Files:
  clang-tools-extra/clang-doc/tool/CMakeLists.txt
  clang-tools-extra/clang-include-fixer/find-all-symbols/tool/CMakeLists.txt
  clang-tools-extra/clang-include-fixer/tool/CMakeLists.txt
  clang-tools-extra/clang-tidy/CMakeLists.txt
  clang-tools-extra/clang-tidy/tool/CMakeLists.txt
  clang-tools-extra/modularize/CMakeLists.txt
  clang/CMakeLists.txt
  clang/cmake/modules/AddClang.cmake
  clang/tools/c-index-test/CMakeLists.txt
  clang/tools/clang-format/CMakeLists.txt
  clang/tools/clang-nvlink-wrapper/CMakeLists.txt
  clang/tools/clang-rename/CMakeLists.txt
  clang/tools/libclang/CMakeLists.txt
  clang/tools/scan-build-py/CMakeLists.txt
  clang/tools/scan-build/CMakeLists.txt
  clang/tools/scan-view/CMakeLists.txt
  clang/utils/hmaptool/CMakeLists.txt
  compiler-rt/cmake/base-config-ix.cmake
  libc/CMakeLists.txt
  libcxx/CMakeLists.txt
  libcxx/cmake/Modules/HandleLibCXXABI.cmake
  libcxxabi/CMakeLists.txt
  libunwind/CMakeLists.txt
  llvm/cmake/modules/LLVMInstallSymlink.cmake
  mlir/CMakeLists.txt
  mlir/cmake/modules/AddMLIR.cmake
  openmp/CMakeLists.txt
  openmp/libompd/src/CMakeLists.txt
  openmp/runtime/src/CMakeLists.txt
  openmp/tools/multiplex/CMakeLists.txt
  polly/CMakeLists.txt
  polly/cmake/CMakeLists.txt
  polly/lib/External/CMakeLists.txt
  pstl/CMakeLists.txt

Index: pstl/CMakeLists.txt
===
--- pstl/CMakeLists.txt
+++ pstl/CMakeLists.txt
@@ -7,6 +7,8 @@
 #===--===##
 cmake_minimum_required(VERSION 3.13.4)
 
+include(GNUInstallDirs)
+
 set(PARALLELSTL_VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/include/pstl/internal/pstl_config.h")
 file(STRINGS "${PARALLELSTL_VERSION_FILE}" PARALLELSTL_VERSION_SOURCE REGEX "#define _PSTL_VERSION .*$")
 string(REGEX REPLACE "#define _PSTL_VERSION (.*)$" "\\1" PARALLELSTL_VERSION_SOURCE "${PARALLELSTL_VERSION_SOURCE}")
@@ -90,10 +92,10 @@
   "${CMAKE_CURRENT_BINARY_DIR}/ParallelSTLConfigVersion.cmake"
 DESTINATION lib/cmake/ParallelSTL)
 install(DIRECTORY include/
-DESTINATION include
+DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
 PATTERN "*.in" EXCLUDE)
 install(FILES "${PSTL_CONFIG_SITE_PATH}"
-DESTINATION include)
+DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
 
 add_custom_target(install-pstl
   COMMAND "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake_install.cmake" -DCOMPONENT=ParallelSTL)
Index: polly/lib/External/CMakeLists.txt
===
--- polly/lib/External/CMakeLists.txt
+++ polly/lib/External/CMakeLists.txt
@@ -290,7 +290,7 @@
 install(DIRECTORY
   ${ISL_SOURCE_DIR}/include/
   ${ISL_BINARY_DIR}/include/
-  DESTINATION include/polly
+  DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/polly"
   FILES_MATCHING
   PATTERN "*.h"
   PATTERN "CMakeFiles" EXCLUDE
Index: polly/cmake/CMakeLists.txt
===
--- polly/cmake/CMakeLists.txt
+++ polly/cmake/CMakeLists.txt
@@ -1,5 +1,6 @@
 # Keep this in sync with llvm/cmake/CMakeLists.txt!
 
+include(ExtendPath)
 include(FindPrefixFromConfig)
 
 set(LLVM_INSTALL_PACKAGE_DIR "lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm")
@@ -83,17 +84,18 @@
 # Generate PollyConfig.cmake for the install tree.
 unset(POLLY_EXPORTS)
 find_prefix_from_config(POLLY_CONFIG_CODE POLLY_INSTALL_PREFIX "${POLLY_INSTALL_PACKAGE_DIR}")
-set(POLLY_CONFIG_LLVM_CMAKE_DIR "\${POLLY_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
-set(POLLY_CONFIG_CMAKE_DIR "\${POLLY_INSTALL_PREFIX}/${POLLY_INSTALL_PACKAGE_DIR}")
-set(POLLY_CONFIG_LIBRARY_DIRS "\${POLLY_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}")
+extend_path(POLLY_CONFIG_LLVM_CMAKE_DIR "\${POLLY_INSTALL_PREFIX}" "${LLVM_INSTALL_PACKAGE_DIR}")
+extend_path(POLLY_CONFIG_CMAKE_DIR "\${POLLY_INSTALL_PREFIX}" "${POLLY_INSTALL_PACKAGE_DIR}")
+extend_path(POLLY_CONFIG_LIBRARY_DIRS "\${POLLY_INSTALL_PREFIX}" "lib${LLVM_LIBDIR_SUFFIX}")
+extend_path(base_includedir "\${POLLY_INSTALL_PREFIX}" "${CMAKE_INSTALL_INCLUDEDIR}")
 if (POLLY_BUNDLED_ISL)
   set(POLLY_CONFIG_INCLUDE_DIRS
-"\${POLLY_INSTALL_PREFIX}/include"
-"\${POLLY_INSTALL_PREFIX}/include/polly"
+"${base_includedir}"
+"${base_includedir}/polly"
 )
 else()
   set(POLLY_CONFIG_INCLUDE_DIRS
-"\${POLLY_INSTALL_PREFIX}/include"
+"${base_includedir}"
 ${ISL_INCLUDE_DIRS}
 )
 endif()
@@ -110,12 +112,12 @@
 foreach(tgt IN LISTS POLLY_CONFIG_EXPORTED_TARGETS)
   get_target_property(tgt_type ${tgt} TYPE)
   if (tgt_type STREQUAL "EXECUTABLE")
-set(tgt_prefix "bin/")
+set(tgt_prefix "

[Lldb-commits] [PATCH] D116896: [lldb] [gdb-remote] Support client fallback for servers without reg defs (WIP)

2022-01-10 Thread Michał Górny via Phabricator via lldb-commits
mgorny updated this revision to Diff 398654.
mgorny added a comment.

Add aarch64.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116896/new/

https://reviews.llvm.org/D116896

Files:
  lldb/source/Plugins/Process/gdb-remote/CMakeLists.txt
  lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterFallback.cpp
  lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterFallback.h
  lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
  lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py

Index: lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
===
--- /dev/null
+++ lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
@@ -0,0 +1,264 @@
+from __future__ import print_function
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+from lldbsuite.test.gdbclientutils import *
+from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase
+
+import binascii
+
+
+class TestGDBServerTargetXML(GDBRemoteTestBase):
+
+mydir = TestBase.compute_mydir(__file__)
+
+@staticmethod
+def filecheck_to_blob(fc):
+for l in fc.strip().splitlines():
+val = l.split('0x')[1]
+yield binascii.b2a_hex(bytes(reversed(binascii.a2b_hex(val.decode()
+
+@skipIfRemote
+@skipIfLLVMTargetMissing("X86")
+def test_x86_64_regs(self):
+"""Test grabbing various x86_64 registers from gdbserver."""
+
+GPRS = '''
+CHECK-AMD64-DAG: rax = 0x0807060504030201
+CHECK-AMD64-DAG: rbx = 0x1817161514131211
+CHECK-AMD64-DAG: rcx = 0x2827262524232221
+CHECK-AMD64-DAG: rdx = 0x3837363534333231
+CHECK-AMD64-DAG: rsi = 0x4847464544434241
+CHECK-AMD64-DAG: rdi = 0x5857565554535251
+CHECK-AMD64-DAG: rbp = 0x6867666564636261
+CHECK-AMD64-DAG: rsp = 0x7877767574737271
+CHECK-AMD64-DAG: r8 = 0x8887868584838281
+CHECK-AMD64-DAG: r9 = 0x9897969594939291
+CHECK-AMD64-DAG: r10 = 0xa8a7a6a5a4a3a2a1
+CHECK-AMD64-DAG: r11 = 0xb8b7b6b5b4b3b2b1
+CHECK-AMD64-DAG: r12 = 0xc8c7c6c5c4c3c2c1
+CHECK-AMD64-DAG: r13 = 0xd8d7d6d5d4d3d2d1
+CHECK-AMD64-DAG: r14 = 0xe8e7e6e5e4e3e2e1
+CHECK-AMD64-DAG: r15 = 0xf8f7f6f5f4f3f2f1
+CHECK-AMD64-DAG: rip = 0x100f0e0d0c0b0a09
+CHECK-AMD64-DAG: eflags = 0x1c1b1a19
+CHECK-AMD64-DAG: cs = 0x2c2b2a29
+CHECK-AMD64-DAG: ss = 0x3c3b3a39
+'''
+
+SUPPL = '''
+CHECK-AMD64-DAG: eax = 0x04030201
+CHECK-AMD64-DAG: ebx = 0x14131211
+CHECK-AMD64-DAG: ecx = 0x24232221
+CHECK-AMD64-DAG: edx = 0x34333231
+CHECK-AMD64-DAG: esi = 0x44434241
+CHECK-AMD64-DAG: edi = 0x54535251
+CHECK-AMD64-DAG: ebp = 0x64636261
+CHECK-AMD64-DAG: esp = 0x74737271
+CHECK-AMD64-DAG: r8d = 0x84838281
+CHECK-AMD64-DAG: r9d = 0x94939291
+CHECK-AMD64-DAG: r10d = 0xa4a3a2a1
+CHECK-AMD64-DAG: r11d = 0xb4b3b2b1
+CHECK-AMD64-DAG: r12d = 0xc4c3c2c1
+CHECK-AMD64-DAG: r13d = 0xd4d3d2d1
+CHECK-AMD64-DAG: r14d = 0xe4e3e2e1
+CHECK-AMD64-DAG: r15d = 0xf4f3f2f1
+
+CHECK-AMD64-DAG: ax = 0x0201
+CHECK-AMD64-DAG: bx = 0x1211
+CHECK-AMD64-DAG: cx = 0x2221
+CHECK-AMD64-DAG: dx = 0x3231
+CHECK-AMD64-DAG: si = 0x4241
+CHECK-AMD64-DAG: di = 0x5251
+CHECK-AMD64-DAG: bp = 0x6261
+CHECK-AMD64-DAG: sp = 0x7271
+CHECK-AMD64-DAG: r8w = 0x8281
+CHECK-AMD64-DAG: r9w = 0x9291
+CHECK-AMD64-DAG: r10w = 0xa2a1
+CHECK-AMD64-DAG: r11w = 0xb2b1
+CHECK-AMD64-DAG: r12w = 0xc2c1
+CHECK-AMD64-DAG: r13w = 0xd2d1
+CHECK-AMD64-DAG: r14w = 0xe2e1
+CHECK-AMD64-DAG: r15w = 0xf2f1
+
+CHECK-AMD64-DAG: ah = 0x02
+CHECK-AMD64-DAG: bh = 0x12
+CHECK-AMD64-DAG: ch = 0x22
+CHECK-AMD64-DAG: dh = 0x32
+
+CHECK-AMD64-DAG: al = 0x01
+CHECK-AMD64-DAG: bl = 0x11
+CHECK-AMD64-DAG: cl = 0x21
+CHECK-AMD64-DAG: dl = 0x31
+CHECK-AMD64-DAG: sil = 0x41
+CHECK-AMD64-DAG: dil = 0x51
+CHECK-AMD64-DAG: bpl = 0x61
+CHECK-AMD64-DAG: spl = 0x71
+CHECK-AMD64-DAG: r8l = 0x81
+CHECK-AMD64-DAG: r9l = 0x91
+CHECK-AMD64-DAG: r10l = 0xa1
+CHECK-AMD64-DAG: r11l = 0xb1
+CHECK-AMD64-DAG: r12l = 0xc1
+CHECK-AMD64-DAG: r13l = 0xd1
+CHECK-AMD64-DAG: r14l = 0xe1
+CHECK-AMD64-DAG: r15l = 0xf1
+'''
+
+class MyResponder(MockGDBServerResponder):
+reg_data = ''.join(self.filecheck_to_blob(GPRS))
+
+def readRegister(self, regnum):
+return ""
+
+def readRegisters(self):
+return self.reg_data
+
+def haltReason(self):
+return "T02thread:1ff0d;threads:1ff0d;thread-pcs:00010001bc00;07:0102030405060708;10:1112131415161718;"
+
+self.server.responder = MyResponder()
+
+target = self.createTarget("basic_eh_frame.yaml")
+process = self.connect(target)
+lldbutil.expect_state_changes(self, self.dbg.GetListener(), process,
+  [lldb.eStateStopped])
+
+# test all registers
+self.filecheck("register read --all", __file__,
+   filecheck_options='--check-prefix=CHECK-AMD64')
+
+# test generic aliases
+self.match("r

[Lldb-commits] [PATCH] D116419: [lldb] Display MachO seg, sec of memory region

2022-01-10 Thread Dave Lee via Phabricator via lldb-commits
kastiglione added inline comments.



Comment at: lldb/source/Commands/CommandObjectMemory.cpp:1695
+  section_sp = section_sp->GetParent();
+section_name = section_sp->GetName();
+  }

aprantl wrote:
> Why did `section_sp->GetName();` return the Segment name in the original 
> code? Is that a bug?
The original code is traversing the parent chain of sections, which for mach-o 
ends up on the segment. Now that I have learned the address range printed is 
for the segment, then it makes sense why the segment name alone is printed.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116419/new/

https://reviews.llvm.org/D116419

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116419: [lldb] Display MachO seg, sec of memory region

2022-01-10 Thread Dave Lee via Phabricator via lldb-commits
kastiglione added inline comments.



Comment at: lldb/test/API/functionalities/memory-region/TestMemoryRegion.py:76
+
+self.runCmd("run", RUN_SUCCEEDED)
+

aprantl wrote:
> Doesn't `lldbutil.run_break_set_by_symbol()` do the "file" and "run" already 
> and this run command runs it a second time?
I will learn more to find out.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116419/new/

https://reviews.llvm.org/D116419

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116788: [lldb] Set result error state in 'frame variable'

2022-01-10 Thread Dave Lee via Phabricator via lldb-commits
kastiglione added a comment.

In D116788#3231612 , @clayborg wrote:

> I would vote that if any argument or option is specified, and results in 
> something not being found, that an error be returned.

Is this in response to my question about regexes? It seems to be. Specifically, 
you're of the opinion that any failing regex results in an error, even when 
other regexes do match? Your point about it not affecting the command line is a 
good point, thanks.

All your other points sound good to me too.

> Any tests that are failing now when they didn't before can be modified.

Yes there were a couple, D116901  and D116863 
.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116788/new/

https://reviews.llvm.org/D116788

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [lldb] 9b5cf72 - [lldb] Disable several lldb tests that are flaky on Windows

2022-01-10 Thread Stella Stamenova via lldb-commits

Author: Stella Stamenova
Date: 2022-01-10T10:21:12-08:00
New Revision: 9b5cf7267beb1e9c6f16402795890f0d02eb5145

URL: 
https://github.com/llvm/llvm-project/commit/9b5cf7267beb1e9c6f16402795890f0d02eb5145
DIFF: 
https://github.com/llvm/llvm-project/commit/9b5cf7267beb1e9c6f16402795890f0d02eb5145.diff

LOG: [lldb] Disable several lldb tests that are flaky on Windows

This tests have recently become flaky (flakier?) causing occasional failures in 
the windows lldb buildbot

Added: 


Modified: 
lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py

lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py

Removed: 




diff  --git 
a/lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py 
b/lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py
index 55bf929b25fcf..16fb71fd11302 100644
--- 
a/lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py
+++ 
b/lldb/test/API/commands/watchpoints/hello_watchlocation/TestWatchLocation.py
@@ -37,6 +37,7 @@ def setUp(self):
 # SystemZ and PowerPC also currently supports only one H/W watchpoint
 @expectedFailureAll(archs=['powerpc64le', 's390x'])
 @skipIfDarwin
+@skipIfWindows # This test is flaky on Windows
 def test_hello_watchlocation(self):
 """Test watching a location with '-s size' option."""
 self.build(dictionary=self.d)

diff  --git 
a/lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
 
b/lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
index 53736a075f80f..92ea56021cc1b 100644
--- 
a/lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
+++ 
b/lldb/test/API/commands/watchpoints/watchpoint_set_command/TestWatchLocationWithWatchSet.py
@@ -34,6 +34,7 @@ def setUp(self):
 'aarch64',
 'arm'],
 bugnumber="llvm.org/pr26031")
+@skipIfWindows # This test is flaky on Windows
 def test_watchlocation_using_watchpoint_set(self):
 """Test watching a location with 'watchpoint set expression -w write 
-s size' option."""
 self.build()

diff  --git 
a/lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py 
b/lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
index 7df728509c11c..9f1c6776d4a68 100644
--- a/lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
+++ b/lldb/test/API/python_api/watchpoint/watchlocation/TestSetWatchlocation.py
@@ -28,6 +28,7 @@ def setUp(self):
 # This is for verifying that watch location works.
 self.violating_func = "do_bad_thing_with_location"
 
+@skipIfWindows # This test is flaky on Windows
 def test_watch_location(self):
 """Exercise SBValue.WatchPointee() API to set a watchpoint."""
 self.build()



___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116707: [lldb] fix memory leak in "GetGDBServerRegisterInfoXMLAndProcess"

2022-01-10 Thread Lirong Yuan via Phabricator via lldb-commits
yuanzi added a comment.

Thanks for the reviews!

Yeah I do not have commit access. It would be great if someone could help with 
the commit!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116707/new/

https://reviews.llvm.org/D116707

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116896: [lldb] [gdb-remote] Support client fallback for servers without reg defs

2022-01-10 Thread Michał Górny via Phabricator via lldb-commits
mgorny updated this revision to Diff 398701.
mgorny retitled this revision from "[lldb] [gdb-remote] Support client fallback 
for servers without reg defs (WIP)" to "[lldb] [gdb-remote] Support client 
fallback for servers without reg defs".
mgorny edited the summary of this revision.
mgorny added a comment.

Added i386.

I suppose this concludes all my ideas so far.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116896/new/

https://reviews.llvm.org/D116896

Files:
  lldb/source/Plugins/Process/gdb-remote/CMakeLists.txt
  lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterFallback.cpp
  lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterFallback.h
  lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
  lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py

Index: lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
===
--- /dev/null
+++ lldb/test/API/functionalities/gdb_remote_client/TestGDBServerNoTargetXML.py
@@ -0,0 +1,346 @@
+from __future__ import print_function
+import lldb
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.decorators import *
+from lldbsuite.test.gdbclientutils import *
+from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase
+
+import binascii
+
+
+class TestGDBServerTargetXML(GDBRemoteTestBase):
+
+mydir = TestBase.compute_mydir(__file__)
+
+@staticmethod
+def filecheck_to_blob(fc):
+for l in fc.strip().splitlines():
+val = l.split('0x')[1]
+yield binascii.b2a_hex(bytes(reversed(binascii.a2b_hex(val.decode()
+
+@skipIfRemote
+@skipIfLLVMTargetMissing("X86")
+def test_x86_64_regs(self):
+"""Test grabbing various x86_64 registers from gdbserver."""
+
+GPRS = '''
+CHECK-AMD64-DAG: rax = 0x0807060504030201
+CHECK-AMD64-DAG: rbx = 0x1817161514131211
+CHECK-AMD64-DAG: rcx = 0x2827262524232221
+CHECK-AMD64-DAG: rdx = 0x3837363534333231
+CHECK-AMD64-DAG: rsi = 0x4847464544434241
+CHECK-AMD64-DAG: rdi = 0x5857565554535251
+CHECK-AMD64-DAG: rbp = 0x6867666564636261
+CHECK-AMD64-DAG: rsp = 0x7877767574737271
+CHECK-AMD64-DAG: r8 = 0x8887868584838281
+CHECK-AMD64-DAG: r9 = 0x9897969594939291
+CHECK-AMD64-DAG: r10 = 0xa8a7a6a5a4a3a2a1
+CHECK-AMD64-DAG: r11 = 0xb8b7b6b5b4b3b2b1
+CHECK-AMD64-DAG: r12 = 0xc8c7c6c5c4c3c2c1
+CHECK-AMD64-DAG: r13 = 0xd8d7d6d5d4d3d2d1
+CHECK-AMD64-DAG: r14 = 0xe8e7e6e5e4e3e2e1
+CHECK-AMD64-DAG: r15 = 0xf8f7f6f5f4f3f2f1
+CHECK-AMD64-DAG: rip = 0x100f0e0d0c0b0a09
+CHECK-AMD64-DAG: eflags = 0x1c1b1a19
+CHECK-AMD64-DAG: cs = 0x2c2b2a29
+CHECK-AMD64-DAG: ss = 0x3c3b3a39
+'''
+
+SUPPL = '''
+CHECK-AMD64-DAG: eax = 0x04030201
+CHECK-AMD64-DAG: ebx = 0x14131211
+CHECK-AMD64-DAG: ecx = 0x24232221
+CHECK-AMD64-DAG: edx = 0x34333231
+CHECK-AMD64-DAG: esi = 0x44434241
+CHECK-AMD64-DAG: edi = 0x54535251
+CHECK-AMD64-DAG: ebp = 0x64636261
+CHECK-AMD64-DAG: esp = 0x74737271
+CHECK-AMD64-DAG: r8d = 0x84838281
+CHECK-AMD64-DAG: r9d = 0x94939291
+CHECK-AMD64-DAG: r10d = 0xa4a3a2a1
+CHECK-AMD64-DAG: r11d = 0xb4b3b2b1
+CHECK-AMD64-DAG: r12d = 0xc4c3c2c1
+CHECK-AMD64-DAG: r13d = 0xd4d3d2d1
+CHECK-AMD64-DAG: r14d = 0xe4e3e2e1
+CHECK-AMD64-DAG: r15d = 0xf4f3f2f1
+
+CHECK-AMD64-DAG: ax = 0x0201
+CHECK-AMD64-DAG: bx = 0x1211
+CHECK-AMD64-DAG: cx = 0x2221
+CHECK-AMD64-DAG: dx = 0x3231
+CHECK-AMD64-DAG: si = 0x4241
+CHECK-AMD64-DAG: di = 0x5251
+CHECK-AMD64-DAG: bp = 0x6261
+CHECK-AMD64-DAG: sp = 0x7271
+CHECK-AMD64-DAG: r8w = 0x8281
+CHECK-AMD64-DAG: r9w = 0x9291
+CHECK-AMD64-DAG: r10w = 0xa2a1
+CHECK-AMD64-DAG: r11w = 0xb2b1
+CHECK-AMD64-DAG: r12w = 0xc2c1
+CHECK-AMD64-DAG: r13w = 0xd2d1
+CHECK-AMD64-DAG: r14w = 0xe2e1
+CHECK-AMD64-DAG: r15w = 0xf2f1
+
+CHECK-AMD64-DAG: ah = 0x02
+CHECK-AMD64-DAG: bh = 0x12
+CHECK-AMD64-DAG: ch = 0x22
+CHECK-AMD64-DAG: dh = 0x32
+
+CHECK-AMD64-DAG: al = 0x01
+CHECK-AMD64-DAG: bl = 0x11
+CHECK-AMD64-DAG: cl = 0x21
+CHECK-AMD64-DAG: dl = 0x31
+CHECK-AMD64-DAG: sil = 0x41
+CHECK-AMD64-DAG: dil = 0x51
+CHECK-AMD64-DAG: bpl = 0x61
+CHECK-AMD64-DAG: spl = 0x71
+CHECK-AMD64-DAG: r8l = 0x81
+CHECK-AMD64-DAG: r9l = 0x91
+CHECK-AMD64-DAG: r10l = 0xa1
+CHECK-AMD64-DAG: r11l = 0xb1
+CHECK-AMD64-DAG: r12l = 0xc1
+CHECK-AMD64-DAG: r13l = 0xd1
+CHECK-AMD64-DAG: r14l = 0xe1
+CHECK-AMD64-DAG: r15l = 0xf1
+'''
+
+class MyResponder(MockGDBServerResponder):
+reg_data = ''.join(self.filecheck_to_blob(GPRS))
+
+def readRegister(self, regnum):
+return ""
+
+def readRegisters(self):
+return self.reg_data
+
+def haltReason(self):
+return "T02thread:1ff0d;threads:1ff0d;thread-pcs:00010001bc00;07:0102030405060708;10:1112131415161718;"
+
+self.server.responder = MyResponder()
+
+target = self.createTarget("basic_eh_frame.yaml")
+process = self.connect(target)
+lldbutil.expect_state_changes(self, self.dbg.GetListener(), 

[Lldb-commits] [lldb] 4609e30 - [lldb] Remove lldb-instr

2022-01-10 Thread Jonas Devlieghere via lldb-commits

Author: Jonas Devlieghere
Date: 2022-01-10T11:48:16-08:00
New Revision: 4609e30f5001cfcba59d1f2f90ce72ebfda6e61f

URL: 
https://github.com/llvm/llvm-project/commit/4609e30f5001cfcba59d1f2f90ce72ebfda6e61f
DIFF: 
https://github.com/llvm/llvm-project/commit/4609e30f5001cfcba59d1f2f90ce72ebfda6e61f.diff

LOG: [lldb] Remove lldb-instr

Added: 


Modified: 
lldb/test/CMakeLists.txt
lldb/test/Shell/helper/toolchain.py
lldb/tools/CMakeLists.txt

Removed: 
lldb/tools/lldb-instr/CMakeLists.txt
lldb/tools/lldb-instr/Instrument.cpp



diff  --git a/lldb/test/CMakeLists.txt b/lldb/test/CMakeLists.txt
index d03f17335a245..e46ae997d5920 100644
--- a/lldb/test/CMakeLists.txt
+++ b/lldb/test/CMakeLists.txt
@@ -69,10 +69,6 @@ if(TARGET lldb-vscode)
   add_lldb_test_dependency(lldb-vscode)
 endif()
 
-if(TARGET lldb-instr)
-  add_lldb_test_dependency(lldb-instr)
-endif()
-
 if(TARGET liblldb)
   add_lldb_test_dependency(liblldb)
 endif()

diff  --git a/lldb/test/Shell/helper/toolchain.py 
b/lldb/test/Shell/helper/toolchain.py
index 4303b2583e7be..88cb99792c714 100644
--- a/lldb/test/Shell/helper/toolchain.py
+++ b/lldb/test/Shell/helper/toolchain.py
@@ -71,7 +71,6 @@ def use_lldb_substitutions(config):
   extra_args=['platform'],
   unresolved='ignore'),
 'lldb-test',
-'lldb-instr',
 'lldb-vscode',
 ToolSubst('%build',
   command="'" + sys.executable + "'",

diff  --git a/lldb/tools/CMakeLists.txt b/lldb/tools/CMakeLists.txt
index 1585fd4dc4b9e..a5f4ca8ec7eb3 100644
--- a/lldb/tools/CMakeLists.txt
+++ b/lldb/tools/CMakeLists.txt
@@ -7,7 +7,6 @@ add_subdirectory(intel-features)
 # example is `check-lldb`. So, we pass EXCLUDE_FROM_ALL here.
 add_subdirectory(lldb-test EXCLUDE_FROM_ALL)
 
-add_lldb_tool_subdirectory(lldb-instr)
 add_lldb_tool_subdirectory(lldb-vscode)
 
 if (CMAKE_SYSTEM_NAME MATCHES "Darwin")

diff  --git a/lldb/tools/lldb-instr/CMakeLists.txt 
b/lldb/tools/lldb-instr/CMakeLists.txt
deleted file mode 100644
index 8da453b2894fd..0
--- a/lldb/tools/lldb-instr/CMakeLists.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-add_lldb_tool(lldb-instr
-  Instrument.cpp
-
-  CLANG_LIBS
-clangAST
-clangBasic
-clangCodeGen
-clangFrontend
-clangLex
-clangRewrite
-clangSerialization
-clangTooling
-
-  LINK_COMPONENTS
-Support
-  )

diff  --git a/lldb/tools/lldb-instr/Instrument.cpp 
b/lldb/tools/lldb-instr/Instrument.cpp
deleted file mode 100644
index 8fbc3e64833cb..0
--- a/lldb/tools/lldb-instr/Instrument.cpp
+++ /dev/null
@@ -1,361 +0,0 @@
-#include "clang/AST/AST.h"
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/RecursiveASTVisitor.h"
-#include "clang/CodeGen/ObjectFilePCHContainerOperations.h"
-#include "clang/Frontend/ASTConsumers.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/FrontendActions.h"
-#include "clang/Rewrite/Core/Rewriter.h"
-#include "clang/Tooling/CommonOptionsParser.h"
-#include "clang/Tooling/Tooling.h"
-
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/raw_ostream.h"
-
-#include 
-#include 
-
-using namespace clang;
-using namespace clang::driver;
-using namespace clang::tooling;
-
-static llvm::cl::OptionCategory InstrCategory("LLDB Instrumentation 
Generator");
-
-/// Get the macro name for recording method calls.
-///
-/// LLDB_RECORD_METHOD
-/// LLDB_RECORD_METHOD_CONST
-/// LLDB_RECORD_METHOD_NO_ARGS
-/// LLDB_RECORD_METHOD_CONST_NO_ARGS
-/// LLDB_RECORD_STATIC_METHOD
-/// LLDB_RECORD_STATIC_METHOD_NO_ARGS
-static std::string GetRecordMethodMacroName(bool Static, bool Const,
-bool NoArgs) {
-  std::string Macro;
-  llvm::raw_string_ostream OS(Macro);
-
-  OS << "LLDB_RECORD";
-  if (Static)
-OS << "_STATIC";
-  OS << "_METHOD";
-  if (Const)
-OS << "_CONST";
-  if (NoArgs)
-OS << "_NO_ARGS";
-
-  return OS.str();
-}
-
-/// Get the macro name for register methods.
-///
-/// LLDB_REGISTER_CONSTRUCTOR
-/// LLDB_REGISTER_METHOD
-/// LLDB_REGISTER_METHOD_CONST
-/// LLDB_REGISTER_STATIC_METHOD
-static std::string GetRegisterMethodMacroName(bool Static, bool Const) {
-  std::string Macro;
-  llvm::raw_string_ostream OS(Macro);
-
-  OS << "LLDB_REGISTER";
-  if (Static)
-OS << "_STATIC";
-  OS << "_METHOD";
-  if (Const)
-OS << "_CONST";
-
-  return OS.str();
-}
-
-static std::string GetRecordMethodMacro(StringRef Result, StringRef Class,
-StringRef Method, StringRef Signature,
-StringRef Values, bool Static,
-bool Const) {
-  std::string Macro;
-  llvm::raw_string_ostream OS(Macro);
-
-  OS << GetRecordMethodMacroName(Static, Const, Values.empty());
-  OS << "(" << Result << ", " << Class << ", " << Method;
-
-  if (

[Lldb-commits] [lldb] 69c55d6 - [lldb] Remove LLDB_RECORD_CHAR_PTR_* macros

2022-01-10 Thread Jonas Devlieghere via lldb-commits

Author: Jonas Devlieghere
Date: 2022-01-10T11:57:20-08:00
New Revision: 69c55d63620066dfd6714b0b666f7cac5a3407eb

URL: 
https://github.com/llvm/llvm-project/commit/69c55d63620066dfd6714b0b666f7cac5a3407eb
DIFF: 
https://github.com/llvm/llvm-project/commit/69c55d63620066dfd6714b0b666f7cac5a3407eb.diff

LOG: [lldb] Remove LLDB_RECORD_CHAR_PTR_* macros

Added: 


Modified: 
lldb/include/lldb/Utility/ReproducerInstrumentation.h
lldb/source/API/SBDebugger.cpp
lldb/source/API/SBFileSpec.cpp
lldb/source/API/SBProcess.cpp
lldb/source/API/SBStructuredData.cpp
lldb/source/API/SBThread.cpp

Removed: 




diff  --git a/lldb/include/lldb/Utility/ReproducerInstrumentation.h 
b/lldb/include/lldb/Utility/ReproducerInstrumentation.h
index ddeacb1b72286..3bce7b8f3a6f1 100644
--- a/lldb/include/lldb/Utility/ReproducerInstrumentation.h
+++ b/lldb/include/lldb/Utility/ReproducerInstrumentation.h
@@ -106,25 +106,6 @@ template  inline std::string 
stringify_args(const Ts &... ts) {
 #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__));
-
-#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__)
-
 /// 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.

diff  --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp
index 16614556d4b54..be2d31f8f5276 100644
--- a/lldb/source/API/SBDebugger.cpp
+++ b/lldb/source/API/SBDebugger.cpp
@@ -630,9 +630,8 @@ SBSourceManager SBDebugger::GetSourceManager() {
 }
 
 bool SBDebugger::GetDefaultArchitecture(char *arch_name, size_t arch_name_len) 
{
-  LLDB_RECORD_CHAR_PTR_STATIC_METHOD(bool, SBDebugger, GetDefaultArchitecture,
- (char *, size_t), arch_name, "",
- arch_name_len);
+  LLDB_RECORD_STATIC_METHOD(bool, SBDebugger, GetDefaultArchitecture,
+(char *, size_t), arch_name, "", arch_name_len);
 
   if (arch_name && arch_name_len) {
 ArchSpec default_arch = Target::GetDefaultArchitecture();

diff  --git a/lldb/source/API/SBFileSpec.cpp b/lldb/source/API/SBFileSpec.cpp
index 4274542d31fe1..b1b676af2d5c0 100644
--- a/lldb/source/API/SBFileSpec.cpp
+++ b/lldb/source/API/SBFileSpec.cpp
@@ -143,8 +143,8 @@ void SBFileSpec::SetDirectory(const char *directory) {
 }
 
 uint32_t SBFileSpec::GetPath(char *dst_path, size_t dst_len) const {
-  LLDB_RECORD_CHAR_PTR_METHOD_CONST(uint32_t, SBFileSpec, GetPath,
-(char *, size_t), dst_path, "", dst_len);
+  LLDB_RECORD_METHOD_CONST(uint32_t, SBFileSpec, GetPath, (char *, size_t),
+   dst_path, "", dst_len);
 
   uint32_t result = m_opaque_up->GetPath(dst_path, dst_len);
 

diff  --git a/lldb/source/API/SBProcess.cpp b/lldb/source/API/SBProcess.cpp
index fcc9e66b57a8a..eec308669e555 100644
--- a/lldb/source/API/SBProcess.cpp
+++ b/lldb/source/API/SBProcess.cpp
@@ -268,8 +268,8 @@ size_t SBProcess::PutSTDIN(const char *src, size_t src_len) 
{
 }
 
 size_t SBProcess::GetSTDOUT(char *dst, size_t dst_len) const {
-  LLDB_RECORD_CHAR_PTR_METHOD_CONST(size_t, SBProcess, GetSTDOUT,
-(char *, size_t), dst, "", dst_len);
+  LLDB_RECORD_METHOD_CONST(size_t, SBProcess, GetSTDOUT, (char *, size_t), dst,
+   "", dst_len);
 
   size_t bytes_read = 0;
   ProcessSP process_sp(GetSP());
@@ -282,8 +282,8 @@ size_t SBProcess::GetSTDOUT(char *dst, size_t dst_len) 
const {
 }
 
 size_t SBProcess::GetSTDERR(char *dst, size_t dst_len) const {
-  LLDB_RECORD_CHAR_PTR_METHOD_CONST(size_t, SBProcess, GetSTDERR,
-(char *, size_t), d

[Lldb-commits] [lldb] da4b743 - [lldb] Remove LLDB_RECORD_DUMMY_* macros

2022-01-10 Thread Jonas Devlieghere via lldb-commits

Author: Jonas Devlieghere
Date: 2022-01-10T12:05:54-08:00
New Revision: da4b7437f932570227b9debecc031a40875445fa

URL: 
https://github.com/llvm/llvm-project/commit/da4b7437f932570227b9debecc031a40875445fa
DIFF: 
https://github.com/llvm/llvm-project/commit/da4b7437f932570227b9debecc031a40875445fa.diff

LOG: [lldb] Remove LLDB_RECORD_DUMMY_* macros

Added: 


Modified: 
lldb/source/API/SBBreakpoint.cpp
lldb/source/API/SBBreakpointName.cpp
lldb/source/API/SBCommandInterpreter.cpp
lldb/source/API/SBCommandReturnObject.cpp
lldb/source/API/SBCommunication.cpp
lldb/source/API/SBData.cpp
lldb/source/API/SBDebugger.cpp
lldb/source/API/SBExpressionOptions.cpp
lldb/source/API/SBHostOS.cpp
lldb/source/API/SBProcess.cpp
lldb/source/API/SBTypeSummary.cpp

Removed: 




diff  --git a/lldb/source/API/SBBreakpoint.cpp 
b/lldb/source/API/SBBreakpoint.cpp
index fc0c61c17a6a..709895e8bbc9 100644
--- a/lldb/source/API/SBBreakpoint.cpp
+++ b/lldb/source/API/SBBreakpoint.cpp
@@ -601,8 +601,8 @@ SBStructuredData SBBreakpoint::SerializeToStructuredData() {
 }
 
 void SBBreakpoint::SetCallback(SBBreakpointHitCallback callback, void *baton) {
-  LLDB_RECORD_DUMMY(void, SBBreakpoint, SetCallback,
-(lldb::SBBreakpointHitCallback, void *), callback, baton);
+  LLDB_RECORD_METHOD(void, SBBreakpoint, SetCallback,
+ (lldb::SBBreakpointHitCallback, void *), callback, baton);
 
   BreakpointSP bkpt_sp = GetSP();
 

diff  --git a/lldb/source/API/SBBreakpointName.cpp 
b/lldb/source/API/SBBreakpointName.cpp
index a8b6f33ce997..2937cb9e03d8 100644
--- a/lldb/source/API/SBBreakpointName.cpp
+++ b/lldb/source/API/SBBreakpointName.cpp
@@ -550,8 +550,8 @@ bool SBBreakpointName::GetDescription(SBStream &s) {
 
 void SBBreakpointName::SetCallback(SBBreakpointHitCallback callback,
void *baton) {
-  LLDB_RECORD_DUMMY(void, SBBreakpointName, SetCallback,
-(lldb::SBBreakpointHitCallback, void *), callback, baton);
+  LLDB_RECORD_METHOD(void, SBBreakpointName, SetCallback,
+ (lldb::SBBreakpointHitCallback, void *), callback, baton);
 
   BreakpointName *bp_name = GetBreakpointName();
   if (!bp_name)

diff  --git a/lldb/source/API/SBCommandInterpreter.cpp 
b/lldb/source/API/SBCommandInterpreter.cpp
index 02370607daad..d543246edcb4 100644
--- a/lldb/source/API/SBCommandInterpreter.cpp
+++ b/lldb/source/API/SBCommandInterpreter.cpp
@@ -551,9 +551,9 @@ bool SBCommandInterpreter::EventIsCommandInterpreterEvent(
 bool SBCommandInterpreter::SetCommandOverrideCallback(
 const char *command_name, lldb::CommandOverrideCallback callback,
 void *baton) {
-  LLDB_RECORD_DUMMY(bool, SBCommandInterpreter, SetCommandOverrideCallback,
-(const char *, lldb::CommandOverrideCallback, void *),
-command_name, callback, baton);
+  LLDB_RECORD_METHOD(bool, SBCommandInterpreter, SetCommandOverrideCallback,
+ (const char *, lldb::CommandOverrideCallback, void *),
+ command_name, callback, baton);
 
   if (command_name && command_name[0] && IsValid()) {
 llvm::StringRef command_name_str = command_name;

diff  --git a/lldb/source/API/SBCommandReturnObject.cpp 
b/lldb/source/API/SBCommandReturnObject.cpp
index f88f0007a143..505145d75ce8 100644
--- a/lldb/source/API/SBCommandReturnObject.cpp
+++ b/lldb/source/API/SBCommandReturnObject.cpp
@@ -114,7 +114,7 @@ size_t SBCommandReturnObject::GetErrorSize() {
 }
 
 size_t SBCommandReturnObject::PutOutput(FILE *fh) {
-  LLDB_RECORD_DUMMY(size_t, SBCommandReturnObject, PutOutput, (FILE *), fh);
+  LLDB_RECORD_METHOD(size_t, SBCommandReturnObject, PutOutput, (FILE *), fh);
   if (fh) {
 size_t num_bytes = GetOutputSize();
 if (num_bytes)
@@ -139,7 +139,7 @@ size_t SBCommandReturnObject::PutOutput(SBFile file) {
 }
 
 size_t SBCommandReturnObject::PutError(FILE *fh) {
-  LLDB_RECORD_DUMMY(size_t, SBCommandReturnObject, PutError, (FILE *), fh);
+  LLDB_RECORD_METHOD(size_t, SBCommandReturnObject, PutError, (FILE *), fh);
   if (fh) {
 size_t num_bytes = GetErrorSize();
 if (num_bytes)
@@ -252,31 +252,31 @@ bool SBCommandReturnObject::GetDescription(SBStream 
&description) {
 }
 
 void SBCommandReturnObject::SetImmediateOutputFile(FILE *fh) {
-  LLDB_RECORD_DUMMY(void, SBCommandReturnObject, SetImmediateOutputFile,
-(FILE *), fh);
+  LLDB_RECORD_METHOD(void, SBCommandReturnObject, SetImmediateOutputFile,
+ (FILE *), fh);
 
   SetImmediateOutputFile(fh, false);
 }
 
 void SBCommandReturnObject::SetImmediateErrorFile(FILE *fh) {
-  LLDB_RECORD_DUMMY(void, SBCommandReturnObject, SetImmediateErrorFile,
-(FILE *), fh);
+  LLDB_RECORD_METHOD(void, SBCommandReturnObject, SetImmediateErrorFile,
+ (FILE *), fh);
 
   SetImme

[Lldb-commits] [PATCH] D116972: [lldb] Run the test suite in verbose mode

2022-01-10 Thread Jonas Devlieghere via Phabricator via lldb-commits
JDevlieghere created this revision.
JDevlieghere added reviewers: labath, stella.stamenova, omjavaid.
JDevlieghere requested review of this revision.

Run `check-lldb` in verbose mode so that the bot shows which tests are 
unsupported.

https://llvm.discourse.group/t/lldb-buildbots-verbosity/5253


https://reviews.llvm.org/D116972

Files:
  zorg/buildbot/builders/LLDBBuilder.py


Index: zorg/buildbot/builders/LLDBBuilder.py
===
--- zorg/buildbot/builders/LLDBBuilder.py
+++ zorg/buildbot/builders/LLDBBuilder.py
@@ -47,7 +47,7 @@
 
 build_cmd=['ninja']
 install_cmd = ['ninja','install']
-test_cmd = ['ninja','check-lldb']
+test_cmd = ['ninja','check-lldb', '-v']
 
 if jobs:
 build_cmd.append(WithProperties("-j%s" % jobs))


Index: zorg/buildbot/builders/LLDBBuilder.py
===
--- zorg/buildbot/builders/LLDBBuilder.py
+++ zorg/buildbot/builders/LLDBBuilder.py
@@ -47,7 +47,7 @@
 
 build_cmd=['ninja']
 install_cmd = ['ninja','install']
-test_cmd = ['ninja','check-lldb']
+test_cmd = ['ninja','check-lldb', '-v']
 
 if jobs:
 build_cmd.append(WithProperties("-j%s" % jobs))
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116972: [lldb] Run the test suite in verbose mode

2022-01-10 Thread Stella Stamenova via Phabricator via lldb-commits
stella.stamenova accepted this revision.
stella.stamenova added a comment.
This revision is now accepted and ready to land.

LGTM


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116972/new/

https://reviews.llvm.org/D116972

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116707: [lldb] fix memory leak in "GetGDBServerRegisterInfoXMLAndProcess"

2022-01-10 Thread Jonas Devlieghere via Phabricator via lldb-commits
This revision was not accepted when it landed; it landed in state "Needs 
Review".
This revision was automatically updated to reflect the committed changes.
Closed by commit rG1267506ea54a: [lldb] fix memory leak in 
"GetGDBServerRegisterInfoXMLAndProcess" (authored by yuanzi, 
committed by JDevlieghere).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116707/new/

https://reviews.llvm.org/D116707

Files:
  lldb/include/lldb/Host/XML.h
  lldb/source/Host/common/XML.cpp
  lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp

Index: lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
===
--- lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -4351,9 +4351,9 @@
 } else if (name == "osabi") {
   node.GetElementText(target_info.osabi);
 } else if (name == "xi:include" || name == "include") {
-  llvm::StringRef href = node.GetAttributeValue("href");
+  std::string href = node.GetAttributeValue("href");
   if (!href.empty())
-target_info.includes.push_back(href.str());
+target_info.includes.push_back(href);
 } else if (name == "feature") {
   feature_nodes.push_back(node);
 } else if (name == "groups") {
@@ -4392,9 +4392,9 @@
 const XMLNode &node) -> bool {
   llvm::StringRef name = node.GetName();
   if (name == "xi:include" || name == "include") {
-llvm::StringRef href = node.GetAttributeValue("href");
+std::string href = node.GetAttributeValue("href");
 if (!href.empty())
-  target_info.includes.push_back(href.str());
+  target_info.includes.push_back(href);
 }
 return true;
   });
@@ -4530,7 +4530,7 @@
   "Error finding library-list-svr4 xml element");
 
 // main link map structure
-llvm::StringRef main_lm = root_element.GetAttributeValue("main-lm");
+std::string main_lm = root_element.GetAttributeValue("main-lm");
 // FIXME: we're silently ignoring invalid data here
 if (!main_lm.empty())
   llvm::to_integer(main_lm, list.m_link_map);
@@ -4618,15 +4618,15 @@
 "library", [log, &list](const XMLNode &library) -> bool {
   LoadedModuleInfoList::LoadedModuleInfo module;
 
-  llvm::StringRef name = library.GetAttributeValue("name");
-  module.set_name(name.str());
+  std::string name = library.GetAttributeValue("name");
+  module.set_name(name);
 
   // The base address of a given library will be the address of its
   // first section. Most remotes send only one section for Windows
   // targets for example.
   const XMLNode §ion =
   library.FindFirstChildElementWithName("section");
-  llvm::StringRef address = section.GetAttributeValue("address");
+  std::string address = section.GetAttributeValue("address");
   uint64_t address_value = LLDB_INVALID_ADDRESS;
   llvm::to_integer(address, address_value);
   module.set_base(address_value);
Index: lldb/source/Host/common/XML.cpp
===
--- lldb/source/Host/common/XML.cpp
+++ lldb/source/Host/common/XML.cpp
@@ -130,22 +130,25 @@
 #endif
 }
 
-llvm::StringRef XMLNode::GetAttributeValue(const char *name,
-   const char *fail_value) const {
-  const char *attr_value = nullptr;
+std::string XMLNode::GetAttributeValue(const char *name,
+   const char *fail_value) const {
+  std::string attr_value;
 #if LLDB_ENABLE_LIBXML2
-
-  if (IsValid())
-attr_value = (const char *)xmlGetProp(m_node, (const xmlChar *)name);
-  else
-attr_value = fail_value;
+  if (IsValid()) {
+xmlChar *value = xmlGetProp(m_node, (const xmlChar *)name);
+if (value) {
+  attr_value = (const char *)value;
+  xmlFree(value);
+}
+  } else {
+if (fail_value)
+  attr_value = fail_value;
+  }
 #else
-  attr_value = fail_value;
+  if (fail_value)
+attr_value = fail_value;
 #endif
-  if (attr_value)
-return llvm::StringRef(attr_value);
-  else
-return llvm::StringRef();
+  return attr_value;
 }
 
 bool XMLNode::GetAttributeValueAsUnsigned(const char *name, uint64_t &value,
Index: lldb/include/lldb/Host/XML.h
===
--- lldb/include/lldb/Host/XML.h
+++ lldb/include/lldb/Host/XML.h
@@ -76,8 +76,8 @@
 
   XMLNode GetChild() const;
 
-  llvm::StringRef GetAttributeValue(const char *name,
-const char *fail_value = nullptr) const;
+  std::string GetAttributeValue(const char *name,
+const char *fail_value = null

[Lldb-commits] [lldb] 1267506 - [lldb] fix memory leak in "GetGDBServerRegisterInfoXMLAndProcess"

2022-01-10 Thread Jonas Devlieghere via lldb-commits

Author: Lirong Yuan
Date: 2022-01-10T14:33:09-08:00
New Revision: 1267506ea54a62e0c728215c033b256ce856db30

URL: 
https://github.com/llvm/llvm-project/commit/1267506ea54a62e0c728215c033b256ce856db30
DIFF: 
https://github.com/llvm/llvm-project/commit/1267506ea54a62e0c728215c033b256ce856db30.diff

LOG: [lldb] fix memory leak in "GetGDBServerRegisterInfoXMLAndProcess"

While running heap checker on a test that uses LLDB API, the following memory 
leak is found:

RAW: HeapChecker started...
RAW: Leak check _main_ detected leaks of 34 bytes in 4 objects
RAW: The 2 largest leaks:
RAW: Leak of 17 bytes in 2 objects allocated from:
@ 0x7fb93bd20166 NewHook()
@ 0x7fb929372a73 absl::base_internal::MallocHook::InvokeNewHookSlow()
@ 0x5600d1046093 libc_malloc
@ 0x7fb974529c03 xmlStrdup
@ 0x7fb9744c2a0b xmlGetProp
@ 0x7fb9749d9ed6 lldb_private::XMLNode::GetAttributeValue()
@ 0x7fb979043001 std::u::function::policy_invoker<>::__call_impl<>()
@ 0x7fb9749da06d lldb_private::XMLNode::ForEachChildElement()
@ 0x7fb97903c54d 
lldb_private::process_gdb_remote::ProcessGDBRemote::GetGDBServerRegisterInfoXMLAndProcess()
@ 0x7fb97902cfe4 
lldb_private::process_gdb_remote::ProcessGDBRemote::GetGDBServerRegisterInfo()
@ 0x7fb97902c1d0 
lldb_private::process_gdb_remote::ProcessGDBRemote::BuildDynamicRegisterInfo()
@ 0x7fb97902e92a 
lldb_private::process_gdb_remote::ProcessGDBRemote::SetThreadStopInfo()
@ 0x7fb97902db18 
lldb_private::process_gdb_remote::ProcessGDBRemote::DoConnectRemote()
@ 0x7fb97584965e lldb_private::Process::ConnectRemote()
@ 0x7fb975839fa6 lldb_private::Platform::DoConnectProcess()
@ 0x7fb97583a39e lldb_private::Platform::ConnectProcessSynchronous()
@ 0x7fb97545b28b CommandObjectProcessConnect::DoExecute()
@ 0x7fb9755a70c9 lldb_private::CommandObjectParsed::Execute()
@ 0x7fb97559c0e9 lldb_private::CommandInterpreter::HandleCommand()
@ 0x7fb975460145 lldb_private::CommandObjectRegexCommand::DoExecute()
@ 0x7fb9755a72d2 lldb_private::CommandObjectRaw::Execute()
@ 0x7fb97559c0e9 lldb_private::CommandInterpreter::HandleCommand()
@ 0x7fb997a5f22e lldb::SBCommandInterpreter::HandleCommand()
@ 0x7fb997a5ef9b lldb::SBCommandInterpreter::HandleCommand()

This change fixes the memory leaks by freeing memory after it is no
longer in use. Tested with "ninja check-lldb".

Differential revision: https://reviews.llvm.org/D116707

Added: 


Modified: 
lldb/include/lldb/Host/XML.h
lldb/source/Host/common/XML.cpp
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp

Removed: 




diff  --git a/lldb/include/lldb/Host/XML.h b/lldb/include/lldb/Host/XML.h
index 9edf46bf09df5..da0f9cd7aa8c0 100644
--- a/lldb/include/lldb/Host/XML.h
+++ b/lldb/include/lldb/Host/XML.h
@@ -76,8 +76,8 @@ class XMLNode {
 
   XMLNode GetChild() const;
 
-  llvm::StringRef GetAttributeValue(const char *name,
-const char *fail_value = nullptr) const;
+  std::string GetAttributeValue(const char *name,
+const char *fail_value = nullptr) const;
 
   bool GetAttributeValueAsUnsigned(const char *name, uint64_t &value,
uint64_t fail_value = 0, int base = 0) 
const;

diff  --git a/lldb/source/Host/common/XML.cpp b/lldb/source/Host/common/XML.cpp
index 79128b98dc38d..2d48175a82346 100644
--- a/lldb/source/Host/common/XML.cpp
+++ b/lldb/source/Host/common/XML.cpp
@@ -130,22 +130,25 @@ XMLNode XMLNode::GetChild() const {
 #endif
 }
 
-llvm::StringRef XMLNode::GetAttributeValue(const char *name,
-   const char *fail_value) const {
-  const char *attr_value = nullptr;
+std::string XMLNode::GetAttributeValue(const char *name,
+   const char *fail_value) const {
+  std::string attr_value;
 #if LLDB_ENABLE_LIBXML2
-
-  if (IsValid())
-attr_value = (const char *)xmlGetProp(m_node, (const xmlChar *)name);
-  else
-attr_value = fail_value;
+  if (IsValid()) {
+xmlChar *value = xmlGetProp(m_node, (const xmlChar *)name);
+if (value) {
+  attr_value = (const char *)value;
+  xmlFree(value);
+}
+  } else {
+if (fail_value)
+  attr_value = fail_value;
+  }
 #else
-  attr_value = fail_value;
+  if (fail_value)
+attr_value = fail_value;
 #endif
-  if (attr_value)
-return llvm::StringRef(attr_value);
-  else
-return llvm::StringRef();
+  return attr_value;
 }
 
 bool XMLNode::GetAttributeValueAsUnsigned(const char *name, uint64_t &value,

diff  --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp 
b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index cb5ec7f18d190..dfc1c4a200689 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -4351,9 +4351,9 @@ bool 
ProcessGDBRemote::GetGDBServerRegisterInfoXMLAndProcess(
 } else if (name ==

[Lldb-commits] [PATCH] D116845: [LLDB][NativePDB] Add support for inlined functions

2022-01-10 Thread Zequan Wu via Phabricator via lldb-commits
zequanwu updated this revision to Diff 398772.
zequanwu marked 4 inline comments as done.
zequanwu added a comment.

Address comments.
Store "temporary" line table in `CompileUnitIndex`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116845/new/

https://reviews.llvm.org/D116845

Files:
  lldb/include/lldb/Symbol/LineTable.h
  lldb/source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.cpp
  lldb/source/Plugins/SymbolFile/NativePDB/CompileUnitIndex.h
  lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.cpp
  lldb/source/Plugins/SymbolFile/NativePDB/SymbolFileNativePDB.h
  lldb/test/Shell/SymbolFile/NativePDB/Inputs/inline_sites.lldbinit
  lldb/test/Shell/SymbolFile/NativePDB/inline_sites.s

Index: lldb/test/Shell/SymbolFile/NativePDB/inline_sites.s
===
--- /dev/null
+++ lldb/test/Shell/SymbolFile/NativePDB/inline_sites.s
@@ -0,0 +1,667 @@
+# clang-format off
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -triple=x86_64-windows-msvc --filetype=obj %s > %t.obj
+# RUN: lld-link -debug:full -nodefaultlib -entry:main %t.obj  -out:%t.exe
+# RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+# RUN: %p/Inputs/inline_sites.lldbinit 2>&1 | FileCheck %s
+
+# Compiled from the following files, but replaced the call to abort with nop.
+# a.cpp:
+# #include "stdlib.h"
+# #include "a.h"
+# int main(int argc, char** argv) {
+#   Namespace1::foo(2);
+#   return 0;
+# }
+# a.h:
+# #include "b.h"
+# namespace Namespace1 {
+# inline void foo(int x) {
+#   static volatile int gv_foo;
+#   ++gv_foo;
+#   if (!gv_foo)
+# abort();
+#   Class1::bar(x + 1);
+# }
+# }
+# b.h:
+# #include "c.h"
+# class Class1 {
+# public:
+#   inline static void bar(int x) {
+# static volatile int gv_bar;
+# ++gv_bar;
+# Namespace2::Class2::func(x + 1);
+#   }
+# };
+# c.h:
+# namespace Namespace2{
+#   class Class2{
+# public:
+# inline static void func(int x) {
+#   static volatile int gv_func;
+#   gv_func += x;
+# }
+#   };
+# }
+
+# CHECK:  (lldb) image dump line-table a.cpp -v
+# CHECK-NEXT: Line table for /tmp/a.cpp in
+# CHECK-NEXT: 0x000140001000: /tmp/a.cpp:3
+# CHECK-NEXT: 0x000140001004: /tmp/a.h:5, is_start_of_statement = TRUE, is_prologue_end = TRUE
+# CHECK-NEXT: 0x00014000100a: /tmp/a.h:6
+# CHECK-NEXT: 0x000140001014: /tmp/b.h:6, is_start_of_statement = TRUE, is_prologue_end = TRUE
+# CHECK-NEXT: 0x00014000101a: /tmp/c.h:6, is_start_of_statement = TRUE, is_prologue_end = TRUE
+# CHECK-NEXT: 0x000140001021: /tmp/a.cpp:5
+# CHECK-NEXT: 0x000140001028: /tmp/a.h:7, is_start_of_statement = TRUE
+# CHECK-NEXT: 0x00014000102a: /tmp/a.cpp:5, is_terminal_entry = TRUE
+
+# CEHCK: (lldb) b a.cpp:5
+# CHECK: Breakpoint 1: where = {{.*}}`main + 33 at a.cpp:5, address = 0x000140001021
+# CEHCK: (lldb) b a.h:5
+# CHECK: Breakpoint 2: where = {{.*}}`main + 4 [inlined] Namespace1::foo at a.h:5, address = 0x000140001004
+# CEHCK: (lldb) b a.h:6
+# CHECK: Breakpoint 3: where = {{.*}}`main + 10 [inlined] Namespace1::foo + 6 at a.h:6, address = 0x00014000100a
+# CEHCK: (lldb) b a.h:7
+# CHECK: Breakpoint 4: where = {{.*}}`main + 40 [inlined] Namespace1::foo at a.h:7, address = 0x000140001028
+# CEHCK: (lldb) b b.h:6
+# CHECK: Breakpoint 5: where = {{.*}}`main + 20 [inlined] Class1::bar at b.h:6, address = 0x000140001014
+# CEHCK: (lldb) b c.h:6
+# CHECK: Breakpoint 6: where = {{.*}}`main + 26 [inlined] Namespace2::Class2::func at c.h:6, address = 0x00014000101a
+
+# CEHCK-LABEL: (lldb) image lookup -a 0x140001003 -v
+# CHECK:  Summary: {{.*}}`main + 3 at a.cpp:3
+# CHECK: Function: id = {{.*}}, name = "main", range = [0x000140001000-0x00014000102a)
+# CHECK:   Blocks: id = {{.*}}, range = [0x140001000-0x14000102a)
+# CHECK:LineEntry: [0x000140001000-0x000140001004): /tmp/a.cpp:3
+
+# CEHCK-LABEL: (lldb) image lookup -a 0x140001004 -v
+# CHECK:  Summary: {{.*}}`main + 4 [inlined] Namespace1::foo at a.h:5
+# CHECK-NEXT:  {{.*}}`main + 4 at a.cpp:4
+# CHECK: Function: id = {{.*}}, name = "main", range = [0x000140001000-0x00014000102a)
+# CHECK:   Blocks: id = {{.*}}, range = [0x140001000-0x14000102a)
+# CHECK-NEXT:  id = {{.*}}, ranges = [0x140001004-0x140001021)[0x140001028-0x14000102a), name = "Namespace1::foo", decl = a.h:3
+# CHECK:LineEntry: [0x000140001004-0x00014000100a): /tmp/a.h:5
+
+# CEHCK-LABEL: (lldb) image lookup -a 0x140001014 -v
+# CHECK:  Summary: {{.*}}`main + 20 [inlined] Class1::bar at b.h:6
+# CHECK-NEXT:  {{.*}}`main + 20 [inlined] Namespace1::foo + 16 at a.h:8
+# CHECK-NEXT:  {{.*}}`main + 4 at a.cpp:4
+# CHECK: Function: id = {{.*}}, name = "main", range = [0x000140001000-0x00014000102a)
+# CHECK:   Blocks: id = {{.*}}, range = [0x140001000-0x14000102a)
+# CHECK-NEXT:  id = {{.*}}, ranges = [0

[Lldb-commits] [PATCH] D116845: [LLDB][NativePDB] Add support for inlined functions

2022-01-10 Thread Zequan Wu via Phabricator via lldb-commits
zequanwu added a comment.

> The one part that bothers me is the "two-phased" setting of line tables. 
> IIUC, the problem is that the inline line info is in the block descriptor, so 
> you need to parse block info in order to create a line table, but in order to 
> actually create an lldb_private::Block, you need the call site info from the 
> caller, which is in the pdb line table. This creates a sort of a dependency 
> loop, is that right?

Yes. The temporary line table is in `CompileUnitIndex` now.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116845/new/

https://reviews.llvm.org/D116845

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116788: [lldb] Set result error state in 'frame variable'

2022-01-10 Thread Greg Clayton via Phabricator via lldb-commits
clayborg added a comment.

In D116788#3232105 , @kastiglione 
wrote:

> In D116788#3231612 , @clayborg 
> wrote:
>
>> I would vote that if any argument or option is specified, and results in 
>> something not being found, that an error be returned.
>
> Is this in response to my question about regexes? It seems to be. 
> Specifically, you're of the opinion that any failing regex results in an 
> error, even when other regexes do match? Your point about it not affecting 
> the command line is a good point, thanks.

It is about anything that can't be properly displayed when asked. So lets 
pretend we have only two variables available "a" and "b". Any of these should 
return an error:

  (lldb) frame variable bad // No variable named bad, so return an error like 
"no variables found that match 'bad'"
  (lldb) frame variable a bad // No variable named bad, so return an error like 
"no variables found that match 'bad'" though we would display the value for "a" 
followed by the error message
  (lldb) frame variable a bad b // No variable named bad, so return an error 
like "no variables found that match 'bad'" though we would display the value 
for "a" followed by the error message and followed by "b"'s value
  (lldb) frame variable --regex b bad // regex "b" will match, but not regex 
"bad", so an error like "no matches found for regex 'bad'" should be returned
  (lldb) frame variable --regex bad worse // neither regex will match, so an 
error like "no matches found for regex 'bad' and 'worse'" should be returned

If the user really wants to find either "a" or "bad", they can modify their 
regex so that it succeeds when it can since it would match a or bad:

  (lldb) frame variable --regex "a|bad"

Or they can do separate invocations to ensure it succeeds or fails correctly.

So any argument that is specified that has no matches should produce an error. 
I am open to suggestions here, as these are just my initial thoughts.

> All your other points sound good to me too.
>
>> Any tests that are failing now when they didn't before can be modified.
>
> Yes there were a couple, D116901  and 
> D116863 .

Nice, those should be easy to fix.

Let me know your thoughts as mine are just my initial thoughts after thinking 
about things a bit more.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116788/new/

https://reviews.llvm.org/D116788

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116982: Fix clang-tidy bugprone-argument-comment that was mixed up

2022-01-10 Thread Shafik Yaghmour via Phabricator via lldb-commits
shafik created this revision.
shafik added reviewers: wallace, JDevlieghere.
shafik requested review of this revision.

Several of the comments were annotating the wrong argument.

I caught this while reviewing this clean-up: 
https://github.com/llvm/llvm-project/commit/8afcfbfb8fc1e53023ffac9d9bdc424248d6d2ff

which was changing booleans to use `true` and `false` and in the this case the 
comment and the type looked mismatched.


https://reviews.llvm.org/D116982

Files:
  lldb/source/Target/TraceInstructionDumper.cpp


Index: lldb/source/Target/TraceInstructionDumper.cpp
===
--- lldb/source/Target/TraceInstructionDumper.cpp
+++ lldb/source/Target/TraceInstructionDumper.cpp
@@ -148,9 +148,8 @@
   if (!insn.instruction)
 return;
   s.Printf("");
-  insn.instruction->Dump(&s, /*show_address=*/false, /*show_bytes=*/false,
- /*max_opcode_byte_size=*/false, &insn.exe_ctx,
- &insn.sc,
+  insn.instruction->Dump(&s, /*max_opcode_byte_size=*/0, 
/*show_address=*/false,
+ /*show_bytes=*/false, &insn.exe_ctx, &insn.sc,
  /*prev_sym_ctx=*/nullptr,
  /*disassembly_addr_format=*/nullptr,
  /*max_address_text_size=*/0);


Index: lldb/source/Target/TraceInstructionDumper.cpp
===
--- lldb/source/Target/TraceInstructionDumper.cpp
+++ lldb/source/Target/TraceInstructionDumper.cpp
@@ -148,9 +148,8 @@
   if (!insn.instruction)
 return;
   s.Printf("");
-  insn.instruction->Dump(&s, /*show_address=*/false, /*show_bytes=*/false,
- /*max_opcode_byte_size=*/false, &insn.exe_ctx,
- &insn.sc,
+  insn.instruction->Dump(&s, /*max_opcode_byte_size=*/0, /*show_address=*/false,
+ /*show_bytes=*/false, &insn.exe_ctx, &insn.sc,
  /*prev_sym_ctx=*/nullptr,
  /*disassembly_addr_format=*/nullptr,
  /*max_address_text_size=*/0);
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116788: [lldb] Set result error state in 'frame variable'

2022-01-10 Thread Dave Lee via Phabricator via lldb-commits
kastiglione added a comment.

> Let me know your thoughts as mine are just my initial thoughts after thinking 
> about things a bit more.

For most of what you said, I was thinking the same. The only place where I 
wasn't as sure about (regex), I was on the fence. Your cases and arguments all 
seem good to me. I think the consistency is also good.

thanks


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116788/new/

https://reviews.llvm.org/D116788

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


Re: [Lldb-commits] [PATCH] D116788: [lldb] Set result error state in 'frame variable'

2022-01-10 Thread Jim Ingham via lldb-commits
I agree that if we are going to start putting in errors for not finding listed 
arguments to “frame var” we should do it consistently, and Greg’s list seems 
good - along with the error “No debug info” when “frame var” is run in a frame 
w/o debug info or recognizers.

The one thing that bothers me slightly about this is that if I run “frame var” 
from HandleCommand in a script, with this change I can’t rely on the command 
status to tell whether the command output had anything interesting in it.  That 
seems awkward.

NB: speaking just for myself, I’m actually a little in favor of that potential 
breakage, since “the problem just shows that you shouldn’t be using 
HandleCommand in scripts”.  But my non-mean self did feel like it ought to 
raise the issue…

Jim




> On Jan 10, 2022, at 5:27 PM, Dave Lee via Phabricator 
>  wrote:
> 
> kastiglione added a comment.
> 
>> Let me know your thoughts as mine are just my initial thoughts after 
>> thinking about things a bit more.
> 
> For most of what you said, I was thinking the same. The only place where I 
> wasn't as sure about (regex), I was on the fence. Your cases and arguments 
> all seem good to me. I think the consistency is also good.
> 
> thanks
> 
> 
> Repository:
>  rG LLVM Github Monorepo
> 
> CHANGES SINCE LAST ACTION
>  https://reviews.llvm.org/D116788/new/
> 
> https://reviews.llvm.org/D116788
> 

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116972: [lldb] Run the test suite in verbose mode

2022-01-10 Thread Luís Ferreira via Phabricator via lldb-commits
ljmf00 added inline comments.



Comment at: zorg/buildbot/builders/LLDBBuilder.py:50
 install_cmd = ['ninja','install']
-test_cmd = ['ninja','check-lldb']
+test_cmd = ['ninja','check-lldb', '-v']
 

I don't know if ninja verbosity propagates to `llvm-lit`, but isn't this more 
appropriate in `LLVM_LIT_ARGS` cmake flag?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116972/new/

https://reviews.llvm.org/D116972

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116972: [lldb] Run the test suite in verbose mode

2022-01-10 Thread Luís Ferreira via Phabricator via lldb-commits
ljmf00 added inline comments.



Comment at: zorg/buildbot/builders/LLDBBuilder.py:50
 install_cmd = ['ninja','install']
-test_cmd = ['ninja','check-lldb']
+test_cmd = ['ninja','check-lldb', '-v']
 

ljmf00 wrote:
> I don't know if ninja verbosity propagates to `llvm-lit`, but isn't this more 
> appropriate in `LLVM_LIT_ARGS` cmake flag?
See 
https://github.com/llvm/llvm-zorg/blob/main/zorg/buildbot/builders/ClangBuilder.py#L287
 for reference.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116972/new/

https://reviews.llvm.org/D116972

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116972: [lldb] Run the test suite in verbose mode

2022-01-10 Thread Jonas Devlieghere via Phabricator via lldb-commits
JDevlieghere updated this revision to Diff 398837.
JDevlieghere marked 2 inline comments as done.

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116972/new/

https://reviews.llvm.org/D116972

Files:
  zorg/buildbot/builders/LLDBBuilder.py


Index: zorg/buildbot/builders/LLDBBuilder.py
===
--- zorg/buildbot/builders/LLDBBuilder.py
+++ zorg/buildbot/builders/LLDBBuilder.py
@@ -48,11 +48,13 @@
 build_cmd=['ninja']
 install_cmd = ['ninja','install']
 test_cmd = ['ninja','check-lldb']
+lit_args = '-v'
 
 if jobs:
 build_cmd.append(WithProperties("-j%s" % jobs))
 install_cmd.append(WithProperties("-j%s" % jobs))
 test_cmd.append(WithProperties("-j%s" % jobs))
+lit_args += " -j%s" % jobs
 
 # CLEANING
 cleanBuildRequested = lambda step: clean or 
step.build.getProperty("clean", default=step.build.getProperty("clean_obj"))
@@ -67,6 +69,7 @@
 cmake_options = [
 "-G", "Ninja",
 "-DCMAKE_BUILD_TYPE=" + config,
+"-DLLVM_LIT_ARGS='%s'" % lit_args,
 "-DCMAKE_INSTALL_PREFIX=../install",
 "-DLLVM_ENABLE_PROJECTS=%s" % ";".join(f.depends_on_projects),
 ]


Index: zorg/buildbot/builders/LLDBBuilder.py
===
--- zorg/buildbot/builders/LLDBBuilder.py
+++ zorg/buildbot/builders/LLDBBuilder.py
@@ -48,11 +48,13 @@
 build_cmd=['ninja']
 install_cmd = ['ninja','install']
 test_cmd = ['ninja','check-lldb']
+lit_args = '-v'
 
 if jobs:
 build_cmd.append(WithProperties("-j%s" % jobs))
 install_cmd.append(WithProperties("-j%s" % jobs))
 test_cmd.append(WithProperties("-j%s" % jobs))
+lit_args += " -j%s" % jobs
 
 # CLEANING
 cleanBuildRequested = lambda step: clean or step.build.getProperty("clean", default=step.build.getProperty("clean_obj"))
@@ -67,6 +69,7 @@
 cmake_options = [
 "-G", "Ninja",
 "-DCMAKE_BUILD_TYPE=" + config,
+"-DLLVM_LIT_ARGS='%s'" % lit_args,
 "-DCMAKE_INSTALL_PREFIX=../install",
 "-DLLVM_ENABLE_PROJECTS=%s" % ";".join(f.depends_on_projects),
 ]
___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


[Lldb-commits] [PATCH] D116982: Fix clang-tidy bugprone-argument-comment that was mixed up

2022-01-10 Thread Jonas Devlieghere via Phabricator via lldb-commits
JDevlieghere accepted this revision.
JDevlieghere added a comment.
This revision is now accepted and ready to land.

Good catch!


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D116982/new/

https://reviews.llvm.org/D116982

___
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits