Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH v2 0/3] [gdb] Reformat regformats/regdat.sh
@ 2026-08-30 19:53 Tom de Vries
  2026-08-30 19:53 ` [PATCH v2 1/3] [gdb] Re-indent regformats/regdat.sh Tom de Vries
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Tom de Vries @ 2026-08-30 19:53 UTC (permalink / raw)
  To: gdb-patches

This patch series contains three patches touching gdb/regformats/regdat.sh.

The first standarized indentation.

The second uses shfmt.

The third uses shfmt --simplify.

Changes in v2:
- split off patch standarizing indentation
- added patch using shfmt --simplify

Versions:
- v1 https://sourceware.org/pipermail/gdb-patches/2026-August/229822.html

Tom de Vries (3):
  [gdb] Re-indent regformats/regdat.sh
  [gdb] Use shfmt on regformats/regdat.sh
  [gdb] Use shfmt --simplify on regformats/regdat.sh

 gdb/regformats/regdat.sh | 155 +++++++++++++++++++--------------------
 1 file changed, 77 insertions(+), 78 deletions(-)


base-commit: 85a9f9eafebd99447e70e608246bc1d275e44d37
-- 
2.51.0


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

* [PATCH v2 1/3] [gdb] Re-indent regformats/regdat.sh
  2026-08-30 19:53 [PATCH v2 0/3] [gdb] Reformat regformats/regdat.sh Tom de Vries
@ 2026-08-30 19:53 ` Tom de Vries
  2026-08-31 20:09   ` Simon Marchi
  2026-08-30 19:53 ` [PATCH v2 2/3] [gdb] Use shfmt on regformats/regdat.sh Tom de Vries
  2026-08-30 19:53 ` [PATCH v2 3/3] [gdb] Use shfmt --simplify " Tom de Vries
  2 siblings, 1 reply; 9+ messages in thread
From: Tom de Vries @ 2026-08-30 19:53 UTC (permalink / raw)
  To: gdb-patches

The script gdb/regformats/regdat.sh has inconsistent indentation: both 2 and 4
spaces.

Standardize to 4 spaces (as specified by .editorconfig), and document this
explicitly using a Local Variables setting, copied from
gdb/contrib/expect-read1.sh.
---
 gdb/regformats/regdat.sh | 122 ++++++++++++++++++++-------------------
 1 file changed, 64 insertions(+), 58 deletions(-)

diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh
index f93270ba0ca..2f48c165fc8 100755
--- a/gdb/regformats/regdat.sh
+++ b/gdb/regformats/regdat.sh
@@ -73,13 +73,13 @@ EOF
 }
 
 if test ! -r "$1"; then
-  echo "$0: Could not open $1." 1>&2
-  exit 1
+    echo "$0: Could not open $1." 1>&2
+    exit 1
 fi
 
 copyright ()
 {
-cat <<EOF
+    cat <<EOF
 /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
 
 /* A register protocol for GDB, the GNU debugger.
@@ -123,49 +123,49 @@ osabi=unknown
 exec < "$1"
 while do_read
 do
-  if test "${type}" = "name"; then
-    name="${entry}"
-
-    echo "const_target_desc_up tdesc_${name};"
-    echo ""
-
-    # This is necessary for -Wmissing-declarations.
-    echo "void init_registers_${name} (void);"
-
-    echo "void"
-    echo "init_registers_${name} (void)"
-    echo "{"
-    echo "  target_desc_up result = allocate_target_description ();"
-    echo "  struct tdesc_feature *feature = tdesc_create_feature (result.get (), \"${name}\");"
-    continue
-  elif test "${type}" = "xmltarget"; then
-    xmltarget="${entry}"
-    continue
-  elif test "${type}" = "xmlarch"; then
-    xmlarch="${entry}"
-    continue
-  elif test "${type}" = "xmlosabi"; then
-    xmlosabi="${entry}"
-    continue
-  elif test "${type}" = "expedite"; then
-    expedite="${entry}"
-    continue
-  elif test "${type}" = "feature"; then
-    feature="${entry}"
-    continue
-  elif test "${type}" = "osabi"; then
-    osabi="${entry}"
-    continue
-  elif test "${name}" = x; then
-    echo "$0: $1 does not specify \`\`name''." 1>&2
-    exit 1
-  else
-    echo "  tdesc_create_reg (feature, \"${entry}\","
-    echo "  0, 0, NULL, ${type}, NULL);"
+    if test "${type}" = "name"; then
+	name="${entry}"
+
+	echo "const_target_desc_up tdesc_${name};"
+	echo ""
+
+	# This is necessary for -Wmissing-declarations.
+	echo "void init_registers_${name} (void);"
+
+	echo "void"
+	echo "init_registers_${name} (void)"
+	echo "{"
+	echo "  target_desc_up result = allocate_target_description ();"
+	echo "  struct tdesc_feature *feature = tdesc_create_feature (result.get (), \"${name}\");"
+	continue
+    elif test "${type}" = "xmltarget"; then
+	xmltarget="${entry}"
+	continue
+    elif test "${type}" = "xmlarch"; then
+	xmlarch="${entry}"
+	continue
+    elif test "${type}" = "xmlosabi"; then
+	xmlosabi="${entry}"
+	continue
+    elif test "${type}" = "expedite"; then
+	expedite="${entry}"
+	continue
+    elif test "${type}" = "feature"; then
+	feature="${entry}"
+	continue
+    elif test "${type}" = "osabi"; then
+	osabi="${entry}"
+	continue
+    elif test "${name}" = x; then
+	echo "$0: $1 does not specify \`\`name''." 1>&2
+	exit 1
+    else
+	echo "  tdesc_create_reg (feature, \"${entry}\","
+	echo "  0, 0, NULL, ${type}, NULL);"
 
-    offset=$((offset + type))
-    i=$((i + 1))
-  fi
+	offset=$((offset + type))
+	i=$((i + 1))
+    fi
 done
 
 echo
@@ -173,22 +173,22 @@ echo "static const char *expedite_regs_${name}[] = { \"$(echo "${expedite}" | se
 
 echo "#ifndef IN_PROCESS_AGENT"
 if test "${feature}" != x; then
-  echo "static const char *xmltarget_${name} = 0;"
-elif test "${xmltarget}" = x; then
-  if test "${xmlarch}" = x && test "${xmlosabi}" = x; then
     echo "static const char *xmltarget_${name} = 0;"
-  else
-    echo "static const char *xmltarget_${name} = \"@<target>\\"
-    if test "${xmlarch}" != x; then
-      echo "<architecture>${xmlarch}</architecture>\\"
-    fi
-    if test "${xmlosabi}" != x; then
-      echo "<osabi>${xmlosabi}</osabi>\\"
+elif test "${xmltarget}" = x; then
+    if test "${xmlarch}" = x && test "${xmlosabi}" = x; then
+	echo "static const char *xmltarget_${name} = 0;"
+    else
+	echo "static const char *xmltarget_${name} = \"@<target>\\"
+	if test "${xmlarch}" != x; then
+	    echo "<architecture>${xmlarch}</architecture>\\"
+	fi
+	if test "${xmlosabi}" != x; then
+	    echo "<osabi>${xmlosabi}</osabi>\\"
+	fi
+	echo "</target>\";"
     fi
-    echo "</target>\";"
-  fi
 else
-  echo "static const char *xmltarget_${name} = \"${xmltarget}\";"
+    echo "static const char *xmltarget_${name} = \"${xmltarget}\";"
 fi
 echo
 
@@ -207,3 +207,9 @@ EOF
 # close things off
 exec 1>&2
 mv -- "new-$3" "$3"
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:4
+# End:
+# vi:sw=4
-- 
2.51.0


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

* [PATCH v2 2/3] [gdb] Use shfmt on regformats/regdat.sh
  2026-08-30 19:53 [PATCH v2 0/3] [gdb] Reformat regformats/regdat.sh Tom de Vries
  2026-08-30 19:53 ` [PATCH v2 1/3] [gdb] Re-indent regformats/regdat.sh Tom de Vries
