If we are adding a ProcessLaunchInfo to the TargetProperties everything needs 
to be kept up to date:

  { "arg0"                               , OptionValue::eTypeString    , false, 
0                         , NULL, NULL, "The first argument passed to the 
program in the argument array which can be different from the executable 
itself." },
  { "run-args"                           , OptionValue::eTypeArgs      , false, 
0                         , NULL, NULL, "A list containing all the arguments to 
be passed to the executable when it is run. Note that this does NOT include the 
argv[0] which is in target.arg0." },
  { "env-vars"                           , OptionValue::eTypeDictionary, false, 
OptionValue::eTypeString  , NULL, NULL, "A list of all the environment 
variables to be passed to the executable's environment, and their values." },
  { "inherit-env"                        , OptionValue::eTypeBoolean   , false, 
true                      , NULL, NULL, "Inherit the environment from the 
process that is running LLDB." },
  { "input-path"                         , OptionValue::eTypeFileSpec  , false, 
0                         , NULL, NULL, "The file/path to be used by the 
executable program for reading its standard input." },
  { "output-path"                        , OptionValue::eTypeFileSpec  , false, 
0                         , NULL, NULL, "The file/path to be used by the 
executable program for writing its standard output." },
  { "error-path"                         , OptionValue::eTypeFileSpec  , false, 
0                         , NULL, NULL, "The file/path to be used by the 
executable program for writing its standard error." },
  { "detach-on-error"                    , OptionValue::eTypeBoolean   , false, 
true                      , NULL, NULL, "debugserver will detach (rather than 
killing) a process if it loses connection with lldb." },
  { "disable-aslr"                       , OptionValue::eTypeBoolean   , false, 
true                      , NULL, NULL, "Disable Address Space Layout 
Randomization (ASLR)" },
  { "disable-stdio"                      , OptionValue::eTypeBoolean   , false, 
false                     , NULL, NULL, "Disable stdin/stdout for process (e.g. 
for a GUI application)" },

You will need to install callback functions for each of these and keep your 
built in ProcessLaunchInfo up to date.


================
Comment at: include/lldb/Target/Target.h:200-201
@@ +199,4 @@
+
+    ProcessLaunchInfo
+    GetProcessLaunchInfo() const;
+
----------------
We might want to make this return a "ProcessLaunchInfo &" so it isn't copied 
when using it internally.

================
Comment at: source/API/SBTarget.cpp:2574
@@ +2573,3 @@
+SBTarget::GetLaunchInfo () const
+{
+    ProcessLaunchInfo launch_info = m_opaque_sp->GetProcessLaunchInfo();
----------------
You must check that m_opaque_sp is valid and also make a copy of it before you 
use it in case another thread calls SBThread::Clear():

    TargetSP target_sp(GetSP());
    if (target_sp)
    {
        ProcessLaunchInfo launch_info = m_opaque_sp->GetProcessLaunchInfo();
        lldb::SBLaunchInfo sb_launch_info(NULL);
        sb_launch_info.ref() = launch_info;
        return sb_launch_info;   
    }
    return lldb::SBLaunchInfo();

================
Comment at: source/API/SBTarget.cpp:2584
@@ +2583,3 @@
+{
+    m_opaque_sp->SetProcessLaunchInfo(sb_launch_info.ref());
+}
----------------
Replace with:


```
TargetSP target_sp(GetSP());
if (target_sp)
{
    m_opaque_sp->SetProcessLaunchInfo(sb_launch_info.ref());
}
```

You might also want to change this to return a bool in case m_opaque_sp is 
invalid, you can return false.

http://reviews.llvm.org/D6965

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to