Commit Graph

1196 Commits

Author SHA1 Message Date
Rui Ueyama a7236598bb [PECOFF] Data type of SectionNumber is now unsigned (r203986).
So we don't need static_cast's to convert it from signed to unsigned.

llvm-svn: 203992
2014-03-15 00:39:12 +00:00
Rui Ueyama 39aa6af23f Remove redundant "virtual" keyword.
llvm-svn: 203903
2014-03-14 07:10:43 +00:00
Rui Ueyama 74af50134b [PECOFF] Handle large objects having more than 32768 sections.
The COFF spec says that the SectionNumber field in the symbol table is 16 bit
signed type, but MSVC treats the field as if it is unsigned.

llvm-svn: 203901
2014-03-14 07:04:01 +00:00
Rui Ueyama aca3c7c6f4 [PECOFF] Fix link order.
LLD fails to link symbol "_main" if the symbol is in a library file and
the library file is given as a bare argument (i.e. not with /defaultlib
option). It's because library files given as bare arguments are processed
before other libraries given with /defaultlib, so when Linker finds msvcrtd
needs a definition for "_main", the file providing the main function has
already been processed and skipped. Linker don't revisit libraries if it's
not given with /defaultlib.

To fix it this patch change the way of command line handling; files end with
".lib" are treated as if they are given with /defaultlib. I don't believe
it's 100% correct behavior but it's better than before.

llvm-svn: 203892
2014-03-14 05:59:16 +00:00
Rui Ueyama ebffa9b4be [PECOFF] Fix arguments passed to lib.exe.
llvm-svn: 203891
2014-03-14 05:04:08 +00:00
Rui Ueyama 516273ba99 [PECOFF] Make WinLinkDriver::parse() and allocate*() functions thread-safe.
Looks like a major cause of instability on Windows is this thread-safety bug.

llvm-svn: 203889
2014-03-14 04:28:38 +00:00
Rui Ueyama f88731f293 [PECOFF] Implement /lib option.
This option is not documented and seems weird, but yeah we need it anyway.

llvm-svn: 203884
2014-03-14 03:06:55 +00:00
Rui Ueyama 7d96f0cc38 Use short identifier, s/diagnostics/diag/.
llvm-svn: 203876
2014-03-14 00:38:34 +00:00
Rui Ueyama b3f679e1ab [PECOFF] Support response files.
If the driver finds a command line option in the form of "@filename", the
option will be replaced with the content of the given file. It's an error
if a response file cannot be read.

llvm-svn: 203875
2014-03-14 00:36:30 +00:00
Ahmed Charles 13c70b6d4b Replace OwningPtr with std::unique_ptr.
This results in some simplifications to the code where an OwningPtr had to
be used with the previous api and then ownership moved to a unique_ptr for
the rest of lld.

llvm-svn: 203809
2014-03-13 16:20:38 +00:00
Rui Ueyama c83b4eb3a1 [PECOFF] Handle objects with unknown machine type header value.
An object whose machine type header value is unknown looks a bit odd but
is valid. If an object contains only machine-type-independent data, you
can leave the type field unspecified. Some files in oldname.lib are such
object files.

llvm-svn: 203752
2014-03-13 05:12:36 +00:00
Michael J. Spencer ac1b1d7bfc [docs] Add some more information on missing relocations.
llvm-svn: 203744
2014-03-13 01:11:03 +00:00
Rui Ueyama b325b81138 [ELF] Fix MSVC warning on conversion from enum to bool.
This function returns a boolean value, so returning STT_COMMON does not
make sense.

