Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom de Vries <tdevries@suse.de>
To: gdb-patches@sourceware.org
Subject: Re: [RFC 2/5] [gdb/testsuite] Make lib/gdb.exp emacs indent compatible
Date: Mon, 28 Sep 2026 15:37:49 +0200	[thread overview]
Message-ID: <0275d14a-d063-4310-92da-d5d8ac728169@suse.de> (raw)
In-Reply-To: <20260904093858.359604-2-tdevries@suse.de>

On 9/4/26 11:38 AM, Tom de Vries wrote:
> There are cases in gdb/testsuite/lib/gdb.exp where we have inline C sources.
> 
> Say we start out by writing something like this:
> ...
> set src {
>    int main (int argc) {
>      if (argc == 3)
>        return 0;
>    }
> }
> ...
> 
> When editing with emacs, and using tcl-mode, auto indent will change this to:
> ...
> set src {
>      int main (int argc) {
> 	if (argc == 3)
> 	return 0;
>      }
> }
> ...
> 
> The 2 vs 4 spacing is fine, but removing indentation is not.  We can fix this
> by adding braces:
> ...
> set src {
>      int main (int argc) {
> 	if (argc == 3) {
> 	    return 0;
> 	}
>      }
> }
> ...
> 
> But that approach breaks down when we have a for loop.  Auto indent gives us:
> ...
> set src {
>      int main (int argc) {
> 	for (int i = 0; i < 1) {
> 				argc++;
> 			    }
> 	return argc;
>      }
> }
> ...
> 
> This can be fixed with a trick: adding an if:
> ...
> set src {
>      int main (int argc) {
> 	for (int i = 0; i < 1) if (1) {
> 	    argc++;
> 	}
> 	return argc;
>      }
> }
> ...
> 
> Use these methods to make the inline sources in lib/gdb.exp compatible with
> emacs auto indent.
> 
> Note: this does not yet use emacs indentation.

I've pushed this.

Thanks,
- Tom

> ---
>   gdb/testsuite/lib/gdb.exp | 30 ++++++++++++++++++++----------
>   1 file changed, 20 insertions(+), 10 deletions(-)
> 
> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index ea8bffc9e89..d4a471ff7c4 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -3134,6 +3134,9 @@ gdb_caching_proc allow_dlmopen_tests {} {
>   	    return 42;
>   	}
>       }
> +
> +    # Note: we use a "for ... if (1) ..." trick to make emacs tcl-mode indent
> +    # the for loop as if it was an if.
>       set src {
>   	#define _GNU_SOURCE
>   	#include <dlfcn.h>
> @@ -3155,9 +3158,11 @@ gdb_caching_proc allow_dlmopen_tests {} {
>   
>   	    r_debug = 0;
>   	    /* Taken from /usr/include/link.h.  */
> -	    for (dyn = _DYNAMIC; dyn->d_tag != DT_NULL; ++dyn)
> -		if (dyn->d_tag == DT_DEBUG)
> +	    for (dyn = _DYNAMIC; dyn->d_tag != DT_NULL; ++dyn) if (1) {
> +		if (dyn->d_tag == DT_DEBUG) {
>   		    r_debug = (struct r_debug *) dyn->d_un.d_ptr;
> +		}
> +	    }
>   
>   	    if (!r_debug) {
>   		printf ("r_debug not found.\n");
> @@ -11487,14 +11492,16 @@ gdb_caching_proc have_avx {} {
>   	int main() {
>   	  unsigned int eax, ebx, ecx, edx;
>   
> -	if (!x86_cpuid (1, &eax, &ebx, &ecx, &edx))
> +	if (!x86_cpuid (1, &eax, &ebx, &ecx, &edx)) {
>   	  return 0;
> +	}
>   
> -	if ((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE))
> +	if ((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE)) {
>   	  return 1;
> -	else
> +	} else {
>   	  return 0;
>   	}
> +	}
>       }
>       set compile_flags "incdir=${srcdir}/.."
>       if {![gdb_simple_compile $me $src executable $compile_flags]} {
> @@ -11532,14 +11539,16 @@ gdb_caching_proc have_avx2 {} {
>   	    int main() {
>   	      unsigned int eax, ebx, ecx, edx;
>   
> -	    if (!x86_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx))
> -	      return 0;
> +	    if (!x86_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx)) {
> +		return 0;
> +	    }
>   
> -	    if ((ebx & bit_AVX2) == bit_AVX2)
> +	    if ((ebx & bit_AVX2) == bit_AVX2) {
>   	      return 1;
> -	    else
> +	    } else {
>   	      return 0;
>   	    }
> +	    }
>   	}
>   	set compile_flags "incdir=${srcdir}/.."
>   	if {![gdb_simple_compile $me $src executable $compile_flags]} {
> @@ -11642,8 +11651,9 @@ gdb_caching_proc has_hw_wp_support {} {
>   	int main (void) {
>   	    volatile int local;
>   	    local = 1;
> -	    if (local == 1)
> +	    if (local == 1) {
>   		return 1;
> +	    }
>   	    return 0;
>   	}
>       }


  reply	other threads:[~2026-09-28 13:38 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-04  9:38 [RFC 1/5] [pre-commit] Add indent-exp Tom de Vries
2026-09-04  9:38 ` [RFC 2/5] [gdb/testsuite] Make lib/gdb.exp emacs indent compatible Tom de Vries
2026-09-28 13:37   ` Tom de Vries [this message]
2026-09-04  9:38 ` [RFC 3/5] [gdb/testsuite] Update regexp in string_to_regexp Tom de Vries
2026-09-27  7:36   ` Tom de Vries
2026-09-04  9:38 ` [RFC 4/5] [gdb/testsuite] Reformat lib/gdb.exp Tom de Vries
2026-09-28 14:25   ` Tom de Vries
2026-09-04  9:38 ` [RFC 5/5] [gdb/testsuite] Reformat gdb.ada Tom de Vries

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0275d14a-d063-4310-92da-d5d8ac728169@suse.de \
    --to=tdevries@suse.de \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox