2017-02-08 8 views
0

내 패스는 특정 지점에서 기능을 삽입하며 해당 기능은 정보를 수집합니다. 모듈의 끝에서 나는 내가 모아 놓은 것을 보여주기를 원한다. 그래서 나는 모듈의 끝 부분에 날 위해 인쇄 작업을 할 함수를 삽입하고 싶다. 모듈의 맨 끝을 감지하여 그 바로 앞에 함수를 삽입하는 데 어려움이 있습니다. 도움과 안내를 부탁드립니다!LLVM 패스의 모듈 끝 부분에 함수 호출을 삽입하는 방법은 무엇입니까?

+0

모듈 끝에 이것을 출력 하시겠습니까? 아니면 프로그램 종료 전에 출력하고 싶습니까? – Brian

+0

프로그램이 종료되기 전에. –

+0

atexit()를 사용해보아야합니다. – Brian

답변

1

나는 this.You를 수행하는 쉽고 간단한 방법이 없다고 생각합니다 코드에서 두 종류의 출구 포인트를 찾아야합니다.

1) 코드는 프로그램 종료 지점이 될 exit()과 같은 기능을 호출 할 수 있습니다. 따라서 패스의 코드를 찾아서 함수 호출을 삽입해야합니다. 코드의 각 명령을 검사하는 데 문제가 발생하지 않으려면 코드 기능에서 exit()에 대한 호출을 수동으로 대체 할 수 있습니다 (예 : exit_())). 호출하고자하는 함수 다음에 실제로 exit() 함수를 호출해야합니다.이 후자의 접근 방법을 사용하려면 코드에 미리 액세스해야합니다 .2) 프로그램이 입력 함수의 마지막에 종료됩니다 (보통 main).). 따라서 함수 이름이 잠재적 진입 점 함수와 같은지 여부를 확인하고 return 문 앞에 함수 호출을 삽입 할 수 있습니다. return 문이없는 경우 모든 지침의 끝에 삽입하십시오.

+0

오른쪽. 자세한 답장을 보내 주셔서 감사합니다. 따라서 프로그램 종료 방법에 관계없이 함수를 종료 (exit)하기 위해 exit() 함수를 사용하므로 exit() 명령 전에 바꾸거나 함수를 삽입 할 수 있습니까? –

+0

예,'''exit()'''전에 호출을 삽입 할 수 있으며 위 응답의 2 번에서 설명한대로 입력 함수를 처리해야합니다. – deLta

+0

예. exit가있는 함수의 이름은 entry (즉, main()? –