Rafael Espindola
5211c2a1a0
Delete dead code.
...
llvm-svn: 244696
2015-08-11 23:19:06 +00:00
Rafael Espindola
98f6bd09e4
Be a bit more consistent about using uintX_t for offsets and sizes. NFC.
...
llvm-svn: 244694
2015-08-11 23:14:13 +00:00
Rui Ueyama
880632c458
ELF2: Remove unused global variable.
...
A global variable "Driver" is to re-entry to the driver to parse a
.drectve section. Because the need is COFF-specific, we don't need
this variable for ELF.
llvm-svn: 244680
2015-08-11 21:45:55 +00:00
Reid Kleckner
f7b85e0ce2
Fix mismatched sign comparison
...
llvm-svn: 244653
2015-08-11 20:06:51 +00:00
Rafael Espindola
76e24ea955
Add support for weak undefined symbols.
...
llvm-svn: 244640
2015-08-11 17:57:05 +00:00
Rafael Espindola
791e9f9c59
Remove unused templating.
...
llvm-svn: 244639
2015-08-11 17:51:57 +00:00
Rafael Espindola
b13df6582a
Add support for weak symbols.
...
llvm-svn: 244636
2015-08-11 17:33:02 +00:00
Rafael Espindola
ae1b23bd61
Use real values for DefindeFirst and DefinedLast.
...
With this clang notices that switches are fully covered.
llvm-svn: 244632
2015-08-11 17:10:02 +00:00
Rafael Espindola
9247f165ff
Delete unused typedef.
...
llvm-svn: 244628
2015-08-11 16:55:28 +00:00
Rafael Espindola
7c388187c9
Don't report a conflict between two local symbols.
...
llvm-svn: 244624
2015-08-11 16:30:34 +00:00
Rafael Espindola
d8340dae0c
Don't depend on getDotSymtabSec. It is going away.
...
llvm-svn: 244451
2015-08-10 15:12:17 +00:00
Rafael Espindola
1a9344fa26
Use already available symbol tables. NFC.
...
llvm-svn: 244336
2015-08-07 17:16:28 +00:00
Rafael Espindola
df1e05a26c
Delete broken code.
...
This was using a hard coded string table and getting it for every symbol.
The symbol name was already available.
llvm-svn: 244220
2015-08-06 15:33:21 +00:00
Rafael Espindola
49a2ca6ddd
bar
...
llvm-svn: 244219
2015-08-06 15:33:19 +00:00
Rafael Espindola
192e1fa59d
Move the error handling functions to Error.h. NFC.
...
llvm-svn: 244216
2015-08-06 15:08:23 +00:00
Rui Ueyama
cb8474edae
COFF, ELF2: Pass output file path implicitly using Config global variable.
...
Various parameters are passed implicitly using Config global variable
already. Output file path is no different from others, so there was no
special reason to handle that differnetly.
This patch changes the signature of writeResult(SymbolTable *, StringRef)
to writeResult(SymbolTable *).
llvm-svn: 244180
2015-08-05 23:51:50 +00:00
Rui Ueyama
afff74e228
ELF2: Simplify Writer interface.
...
We are using Writer more like a function instead of a class.
This patch makes it a function to simplify the interface.
All details of Writer class is now hidden from other parts of the linker.
llvm-svn: 244169
2015-08-05 23:24:46 +00:00
Rafael Espindola
4b7c2fc64e
Add bare minimum to get a working i386 linux program.
...
llvm-svn: 244050
2015-08-05 15:08:40 +00:00
Rafael Espindola
e7a00e326a
For now we only have on Chunk type. Simplify.
...
The others we have in sight are
* common symbols.
* entries in SHF_MERGE sections.
They will have a substantially different treatment. It is not clear if it is
worth it putting them all in a single list just to dispatch based on the kind on
the other side.
I hope to implement common symbols soon, and then we will be in a position
to have a concrete discussion. For now this is simpler for the the implemented
features.
llvm-svn: 244042
2015-08-05 13:55:34 +00:00
Rafael Espindola
e3335d8a66
Delete dead code.
...
llvm-svn: 244040
2015-08-05 13:26:54 +00:00
Rafael Espindola
3c9cb4b3d3
lld elf2: Diagnose trying to mix incompatible files.
...
This is also a step in instantiating the writer with the correct template
argument.
llvm-svn: 244035
2015-08-05 12:03:34 +00:00
Rafael Espindola
87ee8dcb64
Use ELFOSABI_NONE. This matches both bfd ld and gold.
...
llvm-svn: 244033
2015-08-05 11:55:52 +00:00
Rafael Espindola
aefd5c1617
Create ObjectFile with the correct endian and word size.
...
The writer is still hard coded to 64 bits le, but with this we can test for
invalid ELF files.
llvm-svn: 243993
2015-08-04 15:45:54 +00:00
Rafael Espindola
e0a5c09a5c
Use make_unique. NFC.
...
llvm-svn: 243988
2015-08-04 15:06:36 +00:00
Rafael Espindola
2ffdd4d0e5
The SymbolTable doesn't need to be a template.
...
It was already using just code that is common to all object files.
llvm-svn: 243985
2015-08-04 14:29:01 +00:00
Rafael Espindola
602592a048
Remove a silly return.
...
llvm-svn: 243983
2015-08-04 14:08:11 +00:00
Rafael Espindola
30318518a5
This function never returns null, don't check it.
...
llvm-svn: 243982
2015-08-04 14:00:56 +00:00
Rafael Espindola
b89951457d
Remove SymbolTable::getChunks.
...
When we were using a std::sort over all the chunks we needed to put them in a
single storage.
Now that we just iterate over them and use a map to find the output section,
we can avoid allocating the temporary storage.
llvm-svn: 243980
2015-08-04 13:39:30 +00:00
Michael J. Spencer
44fc1c0a73
[ELF2] Templatize addChunk and handle section flags.
...
llvm-svn: 243579
2015-07-29 22:14:50 +00:00
Rui Ueyama
b4731a5847
ELF2: Use DenseMap instead of std::map for a symbol table.
...
We use DenseMap for COFF too.
llvm-svn: 243534
2015-07-29 16:30:40 +00:00
Michael J. Spencer
5a6f5f178e
[ELF2] Emit correct section types.
...
llvm-svn: 243509
2015-07-29 00:52:17 +00:00
Michael J. Spencer
8039dae26d
[ELF2] Emit section table.
...
llvm-svn: 243506
2015-07-29 00:30:10 +00:00
Michael J. Spencer
cdae0a4e2d
[ELF2] Devirtualize SymbolBody.
...
llvm-svn: 243496
2015-07-28 22:58:25 +00:00
Rui Ueyama
e44524de65
Use SmallDenseMap instead of std::map where we don't care about order of keys.
...
llvm-svn: 243358
2015-07-28 00:17:25 +00:00
Rui Ueyama
fdbbcdad87
ELF2: Inline very small functions.
...
llvm-svn: 243323
2015-07-27 20:39:04 +00:00
Rui Ueyama
a7ccb2926f
ELF2: Devirtualize SymbolBody::compare. NFC.
...
This is to make it consistent with COFF.
llvm-svn: 243321
2015-07-27 20:39:01 +00:00
Rui Ueyama
06d7bd2e42
ELF2: Avoid calling std::sort to make output deterministic.
...
llvm-svn: 243232
2015-07-26 00:50:15 +00:00
Rui Ueyama
179cd7b82a
ELF2: Remove dead code.
...
llvm-svn: 243231
2015-07-26 00:50:13 +00:00
Michael J. Spencer
84487f1174
[ELF2] Add a new ELF linker based on the new PE/COFF linker.
...
Differential Revision: http://reviews.llvm.org/D11188
llvm-svn: 243161
2015-07-24 21:03:07 +00:00
Michael J. Spencer
bae540e945
Revert ELF port. Posting to mailing list.
...
llvm-svn: 242118
2015-07-14 04:49:48 +00:00
Michael J. Spencer
50ed5308d1
Fix warnings.
...
llvm-svn: 242098
2015-07-14 01:02:37 +00:00
Michael J. Spencer
f754b1fe12
Put explicit template instantiations in the correct namespace.
...
llvm-svn: 242093
2015-07-14 00:22:00 +00:00
Michael J. Spencer
64661cdb4c
Remove commented out code.
...
llvm-svn: 242092
2015-07-14 00:11:38 +00:00
Michael J. Spencer
8a4145411f
Initial ELF port.
...
This is a direct port of the new PE/COFF linker to ELF.
It can take a single object file and generate a valid executable that executes at the first byte in the text section.
llvm-svn: 242088
2015-07-13 23:48:06 +00:00