Jump to content

ක්‍රියාත්මක කළ හැකි සහ සම්බන්ධ කළ හැකි ආකෘතිය (ELF)

විකිපීඩියා වෙතින්
ELF
දිගුවnone, .axf, .bin, .elf, .o, .prx, .puff, .ko, .mod and .so
අපූර්ව ඉලක්කම0x7F 'E' 'L' 'F'
දියුණුකරන ලද්දේUnix System Laboratories[1]:3
ආකෘතියේ වර්ගයBinary, executable, object, shared library, core dump
කන්ටේනරය සදහාMany executable binary formats
ELF ගොනුවකට දෘෂ්ටි දෙකක් ඇත: වැඩසටහන් ශීර්ෂකය විසින් ක්‍රියාත්මක කල යුතු වගන්තිය පෙන්වන අතර, වගන්ති ශීර්ෂකය විසින් ගොනුව තුල අඩංගු වගන්ති පෙන්වයි.

පරිගණකයේදී, ධාවනය කළ හැකි ලිපිගොනු, වස්තු කේත, හවුල් පුස්තකාල සහ හරය බැහැරකිරීම් සඳහා ක්‍රියාත්මක කළ හැකි සහ සම්බන්ධ කළ හැකි ආකෘතිය[2] (ELF, කලින් හැඳින්වූයේ දිගු කළ හැකි සම්බන්ධක ආකෘතිය) පොදු ලෙස භාවිතා කරන ගොනු ආකෘතියකි. යුනික්ස් මෙහෙයුම් පද්ධති අනුවාදයේ System V Release 4 (SVR4) නම් වූ පද්ධතියේ යෙදුම් ද්වීමය අතුරුමුහුණත (ABI, Application Binary Interface) සඳහා වූ පිරිවිතරයන් තුළ මෙය මුලින්ම ප්‍රකාශයට පත් කළේය.[3] පසුව මෙවලම් අතුරුමුහුණත් සම්මතයේදී[1] විවිධ යුනික්ස් පද්ධති අලෙවිකරුවන් අතර ඉක්මනින් පිළිගන්නා ලදී. 1999 දී, 86open ව්‍යාපෘතිය මඟින් x86 ප්‍රොසෙසර වල යුනික්ස් සහ යුනික්ස්-වැනි පද්ධති සඳහා වූ සම්මත ද්විමය ගොනු ආකෘතිය ලෙස එය තෝරා ගන්නා ලදී.

සැලසුම අනුව, ELF ආකෘතිය නම්‍යශීලී, දිගු කළ හැකි සහ හරස් වේදිකාවේ. නිදසුනක් වශයෙන්, එය විවිධ අන්තයන් සහ ලිපිනයන් ප්‍රමාණවලට සහය දක්වන බැවින් එය කිසිදු විශේෂිත මධ්‍ය සැකසුම් ඒකකයක් (CPU) හෝ උපදෙස් මාලා නිර්මාණ ශිල්පයක් බැහැර නොකරයි. මේ නිසාම, විවිධ දෘඩාංග වේදිකා මත පවතින විවිධ මෙහෙයුම් පද්ධති මඟින් එය සම්මත කර ඇත.

ගොනු සැකැස්ම

[සංස්කරණය]

සෑම ELF ගොනුවක්ම එක් ELF ශීර්ෂකයකින් සෑදී ඇති අතර පසුව ගොනු දත්ත වලින් සමන්විත වේ. දත්ත ඇතුළත් විය හැකි ආකාරය:

  • වැඩසටහන් ශීර්ෂ වගුව, ශුන්‍ය හෝ වැඩි මතක අංශ විස්තර කරයි
  • වගන්ති ශීර්ෂ වගුව, ශුන්‍ය හෝ වැඩි වගන්ති කොටස් විස්තර කරයි
  • වැඩසටහන් ශීර්ෂ වගුව හෝ වගන්ති ශීර්ෂ වගුව මඟින් සඳහන් දත්ත
ඉස්මතු කර දැක්වූ ප්‍රධාන ඇතුළත් කිරීම් සහිත ELF ගොනුවක ව්‍යුහය

