| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
instead of comparing to nullptr.
llvm-svn: 206252
|
|
|
|
|
|
|
| |
Add type name mappings for the ARM COFF relocations. This allows for objdump to
provide a more useful description of relocations in disassembly inline form.
llvm-svn: 205834
|
|
|
|
| |
llvm-svn: 205577
|
|
|
|
|
|
|
|
|
|
|
|
| |
This has the following advantages:
* Less code.
* The old ELF implementation was wrong for non-relocatable objects.
* The old ELF implementation (and I think MachO) was wrong for thumb.
No current testcase since this is only used from MCJIT and it only uses
relocatable objects and I don't think it supports thumb yet.
llvm-svn: 205508
|
|
|
|
|
|
| |
All existing users explicitly ask for an address or a file offset.
llvm-svn: 205503
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r205479.
It turns out that nm does use addresses, it is just that every reasonable
relocatable ELF object has sections with address 0. I have no idea if those
exist in reality, but it at least it shows that llvm-nm should use the name
address.
The added test was includes an unusual .o file with non 0 section addresses. I
created it by hacking ELFObjectWriter.cpp.
Really sorry for the churn.
llvm-svn: 205493
|
|
|
|
|
|
|
|
|
|
|
| |
What llvm-nm prints depends on the file format. On ELF for example, if the
file is relocatable, it prints offsets. If it is not, it prints addresses.
Since it doesn't really need to care what it is that it is printing, use the
generic term value.
Fix or implement getSymbolValue to keep llvm-nm working.
llvm-svn: 205479
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
entry at a time.
Some targets require more than one relocation entry to perform a relocation.
This change allows processRelocationRef to process more than one relocation
entry at a time by passing the relocation iterator itself instead of just
the relocation entry.
Related to <rdar://problem/16199095>
llvm-svn: 204439
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NumberOfRelocations field in COFF section table is only 16-bit wide. If an
object has more than 65535 relocations, the number of relocations is stored
to VirtualAddress field in the first relocation field, and a special flag
(IMAGE_SCN_LNK_NRELOC_OVFL) is set to Characteristics field.
In test we cheated a bit. I made up a test file so that it has
IMAGE_SCN_LNK_NRELOC_OVFL flag but the number of relocations is much smaller
than 65535. This is to avoid checking in a large test file just to test a
file with many relocations.
Differential Revision: http://llvm-reviews.chandlerc.com/D3139
llvm-svn: 204418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current state of affairs has auxiliary symbols described as a big
bag of bytes. This is less than satisfying, it detracts from the YAML
file as being human readable.
Instead, allow for symbols to optionally contain their auxiliary data.
This allows us to have a much higher level way of describing things like
weak symbols, function definitions and section definitions.
This depends on D3105.
Differential Revision: http://llvm-reviews.chandlerc.com/D3092
llvm-svn: 204214
|
|
|
|
|
|
| |
Differential Revision: http://llvm-reviews.chandlerc.com/D3103
llvm-svn: 204199
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it work with range-based for loops.
Reviewers: ruiu
Reviewed By: ruiu
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D3097
llvm-svn: 204120
|
|
|
|
|
|
|
| |
Add the Windows COFF ARM object file magic. This enables the LLVM tools to
interact with COFF object files for Windows on ARM.
llvm-svn: 203761
|
|
|
|
|
|
|
|
|
|
| |
This compiles with no changes to clang/lld/lldb with MSVC and includes
overloads to various functions which are used by those projects and llvm
which have OwningPtr's as parameters. This should allow out of tree
projects some time to move. There are also no changes to libs/Target,
which should help out of tree targets have time to move, if necessary.
llvm-svn: 203083
|
|
|
|
| |
llvm-svn: 202957
|
|
|
|
|
|
|
|
|
| |
COFF object files with 0 as string table size are currently rejected. This
prevents us from reading object files written by tools like cvtres that
violate the PECOFF spec and write 0 instead of 4 for the size of an empty
string table.
llvm-svn: 202292
|
|
|
|
| |
llvm-svn: 202210
|
|
|
|
|
|
|
|
| |
Offsets past the range of single-slash encoding are encoded as base64,
padded to 6 characters, and prefixed with two slashes. This encoding is
undocumented but used by MSVC.
llvm-svn: 201940
|
|
|
|
|
|
|
|
|
|
|
| |
This interface allows IRObjectFile to be implemented without having dummy
methods for all section and segment related methods.
Both llvm-ar and llvm-nm are changed to use it. Unfortunately the mangler is
still not plugged in since it requires some refactoring to make a Module hold
a DataLayout.
llvm-svn: 201881
|
|
|
|
|
|
| |
Some versions of libstdc++ forbid using cstdint in C++98 mode.
llvm-svn: 201812
|
|
|
|
| |
llvm-svn: 201805
|
|
|
|
|
|
|
| |
VA can be 64 bit, as the image base can be larger than 4GB, so we need to
handle 64 bit VAs properly.
llvm-svn: 201803
|
|
|
|
| |
llvm-svn: 201769
|
|
|
|
|
|
|
| |
SEH table addresses are VA in COFF file. In this patch we convert VA to RVA
before printing it, because dumpbin prints them as RVAs.
llvm-svn: 201760
|
|
|
|
| |
llvm-svn: 201108
|
|
|
|
|
|
|
|
|
|
| |
It is not clear how much we should try to expose in getFlags. For example,
should there be a SF_Object and a SF_Text?
But for information that is already being exposed, we may as well use it in
llvm-nm.
llvm-svn: 200820
|
|
|
|
| |
llvm-svn: 200800
|
|
|
|
|
|
|
| |
None of the object formats require extra parsing to compute these flags,
so the method cannot fail.
llvm-svn: 200574
|
|
|
|
|
|
|
|
|
| |
COFF has only one symbol table.
MachO has a LC_DYSYMTAB, but that is not a symbol table, just extra info about
the one symbol table (LC_SYMTAB).
IR (coming soon) also has only one table.
llvm-svn: 200488
|
|
|
|
|
|
|
|
|
|
|
|
| |
None of the object file formats reported error on iterator increment. In
retrospect, that is not too surprising: no object format stores symbols or
sections in a linked list or other structure that requires chasing pointers.
As a consequence, all error checking can be done on begin() and end().
This reduces the text segment of bin/llvm-readobj in my machine from 521233 to
518526 bytes.
llvm-svn: 200442
|
|
|
|
|
|
|
|
|
|
|
|
| |
PE32+ supports 64 bit address space, but the file format remains 32 bit.
So its file format is pretty similar to PE32 (32 bit executable). The
differences compared to PE32 are (1) the lack of "BaseOfData" field and
(2) some of its data members are 64 bit.
In this patch, I added a new member function to get a PE32+ Header object to
COFFObjectFile class and made llvm-readobj to use it.
llvm-svn: 200117
|
|
|
|
|
|
| |
This allows llvm-ar to mmap the input files only once.
llvm-svn: 200040
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The constructors of classes deriving from Binary normally take an error_code
as an argument to the constructor. My original intent was to change them
to have a trivial constructor and move the initial parsing logic to a static
method returning an ErrorOr. I changed my mind because:
* A constructor with an error_code out parameter is extremely convenient from
the implementation side. We can incrementally construct the object and give
up when we find an error.
* It is very efficient when constructing on the stack or when there is no
error. The only inefficient case is where heap allocating and an error is
found (we have to free the memory).
The result is that this is a much smaller patch. It just standardizes the
create* helpers to return an ErrorOr.
Almost no functionality change: The only difference is that this found that
we were trying to read past the end of COFF import library but ignoring the
error.
llvm-svn: 199770
|
|
|
|
| |
llvm-svn: 199519
|
|
|
|
| |
llvm-svn: 199518
|
|
|
|
| |
llvm-svn: 199422
|
|
|
|
| |
llvm-svn: 199419
|
|
|
|
| |
llvm-svn: 199418
|
|
|
|
| |
llvm-svn: 199417
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds the capability to dump export table contents. An example
output is this:
Export Table:
Ordinal RVA Name
5 0x2008 exportfn1
6 0x2010 exportfn2
By adding this feature to llvm-objdump, we will be able to use it to check
export table contents in LLD's tests. Currently we are doing binary
comparison in the tests, which is fragile and not readable to humans.
llvm-svn: 199358
|
|
|
|
|
|
|
|
|
| |
DataRefImpl (a union of two integers and a pointer) is not the ideal data type
to represent a reference to an import directory entity. We should just use the
pointer to the import table and an offset instead to simplify. No functionality
change.
llvm-svn: 199349
|
|
|
|
|
|
|
|
| |
0xffff does not mean that there are 65535 sections in a COFF file but
indicates that it's a COFF import library. This patch fixes SEGV error
when an import library file is passed to llvm-readobj.
llvm-svn: 194844
|
|
|
|
| |
llvm-svn: 193933
|
|
|
|
| |
llvm-svn: 193932
|
|
|
|
|
|
| |
This is a fixed version of 193928 which keeps these uses in sync.
llvm-svn: 193931
|
|
|
|
|
|
|
|
|
|
| |
COFFObjectFile::getSymbolFileOffset."
Investigating a bot failure.
This reverts commit r193928.
llvm-svn: 193929
|
|
|
|
|
|
| |
COFFObjectFile::getSymbolFileOffset.
llvm-svn: 193928
|
|
|
|
| |
llvm-svn: 192519
|
|
|
|
|
|
|
| |
It is mentioned in the LLVM coding standard that _begin() and _end() suffixes
should be used.
llvm-svn: 191569
|
|
|
|
|
| |
llvm-objdump: Dump COFF import table if -private-headers option is given.
llvm-svn: 191557
|