// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build linux
// +build 386 arm

package runtime

// ELF32 structure definitions for use by the vDSO loader

type elfSym struct {
	st_name  uint32
	st_value uint32
	st_size  uint32
	st_info  byte
	st_other byte
	st_shndx uint16
}

type elfVerdef struct {
	vd_version uint16 /* Version revision */
	vd_flags   uint16 /* Version information */
	vd_ndx     uint16 /* Version Index */
	vd_cnt     uint16 /* Number of associated aux entries */
	vd_hash    uint32 /* Version name hash value */
	vd_aux     uint32 /* Offset in bytes to verdaux array */
	vd_next    uint32 /* Offset in bytes to next verdef entry */
}

type elfEhdr struct {
	e_ident     [_EI_NIDENT]byte /* Magic number and other info */
	e_type      uint16           /* Object file type */
	e_machine   uint16           /* Architecture */
	e_version   uint32           /* Object file version */
	e_entry     uint32           /* Entry point virtual address */
	e_phoff     uint32           /* Program header table file offset */
	e_shoff     uint32           /* Section header table file offset */
	e_flags     uint32           /* Processor-specific flags */
	e_ehsize    uint16           /* ELF header size in bytes */
	e_phentsize uint16           /* Program header table entry size */
	e_phnum     uint16           /* Program header table entry count */
	e_shentsize uint16           /* Section header table entry size */
	e_shnum     uint16           /* Section header table entry count */
	e_shstrndx  uint16           /* Section header string table index */
}

type elfPhdr struct {
	p_type   uint32 /* Segment type */
	p_offset uint32 /* Segment file offset */
	p_vaddr  uint32 /* Segment virtual address */
	p_paddr  uint32 /* Segment physical address */
	p_filesz uint32 /* Segment size in file */
	p_memsz  uint32 /* Segment size in memory */
	p_flags  uint32 /* Segment flags */
	p_align  uint32 /* Segment alignment */
}

type elfShdr struct {
	sh_name      uint32 /* Section name (string tbl index) */
	sh_type      uint32 /* Section type */
	sh_flags     uint32 /* Section flags */
	sh_addr      uint32 /* Section virtual addr at execution */
	sh_offset    uint32 /* Section file offset */
	sh_size      uint32 /* Section size in bytes */
	sh_link      uint32 /* Link to another section */
	sh_info      uint32 /* Additional section information */
	sh_addralign uint32 /* Section alignment */
	sh_entsize   uint32 /* Entry size if section holds table */
}

type elfDyn struct {
	d_tag int32  /* Dynamic entry type */
	d_val uint32 /* Integer value */
}

type elfVerdaux struct {
	vda_name uint32 /* Version or dependency names */
	vda_next uint32 /* Offset in bytes to next verdaux entry */
}