@ 2026-08-30 19:53 ` Tom de Vries
  2026-08-31 20:13   ` Simon Marchi
  2026-08-30 19:53 ` [PATCH v2 3/3] [gdb] Use shfmt --simplify " Tom de Vries
  2 siblings, 1 reply; 9+ messages in thread
From: Tom de Vries @ 2026-08-30 19:53 UTC (permalink / raw)
  To: gdb-patches

Run shfmt [1] on gdb/regformats/regdat.sh:
...
$ shfmt \
    --language-dialect=posix \
    --indent=4 \
    --func-next-line \
    --space-redirects \
    --write \
    gdb/regformats/regdat.sh
...
followed by emacs whitespace-cleanup (because shfmt doesn't know about mixed
tab/spaces indentation).

Normalizes things like:
...
if true
then
...
to:
...
if true; then
...
as suggested by Simon [2].

Also:
- makes sure statements are on their own line
- removes double empty line
- minor whitespace changes:
  - do_read ()      -> do_read()
  - cat <<EOF       -> cat << EOF

[1] https://github.com/mvdan/sh
[2] https://sourceware.org/pipermail/gdb-patches/2026-August/229818.html
---
 gdb/regformats/regdat.sh | 35 ++++++++++++++---------------------
 1 file changed, 14 insertions(+), 21 deletions(-)

diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh
index 2f48c165fc8..6cac186735e 100755
--- a/gdb/regformats/regdat.sh
+++ b/gdb/regformats/regdat.sh
@@ -23,17 +23,14 @@ set -u
 # Format of the input files
 read="type entry"
 
-do_read ()
+do_read()
 {
     type=""
     entry=""
-    while read -r line
-    do
-	if test "${line}" = ""
-	then
+    while read -r line; do
+	if test "${line}" = ""; then
 	    continue
-	elif expr "${line}" : "#" > /dev/null
-	then
+	elif expr "${line}" : "#" > /dev/null; then
 	    continue
 	else
 
@@ -42,21 +39,20 @@ do_read ()
 	    # Work around this by eliminating ``::'' ....
 	    line="$(echo "${line}" | sed -e 's/::/: :/g' -e 's/::/: :/g')"
 
-	    OFS="${IFS}" ; IFS="[:]"
+	    OFS="${IFS}"
+	    IFS="[:]"
 	    # Word-splitting on read variable is required.
 	    # shellcheck disable=SC2086
-	    eval read ${read} <<EOF
+	    eval read ${read} << EOF
 ${line}
 EOF
 	    IFS="${OFS}"
 
 	    # .... and then going back through each field and strip out those
 	    # that ended up with just that space character.
-	    for r in ${read}
-	    do
+	    for r in ${read}; do
 		eval "rvalue=\$$r"
-		if test "${rvalue:-}" = " "
-		then
+		if test "${rvalue:-}" = " "; then
 		    eval "$r=''"
 		fi
 	    done
@@ -64,8 +60,7 @@ EOF
 	    break
 	fi
     done
-    if [ -n "${type}" ]
-    then
+    if [ -n "${type}" ]; then
 	true
     else
 	false
@@ -77,9 +72,9 @@ if test ! -r "$1"; then
     exit 1
 fi
 
-copyright ()
+copyright()
 {
-    cat <<EOF
+    cat << EOF
 /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
 
 /* A register protocol for GDB, the GNU debugger.
@@ -105,7 +100,6 @@ copyright ()
 EOF
 }
 
-
 exec > new-"$3"
 copyright "$1"
 echo '#include "regdef.h"'
@@ -121,8 +115,7 @@ expedite=x
 feature=x
 osabi=unknown
 exec < "$1"
-while do_read
-do
+while do_read; do
     if test "${type}" = "name"; then
 	name="${entry}"
 
@@ -194,7 +187,7 @@ echo
 
 osabi_enum=$(grep "${osabi}" "$2" | sed 's/.*(\([^,]\+\),.*/GDB_OSABI_\1/')
 
-cat <<EOF
+cat << EOF
   result->xmltarget = xmltarget_${name};
 #endif
 
-- 
2.51.0


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

* [PATCH v2 3/3] [gdb] Use shfmt --simplify on regformats/regdat.sh
  2026-08-30 19:53 [PATCH v2 0/3] [gdb] Reformat regformats/regdat.sh Tom de Vries
  2026-08-30 19:53 ` [PATCH v2 1/3] [gdb] Re-indent regformats/regdat.sh Tom de Vries
  2026-08-30 19:53 ` [PATCH v2 2/3] [gdb] Use shfmt on regformats/regdat.sh Tom de Vries
@ 2026-08-30 19:53 ` Tom de Vries
  2026-08-31 20:14   ` Simon Marchi
  2 siblings, 1 reply; 9+ messages in thread
From: Tom de Vries @ 2026-08-30 19:53 UTC (permalink / raw)
  To: gdb-patches

Use shfmt on gdb/regformats/regdat.sh as in the previous commit, but also use
--simplify.
---
 gdb/regformats/regdat.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh
index 6cac186735e..486fc0e85ea 100755
--- a/gdb/regformats/regdat.sh
+++ b/gdb/regformats/regdat.sh
@@ -178,7 +178,7 @@ elif test "${xmltarget}" = x; then
 	if test "${xmlosabi}" != x; then
 	    echo "<osabi>${xmlosabi}</osabi>\\"
 	fi
-	echo "</target>\";"
+	echo '</target>";'
     fi
 else
     echo "static const char *xmltarget_${name} = \"${xmltarget}\";"
-- 
2.51.0


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

* Re: [PATCH v2 1/3] [gdb] Re-indent regformats/regdat.sh
  2026-08-30 19:53 ` [PATCH v2 1/3] [gdb] Re-indent regformats/regdat.sh Tom de Vries
