History log of /external/llvm/lib/MC/MCMachOStreamer.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cd81d94322a39503e4a3e87b6ee03d4fcb3465fb 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/MC/MCMachOStreamer.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/MC/MCMachOStreamer.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/MC/MCMachOStreamer.cpp
c7ce3e4f42219003f30382be17d966cb2dfb4e71 16-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Move .ident handling to MCStreamer.

No functionality change, but exposes the API so that codegen can use it too.

Patch by Katya Romanova.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192757 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
320296a4cfe414ce59f406b8a5ce15272f563103 08-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a MCTargetStreamer interface.

This patch fixes an old FIXME by creating a MCTargetStreamer interface
and moving the target specific functions for ARM, Mips and PPC to it.

The ARM streamer is still declared in a common place because it is
used from lib/CodeGen/ARMException.cpp, but the Mips and PPC are
completely hidden in the corresponding Target directories.

I will send an email to llvmdev with instructions on how to use this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
5e195a4c8d8cd4498ab7e0aa16a3b6f273daf457 05-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove some really nasty uses of hasRawTextSupport.

When MC was first added, targets could use hasRawTextSupport to keep features
working before they were added to the MC interface.

The design goal of MC is to provide an uniform api for printing assembly and
object files. Short of relaxations and other corner cases, a object file is
just another representation of the assembly.

It was never the intention that targets would keep doing things like

if (hasRawTextSupport())
Set flags in one way.
else
Set flags in another way.

When they do that they create two code paths and the object file is no longer
just another representation of the assembly. This also then requires testing
with llc -filetype=obj, which is extremelly brittle.

This patch removes some of these hacks by replacing them with smaller ones.
The ARM flag setting is trivial, so I just moved it to the constructor. For
Mips, the patch adds two temporary hack directives that allow the assembly
to represent the same things as the object file was already able to.

The hope is that the mips developers will replace the hack directives with
the same ones that gas uses and drop the -print-hack-directives flag.

I will also try to implement a target streamer interface, so that we can
move this out of the common code.

In summary, for any new work, two rules of the thumb are
* Don't use "llc -filetype=obj" in tests.
* Don't add calls to hasRawTextSupport.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192035 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
5cc319a42a914b24b164a94d9a563c728a7a4026 20-Sep-2013 Richard Mitton <richard@codersnotes.com> Added support for generate DWARF .debug_aranges sections automatically.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191052 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
da11df0c22f5d0ba2e2be3ae4a7076c806233db8 09-Sep-2013 Bill Wendling <isanbard@gmail.com> Call generateCompactUnwindEncodings() right before we need to output the frame information.

There are more than one paths to where the frame information is emitted. Place
the call to generateCompactUnwindEncodings() into the method which outputs the
frame information, thus ensuring that the encoding is there for every path. This
involved threading the MCAsmBackend object through to this method.

<rdar://problem/13623355>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190335 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
c3cee57f7d20f69a84fd88464ed8cf050e63c7ad 09-Sep-2013 Bill Wendling <isanbard@gmail.com> Generate compact unwind encoding from CFI directives.

We used to generate the compact unwind encoding from the machine
instructions. However, this had the problem that if the user used `-save-temps'
or compiled their hand-written `.s' file (with CFI directives), we wouldn't
generate the compact unwind encoding.

Move the algorithm that generates the compact unwind encoding into the
MCAsmBackend. This way we can generate the encoding whether the code is from a
`.ll' or `.s' file.

<rdar://problem/13623355>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190290 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
19f066e0e0bebd142ef9e8d50d8232a1d1c117de 05-Sep-2013 Bill Wendling <isanbard@gmail.com> Add missing header line.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190004 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
1c9cd021c8999d9c2c0786dff074d1e75bbd0eb2 09-Aug-2013 Saleem Abdulrasool <compnerd@compnerd.org> [CodeGen] prevent abnormal on invalid attributes

Currently, when an invalid attribute is encountered on processing a .s file,
clang will abort due to llvm_unreachable. Invalid user input should not cause
an abnormal termination of the compiler. Change the interface to return a
boolean to indicate the failure as a first step towards improving hanlding of
malformed user input to clang.

Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
189f7983fb300357712689733f65dde9e3658a14 07-Aug-2013 Eric Christopher <echristo@gmail.com> Fix a FIXME, on darwin all virtual sections have a zerofill type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187912 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
df39be6cb4eb44011db3d3e86f8fe463f81ce127 17-Apr-2013 Peter Collingbourne <peter@pcc.me.uk> Add support for subsections to the ELF assembler. Fixes PR8717.

Differential Revision: http://llvm-reviews.chandlerc.com/D598

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
5da3665cc501ed8928e63678254357214ec0b9eb 01-Feb-2013 Chandler Carruth <chandlerc@gmail.com> Give the MCStreamer class hierarchy LLVM RTTI facilities for use with
isa<> and dyn_cast<>. In several places, code is already hacking around
the absence of this, and there seem to be several interfaces that might
be lifted and/or devirtualized using this.

This change was based on a discussion with Jim Grosbach about how best
to handle testing for specific MCStreamer subclasses. He said that this
was the correct end state, and everything else was too hacky so
I decided to just make it so.

No functionality should be changed here, this is just threading the kind
through all the constructors and setting up the classof overloads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
a94c33942373cb504b6e64c95415165907a89d34 18-Jan-2013 Daniel Dunbar <daniel@zuster.org> [MC/Mach-O] Add support for linker options in Mach-O files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
030f63a397edc20f8f661bac62f7b90cb5cf57bc 14-Jan-2013 Eli Bendersky <eliben@google.com> Expose an InitToTextSection through MCStreamer.

The aim of this patch is to fix the following piece of code in the
platform-independent AsmParser:

