On Wed, Dec 18, 2024 at 02:15:35PM -0800, Ian Rogers wrote: > On Wed, Dec 18, 2024 at 2:04 PM Namhyung Kim <namhyung@xxxxxxxxxx> wrote: > > > > In machine__create_module(), it reads /proc/modules to get a list of > > modules in the system. The file shows the start address (of text) and > > the size of the module so it uses the info to reconstruct system memory > > maps for symbol resolution. > > > > But module memory consists of multiple segments and they can be > > scaterred. Currently perf tools assume they are contiguous and see some > > nit: s/scaterred/scattered/ > > > overlaps. This can confuse the tool when it finds a map containing a > > given address. > > > > As we mostly care about the function symbols in the text segment, it can > > fixup the size or end address of modules when there's an overlap. We > > can use maps__fixup_end() which updates the end address using the start > > address of the next map. > > > > Ideally it should be able to track other segments (like data/rodata), > > but that would require some changes in /proc/modules IMHO. > > > > Reported-by: Blake Jones <blakejones@xxxxxxxxxx> > > Cc: Luis Chamberlain <mcgrof@xxxxxxxxxx> > > Cc: Petr Pavlu <petr.pavlu@xxxxxxxx> > > Cc: Sami Tolvanen <samitolvanen@xxxxxxxxxx> > > Cc: Daniel Gomez <da.gomez@xxxxxxxxxxx> > > Cc: linux-modules@xxxxxxxxxxxxxxx > > Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx> > > Acked-by: Ian Rogers <irogers@xxxxxxxxxx> Thanks, applied to perf-tools-next, - Arnaldo