llvm/lld
Martin Storsjö 9dd2d50984 [LLD] [COFF] Use the new encodeSectionName() helper for long section names
The previous code used an unbounded sprintf, which in theory can
overflow, writing either the null terminator or the last digits
into the next struct member.

In practice, in LLD, all long section names are written sequentially
first at the start of the string table, followed by all the long
symbol names. Due to this, even if the total string table would
end up large, the long section names have fairly short offsets,
which is why this hasn't been an issue in practice.

I don't think it's worth trying to write a test that produces an
executable with enough long section names to make the section names
themselves exceed 10^6 bytes, which is currently necessary to trigger
faults with the previous form.

Differential Revision: https://reviews.llvm.org/D120676
2022-03-01 11:33:02 +02:00
..
cmake/modules
COFF [LLD] [COFF] Use the new encodeSectionName() helper for long section names 2022-03-01 11:33:02 +02:00
Common [lld] Make error handling functions opaque 2022-02-17 11:54:57 -08:00
docs [ELF] Support (TYPE=<value>) to customize the output section type 2022-02-17 12:10:58 -08:00
ELF [ELF] isKnownZFlag: move known literal flags to an array. NFC 2022-02-28 23:23:33 -08:00
include/lld [lld] Make error handling functions opaque 2022-02-17 11:54:57 -08:00
MachO [lld-macho] Have relocation address included in range-check error message 2022-02-28 21:56:38 -05:00
MinGW [LLD][MinGW] Add --heap argument support 2022-01-30 00:01:45 +02:00
test [lld-macho] Have relocation address included in range-check error message 2022-02-28 21:56:38 -05:00
tools/lld [LLD] Fix issue in HIP due to unspecified order of evaluation of the function object 2022-02-08 19:12:15 -05:00
utils
wasm [MC][WebAssembly] Fix crash when relocation addend underlows U32 2022-02-25 07:13:15 -08:00
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt [lld] Require C++14 in LLD standalone build 2022-02-22 18:15:29 -05:00
CODE_OWNERS.TXT
LICENSE.TXT
README.md

LLVM Linker (lld)

This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.

lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.

Benchmarking

In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.

It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz

The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.