All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/6] Generate address range data for built-in modules
@ 2024-05-17  4:28 Kris Van Hees
  2024-05-17  4:28 ` [PATCH v3 1/6] kbuild: add mod(name,file)_flags to assembler flags for module objects Kris Van Hees
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Kris Van Hees @ 2024-05-17  4:28 UTC (permalink / raw)
  To: linux-kernel, linux-kbuild, linux-modules, linux-trace-kernel
  Cc: Kris Van Hees, Steven Rostedt, Luis Chamberlain, Masami Hiramatsu,
	Nick Desaulniers, Jiri Olsa, Masahiro Yamada, Elena Zannoni

Especially for tracing applications, it is convenient to be able to
refer to a symbol using a <module name, symbol name> pair and to be able
to translate an address into a <nodule mname, symbol name> pair.  But
that does not work if the module is built into the kernel because the
object files that comprise the built-in module implementation are simply
linked into the kernel image along with all other kernel object files.

This is especially visible when providing tracing scripts for support
purposes, where the developer of the script targets a particular kernel
version, but does not have control over whether the target system has
a particular module as loadable module or built-in module.  When tracing
symbols within a module, referring them by <module name, symbol name>
pairs is both convenient and aids symbol lookup.  But that naming will
not work if the module name information is lost if the module is built
into the kernel on the target system.

Earlier work addressing this loss of information for built-in modules
involved adding module name information to the kallsyms data, but that
required more invasive code in the kernel proper.  This work never did
get merged into the kernel tree.

All that is really needed is knowing whether a given address belongs to
a particular module (or multiple modules if they share an object file).
Or in other words, whether that address falls within an address range
that is associated with one or more modules.

Objects can be identified as belonging to a particular module (or
modules) based on defines that are passed as flags to their respective
compilation commands.  The data found in modules.builtin.modinfo is
used to determine what modules are built into the kernel proper.  Then,
vmlinux.o.map and vmlinux.map can be parsed in a single pass to generate
a modules.buitin.ranges file with offset range information (relative to
the base address of the associated section) for built-in modules.  This
file gets installed along with the other modules.builtin.* files.

The impact on the kernel build is minimal because everything is done
using a single-pass AWK script.  The generated data size is minimal as
well, (depending on the exact kernel configuration) usually in the range
of 500-700 lines, with a file size of 20-40KB (if all modules are built
in, the file contains about 8000 lines, with a file size of about 285KB).

Changes since v2:
 - Switched from using modules.builtin.objs to parsing .*.cmd files
 - Add explicit dependency on FTRACE for CONFIG_BUILTIN_MODULE_RANGES
 - 1st arg to generate_builtin_ranges.awk is now modules.builtin.modinfo
 - Parse data from .*.cmd in generate_builtin_ranges.awk
 - Use $(real-prereqs) rather than $(filter-out ...)
 - Include modules.builtin.ranges in modules install target

Changes since v1:
 - Renamed CONFIG_BUILTIN_RANGES to CONFIG_BUILTIN_MODULE_RANGES
 - Moved the config option to the tracers section
 - 2nd arg to generate_builtin_ranges.awk should be vmlinux.map

Kris Van Hees (5):
  trace: add CONFIG_BUILTIN_MODULE_RANGES option
  kbuild: generate a linker map for vmlinux.o
  module: script to generate offset ranges for builtin modules
  kbuild: generate modules.builtin.ranges when linking the kernel
  module: add install target for modules.builtin.ranges

Luis Chamberlain (1):
  kbuild: add modules.builtin.objs

 .gitignore                          |   2 +-
 Documentation/dontdiff              |   2 +-
 Documentation/kbuild/kbuild.rst     |   5 ++
 Makefile                            |   8 +-
 include/linux/module.h              |   4 +-
 kernel/trace/Kconfig                |  17 ++++
 scripts/Makefile.lib                |   5 +-
 scripts/Makefile.modinst            |  11 ++-
 scripts/Makefile.vmlinux            |  17 ++++
 scripts/Makefile.vmlinux_o          |  18 ++++-
 scripts/generate_builtin_ranges.awk | 149 ++++++++++++++++++++++++++++++++++++
 11 files changed, 228 insertions(+), 10 deletions(-)
 create mode 100755 scripts/generate_builtin_ranges.awk


base-commit: dd5a440a31fae6e459c0d6271dddd62825505361
-- 
2.42.0


^ permalink raw reply	[flat|nested] 14+ messages in thread
* Re: [PATCH v3 6/6] module: add install target for modules.builtin.ranges
  2024-05-17  4:28 ` [PATCH v3 6/6] module: add install target for modules.builtin.ranges Kris Van Hees
@ 2024-05-27  0:58 ` kernel test robot
  0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2024-05-24 18:25 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "only scripts/Makefile.* file changed"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20240517042839.544650-7-kris.van.hees@oracle.com>
References: <20240517042839.544650-7-kris.van.hees@oracle.com>
TO: Kris Van Hees <kris.van.hees@oracle.com>

Hi Kris,

kernel test robot noticed the following build errors:

[auto build test ERROR on dd5a440a31fae6e459c0d6271dddd62825505361]

url:    https://github.com/intel-lab-lkp/linux/commits/Kris-Van-Hees/kbuild-add-mod-name-file-_flags-to-assembler-flags-for-module-objects/20240517-123517
base:   dd5a440a31fae6e459c0d6271dddd62825505361
patch link:    https://lore.kernel.org/r/20240517042839.544650-7-kris.van.hees%40oracle.com
patch subject: [PATCH v3 6/6] module: add install target for modules.builtin.ranges
:::::: branch date: 8 days ago
:::::: commit date: 8 days ago
config: x86_64-rhel-8.3-kunit (https://download.01.org/0day-ci/archive/20240525/202405250226.GFChHcfz-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240525/202405250226.GFChHcfz-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202405250226.GFChHcfz-lkp@intel.com/

All errors (new ones prefixed by >>):

>> make[3]: *** No rule to make target 'modules.builtin.ranges', needed by '/tmp/kernel/x86_64-rhel-8.3-kunit/gcc-13/97130a675f5d4a72b7effe364f516c942a723ec8/lib/modules/6.9.0-rc7-00006-g97130a675f5d/modules.builtin.ranges'.
   make[3]: Target '__modinst' not remade because of errors.
   make[2]: *** [Makefile:1827: modules_install] Error 2
   make[1]: *** [Makefile:240: __sub-make] Error 2
   make[1]: Target 'modules_install' not remade because of errors.
   make: *** [Makefile:240: __sub-make] Error 2
   make: Target 'modules_install' not remade because of errors.

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-06-06 19:03 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-17  4:28 [PATCH v3 0/6] Generate address range data for built-in modules Kris Van Hees
2024-05-17  4:28 ` [PATCH v3 1/6] kbuild: add mod(name,file)_flags to assembler flags for module objects Kris Van Hees
2024-05-17  4:28 ` [PATCH v3 2/6] trace: add CONFIG_BUILTIN_MODULE_RANGES option Kris Van Hees
2024-05-20  9:29   ` Masahiro Yamada
2024-05-20  9:38   ` Masahiro Yamada
2024-05-17  4:28 ` [PATCH v3 3/6] kbuild: generate a linker map for vmlinux.o Kris Van Hees
2024-05-17  4:28 ` [PATCH v3 4/6] module: script to generate offset ranges for builtin modules Kris Van Hees
2024-05-20 16:53   ` Masahiro Yamada
2024-06-06 19:02     ` Kris Van Hees
2024-05-17  4:28 ` [PATCH v3 5/6] kbuild: generate modules.builtin.ranges when linking the kernel Kris Van Hees
2024-05-17  4:28 ` [PATCH v3 6/6] module: add install target for modules.builtin.ranges Kris Van Hees
2024-05-20  9:10   ` Masahiro Yamada
  -- strict thread matches above, loose matches on Subject: below --
2024-05-24 18:25 kernel test robot
2024-05-27  0:58 ` kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.