public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] gdb/testsuite: Test for a backtrace through object without debuginfo
@ 2023-12-13 13:16 Guinevere Larsen
  2023-12-13 13:18 ` Guinevere Larsen
  2023-12-18 16:47 ` Guinevere Larsen
  0 siblings, 2 replies; 3+ messages in thread
From: Guinevere Larsen @ 2023-12-13 13:16 UTC (permalink / raw)
  To: gdb-patches; +Cc: Fedora GDB patches

From: Fedora GDB patches <invalid@email.com>

Fedora has been carrying this test since back in the Project Archer
days. A change back then caused GDB to stop being able to backtrace when
only some of the object files had debug information. Even though the
changed code never seems to have made its way into the main GDB project,
I think it makes sense to bring the test along to ensure something like
this doesn't pass unnoticed.
---
 .../backtrace-through-cu-nodebug-caller.c     | 28 ++++++
 .../backtrace-through-cu-nodebug-main.c       | 32 +++++++
 .../gdb.base/backtrace-through-cu-nodebug.exp | 89 +++++++++++++++++++
 3 files changed, 149 insertions(+)
 create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c
 create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c
 create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp

diff --git a/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c
new file mode 100644
index 00000000000..a33f86d1ece
--- /dev/null
+++ b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c
@@ -0,0 +1,28 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2005-2023 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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+typedef int (*callback_t) (void);
+
+int
+caller (callback_t callback)
+{
+  /* Ensure some frame content to push away the return address.  */
+  volatile const long one = 1;
+
+  /* Modify the return value to prevent any tail-call optimization.  */
+  return (*callback) () - one;
+}
diff --git a/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c
new file mode 100644
index 00000000000..f958c0200c7
--- /dev/null
+++ b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c
@@ -0,0 +1,32 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2005-2023 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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+typedef int (*callback_t) (void);
+
+extern int caller (callback_t callback);
+
+int
+callback (void)
+{
+  return 1;
+}
+
+int
+main (void)
+{
+  return caller (callback);
+}
diff --git a/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp
new file mode 100644
index 00000000000..9b5ec3af428
--- /dev/null
+++ b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp
@@ -0,0 +1,89 @@
+# Copyright 2010-2023 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test that GDB can generate accurate backtraces even if some of the stack
+# trace goes through a function with no debug information.
+
+standard_testfile -caller.c -main.c
+set objmainfile ${testfile}-main.o
+set objcallerfile ${testfile}-caller.o
+
+# recompile the inferior with or without CFI information, then run the
+# inferior until the point where the important test starts
+# returns TRUE on an ERROR.
+proc prepare_test {has_cfi} {
+    global srcdir subdir srcfile srcfile2 objmainfile objcallerfile binfile
+    if {$has_cfi} {
+	if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" ${objcallerfile} \
+	     object [list {additional_flags=-fomit-frame-pointer \
+		 -funwind-tables -fasynchronous-unwind-tables}]] != "" } {
+	    untested "couldn't compile without cfi"
+	    return true
+      }
+    } else {
+	if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" ${objcallerfile} \
+	     object [list {additional_flags=-fomit-frame-pointer \
+		 -fno-unwind-tables \
+		 -fno-asynchronous-unwind-tables}]] != "" } {
+	    untested "couldn't compile with cfi"
+	    return true
+      }
+    }
+    if {[gdb_compile "${objmainfile} ${objcallerfile}" ${binfile} \
+	    binfile {}] != ""} {
+	untested "couldn't link object files"
+	return true
+    }
+
+    clean_restart $binfile
+
+    if ![runto callback] then {
+       fail "$has_cfi: Can't run to callback"
+       return 0
+    }
+    return false
+}
+
+if {[gdb_compile "${srcdir}/${subdir}/${srcfile2}" ${objmainfile} \
+	object {debug}] != "" } {
+    untested "couldn't compile main file"
+    return
+}
+
+if { [prepare_test false] } {
+     untested ${testfile}.exp
+} else {
+    gdb_test_multiple "bt" "verify unwinding breaks without CFI" {
+	-re -wrap " in \[?\]\[?\] .*" {
+	    # It may backtrace through some random frames even to main().
+	    pass $gdb_test_name
+	}
+	-re -wrap " in main .*" {
+	    fail $gdb_test_name
+	}
+    }
+}
+
+if { [prepare_test true] } {
+     untested ${testfile}.exp
+} else {
+
+    # #0  callback () at ...
+    # #1  0x00000000004004e9 in caller ()
+    # #2  0x00000000004004cd in main () at ...
+    gdb_test "bt" \
+	"#0 +callback \[^\r\n\]+\r\n#1 \[^\r\n\]+ in caller \[^\r\n\]+\r\n#2 \[^\r\n\]+ in main \[^\r\n\]+" \
+	"verify unwindin works for CFI without DIEs"
+}
-- 
2.42.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] gdb/testsuite: Test for a backtrace through object without debuginfo
  2023-12-13 13:16 [PATCH] gdb/testsuite: Test for a backtrace through object without debuginfo Guinevere Larsen
