[COMMITTED,aarch64] Avoid initializers for VLAs
Commit Message
C99 does not permit initializers for variable length arrays, and Clang
now enforces this.
Committed as obvious enough.
Thanks,
Roland
commit b695fdd9b2494a64db1fb8e584753a1a5afec494 (HEAD -> master)
Author: Roland McGrath <mcgrathr@google.com>
Date: Thu Feb 9 10:47:17 2023 -0800
[aarch64] Avoid initializers for VLAs
Clang doesn't accept initializer syntax for variable-length
arrays in C. Just use memset instead.
Comments
On 2/9/23 14:06, Roland McGrath via Gdb-patches wrote:
> C99 does not permit initializers for variable length arrays, and Clang
> now enforces this.
> Committed as obvious enough.
>
> commit b695fdd9b2494a64db1fb8e584753a1a5afec494 (HEAD -> master)
> Author: Roland McGrath <mcgrathr@google.com>
> Date: Thu Feb 9 10:47:17 2023 -0800
>
> [aarch64] Avoid initializers for VLAs
>
> Clang doesn't accept initializer syntax for variable-length
> arrays in C. Just use memset instead.
"C99" and "C" don't really make sense, since this is C++. Perhaps it's
the same error in C++, but the message is a bit misleading.
It's too late for this one, but when fixing a compilation error, please
put the compiler error in the commit message.
>
> diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c
> index e4158236db2..ecb2eeb9540 100644
> --- a/gdb/aarch64-linux-nat.c
> +++ b/gdb/aarch64-linux-nat.c
> @@ -56,6 +56,8 @@
>
> #include "nat/aarch64-mte-linux-ptrace.h"
>
> +#include <string.h>
> +
> #ifndef TRAP_HWBKPT
> #define TRAP_HWBKPT 0x0004
> #endif
> @@ -445,7 +447,9 @@ fetch_tlsregs_from_thread (struct regcache *regcache)
> gdb_assert (regno != -1);
> gdb_assert (tdep->tls_register_count > 0);
>
> - uint64_t tpidrs[tdep->tls_register_count] = { 0 };
> + uint64_t tpidrs[tdep->tls_register_count];
> + memset(tpidrs, 0, sizeof(tpidrs));
Missing space before parentheses.
> +
> struct iovec iovec;
> iovec.iov_base = tpidrs;
> iovec.iov_len = sizeof (tpidrs);
> @@ -471,7 +475,8 @@ store_tlsregs_to_thread (struct regcache *regcache)
> gdb_assert (regno != -1);
> gdb_assert (tdep->tls_register_count > 0);
>
> - uint64_t tpidrs[tdep->tls_register_count] = { 0 };
> + uint64_t tpidrs[tdep->tls_register_count];
> + memset(tpidrs, 0, sizeof(tpidrs));
Same.
Simon
On 2/9/23 19:06, Roland McGrath via Gdb-patches wrote:
> C99 does not permit initializers for variable length arrays, and Clang
> now enforces this.
> Committed as obvious enough.
Yep. Thanks for patching this up.
>
> Thanks,
> Roland
>
> commit b695fdd9b2494a64db1fb8e584753a1a5afec494 (HEAD -> master)
> Author: Roland McGrath <mcgrathr@google.com>
> Date: Thu Feb 9 10:47:17 2023 -0800
>
> [aarch64] Avoid initializers for VLAs
>
> Clang doesn't accept initializer syntax for variable-length
> arrays in C. Just use memset instead.
>
> diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c
> index e4158236db2..ecb2eeb9540 100644
> --- a/gdb/aarch64-linux-nat.c
> +++ b/gdb/aarch64-linux-nat.c
> @@ -56,6 +56,8 @@
>
> #include "nat/aarch64-mte-linux-ptrace.h"
>
> +#include <string.h>
> +
> #ifndef TRAP_HWBKPT
> #define TRAP_HWBKPT 0x0004
> #endif
> @@ -445,7 +447,9 @@ fetch_tlsregs_from_thread (struct regcache *regcache)
> gdb_assert (regno != -1);
> gdb_assert (tdep->tls_register_count > 0);
>
> - uint64_t tpidrs[tdep->tls_register_count] = { 0 };
> + uint64_t tpidrs[tdep->tls_register_count];
> + memset(tpidrs, 0, sizeof(tpidrs));
> +
> struct iovec iovec;
> iovec.iov_base = tpidrs;
> iovec.iov_len = sizeof (tpidrs);
> @@ -471,7 +475,8 @@ store_tlsregs_to_thread (struct regcache *regcache)
> gdb_assert (regno != -1);
> gdb_assert (tdep->tls_register_count > 0);
>
> - uint64_t tpidrs[tdep->tls_register_count] = { 0 };
> + uint64_t tpidrs[tdep->tls_register_count];
> + memset(tpidrs, 0, sizeof(tpidrs));
>
> for (int i = 0; i < tdep->tls_register_count; i++)
> {
@@ -56,6 +56,8 @@
#include "nat/aarch64-mte-linux-ptrace.h"
+#include <string.h>
+
#ifndef TRAP_HWBKPT
#define TRAP_HWBKPT 0x0004
#endif
@@ -445,7 +447,9 @@ fetch_tlsregs_from_thread (struct regcache *regcache)
gdb_assert (regno != -1);
gdb_assert (tdep->tls_register_count > 0);
- uint64_t tpidrs[tdep->tls_register_count] = { 0 };
+ uint64_t tpidrs[tdep->tls_register_count];
+ memset(tpidrs, 0, sizeof(tpidrs));
+
struct iovec iovec;
iovec.iov_base = tpidrs;
iovec.iov_len = sizeof (tpidrs);
@@ -471,7 +475,8 @@ store_tlsregs_to_thread (struct regcache *regcache)
gdb_assert (regno != -1);
gdb_assert (tdep->tls_register_count > 0);
- uint64_t tpidrs[tdep->tls_register_count] = { 0 };
+ uint64_t tpidrs[tdep->tls_register_count];
+ memset(tpidrs, 0, sizeof(tpidrs));
for (int i = 0; i < tdep->tls_register_count; i++)
{