1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2 /* elf-fdpic.h: FDPIC ELF load map
3  *
4  * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved.
5  * Written by David Howells (dhowells@redhat.com)
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version
10  * 2 of the License, or (at your option) any later version.
11  */
12 
13 #ifndef _UAPI_LINUX_ELF_FDPIC_H
14 #define _UAPI_LINUX_ELF_FDPIC_H
15 
16 #include <linux/elf.h>
17 
18 #define PT_GNU_STACK    (PT_LOOS + 0x474e551)
19 
20 /* segment mappings for ELF FDPIC libraries/executables/interpreters */
21 struct elf32_fdpic_loadseg {
22 	Elf32_Addr	addr;		/* core address to which mapped */
23 	Elf32_Addr	p_vaddr;	/* VMA recorded in file */
24 	Elf32_Word	p_memsz;	/* allocation size recorded in file */
25 };
26 
27 struct elf32_fdpic_loadmap {
28 	Elf32_Half	version;	/* version of these structures, just in case... */
29 	Elf32_Half	nsegs;		/* number of segments */
30 	struct elf32_fdpic_loadseg segs[];
31 };
32 
33 #define ELF32_FDPIC_LOADMAP_VERSION	0x0000
34 
35 /* segment mappings for ELF FDPIC libraries/executables/interpreters */
36 struct elf64_fdpic_loadseg {
37 	Elf64_Addr	addr;		/* core address to which mapped */
38 	Elf64_Addr	p_vaddr;	/* VMA recorded in file */
39 	Elf64_Word	p_memsz;	/* allocation size recorded in file */
40 };
41 
42 struct elf64_fdpic_loadmap {
43 	Elf64_Half	version;	/* version of these structures, just in case... */
44 	Elf64_Half	nsegs;		/* number of segments */
45 	struct elf64_fdpic_loadseg segs[];
46 };
47 
48 #define ELF64_FDPIC_LOADMAP_VERSION	0x0000
49 
50 #endif /* _UAPI_LINUX_ELF_FDPIC_H */
51