Rui Ueyama
b33e8bcef8
[WinLink][Driver] Handle file extensions and defualt output file name.
...
llvm-svn: 182912
2013-05-30 06:00:10 +00:00
Shankar Easwaran
a5008e3a63
[lld][elf] Add --dynamic-linker option to the ELF linker.
...
Users can override the default value of the dynamic linker to be set to the
one that appears in the command line. The path can even be empty!.
Added a test for the option.
llvm-svn: 182889
2013-05-29 22:51:01 +00:00
Rui Ueyama
81247063bf
[WinLink] Add -subsystem and -out command line option parsing.
...
The code to actually consume these flags will be added soon.
llvm-svn: 182824
2013-05-29 05:07:49 +00:00
Michael J. Spencer
20cd8b6114
Parallel write.
...
llvm-svn: 182795
2013-05-28 19:09:56 +00:00
Michael J. Spencer
5b904eccad
[Core] Add parallel_for_each.
...
llvm-svn: 182794
2013-05-28 19:09:39 +00:00
Michael J. Spencer
9ae1408556
[ELF] Make addressOfAtom thread safe.
...
The expression _atomToAddressMap[atom] may modify _atomToAddressMap.
llvm-svn: 182793
2013-05-28 19:09:25 +00:00
Michael J. Spencer
0d9d3110c7
[Passes] Parallelize the layout pass sort.
...
llvm-svn: 182792
2013-05-28 19:03:29 +00:00
Michael J. Spencer
bd66d04f34
Instrument things.
...
llvm-svn: 182789
2013-05-28 18:55:39 +00:00
Michael J. Spencer
427354ee21
[ELF][Reader] Kind in this context refers to File::Kind. Qualify with Reference::Kind.
...
llvm-svn: 182787
2013-05-28 18:43:17 +00:00
Michael J. Spencer
e5b8fe1274
[Driver] Parallelize reading initial object files.
...
llvm-svn: 182786
2013-05-28 18:37:39 +00:00
Rui Ueyama
9e56839a83
[lld][PECOFF] Add WinLinkDriver and PECOFFTargetInfo.
...
Add WinLinkDriver and connect it to the existing COFF reader. Remaining
parts are still stubs, so while it can now read a COFF file, it still
cannot link or output PE/COFF files yet.
Reviewers: Bigcheese
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D865
llvm-svn: 182784
2013-05-28 18:13:31 +00:00
Rui Ueyama
4cf437a1e9
[PECOFF] Skip section names in the symbol table because they are not atoms.
...
llvm-svn: 182721
2013-05-26 23:09:01 +00:00
Rui Ueyama
37645e5953
Remove unreachable statement.
...
llvm-svn: 182714
2013-05-26 01:25:39 +00:00
Rui Ueyama
f52a930cfb
Fix indentation.
...
llvm-svn: 182709
2013-05-25 04:59:32 +00:00
Michael J. Spencer
e24b872188
Use new version of countLeadingZeros.
...
llvm-svn: 182697
2013-05-25 00:25:21 +00:00
Rui Ueyama
25c208c020
[lld][LayoutPass] Add comment on _followOn{Nexts,Roots}.
...
Reviewers: shankarke
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D847
llvm-svn: 182595
2013-05-23 17:43:39 +00:00
Rui Ueyama
9c4f89ad2d
[lld][LayoutPass] Consolidate debug flags, removing "layout" flag.
...
DEBUG_TYPE is already defined at the beginning of this file. We don't
want to have two different debug flags for a single pass.
Reviewers: shankarke
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D845
llvm-svn: 182543
2013-05-23 01:31:25 +00:00
Rui Ueyama
972b0d3b0c
[lld] Fix wrong content permission bit.
...
Summary: "W" bit value was not consistent in ContentPermissions enum. It should always be 2.
Reviewers: kledzik
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D810
llvm-svn: 182515
2013-05-22 21:13:21 +00:00
Shankar Easwaran
d8da989e78
[lld][LayoutPass] An earlier commit moved the functionality so that Atoms would
...
be laid out by their ordinal overrides first, there was a bug that two atoms may
get the same override index due to which atoms were not ordered properly. This
commit fixes the problem.
Now the atoms are ordered by
- Section Position hints
- Atom override (Using layout-after/layout-before/in-group)
- Content Permissions
- Content Type
- File Ordinal
This also fixes the problem of running c++ static executables that
was broken by an earlier patch.
llvm-svn: 182494
2013-05-22 17:41:04 +00:00
Shankar Easwaran
4df05caadb
[lld][ELF] Inline header files into the one file using it
...
llvm-svn: 182427
2013-05-21 21:47:33 +00:00
Rui Ueyama
0e171fe3c4
[lld] Update a test file for r180209.
...
This binary file is created from shared.c.
llvm-svn: 182410
2013-05-21 20:05:55 +00:00
Shankar Easwaran
87a594835f
[lld][ELF][x86_64,hexagon] Changed dynamic atoms to live in anonymous namespace
...
so that their names are hidden.
This addresses comments raised by Sean/Rafael.
llvm-svn: 182230
2013-05-20 03:57:01 +00:00
Shankar Easwaran
9af77a2cab
[lld][ELF][All Archs] Addend is used by dynamic relocations
...
only if they are relative. This removes the FIXME when the
relocations are being emitted and checks if the relocation
is relative and only then populates the addend information.
I couldnt add a testcase for this as llvm-readobj lacks
functionality of printing dynamic relocations.
When the functionality is added, remove the commented lines
from elf/ifunc.test to test functionality.
llvm-svn: 182077
2013-05-17 05:10:30 +00:00
Shankar Easwaran
f9a7933d90
[lld][ELF][X86_64] Reorganize X86_64 Target specific code
...
This patch splits X86_64Target specific code so that
the dynamic atoms and the Relocation handlers are in seperate
files for easier maintenace. The files are sure to grow and this
makes it easier to work with.
* There is no change in functionality *
llvm-svn: 182076
2013-05-17 04:19:53 +00:00
Rui Ueyama
d819aa5c54
[lld] Do not create a temporary pair.
...
llvm-svn: 182033
2013-05-16 17:58:14 +00:00
Rui Ueyama
bd314482e1
[lld] Fix inconsistent style and do cleanup.
...
llvm-svn: 182031
2013-05-16 17:53:34 +00:00
Rui Ueyama
5f689e24de
[lld] Fix compiler warning that shift count is too big on P64.
...
llvm-svn: 181852
2013-05-14 23:51:50 +00:00
Rui Ueyama
fe81cf8f91
[lld] Allow flags other than -std= in CMAKE_CXX_FLAGS. Also simplify the IF conditions.
...
llvm-svn: 181822
2013-05-14 19:53:41 +00:00
Rui Ueyama
0196d1062f
[lld][LayoutPass] Cleanup: replace (*atom).size() with atom->size().
...
llvm-svn: 181804
2013-05-14 16:53:59 +00:00
Rui Ueyama
5ec6d1a9cd
[lld][LayoutPass] Fix a bug that caused buildbot to fail on some platforms.
...
llvm-svn: 181752
2013-05-14 01:51:56 +00:00
Rui Ueyama
ca8ca55b52
[lld][LayoutPass] Split buildFollowOnTable for readability.
...
Summary:
Split buildFollowOnTable to small functions to improve
code readability and remove code duplication. No change
in functionality.
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D790
llvm-svn: 181749
2013-05-14 00:41:52 +00:00
Rui Ueyama
deb979bf7a
[lld] Add help text for -flavor option.
...
llvm-svn: 181655
2013-05-11 01:24:38 +00:00
Rui Ueyama
0227be6b0e
[lld] Fix typo in document.
...
llvm-svn: 181652
2013-05-11 00:26:26 +00:00
Rui Ueyama
eaadec3a39
[lld] Document about how to enable debug output.
...
llvm-svn: 181640
2013-05-10 22:19:28 +00:00
Shankar Easwaran
bd525a3f63
[lld][ELF] set ordinals for mergeAtoms and fix testcase
...
llvm-svn: 181622
2013-05-10 18:52:29 +00:00
Shankar Easwaran
3c5d2c8a24
[lld][LayoutPass] This commit fixes a problem in the
...
Layoutpass by ordering atoms if they appear in the override
list first and then looking at the way of ordering atoms in
the default way.
The fix also fixes issues with the sizes of the sections,
that appear in the output properly too.
The commit also adds a testcase(orderatoms-by-override.test)
to test it and fixes all the other relevant testcases.
llvm-svn: 181605
2013-05-10 16:44:02 +00:00
Rui Ueyama
eb6b6e4857
[lld] Fix broken test. -layout-pass option does not exist.
...
Also shuffle the atoms so that it can verify the layout pass
actually changed the layout.
llvm-svn: 181573
2013-05-10 00:50:33 +00:00
Rui Ueyama
4689326d4c
[lld] Fix wrong comment.
...
llvm-svn: 181547
2013-05-09 21:14:02 +00:00
Rui Ueyama
90b3b92a8b
[lld] Use range based for loop instead of explicit iterators (no functionality change)
...
llvm-svn: 181503
2013-05-09 04:00:44 +00:00
Rui Ueyama
60f5f30687
[lld] Add comments to InputFiles::searchLibraries() arguments.
...
llvm-svn: 181492
2013-05-08 23:54:10 +00:00
Rui Ueyama
980e52d7ae
[lld][Core] Fix latch synchronization bug.
...
We need to acquire a lock before signal a condition.
Otherwise threads waiting on a condition variable can
miss a signal.
Consider two threads: Thread A executing dec() and thread
B executing sync(). The initial value of _count is 1. If
these two threads are interleaved in the following order,
thread B misses the signal sent by thread A, because at the
time thread A sends a signal, B is not waiting for it.
Thread A | Thread B
| std::unique_lock<std::mutex> lock(_condMut);
| while (!(_count == 0)) {
if (--_count == 0) |
_cond_notify_all() |
| _cond.wait();
| }
Note that "wait(lock, pred)" is equivalent to "while(!pred())
wait(lock)", so I expanded it in the above example.
Reviewers: Bigcheese
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D764
llvm-svn: 181484
2013-05-08 23:29:24 +00:00
Rui Ueyama
ec504cfffd
[lld] Add "explicit" to constructors where appropriate.
...
Summary:
Add the explicit keyword to one-parameter
constructors to prevent unintended type conversions.
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D765
llvm-svn: 181483
2013-05-08 23:20:53 +00:00
Nick Kledzik
80d8308b57
Use anonymous namespace for local classes. Patch by Rui Ueyama
...
llvm-svn: 181473
2013-05-08 21:34:11 +00:00
Shankar Easwaran
e796006333
[lld][ELF] fix build failure
...
llvm-svn: 181325
2013-05-07 15:27:02 +00:00
Shankar Easwaran
790ede43de
[lld][ELF] split ELF reader into multiple functions for readability (no change in functionality)
...
llvm-svn: 181288
2013-05-07 04:58:09 +00:00
Michael J. Spencer
75ed350132
[ELF] Initialize readers and writers on creation.
...
This makes the target handler a constructor argument because the constructor of
OutputELFWriter relies on it being initialized.
llvm-svn: 181280
2013-05-07 00:28:07 +00:00
Michael J. Spencer
b5fb0dee0c
[Core] Properly stop the ThreadPoolExecutor and use the ConcRT memory allocator.
...
llvm-svn: 181279
2013-05-07 00:27:40 +00:00
Shankar Easwaran
c8858b3469
[lld]remove lld-core
...
llvm-svn: 181244
2013-05-06 20:24:39 +00:00
Tim Northover
d11e5bc03c
[lld][ELF] fix header comment typos
...
llvm-svn: 181188
2013-05-06 08:31:58 +00:00
Shankar Easwaran
6e1f5b7d1a
[lld][ELF] reduce the number of symbols emitted in the symbol table
...
llvm-svn: 180872
2013-05-01 19:36:38 +00:00
Shankar Easwaran
02078464e1
[lld][ELF] continue on finding a section with no symbols, tests already present
...
llvm-svn: 180769
2013-04-30 03:14:01 +00:00
Shankar Easwaran
cc06891c42
[lld][ELF] (no testable functionality change) resize the number of entries in the string table for static linking
...
llvm-svn: 180692
2013-04-29 04:10:42 +00:00
Shankar Easwaran
d846d9852e
[lld][ELF] (no testable functionality change) resize the number of entries in the string table for static linking
...
llvm-svn: 180691
2013-04-29 04:10:11 +00:00
Shankar Easwaran
45a5f93517
[lld][LayoutPass] initialize the number of entries for the densehash (no functionality change)
...
llvm-svn: 180690
2013-04-29 03:27:57 +00:00
Michael J. Spencer
9d70cef481
[Core] Allow weak symbols in shared library when linking.
...
Patch by Rui Ueyama.
llvm-svn: 180209
2013-04-24 19:00:26 +00:00
Andy Gibbs
93383381d7
Distinguish between unsupported and unrecognised flavours.
...
Suggested by Nick Kledzik in reference to r179590.
llvm-svn: 179617
2013-04-16 19:24:13 +00:00
Andy Gibbs
bab932b850
Moved llvm_unreachable out of switch blocks to avoid the "control reaches end of non-void function" warning.
...
llvm-svn: 179590
2013-04-16 11:52:34 +00:00
Michael J. Spencer
1eb3b89d92
[Core] Add parallel infrastructure to lld.
...
Uses ConcRT and PPL on Windows.
llvm-svn: 179397
2013-04-12 18:40:39 +00:00
Nico Rieck
bdfd4eb223
Replace elf-dump with llvm-readobj in lld tests
...
llvm-svn: 179364
2013-04-12 04:29:01 +00:00
Shankar Easwaran
bba9fe8495
[test] missing underscore while checking for test output
...
llvm-svn: 179264
2013-04-11 04:20:21 +00:00
Shankar Easwaran
4cb24b38f6
[test] fix failing test, the test was not accounting for - in the path
...
llvm-svn: 179260
2013-04-11 04:08:11 +00:00
Shankar Easwaran
eeee23e60a
This adds functionality for undefined atoms from dynamic libraries to be added
...
to the list of undefined atoms.
The processing of undefined atoms from dynamic libraries is controlled by
use-shlib-undefines command line option.
This patch also adds additional command line arguments to allow/disallow
unresolved symbols from shared libraries and mimics GNU ld behavior.
llvm-svn: 179257
2013-04-11 02:56:30 +00:00
Michael J. Spencer
d4eb47c110
Add VTune as an optional external dependency and add task tracking.
...
llvm-svn: 178940
2013-04-06 00:56:40 +00:00
Michael J. Spencer
e6d5609de4
Revert "Correctly pass ownership of MemoryBuffers."
...
llvm-svn: 178918
2013-04-05 22:04:44 +00:00
Michael J. Spencer
ce1e53e19c
Correctly pass ownership of MemoryBuffers.
...
llvm-svn: 178914
2013-04-05 21:08:30 +00:00
Michael J. Spencer
096ea03f31
Fix uninitialized variables. Found by ubsan.
...
llvm-svn: 178913
2013-04-05 21:07:44 +00:00
Shankar Easwaran
f4a5e2f439
[ELF][test] add dynamic library search
...
llvm-svn: 178840
2013-04-05 04:34:57 +00:00
Shankar Easwaran
a4323a5cca
This fixes a SIGSEGV failure in ReaderArchive while trying to trace what
...
InputFile is being pulled from the Archive library to resolve a symbol.
The buffer which was being used was already being handed over to the
MemoryBuffer object and was being accessed after the hand over.
Moving it before the buffer is handed over.
llvm-svn: 178838
2013-04-05 03:50:15 +00:00
Shankar Easwaran
831b4a0503
[test] remove printing the file to stdout
...
llvm-svn: 178817
2013-04-04 23:53:46 +00:00
Shankar Easwaran
d953d66ee9
[ELF] fix atom order
...
llvm-svn: 178815
2013-04-04 23:51:36 +00:00
Michael J. Spencer
dfe85483d5
[Driver] Fix symlinked universal driver behavior and add a test.
...
llvm-svn: 178798
2013-04-04 22:04:16 +00:00
Nick Kledzik
563d9dc1b2
temp change to test case to debug buildbot failure
...
llvm-svn: 178788
2013-04-04 20:34:37 +00:00
Nick Kledzik
f4fa8c0a75
fix DEBUG_WITH_TYPE to build without warnings in non-debug builds
...
llvm-svn: 178787
2013-04-04 20:32:18 +00:00
Michael J. Spencer
3ab4db67f7
Fix MSVC build.
...
llvm-svn: 178781
2013-04-04 19:45:34 +00:00
Nick Kledzik
be7b005d83
fix darwin driver to validate command line options
...
llvm-svn: 178778
2013-04-04 19:26:14 +00:00
Nick Kledzik
9a632dbe0c
fix command line option to use -o
...
llvm-svn: 178777
2013-04-04 19:17:58 +00:00
Nick Kledzik
c314b46e71
This is my Driver refactoring patch.
...
The major changes are:
1) LinkerOptions has been merged into TargetInfo
2) LinkerInvocation has been merged into Driver
3) Drivers no longer convert arguments into an intermediate (core) argument
list, but instead create a TargetInfo object and call setter methods on
it. This is only how in-process linking would work. That is, you can
programmatically set up a TargetInfo object which controls the linking.
4) Lots of tweaks to test suite to work with driver changes
5) Add the DarwinDriver
6) I heavily doxygen commented TargetInfo.h
Things to do after this patch is committed:
a) Consider renaming TargetInfo, given its new roll.
b) Consider pulling the list of input files out of TargetInfo. This will
enable in-process clients to create one TargetInfo the re-use it with
different input file lists.
c) Work out a way for Drivers to format the warnings and error done in
core linking.
llvm-svn: 178776
2013-04-04 18:59:24 +00:00
Rafael Espindola
26cf0b5130
Update for API change for handling mips64el.
...
llvm-svn: 178695
2013-04-03 21:03:19 +00:00
Rafael Espindola
13de1566d0
Update the lld testsuite for the llvm-readobj format change.
...
llvm-svn: 178693
2013-04-03 20:53:45 +00:00
Shankar Easwaran
34353270a0
[ELF][Hexagon] fix few relocations and add test
...
llvm-svn: 178495
2013-04-01 20:20:11 +00:00
Shankar Easwaran
1d9e531856
[ELF][Hexagon] Create .got.plt entries with the appropriate alignment
...
llvm-svn: 178467
2013-04-01 15:14:34 +00:00
Shankar Easwaran
cbe06ca340
[ELF] Set the symbol type for undefined atoms properly
...
llvm-svn: 178466
2013-04-01 15:12:54 +00:00
Shankar Easwaran
bb9d4a5ca0
[ELF] Add dynamic hash table and get simple dynamic libraries working with Hexagon
...
llvm-svn: 178323
2013-03-29 00:53:25 +00:00
Michael J. Spencer
8759beb424
[ELF] Cache contentType and permissions.
...
llvm-svn: 178269
2013-03-28 18:58:50 +00:00
Michael J. Spencer
1067ff61e6
[Driver] Don't open files multiple times.
...
llvm-svn: 178268
2013-03-28 18:58:35 +00:00
Shankar Easwaran
c3048de5ac
[ELF][Hexagon] remove duplicated code
...
llvm-svn: 178027
2013-03-26 15:06:52 +00:00
Shankar Easwaran
7404004a4c
[ELF][Hexagon] Fixing failing test on Bots, few symbol names are available only in debug builds, dont check the symbol names
...
llvm-svn: 177991
2013-03-26 04:01:26 +00:00
Shankar Easwaran
14bfcd3e0f
[ELF] no change in functionality, add functions to symbol table so that they can be overridden by derived classes
...
llvm-svn: 177990
2013-03-26 03:53:33 +00:00
Shankar Easwaran
499aa9e028
[ELF][Hexagon] add GOTREL/GOT relocations
...
llvm-svn: 177970
2013-03-26 02:20:56 +00:00
Shankar Easwaran
1af701ec6a
[ELF] order rela.dyn/rela.plt properly
...
llvm-svn: 177969
2013-03-26 02:20:08 +00:00
Shankar Easwaran
aec2165123
[ELF] fix dynamic symbol table entries and update tests
...
llvm-svn: 177875
2013-03-25 16:41:14 +00:00
Shankar Easwaran
71738cafe6
[ELF][Hexagon][test] check .got.plt order
...
llvm-svn: 177604
2013-03-20 23:39:43 +00:00
Shankar Easwaran
0fa1b3c86a
[X86_64][test] check that interp section is not emitted when building dynamic libraries
...
llvm-svn: 177603
2013-03-20 23:34:36 +00:00
Michael J. Spencer
67f25272f1
[SymbolTable][Perf] Use hash_combine instead of a custom hash, also use memcmp.
...
ArrayRef<uint8_t>::equals(); lowers to a byte compare loop :(.
TODO: Figure out if we are getting hash collisions, or just have a lot of equal
content. Also test if crypto hashing the content instead of full compare is
better.
llvm-svn: 177588
2013-03-20 22:18:22 +00:00
Michael J. Spencer
417c19923b
[ELF][Reader] Add debug message to print all inputs the linker actually read.
...
llvm-svn: 177564
2013-03-20 19:26:10 +00:00
Michael J. Spencer
da384eebe5
[ELF][Reader][Perf] Only do loookup once.
...
llvm-svn: 177563
2013-03-20 19:25:58 +00:00
Michael J. Spencer
602ffc13b8
[ELF][Reader] Refactor how relocations are read. Improves performance.
...
This changes from reading each relocation individually for each section to just
storing the range of relocations. It also counts the relocations to preallocate
the _references array.
llvm-svn: 177562
2013-03-20 19:25:47 +00:00
Michael J. Spencer
55a7070bea
[ELF][Reader] Remove static ordinal.
...
llvm-svn: 177561
2013-03-20 19:25:34 +00:00
Michael J. Spencer
9dc5489441
memcpy instead of copy_n. Faster than copy_n on MSVC :(.
...
llvm-svn: 177557
2013-03-20 18:58:07 +00:00
Michael J. Spencer
fa405277cb
Devirtualize Reference::kind.
...
Improves performance.
llvm-svn: 177556
2013-03-20 18:57:52 +00:00
Michael J. Spencer
0f3dd616bd
Devirtualize File::kind.
...
This is the standard way of implementing LLVM RTTI.
llvm-svn: 177555
2013-03-20 18:57:27 +00:00
Michael J. Spencer
6580d1f226
Set ordinals correctly.
...
This actually doesn't change behavior with the current LinkerInvocation, but
it's needed when you make reading parallel.
llvm-svn: 177554
2013-03-20 18:56:57 +00:00
Shankar Easwaran
452ba13271
[ELF][Hexagon] Add Hexagon dynamic relocations
...
llvm-svn: 177484
2013-03-20 05:10:02 +00:00
Shankar Easwaran
06a4039572
[ELF] Interp section is only needed in dynamic executables
...
llvm-svn: 177483
2013-03-20 05:06:40 +00:00
Shankar Easwaran
1e848e0edf
[ELF] Order .got.plt properly
...
llvm-svn: 177482
2013-03-20 04:52:08 +00:00
Andy Gibbs
1fb8ce4002
Fix "control reaches end of non-void function" compiling lld on gcc.
...
llvm-svn: 177424
2013-03-19 19:13:36 +00:00
Alexey Samsonov
2712b064d8
Add virtual destructors to fix -Wnon-virtual-dtor warnings
...
llvm-svn: 177392
2013-03-19 11:41:16 +00:00
Shankar Easwaran
8962feb915
[lld] remove trailing whitespace
...
llvm-svn: 177079
2013-03-14 16:09:49 +00:00
Shankar Easwaran
74fc23fa5d
[ELF][X86_64][Hexagon] order plt/got entries properly and fix test
...
llvm-svn: 176970
2013-03-13 20:30:11 +00:00
Shankar Easwaran
8c25685be7
[Pass][Layout] Add extra debugging information
...
llvm-svn: 176925
2013-03-13 04:05:38 +00:00
Michael J. Spencer
c4e45f855c
[ELF][Writer] Let std::vector handle allocating space instead of reserving tiny portions.
...
llvm-svn: 176916
2013-03-13 00:30:08 +00:00
Michael J. Spencer
1ecf890215
[Pass][Layout] Make algorithm not n^2.
...
This reduces the time spent in this function while linking ASTMatchersTests
from %43 to %2.4 of total link time.
llvm-svn: 176842
2013-03-12 00:10:00 +00:00
Shankar Easwaran
fc9d0a7d9b
[ELF] Set values for bss_start and end symbols properly, If there are two load segments with RW permissions, bss_start and end may get set inappropriate
...
llvm-svn: 176795
2013-03-11 01:38:22 +00:00
Michael J. Spencer
9b5e8da3b4
[Driver][GNU] Accept and ignore more options.
...
llvm-svn: 176749
2013-03-09 01:41:37 +00:00
Michael J. Spencer
52fdb8bf13
Fix (possible) MSVC miscompile in debug mode.
...
llvm-svn: 176748
2013-03-09 01:41:27 +00:00
Michael J. Spencer
2d224509af
[Writer][ELF] Use correct data types for sizes. Fixes integer overflow bug.
...
This only happens when the section header count is > 1024.
llvm-svn: 176747
2013-03-09 01:41:16 +00:00
Shankar Easwaran
b327810215
[ELF] Create baseclass for all ELF writers
...
llvm-svn: 176724
2013-03-08 21:42:51 +00:00
Shankar Easwaran
c44bc347cb
[ELF] Order weak symbols properly
...
llvm-svn: 176583
2013-03-06 21:59:27 +00:00
Shankar Easwaran
7d89b2b6a7
[ELF][Hexagon] fixing dynlib test
...
llvm-svn: 176503
2013-03-05 19:00:21 +00:00
Shankar Easwaran
b6ef6c5a52
[ELF][Hexagon] fixing test failure
...
llvm-svn: 176497
2013-03-05 18:39:16 +00:00
Dmitri Gribenko
e16bc92063
Fix -Wdocumentation warning: use a correct Doxygen comment marker
...
llvm-svn: 176494
2013-03-05 18:11:01 +00:00
Shankar Easwaran
49ae019997
[ELF] Set symbol type to STT_SECTION, so that objdump.bfd doesnot get confused when disassembling output
...
llvm-svn: 176489
2013-03-05 16:09:32 +00:00
Shankar Easwaran
3ff62ade38
[ELF] add dynamic library support
...
llvm-svn: 176483
2013-03-05 14:52:48 +00:00
Shankar Easwaran
bcb722a452
[ELF] Remove comment
...
llvm-svn: 176482
2013-03-05 14:45:59 +00:00
Shankar Easwaran
7b0ae11c82
[ELF] no functionality change, update dynamicTable functionality
...
llvm-svn: 176430
2013-03-04 02:21:16 +00:00
Shankar Easwaran
03a525d6fd
[lld][ELF] Add modified writer
...
llvm-svn: 176425
2013-03-03 22:10:57 +00:00
Shankar Easwaran
1993b0000c
[lld][ELF] rename to add new support in the ELF Writer
...
llvm-svn: 176424
2013-03-03 22:09:22 +00:00
Shankar Easwaran
62bba5ddfb
[ELF] rename Writer to ExecutableWriter
...
llvm-svn: 176416
2013-03-03 07:37:17 +00:00
Shankar Easwaran
1729e12358
[ELF][Hexagon] add initial changes to add GOT/PLT
...
llvm-svn: 176415
2013-03-03 07:34:56 +00:00
Shankar Easwaran
b0e356e223
move dynamic linking atoms to Atoms.h
...
llvm-svn: 176370
2013-03-01 19:33:42 +00:00
Michael J. Spencer
8c0526593a
[Writer][ELF][x86-64] Handle GOTPCREL relocations to SharedLibraryAtoms.
...
llvm-svn: 176324
2013-03-01 01:09:46 +00:00
Michael J. Spencer
3e00c5015f
[ELF][x86-64] Only emit a PLT entry for a PLT relocation if the target atom is a SharedLibraryAtom.
...
This seems to be what ld does, but I'm not sure how it works with symbol interposition.
With this hello-world with glibc dynamically linked works.
llvm-svn: 176310
2013-03-01 00:03:56 +00:00
Michael J. Spencer
a55e37f477
Add basic linker script parsing.
...
llvm-svn: 176309
2013-03-01 00:03:36 +00:00
Shankar Easwaran
da28895597
[ELF][Hexagon] add quickdata relocations
...
llvm-svn: 176298
2013-02-28 20:54:03 +00:00
Michael J. Spencer
a26f71c9ed
[ELF][x86-64] Separate static and dynamic GOT/PLT generation.
...
llvm-svn: 176294
2013-02-28 20:04:32 +00:00
Shankar Easwaran
4685069152
[ELF][tests] changes for test cases
...
llvm-svn: 176280
2013-02-28 18:38:20 +00:00
Shankar Easwaran
937aa19a4b
[ELF] Set header flags to 0 by default
...
llvm-svn: 176279
2013-02-28 18:36:34 +00:00
Shankar Easwaran
dac3873442
[ELF][Hexagon] change Header flags
...
llvm-svn: 176278
2013-02-28 18:35:27 +00:00
Shankar Easwaran
8a2d1990d8
[lld][ELF][Hexagon] add more relocations
...
llvm-svn: 176277
2013-02-28 18:29:23 +00:00
Shankar Easwaran
d4ac74ffcc
[lld][ELF] Order segments
...
llvm-svn: 176207
2013-02-27 20:24:47 +00:00
Michael J. Spencer
2e41976893
[test] Don't start elf-dump until lld-core is done writing the output.
...
llvm-svn: 176205
2013-02-27 20:01:43 +00:00
Shankar Easwaran
c5eda3ad2b
fixing build error properly according to comment from David
...
llvm-svn: 176169
2013-02-27 05:53:38 +00:00
Shankar Easwaran
4f4ed0acdf
adding a return to fix compilation error from buildbot, build #75
...
llvm-svn: 176167
2013-02-27 05:33:27 +00:00
Shankar Easwaran
2ce6b43f40
fixing typo in header file
...
llvm-svn: 176162
2013-02-27 04:02:30 +00:00
Michael J. Spencer
2063679ec4
[ELF][Writer] Add dynamic relocation tables.
...
This adds separate PLT and dynamic relocation tables. It also fills in the dynamic table
entries for them.
llvm-svn: 176150
2013-02-27 01:30:27 +00:00
Michael J. Spencer
7f09a3d54e
[Pass][Layout] Fix bug and add debug printing.
...
Fix a bug where if two atoms had the same index in the override map,
the compare would return false. It now goes to the next check when
they are equal.
No test because it currently can't be tested. An upcomming patch will test it.
llvm-svn: 176073
2013-02-26 01:35:30 +00:00
Michael J. Spencer
f10c0a3aa0
[ELF][Writer] Fill in dynamic table entries.
...
llvm-svn: 176045
2013-02-25 20:03:09 +00:00
Shankar Easwaran
596b40871a
[ELF][Hexagon] add _SDA_BASE_(absolute symbol pointing to start of quickdata)
...
llvm-svn: 175997
2013-02-24 16:02:24 +00:00
Shankar Easwaran
1b095842ec
[ELF] Change functions to virtual, in ExecutableAtoms
...
llvm-svn: 175993
2013-02-24 15:11:55 +00:00
Shankar Easwaran
5f0afe84f5
[ELF]Change name of runtime files, so that targets can change runtime files that they own
...
llvm-svn: 175992
2013-02-24 14:54:02 +00:00
Shankar Easwaran
db74ffbe72
[ELF][Hexagon]add typeZeroFillFast
...
llvm-svn: 175983
2013-02-24 03:09:10 +00:00
Michael J. Spencer
3407211b2f
[ELF][Writer] Add hash table.
...
llvm-svn: 175972
2013-02-23 19:46:18 +00:00
Michael J. Spencer
13db19d64e
[ELF][Writer] Add a PHDR program table entry for dynamic files.
...
llvm-svn: 175951
2013-02-23 03:58:06 +00:00
Michael J. Spencer
942dbcc209
[ELF][Writer] Add dynamic string and symbol table.
...
llvm-svn: 175941
2013-02-23 01:02:31 +00:00
Shankar Easwaran
8c55c01d2a
sort quickdata for the hexagon target
...
llvm-svn: 175904
2013-02-22 18:01:08 +00:00
Shankar Easwaran
873c9ffba0
add changes for typeDataFast
...
llvm-svn: 175901
2013-02-22 17:18:53 +00:00
Michael J. Spencer
e4c0e3712f
[ELF][Writer] Add .interp section.
...
llvm-svn: 175657
2013-02-20 20:13:47 +00:00
Michael J. Spencer
b71ce655a8
[ELF][Writer] Add dynamic table.
...
llvm-svn: 175654
2013-02-20 19:46:12 +00:00
Shankar Easwaran
8a1a4e7cf7
rename fixupAddend to relocAddend
...
llvm-svn: 175638
2013-02-20 17:42:00 +00:00
Shankar Easwaran
25832ede03
functionality to handle global atoms in Merge sections
...
llvm-svn: 175636
2013-02-20 17:38:37 +00:00
Michael J. Spencer
2139795dfa
[Driver][GNULD] Lookup .so files and default to dynamic output.
...
llvm-svn: 175572
2013-02-19 23:05:36 +00:00
Michael J. Spencer
cadb082e5a
[ELF] Fix memory leak by deleting BumpPtr allocated objects.
...
llvm-svn: 175558
2013-02-19 21:04:30 +00:00
Chandler Carruth
21aaf2534d
Switch a vector<pair<const T &, const U &>> to a vector<pair<const T *,
...
const U *>>. Even in C++11 it doesn't seem this is valid as vector's
emplace support requires move assignment, and there is no way to move
assign a reference.
The real motivation however is that this fixes the build of lld with
libstdc++ 4.6.
llvm-svn: 175481
2013-02-19 01:58:11 +00:00
Michael J. Spencer
be03e2a861
[Core,Driver,ELF] Differentiate static and dynamic executables.
...
This also adds a simple relocation change for dynamic executables to
x86-64 ELF.
llvm-svn: 175208
2013-02-14 20:32:00 +00:00
Michael J. Spencer
db18847b01
[ELF][Writer] Refactor Section to not have atoms. Move atoms into AtomSection.
...
The purpose of this change is to simplify creating non-atom sections.
Previously _contentType, _sectionKind and _order were used for multiple
purposes and collided in places. This moves all of the Atom specific logic down
into AtomSection and makes Section just have raw Elf_Shdr flags.
llvm-svn: 175207
2013-02-14 20:24:38 +00:00
Shankar Easwaran
4b9cea7317
fix the mergeable string atom, when the target points to a symbol which is at a relative offset from the start of the .rodata section
...
llvm-svn: 175039
2013-02-13 06:35:33 +00:00
Shankar Easwaran
96d594b14e
add merge strings option, this temporarily fixes the problem bringing up helloworld with glibc on x86_64
...
llvm-svn: 175038
2013-02-13 06:12:52 +00:00
Shankar Easwaran
0da6d71b54
add support for merging common strings
...
llvm-svn: 174990
2013-02-12 18:46:53 +00:00
Michael J. Spencer
c3c8bc1e5c
[ELF] Add support for reading dynamic libraries.
...
llvm-svn: 174916
2013-02-11 23:03:35 +00:00
Shankar Easwaran
710b4c8fa2
fix segment ordering of elf segments
...
llvm-svn: 174659
2013-02-07 20:33:55 +00:00
Shankar Easwaran
34ab70f1e6
add changes for layoutafter/layoutbefore/ingroup/layoutpass and test cases
...
llvm-svn: 174658
2013-02-07 20:16:12 +00:00
Michael J. Spencer
ac4f444e39
[docs] lld self hosts.
...
llvm-svn: 174592
2013-02-07 07:26:45 +00:00
Michael J. Spencer
7799d15f6e
[Driver] Add -L and -l support.
...
llvm-svn: 174590
2013-02-07 06:47:17 +00:00
Michael J. Spencer
cfe59fd0d3
[Driver] Replace Target with TargetInfo. Simplify LinkerInput.
...
This removes Target and moves the functionality it had over to TargetInfo.
This also simplifies LinkerInput by removing the InputKind. This will be handled elsewhere.
llvm-svn: 174589
2013-02-07 06:46:48 +00:00
Michael J. Spencer
7a0e212f6f
[ELF][x86-64] Handle PLT32 relocations to IFUNC.
...
llvm-svn: 174428
2013-02-05 19:15:03 +00:00
Michael J. Spencer
7fec00b20e
[ELF][Layout] Provide a proper way to get the TLS segment size.
...
llvm-svn: 174427
2013-02-05 19:14:43 +00:00
Michael J. Spencer
359b6ff6bb
[ELF] Implement GOTPCREL for defined atoms.
...
llvm-svn: 174426
2013-02-05 19:14:28 +00:00
Michael J. Spencer
e6ab9f80a7
[ELF] Replace local dynamic tls access with direct access.
...
llvm-svn: 174425
2013-02-05 19:14:07 +00:00
Michael J. Spencer
be1100e192
[Resolver] Improve undefined symbol error.
...
llvm-svn: 174277
2013-02-03 10:50:06 +00:00
Michael J. Spencer
7b7e8edb86
[ELF] Use LLVM_IS_UNALIGNED_ACCESS_FAST.
...
llvm-svn: 174276
2013-02-03 10:49:57 +00:00
Michael J. Spencer
7e813242af
[ELF][Reader] Improve performance by removing calls to malloc.
...
llvm-svn: 174275
2013-02-03 10:49:47 +00:00
Michael J. Spencer
9a1da075b2
[ELF] Fix uninitialized variable.
...
llvm-svn: 174274
2013-02-03 10:49:37 +00:00
Michael J. Spencer
4673da27ef
[Archive] Update to LLVM change.
...
llvm-svn: 174273
2013-02-03 10:49:26 +00:00
Alex Rosenberg
b65e88863e
Spelling and grammar corrections.
...
llvm-svn: 174268
2013-02-03 07:05:26 +00:00
Shankar Easwaran
a47495898c
remove duplicate strings from the string table
...
llvm-svn: 174200
2013-02-01 18:06:15 +00:00
Shankar Easwaran
d476528e3d
add alignment to .got/.got.plt/.plt sections & fix tests
...
llvm-svn: 174199
2013-02-01 18:03:32 +00:00
Shankar Easwaran
f23fc86ca8
add proper copyright header
...
llvm-svn: 174178
2013-02-01 15:05:11 +00:00
Michael J. Spencer
18950a174e
[Docs] Update status :)
...
llvm-svn: 174162
2013-02-01 09:20:24 +00:00
Michael J. Spencer
08b49bf27e
[ELF][x86-64] Fix ifunc and add test.
...
In an previous commit I managed to completely disable the IRELATIVE relocation
writing code. I also used the wrong addend for the static relocation. Fix both
these issues and add a test. This test is quite brittle because there's no way
to do arithmetic on variables in FileCheck.
llvm-svn: 174161
2013-02-01 09:14:21 +00:00
Michael J. Spencer
b5d6f5e988
[ELF][x86-64] Implement static relocation model for TLS.
...
This implements the static relocation model for GOT accesses to TLS.
llvm-svn: 174155
2013-02-01 07:14:14 +00:00
Michael J. Spencer
b0ed8e80d8
[ELF][x86-84] Add static TLS support.
...
llvm-svn: 174154
2013-02-01 07:13:49 +00:00
Michael J. Spencer
3c75665fdd
[ELF][x86-64] Add the _GLOBAL_OFFSET_TABLE_ Atom in the correct location.
...
Now we link against glibc without --noinhibit-exec.
llvm-svn: 174150
2013-02-01 05:36:14 +00:00
Michael J. Spencer
c8803d27aa
[ELF] Add more absolute atoms. Simplify how they are resolved.
...
llvm-svn: 174149
2013-02-01 05:36:00 +00:00
Shankar Easwaran
73ef70b50f
add hexagon scatter bits and split hexgontargethandler to hexagonrelocationhander
...
llvm-svn: 174148
2013-02-01 05:26:02 +00:00
Michael J. Spencer
280dadbbaf
[Core] Only complain about undefined symbols if they are marked as canBeNullNever.
...
llvm-svn: 174107
2013-01-31 22:56:13 +00:00
Michael J. Spencer
461d33648b
[ELF][x86-64] Improve unknown relocation message.
...
llvm-svn: 174092
2013-01-31 21:00:57 +00:00
Michael J. Spencer
3830d2c49f
[ELF] Create atoms for progbits sections with no symbols but still have content.
...
llvm-svn: 174091
2013-01-31 21:00:42 +00:00
Shankar Easwaran
fb8565a9c6
add support for assigning virtual addresses to TDATA/TBSS sections
...
llvm-svn: 174065
2013-01-31 16:04:47 +00:00
Michael J. Spencer
b3c04d28c8
[ELF] Fix circular initialization bug.
...
llvm-svn: 173968
2013-01-30 20:36:56 +00:00
Michael J. Spencer
901fd6a4c8
[ELF] Use the target's LayoutHandler.
...
llvm-svn: 173966
2013-01-30 20:05:27 +00:00
Shankar Easwaran
e07245cdfc
hexagon targetinfo changes for getting the relocation kind from string and vice versa
...
llvm-svn: 173942
2013-01-30 16:05:43 +00:00
Shankar Easwaran
ddb122811b
simplify hexagon relocations handling
...
llvm-svn: 173938
2013-01-30 15:38:41 +00:00
Michael J. Spencer
23d23953b3
[ELF][x86-64] Add TargetLayout.
...
llvm-svn: 173922
2013-01-30 10:43:25 +00:00
Michael J. Spencer
8254185eea
Whitespace.
...
llvm-svn: 173921
2013-01-30 10:43:10 +00:00
Michael J. Spencer
d21b72730f
[ELF] Remove ReferenceKinds.
...
llvm-svn: 173912
2013-01-30 07:46:54 +00:00
Michael J. Spencer
f35c3e434a
[ELF] Use TargetRelocationHandler to apply relocations.
...
llvm-svn: 173911
2013-01-30 07:46:31 +00:00
Michael J. Spencer
409a737f36
[ELF] Add {Hexagon,PPC,X86}TargetHandler.
...
llvm-svn: 173909
2013-01-30 07:36:45 +00:00
Shankar Easwaran
072031a265
change the function names in RelocationHelper to adhere to convention
...
llvm-svn: 173908
2013-01-30 07:36:09 +00:00
Shankar Easwaran
396e4c0b13
change DefaultLayout to TargetLayout inside member variables
...
llvm-svn: 173906
2013-01-30 07:19:57 +00:00
Shankar Easwaran
a6f00fe083
add targethandler hooks from Writer and cleanup
...
llvm-svn: 173904
2013-01-30 07:11:43 +00:00
Michael J. Spencer
457a77739b
[ELF][x86-64] Add X86_64TargetRelocationHandler and friends.
...
llvm-svn: 173897
2013-01-30 05:26:03 +00:00
Michael J. Spencer
4e9d9cd23b
[ELF] Add ELFTargetRelocationHandler.
...
llvm-svn: 173896
2013-01-30 05:25:44 +00:00
Shankar Easwaran
a51870b143
add Relocation helper functions
...
llvm-svn: 173895
2013-01-30 04:49:54 +00:00
Michael J. Spencer
4260657fab
[ELF] Make AtomLayout more accessible.
...
This is needed to allow constant time access to the final layout of atoms.
llvm-svn: 173874
2013-01-30 01:25:06 +00:00
Michael J. Spencer
e68f90355c
[ELF] Chop the ELF prefix off of most things.
...
llvm-svn: 173838
2013-01-29 22:03:39 +00:00
Shankar Easwaran
185e8a076d
remove targetInfo and layout from ELFTargetLayout
...
llvm-svn: 173824
2013-01-29 20:13:16 +00:00
Michael J. Spencer
43ecac5a2c
[ELF] Fix header sort order.
...
llvm-svn: 173822
2013-01-29 19:53:41 +00:00
Michael J. Spencer
289dcedea5
[ELF] Add support for IFUNC.
...
This sadly doesn't have a test for the final
output because llvm-objdump can't dump relocations
that don't belong to a section :(
llvm-svn: 173808
2013-01-29 16:38:03 +00:00
Michael J. Spencer
bf77be3ba5
[ELF] Give Chunk a ELFTargetInfo.
...
llvm-svn: 173743
2013-01-29 01:07:47 +00:00
Michael J. Spencer
adfb7eb211
[ELF] Remove OwningPtr from the Chunk::write interface.
...
llvm-svn: 173741
2013-01-29 01:00:21 +00:00
Michael J. Spencer
bdf8bc8315
[ELF] Clean up doxygen comments.
...
llvm-svn: 173740
2013-01-29 01:00:04 +00:00
Shankar Easwaran
072fb1a403
add register section, remove contentType from sectionKey
...
llvm-svn: 173709
2013-01-28 19:21:04 +00:00
Michael J. Spencer
d269a3e281
[ELF] Use correct regex in test.
...
llvm-svn: 173665
2013-01-28 06:11:39 +00:00
Michael J. Spencer
990ec2b223
[ELF] Use entry point from LinkerOptions.
...
Patch by Ahmed Bougacha!
llvm-svn: 173655
2013-01-28 04:15:44 +00:00
Benjamin Kramer
ac49d37a63
lldX86_64ELFTarget depends on lldCore.
...
llvm-svn: 173573
2013-01-26 13:49:19 +00:00
Michael J. Spencer
20231f1275
Use proper delete.
...
llvm-svn: 173570
2013-01-26 12:26:56 +00:00
Michael J. Spencer
5ba1a96a10
[ELF][x86-64] Add relocation string<->kind.
...
llvm-svn: 173533
2013-01-25 23:48:58 +00:00
Michael J. Spencer
866e0f8a8c
[ELF][X86-64] Use the correct base address.
...
llvm-svn: 173527
2013-01-25 23:23:24 +00:00
Michael J. Spencer
385f312686
[CMake] Setup include dirs properly.
...
llvm-svn: 173488
2013-01-25 20:50:01 +00:00
Shankar Easwaran
4277c2d6bf
change all occurences of File to FileELF
...
llvm-svn: 173449
2013-01-25 15:19:02 +00:00
Shankar Easwaran
3256d4ff62
add elf targethandler
...
llvm-svn: 173430
2013-01-25 07:39:18 +00:00
Michael J. Spencer
88f4d24e4a
[Driver] Run the pass manager.
...
llvm-svn: 173381
2013-01-24 22:52:42 +00:00
Michael J. Spencer
19c4756ff2
Move SimpleAtoms.h to ReaderWriter.
...
llvm-svn: 173380
2013-01-24 22:52:25 +00:00
Nick Kledzik
36293f6512
Add SectionPosition and OrderPass
...
llvm-svn: 173300
2013-01-23 22:32:56 +00:00
Michael J. Spencer
563d33a6f1
[ELF] Read IFUNC symbols correctly as typeResolver.
...
llvm-svn: 173299
2013-01-23 22:08:46 +00:00
Michael J. Spencer
c0d3c4efe6
Add PassManager.
...
It owns and manages passes.
llvm-svn: 173287
2013-01-23 20:03:10 +00:00
Shankar Easwaran
c142874c9c
change from using 2 bits to 4 bits, as 2 bits arent enough to hold the enumeration OutputKind
...
llvm-svn: 173266
2013-01-23 15:11:22 +00:00
Michael J. Spencer
64afcb4c6b
Move everything over to TargetInfo.
...
I really would have liked to split this patch up, but it would greatly
complicate the lld-core and lld drivers having to deal with both
{Reader,Writer}Option and TargetInfo.
llvm-svn: 173217
2013-01-23 01:18:43 +00:00
Michael J. Spencer
4586fbcbad
[Core] Move Resolver and SymbolTable over to TargetInfo.
...
No functionality change.
llvm-svn: 173192
2013-01-22 20:49:42 +00:00
Shankar Easwaran
58ad41b563
change enum class to enum, as g++ doesnot support bitfields with enumerated classes with c++11 flag set
...
llvm-svn: 173166
2013-01-22 14:58:51 +00:00
Shankar Easwaran
c7176430dc
it looks like g++ 4.7.2 doesnot like bit fields when the type is a enumeration (Throws an error as bit-field with non integral type)
...
llvm-svn: 173125
2013-01-22 04:12:03 +00:00
Michael J. Spencer
d68d6196af
Add {,ELF,MachO}TargetInfo.
...
llvm-svn: 173117
2013-01-22 02:15:30 +00:00
Shankar Easwaran
6d9921fc53
no functionality changes(split WriterELF into multiple files)
...
llvm-svn: 173082
2013-01-21 20:09:55 +00:00
Michael J. Spencer
8af48f3864
[Core] Use LLVM's ErrorOr<T>.
...
llvm-svn: 172993
2013-01-20 21:27:05 +00:00
Michael J. Spencer
359e09d4f5
[docs] Document lld's usage of C++11 features.
...
llvm-svn: 172972
2013-01-20 10:39:17 +00:00
Chandler Carruth
b5f3bd956c
Replace the 'final' keyword with 'LLVM_FINAL' as GCC 4.6 doesn't support
...
the keyword.
If anyone cares deeply about the final optimizations with GCC, we might
want to add a version test to the LLVM definition, but I'm perfectly
happy with this just only firing under Clang and modern MSVC builds.
llvm-svn: 172898
2013-01-19 09:57:51 +00:00
Chandler Carruth
8b95c03fca
Allow the LLD CMake build to work with -std=gnu++0x and -std=gnu++11 as
...
well as c++0x and c++11. This can be especially useful when building
with GCC in C++11 mode.
llvm-svn: 172897
2013-01-19 09:41:42 +00:00
Chandler Carruth
058761266d
Fix the build with libstdc++ v4.6 on Linux by supplying an explicit move
...
assignment operator. There is an issue where classes with deleted copy
constructors and user defined move constructors end up with an
implicitly deleted copy constructor that is selected instead of the
implicit move constructor. This is a bit of a hack, but it allows me to
build LLD in a bootstrap with libstdc++ which is my primary goal.
llvm-svn: 172896
2013-01-19 09:38:14 +00:00
Michael J. Spencer
a17b72e7cf
[Core] Fix passing an rvalue reference of ErrorOr.
...
llvm-svn: 172850
2013-01-18 21:42:01 +00:00
Michael J. Spencer
71c00f42bd
[ELF] Use operator new(std::size_t, BumpPtrAllocator).
...
llvm-svn: 172675
2013-01-16 23:34:45 +00:00
Michael J. Spencer
84d3b01fb5
[ELF] clang-format ReaderELF.cpp
...
llvm-svn: 172674
2013-01-16 23:34:32 +00:00
Michael J. Spencer
fe71a50494
Trailing whitespace.
...
llvm-svn: 172554
2013-01-15 21:13:14 +00:00
Michael J. Spencer
8b3898af26
[ELF] Never allocate content to weak symbols as they may be merged away.
...
This is done by creating a new non-weak anonymous symbol and creating
an atom with content for that symbol. This is added after the weak symbol
so that they have the same address.
llvm-svn: 172553
2013-01-15 21:13:02 +00:00
Michael J. Spencer
842885e06e
[ELF] Refactoring and style cleanup. No functionality change.
...
llvm-svn: 172552
2013-01-15 21:12:45 +00:00
Michael J. Spencer
b03f6c489a
[ELF] Update for LLVM Object/ELF changes.
...
llvm-svn: 172516
2013-01-15 07:53:22 +00:00
Michael J. Spencer
bb78a04088
[ELF] Replace [...] x_{begin,end}() with range<[...]> x().
...
llvm-svn: 172513
2013-01-15 06:55:37 +00:00
Michael J. Spencer
aa3aa570dc
[Core] Add iterator ranges.
...
This is based on code by Jeffrey Yasskin. It has been modified to compile
with MSVC and reformated to LLVM style.
llvm-svn: 172512
2013-01-15 06:55:25 +00:00
Michael J. Spencer
7fe77f8c61
[ELF] Fix use of LLVM RTTI.
...
llvm-svn: 172511
2013-01-15 06:55:11 +00:00
Shankar Easwaran
f6dc082f91
remove const from FindByName
...
llvm-svn: 172507
2013-01-15 03:02:33 +00:00
Michael J. Spencer
ed1950719b
[docs] Add driver documentation.
...
This gives an overview of the driver and explains how to add options and driver flavors.
llvm-svn: 172502
2013-01-15 02:00:59 +00:00
Michael J. Spencer
31dffbb659
[docs] Update status.
...
llvm-svn: 172501
2013-01-15 02:00:48 +00:00
Nick Kledzik
233f537799
Add new merge-by-content Merge attribute for use by anonymous
...
constants and string literals which the linker should coalesce.
llvm-svn: 172495
2013-01-15 00:17:57 +00:00
Nick Kledzik
343ecbd6ba
Fix shadowed variable warning
...
llvm-svn: 172482
2013-01-14 22:10:22 +00:00
Michael J. Spencer
ca20ffbab2
[test] Fix tests on Windows.
...
llvm-svn: 172339
2013-01-13 01:09:51 +00:00
Michael J. Spencer
74ba722be1
[YAML] Fix undefined behavior.
...
llvm-svn: 172338
2013-01-13 01:09:39 +00:00
Michael J. Spencer
57752dc56e
Factor File::addAtom out to MutableFile::addAtom.
...
This removes a bunch of llvm_unreachables and makes a File's mutability part of the type system.
llvm-svn: 172297
2013-01-12 02:45:54 +00:00
Michael J. Spencer
3756852d62
[ELF] Fix comment.
...
llvm-svn: 172266
2013-01-11 22:39:56 +00:00
Michael J. Spencer
4ffbd608cd
[ELF] Add AtomLayout instead of using pair<Atom, pair<uint64_t, uint64_t>>.
...
llvm-svn: 172265
2013-01-11 22:39:44 +00:00
Michael J. Spencer
2a5763cd86
[ELF] Use the correct cast.
...
llvm-svn: 172264
2013-01-11 22:39:31 +00:00
Michael J. Spencer
bbe4b9812b
[ELF] Simplify assert.
...
llvm-svn: 172255
2013-01-11 21:38:36 +00:00
Shankar Easwaran
b1d09c07f1
better implementation for findOutputSection
...
llvm-svn: 172236
2013-01-11 18:56:11 +00:00
Shankar Easwaran
7381db059a
add noinhibit exec option
...
llvm-svn: 172204
2013-01-11 15:11:47 +00:00
Shankar Easwaran
d127d8169a
add hexagon target to lld
...
llvm-svn: 172202
2013-01-11 15:01:04 +00:00
Michael J. Spencer
ecd5f4062f
[ELF] Add support for __init_array_{start,end}.
...
With this change c++ global constructors and destructors work.
llvm-svn: 172133
2013-01-10 22:41:42 +00:00
Michael J. Spencer
36b9b8f945
[ELF] Fix leading 0 count. Matches change in llvm.
...
llvm-svn: 172132
2013-01-10 22:41:19 +00:00
Michael J. Spencer
aa8a5a2ab2
[ELF] Fixed -Wunused in -asserts mode.
...
llvm-svn: 172131
2013-01-10 22:41:05 +00:00
Shankar Easwaran
37c528259a
style changes
...
llvm-svn: 172080
2013-01-10 18:16:10 +00:00
Shankar Easwaran
2ca8e7d733
support for adding linker defined symbols
...
llvm-svn: 172040
2013-01-10 03:16:27 +00:00
Michael J. Spencer
ad5f00ea2d
[Archive] Use a hash map to lookup symbols in archives. Increases performance of linking lua by ~6x.
...
llvm-svn: 172028
2013-01-10 01:27:45 +00:00
Michael J. Spencer
41d9dc56d3
Style fixes.
...
llvm-svn: 171997
2013-01-09 20:39:07 +00:00
Michael J. Spencer
cf2306fe2b
Fix the elf/rodata.objtext test to work when first run.
...
llvm-svn: 171992
2013-01-09 20:10:30 +00:00
Nick Kledzik
cc3d2dca60
Better tie together ContentType and Permissions.
...
Since most content types (e.g. typeCode) have a
preferred Permission, add a function to do that mapping.
Then hook up to YAML Reader and Writer such that
the 'permissions:' key does not need to be specified unless
overriding what the content type prefers.
llvm-svn: 171929
2013-01-09 01:17:12 +00:00
Nick Kledzik
bd49198409
add extra namespace for gcc-4.7 compatibility
...
llvm-svn: 171918
2013-01-08 23:51:03 +00:00
Nick Kledzik
80fe907903
fix typo
...
llvm-svn: 171916
2013-01-08 23:43:11 +00:00
Michael J. Spencer
6047163a24
[lld] Add support for -mllvm.
...
There is no way to test this at the moment because the options are not
processed until the link starts, and we can't pass an empty file.
llvm-svn: 171910
2013-01-08 22:59:27 +00:00
Michael J. Spencer
79fafccb5e
[Driver] Fix indentation.
...
llvm-svn: 171909
2013-01-08 22:59:01 +00:00
Nick Kledzik
8a3052eab0
Rename YAML key 'fixups:' to 'references:'
...
llvm-svn: 171898
2013-01-08 21:12:13 +00:00
Nick Kledzik
809b9955e8
Fix to work with style of new YAML writer
...
llvm-svn: 171897
2013-01-08 21:05:47 +00:00
Michael J. Spencer
d2a4ccf8f9
[ELF] Add R_X86_64_64 relocation.
...
llvm-svn: 171836
2013-01-08 02:12:15 +00:00
Michael J. Spencer
8f80cd92d9
[lld] Add and ignore some flags for ld compat.
...
llvm-svn: 171835
2013-01-08 02:12:01 +00:00
Michael J. Spencer
8de8364753
[ELF] Properly handle constant data.
...
With this hello world works with dietlibc on x86-64 Linux.
llvm-svn: 171711
2013-01-07 08:00:42 +00:00
Michael J. Spencer
956b03618c
[lld] Add -emit-yaml option. This outputs yaml instead of a binary.
...
llvm-svn: 171710
2013-01-07 08:00:25 +00:00
Michael J. Spencer
1ac382f0c5
[ELF] Emit the file header and program headers at the beginning of the first segment.
...
This is required for the loader to correctly set AT_PHDR.
With this lld can correctly link against dietlibc and get to main.
llvm-svn: 171709
2013-01-07 08:00:04 +00:00
Michael J. Spencer
00b702c95c
[ELF] Change Segment to hold Chunks instead of Sections. No functionality change.
...
llvm-svn: 171708
2013-01-07 07:59:46 +00:00
Michael J. Spencer
c8a12cce98
[ELF] Remove dead variable.
...
llvm-svn: 171707
2013-01-07 07:59:34 +00:00
Michael J. Spencer
28c6594c71
[ELF] Emit zeroFill as STT_OBJECT in the final executable. ld does this.
...
llvm-svn: 171704
2013-01-07 07:05:52 +00:00
Michael J. Spencer
cdb892488e
[ELF] Add common x86_64 relocation types.
...
llvm-svn: 171703
2013-01-07 06:58:53 +00:00
Michael J. Spencer
0c3f25ead9
[Driver] x86-64 should use ELF 64.
...
llvm-svn: 171693
2013-01-07 04:51:32 +00:00
Michael J. Spencer
c41d48fdee
[ELF] Give a slightly better message for unknown relocation types.
...
llvm-svn: 171692
2013-01-07 04:51:17 +00:00
Michael J. Spencer
fd3981d6db
[ELF] Update to llvm change.
...
llvm-svn: 171652
2013-01-06 05:40:27 +00:00
Michael J. Spencer
00744bf495
[YAML] Fix -Wcovered-switch-default
...
llvm-svn: 171645
2013-01-06 00:45:22 +00:00
Michael J. Spencer
c4048062e5
[CMake] Don't add flags this late and don't force libc++. Error if we know the compiler doesn't support c++11.
...
llvm-svn: 171596
2013-01-05 04:16:52 +00:00
Nick Kledzik
6b079f5e2f
Removes files for separate ReaderYAML.cpp and WriterYAML.cpp
...
and adds a new file ReaderWriterYAML.cpp that uses YAML I/O.
Lots of tweaks to test suite for slightly different YAML encoding.
llvm-svn: 171592
2013-01-05 02:22:35 +00:00
Reid Kleckner
e974bd1be9
Avoid MSVCRT assertion on comparing phdr iterators
...
llvm-svn: 171591
2013-01-05 02:21:42 +00:00
Michael J. Spencer
3a772ebbe4
[CMake] Add lld to the list of test dependencies.
...
llvm-svn: 171580
2013-01-05 00:51:04 +00:00
Michael J. Spencer
70d0e10c5f
Target test fix.
...
llvm-svn: 171579
2013-01-05 00:47:15 +00:00
Michael J. Spencer
3124422a8b
[ELF] Add skeleton for X86-64 relocations.
...
llvm-svn: 171578
2013-01-05 00:47:04 +00:00
Michael J. Spencer
18225e7be1
[Driver] Add -flavor core support. This will be tested by other tests using -flavor core.
...
llvm-svn: 171577
2013-01-05 00:46:45 +00:00
Michael J. Spencer
5adebbd6a6
[ELF][Writer] Don't infinite loop.
...
This will be tested by a following committ that runs the linker
with no inputs.
llvm-svn: 171576
2013-01-05 00:46:23 +00:00
Michael J. Spencer
b14ac9b1fe
Style
...
llvm-svn: 171575
2013-01-05 00:46:10 +00:00
Michael J. Spencer
bc7f2a7359
[Driver] Add x86-64 target.
...
llvm-svn: 171557
2013-01-04 23:34:29 +00:00
Michael J. Spencer
65f6113d21
[ELF] STT_GNU_IFUNC is a known symbol type, so accept it. We do not yet implement its semantics.
...
llvm-svn: 171533
2013-01-04 21:25:25 +00:00
Michael J. Spencer
552074f18e
Style fixes.
...
llvm-svn: 171531
2013-01-04 21:18:34 +00:00
Michael J. Spencer
b8c853e5eb
[Passes][GOT] Fix style.
...
llvm-svn: 171530
2013-01-04 21:18:13 +00:00
Michael J. Spencer
85d998a109
[Driver] Error on undefined.
...
llvm-svn: 171529
2013-01-04 21:18:02 +00:00
Michael J. Spencer
7f693c50db
Slightly better diagnostics on duplicate symbols.
...
llvm-svn: 171528
2013-01-04 21:17:51 +00:00
Michael J. Spencer
a2c9727810
[ELF] Handle misaligned ELF files properly.
...
llvm-svn: 171526
2013-01-04 21:09:21 +00:00
Alex Rosenberg
59095f1cf9
Add .arcconfig for Phabricator command-line support
...
llvm-svn: 171451
2013-01-03 02:15:37 +00:00
NAKAMURA Takumi
43632a26a5
Update the copyright coredits -- Happy new year 2013!
...
llvm-svn: 171342
2013-01-01 10:00:19 +00:00
Shankar Easwaran
495d38bf46
add Changes to ELF Writer to layout sections/segments in the output executable
...
llvm-svn: 171135
2012-12-27 02:26:30 +00:00
Shankar Easwaran
bbf9ddda04
changes for the ELF Reader : split up into AtomsELF.h/Adding new permissions permRWX
...
llvm-svn: 171127
2012-12-27 01:40:08 +00:00
Shankar Easwaran
b3cb257b8b
changes to fix Hexagon Relocation so that it accounts for the bitmask properly as documented in the ABI
...
llvm-svn: 171125
2012-12-27 01:04:00 +00:00
Andy Gibbs
d02bf1d232
Fix build issue when building lld against libstdc++ 4.7
...
llvm-svn: 170983
2012-12-22 09:46:10 +00:00
Michael J. Spencer
8ac9150556
[ELF][Reader] Ignore SHF_GROUP when switching on flags.
...
llvm-svn: 170624
2012-12-20 00:37:24 +00:00
Michael J. Spencer
6344b322e2
Style fixes.
...
llvm-svn: 170623
2012-12-20 00:37:10 +00:00
Michael J. Spencer
800de03813
[Core][ErrorOr] Add support for user error data.
...
llvm-svn: 170483
2012-12-19 00:51:07 +00:00
Michael J. Spencer
db1450800a
[CMake] Fix external llvm build. It needs to know where llvm-tblgen is.
...
llvm-svn: 169794
2012-12-10 23:52:34 +00:00
Michael J. Spencer
74f29afd58
[Driver] Add test.
...
llvm-svn: 169721
2012-12-10 02:53:10 +00:00
Michael J. Spencer
99b99d26bb
[Driver] Properly handle -entry for X86 Linux.
...
llvm-svn: 169718
2012-12-09 23:56:37 +00:00
Michael J. Spencer
3825760550
[Driver] Add -### support for printing out the core command line.
...
llvm-svn: 169717
2012-12-09 23:56:26 +00:00
Michael J. Spencer
48ed572710
Remove left over debugging output.
...
llvm-svn: 169716
2012-12-09 23:56:03 +00:00
Michael J. Spencer
c8b60a70be
[Driver] Make the X86Linux target use X86 (not x64) and properly initalize WriterOptions.
...
llvm-svn: 169715
2012-12-09 23:55:52 +00:00
Michael J. Spencer
9ff4be240a
Add the core architecture for the lld driver.
...
This includes selecting which driver to emulate, option parsing, invocation
building, and running the link. This currently only supports a very basic
subset of ld for x86_64-linux.
lld -flavor ld obj.o -o obj
or symlink lld as (ld , link, ld64, core) to get the desired behavior without
-flavor.
llvm-svn: 169659
2012-12-08 00:47:36 +00:00
Benjamin Kramer
f7798e34c9
Add library dependencies to the lld cmake build.
...
llvm-svn: 169306
2012-12-04 21:09:04 +00:00
Hemant Kulkarni
736f7fbee2
Populate entry point into ELF executable.
...
llvm-svn: 168461
2012-11-21 21:07:36 +00:00
Hemant Kulkarni
87dbac00a9
Add program header emission to ELF writer. This patch also rearranges sections for efficient memory utilization
...
llvm-svn: 167874
2012-11-13 21:34:45 +00:00
Shankar Easwaran
85bb045106
changes after mspencer reviews in phabricator
...
llvm-svn: 167871
2012-11-13 20:34:55 +00:00
Michael J. Spencer
a5d22811af
Fix style violations.
...
llvm-svn: 167869
2012-11-13 19:58:58 +00:00
Shankar Easwaran
70b4dcfbcd
Adding support to resolve symbols with archive libraries in lld
...
llvm-svn: 167854
2012-11-13 18:39:10 +00:00
Hemant Kulkarni
f828613945
Add absolute symbol scope recognition in lld/Core
...
llvm-svn: 167394
2012-11-05 19:13:54 +00:00
Nick Kledzik
8cf031e4cc
rename dylibNamesToOrdinal now that it is an ivar
...
llvm-svn: 167254
2012-11-01 21:44:45 +00:00
Michael J. Spencer
a1913fbda9
[ELF] Fix -Woverloaded-virtual
...
llvm-svn: 167246
2012-11-01 19:46:19 +00:00
Michael J. Spencer
d91bc3c8bb
[MachO] Fix use after free.
...
llvm-svn: 167245
2012-11-01 19:46:06 +00:00
Michael J. Spencer
c1d704550a
[MachO] Fix uninitialized variables.
...
llvm-svn: 167244
2012-11-01 19:45:53 +00:00
Michael J. Spencer
e337e60552
Fix cl brokeness.
...
cl is not attempting to complete a templated class when used in this
context. The conversion forces this to happen.
Thanks to Richard Smith for figuring this out.
llvm-svn: 167166
2012-10-31 20:47:30 +00:00
Michael J. Spencer
d2f7e50867
Add missing include.
...
llvm-svn: 167165
2012-10-31 20:47:11 +00:00
Sid Manning
823e8bb7be
This patch changes the following:
...
* Use conventional naming for KindHandlers.
* Add X86 relocation routines.
* Use std::function instead of function pointers in _fixupHandler map.
* Change _fixupHandler map from std::map to llvm::DenseMap.
* Add simple testcase for x86 relocations.
llvm-svn: 166700
2012-10-25 17:53:04 +00:00
Sid Manning
2a59024ff8
This update does the following:
...
* Moves enum Scope from DefinedAtom.h to Atom.h
* Adds scope method to AbsoluteAtom class
* Updates YAML to print scope of AbsoluteAtoms
* Update Native Reader/Writer to handle this new, "attribute"
* Adds testcase
Reviewed and approved by Nick Kledzik
llvm-svn: 166189
2012-10-18 17:16:19 +00:00
Sid Manning
42064e5b60
* Add relocation reference support for Hexagon and PowerPC.
...
- Hexagon has many relocation types, this patch covers just
a subset, more will be added.
- PowerPC support was added so that we can verify mixed endian
environments.
* Add some basic test cases
* Update ldd-core to accept -endian flag
llvm-svn: 165477
2012-10-09 02:20:47 +00:00
Sid Manning
e3612f0f21
Fix incorrect setting of EI_DATA
...
llvm-svn: 165310
2012-10-05 14:06:24 +00:00