Table Of Contents

Previous topic

Windows support

Next topic

Sphinx Introduction for LLVM Developers

This Page

Open Projects

include/lld/Core

  • The yaml reader/writer interfaces should be changed to return an explanatory string if there is an error. The existing error_code abstraction only works for returning low level OS errors. It does not work for describing formatting issues.
  • We need to design a diagnostics interface. It would be nice to share code with Clang where possible.
  • We need to add more attributes to File. In particular, we need cpu and OS information (like target triples). We should also provide explicit support for LLVM IR module flags metadata.

GNU ld Driver

Missing Options

  • –audit
  • -A,–architecture
  • -b,–format
  • -d,-dc,-dp
  • -P,–depaudit
  • –exclude-libs
  • –exclude-modules-for-implib
  • -E,–export-dynamic,–no-export-dynamic
  • -EB (We probably shouldn’t support this)
  • -EL (We probably shouldn’t support this)
  • -f,–auxiliary
  • -F,–filter
  • -G,–gpsize
  • -h
  • -i
  • –library
  • -M
  • –print-map
  • -output
  • -O
  • -q,–emit-relocs
  • –force-dynamic
  • –relocatable
  • -R,–just-symbols
  • -s,–strip-all
  • -S,–strip-debug
  • –trace
  • -dT,–default-script
  • -Ur
  • –unique
  • -v,–version,-V
  • -y,–trace-symbol
  • -z (keywords need to be implemented)
  • –accept-unknown-input-arch,–no-accept-unknown-input-arch
  • -Bdynamic,-dy,-call_shared
  • -Bgroup
  • -dn,-non_shared
  • -Bsymbolic
  • -Bsymbolic-functions
  • –dynamic-list
  • –dynamic-list-data
  • –dynamic-list-cpp-new
  • –dynamic-list-cpp-typeinfo
  • –check-sections,–no-check-sections
  • –copy-dt-needed-entries,–no-copy-dt-needed-entires
  • –cref
  • –no-define-common
  • –defsym (only absolute value supported now)
  • –demangle,–no-demangle
  • -I
  • –fatal-warnings,–no-fatal-warnings
  • –force-exe-suffix
  • –gc-sections,–no-gc-sections
  • –print-gc-sections,–no-print-gc-sections
  • –print-output-format
  • –target-help
  • -Map
  • –no-keep-memory
  • –no-undefined,-z defs
  • –allow-shlib-undefined,–no-alow-shlib-undefined
  • –no-undefined-version
  • –default-symver
  • –default-imported-symver
  • –no-warn-mismatch
  • –no-warn-search-mismatch
  • –oformat
  • -pie,–pic-executable
  • –relax,–no-relax
  • –retain-symbols-file
  • –sort-common
  • –sort-section={name,alignment}
  • –split-by-file
  • –split-by-reloc
  • –stats
  • –section-start
  • -T{bss,data,text,{text,rodata,data}-segment}
  • –unresolved-symbols
  • -dll-verbose,–verbose
  • –version-script
  • –warn-common
  • –warn-constructors
  • –warn-multiple-gp
  • –warn-once
  • –warn-section-align
  • –warn-shared-textrel
  • –warn-alternate-em
  • –warn-unresolved-symbols
  • –error-unresolved-symbols
  • –wrap
  • –no-ld-generated-unwind-info
  • –hash-size
  • –reduce-memory-overheads
  • –build-id

ELF x86-64

Unimplemented Features

  • Code models other than the small code model
  • TLS strength reduction

Unimplemented Relocations

All of these relocations are defined in: http://www.x86-64.org/documentation/abi.pdf

Trivial Relocs

These are very simple relocation calculations to implement. See lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp

  • R_X86_64_8
  • R_X86_64_PC8
  • R_X86_64_SIZE32
  • R_X86_64_SIZE64
  • R_X86_64_GOTPC32 (this relocation requires there to be a __GLOBAL_OFFSET_TABLE__)

Global Offset Table Relocs

  • R_X86_64_GOTOFF32
  • R_X86_64_GOTOFF64

Global Dynamic Thread Local Storage Relocs

These relocations take more effort to implement, but some of them are done. Their implementation lives in lib/ReaderWriter/ELF/X86_64/{X86_64RelocationPass.cpp,X86_64RelocationHandler.cpp}.

Documentation on these relocations can be found in: http://www.akkadia.org/drepper/tls.pdf http://www.fsfla.org/~lxoliva/writeups/TLS/RFC-TLSDESC-x86.txt

  • R_X86_64_GOTPC32_TLSDESC
  • R_X86_64_TLSDESC_CALL
  • R_X86_64_TLSDESC

ELF AArch64

Unimplemented Features

  • Just about everything!

Unimplemented Relocations

All of these relocations are defined in: http://infocenter.arm.com/help/topic/com.arm.doc.ihi0056b/IHI0056B_aaelf64.pdf

ELF ARM

Unimplemented Features

  • DSO linking
  • C++ code linking
  • PLT entries’ generation for images larger than 2^28 bytes (see Sec. A.3 of the ARM ELF reference)
  • ARM/Thumb interwork veneers in position-independent code
  • .ARM.exidx section (exception handling)
  • -init/-fini options
  • Proper debug information (DWARF data)
  • TLS relocations for dynamic models
  • Lots of other relocations

Unimplemented Relocations

All of these relocations are defined in: http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044e/IHI0044E_aaelf.pdf

tools/lld

Documentation TODOs