본문으로 건너뛰기
피드

live-bootstrap의 stage0를 단순화하는 C 컴파일러 프로젝트

open-source 약 4분
vote
0
댓글
북마크

GNU Mes를 대체하는 C 컴파일러를 C로 작성해서 TCC를 컴파일하는 프로젝트. Stack-C 중간 언어를 거쳐 감사 가능한 빌드 체인을 구축하며, 이미 TCC 0.9.27 빌드에 성공해 live-bootstrap 결과물과 SHA256 해시가 일치함.

  • 1

    C로 작성한 컴파일러가 Stack-C 중간 언어를 생성하고 M1 어셈블리로 변환

  • 2

    TCC 0.9.27 빌드 성공 — live-bootstrap 결과물과 SHA256 해시 일치 확인

  • 3

    hex0 파일에 C소스 라인↔어셈블리↔중간코드 매핑으로 감사 가능성 확보

  • 4

    x86_64, ARM, RISC-V64 타겟 확장 계획

프로젝트 목표

  • live-bootstrap의 stage0를 단순화하려는 프로젝트임. 구체적으로는 GNU Mes 컴파일러를 대체하는 C 컴파일러를 C로 작성해서 Tiny C Compiler(TCC) 0.9.26을 컴파일하는 것이 목표
  • live-bootstrap이 뭐냐면, 소스코드에서 완전히 재현 가능한(reproducible) 빌드 체인을 구축하는 프로젝트인데, 여기서 가장 초기 단계(stage0)가 제일 복잡함. 이걸 단순화하겠다는 시도

구현 구조

  • 핵심 소스는 tcc_cc.c — i386용 C 컴파일러로, Stack-C라는 스택 기반 중간 언어(Intermediate Language)를 생성함
  • 이 중간 코드를 stack_c.c로 M1 어셈블리로 컴파일하거나, stack_c_interpreter.c로 인터프리팅할 수 있음
  • stdlib.c에 최소한의 C 표준 라이브러리도 포함되어 있음
  • 검증 방법이 꽤 재밌는데, hex0 파일에 3단 컬럼 포맷으로 16진수 ↔ 어셈블리 명령어 ↔ Stack-C 중간 코드 ↔ 원본 C 소스 라인 번호를 다 매핑해둠. 수작업 감사(audit)가 가능하도록 한 거

현재 진행 상황

  • Task 1 완료: chroot 환경에서 TCC를 빌드하고, tcc-boot1tcc-boot2가 live-bootstrap 결과물과 동일한 SHA256 해시를 가지는 것을 확인함. tcc-boot0만 다른데, 이건 GNU Mes가 64비트 정수를 지원하는 반면 tcc_cc는 아직 미지원이기 때문
  • Task 2 진행 중: stage0 실행파일들의 외부 의존성을 제거하고 전부 이 C 컴파일러로 빌드하는 작업. blood-elf, kaem, sha256sum, ungz, untar 등 15개 이상의 유틸리티를 이미 성공적으로 컴파일함
  • Task 3 완료: kaem 스크립트로 TCC 0.9.27 빌드 성공. live-bootstrap 프로젝트의 결과물과 동일한 SHA256 해시 확인

향후 계획

  • x86 외에 x86_64, ARM, RISC-V64 타겟으로 Stack-C 변환기를 작성할 예정. x86_64는 비교적 단순하지만 나머지는 QEMU 같은 에뮬레이션 환경에서 테스트가 필요한 상황
  • TCC 컴파일에 필요한 C 문법 부분 집합을 분석하기 위해 최소 C 전처리기(min_tcc_preprocessor.cpp)와 파서(CParser.c)도 개발함

재현 가능한 빌드의 신뢰 체인을 처음부터 쌓아가는 프로젝트. 보안과 공급망 무결성이 중요해지는 시대에 의미 있는 작업.

댓글

댓글

댓글을 불러오는 중...

open-source

위키피디아에도 빅테크식 반노조 플레이북이 들어왔다

위키미디어 재단이 5월 열흘 사이 MediaWiki 장기 핵심 개발자를 해고하고, 자원봉사 편집자 요청을 처리하던 Community Tech 팀을 해산했다는 비판 글이다. 해고된 인력 상당수가 노조 조직 활동과 연결돼 있었고, 위키피디아 편집자들은 연대 파업까지 거론하고 있다. 재단은 2억9660만 달러의 준비금과 빠르게 성장하는 AI 대상 API 매출을 갖고 있어, 이 사안이 단순 비용 절감으로 보기 어렵다는 게 글의 핵심이다.

open-source

캘리포니아, 연령 확인법에서 리눅스 빼려는 수정안 추진

캘리포니아가 운영체제에 사용자 나이 확인을 요구하는 법안에서 대부분의 오픈소스 운영체제를 제외하는 수정안을 추진 중이다. 데비안, 페도라, 우분투, 아치, 리눅스 민트 같은 배포판은 빠질 가능성이 커졌지만, 스팀OS처럼 독점 앱 생태계와 연결된 플랫폼은 여전히 애매한 상태다.

open-source

마이크로소프트, 45년 전 86-DOS 소스코드를 오픈소스로 공개

마이크로소프트가 86-DOS 1.00 출시 45주년에 맞춰 지금까지 발견된 것 중 가장 오래된 DOS 소스코드를 공개했어. 팀 패터슨의 차고에 있던 도트 매트릭스 출력물을 스캔하고 옮겨 적어, 원본 바이너리와 바이트 단위로 동일하게 다시 컴파일되는 수준까지 복원한 게 포인트야.

open-source

밤부 랩, AGPLv3 위반 논란으로 오픈소스 커뮤니티와 충돌

3D 프린터 제조사 밤부 랩이 AGPLv3 라이선스 위반 논란에 휘말렸고, Software Freedom Conservancy가 두 건의 위반 사례를 확인했다는 내용이야. Louis Rossmann과 Gamers Nexus는 관련 개발자의 법적 방어를 위해 2만달러를 기부했고, 갈등의 핵심은 오픈소스 기반 생태계를 클라우드와 DRM으로 점점 닫아가려는 움직임이야.

open-source

플리퍼, 리눅스 기반 확장형 기기 '플리퍼 원' 공개

플리퍼가 기존 플리퍼 제로를 대체하는 후속작이 아니라, 리눅스 기반 네트워킹·확장형 기기인 플리퍼 원을 공개했어. RK3576 8코어 ARM 칩, 와이파이 6E, 듀얼 이더넷, NVMe, HDMI 4K 120Hz까지 넣으면서 장난감 같은 해킹 도구에서 훨씬 범용적인 리눅스 장비 쪽으로 방향을 넓히는 그림이야.