Commit Graph

370 Commits

Author SHA1 Message Date
Michael J. Spencer 615c076fc1 Revert "[Passes] Parallelize the layout pass sort."
Inconsistent (and wrong) sort order on non-Windows.

llvm-svn: 182975
2013-05-31 00:05:49 +00:00
Rui Ueyama 5f037590de [lld][WinLink] Fix use-after-return and add unit tests.
llvm-svn: 182970
2013-05-30 23:17:58 +00:00
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 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 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
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
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 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
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 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
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
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
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