1 /*	$OpenBSD: link_elf.h,v 1.8 2022/01/28 04:59:15 guenther Exp $	*/
2 
3 /*
4  * Public domain.
5  */
6 
7 #ifndef _LINK_ELF_H
8 #define _LINK_ELF_H
9 
10 #include <elf_abi.h>
11 
12 #ifndef DT_PROCNUM
13 #define DT_PROCNUM 0
14 #endif
15 
16 /*
17  * struct link_map is a part of the protocol between the debugger and
18  * ld.so. ld.so may have additional fields in its version of this
19  * structure but those are ld.so private fields.
20  */
21 struct link_map {
22 	caddr_t		l_addr;		/* Base address of library */
23 	const char	*l_name;	/* Absolute path to library */
24 	void		*l_ld;		/* pointer to _DYNAMIC */
25 	struct link_map	*l_next;
26 	struct link_map	*l_prev;
27 };
28 
29 struct dl_phdr_info {
30 	Elf_Addr	dlpi_addr;
31 	const char	*dlpi_name;
32 	const Elf_Phdr	*dlpi_phdr;
33 	Elf_Half	dlpi_phnum;
34 };
35 
36 __BEGIN_DECLS
37 int	dl_iterate_phdr (int (*)(struct dl_phdr_info *, size_t, void *),
38 	   void *);
39 void	*dl_unwind_find_exidx(const void *, int *);
40 __END_DECLS
41 
42 #endif /* !_LINK_ELF_H */
43