PicoLibc 1.4.7 ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฆด๋ฆฌ์Šค

ํ™œ๋™์ ์ธ Debian ๊ฐœ๋ฐœ์ž์ด์ž X.Org ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌ๋”์ด์ž XRender, XComposite ๋ฐ XRandR์„ ํฌํ•จํ•œ ๋งŽ์€ X ํ™•์žฅ์˜ ์ฐฝ์‹œ์ž์ธ Keith Packard๋Š” ์ถœํŒ ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถœ์‹œ PicoLibc 1.4.7, ์ œํ•œ๋œ ์˜๊ตฌ ์ €์žฅ ๊ณต๊ฐ„๊ณผ RAM์„ ๊ฐ–์ถ˜ ์ž„๋ฒ ๋””๋“œ ์žฅ์น˜์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ค‘์— ์ฝ”๋“œ์˜ ์ผ๋ถ€๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋นŒ๋ ค์™”์Šต๋‹ˆ๋‹ค. ๋‰ด๋ฆฝ Cygwin ํ”„๋กœ์ ํŠธ์—์„œ AVR ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Atmel AVR ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PicoLibc ์ฝ”๋“œ ๋ฐฐํฌ์ž BSD ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ. ARM(32๋น„ํŠธ), i386, RISC-V, x86_64 ๋ฐ PowerPC ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ์— ์ด ํ”„๋กœ์ ํŠธ๋Š” โ€œnewlib-nanoโ€๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ RAM์ด ์ ์€ ์ž„๋ฒ ๋””๋“œ ์žฅ์น˜์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์› ๋˜ Newlib์˜ ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์  ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€๋ฅผ ์žฌ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, stdio ํ•จ์ˆ˜๋Š” avrlibc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ปดํŒฉํŠธ ๋ฒ„์ „์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž„๋ฒ ๋””๋“œ ๋นŒ๋“œ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋น„BSD ๋ผ์ด์„ผ์Šค ๊ตฌ์„ฑ ์š”์†Œ๋„ ์ฝ”๋“œ์—์„œ ์ •๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐํ™” ์ฝ”๋“œ(crt0)์˜ ๋‹จ์ˆœํ™”๋œ ๋ฒ„์ „์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ๋กœ์ปฌ ์Šค๋ ˆ๋“œ์˜ ๊ตฌํ˜„์ด 'struct _reent'์—์„œ TLS ๋ฉ”์ปค๋‹ˆ์ฆ˜(์Šค๋ ˆ๋“œ ๋กœ์ปฌ ์ €์žฅ์†Œ). Meson ํˆดํ‚ท์€ ์กฐ๋ฆฝ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ:

  • ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜ํ•™์ ์œผ๋กœ ๊ฒ€์ฆ๋จ ์ปดํŒŒ์ผ๋Ÿฌ CompCert.
  • Clang ์ปดํŒŒ์ผ๋Ÿฌ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • '๊ฐ๋งˆ' ํ•จ์ˆ˜์˜ ๋™์ž‘์ด Glibc์˜ ๋™์ž‘๊ณผ ์ผ์น˜ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • nano-malloc ๊ตฌํ˜„์€ ๋ฐ˜ํ™˜๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ง€์›Œ์ง€๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ํŠนํžˆ ์—ฌ์œ  ๋ธ”๋ก์„ ๋ณ‘ํ•ฉํ•˜๊ณ  ํž™ ํฌ๊ธฐ๋ฅผ ํ™•์žฅํ•  ๋•Œ nano-realloc์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • malloc์˜ ์˜ฌ๋ฐ”๋ฅธ ์ž‘๋™์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ์„ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Windows ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์›์ด ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ mingw ํˆดํ‚ท์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ARM ์‹œ์Šคํ…œ์—์„œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ TLS(Thread-Local Storage) ํ•˜๋“œ์›จ์–ด ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru