55 lines · 1.5 KB · C
RawDownload
/* SPDX-License-Identifier: GPL-2.0 */#ifndef _ASM_S390_MODULE_H#define _ASM_S390_MODULE_H #include <asm-generic/module.h> /* * This file contains the s390 architecture specific module code. */ struct mod_arch_syminfo {	unsigned long got_offset;	unsigned long plt_offset;	int got_initialized;	int plt_initialized;}; struct mod_arch_specific {	/* Starting offset of got in the module core memory. */	unsigned long got_offset;	/* Starting offset of plt in the module core memory. */	unsigned long plt_offset;	/* Size of the got. */	unsigned long got_size;	/* Size of the plt. */	unsigned long plt_size;	/* Number of symbols in syminfo. */	int nsyms;	/* Additional symbol information (got and plt offsets). */	struct mod_arch_syminfo *syminfo;#ifdef CONFIG_FUNCTION_TRACER	/* Start of memory reserved for ftrace hotpatch trampolines. */	struct ftrace_hotpatch_trampoline *trampolines_start;	/* End of memory reserved for ftrace hotpatch trampolines. */	struct ftrace_hotpatch_trampoline *trampolines_end;	/* Next unused ftrace hotpatch trampoline slot. */	struct ftrace_hotpatch_trampoline *next_trampoline;#endif /* CONFIG_FUNCTION_TRACER */}; static inline const Elf_Shdr *find_section(const Elf_Ehdr *hdr,					   const Elf_Shdr *sechdrs,					   const char *name){	const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;	const Elf_Shdr *s, *se; 	for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++) {		if (strcmp(name, secstrs + s->sh_name) == 0)			return s;	}	return NULL;} #endif /* _ASM_S390_MODULE_H */