| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Put sections to segments according to linker scripts if available.
Rework the code of TargetLayout::assignSectionsToSegments so it operates
on the given list of segments, which can be either read from linker scripts
or constructed as before.
Handle NONE segments defined in linker scripts by putting corresponding sections
to PT_NULL segment.
Consider flags set for segments through linker scripts.
Differential Revision: http://reviews.llvm.org/D10918
llvm-svn: 243002
|
|
|
|
|
|
|
| |
The _cidentSections container is filled during files parsing so we need to
serialize a concurrent access to it.
llvm-svn: 242885
|
|
|
|
|
|
| |
It will stop doing so shortly.
llvm-svn: 242832
|
|
|
|
| |
llvm-svn: 242820
|
|
|
|
|
|
| |
This removes the last uses of getStaticSymbolName in lld.
llvm-svn: 242816
|
|
|
|
| |
llvm-svn: 242760
|
|
|
|
| |
llvm-svn: 242759
|
|
|
|
| |
llvm-svn: 242701
|
|
|
|
| |
llvm-svn: 242216
|
|
|
|
|
|
|
|
| |
This patch fixes the TLS dynamic variable exportation from .got.plt segments,
created by General-dynamic relocations (TLSDESC). Current code only export
symbols in dynamic table from .got sections.
llvm-svn: 242142
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When using a linker script expression to change the address of a section, even
if the new address is more than a page of distance from the old address, lld
may put everything in the same segment, forcing it to be unnecessarily large.
This patch changes the logic in Segment::assignVirtualAddress() and
Segment::assignFileOffsets() to allow the segment to be sliced into two or more
if it detects a linker script expression that changes a section address.
Differential Revision: http://reviews.llvm.org/D10952
llvm-svn: 242096
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When calculating the start address and size of a segment, lld mistakenly
attributed the start address of the last segment slice to the whole segment
when it should consider the start address of the first slice. In this case, in a
multi-slice segment, Segment::assignVirtualAddress() will return a wrong
segment start address to TargetLayout::assignVirtualAddress(). The effect of
this miscalculation is to allocate some program headers in unnecessarily far
away addresses. This commit fixes this.
Differential Revision: http://reviews.llvm.org/D10951
llvm-svn: 242089
|
|
|
|
| |
llvm-svn: 242014
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The function uses parallel_for() and then writes error messages from the
parallel loop's body. This produces nondetermistic error messages. Instead,
copy error messages to a vector and sort it by the atom's file offsets before
printing all error messages after the parallel_for(). This results in a few
string copies, but only in the error case. (And passing tests seem more
important than performance.)
This makes tests elf/AArch64/rel-prel16-overflow.test and
elf/AArch64/rel-prel32-overflow.test pass on Windows: Both tests check that
atom error messages are emitted in a certain order, and on Windows they
happened to be emitted in a different order before this patch.
llvm-svn: 241988
|
|
|
|
| |
llvm-svn: 241746
|
|
|
|
| |
llvm-svn: 241530
|
|
|
|
|
|
|
|
| |
This patch reimplements ELFLinkingContext::getDefaultInterpreter for aarch64
with correct loader name. It is required to exclude the loader from DT_NEEDED
in shared library creation.
llvm-svn: 241371
|
|
|
|
|
|
|
|
| |
This patch reimplements ELFLinkingContext::getDefaultInterpreter for aarch64
with correct loader name. It is required to exclude the loader from DT_NEEDED
in shared library creation.
llvm-svn: 241370
|
|
|
|
| |
llvm-svn: 241346
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 241342
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is GNU ELF linker extension used particularly by LibC code.
If input object files contain section named XXX, and the XXX is a valid C
identifier, and there are undefined or weak symbols __start_XXX/__stop_XXX,
linker should define __start_XXX/__stop_XXX symbols point to the begin/end
of the XXX section correspondingly.
For example, without support of this extension statically linked executables
for X86_64 and Mips (maybe other) targets do not flush IO buffers at the end
of executing.
llvm-svn: 241341
|
|
|
|
| |
llvm-svn: 241298
|
|
|
|
| |
llvm-svn: 241274
|
|
|
|
| |
llvm-svn: 241194
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds initial general-dynamic TLS support for AArch64. Currently
no optimization is done to realx for more performance-wise models (initial-exec
or local-exec). This patch also only currently handles correctly executable
generation, although priliminary DSO support through PLT specific creation
is also added.
With this change clang/llvm bootstrap with lld is possible in static configuration
(some DSO creation fails due missing Linker script support, not AArch64 specific),
although make check also shows some issues.
llvm-svn: 241192
|
|
|
|
| |
llvm-svn: 241157
|
|
|
|
| |
llvm-svn: 241089
|
|
|
|
| |
llvm-svn: 241075
|
|
|
|
| |
llvm-svn: 240997
|
|
|
|
| |
llvm-svn: 240951
|
|
|
|
| |
llvm-svn: 240940
|
|
|
|
| |
llvm-svn: 240781
|
|
|
|
| |
llvm-svn: 240765
|
|
|
|
|
|
|
|
| |
That allows to remove duplicated long switch/case statements.
No functional changes.
llvm-svn: 240764
|
|
|
|
| |
llvm-svn: 240763
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some compilers may not add the section symbol in '.symtab' for the
.init_array and 'ldd' just ignore it. It results in global constructor
not being called in final executable.
This patch add both '.init_array' and '.fini_array' to be added in
Atom graph generation even when the section contains no symbol. An
already existing testcase is modified to check for such scenario.
The issue fixes the llvm test-suite regressions for both Single
and MultiSource files.
llvm-svn: 240570
|
|
|
|
|
|
|
|
| |
This allows LLD to correctly link MachO objects that use thread-local storage.
Differential Revision: http://reviews.llvm.org/D10578
llvm-svn: 240454
|
|
|
|
|
|
|
|
|
| |
The ObjectFileYAML.roundTrip serializes a default-constructed
NormalizedFile to YAML, triggering uninitialized memory reads.
While there use in-class member initializers.
llvm-svn: 240446
|
|
|
|
| |
llvm-svn: 240268
|
|
|
|
| |
llvm-svn: 240267
|
|
|
|
| |
llvm-svn: 240266
|
|
|
|
| |
llvm-svn: 240265
|
|
|
|
| |
llvm-svn: 240264
|
|
|
|
| |
llvm-svn: 240262
|
|
|
|
| |
llvm-svn: 240260
|
|
|
|
| |
llvm-svn: 240259
|
|
|
|
|
|
| |
unique_ptr usage while I'm here
llvm-svn: 240169
|
|
|
|
|
|
|
|
| |
None of the implementations replace the SimpleFile with some other file,
they just modify the SimpleFile in-place, so a direct reference to the
file is sufficient.
llvm-svn: 240167
|
|
|
|
| |
llvm-svn: 240147
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 239961
|