From: "Tedeschi, Walfred" <walfred.tedeschi@intel.com>
To: Pedro Alves <palves@redhat.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: RE: [pushed 8.0-branch] [Bug server/22137] gdbserver crashes on hosts with pkru register
Date: Mon, 16 Oct 2017 14:04:00 -0000 [thread overview]
Message-ID: <AC542571535E904D8E8ADAE745D60B197A9A2E3C@IRSMSX104.ger.corp.intel.com> (raw)
In-Reply-To: <f3f445d9-1845-8f83-cb83-f0ab61bdccf9@redhat.com>
> -----Original Message-----
> From: Pedro Alves [mailto:palves@redhat.com]
> Sent: Monday, October 16, 2017 3:44 PM
> To: Tedeschi, Walfred <walfred.tedeschi@intel.com>; gdb-
> patches@sourceware.org
> Subject: Re: [pushed 8.0-branch] [Bug server/22137] gdbserver crashes on
> hosts with pkru register
>
> On 10/16/2017 02:20 PM, Tedeschi, Walfred wrote:
> >
> >>> > > 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?
> >> >
> > It worked!
>
> Thanks, I'll push in a bit. I'm still curious to know your gcc version though.
Version is 6.3.1
>
> Actually, I'm confused on how it worked for you, since I hadn't fixed the
> same problem around line "213" quoted above.
>
Yes there were more, I fixed in the same way, full patch is here:
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 436d9b5..8a12b56 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -1340,8 +1340,8 @@ probe_key_free (bfd *abfd, void *d)
{
std::vector<probe *> *probes = (std::vector<probe *> *) d;
- for (struct probe *probe : *probes)
- probe->pops->destroy (probe);
+ for (probe *prob : *probes)
+ prob->pops->destroy (prob);
delete probes;
}
diff --git a/gdb/probe.c b/gdb/probe.c
index b3dbf89..487847c 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));
@@ -210,15 +210,15 @@ find_probes_in_objfile (struct objfile *objfile, const char *provider,
const std::vector<probe *> &probes
= objfile->sf->sym_probe_fns->sym_get_probes (objfile);
- for (struct probe *probe : probes)
+ for (probe *prob : probes)
{
- if (strcmp (probe->provider, provider) != 0)
+ if (strcmp (prob->provider, provider) != 0)
continue;
- if (strcmp (probe->name, name) != 0)
+ if (strcmp (prob->name, name) != 0)
continue;
- VEC_safe_push (probe_p, result, probe);
+ VEC_safe_push (probe_p, result, prob);
}
return result;
@@ -244,11 +244,11 @@ find_probe_by_pc (CORE_ADDR pc)
/* If this proves too inefficient, we can replace with a hash. */
const std::vector<probe *> &probes
= objfile->sf->sym_probe_fns->sym_get_probes (objfile);
- for (struct probe *probe : probes)
- if (get_probe_address (probe, objfile) == pc)
+ for (probe *prob : probes)
+ if (get_probe_address (prob, objfile) == pc)
{
result.objfile = objfile;
- result.probe = probe;
+ result.probe = prob;
return result;
}
}
@@ -294,20 +294,20 @@ collect_probes (const std::string &objname, const std::string &provider,
const std::vector<probe *> &probes
= objfile->sf->sym_probe_fns->sym_get_probes (objfile);
- for (struct probe *probe : probes)
+ for (probe *prob : probes)
{
- if (pops != NULL && probe->pops != pops)
+ if (pops != NULL && prob->pops != pops)
continue;
if (prov_pat
- && prov_pat->exec (probe->provider, 0, NULL, 0) != 0)
+ && prov_pat->exec (prob->provider, 0, NULL, 0) != 0)
continue;
if (probe_pat
- && probe_pat->exec (probe->name, 0, NULL, 0) != 0)
+ && probe_pat->exec (prob->name, 0, NULL, 0) != 0)
continue;
- result.emplace_back (probe, objfile);
+ result.emplace_back (prob, objfile);
}
}
> Are you sure you tested with the same compiler?
>
> Thanks,
> Pedro Alves
Thanks and regards,
/Fred
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
next prev parent reply other threads:[~2017-10-16 14:04 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-16 8:30 Tedeschi, Walfred
2017-10-16 12:49 ` Pedro Alves
2017-10-16 13:20 ` Tedeschi, Walfred
2017-10-16 13:44 ` Pedro Alves
2017-10-16 14:04 ` Tedeschi, Walfred [this message]
2017-10-16 14:16 ` Pedro Alves
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=AC542571535E904D8E8ADAE745D60B197A9A2E3C@IRSMSX104.ger.corp.intel.com \
--to=walfred.tedeschi@intel.com \
--cc=gdb-patches@sourceware.org \
--cc=palves@redhat.com \
/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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).