Re: [PATCH 1/1] x86/elf: Add a new .note section containing Xfeatures information to x86 core files

From: kernel test robot
Date: Fri Mar 15 2024 - 06:00:19 EST


Hi Vignesh,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.8 next-20240315]
[cannot apply to kees/for-next/execve tip/x86/core powerpc/next powerpc/fixes]
[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/Vignesh-Balasubramanian/x86-elf-Add-a-new-note-section-containing-Xfeatures-information-to-x86-core-files/20240314-192650
base: linus/master
patch link: https://lore.kernel.org/r/20240314112359.50713-2-vigbalas%40amd.com
patch subject: [PATCH 1/1] x86/elf: Add a new .note section containing Xfeatures information to x86 core files
config: i386-buildonly-randconfig-001-20240315 (https://download.01.org/0day-ci/archive/20240315/202403151742.VEz04MqR-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240315/202403151742.VEz04MqR-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202403151742.VEz04MqR-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

>> arch/x86/kernel/fpu/xstate.c:1858:8: error: call to undeclared function 'dump_emit'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1858 | if (!dump_emit(cprm, &xc, sizeof(struct xfeat_component)))
| ^
arch/x86/kernel/fpu/xstate.c:1869:8: error: call to undeclared function 'dump_emit'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1869 | if (!dump_emit(cprm, &xc, sizeof(struct xfeat_component)))
| ^
arch/x86/kernel/fpu/xstate.c:1899:7: error: call to undeclared function 'dump_emit'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1899 | if (!dump_emit(cprm, &en, sizeof(en)))
| ^
>> arch/x86/kernel/fpu/xstate.c:1903:7: error: call to undeclared function 'dump_align'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
1903 | if (!dump_align(cprm, 4))
| ^
4 errors generated.


vim +/dump_emit +1858 arch/x86/kernel/fpu/xstate.c

1846
1847 struct xfeat_component xc;
1848 int num_records = 0;
1849 int i;
1850
1851 /* XFEATURE_FPU and XFEATURE_SSE, both are fixed legacy states. */
1852 for (i = 0; i < FIRST_EXTENDED_XFEATURE; i++) {
1853 xc.xfeat_type = i;
1854 xc.xfeat_sz = xstate_sizes[i];
1855 xc.xfeat_off = xstate_offsets[i];
1856 xc.xfeat_flags = xstate_flags[i];
1857
> 1858 if (!dump_emit(cprm, &xc, sizeof(struct xfeat_component)))
1859 return 0;
1860 num_records++;
1861 }
1862
1863 for_each_extended_xfeature(i, fpu_user_cfg.max_features) {
1864 xc.xfeat_type = i;
1865 xc.xfeat_sz = xstate_sizes[i];
1866 xc.xfeat_off = xstate_offsets[i];
1867 xc.xfeat_flags = xstate_flags[i];
1868
1869 if (!dump_emit(cprm, &xc, sizeof(struct xfeat_component)))
1870 return 0;
1871 num_records++;
1872 }
1873
1874 return num_records;
1875 }
1876
1877 static int get_xsave_desc_size(void)
1878 {
1879 /* XFEATURE_FP and XFEATURE_SSE, both are fixed legacy states */
1880 int xfeatures_count = 2;
1881 int i;
1882
1883 for_each_extended_xfeature(i, fpu_user_cfg.max_features)
1884 xfeatures_count++;
1885
1886 return xfeatures_count * (sizeof(struct xfeat_component));
1887 }
1888
1889 int elf_coredump_extra_notes_write(struct coredump_params *cprm)
1890 {
1891 const char *owner_name = "LINUX";
1892 int num_records = 0;
1893 struct elf_note en;
1894
1895 en.n_namesz = strlen(owner_name) + 1;
1896 en.n_descsz = get_xsave_desc_size();
1897 en.n_type = NT_X86_XSAVE_LAYOUT;
1898
1899 if (!dump_emit(cprm, &en, sizeof(en)))
1900 return 1;
1901 if (!dump_emit(cprm, owner_name, en.n_namesz))
1902 return 1;
> 1903 if (!dump_align(cprm, 4))
1904 return 1;
1905
1906 num_records = dump_xsave_layout_desc(cprm);
1907 if (!num_records) {
1908 pr_warn("Error adding XSTATE layout ELF note. XSTATE buffer in the core file will be unparseable.");
1909 return 1;
1910 }
1911
1912 /* Total size should be equal to the number of records */
1913 if ((sizeof(struct xfeat_component) * num_records) != en.n_descsz) {
1914 pr_warn("Error adding XSTATE layout ELF note. The size of the .note section does not match with the total size of the records.");
1915 return 1;
1916 }
1917
1918 if (!dump_align(cprm, 4))
1919 return 1;
1920
1921 return 0;
1922 }
1923

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