mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 00:59:15 +08:00
cleanup and speed up (software_)breakpoint_inserted_here_p
Factor out common code, and use the more efficient ALL_BP_LOCATIONS_AT_ADDR. gdb/ 2015-01-09 Pedro Alves <palves@redhat.com> * breakpoint.c (bp_location_inserted_here_p): New function, factored out from ... (breakpoint_inserted_here_p): ... here. Use ALL_BP_LOCATIONS_AT_ADDR. (software_breakpoint_inserted_here_p): Use bp_location_inserted_here_p and ALL_BP_LOCATIONS_AT_ADDR.
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
2015-01-09 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* breakpoint.c (bp_location_inserted_here_p): New function,
|
||||||
|
factored out from ...
|
||||||
|
(breakpoint_inserted_here_p): ... here. Use
|
||||||
|
ALL_BP_LOCATIONS_AT_ADDR.
|
||||||
|
(software_breakpoint_inserted_here_p): Use
|
||||||
|
bp_location_inserted_here_p and ALL_BP_LOCATIONS_AT_ADDR.
|
||||||
|
|
||||||
2014-01-09 Pedro Alves <palves@redhat.com>
|
2014-01-09 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
Skip enabling event reporting if the kernel supports
|
Skip enabling event reporting if the kernel supports
|
||||||
|
@ -4226,30 +4226,46 @@ moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Returns non-zero iff BL is inserted at PC, in address space
|
||||||
|
ASPACE. */
|
||||||
|
|
||||||
|
static int
|
||||||
|
bp_location_inserted_here_p (struct bp_location *bl,
|
||||||
|
struct address_space *aspace, CORE_ADDR pc)
|
||||||
|
{
|
||||||
|
if (bl->inserted
|
||||||
|
&& breakpoint_address_match (bl->pspace->aspace, bl->address,
|
||||||
|
aspace, pc))
|
||||||
|
{
|
||||||
|
if (overlay_debugging
|
||||||
|
&& section_is_overlay (bl->section)
|
||||||
|
&& !section_is_mapped (bl->section))
|
||||||
|
return 0; /* unmapped overlay -- can't be a match */
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Returns non-zero iff there's a breakpoint inserted at PC. */
|
/* Returns non-zero iff there's a breakpoint inserted at PC. */
|
||||||
|
|
||||||
int
|
int
|
||||||
breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
|
breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
|
||||||
{
|
{
|
||||||
struct bp_location *bl, **blp_tmp;
|
struct bp_location **blp, **blp_tmp = NULL;
|
||||||
|
struct bp_location *bl;
|
||||||
|
|
||||||
ALL_BP_LOCATIONS (bl, blp_tmp)
|
ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
|
||||||
{
|
{
|
||||||
|
struct bp_location *bl = *blp;
|
||||||
|
|
||||||
if (bl->loc_type != bp_loc_software_breakpoint
|
if (bl->loc_type != bp_loc_software_breakpoint
|
||||||
&& bl->loc_type != bp_loc_hardware_breakpoint)
|
&& bl->loc_type != bp_loc_hardware_breakpoint)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (bl->inserted
|
if (bp_location_inserted_here_p (bl, aspace, pc))
|
||||||
&& breakpoint_location_address_match (bl, aspace, pc))
|
|
||||||
{
|
|
||||||
if (overlay_debugging
|
|
||||||
&& section_is_overlay (bl->section)
|
|
||||||
&& !section_is_mapped (bl->section))
|
|
||||||
continue; /* unmapped overlay -- can't be a match */
|
|
||||||
else
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4260,25 +4276,19 @@ int
|
|||||||
software_breakpoint_inserted_here_p (struct address_space *aspace,
|
software_breakpoint_inserted_here_p (struct address_space *aspace,
|
||||||
CORE_ADDR pc)
|
CORE_ADDR pc)
|
||||||
{
|
{
|
||||||
struct bp_location *bl, **blp_tmp;
|
struct bp_location **blp, **blp_tmp = NULL;
|
||||||
|
struct bp_location *bl;
|
||||||
|
|
||||||
ALL_BP_LOCATIONS (bl, blp_tmp)
|
ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
|
||||||
{
|
{
|
||||||
|
struct bp_location *bl = *blp;
|
||||||
|
|
||||||
if (bl->loc_type != bp_loc_software_breakpoint)
|
if (bl->loc_type != bp_loc_software_breakpoint)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (bl->inserted
|
if (bp_location_inserted_here_p (bl, aspace, pc))
|
||||||
&& breakpoint_address_match (bl->pspace->aspace, bl->address,
|
|
||||||
aspace, pc))
|
|
||||||
{
|
|
||||||
if (overlay_debugging
|
|
||||||
&& section_is_overlay (bl->section)
|
|
||||||
&& !section_is_mapped (bl->section))
|
|
||||||
continue; /* unmapped overlay -- can't be a match */
|
|
||||||
else
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user