void AsmParser::CheckForValidSection() {
if (!ParsingInlineAsm && !getStreamer().getCurrentSection()) {
TokError("expected section directive before assembly directive");
Out.SwitchSection(Ctx.getMachOSection(
"__TEXT", "__text",
MCSectionMachO::S_ATTR_PURE_INSTRUCTIONS,
0, SectionKind::getText()));
}
}

This was added for the "-n" option of llvm-mc.

The proposed fix adds another virtual method to MCStreamer, called
InitToTextSection. Conceptually, it's similar to the existing
InitSections which initializes all common sections and switches to
text. The new method is implemented by each platform streamer in a way
that it sees fit. So AsmParser can now do this:

void AsmParser::CheckForValidSection() {
if (!ParsingInlineAsm && !getStreamer().getCurrentSection()) {
TokError("expected section directive before assembly directive");
Out.InitToTextSection();
}
}

Which is much more reasonable.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172450 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
2c3a4641a7785da78839caf574277df9cd93b52c 16-Dec-2012 Reed Kotler <rkotler@mips.com> This patch is needed to make c++ exceptions work for mips16.

Mips16 is really a processor decoding mode (ala thumb 1) and in the same
program, mips16 and mips32 functions can exist and can call each other.

If a jal type instruction encounters an address with the lower bit set, then
the processor switches to mips16 mode (if it is not already in it). If the
lower bit is not set, then it switches to mips32 mode.

The linker knows which functions are mips16 and which are mips32.
When relocation is performed on code labels, this lower order bit is
set if the code label is a mips16 code label.

In general this works just fine, however when creating exception handling
tables and dwarf, there are cases where you don't want this lower order
bit added in.

This has been traditionally distinguished in gas assembly source by using a
different syntax for the label.

lab1: ; this will cause the lower order bit to be added
lab2=. ; this will not cause the lower order bit to be added

In some cases, it does not matter because in dwarf and debug tables
the difference of two labels is used and in that case the lower order
bits subtract each other out.

To fix this, I have added to mcstreamer the notion of a debuglabel.
The default is for label and debug label to be the same. So calling
EmitLabel and EmitDebugLabel produce the same result.

For various reasons, there is only one set of labels that needs to be
modified for the mips exceptions to work. These are the "$eh_func_beginXXX"
labels.

Mips overrides the debug label suffix from ":" to "=." .

This initial patch fixes exceptions. More changes most likely
will be needed to DwarfCFException to make all of this work
for actual debugging. These changes will be to emit debug labels in some
places where a simple label is emitted now.

Some historical discussion on this from gcc can be found at:
http://gcc.gnu.org/ml/gcc-patches/2008-08/msg00623.html
http://gcc.gnu.org/ml/gcc-patches/2008-11/msg01273.html



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170279 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
64d9a3233476553fc950f0f2fc6a2cdd2a4c05cf 07-Dec-2012 Eli Bendersky <eliben@google.com> Refactor MCInstFragment and MCDataFragment to adhere to a common interface,
which removes code duplication and prepares the ground for future additions.

Full discussion:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20121203/158233.html



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169626 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ef76b273f96d99a4a260f3dcadde8fbb96256cf3 07-Dec-2012 Eli Bendersky <eliben@google.com> Lift EmitAssignment into MCObjectStreamer which gets rid of at least three
duplicate implementations in format-specific streamers.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169613 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e660fc15fe1f1b8a19488f39d0ec09acc79bed0d 04-Oct-2012 Benjamin Kramer <benny.kra@googlemail.com> Hoist some grossly duplicated code from the COFF/ELF/MachO streamers into MCObjectStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165225 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
b4316028b3978e65cc2b97042292637857dfad49 02-Oct-2012 Jim Grosbach <grosbach@apple.com> MachO: direct-to-object attribute for data-in-code markers.

The target backend can support data-in-code load commands even when
the assembler doesn't, or vice-versa. Allow targets to opt-in for
direct-to-object.

PR13973.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164974 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
39646d96e76aea5d20bffb386233a0dbb5932a21 07-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> MC: Overhaul handling of .lcomm

- Darwin lied about not supporting .lcomm and turned it into zerofill in the
asm parser. Push the zerofill-conversion down into macho-specific code.
- This makes the tri-state LCOMMType enum superfluous, there are no targets
without .lcomm.
- Do proper error reporting when trying to use .lcomm with alignment on a target
that doesn't support it.
- .comm and .lcomm alignment was parsed in bytes on COFF, should be power of 2.
- Fixes PR13755 (.lcomm crashes on ELF).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
c90a1fcf9f44858b20e0f5f7e0b98049aec7a1e0 22-Jun-2012 Evan Cheng <evan.cheng@apple.com> EmitZerofill should take a 64-bit size or else it's chopping off large zero-filled global. rdar://11729134

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159023 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
3e96531186ba574b0c25a4be62d24b8b7d752c9f 18-May-2012 Jim Grosbach <grosbach@apple.com> Refactor data-in-code annotations.

Use a dedicated MachO load command to annotate data-in-code regions.
This is the same format the linker produces for final executable images,
allowing consistency of representation and use of introspection tools
for both object and executable files.

Data-in-code regions are annotated via ".data_region"/".end_data_region"
directive pairs, with an optional region type.

data_region_directive := ".data_region" { region_type }
region_type := "jt8" | "jt16" | "jt32" | "jta32"
end_data_region_directive := ".end_data_region"

The previous handling of ARM-style "$d.*" labels was broken and has
been removed. Specifically, it didn't handle ARM vs. Thumb mode when
marking the end of the section.

