Move the SourceManager from the Debugger to the Target.  That way it can store the per-Target default Source File & Line.
Set the default Source File & line to main (if it can be found.) at startup.  Selecting the current thread & or frame resets 
the current source file & line, and "source list" as well as the breakpoint command "break set -l <NUM>" will use the 
current source file.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@139323 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Commands/CommandObjectBreakpoint.cpp b/source/Commands/CommandObjectBreakpoint.cpp
index 2e894ed..20641ac 100644
--- a/source/Commands/CommandObjectBreakpoint.cpp
+++ b/source/Commands/CommandObjectBreakpoint.cpp
@@ -321,31 +321,37 @@
                 FileSpec file;
                 if (m_options.m_filename.empty())
                 {
-                    StackFrame *cur_frame = m_interpreter.GetExecutionContext().frame;
-                    if (cur_frame == NULL)
+                    uint32_t default_line;
+                    // First use the Source Manager's default file. 
+                    // Then use the current stack frame's file.
+                    if (!target->GetSourceManager().GetDefaultFileAndLine(file, default_line))
                     {
-                        result.AppendError ("Attempting to set breakpoint by line number alone with no selected frame.");
-                        result.SetStatus (eReturnStatusFailed);
-                        break;
-                    }
-                    else if (!cur_frame->HasDebugInformation())
-                    {
-                        result.AppendError ("Attempting to set breakpoint by line number alone but selected frame has no debug info.");
-                        result.SetStatus (eReturnStatusFailed);
-                        break;
-                    }
-                    else
-                    {
-                        const SymbolContext &sc = cur_frame->GetSymbolContext (eSymbolContextLineEntry);
-                        if (sc.line_entry.file)
+                        StackFrame *cur_frame = m_interpreter.GetExecutionContext().frame;
+                        if (cur_frame == NULL)
                         {
-                            file = sc.line_entry.file;
+                            result.AppendError ("Attempting to set breakpoint by line number alone with no selected frame.");
+                            result.SetStatus (eReturnStatusFailed);
+                            break;
+                        }
+                        else if (!cur_frame->HasDebugInformation())
+                        {
+                            result.AppendError ("Attempting to set breakpoint by line number alone but selected frame has no debug info.");
+                            result.SetStatus (eReturnStatusFailed);
+                            break;
                         }
                         else
                         {
-                            result.AppendError ("Attempting to set breakpoint by line number alone but can't find the file for the selected frame.");
-                            result.SetStatus (eReturnStatusFailed);
-                            break;
+                            const SymbolContext &sc = cur_frame->GetSymbolContext (eSymbolContextLineEntry);
+                            if (sc.line_entry.file)
+                            {
+                                file = sc.line_entry.file;
+                            }
+                            else
+                            {
+                                result.AppendError ("Attempting to set breakpoint by line number alone but can't find the file for the selected frame.");
+                                result.SetStatus (eReturnStatusFailed);
+                                break;
+                            }
                         }
                     }
                 }