[Lldb-commits] [lldb] r237460 - Add --move-to-nearest-code / target.move-to-nearest-code options

Ilia K ki.stfu at gmail.com
Mon May 18 06:18:46 PDT 2015


Hello Vince,

Sorry for broken build and thanks for roll back (I was unable to do it
myself).

Thanks,
Ilia

On Sat, May 16, 2015 at 12:47 AM, Vince Harron <vince at nethacker.com> wrote:

> Hi Ilia,
>
> I've reverted this change.  r237479
>
> Sincerely,
>
> Vince
>
>
>
>
> On Fri, May 15, 2015 at 2:17 PM, Vince Harron <vince at nethacker.com> wrote:
>
>> Hi Illia,
>>
>> This appears to have broken both OSX and Linux builders.
>>
>> http://lab.llvm.org:8011/builders/lldb-x86_64-darwin-13.4/builds/2941
>>
>> http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/2421
>>
>> Is it a quick fix?
>>
>> If not, can you roll back?
>>
>> Thanks,
>>
>> Vince
>>
>> On Fri, May 15, 2015 at 11:16 AM, Ilia K <ki.stfu at gmail.com> wrote:
>>
>>> Author: ki.stfu
>>> Date: Fri May 15 13:16:15 2015
>>> New Revision: 237460
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=237460&view=rev
>>> Log:
>>> Add --move-to-nearest-code / target.move-to-nearest-code options
>>>
>>> Summary:
>>> This option forces to only set a source line breakpoint when there is an
>>> exact-match
>>>
>>> This patch includes the following commits:
>>> # Add the -m/--exact-match option in "breakpoint set" command
>>> ## Add exact_match arg in BreakpointResolverFileLine ctor
>>> ## Add m_exact_match field in BreakpointResolverFileLine
>>> ## Add exact_match arg in BreakpointResolverFileRegex ctor
>>> ## Add m_exact_match field in BreakpointResolverFileRegex
>>> ## Add exact_match arg in Target::CreateSourceRegexBreakpoint
>>> ## Add exact_match arg in Target::CreateBreakpoint
>>> ## Add -m/--exact-match option in "breakpoint set" command
>>> # Add target.exact-match option to skip BP if source line doesn't match
>>> ## Add target.exact-match global option
>>> ## Add Target::GetExactMatch
>>> ## Refactor Target::CreateSourceRegexBreakpoint to accept LazyBool
>>> exact_match (was bool)
>>> ## Refactor Target::CreateBreakpoint to accept LazyBool exact_match (was
>>> bool)
>>> # Add target.exact-match test in SettingsCommandTestCase
>>> # Add BreakpointOptionsTestCase tests to test
>>> --skip-prologue/--exact-match options
>>> # Fix a few typos in lldbutil.check_breakpoint_result func
>>> # Rename --exact-match/m_exact_match/exact_match/GetExactMatch to
>>> --move-to-nearest-code/m_move_to_nearest_code/move_to_nearest_code/GetMoveToNearestCode
>>> # Add exact_match field in BreakpointResolverFileLine::GetDescription
>>> and BreakpointResolverFileRegex::GetDescription, for example:
>>> was:
>>> ```
>>> 1: file =
>>> '/Users/IliaK/p/llvm/tools/lldb/test/functionalities/breakpoint/breakpoint_command/main.c',
>>> line = 12, locations = 1, resolved = 1, hit count = 2
>>>   1.1: where = a.out`main + 20 at main.c:12, address =
>>> 0x0000000100000eb4, resolved, hit count = 2
>>> ```
>>> now:
>>> ```
>>> 1: file =
>>> '/Users/IliaK/p/llvm/tools/lldb/test/functionalities/breakpoint/breakpoint_command/main.c',
>>> line = 12, exact_match = 0, locations = 1, resolved = 1, hit count = 2
>>>   1.1: where = a.out`main + 20 at main.c:12, address =
>>> 0x0000000100000eb4, resolved, hit count = 2
>>> ```
>>>
>>> Test Plan:
>>> ./dotest.py -v --executable $BUILDDIR/bin/lldb
>>> functionalities/breakpoint/
>>> ./dotest.py -v --executable $BUILDDIR/bin/lldb settings/
>>> ./dotest.py -v --executable $BUILDDIR/bin/lldb tools/lldb-mi/breakpoint/
>>>
>>> Reviewers: jingham, clayborg
>>>
>>> Reviewed By: clayborg
>>>
>>> Subscribers: lldb-commits, clayborg, jingham
>>>
>>> Differential Revision: http://reviews.llvm.org/D9273
>>>
>>> Added:
>>>     lldb/trunk/test/functionalities/breakpoint/breakpoint_options/
>>>
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_options/Makefile
>>>
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py
>>>     lldb/trunk/test/functionalities/breakpoint/breakpoint_options/main.c
>>> Modified:
>>>     lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileLine.h
>>>     lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileRegex.h
>>>     lldb/trunk/include/lldb/Target/Target.h
>>>     lldb/trunk/source/API/SBTarget.cpp
>>>     lldb/trunk/source/Breakpoint/BreakpointResolverFileLine.cpp
>>>     lldb/trunk/source/Breakpoint/BreakpointResolverFileRegex.cpp
>>>     lldb/trunk/source/Commands/CommandObjectBreakpoint.cpp
>>>     lldb/trunk/source/Core/IOHandler.cpp
>>>     lldb/trunk/source/Target/Target.cpp
>>>
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
>>>
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py
>>>
>>> lldb/trunk/test/functionalities/breakpoint/dummy_target_breakpoints/TestBreakpointsWithNoTargets.py
>>>     lldb/trunk/test/lldbutil.py
>>>     lldb/trunk/test/settings/TestSettings.py
>>>     lldb/trunk/test/tools/lldb-mi/breakpoint/TestMiBreak.py
>>>     lldb/trunk/test/tools/lldb-mi/breakpoint/main.cpp
>>>
>>> Modified: lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileLine.h
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileLine.h?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileLine.h
>>> (original)
>>> +++ lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileLine.h Fri
>>> May 15 13:16:15 2015
>>> @@ -32,7 +32,8 @@ public:
>>>                                  const FileSpec &resolver,
>>>                                  uint32_t line_no,
>>>                                  bool check_inlines,
>>> -                                bool skip_prologue);
>>> +                                bool skip_prologue,
>>> +                                bool exact_match);
>>>
>>>      virtual
>>>      ~BreakpointResolverFileLine ();
>>> @@ -67,6 +68,7 @@ protected:
>>>      uint32_t m_line_number; // This is the line number that we are
>>> looking for.
>>>      bool m_inlines; // This determines whether the resolver looks for
>>> inlined functions or not.
>>>      bool m_skip_prologue;
>>> +    bool m_exact_match;
>>>
>>>  private:
>>>      DISALLOW_COPY_AND_ASSIGN(BreakpointResolverFileLine);
>>>
>>> Modified:
>>> lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileRegex.h
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileRegex.h?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileRegex.h
>>> (original)
>>> +++ lldb/trunk/include/lldb/Breakpoint/BreakpointResolverFileRegex.h Fri
>>> May 15 13:16:15 2015
>>> @@ -29,7 +29,8 @@ class BreakpointResolverFileRegex :
>>>  {
>>>  public:
>>>      BreakpointResolverFileRegex (Breakpoint *bkpt,
>>> -                                RegularExpression &regex);
>>> +                                 RegularExpression &regex,
>>> +                                 bool exact_match);
>>>
>>>      virtual
>>>      ~BreakpointResolverFileRegex ();
>>> @@ -61,6 +62,7 @@ public:
>>>  protected:
>>>      friend class Breakpoint;
>>>      RegularExpression m_regex; // This is the line expression that we
>>> are looking for.
>>> +    bool m_exact_match;
>>>
>>>  private:
>>>      DISALLOW_COPY_AND_ASSIGN(BreakpointResolverFileRegex);
>>>
>>> Modified: lldb/trunk/include/lldb/Target/Target.h
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Target.h?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/include/lldb/Target/Target.h (original)
>>> +++ lldb/trunk/include/lldb/Target/Target.h Fri May 15 13:16:15 2015
>>> @@ -64,6 +64,9 @@ public:
>>>      void
>>>      SetDefaultArchitecture (const ArchSpec& arch);
>>>
>>> +    bool
>>> +    GetMoveToNearestCode () const;
>>> +
>>>      lldb::DynamicValueType
>>>      GetPreferDynamicValue() const;
>>>
>>> @@ -698,7 +701,8 @@ public:
>>>                        LazyBool check_inlines,
>>>                        LazyBool skip_prologue,
>>>                        bool internal,
>>> -                      bool request_hardware);
>>> +                      bool request_hardware,
>>> +                      LazyBool move_to_nearest_code);
>>>
>>>      // Use this to create breakpoint that matches regex against the
>>> source lines in files given in source_file_list:
>>>      lldb::BreakpointSP
>>> @@ -706,7 +710,8 @@ public:
>>>                                   const FileSpecList *source_file_list,
>>>                                   RegularExpression &source_regex,
>>>                                   bool internal,
>>> -                                 bool request_hardware);
>>> +                                 bool request_hardware,
>>> +                                 LazyBool move_to_nearest_code);
>>>
>>>      // Use this to create a breakpoint from a load address
>>>      lldb::BreakpointSP
>>>
>>> Modified: lldb/trunk/source/API/SBTarget.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBTarget.cpp?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/source/API/SBTarget.cpp (original)
>>> +++ lldb/trunk/source/API/SBTarget.cpp Fri May 15 13:16:15 2015
>>> @@ -808,7 +808,8 @@ SBTarget::BreakpointCreateByLocation (co
>>>          const LazyBool skip_prologue = eLazyBoolCalculate;
>>>          const bool internal = false;
>>>          const bool hardware = false;
>>> -        *sb_bp = target_sp->CreateBreakpoint (NULL, *sb_file_spec,
>>> line, check_inlines, skip_prologue, internal, hardware);
>>> +        const LazyBool move_to_nearest_code = eLazyBoolCalculate;
>>> +        *sb_bp = target_sp->CreateBreakpoint (NULL, *sb_file_spec,
>>> line, check_inlines, skip_prologue, internal, hardware,
>>> move_to_nearest_code);
>>>      }
>>>
>>>      if (log)
>>> @@ -1055,6 +1056,7 @@ SBTarget::BreakpointCreateBySourceRegex
>>>          RegularExpression regexp(source_regex);
>>>          FileSpecList source_file_spec_list;
>>>          const bool hardware = false;
>>> +        const LazyBool move_to_nearest_code = eLazyBoolCalculate;
>>>          source_file_spec_list.Append (source_file.ref());
>>>
>>>          if (module_name && module_name[0])
>>> @@ -1062,11 +1064,11 @@ SBTarget::BreakpointCreateBySourceRegex
>>>              FileSpecList module_spec_list;
>>>              module_spec_list.Append (FileSpec (module_name, false));
>>>
>>> -            *sb_bp = target_sp->CreateSourceRegexBreakpoint
>>> (&module_spec_list, &source_file_spec_list, regexp, false, hardware);
>>> +            *sb_bp = target_sp->CreateSourceRegexBreakpoint
>>> (&module_spec_list, &source_file_spec_list, regexp, false, hardware,
>>> move_to_nearest_code);
>>>          }
>>>          else
>>>          {
>>> -            *sb_bp = target_sp->CreateSourceRegexBreakpoint (NULL,
>>> &source_file_spec_list, regexp, false, hardware);
>>> +            *sb_bp = target_sp->CreateSourceRegexBreakpoint (NULL,
>>> &source_file_spec_list, regexp, false, hardware, move_to_nearest_code);
>>>          }
>>>      }
>>>
>>> @@ -1095,8 +1097,9 @@ SBTarget::BreakpointCreateBySourceRegex
>>>      {
>>>          Mutex::Locker api_locker (target_sp->GetAPIMutex());
>>>          const bool hardware = false;
>>> +        const LazyBool move_to_nearest_code = eLazyBoolCalculate;
>>>          RegularExpression regexp(source_regex);
>>> -        *sb_bp = target_sp->CreateSourceRegexBreakpoint
>>> (module_list.get(), source_file_list.get(), regexp, false, hardware);
>>> +        *sb_bp = target_sp->CreateSourceRegexBreakpoint
>>> (module_list.get(), source_file_list.get(), regexp, false, hardware,
>>> move_to_nearest_code);
>>>      }
>>>
>>>      if (log)
>>>
>>> Modified: lldb/trunk/source/Breakpoint/BreakpointResolverFileLine.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/BreakpointResolverFileLine.cpp?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/source/Breakpoint/BreakpointResolverFileLine.cpp
>>> (original)
>>> +++ lldb/trunk/source/Breakpoint/BreakpointResolverFileLine.cpp Fri May
>>> 15 13:16:15 2015
>>> @@ -32,13 +32,15 @@ BreakpointResolverFileLine::BreakpointRe
>>>      const FileSpec &file_spec,
>>>      uint32_t line_no,
>>>      bool check_inlines,
>>> -    bool skip_prologue
>>> +    bool skip_prologue,
>>> +    bool exact_match
>>>  ) :
>>>      BreakpointResolver (bkpt, BreakpointResolver::FileLineResolver),
>>>      m_file_spec (file_spec),
>>>      m_line_number (line_no),
>>>      m_inlines (check_inlines),
>>> -    m_skip_prologue(skip_prologue)
>>> +    m_skip_prologue(skip_prologue),
>>> +    m_exact_match(exact_match)
>>>  {
>>>  }
>>>
>>> @@ -78,7 +80,7 @@ BreakpointResolverFileLine::SearchCallba
>>>          if (cu_sp)
>>>          {
>>>              if (filter.CompUnitPasses(*cu_sp))
>>> -                cu_sp->ResolveSymbolContext (m_file_spec,
>>> m_line_number, m_inlines, false, eSymbolContextEverything, sc_list);
>>> +                cu_sp->ResolveSymbolContext (m_file_spec,
>>> m_line_number, m_inlines, m_exact_match, eSymbolContextEverything, sc_list);
>>>          }
>>>      }
>>>      StreamString s;
>>> @@ -100,7 +102,7 @@ BreakpointResolverFileLine::GetDepth()
>>>  void
>>>  BreakpointResolverFileLine::GetDescription (Stream *s)
>>>  {
>>> -    s->Printf ("file = '%s', line = %u", m_file_spec.GetPath().c_str(),
>>> m_line_number);
>>> +    s->Printf ("file = '%s', line = %u, exact_match = %d",
>>> m_file_spec.GetPath().c_str(), m_line_number, m_exact_match);
>>>  }
>>>
>>>  void
>>> @@ -116,7 +118,8 @@ BreakpointResolverFileLine::CopyForBreak
>>>
>>> m_file_spec,
>>>
>>> m_line_number,
>>>
>>> m_inlines,
>>> -
>>>  m_skip_prologue));
>>> +
>>>  m_skip_prologue,
>>> +
>>>  m_exact_match));
>>>
>>>      return ret_sp;
>>>  }
>>>
>>> Modified: lldb/trunk/source/Breakpoint/BreakpointResolverFileRegex.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/BreakpointResolverFileRegex.cpp?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/source/Breakpoint/BreakpointResolverFileRegex.cpp
>>> (original)
>>> +++ lldb/trunk/source/Breakpoint/BreakpointResolverFileRegex.cpp Fri May
>>> 15 13:16:15 2015
>>> @@ -29,10 +29,12 @@ using namespace lldb_private;
>>>  BreakpointResolverFileRegex::BreakpointResolverFileRegex
>>>  (
>>>      Breakpoint *bkpt,
>>> -    RegularExpression &regex
>>> +    RegularExpression &regex,
>>> +    bool exact_match
>>>  ) :
>>>      BreakpointResolver (bkpt, BreakpointResolver::FileLineResolver),
>>> -    m_regex (regex)
>>> +    m_regex (regex),
>>> +    m_exact_match (exact_match)
>>>  {
>>>  }
>>>
>>> @@ -64,9 +66,8 @@ BreakpointResolverFileRegex::SearchCallb
>>>      {
>>>          SymbolContextList sc_list;
>>>          const bool search_inlines = false;
>>> -        const bool exact = false;
>>>
>>> -        cu->ResolveSymbolContext (cu_file_spec, line_matches[i],
>>> search_inlines, exact, eSymbolContextEverything, sc_list);
>>> +        cu->ResolveSymbolContext (cu_file_spec, line_matches[i],
>>> search_inlines, m_exact_match, eSymbolContextEverything, sc_list);
>>>          const bool skip_prologue = true;
>>>
>>>          BreakpointResolver::SetSCMatchesByLine (filter, sc_list,
>>> skip_prologue, m_regex.GetText());
>>> @@ -85,7 +86,7 @@ BreakpointResolverFileRegex::GetDepth()
>>>  void
>>>  BreakpointResolverFileRegex::GetDescription (Stream *s)
>>>  {
>>> -    s->Printf ("source regex = \"%s\"", m_regex.GetText());
>>> +    s->Printf ("source regex = \"%s\", exact_match = %d",
>>> m_regex.GetText(), m_exact_match);
>>>  }
>>>
>>>  void
>>> @@ -97,7 +98,7 @@ BreakpointResolverFileRegex::Dump (Strea
>>>  lldb::BreakpointResolverSP
>>>  BreakpointResolverFileRegex::CopyForBreakpoint (Breakpoint &breakpoint)
>>>  {
>>> -    lldb::BreakpointResolverSP ret_sp(new
>>> BreakpointResolverFileRegex(&breakpoint, m_regex));
>>> +    lldb::BreakpointResolverSP ret_sp(new
>>> BreakpointResolverFileRegex(&breakpoint, m_regex, m_exact_match));
>>>      return ret_sp;
>>>  }
>>>
>>>
>>> Modified: lldb/trunk/source/Commands/CommandObjectBreakpoint.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectBreakpoint.cpp?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/source/Commands/CommandObjectBreakpoint.cpp (original)
>>> +++ lldb/trunk/source/Commands/CommandObjectBreakpoint.cpp Fri May 15
>>> 13:16:15 2015
>>> @@ -115,7 +115,8 @@ public:
>>>              m_exception_language (eLanguageTypeUnknown),
>>>              m_skip_prologue (eLazyBoolCalculate),
>>>              m_one_shot (false),
>>> -            m_all_files (false)
>>> +            m_all_files (false),
>>> +            m_move_to_nearest_code (eLazyBoolCalculate)
>>>          {
>>>          }
>>>
>>> @@ -249,6 +250,22 @@ public:
>>>                          error.SetErrorStringWithFormat ("invalid line
>>> number: %s.", option_arg);
>>>                      break;
>>>                  }
>>> +
>>> +                case 'm':
>>> +                {
>>> +                    bool success;
>>> +                    bool value;
>>> +                    value = Args::StringToBoolean (option_arg, true,
>>> &success);
>>> +                    if (value)
>>> +                        m_move_to_nearest_code = eLazyBoolYes;
>>> +                    else
>>> +                        m_move_to_nearest_code = eLazyBoolNo;
>>> +
>>> +                    if (!success)
>>> +                        error.SetErrorStringWithFormat ("Invalid
>>> boolean value for move-to-nearest-code option: '%s'", option_arg);
>>> +                    break;
>>> +                }
>>> +
>>>                  case 'M':
>>>                      m_func_names.push_back (option_arg);
>>>                      m_func_name_type_mask |= eFunctionNameTypeMethod;
>>> @@ -361,6 +378,7 @@ public:
>>>              m_breakpoint_names.clear();
>>>              m_all_files = false;
>>>              m_exception_extra_args.Clear();
>>> +            m_move_to_nearest_code = eLazyBoolCalculate;
>>>          }
>>>
>>>          const OptionDefinition*
>>> @@ -400,6 +418,7 @@ public:
>>>          bool m_use_dummy;
>>>          bool m_all_files;
>>>          Args m_exception_extra_args;
>>> +        LazyBool m_move_to_nearest_code;
>>>
>>>      };
>>>
>>> @@ -477,7 +496,8 @@ protected:
>>>                                                     check_inlines,
>>>
>>> m_options.m_skip_prologue,
>>>                                                     internal,
>>> -
>>>  m_options.m_hardware).get();
>>> +                                                   m_options.m_hardware,
>>> +
>>>  m_options.m_move_to_nearest_code).get();
>>>                  }
>>>                  break;
>>>
>>> @@ -558,7 +578,8 @@ protected:
>>>
>>>  &(m_options.m_filenames),
>>>                                                                regexp,
>>>                                                                internal,
>>> -
>>> m_options.m_hardware).get();
>>> +
>>> m_options.m_hardware,
>>> +
>>> m_options.m_move_to_nearest_code).get();
>>>                  }
>>>                  break;
>>>              case eSetTypeException:
>>> @@ -689,6 +710,7 @@ private:
>>>  #define LLDB_OPT_FILE ( LLDB_OPT_SET_FROM_TO(1, 9) & ~LLDB_OPT_SET_2 )
>>>  #define LLDB_OPT_NOT_10 ( LLDB_OPT_SET_FROM_TO(1, 10) &
>>> ~LLDB_OPT_SET_10 )
>>>  #define LLDB_OPT_SKIP_PROLOGUE ( LLDB_OPT_SET_1 |
>>> LLDB_OPT_SET_FROM_TO(3,8) )
>>> +#define LLDB_OPT_MOVE_TO_NEAREST_CODE ( LLDB_OPT_SET_1 | LLDB_OPT_SET_9
>>> )
>>>
>>>  OptionDefinition
>>>  CommandObjectBreakpointSet::CommandOptions::g_option_table[] =
>>> @@ -789,6 +811,9 @@ CommandObjectBreakpointSet::CommandOptio
>>>      { LLDB_OPT_SET_ALL, false, "breakpoint-name", 'N',
>>> OptionParser::eRequiredArgument, NULL, NULL, 0, eArgTypeBreakpointName,
>>>          "Adds this to the list of names for this breakopint."},
>>>
>>> +    { LLDB_OPT_MOVE_TO_NEAREST_CODE, false, "move-to-nearest-code",
>>> 'm', OptionParser::eRequiredArgument, NULL, NULL, 0, eArgTypeBoolean,
>>> +        "Move breakpoints to nearest code. If not set the
>>> target.move-to-nearest-code setting is used." },
>>> +
>>>      { 0, false, NULL, 0, 0, NULL, NULL, 0, eArgTypeNone, NULL }
>>>  };
>>>
>>>
>>> Modified: lldb/trunk/source/Core/IOHandler.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/IOHandler.cpp?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/source/Core/IOHandler.cpp (original)
>>> +++ lldb/trunk/source/Core/IOHandler.cpp Fri May 15 13:16:15 2015
>>> @@ -5326,7 +5326,8 @@ public:
>>>
>>>                eLazyBoolCalculate,        // Check inlines using global
>>> setting
>>>
>>>                eLazyBoolCalculate,        // Skip prologue using global
>>> setting,
>>>
>>>                false,                     // internal
>>> -
>>>               false);                    // request_hardware
>>> +
>>>               false,                     // request_hardware
>>> +
>>>               eLazyBoolCalculate);       // move_to_nearest_code
>>>                          // Make breakpoint one shot
>>>                          bp_sp->GetOptions()->SetOneShot(true);
>>>                          exe_ctx.GetProcessRef().Resume();
>>> @@ -5361,7 +5362,8 @@ public:
>>>
>>>                eLazyBoolCalculate,        // Check inlines using global
>>> setting
>>>
>>>                eLazyBoolCalculate,        // Skip prologue using global
>>> setting,
>>>
>>>                false,                     // internal
>>> -
>>>               false);                    // request_hardware
>>> +
>>>               false,                     // request_hardware
>>> +
>>>               eLazyBoolCalculate);       // move_to_nearest_code
>>>                      }
>>>                  }
>>>                  else if (m_selected_line < GetNumDisassemblyLines())
>>>
>>> Modified: lldb/trunk/source/Target/Target.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Target.cpp?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/source/Target/Target.cpp (original)
>>> +++ lldb/trunk/source/Target/Target.cpp Fri May 15 13:16:15 2015
>>> @@ -273,10 +273,13 @@ Target::CreateSourceRegexBreakpoint (con
>>>                                       const FileSpecList
>>> *source_file_spec_list,
>>>                                       RegularExpression &source_regex,
>>>                                       bool internal,
>>> -                                     bool hardware)
>>> +                                     bool hardware,
>>> +                                     LazyBool move_to_nearest_code)
>>>  {
>>>      SearchFilterSP filter_sp(GetSearchFilterForModuleAndCUList
>>> (containingModules, source_file_spec_list));
>>> -    BreakpointResolverSP resolver_sp(new BreakpointResolverFileRegex
>>> (NULL, source_regex));
>>> +    if (move_to_nearest_code == eLazyBoolCalculate)
>>> +        move_to_nearest_code = GetMoveToNearestCode() ? eLazyBoolYes :
>>> eLazyBoolNo;
>>> +    BreakpointResolverSP resolver_sp(new BreakpointResolverFileRegex
>>> (NULL, source_regex, !static_cast<bool>(move_to_nearest_code)));
>>>      return CreateBreakpoint (filter_sp, resolver_sp, internal,
>>> hardware, true);
>>>  }
>>>
>>> @@ -288,7 +291,8 @@ Target::CreateBreakpoint (const FileSpec
>>>                            LazyBool check_inlines,
>>>                            LazyBool skip_prologue,
>>>                            bool internal,
>>> -                          bool hardware)
>>> +                          bool hardware,
>>> +                          LazyBool move_to_nearest_code)
>>>  {
>>>      if (check_inlines == eLazyBoolCalculate)
>>>      {
>>> @@ -325,12 +329,15 @@ Target::CreateBreakpoint (const FileSpec
>>>      }
>>>      if (skip_prologue == eLazyBoolCalculate)
>>>          skip_prologue = GetSkipPrologue() ? eLazyBoolYes : eLazyBoolNo;
>>> +    if (move_to_nearest_code == eLazyBoolCalculate)
>>> +        move_to_nearest_code = GetMoveToNearestCode() ? eLazyBoolYes :
>>> eLazyBoolNo;
>>>
>>>      BreakpointResolverSP resolver_sp(new BreakpointResolverFileLine
>>> (NULL,
>>>
>>> file,
>>>
>>> line_no,
>>>
>>> check_inlines,
>>> -
>>>  skip_prologue));
>>> +
>>>  skip_prologue,
>>> +
>>>  !static_cast<bool>(move_to_nearest_code)));
>>>      return CreateBreakpoint (filter_sp, resolver_sp, internal,
>>> hardware, true);
>>>  }
>>>
>>> @@ -2928,6 +2935,7 @@ static PropertyDefinition
>>>  g_properties[] =
>>>  {
>>>      { "default-arch"                       , OptionValue::eTypeArch
>>>   , true , 0                         , NULL, NULL, "Default architecture to
>>> choose, when there's a choice." },
>>> +    { "move-to-nearest-code"               , OptionValue::eTypeBoolean
>>>  , false, true                      , NULL, NULL, "Move breakpoints to
>>> nearest code." },
>>>      { "expr-prefix"                        ,
>>> OptionValue::eTypeFileSpec  , false, 0                         , NULL,
>>> NULL, "Path to a file containing expressions to be prepended to all
>>> expressions." },
>>>      { "prefer-dynamic-value"               , OptionValue::eTypeEnum
>>>   , false, eDynamicDontRunTarget     , NULL, g_dynamic_value_types, "Should
>>> printed values be shown as their dynamic value." },
>>>      { "enable-synthetic-value"             , OptionValue::eTypeBoolean
>>>  , false, true                      , NULL, NULL, "Should synthetic values
>>> be used by default whenever available." },
>>> @@ -2985,6 +2993,7 @@ g_properties[] =
>>>  enum
>>>  {
>>>      ePropertyDefaultArch,
>>> +    ePropertyMoveToNearestCode,
>>>      ePropertyExprPrefix,
>>>      ePropertyPreferDynamic,
>>>      ePropertyEnableSynthetic,
>>> @@ -3193,6 +3202,13 @@ TargetProperties::SetDefaultArchitecture
>>>          return value->SetCurrentValue(arch, true);
>>>  }
>>>
>>> +bool
>>> +TargetProperties::GetMoveToNearestCode() const
>>> +{
>>> +    const uint32_t idx = ePropertyMoveToNearestCode;
>>> +    return m_collection_sp->GetPropertyAtIndexAsBoolean (NULL, idx,
>>> g_properties[idx].default_uint_value != 0);
>>> +}
>>> +
>>>  lldb::DynamicValueType
>>>  TargetProperties::GetPreferDynamicValue() const
>>>  {
>>>
>>> Modified:
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
>>> (original)
>>> +++
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
>>> Fri May 15 13:16:15 2015
>>> @@ -64,12 +64,12 @@ class BreakpointCommandTestCase(TestBase
>>>
>>>          # The breakpoint list now only contains breakpoint 1.
>>>          self.expect("breakpoint list", "Breakpoints 1 & 2 created",
>>> -            substrs = ["2: file = 'main.c', line = %d, locations = 1" %
>>> self.line],
>>> -            patterns = ["1: file = '.*main.c', line = %d, locations =
>>> 1" % self.line] )
>>> +            substrs = ["2: file = 'main.c', line = %d, exact_match = 0,
>>> locations = 1" % self.line],
>>> +            patterns = ["1: file = '.*main.c', line = %d, exact_match =
>>> 0, locations = 1" % self.line] )
>>>
>>>          self.expect("breakpoint list -f", "Breakpoints 1 & 2 created",
>>> -            substrs = ["2: file = 'main.c', line = %d, locations = 1" %
>>> self.line],
>>> -            patterns = ["1: file = '.*main.c', line = %d, locations =
>>> 1" % self.line,
>>> +            substrs = ["2: file = 'main.c', line = %d, exact_match = 0,
>>> locations = 1" % self.line],
>>> +            patterns = ["1: file = '.*main.c', line = %d, exact_match =
>>> 0, locations = 1" % self.line,
>>>                          "1.1: .+at main.c:%d, .+unresolved, hit count =
>>> 0" % self.line,
>>>                          "2.1: .+at main.c:%d, .+unresolved, hit count =
>>> 0" % self.line])
>>>
>>> @@ -151,13 +151,13 @@ class BreakpointCommandTestCase(TestBase
>>>
>>>          # The breakpoint list now only contains breakpoint 1.
>>>          self.expect("breakpoint list -f", "Breakpoint 1 exists",
>>> -            patterns = ["1: file = '.*main.c', line = %d, locations =
>>> 1, resolved = 1" %
>>> +            patterns = ["1: file = '.*main.c', line = %d, exact_match =
>>> 0, locations = 1, resolved = 1" %
>>>                          self.line,
>>>                         "hit count = 1"])
>>>
>>>          # Not breakpoint 2.
>>>          self.expect("breakpoint list -f", "No more breakpoint 2",
>>> matching=False,
>>> -            substrs = ["2: file = 'main.c', line = %d, locations = 1,
>>> resolved = 1" %
>>> +            substrs = ["2: file = 'main.c', line = %d, exact_match = 0,
>>> locations = 1, resolved = 1" %
>>>                          self.line])
>>>
>>>          # Run the program again, with breakpoint 1 remaining.
>>>
>>> Modified:
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py
>>> (original)
>>> +++
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_locations/TestBreakpointLocations.py
>>> Fri May 15 13:16:15 2015
>>> @@ -41,7 +41,7 @@ class BreakpointLocationsTestCase(TestBa
>>>
>>>          # The breakpoint list should show 3 locations.
>>>          self.expect("breakpoint list -f", "Breakpoint locations shown
>>> correctly",
>>> -            substrs = ["1: file = 'main.c', line = %d, locations = 3" %
>>> self.line],
>>> +            substrs = ["1: file = 'main.c', line = %d, exact_match = 0,
>>> locations = 3" % self.line],
>>>              patterns = ["where = a.out`func_inlined .+unresolved, hit
>>> count = 0",
>>>                          "where = a.out`main .+\[inlined\].+unresolved,
>>> hit count = 0"])
>>>
>>>
>>> Added:
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_options/Makefile
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/breakpoint/breakpoint_options/Makefile?rev=237460&view=auto
>>>
>>> ==============================================================================
>>> ---
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_options/Makefile
>>> (added)
>>> +++
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_options/Makefile Fri
>>> May 15 13:16:15 2015
>>> @@ -0,0 +1,5 @@
>>> +LEVEL = ../../../make
>>> +
>>> +C_SOURCES := main.c
>>> +
>>> +include $(LEVEL)/Makefile.rules
>>>
>>> Added:
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py?rev=237460&view=auto
>>>
>>> ==============================================================================
>>> ---
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py
>>> (added)
>>> +++
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_options/TestBreakpointOptions.py
>>> Fri May 15 13:16:15 2015
>>> @@ -0,0 +1,77 @@
>>> +"""
>>> +Test breakpoint command for different options.
>>> +"""
>>> +
>>> +import os
>>> +import unittest2
>>> +import lldb
>>> +from lldbtest import *
>>> +import lldbutil
>>> +
>>> +class BreakpointOptionsTestCase(TestBase):
>>> +
>>> +    mydir = TestBase.compute_mydir(__file__)
>>> +
>>> +    @skipUnlessDarwin
>>> +    @dsym_test
>>> +    def test_with_dsym(self):
>>> +        """Test breakpoint command for different options."""
>>> +        self.buildDsym()
>>> +        self.breakpoint_options_test()
>>> +
>>> +    @dwarf_test
>>> +    def test_with_dwarf(self):
>>> +        """Test breakpoint command for different options."""
>>> +        self.buildDwarf()
>>> +        self.breakpoint_options_test()
>>> +
>>> +    def setUp(self):
>>> +        # Call super's setUp().
>>> +        TestBase.setUp(self)
>>> +        # Find the line number to break inside main().
>>> +        self.line = line_number('main.c', '// Set break point at this
>>> line.')
>>> +
>>> +    def breakpoint_options_test(self):
>>> +        """Test breakpoint command for different options."""
>>> +        exe = os.path.join(os.getcwd(), "a.out")
>>> +        self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
>>> +
>>> +        # This should create a breakpoint with 1 locations.
>>> +        lldbutil.run_break_set_by_file_and_line (self, "main.c",
>>> self.line, extra_options = "-K 1", num_expected_locations = 1)
>>> +        lldbutil.run_break_set_by_file_and_line (self, "main.c",
>>> self.line, extra_options = "-K 0", num_expected_locations = 1)
>>> +
>>> +        # This should create a breakpoint 0 locations.
>>> +        lldbutil.run_break_set_by_file_and_line (self, "main.c",
>>> self.line, extra_options = "-m 0", num_expected_locations = 0)
>>> +
>>> +        # Run the program.
>>> +        self.runCmd("run", RUN_SUCCEEDED)
>>> +
>>> +        # Stopped once.
>>> +        self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT,
>>> +            substrs = ["stop reason = breakpoint 2."])
>>> +
>>> +        # Check the list of breakpoint.
>>> +        self.expect("breakpoint list -f", "Breakpoint locations shown
>>> correctly",
>>> +            substrs = ["1: file = 'main.c', line = %d, exact_match = 0,
>>> locations = 1" % self.line,
>>> +                       "2: file = 'main.c', line = %d, exact_match = 0,
>>> locations = 1" % self.line,
>>> +                       "3: file = 'main.c', line = %d, exact_match = 1,
>>> locations = 0" % self.line])
>>> +
>>> +        # Continue the program, there should be another stop.
>>> +        self.runCmd("process continue")
>>> +
>>> +        # Stopped again.
>>> +        self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT,
>>> +            substrs = ["stop reason = breakpoint 1."])
>>> +
>>> +        # Continue the program, we should exit.
>>> +        self.runCmd("process continue")
>>> +
>>> +        # We should exit.
>>> +        self.expect("process status", "Process exited successfully",
>>> +            patterns = ["^Process [0-9]+ exited with status = 0"])
>>> +
>>> +if __name__ == '__main__':
>>> +    import atexit
>>> +    lldb.SBDebugger.Initialize()
>>> +    atexit.register(lambda: lldb.SBDebugger.Terminate())
>>> +    unittest2.main()
>>>
>>> Added:
>>> lldb/trunk/test/functionalities/breakpoint/breakpoint_options/main.c
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/breakpoint/breakpoint_options/main.c?rev=237460&view=auto
>>>
>>> ==============================================================================
>>> --- lldb/trunk/test/functionalities/breakpoint/breakpoint_options/main.c
>>> (added)
>>> +++ lldb/trunk/test/functionalities/breakpoint/breakpoint_options/main.c
>>> Fri May 15 13:16:15 2015
>>> @@ -0,0 +1,7 @@
>>> +// Set break point at this line.
>>> +
>>> +int
>>> +main (int argc, char **argv)
>>> +{
>>> +  return 0;
>>> +}
>>>
>>> Modified:
>>> lldb/trunk/test/functionalities/breakpoint/dummy_target_breakpoints/TestBreakpointsWithNoTargets.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/breakpoint/dummy_target_breakpoints/TestBreakpointsWithNoTargets.py?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> ---
>>> lldb/trunk/test/functionalities/breakpoint/dummy_target_breakpoints/TestBreakpointsWithNoTargets.py
>>> (original)
>>> +++
>>> lldb/trunk/test/functionalities/breakpoint/dummy_target_breakpoints/TestBreakpointsWithNoTargets.py
>>> Fri May 15 13:16:15 2015
>>> @@ -54,8 +54,8 @@ class BreakpointInDummyTarget (TestBase)
>>>
>>>          # The breakpoint list should show 3 locations.
>>>          self.expect("breakpoint list -f", "Breakpoint locations shown
>>> correctly",
>>> -            substrs = ["1: file = 'main.c', line = %d, locations = 1" %
>>> self.line,
>>> -                       "2: file = 'main.c', line = %d, locations = 1" %
>>> self.line2])
>>> +            substrs = ["1: file = 'main.c', line = %d, exact_match = 0,
>>> locations = 1" % self.line,
>>> +                       "2: file = 'main.c', line = %d, exact_match = 0,
>>> locations = 1" % self.line2])
>>>
>>>          # Run the program.
>>>          self.runCmd("run", RUN_SUCCEEDED)
>>>
>>> Modified: lldb/trunk/test/lldbutil.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/lldbutil.py?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/test/lldbutil.py (original)
>>> +++ lldb/trunk/test/lldbutil.py Fri May 15 13:16:15 2015
>>> @@ -466,7 +466,7 @@ def check_breakpoint_result (test, break
>>>          test.assertTrue (file_name == out_file_name, "Breakpoint file
>>> name '%s' doesn't match resultant name '%s'."%(file_name, out_file_name))
>>>
>>>      if line_number != -1:
>>> -        out_file_line = -1
>>> +        out_line_number = -1
>>>          if 'line_no' in break_results:
>>>              out_line_number = break_results['line_no']
>>>
>>> @@ -486,7 +486,7 @@ def check_breakpoint_result (test, break
>>>              test.assertTrue(out_symbol_name.find(symbol_name) != -1,
>>> "Symbol name '%s' isn't in resultant symbol '%s'."%(symbol_name,
>>> out_symbol_name))
>>>
>>>      if module_name:
>>> -        out_nodule_name = None
>>> +        out_module_name = None
>>>          if 'module' in break_results:
>>>              out_module_name = break_results['module']
>>>
>>>
>>> Modified: lldb/trunk/test/settings/TestSettings.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/settings/TestSettings.py?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/test/settings/TestSettings.py (original)
>>> +++ lldb/trunk/test/settings/TestSettings.py Fri May 15 13:16:15 2015
>>> @@ -450,6 +450,7 @@ class SettingsCommandTestCase(TestBase):
>>>                                   "thread-format",
>>>                                   "use-external-editor",
>>>                                   "target.default-arch",
>>> +                                 "target.move-to-nearest-code",
>>>                                   "target.expr-prefix",
>>>                                   "target.prefer-dynamic-value",
>>>                                   "target.enable-synthetic-value",
>>>
>>> Modified: lldb/trunk/test/tools/lldb-mi/breakpoint/TestMiBreak.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/tools/lldb-mi/breakpoint/TestMiBreak.py?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/test/tools/lldb-mi/breakpoint/TestMiBreak.py (original)
>>> +++ lldb/trunk/test/tools/lldb-mi/breakpoint/TestMiBreak.py Fri May 15
>>> 13:16:15 2015
>>> @@ -159,5 +159,52 @@ class MiBreakTestCase(lldbmi_testcase.Mi
>>>          self.expect("\^running")
>>>          self.expect("\*stopped,reason=\"breakpoint-hit\"")
>>>
>>> +    @lldbmi_test
>>> +    @expectedFailureWindows("llvm.org/pr22274: need a pexpect
>>> replacement for windows")
>>> +    @skipIfFreeBSD # llvm.org/pr22411: Failure presumably due to known
>>> thread races
>>> +    def test_lldbmi_break_insert_settings(self):
>>> +        """Test that 'lldb-mi --interpreter' can set breakpoints
>>> accoridng to global options."""
>>> +
>>> +        self.spawnLldbMi(args = None)
>>> +
>>> +        # Load executable
>>> +        self.runCmd("-file-exec-and-symbols %s" % self.myexe)
>>> +        self.expect("\^done")
>>> +
>>> +        # Set target.move-to-nearest-code=off and try to set BP #1 that
>>> shouldn't be hit
>>> +        self.runCmd("-interpreter-exec console \"settings set
>>> target.move-to-nearest-code off\"")
>>> +        self.expect("\^done")
>>> +        line = line_number('main.cpp', '// BP_before_main')
>>> +        self.runCmd("-break-insert -f main.cpp:%d" % line)
>>> +        self.expect("\^done,bkpt={number=\"1\"")
>>> +
>>> +        # Set target.move-to-nearest-code=on and
>>> target.skip-prologue=on and set BP #2
>>> +        self.runCmd("-interpreter-exec console \"settings set
>>> target.move-to-nearest-code on\"")
>>> +        self.runCmd("-interpreter-exec console \"settings set
>>> target.skip-prologue on\"")
>>> +        self.expect("\^done")
>>> +        self.runCmd("-break-insert main.cpp:%d" % line)
>>> +        self.expect("\^done,bkpt={number=\"2\"")
>>> +
>>> +        # Set target.skip-prologue=off and set BP #3
>>> +        self.runCmd("-interpreter-exec console \"settings set
>>> target.skip-prologue off\"")
>>> +        self.expect("\^done")
>>> +        self.runCmd("-break-insert main.cpp:%d" % line)
>>> +        self.expect("\^done,bkpt={number=\"3\"")
>>> +
>>> +        # Test that BP #3 is located before BP #2
>>> +        self.runCmd("-exec-run")
>>> +        self.expect("\^running")
>>> +
>>> self.expect("\*stopped,reason=\"breakpoint-hit\",disp=\"del\",bkptno=\"3\"")
>>> +
>>> +        # Test that BP #2 is hit
>>> +        self.runCmd("-exec-continue")
>>> +        self.expect("\^running")
>>> +
>>> self.expect("\*stopped,reason=\"breakpoint-hit\",disp=\"del\",bkptno=\"2\"")
>>> +
>>> +        # Test that BP #1 wasn't set
>>> +        self.runCmd("-exec-continue")
>>> +        self.expect("\^running")
>>> +        self.expect("\*stopped,reason=\"exited-normally\"")
>>> +
>>>  if __name__ == '__main__':
>>>      unittest2.main()
>>>
>>> Modified: lldb/trunk/test/tools/lldb-mi/breakpoint/main.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/tools/lldb-mi/breakpoint/main.cpp?rev=237460&r1=237459&r2=237460&view=diff
>>>
>>> ==============================================================================
>>> --- lldb/trunk/test/tools/lldb-mi/breakpoint/main.cpp (original)
>>> +++ lldb/trunk/test/tools/lldb-mi/breakpoint/main.cpp Fri May 15
>>> 13:16:15 2015
>>> @@ -9,6 +9,8 @@
>>>
>>>  #include <cstdio>
>>>
>>> +// BP_before_main
>>> +
>>>  int
>>>  main(int argc, char const *argv[])
>>>  {
>>>
>>>
>>> _______________________________________________
>>> lldb-commits mailing list
>>> lldb-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20150518/64558f76/attachment.html>


More information about the lldb-commits mailing list