Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

107199
1107
135835


[리눅스커널] GCC: notrace 옵션 - no_instrument_function Linux Kernel - Core Analysis

walk_stackframe() 함수의 구현부를 보면 notrace 키워드로 선언됐음을 알 수 있습니다.

https://elixir.bootlin.com/linux/v4.19.30/source/arch/arm/kernel/stacktrace.c
void notrace walk_stackframe(struct stackframe *frame,
     int (*fn)(struct stackframe *, void *), void *data)
{
while (1) {
int ret;

if (fn(frame, data))
break;
ret = unwind_frame(frame);
if (ret < 0)
break;
}
}
EXPORT_SYMBOL(walk_stackframe);

이 함수를 전처리 코드에서 확인하면 구현부는 다음과 같습니다.

void __attribute__((no_instrument_function)) walk_stackframe(struct stackframe *frame,
       int (*fn)(struct stackframe *, void *), void *data)
{
 while (1) {
  int ret;

  if (fn(frame, data))
   break;
  ret = unwind_frame(frame);
  if (ret < 0)
   break;
 }
}

함수 구현부와 같이 notrace는 '__attribute__((no_instrument_function))' 구문으로 치환이 됩니다.

덧글

댓글 입력 영역