@ 2023-12-13 13:18 ` Guinevere Larsen
  2023-12-18 16:47 ` Guinevere Larsen
  1 sibling, 0 replies; 3+ messages in thread
From: Guinevere Larsen @ 2023-12-13 13:18 UTC (permalink / raw)
  To: gdb-patches; +Cc: Guinevere Larsen

On 13/12/2023 14:16, Guinevere Larsen wrote:
> From: Fedora GDB patches <invalid@email.com>

Oops, I didn't realize I forgot to change the author of the commit. I'll 
update this locally.

-- 
Cheers,
Guinevere Larsen
She/Her/Hers

>
> Fedora has been carrying this test since back in the Project Archer
> days. A change back then caused GDB to stop being able to backtrace when
> only some of the object files had debug information. Even though the
> changed code never seems to have made its way into the main GDB project,
> I think it makes sense to bring the test along to ensure something like
> this doesn't pass unnoticed.
> ---
>   .../backtrace-through-cu-nodebug-caller.c     | 28 ++++++
>   .../backtrace-through-cu-nodebug-main.c       | 32 +++++++
>   .../gdb.base/backtrace-through-cu-nodebug.exp | 89 +++++++++++++++++++
>   3 files changed, 149 insertions(+)
>   create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c
>   create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c
>   create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp
>
> diff --git a/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c
> new file mode 100644
> index 00000000000..a33f86d1ece
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c
> @@ -0,0 +1,28 @@
> +/* This testcase is part of GDB, the GNU debugger.
> +
> +   Copyright 2005-2023 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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
> +
> +typedef int (*callback_t) (void);
> +
> +int
> +caller (callback_t callback)
> +{
> +  /* Ensure some frame content to push away the return address.  */
> +  volatile const long one = 1;
> +
> +  /* Modify the return value to prevent any tail-call optimization.  */
> +  return (*callback) () - one;
> +}
> diff --git a/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c
> new file mode 100644
> index 00000000000..f958c0200c7
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c
> @@ -0,0 +1,32 @@
> +/* This testcase is part of GDB, the GNU debugger.
> +
> +   Copyright 2005-2023 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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
> +
> +typedef int (*callback_t) (void);
> +
> +extern int caller (callback_t callback);
> +
> +int
> +callback (void)
> +{
> +  return 1;
> +}
> +
> +int
> +main (void)
> +{
> +  return caller (callback);
> +}
> diff --git a/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp
> new file mode 100644
> index 00000000000..9b5ec3af428
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp
> @@ -0,0 +1,89 @@
> +# Copyright 2010-2023 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 this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +# Test that GDB can generate accurate backtraces even if some of the stack
> +# trace goes through a function with no debug information.
> +
> +standard_testfile -caller.c -main.c
> +set objmainfile ${testfile}-main.o
> +set objcallerfile ${testfile}-caller.o
> +
> +# recompile the inferior with or without CFI information, then run the
> +# inferior until the point where the important test starts
> +# returns TRUE on an ERROR.
> +proc prepare_test {has_cfi} {
> +    global srcdir subdir srcfile srcfile2 objmainfile objcallerfile binfile
> +    if {$has_cfi} {
> +	if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" ${objcallerfile} \
> +	     object [list {additional_flags=-fomit-frame-pointer \
> +		 -funwind-tables -fasynchronous-unwind-tables}]] != "" } {
> +	    untested "couldn't compile without cfi"
> +	    return true
> +      }
> +    } else {
> +	if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" ${objcallerfile} \
> +	     object [list {additional_flags=-fomit-frame-pointer \
> +		 -fno-unwind-tables \
> +		 -fno-asynchronous-unwind-tables}]] != "" } {
> +	    untested "couldn't compile with cfi"
> +	    return true
> +      }
> +    }
> +    if {[gdb_compile "${objmainfile} ${objcallerfile}" ${binfile} \
> +	    binfile {}] != ""} {
> +	untested "couldn't link object files"
> +	return true
> +    }
> +
> +    clean_restart $binfile
> +
> +    if ![runto callback] then {
> +       fail "$has_cfi: Can't run to callback"
> +       return 0
> +    }
> +    return false
> +}
> +
> +if {[gdb_compile "${srcdir}/${subdir}/${srcfile2}" ${objmainfile} \
> +	object {debug}] != "" } {
> +    untested "couldn't compile main file"
> +    return
> +}
> +
> +if { [prepare_test false] } {
> +     untested ${testfile}.exp
> +} else {
> +    gdb_test_multiple "bt" "verify unwinding breaks without CFI" {
> +	-re -wrap " in \[?\]\[?\] .*" {
> +	    # It may backtrace through some random frames even to main().
> +	    pass $gdb_test_name
> +	}
> +	-re -wrap " in main .*" {
> +	    fail $gdb_test_name
> +	}
> +    }
> +}
> +
> +if { [prepare_test true] } {
> +     untested ${testfile}.exp
> +} else {
> +
> +    # #0  callback () at ...
> +    # #1  0x00000000004004e9 in caller ()
> +    # #2  0x00000000004004cd in main () at ...
> +    gdb_test "bt" \
> +	"#0 +callback \[^\r\n\]+\r\n#1 \[^\r\n\]+ in caller \[^\r\n\]+\r\n#2 \[^\r\n\]+ in main \[^\r\n\]+" \
> +	"verify unwindin works for CFI without DIEs"
> +}



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] gdb/testsuite: Test for a backtrace through object without debuginfo
  2023-12-13 13:16 [PATCH] gdb/testsuite: Test for a backtrace through object without debuginfo Guinevere Larsen
  2023-12-13 13:18 ` Guinevere Larsen
@ 2023-12-18 16:47 ` Guinevere Larsen
  1 sibling, 0 replies; 3+ messages in thread
From: Guinevere Larsen @ 2023-12-18 16:47 UTC (permalink / raw)
  To: gdb-patches

I've spoken to Andrew about a Linaro CI failure with this test (thanks 
Linaro!) and it seems I misunderstood the intent and workings of this 
test. I'll work on a v2 based on this new understanding, but it will 
take a while to be ready. In the meantime, feel free to ignore this 
patch, sorry for the noise.

-- 
Cheers,
Guinevere Larsen
She/Her/Hers

On 13/12/2023 14:16, Guinevere Larsen wrote:
> From: Fedora GDB patches <invalid@email.com>
>
> Fedora has been carrying this test since back in the Project Archer
> days. A change back then caused GDB to stop being able to backtrace when
> only some of the object files had debug information. Even though the
> changed code never seems to have made its way into the main GDB project,
> I think it makes sense to bring the test along to ensure something like
> this doesn't pass unnoticed.
> ---
>   .../backtrace-through-cu-nodebug-caller.c     | 28 ++++++
>   .../backtrace-through-cu-nodebug-main.c       | 32 +++++++
>   .../gdb.base/backtrace-through-cu-nodebug.exp | 89 +++++++++++++++++++
>   3 files changed, 149 insertions(+)
>   create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c
>   create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c
>   create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp
>
> diff --git a/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c
> new file mode 100644
> index 00000000000..a33f86d1ece
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c
> @@ -0,0 +1,28 @@
> +/* This testcase is part of GDB, the GNU debugger.
> +
> +   Copyright 2005-2023 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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
> +
> +typedef int (*callback_t) (void);
> +
> +int
> +caller (callback_t callback)
> +{
> +  /* Ensure some frame content to push away the return address.  */
> +  volatile const long one = 1;
> +
> +  /* Modify the return value to prevent any tail-call optimization.  */
> +  return (*callback) () - one;
> +}
> diff --git a/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c
> new file mode 100644
> index 00000000000..f958c0200c7
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c
> @@ -0,0 +1,32 @@
> +/* This testcase is part of GDB, the GNU debugger.
> +
> +   Copyright 2005-2023 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 this program.  If not, see <http://www.gnu.org/licenses/>.  */
> +
> +typedef int (*callback_t) (void);
> +
> +extern int caller (callback_t callback);
> +
> +int
> +callback (void)
> +{
> +  return 1;
> +}
> +
> +int
> +main (void)
> +{
> +  return caller (callback);
> +}
> diff --git a/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp
> new file mode 100644
> index 00000000000..9b5ec3af428
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp
> @@ -0,0 +1,89 @@
> +# Copyright 2010-2023 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 this program.  If not, see <http://www.gnu.org/licenses/>.
> +
> +# Test that GDB can generate accurate backtraces even if some of the stack
> +# trace goes through a function with no debug information.
> +
> +standard_testfile -caller.c -main.c
> +set objmainfile ${testfile}-main.o
> +set objcallerfile ${testfile}-caller.o
> +
> +# recompile the inferior with or without CFI information, then run the
> +# inferior until the point where the important test starts
> +# returns TRUE on an ERROR.
> +proc prepare_test {has_cfi} {
> +    global srcdir subdir srcfile srcfile2 objmainfile objcallerfile binfile
> +    if {$has_cfi} {
> +	if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" ${objcallerfile} \
> +	     object [list {additional_flags=-fomit-frame-pointer \
> +		 -funwind-tables -fasynchronous-unwind-tables}]] != "" } {
> +	    untested "couldn't compile without cfi"
> +	    return true
> +      }
> +    } else {
> +	if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" ${objcallerfile} \
> +	     object [list {additional_flags=-fomit-frame-pointer \
> +		 -fno-unwind-tables \
> +		 -fno-asynchronous-unwind-tables}]] != "" } {
> +	    untested "couldn't compile with cfi"
> +	    return true
> +      }
> +    }
> +    if {[gdb_compile "${objmainfile} ${objcallerfile}" ${binfile} \
> +	    binfile {}] != ""} {
> +	untested "couldn't link object files"
> +	return true
> +    }
> +
> +    clean_restart $binfile
> +
> +    if ![runto callback] then {
> +       fail "$has_cfi: Can't run to callback"
> +       return 0
> +    }
> +    return false
> +}
> +
> +if {[gdb_compile "${srcdir}/${subdir}/${srcfile2}" ${objmainfile} \
> +	object {debug}] != "" } {
> +    untested "couldn't compile main file"
> +    return
> +}
> +
> +if { [prepare_test false] } {
> +     untested ${testfile}.exp
> +} else {
> +    gdb_test_multiple "bt" "verify unwinding breaks without CFI" {
> +	-re -wrap " in \[?\]\[?\] .*" {
> +	    # It may backtrace through some random frames even to main().
> +	    pass $gdb_test_name
> +	}
> +	-re -wrap " in main .*" {
> +	    fail $gdb_test_name
> +	}
> +    }
> +}
> +
> +if { [prepare_test true] } {
> +     untested ${testfile}.exp
> +} else {
> +
> +    # #0  callback () at ...
> +    # #1  0x00000000004004e9 in caller ()
> +    # #2  0x00000000004004cd in main () at ...
> +    gdb_test "bt" \
> +	"#0 +callback \[^\r\n\]+\r\n#1 \[^\r\n\]+ in caller \[^\r\n\]+\r\n#2 \[^\r\n\]+ in main \[^\r\n\]+" \
> +	"verify unwindin works for CFI without DIEs"
> +}


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-12-18 16:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-13 13:16 [PATCH] gdb/testsuite: Test for a backtrace through object without debuginfo Guinevere Larsen
2023-12-13 13:18 ` Guinevere Larsen
2023-12-18 16:47 ` Guinevere Larsen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).