ගොනුවේ ධාවන කාල ක්‍රියාත්මක කිරීම සඳහා අවශ්‍ය තොරතුරු අංශ (segments) වල අඩංගු වන අතර, සම්බන්ධ කිරීම හා නැවත ස්ථානගත කිරීම සඳහා වැදගත් තොරතුරු වගන්ති වල අඩංගු වේ. ගොනුවේ ඇති එක් බයිටයක්, උපරිම ලෙස වගන්ති එකකට හිමිවිය හැකි අතර, අනාත බයිට කිසිදු වගන්තියකටවත් හිමි නොවී භාවිත කළ හැක.

ගොනු ශීර්ෂකය

[සංස්කරණය]

ELF ශීර්ෂකය මඟින් බිට් 32 හෝ 64 ලිපිනයන් භාවිතා කළ යුතුද යන්න ප්‍රකාශ කරයි. ශීර්ෂකයෙහි මෙම සැකැස්ම මඟින් බලපාන ක්ෂේත්‍ර තුනක් අඩංගු වන අතර ඒවා අනුගමනය කරන අනෙකුත් ක්ෂේත්‍රයන්හි ආරම්භය තීරනය කරයි. ELF ශීර්ෂකය 32-බිට් සඳහා බයිට් 52 සහ 64-බිට් සඳහා බයිට් 64 ක් දිගයි.

ELF ශීර්ෂකය
ආරම්භය ප්‍රමාණය (බයිට්) ක්ෂේත්රය අරමුණ
32-බිටු 64-බිටු 32-බිටු 64-බිටු
0x00 4 e_ident[EI_MAG0] through e_ident[EI_MAG3] 0x7F ට පසුව ELF(45 4c 46) ASCII වලින්; මෙය මායා අංකය වේ.
0x04 1 e_ident[EI_CLASS] මෙම බයිටය 1 නම 32-බිටු ලෙසත් 2 නම් 64-බිටු ලෙසත් සැලකේ.
0x05 1 e_ident[EI_DATA] කුඩා හො විශාල අන්තයක් ද යන්න පිලිවෙලින් 1 හො 2 න් නිරූපනය කරයි. මෙය 0x10න් ආරම්භ වන බහු-බයිට ක්ෂේත්‍ර අර්ථ නිරූපණයට බලපායි.
0x06 1 e_ident[EI_VERSION] ELF හි මුල් සහ වර්තමාන අනුවාදය සඳහා 1 ලෙස සකසයි.
0x07 1 e_ident[EI_OSABI] මෙහෙයුම් පද්ධති ABI හදුන්වයි.
Value ABI
0x00 System V
0x01 HP-UX
0x02 NetBSD
0x03 Linux
0x04 GNU Hurd
0x06 Solaris
0x07 AIX
0x08 IRIX
0x09 FreeBSD
0x0A Tru64
0x0B Novell Modesto
0x0C OpenBSD
0x0D OpenVMS
0x0E NonStop Kernel
0x0F AROS
0x10 Fenix OS
0x11 CloudABI
0x12 Stratus Technologies OpenVOS

ඉලක්ක ගත වේදිකාව නොසලකා එය බොහෝ විට 0 ලෙස සකසා ඇත.[තහවුරු කර නොමැත]

0x08 1 e_ident[EI_ABIVERSION] ABI අනුවාදය තවදුරටත් සඳහන් කරයි. එහි අර්ථ නිරූපණය රඳා පවතින්නේ ඉලක්කගත ABI මත ය. ලිනක්ස් කර්නලය (අවම වශයෙන් 2.6 ට පසුව) තුල කිසිදු අර්ථ දැක්වීමක් නොමැත. එනිසා එය ස්ථිතිකව-සම්බන්ධිත ක්‍රියාත්මක කිරීම් නොසලකා හරිනු ඇත. එම නිසා EI_PAD හි ආරම්භය සහ ප්‍රමාණය 8 වේ.

e_ident[EI_OSABI] == 3 වු glibc 2.12+ හි මෙම ක්ෂේත්‍රය ගතික සම්බන්ධකයේ ABI සංස්කරණය ලෙස සලකයි: එය ගතික සම්බන්ධක කරවීමේ විශේෂාංග ලැයිස්තුවක් නිර්වචනය කරයි,

මෙය e_ident[EI_ABIVERSION] සඳහා හවුල් වස්තුව (ක්රියාත්මක කළ හැකි හෝ ගතික පුස්තකාලය) විසින් ඉල්ලන විශේෂාංග මට්ටම ලෙස සලකයි. තවද නොදන්නා විශේෂාංගයක් ඉල්ලූ විට එය පූරණය කිරීම ප්‍රතික්ෂේප කරයි, උදා: e_ident[EI_ABIVERSION] විශාලයි දන්නා විශාලම විශේෂාංගයට වඩා.

