| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
This can easily arise when trying to assemble and ELF style .section
directive for a COFF object file.
llvm-svn: 215373
|
| |
|
|
|
|
| |
because some subtarget feature strings have three components.
llvm-svn: 215339
|
| |
|
|
| |
llvm-svn: 215311
|
| |
|
|
|
|
|
| |
At least on PowerPC, the interpretation of certain modifiers depends on
the context they appear in.
llvm-svn: 215310
|
| |
|
|
|
|
|
|
| |
This removes the duplicate definition of GetXDataSection. This function is
available as a static method and is identical to the previous implementation.
This just cleans up the unnecessary duplication.
llvm-svn: 215289
|
| |
|
|
|
|
| |
Cleanup Win64EH header inclusion. NFC.
llvm-svn: 215288
|
| |
|
|
|
|
|
|
|
|
| |
This changes Win64EHEmitter into a utility WinEH UnwindEmitter that can be
shared across multiple architectures and a target specific bit which is
overridden (Win64::UnwindEmitter). This enables sharing the section selection
code across X86 and the intended use in ARM for emitting unwind information for
Windows on ARM.
llvm-svn: 215050
|
| |
|
|
|
|
|
|
|
| |
Duplicate the vararg tests for linux and add a tests which mixed
vararg arguments with darwin positional parameters.
Patch by: Janne Grunau <j@jannau.net>
llvm-svn: 214799
|
| |
|
|
|
|
|
|
|
| |
This makes EmitWindowsUnwindTables a virtual function and lowers the
implementation of the function to the X86WinCOFFStreamer. This method is a
target specific operation. This enables making the behaviour target dependent
by isolating it entirely to the target specific streamer.
llvm-svn: 214664
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The frame information stored in this structure is driven by the requirements for
Windows NT unwinding rather than Windows 64 specifically. As a result, this
type can be shared across multiple architectures (ARM, AXP, MIPS, PPC, SH).
Rename this class in preparation for adding support for supporting unwinding
information for Windows on ARM.
Take the opportunity to constify the members as everything except the
ChainedParent is read-only. This required some adjustment to the label
handling.
llvm-svn: 214663
|
| |
|
|
|
|
|
|
|
|
| |
This patch adds code to emits the StackMap section on ELF systems. This section is required to support llvm.experimental.stackmap and llvm.experimental.patchpoint intrinsics.
Reviewers: ributzka, echristo
Differential Revision: http://reviews.llvm.org/D4574
llvm-svn: 214538
|
| |
|
|
|
|
|
|
| |
is apparently used, but the build didn't return errors weirdly.
This reverts commits 214437 and 214438.
llvm-svn: 214444
|
| |
|
|
| |
llvm-svn: 214438
|
| |
|
|
| |
llvm-svn: 214437
|
| |
|
|
|
|
| |
The cpp file is already in lib/MC/MCAnalysis.
llvm-svn: 214424
|
| |
|
|
|
| |
Note: This code appears to be untested.
llvm-svn: 214416
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This recommits r208930, r208933, and r208975 (by reverting r209338) and
reverts r209529 (the FIXME to readd this functionality once the tools
were fixed) now that DWP has been fixed to cope with a single section
for all fission type units.
Original commit message:
"Since type units in the dwo file are handled by a debug aware tool,
they don't need to leverage the ELF comdat grouping to implement
deduplication. Avoid creating all the .group sections for these as a
space optimization."
llvm-svn: 213956
|
| |
|
|
| |
llvm-svn: 213890
|
| |
|
|
| |
llvm-svn: 213876
|
| |
|
|
| |
llvm-svn: 213874
|
| |
|
|
| |
llvm-svn: 213873
|
| |
|
|
|
|
|
| |
There were still some disassembler bits in lib/MC, but their use of Object
was only visible in the includes they used, not in the symbols.
llvm-svn: 213808
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Having both Triple::arm64 and Triple::aarch64 is extremely confusing, and
invites bugs where only one is checked. In reality, the only legitimate
difference between the two (arm64 usually means iOS) is also present in the OS
part of the triple and that's what should be checked.
We still parse the "arm64" triple, just canonicalise it to Triple::aarch64, so
there aren't any LLVM-side test changes.
llvm-svn: 213743
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As discussed in a previous checking to support the .localentry
directive on PowerPC, we need to inspect the actual target symbol
in needsRelocateWithSymbol to make the appropriate decision based
on that symbol's st_other bits.
Currently, needsRelocateWithSymbol does not get the target symbol.
However, it is directly available to its sole caller. This patch
therefore simply extends the needsRelocateWithSymbol by a new
parameter "const MCSymbolData &SD", passes in the target symbol,
and updates all derived implementations.
In particular, in the PowerPC implementation, this patch removes
the FIXME added by the previous checkin.
llvm-svn: 213487
|
| |
|
|
|
|
|
|
|
|
|
| |
This adds an optional parameter to the EmitSymbolValue method in MCStreamer to
permit emitting a symbol value as a section relative value. This is to cover
the use in MCDwarf which should not really know about how to emit a section
relative value for a given target.
This addresses post-review comments from Eric Christopher in SVN r213275.
llvm-svn: 213463
|
| |
|
|
|
|
| |
Add explicit constructor to struct instead of using brace initialization.
llvm-svn: 213389
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On AArch64 the pseudo instruction ldr <reg>, =... supports both
32-bit and 64-bit constants. Add support for 64 bit constants for
the pools to support the pseudo instruction fully.
Changes the AArch64 ldr-pseudo tests to use 32-bit registers and
adds tests with 64-bit registers.
Patch by Janne Grunau!
Differential Revision: http://reviews.llvm.org/D4279
llvm-svn: 213387
|
| |
|
|
|
|
|
| |
Clang tries to check the clobber list but doesn't list segment registers in its
x86 register list. This fixes PR20343.
llvm-svn: 213303
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The header contains an offset to the DWARF abbreviations for the CU. The offset
must be section relative for COFF and absolute for others. The non-assembly
code path for the DWARF header generation already had the correct emission for
the headers. This corrects just the assembly path. Due to the invalid
relocation, processing of the debug information would halt previously on the
first assembly input as the associated abbreviations would be out of range as
they would have the location increased by image base and the section offset.
This address PR20332.
llvm-svn: 213275
|
| |
|
|
|
|
|
|
| |
Rather than use three EmitBytes, concatenate the string at compile time,
constructing a single StringRef and emitting the data in one shot. This also
creates nicer assembly output. NFC.
llvm-svn: 213273
|
| |
|
|
|
|
|
|
|
|
|
| |
This makes the opcode an opaque value (unsigned int) rather than the
enumeration. This permits the use of target specific operands.
Split out the generic type into a MCWinEH header and add a supporting
MCWin64EH::Instruction to abstract out the selection of the opcode and
construction of the actual instruction.
llvm-svn: 213221
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
COFF lacks a feature that other object file formats support: mergeable
sections.
To work around this, MSVC sticks constant pool entries in special COMDAT
sections so that each constant is in it's own section. This permits
unused constants to be dropped and it also allows duplicate constants in
different translation units to get merged together.
This fixes PR20262.
Differential Revision: http://reviews.llvm.org/D4482
llvm-svn: 213006
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the first of a number of changes designed to generalise
MCWin64EHInstruction to support different target architectures. An ordered set
(vector) of these instructions is saved per frame to permit the emission of
information for Windows NT style unwinding. The only bit of information which
is actually target specific here is the Opcode for the unwinding bytecode. The
remainder of the information is simply generic information that is relevant to
the Windows NT unwinding model.
Remove the accessors for the fields, making them const and public instead. Sink
the knowledge of the alias'ed name into the single source and sink a single-use
check method into the use.
llvm-svn: 212914
|
| |
|
|
|
|
|
| |
Introduce const-ness on parameters, they are used as read-only and should not be
modified. NFC.
llvm-svn: 212913
|
| |
|
|
|
|
|
|
| |
Rename member variables and functions for the MCStreamer for DWARF-like
unwinding management. Rename the Windows ones as well and make the naming and
handling similar across the two. No functional change intended.
llvm-svn: 212912
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
MC was aping a binutils bug where aliases would default their linkage to
private instead of internal.
I've sent a patch to the binutils maintainers and they've recently
applied it to the GNU assembler sources.
This fixes PR20152.
Differential Revision: http://reviews.llvm.org/D4395
llvm-svn: 212899
|
| |
|
|
|
|
|
|
|
| |
Due to the fact that the windows unwinding has the concept of chained frames, we
maintain a current frame info pointer that is adjusted on any push and pop of a
unwinding context. This just removes an unnecessary variable that was used to
mirror the DWARF unwinding code.
llvm-svn: 212882
|
| |
|
|
|
|
|
|
| |
This structure contains information related to the call frame used to generate
unwinding information. Rename this to reflect the future use to represent the
shared state between various architectures for WinCFI information.
llvm-svn: 212881
|
| |
|
|
|
|
|
| |
These two routines didn't take a "const MCSymbolData &SD"
like the other MCELF::Get routines for some reason ...
llvm-svn: 212834
|
| |
|
|
|
|
| |
Convert a for loop to range bsaed form. NFC.
llvm-svn: 212684
|
| |
|
|
|
|
|
|
|
|
| |
This adds a utility method to access the WinCFI information in bulk and uses
that to iterate rather than requesting the count and individually iterating
them. This is in preparation for restructuring WinCFI handling to enable more
clear sharing across architectures to enable unwind information emission for
Windows on ARM.
llvm-svn: 212683
|
| |
|
|
|
|
| |
all new modules. The section contains a versioned data structure which represents essentially information to allow a program loader to determine the requirements of the application. This patch implements mips.abiflags section and provides test cases for it.
llvm-svn: 212519
|
| |
|
|
| |
llvm-svn: 212401
|
| |
|
|
|
|
|
|
|
|
| |
Use 0 for the invalid buffer instead of -1/~0 and switch to unsigned
representation to enable more idiomatic usage.
Also introduce a trivial SourceMgr::getMainFileID() instead of hard-coding 0/1
to identify the main file.
llvm-svn: 212398
|
| |
|
|
|
|
|
| |
This just lets us dump a const MCSymbolData object, no functionality
changed.
llvm-svn: 212365
|
| |
|
|
|
|
|
| |
No functionality changed, just make it so that the code _could_ be
uncommented.
llvm-svn: 212363
|
| |
|
|
|
|
| |
Switch a normal for-loop to a range-based for. No functionality changed.
llvm-svn: 212362
|
| |
|
|
|
|
|
|
|
| |
Now that we have a lib/MC/MCAnalysis, the dependency was there just because
of two helper classes. Move the two over to MC.
This will allow IRObjectFile to parse inline assembly.
llvm-svn: 212248
|
| |
|
|
| |
llvm-svn: 212210
|
| |
|
|
|
|
|
| |
The new library is 150KB on a Release+Asserts build, so it is quiet a bit of
code that regular users of MC don't need to link with now.
llvm-svn: 212209
|