Pasta는 Clang Compiler Toolchain을 추상화하는 C ++ 라이브러리이며 Clang에서 사용 가능한 API를 사용하여 API를 사용하여 컴파일 아티팩트에 대한 자세한 액세스를 제공합니다. 파스타는 다음과 같은 목표를 달성하려고합니다.
비교적 안정적이고 누군가가 실제로 Clang 헤더/라이브러리에 직접 의존 할 것을 요구하지 않는 기준 API 세트를 제공하므로 실질적으로 더 쉬운 분포 모델을 가능하게합니다.
API를 통해 제공된 모든 객체에 대해 메모리를 올바르게 관리하십시오. 파스타를 사용할 때 물체 수명에 대해 걱정할 필요는 없습니다.
추가 정보/액세스를 제공합니다. 기본 Clang API는 어떠한 종류의 상세한 토큰 정보를 제공하지 않습니다. 예를 들어 AST 노드와 관련된 토큰을 요구할 수 없습니다. 파스타는 다른 유사한 문제들 중에서도 이것을 해결하려고 시도합니다.
먼저, 적성을 업데이트하고 기준 종속성을 설치하여 git , cmake , ninja 및 선택한 컴파일러입니다 (C ++ 20을 지원해야합니다). 이름을 망칠 문제를 피하기 위해 모든 서브 세트에서 동일한 컴파일러를 사용하는 것이 유용합니다. MACOS를 사용하는 경우 홈브리를 설치하고 최신 cmake 및 ninja 와 함께 Python 3.9를 설치하는 것이 좋습니다.
그리고 마침내 파스타 자체를 구축합니다.
git clone https://github.com/trailofbits/pasta.git
mkdir -p pasta-build
cd pasta-build
cmake
-DCMAKE_BUILD_TYPE=Release
-DPASTA_ENABLE_INSTALL=ON
-GNinja
../pasta
ninja install MacOS에서는 Clang 컴파일러를 수동으로 지정해야 할 수도 있습니다. 그러나 VCPKG는 비정상적인 결과를 낳고 비정상적인 결과를 얻으려고 노력하기 때문에 clang 또는 clang++ 지정할 수는 없습니다. 그러므로, 당신은 당신의 Clang에게 절대적인 길을 주어야합니다.
git clone https://github.com/trailofbits/pasta.git
mkdir -p pasta-build
cd pasta-build
cmake
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER= ` which clang `
-DCMAKE_CXX_COMPILER= ` which clang++ `
-DPASTA_ENABLE_INSTALL=ON
-GNinja
../pasta
ninja install파스타는 Apache 2.0 라이센스에 따라 라이센스가 부여됩니다. 파스타의 많은 부분은 Clang Apis에서 반자동 생성됩니다. Clang은 또한 Apache 2.0에 따라 라이센스가 부여되며 LLVM 예외가 있습니다.
이 연구는 DERPA (Defense Advanced Research Projects Agency)의 자금으로 개발되었습니다. 표현 된 견해, 의견 및/또는 조사 결과는 저자의 견해 및 결과이며 국방부 또는 미국 정부의 공식 견해 또는 정책을 나타내는 것으로 해석되어서는 안됩니다.
배포 명세서 A - 공개 릴리스 승인, 배포 무제한