llvm-svn: 203731
2014-03-12 23:04:27 +00:00
Ahmed Charles d6432c8aed [Cleanup] Sort includes.
llvm-svn: 203666
2014-03-12 15:55:13 +00:00
Michael J. Spencer e1de2a39df [docs] Add list of missing GNU ld command line options.
llvm-svn: 203491
2014-03-10 21:25:43 +00:00
Simon Atanasyan fe3e0a2abf [Mips] Fix addendum reading for R_MIPS_26 relocation.
llvm-svn: 203412
2014-03-09 13:20:01 +00:00
Simon Atanasyan c146325b26 [Mips] Fix addendum reading for R_MIPS_32 relocation.
llvm-svn: 203411
2014-03-09 13:19:54 +00:00
Simon Atanasyan 0f96aca940 [Mips] Fix addendum reading for R_MIPS_HI16 / R_MIPS_LO16 relocations.
llvm-svn: 203410
2014-03-09 13:19:46 +00:00
Simon Atanasyan cfffe940a8 [Mips] Create ELF object reader for MIPS target.
llvm-svn: 203409
2014-03-09 13:19:36 +00:00
Simon Atanasyan 3af8664858 [ELF] Factor out the code creates a Reference for the specified symbol
and relocation entry into the two virtual functions.

llvm-svn: 203408
2014-03-09 13:19:29 +00:00
Simon Atanasyan 6928b38c99 [Mips] Remove redundant 'mips' prefix from names of MipsELFWriter class
fields.

llvm-svn: 203406
2014-03-09 13:05:33 +00:00
Simon Atanasyan 8d8e340c61 [Mips] Reduce the code indentation.
llvm-svn: 203405
2014-03-09 13:05:26 +00:00
Simon Atanasyan 82381f97b9 [Mips] Change unused return type from 'bool' to 'void'.
llvm-svn: 203404
2014-03-09 13:05:20 +00:00
Simon Atanasyan 0784422520 [Mips] Remove unnecessary LLVM_ATTRIBUTE_UNUSED attribute.
llvm-svn: 203403
2014-03-09 13:05:15 +00:00
Simon Atanasyan 6af34b9661 [Mips] Do not inherit MipsDynamicLibraryWriter and MipsExecutableWriter
from MipsELFWriter class. MipsELFWriter is just a helper.

llvm-svn: 203402
2014-03-09 13:05:09 +00:00
Simon Atanasyan 16c425e985 [Mips] Mark class by 'final' keyword.
llvm-svn: 203401
2014-03-09 13:05:03 +00:00
Simon Atanasyan 8801c45110 [Mips] Remove redundant 'mips' prefix from names of MipsTargetHandler
and MipsDynamicSymbolTable classes fields.

llvm-svn: 203400
2014-03-09 13:04:56 +00:00
Simon Atanasyan 4881a93b73 [Mips] Remove redundant call to the unique_ptr::get() method followed
by the returned pointer dereferencing.

llvm-svn: 203399
2014-03-09 13:04:50 +00:00
Simon Atanasyan f08deab395 [Mips] Remove unused class field.
llvm-svn: 203398
2014-03-09 13:04:45 +00:00
Rui Ueyama 0b87794f2b Remove extra space.
llvm-svn: 203331
2014-03-08 01:45:39 +00:00
Rui Ueyama 7caea31189 Fix a bug that mergeCases table does not match the merge constants.
MergeCases table should not have an entry for MergeContents because atoms with
MergeContents attribute should never have name. This issue was not caught by a
test because getting a value of 6th element of an array of array actually gets
the first element's value of the next array, and that happened to be a valid
value. Added asserts to catch that error.

llvm-svn: 203322
2014-03-08 00:44:01 +00:00
Michael J. Spencer 95a90099fa [docs] Add missing features for the x86-64 ELF backend.
llvm-svn: 203313
2014-03-07 23:54:27 +00:00
Rui Ueyama c79dd2f80a [PECOFF] Support a new type of weak symbol.
Summary:
COMDAT_SELECT_SAME_SIZE is a COMDAT type that I presume exist only in COFF.
The semantics of the type is that linker should merge such COMDAT sections if
their sizes are the same. Otherwise it's an error.

Reviewers: Bigcheese, shankarke, kledzik

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D2996

