Streamline doesn't show Linux kernel source in code section

Hi Streamline team,

I'm trying to use Streamline to analyze a userspace program and a driver in the Linux kernel which is used by the userspace one.

I managed to get a capture with some of the functions I added to the Linux kernel but when I double click on the function it doesn't show anything in the code section (just empty table). When I attached my userspace program it worked fine and I could see the source code in the code section.

While creating the capture, I attached a debug vmlinux file as mentioned in "streamline/gator/README.md" file.

$ file vmlinux
vmlinux: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), statically linked, BuildID[sha1]=4a2c0d4f1853fda4b1b6f86f2f68c0fb437ac585, with debug_info, not stripped

I'm analyzing a system running on Raspberry Pi 3 B+ with a custom Linux image based on Buildroot. I'm adding below some screenshots for my capture.

Note that the function "cv_neon_read" is part of the code I added to the linux kernel but when I double click on it, it doesn't show in code

Is there something I need to do to enabled the kernel code to be visible in the code section?

Thanks,
KJ Yang

Parents
  • Hi KJ Yang, 

    I'm Yahya from Streamline team.

    Can you provide more details on the following:

    • Which version of Streamline are you using?
    • When you attach your userspace executable to the capture, does the function you mentioned appear in the code tab? 
    • Did you enable "CONFIG_DEBUG_INFO" while building your kernel?
      • To know if it was enabled, you can run the following code on your target
        zcat /proc/config.gz | grep CONFIG_DEBUG_INFO
    • Is path substitution icon ( ) enabled? When you click on it, does it show the directory that contains your kernel code?

    Kind Regards,
    Yahya

Reply
  • Hi KJ Yang, 

    I'm Yahya from Streamline team.

    Can you provide more details on the following:

    • Which version of Streamline are you using?
    • When you attach your userspace executable to the capture, does the function you mentioned appear in the code tab? 
    • Did you enable "CONFIG_DEBUG_INFO" while building your kernel?
      • To know if it was enabled, you can run the following code on your target
        zcat /proc/config.gz | grep CONFIG_DEBUG_INFO
    • Is path substitution icon ( ) enabled? When you click on it, does it show the directory that contains your kernel code?

    Kind Regards,
    Yahya

Children
  • Hello Yahya,

    • I'm using Arm Streamline Performance Analyzer Version 9.6.1, Build 20250609_133608
    • No, just the code for the userspace program appears in the code section but the kernel code doesn't show
    • Yes CONFIG_DEBUG_INFO is enabled. I attached all the configurations I used to build kernel
    • The path substitution icon is enabled and I get empty list when I click on it. the kernel directory is not on list

    Thanks,
    KJ Yang

    config.txt

  • Hi KJ Yang,

    Thanks for the info you provided. The kernel configuration file you attached contains all the necessary configs.

    I have another couple questions to ask:

    • Can you specify the DWARF version of your vmlinux image?
      • To know that you can run the following code
        readelf --debug-dump=info vmlinux | grep "Version:" | tail -n 1


    • When you right-click on the capture and choose Analyze, do you see the vmlinux image in the Program Images list?
      if yes, is the image detected as "Debug Info" image?
      • For reference, it should look something like that:

    Kind Regards,
    Yahya

  • Hi Yahya,

    • From your command the version is 4 
    • Yes, I can see the vmlinux image and it has debug ifno

    Thanks,
    KJ Yang

  • Hi KJ Yang,

    The issue you have reported has been confirmed to be a bug and we are currently working on fixing it.

    As a work around, you can overcome the issue by disabling the beta C++ processing backend by doing the following:

    • Go to Window → Preferences and untick Use new C++ processing backend (beta).
    • In your captures list, right-click the capture → Clean Analysis Result.
    • Analyze your capture again as usual and the code tab should be working fine with Linux kernel source code
      • You might need to use Path Substitution as mentioned by other answers

    Please let me know if you have any questions.

    Thanks,
    Yahya

  • Hi Yahya,

    I tested your workaround and it's working. I can see the kernel code now.

    Thanks a lot for your help