Cleaned up the SWIG stuff so all includes happen as they should, no pulling
tricks to get types to resolve. I did this by correctly including the correct
files: stdint.h and all lldb-*.h files first before including the API files.
This allowed me to remove all of the hacks that were in the lldb.swig file
and it also allows all of the #defines in lldb-defines.h and enumerations
in lldb-enumerations.h to appear in the lldb.py module. This will make the
python script code a lot more readable.

Cleaned up the "process launch" command to not execute a "process continue"
command, it now just does what it should have with the internal API calls
instead of executing another command line command.

Made the lldb_private::Process set the state to launching and attaching if
WillLaunch/WillAttach return no error respectively.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@115902 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/examples/python/disasm.py b/examples/python/disasm.py
index 8239cf3..3de3730 100755
--- a/examples/python/disasm.py
+++ b/examples/python/disasm.py
@@ -28,52 +28,65 @@
 debugger.SetAsync (False)
 
 # Create a target from a file and arch
-target = debugger.CreateTargetWithFileAndArch (sys.argv[1], "x86_64")
+print "Creating a target for '%s'" % sys.argv[1]
+
+target = debugger.CreateTargetWithFileAndArch (sys.argv[1], lldb.LLDB_ARCH_DEFAULT)
 
 if target.IsValid():
     # If the target is valid set a breakpoint at main
     main_bp = target.BreakpointCreateByName ("main", sys.argv[1]);
-    
+
+    print main_bp
+
     # Launch the process. Since we specified synchronous mode, we won't return
     # from this function until we hit the breakpoint at main
-    process = target.LaunchProcess (sys.argv[2:], [''], "/dev/stdout", 0, False)
+    process = target.LaunchProcess ([''], [''], "/dev/stdout", 0, False)
     
     # Make sure the launch went ok
     if process.IsValid():
         # Print some simple process info
-        print "process:", process, "\n"
-        # Get the first thread
-        thread = process.GetThreadAtIndex (0)
-        if thread.IsValid():
-            # Print some simple thread info
-            print "thread: ", thread
-            # Get the first frame
-            frame = thread.GetFrameAtIndex (0)
-            if frame.IsValid():
-                # Print some simple frame info
-                print "frame: ", frame
-                function = frame.GetFunction()
-                # See if we have debug info (a function)
-                if function.IsValid():
-                    # We do have a function, print some info for the function
-                    print "function: ", function, "\n"
-                    # Now get all instructions for this function and print them
-                    insts = function.GetInstructions(target)
-                    disassemble_instructions (insts)
-                else:
-                    # See if we have a symbol in the symbol table for where we stopped
-                    symbol = frame.GetSymbol();
-                    if symbol.IsValid():
-                        # We do have a symbol, print some info for the symbol
-                        print "symbol: ", symbol, "\n"
-                        # Now get all instructions for this symbol and print them
-                        insts = symbol.GetInstructions(target)
+        state = process.GetState ()
+        print process
+        if state == lldb.eStateStopped:
+            # Get the first thread
+            thread = process.GetThreadAtIndex (0)
+            if thread.IsValid():
+                # Print some simple thread info
+                print thread
+                # Get the first frame
+                frame = thread.GetFrameAtIndex (0)
+                if frame.IsValid():
+                    # Print some simple frame info
+                    print frame
+                    function = frame.GetFunction()
+                    # See if we have debug info (a function)
+                    if function.IsValid():
+                        # We do have a function, print some info for the function
+                        print function
+                        # Now get all instructions for this function and print them
+                        insts = function.GetInstructions(target)
                         disassemble_instructions (insts)
-        # Now continue to the program exit
-        process.Continue()
-        # When we return from the above function we will hopefully be at the
-        # program exit. Print out some process info
-        print "process:", process, "\n"
+                    else:
+                        # See if we have a symbol in the symbol table for where we stopped
+                        symbol = frame.GetSymbol();
+                        if symbol.IsValid():
+                            # We do have a symbol, print some info for the symbol
+                            print symbol
+                            # Now get all instructions for this symbol and print them
+                            insts = symbol.GetInstructions(target)
+                            disassemble_instructions (insts)
+            print "Hit the breakpoint at main, continue and wait for program to exit..."
+            # Now continue to the program exit
+            process.Continue()
+            # When we return from the above function we will hopefully be at the
+            # program exit. Print out some process info
+            print process
+        elif state == lldb.eStateExited:
+            print "Didn't hit the breakpoint at main, program has exited..."
+        else:
+            print "Unexpected process state: %s, killing process..." % debugger.StateAsCString (state)
+            process.Kill()
+
         
 
 lldb.SBDebugger.Terminate()