2013-07-04 19 views
5

में अनुभागों का डिस्प्लेप्लोर मैंने अनुभागों के बारे में जानने के लिए एक बहुत ही बुनियादी Hello World प्रोग्राम लिखा था। objdump का उपयोग करने के बाद मुझे सभी अनुभाग मिल गए। मैं ubuntu 12.04 का उपयोग कर रहा हूं।एक सी प्रोग्राम

उत्पादन में मुझे लगता है कि जैसे कि यह पाया:

खंड के
  1. Disassembly

  2. अनुभाग .plt

    खंड के
  3. Disassembly के Disassembly .init

  4. .text

    __do_global_dtors_aux

  5. अनुभाग .fini

मैं पता है कि उन वर्गों रहे हैं चाहते हैं की Disassembly? वे किस डेटा को स्टोर करते हैं? विशेष रूप से .plt और .fini। लगभग .init और .text मैं अनुमान लगा सकता हूं, लेकिन दूसरों के बारे में क्या?

+0

मैं जानता हूँ कि हो सकता है कि कैसे आप इस फाइल को –

+0

पहले 'जीसीसी -ओ objectfile programname.c' तो' objdump objectfile' संकलन किया। – someone

उत्तर

3

आपको इसे Google करना चाहिए: here is the first result। ईएलएफ प्रारूप के बारे में अधिक जानने के लिए यह एक अच्छी शुरुआत है।

लगभग .init और .fini, it's here

Here is a list of the ELF sections संक्षिप्त विवरण के साथ।

+0

बहुत अच्छे लिंक –

+0

'dtor' का अर्थ विनाशक है, और मैं c का उपयोग कर रहा हूं, तो मुझे' __do_global_dtors_aux' कैसे मिल रहा है। क्या यह विनाशक है या कुछ और? – someone

+0

आपका कंपाइलर क्या है? – nouney

0

From this handy page:

अगले भाग मैं उल्लेख करना चाहते .plt खंड है। इसमें जंप टेबल होती है जिसका उपयोग तब किया जाता है जब हम साझा लाइब्रेरी में फ़ंक्शन कॉल करते हैं।

और from this page:

.fini

यह खंड निष्पादन योग्य निर्देश है कि इस प्रक्रिया समाप्ति कोड में योगदान रखती है। यही है, जब कोई प्रोग्राम सामान्य रूप से बाहर निकलता है, तो सिस्टम इस खंड में कोड निष्पादित करने की व्यवस्था करता है।

0

आपको यह संक्षिप्त ट्यूटोरियल उपयोगी मिल सकता है। इसमें संबंधित साहित्य के लिंक भी शामिल हैं।

"लिंकर demystified, भाग 1": http://www.rtos.be/?p=2166

मुझे आशा है कि यह मदद करता है।

फर्नांडो

संबंधित मुद्दे