David Meyer
7e4b976c36
[Object] Add symbol attribute flags: ST_ThreadLocal, ST_Common, and ST_Undefined. Implement these completely for ELF.
...
Rename ST_External to ST_Unknown, and slightly change its semantics. It now only indicates that the symbol's type
is unknown, not that the symbol is undefined. (For that, use ST_Undefined).
llvm-svn: 151696
2012-02-29 02:11:55 +00:00
David Meyer
1df4b84db4
In the ObjectFile interface, replace isInternal(), isAbsolute(), isGlobal(), and isWeak(), with a bitset of flags.
...
llvm-svn: 151670
2012-02-28 23:47:53 +00:00
Michael J. Spencer
8c4729fd44
[Object] Add {begin,end}_dynamic_symbols stubs and implementation for ELF.
...
Add -D option to llvm-nm to dump dynamic symbols.
Patch by David Meyer.
llvm-svn: 151600
2012-02-28 00:40:37 +00:00
Benjamin Kramer
453173f09a
Remove static ctor.
...
llvm-svn: 151160
2012-02-22 13:42:11 +00:00
Eli Bendersky
c7d23ddbbb
Expose the ELFObjectFile class directly in the Object/ELF.h header, similarly
...
to what's done for MachO and COFF. This allows advanced uses of the class to
be implemented outside the Object library. In particular, the DyldELFObject
subclass is now moved into its logical home - ExecutionEngine/RuntimeDyld.
This patch was reviewed by Michael Spencer.
llvm-svn: 150327
2012-02-12 06:12:10 +00:00
Dylan Noblesmith
1d966ae18e
Object: avoid undefined behavior when bounds-checking
...
Don't form an out of bounds pointer just to test if it
would be out of bounds.
Also perform the same bounds checking for all the previous
mapped structures.
llvm-svn: 149750
2012-02-04 02:41:39 +00:00
Matt Beaumont-Gay
88297ef665
Sink assert-only variables into the asserts
...
llvm-svn: 148849
2012-01-24 19:43:30 +00:00
Matt Beaumont-Gay
54db64e2e4
Silence warnings in -asserts build
...
llvm-svn: 148715
2012-01-23 18:46:04 +00:00
Eli Bendersky
bff72ba77e
Remove trailing spaces
...
llvm-svn: 148654
2012-01-22 09:02:48 +00:00
Eli Bendersky
c3c80f0986
Basic runtime dynamic loading capabilities added to ELFObjectFile, implemented
...
in a subclass named DyldELFObject. This class supports rebasing the object file
it represents by re-mapping section addresses to the actual memory addresses
the object was placed in. This is required for MC-JIT implementation on ELF with
debugging support.
Patch reviewed on llvm-commits.
Developed together with Ashok Thirumurthi and Andrew Kaylor.
llvm-svn: 148653
2012-01-22 09:01:03 +00:00
Rafael Espindola
2d3dac3e87
Remove unused variables.
...
llvm-svn: 147261
2011-12-25 01:20:19 +00:00
David Blaikie
a379b18173
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
...
llvm-svn: 146960
2011-12-20 02:50:00 +00:00
Daniel Dunbar
27a7489a03
LLVMBuild: Remove trailing newline, which irked me.
...
llvm-svn: 146409
2011-12-12 19:48:00 +00:00
Daniel Dunbar
539d0a8a09
build/CMake: Finish removal of add_llvm_library_dependencies.
...
llvm-svn: 145420
2011-11-29 19:25:30 +00:00
Danil Malyshev
cbe72fc959
Fixed ObjectFile functions:
...
- getSymbolOffset() renamed as getSymbolFileOffset()
- getSymbolFileOffset(), getSymbolAddress(), getRelocationAddress() returns same result for ELFObjectFile, MachOObjectFile and COFFObjectFile.
- added getRelocationOffset()
- fixed MachOObjectFile::getSymbolSize()
- fixed MachOObjectFile::getSymbolSection()
- fixed MachOObjectFile::getSymbolOffset() for symbols without section data.
llvm-svn: 145408
2011-11-29 17:40:10 +00:00
Daniel Dunbar
9339d4556e
Fix some possible gcc-4.2 may be used uninitialized warnings.
...
llvm-svn: 145292
2011-11-28 22:19:32 +00:00
Chandler Carruth
37ab257b88
Revert r145180 as it is causing test failures on all the bots.
...
Original commit message:
Fixed ObjectFile functions:
- getSymbolOffset() renamed as getSymbolFileOffset()
- getSymbolFileOffset(), getSymbolAddress(), getRelocationAddress() returns same result for ELFObjectFile, MachOObjectFile and COFFObjectFile.
- added getRelocationOffset()
- fixed MachOObjectFile::getSymbolSize()
- fixed MachOObjectFile::getSymbolSection()
- fixed MachOObjectFile::getSymbolOffset() for symbols without section data.
llvm-svn: 145182
2011-11-27 10:37:47 +00:00
Danil Malyshev
2631f93f7d
Fixed ObjectFile functions:
...
- getSymbolOffset() renamed as getSymbolFileOffset()
- getSymbolFileOffset(), getSymbolAddress(), getRelocationAddress() returns same result for ELFObjectFile, MachOObjectFile and COFFObjectFile.
- added getRelocationOffset()
- fixed MachOObjectFile::getSymbolSize()
- fixed MachOObjectFile::getSymbolSection()
- fixed MachOObjectFile::getSymbolOffset() for symbols without section data.
llvm-svn: 145180
2011-11-27 10:12:52 +00:00
Michael J. Spencer
d27d51fbaf
Object/COFF: Support common symbols.
...
llvm-svn: 144861
2011-11-16 23:36:12 +00:00
Daniel Dunbar
52823cc91c
build: Attempt to rectify inconsistencies between CMake and LLVMBuild versions of explicit dependencies.
...
- The hope is that we have a tool/test to verify these are accurate (and tight) soon.
llvm-svn: 144444
2011-11-12 02:10:57 +00:00
Michael J. Spencer
d5930ca99d
Object/COFF: Fix PE reading.
...
llvm-svn: 144148
2011-11-08 23:34:07 +00:00
Benjamin Kramer
c1cb1be9b4
MachOObject: Use DataExtractor's uleb parser instead of rolling our own.
...
llvm-svn: 143810
2011-11-05 12:13:21 +00:00
Benjamin Kramer
4246ca4021
Simplify code.
...
llvm-svn: 143695
2011-11-04 13:52:17 +00:00
Daniel Dunbar
bf9bba47a1
build: Add initial cut at LLVMBuild.txt files.
...
llvm-svn: 143634
2011-11-03 18:53:17 +00:00
Chad Rosier
d294af104a
Removed unused variable.
...
llvm-svn: 143591
2011-11-02 23:21:55 +00:00
Michael J. Spencer
d0f5b0e194
object/COFF: Properly initalize uses of DataRefImpl.
...
llvm-svn: 143562
2011-11-02 19:33:26 +00:00
Michael J. Spencer
e03ea9cd71
Object/Archive: Add symbol table iteration.
...
llvm-svn: 143561
2011-11-02 19:33:12 +00:00
Owen Anderson
debe01c660
If we're searching for a symbol reference to pretty-print a scattered relocation address, and we don't find a symbol table entry, try section begin addresses as well.
...
llvm-svn: 143151
2011-10-27 21:53:50 +00:00
Owen Anderson
62972f5cd3
Fix pretty printing of i386 local sect diff relocations, TLV relocations, and x86_64 TLV relocations in MachO.
...
llvm-svn: 143140
2011-10-27 20:46:09 +00:00
Owen Anderson
f7a89d06ec
Expose relocation accessors through the libObject C API.
...
llvm-svn: 143109
2011-10-27 17:32:36 +00:00
Owen Anderson
e245af65fa
Add relocation iterators to the libObject C API.
...
llvm-svn: 143107
2011-10-27 17:15:47 +00:00
Owen Anderson
bc14bd3bfb
Add support for scattered relocations to the MachO relocatation pretty printer.
...
llvm-svn: 143051
2011-10-26 20:42:54 +00:00
Owen Anderson
90c49c037e
The order of the two symbol listings in a Macho x86_64 subtractor relocation is reversed from what seems intuitive to me.
...
llvm-svn: 143035
2011-10-26 17:28:49 +00:00
Owen Anderson
04e46b6ae4
Include the full 64 bits of relocation data in the type info for MachO relocations, so that we can recognize scattered relocations.
...
llvm-svn: 143033
2011-10-26 17:10:22 +00:00
Owen Anderson
7be76590e6
Expand relocation type field to 64 bits. MachO scattered relocations require 33 bits of type info.
...
llvm-svn: 143032
2011-10-26 17:08:49 +00:00
Owen Anderson
b92de2de71
Improve pretty printing of GOT relocations in MachO on x86_64.
...
llvm-svn: 143031
2011-10-26 17:05:20 +00:00
Eric Christopher
ff37313f12
Remove unused variable.
...
llvm-svn: 143011
2011-10-26 03:47:16 +00:00
Michael J. Spencer
6e080ddb31
Object/Archive: Cleanup anon namespace.
...
llvm-svn: 142983
2011-10-25 22:31:11 +00:00
Michael J. Spencer
9aaa852336
Object/Archive: Add BSD style long file name support and skip internal members.
...
llvm-svn: 142981
2011-10-25 22:30:42 +00:00
Owen Anderson
377137e2ed
Remove extraneous printing of "-PC".
...
llvm-svn: 142970
2011-10-25 20:44:00 +00:00
Owen Anderson
fa3e5200b8
Add support for the notion of "hidden" relocations. On MachO, these are relocation entries that are used as additional information for other, real relocations, rather than being relocations themselves.
...
I'm not familiar enough with ELF or COFF to know if they should have any relocations marked hidden.
llvm-svn: 142961
2011-10-25 20:35:53 +00:00
Owen Anderson
52cd8acafc
Teach the MachO relocation pretty-printer to interpret ARM half-relocations.
...
llvm-svn: 142938
2011-10-25 18:48:41 +00:00
Owen Anderson
171f485f15
More fixes and improvements to MachO relocation pretty-printing, particular for x86 and x86_64 relocations with addends.
...
llvm-svn: 142875
2011-10-24 23:20:07 +00:00
Owen Anderson
c8c94da8c8
Get relocation parsing/dumping to a mostly-working state for MachO files.
...
llvm-svn: 142852
2011-10-24 21:44:00 +00:00
Owen Anderson
953af053eb
Stub out some of the MachO relocation decoding hooks.
...
llvm-svn: 142840
2011-10-24 20:19:18 +00:00
Owen Anderson
500ebeb87f
Use LLVMBool for a function that logically returns a boolean value.
...
llvm-svn: 142683
2011-10-21 20:35:58 +00:00
Owen Anderson
cef5641982
STABS symbols are debug symbols.
...
llvm-svn: 142673
2011-10-21 19:26:54 +00:00
Owen Anderson
07bfdbb233
Bind libObject API for obtaining the section containing a Symbol.
...
llvm-svn: 142667
2011-10-21 18:21:22 +00:00
Owen Anderson
f239db40d5
Expand the coverage of the libObject C bindings to include more SectionRef accessors as well as Symbol iterators.
...
llvm-svn: 142661
2011-10-21 17:50:59 +00:00
Michael J. Spencer
443410d722
Object/COFF: Remove useless test.
...
llvm-svn: 142408
2011-10-18 19:51:36 +00:00
Michael J. Spencer
097be9f63c
Object/COFF: Change type from a struct to a uint16_t. The struct would be
...
incorrect for bigendian systems.
llvm-svn: 142403
2011-10-18 19:31:59 +00:00
Michael J. Spencer
1d19f97ea5
Object: Add some types to SymbolRef::Type.
...
Some of these can be true at the same time and there are a lot to add,
so this should be turned into a bitfield. Some of the other accessors
should probably be folded into this.
llvm-svn: 142318
2011-10-17 23:55:06 +00:00
Michael J. Spencer
321731539e
Object: Add isSymbolAbsolute and getSymbolSection.
...
llvm-svn: 142317
2011-10-17 23:54:46 +00:00
Michael J. Spencer
017597540e
Object: Add isSymbolWeak.
...
llvm-svn: 142316
2011-10-17 23:54:22 +00:00
Michael J. Spencer
89a7a5ea1f
Object/COFF: Expose more data in the public API.
...
llvm-svn: 142315
2011-10-17 23:53:56 +00:00
Michael J. Spencer
4f91c2f2bd
Object: Implement casting for concrete classes.
...
llvm-svn: 142314
2011-10-17 23:53:37 +00:00
Michael J. Spencer
d39466760a
Object: Fix redundant name.
...
llvm-svn: 142238
2011-10-17 20:19:29 +00:00
Michael J. Spencer
834bd602e6
ELF: Fix the section that relocations apply to. Add test to verify. Patch by Danil Malyshev!
...
llvm-svn: 141901
2011-10-13 22:30:10 +00:00
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