LLVM டெவலப்பர்கள் C++ இல் பாதுகாப்பான இடையக கையாளுதலை முன்மொழிகின்றனர்

LLVM லோகோ

LLVM என்பது கம்பைலர்களை உருவாக்குவதற்கும் புதிய நிரலாக்க மொழிகளை உருவாக்குவதற்கும் ஏற்கனவே உள்ள மொழிகளை மேம்படுத்துவதற்கும் உதவும் ஒரு கட்டமைப்பாகும்.

தி LLVM திட்டத்தின் உருவாக்குநர்கள் பாதுகாப்பை வலுப்படுத்தும் நோக்கில் பல மாற்றங்களை முன்மொழிந்தனர் திட்டங்களின் சி ++ பணி முக்கியமானது மற்றும் இடையக மீறல்களால் ஏற்படும் பிழைகளை அகற்றுவதற்கான வழிமுறையை வழங்குகிறது.

எனவே, அவர்கள் வெளியிட்ட முன்மொழிவு குறிப்பாக இரண்டு பகுதிகளில் வேலை செய்வதில் கவனம் செலுத்துகிறது: பஃபர்களுடன் பாதுகாப்பாக வேலை செய்ய அனுமதிக்கும் வளர்ச்சி மாதிரியை வழங்குதல் மற்றும் libc++ நிலையான செயல்பாட்டு நூலகத்தின் பாதுகாப்பை வலுப்படுத்துதல்.

C++ க்கான முன்மொழியப்பட்ட பாதுகாப்பான நிரலாக்க மாதிரி குறிப்பிடப்பட்டுள்ளது.மூல சுட்டிகளை கையாளுவதற்கு பதிலாக இடையகங்களுடன் பணிபுரியும் போது நிலையான நூலகத்தால் வழங்கப்படும் வகுப்புகளைப் பயன்படுத்துவதாகும்». எடுத்துக்காட்டாக, std::array, std::vector, and std::span வகுப்புகளைப் பயன்படுத்த முன்மொழியப்பட்டுள்ளது, இது வரம்புக்கு வெளியே ஒதுக்கப்பட்ட நினைவகத்திற்கான இயக்க நேரச் சரிபார்ப்புடன் சேர்க்கப்படும்.

முக்கியமான C++ குறியீடு தளங்களின் பாதுகாப்பை மேம்படுத்துவதே எங்கள் குறிக்கோள். இதற்காக நாங்கள் இரண்டு யோசனைகளில் வேலை செய்ய திட்டமிட்டுள்ளோம்.

கடினப்படுத்தப்பட்ட C++ தரநிலை நூலகம்
C++ பாதுகாப்பான இடையக நிரலாக்க மாதிரி மற்றும் தத்தெடுப்பு கருவிகள்
கடினப்படுத்தப்பட்ட libc++ ஆனது C++ நிலையான நூலக இடைமுகங்களை பொதுவாக மிகவும் பாதுகாப்பானதாக மாற்றும் நோக்கம் கொண்டது.

C++ இன் பாதுகாப்பான இடையக நிரலாக்க மாதிரி மற்றும் கடினப்படுத்தப்பட்ட libc++ ஆனது வரம்புக்கு அப்பாற்பட்ட நினைவக அணுகலின் இயக்க நேரத் தணிப்பை வழங்குகிறது. தத்தெடுப்பு கருவிகள் இந்த புதிய நிரலாக்க மாதிரிக்கு குறியீட்டை நகர்த்துவதை தானியங்குபடுத்தும்.

இதுதவிர, என்றும் அதில் குறிப்பிடப்பட்டுள்ளது "ஆபத்தான" நிரலாக்க நடைமுறைகளை எதிர்த்துப் போராட கணகண வென்ற சப்தம், என்றால் அனைத்து சுட்டி எண்கணித செயல்பாடுகளுக்கும் கம்பைலர் எச்சரிக்கைகளை வழங்க முன்மொழிகிறது, "cppcoreguidelines-pro-bounds-pointer-arithmetic" கொடியைப் பயன்படுத்தும் போது, ​​clang-tidy linter எச்சரிக்கைகளைப் போலவே, LLVM 16 இல் அதற்கான ஆதரவு தோன்றும். அத்தகைய எச்சரிக்கைகளை இயக்க, ஒரு தனிக் கொடியானது clang இல் சேர்க்கப்படும், இயல்பாக செயலற்றது. .

