mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-20 19:01:12 +08:00
gccrs: Add Debug info testsuite
This testsuite is specifically about testcases which scan the asm debug info for results. gcc/testsuite/ * rust/debug/chartype.rs: New. * rust/debug/custom_link_section.rs: New. * rust/debug/debug.exp: New. * rust/debug/i8u8.rs: New. * rust/debug/lang.rs: New. * rust/debug/no_mangle.rs: New. * rust/debug/oldlang.rs: New. * rust/debug/tuple.rs: New. * rust/debug/win64-abi.rs: New. Co-authored-by: Tom Tromey <tom@tromey.com> Co-authored-by: Mark Wielaard <mark@klomp.org> Co-authored-by: Marc Poulhiès <dkm@kataplop.net>
This commit is contained in:
parent
b772a504ef
commit
4b8f3005af
10
gcc/testsuite/rust/debug/chartype.rs
Normal file
10
gcc/testsuite/rust/debug/chartype.rs
Normal file
@ -0,0 +1,10 @@
|
||||
// 'char' should use DW_ATE_UTF
|
||||
fn main () {
|
||||
let c = 'x';
|
||||
// { dg-do compile }
|
||||
// Use -w to avoid warnings about the unused variables
|
||||
// DW_ATE_UTF entered in DWARF 4.
|
||||
// { dg-options "-w -gdwarf-4 -dA" }
|
||||
// DW_ATE_UTF = 0x10
|
||||
// { dg-final { scan-assembler "0x10\[ \t]\[^\n\r]* DW_AT_encoding" } } */
|
||||
}
|
13
gcc/testsuite/rust/debug/custom_link_section.rs
Normal file
13
gcc/testsuite/rust/debug/custom_link_section.rs
Normal file
@ -0,0 +1,13 @@
|
||||
#[link_section = ".universe"]
|
||||
fn not_in_text() -> i32 {
|
||||
42
|
||||
}
|
||||
|
||||
fn main() -> i32 {
|
||||
// { dg-do compile }
|
||||
// { dg-options "-gdwarf-5 -dA -w" }
|
||||
not_in_text();
|
||||
// { dg-final { scan-assembler ".universe" } } */
|
||||
|
||||
0
|
||||
}
|
33
gcc/testsuite/rust/debug/debug.exp
Normal file
33
gcc/testsuite/rust/debug/debug.exp
Normal file
@ -0,0 +1,33 @@
|
||||
# Copyright (C) 2021-2022 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GCC; see the file COPYING3. If not see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Debugging tests.
|
||||
|
||||
# Load support procs.
|
||||
load_lib rust-dg.exp
|
||||
|
||||
# Initialize `dg'.
|
||||
dg-init
|
||||
|
||||
# Main loop.
|
||||
set saved-dg-do-what-default ${dg-do-what-default}
|
||||
|
||||
set dg-do-what-default "compile"
|
||||
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.rs]] "" ""
|
||||
set dg-do-what-default ${saved-dg-do-what-default}
|
||||
|
||||
# All done.
|
||||
dg-finish
|
12
gcc/testsuite/rust/debug/i8u8.rs
Normal file
12
gcc/testsuite/rust/debug/i8u8.rs
Normal file
@ -0,0 +1,12 @@
|
||||
// i8 and u8 types should not have the DWARF 'char' encoding.
|
||||
fn main () {
|
||||
let x : i8 = 5;
|
||||
let y : u8 = 7;
|
||||
// { dg-do compile }
|
||||
// Use -w to avoid warnings about the unused variables
|
||||
// { dg-options "-w -g -dA" }
|
||||
// DW_ATE_signed_char = 6
|
||||
// { dg-final { scan-assembler-not "0x6\[ \t]\[^\n\r]* DW_AT_encoding" } } */
|
||||
// DW_ATE_unsigned_char = 8
|
||||
// { dg-final { scan-assembler-not "0x8\[ \t]\[^\n\r]* DW_AT_encoding" } } */
|
||||
}
|
6
gcc/testsuite/rust/debug/lang.rs
Normal file
6
gcc/testsuite/rust/debug/lang.rs
Normal file
@ -0,0 +1,6 @@
|
||||
fn main () {
|
||||
// { dg-do compile }
|
||||
// { dg-options "-gdwarf-5 -dA" }
|
||||
// DW_LANG_Rust is 0x1c
|
||||
// { dg-final { scan-assembler "0x1c\[ \t]\[^\n\r]* DW_AT_language" } } */
|
||||
}
|
17
gcc/testsuite/rust/debug/no_mangle.rs
Normal file
17
gcc/testsuite/rust/debug/no_mangle.rs
Normal file
@ -0,0 +1,17 @@
|
||||
#[no_mangle]
|
||||
fn do_not_mangle() -> i32 {
|
||||
0
|
||||
}
|
||||
|
||||
fn please_mangle() {}
|
||||
|
||||
fn main() {
|
||||
// { dg-do compile }
|
||||
// { dg-options "-gdwarf-5 -dA" }
|
||||
let _ = do_not_mangle();
|
||||
please_mangle();
|
||||
// look for unmangled function name:
|
||||
// { dg-final { scan-assembler "do_not_mangle:" } } */
|
||||
// look for legacy mangled function name:
|
||||
// { dg-final { scan-assembler "13please_mangle" } } */
|
||||
}
|
6
gcc/testsuite/rust/debug/oldlang.rs
Normal file
6
gcc/testsuite/rust/debug/oldlang.rs
Normal file
@ -0,0 +1,6 @@
|
||||
fn main () {
|
||||
// { dg-do compile }
|
||||
// { dg-options "-gstrict-dwarf -gdwarf-3 -dA" }
|
||||
// Strict DWARF < 5 uses DW_LANG_C = 0x0002
|
||||
// { dg-final { scan-assembler "0x2\[ \t]\[^\n\r]* DW_AT_language" } } */
|
||||
}
|
8
gcc/testsuite/rust/debug/tuple.rs
Normal file
8
gcc/testsuite/rust/debug/tuple.rs
Normal file
@ -0,0 +1,8 @@
|
||||
fn main () {
|
||||
// { dg-do compile }
|
||||
// { dg-options "-gdwarf-5 -dA -w" }
|
||||
let x = (32, 32);
|
||||
// Look for field __0 and __1
|
||||
// { dg-final { scan-assembler "__0" } } */
|
||||
// { dg-final { scan-assembler "__1" } } */
|
||||
}
|
11
gcc/testsuite/rust/debug/win64-abi.rs
Normal file
11
gcc/testsuite/rust/debug/win64-abi.rs
Normal file
@ -0,0 +1,11 @@
|
||||
// { dg-do compile { target { x86_64-*-* } } }
|
||||
// { dg-options "-gdwarf-5 -dA -w -O1 -m64" }
|
||||
pub extern "win64" fn square(num: i32) -> i32 {
|
||||
num * num
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// MS ABI dictates that the first argument is ecx instead of edi from the sysv world
|
||||
// { dg-final { scan-assembler "%ecx, %ecx" } }
|
||||
square(1);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user