xref: /haiku/headers/compatibility/bsd/sys/link_elf.h (revision 97f11716bfaa0f385eb0e28a52bf56a5023b9e99)
1c6fd6cbbSZoltán Mizsei /*
2*045f7a5fSAugustin Cavalier  * Copyright 2022, Haiku, Inc. All rights reserved.
3*045f7a5fSAugustin Cavalier  * Distributed under the terms of the MIT License.
4c6fd6cbbSZoltán Mizsei  */
5*045f7a5fSAugustin Cavalier #ifndef _BSD_SYS_LINK_ELF_H_
6*045f7a5fSAugustin Cavalier #define	_BSD_SYS_LINK_ELF_H_
7c6fd6cbbSZoltán Mizsei 
8*045f7a5fSAugustin Cavalier 
9*045f7a5fSAugustin Cavalier #include <features.h>
10c6fd6cbbSZoltán Mizsei 
11c6fd6cbbSZoltán Mizsei 
1249506076SAdrien Destugues #ifdef _DEFAULT_SOURCE
13c6fd6cbbSZoltán Mizsei 
14c6fd6cbbSZoltán Mizsei 
153ddf0bbcSZoltán Mizsei #include <os/kernel/elf.h>
16c6fd6cbbSZoltán Mizsei 
17c6fd6cbbSZoltán Mizsei 
18*045f7a5fSAugustin Cavalier struct dl_phdr_info {
19*045f7a5fSAugustin Cavalier 	Elf_Addr dlpi_addr;
20*045f7a5fSAugustin Cavalier 	const char *dlpi_name;
21*045f7a5fSAugustin Cavalier 	const Elf_Phdr *dlpi_phdr;
22*045f7a5fSAugustin Cavalier 	Elf_Half dlpi_phnum;
23*045f7a5fSAugustin Cavalier };
24*045f7a5fSAugustin Cavalier 
25*045f7a5fSAugustin Cavalier 
26*045f7a5fSAugustin Cavalier #ifdef __cplusplus
27*045f7a5fSAugustin Cavalier extern "C" {
28c6fd6cbbSZoltán Mizsei #endif
29c6fd6cbbSZoltán Mizsei 
30c6fd6cbbSZoltán Mizsei typedef int (*__dl_iterate_hdr_callback)(struct dl_phdr_info *, size_t, void *);
31c6fd6cbbSZoltán Mizsei extern int dl_iterate_phdr(__dl_iterate_hdr_callback, void *);
32c6fd6cbbSZoltán Mizsei 
33*045f7a5fSAugustin Cavalier #ifdef __cplusplus
34*045f7a5fSAugustin Cavalier }
35c6fd6cbbSZoltán Mizsei #endif
36c6fd6cbbSZoltán Mizsei 
37c6fd6cbbSZoltán Mizsei 
38c6fd6cbbSZoltán Mizsei #endif
39c6fd6cbbSZoltán Mizsei 
40c6fd6cbbSZoltán Mizsei 
41*045f7a5fSAugustin Cavalier #endif /* _BSD_SYS_LINK_ELF_H_ */
42