@ 2026-08-31 20:09   ` Simon Marchi
  2026-09-01  9:21     ` Tom de Vries
  0 siblings, 1 reply; 9+ messages in thread
From: Simon Marchi @ 2026-08-31 20:09 UTC (permalink / raw)
  To: Tom de Vries, gdb-patches

On 8/30/26 3:53 PM, Tom de Vries wrote:
> The script gdb/regformats/regdat.sh has inconsistent indentation: both 2 and 4
> spaces.
> 
> Standardize to 4 spaces (as specified by .editorconfig), and document this
> explicitly using a Local Variables setting, copied from
> gdb/contrib/expect-read1.sh.

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

LGTM, but I wonder why the local variables setting is needed, since we
have .editorconfig?  For instance, we don't put that in every .c file...
I am not strongly opposed to it, but it seems redundant and less
maintainable to repeat the information in each file.

Simon

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

* Re: [PATCH v2 2/3] [gdb] Use shfmt on regformats/regdat.sh
  2026-08-30 19:53 ` [PATCH v2 2/3] [gdb] Use shfmt on regformats/regdat.sh Tom de Vries
@ 2026-08-31 20:13   ` Simon Marchi
  2026-09-02 13:21     ` Tom de Vries
  0 siblings, 1 reply; 9+ messages in thread
From: Simon Marchi @ 2026-08-31 20:13 UTC (permalink / raw)
  To: Tom de Vries, gdb-patches

On 8/30/26 3:53 PM, Tom de Vries wrote:
> Run shfmt [1] on gdb/regformats/regdat.sh:
> ...
> $ shfmt \
>     --language-dialect=posix \
>     --indent=4 \
>     --func-next-line \
>     --space-redirects \
>     --write \
>     gdb/regformats/regdat.sh

It would be nice to have a script to easily do this on all our shell
scripts, which we could also run in the CI (like we run black to verify
the Python code formatting).

> ...
> followed by emacs whitespace-cleanup (because shfmt doesn't know about mixed
> tab/spaces indentation).

I guess said script would need to do this too (I wonder if it can be
done with sed, replacing leading groups of 8 spaces with a tab).

> Normalizes things like:
> ...
> if true
> then
> ...
> to:
> ...
> if true; then
> ...
> as suggested by Simon [2].
> 
> Also:
> - makes sure statements are on their own line
> - removes double empty line
> - minor whitespace changes:
>   - do_read ()      -> do_read()
>   - cat <<EOF       -> cat << EOF
> 
> [1] https://github.com/mvdan/sh
> [2] https://sourceware.org/pipermail/gdb-patches/2026-August/229818.html

All the changes in the diff LGTM.

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

Simon

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

* Re: [PATCH v2 3/3] [gdb] Use shfmt --simplify on regformats/regdat.sh
  2026-08-30 19:53 ` [PATCH v2 3/3] [gdb] Use shfmt --simplify " Tom de Vries
