/** @file
Ported ELF include files from FreeBSD

Copyright (c) 2009 - 2010, Apple Inc. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent

**/
/*-
 * Copyright (c) 1996-1998 John D. Polstra.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD: src/sys/sys/elf64.h,v 1.10.14.2 2007/12/03 21:30:36 marius Exp $
 */

#ifndef _SYS_ELF64_H_
#define _SYS_ELF64_H_  1

/*
 * ELF definitions common to all 64-bit architectures.
 */

typedef UINT64  Elf64_Addr;
typedef UINT16  Elf64_Half;
typedef UINT64  Elf64_Off;
typedef INT32   Elf64_Sword;
typedef INT64   Elf64_Sxword;
typedef UINT32  Elf64_Word;
typedef UINT64  Elf64_Lword;
typedef UINT64  Elf64_Xword;

/*
 * Types of dynamic symbol hash table bucket and chain elements.
 *
 * This is inconsistent among 64 bit architectures, so a machine dependent
 * typedef is required.
 */

typedef Elf64_Word Elf64_Hashelt;

/* Non-standard class-dependent datatype used for abstraction. */
typedef Elf64_Xword  Elf64_Size;
typedef Elf64_Sxword Elf64_Ssize;

/*
 * ELF header.
 */

typedef struct {
  unsigned char    e_ident[EI_NIDENT]; /* File identification. */
  Elf64_Half       e_type;             /* File type. */
  Elf64_Half       e_machine;          /* Machine architecture. */
  Elf64_Word       e_version;          /* ELF format version. */
  Elf64_Addr       e_entry;            /* Entry point. */
  Elf64_Off        e_phoff;            /* Program header file offset. */
  Elf64_Off        e_shoff;            /* Section header file offset. */
  Elf64_Word       e_flags;            /* Architecture-specific flags. */
  Elf64_Half       e_ehsize;           /* Size of ELF header in bytes. */
  Elf64_Half       e_phentsize;        /* Size of program header entry. */
  Elf64_Half       e_phnum;            /* Number of program header entries. */
  Elf64_Half       e_shentsize;        /* Size of section header entry. */
  Elf64_Half       e_shnum;            /* Number of section header entries. */
  Elf64_Half       e_shstrndx;         /* Section name strings section. */
} Elf64_Ehdr;

/*
 * Section header.
 */

typedef struct {
  Elf64_Word     sh_name;      /* Section name (index into the
             section header string table). */
  Elf64_Word     sh_type;      /* Section type. */
  Elf64_Xword    sh_flags;     /* Section flags. */
  Elf64_Addr     sh_addr;      /* Address in memory image. */
  Elf64_Off      sh_offset;    /* Offset in file. */
  Elf64_Xword    sh_size;      /* Size in bytes. */
  Elf64_Word     sh_link;      /* Index of a related section. */
  Elf64_Word     sh_info;      /* Depends on section type. */
  Elf64_Xword    sh_addralign; /* Alignment in bytes. */
  Elf64_Xword    sh_entsize;   /* Size of each entry in section. */
} Elf64_Shdr;

/*
 * Program header.
 */

typedef struct {
  Elf64_Word     p_type;   /* Entry type. */
  Elf64_Word     p_flags;  /* Access permission flags. */
  Elf64_Off      p_offset; /* File offset of contents. */
  Elf64_Addr     p_vaddr;  /* Virtual address in memory image. */
  Elf64_Addr     p_paddr;  /* Physical address (not used). */
  Elf64_Xword    p_filesz; /* Size of contents in file. */
  Elf64_Xword    p_memsz;  /* Size of contents in memory. */
  Elf64_Xword    p_align;  /* Alignment in memory and file. */
} Elf64_Phdr;

/*
 * Dynamic structure.  The ".dynamic" section contains an array of them.
 */

typedef struct {
  Elf64_Sxword    d_tag;  /* Entry type. */
  union {
    Elf64_Xword    d_val; /* Integer value. */
    Elf64_Addr     d_ptr; /* Address value. */
  } d_un;
} Elf64_Dyn;

/*
 * Relocation entries.
 */

/* Relocations that don't need an addend field. */
typedef struct {
  Elf64_Addr     r_offset; /* Location to be relocated. */
  Elf64_Xword    r_info;   /* Relocation type and symbol index. */
} Elf64_Rel;

