Binary File Descriptor library
बाइनरी फाइल डिस्क्रिप्टर लाइब्रेरी (बी. एफ. डी.) विभिन्न प्रारूपों में ऑब्जेक्ट फाइलों के पोर्टेबल हेरफेर के लिए जी. एन. यू. परियोजना का मुख्य तंत्र है। यह कुछ 25 निर्देश सेट आर्किटेक्चर के लिए लगभग 50 फ़ाइल प्रारूपों का समर्थन करता है। जब सिग्नस सपोर्ट के डेविड हेन्केल-वॉलेस ने कंपनी के लिए नए व्यावसायिक अवसरों को खोलने के तरीके के रूप में पुस्तकालय को विकसित करने का प्रस्ताव रखा, तो रिचर्ड स्टालमैन ने कहा कि यह मुश्किल होगा; डेविड की प्रतिक्रिया यह थी कि यह ऐसा "बड़ा सौदा" नहीं था। संक्षेप में "बी. एफ. डी"., यह पुस्तकालय का नाम बन गया। "बाइनरी फाइल डिस्क्रिप्टर" का आविष्कार बाद में "बी. एफ. डी". के संक्षिप्त नाम के रूप में किया गया था। डिजाइन बी. एफ. डी. ऑब्जेक्ट फाइलों का एक सामान्य अमूर्त दृश्य प्रस्तुत करके काम करता है। एक ऑब्जेक्ट फ़ाइल में वर्णनात्मक जानकारी के साथ एक "हेडर" होता है; "अनुभागों" की एक चर संख्या जिसमें प्रत्येक का एक नाम, कुछ विशेषताएँ और डेटा का एक खंड होता है; एक प्रतीक तालिका; स्थानांतरण प्रविष्टियाँ; और इसी तरह आगे। आंतरिक रूप से, बी. एफ. डी. लक्ष्य प्रोसेसर और फ़ाइल प्रारूप द्वारा आवश्यक बिट/बाइट लेआउट के विवरण में अमूर्त दृश्य से डेटा का अनुवाद करता है। इसकी प्रमुख सेवाओं में बिट क्रम अंतर को संभालना शामिल है, जैसे कि एक छोटे-एंडियन मेजबान और बड़े-एंडियन लक्ष्य के बीच, 32-बिट और 64-बिट डेटा के बीच सही रूपांतरण, और स्थानांतरण प्रविष्टियों द्वारा निर्दिष्ट पते के अंकगणित का विवरण। बी. एफ. डी. पुस्तकालय को तार्किक रूप से दो भागों में विभाजित किया जा सकता है। फ्रंट-एंड और बैक-एंड। फ्रंट-एंड अंतर्निहित ऑब्जेक्ट फ़ाइल दृश्य से स्वतंत्र एक सामान्य इंटरफेस देता है। उपयोगकर्ता इस इंटरफेस के साथ ऑब्जेक्ट फ़ाइलों के साथ बातचीत करेंगे। भले ही ऑब्जेक्ट फ़ाइलों का लेआउट उपयोगकर्ता को ज्ञात न हो, फिर भी उपयोगकर्ता इंटरफेस का उपयोग करने में सक्षम हो। विवरण को छिपाने का काम बैक-एंड की मदद से किया जाता है। बैक-एंड लागू करता है कि फ्रंट-एंड इंटरफेस ऑब्जेक्ट फ़ाइल लेआउट के साथ कैसे बातचीत करता है। जब भी कोई नया ऑब्जेक्ट फ़ाइल प्रकार पेश किया जाता है तो बैक-एंड को प्रकार को पंजीकृत करने और इसे लागू करने की आवश्यकता होती है यदि इसे बी. एफ. डी. अनुप्रयोग द्वारा समर्थित करने की आवश्यकता होती है। हालाँकि बी. एफ. डी. को मूल रूप से विभिन्न प्रकार के उपकरणों द्वारा उपयोग करने योग्य एक सामान्य पुस्तकालय के रूप में डिज़ाइन किया गया था, लेकिन नई प्रणालियों की क्षमताओं को समायोजित करने के लिए ए. पी. आई. के साथ छेड़छाड़ करने की लगातार आवश्यकता ने इसके उपयोग को सीमित कर दिया है; बी. एफ. डी. के मुख्य ग्राहक जी. एन. यू. असेंबलर (जी. ए. एस.), जी. एन. यू. लिंकर (जी. एल. डी.), और अन्य जी. एन. यू. द्विआधारी उपयोगिताएँ ("बाइनूटिल्स") उपकरण, और जी. एन. यू. डिबगर (जी. डी. बी.) हैं। नतीजतन, बी. एफ. डी. को अलग से वितरित नहीं किया जाता है, लेकिन हमेशा बाइनूटिल्स और जी. डी. बी. के रिलीज के साथ शामिल किया जाता है। फिर भी, बी. एफ. डी. अंतर्निहित प्रणालियों के विकास के लिए जी. एन. यू. उपकरणों के उपयोग में एक महत्वपूर्ण घटक है। बी. एफ. डी. पुस्तकालय का उपयोग कोर डंप से संरचित डेटा को पढ़ने के लिए किया जा सकता है। बी. एफ. डी. पुस्तकालय का उपयोगः बी. एफ. डी. पुस्तकालय एपीआईएस का उपयोग करके ऑब्जेक्ट फ़ाइल आकार का मुद्रण करें। #include "bfd.h" #include <stdio.h> इंट मेन () {bfd * abfd = bfd _ openr ("a. o", null); प्रिंटफ ("% llu\n", bfd _ गेट _ साइज (abfd)); रिटर्न 0;} बिल्ड कमांडः gcc main.c-lbfd-o आउटपुट./आउटपुट #साइज संदर्भ पृष्ठ प्रिंट करता है, वर्तमान BFD स्रोतों तक पहुंच के साथ, कई BFD एपिस सी (प्रोग्रामिंग भाषा) पुस्तकालयों का उपयोग करता है निष्पादित करने योग्य फ़ाइल प्रारूप मुक्त कंप्यूटर पुस्तकालय जीएनयू प्रोजेक्ट सॉफ्टवेयर