Coverage Report

Created: 2025-12-14 06:34

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/elfutils/libelf/elf32_getchdr.h
Line
Count
Source
1
#undef ADD_ROUTINE_PREFIX
2
#undef ADD_ROUTINE_SUFFIX
3
4
#if ELF_WRLOCK_HELD
5
0
#define CONCAT(x,y) x##y
6
0
#define ADD_ROUTINE_PREFIX(y) CONCAT(__,y)
7
#define ADD_ROUTINE_SUFFIX(x) x ## _wrlock
8
#define INTERNAL internal_function
9
#else
10
2.35M
#define ADD_ROUTINE_PREFIX(y) y
11
#define ADD_ROUTINE_SUFFIX(x) x
12
#define INTERNAL
13
#endif
14
15
ElfW2(LIBELFBITS,Chdr) *
16
INTERNAL
17
ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getchdr))) (Elf_Scn *scn)
18
1.21M
{
19
20
1.21M
  ElfW2(LIBELFBITS,Shdr) *shdr = ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getshdr)))(scn);
21
22
1.21M
  if (shdr == NULL)
23
0
    return NULL;
24
25
  /* Must have SHF_COMPRESSED flag set.  Allocated or no bits sections
26
     can never be compressed.  */
27
1.21M
  if ((shdr->sh_flags & SHF_ALLOC) != 0)
28
81.0k
    {
29
81.0k
      __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS);
30
81.0k
      return NULL;
31
81.0k
    }
32
33
1.13M
  if (shdr->sh_type == SHT_NULL
34
1.13M
      || shdr->sh_type == SHT_NOBITS)
35
0
    {
36
0
      __libelf_seterrno (ELF_E_INVALID_SECTION_TYPE);
37
0
      return NULL;
38
0
    }
39
40
1.13M
  if ((shdr->sh_flags & SHF_COMPRESSED) == 0)
41
0
    {
42
0
      __libelf_seterrno (ELF_E_NOT_COMPRESSED);
43
0
      return NULL;
44
0
    }
45
46
  /* This makes sure the data is in the correct format, so we don't
47
     need to swap fields. */
48
1.13M
  Elf_Data *d  = ADD_ROUTINE_PREFIX(ADD_ROUTINE_SUFFIX(elf_getdata)) (scn, NULL);
49
1.13M
  if (d == NULL)
50
397k
    return NULL;
51
52
739k
  if (d->d_size < sizeof (ElfW2(LIBELFBITS,Chdr)) || d->d_buf == NULL)
53
29.0k
    {
54
29.0k
      __libelf_seterrno (ELF_E_INVALID_DATA);
55
29.0k
      return NULL;
56
29.0k
    }
57
58
710k
  return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf;
59
739k
}
Unexecuted instantiation: __elf32_getchdr_wrlock
elf32_getchdr
Line
Count
Source
18
1.00M
{
19
20
1.00M
  ElfW2(LIBELFBITS,Shdr) *shdr = ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getshdr)))(scn);
21
22
1.00M
  if (shdr == NULL)
23
0
    return NULL;
24
25
  /* Must have SHF_COMPRESSED flag set.  Allocated or no bits sections
26
     can never be compressed.  */
27
1.00M
  if ((shdr->sh_flags & SHF_ALLOC) != 0)
28
1.98k
    {
29
1.98k
      __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS);
30
1.98k
      return NULL;
31
1.98k
    }
32
33
1.00M
  if (shdr->sh_type == SHT_NULL
34
1.00M
      || shdr->sh_type == SHT_NOBITS)
35
0
    {
36
0
      __libelf_seterrno (ELF_E_INVALID_SECTION_TYPE);
37
0
      return NULL;
38
0
    }
39
40
1.00M
  if ((shdr->sh_flags & SHF_COMPRESSED) == 0)
41
0
    {
42
0
      __libelf_seterrno (ELF_E_NOT_COMPRESSED);
43
0
      return NULL;
44
0
    }
45
46
  /* This makes sure the data is in the correct format, so we don't
47
     need to swap fields. */
48
1.00M
  Elf_Data *d  = ADD_ROUTINE_PREFIX(ADD_ROUTINE_SUFFIX(elf_getdata)) (scn, NULL);
49
1.00M
  if (d == NULL)
50
361k
    return NULL;
51
52
640k
  if (d->d_size < sizeof (ElfW2(LIBELFBITS,Chdr)) || d->d_buf == NULL)
53
25.9k
    {
54
25.9k
      __libelf_seterrno (ELF_E_INVALID_DATA);
55
25.9k
      return NULL;
56
25.9k
    }
57
58
614k
  return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf;
59
640k
}
Unexecuted instantiation: __elf64_getchdr_wrlock
elf64_getchdr
Line
Count
Source
18
214k
{
19
20
214k
  ElfW2(LIBELFBITS,Shdr) *shdr = ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getshdr)))(scn);
21
22
214k
  if (shdr == NULL)
23
0
    return NULL;
24
25
  /* Must have SHF_COMPRESSED flag set.  Allocated or no bits sections
26
     can never be compressed.  */
27
214k
  if ((shdr->sh_flags & SHF_ALLOC) != 0)
28
79.0k
    {
29
79.0k
      __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS);
30
79.0k
      return NULL;
31
79.0k
    }
32
33
135k
  if (shdr->sh_type == SHT_NULL
34
135k
      || shdr->sh_type == SHT_NOBITS)
35
0
    {
36
0
      __libelf_seterrno (ELF_E_INVALID_SECTION_TYPE);
37
0
      return NULL;
38
0
    }
39
40
135k
  if ((shdr->sh_flags & SHF_COMPRESSED) == 0)
41
0
    {
42
0
      __libelf_seterrno (ELF_E_NOT_COMPRESSED);
43
0
      return NULL;
44
0
    }
45
46
  /* This makes sure the data is in the correct format, so we don't
47
     need to swap fields. */
48
135k
  Elf_Data *d  = ADD_ROUTINE_PREFIX(ADD_ROUTINE_SUFFIX(elf_getdata)) (scn, NULL);
49
135k
  if (d == NULL)
50
36.5k
    return NULL;
51
52
98.8k
  if (d->d_size < sizeof (ElfW2(LIBELFBITS,Chdr)) || d->d_buf == NULL)
53
3.14k
    {
54
3.14k
      __libelf_seterrno (ELF_E_INVALID_DATA);
55
3.14k
      return NULL;
56
3.14k
    }
57
58
95.6k
  return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf;
59
98.8k
}
60
#undef INTERNAL
61
#undef ELF_WRLOCK_HELD