cregit-Linux how code gets into the kernel

Release 4.14 arch/powerpc/boot/elf.h

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PPC_BOOT_ELF_H_

#define _PPC_BOOT_ELF_H_

/* 32-bit ELF base types. */

typedef unsigned int Elf32_Addr;

typedef unsigned short Elf32_Half;

typedef unsigned int Elf32_Off;

typedef signed int Elf32_Sword;

typedef unsigned int Elf32_Word;

/* 64-bit ELF base types. */

typedef unsigned long long Elf64_Addr;

typedef unsigned short Elf64_Half;

typedef signed short Elf64_SHalf;

typedef unsigned long long Elf64_Off;

typedef signed int Elf64_Sword;

typedef unsigned int Elf64_Word;

typedef unsigned long long Elf64_Xword;

typedef signed long long Elf64_Sxword;

/* These constants are for the segment types stored in the image headers */

#define PT_NULL    0

#define PT_LOAD    1

#define PT_DYNAMIC 2

#define PT_INTERP  3

#define PT_NOTE    4

#define PT_SHLIB   5

#define PT_PHDR    6

#define PT_TLS     7		
/* Thread local storage segment */

#define PT_LOOS    0x60000000	
/* OS-specific */

#define PT_HIOS    0x6fffffff	
/* OS-specific */

#define PT_LOPROC  0x70000000

#define PT_HIPROC  0x7fffffff

#define PT_GNU_EH_FRAME		0x6474e550


#define PT_GNU_STACK	(PT_LOOS + 0x474e551)

/* These constants define the different elf file types */

#define ET_NONE   0

#define ET_REL    1

#define ET_EXEC   2

#define ET_DYN    3

#define ET_CORE   4

#define ET_LOPROC 0xff00

#define ET_HIPROC 0xffff

/* These constants define the various ELF target machines */

#define EM_NONE  0

#define EM_PPC	       20	
/* PowerPC */

#define EM_PPC64       21	
/* PowerPC64 */


#define EI_NIDENT	16


typedef struct elf32_hdr {
	
unsigned char e_ident[EI_NIDENT];
	
Elf32_Half e_type;
	
Elf32_Half e_machine;
	
Elf32_Word e_version;
	
Elf32_Addr e_entry;	/* Entry point */
	
Elf32_Off e_phoff;
	
Elf32_Off e_shoff;
	
Elf32_Word e_flags;
	
Elf32_Half e_ehsize;
	
Elf32_Half e_phentsize;
	
Elf32_Half e_phnum;
	
Elf32_Half e_shentsize;
	
Elf32_Half e_shnum;
	
Elf32_Half e_shstrndx;

} Elf32_Ehdr;


typedef struct elf64_hdr {
	
unsigned char e_ident[16];	/* ELF "magic number" */
	
Elf64_Half e_type;
	
Elf64_Half e_machine;
	
Elf64_Word e_version;
	
Elf64_Addr e_entry;	/* Entry point virtual address */
	
Elf64_Off e_phoff;	/* Program header table file offset */
	
Elf64_Off e_shoff;	/* Section header table file offset */
	
Elf64_Word e_flags;
	
Elf64_Half e_ehsize;
	
Elf64_Half e_phentsize;
	
Elf64_Half e_phnum;
	
Elf64_Half e_shentsize;
	
Elf64_Half e_shnum;
	
Elf64_Half e_shstrndx;

} Elf64_Ehdr;

/* These constants define the permissions on sections in the program
   header, p_flags. */

#define PF_R		0x4

#define PF_W		0x2

#define PF_X		0x1


typedef struct elf32_phdr {
	
Elf32_Word p_type;
	
Elf32_Off p_offset;
	
Elf32_Addr p_vaddr;
	
Elf32_Addr p_paddr;
	
Elf32_Word p_filesz;
	
Elf32_Word p_memsz;
	
Elf32_Word p_flags;
	
Elf32_Word p_align;

} Elf32_Phdr;


typedef struct elf64_phdr {
	
Elf64_Word p_type;
	
Elf64_Word p_flags;
	
Elf64_Off p_offset;	/* Segment file offset */
	
Elf64_Addr p_vaddr;	/* Segment virtual address */
	
Elf64_Addr p_paddr;	/* Segment physical address */
	
Elf64_Xword p_filesz;	/* Segment size in file */
	
Elf64_Xword p_memsz;	/* Segment size in memory */
	
Elf64_Xword p_align;	/* Segment alignment, file & memory */

} Elf64_Phdr;


#define	EI_MAG0		0	
/* e_ident[] indexes */

#define	EI_MAG1		1

#define	EI_MAG2		2

#define	EI_MAG3		3

#define	EI_CLASS	4

#define	EI_DATA		5

#define	EI_VERSION	6

#define	EI_OSABI	7

#define	EI_PAD		8


#define	ELFMAG0		0x7f	
/* EI_MAG */

#define	ELFMAG1		'E'

#define	ELFMAG2		'L'

#define	ELFMAG3		'F'

#define	ELFMAG		"\177ELF"

#define	SELFMAG		4


#define	ELFCLASSNONE	0	
/* EI_CLASS */

#define	ELFCLASS32	1

#define	ELFCLASS64	2

#define	ELFCLASSNUM	3


#define ELFDATANONE	0	
/* e_ident[EI_DATA] */

#define ELFDATA2LSB	1

#define ELFDATA2MSB	2


#define EV_NONE		0	
/* e_version, EI_VERSION */

#define EV_CURRENT	1

#define EV_NUM		2


#define ELFOSABI_NONE	0

#define ELFOSABI_LINUX	3


struct elf_info {
	
unsigned long loadsize;
	
unsigned long memsize;
	
unsigned long elfoffset;
};
int parse_elf64(void *hdr, struct elf_info *info);
int parse_elf32(void *hdr, struct elf_info *info);

#endif				/* _PPC_BOOT_ELF_H_ */

Overall Contributors

PersonTokensPropCommitsCommitProp
Olaf Hering49391.81%133.33%
Mark A. Greer438.01%133.33%
Greg Kroah-Hartman10.19%133.33%
Total537100.00%3100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.