Re: [PATCH] ia64: fix ptrace(PTRACE_GETREGS) (unbreaks strace, gdb)
From: Sergei Trofimovich
Date: Fri Feb 02 2018 - 18:02:34 EST
On Fri, 2 Feb 2018 14:22:32 -0800
"Luck, Tony" <tony.luck@xxxxxxxxx> wrote:
> On Fri, Feb 02, 2018 at 10:12:24PM +0000, Sergei Trofimovich wrote:
> > The strace breakage looks like that:
> > ./strace: get_regs: get_regs_error: Input/output error
> >
> > It happens because ia64 needs to load unwind tables
> > to read certain registers. Unwind tables fail to load
> > due to GCC quirk on the following code:
> >
> > extern char __end_unwind[];
> > const struct unw_table_entry *end = (struct unw_table_entry *)table_end;
> > table->end = segment_base + end[-1].end_offset;
> >
> > GCC does not generate correct code for this single memory
> > reference after constant propagation (see https://gcc.gnu.org/PR84184).
>
> I'm not seeing this ... probably because I build with
> a pre-historic 4.3.4 version of gcc.
>
> Do you know which version(s) are affected? I'm not looking
> for an exhaustive list, just the one on which you found this
> would be good.
>
> -Tony
Original bug https://bugs.gentoo.org/518130 claims regression appeared
around gcc-4.5. Locally am seeing the problem with gcc-6.4.0, gcc-7.2.0 and
gcc-8 (HEAD).
--
Sergei