forked from namhyung/uftrace
-
Notifications
You must be signed in to change notification settings - Fork 0
[RISC‐V 64] 0. 포팅 작업 순서
최기철 edited this page Aug 27, 2023
·
4 revisions
-
기능이 정상 동작하지 않더라도
./configure
와make
명령어 실행 시 빌드가 완료되어야 함 -
uftrace를 RISC-V 환경에서 실행해볼 수 있는 환경을 구축하는 것이 첫 목표
mcount.S
의 mcount_return 과 _mcount
또는 mcount
(이하 mcount 함수로 단어 통일) 어셈블리 코드를 구현
-
mcount
함수의 최종 목표는 c언어로 된mcount_entry
함수가 호출되어 정상적인 인자를 받아갈 수 있어야 함-
libmcount/mcount.c
파일의int mcount_entry(…)
함수를mcount.S
에서 호출 -
mcount_entry
함수의 인자인struct mcount_regs *
와parent_loc
를 채워넣는 코드 작성 -
mcount_entry
함수 내부에서 넘겨받은 인자가 정상적으로 출력되는지 확인
-
-
mcount_return
함수의 최종 목표는 호출된 함수가 종료된 이후 Return Address로 넘어갈 수 있어야 함-
mcount_exit
함수가 잘 호출되는지 확인하는 부분 -
이 단계까지 마무리 되면
mcount
함수를 사용한 추적은 성공한 것으로 볼 수 있음
-
- 해당 단계는 uftrace 실행 시 타겟 프로그램의 함수의 인자 및 리턴 값을 출력할 수 있는 코드를 구현하는 단계
- 해당 단계는 PLT Hooking 동작을 위해 구현하는 단계
- 해당 단계까지 왔다면, 컴파일 시
-pg
옵션을 주고 컴파일 한 프로그램을 추적하는 기본적인 Tracing은 성공
-
Dynamic Tracing (Dynamic.S를 비롯한 코드 구현 필요)
-
......
- 기존 아키텍처에서 정상적으로 동작하였던 기능이 RISC-V 환경에서도 정상적으로 동작하는지 테스트