forked from mirrors/linux
		
	Make most arch asm/module.h files use asm-generic/module.h
Use the mapping of Elf_[SPE]hdr, Elf_Addr, Elf_Sym, Elf_Dyn, Elf_Rel/Rela,
ELF_R_TYPE() and ELF_R_SYM() to either the 32-bit version or the 64-bit version
into asm-generic/module.h for all arches bar MIPS.
Also, use the generic definition mod_arch_specific where possible.
To this end, I've defined three new config bools:
 (*) HAVE_MOD_ARCH_SPECIFIC
     Arches define this if they don't want to use the empty generic
     mod_arch_specific struct.
 (*) MODULES_USE_ELF_RELA
     Arches define this if their modules can contain RELA records.  This causes
     the Elf_Rela mapping to be emitted and allows apply_relocate_add() to be
     defined by the arch rather than have the core emit an error message.
 (*) MODULES_USE_ELF_REL
     Arches define this if their modules can contain REL records.  This causes
     the Elf_Rel mapping to be emitted and allows apply_relocate() to be
     defined by the arch rather than have the core emit an error message.
Note that it is possible to allow both REL and RELA records: m68k and mips are
two arches that do this.
With this, some arch asm/module.h files can be deleted entirely and replaced
with a generic-y marker in the arch Kbuild file.
Additionally, I have removed the bits from m32r and score that handle the
unsupported type of relocation record as that's now handled centrally.
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
			
			
This commit is contained in:
		
							parent
							
								
									6ede81239e
								
							
						
					
					
						commit
						786d35d45c
					
				
					 57 changed files with 168 additions and 224 deletions
				
			
		
							
								
								
									
										19
									
								
								arch/Kconfig
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								arch/Kconfig
									
									
									
									
									
								
							| 
						 | 
					@ -281,4 +281,23 @@ config SECCOMP_FILTER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  See Documentation/prctl/seccomp_filter.txt for details.
 | 
						  See Documentation/prctl/seccomp_filter.txt for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						bool
 | 
				
			||||||
 | 
						help
 | 
				
			||||||
 | 
						  The arch uses struct mod_arch_specific to store data.  Many arches
 | 
				
			||||||
 | 
						  just need a simple module loader without arch specific data - those
 | 
				
			||||||
 | 
						  should not enable this.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
						bool
 | 
				
			||||||
 | 
						help
 | 
				
			||||||
 | 
						  Modules only use ELF RELA relocations.  Modules with ELF REL
 | 
				
			||||||
 | 
						  relocations will give an error.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config MODULES_USE_ELF_REL
 | 
				
			||||||
 | 
						bool
 | 
				
			||||||
 | 
						help
 | 
				
			||||||
 | 
						  Modules only use ELF REL relocations.  Modules with ELF RELA
 | 
				
			||||||
 | 
						  relocations will give an error.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
source "kernel/gcov/Kconfig"
 | 
					source "kernel/gcov/Kconfig"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,8 @@ config ALPHA
 | 
				
			||||||
	select GENERIC_CMOS_UPDATE
 | 
						select GENERIC_CMOS_UPDATE
 | 
				
			||||||
	select GENERIC_STRNCPY_FROM_USER
 | 
						select GENERIC_STRNCPY_FROM_USER
 | 
				
			||||||
	select GENERIC_STRNLEN_USER
 | 
						select GENERIC_STRNLEN_USER
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  The Alpha is a 64-bit general-purpose processor designed and
 | 
						  The Alpha is a 64-bit general-purpose processor designed and
 | 
				
			||||||
	  marketed by the Digital Equipment Corporation of blessed memory,
 | 
						  marketed by the Digital Equipment Corporation of blessed memory,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,19 +1,13 @@
 | 
				
			||||||
#ifndef _ALPHA_MODULE_H
 | 
					#ifndef _ALPHA_MODULE_H
 | 
				
			||||||
#define _ALPHA_MODULE_H
 | 
					#define _ALPHA_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct mod_arch_specific
 | 
					struct mod_arch_specific
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned int gotsecindex;
 | 
						unsigned int gotsecindex;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Sym Elf64_Sym
 | 
					 | 
				
			||||||
#define Elf_Shdr Elf64_Shdr
 | 
					 | 
				
			||||||
#define Elf_Ehdr Elf64_Ehdr
 | 
					 | 
				
			||||||
#define Elf_Phdr Elf64_Phdr
 | 
					 | 
				
			||||||
#define Elf_Dyn Elf64_Dyn
 | 
					 | 
				
			||||||
#define Elf_Rel Elf64_Rel
 | 
					 | 
				
			||||||
#define Elf_Rela Elf64_Rela
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define ARCH_SHF_SMALL SHF_ALPHA_GPREL
 | 
					#define ARCH_SHF_SMALL SHF_ALPHA_GPREL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef MODULE
 | 
					#ifdef MODULE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,6 +49,8 @@ config ARM
 | 
				
			||||||
	select GENERIC_STRNCPY_FROM_USER
 | 
						select GENERIC_STRNCPY_FROM_USER
 | 
				
			||||||
	select GENERIC_STRNLEN_USER
 | 
						select GENERIC_STRNLEN_USER
 | 
				
			||||||
	select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN
 | 
						select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC if ARM_UNWIND
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_REL
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  The ARM series is a line of low-power-consumption RISC chip designs
 | 
						  The ARM series is a line of low-power-consumption RISC chip designs
 | 
				
			||||||
	  licensed by ARM Ltd and targeted at embedded applications and
 | 
						  licensed by ARM Ltd and targeted at embedded applications and
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,7 @@
 | 
				
			||||||
#ifndef _ASM_ARM_MODULE_H
 | 
					#ifndef _ASM_ARM_MODULE_H
 | 
				
			||||||
