Michael J. Spencer
801a359116
MC: Add WinCOFFObjectWriter implementation.
...
Origonal Windows COFF implementation by Nathan Jedffords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109389 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-26 02:17:32 +00:00
Reid Kleckner
c96a82a534
Initial modifications to MCAssembler and TargetMachine for the MCJIT.
...
Patch by Olivier Meurant!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109080 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-22 05:58:53 +00:00
Matt Fleming
f525c2a8af
Add some more handlers for ELF section directives.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108928 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 21:12:46 +00:00
Owen Anderson
8238f02650
Let's get those buildbots green: #include is needed in the header, not just the implementation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108912 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 20:16:11 +00:00
Chris Lattner
e5b2b88381
apparently also missing an include.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108908 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 20:06:19 +00:00
Chris Lattner
8f5880c093
this is in System
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108895 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 19:54:01 +00:00
Chris Lattner
6f0414a407
turn this into a normal header.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108891 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 19:43:19 +00:00
Chris Lattner
1c861a0253
hopefully heal the linux builders
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108890 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 19:40:51 +00:00
Chris Lattner
a4f15d66ab
there is no reason to dynamically generate a static header.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108887 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 18:59:58 +00:00
Chris Lattner
234db004f9
drop edinfo.inc into the objdir for src!=objdir builds.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108886 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 18:53:27 +00:00
Eric Christopher
aab5b3259f
Update header.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108883 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 18:46:43 +00:00
Chris Lattner
fed3fed251
hopefully teach cmake to build the .inc file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108874 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 18:33:21 +00:00
Chris Lattner
ca2fcac09d
cmake too
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108872 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 18:30:37 +00:00
Chris Lattner
bd9de839c4
forgot to add a file
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108870 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 18:29:50 +00:00
Chris Lattner
847da55716
start straightening out libedis's dependencies and make it fit
...
better in the llvm world. Among other things, this changes:
1. The guts of libedis are now moved into lib/MC/MCDisassembler
2. llvm-mc now depends on lib/MC/MCDisassembler, not tools/edis,
so edis and mc don't have to be built in series.
3. lib/MC/MCDisassembler no longer depends on the C api, the C
API depends on it.
4. Various code cleanup changes.
There is still a lot to be done to make edis fit with the llvm
design, but this is an incremental step in the right direction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108869 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-20 18:25:19 +00:00
Daniel Dunbar
96749678c9
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
2010-07-19 20:44:20 +00:00
Michael J. Spencer
e5c8d95f1a
_[A-Z] identifiers are reserved for the implementation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108682 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19 06:26:19 +00:00
Michael J. Spencer
8067adc271
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
2010-07-19 06:13:10 +00:00
Daniel Dunbar
54074b5f04
TblGen/AsmMatcher: Add support for honoring instruction Requires<[]> attributes as part of the matcher.
...
- Currently includes a hack to limit ourselves to "In32BitMode" and "In64BitMode", because we don't have the other infrastructure to properly deal with setting SSE, etc. features on X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108677 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19 05:44:09 +00:00
Eli Friedman
5d68ec2229
Make .align parse correctly on platforms where .align is measured in bytes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108674 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-19 04:17:25 +00:00
Daniel Dunbar
1edf6ca2cb
MC/AsmParser: Stop playing unsafe member function pointer calls, this isn't
...
portable enough.
- Downside is we now double dispatch through a stub function, but this isn't
performance critical.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108661 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-18 22:22:07 +00:00
Daniel Dunbar
6a46d571b4
MC/AsmParser: Fix .abort and .secure_log_unique to accept arbitrary token
...
sequences, not just strings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108655 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-18 20:15:59 +00:00
Daniel Dunbar
7a570d09ac
MC/AsmParser: Add macro argument substitution support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108654 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-18 19:00:10 +00:00
Daniel Dunbar
c64a0d7c3e
MC/AsmParser: Add basic support for macro instantiation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108653 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-18 18:54:11 +00:00
Daniel Dunbar
6d8cf082f6
MC/AsmParser: Add basic parsing support for .macro definitions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108652 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-18 18:47:21 +00:00
Daniel Dunbar
3c802de01a
MC/AsmParser: Add .macros_{off,on} support, not that makes sense since we don't
...
support macros.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108649 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-18 18:38:02 +00:00
Daniel Dunbar
275ce39794
MC/AsmParser: Use Error() instead of calling PrintMessage() directly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108648 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-18 18:31:45 +00:00
Daniel Dunbar
f21e4e9326
MC/AsmParser: Fix TokError() to accept a Twine.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108647 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-18 18:31:42 +00:00
Daniel Dunbar
aef87e3307
MC/AsmParser: Hide the AsmParser implementation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108646 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-18 18:31:38 +00:00
Eli Friedman
dc1ad22d53
Start of .sleb128/.uleb128 parsing support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108612 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-17 06:27:28 +00:00
Eli Friedman
21444efae0
Work-in-progress parsing for ELF .section directive.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108609 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-17 04:29:04 +00:00
Eli Friedman
f82ccf5a0d
Add support for parsing .size directives for ELF.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108606 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-17 03:09:18 +00:00
Daniel Dunbar
d1e3b44d6c
MC/AsmParser: Lift Run() and TargetParser to base class.
...
Also, add constructor function for creating AsmParser instances.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108604 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-17 02:26:10 +00:00
Chris Lattner
a955853961
fix indentation and 80 cols
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108460 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-15 21:19:31 +00:00
Benjamin Kramer
38e59891ee
Don't pass StringRef by reference.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108366 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-14 22:38:02 +00:00
Daniel Dunbar
5146a0970d
MC/AsmParser: Move ELF specific parser to ELFAsmParser.cpp.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108196 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 21:23:32 +00:00
Daniel Dunbar
9c23d7f25e
MC/AsmParser: Move Darwin specific parse to DarwinAsmParser.cpp.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108193 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 20:51:51 +00:00
Daniel Dunbar
4d5fe97c47
MC/AsmParser: Move .section parsing to Darwin specific parser.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108190 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 20:42:34 +00:00
Daniel Dunbar
47f5608029
MC/AsmParser: Move special section directive parsing to Darwin specific parser.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108187 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 20:23:36 +00:00
Daniel Dunbar
7a56fc224c
MC/AsmParser: Add a basic ELFAsmParser extension.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108185 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 20:08:04 +00:00
Daniel Dunbar
4c7c08bfbf
MC/AsmParser: Inline AsmParser::CreateSymbol into callers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108183 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 19:52:10 +00:00
Daniel Dunbar
b6c3a607ac
MC/AsmParser: Move .tbss and .zerofill parsing to Darwin specific parser.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108180 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 19:37:35 +00:00
Daniel Dunbar
492b7a21cb
MC/AsmParser: Move .desc parsing to Darwin specific parser.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108179 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 19:22:53 +00:00
Daniel Dunbar
38a4e2acb7
MC/AsmParser: Move .lsym parsing to Darwin specific parser.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108176 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 19:08:25 +00:00
Daniel Dunbar
9ac66b008d
MC/AsmParser: Move some misc. Darwin directive handling to DarwinAsmParser.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108174 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 18:49:22 +00:00
Daniel Dunbar
e47497087b
MC/AsmParser: Add a DarwinAsmParser extension.
...
- Currently initialization is a bit of a hack, but harmless. We need to rework
various parts of target initialization to clean this up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108165 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 18:12:02 +00:00
Daniel Dunbar
8f34bead90
MC/AsmParser: Switch a bunch of directive parsing to use accessors.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108163 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 18:03:11 +00:00
Daniel Dunbar
81ea00f45d
MCAsmParser: Pull some directive handling out into a helper class, and change
...
DirectiveMap to be based on MCAsmParserExtension.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108161 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 17:54:38 +00:00
Daniel Dunbar
eceec05c82
MC/AsmParser: Switch some directive parsing to use accessor methods.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108160 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 17:45:27 +00:00
Daniel Dunbar
53131982d6
MC: Add MCAsmParserExtension, a base class for all the target/object specific
...
classes which want to extend the basic asm parser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108158 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 17:27:45 +00:00
Daniel Dunbar
dc4c7da5d4
MC: Move AsmParser::TokError to MCAsmParser().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108155 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 17:18:45 +00:00
Daniel Dunbar
ca90dc6d29
MC: Move getLoc() to MCAsmLexer().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108154 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 17:10:00 +00:00
Duncan Sands
3472766f9e
Convert some tab stops into spaces.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108130 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-12 08:16:59 +00:00
Chris Lattner
b162290e39
introduce WinCOFFObjectWriter, patch by Michael Spencer!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108103 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-11 22:07:02 +00:00
Chris Lattner
eb72dcaef7
introduce WinCOFFStreamer.cpp, patch by Michael Spencer!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108102 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-11 22:05:00 +00:00
Kevin Enderby
1b02acb2a0
Revert some unneeded parts of the change in r107886 for the
...
.weak_def_can_be_hidden directive. Chris pointed out that the MCAsmInfo.h/.cpp
chunks aren't needed for this until the compiler starts generating these. And
when that happens it will be more convenient for it to be a bool than a const
char*.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107906 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-08 20:30:44 +00:00
Kevin Enderby
f59cac5ed3
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
2010-07-08 17:22:42 +00:00
Chris Lattner
da3051a17f
finish up support for callw: PR7195
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107826 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-07 22:35:13 +00:00
Daniel Dunbar
b570968424
MC: Fix some stray hunks I didn't intend to commit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107428 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-01 20:48:51 +00:00
Daniel Dunbar
9186fa6b0c
MC: Pass the target instance to the AsmParser constructor.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107426 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-01 20:41:56 +00:00
Daniel Dunbar
839348a9f0
MC: Fix an error message.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107424 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-01 20:20:01 +00:00
Daniel Dunbar
94610588af
MC: Move COFF enumeration constants to llvm/Support/COFF.h, patch by Michael
...
Spencer!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107418 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-01 20:07:24 +00:00
Bill Wendling
07d3177117
Revert r107205 and r107207.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107215 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-29 22:34:52 +00:00
Bill Wendling
207855cff9
Introducing the "linker_weak" linkage type. This will be used for Objective-C
...
metadata types which should be marked as "weak", but which the linker will
remove upon final linkage. For example, the "objc_msgSend_fixup_alloc" symbol is
defined like this:
.globl l_objc_msgSend_fixup_alloc
.weak_definition l_objc_msgSend_fixup_alloc
.section __DATA, __objc_msgrefs, coalesced
.align 3
l_objc_msgSend_fixup_alloc:
.quad _objc_msgSend_fixup
.quad L_OBJC_METH_VAR_NAME_1
This is different from the "linker_private" linkage type, because it can't have
the metadata defined with ".weak_definition".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107205 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-29 21:24:00 +00:00
Duncan Sands
6f74f69ff4
The variable ValueSize is set to 1 on both code paths, and then
...
ignored! Remove it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107138 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-29 13:30:08 +00:00
Duncan Sands
5b96b26eb7
The variable "Value" is carefully set to Layout.getSymbolAddress,
...
but then not actually used - maybe a bug? Remove the variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107137 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-29 13:26:33 +00:00
Duncan Sands
44886ac5eb
Remove unused calls to Lexer.getLoc and the pointless variable HasFillExpr.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107136 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-29 13:24:40 +00:00
Kevin Enderby
f187ac5a23
Added the darwin .secure_log_unique and .secure_log_reset directives.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107077 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-28 21:45:58 +00:00
Eric Christopher
1008d35000
Get the addend correct for i386 pic.
...
Thanks Daniel!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106608 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-22 23:51:47 +00:00
Chris Lattner
61abd7b395
"This is just a cosmetic change in MCAsmStreamer.cpp/EmitSymbolAttribute: all attributes have now a \t before and after, as done for '.type'.
...
This makes the output look consistent, as well as help some third party assemblers expecting the attributes to be in the second column."
Patch by Arnaud de Grandmaison!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106469 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-21 20:35:01 +00:00
Eric Christopher
04b8d3cc49
Update comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106191 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-17 00:49:46 +00:00
Eric Christopher
bc06737c35
In progress on 32-bit addends.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106154 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-16 21:32:38 +00:00
Daniel Dunbar
a86de10508
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
2010-06-16 20:04:32 +00:00
Daniel Dunbar
843aa1f15b
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
2010-06-16 20:04:29 +00:00
Daniel Dunbar
83b467178a
MC: Lift SwitchSection() and Finish() into MCObjectStreamer.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106141 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-16 20:04:25 +00:00
Daniel Dunbar
8dc68ab931
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
2010-06-16 20:04:22 +00:00
Eric Christopher
e48dbf8d83
Fix indentation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106072 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-16 00:26:36 +00:00
Eric Christopher
c9ada472c8
Some more work on mach-o TLV relocations.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106062 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-15 22:59:05 +00:00
Dan Gohman
4b1000d117
Don't call flush() at a library level which isn't checking for errors
...
and doesn't know where the output is going.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105274 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-01 16:31:34 +00:00
Eric Christopher
aeed4d81a8
Rearrange conditionals so we don't get caught with the correct type as wrong.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104793 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-27 00:52:31 +00:00
Daniel Dunbar
83194de76a
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
2010-05-26 20:37:03 +00:00
Daniel Dunbar
2ac0c453b2
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
2010-05-26 20:37:00 +00:00
Daniel Dunbar
95506d40c5
MC: Change RelaxInstruction to only take the input and output instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104713 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-26 18:15:06 +00:00
Daniel Dunbar
dae5b9f804
MC: Eliminate an unnecessary copy.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104709 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-26 17:50:16 +00:00
Daniel Dunbar
8488252855
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
2010-05-26 17:45:29 +00:00
Daniel Dunbar
c90e30aa6f
MC: Eliminate MCAsmFixup, replace with MCFixup.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104699 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-26 15:18:56 +00:00
Daniel Dunbar
482ad802f1
MC: Use accessors for access to MCAsmFixup.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104697 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-26 15:18:31 +00:00
Daniel Dunbar
c9adb8c61e
MC: Change MCInst::dump_pretty to not include a trailing newline.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104696 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-26 15:18:13 +00:00
Daniel Dunbar
e614e393c7
MC: Eliminate MCFragment vtable, which was unnecessary.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104689 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-26 06:50:57 +00:00
Eric Christopher
96ac5156ca
Start adding mach-o tls reloc support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104651 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-26 00:02:12 +00:00
Daniel Dunbar
414c0c43d3
llvm-mc: Use EmitIntValue where possible, which makes the API calls from the AsmParser and CodeGen line up better.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104467 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-23 18:36:38 +00:00
Daniel Dunbar
01777ff094
llvm-mc: Use AddBlankLine in asm parser. This makes transliteration match the input much more closely, and also makes the API calls from the AsmParser and CodeGen line up better.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104466 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-23 18:36:34 +00:00
Daniel Dunbar
fdb5a86179
MC: Add an MCLoggingStreamer, for use in debugging integrated-as mismatches.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104463 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-23 17:44:06 +00:00
Eric Christopher
070c1abbc9
Expand on comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104396 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-21 23:03:53 +00:00
Eric Christopher
9b00685bb6
Fix section attribute name.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104381 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-21 21:08:52 +00:00
Matt Fleming
924c5e58f2
Add support for parsing the ELF .type assembler directive.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104316 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-21 11:36:59 +00:00
Matt Fleming
ab3b3651ad
Grammar fix. This is a test commit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104264 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-20 19:45:09 +00:00
Benjamin Kramer
c37791e875
Reduce string trashing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104223 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-20 14:14:22 +00:00
Eric Christopher
c1a887d76d
Partial code for emitting thread local bss data.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104197 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-20 00:49:07 +00:00
Chris Lattner
a7f1354eb5
fix rdar://7986634 - match instruction opcodes case insensitively.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104183 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-19 23:34:33 +00:00
Eric Christopher
011c3f110b
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
2010-05-18 21:26:41 +00:00
Eric Christopher
4d01cbe93b
Make EmitTBSSSymbol take a section argument so that we can find it later.
...
Fix up callers and users.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104057 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-18 21:16:04 +00:00
Kevin Enderby
9f2ad11624
Incorporate Daniel's suggestion and use !isdigit(CurPtr[0]) and not
...
CurPtr[0] == '\n' when testing the character after a "0b" when looking
to see if it part of a something like "jmp 0b".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104039 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-18 18:09:20 +00:00
Kevin Enderby
d8ba292c9b
Fixed the problem with a branch to "0b" that was not parsed by llvm-mc
...
correctly. The Lexer was incorrectly eating the newline casusing it to branch
to address 0. Updated the test case to use a "0:" label and a branch to "0b".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104038 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-18 17:51:35 +00:00
Daniel Dunbar
2ae4bfd769
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
2010-05-18 17:28:24 +00:00
Daniel Dunbar
56279f42b6
MC/Mach-O: Remove some FIXMEs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104032 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-18 17:28:20 +00:00
Daniel Dunbar
ca1212de59
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
2010-05-18 17:28:17 +00:00
Benjamin Kramer
47f9a49560
Simplify MCContext::(Next|Get)Instance
...
- Allocate MCLabels in the context so they don't leak.
- Avoid duplicated densemap lookup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104020 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-18 12:15:34 +00:00
Kevin Enderby
ebe7fcd041
Added support in MC for Directional Local Labels.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103989 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-17 23:08:19 +00:00
Eric Christopher
c6177a4531
More data/parsing support for tls directives. Add a few more testcases
...
and cleanup comments as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103985 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-17 22:53:55 +00:00
Daniel Dunbar
648ac5153e
MC/Mach-O/x86: Optimal nop sequences should only be used for the .text sections, not all sections in the text segment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103981 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-17 21:54:30 +00:00
Daniel Dunbar
9a744e3860
MC: Add dyn_cast support to MCSection.
...
- Of questionable utility, since in general anything which wants to do this should probably be within a target specific hook, which can rely on the sections being of the appropriate type. However, it can be useful for short term hacks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103980 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-17 21:54:26 +00:00
Daniel Dunbar
db9014dd8b
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
2010-05-17 21:19:59 +00:00
Eric Christopher
423c9e3e58
Add some section and constant support for darwin TLS.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103974 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-17 21:02:07 +00:00
Daniel Dunbar
b18d2dd115
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
2010-05-17 20:12:31 +00:00
Daniel Dunbar
525a3a67c1
llvm-mc: Support reassignment of variables in one special case, when the
...
variable has not yet been used in an expression. This allows us to support a few
cases that show up in real code (mostly because gcc generates it for Objective-C
on Darwin), without giving up a reasonable semantic model for assignment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103950 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-17 17:46:23 +00:00
Eric Christopher
d04d98d24f
Assume that we'll handle mangling the symbols earlier and just put the
...
symbol to the file as we have it. Simplifies out tbss handling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103928 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-17 02:13:02 +00:00
Daniel Dunbar
f0f6cdb6b4
MC/Mach-O/x86_64: Darwin's special "signed_N" relocation types should only be
...
used to replace a normal relocation, not a reference to a GOT entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103789 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-14 18:53:40 +00:00
Eric Christopher
482eba054a
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
2010-05-14 01:50:28 +00:00
Eric Christopher
c260a3e59a
Fix a couple of typos.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103756 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-14 01:38:54 +00:00
Daniel Dunbar
47b3ec4daa
MC: Switch to completely lazy layout.
...
- The eliminates the last major algorithmic problem with MC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103754 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-14 00:51:14 +00:00
Daniel Dunbar
9005d45a99
MC: Extend MCAsmLayout to explicitly track which fragments have been layed out, and enforce several invariants to LayoutFragment to ensure we only do layout in a sensible order.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103753 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-14 00:37:21 +00:00
Daniel Dunbar
11c4111516
MC: Implicitly assign section addresses when the previous fragment is layed out.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103752 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-14 00:37:17 +00:00
Daniel Dunbar
337718e09c
MC: Switch MCFragment to storing the layout order index, not its index in the file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103751 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-14 00:37:14 +00:00
Daniel Dunbar
afc6acdab7
MC: Change LayoutSection() to only do the section initializiation.
...
Also, elimminate MCAsmLayout::set*, which are no longer needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103750 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-14 00:37:11 +00:00
Daniel Dunbar
b69fc044db
MC: Move Layout{Fragment,Section} into MCAsmLayout, and add LayoutFile().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103738 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 20:40:12 +00:00
Daniel Dunbar
2c18d3b0fe
MC: Factor out MCAssembler::ComputeFragmentSize.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103724 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 18:35:06 +00:00
Daniel Dunbar
f60c736c64
MC: Add section layout order indices to MCSectionData.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103715 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 15:17:26 +00:00
Daniel Dunbar
49ed921190
MC: Move ordinal calculation, to make sure fragments synthesized for layout get assigned ordinals properly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103711 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 08:43:37 +00:00
Daniel Dunbar
09d3465f0e
MC: Create dummy fragments to avoid ever having empty sections, which simplifies layout.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103710 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 08:43:34 +00:00
Daniel Dunbar
aa0d350fe5
MC: Add MCAsmLayout::FragmentReplaced() helper function.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103709 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 08:43:31 +00:00
Daniel Dunbar
054be92e1d
Fix -Asserts warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103697 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 03:50:50 +00:00
Daniel Dunbar
2661f11e46
MC: Eliminate MCSectionData::{,Address,File}Size, which can now be computed by
...
utility functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103695 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 03:19:50 +00:00
Daniel Dunbar
61066dbdf2
MC: Switch to using explicit MCAlignFragments with OnlyAlignAddress bit instead
...
of manually doing padding/editing layout in LayoutSection().
- This probably seems like six-of-one and half-dozen of another, but there
is a method to my madness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103693 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 02:34:14 +00:00
Daniel Dunbar
456b501270
MC: Add MCAlignFragment::OnlyAlignAddress bit. This is a bit of magic that says the align fragment shouldn't contribute to the logical section size, it is will be used for cleaning up the code to handle section alignment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103690 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 01:10:26 +00:00
Daniel Dunbar
b5844ff1c4
MC: Add MCSectionData::AddressSize, which is the size of the address space consumed by the section. This can differ from both the section logical size, and the section size on disk (although the current code handles this without making an explicit distinction).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103689 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 01:10:22 +00:00
Chris Lattner
7bb7c55a61
fix rdar://7965971 and a fixme: use ParseIdentifier in
...
ParseDirectiveDarwinZerofill instead of hard coding the
check for identifier. This allows quoted symbol names to
be used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103682 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-13 00:10:34 +00:00
Daniel Dunbar
1c15413ebc
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
2010-05-12 22:56:23 +00:00
Daniel Dunbar
4e544870c4
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
2010-05-12 22:51:38 +00:00
Daniel Dunbar
e2fee5b236
MC: Explicitly check that only virtual fragments appear in virtual sections.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103663 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 22:51:35 +00:00
Daniel Dunbar
3153fec733
MC: Switch MCFillFragment to storing total fill size instead of a count. This allows using ValueSize==0 to represent a virtual fill.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103662 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 22:51:32 +00:00
Daniel Dunbar
e73d49eda2
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
2010-05-12 22:51:27 +00:00
Daniel Dunbar
52f8dff671
Simplify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103651 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 21:47:55 +00:00
Daniel Dunbar
f0d17d2461
MC: Factor out MCAssembler::LayoutFragment
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103649 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 21:35:25 +00:00
Daniel Dunbar
2d891a20e6
MC: Tweak section layout to not relying on accumulating address value.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103648 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 21:35:22 +00:00
Daniel Dunbar
d13a0caf72
MC: Simplify LayoutSection to just take the index of the section to layout.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103627 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 17:56:47 +00:00
Daniel Dunbar
bc1a0cf139
MC: Track section layout order explicitly, and use to simplify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103616 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 15:42:59 +00:00
Nathan Jeffords
62d50e89e4
stylistic change to MCSectionCOFF::PrintSwitchToSection COMDAT handling
...
Made a stylistic changed to the code/comments related to the unsupported COMDAT selection type IMAGE_COMDAT_SELECT_LARGEST based on from Anton Korobeynikov.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103590 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 07:36:03 +00:00
Rafael Espindola
18c1021ec1
Add support for movi32 of global values to the new (MC) asm printer.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103576 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 05:16:34 +00:00
Nathan Jeffords
871bb94c43
updated support for the COFF .linkonce
...
Now, the .linkonce directive is emitted as part of MCSectionCOFF::PrintSwitchToSection instead of AsmPrinter::EmitLinkage since it is an attribute of the section the symbol was placed into not the symbol itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103568 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 04:26:09 +00:00
Daniel Dunbar
a5f1d57f65
MC/Mach-O/x86_64: Add a new hook for checking whether a particular section can
...
be diced into atoms, and adjust getAtom() to take this into account.
- This fixes relocations to symbols in fixed size literal sections, for
example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103532 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-12 00:38:17 +00:00
Daniel Dunbar
db4c7e606f
MC/Mach-O/x86_64: Fix PCrel adjustment for x86_64, which was using the fixup
...
offset instead of the fixup address as intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103527 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-11 23:53:11 +00:00
Daniel Dunbar
640e948f09
MC/Mach-O: As Kevin pointed out, 'Address' is really an offset -- rename to clarify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103526 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-11 23:53:07 +00:00
Daniel Dunbar
ef4591ef79
MC/Mach-O: Fix a crash on invalid.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103525 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-11 23:53:05 +00:00
Daniel Dunbar
651804c3d6
MC/Mach-O x86_64: Switch to using fragment atom symbol.
...
- This eliminates getAtomForAddress() (which was a linear search) and
simplifies getAtom().
- This also fixes some correctness problems where local labels at the same
address as non-local labels could be assigned to the wrong atom.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103480 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-11 17:22:50 +00:00
Daniel Dunbar
a8251fac10
MC/Mach-O: Fix another mismatch with .weak_definition, we shouldn't use a
...
scattered relocation entry with a .weak_definition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103443 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-10 23:15:20 +00:00
Daniel Dunbar
e9460ec057
MC/Mach-O: Factor out doesSymbolRequireExternRelocation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103442 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-10 23:15:13 +00:00
Daniel Dunbar
071f73db4a
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
2010-05-10 22:45:09 +00:00
Nathan Jeffords
72e57f9441
test commit, added a comment to MCSectionCOFF::PrintSwitchToSection function
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103372 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-09 05:49:00 +00:00
Chris Lattner
b54b9ddaaf
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
2010-05-08 19:54:22 +00:00
Chris Lattner
6e5ce287b0
add COFF support for COMDAT sections, patch by Nathan Jeffords!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103304 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-07 21:49:09 +00:00
Kevin Enderby
a6eeb6e226
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
2010-05-07 21:44:23 +00:00
Ted Kremenek
d51409ae9e
Update CMake build.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103269 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-07 17:29:48 +00:00
Chris Lattner
eb40a0fd98
switch MCSectionCOFF from a syntactic to semantic representation,
...
patch by Peter Housel!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103267 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-07 17:17:41 +00:00
Daniel Dunbar
5fe03c023c
Revert r103137, fix for $ in labels. It looks like we can't actually handle this
...
at the token level. Consider the following horrible test case:
a = 1
.globl $a
movl ($a), %eax
movl $a, %eax
movl $$a, %eax
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103178 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-06 14:46:38 +00:00
Chris Lattner
851f87c6c9
fix rdar://7946934 - in some limited cases, the assembler should
...
allow $ at the start of a symbol name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103137 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05 23:51:28 +00:00
Daniel Dunbar
2d7fd61e94
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
2010-05-05 19:01:05 +00:00
Daniel Dunbar
c304718fd8
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
2010-05-05 19:01:00 +00:00
Daniel Dunbar
8d627d3153
MC: Make setVariableValue check the redefinition condition a bit more strongly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103110 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05 19:00:56 +00:00
Daniel Dunbar
08a408a4b3
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
2010-05-05 17:41:00 +00:00
Daniel Dunbar
ae7fb0b03e
MC/Mach-O/x86_64: Relocations in debug sections should use local relocations
...
when possible.
- <rdar://problem/7934873>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103092 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-05 17:22:39 +00:00
Daniel Dunbar
31e8e1d085
llvm-mc: Fix case were we would skip a line in the .s file after an instruction
...
match failure.
Also, fixes a few memory leak FIXMEs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102986 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-04 00:33:07 +00:00
Mon P Wang
b9a01bcf48
Add support for assemblers that don't support periods in a name
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102594 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-29 04:00:56 +00:00
Chris Lattner
7834facff9
refactor .if handling code a bit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101659 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-17 18:14:27 +00:00
Chris Lattner
d305035155
implement mc asmparser support for '.', which gets the
...
current PC. rdar://7834775
We now produce an identical .o file compared to the cctools
assembler for something like this:
_f0:
L0:
jmp L1
.long . - L0
L1:
jmp A
.long . - L1
.zerofill __DATA,_bss,A,0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101227 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-14 04:40:28 +00:00
Chris Lattner
74aae4726a
move elf section uniquing to MCContext. Along the way
...
merge XCore's section into MCSectionELF
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100812 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08 21:26:26 +00:00
Chris Lattner
f0559e4b24
move macho section uniquing from MCParser and TLOF to MCContext where
...
the compiler and asmparser now unique to the same sections. This fixes
rdar://7835021.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100807 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08 20:30:37 +00:00
Benjamin Kramer
454c4ce479
Various MSVC warning fixes about truncated 64 bit shifts and const pointers passed to free.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100767 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-08 15:25:57 +00:00
Chris Lattner
75361b69f3
rename llvm::llvm_report_error -> llvm::report_fatal_error
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100709 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-07 22:58:41 +00:00
Chris Lattner
79180e2ef5
Give AsmParser an option to control whether it finalizes
...
the stream. New demo:
$ clang asm.c -S -o - -emit-llvm | llc -filetype=obj -o t.o
$ otool -tv t.o
t.o:
(__TEXT,__text) section
_foo:
0000000000000000 subq $0x08,%rsp
0000000000000004 movl %edi,(%rsp)
0000000000000007 movl %edi,%eax
0000000000000009 incl %eax
000000000000000b movl %eax,(%rsp)
000000000000000e movl %eax,0x04(%rsp)
0000000000000012 addq $0x08,%rsp
0000000000000016 ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100492 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-05 23:15:42 +00:00
Chris Lattner
3d22513611
eliminate the magic AbsoluteDebugSectionOffsets MAI hook,
...
which is really a property of the section being referenced.
Add a predicate to MCSection to replace it.
Yay for reduction in magic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100367 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-04 23:22:29 +00:00
Chris Lattner
0887fa0b8c
isAbsoluteEHSectionOffsets always returns false, eliminate it
...
and substitute false at the one call site.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100354 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-04 21:29:44 +00:00
Chris Lattner
d374087be5
fix an ugly wart in the MCInstPrinter api where the
...
raw_ostream to print an instruction to had to be specified
at MCInstPrinter construction time instead of being able
to pick at each call to printInstruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100307 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-04 05:04:31 +00:00
Chris Lattner
58bc4dd4a9
add a twine form of MCStreamer::EmitRawText, and mc'ize
...
a few more things in AsmPrinter.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100294 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03 22:12:35 +00:00
Chris Lattner
d5928dcd78
allow attaching comments to raw text.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100292 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03 22:06:56 +00:00
Chris Lattner
3580dea910
add <cstdlib> header for abort() on linux builders.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100290 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03 21:48:59 +00:00
Chris Lattner
91bead7905
add a new EmitInlineAsm function to asmprinter to handle inline asm.
...
If we have an MCAsmStreamer, we continue to emit asm textually,
otherwise we (currently) emit an error to errs and ignore it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100289 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-03 21:35:55 +00:00
Chris Lattner
9b97a73ded
Rip out the 'is temporary' nonsense from the MCContext interface to
...
create symbols. It is extremely error prone and a source of a lot
of the remaining integrated assembler bugs on x86-64.
This fixes rdar://7807601.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99902 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-30 18:10:53 +00:00
Daniel Dunbar
1de558b71f
MC/Mach-O/x86_64: Support @GOTPCREL on symbols, even for non-PCrel relocations!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99853 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-29 23:56:40 +00:00
Daniel Dunbar
ac2884a717
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
2010-03-25 22:49:09 +00:00
Daniel Dunbar
0cc8bd4861
MC: Stop restarting layout on every relaxation.
...
- Still O(N^2), just a faster form, and now its the MCAsmLayout's fault.
On the .s I am tuning against (combine.s from 403.gcc):
--
ddunbar@lordcrumb:MC$ diff stats-before.txt stats-after.txt
5,10c5,10
< 1728 assembler - Number of assembler layout and relaxation steps
< 7707 assembler - Number of emitted assembler fragments
< 120588 assembler - Number of emitted object file bytes
< 2233448 assembler - Number of evaluated fixups
< 1727 assembler - Number of relaxed instructions
< 6723845 mcexpr - Number of MCExpr evaluations
---
> 3 assembler - Number of assembler layout and relaxation steps
> 7707 assembler - Number of emitted assembler fragments
> 120588 assembler - Number of emitted object file bytes
> 14796 assembler - Number of evaluated fixups
> 1727 assembler - Number of relaxed instructions
> 67889 mcexpr - Number of MCExpr evaluations
--
Feel free to LOL at the -before numbers, if you like.
I am a little surprised we make more than 2 relaxation passes. It's pretty
trivial for us to do relaxation out-of-order if that would give a speedup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99543 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 19:35:56 +00:00
Daniel Dunbar
f476b00f51
MC: Simplify main section layout process by moving alignment into LayoutSection.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99529 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 18:16:42 +00:00
Daniel Dunbar
be644a38c0
MC: Sink Section address assignment into LayoutSection.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99528 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 18:16:38 +00:00
Daniel Dunbar
8fb040308c
MC/Mach-O: Switch to MCSectionData::getOrdinal.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99504 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 08:08:54 +00:00
Daniel Dunbar
5a6e97a7e4
MC: Explicity track section and fragment ordinals.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99500 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 07:10:11 +00:00
Daniel Dunbar
b026d64bf2
Fix -Asserts warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99499 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 07:10:05 +00:00
Daniel Dunbar
5d428511ca
MC: Route access to SectionData offset and file size through MCAsmLayout.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99474 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 02:00:07 +00:00
Daniel Dunbar
432cd5fd9b
MC: Route access to Fragment offset and effective size through MCAsmLayout.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99473 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 02:00:02 +00:00
Daniel Dunbar
7c3d45a03e
MC: Eliminate MC{Fragment,{Section,Symbol}Data}::getAddress.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99467 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 01:03:24 +00:00
Daniel Dunbar
e9cfd685f5
MC: Fix refacto in MCExpr evaluation, I mistakenly replaced a fragment address with a symbol address.
...
- This fixes the integrated-as nightly test regressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99466 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 01:03:17 +00:00
Daniel Dunbar
207e06ea04
MC: Direct all {fragment,section,symbol} address access through the MCAsmLayout object.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99380 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-24 03:43:40 +00:00
Daniel Dunbar
ff54784683
MC: Sprinkle in some more interesting statistics.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99350 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-23 23:47:14 +00:00
Daniel Dunbar
ef6e96f91f
llvm-mc: Fast path EvaluateAbsolute of constants.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99348 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-23 23:47:07 +00:00
Daniel Dunbar
d8036fb0de
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
2010-03-23 05:09:03 +00:00
Daniel Dunbar
337055e62f
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
2010-03-23 03:13:05 +00:00
Daniel Dunbar
8f9b80e5df
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
2010-03-23 02:36:58 +00:00
Daniel Dunbar
9799de910e
MC: Tweak MCInstFragment to include the encoded data and fixups, so that we don't need to recompute them during relaxation. I will revisit this once all the other pieces of fast relaxation are in place.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99244 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-23 01:39:05 +00:00
Jeffrey Yasskin
1ccd91a5b1
Put MCSectionCOFF::Name into the MCContext instead of leaking it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99231 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 23:26:12 +00:00
Daniel Dunbar
3f4dcd92da
MC: Add MCInstFragment, not used yet.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99229 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 23:16:48 +00:00
Daniel Dunbar
35b0657dea
Add a FIXME.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99228 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 23:16:43 +00:00
Daniel Dunbar
9d39e616cc
MC: Fix a few more cases we were passing an MCDataFragment when a MCFragment would do, and sprinkle in some const.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99218 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 21:49:41 +00:00
Daniel Dunbar
c6f598209a
Simplify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99217 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 21:49:38 +00:00
Daniel Dunbar
67c076cf59
MCInst: Add ::dump_pretty.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99216 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 21:49:34 +00:00
Daniel Dunbar
b751418a39
MC: Change MCObjectWriter::RecordRelocation to take an MCFragment (instead of a MCDataFragment). Object files should only need the generic MCFragment features.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99205 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 20:35:50 +00:00
Daniel Dunbar
f70f477024
MC/Mach-O: Factor out getOrCreateDataFragment().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99204 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 20:35:46 +00:00
Daniel Dunbar
2a6e3f5be2
MC: Eliminate MCFragment::getMaxFileSize.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99203 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 20:35:43 +00:00
Daniel Dunbar
8d39eb47d6
MC: Share the MCAsmLayout object, although its still not used for anything important.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99202 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-22 20:35:35 +00:00
Daniel Dunbar
873decbb37
Better fix for r98994, MachObjectWriterImpl wasn't intended to be virtual.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99031 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-20 01:58:40 +00:00
Rafael Espindola
a407fa830a
Fix -Wnon-virtual-dtor warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98994 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 21:26:46 +00:00
Daniel Dunbar
602b40f0d0
MC/Mach-O/x86_64: Add relocation support.
...
- This is "extraordinarily" Darwin 'as' compatible. See the litany of FIXMEs littered about for more information.
- There are a few cases which seem to clearly be 'as' bugs which I have left unsupported, and there is one cases where we diverge but should fix if it blocks diffing .o files (Darwin 'as' ends up widening a jump unnecessarily).
- 403.gcc build, runs, and diffs equivalently to the 'as' built version now (using llvm-mc). However, it builds so slowly that I wouldn't recommend trying it quite yet. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98974 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 18:07:55 +00:00
Daniel Dunbar
1a9158c301
MC: Add TargetAsmBackend::createObjectWriter.
...
- MCAssembler is now object-file independent, although we will surely need more work to fully support ELF/COFF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98955 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 10:43:26 +00:00
Daniel Dunbar
b36052f0e4
MCCodeEmitter: Add target independent fixup flag for is-pc-relative.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98954 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 10:43:23 +00:00
Daniel Dunbar
cf871e5abf
MC: Sink code emitter into MCAssembler.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98953 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 10:43:18 +00:00
Daniel Dunbar
2df4ceba15
MC/Mach-O: Move to MachObjectWriter.{h,cpp}.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98952 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 10:43:15 +00:00
Daniel Dunbar
cc5b84c6fb
MC: Add TargetAsmBackend::isVirtualSection hook.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98950 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 09:29:03 +00:00
Daniel Dunbar
53b2338a1d
MC: Split MCObjectWriter out of MCAssembler.cpp.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98949 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 09:28:59 +00:00
Daniel Dunbar
bdd9281f35
MCAssembler: Pull out MCObjectWriter class.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98948 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 09:28:55 +00:00
Daniel Dunbar
87190c473c
MCAssembler: Move ApplyFixup to the TargetAsmBackend, this is a target specific not object writer specific task.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98947 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 09:28:12 +00:00
Daniel Dunbar
b1e98945e4
MC/Mach-O: Lift the fixup evaluation and application up (to the same place), and eliminate MCAsmFixup::FixedValue.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98944 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 07:09:47 +00:00
Daniel Dunbar
bacba99778
MC/Mach-O: Factor out ExecutePostLayoutBinding, to separate the post-layout changes the object writer may need to make to the assembler from the actual .o writing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98943 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 07:09:33 +00:00
Daniel Dunbar
17a0650641
MC/Mach-O: Lift relocation emission logic a bit higher to separate evaluation / relocation handling from the actual .o writing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98942 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 07:09:18 +00:00
Chris Lattner
4c42a6de9f
fix an MCInstPrinter leak that jyasskin pointed out:
...
createAsmStreamer now takes ownership of the instprinter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98939 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 05:48:53 +00:00
Daniel Dunbar
034843ac8b
MC/Mach-O: Add isScatteredFixupFullyResolved, which implements the correct algorithm (used on x86_64) for determining whether an evaluated fixup is fully resolved (doesn't need relocation).
...
- Test cases will follow, once we have x86_64 relocation support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98926 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 03:18:18 +00:00
Daniel Dunbar
8ad0dccbf2
MC/Mach-O/x86_64: Add getAtom[ForAddress].
...
- These find the defining symbol which identifies the containing atom for a symbol or address. They are currently very slow, but will be eliminated eventually.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98925 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 03:18:15 +00:00
Daniel Dunbar
939f8d7ca2
MC/Mach-O: Factor out isScatteredFixupFullyResolvedSimple predicate, and fix some corner cases.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98924 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 03:18:12 +00:00
Daniel Dunbar
2386985663
MC/Mach-O: Factor out isSymbolLinkerVisible method; "linker visible" is a made up term to refer to non-temporary labels + temporary labels in sections-which-require symbols. For Darwin, it corresponds to symbols which effectively define an atom.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98923 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-19 03:18:09 +00:00
Daniel Dunbar
9a1d20042f
MCValue: Change to holding MCSymbolRefExprs instead of MCSymbols, we will need this for accessing to symbol modifiers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98791 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-18 00:59:10 +00:00
Daniel Dunbar
0682951b4f
MC/Darwin: Add a new target hook for whether the target uses "reliable" symbol differences, basically whether the assembler should attempt to understand atoms when using scattered symbols.
...
Also, avoid some virtual call overhead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98789 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-18 00:58:53 +00:00
Chris Lattner
77e7694026
fix GetOrCreateTemporarySymbol to require a name, clients
...
should use CreateTempSymbol() if they don't care about the
name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98712 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-17 05:41:18 +00:00
Daniel Dunbar
4e815f8a8c
MC: Allow modifiers in MCSymbolRefExpr, and eliminate X86MCTargetExpr.
...
- Although it would be nice to allow this decoupling, the assembler needs to be able to reason about MCSymbolRefExprs in too many places to make this viable. We can use a target specific encoding of the variant if this becomes an issue.
- This patch also extends llvm-mc to support parsing of the modifiers, as opposed to lumping them in with the symbol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98592 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-15 23:51:06 +00:00
Daniel Dunbar
d6e59084d0
MC/Mach-O/x86_64: Temporary labels in cstring sections require symbols (and external relocations, but we don't have x86_64 relocations yet).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98583 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-15 21:56:50 +00:00
Daniel Dunbar
99d22adcad
MC/Mach-O: Add MCSectionMachO::getType()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98582 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-15 21:56:38 +00:00
Chris Lattner
c28cc093e3
fix a memory leak yjasskin pointed out: MCSymbol is bump pointer
...
allocated and thus not freed. This is cool except that it contains
and std::string so the string data didn't get freed. In any case
there is no reason to redundantly store the string data in the
MCSymbol anyway, just make the MCSymbol ref the string data in the
MCContext StringMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98536 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-15 06:15:35 +00:00
Chris Lattner
1d72a76616
add a new CreateTempSymbol method, the use case for
...
CreateTempSymbol vs GetOrCreateTemporarySymbol are
completely different.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98486 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-14 08:23:30 +00:00
Daniel Dunbar
d3da36286f
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
2010-03-14 03:10:40 +00:00
Daniel Dunbar
5691e74f97
MC/X86_64: Symbol support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98456 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-13 22:49:35 +00:00
Daniel Dunbar
ee0d89245e
MC/Mach-O: Initial x86_64 support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98454 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-13 22:10:17 +00:00
Chris Lattner
3a151be8d5
add a hack to allow parsing negative minint. rdar://7751341
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98442 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-13 19:25:13 +00:00
Daniel Dunbar
da3e9f760c
MC/Mach-O: PCrel relocations weren't using the right base address, they are
...
relative to the fragment address, not its offset. This was masked by the text
section normally being at address 0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98420 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-13 02:38:00 +00:00
Daniel Dunbar
5e6a7a248b
llvm-mc: Support -n, useful for comparing -integrated-as output since the
...
compiler may not lead with the text section.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98418 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-13 02:20:57 +00:00