linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* arch/arm64/kernel/entry-ftrace.S:238: undefined reference to `ftrace_graph_caller'
@ 2019-12-06  7:08 kbuild test robot
  2019-12-06 12:41 ` Mark Rutland
  0 siblings, 1 reply; 2+ messages in thread
From: kbuild test robot @ 2019-12-06  7:08 UTC (permalink / raw)
  To: Torsten Duwe
  Cc: kbuild-all, linux-kernel, Mark Rutland, Amit Daniel Kachhap,
	Ard Biesheuvel

[-- Attachment #1: Type: text/plain, Size: 10093 bytes --]

Hi Torsten,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   b0d4beaa5a4b7d31070c41c2e50740304a3f1138
commit: 3b23e4991fb66f6d152f9055ede271a726ef9f21 arm64: implement ftrace with regs
date:   4 weeks ago
config: arm64-randconfig-a001-20191205 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 3b23e4991fb66f6d152f9055ede271a726ef9f21
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=arm64 

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

All errors (new ones prefixed by >>):

   arch/arm64/kernel/entry-ftrace.o: In function `skip_ftrace_call':
>> arch/arm64/kernel/entry-ftrace.S:238: undefined reference to `ftrace_graph_caller'
   arch/arm64/kernel/entry-ftrace.S:238:(.text+0x3c): relocation truncated to fit: R_AARCH64_CONDBR19 against undefined symbol `ftrace_graph_caller'
   arch/arm64/kernel/entry-ftrace.S:243: undefined reference to `ftrace_graph_caller'
   arch/arm64/kernel/entry-ftrace.S:243:(.text+0x54): relocation truncated to fit: R_AARCH64_CONDBR19 against undefined symbol `ftrace_graph_caller'

vim +238 arch/arm64/kernel/entry-ftrace.S

3b23e4991fb66f Torsten Duwe    2019-02-08  140  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  141  /*
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  142   * Gcc with -pg will put the following code in the beginning of each function:
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  143   *      mov x0, x30
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  144   *      bl _mcount
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  145   *	[function's body ...]
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  146   * "bl _mcount" may be replaced to "bl ftrace_caller" or NOP if dynamic
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  147   * ftrace is enabled.
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  148   *
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  149   * Please note that x0 as an argument will not be used here because we can
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  150   * get lr(x30) of instrumented function at any time by winding up call stack
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  151   * as long as the kernel is compiled without -fomit-frame-pointer.
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  152   * (or CONFIG_FRAME_POINTER, this is forced on arm64)
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  153   *
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  154   * stack layout after mcount_enter in _mcount():
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  155   *
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  156   * current sp/fp =>  0:+-----+
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  157   * in _mcount()        | x29 | -> instrumented function's fp
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  158   *                     +-----+
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  159   *                     | x30 | -> _mcount()'s lr (= instrumented function's pc)
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  160   * old sp       => +16:+-----+
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  161   * when instrumented   |     |
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  162   * function calls      | ... |
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  163   * _mcount()           |     |
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  164   *                     |     |
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  165   * instrumented => +xx:+-----+
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  166   * function's fp       | x29 | -> parent's fp
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  167   *                     +-----+
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  168   *                     | x30 | -> instrumented function's lr (= parent's pc)
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  169   *                     +-----+
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  170   *                     | ... |
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  171   */
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  172  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  173  	.macro mcount_enter
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  174  	stp	x29, x30, [sp, #-16]!
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  175  	mov	x29, sp
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  176  	.endm
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  177  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  178  	.macro mcount_exit
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  179  	ldp	x29, x30, [sp], #16
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  180  	ret
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  181  	.endm
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  182  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  183  	.macro mcount_adjust_addr rd, rn
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  184  	sub	\rd, \rn, #AARCH64_INSN_SIZE
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  185  	.endm
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  186  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  187  	/* for instrumented function's parent */
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  188  	.macro mcount_get_parent_fp reg
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  189  	ldr	\reg, [x29]
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  190  	ldr	\reg, [\reg]
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  191  	.endm
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  192  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  193  	/* for instrumented function */
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  194  	.macro mcount_get_pc0 reg
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  195  	mcount_adjust_addr	\reg, x30
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  196  	.endm
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  197  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  198  	.macro mcount_get_pc reg
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  199  	ldr	\reg, [x29, #8]
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  200  	mcount_adjust_addr	\reg, \reg
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  201  	.endm
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  202  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  203  	.macro mcount_get_lr reg
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  204  	ldr	\reg, [x29]
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  205  	ldr	\reg, [\reg, #8]
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  206  	.endm
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  207  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  208  	.macro mcount_get_lr_addr reg
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  209  	ldr	\reg, [x29]
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  210  	add	\reg, \reg, #8
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  211  	.endm
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  212  
bd7d38dbdf356e AKASHI Takahiro 2014-04-30  213  #ifndef CONFIG_DYNAMIC_FTRACE
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  214  /*
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  215   * void _mcount(unsigned long return_address)
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  216   * @return_address: return address to instrumented function
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  217   *
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  218   * This function makes calls, if enabled, to:
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  219   *     - tracer function to probe instrumented function's entry,
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  220   *     - ftrace_graph_caller to set up an exit hook
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  221   */
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  222  ENTRY(_mcount)
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  223  	mcount_enter
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  224  
829d2bd1339220 Mark Rutland    2017-01-17  225  	ldr_l	x2, ftrace_trace_function
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  226  	adr	x0, ftrace_stub
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  227  	cmp	x0, x2			// if (ftrace_trace_function
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  228  	b.eq	skip_ftrace_call	//     != ftrace_stub) {
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  229  
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  230  	mcount_get_pc	x0		//       function's pc
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  231  	mcount_get_lr	x1		//       function's lr (= parent's pc)
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  232  	blr	x2			//   (*ftrace_trace_function)(pc, lr);
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  233  
d125bffcefb290 Julien Thierry  2017-11-03  234  skip_ftrace_call:			// }
d125bffcefb290 Julien Thierry  2017-11-03  235  #ifdef CONFIG_FUNCTION_GRAPH_TRACER
829d2bd1339220 Mark Rutland    2017-01-17  236  	ldr_l	x2, ftrace_graph_return
f1ba46ee787d0a Ard Biesheuvel  2014-11-07  237  	cmp	x0, x2			//   if ((ftrace_graph_return
f1ba46ee787d0a Ard Biesheuvel  2014-11-07 @238  	b.ne	ftrace_graph_caller	//        != ftrace_stub)
f1ba46ee787d0a Ard Biesheuvel  2014-11-07  239  
829d2bd1339220 Mark Rutland    2017-01-17  240  	ldr_l	x2, ftrace_graph_entry	//     || (ftrace_graph_entry
829d2bd1339220 Mark Rutland    2017-01-17  241  	adr_l	x0, ftrace_graph_entry_stub //     != ftrace_graph_entry_stub))
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  242  	cmp	x0, x2
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  243  	b.ne	ftrace_graph_caller	//     ftrace_graph_caller();
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  244  #endif /* CONFIG_FUNCTION_GRAPH_TRACER */
d125bffcefb290 Julien Thierry  2017-11-03  245  	mcount_exit
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  246  ENDPROC(_mcount)
dbd3196299fe58 Mark Rutland    2018-12-07  247  EXPORT_SYMBOL(_mcount)
dbd3196299fe58 Mark Rutland    2018-12-07  248  NOKPROBE(_mcount)
819e50e25d0ce8 AKASHI Takahiro 2014-04-30  249  

:::::: The code at line 238 was first introduced by commit
:::::: f1ba46ee787d0a880f884f401031315b0a777f25 arm64: ftrace: eliminate literal pool entries

:::::: TO: Ard Biesheuvel <ard.biesheuvel@linaro.org>
:::::: CC: Will Deacon <will.deacon@arm.com>

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 39279 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: arch/arm64/kernel/entry-ftrace.S:238: undefined reference to `ftrace_graph_caller'
  2019-12-06  7:08 arch/arm64/kernel/entry-ftrace.S:238: undefined reference to `ftrace_graph_caller' kbuild test robot
@ 2019-12-06 12:41 ` Mark Rutland
  0 siblings, 0 replies; 2+ messages in thread
From: Mark Rutland @ 2019-12-06 12:41 UTC (permalink / raw)
  To: kbuild test robot
  Cc: Torsten Duwe, kbuild-all, linux-kernel, Amit Daniel Kachhap,
	Ard Biesheuvel

On Fri, Dec 06, 2019 at 03:08:40PM +0800, kbuild test robot wrote:
> Hi Torsten,
> 
> FYI, the error/warning still remains.
> 
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   b0d4beaa5a4b7d31070c41c2e50740304a3f1138
> commit: 3b23e4991fb66f6d152f9055ede271a726ef9f21 arm64: implement ftrace with regs

> All errors (new ones prefixed by >>):
> 
>    arch/arm64/kernel/entry-ftrace.o: In function `skip_ftrace_call':
> >> arch/arm64/kernel/entry-ftrace.S:238: undefined reference to `ftrace_graph_caller'
>    arch/arm64/kernel/entry-ftrace.S:238:(.text+0x3c): relocation truncated to fit: R_AARCH64_CONDBR19 against undefined symbol `ftrace_graph_caller'
>    arch/arm64/kernel/entry-ftrace.S:243: undefined reference to `ftrace_graph_caller'
>    arch/arm64/kernel/entry-ftrace.S:243:(.text+0x54): relocation truncated to fit: R_AARCH64_CONDBR19 against undefined symbol `ftrace_graph_caller'

This is my bad; I messed up the ifdeffery so that ftrace_graph_caller
isn't defined for CONFIG_DYNAMIC_FTRACE && CONFIG_FUNCTION_GRAPH_TRACER.

I will send a patch shortly. Sorry about this.

Mark.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-12-06 12:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-06  7:08 arch/arm64/kernel/entry-ftrace.S:238: undefined reference to `ftrace_graph_caller' kbuild test robot
2019-12-06 12:41 ` Mark Rutland

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).