Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH] gdb/testsuite: fix dw2-entry-pc.exp with ASLR
@ 2026-04-14 16:48 Bratislav Filipovic
  2026-04-14 18:08 ` Simon Marchi
  0 siblings, 1 reply; 3+ messages in thread
From: Bratislav Filipovic @ 2026-04-14 16:48 UTC (permalink / raw)
  To: gdb-patches; +Cc: Bratislav Filipovic

Following Simon Marchi's fix for dw2-empty-inline-ranges.exp [1], this
test exhibits the same failure pattern when running in an environment
where GDB can't disable address space randomization (such as in a
container where that capability is removed) with a toolchain generating
position-independent executables.

The test does a first run to grab addresses of labels and function
boundaries (foo_middle, foo_start, foo_end, and range labels).  It then
crafts DWARF using these addresses across multiple test iterations.
When the executable is PIE and ASLR is active, the addresses in each
subsequent run don't match the addresses from the initial run.

The failure manifests in the 'maint info blocks' output comparisons,
where the expected addresses (from the first run) don't match the
actual addresses in the test runs.

The simplest fix, following Simon's approach, is to use "nopie" when
building the binaries.  This doesn't affect the effectiveness of the
test, which is exercising different ways DW_AT_entry_pc can be
expressed in DWARF.

Also, with a non-PIE executable, it is no longer necessary to run the
inferior before grabbing the addresses in the initial run, as they are
stable.  So remove that runto_main call.

[1] https://inbox.sourceware.org/gdb-patches/20260205204257.422150-1-simon.marchi@efficios.com/
---
 gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp b/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
index 441aa0fde1d..f7cc7f7c067 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
@@ -28,11 +28,7 @@ standard_testfile
 get_func_info foo
 
 if { [prepare_for_testing "failed to prepare" ${testfile} \
-	  [list ${srcfile}]] } {
-    return -1
-}
-
-if {![runto_main]} {
+	  [list ${srcfile}] {debug nopie}]} {
     return -1
 }
 
@@ -83,7 +79,7 @@ proc get_next_suffix {} {
 
 proc build_and_runto_main { suffix asm_file } {
     if {[prepare_for_testing "failed to prepare" "${::testfile}-${suffix}" \
-	     [list $::srcfile $asm_file] {nodebug}]} {
+	     [list $::srcfile $asm_file] {nodebug nopie}]} {
 	return false
     }
 
-- 
2.43.0


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

* Re: [PATCH] gdb/testsuite: fix dw2-entry-pc.exp with ASLR
  2026-04-14 16:48 [PATCH] gdb/testsuite: fix dw2-entry-pc.exp with ASLR Bratislav Filipovic
@ 2026-04-14 18:08 ` Simon Marchi
  2026-04-15 10:32   ` Filipovic, Bratislav
  0 siblings, 1 reply; 3+ messages in thread
From: Simon Marchi @ 2026-04-14 18:08 UTC (permalink / raw)
  To: Bratislav Filipovic, gdb-patches



On 2026-04-14 12:48, Bratislav Filipovic wrote:
> Following Simon Marchi's fix for dw2-empty-inline-ranges.exp [1], this
> test exhibits the same failure pattern when running in an environment
> where GDB can't disable address space randomization (such as in a
> container where that capability is removed) with a toolchain generating
> position-independent executables.
> 
> The test does a first run to grab addresses of labels and function
> boundaries (foo_middle, foo_start, foo_end, and range labels).  It then
> crafts DWARF using these addresses across multiple test iterations.
> When the executable is PIE and ASLR is active, the addresses in each
> subsequent run don't match the addresses from the initial run.
> 
> The failure manifests in the 'maint info blocks' output comparisons,
> where the expected addresses (from the first run) don't match the
> actual addresses in the test runs.
> 
> The simplest fix, following Simon's approach, is to use "nopie" when
> building the binaries.  This doesn't affect the effectiveness of the
> test, which is exercising different ways DW_AT_entry_pc can be
> expressed in DWARF.
> 
> Also, with a non-PIE executable, it is no longer necessary to run the
> inferior before grabbing the addresses in the initial run, as they are
> stable.  So remove that runto_main call.
> 
> [1] https://inbox.sourceware.org/gdb-patches/20260205204257.422150-1-simon.marchi@efficios.com/
> ---
>  gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp b/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
> index 441aa0fde1d..f7cc7f7c067 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
> @@ -28,11 +28,7 @@ standard_testfile
>  get_func_info foo
>  
>  if { [prepare_for_testing "failed to prepare" ${testfile} \
> -	  [list ${srcfile}]] } {
> -    return -1
> -}
> -
> -if {![runto_main]} {
> +	  [list ${srcfile}] {debug nopie}]} {
>      return -1
>  }
>  
> @@ -83,7 +79,7 @@ proc get_next_suffix {} {
>  
>  proc build_and_runto_main { suffix asm_file } {
>      if {[prepare_for_testing "failed to prepare" "${::testfile}-${suffix}" \
> -	     [list $::srcfile $asm_file] {nodebug}]} {
> +	     [list $::srcfile $asm_file] {nodebug nopie}]} {
>  	return false
>      }
>  

Thanks, LGTM.

Approved-By: Simon Marchi <simon.marchi@efficios.com>

Simon

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

* RE: [PATCH] gdb/testsuite: fix dw2-entry-pc.exp with ASLR
  2026-04-14 18:08 ` Simon Marchi
