Chris Lattner
e309cfa0d8
reject invalid code like:
...
int x __attribute__((section("_foo, _bar"))) = 4;
int y __attribute__((section("_foo, _bar, 4byte_literals"))) = 1;
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78867 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-13 00:05:07 +00:00
Chris Lattner
f9bdeddb96
split MachO section handling stuff out to its out .h/.cpp file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78576 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-10 18:15:01 +00:00
Chris Lattner
ff4bc460c5
Make the big switch: Change MCSectionMachO to represent a section *semantically*
...
instead of syntactically as a string. This means that it keeps track of the
segment, section, flags, etc directly and asmprints them in the right format.
This also includes parsing and validation support for llvm-mc and
"attribute(section)", so we should now start getting errors about invalid
section attributes from the compiler instead of the assembler on darwin.
Still todo:
1) Uniquing of darwin mcsections
2) Move all the Darwin stuff out to MCSectionMachO.[cpp|h]
3) there are a few FIXMEs, for example what is the syntax to get the
S_GB_ZEROFILL segment type?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78547 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-10 01:39:42 +00:00
Chris Lattner
93b6db3de9
sink the 'name' and 'isdirective' state out of MCSection into its derived classes.
...
This totally optimizes PIC16 sections by not having an 'isdirective' bit anymore!! ;-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78517 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-08 23:39:42 +00:00
Chris Lattner
892e182393
1. Make MCSection an abstract class.
...
2. Move section switch printing to MCSection virtual method which takes a
TAI. This eliminates textual formatting stuff from TLOF.
3. Eliminate SwitchToSectionDirective, getSectionFlagsAsString, and
TLOFELF::AtIsCommentChar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78510 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-08 22:41:53 +00:00
Chris Lattner
7c599d056a
make target-specific TLOF impls (except PIC16) create target-specific
...
MCSection instances.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78500 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-08 20:52:13 +00:00
Chris Lattner
a1c31b779c
stub out PECOFF/MachO/ELF MCSection classes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78499 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-08 20:50:49 +00:00
Chris Lattner
3b24c01720
make MergeableCString be a SectionKind "abstract class", and
...
add new concrete versions for 1/2/4-byte mergable strings.
These are not actually created yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78055 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-04 05:35:56 +00:00
Daniel Dunbar
cdcb388a58
Change MCOperand to use Create style instead of Make style for constructing
...
operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77837 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-02 00:09:22 +00:00
Chris Lattner
7b1dcdfce1
make SectionKind::Kind completely private now.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77836 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-02 00:04:12 +00:00
Chris Lattner
1ef9be2883
Make SectionKind::get() private.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77835 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-02 00:02:44 +00:00
Chris Lattner
2798119ab4
(re)introduce new simpler apis for creation sectionkinds.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77834 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-01 23:57:16 +00:00
Chris Lattner
f9650c061e
it turns out that isWeak() was basically dead anyway. Kill off SectionInfo :-/
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77812 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-01 21:46:23 +00:00
Chris Lattner
0064e85050
fix a layering violation by moving SectionKind out to its own header.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77808 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-01 21:30:49 +00:00
Chris Lattner
968ff11967
Change SectionKind to be a property that is true of a *section*, it
...
should have no state that is specific to particular globals in the
section. In this case, it means the removal of the "isWeak" and
"ExplicitSection" bits. MCSection uses the new form of SectionKind.
To handle isWeak, I introduced a new SectionInfo class, which is
SectionKind + isWeak, and it is used by the part of the code generator
that does classification of a specific global.
The ExplicitSection disappears. It is moved onto MCSection as a new
"IsDirective" bit. Since the Name of a section is either a section
or directive, it makes sense to keep this bit in MCSection. Ultimately
the creator of MCSection should canonicalize (e.g.) .text to whatever
the actual section is.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77803 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-01 21:11:14 +00:00
Chris Lattner
4a7bc1e5aa
All MCSections are now required to have a SectionKind.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77787 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-01 18:25:49 +00:00
Daniel Dunbar
76c4d7696c
llvm-mc: Support quoted identifiers.
...
- Uses MCAsmToken::getIdentifier which returns the (sub)string representing the
meaningfull contents a string or identifier token.
- Directives aren't done yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77739 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-31 21:55:09 +00:00
Chris Lattner
a87dea4f8c
switch off of 'Section' onto MCSection. We're not properly using
...
MCSection subclasses yet, but this is a step in the right direction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77708 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-31 18:48:30 +00:00
Chris Lattner
ed47a0409b
split MCSection stuff out to its own .cpp file, add a new
...
MCSectionWithKind subclass of MCSection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77684 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-31 17:02:00 +00:00
Chris Lattner
fcdbf4ecc3
create sections with MCSection::Create instead of Context->getOrCreateSection.
...
This is needed to allow polymorphic sections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77680 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-31 16:43:49 +00:00
Daniel Dunbar
9004e8d412
Add missing include.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77470 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-29 16:45:40 +00:00
Daniel Dunbar
e240beb065
Make expression parsing and error/warning reporting available through the
...
generic MCAsmParser interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77381 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28 22:22:31 +00:00
Daniel Dunbar
cbbe248441
Expose Tokens to target specific assembly parsers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77337 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-28 17:58:44 +00:00
Daniel Dunbar
f9507ffa5b
llvm-mc: Implement .abort fully in the front end
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77272 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-27 23:20:52 +00:00
Daniel Dunbar
9a7e2ccf57
llvm-mc: Move AsmLexer::getCurStrVal to StringRef based API.
...
- My DFS traversal of LLVM is, at least for now, nearly complete! :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77258 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-27 21:49:56 +00:00
Daniel Dunbar
b5261ebabb
Move MCContext and friends to StringRef based APIs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77251 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-27 21:22:30 +00:00
Kevin Enderby
5026ae4514
Removed the DumpSymbolsandMacros and LoadSymbolsandMacros MCStreamer API as
...
the parsing of the .dump and .load should be done in the assembly parser and
not have any need for an MCStreamer API. Changed the code for now so these
just produce an error saying these specific directives are not yet implemented
since they are likely no longer used and may never need to be implemented.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76462 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-20 20:25:37 +00:00
Daniel Dunbar
dbd692a66e
Add MCAsmLexer interface.
...
- This provides the AsmLexer interface to the target specific assembly parsers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76460 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-20 20:01:54 +00:00
Daniel Dunbar
a3af370dc1
Add MCAsmParser interface.
...
- This provides the AsmParser interface to the target specific assembly
parsers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76453 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-20 18:55:04 +00:00
Kevin Enderby
f96db468fc
Removed the SubsectionsViaSymbols MCStreamer API and replaced it with a generic
...
EmitAssemblerFlag API which takes a value from the added AssemblerFlag
enumerated constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76087 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-16 17:56:39 +00:00
Chris Lattner
8e25e2d801
implement .include in the lexer/parser instead of passing it into the streamer.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75896 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-16 06:14:39 +00:00
Kevin Enderby
6e68cd96b2
Added llvm-mc support for parsing the .dump and .load directives.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75786 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-15 15:30:11 +00:00
Kevin Enderby
1f049b24c7
Added llvm-mc support for parsing the .include directive.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75711 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14 23:21:55 +00:00
Kevin Enderby
711482476c
Added llvm-mc support for parsing the .lsym directive.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75685 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14 21:35:03 +00:00
Kevin Enderby
95cf30c444
Added llvm-mc support for parsing the .desc directive.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75645 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-14 18:17:10 +00:00
Kevin Enderby
5f1f0b8f7e
Added llvm-mc support for parsing the .abort directive.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75545 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13 23:15:14 +00:00
Kevin Enderby
a5c783280f
add llvm-mc support for parsing the .subsections_via_symbols directive.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75500 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-13 21:03:15 +00:00
Chris Lattner
9be3fee2bd
add support for .zerofill, patch by Kevin Enderby!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75301 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10 22:20:30 +00:00
Chris Lattner
1fc3d75581
add llvm-mc support for parsing the .lcomm directive, patch by Kevin Enderby!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75148 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-09 17:25:12 +00:00
Chris Lattner
4e4db7adfc
Implement parsing support for the .comm directive. Patch by
...
Kevin Enderby!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74944 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-07 20:30:46 +00:00
Daniel Dunbar
d6bb283de9
Tweak MCSymbol doxyments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74599 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-01 07:03:41 +00:00
Daniel Dunbar
80f62d0062
Rename MCValue::isConstant to isAbsolute.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74596 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-01 06:48:00 +00:00
Chris Lattner
a0faf7ae55
add comments, privatize interface
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74592 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-01 06:31:49 +00:00
Chris Lattner
36e74871b8
disable some ctors.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74591 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-01 06:23:14 +00:00
Chris Lattner
14022f2a5a
add some comments to MCSymbol header, make the ctor private so that only MCContext can create these.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74590 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-01 06:21:53 +00:00
Chris Lattner
e18e0c58dc
improve comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74589 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-01 06:08:37 +00:00
Daniel Dunbar
e303503da3
Fill in some methods for the MCValue field of an MCOperand.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74572 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-30 23:37:44 +00:00
Daniel Dunbar
374d8bddac
llvm-mc: Symbols in a relocatable expression of the (a - b + cst) form are
...
allowed to be undefined when the expression is seen, we cannot enforce the
same-section requirement until the entire assembly file has been seen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74565 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-30 22:49:27 +00:00
Daniel Dunbar
15d1707096
llvm-mc: Evaluation for relocatable expressions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74496 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-30 01:49:52 +00:00
Daniel Dunbar
c29dfa786a
llvm-mc: Parse .{,b,p2}align{,w,l} directives.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74478 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-29 23:46:59 +00:00