0x09 7 e_ident[EI_PAD] දැනට භාවිතයට නොගනී, ශුන්‍ය වලින් පුරවා ඇත.
0x10 2 e_type වස්තු ගොනු වර්ගය හඳුන්වයි.
Value Type
0x00 ET_NONE
0x01 ET_REL
0x02 ET_EXEC
0x03 ET_DYN
0x04 ET_CORE
0xFE00 ET_LOOS
0xFEFF ET_HIOS
0xFF00 ET_LOPROC
0xFFFF ET_HIPROC
0x12 2 e_machine ඉලක්කගත උපදෙස් සැකසුම් නිර්මාණ ශිල්පය සඳහන් කරයි. උදාහරණ:
Value ISA
0x00 No specific instruction set
0x01 AT&T WE 32100
0x02 SPARC
0x03 x86
0x04 Motorola 68000 (M68k)
0x05 Motorola 88000 (M88k)
0x06 Intel MCU
0x07 Intel 80860
0x08 MIPS
0x09 IBM_System/370
0x0A MIPS RS3000 Little-endian
0x0B - 0x0D Reserved for future use
0x0E Hewlett-Packard PA-RISC
0x0F Reserved for future use
0x13 Intel 80960
0x14 PowerPC
0x15 PowerPC (64-bit)
0x16 S390, including S390x
0x17 IBM SPU/SPC
0x18 - 0x23 Reserved for future use
0x24 NEC V800
0x25 Fujitsu FR20
0x26 TRW RH-32
0x27 Motorola RCE
0x28 ARM (up to ARMv7/Aarch32)
0x29 Digital Alpha
0x2A SuperH
0x2B SPARC Version 9
0x2C Siemens TriCore embedded processor
0x2D Argonaut RISC Core
0x2E Hitachi H8/300
0x2F Hitachi H8/300H
0x30 Hitachi H8S
0x31 Hitachi H8/500
0x32 IA-64
0x33 Stanford MIPS-X
0x34 Motorola ColdFire
0x35 Motorola M68HC12
0x36 Fujitsu MMA Multimedia Accelerator
0x37 Siemens PCP
0x38 Sony nCPU embedded RISC processor
0x39 Denso NDR1 microprocessor
0x3A Motorola Star*Core processor
0x3B Toyota ME16 processor
0x3C STMicroelectronics ST100 processor
0x3D Advanced Logic Corp. TinyJ embedded processor family
0x3E AMD x86-64
0x8C TMS320C6000 Family
0xAF MCST Elbrus e2k
0xB7 ARM 64-bits (ARMv8/Aarch64)
0xF3 RISC-V
0xF7 Berkeley Packet Filter
0x101 WDC 65C816
0x14 4 e_version මුල් ELF අනුවාද සඳහා 1 යොදයි.
0x18 4 8 e_entry ක්‍රියාවලිය ක්‍රියාත්මක වීමට පටන් ගත් ස්ථානයේ සිට පිවිසුම් ස්ථානයේ මතක ලිපිනය මෙයයි. කලින් නිර්වචනය කළ ආකෘතිය අනුව මෙම ක්ෂේත්‍රය බිට් 32 හෝ 64 දිගය.
0x1C 0x20 4 8 e_phoff වැඩසටහන් වගුව ආරම්භවන ස්ථානය පෙන්නුම් කරයි. සමානයෙන් ගොනු ශීර්ෂය පසුව ආර්ම්භය 32-බිටු සඳහා 0x34 හො 64-බිටු සඳහා 0x40 ලෙස පවති.
0x20 0x28 4 8 e_shoff අංශ ශීර්ෂක වගුවේ අරම්භය නිරූපනය වේ.
0x24 0x30 4 e_flags මෙම ක්ෂේත්රයේ අර්ථ නිරූපණය ඉලක්ක කරගත් නිර්මාණ ශිල්පය මත රඳා පවතී.
0x28 0x34 2 e_ehsize මෙම ශීර්ෂකයේ ප්‍රමාණය, සාමාන්‍යයෙන් 64-බිට් සඳහා බයිට් 64 ක් සහ 32-බිට් ආකෘතිය සඳහා බයිට් 52 ක් අඩංගු වේ.
0x2A 0x36 2 e_phentsize වැඩසටහන් ශීර්ෂක වගු කොටසේ ප්‍රමාණය අඩංගුවේ.
0x2C 0x38 2 e_phnum වැඩසටහන් ශීර්ෂක වගුව තුල අඩංගු කොටස් ගණන දක්වයි.
0x2E 0x3A 2 e_shentsize අංශ ශීර්ෂක වගු කොටසේ ප්‍රමාණය අඩංගුවේ.
0x30 0x3C 2 e_shnum අංශ ශීර්ෂක වගුව තුල අඩංගු කොටස් ගණන දක්වයි.
0x32 0x3E 2 e_shstrndx අංශවල නම් දැක්වෙන අංශ ශීර්ෂක කොටසේ දර්ශකය අඩංගුවේ.
0x34 0x40 ELF ශීර්ෂක අවසානය (ප්‍රමාණය)

