Nick Kledzik
343ecbd6ba
Fix shadowed variable warning
...
llvm-svn: 172482
2013-01-14 22:10:22 +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
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
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
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
8a3052eab0
Rename YAML key 'fixups:' to 'references:'
...
llvm-svn: 171898
2013-01-08 21:12:13 +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
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
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
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
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
3124422a8b
[ELF] Add skeleton for X86-64 relocations.
...
llvm-svn: 171578
2013-01-05 00:47:04 +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
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
a2c9727810
[ELF] Handle misaligned ELF files properly.
...
llvm-svn: 171526
2013-01-04 21:09:21 +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
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
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
Hemant Kulkarni
8bd276120f
Added missing break in StockSectionChunk constructor.
...
Removed architecture dependent .sbss section creation.
Updated test case to show the change in section types and removal of a sbss section.
llvm-svn: 165181
2012-10-03 23:27:33 +00:00
Sid Manning
05c82a42dd
* Return correct size and alignment for common symbols.
...
llvm-svn: 165170
2012-10-03 21:46:48 +00:00
Hemant Kulkarni
08e410293f
Emit symbol tables.
...
Reorganize to derive all sections from SectionChunk.
Construct section table header from SectionChunk.
llvm-svn: 164981
2012-10-01 23:53:20 +00:00
Sid Manning
e861d43f65
This change:
...
* Updates ReaderELF.cpp contentType method to match ELF.h's logic and now handle
typeData
* Add -arch to ldd-core testdriver
* Add testcase to check typeData
* Update others to stay in sync with this change.
llvm-svn: 164976
2012-10-01 23:23:05 +00:00
Michael J. Spencer
e2fb6c73f3
Fix -Wcovered-switch-default warning.
...
llvm-svn: 164846
2012-09-28 21:07:58 +00:00
Sid Manning
d3a7e7e164
Add case for typeConstant in SectionChunk
...
llvm-svn: 164732
2012-09-26 22:46:17 +00:00
Sid Manning
dd11020739
This patch makes use of recently added relocation reference data. The bulk
...
of this is derived from the Mach-O writer. Reviewed by: Nick Kledzik.
* Adds loop to SectionChunk::write traverse references calling the
writer's fixup handler, applyFixup.
* Adds method, ELFWriter::buildAtomToAddressMap to that creates a
mapping from an atom to its runtime address.
* Adds method, ELFWriter::addressOfAtom to return the runtime address
of the atom.
llvm-svn: 164618
2012-09-25 18:22:09 +00:00
Sid Manning
8caf4de31f
Add ELFReference class - parse relocations needed by that class and update DefinedAtom to use the class. Tweak coding style. Add testcase to check relocations. Change was signed-off-by: Michael Spencer
...
llvm-svn: 164027
2012-09-17 12:49:38 +00:00
Hemant Kulkarni
927bbc2871
ELF support for LLD writer. The writer at present emits ELF header and section
...
table header. Skeleton code for ReferenceKinds.
Credits:
Doxygen by Michael Spencer.
Origianl implementation from Macho by Sidney Manning.
Templatization, implementation of section header chunks, string table, ELF header by Hemant Kulkarni.
llvm-svn: 163906
2012-09-14 16:11:34 +00:00
Michael J. Spencer
69ed53ab5f
Fix warnings.
...
llvm-svn: 163573
2012-09-10 23:46:58 +00:00
Nick Kledzik
7243b89459
PR13467: Fix mach-o writer to handle case of zero stubs. Renumber TestingHelpers kind values
...
llvm-svn: 160982
2012-07-30 20:10:46 +00:00
Sid Manning
429a4bc172
Fix warning from -Wshadow. Report errors back to caller rather than calling
...
llvm::report_fatal_error.
llvm-svn: 160864
2012-07-27 14:52:18 +00:00
Sid Manning
ad58efd69a
Add a default constructor/destructor for ReaderOptionsPECOFF
...
llvm-svn: 160740
2012-07-25 17:16:46 +00:00
Sid Manning
1a60141f99
Implement the ELF reader. The original implementation was by Hemant Kulkarni
...
with subsequent changes to use lower level interfaces done by me.
llvm-svn: 160732
2012-07-25 16:27:21 +00:00
Marshall Clow
f33f0bbdcf
Minor edits to match style guidelines. No functionality change
...
llvm-svn: 160370
2012-07-17 16:18:04 +00:00
Michael J. Spencer
efcf099db5
Unused var warning.
...
llvm-svn: 158944
2012-06-21 22:41:46 +00:00
Michael J. Spencer
aedfa6a36b
Fix MSVC compat. MSVC doesn't have bzero.
...
Although the code is not valid to begin with. It is trying to do a raw memory
copy of a non standard-layout type. nameoffset is not guaranteed to directly
follow cmdsize.
This should be properly fixed.
llvm-svn: 158612
2012-06-17 01:18:44 +00:00
Nick Kledzik
7145cf6846
Add 'invalid' as a Reference Kind so that unknown/invalid kind strings can return that fact to the caller for use in constructing an error message, rather that triggering an assertion.
...
llvm-svn: 158547
2012-06-15 21:26:18 +00:00
Nick Kledzik
21f5d4d629
remove return statements after llvm_unreachable() as the compiler no longer warns abot missing return values
...
llvm-svn: 158544
2012-06-15 21:04:32 +00:00
Nick Kledzik
751eb3d2b3
use llvm_unreachable() instead of assert(0) for invalid enum values in switch statements
...
llvm-svn: 158542
2012-06-15 20:37:24 +00:00
Nick Kledzik
d6a27324f9
Use ADT/StringSwitch
...
llvm-svn: 158541
2012-06-15 20:29:27 +00:00
Nick Kledzik
c890ae41e2
flesh out mach-o Reference Kinds
...
llvm-svn: 158375
2012-06-12 23:01:30 +00:00
Nick Kledzik
40b68559e8
Move implementation of WriterOptionsMachO to its own file. Reduced redundant
...
ivars in WriterOptionsMachO instead have its methods compute ivar interactions.
Refactor mach-o Reference Kinds and introduce abstract class KindHandler.
Split up StubAtoms.hpp by architecture. Add support for 32-bit x86 stubs.
llvm-svn: 158336
2012-06-11 22:53:15 +00:00
Nick Kledzik
5fb2e4dabe
put the public function createReaderPECOFF() in the lld namespace and everything else in is own namespace
...
llvm-svn: 158135
2012-06-07 02:23:48 +00:00
Nick Kledzik
98211f6d19
fix warnings found after cranking up warnings
...
llvm-svn: 158134
2012-06-07 01:53:39 +00:00
Nick Kledzik
40b8655082
abstract load commands to that WriterMachO can write 64-bit and 32-bit mach-o files
...
llvm-svn: 158133
2012-06-07 01:45:39 +00:00
Nick Kledzik
abb6981f68
Major refactoring: Remove Platform concept. In its place there are
...
now Reader and Writer subclasses for each file format. Each Reader and
Writer subclass defines an "options" class which controls how that Reader
or Writer operates.
llvm-svn: 157774
2012-05-31 22:34:00 +00:00