Blame view
fs/compat_binfmt_elf.c
3.49 KB
2522fe45a treewide: Replace... |
1 |
// SPDX-License-Identifier: GPL-2.0-only |
2f79e48ae x86: compat_binfm... |
2 3 4 5 6 |
/* * 32-bit compatibility support for ELF format executables and core dumps. * * Copyright (C) 2007 Red Hat, Inc. All rights reserved. * |
2f79e48ae x86: compat_binfm... |
7 8 9 10 11 12 13 14 15 16 17 18 |
* Red Hat Author: Roland McGrath. * * This file is used in a 64-bit kernel that wants to support 32-bit ELF. * asm/elf.h is responsible for defining the compat_* and COMPAT_* macros * used below, with definitions appropriate for 32-bit ABI compatibility. * * We use macros to rename the ABI types and machine-dependent * functions used in binfmt_elf.c to compat versions. */ #include <linux/elfcore-compat.h> #include <linux/time.h> |
00e19ceec ELF: Add ELF prog... |
19 |
#define ELF_COMPAT 1 |
2f79e48ae x86: compat_binfm... |
20 21 22 23 24 25 26 27 |
/* * Rename the basic ELF layout types to refer to the 32-bit class of files. */ #undef ELF_CLASS #define ELF_CLASS ELFCLASS32 #undef elfhdr #undef elf_phdr |
1fcccbac8 elf coredump: rep... |
28 |
#undef elf_shdr |
2f79e48ae x86: compat_binfm... |
29 30 |
#undef elf_note #undef elf_addr_t |
00e19ceec ELF: Add ELF prog... |
31 |
#undef ELF_GNU_PROPERTY_ALIGN |
2f79e48ae x86: compat_binfm... |
32 33 |
#define elfhdr elf32_hdr #define elf_phdr elf32_phdr |
1fcccbac8 elf coredump: rep... |
34 |
#define elf_shdr elf32_shdr |
2f79e48ae x86: compat_binfm... |
35 36 |
#define elf_note elf32_note #define elf_addr_t Elf32_Addr |
00e19ceec ELF: Add ELF prog... |
37 |
#define ELF_GNU_PROPERTY_ALIGN ELF32_GNU_PROPERTY_ALIGN |
2f79e48ae x86: compat_binfm... |
38 39 |
/* |
49ae4d4b1 coredump: add a n... |
40 41 |
* Some data types as stored in coredump. */ |
2aa362c49 coredump: extend ... |
42 |
#define user_long_t compat_long_t |
49ae4d4b1 coredump: add a n... |
43 |
#define user_siginfo_t compat_siginfo_t |
fa4751f45 binfmt_elf: remov... |
44 |
#define copy_siginfo_to_external copy_siginfo_to_external32 |
49ae4d4b1 coredump: add a n... |
45 46 |
/* |
2f79e48ae x86: compat_binfm... |
47 48 49 50 51 |
* The machine-dependent core note format types are defined in elfcore-compat.h, * which requires asm/elf.h to define compat_elf_gregset_t et al. */ #define elf_prstatus compat_elf_prstatus #define elf_prpsinfo compat_elf_prpsinfo |
e2bb80d55 y2038: elfcore: U... |
52 53 |
#undef ns_to_kernel_old_timeval #define ns_to_kernel_old_timeval ns_to_old_timeval32 |
2f79e48ae x86: compat_binfm... |
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
/* * To use this file, asm/elf.h must define compat_elf_check_arch. * The other following macros can be defined if the compat versions * differ from the native ones, or omitted when they match. */ #undef ELF_ARCH #undef elf_check_arch #define elf_check_arch compat_elf_check_arch #ifdef COMPAT_ELF_PLATFORM #undef ELF_PLATFORM #define ELF_PLATFORM COMPAT_ELF_PLATFORM #endif #ifdef COMPAT_ELF_HWCAP #undef ELF_HWCAP #define ELF_HWCAP COMPAT_ELF_HWCAP #endif |
66d6e3b38 binfmt_elf: add E... |
74 75 76 77 |
#ifdef COMPAT_ELF_HWCAP2 #undef ELF_HWCAP2 #define ELF_HWCAP2 COMPAT_ELF_HWCAP2 #endif |
2f79e48ae x86: compat_binfm... |
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
#ifdef COMPAT_ARCH_DLINFO #undef ARCH_DLINFO #define ARCH_DLINFO COMPAT_ARCH_DLINFO #endif #ifdef COMPAT_ELF_ET_DYN_BASE #undef ELF_ET_DYN_BASE #define ELF_ET_DYN_BASE COMPAT_ELF_ET_DYN_BASE #endif #ifdef COMPAT_ELF_EXEC_PAGESIZE #undef ELF_EXEC_PAGESIZE #define ELF_EXEC_PAGESIZE COMPAT_ELF_EXEC_PAGESIZE #endif #ifdef COMPAT_ELF_PLAT_INIT #undef ELF_PLAT_INIT #define ELF_PLAT_INIT COMPAT_ELF_PLAT_INIT #endif #ifdef COMPAT_SET_PERSONALITY #undef SET_PERSONALITY #define SET_PERSONALITY COMPAT_SET_PERSONALITY #endif #ifdef compat_start_thread #undef start_thread #define start_thread compat_start_thread #endif #ifdef compat_arch_setup_additional_pages #undef ARCH_HAS_SETUP_ADDITIONAL_PAGES #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1 #undef arch_setup_additional_pages #define arch_setup_additional_pages compat_arch_setup_additional_pages #endif |
6e0d6ac5f arm64/elf: Disabl... |
114 115 116 117 |
#ifdef compat_elf_read_implies_exec #undef elf_read_implies_exec #define elf_read_implies_exec compat_elf_read_implies_exec #endif |
2f79e48ae x86: compat_binfm... |
118 119 120 121 122 123 124 125 126 127 128 129 130 |
/* * Rename a few of the symbols that binfmt_elf.c will define. * These are all local so the names don't really matter, but it * might make some debugging less confusing not to duplicate them. */ #define elf_format compat_elf_format #define init_elf_binfmt init_compat_elf_binfmt #define exit_elf_binfmt exit_compat_elf_binfmt /* * We share all the actual code with the native (64-bit) version. */ #include "binfmt_elf.c" |