Rafael Espindola
503fe9408d
Expose ELFFileBase::getEMachine. NFC.
...
I will use it in a followup patch.
llvm-svn: 248287
2015-09-22 16:53:55 +00:00
Rafael Espindola
7167585c94
Remove the Chunk terminology from ELF.
...
llvm-svn: 248229
2015-09-22 00:16:19 +00:00
Rafael Espindola
9d06ab6ded
Rename Chunks.(h|cpp) to InputSection.(h|cpp). NFC.
...
llvm-svn: 248226
2015-09-22 00:01:39 +00:00
Rafael Espindola
53d5cea648
Rename SectionChunk to InputSection.
...
This is more consistent with OutputSection. This is also part of removing
the "Chunk" term from the ELF linker, since we just have input/output sections
and program headers.
llvm-svn: 248183
2015-09-21 17:47:00 +00:00
Davide Italiano
6d328d3841
[ELF2] Initial support for local symbols.
...
Symbol table is now populated correctly, but some fields are missing,
they'll be added in the future. This patch also adds --discard-all
flag, which was the default behavior until now.
Differential Revision: http://reviews.llvm.org/D12874
llvm-svn: 247849
2015-09-16 20:45:57 +00:00
Michael J. Spencer
88f0d63bea
[lld][elf2] Fix style.
...
llvm-svn: 247064
2015-09-08 20:36:20 +00:00
Rafael Espindola
18173d420e
Start adding support for symbols in shared libraries.
...
llvm-svn: 247019
2015-09-08 15:50:05 +00:00
Michael J. Spencer
1b348a68e5
[elf2] Add basic archive file support.
...
llvm-svn: 246886
2015-09-04 22:28:10 +00:00
Rafael Espindola
55eed7efcd
Avoid gcc warning.
...
llvm-svn: 246811
2015-09-03 22:25:11 +00:00
Davide Italiano
34812ba258
[ELF2] Don't allocate more SymbolBodies than needed.
...
Differential Revision: http://reviews.llvm.org/D12605
llvm-svn: 246802
2015-09-03 20:25:54 +00:00
Rafael Espindola
f98d6d84cd
Start adding support for shared libraries.
...
This just adds the types and enough support to detect incompatibilities among
shared libraries and object files.
llvm-svn: 246797
2015-09-03 20:03:54 +00:00
Rafael Espindola
905ad3442d
Split out the ELF kind from the InputFile Kind.
...
There were at least two issues with having them together:
* For compatibility checks, we only want to look at the ELF kind.
* Adding support for shared libraries should introduce one InputFile kind,
not 4.
llvm-svn: 246707
2015-09-02 20:43:43 +00:00
Rafael Espindola
51d4690b6e
Start adding support for common symbols.
...
For now this just recognizes the special section number.
llvm-svn: 246332
2015-08-28 21:26:51 +00:00
Rafael Espindola
3a63f3fb22
Add support for weak absolute symbols.
...
On ELF being weak is independent of what we call the kind of the symbol. So
this also makes the code simpler.
llvm-svn: 246326
2015-08-28 20:19:34 +00:00
Michael J. Spencer
67bc8d6b3f
[elf2] Add basic relocation support for x86-64.
...
This currently doesn't handle local symbols.
Differential Revision: http://reviews.llvm.org/D11612
llvm-svn: 246234
2015-08-27 23:15:56 +00:00
Rafael Espindola
0e0c1901c9
Start adding support for absolute symbols.
...
llvm-svn: 246147
2015-08-27 12:40:06 +00:00
Rafael Espindola
5cd113df01
Diagnose symbols with invalid section indexes.
...
llvm-svn: 245884
2015-08-24 22:00:25 +00:00
Rafael Espindola
2034822981
Add support for reading files with more than 0xff00 sections.
...
llvm-svn: 245880
2015-08-24 21:43:25 +00:00
Rafael Espindola
832b93f219
Start recording the section of symbols in the symbol table.
...
Support for more than 64 K sections to follow shortly.
llvm-svn: 245868
2015-08-24 20:06:32 +00:00
Rafael Espindola
1bd885aba4
ELF: Also record the type of undefined symbols.
...
Tested with a weak undefined. Testing with a plain undefined will have to wait
for support for -shared.
llvm-svn: 245069
2015-08-14 16:46:28 +00:00
Rafael Espindola
c44d17ad45
Add the type of the symbols to the symbol table.
...
For now only defined symbols are covered. I will add undefined ones in the
next patch.
llvm-svn: 245057
2015-08-14 15:10:49 +00:00
Rafael Espindola
cde251370a
Include non-alloca sections in the link.
...
llvm-svn: 244895
2015-08-13 14:45:44 +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
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
192e1fa59d
Move the error handling functions to Error.h. NFC.
...
llvm-svn: 244216
2015-08-06 15:08:23 +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
30318518a5
This function never returns null, don't check it.
...
llvm-svn: 243982
2015-08-04 14:00:56 +00:00
Michael J. Spencer
cdae0a4e2d
[ELF2] Devirtualize SymbolBody.
...
llvm-svn: 243496
2015-07-28 22:58:25 +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
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