~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/moduleloader.h

Version: ~ [ linux-5.9-rc6 ] ~ [ linux-5.8.10 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.66 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.146 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.198 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.236 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.236 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef _LINUX_MODULELOADER_H
  2 #define _LINUX_MODULELOADER_H
  3 /* The stuff needed for archs to support modules. */
  4 
  5 #include <linux/module.h>
  6 #include <linux/elf.h>
  7 
  8 /* These may be implemented by architectures that need to hook into the
  9  * module loader code.  Architectures that don't need to do anything special
 10  * can just rely on the 'weak' default hooks defined in kernel/module.c.
 11  * Note, however, that at least one of apply_relocate or apply_relocate_add
 12  * must be implemented by each architecture.
 13  */
 14 
 15 /* Adjust arch-specific sections.  Return 0 on success.  */
 16 int module_frob_arch_sections(Elf_Ehdr *hdr,
 17                               Elf_Shdr *sechdrs,
 18                               char *secstrings,
 19                               struct module *mod);
 20 
 21 /* Additional bytes needed by arch in front of individual sections */
 22 unsigned int arch_mod_section_prepend(struct module *mod, unsigned int section);
 23 
 24 /* Allocator used for allocating struct module, core sections and init
 25    sections.  Returns NULL on failure. */
 26 void *module_alloc(unsigned long size);
 27 
 28 /* Free memory returned from module_alloc. */
 29 void module_memfree(void *module_region);
 30 
 31 /*
 32  * Apply the given relocation to the (simplified) ELF.  Return -error
 33  * or 0.
 34  */
 35 #ifdef CONFIG_MODULES_USE_ELF_REL
 36 int apply_relocate(Elf_Shdr *sechdrs,
 37                    const char *strtab,
 38                    unsigned int symindex,
 39                    unsigned int relsec,
 40                    struct module *mod);
 41 #else
 42 static inline int apply_relocate(Elf_Shdr *sechdrs,
 43                                  const char *strtab,
 44                                  unsigned int symindex,
 45                                  unsigned int relsec,
 46                                  struct module *me)
 47 {
 48         printk(KERN_ERR "module %s: REL relocation unsupported\n",
 49                module_name(me));
 50         return -ENOEXEC;
 51 }
 52 #endif
 53 
 54 /*
 55  * Apply the given add relocation to the (simplified) ELF.  Return
 56  * -error or 0
 57  */
 58 #ifdef CONFIG_MODULES_USE_ELF_RELA
 59 int apply_relocate_add(Elf_Shdr *sechdrs,
 60                        const char *strtab,
 61                        unsigned int symindex,
 62                        unsigned int relsec,
 63                        struct module *mod);
 64 #else
 65 static inline int apply_relocate_add(Elf_Shdr *sechdrs,
 66                                      const char *strtab,
 67                                      unsigned int symindex,
 68                                      unsigned int relsec,
 69                                      struct module *me)
 70 {
 71         printk(KERN_ERR "module %s: REL relocation unsupported\n",
 72                module_name(me));
 73         return -ENOEXEC;
 74 }
 75 #endif
 76 
 77 /* Any final processing of module before access.  Return -error or 0. */
 78 int module_finalize(const Elf_Ehdr *hdr,
 79                     const Elf_Shdr *sechdrs,
 80                     struct module *mod);
 81 
 82 /* Any cleanup needed when module leaves. */
 83 void module_arch_cleanup(struct module *mod);
 84 
 85 /* Any cleanup before freeing mod->module_init */
 86 void module_arch_freeing_init(struct module *mod);
 87 
 88 #ifdef CONFIG_KASAN
 89 #include <linux/kasan.h>
 90 #define MODULE_ALIGN (PAGE_SIZE << KASAN_SHADOW_SCALE_SHIFT)
 91 #else
 92 #define MODULE_ALIGN PAGE_SIZE
 93 #endif
 94 
 95 #endif
 96 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp