Re: [pushed 8.0-branch] [Bug server/22137] gdbserver crashes on hosts with pkru register

Pedro Alves
2017-10-16T12:49:45Z

On 10/16/2017 09:30 AM, Tedeschi, Walfred wrote:
>> -----Original Message-----
>> From: palves at redhat dot com [mailto:sourceware-
>> bugzilla@sourceware.org]
>> Sent: Friday, October 13, 2017 11:06 AM
>> To: Tedeschi, Walfred <walfred.tedeschi@intel.com>
>> Subject: [Bug server/22137] gdbserver crashes on hosts with pkru register
>>
>> https://sourceware.org/bugzilla/show_bug.cgi?id=22137
>>
>> Pedro Alves <palves at redhat dot com> changed:
>>
>> What |Removed |Added
>> ----------------------------------------------------------------------------
>> Status|UNCONFIRMED |NEW
>> Last reconfirmed| |2017-10-13
>> Ever confirmed|0 |1
>>
>> --- Comment #3 from Pedro Alves <palves at redhat dot com> ---
>>> Bug is confirmed.
>>
>> Updating status then. Waldfred, if your account doesn't let you do that
>> yourself, please let me know.
>>
>> And, I believe the bug is fixed in both master and 8.0 branch, right?
>>
> Hello Pedro,
>
> I have pushed this one to 8.0 branch. In Master it does not apply anymore.

Yes, you had fixed it in

commit 1b7fa39ed9678fded7264636c1e5cc14c6d6ebc6
Author: Walfred Tedeschi <walfred.tedeschi@intel.com>
AuthorDate: Wed Sep 20 15:24:47 2017 +0200

[OBV] amd64-features-makefile: add missing backslash.

In an old commit the backslash of was missing in the rule for creating the
i386-avx-mpx-avx512-pku.dat file. No need to regenerate the files, this
was done by another commit from Yao.

Note that if you mention the PR number in the commit log (which
happens if you put the PR number in the ChangeLog entry, given the
ChangeLog is pasted in the commit log too), then the bug in bugzilla
is automatically updated to refer to the commit.

> I also couldn't compile master:
> ../../../binutils-gdb/gdb/probe.c: In function \u2018void parse_probes_in_pspace(const probe_ops*, program_space*, const char*, const char*, const char*, std::vector<symtab_and_line>*)\u2019:
> ../../../binutils-gdb/gdb/probe.c:68:12: error: types may not be defined in a for-range-declaration [-Werror]
> for (struct probe *probe : probes)
> ^~~~~~
> ../../../binutils-gdb/gdb/probe.c: In function \u2018VEC_probe_p* find_probes_in_objfile(objfile*, const char*, const char*)\u2019:
> ../../../binutils-gdb/gdb/probe.c:213:8: error: types may not be defined in a for-range-declaration [-Werror]
> for (struct probe *probe : probes)
> ^~~~~~
>
> Are you aware of it?

Yes, it's a GCC bug:
https://sourceware.org/ml/gdb-patches/2017-09/msg00270.html

What is your gcc version?

I don't see this myself, but I know that Keith also ran into this
recently. If it's easy to work around it, I don't see why not.

Does this work for you?

From 9c7590f2ea94930fd9280a6d66610edd53c0bb16 Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Mon, 16 Oct 2017 13:39:12 +0100
Subject: [PATCH] fix

---
gdb/probe.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gdb/probe.c b/gdb/probe.c
index b3dbf89..f657548 100644
--- a/gdb/probe.c
+++ b/gdb/probe.c
@@ -65,23 +65,23 @@ parse_probes_in_pspace (const struct probe_ops *probe_ops,
const std::vector<probe *> &probes
= objfile->sf->sym_probe_fns->sym_get_probes (objfile);

- for (struct probe *probe : probes)
+ for (probe *pro : probes)
{
- if (probe_ops != &probe_ops_any && probe->pops != probe_ops)
+ if (probe_ops != &probe_ops_any && pro->pops != probe_ops)
continue;

- if (provider && strcmp (probe->provider, provider) != 0)
+ if (provider && strcmp (pro->provider, provider) != 0)
continue;

- if (strcmp (probe->name, name) != 0)
+ if (strcmp (pro->name, name) != 0)
continue;

symtab_and_line sal;
- sal.pc = get_probe_address (probe, objfile);
+ sal.pc = get_probe_address (pro, objfile);
sal.explicit_pc = 1;
sal.section = find_pc_overlay (sal.pc);
sal.pspace = search_pspace;
- sal.probe = probe;
+ sal.probe = pro;
sal.objfile = objfile;

result->push_back (std::move (sal));
--
2.5.5