llvm-svn: 203308
2014-03-07 23:05:10 +00:00
Simon Atanasyan e9ba661696 [Mips] Removed extra space. Thanks to dexonsmith's eagle eye.
llvm-svn: 203201
2014-03-07 04:50:53 +00:00
Rui Ueyama 16e543bc02 Add "override" and remove "virtual" where appropriate.
For the record, I used clang-modernize to add "override" and perl to remove
"virtual".

llvm-svn: 203164
2014-03-06 21:14:04 +00:00
Simon Atanasyan 54f6f7bd77 [Mips] Replace "virtual" by "override" in member function declarations
where it is appropriate.

llvm-svn: 203102
2014-03-06 10:29:45 +00:00
Rui Ueyama d6ad741e5e Add "override" to member functions where appropriate.
llvm-svn: 202998
2014-03-05 19:50:03 +00:00
Rui Ueyama 182437e63f [PECOFF] Sort x64 exception handler table.
Just like x86 exception handler table, the table for x64 needs to be sorted
so that runtime can binary search on it. Unlike x86, the table entry for x64
has multiple fields, and they need to be sorted according to its BeginAddress
field. This patch also fixes a bug in relocations.

llvm-svn: 202874
2014-03-04 18:39:12 +00:00
Ahmed Charles d779459f21 [C++11] Add #include's for OwningPtr.
Allows removing #include's in LLVM while switching to std::unique_ptr.

llvm-svn: 202679
2014-03-03 07:20:05 +00:00
Benjamin Kramer 3445d9edad [C++11] Work around an incompatibility between llvm::tie and std::tie.
llvm-svn: 202645
2014-03-02 13:45:18 +00:00
Chandler Carruth 5de228b287 [C++11] Replace LLVM_OVERRIDE with just "override" now that we're all
using MSVC 2012 or newer.

llvm-svn: 202627
2014-03-02 09:39:44 +00:00
Chandler Carruth 6eface7c9d [C++11] Switch from LLVM_FINAL to just "final" now that all of LLVM is
requiring MSVC 2012 or newer.

llvm-svn: 202626
2014-03-02 09:35:33 +00:00
Rui Ueyama 5522e81f12 [PECOFF] Sort SEH table entries according to its value.
It looks like the contents of the table need to be sorted according to its
value, so that the runtime can find the entry by binary search. I'm not 100%
sure if we really have to do that, but at least I can say it's safe to do
because the contents of .sxdata is just a list of exception handlers' RVAs.

llvm-svn: 202550
2014-02-28 22:17:53 +00:00
Rui Ueyama b85f31c7a2 [PECOFF] Set "Exception Table" field in PE32+ header.
llvm-svn: 202527
2014-02-28 18:25:09 +00:00
Shankar Easwaran 8353f965c4 [Hexagon] Rename the header file.
This is to accomodate future changes for newer revisions of the DSP.

No change in functionality.

llvm-svn: 202350
2014-02-27 06:28:49 +00:00
Rui Ueyama 1710fe7de9 [PECOFF] Add a test for /SAFESEH:NO for non-x86 machine type.
llvm-svn: 202322
2014-02-27 00:05:43 +00:00
Simon Atanasyan 930ea1892f [Mips] Remove non-ASCII symbol from the comment.
llvm-svn: 202290
2014-02-26 19:23:52 +00:00
Simon Atanasyan 46ff3ce2bd [Mips] Split reloc26 function into two parts - for processing local and
external relocations.

llvm-svn: 202289
2014-02-26 19:17:20 +00:00
Simon Atanasyan 2043ee167c [Mips] Use a correct number of bits when apply result of calculated relocation.
llvm-svn: 202288
2014-02-26 19:17:14 +00:00
Simon Atanasyan a444eae5ce [Mips] Exit from the class method as soon as possible.
llvm-svn: 202287
2014-02-26 19:17:07 +00:00