ELD User Guide
This document describes usage of ELD
- 1. Getting started
- 2. Supported Linking Modes
- 3. Supported Targets
- 4. Linker Script
- 4.1. Overview
- 4.2. Basic script syntax
- 4.3. Script commands
- 4.4. Expressions
- 4.5. Symbol assignments
- 4.6. NOCROSSREFS
- 4.7. OVERLAY
- 4.8. Output Section Description
- 4.9. Syntax
- 4.10. Output Section Data
- 4.11. Sorting input sections
- 4.12. Controlling Physical addresses
- 4.13. GNU-compatibility
- 4.14. PRINT Command
- 4.15. Version Scripts
- 5. Linker Diagnostics
- 6. ELD (debugging guide)
- 6.1. Big picture
- 6.2. Entry point and driver selection
- 6.3. Argument parsing and preprocessing
- 6.4. Input actions (what gets fed to the linker)
- 6.5. Link pipeline overview (doLink -> Linker)
- 6.6. Prepare phase (Linker::prepare)
- 6.7. Normalize phase (Linker::normalize)
- 6.8. Resolve + layout + emit (Linker::link)
- 6.9. Internal inputs and “internal sections”
- 6.10. Section merging (input sections -> output sections)
- 6.11. String merging (MergeString fragments)
- 6.12. Relocations: read -> scan -> apply -> (optional) emit reloc sections
- 6.13. Dynamic relocations (what creates
.rel[a].dyn/.rel[a].plt) - 6.14. Garbage collection (
--gc-sections) - 6.15. Fragment model (Fragment / FragmentRef)
- 6.16. Map files (layout printers)
- 6.17. Reproducing failures (tarball + mapping file)
- 6.18. Crash/signal behavior (what gets written on a crash)
- 6.19. Where failures typically come from (symptoms -> pipeline stage)
- 6.20. Practical debugging checklist
- 6.21. Debugging runtime crashes in ELD-built images
- 7. Shared Library Versioning
- 8. GNU ELF Symbol Versioning
- 9. Image Structure and Generation
- 10. Image layout
- 11. Linker Plugins
- 12. Linker Optimization Features
- 13. ELF TOOLS
- 14. LTO Support
- 15. Getting Image Details
- 16. Command-line options
- 16.1. Common options for all the backends
- 16.2. Input remapping options
- 16.3. Using
--start-lib/--end-lib - 16.4. MEMORY-related options
- 16.5. PIE options
- 16.6. ARM and AArch64 specific options
- 16.7. Hexagon specific options
- 16.8. RISCV specific options
- 16.9. -z keyword options
- 16.10. Linker version directive
- 16.11. Record command line
- 17. Target Specific Features
- 18. SFrame Support
- 18.1. Overview
- 18.2. SFrame vs EhFrame
- 18.3. Command Line Options
- 18.4. Usage Examples
- 18.5. Section Processing
- 18.6. Supported Architectures
- 18.7. Integration with Debugging Tools
- 18.8. Garbage Collection Behavior
- 18.9. Error Handling
- 18.10. Performance Considerations
- 18.11. Best Practices
- 18.12. Troubleshooting
- 19. Editor Support
- 20. Linker support and frequently asked questions!!!
- 20.1. General Linker Questions
- 20.2. Input File to Linker
- 20.3. Linker Script General Questions
- 20.4. Linker Script PHDRS
- 20.5. MEMORY command: common issues and fixes
- 20.6. String Merging
- 20.7. Hexagon
- 20.8. RISC-V
- 20.9. Usage
- 20.10. Linker Plugin Framework
- 20.11. Symbol Resolution
- 20.12. Build time issues
- 20.13. Hexagon
- 20.14. ARM
- 20.15. Runtime issues
- 20.16. Improving your image/build
- 20.17. LinkerPlugin API
Developer Docs