Re: aranym bug, manifests as "ida_remove called for id=13" on recent kernels

Mikael Pettersson
2010-10-11T09:27:23Z

Al Viro writes:
> On Mon, Oct 11, 2010 at 12:52:56AM +0100, Al Viro wrote:
> > On Sun, Oct 10, 2010 at 10:18:03PM +0200, Geert Uytterhoeven wrote:
> > > >> This is on aranym-0.9.9-1 from Ubuntu/amd64.
> > > >
> > > > stat -L /proc/2/exec, otherwise you'll hit lstat() instead of stat().
> > > > And FWIW 0.9.10-1 squeeze/amd64 also triggers here...
> > >
> > > Still, just "stat: cannot stat `proc/2/exe': No such file or directory" here...
> >
> > Interesting... Which gcc version is used?
>
> Argh... OK, going through aranym with debugger has exhonorated it. My
> apologies ;-/ It *is* gcc in sid. Testcase:
>
> extern int foo(int);
> void *bar(int n)
> {
> return (void *)foo(n);
> }
>
> and gcc -S -O2 turns that into
> bar:
> link.w %fp,#0
> unlk %fp
> jra foo
>
> Spot the obvious bug... BTW, why on the Earth does debian-ports m68k tree
> use gcc-4.3 with Cthulhu-scaring 700Kb gzipped patch and does *not* have
> gcc-4.4?

I can confirm that the bug exists in gcc-4.3.4 and gcc-4.4.5,
but it has been fixed in gcc-4.5.1 which generates:

bar:
link.w %fp,#0
move.l 8(%fp),-(%sp)
jsr foo
move.l %d0,%a0
unlk %fp
rts

I don't yet know the gcc PR number or svn commit # for the fix
(in case people want a backport).