rdar://11459456

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157062 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
858143816d43e58b17bfd11cb1b57afbd7f0f893 07-Feb-2012 Craig Topper <craig.topper@gmail.com> Convert assert(0) to llvm_unreachable

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ec3433852dd11e8ff60c9610b4c84468e5935f2b 18-Jan-2012 Jim Grosbach <grosbach@apple.com> Tidy up. MCAsmBackend naming conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148400 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
2bd335470f8939782f3df7f6180282d3825d4f09 10-Jan-2012 David Blaikie <dblaikie@gmail.com> Remove unnecessary default cases in switches that cover all enum values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147855 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
99b4237c1647156f0e1d3d7e03efdab23ed79778 07-Jan-2012 Rafael Espindola <rafael.espindola@gmail.com> Split Finish into Finish and FinishImpl to have a common place to do end of
file error checking. Use that to error on an unfinished cfi_startproc.

The error is not nice, but is already better than a segmentation fault.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147717 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
4544da484d5b8488d1827340b4187654bec28818 29-Nov-2011 Jim Grosbach <grosbach@apple.com> Remove obsolete FIXME.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145313 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
36a16015ac108e2f0dd2d6d96a6d364bc74c50d7 02-Sep-2011 Benjamin Kramer <benny.kra@googlemail.com> Don't drop alignment info on local common symbols.

- On COFF the .lcomm directive has an alignment argument.
- On ELF we fall back to .local + .comm

Based on a patch by NAKAMURA Takumi.

Fixes PR9337, PR9483 and PR10128.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138976 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
bd27f5adbd8f3b8ab8def5aa43fbc406ac9b8cbe 27-Jul-2011 Evan Cheng <evan.cheng@apple.com> Support .code32 and .code64 in X86 assembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136197 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
78c10eeaa57d1c6c4b7781d3c0bcb0cfbbc43b5c 26-Jul-2011 Evan Cheng <evan.cheng@apple.com> Rename TargetAsmBackend to MCAsmBackend; rename createAsmBackend to createMCAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8bcf9496d0d372245776a4eb2f4757335b4de0e1 25-Jul-2011 Chandler Carruth <chandlerc@gmail.com> Add a missing enumerator to this switch. Currently its in the
assert-path code, as previously we would have fallen off the end of the
function, but please review and let me know if this should go somewhere
else.

