- Pengguna LWN menyusun daftar isi untuk esai linker 20 bagian karya Ian Lance Taylor yang sebelumnya tersebar, agar bisa diikuti sekaligus
- Teks aslinya adalah tulisan Ian Lance Taylor, penulis linker
gold, dan kumpulan tulisan yang semula berfokus pada nomor ini disusun ulang berdasarkan judul bagian agar lebih mudah dicari - Bagian awal membahas konsep linker, riwayat pribadi, dynamic linking, format object file, shared library, simbol ELF, relokasi, hingga optimasi TLS
- Bagian akhir berlanjut ke resolusi simbol, perbandingan static/dynamic linking, link time optimization, COMDAT, instansiasi templat C++, exception frame, hingga incremental linking
- Daftar isi dan komentar ini dirilis sebagai public domain, sehingga tidak ada pembatasan untuk menyalin, menggunakan, atau membuat karya turunan
Daftar isi yang mengelompokkan esai linker 20 bagian agar mudah dicari
- Menyusun tulisan linker 20 bagian karya Ian Lance Taylor menjadi daftar isi yang mudah dibaca secara berurutan
- Sulit menemukan daftar isi yang tertata rapi di blog Ian maupun di LWN, sehingga dibuatlah daftar isi terpisah
- URL setiap tulisan memang bernomor berurutan, tetapi daftar isi berguna untuk melihat topik masing-masing tulisan secara sekilas
- Setiap tulisan hanya dirujuk dengan nomor, sehingga judulnya terutama diambil dari judul bagian milik Ian
Daftar tulisan yang disertakan
- Introduction, personal history, first half of what's-a-linker: pengantar, riwayat pribadi, dan paruh pertama tentang apa itu linker
- What's-a-linker: Dynamic linking, linker data types, linker operation: dynamic linking, tipe data linker, dan cara kerja linker
- Address spaces, Object file formats: ruang alamat dan format object file
- Shared Libraries: shared library
- More Shared Libraries -- specifically, linker implementation; ELF Symbols: pembahasan lanjutan shared library, implementasi linker, dan simbol ELF
- Relocations, Position Dependent Shared Libraries: relokasi dan shared library yang bergantung pada posisi
- Thread Local Storage (TLS) optimization: optimasi TLS
- ELF Segments and Sections: segmen dan section ELF
- Symbol Versions, Relaxation optimization,: versi simbol dan optimasi relaxation
- Parallel linking: linking paralel
- Archive format: format arsip
- Symbol resolution: resolusi simbol
- Symbol resolution from the user's point of view; Static Linking vs. Dynamic Linking: resolusi simbol dari sudut pandang pengguna; static linking vs. dynamic linking
- Link time optimization, aka Whole Program optimization; Initialization Code: link time optimization, atau whole program optimization; kode inisialisasi
- COMDAT sections: section COMDAT
- C++ Template Instantiation, Exception Frames: instansiasi templat C++ dan exception frame
- Warning Symbols,: simbol peringatan
- Incremental Linking: incremental linking
- __start and __stop Symbols, Byte Swapping: simbol
__start,__stop, dan byte swapping - Last post; Update on gold's status: tulisan terakhir dan pembaruan status
gold
Ketentuan publikasi
- Daftar isi dan komentar ini dirilis sebagai public domain
- Tidak ada pembatasan untuk penggunaan, penyalinan, pertunjukan, maupun pembuatan karya turunan, dan tidak memerlukan izin tambahan
1 komentar
Pendapat di Hacker News
Seseorang menautkan versi yang menggabungkan semuanya menjadi satu ebook dengan resep Calibre, jadi saya unggah hasilnya untuk yang membutuhkan
https://www.mediafire.com/folder/b8fdqx7eqcpdl/linker
atau
https://0x0.st/Xycy.azw3
https://0x0.st/Xyct.epub
https://0x0.st/Xycv.mobi
https://0x0.st/Xycw.pdf
Developer yang mengerjakan linker lld dan mold benar-benar mendorong performa sampai batasnya
LLD (bagian dari LLVM):
https://llvm.org/devmtg/2017-10/slides/Ueyama-lld.pdf
Linker MOLD:
https://github.com/rui314/mold/blob/main/docs/design.md
Apple juga merilis linker baru dengan level yang mirip mold; diskusi sebelumnya ada di sini: https://news.ycombinator.com/item?id=36218330
LLD dirancang agar cepat, begitu juga Gold sebelumnya, tetapi Mold melampaui keduanya dengan selisih besar
Meski ini tulisan [2008], tulisan-tulisan ini benar-benar materi yang sangat berharga, jadi selalu menyenangkan melihatnya kembali naik ke halaman depan HN
Benar-benar penjelasan yang luar biasa
Seri tulisan ini adalah salah satu favorit saya, dan secara pribadi banyak isinya yang membuka mata
Saya rasa tidak ada materi lain, baik di internet maupun di tempat lain, yang mengumpulkan semua informasi ini di satu tempat. Akan sangat bagus kalau Ian menerbitkannya sebagai buku
Hanya saja saya berharap Ian menyediakan versi yang memungkinkan semua bab dilihat dalam satu halaman
https://www.airs.com/blog/archives/51
Ini tentang melakukan pattern matching pada kode assembly, lalu menyusun ulang atau menggunakan kembali sequence
Kumpulan komentar sebelumnya: https://news.ycombinator.com/item?id=27445981
Saya paham mengapa linker muncul pada masa ketika memori masih terbatas
Namun saya penasaran apakah linker masih diperlukan di lingkungan dengan memori melimpah seperti sistem modern. Selain itu, bukankah shared library bisa menjadi jalur serangan supply chain, seperti serangan xz yang diblokir awal tahun ini?
Lingkungan seperti Raspberry Pi juga masih perlu dipertimbangkan. Sulit melihat shared library sebagai jalur serangan yang lebih berbahaya daripada aplikasi itu sendiri. Meski mengunduh binary statis, kita tidak tahu apa yang ada di dalamnya, dan saya juga tidak tahu mengapa orang percaya pada separuh image Docker yang diunduh dan dipakai semua orang, tetapi toh mereka tetap menggunakannya
Kecuali semua file sumber diproses secara bersamaan dengan opsi build yang persis sama, hasilnya harus digabungkan. Bahkan dengan LTO modern, compiler biasanya tidak melihat semua file program pada level source code, dan library C serta C++ biasanya terpisah. Selama berbagai bahasa tidak membuat seluruh program dalam satu tahap kompilasi dan assembly, diperlukan sesuatu untuk menggabungkan hasilnya, dan itulah linker. Bahkan jika semuanya dibangun secara statis, kebutuhan akan runtime linker tidak hilang kecuali alamat persis tempat program akan dijalankan di-hardcode, dan pendekatan semacam itu bertabrakan dengan teknik keamanan seperti ASLR
Menurut saya, pola pikir bahwa memori dan CPU melimpah adalah salah satu alasan mengapa pengalaman pengguna tidak terasa jauh lebih baik meski hardware sudah menjadi beberapa orde lebih cepat