diff options
author | Quentin Colombet <qcolombet@apple.com> | 2014-04-15 01:17:45 +0000 |
---|---|---|
committer | Quentin Colombet <qcolombet@apple.com> | 2014-04-15 01:17:45 +0000 |
commit | 67ed71068460fa81303c79cb5e1abd910beb6c1d (patch) | |
tree | 299377f072fd538e93146dd35c8b648421387149 /test | |
parent | e8603c43f2e1fcd244fdc9e12f40a59e438b9555 (diff) | |
download | llvm-67ed71068460fa81303c79cb5e1abd910beb6c1d.tar.gz llvm-67ed71068460fa81303c79cb5e1abd910beb6c1d.tar.bz2 llvm-67ed71068460fa81303c79cb5e1abd910beb6c1d.tar.xz |
[MC] Emit an error if cfi_startproc is used before a symbol is defined.
Currently, we bind those directives with the last symbol, so if none
has been defined, this would lead to a crash of the compiler.
<rdar://problem/15939159>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206236 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/MC/ARM/dwarf-cfi-initial-state.s | 1 | ||||
-rw-r--r-- | test/MC/AsmParser/cfi-invalid-startproc.s | 16 | ||||
-rw-r--r-- | test/MC/MachO/debug_frame.s | 1 | ||||
-rw-r--r-- | test/MC/PowerPC/ppc64-initial-cfa.s | 1 |
4 files changed, 19 insertions, 0 deletions
diff --git a/test/MC/ARM/dwarf-cfi-initial-state.s b/test/MC/ARM/dwarf-cfi-initial-state.s index 2d638e9c4b..0d1c08af72 100644 --- a/test/MC/ARM/dwarf-cfi-initial-state.s +++ b/test/MC/ARM/dwarf-cfi-initial-state.s @@ -1,6 +1,7 @@ # RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o - \ # RUN: | llvm-dwarfdump - | FileCheck %s +_proc: .cfi_sections .debug_frame .cfi_startproc bx lr diff --git a/test/MC/AsmParser/cfi-invalid-startproc.s b/test/MC/AsmParser/cfi-invalid-startproc.s new file mode 100644 index 0000000000..57ded13d0f --- /dev/null +++ b/test/MC/AsmParser/cfi-invalid-startproc.s @@ -0,0 +1,16 @@ +# RUN: not llvm-mc -triple=x86_64-apple-macosx10.8 -filetype=obj -o %t %s 2>&1 | FileCheck %s +# Check that the cfi_startproc is declared after the beginning of +# a procedure, otherwise it will reference an invalid symbol for +# emitting the relocation. +# <rdar://problem/15939159> + +# CHECK: No symbol to start a frame +.text +.cfi_startproc +.globl _someFunction +_someFunction: +.cfi_def_cfa_offset 16 +.cfi_offset %rbp, -16 +.cfi_def_cfa_register rbp + ret +.cfi_endproc diff --git a/test/MC/MachO/debug_frame.s b/test/MC/MachO/debug_frame.s index 20bfd8dde2..247347d252 100644 --- a/test/MC/MachO/debug_frame.s +++ b/test/MC/MachO/debug_frame.s @@ -3,6 +3,7 @@ // Make sure MC can handle file level .cfi_startproc and .cfi_endproc that creates // an empty frame. // rdar://10017184 +_proc: .cfi_startproc .cfi_endproc diff --git a/test/MC/PowerPC/ppc64-initial-cfa.s b/test/MC/PowerPC/ppc64-initial-cfa.s index b890b30ba0..ca97e1b96b 100644 --- a/test/MC/PowerPC/ppc64-initial-cfa.s +++ b/test/MC/PowerPC/ppc64-initial-cfa.s @@ -7,6 +7,7 @@ # RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj -relocation-model=pic %s | \ # RUN: llvm-readobj -s -sr -sd | FileCheck %s -check-prefix=PIC -check-prefix=PIC-LE +_proc: .cfi_startproc nop .cfi_endproc |