Coverage Report

Created: 2025-07-08 11:15

/src/binutils-gdb/gas/hash.h
Line
Count
Source (jump to first uncovered line)
1
/* hash.h -- header file for gas hash table routines
2
   Copyright (C) 1987-2025 Free Software Foundation, Inc.
3
4
   This file is part of GAS, the GNU Assembler.
5
6
   GAS 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
   GAS 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 GAS; see the file COPYING.  If not, write to the Free
18
   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
19
   02110-1301, USA.  */
20
21
#ifndef HASH_H
22
#define HASH_H
23
24
struct string_tuple
25
{
26
  const char *key;
27
  intptr_t value;
28
};
29
30
typedef struct string_tuple string_tuple_t;
31
32
/* Hash function for a string_tuple.  */
33
34
extern hashval_t hash_string_tuple (const void *);
35
36
/* Equality function for a string_tuple.  */
37
38
extern int eq_string_tuple (const void *, const void *);
39
40
/* Insert ELEMENT into HTAB.  If REPLACE is non-zero existing elements
41
   are overwritten.  If ELEMENT already exists, a pointer to the slot
42
   is returned.  Otherwise NULL is returned.  */
43
44
extern void **htab_insert (htab_t, void * /* element */, int /* replace */);
45
46
/* Print statistics about a hash table.  */
47
48
extern void htab_print_statistics (FILE *f, const char *name, htab_t table);
49
50
/* Inline string hash table functions.  */
51
52
static inline string_tuple_t *
53
string_tuple_alloc (htab_t table, const char *key, intptr_t value)
54
0
{
55
0
  string_tuple_t *tuple = table->alloc_f (1, sizeof (*tuple));
56
0
  tuple->key = key;
57
0
  tuple->value = value;
58
0
  return tuple;
59
0
}
Unexecuted instantiation: fuzz_as.c:string_tuple_alloc
Unexecuted instantiation: codeview.c:string_tuple_alloc
Unexecuted instantiation: cond.c:string_tuple_alloc
Unexecuted instantiation: depend.c:string_tuple_alloc
Unexecuted instantiation: dw2gencfi.c:string_tuple_alloc
Unexecuted instantiation: dwarf2dbg.c:string_tuple_alloc
Unexecuted instantiation: ehopt.c:string_tuple_alloc
Unexecuted instantiation: expr.c:string_tuple_alloc
Unexecuted instantiation: frags.c:string_tuple_alloc
Unexecuted instantiation: gen-sframe.c:string_tuple_alloc
Unexecuted instantiation: input-scrub.c:string_tuple_alloc
Unexecuted instantiation: listing.c:string_tuple_alloc
Unexecuted instantiation: macro.c:string_tuple_alloc
Unexecuted instantiation: messages.c:string_tuple_alloc
Unexecuted instantiation: output-file.c:string_tuple_alloc
Unexecuted instantiation: read.c:string_tuple_alloc
Unexecuted instantiation: remap.c:string_tuple_alloc
Unexecuted instantiation: sb.c:string_tuple_alloc
Unexecuted instantiation: scfidw2gen.c:string_tuple_alloc
Unexecuted instantiation: stabs.c:string_tuple_alloc
Unexecuted instantiation: subsegs.c:string_tuple_alloc
Unexecuted instantiation: symbols.c:string_tuple_alloc
Unexecuted instantiation: write.c:string_tuple_alloc
Unexecuted instantiation: app.c:string_tuple_alloc
Unexecuted instantiation: atof-generic.c:string_tuple_alloc
Unexecuted instantiation: ecoff.c:string_tuple_alloc
Unexecuted instantiation: flonum-copy.c:string_tuple_alloc
Unexecuted instantiation: ginsn.c:string_tuple_alloc
Unexecuted instantiation: hash.c:string_tuple_alloc
Unexecuted instantiation: input-file.c:string_tuple_alloc
Unexecuted instantiation: scfi.c:string_tuple_alloc
Unexecuted instantiation: sframe-opt.c:string_tuple_alloc
Unexecuted instantiation: tc-i386.c:string_tuple_alloc
Unexecuted instantiation: obj-elf.c:string_tuple_alloc
Unexecuted instantiation: atof-ieee.c:string_tuple_alloc
60
61
static inline void *
62
str_hash_find (htab_t table, const char *key)
63
0
{
64
0
  string_tuple_t needle = { key, 0 };
65
0
  string_tuple_t *tuple = htab_find (table, &needle);
66
0
  return tuple != NULL ? (void *) tuple->value : NULL;
67
0
}
Unexecuted instantiation: fuzz_as.c:str_hash_find
Unexecuted instantiation: codeview.c:str_hash_find
Unexecuted instantiation: cond.c:str_hash_find
Unexecuted instantiation: depend.c:str_hash_find
Unexecuted instantiation: dw2gencfi.c:str_hash_find
Unexecuted instantiation: dwarf2dbg.c:str_hash_find
Unexecuted instantiation: ehopt.c:str_hash_find
Unexecuted instantiation: expr.c:str_hash_find
Unexecuted instantiation: frags.c:str_hash_find
Unexecuted instantiation: gen-sframe.c:str_hash_find
Unexecuted instantiation: input-scrub.c:str_hash_find
Unexecuted instantiation: listing.c:str_hash_find
Unexecuted instantiation: macro.c:str_hash_find
Unexecuted instantiation: messages.c:str_hash_find
Unexecuted instantiation: output-file.c:str_hash_find
Unexecuted instantiation: read.c:str_hash_find
Unexecuted instantiation: remap.c:str_hash_find
Unexecuted instantiation: sb.c:str_hash_find
Unexecuted instantiation: scfidw2gen.c:str_hash_find
Unexecuted instantiation: stabs.c:str_hash_find
Unexecuted instantiation: subsegs.c:str_hash_find
Unexecuted instantiation: symbols.c:str_hash_find
Unexecuted instantiation: write.c:str_hash_find
Unexecuted instantiation: app.c:str_hash_find
Unexecuted instantiation: atof-generic.c:str_hash_find
Unexecuted instantiation: ecoff.c:str_hash_find
Unexecuted instantiation: flonum-copy.c:str_hash_find
Unexecuted instantiation: ginsn.c:str_hash_find
Unexecuted instantiation: hash.c:str_hash_find
Unexecuted instantiation: input-file.c:str_hash_find
Unexecuted instantiation: scfi.c:str_hash_find
Unexecuted instantiation: sframe-opt.c:str_hash_find
Unexecuted instantiation: tc-i386.c:str_hash_find
Unexecuted instantiation: obj-elf.c:str_hash_find
Unexecuted instantiation: atof-ieee.c:str_hash_find
68
69
static inline intptr_t
70
str_hash_find_int (htab_t table, const char *key)
71
0
{
72
0
  string_tuple_t needle = { key, 0 };
73
0
  string_tuple_t *tuple = htab_find (table, &needle);
74
0
  return tuple != NULL ? tuple->value : -1;
75
0
}
Unexecuted instantiation: fuzz_as.c:str_hash_find_int
Unexecuted instantiation: codeview.c:str_hash_find_int
Unexecuted instantiation: cond.c:str_hash_find_int
Unexecuted instantiation: depend.c:str_hash_find_int
Unexecuted instantiation: dw2gencfi.c:str_hash_find_int
Unexecuted instantiation: dwarf2dbg.c:str_hash_find_int
Unexecuted instantiation: ehopt.c:str_hash_find_int
Unexecuted instantiation: expr.c:str_hash_find_int
Unexecuted instantiation: frags.c:str_hash_find_int
Unexecuted instantiation: gen-sframe.c:str_hash_find_int
Unexecuted instantiation: input-scrub.c:str_hash_find_int
Unexecuted instantiation: listing.c:str_hash_find_int
Unexecuted instantiation: macro.c:str_hash_find_int
Unexecuted instantiation: messages.c:str_hash_find_int
Unexecuted instantiation: output-file.c:str_hash_find_int
Unexecuted instantiation: read.c:str_hash_find_int
Unexecuted instantiation: remap.c:str_hash_find_int
Unexecuted instantiation: sb.c:str_hash_find_int
Unexecuted instantiation: scfidw2gen.c:str_hash_find_int
Unexecuted instantiation: stabs.c:str_hash_find_int
Unexecuted instantiation: subsegs.c:str_hash_find_int
Unexecuted instantiation: symbols.c:str_hash_find_int
Unexecuted instantiation: write.c:str_hash_find_int
Unexecuted instantiation: app.c:str_hash_find_int
Unexecuted instantiation: atof-generic.c:str_hash_find_int
Unexecuted instantiation: ecoff.c:str_hash_find_int
Unexecuted instantiation: flonum-copy.c:str_hash_find_int
Unexecuted instantiation: ginsn.c:str_hash_find_int
Unexecuted instantiation: hash.c:str_hash_find_int
Unexecuted instantiation: input-file.c:str_hash_find_int
Unexecuted instantiation: scfi.c:str_hash_find_int
Unexecuted instantiation: sframe-opt.c:str_hash_find_int
Unexecuted instantiation: tc-i386.c:str_hash_find_int
Unexecuted instantiation: obj-elf.c:str_hash_find_int
Unexecuted instantiation: atof-ieee.c:str_hash_find_int
76
77
static inline void *
78
str_hash_find_n (htab_t table, const char *key, size_t n)
79
0
{
80
0
  char *tmp = XNEWVEC (char, n + 1);
81
0
  memcpy (tmp, key, n);
82
0
  tmp[n] = '\0';
83
0
  string_tuple_t needle = { tmp, 0 };
84
0
  string_tuple_t *tuple = htab_find (table, &needle);
85
0
  free (tmp);
86
0
  return tuple != NULL ? (void *) tuple->value : NULL;
87
0
}
Unexecuted instantiation: fuzz_as.c:str_hash_find_n
Unexecuted instantiation: codeview.c:str_hash_find_n
Unexecuted instantiation: cond.c:str_hash_find_n
Unexecuted instantiation: depend.c:str_hash_find_n
Unexecuted instantiation: dw2gencfi.c:str_hash_find_n
Unexecuted instantiation: dwarf2dbg.c:str_hash_find_n
Unexecuted instantiation: ehopt.c:str_hash_find_n
Unexecuted instantiation: expr.c:str_hash_find_n
Unexecuted instantiation: frags.c:str_hash_find_n
Unexecuted instantiation: gen-sframe.c:str_hash_find_n
Unexecuted instantiation: input-scrub.c:str_hash_find_n
Unexecuted instantiation: listing.c:str_hash_find_n
Unexecuted instantiation: macro.c:str_hash_find_n
Unexecuted instantiation: messages.c:str_hash_find_n
Unexecuted instantiation: output-file.c:str_hash_find_n
Unexecuted instantiation: read.c:str_hash_find_n
Unexecuted instantiation: remap.c:str_hash_find_n
Unexecuted instantiation: sb.c:str_hash_find_n
Unexecuted instantiation: scfidw2gen.c:str_hash_find_n
Unexecuted instantiation: stabs.c:str_hash_find_n
Unexecuted instantiation: subsegs.c:str_hash_find_n
Unexecuted instantiation: symbols.c:str_hash_find_n
Unexecuted instantiation: write.c:str_hash_find_n
Unexecuted instantiation: app.c:str_hash_find_n
Unexecuted instantiation: atof-generic.c:str_hash_find_n
Unexecuted instantiation: ecoff.c:str_hash_find_n
Unexecuted instantiation: flonum-copy.c:str_hash_find_n
Unexecuted instantiation: ginsn.c:str_hash_find_n
Unexecuted instantiation: hash.c:str_hash_find_n
Unexecuted instantiation: input-file.c:str_hash_find_n
Unexecuted instantiation: scfi.c:str_hash_find_n
Unexecuted instantiation: sframe-opt.c:str_hash_find_n
Unexecuted instantiation: tc-i386.c:str_hash_find_n
Unexecuted instantiation: obj-elf.c:str_hash_find_n
Unexecuted instantiation: atof-ieee.c:str_hash_find_n
88
89
static inline void
90
str_hash_delete (htab_t table, const char *key)
91
0
{
92
0
  string_tuple_t needle = { key, 0 };
93
0
  htab_remove_elt (table, &needle);
94
0
}
Unexecuted instantiation: fuzz_as.c:str_hash_delete
Unexecuted instantiation: codeview.c:str_hash_delete
Unexecuted instantiation: cond.c:str_hash_delete
Unexecuted instantiation: depend.c:str_hash_delete
Unexecuted instantiation: dw2gencfi.c:str_hash_delete
Unexecuted instantiation: dwarf2dbg.c:str_hash_delete
Unexecuted instantiation: ehopt.c:str_hash_delete
Unexecuted instantiation: expr.c:str_hash_delete
Unexecuted instantiation: frags.c:str_hash_delete
Unexecuted instantiation: gen-sframe.c:str_hash_delete
Unexecuted instantiation: input-scrub.c:str_hash_delete
Unexecuted instantiation: listing.c:str_hash_delete
Unexecuted instantiation: macro.c:str_hash_delete
Unexecuted instantiation: messages.c:str_hash_delete
Unexecuted instantiation: output-file.c:str_hash_delete
Unexecuted instantiation: read.c:str_hash_delete
Unexecuted instantiation: remap.c:str_hash_delete
Unexecuted instantiation: sb.c:str_hash_delete
Unexecuted instantiation: scfidw2gen.c:str_hash_delete
Unexecuted instantiation: stabs.c:str_hash_delete
Unexecuted instantiation: subsegs.c:str_hash_delete
Unexecuted instantiation: symbols.c:str_hash_delete
Unexecuted instantiation: write.c:str_hash_delete
Unexecuted instantiation: app.c:str_hash_delete
Unexecuted instantiation: atof-generic.c:str_hash_delete
Unexecuted instantiation: ecoff.c:str_hash_delete
Unexecuted instantiation: flonum-copy.c:str_hash_delete
Unexecuted instantiation: ginsn.c:str_hash_delete
Unexecuted instantiation: hash.c:str_hash_delete
Unexecuted instantiation: input-file.c:str_hash_delete
Unexecuted instantiation: scfi.c:str_hash_delete
Unexecuted instantiation: sframe-opt.c:str_hash_delete
Unexecuted instantiation: tc-i386.c:str_hash_delete
Unexecuted instantiation: obj-elf.c:str_hash_delete
Unexecuted instantiation: atof-ieee.c:str_hash_delete
95
96
static inline void **
97
str_hash_insert_int (htab_t table, const char *key, intptr_t value, int replace)
98
0
{
99
0
  string_tuple_t *elt = string_tuple_alloc (table, key, value);
100
0
  void **slot = htab_insert (table, elt, replace);
101
0
  if (slot && !replace && table->free_f)
102
0
    table->free_f (elt);
103
0
  return slot;
104
0
}
Unexecuted instantiation: fuzz_as.c:str_hash_insert_int
Unexecuted instantiation: codeview.c:str_hash_insert_int
Unexecuted instantiation: cond.c:str_hash_insert_int
Unexecuted instantiation: depend.c:str_hash_insert_int
Unexecuted instantiation: dw2gencfi.c:str_hash_insert_int
Unexecuted instantiation: dwarf2dbg.c:str_hash_insert_int
Unexecuted instantiation: ehopt.c:str_hash_insert_int
Unexecuted instantiation: expr.c:str_hash_insert_int
Unexecuted instantiation: frags.c:str_hash_insert_int
Unexecuted instantiation: gen-sframe.c:str_hash_insert_int
Unexecuted instantiation: input-scrub.c:str_hash_insert_int
Unexecuted instantiation: listing.c:str_hash_insert_int
Unexecuted instantiation: macro.c:str_hash_insert_int
Unexecuted instantiation: messages.c:str_hash_insert_int
Unexecuted instantiation: output-file.c:str_hash_insert_int
Unexecuted instantiation: read.c:str_hash_insert_int
Unexecuted instantiation: remap.c:str_hash_insert_int
Unexecuted instantiation: sb.c:str_hash_insert_int
Unexecuted instantiation: scfidw2gen.c:str_hash_insert_int
Unexecuted instantiation: stabs.c:str_hash_insert_int
Unexecuted instantiation: subsegs.c:str_hash_insert_int
Unexecuted instantiation: symbols.c:str_hash_insert_int
Unexecuted instantiation: write.c:str_hash_insert_int
Unexecuted instantiation: app.c:str_hash_insert_int
Unexecuted instantiation: atof-generic.c:str_hash_insert_int
Unexecuted instantiation: ecoff.c:str_hash_insert_int
Unexecuted instantiation: flonum-copy.c:str_hash_insert_int
Unexecuted instantiation: ginsn.c:str_hash_insert_int
Unexecuted instantiation: hash.c:str_hash_insert_int
Unexecuted instantiation: input-file.c:str_hash_insert_int
Unexecuted instantiation: scfi.c:str_hash_insert_int
Unexecuted instantiation: sframe-opt.c:str_hash_insert_int
Unexecuted instantiation: tc-i386.c:str_hash_insert_int
Unexecuted instantiation: obj-elf.c:str_hash_insert_int
Unexecuted instantiation: atof-ieee.c:str_hash_insert_int
105
106
static inline void **
107
str_hash_insert (htab_t table, const char *key, const void *value, int replace)
108
0
{
109
0
  return str_hash_insert_int (table, key, (intptr_t) value, replace);
110
0
}
Unexecuted instantiation: fuzz_as.c:str_hash_insert
Unexecuted instantiation: codeview.c:str_hash_insert
Unexecuted instantiation: cond.c:str_hash_insert
Unexecuted instantiation: depend.c:str_hash_insert
Unexecuted instantiation: dw2gencfi.c:str_hash_insert
Unexecuted instantiation: dwarf2dbg.c:str_hash_insert
Unexecuted instantiation: ehopt.c:str_hash_insert
Unexecuted instantiation: expr.c:str_hash_insert
Unexecuted instantiation: frags.c:str_hash_insert
Unexecuted instantiation: gen-sframe.c:str_hash_insert
Unexecuted instantiation: input-scrub.c:str_hash_insert
Unexecuted instantiation: listing.c:str_hash_insert
Unexecuted instantiation: macro.c:str_hash_insert
Unexecuted instantiation: messages.c:str_hash_insert
Unexecuted instantiation: output-file.c:str_hash_insert
Unexecuted instantiation: read.c:str_hash_insert
Unexecuted instantiation: remap.c:str_hash_insert
Unexecuted instantiation: sb.c:str_hash_insert
Unexecuted instantiation: scfidw2gen.c:str_hash_insert
Unexecuted instantiation: stabs.c:str_hash_insert
Unexecuted instantiation: subsegs.c:str_hash_insert
Unexecuted instantiation: symbols.c:str_hash_insert
Unexecuted instantiation: write.c:str_hash_insert
Unexecuted instantiation: app.c:str_hash_insert
Unexecuted instantiation: atof-generic.c:str_hash_insert
Unexecuted instantiation: ecoff.c:str_hash_insert
Unexecuted instantiation: flonum-copy.c:str_hash_insert
Unexecuted instantiation: ginsn.c:str_hash_insert
Unexecuted instantiation: hash.c:str_hash_insert
Unexecuted instantiation: input-file.c:str_hash_insert
Unexecuted instantiation: scfi.c:str_hash_insert
Unexecuted instantiation: sframe-opt.c:str_hash_insert
Unexecuted instantiation: tc-i386.c:str_hash_insert
Unexecuted instantiation: obj-elf.c:str_hash_insert
Unexecuted instantiation: atof-ieee.c:str_hash_insert
111
112
static inline htab_t
113
str_htab_create (void)
114
0
{
115
0
  return htab_create_alloc (16, hash_string_tuple, eq_string_tuple,
116
0
          NULL, notes_calloc, NULL);
117
0
}
Unexecuted instantiation: fuzz_as.c:str_htab_create
Unexecuted instantiation: codeview.c:str_htab_create
Unexecuted instantiation: cond.c:str_htab_create
Unexecuted instantiation: depend.c:str_htab_create
Unexecuted instantiation: dw2gencfi.c:str_htab_create
Unexecuted instantiation: dwarf2dbg.c:str_htab_create
Unexecuted instantiation: ehopt.c:str_htab_create
Unexecuted instantiation: expr.c:str_htab_create
Unexecuted instantiation: frags.c:str_htab_create
Unexecuted instantiation: gen-sframe.c:str_htab_create
Unexecuted instantiation: input-scrub.c:str_htab_create
Unexecuted instantiation: listing.c:str_htab_create
Unexecuted instantiation: macro.c:str_htab_create
Unexecuted instantiation: messages.c:str_htab_create
Unexecuted instantiation: output-file.c:str_htab_create
Unexecuted instantiation: read.c:str_htab_create
Unexecuted instantiation: remap.c:str_htab_create
Unexecuted instantiation: sb.c:str_htab_create
Unexecuted instantiation: scfidw2gen.c:str_htab_create
Unexecuted instantiation: stabs.c:str_htab_create
Unexecuted instantiation: subsegs.c:str_htab_create
Unexecuted instantiation: symbols.c:str_htab_create
Unexecuted instantiation: write.c:str_htab_create
Unexecuted instantiation: app.c:str_htab_create
Unexecuted instantiation: atof-generic.c:str_htab_create
Unexecuted instantiation: ecoff.c:str_htab_create
Unexecuted instantiation: flonum-copy.c:str_htab_create
Unexecuted instantiation: ginsn.c:str_htab_create
Unexecuted instantiation: hash.c:str_htab_create
Unexecuted instantiation: input-file.c:str_htab_create
Unexecuted instantiation: scfi.c:str_htab_create
Unexecuted instantiation: sframe-opt.c:str_htab_create
Unexecuted instantiation: tc-i386.c:str_htab_create
Unexecuted instantiation: obj-elf.c:str_htab_create
Unexecuted instantiation: atof-ieee.c:str_htab_create
118
119
#endif /* HASH_H */