Lines Matching +full:- +full:section

13       3.1 Livepatch relocation section format
17 5. Symbol table and Elf section access
22 Formerly, livepatch required separate architecture-specific code to write
23 relocations. However, arch-specific code to write relocations already
25 code. So, instead of duplicating code and re-implementing what the module
27 loader to perform the all the arch-specific relocation work. Specifically,
32 of arch-specific code required to port livepatch to a particular
35 Since apply_relocate_add() requires access to a module's section header
36 table, symbol table, and relocation section indices, Elf information is
37 preserved for livepatch modules (see section 5). Livepatch manages its own
40 selected from OS-specific ranges according to the definitions from glibc.
43 -----------------------------------------------------
45 reference non-exported global symbols and non-included local symbols.
46 Relocations referencing these types of symbols cannot be left in as-is
55 approach required livepatch to supply arch-specific code in order to write
58 relas reference are special livepatch symbols (see section 2 and 3). The
59 arch-specific livepatch relocation code is replaced by a call to
73 --------
79 % modinfo livepatch-meminfo.ko
80 filename: livepatch-meminfo.ko
93 relocation section(s) to the driver once it loads.
97 multiple functions within the same object). There is a 1-1 correspondence
98 between a livepatch relocation section and the target section (usually the
99 text section of a function) to which the relocation(s) apply. It is
104 Since Elf information is preserved for livepatch modules (see Section 5), a
105 livepatch relocation section can be applied simply by passing in the
106 appropriate section index to apply_relocate_add(), which then uses it to
107 access the relocation section and apply the relocations.
109 Every symbol referenced by a rela in a livepatch relocation section is a
111 apply_relocate_add(). See Section 3 for more information.
113 3.1 Livepatch relocation section format
117 section flag. See include/uapi/linux/elf.h for the definition. The module
123 The name of a livepatch relocation section must conform to the following
132 The relocation section name is prefixed with the string ".klp.rela."
136 which the relocation section belongs follows immediately after the prefix.
139 The actual name of the section to which this relocation section applies.
142 ---------
144 **Livepatch relocation section names:**
151 **`readelf --sections` output for a patch
156 Section Headers:
174 SHF_RELA_LIVEPATCH flag ("o" - for OS-specific).
176 **`readelf --relocs` output for a patch module:**
180 …Relocation section '.klp.rela.btrfs.text.btrfs_feature_attr_show' at offset 0x2ba0 contains 4 entr…
182 …0000000001f 0000005e00000002 R_X86_64_PC32 0000000000000000 .klp.sym.vmlinux.printk,0 - 4
184 …003b00000002 R_X86_64_PC32 0000000000000000 .klp.sym.btrfs.can_modify_feature.isra.3,0 - 4
185 …00000004c 0000004900000002 R_X86_64_PC32 0000000000000000 .klp.sym.vmlinux.snprintf,0 - 4
206 any livepatch relocation section, all livepatch symbols referenced by that
207 section must be resolved before livepatch can call apply_relocate_add() for
208 that reloc section.
213 module->symtab.
218 "core" symbols) is made available through module->symtab (See layout_symtab()
222 relocation section refer to their respective symbols with their symbol indices,
228 …Relocation section '.klp.rela.btrfs.text.btrfs_feature_attr_show' at offset 0x2ba0 contains 4 entr…
230 …0000000001f 0000005e00000002 R_X86_64_PC32 0000000000000000 .klp.sym.vmlinux.printk,0 - 4
243 Livepatch symbols must have their section index marked as SHN_LIVEPATCH, so
271 ---------
281 **`readelf --symbols` output for a patch module:**
297 Note that the 'Ndx' (Section index) for these symbols is SHN_LIVEPATCH (0xff20).
298 "OS" means OS-specific.
300 5. Symbol table and Elf section access
302 A livepatch module's symbol table is accessible through module->symtab.
304 Since apply_relocate_add() requires access to a module's section headers,
305 symbol table, and relocation section indices, Elf information is preserved for
307 module->klp_info, which is a klp_modinfo struct. When a livepatch module loads,
312 Elf_Shdr *sechdrs; /* Section header table */
313 char *secstrings; /* String table for the section headers */
314 unsigned int symndx; /* The symbol table section index */