වැඩසටහන් ශීර්ෂකය

[සංස්කරණය]

ක්‍රමලේඛ රූප සටහනක් සාදා ගන්නා ආකාරය, ශීර්ෂ වගුව මඟින් පද්ධතියට පවසයි. එය ගොනුවේ e_phoff හි දක්නට ලැබේ, සහ e_phentsize ප්‍රමාණයෙන් යුත් e_phnum පිවිසුම් වලින් සමන්විත වේ. 32-bit ELF එදිරිව 64-bit ELF වල පිරිසැලසුම තරමක් වෙනස් ය, මන්ද පෙළගැස්වීමේ හේතු මත p_flags වෙනස් ව්‍යුහාත්මක ස්ථානයක ඇත. සෑම ඇතුළත් පිවිසුමක්ම ව්‍යුහගත කර ඇත්තේ:

වැඩසටහන් ශීර්ෂකය[4]
ආරම්භය ප්‍රමාණය (බයිට්) ක්ෂේත්රය අරමුණ
32-බිටු 64-බිටු 32-බිටු 64-බිටු
0x00 4 p_type අංශ වර්ගය හදුන්වයි..
අගය නම තේරුම
0x00000000 PT_NULL වැඩසටහන් ශීර්ෂක ගොනුව භාවිත නොකරයි.
0x00000001 PT_LOAD පැටවීය හැකි අංශ
0x00000002 PT_DYNAMIC ගතික සම්බන්ධක තොරතුරු.
0x00000003 PT_INTERP පරිවර්තක තොරතුරු.
0x00000004 PT_NOTE සහායක තොරතුරු.
0x00000005 PT_SHLIB වෙන් කර ඇත.
0x00000006 PT_PHDR අංශය තුල වැඩසටහන් ශීර්ෂක ගොනුවක් ඇත.
0x00000007 PT_TLS ත්‍රෙඩ්-දේශීය ගබඩා සැකිල්ල
0x60000000 PT_LOOS ඇතුළත්ව වෙන් කර ඇති පරාසය. මෙහෙයුම් පද්ධති සඳහන්ව.
0x6FFFFFFF PT_HIOS
0x70000000 PT_LOPROC ඇතුළත්ව වෙන් කර ඇති පරාසය. සකසනය සඳහන්ව.
0x7FFFFFFF PT_HIPROC
0x04 4 p_flags අංශ මත යැපෙන කොඩි (64-බිට් ව්‍යුහය සඳහා පිහිටීම).
0x04 0x08 4 8 p_offset ගොනු රූපයේ අංශයේ ආරම්භය.
0x08 0x10 4 8 p_vaddr මතකයේ ඇති අංශයේ අතථ්‍ය ලිපිනය.
0x0C 0x18 4 8 p_paddr භෞතික ලිපිනය අදාළ පද්ධති වල, අංශයේ භෞතික ලිපිනය සඳහා වෙන් කර ඇත.
0x10 0x20 4 8 p_filesz ගොනු රූපයේ අංශයේ ප්‍රමාණය බයිට් වලින්. සමහර විට 0 විය හැක.
0x14 0x28 4 8 p_memsz මතකයේ ඇති අංශයේ ප්‍රමාණය බයිට් වලින්. සමහර විට 0 විය හැක.
0x18 4 p_flags අංශ මත යැපෙන කොඩි (32-බිට් ව්‍යුහය සඳහා පිහිටීම).
0x1C 0x30 4 8 p_align පිලිවෙල නැති බව 0 හා 1 මගින් දක්වයි, නැත්නම් එය ධනාත්මක ඒකාබද්ධවූ 2 බලයක් හා p_vaddr සමාන p_offset මොඩියුලස් p_align විය යුතුය.
0x20 0x38 වැඩසටහන් ශීර්ෂක අවසානය (ප්‍රමාණය).

