[linux-next:master 10828/13038] arch/mips/kernel/vpe.c:643:35: error: no member named 'mod_mem' in 'struct module'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   9d9019bcea1aac7eed64a1a4966282b6b7b141c8
commit: 2ece476a23461f1a50555ad5487640c73f33ced9 [10828/13038] module: replace module_layout with module_memory
config: mips-maltaaprp_defconfig (https://download.01.org/0day-ci/archive/20230216/202302161117.pNuySGWi-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project db89896bbbd2251fff457699635acbbedeead27f)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install mips cross compiling tool for clang build
        # apt-get install binutils-mipsel-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=2ece476a23461f1a50555ad5487640c73f33ced9
        git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout 2ece476a23461f1a50555ad5487640c73f33ced9
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202302161117.pNuySGWi-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

>> arch/mips/kernel/vpe.c:643:35: error: no member named 'mod_mem' in 'struct module'
           v->load_addr = alloc_progmem(mod.mod_mem[MOD_TEXT].size);
                                        ~~~ ^
   1 error generated.


vim +643 arch/mips/kernel/vpe.c

   569	
   570	/*
   571	 * Allocates a VPE with some program code space(the load address), copies the
   572	 * contents of the program (p)buffer performing relocatations/etc, free's it
   573	 * when finished.
   574	 */
   575	static int vpe_elfload(struct vpe *v)
   576	{
   577		Elf_Ehdr *hdr;
   578		Elf_Shdr *sechdrs;
   579		long err = 0;
   580		char *secstrings, *strtab = NULL;
   581		unsigned int len, i, symindex = 0, strindex = 0, relocate = 0;
   582		struct module mod; /* so we can re-use the relocations code */
   583	
   584		memset(&mod, 0, sizeof(struct module));
   585		strcpy(mod.name, "VPE loader");
   586	
   587		hdr = (Elf_Ehdr *) v->pbuffer;
   588		len = v->plen;
   589	
   590		/* Sanity checks against insmoding binaries or wrong arch,
   591		   weird elf version */
   592		if (memcmp(hdr->e_ident, ELFMAG, SELFMAG) != 0
   593		    || (hdr->e_type != ET_REL && hdr->e_type != ET_EXEC)
   594		    || !elf_check_arch(hdr)
   595		    || hdr->e_shentsize != sizeof(*sechdrs)) {
   596			pr_warn("VPE loader: program wrong arch or weird elf version\n");
   597	
   598			return -ENOEXEC;
   599		}
   600	
   601		if (hdr->e_type == ET_REL)
   602			relocate = 1;
   603	
   604		if (len < hdr->e_shoff + hdr->e_shnum * sizeof(Elf_Shdr)) {
   605			pr_err("VPE loader: program length %u truncated\n", len);
   606	
   607			return -ENOEXEC;
   608		}
   609	
   610		/* Convenience variables */
   611		sechdrs = (void *)hdr + hdr->e_shoff;
   612		secstrings = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
   613		sechdrs[0].sh_addr = 0;
   614	
   615		/* And these should exist, but gcc whinges if we don't init them */
   616		symindex = strindex = 0;
   617	
   618		if (relocate) {
   619			for (i = 1; i < hdr->e_shnum; i++) {
   620				if ((sechdrs[i].sh_type != SHT_NOBITS) &&
   621				    (len < sechdrs[i].sh_offset + sechdrs[i].sh_size)) {
   622					pr_err("VPE program length %u truncated\n",
   623					       len);
   624					return -ENOEXEC;
   625				}
   626	
   627				/* Mark all sections sh_addr with their address in the
   628				   temporary image. */
   629				sechdrs[i].sh_addr = (size_t) hdr +
   630					sechdrs[i].sh_offset;
   631	
   632				/* Internal symbols and strings. */
   633				if (sechdrs[i].sh_type == SHT_SYMTAB) {
   634					symindex = i;
   635					strindex = sechdrs[i].sh_link;
   636					strtab = (char *)hdr +
   637						sechdrs[strindex].sh_offset;
   638				}
   639			}
   640			layout_sections(&mod, hdr, sechdrs, secstrings);
   641		}
   642	
 > 643		v->load_addr = alloc_progmem(mod.mod_mem[MOD_TEXT].size);
   644		if (!v->load_addr)
   645			return -ENOMEM;
   646	
   647		pr_info("VPE loader: loading to %p\n", v->load_addr);
   648	
   649		if (relocate) {
   650			for (i = 0; i < hdr->e_shnum; i++) {
   651				void *dest;
   652	
   653				if (!(sechdrs[i].sh_flags & SHF_ALLOC))
   654					continue;
   655	
   656				dest = v->load_addr + sechdrs[i].sh_entsize;
   657	
   658				if (sechdrs[i].sh_type != SHT_NOBITS)
   659					memcpy(dest, (void *)sechdrs[i].sh_addr,
   660					       sechdrs[i].sh_size);
   661				/* Update sh_addr to point to copy in image. */
   662				sechdrs[i].sh_addr = (unsigned long)dest;
   663	
   664				pr_debug(" section sh_name %s sh_addr 0x%x\n",
   665					 secstrings + sechdrs[i].sh_name,
   666					 sechdrs[i].sh_addr);
   667			}
   668	
   669			/* Fix up syms, so that st_value is a pointer to location. */
   670			simplify_symbols(sechdrs, symindex, strtab, secstrings,
   671					 hdr->e_shnum, &mod);
   672	
   673			/* Now do relocations. */
   674			for (i = 1; i < hdr->e_shnum; i++) {
   675				const char *strtab = (char *)sechdrs[strindex].sh_addr;
   676				unsigned int info = sechdrs[i].sh_info;
   677	
   678				/* Not a valid relocation section? */
   679				if (info >= hdr->e_shnum)
   680					continue;
   681	
   682				/* Don't bother with non-allocated sections */
   683				if (!(sechdrs[info].sh_flags & SHF_ALLOC))
   684					continue;
   685	
   686				if (sechdrs[i].sh_type == SHT_REL)
   687					err = apply_relocations(sechdrs, strtab,
   688								symindex, i, &mod);
   689				else if (sechdrs[i].sh_type == SHT_RELA)
   690					err = apply_relocate_add(sechdrs, strtab,
   691								 symindex, i, &mod);
   692				if (err < 0)
   693					return err;
   694	
   695			}
   696		} else {
   697			struct elf_phdr *phdr = (struct elf_phdr *)
   698							((char *)hdr + hdr->e_phoff);
   699	
   700			for (i = 0; i < hdr->e_phnum; i++) {
   701				if (phdr->p_type == PT_LOAD) {
   702					memcpy((void *)phdr->p_paddr,
   703					       (char *)hdr + phdr->p_offset,
   704					       phdr->p_filesz);
   705					memset((void *)phdr->p_paddr + phdr->p_filesz,
   706					       0, phdr->p_memsz - phdr->p_filesz);
   707			    }
   708			    phdr++;
   709			}
   710	
   711			for (i = 0; i < hdr->e_shnum; i++) {
   712				/* Internal symbols and strings. */
   713				if (sechdrs[i].sh_type == SHT_SYMTAB) {
   714					symindex = i;
   715					strindex = sechdrs[i].sh_link;
   716					strtab = (char *)hdr +
   717						sechdrs[strindex].sh_offset;
   718	
   719					/*
   720					 * mark symtab's address for when we try
   721					 * to find the magic symbols
   722					 */
   723					sechdrs[i].sh_addr = (size_t) hdr +
   724						sechdrs[i].sh_offset;
   725				}
   726			}
   727		}
   728	
   729		/* make sure it's physically written out */
   730		flush_icache_range((unsigned long)v->load_addr,
   731				   (unsigned long)v->load_addr + v->len);
   732	
   733		if ((find_vpe_symbols(v, sechdrs, symindex, strtab, &mod)) < 0) {
   734			if (v->__start == 0) {
   735				pr_warn("VPE loader: program does not contain a __start symbol\n");
   736				return -ENOEXEC;
   737			}
   738	
   739			if (v->shared_ptr == NULL)
   740				pr_warn("VPE loader: program does not contain vpe_shared symbol.\n"
   741					" Unable to use AMVP (AP/SP) facilities.\n");
   742		}
   743	
   744		pr_info(" elf loaded\n");
   745		return 0;
   746	}
   747	

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




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux