mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 02:24:17 +08:00
Fix iov_len calculation in aarch64_linux_set_debug_regs
There is this build failure when building in C++: /home/simark/src/binutils-gdb/gdb/nat/aarch64-linux-hw-point.c: In function ‘void aarch64_linux_set_debug_regs(const aarch64_debug_reg_state*, int, int)’: /home/simark/src/binutils-gdb/gdb/nat/aarch64-linux-hw-point.c:564:64: error: ‘count’ cannot appear in a constant-expression iov.iov_len = (offsetof (struct user_hwdebug_state, dbg_regs[count - 1]) ^ We can simplify the computation and make g++ happy at the same time by formulating as: size of fixed part + size of variable part thus... size of fixed part + count * size of one variable part element thus... offsetof (struct user_hwdebug_state, dbg_regs) + count * sizeof (regs.dbg_reg[0]); gdb/ChangeLog: * nat/aarch64-linux-hw-point.c (aarch64_linux_set_debug_regs): Change form of iov_len computation.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2015-11-19 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* nat/aarch64-linux-hw-point.c (aarch64_linux_set_debug_regs): Change
|
||||
form of iov_len computation.
|
||||
|
||||
2015-11-19 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* configure.ac (ERROR_ON_WARNING): Don't check whether in C++
|
||||
|
@ -561,8 +561,8 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
|
||||
ctrl = watchpoint ? state->dr_ctrl_wp : state->dr_ctrl_bp;
|
||||
if (count == 0)
|
||||
return;
|
||||
iov.iov_len = (offsetof (struct user_hwdebug_state, dbg_regs[count - 1])
|
||||
+ sizeof (regs.dbg_regs [count - 1]));
|
||||
iov.iov_len = (offsetof (struct user_hwdebug_state, dbg_regs)
|
||||
+ count * sizeof (regs.dbg_regs[0]));
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
|
Reference in New Issue
Block a user