Simon Atanasyan
e29132d427
[Mips] Fix handling of R_MIPS_GOT16 relocation and building local part
...
of GOT.
* Read addend for R_MIPS_GOT16 relocation.
* Put only high 16 bits of symbol + addend into GOT entries for
locally visible symbols.
llvm-svn: 204247
2014-03-19 15:46:25 +00:00
Simon Atanasyan
b1ba018ed2
[Mips] Handle R_MIPS_GOT16 relocation for external and local symbols in
...
a uniform way.
llvm-svn: 204246
2014-03-19 15:46:15 +00:00
Simon Atanasyan
49fa6a41f4
[Mips] Factor out the code creates GOT entry atoms into the two
...
functions. The first one is for local GOT entries. The second one is for
global GOT entries.
llvm-svn: 204245
2014-03-19 15:46:07 +00:00
Simon Atanasyan
a7b553efd1
[Mips] Add 'const' qualifier to the function.
...
llvm-svn: 204244
2014-03-19 15:46:00 +00:00
Simon Atanasyan
c1b62ea310
[Mips] Move AHL addends calculation to the RelocationPass class.
...
llvm-svn: 204243
2014-03-19 15:45:55 +00:00
Simon Atanasyan
d8259fbcc3
[Mips] Move RelocationPass class member function definitions out of the
...
class.
llvm-svn: 204242
2014-03-19 15:45:49 +00:00
Simon Atanasyan
e7e8b26f93
Remove extra semicolon for -Wpedantic.
...
llvm-svn: 204224
2014-03-19 11:06:07 +00:00
Simon Atanasyan
0edb4bbb4b
[PECOFF] Fix -Wsign-compare warning.
...
llvm-svn: 204223
2014-03-19 11:06:01 +00:00
Simon Atanasyan
0e202224a3
[ELF] Remove unused fields (linking context references).
...
llvm-svn: 204222
2014-03-19 11:05:55 +00:00
Simon Atanasyan
b665ce2c27
Fix warning 'enumeral and non-enumeral type in conditional expression'.
...
llvm-svn: 204221
2014-03-19 11:05:47 +00:00
Alexey Samsonov
8e6829e436
Remove extra semicolon for -Wpedantic
...
llvm-svn: 204219
2014-03-19 09:38:31 +00:00
David Majnemer
14b11022b4
[PECOFF] Use richer ways of describing auxiliary symbols
...
Update all of the unit tests to use the new format.
This depends on D3092.
Reviewers: ruiu
Differential Revision: http://llvm-reviews.chandlerc.com/D3093
llvm-svn: 204215
2014-03-19 04:55:14 +00:00
Rui Ueyama
7ad72ebc5e
[PECOFF] Support yet another new type of weak symbol.
...
COMDAT_SELECT_LARGEST is a COMDAT type that make linker to choose the largest
definition from among all of the definition of a symbol. If the size is the
same, the choice is arbitrary.
Differential Revision: http://llvm-reviews.chandlerc.com/D3011
llvm-svn: 204172
2014-03-18 19:37:50 +00:00
Alexey Samsonov
67dc3e9538
Fix lld build
...
llvm-svn: 204122
2014-03-18 07:24:10 +00:00
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
f020bf7468
[PECOFF] Add one more test for r203875.
...
This is to make sure that the Windows-style command line tokenizer is
working as expected.
llvm-svn: 203877
2014-03-14 00:44:17 +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
6ab29444b0
[docs][Windows] Document how to build using Ninja.
...
llvm-svn: 203756
2014-03-13 05:48:46 +00:00
Rui Ueyama
60b1a6d9e4
Fix Windows build.
...
llvm-svn: 203753
2014-03-13 05:22:23 +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
Rui Ueyama
f7ada499f1
[Driver] Create "link[.exe]" symlink for the Windows driver.
...
Clang creates "clang-cl" as a symlink to (or a copy of) "clang" for the MSVC-
compatible driver. This patch is to do the same thing for "link" and "lld".
Differential Revision: http://llvm-reviews.chandlerc.com/D3066
llvm-svn: 203751
2014-03-13 05:12:31 +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
21f97ddb58
[docs] Document how to build LLD as a win64 app.
...
llvm-svn: 203736
2014-03-12 23:40:18 +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
Rui Ueyama
dcd25e31a7
[docs] Add a note on how to build LLD on Windows.
...
llvm-svn: 203613
2014-03-11 22:40:43 +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
305c864756
[Mips] Rename R_MIPS_26 relocation handling test case.
...
llvm-svn: 203407
2014-03-09 13:05:39 +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
2348be8b6d
Add one more test for r203308.
...
llvm-svn: 203328
2014-03-08 01:27:22 +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
Benjamin Kramer
68f8699031
Add missing std:: qualifiers.
...
llvm-svn: 203244
2014-03-07 14:50:15 +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
Michael J. Spencer
dae078f341
[docs] Option parsing driver work is pretty much done.
...
llvm-svn: 203189
2014-03-07 01:42:35 +00:00
Michael J. Spencer
1dd276672f
[docs] Update current status.
...
llvm-svn: 203188
2014-03-07 01:42:19 +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
3e37326166
Add a document about Windows support.
...
llvm-svn: 203017
2014-03-05 22:35:32 +00:00
Rui Ueyama
b63570ecb6
Fix broken link.
...
llvm-svn: 203004
2014-03-05 20:39:57 +00:00
Rui Ueyama
746c915c9d
Visual Studio 11 = VS2012
...
llvm-svn: 203003
2014-03-05 20:36:07 +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
d40922989a
Fix a typo spotted by Anton.
...
llvm-svn: 202638
2014-03-02 13:00:23 +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
Chandler Carruth
03b4e3a8cb
[C++11] Update LLD documentation to just refer to the LLVM documentation
...
for C++11 issues.
llvm-svn: 202623
2014-03-02 09:17:09 +00:00
Chandler Carruth
620b89017e
[C++1y] Don't error if the user is enabling C++1y, which is *newer* than
...
C++11. I'm not sure that this is a good idea, but I know some crazy
folks on the core working group who like to live dangerously, and they
should still be able to build LLD. =D
llvm-svn: 202568
2014-03-01 03:18:56 +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
Rui Ueyama
cfa657795d
[PECOFF] Add a test for /SAFESEH:NO.
...
llvm-svn: 202314
2014-02-26 23:15:41 +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
Rui Ueyama
2e09d93f74
[PECOFF] Emit Load Configuration and SEH Table for x86.
...
If all input files are compatible with Structured Exception Handling, linker
is supposed to create an exectuable with a table for SEH handlers. The table
consists of exception handlers entry point addresses.
The basic idea of SEH in x86 Microsoft ABI is to list all valid entry points
of exception handlers in an read-only memory, so that an attacker cannot
override the addresses in it. In x86 ABI, data for exception handling is mostly
on stack, so it's volnerable to stack overflow attack. In order to protect
against it, Windows runtime uses the table to check a return address, to
ensure that the address is really an valid entry point for an exception handler.
Compiler emits a list of exception handler functions to .sxdata section. It
also emits a marker symbol "@feat.00" to indicate that the object is compatible
with SEH. SEH is a relatively new feature for COFF, and mixing SEH-compatible
and SEH-incompatible objects will result in an invalid executable, so is the
marker.
If all input files are compatible with SEH, LLD emits a SEH table. SEH table
needs to be pointed by Load Configuration strucutre, so when emitting a SEH
table LLD emits it too. The address of a Load Configuration will be stored to
the file header.
llvm-svn: 202248
2014-02-26 08:27:59 +00:00
NAKAMURA Takumi
955d27a4ce
[CMake] Use target_link_libraries(INTERFACE|PRIVATE) on CMake-2.8.12 to increase opportunity for parallel build.
...
target_link_libraries(INTERFACE) doesn't bring inter-target dependencies in add_library,
although final targets have dependencies to whole dependent libraries.
It makes most libraries can be built in parallel.
target_link_libraries(PRIVATE) is used to shaared library.
Each dependent library is linked to the target.so, and its user will not see its grandchildren.
For example,
- libclang.so has sufficient libclang*.a(s).
- c-index-test requires just only libclang.so.
FIXME: lld is tweaked minimally. Adding INTERFACE in each library would be better thing.
llvm-svn: 202241
2014-02-26 06:53:16 +00:00
NAKAMURA Takumi
9cd9ad6b9d
[CMake] Introduce cmake_policy(CMP0022) for target_link_libraries(INTERFACE|PRIVATE).
...
For now, use both keywords, INTERFACE and PRIVATE via the variable,
- ${cmake_2_8_12_INTERFACE}
- ${cmake_2_8_12_PRIVATE}
They could be cleaned up when we introduce 2.8.12.
llvm-svn: 202239
2014-02-26 06:45:11 +00:00
NAKAMURA Takumi
9f4ee24ac6
lldReaderWriter: move LLVM_LINK_COMPONENTS. It seems Subdirectories don't depend on LLVMObject.
...
Please give LLVMObject explicitly in each subdirectory if any of subdirectories required it.
llvm-svn: 202236
2014-02-26 06:28:09 +00:00
NAKAMURA Takumi
23850261c6
[CMake] Declare cmake_minimum_required() unconditionally.
...
llvm-svn: 202235
2014-02-26 06:27:59 +00:00
Rui Ueyama
aaf2816d59
[PECOFF] Add a utility function to add DIR32 relocation.
...
llvm-svn: 202217
2014-02-26 02:38:40 +00:00
Rui Ueyama
f9be75f538
[PECOFF] Fix DLLCharacteristics field.
...
IMAGE_DLL_CHARACTERISTICS_NO_SEH flag should be set only when SEH is disabled.
llvm-svn: 202215
2014-02-26 02:31:53 +00:00
Shankar Easwaran
a328344367
[LinkerScript] parse OUTPUT_FORMAT : treat quotedStrings as identifier
...
llvm-svn: 202166
2014-02-25 17:02:54 +00:00
Rui Ueyama
d08472f6c3
[COFF] Refactor .drectve section handling. No functionality change.
...
llvm-svn: 202113
2014-02-25 05:37:47 +00:00
Shankar Easwaran
2ea5148eff
[LinkerScript] OUTPUT_FORMAT: Parse Quoted Strings
...
llvm-svn: 202111
2014-02-25 05:17:24 +00:00
Shankar Easwaran
7a0818dd4a
[test] use llvm-config to drive testing in assert mode/debug mode
...
llvm-svn: 202101
2014-02-25 02:29:17 +00:00
Shankar Easwaran
822ea4f9a3
[LinkerScript] parse OUTPUT_ARCH.
...
llvm-svn: 202100
2014-02-25 01:55:13 +00:00
Nico Rieck
b9d84f4d14
[lld] Include reference kind in cycle detector debug output
...
This restores the debug output to how it was before r197727 broke it. This
went undetected because the corresponding test was never run due to broken
feature detection.
llvm-svn: 202079
2014-02-24 21:14:37 +00:00
Nico Rieck
78f2b48e7d
Fix feature detection in lld's lit.cfg
...
llvm-svn: 202078
2014-02-24 21:13:53 +00:00
Rafael Espindola
f27f9fa136
Update for LLVM api change.
...
llvm-svn: 202054
2014-02-24 18:20:36 +00:00
Rafael Espindola
27810169cb
Don't assume that F_None is the default. It is about to change.
...
llvm-svn: 202039
2014-02-24 15:06:34 +00:00
Nico Rieck
aa675e9379
[PECOFF] Fix uninitialized variable
...
llvm-svn: 201970
2014-02-23 10:40:15 +00:00
NAKAMURA Takumi
b31e03007a
[CMake] add_lld_library: link_system_libs is not needed any more. LLVMSupport may provide dependencies to system libs.
...
llvm-svn: 201967
2014-02-23 04:43:45 +00:00
Rui Ueyama
a5dc335574
[PECOFF] Implement /SAFESEH option.
...
LLD now prints an error message if /SAFESEH option is specified and one or
more input files are not compatible with SEH.
llvm-svn: 201900
2014-02-21 22:50:27 +00:00
Rui Ueyama
d9e7c22ee4
[PECOFF] Driver support for /SAFESEH option.
...
Syntactically /SAFESEH is a boolean flag -- you can pass /SAFESEH or /SAFESEH:no.
The meaning of /SAFESEH is as follows.
- If /SAFESEH is specified, the linker will produce an executable with SEH table.
If any input files are not compatible with SEH, it's an error.
- If /SAFESEH:no is specified, the linker will not emit SEH table even if all
input files are compatible with SEH.
- If no option is specified, the linker emits SEH table if all input files are
compatible with SEH.
llvm-svn: 201895
2014-02-21 22:30:43 +00:00
Shankar Easwaran
9578442fe9
[ELF] Dont generate PHDR when creating dynamic libraries.
...
llvm-svn: 201741
2014-02-19 23:46:13 +00:00
Shankar Easwaran
babba413f5
[ELF] Fix alignment for dynamic relocation sections.
...
The sections .rela/.rel.(*) have a alignment of 2 in the final image created by
the linker. This needs to be properly set to the right alignment depending on
the architecture(32/64bits).
llvm-svn: 201740
2014-02-19 23:46:08 +00:00
Simon Atanasyan
b72ea717d0
[Mips] Use the 'CHECK-NEXT' where we need to check a test output exactly
...
line by line.
llvm-svn: 201133
2014-02-11 07:17:09 +00:00
Simon Atanasyan
06f8ea4c07
[Mips] Simplify the code. Replace redundant 'switch' operator by the single 'if' one.
...
llvm-svn: 201131
2014-02-11 06:36:16 +00:00
Simon Atanasyan
bf987c2dae
[Mips] Handle R_MIPS_COPY relocation.
...
llvm-svn: 201129
2014-02-11 05:34:02 +00:00
Simon Atanasyan
ceb0b86822
[Mips] Add "data" symbols to the test input file. No functional changes.
...
llvm-svn: 201128
2014-02-11 05:33:53 +00:00
Rafael Espindola
20d93679c7
Update for llvm api change.
...
llvm-svn: 201109
2014-02-10 20:24:27 +00:00
Nick Kledzik
cdf2c8be58
[mach-o] use new way to copy StringRefs
...
llvm-svn: 200956
2014-02-06 23:48:52 +00:00
Simon Atanasyan
0743a72caa
Accept and handle absolute symbols with empty name.
...
llvm-svn: 200911
2014-02-06 07:35:16 +00:00
Simon Atanasyan
b828ebb5dd
[Mips] In case of executable file linking MIPS ABI requires to add even
...
undefined symbols to '.dynsym' if these symbols have corresponding entries
in a global part of GOT.
llvm-svn: 200716
2014-02-03 20:10:40 +00:00
Simon Atanasyan
0912fe06dc
[Mips] Unify #include guard names.
...
llvm-svn: 200715
2014-02-03 20:10:30 +00:00
Rui Ueyama
153ee54008
Untabify.
...
llvm-svn: 200712
2014-02-03 19:07:38 +00:00
Shankar Easwaran
6e0e1bc859
[ELF] change LayoutBefore Reference to InGroup Reference
...
This makes it a lot easier for Section Group design.
llvm-svn: 200675
2014-02-03 04:01:14 +00:00
Joey Gouly
cf466800b7
[MachO] Add undefined atoms.
...
llvm-svn: 200649
2014-02-02 19:34:55 +00:00
Simon Atanasyan
e6f6f06c91
[ELF] Customize dynamic table tag used for .got.plt section referencing.
...
The patch reviewed by Shankar Easwaran and Rui Ueyama.
llvm-svn: 200630
2014-02-02 12:19:29 +00:00
Simon Atanasyan
8379ad056d
[Mips] Cleanup assembler code in the test.
...
llvm-svn: 200629
2014-02-02 12:19:20 +00:00
Rui Ueyama
c5326ca9bb
[PECOFF] Add a TODO.
...
llvm-svn: 200599
2014-02-01 00:26:33 +00:00
Rui Ueyama
9661bcf2e1
[PECOFF] Handle /machine option before handling all the other options.
...
The target machine type affects the meaning of other options, in particular
how to mangle symbols. So we want to handle the option first and then parse
all the other options.
llvm-svn: 200589
2014-01-31 22:58:19 +00:00
Rafael Espindola
8c13e51764
Update for llvm api change.
...
llvm-svn: 200575
2014-01-31 21:13:59 +00:00
Rui Ueyama
d0d01c66ba
MSVC2012 does not choose to use uint64_t as underlying type without this.
...
MSVC2012 seems to choose int as the underlying type for an enum even if one of
its member is unsigned long long.
llvm-svn: 200519
2014-01-31 06:28:32 +00:00
Rui Ueyama
14876abb3d
[PECOFF] Set the correct PE header field value.
...
The charcateristics field should not have IMAGE_FILE_32BIT_MACHINE bit but have
IMAGE_FILE_LARGE_ADDRESS_AWARE bit for PE32+.
llvm-svn: 200518
2014-01-31 05:43:12 +00:00
Rui Ueyama
ebc13c47f2
[PECOFF] Do not emit a section if it's empty.
...
The PE32+ loader does not seem to like an executable with an empty section, so
we should not emit a section if it's empty.
llvm-svn: 200514
2014-01-31 05:15:42 +00:00
Rui Ueyama
8851d45cbf
Replace magic numbers with enums.
...
llvm-svn: 200512
2014-01-31 04:57:03 +00:00
Rui Ueyama
ea7e9306c1
[PECOFF] Default image base address for PE32+ is 0x140000000, not 0x400000.
...
llvm-svn: 200511
2014-01-31 04:49:13 +00:00
Simon Atanasyan
bc286a4dbc
[ELF] Make private all DynamicTable class fields which are not used in
...
the descendant classes.
llvm-svn: 200467
2014-01-30 14:20:22 +00:00
Rafael Espindola
8fe1f37c55
Update for llvm api change.
...
llvm-svn: 200443
2014-01-30 02:49:58 +00:00
Shankar Easwaran
b6a6bdab20
[ELF][Hexagon] typeZeroFillQuick is not associated with bss section.
...
We need to increase the memory and the filesize when we add a typeZeroFillQuick
atom.
llvm-svn: 200369
2014-01-29 04:04:27 +00:00
Simon Atanasyan
7aa9061ead
[Mips] Declare MipsDynamicTable class in a separate header file.
...
llvm-svn: 200328
2014-01-28 18:52:41 +00:00
NAKAMURA Takumi
4162034bb5
[CMake] Apply llvm_update_compile_flags() in add_lld_library().
...
Sorry for the breakage.
llvm-svn: 200306
2014-01-28 10:45:37 +00:00
Rui Ueyama
4aaba3e220
[PECOFF] Replace magic numbers with sizeof.
...
llvm-svn: 200278
2014-01-28 01:55:37 +00:00
Rui Ueyama
bdc2fc3635
[PECOFF] Convert more binary files to YAML.
...
Because the object files are now readable to humans, I don't think we need the
source assembly file any more, so I removed them too in this commit.
llvm-svn: 200276
2014-01-28 01:41:39 +00:00
Rui Ueyama
6d3fee23e3
[PECOFF] Remove a redundant test.
...
peplus.test and pe32plus.test basically covered the same thing, so
remove pe32plus.test and then rename peplus.test -> pe32plus.test.
llvm-svn: 200275
2014-01-28 01:36:13 +00:00
Rui Ueyama
dc2f00eead
[PECOFF] Convert a object file to YAML to remove a binary file from SVN.
...
llvm-svn: 200274
2014-01-28 01:32:33 +00:00
Rui Ueyama
a709af2861
s/0/nullptr/
...
llvm-svn: 200272
2014-01-28 01:22:23 +00:00
Rui Ueyama
22291d2cbf
[PECOFF] Implement some relocations for x86-64.
...
llvm-svn: 200240
2014-01-27 19:23:12 +00:00
Rui Ueyama
b73d28525a
[PECOFF] Implement relocations for x86-64.
...
llvm-svn: 200185
2014-01-27 03:53:30 +00:00
Rui Ueyama
7d1bf45047
[PECOFF] Fix PE/COFF optional header size for PE32+.
...
The optional header for PE32+ is a bit larger than PE32 because some of
its fields are extended to 8 bytes.
llvm-svn: 200184
2014-01-27 03:53:26 +00:00
Rui Ueyama
f1a2d55e2b
[PECOFF] Set a proper architecture type to references.
...
Relocations for x64 object files should have reference type of
KindArch::x86_64.
llvm-svn: 200183
2014-01-27 03:53:23 +00:00
Shankar Easwaran
3d8de47f76
Fix trailing whitespace.
...
llvm-svn: 200182
2014-01-27 03:09:26 +00:00
Shankar Easwaran
a64ba010f0
[ELF] Fix comments.
...
The comments in the files that described the file name as part of each file
header ran over 80 columns, which clang-format split over multiple lines.
This commit fixes to make them appear properly.
llvm-svn: 200181
2014-01-27 02:55:08 +00:00
Shankar Easwaran
b11964707c
[ELF] Make changes to all the targets supported currently
...
X86_64,X86,PPC,Hexagon,Mips
No change in functionality.
llvm-svn: 200177
2014-01-27 01:21:02 +00:00
Shankar Easwaran
af7fbd8cf4
[ELF] Create Target specific Writers.
...
llvm-svn: 200176
2014-01-27 01:20:53 +00:00
Shankar Easwaran
e7b831ad35
[ELF] Add Target specific Readers.
...
No change in functionality.
llvm-svn: 200175
2014-01-27 01:02:03 +00:00
Shankar Easwaran
d7de108cde
[ELF] Separate ELFReader classes for subclassing
...
llvm-svn: 200173
2014-01-27 00:45:57 +00:00
Shankar Easwaran
f755ca1685
[ELF] Unify interfaces between DynamicFile/ELFFile.
...
llvm-svn: 200172
2014-01-27 00:40:49 +00:00
Shankar Easwaran
f3db51d06f
[ELF] Separate implementation from the class declaration.
...
ELFFile would be a class that rest of the targets would derive from.
To keep the implementation clean, separate the implementation from
rest of the Header file.
llvm-svn: 200168
2014-01-26 23:57:20 +00:00
Shankar Easwaran
9691b01905
[ELF] Rename File.h to ELFFile.h to avoid confusion.
...
No change in functionality.
llvm-svn: 200166
2014-01-26 23:49:07 +00:00
Shankar Easwaran
b888433e9c
[ELF] Dont include all targets
...
llvm-svn: 200165
2014-01-26 23:47:18 +00:00
Rui Ueyama
56c4611340
[PECOFF] Emit PE32+ file header.
...
llvm-svn: 200128
2014-01-26 05:34:12 +00:00
Rui Ueyama
c6ddf5654c
[PECOFF] Use a shorter name for the parameter.
...
llvm-svn: 200107
2014-01-26 00:37:30 +00:00
Rui Ueyama
76c1b4d0fb
[PECOFF] Set PE32+ magic value if 64 bit.
...
llvm-svn: 200106
2014-01-26 00:35:23 +00:00
Rui Ueyama
7dc69287c1
[PECOFF] Use a shorter name for the PECOFF writer member.
...
llvm-svn: 200052
2014-01-25 00:27:44 +00:00
Rui Ueyama
49bfd5032d
[PECOFF] Accept /machine:x64 option.
...
This is the first patch to support PE32+ format, which is the image format
to use 64 bit address space on Windows/x86-64.
llvm-svn: 200029
2014-01-24 19:17:05 +00:00
Rui Ueyama
87e15c7585
[PECOFF] Use constant instead of magic number.
...
llvm-svn: 200019
2014-01-24 18:03:14 +00:00
Simon Atanasyan
d8cadd6f17
[ELF] Customize a relocation table output format (rel / rela).
...
Add new virtual virtual function `isRelaOutputFormat` to the
`ELFLinkingContext` class. Call this function everywhere we need to
select a relocation table format.
Patch reviewed by Shankar Easwaran and Rui Ueyama.
llvm-svn: 199973
2014-01-24 05:21:21 +00:00
Rafael Espindola
6ba68f10c4
Update for llvm api change.
...
llvm-svn: 199777
2014-01-22 00:14:56 +00:00
Rafael Espindola
79e2d936fd
Update for llvm api change.
...
llvm-svn: 199752
2014-01-21 16:09:55 +00:00
Simon Atanasyan
eafb76ee9b
[Mips] Specify the type of a symbol table entries in the test assembler
...
file.
llvm-svn: 199561
2014-01-18 21:13:05 +00:00
Simon Atanasyan
9dec22dbe2
[Mips] Use explicit assembler instructions in the tests.
...
llvm-svn: 199556
2014-01-18 16:59:19 +00:00
Simon Atanasyan
2f1d6366e7
[Mips] Emit ELF header for MIPS target. ELF flags set is mostly hardcoded.
...
Later we need to improve that solution and build a correct set of flags
by merging ELF flags from all input objects.
llvm-svn: 199555
2014-01-18 16:59:11 +00:00
Simon Atanasyan
0e57a77072
[Mips] Simplify calculations of relocations - replace scatterBits calls
...
by bitwise AND operator and remove redundant local variables.
llvm-svn: 199554
2014-01-18 16:59:00 +00:00
Rui Ueyama
8d7a6f2898
Fix odd titlecasing and spacing in an error message.
...
llvm-svn: 199530
2014-01-18 00:57:40 +00:00
Rui Ueyama
251e68b6ae
Use auto for readability. No functionality change.
...
llvm-svn: 199527
2014-01-18 00:38:44 +00:00
Rui Ueyama
d9696cbda8
Using "final" as a variable name is a bit confusing in C++11, so rename it.
...
llvm-svn: 199526
2014-01-18 00:27:03 +00:00
Simon Atanasyan
9ab3b8db84
[Mips] Allocate local GOT entry for a global symbol defined in an
...
executable file.
llvm-svn: 199517
2014-01-17 21:18:45 +00:00
Simon Atanasyan
362bdc125e
[Mips] Implement .plt and .got.plt section creation.
...
llvm-svn: 199516
2014-01-17 21:18:37 +00:00
Simon Atanasyan
66338224be
[Mips] Handle R_MIPS_26 relocation. Maintaining of .plt and .got.plt
...
sections will be implemented later.
llvm-svn: 199515
2014-01-17 21:18:26 +00:00
Simon Atanasyan
80b86a43d5
[Mips] Provide default name of MIPS-specific interpreter.
...
llvm-svn: 199514
2014-01-17 21:18:14 +00:00
Rui Ueyama
acc795383b
[PECOFF] Tests for DLL name in the export table.
...
llvm-svn: 199428
2014-01-16 21:31:27 +00:00
Rui Ueyama
1792ebc1ab
Relax the expected output so that the tests become robust against llvm-objdump format change.
...
llvm-svn: 199421
2014-01-16 20:41:16 +00:00
Rui Ueyama
2b75630b3b
[PECOFF] Make export table tests readable.
...
llvm-svn: 199409
2014-01-16 18:57:22 +00:00
Rafael Espindola
0de92d53a1
Update for llvm api change.
...
llvm-svn: 199327
2014-01-15 19:38:01 +00:00
Rui Ueyama
4dcc4637b5
[CMake] Add llvm-mc to the list of test dependencies.
...
llvm-svn: 199274
2014-01-14 23:33:04 +00:00
Joey Gouly
010b37691d
[MachO] Begin support for reading fat binaries.
...
llvm-svn: 199259
2014-01-14 22:32:38 +00:00
Simon Atanasyan
13c5ce53dc
[Mips] Do not forget to initialize a class field.
...
llvm-svn: 199241
2014-01-14 18:20:07 +00:00
Simon Atanasyan
e46e2dfe01
[Mips] Calculate gp value only once.
...
llvm-svn: 199240
2014-01-14 18:20:00 +00:00
Simon Atanasyan
db2e1f35d8
[Mips] Create and initialize _gp symbol.
...
llvm-svn: 199239
2014-01-14 18:19:52 +00:00
Simon Atanasyan
3b1a761374
[Mips] Check initialization of _gp_disp and _GLOBAL_OFFSET_TABLE_
...
symbols in case of executable file linking.
llvm-svn: 199238
2014-01-14 18:19:42 +00:00
Simon Atanasyan
6cac582de5
[Mips] Do not store a pointer to the AtomLayout related to the
...
_GLOBAL_OFFSET_TABLE_ symbol. We do not use this ponter anywhere after
assigning of virtual address.
llvm-svn: 199237
2014-01-14 18:19:35 +00:00
Simon Atanasyan
0b4dd91582
[Mips] Factor out constant represents gp value offset to the
...
MipsTargetLayout class method.
llvm-svn: 199236
2014-01-14 18:19:26 +00:00
Simon Atanasyan
acb301fab1
[Mips] Set default executable entry symbol name for MIPS targets. On
...
MIPS the entry symbol name is '__start' instead of '_start'.
llvm-svn: 199235
2014-01-14 18:19:19 +00:00
Simon Atanasyan
663aa62863
[Mips] Set default base address for MIPS executables to 0x400000. Assign
...
the lowest segment address to the MIPS_BASE_ADDRESS dynamic tag.
llvm-svn: 199234
2014-01-14 18:19:12 +00:00
Simon Atanasyan
a565c778b3
[ELF] Fix type of the DefaultLayout::segments() return value. This
...
method returns the DefaultLayout::_segments field. The type of this field is
a vector of Segment<ELFT>* pointers. This type cannot be implicitly casted to
the range<ChunkIter>.
llvm-svn: 199233
2014-01-14 18:19:02 +00:00
Simon Atanasyan
a0f5caac26
[Mips] Add test case to check R_MIPS_HI16 / R_MIPS_LO16 relocations
...
agains _gp_disp symbol.
llvm-svn: 199232
2014-01-14 18:18:56 +00:00
Simon Atanasyan
2a1ae098b3
[Mips] Move got16.test assembler source code to the test file and use
...
llvm-mc for an object file generation.
llvm-svn: 199231
2014-01-14 18:18:49 +00:00
Rui Ueyama
ab9deb5466
[PECOFF] Support STACKSIZE module-definition file directive.
...
llvm-svn: 199170
2014-01-14 00:48:25 +00:00
Rui Ueyama
ca9e99fe50
Add a function to verify an ExportDesc.
...
llvm-svn: 199167
2014-01-14 00:29:26 +00:00
Rui Ueyama
37f5273773
Do not use "auto" where actual type is obvious and short.
...
llvm-svn: 199166
2014-01-14 00:06:50 +00:00
Rui Ueyama
1c1487494d
Reduce even more boilerplate.
...
llvm-svn: 199165
2014-01-13 23:54:49 +00:00
Rui Ueyama
7c13c4459b
Whitespace.
...
llvm-svn: 199164
2014-01-13 23:21:33 +00:00
Rui Ueyama
1090434d39
Reduce the boilerplate in the test cases for the module-definition file.
...
llvm-svn: 199163
2014-01-13 23:13:21 +00:00
Rui Ueyama
cbc6eb3e99
Use bettter names for the tests.
...
llvm-svn: 199161
2014-01-13 23:02:03 +00:00
Rui Ueyama
69c26e903b
[PECOFF] Add another test for the module-definition file parser.
...
llvm-svn: 199159
2014-01-13 22:55:09 +00:00
Rui Ueyama
0c306ba08c
Add comment to bit manipulation functions.
...
llvm-svn: 199156
2014-01-13 22:29:16 +00:00
Joey Gouly
d2215375a8
[MachO] Add basic support for local symbols.
...
llvm-svn: 199155
2014-01-13 22:28:02 +00:00
Nick Kledzik
0052bd4a34
Fix spacing
...
llvm-svn: 199074
2014-01-13 04:08:15 +00:00
Joey Gouly
9c826c100a
Factor the symbol handling in normalizedToAtoms into a separate function.
...
No functionality change.
llvm-svn: 199066
2014-01-12 22:55:49 +00:00
Rui Ueyama
415625028c
[PECOFF] Support VERSION directive.
...
llvm-svn: 199022
2014-01-11 22:45:00 +00:00