2013-01-05 8 views
9

gcc -s और यूनिक्स strip निकालें एक निष्पादन से सभी प्रतीक मेज और स्थानांतरण जानकारी का उपयोग कर संकलन (यह आकार में छोटा करने)।निष्पादन योग्य से सभी प्रतीक तालिका और स्थानांतरण जानकारी को हटाने का प्रभाव?

क्या यह कभी भी निष्पादन योग्य के कामकाज को प्रभावित कर सकता है? कुछ ऑपरेटिंग सिस्टम जो ASLR को इस जानकारी की आवश्यकता है? यदि नहीं, तो उन्हें पहले स्थान पर क्यों रखें?

थोड़ा-विस्तृत उपरोक्त का अवलोकन उपयोगी होगा।

+1

मुझे यकीन नहीं है कि कोई भी आधुनिक 'स्ट्रिप' स्थानान्तरण जानकारी को हटा देगा। क्या आप अन्यथा सोचते हैं? – NPE

+0

@NPE 'gcc -s ' और 'gcc ' + स्ट्रिप' ने सटीक समान आकार के निष्पादन योग्य को जन्म दिया, इसलिए मुझे लगता है कि वे वही कर रहे थे। लेकिन आप सही हैं, यह स्थानान्तरण जानकारी को नहीं हटाता है। –

+0

देखें [यह सवाल] (http://stackoverflow.com/questions/2463150/fpie-position-independent-executable-option-gcc-ld)। एफपीआईई (और एफपीआईसी) कोड को इसके स्थान को हार्डकोड करने की आवश्यकता नहीं है, इसलिए इसे किसी भी स्थानांतरण स्थान की आवश्यकता नहीं है। –

उत्तर

4

ऐसा लगता है कि स्थानांतरण स्थान को हटाने से एएसएलआर में हस्तक्षेप होगा।

हालांकि, मैंने अपने कुछ सिस्टम पर man strip पर एक नज़र डाली है, और उनमें से कोई भी सुझाव नहीं देता है कि strip स्थानान्तरण जानकारी को हटाता है (या वास्तव में कर सकता है?) यह मुख्य रूप से डिबगिंग प्रतीकों को हटाने के बारे में है।

+0

आप वहीं हैं। दूसरी तरफ 'जीसीसी-एस', बाइनरी में स्थानान्तरण जानकारी नहीं जोड़ पाएगी। स्थानान्तरण तालिका सही मायने रखती है? यह ध्यान में रखते हुए कि ईएलएफ लोड होने के समय इसका उपयोग करता है। –

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