Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / link_elf.h @ 14

History | View | Annotate | Download (1.36 KB)

1
/*        $NetBSD: link_elf.h,v 1.10 2010/10/16 10:27:06 skrll Exp $        */
2

    
3
#ifndef _LINK_ELF_H_
4
#define        _LINK_ELF_H_
5

    
6
#include <sys/types.h>
7
#include <sys/exec_elf.h>
8

    
9
typedef struct link_map {
10
        caddr_t                 l_addr;        /* Base Address of library */
11
#ifdef __mips__
12
        caddr_t                 l_offs;        /* Load Offset of library */
13
#endif
14
        const char        *l_name;        /* Absolute Path to Library */
15
        void                *l_ld;                /* Pointer to .dynamic in memory */
16
        struct link_map        *l_next;        /* linked list of of mapped libs */
17
        struct link_map *l_prev;
18
} Link_map;
19

    
20
/*
21
 * This only exists for GDB.
22
 */
23
struct r_debug {
24
        int r_version;                        /* not used */
25
        struct link_map *r_map;                /* list of loaded images */
26
        void (*r_brk)(void);                /* pointer to break point */
27
        enum {
28
                RT_CONSISTENT,                /* things are stable */
29
                RT_ADD,                        /* adding a shared library */
30
                RT_DELETE                /* removing a shared library */
31
        } r_state;
32
};
33

    
34
struct dl_phdr_info
35
{
36
        Elf_Addr dlpi_addr;                        /* module relocation base */
37
        const char *dlpi_name;                        /* module name */
38
        const Elf_Phdr *dlpi_phdr;                /* pointer to module's phdr */
39
        Elf_Half dlpi_phnum;                        /* number of entries in phdr */
40
        unsigned long long int dlpi_adds;        /* total # of loads */
41
        unsigned long long int dlpi_subs;        /* total # of unloads */
42
        size_t dlpi_tls_modid;
43
        void *dlpi_tls_data;
44
};
45

    
46
__BEGIN_DECLS
47

    
48
int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *),
49
    void *);
50

    
51
__END_DECLS
52

    
53
#endif        /* _LINK_ELF_H_ */