link.h 623 B

12345678910111213141516171819202122232425262728293031323334
  1. /*
  2. * Copyright (c) 2021, Gunnar Beutner <gunnar@beutner.name>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #ifndef __serenity__
  8. # include <LibC/elf.h>
  9. #else
  10. # include <elf.h>
  11. #endif
  12. #include <limits.h>
  13. #include <sys/cdefs.h>
  14. __BEGIN_DECLS
  15. #ifdef __LP64__
  16. # define ElfW(type) Elf64_##type
  17. #else
  18. # define ElfW(type) Elf32_##type
  19. #endif
  20. struct dl_phdr_info {
  21. ElfW(Addr) dlpi_addr;
  22. const char* dlpi_name;
  23. const ElfW(Phdr) * dlpi_phdr;
  24. ElfW(Half) dlpi_phnum;
  25. };
  26. int dl_iterate_phdr(int (*callback)(struct dl_phdr_info* info, size_t size, void* data), void* data);
  27. __END_DECLS