@ 2026-08-31 20:14   ` Simon Marchi
  0 siblings, 0 replies; 9+ messages in thread
From: Simon Marchi @ 2026-08-31 20:14 UTC (permalink / raw)
  To: Tom de Vries, gdb-patches

On 8/30/26 3:53 PM, Tom de Vries wrote:
> Use shfmt on gdb/regformats/regdat.sh as in the previous commit, but also use
> --simplify.
> ---
>  gdb/regformats/regdat.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gdb/regformats/regdat.sh b/gdb/regformats/regdat.sh
> index 6cac186735e..486fc0e85ea 100755
> --- a/gdb/regformats/regdat.sh
> +++ b/gdb/regformats/regdat.sh
> @@ -178,7 +178,7 @@ elif test "${xmltarget}" = x; then
>  	if test "${xmlosabi}" != x; then
>  	    echo "<osabi>${xmlosabi}</osabi>\\"
>  	fi
> -	echo "</target>\";"
> +	echo '</target>";'
>      fi
>  else
>      echo "static const char *xmltarget_${name} = \"${xmltarget}\";"

LGTM.

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

Simon

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

* Re: [PATCH v2 1/3] [gdb] Re-indent regformats/regdat.sh
  2026-08-31 20:09   ` Simon Marchi
@ 2026-09-01  9:21     ` Tom de Vries
  0 siblings, 0 replies; 9+ messages in thread
From: Tom de Vries @ 2026-09-01  9:21 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

On 8/31/26 10:09 PM, Simon Marchi wrote:
> On 8/30/26 3:53 PM, Tom de Vries wrote:
>> The script gdb/regformats/regdat.sh has inconsistent indentation: both 2 and 4
>> spaces.
>>
>> Standardize to 4 spaces (as specified by .editorconfig), and document this
>> explicitly using a Local Variables setting, copied from
>> gdb/contrib/expect-read1.sh.
> 
> Approved-By: Simon Marchi <simon.marchi@efficios.com>
> 
> LGTM, but I wonder why the local variables setting is needed, since we
> have .editorconfig?  For instance, we don't put that in every .c file...
> I am not strongly opposed to it, but it seems redundant and less
> maintainable to repeat the information in each file.
> 

Hi Simon,

thanks for the reviews.

I've pushed this, without the local variables part.

Instead I've submitted a patch to add a setting in .dir-locals.el ( 
https://sourceware.org/pipermail/gdb-patches/2026-September/229895.html ).

Thanks,
- Tom

> Simon


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

* Re: [PATCH v2 2/3] [gdb] Use shfmt on regformats/regdat.sh
  2026-08-31 20:13   ` Simon Marchi
