![GCC에서 이국적인 부트로더를 사용하는 것이 합리적입니까?](https://linux55.com/image/71975/GCC%EC%97%90%EC%84%9C%20%EC%9D%B4%EA%B5%AD%EC%A0%81%EC%9D%B8%20%EB%B6%80%ED%8A%B8%EB%A1%9C%EB%8D%94%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%B4%20%ED%95%A9%EB%A6%AC%EC%A0%81%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
GCC가 현재 특정 기능 및 아키텍처의 버그를 감지하기 위해 사소하지 않은 방식으로 부트스트랩을 수행한다는 증거가 있는 사람이 있습니까? 아니면 적어도 GCC에서 오류를 확인하기 위한 실제 부팅 기술을 찾을 수 있는 일부 문서를 알려 주시겠습니까?
일반 부트로더
- GCC 버전(X-1)을 사용하여 GCC 버전(X)을 컴파일하고 호출합니다.ㅏ
- ㅏ느린 바이너리를 사용하는 새로운 컴파일러입니다.
- 새로운 컴파일러 사용ㅏ직접 컴파일하고 생성하세요.두번째
- 두번째빠른 바이너리를 갖춘 새로운 컴파일러입니다.
- 허락하다두번째직접 컴파일하고 생성하세요.씨
- 이때 만약에ㅏ오류가 없고 결과 실행 파일의 바이너리 덤프가 생성됩니다.두번째그리고씨그것은 동일해야합니다.
GCC 접근 방식은 또한 개발 중에 사용되는 코드의 기능을 최소한으로 유지하므로 부팅에 성공하면 최소한의 기능 세트에는 버그가 없다는 것을 알 수 있습니다. (단순한 부트스트래핑으로 적용 범위를 늘리기 위해 더 많은 기능을 사용하는 Clang과 반대입니다.)
구성 파일은 최적화 부스트랩을 안내합니다.
- 사용ㅏ플래그로 자체 컴파일
-fprofile-generate
하고 생성두번째 - 사용두번째자체 컴파일(프로필 정보 생성)
사용ㅏ다음을 사용하여 컴파일
-fprofile-use
하고 생성합니다.두번째'사용두번째'플래그로 자체 컴파일
-fprofile-generate
하고 생성씨- 사용씨자체 컴파일(프로필 정보 생성)
사용두번째'다음을 사용하여 컴파일
-fprofile-use
하고 생성합니다.씨'이때 만약에ㅏ오류가 없고 결과 실행 파일의 바이너리 덤프가 생성됩니다.두번째'그리고씨'그것은 동일해야합니다.
역방향 및 순방향 부트스트래핑
- GCC 버전(X-1)을 GCC 버전 X로 컴파일하고 생성합니다.ㅏ
- 그런 다음 일반 부트로더를 시작합니다.ㅏ
- A를 사용하여 GCC 버전 X를 컴파일하고 생성합니다.디
- 정기적으로 안내디.
주제에서 벗어남: 누군가 특별한 부트스트랩을 염두에 두고(예: 크로스 플랫폼 빌드) GCC 부트스트랩 그래프를 만들고 부트스트랩이 실패한 위치를 빠르게 확인할 수 있다면 좋을 것 같습니다.