@ 2026-04-15 10:32   ` Filipovic, Bratislav
  0 siblings, 0 replies; 3+ messages in thread
From: Filipovic, Bratislav @ 2026-04-15 10:32 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

[AMD Official Use Only - AMD Internal Distribution Only]

Thanks Simon. Merged it.

Regards, Bratislav

-----Original Message-----
From: Simon Marchi <simark@simark.ca>
Sent: Tuesday, April 14, 2026 8:09 PM
To: Filipovic, Bratislav <Bratislav.Filipovic@amd.com>; gdb-patches@sourceware.org
Subject: Re: [PATCH] gdb/testsuite: fix dw2-entry-pc.exp with ASLR

[You don't often get email from simark@simark.ca. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]

Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.


On 2026-04-14 12:48, Bratislav Filipovic wrote:
> Following Simon Marchi's fix for dw2-empty-inline-ranges.exp [1], this
> test exhibits the same failure pattern when running in an environment
> where GDB can't disable address space randomization (such as in a
> container where that capability is removed) with a toolchain
> generating position-independent executables.
>
> The test does a first run to grab addresses of labels and function
> boundaries (foo_middle, foo_start, foo_end, and range labels).  It
> then crafts DWARF using these addresses across multiple test iterations.
> When the executable is PIE and ASLR is active, the addresses in each
> subsequent run don't match the addresses from the initial run.
>
> The failure manifests in the 'maint info blocks' output comparisons,
> where the expected addresses (from the first run) don't match the
> actual addresses in the test runs.
>
> The simplest fix, following Simon's approach, is to use "nopie" when
> building the binaries.  This doesn't affect the effectiveness of the
> test, which is exercising different ways DW_AT_entry_pc can be
> expressed in DWARF.
>
> Also, with a non-PIE executable, it is no longer necessary to run the
> inferior before grabbing the addresses in the initial run, as they are
> stable.  So remove that runto_main call.
>
> [1]
> https://inbox.sourceware.org/gdb-patches/20260205204257.422150-1-simon
> .marchi@efficios.com/
> ---
>  gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
> b/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
> index 441aa0fde1d..f7cc7f7c067 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-entry-pc.exp
> @@ -28,11 +28,7 @@ standard_testfile
>  get_func_info foo
>
>  if { [prepare_for_testing "failed to prepare" ${testfile} \
> -       [list ${srcfile}]] } {
> -    return -1
> -}
> -
> -if {![runto_main]} {
> +       [list ${srcfile}] {debug nopie}]} {
>      return -1
>  }
>
> @@ -83,7 +79,7 @@ proc get_next_suffix {} {
>
>  proc build_and_runto_main { suffix asm_file } {
>      if {[prepare_for_testing "failed to prepare" "${::testfile}-${suffix}" \
> -          [list $::srcfile $asm_file] {nodebug}]} {
> +          [list $::srcfile $asm_file] {nodebug nopie}]} {
>       return false
>      }
>

Thanks, LGTM.

Approved-By: Simon Marchi <simon.marchi@efficios.com>

Simon

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

end of thread, other threads:[~2026-04-15 10:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-04-14 16:48 [PATCH] gdb/testsuite: fix dw2-entry-pc.exp with ASLR Bratislav Filipovic
2026-04-14 18:08 ` Simon Marchi
2026-04-15 10:32   ` Filipovic, Bratislav

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox