xref: /optee_os/lib/libutee/include/link.h (revision 9d224046e71083e0fe3e8c26c22f729399c2c950)
1*9d224046SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */
2*9d224046SJerome Forissier /*
3*9d224046SJerome Forissier  * Copyright (C) 2012 The Android Open Source Project
4*9d224046SJerome Forissier  */
5*9d224046SJerome Forissier 
6*9d224046SJerome Forissier #ifndef _LINK_H_
7*9d224046SJerome Forissier #define	_LINK_H_
8*9d224046SJerome Forissier 
9*9d224046SJerome Forissier #include <elf.h>
10*9d224046SJerome Forissier #include <stddef.h>
11*9d224046SJerome Forissier 
12*9d224046SJerome Forissier struct dl_phdr_info {
13*9d224046SJerome Forissier 	Elf_Addr dlpi_addr;			/* module relocation base */
14*9d224046SJerome Forissier 	const char *dlpi_name;			/* module name */
15*9d224046SJerome Forissier 	const Elf_Phdr *dlpi_phdr;		/* pointer to module's phdr */
16*9d224046SJerome Forissier 	Elf_Half dlpi_phnum;			/* number of entries in phdr */
17*9d224046SJerome Forissier 	unsigned long long dlpi_adds;		/* total # of loads */
18*9d224046SJerome Forissier 	unsigned long long dlpi_subs;		/* total # of unloads */
19*9d224046SJerome Forissier 	size_t dlpi_tls_modid;
20*9d224046SJerome Forissier 	void *dlpi_tls_data;
21*9d224046SJerome Forissier };
22*9d224046SJerome Forissier 
23*9d224046SJerome Forissier int dl_iterate_phdr(int (*callback)(struct dl_phdr_info *info, size_t size,
24*9d224046SJerome Forissier 				    void *data),
25*9d224046SJerome Forissier 		    void *data);
26*9d224046SJerome Forissier 
27*9d224046SJerome Forissier #endif /* _LINK_H_ */
28