내 패스는 특정 지점에서 기능을 삽입하며 해당 기능은 정보를 수집합니다. 모듈의 끝에서 나는 내가 모아 놓은 것을 보여주기를 원한다. 그래서 나는 모듈의 끝 부분에 날 위해 인쇄 작업을 할 함수를 삽입하고 싶다. 모듈의 맨 끝을 감지하여 그 바로 앞에 함수를 삽입하는 데 어려움이 있습니다. 도움과 안내를 부탁드립니다!LLVM 패스의 모듈 끝 부분에 함수 호출을 삽입하는 방법은 무엇입니까?
답변
나는 this.You를 수행하는 쉽고 간단한 방법이 없다고 생각합니다 코드에서 두 종류의 출구 포인트를 찾아야합니다.
1) 코드는 프로그램 종료 지점이 될 exit()
과 같은 기능을 호출 할 수 있습니다. 따라서 패스의 코드를 찾아서 함수 호출을 삽입해야합니다. 코드의 각 명령을 검사하는 데 문제가 발생하지 않으려면 코드 기능에서 exit()
에 대한 호출을 수동으로 대체 할 수 있습니다 (예 : exit_())
). 호출하고자하는 함수 다음에 실제로 exit()
함수를 호출해야합니다.이 후자의 접근 방법을 사용하려면 코드에 미리 액세스해야합니다 .2) 프로그램이 입력 함수의 마지막에 종료됩니다 (보통 main
).). 따라서 함수 이름이 잠재적 진입 점 함수와 같은지 여부를 확인하고 return 문 앞에 함수 호출을 삽입 할 수 있습니다. return 문이없는 경우 모든 지침의 끝에 삽입하십시오.
오른쪽. 자세한 답장을 보내 주셔서 감사합니다. 따라서 프로그램 종료 방법에 관계없이 함수를 종료 (exit)하기 위해 exit() 함수를 사용하므로 exit() 명령 전에 바꾸거나 함수를 삽입 할 수 있습니까? –
예,'''exit()'''전에 호출을 삽입 할 수 있으며 위 응답의 2 번에서 설명한대로 입력 함수를 처리해야합니다. – deLta
예. exit가있는 함수의 이름은 entry (즉, main()? –
모듈 끝에 이것을 출력 하시겠습니까? 아니면 프로그램 종료 전에 출력하고 싶습니까? – Brian
프로그램이 종료되기 전에. –
atexit()를 사용해보아야합니다. – Brian