All of lore.kernel.org
 help / color / mirror / Atom feed
* [peterz-queue:x86/core 2/3] arch/x86/kernel/alternative.c:2083:6: error: implicit declaration of function 'is_jcc32' is invalid in C99
@ 2023-01-20 19:18 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-01-20 19:18 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: llvm, oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git x86/core
head:   2eb791245b6ab0aa1bbc37537adb2b2c87f50651
commit: 13c5d94759ccacddeba3041d8c2c0c967becb5d3 [2/3] x86/alternative: Teach text_poke_bp() to patch Jcc.d32 instructions
config: i386-randconfig-a002 (https://download.01.org/0day-ci/archive/20230121/202301210331.s3pHXRMX-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
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
        # https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?id=13c5d94759ccacddeba3041d8c2c0c967becb5d3
        git remote add peterz-queue https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git
        git fetch --no-tags peterz-queue x86/core
        git checkout 13c5d94759ccacddeba3041d8c2c0c967becb5d3
        # 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=i386 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash arch/x86/kernel/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> arch/x86/kernel/alternative.c:2083:6: error: implicit declaration of function 'is_jcc32' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
           if (is_jcc32(&insn)) {
               ^
   1 error generated.


vim +/is_jcc32 +2083 arch/x86/kernel/alternative.c

  2063	
  2064	static void text_poke_loc_init(struct text_poke_loc *tp, void *addr,
  2065				       const void *opcode, size_t len, const void *emulate)
  2066	{
  2067		struct insn insn;
  2068		int ret, i = 0;
  2069	
  2070		if (len == 6)
  2071			i = 1;
  2072		memcpy((void *)tp->text, opcode+i, len-i);
  2073		if (!emulate)
  2074			emulate = opcode;
  2075	
  2076		ret = insn_decode_kernel(&insn, emulate);
  2077		BUG_ON(ret < 0);
  2078	
  2079		tp->rel_addr = addr - (void *)_stext;
  2080		tp->len = len;
  2081		tp->opcode = insn.opcode.bytes[0];
  2082	
> 2083		if (is_jcc32(&insn)) {
  2084			/*
  2085			 * Map Jcc.d32 onto Jcc.d8 and use len to distinguish.
  2086			 */
  2087			tp->opcode = insn.opcode.bytes[1] - 0x10;
  2088		}
  2089	
  2090		switch (tp->opcode) {
  2091		case RET_INSN_OPCODE:
  2092		case JMP32_INSN_OPCODE:
  2093		case JMP8_INSN_OPCODE:
  2094			/*
  2095			 * Control flow instructions without implied execution of the
  2096			 * next instruction can be padded with INT3.
  2097			 */
  2098			for (i = insn.length; i < len; i++)
  2099				BUG_ON(tp->text[i] != INT3_INSN_OPCODE);
  2100			break;
  2101	
  2102		default:
  2103			BUG_ON(len != insn.length);
  2104		}
  2105	
  2106		switch (tp->opcode) {
  2107		case INT3_INSN_OPCODE:
  2108		case RET_INSN_OPCODE:
  2109			break;
  2110	
  2111		case CALL_INSN_OPCODE:
  2112		case JMP32_INSN_OPCODE:
  2113		case JMP8_INSN_OPCODE:
  2114		case 0x70 ... 0x7f: /* Jcc */
  2115			tp->disp = insn.immediate.value;
  2116			break;
  2117	
  2118		default: /* assume NOP */
  2119			switch (len) {
  2120			case 2: /* NOP2 -- emulate as JMP8+0 */
  2121				BUG_ON(memcmp(emulate, x86_nops[len], len));
  2122				tp->opcode = JMP8_INSN_OPCODE;
  2123				tp->disp = 0;
  2124				break;
  2125	
  2126			case 5: /* NOP5 -- emulate as JMP32+0 */
  2127				BUG_ON(memcmp(emulate, x86_nops[len], len));
  2128				tp->opcode = JMP32_INSN_OPCODE;
  2129				tp->disp = 0;
  2130				break;
  2131	
  2132			default: /* unknown instruction */
  2133				BUG();
  2134			}
  2135			break;
  2136		}
  2137	}
  2138	

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-01-20 19:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-20 19:18 [peterz-queue:x86/core 2/3] arch/x86/kernel/alternative.c:2083:6: error: implicit declaration of function 'is_jcc32' is invalid in C99 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.