GCC ์ปดํ์ผ๋ฌ ์ ํ๊ตฐ์ ํฌํจ๋จ
GCC์๋ ๋ฐ์ดํธ์ฝ๋ ์์ฑ์ ์ํ ๋ฐฑ์๋ ์ธ์๋ eBPF์ฉ libgcc ํฌํธ์ ์ปค๋ ์ ๊ณต ๋ก๋๋ฅผ ์ฌ์ฉํ์ฌ eBPF ๊ฐ์ ๋จธ์ ์์ ์ฝ๋๋ฅผ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ELF ํ์ผ ์์ฑ์ฉ ๋๊ตฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. GCC์์ eBPF๋ฅผ ์ง์ํ๋ ํจ์น๋ ์ด๋ฏธ Oracle์ ์์ง๋์ด๊ฐ ์ค๋นํ์ต๋๋ค.
eBPF์ฉ ํ๋ก๊ทธ๋จ์ C ์ธ์ด์ ํ์ ์งํฉ์ผ๋ก ์ ์๋๊ณ ์ปดํ์ผ๋์ด ์ปค๋์ ๋ก๋๋ ์ ์์ต๋๋ค. ์คํํ๊ธฐ ์ ์ eBPF ์ธํฐํ๋ฆฌํฐ๋ ํ์ฉ๋ ๋ช
๋ น์ด์ ์ฌ์ฉ์ ๋ํด ๋ฐ์ดํธ์ฝ๋๋ฅผ ํ์ธํ๊ณ ์ฝ๋์ ํน์ ๊ท์น(์: ๋ฃจํ ์์)์ ์ ์ฉํฉ๋๋ค.
์ฒ์์๋ LLVM ๊ธฐ๋ฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ Linux์์ eBPF๋ฅผ ์ปดํ์ผํ์ต๋๋ค. GCC์ eBPF ์ง์์ ์ถ๊ฐ ์ข
์์ฑ์ ์ค์นํ์ง ์๊ณ ๋ ํ๋์ ํดํท์ ์ฌ์ฉํ์ฌ Linux ์ปค๋๊ณผ eBPF ํ๋ก๊ทธ๋จ์ ๋น๋ํ ์ ์๋ค๋ ์ ์์ ํฅ๋ฏธ๋กญ์ต๋๋ค.
eBPF ํ๋ก๊ทธ๋จ ํํ๋ก ๋คํธ์ํฌ ์์ ํธ๋ค๋ฌ ์์ฑ, ํธ๋ํฝ ํํฐ๋ง, ๋์ญํญ ๊ด๋ฆฌ, ์์คํ ๋ชจ๋ํฐ๋ง, ์์คํ ํธ์ถ ์ฐจ๋จ, ์ก์ธ์ค ์ ์ด, ์์ ๋น๋ ๋ฐ ์๊ฐ ๊ณ์ฐ, kprobes/uprobes/tracepoints๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ ์ํ ๋ฑ์ ์ํํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru