llvm-project/lld/test
Fangrui Song ec29538af2 [ELF] Assign file offsets of non-SHF_ALLOC after SHF_ALLOC and set sh_addr=0 to non-SHF_ALLOC
* GNU ld places non-SHF_ALLOC sections after SHF_ALLOC sections. This has the
  advantage that the file offsets of a non-SHF_ALLOC cannot be contained in
  a PT_LOAD. This patch matches the behavior.
* For non-SHF_ALLOC non-orphan sections, GNU ld may assign non-zero sh_addr and
  treat them similar to SHT_NOBITS (not advance location counter). This
  is an alternative approach to what we have done in D85100.
  By placing non-SHF_ALLOC sections at the end, we can drop special
  cases in createSection and findOrphanPos added by D85100.

  Different from GNU ld, we set sh_addr to 0 for non-SHF_ALLOC sections. 0
  arguably is better because non-SHF_ALLOC sections don't appear in the memory
  image.

ELF spec says:

> sh_addr - If the section will appear in the memory image of a process, this
> member gives the address at which the section's first byte should
> reside. Otherwise, the member contains 0.

D85100 appeared to take a detour. If we take a combined view on D85100 and this
patch, the overall complexity slightly increases (one more 3-line loop) and
compatibility with GNU ld improves.

The behavior we don't want to match is the special treatment of .symtab
.shstrtab .strtab: they can be matched in LLD but not in GNU ld.

Reviewed By: jhenderson, psmith

Differential Revision: https://reviews.llvm.org/D85867
2020-08-18 09:03:01 -07:00
..
COFF Revert "Re-Re-land: [CodeView] Add full repro to LF_BUILDINFO record" 2020-08-17 15:49:18 -04:00
ELF [ELF] Assign file offsets of non-SHF_ALLOC after SHF_ALLOC and set sh_addr=0 to non-SHF_ALLOC 2020-08-18 09:03:01 -07:00
MachO Slightly relax the regex on lld version in test (NFC) 2020-08-15 21:38:02 +00:00
MinGW [LLD] [MinGW] Implement the --no-seh flag 2020-07-28 21:08:37 +03:00
Unit Revert "Temporarily revert "build: use `find_package(Python3)` if available"" 2020-04-29 01:38:08 +00:00
darwin
mach-o ld64.lld: Make janky support for tbd files actually work sometimes 2020-07-02 15:31:21 -04:00
wasm [lld][WebAssembly] Emit all return types of multivalue functions 2020-08-12 13:14:15 -07:00
CMakeLists.txt [CMake] Simplify CMake handling for zlib 2020-08-11 20:22:11 -07:00
lit.cfg.py Revert D83834 "Add test utility 'extract'" 2020-07-28 13:26:33 -07:00
lit.site.cfg.py.in [CMake] Simplify CMake handling for zlib 2020-08-11 20:22:11 -07:00