1 /* Copyright (C) 2021-2023 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"
25 class Histable;
26
27 class SegMem
28 {
29 public:
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
71 private:
72 uint64_t file_offset;
73 Seg_mode mode;
74 };
75
76 #endif /* _SEGMEM_H */