1/* 2 * Copyright 2002-2018 Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Copyright 2001 Travis Geiselbrecht. All rights reserved. 6 * Distributed under the terms of the NewOS License. 7 */ 8#ifndef _ELF_PRIVATE_H 9#define _ELF_PRIVATE_H 10 11 12#include <os/kernel/elf.h> 13 14#include <SupportDefs.h> 15 16#include <arch_elf.h> 17 18 19// Determine the correct ELF types to use for the architecture 20 21#if defined(B_HAIKU_64_BIT) && !defined(ELF32_COMPAT) 22# define _ELF_TYPE(type) Elf64_##type 23#else 24# define _ELF_TYPE(type) Elf32_##type 25#endif 26#define DEFINE_ELF_TYPE(type, name) \ 27 typedef _ELF_TYPE(type) name 28 29DEFINE_ELF_TYPE(Addr, elf_addr); 30DEFINE_ELF_TYPE(Ehdr, elf_ehdr); 31DEFINE_ELF_TYPE(Phdr, elf_phdr); 32DEFINE_ELF_TYPE(Shdr, elf_shdr); 33DEFINE_ELF_TYPE(Sym, elf_sym); 34DEFINE_ELF_TYPE(Dyn, elf_dyn); 35DEFINE_ELF_TYPE(Rel, elf_rel); 36DEFINE_ELF_TYPE(Rela, elf_rela); 37DEFINE_ELF_TYPE(Verdef, elf_verdef); 38DEFINE_ELF_TYPE(Verdaux, elf_verdaux); 39DEFINE_ELF_TYPE(Verneed, elf_verneed); 40DEFINE_ELF_TYPE(Vernaux, elf_vernaux); 41DEFINE_ELF_TYPE(Nhdr, elf_nhdr); 42DEFINE_ELF_TYPE(Note_Team, elf_note_team); 43DEFINE_ELF_TYPE(Note_Area_Entry, elf_note_area_entry); 44DEFINE_ELF_TYPE(Note_Image_Entry, elf_note_image_entry); 45DEFINE_ELF_TYPE(Note_Thread_Entry, elf_note_thread_entry); 46 47#undef DEFINE_ELF_TYPE 48#undef _ELF_TYPE 49 50typedef uint16 elf_versym; 51 52#if defined(B_HAIKU_64_BIT) && !defined(ELF32_COMPAT) 53# define ELF_CLASS ELFCLASS64 54#else 55# define ELF_CLASS ELFCLASS32 56#endif 57 58 59#endif /* _ELF_PRIVATE_H_ */ 60