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 Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
align-nops.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
align-size.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
align-text.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
align.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
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 Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
bracket-exprs.s
bracket.s
bss-large.ll Added the test missed from r185080. 2013-07-01 09:02:33 +00:00
bss.ll
call-abs.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
cfi-adjust-cfa-offset.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-advance-loc2.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-def-cfa-offset.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-def-cfa-register.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-def-cfa.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-escape.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-offset.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
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 Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-rel-offset2.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-rel-offset.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-remember.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-restore.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-same-value.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-sections.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
cfi-signal-frame.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
cfi-undefined.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
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 Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
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 Put ELF COMDAT relocations into the relevant COMDAT group. 2013-07-10 20:58:17 +00:00
comdat.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
common2.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
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 [MC/DWARF] Generate multiple .debug_line entries for adjacent .loc directives 2013-06-19 21:27:27 +00:00
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 Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
diff2.s
diff.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
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 Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
empty.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
entsize.ll Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
entsize.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
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 Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
got.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
ident.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
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 Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
leb128.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
lit.local.cfg [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
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 Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
no-fixup.s Rewrite a test to check actual output rather than intermediate implementation 2013-03-01 20:54:00 +00:00
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 Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
norelocation.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
offset.s Correctly propagates st_size. 2014-03-27 00:28:24 +00:00
org.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
pic-diff.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
plt.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
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 Add a test for explicitly exercising the mc-relax-all flag. 2012-12-10 20:36:01 +00:00
relax-arith.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
relax-crash.s
relax.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
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 Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
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 Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
subsection.s Add support for subsections to the ELF assembler. Fixes PR8717. 2013-04-17 21:18:16 +00:00
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 Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
undef2.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
undef.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
version.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
weak-relocation.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
weak.s Teach llvm-readobj to print human friendly description of reserved sections. 2014-03-24 05:00:34 +00:00
weakref-plt.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
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 Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
zero.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00