අංශ ශීර්ෂකය

[සංස්කරණය]
ආරම්භය ප්‍රමාණය (බයිට්) ක්ෂේත්රය අරමුණ
32-බිටු 64-බිටු 32-බිටු 64-බිටු
0x00 4 sh_name මෙම අංශයේ නම නියෝජනය කරන .shstrtab අංශයේ string එකක ආරම්භය.
0x04 4 sh_type මෙම ශීර්ෂයේ වර්ගය හදුන්වයි.
අගය නම තේරුම
0x0 SHT_NULL අංශ ශීර්ෂක ගොනුව භාවිත නොකරයි.
0x1 SHT_PROGBITS වැඩසටහන් දත්ත
0x2 SHT_SYMTAB සංකේත වගුව
0x3 SHT_STRTAB String වගුව
0x4 SHT_RELA එකතු කිරීම් සමඟ නැවත ස්ථාන මාරු ඇතුළත් කිරීම්
0x5 SHT_HASH සංකේත hash වගුව
0x6 SHT_DYNAMIC ගතික සම්බන්ධක තොරතුරු
0x7 SHT_NOTE සටහන්
0x8 SHT_NOBITS දත්ත නොමැති වැඩසටහන් අවකාශය (bss)
0x9 SHT_REL නැවත ස්ථාන මාරු කිරීම් ඇතුළත්, එකතු කිරීම් නොමැත
0x0A SHT_SHLIB වෙන් කර ඇත
0x0B SHT_DYNSYM ගතික සම්බන්ධක සංකේත වගුව
0x0E SHT_INIT_ARRAY ඉදිකිරීම්කරුවන්ගේ පෙළ
0x0F SHT_FINI_ARRAY විනාශ කරන්නන්ගේ පෙළ
0x10 SHT_PREINIT_ARRAY පෙර-ඉදිකිරීම්කරුවන්ගේ පෙළ
0x11 SHT_GROUP අංශ සමූහ
0x12 SHT_SYMTAB_SHNDX දිගු කළ අංශ දර්ශක
0x13 SHT_NUM නිර්වචනය කර ඇති ප්‍රභේද ගණන.
0x60000000 SHT_LOOS මෙහෙයුම් පද්ධති විශේෂිත ආරම්භ කිරීම්.
... ... ...
0x08 4 8 sh_flags අංශයේ ගුණාංග හදුන්වයි.
අගය නම තේරුම
0x1 SHF_WRITE ලිවිය හැකි
0x2 SHF_ALLOC ක්‍රියාත්මක කිරීමේදී මතකය අත්පත් කර ගනී
0x4 SHF_EXECINSTR ක්‍රියාත්මක කළ හැකි
0x10 SHF_MERGE ඒකාබද්ධ වීමට ඉඩ ඇත
0x20 SHF_STRINGS null-terminated strings අඩංගුවේ
0x40 SHF_INFO_LINK 'sh_info' හි SHT දර්ශකය අඩංගු වේ
0x80 SHF_LINK_ORDER ඒකාබද්ධ කිරීමෙන් පසු ඇණවුම සුරකින්න
0x100 SHF_OS_NONCONFORMING සම්මත නොවන මෙහෙයුම් පද්ධති, විශේෂිත හැසිරවීම අවශ්‍යයි
0x200 SHF_GROUP අංශය කණ්ඩායමක සාමාජිකයෙකි
0x400 SHF_TLS අංශය ත්‍රෙඩ්-දේශීය දත්ත උසුලයි
0x0ff00000 SHF_MASKOS විශේෂිත මෙහෙයුම් පද්ධති
0xf0000000 SHF_MASKPROC විශේෂිත සකසන
0x4000000 SHF_ORDERED විශේෂ ඇණවුම් අවශ්‍යතාවය (සොලාරිස්)
0x8000000 SHF_EXCLUDE යොමු කර හෝ වෙන් නොකළහොත් අංශය බැහැර කෙරේ (සොලාරිස්)
0x0C 0x10 4 8 sh_addr පටවා ඇති අංශ සඳහා මතකයේ අංශ අතථ්‍ය ලිපිනය.
0x10 0x18 4 8 sh_offset ගොනු රූපයේ අංශයේ ආරම්භය.
0x14 0x20 4 8 sh_size ගොනු රූපයේ අංශයේ ප්‍රමාණය බයිට්වලින්. සමහරවිට 0 විය හැක.
0x18 0x28 4 sh_link ආශ්‍රිත අංශයක අංශක දර්ශකය අඩංගු වේ. අංශ වර්ගය මත පදනම්ව මෙම ක්ෂේත්‍රය අරමුණු කිහිපයක් සඳහා භාවිතා කෙරේ.
0x1C 0x2C 4 sh_info අංශය පිලිබද අමතර තොරතුරු අඩංගුවේ. ආශ්‍රිත අංශයක අංශක දර්ශකය අඩංගු වේ. අංශ වර්ගය මත පදනම්ව මෙම ක්ෂේත්‍රය අරමුණු කිහිපයක් සඳහා භාවිතා කෙරේ
0x20 0x30 4 8 sh_addralign අංශයට අවශය පිලිවෙල සඳහන් වේ. මෙය දෙකෙහි බලයක් විය යුතුය.
0x24 0x38 4 8 sh_entsize ස්ථාවර ප්‍රමාණයේ ඇතුළත් කිරීම් අඩංගු අංශ සඳහා එක් එක් වගන්තියේ ප්‍රමාණය බයිට් වලින් සදහන් වේ. නැත්නම් මෙය 0ක් වේ.
0x28 0x40 අංශ ශීර්ෂයේ අවසානය (ප්‍රමාණය)

