Rafael Espindola
3cdeb17ff2
refactor the struct byte swapping to a helper function.
...
llvm-svn: 179851
2013-04-19 13:45:05 +00:00
Rafael Espindola
feef8c2469
Don't read one command past the end.
...
Thanks to Evgeniy Stepanov for reporting this.
It might be a good idea to add a command iterator abstraction to MachO.h, but
this fixes the bug for now.
llvm-svn: 179848
2013-04-19 11:36:47 +00:00
Rafael Espindola
56f976f6bd
At Jim Grosbach's request detemplate Object/MachO.h.
...
We are still able to handle mixed endian objects by swapping one struct at a
time.
llvm-svn: 179778
2013-04-18 18:08:55 +00:00
Rafael Espindola
9b709259e1
Finish templating MachObjectFile over endianness.
...
We are now able to handle big endian macho files in llvm-readobject. Thanks to
David Fang for providing the object files.
llvm-svn: 179440
2013-04-13 01:45:40 +00:00
Rafael Espindola
ecf1320579
Add 179294 back, but don't use bit fields so that it works on big endian hosts.
...
Original message:
Print more information about relocations.
With this patch llvm-readobj now prints if a relocation is pcrel, its length,
if it is extern and if it is scattered.
It also refactors the code a bit to use bit fields instead of shifts and
masks all over the place.
llvm-svn: 179345
2013-04-12 00:17:33 +00:00
Rafael Espindola
e2742a038c
Revert my last two commits while I debug what is wrong in a big endian host.
...
llvm-svn: 179303
2013-04-11 17:46:10 +00:00
Rafael Espindola
708a44d464
Print more information about relocations.
...
With this patch llvm-readobj now prints if a relocation is pcrel, its length,
if it is extern and if it is scattered.
It also refactors the code a bit to use bit fields instead of shifts and
masks all over the place.
llvm-svn: 179294
2013-04-11 16:31:37 +00:00
Rafael Espindola
e410099a02
Fix MachO's getRelocationAdditionalInfo.
...
It was returning the loaded address of the section containing the relocation,
which really doesn't seem to be the intent of this function.
llvm-svn: 179255
2013-04-11 02:21:31 +00:00
Rafael Espindola
641c9bcfd5
Template MachOObjectFile over endianness too.
...
llvm-svn: 179179
2013-04-10 15:33:44 +00:00
Rafael Espindola
eaae687d3e
Template the MachO types over endianness.
...
For now they are still only used as little endian.
llvm-svn: 179147
2013-04-10 03:48:25 +00:00
Rafael Espindola
c2413f59e4
Convert MachOObjectFile to a template.
...
For now it is templated only on being 64 or 32 bits. I will add little/big
endian next.
llvm-svn: 179097
2013-04-09 14:49:08 +00:00
Rafael Espindola
eb8b211e61
More uses for SymbolTableEntryBase.
...
llvm-svn: 179076
2013-04-09 01:04:06 +00:00
Rafael Espindola
5d6cec9bff
Add a SymbolTableEntryBase.
...
Use it when we don't need to know if we have a 32 or 64 bit SymbolTableEntry.
llvm-svn: 179074
2013-04-09 00:22:58 +00:00
Rafael Espindola
65d601f96c
Add a SectionBase struct.
...
Use it to share code and when we don't need to know if we have a 32 or 64
bit Section.
llvm-svn: 179072
2013-04-08 23:57:13 +00:00
Rafael Espindola
c0406e162c
Template the MachO types over the word size.
...
llvm-svn: 179051
2013-04-08 20:45:01 +00:00
Rafael Espindola
29d4501774
Remove is64BitLoadCommand.
...
llvm-svn: 179048
2013-04-08 20:18:53 +00:00
Rafael Espindola
d66c414619
Add all 4 MachO object types. Use the stored type to implement is64Bits().
...
llvm-svn: 179021
2013-04-08 13:25:33 +00:00
Rafael Espindola
421305aff8
Make MachOObjectFile independent from MachOObject.
...
llvm-svn: 178998
2013-04-07 20:01:29 +00:00
Rafael Espindola
c1f28b6a8e
Implement MachOObjectFile::getData directly.
...
llvm-svn: 178997
2013-04-07 19:42:15 +00:00
Rafael Espindola
28814d7911
Implement MachOObjectFile::is64Bit directly.
...
llvm-svn: 178996
2013-04-07 19:38:15 +00:00
Rafael Espindola
774a8cec37
Implement MachOObjectFile::getHeaderSize directly.
...
llvm-svn: 178995
2013-04-07 19:31:49 +00:00
Rafael Espindola
d665259104
Implement MachOObjectFile::getHeader directly.
...
llvm-svn: 178994
2013-04-07 19:26:57 +00:00
Rafael Espindola
60689987ef
Implement MachOObjectFile::getHeaderSize and MachOObjectFile::getData.
...
These were the last missing forwarding functions. Also consistently use
the forwarding functions instead of using MachOObj directly.
llvm-svn: 178992
2013-04-07 19:05:30 +00:00
Rafael Espindola
3c50f06202
Remove LoadCommandInfo now that we always have a pointer to the command.
...
LoadCommandInfo was needed to keep a command and its offset in the file. Now
that we always have a pointer to the command, we don't need the offset.
llvm-svn: 178991
2013-04-07 18:42:06 +00:00
Rafael Espindola
224208b868
Add MachOObjectFile::LoadCommandInfo.
...
This avoids using MachOObject::getLoadCommandInfo.
llvm-svn: 178990
2013-04-07 18:08:12 +00:00