1094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %clangxx %s -g -fexceptions %extra-clang-opts -o %t
2094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// RUN: %Test_jit_debuginfo %s %t
3094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: set verbose on
4094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: run
5094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// DEBUGGER: bt 2
6094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: function_with_a_segfault
7094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea// CHECK: some_function
8094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
9094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastatic int function_with_a_segfault() {
10094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  int* bla = 0;
11094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  *bla = 5;
12094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return 0;
13094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
14094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
15094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastatic int some_function() {
16094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return function_with_a_segfault();
17094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
18094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
19094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastatic int foo() {
20094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return some_function();
21094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
22094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
23094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleastatic int bar() {
24094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return foo();
25094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
26094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea
27094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Maleaint main() {
28094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea  return bar();
29094881f513ab366f7ffd0b2c7778ab50281ca59eDaniel Malea}
30