මෙවලම්

[සංස්කරණය]
  • readelf යනු Unix ද්විමය මෙවලම්ක් වන අතර එය ELF ගොනු එකක් හෝ කිහිපයක් පිළිබඳ තොරතුරු පෙන්වයි. GNU Binutils විසින් සපයන තවත් නොමිලේ මෘදුකාංගයක් වේ.
  • elfutils පිවිතුරුව ලිනක්ස් සඳහා GNU Binutils විකල්ප මෙවලමක් වේ.
  • elfdump යනු Solaris සහ FreeBSD යටතේ ලබා ගත හැක සඳහා ELF ගොනුවේ ELF තොරතුරු නිරික්සීම සඳහා විධානයකි.
  • objdump මඟින් ELF ලිපි ගොනු සහ අනෙකුත් වස්තු ආකෘති පිළිබඳව පුළුල් පරාසයක තොරතුරු සපයයි. objdump සඳහා පසුබිම් ලෙස ද්විමය ගොනු විස්තර කිරීමේ පුස්තකාලය භාවිතා කරයි.
  • යුනික්ස් file උපයෝගීතාවයට ELF ලිපිගොනු පිළිබඳ යම් තොරතුරු ප්‍රදර්ශනය කළ හැකිය, උපදෙස් මාලාව ඇතුළුව, ක්‍රියාත්මක කළ හැකි ද හෝ හවුල් වස්තු ගොනුවක කේතයක් භාවිතා කිරීමට ද හෝ කුමන ELF හරය බැහැරකිරීමක් සිදුවූවාද යන්න.

වැඩසටහන්

[සංස්කරණය]

යුනික්ස්-වැනි පද්ධති

[සංස්කරණය]

විවිධ පරිසරයන්හි තිබූ පැරණි ආකෘති වෙනුවට ELF ආකෘතිය ප්‍රතිස්ථාපනය කර ඇත. එය යුනික්ස්-වැනි මෙහෙයුම් පද්ධති වල a.out සහ COFF ආකෘතීන් ප්‍රතිස්ථාපනය කර ඇත:

යුනික්ස් නොවූ ඇතුලත් කරගැනීම්

[සංස්කරණය]

යුනික්ස් නොවන මෙහෙයුම් පද්ධති තුල ද ELF ඇතුලත් කරගැනීම් දක්නට ඇත, ඒවා නම්:

ක්‍රීඩා කොන්සෝල

[සංස්කරණය]

සමහර ක්‍රීඩා කොන්සෝල වල ELF ද භාවිතා කරයි:

පවර්පීසී

[සංස්කරණය]

ELF භාවිතා කරන, පවර්පීසී හි ක්‍රියාත්මක වන අනෙකුත් (මෙහෙයුම්) පද්ධති:

ජංගම දුරකථන

[සංස්කරණය]

ජංගම දුරකථන සහ ජංගම උපාංග සඳහා වූ සමහර මෙහෙයුම් පද්ධති ELF භාවිතා කරයි:

