Commit | Line | Data |
---|---|---|
cd4fb1b2 SM |
1 | /* Things needed for both reading and writing DWARF indices. |
2 | ||
b811d2c2 | 3 | Copyright (C) 1994-2020 Free Software Foundation, Inc. |
cd4fb1b2 SM |
4 | |
5 | This file is part of GDB. | |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 3 of the License, or | |
10 | (at your option) any later version. | |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
19 | ||
20 | #ifndef DWARF_INDEX_COMMON_H | |
21 | #define DWARF_INDEX_COMMON_H | |
22 | ||
87d6a7aa SM |
23 | /* The suffix for an index file. */ |
24 | #define INDEX4_SUFFIX ".gdb-index" | |
25 | #define INDEX5_SUFFIX ".debug_names" | |
26 | #define DEBUG_STR_SUFFIX ".debug_str" | |
27 | ||
cd4fb1b2 SM |
28 | /* All offsets in the index are of this type. It must be |
29 | architecture-independent. */ | |
30 | typedef uint32_t offset_type; | |
31 | ||
32 | #if WORDS_BIGENDIAN | |
33 | ||
34 | /* Convert VALUE between big- and little-endian. */ | |
35 | ||
36 | static inline offset_type | |
37 | byte_swap (offset_type value) | |
38 | { | |
39 | offset_type result; | |
40 | ||
41 | result = (value & 0xff) << 24; | |
42 | result |= (value & 0xff00) << 8; | |
43 | result |= (value & 0xff0000) >> 8; | |
44 | result |= (value & 0xff000000) >> 24; | |
45 | return result; | |
46 | } | |
47 | ||
48 | #define MAYBE_SWAP(V) byte_swap (V) | |
49 | ||
50 | #else | |
51 | #define MAYBE_SWAP(V) static_cast<offset_type> (V) | |
52 | #endif /* WORDS_BIGENDIAN */ | |
53 | ||
54 | /* The hash function for strings in the mapped index. This is the same as | |
55 | SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the | |
56 | implementation. This is necessary because the hash function is tied to the | |
57 | format of the mapped index file. The hash values do not have to match with | |
58 | SYMBOL_HASH_NEXT. | |
59 | ||
60 | Use INT_MAX for INDEX_VERSION if you generate the current index format. */ | |
61 | ||
62 | hashval_t mapped_index_string_hash (int index_version, const void *p); | |
63 | ||
64 | /* Symbol name hashing function as specified by DWARF-5. */ | |
65 | ||
66 | uint32_t dwarf5_djb_hash (const char *str_); | |
67 | ||
68 | #endif /* DWARF_INDEX_COMMON_H */ |