Messages in this thread | | | Date | Fri, 6 Dec 2019 15:08:40 +0800 | From | kbuild test robot <> | Subject | arch/arm64/kernel/entry-ftrace.S:238: undefined reference to `ftrace_graph_caller' |
| |
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 [unhandled content-type:application/gzip] | |