builtin: support '-d no_backtrace' directly in panic(), to ease creating .so files with tcc
							parent
							
								
									bfa8e4bf86
								
							
						
					
					
						commit
						0da1d757cb
					
				| 
						 | 
				
			
			@ -54,20 +54,25 @@ fn panic_debug(line_no int, file string, mod string, fn_name string, s string) {
 | 
			
		|||
	eprintln('=========================================')
 | 
			
		||||
	$if exit_after_panic_message ? {
 | 
			
		||||
		C.exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	$if tinyc {
 | 
			
		||||
		$if panics_break_into_debugger ? {
 | 
			
		||||
			break_if_debugger_attached()
 | 
			
		||||
	} $else {
 | 
			
		||||
		$if no_backtrace ? {
 | 
			
		||||
			C.exit(1)
 | 
			
		||||
		} $else {
 | 
			
		||||
			C.tcc_backtrace('Backtrace')
 | 
			
		||||
			$if tinyc {
 | 
			
		||||
				$if panics_break_into_debugger ? {
 | 
			
		||||
					break_if_debugger_attached()
 | 
			
		||||
				} $else {
 | 
			
		||||
					C.tcc_backtrace('Backtrace')
 | 
			
		||||
				}
 | 
			
		||||
				C.exit(1)
 | 
			
		||||
			}
 | 
			
		||||
			print_backtrace_skipping_top_frames(1)
 | 
			
		||||
			$if panics_break_into_debugger ? {
 | 
			
		||||
				break_if_debugger_attached()
 | 
			
		||||
			}
 | 
			
		||||
			C.exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		C.exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	print_backtrace_skipping_top_frames(1)
 | 
			
		||||
	$if panics_break_into_debugger ? {
 | 
			
		||||
		break_if_debugger_attached()
 | 
			
		||||
	}
 | 
			
		||||
	C.exit(1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// panic prints a nice error message, then exits the process with exit code of 1.
 | 
			
		||||
| 
						 | 
				
			
			@ -76,20 +81,25 @@ pub fn panic(s string) {
 | 
			
		|||
	eprintln('V panic: $s')
 | 
			
		||||
	$if exit_after_panic_message ? {
 | 
			
		||||
		C.exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	$if tinyc {
 | 
			
		||||
		$if panics_break_into_debugger ? {
 | 
			
		||||
			break_if_debugger_attached()
 | 
			
		||||
	} $else {
 | 
			
		||||
		$if no_backtrace ? {
 | 
			
		||||
			C.exit(1)
 | 
			
		||||
		} $else {
 | 
			
		||||
			C.tcc_backtrace('Backtrace')
 | 
			
		||||
			$if tinyc {
 | 
			
		||||
				$if panics_break_into_debugger ? {
 | 
			
		||||
					break_if_debugger_attached()
 | 
			
		||||
				} $else {
 | 
			
		||||
					C.tcc_backtrace('Backtrace')
 | 
			
		||||
				}
 | 
			
		||||
				C.exit(1)
 | 
			
		||||
			}
 | 
			
		||||
			print_backtrace_skipping_top_frames(1)
 | 
			
		||||
			$if panics_break_into_debugger ? {
 | 
			
		||||
				break_if_debugger_attached()
 | 
			
		||||
			}
 | 
			
		||||
			C.exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		C.exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	print_backtrace_skipping_top_frames(1)
 | 
			
		||||
	$if panics_break_into_debugger ? {
 | 
			
		||||
		break_if_debugger_attached()
 | 
			
		||||
	}
 | 
			
		||||
	C.exit(1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// eprintln prints a message with a line end, to stderr. Both stderr and stdout are flushed.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue