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