සමහර දුරකතන සඳහා ස්ථිරාංගයට ඇසෙම්බලි කේතයක් දමා පැච් කළ පසු ELF ගොනු භාවිත කල හැක. මෙම ක්‍රමය ELFPack ලෙස හදුන්වන අතර මෙය භූගත වෙනස් කිරීමේ සංස්කෘතියට අයත්වේ. ඇට්මෙල් AVR (8-bit), AVR32[8] සහ ටෙක්සාස් උපකරණ MSP430 වැනි ක්‍ෂුද්‍ර පාලක තුලද ELF ආකෘතිය භාවිත කර ඇත. සමහර විවෘත ස්ථිරාංග සඳහා වු බද්ධ කිරීම් මගින් ද ELF ගොනු භාවිත කළ හැක, විශේෂයෙන් කැපී පෙනෙන ලෙස ඇපල් සමාගම විසින් නිෂ්පාදනය කරන ලද පවර්පීසී යන්ත්‍ර සියල්ලම පාහේ භාවිතා කරන ලදී..

පිරිවිතර

[සංස්කරණය]

ලිනක්ස් සම්මත පදනම (LSB) එය නිශ්චිතව දක්වා ඇති නිර්මාණ ශිල්ප සමහරක් සඳහා ඉහත සඳහන් පිරිවිතරයන් පරිපූරණය කරයි. උදාහරණයක් ලෙස, System V ABI, AMD64 අතිරේකය සඳහා ද එය සිදු වේ.

86open යනු මෘදුකාංග සංවර්ධකයින් x86 නිර්මාණ ශිල්පයට දිරිමත් කරවීම සඳහා එම නිර්මාණ ශිල්පය සහිත පොදු පරිගණක තුල යුනික්ස් සහ යුනික්ස්-වැනි මෙහෙයුම් පද්ධති සඳහා පොදු ද්විමය ගොනු වර්ගයක් ඇති කිරීමේ ව්‍යාපෘතියකි. මූලික අදහස වූයේ, තනි යුනික්ස් පිරිවිතරයට පූර්වගාමියා වූ කුඩා උප කුලක ස්පෙක් 1170 මත ප්‍රමිතිකරණය කිරීම සහ GNU C පුස්තකාලය (glibc) මඟින් x86 යුනික්ස්-වැනි මෙහෙයුම් පද්ධති මත නවීකරණය නොකළ ද්විමය ගොනු ක්‍රියාත්මක කිරීම ය. මෙම ව්‍යාපෘතිය මුලින් නම් කරන ලද්දේ "ස්පෙක් 150" යනුවෙනි.

තෝරාගත් ගොනු ආකෘතිය වූයේ ELF, විශේෂයෙන් ලිනක්ස් හි භාවිත ELF. පසුව සියළුම අලෙවිකරුවන්ගේ සහ සියළුම මෙහෙයුම් පද්ධති වල සහය දක්වන ද ෆැක්ටො ප්‍රමිතියක් බවට පත්වින.

මෙම කණ්ඩායම 1997 දී විද්‍යුත් තැපැල් සාකච්ඡා ආරම්භ කළ අතර ප්‍රථම වරට 1997 අගෝස්තු 22 දින සැන්ටා කෲස් මෙහෙයුම් කාර්යාලයේදී හමු විය.

මෙහෙයුම් කමිටුව වූයේ මාර්ක් එවිං, ඩියොන් ජොන්සන්, ඉවාන් ලෙයිබොවිච්, බෘස් පෙරන්ස්, ඇන්ඩෘ රෝච්, බ්‍රයන් වේන් ස්පාර්ක්ස් සහ ලිනස් ටොවල්ඩ් ය. ව්‍යාපෘතියේ අනෙකුත් පුද්ගලයින් වූයේ කීත් බොස්ටික්, චක් ක්‍රැනෝර්, මයිකල් ඩේවිඩ්සන්, ක්‍රිස් ජී. ඩිමෙට්‍රියෝ, උල්රිච් ඩ්‍රෙපර්, ඩොන් ඩගර්, ස්ටීව් ජින්ස්බර්ග්, ජොන් "මැඩෝග්" හෝල්, රොන් හෝල්ට්, ජෝර්දාන් හබර්ඩ්, ඩේව් ජෙන්සන්, කීන් ජොන්ස්ටන්, ඇන්ඩෘ ජෝසි, රොබර්ට් ලිප්, බෙලා ලුබ්කින්, ටිම් මාර්ස්ලන්ඩ්, ග්‍රෙග් පේජ්, රොනල්ඩ් ජෝ රෙකෝඩ්, ටිම් රකල්, ජොයෙල් සිල්වර්ස්ටයින්, චියා-පි ටියන් සහ එරික් ට්‍රෝන්. මෙහෙයුම් පද්ධති හා නිෂ්පාදන සමාගම් නියෝජනය වූයේ BeOS, BSDI, FreeBSD, ඉන්ටෙල්, ලිනක්ස්, NetBSD, SCO සහ SunSoft ලෙසය.

