blob: 1a318c6ff09e1cee82b40afa9236752b1a9192f7 [file] [log] [blame]
Juan Cespedes1cd999a2001-07-03 00:46:04 +02001#ifndef LTRACE_ELF_H
2#define LTRACE_ELF_H
3
Juan Cespedesd914a202004-11-10 00:15:33 +01004#include <gelf.h>
5#include <stdlib.h>
6
Juan Cespedes5e01f651998-03-08 22:31:44 +01007#include "ltrace.h"
Juan Cespedes96935a91997-08-09 23:45:39 +02008
Juan Cespedesd914a202004-11-10 00:15:33 +01009struct ltelf
10{
11 int fd;
12 Elf *elf;
13 GElf_Ehdr ehdr;
14 Elf_Data *dynsym;
15 size_t dynsym_count;
16 const char *dynstr;
17 GElf_Addr plt_addr;
Ian Wienand5570a772006-02-17 02:00:00 +010018 size_t plt_size;
Juan Cespedesd914a202004-11-10 00:15:33 +010019 Elf_Data *relplt;
20 size_t relplt_count;
Ian Wienand9a2ad352006-02-20 22:44:45 +010021 Elf_Data *symtab;
22 const char *strtab;
23 size_t symtab_count;
24 Elf_Data *opd;
25 GElf_Addr *opd_addr;
26 size_t opd_size;
Juan Cespedesd914a202004-11-10 00:15:33 +010027 Elf32_Word *hash;
28 int hash_malloced;
Juan Cespedes1cd999a2001-07-03 00:46:04 +020029};
30
31extern int library_num;
32extern char *library[MAX_LIBRARY];
Juan Cespedes1cd999a2001-07-03 00:46:04 +020033
Ian Wienand9a2ad352006-02-20 22:44:45 +010034extern struct library_symbol *read_elf (struct process *);
Juan Cespedesd914a202004-11-10 00:15:33 +010035
36extern GElf_Addr arch_plt_sym_val (struct ltelf *, size_t, GElf_Rela *);
Juan Cespedes96935a91997-08-09 23:45:39 +020037
Juan Cespedes1cd999a2001-07-03 00:46:04 +020038#endif