/src/elfutils/libelf/elf32_getchdr.h
Line | Count | Source (jump to first uncovered line) |
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.03M | #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.01M | { |
19 | | |
20 | 1.01M | ElfW2(LIBELFBITS,Shdr) *shdr = ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getshdr)))(scn); |
21 | | |
22 | 1.01M | 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.01M | if ((shdr->sh_flags & SHF_ALLOC) != 0) |
28 | 6.06k | { |
29 | 6.06k | __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS); |
30 | 6.06k | return NULL; |
31 | 6.06k | } |
32 | | |
33 | 1.01M | if (shdr->sh_type == SHT_NULL |
34 | 1.01M | || 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.01M | 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.01M | Elf_Data *d = ADD_ROUTINE_PREFIX(ADD_ROUTINE_SUFFIX(elf_getdata)) (scn, NULL); |
49 | 1.01M | if (d == NULL) |
50 | 403k | return NULL; |
51 | | |
52 | 610k | 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 | 584k | return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf; |
59 | 610k | } Unexecuted instantiation: __elf32_getchdr_wrlock Line | Count | Source | 18 | 961k | { | 19 | | | 20 | 961k | ElfW2(LIBELFBITS,Shdr) *shdr = ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getshdr)))(scn); | 21 | | | 22 | 961k | 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 | 961k | if ((shdr->sh_flags & SHF_ALLOC) != 0) | 28 | 4.96k | { | 29 | 4.96k | __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS); | 30 | 4.96k | return NULL; | 31 | 4.96k | } | 32 | | | 33 | 956k | if (shdr->sh_type == SHT_NULL | 34 | 956k | || shdr->sh_type == SHT_NOBITS) | 35 | 0 | { | 36 | 0 | __libelf_seterrno (ELF_E_INVALID_SECTION_TYPE); | 37 | 0 | return NULL; | 38 | 0 | } | 39 | | | 40 | 956k | 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 | 956k | Elf_Data *d = ADD_ROUTINE_PREFIX(ADD_ROUTINE_SUFFIX(elf_getdata)) (scn, NULL); | 49 | 956k | if (d == NULL) | 50 | 387k | return NULL; | 51 | | | 52 | 568k | if (d->d_size < sizeof (ElfW2(LIBELFBITS,Chdr)) || d->d_buf == NULL) | 53 | 23.1k | { | 54 | 23.1k | __libelf_seterrno (ELF_E_INVALID_DATA); | 55 | 23.1k | return NULL; | 56 | 23.1k | } | 57 | | | 58 | 545k | return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf; | 59 | 568k | } |
Unexecuted instantiation: __elf64_getchdr_wrlock Line | Count | Source | 18 | 58.0k | { | 19 | | | 20 | 58.0k | ElfW2(LIBELFBITS,Shdr) *shdr = ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getshdr)))(scn); | 21 | | | 22 | 58.0k | 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 | 58.0k | if ((shdr->sh_flags & SHF_ALLOC) != 0) | 28 | 1.09k | { | 29 | 1.09k | __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS); | 30 | 1.09k | return NULL; | 31 | 1.09k | } | 32 | | | 33 | 57.0k | if (shdr->sh_type == SHT_NULL | 34 | 57.0k | || shdr->sh_type == SHT_NOBITS) | 35 | 0 | { | 36 | 0 | __libelf_seterrno (ELF_E_INVALID_SECTION_TYPE); | 37 | 0 | return NULL; | 38 | 0 | } | 39 | | | 40 | 57.0k | 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 | 57.0k | Elf_Data *d = ADD_ROUTINE_PREFIX(ADD_ROUTINE_SUFFIX(elf_getdata)) (scn, NULL); | 49 | 57.0k | if (d == NULL) | 50 | 15.3k | return NULL; | 51 | | | 52 | 41.6k | if (d->d_size < sizeof (ElfW2(LIBELFBITS,Chdr)) || d->d_buf == NULL) | 53 | 2.74k | { | 54 | 2.74k | __libelf_seterrno (ELF_E_INVALID_DATA); | 55 | 2.74k | return NULL; | 56 | 2.74k | } | 57 | | | 58 | 38.9k | return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf; | 59 | 41.6k | } |
|
60 | | #undef INTERNAL |
61 | | #undef ELF_WRLOCK_HELD |