/* Relocations that need an addend field. */
typedef struct {
  Elf64_Addr      r_offset; /* Location to be relocated. */
  Elf64_Xword     r_info;   /* Relocation type and symbol index. */
  Elf64_Sxword    r_addend; /* Addend. */
} Elf64_Rela;

/* Macros for accessing the fields of r_info. */
#define ELF64_R_SYM(info)   ((UINT32) RShiftU64 ((info), 32))
#define ELF64_R_TYPE(info)  ((info) & 0xffffffffL)

/* Macro for constructing r_info from field values. */
#define ELF64_R_INFO(sym, type)  (((sym) << 32) + ((type) & 0xffffffffL))

#define  ELF64_R_TYPE_DATA(info)  (((Elf64_Xword)(info)<<32)>>40)
#define  ELF64_R_TYPE_ID(info)    (((Elf64_Xword)(info)<<56)>>56)
#define  ELF64_R_TYPE_INFO(data, type)  \
    (((Elf64_Xword)(data)<<8)+(Elf64_Xword)(type))

/*
 *  Note entry header
 */
typedef Elf_Note Elf64_Nhdr;

/*
 *  Move entry
 */
typedef struct {
  Elf64_Lword    m_value;   /* symbol value */
  Elf64_Xword    m_info;    /* size + index */
  Elf64_Xword    m_poffset; /* symbol offset */
  Elf64_Half     m_repeat;  /* repeat count */
  Elf64_Half     m_stride;  /* stride info */
} Elf64_Move;

#define  ELF64_M_SYM(info)        ((info)>>8)
#define  ELF64_M_SIZE(info)       ((unsigned char)(info))
#define  ELF64_M_INFO(sym, size)  (((sym)<<8)+(unsigned char)(size))

/*
 *  Hardware/Software capabilities entry
 */
typedef struct {
  Elf64_Xword    c_tag;  /* how to interpret value */
  union {
    Elf64_Xword    c_val;
    Elf64_Addr     c_ptr;
  } c_un;
} Elf64_Cap;

/*
 * Symbol table entries.
 */

typedef struct {
  Elf64_Word       st_name;  /* String table index of name. */
  unsigned char    st_info;  /* Type and binding information. */
  unsigned char    st_other; /* Reserved (not used). */
  Elf64_Half       st_shndx; /* Section index of symbol. */
  Elf64_Addr       st_value; /* Symbol value. */
  Elf64_Xword      st_size;  /* Size of associated object. */
} Elf64_Sym;

/* Macros for accessing the fields of st_info. */
#define ELF64_ST_BIND(info)  ((info) >> 4)
#define ELF64_ST_TYPE(info)  ((info) & 0xf)

/* Macro for constructing st_info from field values. */
#define ELF64_ST_INFO(bind, type)  (((bind) << 4) + ((type) & 0xf))

/* Macro for accessing the fields of st_other. */
#define ELF64_ST_VISIBILITY(oth)  ((oth) & 0x3)

/* Structures used by Sun & GNU-style symbol versioning. */
typedef struct {
  Elf64_Half    vd_version;
  Elf64_Half    vd_flags;
  Elf64_Half    vd_ndx;
  Elf64_Half    vd_cnt;
  Elf64_Word    vd_hash;
  Elf64_Word    vd_aux;
  Elf64_Word    vd_next;
} Elf64_Verdef;

typedef struct {
  Elf64_Word    vda_name;
  Elf64_Word    vda_next;
} Elf64_Verdaux;

typedef struct {
  Elf64_Half    vn_version;
  Elf64_Half    vn_cnt;
  Elf64_Word    vn_file;
  Elf64_Word    vn_aux;
  Elf64_Word    vn_next;
} Elf64_Verneed;

typedef struct {
  Elf64_Word    vna_hash;
  Elf64_Half    vna_flags;
  Elf64_Half    vna_other;
  Elf64_Word    vna_name;
  Elf64_Word    vna_next;
} Elf64_Vernaux;

typedef Elf64_Half Elf64_Versym;

typedef struct {
  Elf64_Half    si_boundto; /* direct bindings - symbol bound to */
  Elf64_Half    si_flags;   /* per symbol flags */
} Elf64_Syminfo;

#endif /* !_SYS_ELF64_H_ */
