]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gprofng/src/Dwarf.h
gprofng: a new GNU profiler
[thirdparty/binutils-gdb.git] / gprofng / src / Dwarf.h
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 _Dwarf_h_
22 #define _Dwarf_h_ 1
23
24 #include "dwarf2.h"
25
26 #include "Stabs.h"
27 #include "dbe_structs.h"
28 #include "DwarfLib.h"
29
30 enum
31 {
32 /* ICC extensions */
33 DW_AT_icc_flags = 0x3b01,
34 DW_TAG_icc_compile_unit = 0x7000,
35
36 /* Sun extensions */
37 DW_ATCF_SUN_branch_target = 0x46,
38 DW_AT_SUN_command_line = 0x2205,
39 DW_AT_SUN_func_offsets = 0x2211,
40 DW_AT_SUN_cf_kind = 0x2212,
41 DW_AT_SUN_func_offset = 0x2216,
42 DW_AT_SUN_memop_type_ref = 0x2217,
43 DW_AT_SUN_profile_id = 0x2218,
44 DW_AT_SUN_memop_signature = 0x2219,
45 DW_AT_SUN_obj_dir = 0x2220,
46 DW_AT_SUN_obj_file = 0x2221,
47 DW_AT_SUN_original_name = 0x2222,
48 DW_AT_SUN_link_name = 0x2226,
49
50 DW_TAG_SUN_codeflags = 0x4206,
51 DW_TAG_SUN_memop_info = 0x4207,
52 DW_TAG_SUN_dtor_info = 0x420a,
53 DW_TAG_SUN_dtor = 0x420b,
54
55 DW_LANG_SUN_Assembler = 0x9001
56 };
57
58
59 class LoadObject;
60 class Module;
61 class DwrCU;
62 class DwrSec;
63
64 class Dwarf
65 {
66 public:
67 Dwarf (Stabs *_stabs);
68 ~Dwarf ();
69 bool archive_Dwarf (LoadObject *lo);
70 void srcline_Dwarf (Module *module);
71 void read_hwcprof_info (Module *module);
72
73 Stabs::Stab_status status;
74 Vector<DwrCU *> *dwrCUs;
75 DwrSec *debug_infoSec;
76 DwrSec *debug_abbrevSec;
77 DwrSec *debug_strSec;
78 DwrSec *debug_lineSec;
79 DwrSec *debug_rangesSec;
80 Elf *elf;
81 Stabs *stabs;
82
83 private:
84 DwrSec *dwrGetSec (const char *sec_name);
85 };
86
87 #endif /* _Dwarf_h_ */