From: norly Date: Fri, 24 May 2013 02:48:14 +0000 (+0100) Subject: Move section-in-segment.c to generic/ X-Git-Url: https://git.enpas.org/?p=centaur.git;a=commitdiff_plain;h=b7ab2674931f1bb9a7e6da594f587ae84c293238 Move section-in-segment.c to generic/ --- diff --git a/include/libelfu/elfops.h b/include/libelfu/elfops.h index b5e8a3f..58da4cf 100644 --- a/include/libelfu/elfops.h +++ b/include/libelfu/elfops.h @@ -10,7 +10,6 @@ char* elfu_eScnName(Elf *e, Elf_Scn *scn); Elf_Scn* elfu_eScnByName(Elf *e, char *name); - int elfu_ePhdrContainsScn(GElf_Phdr *phdr, GElf_Shdr *shdr); Elf_Scn* elfu_eScnFirstInSegment(Elf *e, GElf_Phdr *phdr); Elf_Scn* elfu_eScnLastInSegment(Elf *e, GElf_Phdr *phdr); diff --git a/include/libelfu/generic.h b/include/libelfu/generic.h index 70157f7..f5b0e0f 100644 --- a/include/libelfu/generic.h +++ b/include/libelfu/generic.h @@ -6,4 +6,6 @@ size_t elfu_gScnSizeFile(const GElf_Shdr *shdr); +int elfu_gPhdrContainsScn(GElf_Phdr *phdr, GElf_Shdr *shdr); + #endif diff --git a/src/elfops/phdr-contains-section.c b/src/elfops/phdr-contains-section.c deleted file mode 100644 index 7a89d61..0000000 --- a/src/elfops/phdr-contains-section.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - -#include - - -int elfu_ePhdrContainsScn(GElf_Phdr *phdr, GElf_Shdr *shdr) -{ - size_t secStart = shdr->sh_offset; - size_t secEnd = shdr->sh_offset + shdr->sh_size; - size_t segStart = phdr->p_offset; - size_t segEnd = phdr->p_offset + phdr->p_memsz; - - if (secStart < segStart || secEnd > segEnd) { - return 0; - } - - return 1; -} diff --git a/src/elfops/section-in-segment.c b/src/elfops/section-in-segment.c index 143c03f..185da36 100644 --- a/src/elfops/section-in-segment.c +++ b/src/elfops/section-in-segment.c @@ -25,7 +25,7 @@ Elf_Scn* elfu_eScnFirstInSegment(Elf *e, GElf_Phdr *phdr) } if (shdr.sh_offset == phdr->p_offset - && elfu_ePhdrContainsScn(phdr, &shdr)) { + && elfu_gPhdrContainsScn(phdr, &shdr)) { return scn; } @@ -59,7 +59,7 @@ Elf_Scn* elfu_eScnLastInSegment(Elf *e, GElf_Phdr *phdr) continue; } - if (elfu_ePhdrContainsScn(phdr, &shdr)) { + if (elfu_gPhdrContainsScn(phdr, &shdr)) { if (!last) { last = scn; } else { diff --git a/src/generic/phdr-contains-section.c b/src/generic/phdr-contains-section.c new file mode 100644 index 0000000..4c1f2cf --- /dev/null +++ b/src/generic/phdr-contains-section.c @@ -0,0 +1,19 @@ +#include +#include + +#include + + +int elfu_gPhdrContainsScn(GElf_Phdr *phdr, GElf_Shdr *shdr) +{ + size_t secStart = shdr->sh_offset; + size_t secEnd = shdr->sh_offset + shdr->sh_size; + size_t segStart = phdr->p_offset; + size_t segEnd = phdr->p_offset + phdr->p_memsz; + + if (secStart < segStart || secEnd > segEnd) { + return 0; + } + + return 1; +} diff --git a/src/printing/sections.c b/src/printing/sections.c index 3cdf270..71431d1 100644 --- a/src/printing/sections.c +++ b/src/printing/sections.c @@ -31,7 +31,7 @@ void printSegmentsWithSection(Elf *e, Elf_Scn *scn) continue; } - if (elfu_ePhdrContainsScn(&phdr, &shdr)) { + if (elfu_gPhdrContainsScn(&phdr, &shdr)) { printf(" %d %s\n", i, segmentTypeStr(phdr.p_type)); } } diff --git a/src/printing/segments.c b/src/printing/segments.c index f7ffd54..444f115 100644 --- a/src/printing/segments.c +++ b/src/printing/segments.c @@ -33,7 +33,7 @@ void printSectionsInSegment(Elf *e, GElf_Phdr *phdr) continue; } - if (elfu_ePhdrContainsScn(phdr, &shdr)) { + if (elfu_gPhdrContainsScn(phdr, &shdr)) { printf(" %10u %s\n", elf_ndxscn(scn), elfu_eScnName(e, scn)); }