#define _ASM_ARM_MODULE_H
 | 
					#define _ASM_ARM_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Shdr	Elf32_Shdr
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
#define Elf_Sym		Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr	Elf32_Ehdr
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct unwind_table;
 | 
					struct unwind_table;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,13 +14,11 @@ enum {
 | 
				
			||||||
	ARM_SEC_DEVEXIT,
 | 
						ARM_SEC_DEVEXIT,
 | 
				
			||||||
	ARM_SEC_MAX,
 | 
						ARM_SEC_MAX,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct mod_arch_specific {
 | 
					struct mod_arch_specific {
 | 
				
			||||||
#ifdef CONFIG_ARM_UNWIND
 | 
					 | 
				
			||||||
	struct unwind_table *unwind[ARM_SEC_MAX];
 | 
						struct unwind_table *unwind[ARM_SEC_MAX];
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Add the ARM architecture version to the version magic string
 | 
					 * Add the ARM architecture version to the version magic string
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,8 @@ config AVR32
 | 
				
			||||||
	select ARCH_WANT_IPC_PARSE_VERSION
 | 
						select ARCH_WANT_IPC_PARSE_VERSION
 | 
				
			||||||
	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 | 
						select ARCH_HAVE_NMI_SAFE_CMPXCHG
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  AVR32 is a high-performance 32-bit RISC microprocessor core,
 | 
						  AVR32 is a high-performance 32-bit RISC microprocessor core,
 | 
				
			||||||
	  designed for cost-sensitive embedded applications, with particular
 | 
						  designed for cost-sensitive embedded applications, with particular
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
#ifndef __ASM_AVR32_MODULE_H
 | 
					#ifndef __ASM_AVR32_MODULE_H
 | 
				
			||||||
#define __ASM_AVR32_MODULE_H
 | 
					#define __ASM_AVR32_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct mod_arch_syminfo {
 | 
					struct mod_arch_syminfo {
 | 
				
			||||||
	unsigned long got_offset;
 | 
						unsigned long got_offset;
 | 
				
			||||||
	int got_initialized;
 | 
						int got_initialized;
 | 
				
			||||||
| 
						 | 
					@ -17,10 +19,6 @@ struct mod_arch_specific {
 | 
				
			||||||
	struct mod_arch_syminfo *syminfo;
 | 
						struct mod_arch_syminfo *syminfo;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Shdr		Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym			Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr		Elf32_Ehdr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MODULE_PROC_FAMILY "AVR32v1"
 | 
					#define MODULE_PROC_FAMILY "AVR32v1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
 | 
					#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,6 +42,8 @@ config BLACKFIN
 | 
				
			||||||
	select HAVE_NMI_WATCHDOG if NMI_WATCHDOG
 | 
						select HAVE_NMI_WATCHDOG if NMI_WATCHDOG
 | 
				
			||||||
	select GENERIC_SMP_IDLE_THREAD
 | 
						select GENERIC_SMP_IDLE_THREAD
 | 
				
			||||||
	select ARCH_USES_GETTIMEOFFSET if !GENERIC_CLOCKEVENTS
 | 
						select ARCH_USES_GETTIMEOFFSET if !GENERIC_CLOCKEVENTS
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config GENERIC_CSUM
 | 
					config GENERIC_CSUM
 | 
				
			||||||
	def_bool y
 | 
						def_bool y
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,9 +7,7 @@
 | 
				
			||||||
#ifndef _ASM_BFIN_MODULE_H
 | 
					#ifndef _ASM_BFIN_MODULE_H
 | 
				
			||||||
#define _ASM_BFIN_MODULE_H
 | 
					#define _ASM_BFIN_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Shdr        Elf32_Shdr
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
#define Elf_Sym         Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr        Elf32_Ehdr
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct mod_arch_specific {
 | 
					struct mod_arch_specific {
 | 
				
			||||||
	Elf_Shdr	*text_l1;
 | 
						Elf_Shdr	*text_l1;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,6 +17,7 @@ config C6X
 | 
				
			||||||
	select OF
 | 
						select OF
 | 
				
			||||||
	select OF_EARLY_FLATTREE
 | 
						select OF_EARLY_FLATTREE
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config MMU
 | 
					config MMU
 | 
				
			||||||
	def_bool n
 | 
						def_bool n
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,17 +13,7 @@
 | 
				
			||||||
#ifndef _ASM_C6X_MODULE_H
 | 
					#ifndef _ASM_C6X_MODULE_H
 | 
				
			||||||
#define _ASM_C6X_MODULE_H
 | 
					#define _ASM_C6X_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Shdr	Elf32_Shdr
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
#define Elf_Sym		Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr	Elf32_Ehdr
 | 
					 | 
				
			||||||
#define Elf_Addr	Elf32_Addr
 | 
					 | 
				
			||||||
#define Elf_Word	Elf32_Word
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * This file contains the C6x architecture specific module code.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
struct mod_arch_specific {
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct loaded_sections {
 | 
					struct loaded_sections {
 | 
				
			||||||
	unsigned int new_vaddr;
 | 
						unsigned int new_vaddr;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,7 @@ config CRIS
 | 
				
			||||||
	select GENERIC_IOMAP
 | 
						select GENERIC_IOMAP
 | 
				
			||||||
	select GENERIC_SMP_IDLE_THREAD if ETRAX_ARCH_V32
 | 
						select GENERIC_SMP_IDLE_THREAD if ETRAX_ARCH_V32
 | 
				
			||||||
	select GENERIC_CMOS_UPDATE
 | 
						select GENERIC_CMOS_UPDATE
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config HZ
 | 
					config HZ
 | 
				
			||||||
	int
 | 
						int
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,3 +7,5 @@ header-y += ethernet.h
 | 
				
			||||||
header-y += etraxgpio.h
 | 
					header-y += etraxgpio.h
 | 
				
			||||||
header-y += rs485.h
 | 
					header-y += rs485.h
 | 
				
			||||||
header-y += sync_serial.h
 | 
					header-y += sync_serial.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					generic-y += module.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +0,0 @@
 | 
				
			||||||
#ifndef _ASM_CRIS_MODULE_H
 | 
					 | 
				
			||||||
#define _ASM_CRIS_MODULE_H
 | 
					 | 
				
			||||||
/* cris is simple */
 | 
					 | 
				
			||||||
struct mod_arch_specific { };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define Elf_Shdr Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr Elf32_Ehdr
 | 
					 | 
				
			||||||
#endif /* _ASM_CRIS_MODULE_H */
 | 
					 | 
				
			||||||
| 
						 | 
					@ -11,13 +11,7 @@
 | 
				
			||||||
#ifndef _ASM_MODULE_H
 | 
					#ifndef _ASM_MODULE_H
 | 
				
			||||||
#define _ASM_MODULE_H
 | 
					#define _ASM_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct mod_arch_specific
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define Elf_Shdr	Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym		Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr	Elf32_Ehdr
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Include the architecture version.
 | 
					 * Include the architecture version.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@ config H8300
 | 
				
			||||||
	select ARCH_WANT_IPC_PARSE_VERSION
 | 
						select ARCH_WANT_IPC_PARSE_VERSION
 | 
				
			||||||
	select GENERIC_IRQ_SHOW
 | 
						select GENERIC_IRQ_SHOW
 | 
				
			||||||
	select GENERIC_CPU_DEVICES
 | 
						select GENERIC_CPU_DEVICES
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config SYMBOL_PREFIX
 | 
					config SYMBOL_PREFIX
 | 
				
			||||||
	string
 | 
						string
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1 +1,3 @@
 | 
				
			||||||
include include/asm-generic/Kbuild.asm
 | 
					include include/asm-generic/Kbuild.asm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					generic-y	+= module.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,11 +0,0 @@
 | 
				
			||||||
#ifndef _ASM_H8300_MODULE_H
 | 
					 | 
				
			||||||
#define _ASM_H8300_MODULE_H
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * This file contains the H8/300 architecture specific module code.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
struct mod_arch_specific { };
 | 
					 | 
				
			||||||
#define Elf_Shdr Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr Elf32_Ehdr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* _ASM_H8/300_MODULE_H */
 | 
					 | 
				
			||||||
| 
						 | 
					@ -30,6 +30,7 @@ config HEXAGON
 | 
				
			||||||
	select KTIME_SCALAR
 | 
						select KTIME_SCALAR
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS_BROADCAST
 | 
						select GENERIC_CLOCKEVENTS_BROADCAST
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
	---help---
 | 
						---help---
 | 
				
			||||||
	  Qualcomm Hexagon is a processor architecture designed for high
 | 
						  Qualcomm Hexagon is a processor architecture designed for high
 | 
				
			||||||
	  performance and low power across a wide variety of applications.
 | 
						  performance and low power across a wide variety of applications.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,6 +39,8 @@ config IA64
 | 
				
			||||||
	select ARCH_THREAD_INFO_ALLOCATOR
 | 
						select ARCH_THREAD_INFO_ALLOCATOR
 | 
				
			||||||
	select ARCH_CLOCKSOURCE_DATA
 | 
						select ARCH_CLOCKSOURCE_DATA
 | 
				
			||||||
	select GENERIC_TIME_VSYSCALL
 | 
						select GENERIC_TIME_VSYSCALL
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
	default y
 | 
						default y
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  The Itanium Processor Family is Intel's 64-bit successor to
 | 
						  The Itanium Processor Family is Intel's 64-bit successor to
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
#ifndef _ASM_IA64_MODULE_H
 | 
					#ifndef _ASM_IA64_MODULE_H
 | 
				
			||||||
#define _ASM_IA64_MODULE_H
 | 
					#define _ASM_IA64_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * IA-64-specific support for kernel module loader.
 | 
					 * IA-64-specific support for kernel module loader.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					@ -29,10 +31,6 @@ struct mod_arch_specific {
 | 
				
			||||||
	unsigned int next_got_entry;	/* index of next available got entry */
 | 
						unsigned int next_got_entry;	/* index of next available got entry */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Shdr	Elf64_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym		Elf64_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr	Elf64_Ehdr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MODULE_PROC_FAMILY	"ia64"
 | 
					#define MODULE_PROC_FAMILY	"ia64"
 | 
				
			||||||
#define MODULE_ARCH_VERMAGIC	MODULE_PROC_FAMILY \
 | 
					#define MODULE_ARCH_VERMAGIC	MODULE_PROC_FAMILY \
 | 
				
			||||||
	"gcc-" __stringify(__GNUC__) "." __stringify(__GNUC_MINOR__)
 | 
						"gcc-" __stringify(__GNUC__) "." __stringify(__GNUC_MINOR__)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@ config M32R
 | 
				
			||||||
	select GENERIC_IRQ_SHOW
 | 
						select GENERIC_IRQ_SHOW
 | 
				
			||||||
	select GENERIC_ATOMIC64
 | 
						select GENERIC_ATOMIC64
 | 
				
			||||||
	select ARCH_USES_GETTIMEOFFSET
 | 
						select ARCH_USES_GETTIMEOFFSET
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config SBUS
 | 
					config SBUS
 | 
				
			||||||
	bool
 | 
						bool
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1 +1,3 @@
 | 
				
			||||||
include include/asm-generic/Kbuild.asm
 | 
					include include/asm-generic/Kbuild.asm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					generic-y	+= module.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,10 +0,0 @@
 | 
				
			||||||
#ifndef _ASM_M32R_MODULE_H
 | 
					 | 
				
			||||||
#define _ASM_M32R_MODULE_H
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct mod_arch_specific { };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define Elf_Shdr	Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym		Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr	Elf32_Ehdr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* _ASM_M32R_MODULE_H */
 | 
					 | 
				
			||||||
| 
						 | 
					@ -201,18 +201,3 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
int apply_relocate(Elf32_Shdr *sechdrs,
 | 
					 | 
				
			||||||
		       const char *strtab,
 | 
					 | 
				
			||||||
		       unsigned int symindex,
 | 
					 | 
				
			||||||
		       unsigned int relsec,
 | 
					 | 
				
			||||||
		       struct module *me)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
#if 0
 | 
					 | 
				
			||||||
	printk(KERN_ERR "module %s: REL RELOCATION unsupported\n",
 | 
					 | 
				
			||||||
	       me->name);
 | 
					 | 
				
			||||||
	return -ENOEXEC;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,9 @@ config M68K
 | 
				
			||||||
	select FPU if MMU
 | 
						select FPU if MMU
 | 
				
			||||||
	select ARCH_WANT_IPC_PARSE_VERSION
 | 
						select ARCH_WANT_IPC_PARSE_VERSION
 | 
				
			||||||
	select ARCH_USES_GETTIMEOFFSET if MMU && !COLDFIRE
 | 
						select ARCH_USES_GETTIMEOFFSET if MMU && !COLDFIRE
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_REL
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config RWSEM_GENERIC_SPINLOCK
 | 
					config RWSEM_GENERIC_SPINLOCK
 | 
				
			||||||
	bool
 | 
						bool
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
#ifndef _ASM_M68K_MODULE_H
 | 
					#ifndef _ASM_M68K_MODULE_H
 | 
				
			||||||
#define _ASM_M68K_MODULE_H
 | 
					#define _ASM_M68K_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum m68k_fixup_type {
 | 
					enum m68k_fixup_type {
 | 
				
			||||||
	m68k_fixup_memoffset,
 | 
						m68k_fixup_memoffset,
 | 
				
			||||||
	m68k_fixup_vnode_shift,
 | 
						m68k_fixup_vnode_shift,
 | 
				
			||||||
| 
						 | 
					@ -36,8 +38,4 @@ struct module;
 | 
				
			||||||
extern void module_fixup(struct module *mod, struct m68k_fixup_info *start,
 | 
					extern void module_fixup(struct module *mod, struct m68k_fixup_info *start,
 | 
				
			||||||
			 struct m68k_fixup_info *end);
 | 
								 struct m68k_fixup_info *end);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Shdr Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr Elf32_Ehdr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* _ASM_M68K_MODULE_H */
 | 
					#endif /* _ASM_M68K_MODULE_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +24,7 @@ config MICROBLAZE
 | 
				
			||||||
	select GENERIC_CPU_DEVICES
 | 
						select GENERIC_CPU_DEVICES
 | 
				
			||||||
	select GENERIC_ATOMIC64
 | 
						select GENERIC_ATOMIC64
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config SWAP
 | 
					config SWAP
 | 
				
			||||||
	def_bool n
 | 
						def_bool n
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,9 @@ config MIPS
 | 
				
			||||||
	select BUILDTIME_EXTABLE_SORT
 | 
						select BUILDTIME_EXTABLE_SORT
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
	select GENERIC_CMOS_UPDATE
 | 
						select GENERIC_CMOS_UPDATE
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_REL
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA if 64BIT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menu "Machine selection"
 | 
					menu "Machine selection"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,11 +35,14 @@ typedef struct {
 | 
				
			||||||
} Elf64_Mips_Rela;
 | 
					} Elf64_Mips_Rela;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_32BIT
 | 
					#ifdef CONFIG_32BIT
 | 
				
			||||||
 | 
					 | 
				
			||||||
#define Elf_Shdr	Elf32_Shdr
 | 
					#define Elf_Shdr	Elf32_Shdr
 | 
				
			||||||
#define Elf_Sym		Elf32_Sym
 | 
					#define Elf_Sym		Elf32_Sym
 | 
				
			||||||
#define Elf_Ehdr	Elf32_Ehdr
 | 
					#define Elf_Ehdr	Elf32_Ehdr
 | 
				
			||||||
#define Elf_Addr	Elf32_Addr
 | 
					#define Elf_Addr	Elf32_Addr
 | 
				
			||||||
 | 
					#define Elf_Rel		Elf32_Rel
 | 
				
			||||||
 | 
					#define Elf_Rela	Elf32_Rela
 | 
				
			||||||
 | 
					#define ELF_R_TYPE(X)	ELF32_R_TYPE(X)
 | 
				
			||||||
 | 
					#define ELF_R_SYM(X)	ELF32_R_SYM(X)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Mips_Rel	Elf32_Rel
 | 
					#define Elf_Mips_Rel	Elf32_Rel
 | 
				
			||||||
#define Elf_Mips_Rela	Elf32_Rela
 | 
					#define Elf_Mips_Rela	Elf32_Rela
 | 
				
			||||||
| 
						 | 
					@ -50,11 +53,14 @@ typedef struct {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_64BIT
 | 
					#ifdef CONFIG_64BIT
 | 
				
			||||||
 | 
					 | 
				
			||||||
#define Elf_Shdr	Elf64_Shdr
 | 
					#define Elf_Shdr	Elf64_Shdr
 | 
				
			||||||
#define Elf_Sym		Elf64_Sym
 | 
					#define Elf_Sym		Elf64_Sym
 | 
				
			||||||
#define Elf_Ehdr	Elf64_Ehdr
 | 
					#define Elf_Ehdr	Elf64_Ehdr
 | 
				
			||||||
#define Elf_Addr	Elf64_Addr
 | 
					#define Elf_Addr	Elf64_Addr
 | 
				
			||||||
 | 
					#define Elf_Rel		Elf64_Rel
 | 
				
			||||||
 | 
					#define Elf_Rela	Elf64_Rela
 | 
				
			||||||
 | 
					#define ELF_R_TYPE(X)	ELF64_R_TYPE(X)
 | 
				
			||||||
 | 
					#define ELF_R_SYM(X)	ELF64_R_SYM(X)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Mips_Rel	Elf64_Mips_Rel
 | 
					#define Elf_Mips_Rel	Elf64_Mips_Rel
 | 
				
			||||||
#define Elf_Mips_Rela	Elf64_Mips_Rela
 | 
					#define Elf_Mips_Rela	Elf64_Mips_Rela
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,7 @@ obj-$(CONFIG_SYNC_R4K)		+= sync-r4k.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
obj-$(CONFIG_STACKTRACE)	+= stacktrace.o
 | 
					obj-$(CONFIG_STACKTRACE)	+= stacktrace.o
 | 
				
			||||||
obj-$(CONFIG_MODULES)		+= mips_ksyms.o module.o
 | 
					obj-$(CONFIG_MODULES)		+= mips_ksyms.o module.o
 | 
				
			||||||
obj-$(CONFIG_MODULES)		+= module-rela.o
 | 
					obj-$(CONFIG_MODULES_USE_ELF_RELA) += module-rela.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
obj-$(CONFIG_FUNCTION_TRACER)	+= mcount.o ftrace.o
 | 
					obj-$(CONFIG_FUNCTION_TRACER)	+= mcount.o ftrace.o
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,7 @@ config MN10300
 | 
				
			||||||
	select HAVE_ARCH_KGDB
 | 
						select HAVE_ARCH_KGDB
 | 
				
			||||||
	select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER
 | 
						select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config AM33_2
 | 
					config AM33_2
 | 
				
			||||||
	def_bool n
 | 
						def_bool n
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,12 +12,7 @@
 | 
				
			||||||
#ifndef _ASM_MODULE_H
 | 
					#ifndef _ASM_MODULE_H
 | 
				
			||||||
#define _ASM_MODULE_H
 | 
					#define _ASM_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct mod_arch_specific {
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define Elf_Shdr	Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym		Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr	Elf32_Ehdr
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Include the MN10300 architecture version.
 | 
					 * Include the MN10300 architecture version.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,7 @@ config OPENRISC
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
	select GENERIC_STRNCPY_FROM_USER
 | 
						select GENERIC_STRNCPY_FROM_USER
 | 
				
			||||||
	select GENERIC_STRNLEN_USER
 | 
						select GENERIC_STRNLEN_USER
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config MMU
 | 
					config MMU
 | 
				
			||||||
	def_bool y
 | 
						def_bool y
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,8 @@ config PARISC
 | 
				
			||||||
	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 | 
						select ARCH_HAVE_NMI_SAFE_CMPXCHG
 | 
				
			||||||
	select GENERIC_SMP_IDLE_THREAD
 | 
						select GENERIC_SMP_IDLE_THREAD
 | 
				
			||||||
	select GENERIC_STRNCPY_FROM_USER
 | 
						select GENERIC_STRNCPY_FROM_USER
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  The PA-RISC microprocessor is designed by Hewlett-Packard and used
 | 
						  The PA-RISC microprocessor is designed by Hewlett-Packard and used
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,21 +1,11 @@
 | 
				
			||||||
#ifndef _ASM_PARISC_MODULE_H
 | 
					#ifndef _ASM_PARISC_MODULE_H
 | 
				
			||||||
#define _ASM_PARISC_MODULE_H
 | 
					#define _ASM_PARISC_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * This file contains the parisc architecture specific module code.
 | 
					 * This file contains the parisc architecture specific module code.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#ifdef CONFIG_64BIT
 | 
					 | 
				
			||||||
#define Elf_Shdr Elf64_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym Elf64_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr Elf64_Ehdr
 | 
					 | 
				
			||||||
#define Elf_Addr Elf64_Addr
 | 
					 | 
				
			||||||
#define Elf_Rela Elf64_Rela
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define Elf_Shdr Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr Elf32_Ehdr
 | 
					 | 
				
			||||||
#define Elf_Addr Elf32_Addr
 | 
					 | 
				
			||||||
#define Elf_Rela Elf32_Rela
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct unwind_table;
 | 
					struct unwind_table;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -139,6 +139,8 @@ config PPC
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
	select GENERIC_STRNCPY_FROM_USER
 | 
						select GENERIC_STRNCPY_FROM_USER
 | 
				
			||||||
	select GENERIC_STRNLEN_USER
 | 
						select GENERIC_STRNLEN_USER
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config EARLY_PRINTK
 | 
					config EARLY_PRINTK
 | 
				
			||||||
	bool
 | 
						bool
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <linux/list.h>
 | 
					#include <linux/list.h>
 | 
				
			||||||
#include <asm/bug.h>
 | 
					#include <asm/bug.h>
 | 
				
			||||||
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __powerpc64__
 | 
					#ifndef __powerpc64__
 | 
				
			||||||
| 
						 | 
					@ -60,16 +61,10 @@ struct mod_arch_specific {
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __powerpc64__
 | 
					#ifdef __powerpc64__
 | 
				
			||||||
#    define Elf_Shdr	Elf64_Shdr
 | 
					 | 
				
			||||||
#    define Elf_Sym	Elf64_Sym
 | 
					 | 
				
			||||||
#    define Elf_Ehdr	Elf64_Ehdr
 | 
					 | 
				
			||||||
#    ifdef MODULE
 | 
					#    ifdef MODULE
 | 
				
			||||||
	asm(".section .stubs,\"ax\",@nobits; .align 3; .previous");
 | 
						asm(".section .stubs,\"ax\",@nobits; .align 3; .previous");
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
#    define Elf_Shdr	Elf32_Shdr
 | 
					 | 
				
			||||||
#    define Elf_Sym	Elf32_Sym
 | 
					 | 
				
			||||||
#    define Elf_Ehdr	Elf32_Ehdr
 | 
					 | 
				
			||||||
#    ifdef MODULE
 | 
					#    ifdef MODULE
 | 
				
			||||||
	asm(".section .plt,\"ax\",@nobits; .align 3; .previous");
 | 
						asm(".section .plt,\"ax\",@nobits; .align 3; .previous");
 | 
				
			||||||
	asm(".section .init.plt,\"ax\",@nobits; .align 3; .previous");
 | 
						asm(".section .init.plt,\"ax\",@nobits; .align 3; .previous");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -125,6 +125,8 @@ config S390
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
	select KTIME_SCALAR if 32BIT
 | 
						select KTIME_SCALAR if 32BIT
 | 
				
			||||||
	select HAVE_ARCH_SECCOMP_FILTER
 | 
						select HAVE_ARCH_SECCOMP_FILTER
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config SCHED_OMIT_FRAME_POINTER
 | 
					config SCHED_OMIT_FRAME_POINTER
 | 
				
			||||||
	def_bool y
 | 
						def_bool y
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,8 @@
 | 
				
			||||||
#ifndef _ASM_S390_MODULE_H
 | 
					#ifndef _ASM_S390_MODULE_H
 | 
				
			||||||
#define _ASM_S390_MODULE_H
 | 
					#define _ASM_S390_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * This file contains the s390 architecture specific module code.
 | 
					 * This file contains the s390 architecture specific module code.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					@ -28,19 +31,4 @@ struct mod_arch_specific
 | 
				
			||||||
	struct mod_arch_syminfo *syminfo;
 | 
						struct mod_arch_syminfo *syminfo;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_64BIT
 | 
					 | 
				
			||||||
#define ElfW(x) Elf64_ ## x
 | 
					 | 
				
			||||||
#define ELFW(x) ELF64_ ## x
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define ElfW(x) Elf32_ ## x
 | 
					 | 
				
			||||||
#define ELFW(x) ELF32_ ## x
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define Elf_Addr ElfW(Addr)
 | 
					 | 
				
			||||||
#define Elf_Rela ElfW(Rela)
 | 
					 | 
				
			||||||
#define Elf_Shdr ElfW(Shdr)
 | 
					 | 
				
			||||||
#define Elf_Sym ElfW(Sym)
 | 
					 | 
				
			||||||
#define Elf_Ehdr ElfW(Ehdr)
 | 
					 | 
				
			||||||
#define ELF_R_SYM ELFW(R_SYM)
 | 
					 | 
				
			||||||
#define ELF_R_TYPE ELFW(R_TYPE)
 | 
					 | 
				
			||||||
#endif /* _ASM_S390_MODULE_H */
 | 
					#endif /* _ASM_S390_MODULE_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,6 +10,8 @@ config SCORE
 | 
				
			||||||
       select ARCH_DISCARD_MEMBLOCK
 | 
					       select ARCH_DISCARD_MEMBLOCK
 | 
				
			||||||
       select GENERIC_CPU_DEVICES
 | 
					       select GENERIC_CPU_DEVICES
 | 
				
			||||||
       select GENERIC_CLOCKEVENTS
 | 
					       select GENERIC_CLOCKEVENTS
 | 
				
			||||||
 | 
					       select HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_REL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
choice
 | 
					choice
 | 
				
			||||||
	prompt "System type"
 | 
						prompt "System type"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <linux/list.h>
 | 
					#include <linux/list.h>
 | 
				
			||||||
#include <asm/uaccess.h>
 | 
					#include <asm/uaccess.h>
 | 
				
			||||||
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct mod_arch_specific {
 | 
					struct mod_arch_specific {
 | 
				
			||||||
	/* Data Bus Error exception tables */
 | 
						/* Data Bus Error exception tables */
 | 
				
			||||||
| 
						 | 
					@ -13,11 +14,6 @@ struct mod_arch_specific {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef uint8_t Elf64_Byte;		/* Type for a 8-bit quantity. */
 | 
					typedef uint8_t Elf64_Byte;		/* Type for a 8-bit quantity. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Shdr	Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym		Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr	Elf32_Ehdr
 | 
					 | 
				
			||||||
#define Elf_Addr	Elf32_Addr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Given an address, look for it in the exception tables. */
 | 
					/* Given an address, look for it in the exception tables. */
 | 
				
			||||||
#ifdef CONFIG_MODULES
 | 
					#ifdef CONFIG_MODULES
 | 
				
			||||||
const struct exception_table_entry *search_module_dbetables(unsigned long addr);
 | 
					const struct exception_table_entry *search_module_dbetables(unsigned long addr);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -125,16 +125,6 @@ int apply_relocate(Elf_Shdr *sechdrs, const char *strtab,
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab,
 | 
					 | 
				
			||||||
		unsigned int symindex, unsigned int relsec,
 | 
					 | 
				
			||||||
		struct module *me)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	/* Non-standard return value... most other arch's return -ENOEXEC
 | 
					 | 
				
			||||||
	 * for an unsupported relocation variant
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Given an address, look for it in the module exception tables. */
 | 
					/* Given an address, look for it in the module exception tables. */
 | 
				
			||||||
const struct exception_table_entry *search_module_dbetables(unsigned long addr)
 | 
					const struct exception_table_entry *search_module_dbetables(unsigned long addr)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,6 +35,8 @@ config SUPERH
 | 
				
			||||||
	select GENERIC_CMOS_UPDATE if SH_SH03 || SH_DREAMCAST
 | 
						select GENERIC_CMOS_UPDATE if SH_SH03 || SH_DREAMCAST
 | 
				
			||||||
	select GENERIC_STRNCPY_FROM_USER
 | 
						select GENERIC_STRNCPY_FROM_USER
 | 
				
			||||||
	select GENERIC_STRNLEN_USER
 | 
						select GENERIC_STRNLEN_USER
 | 
				
			||||||
 | 
						select HAVE_MOD_ARCH_SPECIFIC if DWARF_UNWINDER
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  The SuperH is a RISC processor targeted for use in embedded systems
 | 
						  The SuperH is a RISC processor targeted for use in embedded systems
 | 
				
			||||||
	  and consumer electronics; it was also used in the Sega Dreamcast
 | 
						  and consumer electronics; it was also used in the Sega Dreamcast
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,21 +1,13 @@
 | 
				
			||||||
#ifndef _ASM_SH_MODULE_H
 | 
					#ifndef _ASM_SH_MODULE_H
 | 
				
			||||||
#define _ASM_SH_MODULE_H
 | 
					#define _ASM_SH_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct mod_arch_specific {
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_DWARF_UNWINDER
 | 
					#ifdef CONFIG_DWARF_UNWINDER
 | 
				
			||||||
 | 
					struct mod_arch_specific {
 | 
				
			||||||
	struct list_head fde_list;
 | 
						struct list_head fde_list;
 | 
				
			||||||
	struct list_head cie_list;
 | 
						struct list_head cie_list;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef CONFIG_64BIT
 | 
					 | 
				
			||||||
#define Elf_Shdr Elf64_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym Elf64_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr Elf64_Ehdr
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define Elf_Shdr Elf32_Shdr
 | 
					 | 
				
			||||||
#define Elf_Sym Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr Elf32_Ehdr
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_CPU_LITTLE_ENDIAN
 | 
					#ifdef CONFIG_CPU_LITTLE_ENDIAN
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,6 +37,7 @@ config SPARC
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
	select GENERIC_STRNCPY_FROM_USER
 | 
						select GENERIC_STRNCPY_FROM_USER
 | 
				
			||||||
	select GENERIC_STRNLEN_USER
 | 
						select GENERIC_STRNLEN_USER
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config SPARC32
 | 
					config SPARC32
 | 
				
			||||||
	def_bool !64BIT
 | 
						def_bool !64BIT
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,4 +21,5 @@ generic-y += div64.h
 | 
				
			||||||
generic-y += local64.h
 | 
					generic-y += local64.h
 | 
				
			||||||
generic-y += irq_regs.h
 | 
					generic-y += irq_regs.h
 | 
				
			||||||
generic-y += local.h
 | 
					generic-y += local.h
 | 
				
			||||||
 | 
					generic-y += module.h
 | 
				
			||||||
generic-y += word-at-a-time.h
 | 
					generic-y += word-at-a-time.h
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,24 +0,0 @@
 | 
				
			||||||
#ifndef __SPARC_MODULE_H
 | 
					 | 
				
			||||||
#define __SPARC_MODULE_H
 | 
					 | 
				
			||||||
struct mod_arch_specific { };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Use some preprocessor magic to define the correct symbol
 | 
					 | 
				
			||||||
 * for sparc32 and sparc64.
 | 
					 | 
				
			||||||
 * Elf_Addr becomes Elf32_Addr for sparc32 and Elf64_Addr for sparc64
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#define ___ELF(a, b, c) a##b##c
 | 
					 | 
				
			||||||
#define __ELF(a, b, c)  ___ELF(a, b, c)
 | 
					 | 
				
			||||||
#define  _Elf(t)        __ELF(Elf, CONFIG_BITS, t)
 | 
					 | 
				
			||||||
#define  _ELF(t)        __ELF(ELF, CONFIG_BITS, t)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define Elf_Shdr     _Elf(_Shdr)
 | 
					 | 
				
			||||||
#define Elf_Sym      _Elf(_Sym)
 | 
					 | 
				
			||||||
#define Elf_Ehdr     _Elf(_Ehdr)
 | 
					 | 
				
			||||||
#define Elf_Rela     _Elf(_Rela)
 | 
					 | 
				
			||||||
#define Elf_Addr     _Elf(_Addr)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define ELF_R_SYM    _ELF(_R_SYM)
 | 
					 | 
				
			||||||
#define ELF_R_TYPE   _ELF(_R_TYPE)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif /* __SPARC_MODULE_H */
 | 
					 | 
				
			||||||
| 
						 | 
					@ -17,6 +17,7 @@ config TILE
 | 
				
			||||||
	select SYS_HYPERVISOR
 | 
						select SYS_HYPERVISOR
 | 
				
			||||||
	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 | 
						select ARCH_HAVE_NMI_SAFE_CMPXCHG
 | 
				
			||||||
	select GENERIC_CLOCKEVENTS
 | 
						select GENERIC_CLOCKEVENTS
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# FIXME: investigate whether we need/want these options.
 | 
					# FIXME: investigate whether we need/want these options.
 | 
				
			||||||
#	select HAVE_IOREMAP_PROT
 | 
					#	select HAVE_IOREMAP_PROT
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,7 @@ config UNICORE32
 | 
				
			||||||
	select GENERIC_IRQ_SHOW
 | 
						select GENERIC_IRQ_SHOW
 | 
				
			||||||
	select ARCH_WANT_FRAME_POINTERS
 | 
						select ARCH_WANT_FRAME_POINTERS
 | 
				
			||||||
	select GENERIC_IOMAP
 | 
						select GENERIC_IOMAP
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_REL
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  UniCore-32 is 32-bit Instruction Set Architecture,
 | 
						  UniCore-32 is 32-bit Instruction Set Architecture,
 | 
				
			||||||
	  including a series of low-power-consumption RISC chip
 | 
						  including a series of low-power-consumption RISC chip
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -97,6 +97,8 @@ config X86
 | 
				
			||||||
	select KTIME_SCALAR if X86_32
 | 
						select KTIME_SCALAR if X86_32
 | 
				
			||||||
	select GENERIC_STRNCPY_FROM_USER
 | 
						select GENERIC_STRNCPY_FROM_USER
 | 
				
			||||||
	select GENERIC_STRNLEN_USER
 | 
						select GENERIC_STRNLEN_USER
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_REL if X86_32
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA if X86_64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config INSTRUCTION_DECODER
 | 
					config INSTRUCTION_DECODER
 | 
				
			||||||
	def_bool (KPROBES || PERF_EVENTS || UPROBES)
 | 
						def_bool (KPROBES || PERF_EVENTS || UPROBES)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,9 +21,11 @@ config 64BIT
 | 
				
			||||||
config X86_32
 | 
					config X86_32
 | 
				
			||||||
	def_bool !64BIT
 | 
						def_bool !64BIT
 | 
				
			||||||
	select HAVE_AOUT
 | 
						select HAVE_AOUT
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_REL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config X86_64
 | 
					config X86_64
 | 
				
			||||||
	def_bool 64BIT
 | 
						def_bool 64BIT
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config RWSEM_XCHGADD_ALGORITHM
 | 
					config RWSEM_XCHGADD_ALGORITHM
 | 
				
			||||||
	def_bool X86_XADD && 64BIT
 | 
						def_bool X86_XADD && 64BIT
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ config XTENSA
 | 
				
			||||||
	select HAVE_GENERIC_HARDIRQS
 | 
						select HAVE_GENERIC_HARDIRQS
 | 
				
			||||||
	select GENERIC_IRQ_SHOW
 | 
						select GENERIC_IRQ_SHOW
 | 
				
			||||||
	select GENERIC_CPU_DEVICES
 | 
						select GENERIC_CPU_DEVICES
 | 
				
			||||||
 | 
						select MODULES_USE_ELF_RELA
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  Xtensa processors are 32-bit RISC machines designed by Tensilica
 | 
						  Xtensa processors are 32-bit RISC machines designed by Tensilica
 | 
				
			||||||
	  primarily for embedded systems.  These processors are both
 | 
						  primarily for embedded systems.  These processors are both
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,15 +13,8 @@
 | 
				
			||||||
#ifndef _XTENSA_MODULE_H
 | 
					#ifndef _XTENSA_MODULE_H
 | 
				
			||||||
#define _XTENSA_MODULE_H
 | 
					#define _XTENSA_MODULE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct mod_arch_specific
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	/* No special elements, yet. */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MODULE_ARCH_VERMAGIC "xtensa-" __stringify(XCHAL_CORE_ID) " "
 | 
					#define MODULE_ARCH_VERMAGIC "xtensa-" __stringify(XCHAL_CORE_ID) " "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define Elf_Shdr Elf32_Shdr
 | 
					#include <asm-generic/module.h>
 | 
				
			||||||
#define Elf_Sym Elf32_Sym
 | 
					 | 
				
			||||||
#define Elf_Ehdr Elf32_Ehdr
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif	/* _XTENSA_MODULE_H */
 | 
					#endif	/* _XTENSA_MODULE_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,18 +5,44 @@
 | 
				
			||||||
 * Many architectures just need a simple module
 | 
					 * Many architectures just need a simple module
 | 
				
			||||||
 * loader without arch specific data.
 | 
					 * loader without arch specific data.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					#ifndef CONFIG_HAVE_MOD_ARCH_SPECIFIC
 | 
				
			||||||
struct mod_arch_specific
 | 
					struct mod_arch_specific
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef CONFIG_64BIT
 | 
					#ifdef CONFIG_64BIT
 | 
				
			||||||
#define Elf_Shdr Elf64_Shdr
 | 
					#define Elf_Shdr	Elf64_Shdr
 | 
				
			||||||
#define Elf_Sym Elf64_Sym
 | 
					#define Elf_Phdr	Elf64_Phdr
 | 
				
			||||||
#define Elf_Ehdr Elf64_Ehdr
 | 
					#define Elf_Sym		Elf64_Sym
 | 
				
			||||||
#else
 | 
					#define Elf_Dyn		Elf64_Dyn
 | 
				
			||||||
#define Elf_Shdr Elf32_Shdr
 | 
					#define Elf_Ehdr	Elf64_Ehdr
 | 
				
			||||||
#define Elf_Sym Elf32_Sym
 | 
					#define Elf_Addr	Elf64_Addr
 | 
				
			||||||
#define Elf_Ehdr Elf32_Ehdr
 | 
					#ifdef CONFIG_MODULES_USE_ELF_REL
 | 
				
			||||||
 | 
					#define Elf_Rel		Elf64_Rel
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef CONFIG_MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					#define Elf_Rela	Elf64_Rela
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#define ELF_R_TYPE(X)	ELF64_R_TYPE(X)
 | 
				
			||||||
 | 
					#define ELF_R_SYM(X)	ELF64_R_SYM(X)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else /* CONFIG_64BIT */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define Elf_Shdr	Elf32_Shdr
 | 
				
			||||||
 | 
					#define Elf_Phdr	Elf32_Phdr
 | 
				
			||||||
 | 
					#define Elf_Sym		Elf32_Sym
 | 
				
			||||||
 | 
					#define Elf_Dyn		Elf32_Dyn
 | 
				
			||||||
 | 
					#define Elf_Ehdr	Elf32_Ehdr
 | 
				
			||||||
 | 
					#define Elf_Addr	Elf32_Addr
 | 
				
			||||||
 | 
					#ifdef CONFIG_MODULES_USE_ELF_REL
 | 
				
			||||||
 | 
					#define Elf_Rel		Elf32_Rel
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef CONFIG_MODULES_USE_ELF_RELA
 | 
				
			||||||
 | 
					#define Elf_Rela	Elf32_Rela
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#define ELF_R_TYPE(X)	ELF32_R_TYPE(X)
 | 
				
			||||||
 | 
					#define ELF_R_SYM(X)	ELF32_R_SYM(X)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* __ASM_GENERIC_MODULE_H */
 | 
					#endif /* __ASM_GENERIC_MODULE_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,21 +28,49 @@ void *module_alloc(unsigned long size);
 | 
				
			||||||
/* Free memory returned from module_alloc. */
 | 
					/* Free memory returned from module_alloc. */
 | 
				
			||||||
void module_free(struct module *mod, void *module_region);
 | 
					void module_free(struct module *mod, void *module_region);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Apply the given relocation to the (simplified) ELF.  Return -error
 | 
					/*
 | 
				
			||||||
   or 0. */
 | 
					 * Apply the given relocation to the (simplified) ELF.  Return -error
 | 
				
			||||||
 | 
					 * or 0.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifdef CONFIG_MODULES_USE_ELF_REL
 | 
				
			||||||
int apply_relocate(Elf_Shdr *sechdrs,
 | 
					int apply_relocate(Elf_Shdr *sechdrs,
 | 
				
			||||||
		   const char *strtab,
 | 
							   const char *strtab,
 | 
				
			||||||
		   unsigned int symindex,
 | 
							   unsigned int symindex,
 | 
				
			||||||
		   unsigned int relsec,
 | 
							   unsigned int relsec,
 | 
				
			||||||
		   struct module *mod);
 | 
							   struct module *mod);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					static inline int apply_relocate(Elf_Shdr *sechdrs,
 | 
				
			||||||
 | 
									 const char *strtab,
 | 
				
			||||||
 | 
									 unsigned int symindex,
 | 
				
			||||||
 | 
									 unsigned int relsec,
 | 
				
			||||||
 | 
									 struct module *me)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						printk(KERN_ERR "module %s: REL relocation unsupported\n", me->name);
 | 
				
			||||||
 | 
						return -ENOEXEC;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Apply the given add relocation to the (simplified) ELF.  Return
 | 
					/*
 | 
				
			||||||
   -error or 0 */
 | 
					 * Apply the given add relocation to the (simplified) ELF.  Return
 | 
				
			||||||
 | 
					 * -error or 0
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifdef CONFIG_MODULES_USE_ELF_RELA
 | 
				
			||||||
int apply_relocate_add(Elf_Shdr *sechdrs,
 | 
					int apply_relocate_add(Elf_Shdr *sechdrs,
 | 
				
			||||||
		       const char *strtab,
 | 
							       const char *strtab,
 | 
				
			||||||
		       unsigned int symindex,
 | 
							       unsigned int symindex,
 | 
				
			||||||
		       unsigned int relsec,
 | 
							       unsigned int relsec,
 | 
				
			||||||
		       struct module *mod);
 | 
							       struct module *mod);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					static inline int apply_relocate_add(Elf_Shdr *sechdrs,
 | 
				
			||||||
 | 
									     const char *strtab,
 | 
				
			||||||
 | 
									     unsigned int symindex,
 | 
				
			||||||
 | 
									     unsigned int relsec,
 | 
				
			||||||
 | 
									     struct module *me)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						printk(KERN_ERR "module %s: REL relocation unsupported\n", me->name);
 | 
				
			||||||
 | 
						return -ENOEXEC;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Any final processing of module before access.  Return -error or 0. */
 | 
					/* Any final processing of module before access.  Return -error or 0. */
 | 
				
			||||||
int module_finalize(const Elf_Ehdr *hdr,
 | 
					int module_finalize(const Elf_Ehdr *hdr,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1949,26 +1949,6 @@ static int simplify_symbols(struct module *mod, const struct load_info *info)
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int __weak apply_relocate(Elf_Shdr *sechdrs,
 | 
					 | 
				
			||||||
			  const char *strtab,
 | 
					 | 
				
			||||||
			  unsigned int symindex,
 | 
					 | 
				
			||||||
			  unsigned int relsec,
 | 
					 | 
				
			||||||
			  struct module *me)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	pr_err("module %s: REL relocation unsupported\n", me->name);
 | 
					 | 
				
			||||||
	return -ENOEXEC;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int __weak apply_relocate_add(Elf_Shdr *sechdrs,
 | 
					 | 
				
			||||||
			      const char *strtab,
 | 
					 | 
				
			||||||
			      unsigned int symindex,
 | 
					 | 
				
			||||||
			      unsigned int relsec,
 | 
					 | 
				
			||||||
			      struct module *me)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	pr_err("module %s: RELA relocation unsupported\n", me->name);
 | 
					 | 
				
			||||||
	return -ENOEXEC;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int apply_relocations(struct module *mod, const struct load_info *info)
 | 
					static int apply_relocations(struct module *mod, const struct load_info *info)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	unsigned int i;
 | 
						unsigned int i;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue