| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
| |
This is needed, among others by the FreeBSD kernel linker script.
Patch by Davide Italiano!
Reviewers: ruiu, rafaelauler
Differential Revision: http://reviews.llvm.org/D7220
llvm-svn: 227694
|
|
|
|
|
|
|
| |
If a linker script is given with -l, LLD failed to read the file.
The bug was introduced in 227341.
llvm-svn: 227610
|
|
|
|
|
|
|
| |
We use a variable name "diag" in many other places and I think
it's preferred because of its length.
llvm-svn: 227369
|
|
|
|
| |
llvm-svn: 227367
|
|
|
|
| |
llvm-svn: 227341
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D7225
llvm-svn: 227320
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
TODO: Move ELF/PPC to ELF/PowerPC
TODO: Move ELF/X86_64 into ELF/X86
llvm-svn: 226989
|
|
|
|
|
|
|
|
|
|
| |
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: 226966
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
This fixes running a few tests (including test/elf/Mips/e-flags-merge-1.test)
under asan.
llvm-svn: 226580
|
|
|
|
| |
llvm-svn: 226380
|
|
|
|
| |
llvm-svn: 226292
|
|
|
|
| |
llvm-svn: 226287
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 226225
|
|
|
|
|
|
|
| |
This change makes it easy to write unit tests for the GNU driver.
No more "empty group" hack is needed. No change in functionality.
llvm-svn: 226150
|
|
|
|
|
|
| |
In total we have removed more than 1000 lines!
llvm-svn: 226149
|
|
|
|
|
|
|
|
|
| |
InputElement was named that because it's an element of an InputGraph.
It's losing the origin because the InputGraph is now being removed.
InputElement's subclass is FileNode, that naming inconsistency needed
to be fixed.
llvm-svn: 226147
|
|
|
|
|
|
|
|
| |
They were the last member functions of InputGraph (besides members()).
Now InputGraph is just a container of a vector. We are ready to replace
InputGraph with plain File vector.
llvm-svn: 226146
|
|
|
|
|
|
|
| |
WrapperNode was a useless subclass of FileNode. We should just use
FileNode instead.
llvm-svn: 226145
|
|
|
|
| |
llvm-svn: 226140
|
|
|
|
|
|
|
| |
These changes depended on r225674 and had been rolled back in r225859.
Because r225674 has been re-submitted, it's safe to re-submit them.
llvm-svn: 226132
|
|
|
|
| |
llvm-svn: 226127
|
|
|
|
|
|
|
|
| |
The original commit had an issue with Mac OS dylib files. It didn't
handle fat binary dylib files correctly. This patch includes a fix.
A test for that case has already been committed in r225764.
llvm-svn: 226123
|
|
|
|
|
|
|
| |
r225764 broke a basic functionality on Mac OS. This change reverts
r225764, r225766, r225767, r225769, r225814, r225816, r225829, and r225832.
llvm-svn: 225859
|
|
|
|
|
|
| |
This is dead code.
llvm-svn: 225766
|
|
|
|
| |
llvm-svn: 225764
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of representing a linker script file as an "InputElement",
parse and evaluate scripts in the driver as we see them.
Linker scripts are not regular input files (regular file is one of
object, archive, or shared library file). They are more like
extended command line options. Linker script handling was needlessly
complicated because of that inappropriate abstraction (besides
excessive class hierarchy -- there is no such thing like ELF linker
script but we had two classes there for some reason.)
LinkerScript was one of a few remaining InputElement subclasses
that can be expanded to multiple files. With this patch, we are one
step closer to retire InputElement.
http://reviews.llvm.org/D6648
llvm-svn: 225330
|
|
|
|
|
|
|
|
|
| |
ReaderErrorCategory was used only at one place. We now have a
DynamicErrorCategory for this kind of one-time error, so use it.
The calling function doesn't really care the type of an error, so
ReaderErrorCategory was actually dead code.
llvm-svn: 224245
|
|
|
|
| |
llvm-svn: 224192
|
|
|
|
| |
llvm-svn: 224190
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The LLD linker searches initializer and finalizer function names
and emits DT_INIT/DT_FINI dynamic table tags to point to these symbols.
The -init/-fini command line options override initializer ("_init") and
finalizer ("_fini") function names used by default.
Now the -init/-fini options do not affect .init_array/.fini_array
sections. The corresponding code has been removed.
Differential Revision: http://reviews.llvm.org/D6578
llvm-svn: 223917
|
|
|
|
| |
llvm-svn: 223867
|
|
|
|
|
|
|
|
| |
This reverts commit r223330 because it broke Darwin and ELF
linkers in a way that we couldn't have caught with the existing
test cases.
llvm-svn: 223373
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The aim of this patch is to reduce the excessive abstraction from
the InputGraph. We found that even a simple thing, such as sorting
input files (Mach-O) or adding a new file to the input file list
(PE/COFF), is nearly impossible with the InputGraph abstraction,
because it hides too much information behind it. As a result,
we invented complex interactions between components (e.g.
notifyProgress() mechanism) and tricky code to work around that
limitation. There were many occasions that we needed to write
awkward code.
This patch is a first step to make it cleaner. As a first step,
this removes Group class from the InputGraph. The grouping feature
is now directly handled by the Resolver. notifyProgress is removed
since we no longer need that. I could have cleaned it up even more,
but in order to keep the patch minimum, I focused on Group.
SimpleFileNode class, a container of File objects, is now limited
to have only one File. We shold have done this earlier.
We used to allow putting multiple File objects to FileNode.
Although SimpleFileNode usually has only one file, the Driver class
actually used that capability. I modified the Driver class a bit,
so that one FileNode is created for each input File.
We should now probably remove SimpleFileNode and directly store
File objects to the InputGraph in some way, because a container
that can contain only one object is useless. This is a TODO.
Mach-O input files are now sorted before they are passe to the
Resolver. DarwinInputGraph class is no longer needed, so removed.
PECOFF still has hacky code to add a new file to the input file list.
This will be cleaned up in another patch.
llvm-svn: 223330
|
|
|
|
|
|
| |
Fix comments from Rui, also adds a test.
llvm-svn: 221860
|
|
|
|
|
|
|
|
|
|
| |
The user can use the max-page-size option and set the maximum page size. Dont
check for maximum allowed values for page size, as its what the kernel is
configured with.
Fix the test as well.
llvm-svn: 221858
|
|
|
|
| |
llvm-svn: 221648
|
|
|
|
|
|
| |
The value for --image-base is used as the base address of the program.
llvm-svn: 221589
|
|
|
|
|
|
|
| |
The GNU linker allows the user to change the page size by using the option -z
max-page-size.
llvm-svn: 221584
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lld generates an ELF by adhering to the ELF spec by aligning vma/fileoffset to a
page boundary, but this becomes an issue when dealing with large pages. This
adds support so that lld generated executables adheres to the ELF spec with the
rule vma % p_align = offset % p_align.
This is supported by the flag --no-align-segments.
This could be the default in few targets like X86_64 to save space on disk.
llvm-svn: 221571
|
|
|
|
|
|
|
| |
This adds functionality in the GNU flavor to demangle symbols when
undefined symbols are displayed to the user.
llvm-svn: 220184
|
|
|
|
| |
llvm-svn: 220131
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When creating a dynamic executable and receiving the -E flag, the linker should
export all globally visible symbols in its dynamic symbol table.
This commit also moves the logic that exports symbols in the dynamic symbol
table from OutputELFWriter to the ExecutableWriter class. It is not correct to
leave this at OutputELFWriter because DynamicLibraryWriter, another subclass of
OutputELFWriter, already exports all symbols, meaning we can potentially end up
with duplicated symbols in the dynamic symbol table when creating shared libs.
Reviewers: shankarke
http://reviews.llvm.org/D5585
llvm-svn: 219334
|
|
|
|
|
|
|
|
|
|
| |
When a file is not found, produce a proper error message. The previous error
message produced a file format error, which made me wonder for a while why
there is a file format error, but essentially the file was not found.
This fixes the problem by producing a proper error message.
llvm-svn: 217359
|
|
|
|
|
|
|
|
|
| |
By default linker would not create a separate segment to hold read only data.
This option overrides that behavior by creating the a separate read only segment
for read only data.
llvm-svn: 217358
|