1/* Copyright (C) 2021 Free Software Foundation, Inc.
2   Contributed by Oracle.
3
4   This file is part of GNU Binutils.
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 3, or (at your option)
9   any later version.
10
11   This program is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with this program; if not, write to the Free Software
18   Foundation, 51 Franklin Street - Fifth Floor, Boston,
19   MA 02110-1301, USA.  */
20
21#ifndef _SEGMEM_H
22#define _SEGMEM_H
23
24#include "dbe_types.h"
25class Histable;
26
27class SegMem
28{
29public:
30
31  // The various segments types.
32  enum Seg_mode
33  {
34    READ,
35    WRITE,
36    EXEC,
37    UNKNOWN
38  };
39
40  void
41  set_file_offset (uint64_t fo)
42  {
43    file_offset = fo;
44  }
45
46  uint64_t
47  get_file_offset ()
48  {
49    return file_offset;
50  }
51
52  void
53  set_mode (Seg_mode sm)
54  {
55    mode = sm;
56  }
57
58  Seg_mode
59  get_mode ()
60  {
61    return mode;
62  }
63
64  Size size;            // Size of this instance
65  Histable *obj;        // Pointer to Segment/Function object
66  Vaddr base;           // Base address
67  hrtime_t load_time;
68  hrtime_t unload_time;
69  Size page_size;
70
71private:
72  uint64_t file_offset;
73  Seg_mode mode;
74};
75
76#endif /* _SEGMEM_H */
77