FireBirdLib - Topfield TMS PVR TAP Programming Library
ELFReadShstrtabSection.c
Go to the documentation of this file.
1#include <stdlib.h>
2#include "ELF.h"
3#include "FBLib_elf.h"
4
6{
8
9 Elf32_Shdr *pshstrtabSH = NULL; //Shortcut to speed up access to the .shstrtab section header
10
11 //Read the .shstrtab section. It contains a "string database" with the names of all sections
13 {
14 TRACEEXIT();
15 return FALSE;
16 }
17
18 pshstrtabSH = &SectionHeaders[ELFHeader->e_shstrndx];
19 if(pshstrtabSH->sh_type != SHT_STRTAB)
20 {
21 TRACEEXIT();
22 return FALSE;
23 }
24
25 if(!(shstrtab = TAP_MemAlloc(pshstrtabSH->sh_size)))
26 {
27 TRACEEXIT();
28 return FALSE;
29 }
30
31 lseek(fTAP, pshstrtabSH->sh_offset, SEEK_SET);
32 if(read(fTAP, shstrtab, pshstrtabSH->sh_size) != (int)pshstrtabSH->sh_size)
33 {
34 TRACEEXIT();
35 return FALSE;
36 }
37
38
39 TRACEEXIT();
40 return TRUE;
41}
Elf32_Shdr * SectionHeaders
Definition: ELFOpenFile.c:7
char * shstrtab
Definition: ELFOpenFile.c:8
Elf32_Ehdr * ELFHeader
Definition: ELFOpenFile.c:6
int fTAP
Definition: ELFOpenFile.c:5
bool ELFReadShstrtabSection(void)
#define SHT_STRTAB
Definition: ELF.h:13
#define SEEK_SET
Definition: libFireBird.h:1875
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
Elf32_Half e_shnum
Definition: ELF.h:44
Elf32_Half e_shstrndx
Definition: ELF.h:45
Definition: ELF.h:49
Elf32_Off sh_offset
Definition: ELF.h:54
Elf32_Word sh_size
Definition: ELF.h:55
Elf32_Word sh_type
Definition: ELF.h:51