* RFA: correctly detect overlapping overlays
@ 2001-08-12 11:42 Jim Blandy
2001-08-12 19:13 ` Andrew Cagney
2001-08-24 10:44 ` Michael Snyder
0 siblings, 2 replies; 6+ messages in thread
From: Jim Blandy @ 2001-08-12 11:42 UTC (permalink / raw)
To: Michael Snyder; +Cc: gdb-patches
Same here.
2001-08-12 Jim Blandy <jimb@redhat.com>
* symfile.c (sections_overlap): New function.
(map_overlay_command): Call sections_overlap, instead of using
incorrect logic to recognize overlapping sections.
Index: gdb/symfile.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gdb/symfile.c,v
retrieving revision 1.237
diff -c -r1.237 symfile.c
*** gdb/symfile.c 2001/06/14 21:03:18 1.237
--- gdb/symfile.c 2001/08/12 17:28:35
***************
*** 2486,2491 ****
--- 2486,2492 ----
section_is_overlay(sect): true if section's VMA != LMA
pc_in_mapped_range(pc,sec): true if pc belongs to section's VMA
pc_in_unmapped_range(...): true if pc belongs to section's LMA
+ sections_overlap(sec1, sec2): true if mapped sec1 and sec2 ranges overlap
overlay_mapped_address(...): map an address from section's LMA to VMA
overlay_unmapped_address(...): map an address from section's VMA to LMA
symbol_overlayed_address(...): Return a "current" address for symbol:
***************
*** 2625,2630 ****
--- 2626,2645 ----
return 0;
}
+
+ /* Return true if the mapped ranges of sections A and B overlap, false
+ otherwise. */
+ int
+ sections_overlap (asection *a, asection *b)
+ {
+ CORE_ADDR a_start = a->vma;
+ CORE_ADDR a_end = a->vma + bfd_get_section_size_before_reloc (a);
+ CORE_ADDR b_start = b->vma;
+ CORE_ADDR b_end = b->vma + bfd_get_section_size_before_reloc (b);
+
+ return (a_start < b_end && b_start < a_end);
+ }
+
/* Function: overlay_unmapped_address (PC, SECTION)
Returns the address corresponding to PC in the unmapped (load) range.
May be the same as PC. */
***************
*** 2803,2813 ****
/* Next, make a pass and unmap any sections that are
overlapped by this new section: */
ALL_OBJSECTIONS (objfile2, sec2)
! if (sec2->ovly_mapped &&
! sec != sec2 &&
! sec->the_bfd_section != sec2->the_bfd_section &&
! (pc_in_mapped_range (sec2->addr, sec->the_bfd_section) ||
! pc_in_mapped_range (sec2->endaddr, sec->the_bfd_section)))
{
if (info_verbose)
printf_filtered ("Note: section %s unmapped by overlap\n",
--- 2818,2828 ----
/* Next, make a pass and unmap any sections that are
overlapped by this new section: */
ALL_OBJSECTIONS (objfile2, sec2)
! if (sec2->ovly_mapped
! && sec != sec2
! && sec->the_bfd_section != sec2->the_bfd_section
! && sections_overlap (sec->the_bfd_section,
! sec2->the_bfd_section))
{
if (info_verbose)
printf_filtered ("Note: section %s unmapped by overlap\n",
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: RFA: correctly detect overlapping overlays
2001-08-12 11:42 RFA: correctly detect overlapping overlays Jim Blandy
@ 2001-08-12 19:13 ` Andrew Cagney
2001-08-13 7:39 ` Jim Blandy
2001-08-24 10:44 ` Michael Snyder
1 sibling, 1 reply; 6+ messages in thread
From: Andrew Cagney @ 2001-08-12 19:13 UTC (permalink / raw)
To: Jim Blandy; +Cc: gdb-patches
> + CORE_ADDR a_start = a->vma;
> + CORE_ADDR a_end = a->vma + bfd_get_section_size_before_reloc (a);
> + CORE_ADDR b_start = b->vma;
> + CORE_ADDR b_end = b->vma + bfd_get_section_size_before_reloc (b);
Jim, just a reminder on coding style.
There isn't any reason to (and probably good reason to not) lay out the
code so carefully. It just makes the task of someone running indent
over the code all the more confusing.
Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: RFA: correctly detect overlapping overlays
2001-08-12 19:13 ` Andrew Cagney
@ 2001-08-13 7:39 ` Jim Blandy
2001-08-13 9:07 ` Andrew Cagney
2001-08-13 11:25 ` Michael Snyder
0 siblings, 2 replies; 6+ messages in thread
From: Jim Blandy @ 2001-08-13 7:39 UTC (permalink / raw)
To: Andrew Cagney; +Cc: gdb-patches
Andrew Cagney <ac131313@cygnus.com> writes:
> > + CORE_ADDR a_start = a->vma;
> > + CORE_ADDR a_end = a->vma + bfd_get_section_size_before_reloc (a);
> > + CORE_ADDR b_start = b->vma;
> > + CORE_ADDR b_end = b->vma + bfd_get_section_size_before_reloc (b);
>
>
> Jim, just a reminder on coding style.
> There isn't any reason to (and probably good reason to not) lay out the
> code so carefully. It just makes the task of someone running indent
> over the code all the more confusing.
I hadn't thought of people running indent. I'll fix that.
But I do think it's a shame. When layout can expose symmetry in what
you're doing, it makes it easier to read the code.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: RFA: correctly detect overlapping overlays
2001-08-13 7:39 ` Jim Blandy
@ 2001-08-13 9:07 ` Andrew Cagney
2001-08-13 11:25 ` Michael Snyder
1 sibling, 0 replies; 6+ messages in thread
From: Andrew Cagney @ 2001-08-13 9:07 UTC (permalink / raw)
To: Jim Blandy; +Cc: gdb-patches
> But I do think it's a shame. When layout can expose symmetry in what
> you're doing, it makes it easier to read the code.
Order it as:
start_a
start_b
end_a
end_b
enjoy,
Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: RFA: correctly detect overlapping overlays
2001-08-13 7:39 ` Jim Blandy
2001-08-13 9:07 ` Andrew Cagney
@ 2001-08-13 11:25 ` Michael Snyder
1 sibling, 0 replies; 6+ messages in thread
From: Michael Snyder @ 2001-08-13 11:25 UTC (permalink / raw)
To: Jim Blandy; +Cc: Andrew Cagney, gdb-patches
Jim Blandy wrote:
>
> Andrew Cagney <ac131313@cygnus.com> writes:
> > > + CORE_ADDR a_start = a->vma;
> > > + CORE_ADDR a_end = a->vma + bfd_get_section_size_before_reloc (a);
> > > + CORE_ADDR b_start = b->vma;
> > > + CORE_ADDR b_end = b->vma + bfd_get_section_size_before_reloc (b);
> >
> >
> > Jim, just a reminder on coding style.
> > There isn't any reason to (and probably good reason to not) lay out the
> > code so carefully. It just makes the task of someone running indent
> > over the code all the more confusing.
>
> I hadn't thought of people running indent. I'll fix that.
>
> But I do think it's a shame. When layout can expose symmetry in what
> you're doing, it makes it easier to read the code.
I agree, I like to do the kind of formatting that jim is doing.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: RFA: correctly detect overlapping overlays
2001-08-12 11:42 RFA: correctly detect overlapping overlays Jim Blandy
2001-08-12 19:13 ` Andrew Cagney
@ 2001-08-24 10:44 ` Michael Snyder
1 sibling, 0 replies; 6+ messages in thread
From: Michael Snyder @ 2001-08-24 10:44 UTC (permalink / raw)
To: Jim Blandy; +Cc: gdb-patches
Jim Blandy wrote:
>
> Same here.
Approved.
>
> 2001-08-12 Jim Blandy <jimb@redhat.com>
>
> * symfile.c (sections_overlap): New function.
> (map_overlay_command): Call sections_overlap, instead of using
> incorrect logic to recognize overlapping sections.
>
> Index: gdb/symfile.c
> ===================================================================
> RCS file: /cvs/cvsfiles/devo/gdb/symfile.c,v
> retrieving revision 1.237
> diff -c -r1.237 symfile.c
> *** gdb/symfile.c 2001/06/14 21:03:18 1.237
> --- gdb/symfile.c 2001/08/12 17:28:35
> ***************
> *** 2486,2491 ****
> --- 2486,2492 ----
> section_is_overlay(sect): true if section's VMA != LMA
> pc_in_mapped_range(pc,sec): true if pc belongs to section's VMA
> pc_in_unmapped_range(...): true if pc belongs to section's LMA
> + sections_overlap(sec1, sec2): true if mapped sec1 and sec2 ranges overlap
> overlay_mapped_address(...): map an address from section's LMA to VMA
> overlay_unmapped_address(...): map an address from section's VMA to LMA
> symbol_overlayed_address(...): Return a "current" address for symbol:
> ***************
> *** 2625,2630 ****
> --- 2626,2645 ----
> return 0;
> }
>
> +
> + /* Return true if the mapped ranges of sections A and B overlap, false
> + otherwise. */
> + int
> + sections_overlap (asection *a, asection *b)
> + {
> + CORE_ADDR a_start = a->vma;
> + CORE_ADDR a_end = a->vma + bfd_get_section_size_before_reloc (a);
> + CORE_ADDR b_start = b->vma;
> + CORE_ADDR b_end = b->vma + bfd_get_section_size_before_reloc (b);
> +
> + return (a_start < b_end && b_start < a_end);
> + }
> +
> /* Function: overlay_unmapped_address (PC, SECTION)
> Returns the address corresponding to PC in the unmapped (load) range.
> May be the same as PC. */
> ***************
> *** 2803,2813 ****
> /* Next, make a pass and unmap any sections that are
> overlapped by this new section: */
> ALL_OBJSECTIONS (objfile2, sec2)
> ! if (sec2->ovly_mapped &&
> ! sec != sec2 &&
> ! sec->the_bfd_section != sec2->the_bfd_section &&
> ! (pc_in_mapped_range (sec2->addr, sec->the_bfd_section) ||
> ! pc_in_mapped_range (sec2->endaddr, sec->the_bfd_section)))
> {
> if (info_verbose)
> printf_filtered ("Note: section %s unmapped by overlap\n",
> --- 2818,2828 ----
> /* Next, make a pass and unmap any sections that are
> overlapped by this new section: */
> ALL_OBJSECTIONS (objfile2, sec2)
> ! if (sec2->ovly_mapped
> ! && sec != sec2
> ! && sec->the_bfd_section != sec2->the_bfd_section
> ! && sections_overlap (sec->the_bfd_section,
> ! sec2->the_bfd_section))
> {
> if (info_verbose)
> printf_filtered ("Note: section %s unmapped by overlap\n",
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2001-08-24 10:44 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-12 11:42 RFA: correctly detect overlapping overlays Jim Blandy
2001-08-12 19:13 ` Andrew Cagney
2001-08-13 7:39 ` Jim Blandy
2001-08-13 9:07 ` Andrew Cagney
2001-08-13 11:25 ` Michael Snyder
2001-08-24 10:44 ` Michael Snyder
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox