GCC ఇప్పుడు eBPFకి సంకలనం కోసం బ్యాకెండ్‌ని కలిగి ఉంది

GCC కంపైలర్ సూట్‌లో చేర్చబడింది దత్తత తీసుకున్నారు Linux కెర్నల్‌లో నిర్మించిన బైట్‌కోడ్ ఇంటర్‌ప్రెటర్ కోసం ప్రోగ్రామ్‌లను కంపైల్ చేయడానికి కోడ్ eGMP. JIT సంకలనం యొక్క ఉపయోగానికి ధన్యవాదాలు, కెర్నల్ బైట్‌కోడ్ ఫ్లైలో మెషీన్ సూచనలలోకి అనువదించబడుతుంది మరియు స్థానిక కోడ్ పనితీరుతో అమలు చేయబడుతుంది. eBPF మద్దతుతో ప్యాచ్‌లు ఆమోదించబడిన GCC 10 విడుదల అభివృద్ధి చేయబడిన శాఖకు.

బైట్‌కోడ్ ఉత్పత్తి కోసం బ్యాకెండ్‌తో పాటు, GCC eBPF కోసం libgcc పోర్ట్‌ను మరియు ELF ఫైల్‌లను రూపొందించడానికి సాధనాలను కలిగి ఉంది, ఇది కెర్నల్ అందించిన లోడర్‌లను ఉపయోగించి eBPF వర్చువల్ మెషీన్‌లో కోడ్‌ని అమలు చేయడం సాధ్యం చేస్తుంది. GCCలో eBPFకు మద్దతు ఇచ్చే ప్యాచ్‌లను ఇప్పటికే ఒరాకిల్ నుండి ఇంజనీర్లు తయారు చేశారు అందించారు GNU బైనటిల్‌లలో eBPF మద్దతు. GDB కోసం ఒక సిమ్యులేటర్ మరియు ప్యాచ్‌లు కూడా అభివృద్ధిలో ఉన్నాయి, ఇది eBPF ప్రోగ్రామ్‌లను కెర్నల్‌లోకి లోడ్ చేయకుండా డీబగ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.

eBPF కోసం ప్రోగ్రామ్‌లు C భాష యొక్క ఉపసమితిలో నిర్వచించబడతాయి, కంపైల్ చేయబడతాయి మరియు కెర్నల్‌లోకి లోడ్ చేయబడతాయి. అమలు చేయడానికి ముందు, eBPF వ్యాఖ్యాత అనుమతించబడిన సూచనల ఉపయోగం కోసం బైట్‌కోడ్‌ను తనిఖీ చేస్తుంది మరియు కోడ్‌పై కొన్ని నియమాలను విధిస్తుంది (ఉదాహరణకు, లూప్‌లు లేవు).
ప్రారంభంలో, Linuxలో eBPF కంపైల్ చేయడానికి LLVM-ఆధారిత సాధనాలు ఉపయోగించబడ్డాయి. GCCలో eBPF మద్దతు ఆసక్తికరంగా ఉంటుంది ఎందుకంటే ఇది అదనపు డిపెండెన్సీలను ఇన్‌స్టాల్ చేయకుండా Linux కెర్నల్ మరియు eBPF ప్రోగ్రామ్‌లను రూపొందించడానికి ఒక టూల్‌కిట్‌ను ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది.

eBPF ప్రోగ్రామ్‌ల రూపంలో, మీరు నెట్‌వర్క్ ఆపరేషన్ హ్యాండ్లర్‌లను సృష్టించవచ్చు, ట్రాఫిక్‌ను ఫిల్టర్ చేయవచ్చు, బ్యాండ్‌విడ్త్‌ను నిర్వహించవచ్చు, సిస్టమ్‌లను పర్యవేక్షించవచ్చు, సిస్టమ్ కాల్‌లను అడ్డగించవచ్చు, యాక్సెస్‌ని నియంత్రించవచ్చు, ఆపరేషన్‌ల ఫ్రీక్వెన్సీ మరియు సమయాన్ని లెక్కించవచ్చు మరియు kprobes/uprobes/tracepoints ఉపయోగించి ట్రేసింగ్ చేయవచ్చు.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి