| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 120269
|
| |
|
|
|
|
| |
Factor some duplicated code into MCObjectStreamer::EmitLabel.
llvm-svn: 120248
|
| |
|
|
| |
llvm-svn: 120246
|
| |
|
|
| |
llvm-svn: 120245
|
| |
|
|
| |
llvm-svn: 120243
|
| |
|
|
|
|
| |
and at least the 4 byte one will be needed to implement the .cfi_* directives.
llvm-svn: 120240
|
| |
|
|
| |
llvm-svn: 119816
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 119777
|
| |
|
|
|
|
|
| |
Next: Add support for the !HasDotLocAndDotFile case to the MCAsmStreamer
and then switch codegen to use it.
llvm-svn: 119384
|
| |
|
|
| |
llvm-svn: 118980
|
| |
|
|
| |
llvm-svn: 118309
|
| |
|
|
| |
llvm-svn: 118301
|
| |
|
|
| |
llvm-svn: 118287
|
| |
|
|
| |
llvm-svn: 117925
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 115389
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 115157
|
| |
|
|
|
|
| |
specifically assert on unexpected flags.
llvm-svn: 115143
|
| |
|
|
| |
llvm-svn: 114594
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 114027
|
| |
|
|
| |
llvm-svn: 112995
|
| |
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 112668
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 110617
|
| |
|
|
|
|
|
| |
them. They aren't important enough to abort the entire assembly, and failing
early makes testing more annoying.
llvm-svn: 108747
|
| |
|
|
|
|
|
|
| |
into MCObjectStreamer.
Origonal Windows COFF implementation by Nathan Jedffords.
llvm-svn: 108678
|
| |
|
|
| |
llvm-svn: 107886
|
| |
|
|
|
|
|
|
| |
instead of tracking as part of emission.
- This allows sharing more code with the MCObjectStreamer.
llvm-svn: 106143
|
| |
|
|
| |
llvm-svn: 106142
|
| |
|
|
| |
llvm-svn: 106141
|
| |
|
|
|
|
| |
object file format writers.
llvm-svn: 106140
|
| |
|
|
|
|
| |
avoid creating unnecessary MCInstFragments.
llvm-svn: 104736
|
| |
|
|
|
|
| |
MCInstFragments or appending onto an MCDataFragment.
llvm-svn: 104735
|
| |
|
|
| |
llvm-svn: 104709
|
| |
|
|
|
|
| |
before encoding.
llvm-svn: 104707
|
| |
|
|
| |
llvm-svn: 104699
|
| |
|
|
| |
llvm-svn: 104697
|
| |
|
|
| |
llvm-svn: 104396
|
| |
|
|
|
|
| |
Fixes build failure as well.
llvm-svn: 104059
|
| |
|
|
|
|
|
|
| |
section header.
Also, create symbol data for LHS of assignment, to match 'as' symbol ordering better.
llvm-svn: 104033
|
| |
|
|
| |
llvm-svn: 104031
|
| |
|
|
|
|
|
| |
- This fixes a string table mismatch with 'as' when two new symbols are defined
in a single instruction.
llvm-svn: 103979
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- 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.
llvm-svn: 103964
|
| |
|
|
|
|
| |
Nothing uses this yet.
llvm-svn: 103757
|
| |
|
|
| |
llvm-svn: 103665
|
| |
|
|
| |
llvm-svn: 103664
|
| |
|
|
|
|
| |
MCAlignFragments for this.
llvm-svn: 103661
|
| |
|
|
|
|
| |
for each fragment (not yet used).
llvm-svn: 103438
|
| |
|
|
|
|
| |
patch by Nathan Jeffords!
llvm-svn: 103346
|
| |
|
|
|
|
|
| |
external and the item to be relocated should not have the address of the
symbol added in.
llvm-svn: 103302
|
| |
|
|
|
|
|
| |
writing them.
- <rdar://problem/7885351> integrated assembler broken for i386 objc code
llvm-svn: 103112
|
| |
|
|
| |
llvm-svn: 103111
|