Michael J. Spencer
9a28851e52
COFF: Implement sectionContainsSymbol for relocatable files only.
...
llvm-svn: 141884
2011-10-13 20:36:54 +00:00
Nick Lewycky
d3043965b9
Elf_Word is not POD! Stop using it in a DenseMap.
...
llvm-svn: 141851
2011-10-13 03:30:21 +00:00
Owen Anderson
000721f058
The VMAs stored in the symbol table of a MachO file are absolute addresses, not offsets from the section.
...
llvm-svn: 141828
2011-10-12 22:37:10 +00:00
Owen Anderson
34e1707fbb
Don't label a STAB debugging symbol as a function symbol.
...
llvm-svn: 141824
2011-10-12 22:23:12 +00:00
Owen Anderson
fb02ecde5e
sectionContainsSymbol needs to be based on VMA's rather than section indices to properly account for files with segment load commands that contain no sections.
...
llvm-svn: 141822
2011-10-12 22:21:32 +00:00
Owen Anderson
f903c154c7
Section indices in MachO symbol tables begin at 1, not 0.
...
llvm-svn: 141815
2011-10-12 21:43:24 +00:00
NAKAMURA Takumi
9bfcf77638
lib/Object/ELFObjectFile.cpp: Fix undefined behavior for MC/ELF/many-section.s not to fail (on msvc).
...
DenseMap::lookup(k) would return "default constructor value" when k was not met. It would be useless when value type were POD.
llvm-svn: 141774
2011-10-12 10:28:55 +00:00
Owen Anderson
27c579dba4
Expose MachOObjectFile externally, like we do for COFF. First step in reducing the amount of special-purpose code needed for llvm-objdump.
...
llvm-svn: 141684
2011-10-11 17:32:27 +00:00
Nick Lewycky
43f01cae95
Reapply r141605 with fixes for appropriate handling of reserved section numbers
...
in st_shndx fields.
llvm-svn: 141639
2011-10-11 03:18:58 +00:00
Nick Lewycky
7adc4370e0
Add support for .symtab_shnidx. Unfortunately, doing this required breaking a
...
layer of abstraction around SymbolRef where you can read its private
SymbolPimpl member.
llvm-svn: 141636
2011-10-11 02:57:48 +00:00
Nick Lewycky
35a90c4baf
Revert r141605 as it broke tests for llvm-nm.
...
llvm-svn: 141614
2011-10-11 00:38:56 +00:00
Nick Lewycky
fdbb7c51e9
Add support for reading many-section ELF files.
...
If you want to tackle adding the testcase, let me know. It's a 4.2MB ELF file
and I'll be happy to mail it to you.
llvm-svn: 141605
2011-10-11 00:15:42 +00:00
Michael J. Spencer
ee3be4f2a9
Fix warning.
...
llvm-svn: 141597
2011-10-10 23:36:56 +00:00
Michael J. Spencer
7989460a1f
Object: add getSectionAlignment.
...
llvm-svn: 141581
2011-10-10 21:55:43 +00:00
NAKAMURA Takumi
648b2fafd8
lib/Object: Suppress warnings on gcc-4.3.4 cygwin
...
llvm-svn: 141485
2011-10-08 11:22:53 +00:00
Michael J. Spencer
159970f733
Object: Add support for opening stdin.
...
llvm-svn: 141449
2011-10-08 00:17:58 +00:00
Michael J. Spencer
7eb8159927
Object: constize Archive.
...
llvm-svn: 141448
2011-10-08 00:17:45 +00:00
Michael J. Spencer
cfb6cc7b14
Fix GCC again.
...
llvm-svn: 141389
2011-10-07 19:46:12 +00:00
Michael J. Spencer
e5fd004719
Change relocation API to be per section. This time without breaking GCC.
...
llvm-svn: 141385
2011-10-07 19:25:32 +00:00
Bill Wendling
206d8a7f48
Revert 141376 and 141377 due to breaking the build.
...
--- Reverse-merging r141377 into '.':
U tools/llvm-objdump/MachODump.cpp
--- Reverse-merging r141376 into '.':
U include/llvm/Object/COFF.h
U include/llvm/Object/ObjectFile.h
U include/llvm-c/Object.h
U tools/llvm-objdump/llvm-objdump.cpp
U lib/Object/MachOObjectFile.cpp
U lib/Object/COFFObjectFile.cpp
U lib/Object/Object.cpp
U lib/Object/ELFObjectFile.cpp
llvm-svn: 141379
2011-10-07 18:25:37 +00:00
Michael J. Spencer
b0d61540cb
Change relocation API to be per section.
...
llvm-svn: 141376
2011-10-07 18:15:25 +00:00
Michael J. Spencer
800619f2bb
Object: Add isSection{Data,BSS}.
...
llvm-svn: 140721
2011-09-28 20:57:30 +00:00
Michael J. Spencer
d3b7b12618
Object: Add archive support.
...
llvm-svn: 140626
2011-09-27 19:36:55 +00:00
Benjamin Kramer
75d1cf3391
Object: make the following changes into SymbolRef
...
- Add enum SymbolType and function getSymbolType()
- Add function isGlobal() - it's returns true for symbols that can be used in another objects, such as library functions.
- Rename function getAddress() to getOffset() and add new function getAddress(), because currently getAddress() returns section offset of symbol first byte. new getAddress() return symbol address.
- Change usage SymbolRef::getAddress() to getOffset() in tools/llvm-nm and tools/llvm-objdump.
Patch by Danil Malyshev!
llvm-svn: 139683
2011-09-14 01:22:52 +00:00
Benjamin Kramer
557a81e9d7
ObjectFile: Add support for mach-o-style dSYM companion files.
...
llvm-svn: 139676
2011-09-14 00:39:22 +00:00
Benjamin Kramer
40ddfedd6c
Silence false positive uninitialized variable warnings from GCC.
...
llvm-svn: 139573
2011-09-13 01:59:24 +00:00
Benjamin Kramer
eba0b40384
Remove dead code.
...
llvm-svn: 139343
2011-09-09 00:22:05 +00:00
Nick Lewycky
940b598f6f
Fix release build:
...
MachOObjectFile.cpp:524: error: unused variable 'NumLoadCommands' [-Wunused-variable]
llvm-svn: 139341
2011-09-09 00:16:50 +00:00
Benjamin Kramer
022ecdf277
Add support for relocations to ObjectFile.
...
Patch by Danil Malyshev!
llvm-svn: 139314
2011-09-08 20:52:17 +00:00
Benjamin Kramer
58298f028c
Teach macho-dump to dump the uleb128s referred to by linkedit_data segments.
...
llvm-svn: 138836
2011-08-30 22:10:58 +00:00
Benjamin Kramer
267a6d92fa
Teach macho-dump how to dump linkedit_data load commands.
...
llvm-svn: 138807
2011-08-30 18:33:37 +00:00
Chandler Carruth
9d7feab3e0
Rewrite the CMake build to use explicit dependencies between libraries,
...
specified in the same file that the library itself is created. This is
more idiomatic for CMake builds, and also allows us to correctly specify
dependencies that are missed due to bugs in the GenLibDeps perl script,
or change from compiler to compiler. On Linux, this returns CMake to
a place where it can relably rebuild several targets of LLVM.
I have tried not to change the dependencies from the ones in the current
auto-generated file. The only places I've really diverged are in places
where I was seeing link failures, and added a dependency. The goal of
this patch is not to start changing the dependencies, merely to move
them into the correct location, and an explicit form that we can control
and change when necessary.
This also removes a serialization point in the build because we don't
have to scan all the libraries before we begin building various tools.
We no longer have a step of the build that regenerates a file inside the
source tree. A few other associated cleanups fall out of this.
This isn't really finished yet though. After talking to dgregor he urged
switching to a single CMake macro to construct libraries with both
sources and dependencies in the arguments. Migrating from the two macros
to that style will be a follow-up patch.
Also, llvm-config is still generated with GenLibDeps.pl, which means it
still has slightly buggy dependencies. The internal CMake
'llvm-config-like' macro uses the correct explicitly specified
dependencies however. A future patch will switch llvm-config generation
(when using CMake) to be based on these deps as well.
This may well break Windows. I'm getting a machine set up now to dig
into any failures there. If anyone can chime in with problems they see
or ideas of how to solve them for Windows, much appreciated.
llvm-svn: 136433
2011-07-29 00:14:25 +00:00
Benjamin Kramer
f6f3e81c07
ObjectFile: Add a method to check whether a section contains a symbol.
...
- No ELF or COFF implementation yet, I don't have a way to test that.
Should be straightforward to add though.
llvm-svn: 135288
2011-07-15 18:39:21 +00:00
Benjamin Kramer
99582e9b52
MachOObjectFile: Get symbol functions ready for 64 bit.
...
llvm-svn: 135282
2011-07-15 17:32:45 +00:00
Benjamin Kramer
c41d4fe243
Output MachO section names in the form SEGMENT,section.
...
llvm-svn: 135231
2011-07-15 00:29:02 +00:00
Benjamin Kramer
56498d167a
Add support for 64 bit objects to MachOObjectFile.
...
- I don't see a better way than duplicating all the code.
llvm-svn: 135229
2011-07-15 00:14:48 +00:00
Benjamin Kramer
b1d80722a8
MachOObjectFile: Change isSectionText to return true for sections named text, not for load commands name __TEXT (which isn't the case in actual object files)
...
llvm-svn: 135228
2011-07-15 00:14:46 +00:00
Benjamin Kramer
e6490e03d7
Use memcmp.
...
llvm-svn: 134439
2011-07-05 20:28:00 +00:00
Rafael Espindola
bac192d6cf
Really fix typo :-(
...
llvm-svn: 134436
2011-07-05 19:17:10 +00:00
Rafael Espindola
5a0f0fba30
Fix typo.
...
llvm-svn: 134433
2011-07-05 19:13:27 +00:00
Rafael Espindola
00aae24a08
Compare all 4 bytes of the header.
...
llvm-svn: 134427
2011-07-05 18:41:47 +00:00
Michael J. Spencer
5ebaed2404
Fix warnings.
...
llvm-svn: 134408
2011-07-05 14:48:59 +00:00
Michael J. Spencer
1d6167fd30
Object: Add proper error handling.
...
llvm-svn: 133872
2011-06-25 17:55:23 +00:00
Michael J. Spencer
ec29b121ff
Make Binary the parent of ObjectFile and update children to new interface.
...
llvm-svn: 133870
2011-06-25 17:54:50 +00:00
Michael J. Spencer
b02c95d43e
Add Binary class. This is a cleaner parent than ObjectFile.
...
llvm-svn: 133869
2011-06-25 17:54:29 +00:00
Michael J. Spencer
e4446923cf
Add Object/Error.
...
llvm-svn: 133868
2011-06-25 17:42:56 +00:00
Benjamin Kramer
975c29629f
Revert r132910 and r132909 on behalf of Michael. They didn't build with clang.
...
llvm-svn: 132914
2011-06-13 12:56:51 +00:00
Michael J. Spencer
aa41981dd8
Revert the last two commits in the series. r132911, r132912.
...
llvm-svn: 132913
2011-06-13 11:53:31 +00:00
Michael J. Spencer
a7f9c49aab
Make Binary the parent of ObjectFile and update children to new interface.
...
llvm-svn: 132911
2011-06-13 11:12:33 +00:00
Michael J. Spencer
7dc3c3de7e
Add Binary class. This is a cleaner parent than ObjectFile.
...
llvm-svn: 132910
2011-06-13 11:12:12 +00:00
Michael J. Spencer
0901cec03e
Add Object/Error.
...
llvm-svn: 132909
2011-06-13 11:11:59 +00:00
Michael J. Spencer
422504fba6
Fix spelling and sort CMakeLists.txt.
...
llvm-svn: 132908
2011-06-13 11:11:39 +00:00
Nick Lewycky
5f1eb968f0
Remove dead variable pointed out by GCC 4.6 warnings, and reflow this a little
...
to scope a variable more tightly per llvm coding style. No functional change.
llvm-svn: 130684
2011-05-02 05:05:29 +00:00
Eric Christopher
ae95ad1935
Use enums for constant values.
...
llvm-svn: 129984
2011-04-22 06:34:01 +00:00
Eric Christopher
22a19816f6
Make the file format strings a little prettier for mach-o.
...
llvm-svn: 129980
2011-04-22 04:08:58 +00:00
Eric Christopher
1dd335de65
Add MachOObjectFile.cpp to cmake.
...
llvm-svn: 129978
2011-04-22 04:06:24 +00:00
Eric Christopher
bafb9347dd
Hook in mach-o object files into Object interface.
...
llvm-svn: 129976
2011-04-22 03:50:50 +00:00
Eric Christopher
7b015c7598
Add an ObjectFile implementation for mach-o.
...
Patch by Patrick Walton!
llvm-svn: 129974
2011-04-22 03:19:48 +00:00
Eric Christopher
19ea5ae81a
Start migrating mach-o dumping facilities to the object file out of a
...
separate executable.
llvm-svn: 128801
2011-04-03 23:51:47 +00:00
Eric Christopher
c56d2e8fd0
Move Object.cpp out of VMCore and into Object.
...
llvm-svn: 128800
2011-04-03 23:07:51 +00:00
Eric Christopher
ee066fc4f3
Assorted bugfixes in object file handling:
...
- Adds support for sniffing PE/COFF files on win32 (.exe and .dll)
which are COFF files that have an MS-DOS compatibility stub on
the front of them.
- Fixes a bug in the COFFObjectFile's support for the Microsoft COFF
extension for long symbol names, wherein it was attempting to parse
the leading '/' in an extended symbol name reference as part of the
integer offset.
- Fixes bugs in COFFObjectFile and ELFObjectFile wherein section
and symbol iterators were being returned with uninitialized bytes;
the type DataRefImpl is a union between 2 32-bit words (d.a and d.b)
and a single intptr_t word (p). Only p was being initialized, so in
32-bit builds the result would be iterators with random upper 32-bit
words in their DataRefImpls. This caused random failures when
seeking around in object files.
Patch by Graydon Hoare!
llvm-svn: 128799
2011-04-03 22:53:19 +00:00
Michael J. Spencer
0324b67267
Object: Fix type punned pointer issues by making DataRefImpl a union and using intptr_t.
...
llvm-svn: 123962
2011-01-21 02:27:02 +00:00
Michael J. Spencer
b60a18dea8
Object: Add ELF support.
...
llvm-svn: 123896
2011-01-20 06:38:47 +00:00
Michael J. Spencer
8e90adaf24
Object: Add COFF Support.
...
llvm-svn: 123895
2011-01-20 06:38:34 +00:00
Benjamin Kramer
a29e1bf8ad
Fix mismatched new[]/delete.
...
llvm-svn: 122053
2010-12-17 09:56:50 +00:00
Michael J. Spencer
39a0ffc394
MemoryBuffer now return an error_code and returns a OwningPtr<MemoryBuffer> via an out parm.
...
llvm-svn: 121958
2010-12-16 03:29:14 +00:00
Daniel Dunbar
7bfb872d3d
Mach-O: Tweak field name.
...
llvm-svn: 121465
2010-12-10 06:19:39 +00:00
Michael J. Spencer
7b6fef82d4
Support/MemoryBuffer: Replace all uses of std::string *ErrMsg with error_code &ec. And fix clients.
...
llvm-svn: 121379
2010-12-09 17:36:48 +00:00
Michael J. Spencer
447762da85
Merge System into Support.
...
llvm-svn: 120298
2010-11-29 18:16:10 +00:00
Daniel Dunbar
e308b8edab
macho-dump: Add support for --dump-section-data and tweak a few format strings.
...
llvm-svn: 120219
2010-11-27 13:58:16 +00:00
Daniel Dunbar
83224fc391
macho-dump: Add support for dumping symbol table entries.
...
llvm-svn: 120218
2010-11-27 13:52:53 +00:00
Daniel Dunbar
8680ce6ffc
macho-dump: Add support for dumping string table data.
...
llvm-svn: 120217
2010-11-27 13:46:11 +00:00
Daniel Dunbar
0ac77d526d
macho-dump: Add support for dumping relocation entries.
...
llvm-svn: 120216
2010-11-27 13:39:48 +00:00
Daniel Dunbar
5867690cfa
macho-dump: Add support for dumping sections.
...
llvm-svn: 120215
2010-11-27 13:33:15 +00:00
Daniel Dunbar
c983afc5a1
macho-dump: Add support for dumping dysymtab indirect symbol table.
...
llvm-svn: 120214
2010-11-27 13:26:12 +00:00
Benjamin Kramer
032f08b556
Unbreak build for newer GCCs.
...
llvm-svn: 120205
2010-11-27 09:08:25 +00:00
Daniel Dunbar
33dab2a6ee
macho-dump: Add support for dumping symtab and dysymtab commands.
...
llvm-svn: 120204
2010-11-27 08:33:44 +00:00
Daniel Dunbar
a8070e0284
macho-dump: Add support for dumping segment load commands.
...
llvm-svn: 120203
2010-11-27 08:22:29 +00:00
Daniel Dunbar
3977e7d22c
Object/Mach-O: Add header and load command information.
...
llvm-svn: 120198
2010-11-27 07:19:41 +00:00
Daniel Dunbar
feb1c5d830
Object/Mach-O: Validate Mach-O magic and initialize format info.
...
llvm-svn: 120195
2010-11-27 06:39:22 +00:00
Daniel Dunbar
1df8d83a55
MC/Mach-O: Start stubbing out a Mach-O object file wrapper.
...
llvm-svn: 120190
2010-11-27 05:38:50 +00:00
Peter Collingbourne
ee5ba319db
Fix typo: Exectuable -> Executable
...
llvm-svn: 119433
2010-11-17 00:43:43 +00:00
Michael J. Spencer
f177d16f68
Object: Get rid of sys::Path, Triple, and cleanup namespace.
...
llvm-svn: 119309
2010-11-16 01:06:51 +00:00
Michael J. Spencer
f4a6a14c93
Object: Add missing makefile.
...
llvm-svn: 119110
2010-11-15 03:33:14 +00:00
Michael J. Spencer
fe5ee80268
Add LLVMObject Library.
...
llvm-svn: 119107
2010-11-15 03:21:41 +00:00