@ 2026-09-02 13:21     ` Tom de Vries
  0 siblings, 0 replies; 9+ messages in thread
From: Tom de Vries @ 2026-09-02 13:21 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

On 8/31/26 10:13 PM, Simon Marchi wrote:
> It would be nice to have a script to easily do this on all our shell
> scripts, which we could also run in the CI (like we run black to verify
> the Python code formatting).
> 

I've submitted an RFC ( 
https://sourceware.org/pipermail/gdb-patches/2026-September/229953.html ).

>> ...
>> followed by emacs whitespace-cleanup (because shfmt doesn't know about mixed
>> tab/spaces indentation).
> I guess said script would need to do this too (I wonder if it can be
> done with sed, replacing leading groups of 8 spaces with a tab).

I found a tool unexpand, to I've used that.

Thanks,
- Tom

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

end of thread, other threads:[~2026-09-02 13:21 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-30 19:53 [PATCH v2 0/3] [gdb] Reformat regformats/regdat.sh Tom de Vries
2026-08-30 19:53 ` [PATCH v2 1/3] [gdb] Re-indent regformats/regdat.sh Tom de Vries
2026-08-31 20:09   ` Simon Marchi
2026-09-01  9:21     ` Tom de Vries
2026-08-30 19:53 ` [PATCH v2 2/3] [gdb] Use shfmt on regformats/regdat.sh Tom de Vries
2026-08-31 20:13   ` Simon Marchi
2026-09-02 13:21     ` Tom de Vries
2026-08-30 19:53 ` [PATCH v2 3/3] [gdb] Use shfmt --simplify " Tom de Vries
2026-08-31 20:14   ` Simon Marchi

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