Re: [PATCH v2 3/4] Kbuild: Create intermediate vmlinux build with relocations preserved

Ard Biesheuvel
2025-03-13T10:18:55Z

On Thu, 13 Mar 2025 at 10:34, Ard Biesheuvel <ardb@kernel.org> wrote:
>
> On Thu, 13 Mar 2025 at 10:21, kernel test robot <lkp@intel.com> wrote:
> >
> > Hi Ard,
> >
> > kernel test robot noticed the following build errors:
> >
> > [auto build test ERROR on masahiroy-kbuild/for-next]
> > [also build test ERROR on masahiroy-kbuild/fixes tip/x86/core s390/features linus/master v6.14-rc6 next-20250312]
> > [If your patch is applied to the wrong git tree, kindly drop us a note.
> > And when submitting patch, we suggest to use '--base' as documented in
> > https://git-scm.com/docs/git-format-patch#_base_tree_information]
> >
> > url: https://github.com/intel-lab-lkp/linux/commits/Ard-Biesheuvel/Kbuild-link-vmlinux-sh-Make-output-file-name-configurable/20250311-190926
> > base: https://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git for-next
> > patch link: https://lore.kernel.org/r/20250311110616.148682-9-ardb%2Bgit%40google.com
> > patch subject: [PATCH v2 3/4] Kbuild: Create intermediate vmlinux build with relocations preserved
> > config: x86_64-randconfig-076-20250313 (https://download.01.org/0day-ci/archive/20250313/202503131715.Fb6CfjhT-lkp@intel.com/config)
> > compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250313/202503131715.Fb6CfjhT-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/oe-kbuild-all/202503131715.Fb6CfjhT-lkp@intel.com/
> >
> > All errors (new ones prefixed by >>):
> >
> > >> gawk: scripts/generate_builtin_ranges.awk:82: fatal: cannot open file `vmlinux.map' for reading: No such file or directory
> >
>
> Hmm it seems I missed some things in link-vmlinux.sh - I will take a look.

We'd need something like the below applied on top - shall I send a v3?

--- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh
@@ -46,6 +46,7 @@

# Link of vmlinux
# ${1} - output file
+# ${2} - map file
vmlinux_link()
{
local output=${1}
@@ -99,7 +100,7 @@ vmlinux_link()
fi

if is_enabled CONFIG_VMLINUX_MAP; then
- ldflags="${ldflags} ${wl}-Map=${output}.map"
+ ldflags="${ldflags} ${wl}-Map=${2}"
fi

${ld} ${ldflags} -o ${output} \
@@ -185,7 +186,7 @@
{
rm -f .btf.*
rm -f System.map
- rm -f vmlinux
+ rm -f ${VMLINUX}
rm -f vmlinux.map
}

@@ -224,7 +225,7 @@
strip_debug=1
fi

- vmlinux_link .tmp_vmlinux1
+ vmlinux_link .tmp_vmlinux1 .tmp_vmlinux1.map
fi

if is_enabled CONFIG_DEBUG_INFO_BTF; then
@@ -267,19 +268,19 @@
sysmap_and_kallsyms .tmp_vmlinux1
size1=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" ${kallsymso})

- vmlinux_link .tmp_vmlinux2
+ vmlinux_link .tmp_vmlinux2 .tmp_vmlinux2.map
sysmap_and_kallsyms .tmp_vmlinux2
size2=$(${CONFIG_SHELL} "${srctree}/scripts/file-size.sh" ${kallsymso})

if [ $size1 -ne $size2 ] || [ -n "${KALLSYMS_EXTRA_PASS}" ]; then
- vmlinux_link .tmp_vmlinux3
+ vmlinux_link .tmp_vmlinux3 .tmp_vmlinux3.map
sysmap_and_kallsyms .tmp_vmlinux3
fi
fi

strip_debug=

-vmlinux_link "${VMLINUX}"
+vmlinux_link "${VMLINUX}" vmlinux.map

# fill in BTF IDs
if is_enabled CONFIG_DEBUG_INFO_BTF; then