[Lldb-commits] Bug 16443 - target create doesn't expand ~ on Linux

Matthew Sorrels sorrels.m at gmail.com
Tue Jun 25 13:29:35 PDT 2013


*Bug 16443* <http://llvm.org/bugs/show_bug.cgi?id=16443> - target create
doesn't expand ~ on Linux

I created a bug for this, but it wasn't as complex to fix as I had
thought.  Though I'm not exactly sure what the effects this change could
have.  The test suite runs the same on Linux with or without it, but I'm
not sure that's enough.  It does seem like the code went out of its way to
set the arg0 to be whatever the user typed, rather than the resolved path.
Perhaps there is a reason for this I don't understand?


Here's the bug summary:

If you start lldb and do a target create on a path with a ~ as part of
the path, it is accepted but when trying to run the process the launch
fails.

Here's an example where the test binary is ~/a.out  it is also
/home/matthews/a.out which works fine.  Both paths work fine when used
on the command line (most likely due to shell expansion)

matthews at matthews-linux:~/work/llvm/llvm/build$ bin/lldb
(lldb) version
lldb version 3.4 ( http://llvm.org/svn/llvm-project/lldb/trunk revision 184861)
(lldb) target create ~/a.out
Current executable set to '~/a.out' (x86_64).
(lldb) run
error: process launch failed: Child exec failed.


(lldb) target create /home/matthews/a.out
Current executable set to '/home/matthews/a.out' (x86_64).
(lldb) run
Process 4493 launched: '/home/matthews/a.out' (x86_64)
Hello world!
Function 106
Process 4493 exited with status = 13 (0x0000000d)
(lldb)

The target list command shows the full path to the file, but that full
path isn't being used when the process is started with run.

(lldb) target create ~/a.out
Current executable set to '~/a.out' (x86_64).
(lldb) target list
Current targets:
* target #0: /home/matthews/a.out ( arch=x86_64--linux, platform=localhost )

Here's a possible patch:

Index: source/Target/TargetList.cpp
===================================================================
--- source/Target/TargetList.cpp    (revision 184861)
+++ source/Target/TargetList.cpp    (working copy)
@@ -304,8 +304,8 @@
             }
             else
             {
-                // Just use what the user typed
-                target_sp->SetArg0 (user_exe_path);
+                // Use resolved path
+                target_sp->SetArg0 (file.GetPath().c_str());
             }
         }
         if (file.GetDirectory())
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20130625/b37a39ed/attachment.html>


More information about the lldb-commits mailing list