ව්‍යාපෘතිය ප්‍රගතියක් ලබා දුන්නේ 1998 මැද භාගයේදී SCO විසින් OpenServer, UnixWare සහ Solaris මත ලිනක්ස් ද්විමය ධාවනය කළ හැකි විවෘත මූලාශ්‍ර අනුකූලතා ස්ථරයක් වන lxrun සංවර්ධනය කිරීම මගිනි. SCO විසින් 1999 මාර්තු මාසයේදී ලිනක්ස් වර්ල්ඩ් හි lxrun සහාය නිල වශයෙන් නිවේදනය කළේය. සන් මයික්‍රොසිස්ටම් විසින් 1999 මුල් භාගයේදී සොලාරිස් සඳහා නිල වශයෙන් lxrun සඳහා සහය වීම ආරම්භ කළ අතර, පසුව ලිනක්ස් යෙදුම් සඳහා සොලාරිස් බහාලුම් හරහා ලිනක්ස් ද්විමය ආකෘතියේ ඒකාබද්ධ සහය වෙත මාරු විය.

BSD දිගුකාලීනව ලිනක්ස් ද්විමය සහය (අනුකූලතා තට්ටුවක් හරහා) සහ ප්‍රධාන x86 යුනික්ස් වෙළෙන්දන් ආකෘතියට සහය දැක්වීමත් සමඟම, ව්‍යාපෘතිය මඟින් ලිනක්ස් lxrun යනු කර්මාන්තය විසින් තෝරාගත් ආකෘතිය බව තීරණය කළේය. විසුරුවා හැරීම 1999 ජූලි 25 ප්‍රකාශ කළේය.

FatELF: ලිනක්ස් සඳහා විශ්වීය ද්විමය

[සංස්කරණය]

FatELF යනු ELF ද්විමය ආකෘති දිගුවක් වන අතර එමඟින් fat ද්විමය හැකියාවන් එකතු වේ. එය ලිනක්ස් සහ යුනික්ස්-වැනි අනෙකුත් මෙහෙයුම් පද්ධති සඳහා ඉලක්ක කර ඇත. CPU නිර්මාණ ශිල්පය වියුක්තකරණයට (බයිට් අනුපිළිවෙල, වචන ප්‍රමාණය, සීපීයූ උපදෙස් මාලාව යනාදිය) අතිරේකව, මෘදුකාංග-වේදිකා වියුක්ත කිරීමේ වාසියක් ඇත. උදා, බහු ABI කර්නල් අනුවාදයන්ට සහය වන ද්විමය. 2 මාර්තු 2021 වන විට FatELF ප්‍රධාන ලිනක්ස් කර්නලය සමඟ ඒකාබද්ධ කර නොමැත.

මේවා ද බලන්න

[සංස්කරණය]

මූලාශ්‍ර

[සංස්කරණය]
  1. ^ a b Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 (May 1995)
  2. ^ Tool Interface Standard (TIS) Portable Formats Specification Version 1.1 (October 1993)
  3. ^ System V Application Binary Interface Edition 4.1 (1997-03-18)
  4. ^ "Program Header". Sco.com. July 2000. සම්ප්‍රවේශය 2017-04-05.
  5. ^ සංරක්ෂිත පිටපත, https://vmssoftware.com/pdfs/State_of_Port_20160906.pdf, ප්‍රතිෂ්ඨාපනය 2021-09-18 
  6. ^ PlayStation Portable use encrypted & relocated ELF : PSP
  7. ^ Symbian OS executable file format
  8. ^ "Chapter 4: Object Files", System V Application Binary Interface, 2009-10-26, e_machine, http://www.sco.com/developers/gabi/2009-10-26/ch4.eheader.html#e_machine