இது libc++ இல் விருப்ப பாதுகாப்பு பயன்முறையை செயல்படுத்த திட்டமிடப்பட்டுள்ளது, இயக்கப்படும் போது, ​​இயக்க நேரத்தில் வரையறுக்கப்படாத நடத்தைக்கு வழிவகுக்கும் சில சூழ்நிலைகளைக் கண்டறியும். உதாரணமாக, வகுப்புகளில் std::span மற்றும் std::vector, ஒரு எல்லைக்கு அப்பாற்பட்ட அணுகல் கண்காணிக்கப்படும், இதில் நிரல் தோல்வியடையும்.

இந்த கூடுதல் இயக்க நேர சோதனைகள் தனித்தனியாகக் கட்டுப்படுத்தக்கூடிய பல வகைகளாகப் பிரிக்கப்படும். நோக்கம் என்னவென்றால், ஷிப்பிங் லைப்ரரியில் (ஏதேனும் இருந்தால்) எந்தச் சரிபார்ப்புகளை இயக்க வேண்டும் என்பதைத் தங்கள் தளத்தில் உள்ள ஒரு விற்பனையாளர் ஷிப்பிங் libc++ தீர்மானிக்க முடியும்.

இத்தகைய மாற்றங்களைச் சேர்ப்பது, சி++ தரநிலைகளுடன் libc++ இணக்கமாக இருக்கும் என டெவலப்பர்கள் நம்புகின்றனர், ஏனெனில் வரையறுக்கப்படாத நடத்தையை எவ்வாறு கையாள்வது என்பது நூலக மேம்பாட்டாளர்களிடமே உள்ளது, மற்றவற்றுடன், வரையறுக்கப்படாத நடத்தையை நிரல் தேவைப்படும் பூட்டாகக் கருதலாம். வெளியேறு.

தி libc++ இல் இயக்க நேர சோதனைகள் வகைகளாக பிரிக்க திட்டமிடப்பட்டுள்ளது தனித்தனியாக சேர்க்க முடியும். மிகவும் சிக்கலான செயல்பாடுகள் அல்லது ABI மாற்றங்கள் ஏற்படாத சில பரிந்துரைக்கப்பட்ட காசோலைகள் ஏற்கனவே libc++ இன் பாதுகாப்பான பயன்முறையில் (பாதுகாப்பான பயன்முறையில்) செயல்படுத்தப்பட்டுள்ளன.

மீண்டும் வலியுறுத்த, அனுப்பப்பட்ட நூலகம் உற்பத்தியில் இந்த சோதனைகளை செயல்படுத்துவதே இறுதி இலக்கு; இது "பிழைத்திருத்தம் மட்டும்" அம்சம் அல்ல, இருப்பினும் இது நீண்ட காலமாக உடைந்த "பிழைத்திருத்த பயன்முறையை" மாற்றிவிடும்.

கூடுதலாக, குறியீடு திருத்தும் கருவிகளின் தொகுப்பைத் தயாரிக்க திட்டமிடப்பட்டுள்ளது கன்டெய்னர்களில் மூல சுட்டிகளால் மாறிகளை மாற்றவும் மற்றும் கொள்கலன் நேரடியாக சுட்டிக்காட்டியை மாற்ற முடியாத சூழ்நிலைகளில் மாற்று கையாளுதல்களைப் பயன்படுத்தவும் அனுமதிக்கும் (உதாரணமாக, "if(array_pointer)" கட்டமைப்பை "if(span.data) ஆக மாற்றலாம் )»).உள்ளூர் மாறிகளுக்கு மட்டுமின்றி, சுட்டிகளுடன் அளவுருக்களை தட்டச்சு செய்வதற்கும் அமைப்புகளைப் பயன்படுத்தலாம்.

என்றும் குறிப்பிடப்பட்டுள்ளது "கிளாங் ஸ்டேடிக் அனலைசர் செக்கரை" பரிசீலிக்கிறோம் என்றால் எச்சரிக்கும் வழி உணர்திறன் std::span ஸ்பானின் கன்ஸ்ட்ரக்டரில் குறிப்பிடப்பட்டுள்ள அளவை விட சிறிய கொள்கலனில் இருந்து கட்டப்பட்டது. கூறப்பட்ட சரிபார்ப்பு தன்னிச்சையானது மற்றும் தானாகவே பயனுள்ளதாக இருக்கும், எல்லாம் சரியாக நடந்தால், எல்லா பயனர்களுக்கும் இது இயல்பாகவே இயக்கப்படும்.

இறுதியாக நீங்கள் அதைப் பற்றி மேலும் அறிய ஆர்வமாக இருந்தால், நீங்கள் விவரங்களை சரிபார்க்கலாம் பின்வரும் இணைப்பு.


உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுகளுக்குப் பொறுப்பு: AB இன்டர்நெட் நெட்வொர்க்ஸ் 2008 SL
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.