This fixes a Clang warning:
lib/MC/MCMachOStreamer.cpp:201:11: error: enumeration value 'MCSA_IndirectSymbol' not handled in switch [-Werror,-Wswitch-enum]
switch (Attribute) {
^
1 error generated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135976 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f2a35fbd60fbb86465ad2fb4d801cd5c240decd7 25-Jul-2011 Jim Grosbach <grosbach@apple.com> Move some ELF directives into ELF asm parser.

The .local, .hidden, .internal, and .protected are not legal for all supported
file formats (in particular, they're invalid for MachO). Move the parsing for
them into the ELF assembly parser since that's the format they're for.
Similarly, .weak is used by COFF and ELF, but not MachO, so move the parsing
to the COFF and ELF asm parsers. Previously, using any of these directives
on Darwin would result in an assertion failure in the parser; now we get
a diagnostic as we should.

rdar://9827089


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135921 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
a7cfc08ebe737062917b442830eb5321b0f79e89 23-Jul-2011 Evan Cheng <evan.cheng@apple.com> Move TargetAsmParser.h TargetAsmBackend.h and TargetAsmLexer.h to MC where they belong.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135833 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
672b93a3324cc1da6d374eed4c75c050a9cad7be 14-Jul-2011 Evan Cheng <evan.cheng@apple.com> Unfortunately several files in MC are badly violating layering rule by using
TargetAsmInfo, which in turn pulls in TargetRegisterInfo, etc. :-( There are
other cases of violations, but this is probably the worst.

This patch is but one small step towards fixing this. 500 more steps to go. :-(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
c25dad8750083829d9a8935ce40d0734e5488f8e 10-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Factor some code into a new EmitFrames method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131119 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
450a5a120789b67b27f92631e0acaf754ee99d9e 01-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Add r130623 back now that ELF has been fixed to work with -fno-dwarf2-cfi-asm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130658 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
2b3e12d0cb1ad98abaa79353c3ab69d9b06d9ded 01-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Revert the previous patch while I figure out how to make llvm-gcc
less agressive about disabling cfi on linux :-(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130626 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
89fc9e8f5eb74d5607bed7759628775b564a5383 01-May-2011 Rafael Espindola <rafael.espindola@gmail.com> Enable CFI on OS X.
Currently the output should be almost identical to the one produced by CodeGen
to make the transition easier.

The only two differences I know of are:

* Some files get an extra advance loc of size 0. This will be fixed when
relaxations are enabled.
* The optimization of declaring an EH symbol as an external variable is not
implemented. This is a subset of adding the nounwind attribute, so we if really
this at -O0 we should probably do it at the IL level.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130623 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
97f7f4e43d2df00253b794d936be65d2afa78716 30-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Handle PrivateExtern eh symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130609 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8bca4106dfc2945723251db10e340183f3e372dd 28-Apr-2011 Rafael Espindola <rafael.espindola@gmail.com> Mark the EH symbol global or weak if the corresponding function is.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130397 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f754f50805fee2bb4d461a9b41107122a22cd6f6 25-Feb-2011 Cameron Zwarich <zwarich@apple.com> Roll out r126425 and r126450 to see if it fixes the failures on the buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f410608271b6318bfc9e26c0d199f185d5a89ccb 24-Feb-2011 Devang Patel <dpatel@apple.com> Enable DebugInfo support for COFF object files.
Patch by Nathan Jeffords!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126425 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
7768a9dce14431018133cd586f5c8ce3e057f069 16-Feb-2011 Rafael Espindola <rafael.espindola@gmail.com> Add support for pushsection and popsection. Patch by Joerg Sonnenberger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125629 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
b2624eda5ad0ead99ec5ab7ead47b586c96d1109 29-Dec-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O/Thumb: Set the thumb bit in the symbol table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
475002078848d102b6577fe7283464c039b38af6 14-Dec-2010 Jim Grosbach <grosbach@apple.com> ARM Fixups relative to thumb functions need to have the low bit of the value
set for interworking to work properly. rdar://8755956

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121778 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
89b9372605db2ce3b0085c84089e389f7bc1fbdd 10-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Fixed version of 121434 with no new memory leaks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121471 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f7fd4aa2610f46467369de07f3ec669561d79be0 10-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert my previous patch to make the valgrind bots happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
1c952b9cc98e84b28f68f0f6cf11197263f89863 10-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Initial support for the cfi directives. This is just enough to get

f:
.cfi_startproc
nop
.cfi_endproc

assembled (on ELF).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
5be6d2af38c29e3653998978345220974cc40c01 08-Dec-2010 Jim Grosbach <grosbach@apple.com> Let target asm backends see assembler flags as they go by. Use that to handle
thumb vs. arm mode differences in WriteNopData().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121219 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
85f2ecc697a8ca6c8cf08093054cbbb9d2060ccf 07-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Sorry for such a large commit. The summary is that only MachO cares about the
actuall addresses in a .o file, so it is better to let the MachO writer compute
it.

This is good for two reasons. First, areas that shouldn't care about
addresses now don't have access to it. Second, the layout of each section
is independent. I should use this in a subsequent commit to speed it up.

Most of the patch is just removing the section address computation. The two
interesting parts are the change on how we handle padding in the end
of sections and how MachO can get the address of a-b when a and b are in
different sections.

Since now the expression evaluation normally doesn't know the section address,
it will think that a-b needs relocation and let the MachO writer know. Once
it has computed the section addresses, it calls back the expression evaluation
with the section addresses to resolve these expressions.

The remaining problem is the handling of padding. Currently it will create
a special alignment fragment at the end. Since that fragment doesn't update
the alignment of the section, it needs the real address to be computed.

Since now the layout will not compute a-b with a and b in different sections,
the only effect that the special alignment fragment has is update the
address size of the section. This can also be done by the MachO writer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121076 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
32a006e606742b1c5401e49607e33717bb5441f0 03-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Try to resolve symbol differences early, and if successful create a plain
data fragment. This reduces the time to assemble the test in 8711 from 60s to
54s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120767 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e23930543c0de0adcfec00cd18e9243ad812a167 02-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Move EmitValueToOffset to the ObjectStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120691 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
dedb045c3296c831962c4ae101531c38c273ba89 02-Dec-2010 Rafael Espindola <rafael.espindola@gmail.com> Add EmitInstToFragment to the generic object streamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120690 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
6f95023a7f27075011a6eb7b84e03732b00a785b 29-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Move EmitValue to MCObjectStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120269 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ea4afa91eb453323948588ad1e1706d842fb9007 28-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Fixed verson of r120245.
Factor some duplicated code into MCObjectStreamer::EmitLabel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120248 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ba210243ef7d325ef6954d459091edf580a241f9 28-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Revert previous patch while I debug the darwin bootstrap failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120246 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f90a2de72c25e24f26577b0dd8145ac21fe10f5e 28-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Factor some duplicated code into MCObjectStreamer::EmitLabel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120245 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
3e03211625bba5bbb70a193c140ebf4dd8388bb7 28-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Avoid code duplication in the many unsupported EmitGPRel32Value implementations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120243 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e04ed7e45f194f14a7b28bbf3f55694d8e2bcf80 28-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Define generic 1, 2 and 4 byte pc relative relocations. They are common
and at least the 4 byte one will be needed to implement the .cfi_* directives.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120240 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e8e98d7f2eaa0613442ce21ab6a040c0f04f5b4d 19-Nov-2010 Kevin Enderby <enderby@apple.com> Added support for the Mach-O .symbol_resolver directive. rdar://8673046


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119816 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
195a0ce484cd12a5adae9184188f6d0fb52b84c0 19-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Change some methods in MCDwarf.cpp to be able to handle an arbitrary
MCStreamer instead of just MCObjectStreamer. Address changes cannot
be as efficient as we have to use DW_LNE_set_addres, but at least
most of the logic is shared.

This will be used so that, with CodeGen still using EmitDwarfLocDirective,
llvm-gcc is able to produce debug_line sections without needing an
assembler that supports .loc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119777 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
af6b5808756d6ce335df9eb158efa33894b401c4 16-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Add .loc methods to the streamer.

Next: Add support for the !HasDotLocAndDotFile case to the MCAsmStreamer
and then switch codegen to use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e13a0ff8ac6c86a04397801061e1a702d4e0eab1 13-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Parse and record the gnu_unique_object type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118980 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ba21957cbd7b25e3d25a3e9befe6151000242853 05-Nov-2010 Jim Grosbach <grosbach@apple.com> Add '.code 32' assembler directive to MC streamers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118309 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ce79299f78bb04e76e1860ab119b85d69f3a19c7 05-Nov-2010 Jim Grosbach <grosbach@apple.com> MC'ize the '.code 16' and '.thumb_func' ARM directives.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118301 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
41ed3ca19d406b6eef47c01ea16453f3080f32e8 05-Nov-2010 Jim Grosbach <grosbach@apple.com> syntaxunified directive is a no-op for MachO writing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118287 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f89671d994ba27e2816a7e49eb8bbc1b43d2a147 01-Nov-2010 Rafael Espindola <rafael.espindola@gmail.com> Move EmitInstruction to MCObjectStreamer so that ELF and MachO can share it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117925 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8c9aa922a94bd788ea061be7555fb5b1db3a5312 02-Oct-2010 Kevin Enderby <enderby@apple.com> This adds a Darwin x86_64 relocation encoding for a subtraction expression
where both symbols are "local", that is non-external symbols, and there is
no "base" for the symbols used in the expression, that is the section has
no non-temporary symbols. This case looks like this:

% cat local_reloc_A-B.s
.long 0
LB: .long 1
.long LA - LB - 4
.long 2
LA: .long 3

which llvm-mc will not encode without this patch, generates a "unsupported
local relocations in difference" error, but the Darwin assembler will
encode with relocation entries like this:

% otool -rv a.out l.out
a.out:
Relocation information (__TEXT,__text) 2 entries
address pcrel length extern type scattered symbolnum/value
00000008 False long False SUB False 1 (__TEXT,__text)
00000008 False long False UNSIGND False 1 (__TEXT,__text)

which is very similar to what is encoded when the symbols don't have the
leading 'L' and they are not temporary symbols. Which llvm-mc and the
Darwin assembler will encoded like this:

Relocation information (__TEXT,__text) 2 entries
address pcrel length extern type scattered symbolnum/value
00000008 False long True SUB False B
00000008 False long True UNSIGND False A

This is the missing relocation encoding needed to allow the Mach-O x86
Dwarf file and line table to be emitted. So this patch also removes the
TODO from the if() statement in MCMachOStreamer::Finish() that didn't
call MCDwarfFileTable::Emit() for 64-bit targets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115389 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
c095793b4ab027181605c79c9808df12afe45d63 30-Sep-2010 Kevin Enderby <enderby@apple.com> This is the last major patch to implement support for the .loc directive
and output the dwarf line number tables. This contains the code to emit and
encode the dwarf line tables from the previously gathered information in the
MCLineSection objects. This contains all the details to encode the line and
address deltas into the dwarf line table.

To do this an MCDwarfLineAddrFragment has been added.

Also this moves the interface code out of Mach-O streamer into
MCDwarf so it should be useable by other object file formats.

There is now one call to be made from an MCObjectStreamer
EmitInstruction() method:
MCLineEntry::Make(this, getCurrentSection());
to create a line entry after each instruction is assembled.

And one call call to be made from an MCObjectStreamer Finish() method:
MCDwarfFileTable::Emit(this, DwarfLineSection);
when getContext().hasDwarfFiles() is true and is passed a object file specific
MCSection where to emit the dwarf file and the line tables.

This appears to now be correct for 32-bit targets, at least x86. But the
relocation entries for 64-bit Darwin needs some further work which is next
up to work on. So for now the 64-bit Mach-O target does not output the
dwarf file and line tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115157 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
5c0d472b6ebc4408b97d12e1e545cafdcbd50adf 30-Sep-2010 Chandler Carruth <chandlerc@gmail.com> Silence a GCC warning about not handling all flags in this switch, we
specifically assert on unexpected flags.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115143 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
59ff3c913449402ad5447bbe3ae6338402fb84b0 23-Sep-2010 Rafael Espindola <rafael.espindola@gmail.com> Avoid some Mach-O specific alignment being done on ELF.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114594 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
d80781b98b771d370730ab7c630018f23e202b57 15-Sep-2010 Rafael Espindola <rafael.espindola@gmail.com> Add a InitSections method to the streamer interface.

The ELF implementation now creates text, data and bss to match the gnu as
behavior.

The text streamer still has the old MachO specific behavior since
the testsuite checks that it will error when a directive is given
before a setting the current section for example.

A nice benefit is that -n is not required anymore when producing
ELF files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114027 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
7d49f2b1bf8df7be6a91f51bfda9543c6d8718b9 03-Sep-2010 Bill Wendling <isanbard@gmail.com> Get rid of "passing signed into unsigned parameter" warning on PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112995 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
232ab949d5ed04c4ab45c763e0597fc3fc3fa5bc 01-Sep-2010 Kevin Enderby <enderby@apple.com> This is the second of three patches to implement support for the .loc directive
and output the dwarf line number tables. This takes the current loc info after
an instruction is assembled and saves the needed info into an object that has
vector and for each section. These objects will be used for the final patch to
build and emit the encoded dwarf line number tables. Again for now this is only
in the Mach-O streamer but at some point will move to a more generic place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112668 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
b07ce60981368f816af4caa3257e1e4ebf059133 10-Aug-2010 Kevin Enderby <enderby@apple.com> Next bit of support for the dwarf .file directive. This patch takes the
previously collected info from the .file directives and outputs the encoded
bytes for it. For now this is only in the Mach-O streamer but at some point
will move to a more generic place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
96749678c9d4cf73d8cbc108a2f2f4872e4e4413 19-Jul-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Silently ignore .file directives instead of error'ing out on
them. They aren't important enough to abort the entire assembly, and failing
early makes testing more annoying.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108747 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8067adc271d7ccfcd28a238d73942b21a5e2bc62 19-Jul-2010 Michael J. Spencer <bigcheesegs@gmail.com> MC: Add WinCOFFStreamer implementation and merge common code from MachO
into MCObjectStreamer.

Origonal Windows COFF implementation by Nathan Jedffords.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108678 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f59cac5ed36360b4c462781051f996b3499d7e0f 08-Jul-2010 Kevin Enderby <enderby@apple.com> Added the darwin .weak_def_can_be_hidden directive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107886 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
a86de1050889b61df2cd42cdc2acc5f9796b7f0c 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Rewrite atom association to be a final pass we do in Finish(), instead of tracking as part of emission.
- This allows sharing more code with the MCObjectStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106143 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
843aa1f15b06fc3c2b39740ffb5bffd2fa6827ce 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> MC: Simplify MCAssembler::isSymbolLinkerVisible to only take an MCSymbol.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106142 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
83b467178a8295048f3ee7b44ff9c7ea244a96cc 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> MC: Lift SwitchSection() and Finish() into MCObjectStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106141 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8dc68ab931e0f0a7c5caf9cd341b2ec855733863 16-Jun-2010 Daniel Dunbar <daniel@zuster.org> MC: Factor out an MCObjectStreamer class, which will be shared by the concrete
object file format writers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106140 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
83194de76a34e240927cf45c0debf12efe845c9b 26-May-2010 Daniel Dunbar <daniel@zuster.org> MC: When running with -mc-relax-all, we can eagerly relax instructions and avoid creating unnecessary MCInstFragments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104736 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
2ac0c453b2de1029f35d9ccb933c1ef303be00a2 26-May-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Factor out EmitInstTo{Fragment,Data} for emitting MCInst's as MCInstFragments or appending onto an MCDataFragment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104735 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
dae5b9f804019a127e941f8f889297d5d62b81fb 26-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Eliminate an unnecessary copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104709 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
84882528551bd816464a0657ad581c1fed0ac865 26-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Simplify MayNeedRelaxation to not provide the fixups, so we can query it
before encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104707 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
c90e30aa6f3792a460202017523171f435e2ba34 26-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Eliminate MCAsmFixup, replace with MCFixup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104699 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
482ad802f1b1885542ea8a30e144a228a1526912 26-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Use accessors for access to MCAsmFixup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104697 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
070c1abbc9b78fd8eef9365c5e776a13b64b9631 22-May-2010 Eric Christopher <echristo@apple.com> Expand on comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
011c3f110bca748db66e437924f936a62f1969bf 18-May-2010 Eric Christopher <echristo@apple.com> Implement EmitTBSSSymbol for MachOStreamer.

Fixes build failure as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104059 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
2ae4bfd76905fb6d5be2bf03eaca51da2f9a4d81 18-May-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Implement support for setting indirect symbol table offset in section header.

Also, create symbol data for LHS of assignment, to match 'as' symbol ordering better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104033 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ca1212de598f1c6fbc169c0ae1dfc829db10f4c0 18-May-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Fail faster/harder when we see .file, which isn't yet supported.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104031 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
db9014dd8b7b0b2581d10357b305f99f1b529316 17-May-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Reverse order of SymbolData scanning when emitting instructions.
- This fixes a string table mismatch with 'as' when two new symbols are defined
in a single instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
b18d2dd115d8ff3fd75bbaa90849473266236dc3 17-May-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Fix some differences in symbol flag handling.
- Don't clear weak reference flag, 'as' was only "trying" to do this, it wasn't
actually succeeding.
- Clear the "lazy bound" bit when we mark something external. This corresponds
roughly to the lazy clearing of the bit that 'as' implements in
symbol_table_lookup.
- The exact meaning of these flags appears pretty loose, since 'as' isn't very
consistent. For now we just try to match 'as', we will clean this up one day
hopefully.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103964 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
482eba054ab3543ee0e1f453d3d6441092f4b76d 14-May-2010 Eric Christopher <echristo@apple.com> Add AsmParser support for darwin tbss directive.

Nothing uses this yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103757 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
1c15413ebc8f4a35545a381a789a718627396d03 13-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Move MCAlignFragment::EmitNops value out of the constructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103665 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
4e544870c4c3f81b150e4c3b38a18d629d706b74 13-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Eliminate MCZeroFillFragment, it is no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103664 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e73d49eda2cb4fc30b52c4a241acf69c8af98302 13-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Drop support for alignment in ZeroFill fragment, we can just use
MCAlignFragments for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
071f73db4a0c3f7f00ef14d38af17f3c8d69827a 11-May-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Explicitly track atoms, as represented by their defining symbol, for each fragment (not yet used).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103438 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
b54b9ddaaf2d258767d360583642ed1b91075fc9 08-May-2010 Chris Lattner <sabre@nondot.org> break coff symbol definition stuff out into proper MCStreamer callbacks,
patch by Nathan Jeffords!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
a6eeb6e226d7d86d04e34e3b6464f66e0a052f43 07-May-2010 Kevin Enderby <enderby@apple.com> Fix i386 relocations to Weak Definitions. The relocation entries should be
external and the item to be relocated should not have the address of the
symbol added in.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103302 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
2d7fd61e94e2db0586ad9d5d26c1e7c5510a006d 05-May-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Mark absolute variable's appropriately, and add Mach-O support for
writing them.
- <rdar://problem/7885351> integrated assembler broken for i386 objc code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103112 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
c304718fd8fa25f3f36f47f3de0e0cfe7578bc9e 05-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Reject attempts to define a variable symbol.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
08a408a4b3224627db07eb27e174085d8e1d2426 05-May-2010 Daniel Dunbar <daniel@zuster.org> MC: Rename MCSymbol::{g,s}etValue -> MCSymbol::{g,s}etVariableValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103095 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ac2884a717daf3ad2aa8425320795d661e8a980b 25-Mar-2010 Daniel Dunbar <daniel@zuster.org> llvm-mc: Add a -mc-relax-all option, which relaxes every fixup. We always need
exactly two passes in that case, and don't ever need to recompute any layout,
so this is a nice baseline for relaxation performance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99563 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
d8036fb0deb7daff7959b0a5407c8a45acb5e603 23-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Switch to using MCInst fragments to do relaxation.

Also, both MCMachOStreamer and MCAssembler are now target independent!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
337055e62f28f18a9a8c4a090633cae1c2256ae1 23-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Add TargetAsmBackend::MayNeedRelaxation, for checking whether a particular instruction + fixups might need relaxation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99249 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8f9b80e5df12779a56d763ebf20864dad2bc72da 23-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Add TargetAsmBackend::WriteNopData and use to eliminate some target dependencies in MCMachOStreamer and MCAssembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99248 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
3f4dcd92daef80f87919507b6baf2a97d4bfaa2e 23-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Add MCInstFragment, not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99229 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f70f477024a23408d3a535920e6d4750478ac9ae 22-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Factor out getOrCreateDataFragment().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99204 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
cf871e5abff63a53f9e97ff9e37fb7297d0cb847 19-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Sink code emitter into MCAssembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98953 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
d3da36286f9ffe6951abec67b82837e432c858cf 14-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Fix a crash on invalid, attempting to evaluate undefined symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98464 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8315a357e48f2eeb4fa929168d3cb65924d9893e 12-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Add MCAssembler::addFixup, which enforces that fixups are added in order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98379 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
1f3e445184e5ca2aa4295c2a77f2a4e0b957fea1 11-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Provide MCAssembler with a TargetAsmBackend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98222 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
46836a783ab29f9cb49655d8b9cb8f5538a626fe 10-Mar-2010 Daniel Dunbar <daniel@zuster.org> MC: Move the backend section and symbol data maps to MCAssembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98186 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
0965200ac21fb481557f256c86d057df13bbb55e 10-Mar-2010 Daniel Dunbar <daniel@zuster.org> Remove unneeded includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98167 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
6e72048add2a6464e038121c6c275da37528aa0a 23-Feb-2010 Kevin Enderby <enderby@apple.com> This is the first patch to put the needed bits in place to eventually allow code
to be aligned with optimal nops. This patch does not change any functionality
and when the compiler is changed to use EmitCodeAlignment() it should also not
change the resulting output. Once the compiler change is made and everything
looks good the next patch with the table of optimal X86 nops will be added to
WriteNopData() changing the output. There are many FIXMEs in this patch which
will be removed when we have better target hooks (coming soon I hear).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96963 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
40ebe2473a2032356daccf05d4e5ffe39f437c8d 22-Feb-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Remove non-sensical comment, and add a missing AddValueSymbols call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96809 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f6346769b344f9b134f0661e8bd2b4245f6490ea 13-Feb-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Start emitting fixups/relocations for instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96095 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
2be2fd073003c0988723d2894dfb117ad90be11b 13-Feb-2010 Daniel Dunbar <daniel@zuster.org> MCAssembler: Switch MCAsmFixup to storing MCFixupKind instead of just a size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
45f48746110f5e6f7e65af7de239333dbd45d1d1 13-Feb-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Implement EmitValue using data fragments + fixups instead of fill fragment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96091 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
73c557458c0e28899f37c557bcaf36c2b6701260 09-Feb-2010 Daniel Dunbar <daniel@zuster.org> MC: First cut at MCFixup, for getting fixup/relocation information out of an MCCodeEmitter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95708 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
5d917a8952c09a345180ec36f0df4ee5dd5eddea 08-Feb-2010 Chris Lattner <sabre@nondot.org> add scaffolding for target-specific MCExprs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e1ec617c6abf0b9dc1eecbbfe483bda3bb2b7795 02-Feb-2010 Daniel Dunbar <daniel@zuster.org> MC/Mach-O: Set SOME_INSTRUCTIONS bit for sections.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
718fb59801320b8cb22363d115b5fc5ec40dc1f5 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize gprel32 emission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94452 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
a6594fc7156c0afbe6fd5a6aab9b099aaf950c53 25-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize .file and .file. This also fixes an issue where the
normal form of .file would fail if the filename had a weird character
in it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94437 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ed0ab15170f0f8fc4269d58757378bc8726b56a1 25-Jan-2010 Chris Lattner <sabre@nondot.org> add symbol attribute support for the ELF .type directive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94435 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
99328add833807f12a4950c7de29fb2a5df04703 25-Jan-2010 Chris Lattner <sabre@nondot.org> emit the .size directive for global variables on ELF through
mcstreamer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94416 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
9eb158d5b4cd4f6fc80912e2dd77bdf13c3ca0e7 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcize lcomm, simplify .comm, extend both to support 64-bit sizes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94299 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
a5ad93a10a5435f21090b09edb6b3a7e44967648 23-Jan-2010 Chris Lattner <sabre@nondot.org> move the various directive enums out of the MCStreamer class
into a new MCDirectives.h file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94294 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
3a9be0ee36fe2143f514d28315f3dc1bda132b2e 23-Jan-2010 Chris Lattner <sabre@nondot.org> mcstreamerize .no_dead_strip and .reference for static ctors/dtors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94290 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
aaec205b87637cd0d59d4f11630db603686eb73d 19-Jan-2010 Chris Lattner <sabre@nondot.org> Generalize mcasmstreamer data emission APIs to take an address space
identifier. There is no way to work around it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93896 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
6f24a0a603d7edba4995153092ff841703df6824 17-Jan-2010 Nate Begeman <natebegeman@mac.com> Add a note for the macho streamer and remove a used of the mangler from the soon to be defunct machowriter pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93670 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
2928c83b010f7cfdb0f819199d806f6942a7d995 06-Nov-2009 Daniel Dunbar <daniel@zuster.org> Pass StringRef by value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86251 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
a4d8667c870759a70aa9bea99e64b7f7e938b1a1 16-Oct-2009 Daniel Dunbar <daniel@zuster.org> MC: Set symbol values in MachO MCStreamer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84236 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
1253a6fa3b0d79dc6ea25f2578f6473219d40047 16-Oct-2009 Daniel Dunbar <daniel@zuster.org> MC: Switch assembler API to using MCExpr instead of MCValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84234 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e00b011e6a2597fcc3da88da91a8ffda6eebfcda 16-Oct-2009 Daniel Dunbar <daniel@zuster.org> MC: Remove unneeded context argument to MCExpr::Evaluate*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84233 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
821e3334ed3390d931f497300e6a5f1dc21bcfb3 31-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Pass values to MCStreamer as MCExprs, not MCValues.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e2ace509fc1205bed97a5114b13534610d4dbf5e 31-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Simplify EmitAssignment ('.set' is identical to '=').

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80577 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8c2eebe4074ef218b30d94358f6b2e45c079605c 31-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Switch MCInst to storing an MCExpr* instead of an MCValue.

Also, use MCInst::print instead of custom code in MCAsmPrinter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80575 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
cb579b3338fe8d9e4424b138f597a4696cb89de3 31-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Make MCSymbolData symbol member const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80573 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
a03a368acca1c5ea7eb7de7a4164cbd22308c82f 31-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Add MCContext to MCAssembler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80572 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
7092c7e1dcf9d05741b400dd54bbd7d3419773b2 30-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: MCStreamer cleanups. - Remove EmitLocalSymbol, this is unsupported for now.

- Switch Emit{CommonSymbol,Zerofill} to take alignment in bytes (for consistency).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80484 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8c3eaf46a1fb69004723ce78aaa82965d6474175 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: .lsym is more unsupported than unimplemented, pending a use case appearing.

Also, all one of the file level flags are implemented.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80352 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8f4d146c340c9423271ebd7bb3fd32b880000bc9 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Support .comm emission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80351 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
d5a8e98ef627a35284c9b5989664514f8f163968 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Support .zerofill emission.
- I'm still trying to figure out the cleanest way to implement this and match the assembler, currently there are some substantial differences.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80347 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
0f5fa6955199cc7e0964524d73c8a9820d8f78c1 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Factor getSectionData out of SwitchSection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
e6cdbf2f92a753ad547e3287e279bf47585b228d 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Emit .lcomm as .zerofill.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80343 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8751b94ffbd9c49df8949a37f78d6bd0be87b256 28-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Add const to EmitZeroFill section argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80341 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
4fac74950a1ff08b995b366bfb84369c1507faef 27-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc/Mach-O: Add MCCodeEmitter support, for encoding instructions.
- No relocations yet, of course.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80235 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
6009db486e7fba448ccb28dff676c012efade8f0 26-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc/Mach-O: Set .subsections_via_symbols flag properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80144 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
a421de11df9d2a07b9f95a1ad817467af426803a 26-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Add symbol entries for undefined symbols used in .fill and .org.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80086 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
5e835967dd5dda294d0ef3392f4c1d4a2260f532 26-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc/Mach-O: Set addresses for symbols.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80065 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
ad7c3d55932f949e6bd428232999088a53f54a4f 26-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Improve indirect symbol support (add the indirect index table).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80059 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
0c7761b3f98fee270d73f5b9c440fe15e82af263 24-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc/Mach-O: Preliminary support for indirect symbols.
- The indirect table itself isn't being filled in yet.

- This isn't factored properly and is rather FIXMEd, but at the moment I'm more
focused on figuring out what it needs to do.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79910 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
6aff2fbd56d4bc2d6029f7c9bd49a97f6dc01213 24-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc/Mach-O: Support symbol attributes.
- This is mostly complete, the main thing missing is .indirect_symbol support
(which would be straight-forward, except that the way it is implemented in
'as' makes getting an exact .o match interesting).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
cda7f78233b889772e1454a1246130c576681bb8 22-Aug-2009 Chris Lattner <sabre@nondot.org> prune some redundant #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
3edd9bb7a3da8526eb2f4a5dae2962a987d3d566 22-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc/Mach-O: Improve symbol table support:
- Honor .globl.

- Set symbol type and section correctly ('nm' now works), and order symbols
appropriately.

- Take care to the string table so that the .o matches 'as' exactly (for ease
of testing).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79740 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
f3d2ef0c9712381a105118336975adcfbf733db0 22-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc/Mach-O: Sketch symbol table support.
- The only .s syntax this honors right now is emitting labels, and some parts
of the symbol table generation are wrong or faked.

- This is enough to get nm to report such symbols... incorrectly, but still.

Also, fixed byte emission to extend the previous fragment if possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79739 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
8906ff1b9dfde28f1ff00706643ca10843b26e01 22-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Clean up some handling of symbol/section association to be more correct
(external was really undefined and there wasn't an explicit representation for
absolute symbols).
- This still needs some cleanup to how the absolute "pseudo" section is dealt
with, but I haven't figured out the nicest approach yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79733 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
d6f761e0eb610936a6b8495360b62696dcd85164 22-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc/Mach-O: Support .o emission for .org and .align.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79684 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
0705fbf52fcaade0c6b9d5d33bec163ee4c2daf4 21-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc/Mach-O: Support byte and fill value emission.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp
fb4a6b397665df011348ade24a8e38d2219f095a 21-Aug-2009 Daniel Dunbar <daniel@zuster.org> llvm-mc: Start MCAssembler and MCMachOStreamer.

- Together these form the (Mach-O) back end of the assembler.

- MCAssembler is the actual assembler backend, which is designed to have a
reasonable API. This will eventually grow to support multiple object file
implementations, but for now its Mach-O/i386 only.

- MCMachOStreamer adapts the MCStreamer "actions" API to the MCAssembler API,
e.g. converting the various directives into fragments, managing state like
the current section, and so on.

- llvm-mc will use the new backend via '-filetype=obj', which may eventually
be, but is not yet, since I hear that people like assemblers which actually
assemble.

- The only thing that works at the moment is changing sections. For the time
being I have a Python Mach-O dumping tool in test/scripts so this stuff can
be easily tested, eventually I expect to replace this with a real LLVM tool.

- More doxyments to come.

I assume that since this stuff doesn't touch any of the things which are part of
2.6 that it is ok to put this in not so long before the freeze, but if someone
objects let me know, I can pull it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79612 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/MC/MCMachOStreamer.cpp