| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
No change in functionality.
llvm-svn: 228379
|
|
|
|
| |
llvm-svn: 228378
|
|
|
|
|
|
|
|
|
|
| |
After the total number of program headers are determined, virtual addresses
and file offsets need not be reassigned for sections whose virtual addresses and
fileoffsets remained the same.
This doesnot change any functionality.
llvm-svn: 228377
|
|
|
|
|
|
|
|
|
| |
Only search library directories explicitly specified
on the command line. Library directories specified in linker
scripts (including linker scripts specified on the command
line) are ignored.
llvm-svn: 228375
|
|
|
|
|
|
| |
The reader was discarding certain types of sections from the input file.
llvm-svn: 228268
|
|
|
|
|
|
| |
MemoryBuffer is being released too early. ELFFile owns MemoryBuffer.
llvm-svn: 228260
|
|
|
|
|
|
|
|
|
|
| |
Added relocations to perform function calls with and without passing arguments.
ARM-only, Thumb-only and mixed mode code generations are supported.
Only simple veneers (direct instruction modification) are supported as ARM-Thumb interwork.
Differential Revision: http://reviews.llvm.org/D7223
llvm-svn: 227961
|
|
|
|
|
|
|
|
| |
Target specific LinkingContext's determine the default search directory.
No change in functionality.
llvm-svn: 227784
|
|
|
|
| |
llvm-svn: 227707
|
|
|
|
|
|
|
| |
The .got and .got.plt sections are already handled as typeGOT. There is no need
to handle these atoms whose contentType is typeData.
llvm-svn: 227706
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously we applied the LayoutPass to order atoms and then
apply elf::ArrayOrderPass to sort them again. The first pass is
basically supposed to sort atoms in the normal fashion (which
is to sort symbols in the same order as the input files).
The second pass sorts atoms in {init,fini}_array.<priority> by
priority.
The problem is that the LayoutPass is overkill. It analyzes
references between atoms to make a decision how to sort them.
It's slow, hard to understand, and above all, it doesn't seem
that we need its feature for ELF in the first place.
This patch remove the LayoutPass from ELF pass list. Now all
reordering is done in elf::OrderPass. That pass sorts atoms by
{init,fini}_array, and if they are not in the special section,
they are ordered as the same order as they appear in the command
line. The new code is far easier to understand, faster, and
still able to create valid executables.
Unlike the previous layout pass, elf::OrderPass doesn't count
any attributes of an atom (e.g. permissions) except its
position. It's OK because the writer takes care of them if we
have to.
This patch changes the order of final output, although that's
benign. Tests are updated.
http://reviews.llvm.org/D7278
llvm-svn: 227666
|
|
|
|
| |
llvm-svn: 227534
|
|
|
|
|
|
|
| |
getAsInteger may partially update its result argument. We need to
check function return value to handle errors reliably.
llvm-svn: 227510
|
|
|
|
|
|
|
| |
_runLayoutPass is always true. No way to set a new value to the
member variable.
llvm-svn: 227501
|
|
|
|
| |
llvm-svn: 227410
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D7225
llvm-svn: 227320
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 227297
|
|
|
|
|
|
|
|
|
|
|
|
| |
That kind of reference was used only in ELFFile, and the use of
that reference there didn't seem to make sense. All test still
pass (after adjusting symbol names) without that code. LLD is
still be able to link LLD and Clang. Looks like we just don't
need this.
http://reviews.llvm.org/D7189
llvm-svn: 227259
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 227245
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 226329
|