llvm-6502/test/MC/ELF
David Blaikie fe25521451 Reimplement debug info compression by compressing the whole section, rather than a fragment.
To support compressing the debug_line section that contains multiple
fragments (due, I believe, to variation in choices of line table
encoding depending on the size of instruction ranges in the actual
program code) we needed to support compressing multiple MCFragments in a
single pass.

This patch implements that behavior by mutating the post-relaxed and
relocated section to be the compressed form of its former self,
including renaming the section.

This is a more flexible (and less invasive, to a degree) implementation
that will allow for other features such as "use compression only if it's
smaller than the uncompressed data".

Compressing debug_frame would be a possible further extension to this
work, but I've left it for now. The hurdle there is alignment sections -
which might require going as far as to refactor
MCAssembler.cpp:writeFragment to handle writing to a byte buffer or an
MCObjectWriter (there's already a virtual call there, so it shouldn't
add substantial compile-time cost) which could in turn involve
refactoring MCAsmBackend::writeNopData to use that same abstraction...
which involves touching all the backends. This would remove the limited
handling of fragment writing seen in
ELFObjectWriter.cpp:getUncompressedData which would be nice - but it's
more invasive.

I did discover that I (perhaps obviously) don't need to handle
relocations when I rewrite the fragments - since the relocations have
already been applied and computed (and stored into
ELFObjectWriter::Relocations) by this stage (necessarily, because we
need to have written any immediate values or assembly-time relocations
into the data already before we compress it, which we have). The test
case doesn't necessarily cover that in detail - I can add more test
coverage if that's preferred.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205990 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-10 21:53:53 +00:00
..
abs.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
alias-reloc.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
alias.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
align-bss.s
align-nops.s
align-size.s
align-text.s
align.s
bad-expr2.s Completely rewrite ELFObjectWriter::RecordRelocation. 2014-03-29 06:26:49 +00:00
bad-expr3.s Completely rewrite ELFObjectWriter::RecordRelocation. 2014-03-29 06:26:49 +00:00
bad-expr.s Forgot to add testcase for r198590 2014-01-21 20:39:11 +00:00
bad-relocation.s MC asm parser: allow ?'s in symbol names, and handle @'s in names in MS asm 2013-10-18 20:46:28 +00:00
bad-section.s
basic-elf-32.s Work around gold bug http://sourceware.org/PR16794. 2014-04-02 12:15:20 +00:00
basic-elf-64.s
bracket-exprs.s
bracket.s
bss-large.ll
bss.ll
call-abs.s
cfi-adjust-cfa-offset.s
cfi-advance-loc2.s
cfi-def-cfa-offset.s
cfi-def-cfa-register.s
cfi-def-cfa.s
cfi-escape.s
cfi-offset.s
cfi-reg.s PR13754: llvm-mc/x86 crashes on .cfi directives without the % prefix for registers. 2012-09-07 14:51:35 +00:00
cfi-register.s
cfi-rel-offset2.s
cfi-rel-offset.s
cfi-remember.s
cfi-restore.s
cfi-same-value.s
cfi-sections.s
cfi-signal-frame.s
cfi-undefined.s
cfi-window-save.s Implements parsing and emitting of .cfi_window_save in MC. 2013-09-26 14:49:40 +00:00
cfi-zero-addr-delta.s
cfi.s MC: Add support for .cfi_startproc simple 2014-01-27 17:20:25 +00:00
comdat-dup-group-name.s MC: Support multiple sections with the same name in the same comdat group 2013-10-22 23:41:52 +00:00
comdat-reloc.s
comdat.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
common2.s
common.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
comp-dir.s X86MCAsmInfoGNUCOFF: Set PointerSize as 8 for targeting x64. It caused DW_LNE_set_address was misemitted on x64. 2014-04-08 15:28:50 +00:00
compression.s Reimplement debug info compression by compressing the whole section, rather than a fragment. 2014-04-10 21:53:53 +00:00
debug-line2.s
debug-line.s Emit DWARF line entries for all data in the instruction stream. 2013-10-20 02:16:18 +00:00
debug-loc.s
diff2.s
diff.s
discriminator.s Support DWARF discriminators in object streamer. 2014-02-14 19:27:53 +00:00
dot-symbol-assignment.s Add support for assigning to . in AsmParser. 2014-02-17 20:48:32 +00:00
elf_directive_previous.s
elf_directive_section.s
empty-dwarf-lines.s
empty.s
entsize.ll
entsize.s
fde.s
file-double.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
file.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
gen-dwarf.s DebugInfo: Avoid creating unnecessary/empty line tables and remove the special case of '0' in DwarfCompileUnit::initStmtList by just always using a label difference 2014-04-01 08:07:52 +00:00
global-offset.s
got.s
ident.s
ifunc-reloc.s Force emit a relocation for @gnu_indirect_function symbols so that the indirect 2014-01-08 18:50:32 +00:00
invalid-symver.s
lcomm.s
leb128.s
lit.local.cfg
local-reloc.s Fix broken CHECK lines 2014-02-16 07:31:05 +00:00
many-sections-2.s Correctly detect if a symbol uses a reserved section index or not. 2014-03-26 00:16:43 +00:00
many-sections.s Create .symtab_shndxr only when needed. 2014-03-25 23:44:25 +00:00
merge.s Completely rewrite ELFObjectWriter::RecordRelocation. 2014-03-29 06:26:49 +00:00
n_bytes.s
no-fixup.s
nocompression.s llvm/test/MC/ELF/nocompression.s: Loosen an expression to match "llvm-mc.EXE". 2014-03-30 14:04:00 +00:00
noexec.s
norelocation.s
offset.s Correctly propagates st_size. 2014-03-27 00:28:24 +00:00
org.s
pic-diff.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
plt.s
pr9292.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
relax-all-flag.s
relax-arith.s
relax-crash.s
relax.s
relocation-386.s Work around gold bug http://sourceware.org/PR16794. 2014-04-02 12:15:20 +00:00
relocation-pc.s Completely rewrite ELFObjectWriter::RecordRelocation. 2014-03-29 06:26:49 +00:00
relocation.s Look through variables when computing relocations. 2014-03-20 02:12:01 +00:00
rename.s
section-quoting.s
section.s ELF: Parse types in directives like binutils gas 2013-09-21 05:25:12 +00:00
set.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
sleb.s
subsection.s
symbol-names.s MC asm parser: allow ?'s in symbol names, and handle @'s in names in MS asm 2013-10-18 20:46:28 +00:00
symref.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
tls-i386.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
tls.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
type-propagate.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
type.s In the ELFWriter when writing aliased (.set) symbols dont blindly 2014-01-07 20:17:03 +00:00
uleb.s
undef2.s
undef.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
version.s
weak-relocation.s
weak.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
weakref-plt.s
weakref-reloc.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
weakref.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
x86_64-reloc-sizetest.s
zero.s