Пример #1
0
        public TargetMemoryArea(TargetAddress start, TargetAddress end,
					 TargetMemoryFlags flags, string name)
        {
            this.start = start;
            this.end = end;
            this.flags = flags;
            this.name = name;
        }
Пример #2
0
 public TargetMemoryArea(TargetAddress start, TargetAddress end,
                         TargetMemoryFlags flags, string name)
 {
     this.start = start;
     this.end   = end;
     this.flags = flags;
     this.name  = name;
 }
Пример #3
0
        public TargetMemoryArea[] GetMemoryMaps()
        {
            if (!is_coredump)
            {
                throw new InvalidOperationException();
            }

            ArrayList list = new ArrayList();

            read_sections();

            ArrayList all_sections = new ArrayList();

            all_sections.AddRange(sections);

            foreach (Section section in all_sections)
            {
                if ((section.flags & SectionFlags.Alloc) == 0)
                {
                    continue;
                }

                if (section.size == 0)
                {
                    continue;
                }

                TargetAddress start = new TargetAddress(
                    info.AddressDomain, section.vma);
                TargetAddress end = start + section.size;

                TargetMemoryFlags flags = 0;
                if ((section.flags & SectionFlags.ReadOnly) != 0)
                {
                    flags |= TargetMemoryFlags.ReadOnly;
                }

                if (list.Count > 0)
                {
                    TargetMemoryArea last = (TargetMemoryArea)list [list.Count - 1];

                    if ((last.Flags == flags) &&
                        ((last.End + 1 == start) || (last.End == start)))
                    {
                        list [list.Count - 1] = new TargetMemoryArea(
                            last.Start, end, last.Flags, last.Name);
                        continue;
                    }
                }

                string name = section.bfd.FileName;
                list.Add(new TargetMemoryArea(start, end, flags, name));
            }

            TargetMemoryArea[] maps = new TargetMemoryArea [list.Count];
            list.CopyTo(maps, 0);
            return(maps);
        }