summaryrefslogtreecommitdiff
path: root/src/elfops/phdr-contains-section.c
blob: 7a89d61d068f5a60be569b34247500bd86240be7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <libelf/libelf.h>
#include <libelf/gelf.h>

#include <libelfu/libelfu.h>


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;
}