| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Native file format was designed to be the fastest on-memory or
on-disk file format for object files. The problem is that no one
is working on that. No LLVM tools can produce object files in
the Native, thus the feature of supporting the format is useless
in the linker.
This patch removes the Native file support. We can add it back
if we really want it in future.
llvm-svn: 234641
|
|
|
|
|
|
|
| |
This file is not -Wconversion-clean, and seems like we don't care
about that except these lines. Fix these lines for simplicity.
llvm-svn: 234637
|
|
|
|
|
|
|
|
| |
This MIPS specific option controls R_MIPS_EH relocation handling.
If -pcrel-eh-reloc is specified R_MIPS_EH relocation should be handled
like R_MIPS_PC32 relocation.
llvm-svn: 234635
|
|
|
|
|
|
|
| |
The patch supports just the R_MIPS_EH relocation handling and does not
implement full specification of compact exception tables for MIPS ABIs.
llvm-svn: 234634
|
|
|
|
|
|
|
| |
When we call getGP() we need in fact _gp symbol address. Let's cache its
value and return it directly from the new getGPAddr() function.
llvm-svn: 234632
|
|
|
|
|
|
| |
The commit is inspired by r234628. Thanks Rui for the idea.
llvm-svn: 234631
|
|
|
|
| |
llvm-svn: 234630
|
|
|
|
|
|
|
|
| |
Because calls of applyRelocation is parallelized, all functions
called from that need to be thread-safe. This piece of code
didn't use any synchronization mechanism, so it was not safe.
llvm-svn: 234628
|
|
|
|
|
|
|
|
|
| |
This includes implementation of PLT0 entry.
For testing, libfn.so binary is added since
there's no way to link shared objects with lld yet.
llvm-svn: 234588
|
|
|
|
|
|
|
| |
Use consistent naming: commonly used generator methods
don't have 'Entry' suffices.
llvm-svn: 234585
|
|
|
|
| |
llvm-svn: 234582
|
|
|
|
|
|
| |
Handle veneers only for call-like relocations.
llvm-svn: 234580
|
|
|
|
| |
llvm-svn: 234576
|
|
|
|
| |
llvm-svn: 234573
|
|
|
|
| |
llvm-svn: 234558
|
|
|
|
| |
llvm-svn: 234557
|
|
|
|
| |
llvm-svn: 234556
|
|
|
|
|
|
| |
Hopefully this time the build won't be broken.
llvm-svn: 234553
|
|
|
|
|
|
|
| |
In other ELF ports, we don't use the macro. This patch removes the
macro for consistency and readability.
llvm-svn: 234552
|
|
|
|
|
|
|
|
| |
Because no one except Hexagon uses the header, we don't need to maintain
the header in the common directory. Also de-template the function for
readability.
llvm-svn: 234551
|
|
|
|
|
|
|
| |
Having std:move(mb) and mb->getBuffer() in the same argument list is not safe
because the order of evaluation is not defined.
llvm-svn: 234541
|
|
|
|
|
|
|
|
| |
CreateELF.h was included only by ELFReader.h, and it was used only
by ELFReader class. By making the function a member of the class,
we can remove template parameters.
llvm-svn: 234540
|
|
|
|
| |
llvm-svn: 234474
|
|
|
|
|
|
|
|
| |
This required splitting up veneer atoms into pieces,
where every piece is paired with mapping atom of
the corresponding type.
llvm-svn: 234473
|
|
|
|
|
|
| |
Type names should start with an uppercase letter in the LLVM coding style.
llvm-svn: 234452
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
atom_collection is basically a wrapper for std::vector. The class
provides begin and end member functions, so that it "hides" the
other member functions provided by std::vector. However, you can
still directly access _atoms member since the member is not
protected.
We cannot simply make the member private because we need that member
when we are constructing atom vectors.
This patch splits atom_collection into two types: std::vector<Atom *>
and AtomRange. When we are constructing atom vectors, we use the
former class. We return instances of the latter class from File
objects so that callers cannot add or remove atoms from the lists.
std::vector<Atom *> is automatically converted to AtomRange.
llvm-svn: 234450
|
|
|
|
|
|
|
| |
atom_collection_vector is the only derived class of atom_collection.
This patch merges the two.
llvm-svn: 234443
|
|
|
|
| |
llvm-svn: 234442
|
|
|
|
| |
llvm-svn: 234435
|
|
|
|
| |
llvm-svn: 234434
|
|
|
|
| |
llvm-svn: 234432
|
|
|
|
| |
llvm-svn: 234431
|
|
|
|
| |
llvm-svn: 234419
|
|
|
|
|
|
| |
This reverts commit r234378 because it broke buildbots.
llvm-svn: 234414
|
|
|
|
| |
llvm-svn: 234397
|
|
|
|
|
|
|
|
| |
It's a follow-up to r234347. We do not need to keep a reference to
`GOTFile` instance in a xxxWriter class after ownership is transferred
to the caller of the `createImplicitFiles` method.
llvm-svn: 234396
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's not our business to resolve those undefined symbols.
We just trust the linker will load the library and its dependencies
correctly, which is actually what happens, modulo bugs in the dynamic
linker itself.
PR: 23035
Differential Revision: http://reviews.llvm.org/D8886
llvm-svn: 234378
|
|
|
|
|
|
|
| |
MergeSectionKey is a tiny struct. We don't need a constructor for that.
The good old way to initialize a struct works fine.
llvm-svn: 234371
|
|
|
|
| |
llvm-svn: 234369
|
|
|
|
|
|
|
| |
Archive files don't have any symbols (their members do).
The vectors deleted here were always empty.
llvm-svn: 234368
|
|
|
|
|
|
|
|
| |
SimpleFile defines defined(). undefined(), sharedLibrary() and absolute().
We should use the class instead of deriving from the base class and
re-defining the member functions in ELFFile.
llvm-svn: 234367
|
|
|
|
|
|
|
| |
We do not use values returned by these functions anywhere.
So let's return nothing.
llvm-svn: 234358
|
|
|
|
| |
llvm-svn: 234357
|
|
|
|
| |
llvm-svn: 234356
|
|
|
|
|
|
|
|
| |
SimpleFile is the only derived class of MutableFile.
This patch reduces the height of class hierarchy by removing
MutableFile class.
llvm-svn: 234354
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now 'writer' creates an instance of `RuntimeFile` in the constructor, then
populates the file in the virtual function `addDefaultAtoms`, then pass
owning of this file to the caller of virtual function `createImplicitFiles`.
First, we do not need to keep an instance of `RuntimeFile` so long. It is
enough to create the file, right after that populate it and pass the owning.
Second, relationship between `createImplicitFiles` and `addDefaultAtoms`
is complicated. The `createImplicitFiles` might call `addDefaultAtoms`,
overridden version of `addDefaultAtoms` might call base class `addDefaultAtoms`,
and overridden version of `createImplicitFiles` might call base class
`createImplicitFiles` as well as `addDefaultAtoms`.
The patch solves both problems above. It creates and populates runtime files
right in the createImplicitFiles(), removes `addDefaultAtoms` at all and
does not keep references to runtime files in class fields.
llvm-svn: 234347
|
|
|
|
| |
llvm-svn: 234311
|
|
|
|
| |
llvm-svn: 234302
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make PLT entry atoms represent mapping symbols in the Release mode,
while in the Debug mode they are still function-like symbols
with regular names.
It's legal that mapping symbols denote unnamed parts of code,
and PLT entries are not required to have function-like names.
Differential Revision: http://reviews.llvm.org/D8819
llvm-svn: 234301
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 234293
|