This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Hardware breakpoint limitation issue during the gdb regression test


> Date: Thu, 9 Aug 2012 17:11:40 +0800
> From: Terry Guo <flameroc@gmail.com>
> 
> On Thu, Aug 9, 2012 at 11:47 AM, Yao Qi <yao@codesourcery.com> wrote:
> > On Wednesday, August 08, 2012 04:55:44 PM Terry Guo wrote:
> >> I managed to run gdb "make check" on a real arm cortex-m3 board.
> >> During this regression test, I saw many failures are caused by "Cannot
> >> insert hardware breakpoint 8" and "You may have requested too many
> >> hardware breakpoints/watchpoints". It's true that my arm board only
> >> supports limited number breakpoints. So how to workaround this
> >> limitation for regression test? Thanks.
> >
> > You don't have to workaround this limitation.  x86 also has a limited number
> > of hardware breakpoints and processor with unlimited hw breakpoints doesn't
> > exist at all :)  If testsuite works for x86, it should work for your
> > configuration.
> >
> > As you provide quite few information, I can't tell where the problem is.  In
> > testsuite, it is regarded that target "arm*-*-*" supports both hardware
> > breakpoint and watchpoint (see skip_hw_breakpoint_tests and
> > skip_hw_watchpoint_tests in testsuite/lib/gdb.exp), so all hw watch/break
> > tests are run on your board.
> >
> > You have to check whether your stub is able to handle hardware
> > breakpoint/watchpoint packets, and insert them correctly.
> >
> > --
> 
> Thanks for help. Here are more information. I am trying to run tests
> in break.exp on my cortex-m3 board. The test process is:
> 
> 1) start target gdb and load binary file.
> 2) set 8 different breakpoints.
> 3) then connect to my board and load binary file to board.
> 4) then use gdb command "continue" to start to run the binary. At this
> point, I will get error messages like:
> 
> -----GDB output---------
> (gdb) continue
> Continuing.
> Note: automatically using hardware breakpoints for read-only addresses.
> Warning:
> Cannot insert hardware breakpoint 2.
> Could not insert hardware breakpoints:
> You may have requested too many hardware breakpoints/watchpoints.
> 
> (gdb) break 46
> Breakpoint 9 at 0x180: file
> /home/terguo01/work/gcc-arm-none-eabi-4_8-2012q3-20120803/src/gdb/gdb/testsuite/gdb.base/break.c,
> line 46.
> (gdb) continue
> Continuing.
> Warning:
> Cannot insert hardware breakpoint 9.
> Cannot insert hardware breakpoint 2.
> Could not insert hardware breakpoints:
> You may have requested too many hardware breakpoints/watchpoints.
> ------------------------------------------------------------------------------------------------------
> 
> For me, it seems many tests in gdb regression test tend to set around
> 8 or 9 break points. And I always end with this error on "cannot
> insert hardware breakpoint".  Such tests can work on x86, I think it
> is because x86 can support more breakpoints than arm. I do need a way
> to make these tests can run on arm board. Please help.

No, x86 has even less hardware breakpoints (4).  But it will fall back
to using software breakpoints.  Your ARM target isn't doing that,
probably because:

  Note: automatically using hardware breakpoints for read-only addresses.

I think you either have to accept the failures you get or find a way
to make your binaries not read-only.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]