1 // SPDX-License-Identifier: GPL-2.0
6 #include <internal/lib.h> // page_size
12 int arch__fix_module_text_start(u64
*start
, u64
*size
, const char *name
)
17 snprintf(path
, PATH_MAX
, "module/%.*s/sections/.text",
18 (int)strlen(name
) - 2, name
+ 1);
19 if (sysfs__read_ull(path
, (unsigned long long *)start
) < 0) {
20 pr_debug2("Using module %s start:%#lx\n", path
, m_start
);
23 /* Successful read of the modules segment text start address.
24 * Calculate difference between module start address
25 * in memory and module text segment start address.
26 * For example module load address is 0x3ff8011b000
27 * (from /proc/modules) and module text segment start
28 * address is 0x3ff8011b870 (from file above).
30 * Adjust the module size and subtract the GOT table
31 * size located at the beginning of the module.
33 *size
-= (*start
- m_start
);