| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 227244
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 227233
|
|
|
|
| |
llvm-svn: 227184
|
|
|
|
|
|
|
|
|
|
|
| |
Misread buildbot's log.
Both gcc and clang compile this fine.
Original fix reason:
gcc allows template specializations only in the same namespace
where template has been declared.
llvm-svn: 227183
|
|
|
|
|
|
| |
The buildbot reported build failures for clang.
llvm-svn: 227179
|
|
|
|
|
|
|
| |
gcc allows template specializations only in the same namespace
where template has been declared.
llvm-svn: 227177
|
|
|
|
|
|
|
|
|
|
|
|
| |
Symbols addressing Thumb code have zero bit set in st_value to distinguish them from ARM instructions.
This caused wrong atoms' forming because of offset of one byte brought in by that corrected st_value.
Fixed reading of st_value & st_value-related things in ARMELFFile while forming atoms.
Symbol table generation is also fixed for Thumb atoms.
Differential Revision: http://reviews.llvm.org/D7161
llvm-svn: 227174
|
|
|
|
|
|
|
|
| |
Anonymous atoms created there were getting wrong atom ordinal.
LayoutAfter references take precedence over atom ordinals, so
the bug was not visible, though.
llvm-svn: 227168
|
|
|
|
| |
llvm-svn: 227147
|
|
|
|
|
|
|
|
|
| |
* Removed cyclic dependency between lldPECOFF and lldDriver
* Added missing dependencies in unit tests
Differential Revision: http://reviews.llvm.org/D7185
llvm-svn: 227134
|
|
|
|
|
|
| |
and raw_fd_ostream constructor expects a StringRef.
llvm-svn: 227081
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is initial patch to support MIPS64 object files linking.
The patch just makes some classes more generalized, and rejects
attempts to interlinking O32 and N64 ABI object files.
I try to reuse the current MIPS target related classes as much as
possible because O32 and N64 MIPS ABI are tightly related and share
almost the same set of relocations, GOT, flags etc.
llvm-svn: 227058
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 227051
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 227049
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 227048
|
|
|
|
|
|
|
|
| |
the class field declarations.
No functional changes.
llvm-svn: 227047
|
|
|
|
|
|
|
|
|
| |
The `Elf_Rel_Impl::setSymbolAndType` method now has the third argument
`IsMips64EL` (like complement methods `getSymbol` and `getType`). While
we do not support linking of MIPS64 ELF object file just pass `false`
to the `setSymbolAndType`.
llvm-svn: 227045
|
|
|
|
|
|
| |
if false.
llvm-svn: 226984
|
|
|
|
|
|
|
|
|
|
| |
lldELF is used by each ELF backend. lldELF's ELFLinkingContext
also held a reference to each backend, creating a link-time
cycle. This patch moves the backend references to lldDriver.
Differential Revision: http://reviews.llvm.org/D7119
llvm-svn: 226976
|
|
|
|
| |
llvm-svn: 226972
|
|
|
|
|
|
| |
If it's overridden by a derived class, add override to the derived class.
llvm-svn: 226971
|
|
|
|
| |
llvm-svn: 226965
|
|
|
|
|
|
|
|
|
| |
Moved getMemoryBuffer from DarwnLdDriver to MachOLinkingContext.
lldMachO shared library target now builds.
Differential Review: http://reviews.llvm.org/D7155
llvm-svn: 226963
|
|
|
|
|
|
| |
This reverts commit 6a3f545b44cea46321e025d9ab773786af86cb51.
llvm-svn: 226928
|
|
|
|
|
|
|
|
|
|
| |
lldELF is used by each ELF backend. lldELF's ELFLinkingContext
also held a reference to each backend, creating a link-time
cycle. This patch moves the backend references to lldDriver.
Differential Revision: http://reviews.llvm.org/D7119
llvm-svn: 226922
|
|
|
|
| |
llvm-svn: 226903
|
|
|
|
|
| |
From: Greg Fitzgerald <garious@gmail.com>
llvm-svn: 226782
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this patch there was a cyclic dependency between lldCore and
lldReaderWriter. Only lldConfig could be built as a shared library.
* Moved Reader and Writer base classes into lldCore.
* The following shared libraries can now be built:
lldCore
lldYAML
lldNative
lldPasses
lldReaderWriter
Differential Revision: http://reviews.llvm.org/D7105
From: Greg Fitzgerald <garious@gmail.com>
llvm-svn: 226732
|
|
|
|
|
|
|
|
|
|
|
| |
* Works better for shared libraries (sets PRIVATE instead of INTERFACE)
* Fixes http://llvm.org/bugs/show_bug.cgi?id=22269
* Also, use build-target names instead of component names
Differential Revision: http://reviews.llvm.org/D7074
From: Greg Fitzgerald <garious@gmail.com>
llvm-svn: 226702
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The code is able to statically link the simplest case of:
int main() { return 0; }
* Only works with ARM code - no Thumb code, no interwork (-marm -mno-thumb-interwork)
* musl libc built with no interwork and no Thumb code
Differential Revision: http://reviews.llvm.org/D6716
From: Denis Protivensky <dprotivensky@accesssoftek.com>
llvm-svn: 226643
|
|
|
|
|
|
|
|
| |
The use of std::future introduces an implicit dependency on the PPL
subcomponent of ConcRT. ConcRT in general is pretty noisy with
warnings, so this patch just disables one of the noisy warnings.
llvm-svn: 226590
|
|
|
|
|
|
|
|
| |
sh_addralign of zero is equivalent to sh_addralign of one, meaning
no alignment specified. Avoid calculating Log2 or modulus when
sh_addralign is zero as the results will not be useful.
llvm-svn: 226572
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment errors in relocation processing such as out of range
values are not detected or at best trapped by asserts which will not
be present in release builds. This patch adds support for checking
error return values from applyRelocation() calls and printing an
appropriate error message. It also adds support for printing multiple
errors rather than just the first one.
llvm-svn: 226557
|
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D7023
From: Greg Fitzgerald <garious@gmail.com>
llvm-svn: 226346
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LLD parses archive file index table only at first. When it finds a symbol
it is looking for is defined in a member file in an archive file, it actually
reads the member from the archive file. That's done in the core linker.
That's a single-thread process since the core linker is single threaded.
If your command line contains a few object files and a lot of archive files
(which is quite often the case), LLD hardly utilizes hardware parallelism.
This patch improves parallelism by speculatively instantiating archive
file members. At the beginning of the core linking, we first create a map
containing all symbols defined in all members, and each time we find a
new undefined symbol, we instantiate a member file containing the
symbol (if such file exists). File instantiation is side effect free, so this
should not affect correctness.
This is a quick benchmark result. Time to link self-link LLD executable:
Linux 9.78s -> 8.50s (0.86x)
Windows 6.18s -> 4.51s (0.73x)
http://reviews.llvm.org/D7015
llvm-svn: 226336
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Generalise the base relocation handling slightly to support multiple base
relocation types in PE/COFF. This is necessary to generate proper executables
for WoA.
Track the base relocation type from the decision that we need a base relocation
to the point where we emit the base relocation into base relocation directory.
Remove an outdated TODO item while in the area.
llvm-svn: 226335
|
|
|
|
| |
llvm-svn: 226329
|
|
|
|
| |
llvm-svn: 226321
|
|
|
|
|
|
|
|
|
|
|
| |
We had such class there because of InputGraph abstraction.
Previously, no one except InputGraph itself has complete picture of
input file list. In order to create a set of all defined symbols,
we had to use some indirections there to workaround InputGraph.
It can now be rewritten as simple code. No change in functionality.
llvm-svn: 226319
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch makes File::parse() multi-thread safe. If one thread is running
File::parse(), other threads will block if they try to call the same method.
File::parse() is idempotent, so you can safely call multiple times.
With this change, we don't have to wait for all worker threads to finish
in Driver::link(). Previously, Driver::link() calls TaskGroup::sync() to
wait for all threads running File::parse(). This was not ideal because
we couldn't start the resolver until we parse all files.
This patch increase parallelism by making Driver::link() to not wait for
worker threads. The resolver calls parse() to make sure that the file
being read has been parsed, and then uses the file. In this approach,
the resolver can run with the parser threads in parallel.
http://reviews.llvm.org/D6994
llvm-svn: 226281
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous default behavior of LLD is --as-needed. LLD linked
against a DSO only if the DSO file was actually used to link an
executable (i.e. at least one symbol was resolved using the shared
library file.)
In this patch I added a boolean flag to FileNode for --as-needed.
I also added an accessor to DSO name to shared library file class.
llvm-svn: 226274
|
|
|
|
|
|
|
| |
These classes contain only abstract virtual functions. Explicit
constructors are redundant.
llvm-svn: 226265
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 226262
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 226261
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 226260
|
|
|
|
|
|
|
| |
This class defines a relocation handler interface. The interface does
not depend on the template argument so the argument is redundant.
llvm-svn: 226259
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 226258
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 226257
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 226256
|
|
|
|
|
|
|
| |
That reduce class dependencies and simplify the code a bit.
No functional changes.
llvm-svn: 226255
|