커널 심볼테이블관련해서 질문 드립니다.
학교에서 기말 프로젝트로 커널 스핀락 프로파일러를 만들고 있는데요
Symbol Table(System.map)에서는 주소의 범위가
0xc00100000 ~ 0xc05d0000 까지의 주소에 해당하는 심볼과 주소의 매핑이 이루어져 있는 걸 보았는데요
또, /proc/kallsyms에는 저기에 더해져서 각각 모듈에서 쓰는 심볼들이 0xd00000000 부터 매핑이 되어 있더군요
그런데 직접 특정 함수를 부르는 caller의 pc와 특정 오브젝트의 pointer를 계속 기록해 보았는데요
System.map에서 찾을 수 있는 Object의 pointer가 있는가 하면
System.map, kallsysms에서도 매핑이 되지 않는, 그러니까 0xc05d0000 ~ 0xd00000000 이 사이에 들어가는 주소들이 계속 프로파일 되고 있습니다.
1174 [730] caller : 0xc0185323 lock : 0xc74f2bd0 next : 0x2de
1175 [731] caller : 0xc01555f0 lock : 0xcfac3348
1176 [732] caller : 0xc01863aa lock : 0xcfa69c80 next : 0x2df
저기가 제가 트레킹하고 있는 오브젝트(spinlock)과 그를 부른 caller의 pc를 출력했는데 caller는 kernel symbol table에 있는 이름과 잘 매핑이 됩니다만, 저기에 있는 lock들의 주소들은 이름을 얻어 올 수 없는 이상한 주소로 매핑이 되어 있어서..
어떻게 해결 해야 될지 어렵네요 .. @@
도와 주십쇼 .. 흑 ㅡㅜ
댓글 달기