mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
791b7405f4
With the removal of the old VEC mechanism from the code base, update comments that still make reference to VECs. There should be no user visible changes after this commit. gdb/ChangeLog: * linespec.c (decode_digits_ordinary): Update comment. * make-target-delegates: No longer need to handle VEC case. * memrange.c (normalize_mem_ranges): Update comment. * namespace.c (add_using_directive): Update comment. * objc-lang.c (uniquify_strings): Update comment. * ppc-linux-nat.c (struct thread_points): Update comment. * probe.h (find_probes_in_objfile): Update comment. * target.h (enum flash_preserve_mode): Update comment. * varobj.c (varobj_restrict_range): Update comment. * varobj.h (varobj_list_children): Update comment. Change-Id: Iefd2e903705c3e79cd13b43395c7a1c167f9a088
73 lines
1.8 KiB
C
73 lines
1.8 KiB
C
/* Memory ranges
|
|
|
|
Copyright (C) 2010-2019 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#include "defs.h"
|
|
#include "memrange.h"
|
|
#include <algorithm>
|
|
|
|
int
|
|
mem_ranges_overlap (CORE_ADDR start1, int len1,
|
|
CORE_ADDR start2, int len2)
|
|
{
|
|
ULONGEST h, l;
|
|
|
|
l = std::max (start1, start2);
|
|
h = std::min (start1 + len1, start2 + len2);
|
|
return (l < h);
|
|
}
|
|
|
|
/* See memrange.h. */
|
|
|
|
int
|
|
address_in_mem_range (CORE_ADDR address, const struct mem_range *r)
|
|
{
|
|
return (r->start <= address
|
|
&& (address - r->start) < r->length);
|
|
}
|
|
|
|
void
|
|
normalize_mem_ranges (std::vector<mem_range> *memory)
|
|
{
|
|
if (!memory->empty ())
|
|
{
|
|
std::vector<mem_range> &m = *memory;
|
|
|
|
std::sort (m.begin (), m.end ());
|
|
|
|
int a = 0;
|
|
for (int b = 1; b < m.size (); b++)
|
|
{
|
|
/* If mem_range B overlaps or is adjacent to mem_range A,
|
|
merge them. */
|
|
if (m[b].start <= m[a].start + m[a].length)
|
|
{
|
|
m[a].length = std::max ((CORE_ADDR) m[a].length,
|
|
(m[b].start - m[a].start) + m[b].length);
|
|
continue; /* next b, same a */
|
|
}
|
|
a++; /* next a */
|
|
|
|
if (a != b)
|
|
m[a] = m[b];
|
|
}
|
|
|
|
m.resize (a + 1);
|
|
}
|
|
}
|