machinst x64: New backend unwind (#2266)

Addresses unwind for experimental x64 backend. The preliminary code enables backtrace on SystemV call convension.
This commit is contained in:
Yury Delendik
2020-10-23 15:19:41 -05:00
committed by GitHub
parent 2702942050
commit de4af90af6
25 changed files with 554 additions and 29 deletions

View File

@@ -32,7 +32,7 @@ fn test_trap_return() -> Result<()> {
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn test_trap_trace() -> Result<()> {
let store = Store::default();
let wat = r#"
@@ -75,7 +75,7 @@ fn test_trap_trace() -> Result<()> {
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn test_trap_trace_cb() -> Result<()> {
let store = Store::default();
let wat = r#"
@@ -112,7 +112,7 @@ fn test_trap_trace_cb() -> Result<()> {
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn test_trap_stack_overflow() -> Result<()> {
let store = Store::default();
let wat = r#"
@@ -145,7 +145,7 @@ fn test_trap_stack_overflow() -> Result<()> {
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn trap_display_pretty() -> Result<()> {
let store = Store::default();
let wat = r#"
@@ -178,7 +178,7 @@ wasm backtrace:
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn trap_display_multi_module() -> Result<()> {
let store = Store::default();
let wat = r#"
@@ -224,7 +224,7 @@ wasm backtrace:
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn trap_start_function_import() -> Result<()> {
let store = Store::default();
let binary = wat::parse_str(
@@ -252,7 +252,7 @@ fn trap_start_function_import() -> Result<()> {
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn rust_panic_import() -> Result<()> {
let store = Store::default();
let binary = wat::parse_str(
@@ -298,7 +298,7 @@ fn rust_panic_import() -> Result<()> {
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn rust_panic_start_function() -> Result<()> {
let store = Store::default();
let binary = wat::parse_str(
@@ -333,7 +333,7 @@ fn rust_panic_start_function() -> Result<()> {
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn mismatched_arguments() -> Result<()> {
let store = Store::default();
let binary = wat::parse_str(
@@ -366,7 +366,7 @@ fn mismatched_arguments() -> Result<()> {
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn call_signature_mismatch() -> Result<()> {
let store = Store::default();
let binary = wat::parse_str(
@@ -398,7 +398,7 @@ fn call_signature_mismatch() -> Result<()> {
#[test]
#[cfg_attr(target_arch = "aarch64", ignore)] // FIXME(#1642)
#[cfg_attr(feature = "experimental_x64", ignore)] // FIXME(#2078)
#[cfg_attr(all(target_os = "windows", feature = "experimental_x64"), ignore)] // FIXME(#2079)
fn start_trap_pretty() -> Result<()> {
let store = Store::default();
let wat = r#"