Rafael Espindola
d1fc658396
Don't iterate over all sections in the ELFFile constructor.
...
With this we finally have an ELFFile that is O(1) to construct. This is helpful
for programs like lld which have to do their own section walk.
llvm-svn: 244510
2015-08-10 21:29:35 +00:00
Rafael Espindola
5f4f99017d
Rename improperly named variable. NFC.
...
llvm-svn: 244507
2015-08-10 21:25:44 +00:00
Rafael Espindola
e12302b7c2
Delete getDotSymtabSec.
...
Another step in avoiding iterating over all sections in the ELFFile constructor.
llvm-svn: 244496
2015-08-10 20:25:04 +00:00
Rafael Espindola
2f3cc0d8e8
rename toELFShdrIter to getSection and move it closer to getSymbol. NFC.
...
llvm-svn: 244483
2015-08-10 19:10:37 +00:00
Rafael Espindola
8c3629f049
toELFSymIter and getSymbol are now the same thing. Merge them.
...
llvm-svn: 244482
2015-08-10 19:07:56 +00:00
Rafael Espindola
ead34eeb8c
Return early on error. Should fix the asan bots.
...
llvm-svn: 244397
2015-08-08 14:54:09 +00:00
Rafael Espindola
f6876bec4e
Delete dead code. NFC.
...
llvm-svn: 244378
2015-08-08 00:25:57 +00:00
Rafael Espindola
088669ce42
Convert getSymbolSection to return an ErrorOr.
...
This function can actually fail since the symbol contains an index to the
section and that can be invalid.
llvm-svn: 244375
2015-08-07 23:27:14 +00:00
Rafael Espindola
731b9ea15f
Don't look for a SHT_DYNSYM in the ELFFile's constructor.
...
Yet another step in not having it scan every section.
llvm-svn: 244353
2015-08-07 20:11:08 +00:00
Rafael Espindola
246909bb95
Remove the symbol iteration functions that don't take a symbol table.
...
Another step in making ELFFile's constructor not iterate over all sections.
llvm-svn: 244351
2015-08-07 20:07:27 +00:00
Rafael Espindola
0fb3af3648
Delete dead code. NFC.
...
llvm-svn: 244335
2015-08-07 17:06:05 +00:00
Rafael Espindola
186d9c2b83
Don't use a DenseMap to handle SHT_SYMTAB_SHNDX.
...
It is already a convenient table.
llvm-svn: 244333
2015-08-07 16:51:44 +00:00
Rafael Espindola
cd0f8af304
Delete dead typedef. NFC.
...
llvm-svn: 244328
2015-08-07 16:36:47 +00:00
Rafael Espindola
0d29f912e2
Add dynamic_table iterators back to ELF.h.
...
In tree they are only used by llvm-readobj, but it is also used by
https://github.com/mono/CppSharp .
While at it, add some missing error checking.
llvm-svn: 244320
2015-08-07 15:25:20 +00:00
Rafael Espindola
833df2a833
Move to llvm-readobj code that is only used there.
...
lld might end up using a small part of this, but it will be in a much
refactored form. For now this unblocks avoiding the full section scan in the
ELFFile constructor.
This also has a (very small) error handling improvement.
llvm-svn: 244282
2015-08-06 21:54:37 +00:00
Rafael Espindola
a3c06126a7
Reuse variable. NFC.
...
llvm-svn: 244214
2015-08-06 14:51:02 +00:00
Rafael Espindola
5eade55227
Drop unnecessary static_cast.
...
ELFT::TargetEndianness already has the correct type.
llvm-svn: 244032
2015-08-05 11:53:59 +00:00
Lang Hames
8d59074fa2
[RuntimeDyld] Make LoadedObjectInfo::getLoadedSectionAddress take a SectionRef
...
rather than a string section name.
llvm-svn: 243456
2015-07-28 17:52:11 +00:00
Rafael Espindola
69ab1fad83
Delete dead code.
...
llvm-svn: 243015
2015-07-23 13:42:16 +00:00
Rafael Espindola
ccff4645d4
Add a version of getSymbol with an explicit symbol table. Use it. NFC.
...
llvm-svn: 243011
2015-07-23 12:49:40 +00:00
Rafael Espindola
8c9308a255
Refactor duplicated code and check for invalid symbol table size.
...
llvm-svn: 242981
2015-07-23 03:24:22 +00:00
Rafael Espindola
523d18a9a5
Fix fetching the symbol table of a thin archive.
...
We were trying to read it as an external file.
llvm-svn: 242926
2015-07-22 19:34:26 +00:00
Rafael Espindola
60b9bc96e6
Delete ELFEntityIterator. NFC.
...
llvm-svn: 242901
2015-07-22 14:09:20 +00:00
Michael J. Spencer
9eab0b93a6
[Object][ELF] Handle files with no section header string table.
...
llvm-svn: 242839
2015-07-21 21:40:33 +00:00
Rafael Espindola
824cff967b
Don't iterate over the program headers in the constructor of ELFFile.
...
Not every program needs this information.
In particular, it is necessary and sufficient for a static linker to scan the
section table.
llvm-svn: 242833
2015-07-21 20:50:53 +00:00
Rafael Espindola
af31ee4414
Remove always null argument.
...
llvm-svn: 242828
2015-07-21 19:38:32 +00:00
Rafael Espindola
55cbf3bb2b
Remove getDynamicSymbolName.
...
llvm-svn: 242821
2015-07-21 18:20:17 +00:00
Rafael Espindola
244e468fc1
Remove getStaticSymbolName.
...
Every user now keeps track of the correct string table to use.
llvm-svn: 242818
2015-07-21 18:04:29 +00:00
Rafael Espindola
e19a786822
Remove dead code.
...
llvm-svn: 242804
2015-07-21 16:50:57 +00:00
Rafael Espindola
baa0c22119
Replace the last uses of ELF::getSymbolName in llvm-readobj.
...
llvm-svn: 242798
2015-07-21 16:26:21 +00:00
Rafael Espindola
1a0b4be6e2
llvm-readobj: use the associated string table to print symbols. NFI.
...
This just removes some cases that require ELFFile to eagerly parse the ELF
file.
llvm-svn: 242794
2015-07-21 16:02:10 +00:00
Rafael Espindola
4f0f847082
Remove unused variable.
...
llvm-svn: 242789
2015-07-21 14:45:56 +00:00
Rafael Espindola
a8985f7f59
Don't do a walk over the dynamic table just to find DT_SONAME.
...
llvm-svn: 242752
2015-07-21 01:01:29 +00:00
Rafael Espindola
329a6aeab9
Remove duplicated code.
...
Both ELFObjectFile and ELFFile had an implementation of getLoadName.
llvm-svn: 242725
2015-07-20 22:41:44 +00:00
Rafael Espindola
0f258e6887
Simplify now that we can iterate backwards. NFC.
...
llvm-svn: 242715
2015-07-20 21:45:56 +00:00
Rafael Espindola
8dc741d1bf
Simplify iterating over the dynamic section and report broken ones.
...
llvm-svn: 242712
2015-07-20 21:23:29 +00:00
Rafael Espindola
1c58b24a44
Remove Elf_Rela_Iter and Elf_Rel_Iter.
...
Use just the pointers and check for invalid relocation sections.
llvm-svn: 242700
2015-07-20 20:07:50 +00:00
Rafael Espindola
3323a6b994
Report errors an invalid virtual addresses.
...
llvm-svn: 242676
2015-07-20 14:45:03 +00:00
Rafael Espindola
84ebc62561
Remove unnecessary code.
...
We were locating the dynamic string table via both the section and segment
headers.
llvm-svn: 242674
2015-07-20 14:29:00 +00:00
Rafael Espindola
290ed9344d
Simplify the search for which segment has a virtual address. NFC.
...
llvm-svn: 242672
2015-07-20 14:15:38 +00:00
Rafael Espindola
0fb99d1c9a
Simplify iterating over program headers and detect corrupt ones.
...
We now use a simple pointer and have range loops.
llvm-svn: 242669
2015-07-20 13:35:33 +00:00
Rafael Espindola
d304dca4c6
For new archive member we only need to store the full path.
...
We were storing both the path and the file name, which was redundant
and easy to get confused up with.
llvm-svn: 242347
2015-07-15 22:46:53 +00:00
Rafael Espindola
cb9db3a66d
Handle the error of trying to convert a regular archive to a thin one.
...
While at it, test that we can add to a thin archive.
llvm-svn: 242330
2015-07-15 20:45:56 +00:00
Rafael Espindola
71571d65a9
Initial support for writing thin archives.
...
llvm-svn: 242269
2015-07-15 05:47:46 +00:00
Rafael Espindola
fadf8cbec7
Add support for reading members out of thin archives.
...
For now the Archive owns the buffers of the thin archive members.
This makes for a simple API, but all the buffers are destructed
only when the archive is destructed. This should be fine since we
close the files after mmap so we should not hit an open file
limit.
llvm-svn: 242215
2015-07-14 22:18:43 +00:00
Rafael Espindola
1893c5e76b
llvm-ar: Don't try to extract from thin archives.
...
This matches the gnu ar behavior.
llvm-svn: 242162
2015-07-14 16:55:13 +00:00
Hans Wennborg
9a64836fb3
Allocate the IntervalMap in ELF.h on the heap to work around MSVC alignment bug (PR24113)
...
llvm-svn: 242157
2015-07-14 16:27:16 +00:00
Rafael Espindola
dc111c1ec7
Add a herper function. NFC.
...
llvm-svn: 242100
2015-07-14 01:06:16 +00:00
Rafael Espindola
8be47bcf22
Add support deterministic output in llvm-ar and make it the default.
...
llvm-svn: 242061
2015-07-13 20:38:09 +00:00
Michael J. Spencer
2a3efb265a
[Object][ELF] Handle the dynamic string table in files without a section table.
...
llvm-svn: 241937
2015-07-10 20:11:57 +00:00