[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#234073: Crashes machine on startup on Alpha with Radeon 7500



On Sun, Feb 22, 2004 at 02:03:27PM +0100, Falk Hueffner wrote:
> Branden Robinson <branden@debian.org> writes:
> 
> > > 10 is R_ALPHA_SREL32, I guess I could come up with a simple patch
> > > but I assume this is already fixed upstream, maybe you could check
> > > that.
> > 
> > It doesn't look good:
> > 
> > [0] branden@redwald:~/packages/xfree86/cvs/HEAD/xc/programs/Xserver/hw/xfree86/loader % grep R_ALPHA_SREL32 *
> > elf.h:#define R_ALPHA_SREL32            10      /* PC relative 32 bit */
> > [0] branden@redwald:~/packages/xfree86/cvs/HEAD/xc/programs/Xserver/hw/xfree86/loader %
> > 
> > That's it...
> 
> Hm. Here's a totally untested patch (sorry, I don't have much time
> right now):
> 
> --- /cvs/xc/programs/Xserver/hw/xfree86/loader/elfloader.c      2004-02-21 19:14:05.000000000 +0100
> +++ elfloader.c 2004-02-22 13:56:39.000000000 +0100
> @@ -1596,6 +1596,20 @@
>             break;
>         }
>  
> +    case R_ALPHA_SREL32:
> +       {
> +           dest32 = (unsigned int *)(secp + rel->r_offset);
> +           symval += rel->r_addend;
> +           symval -= (unsigned long) dest32;
> +           if ((long)symval >= 0x80000000
> +               || (long)symval < -(long)0x80000000)
> +               FatalError("R_ALPHA_SREL32 overflow for %s: %lx\n",
> +                          ElfGetSymbolName(elffile, ELF_R_SYM(rel->r_info)),
> +                          symval);
> +           *dest32 = symval;
> +           break;
> +       }
> +
>  #endif /* alpha */
>  #if defined(__mc68000__)
>      case R_68K_32:
> 
> > In the meantime, does xserver-xfree86-dbg work?
> 
> No, same effect; it seems the relocation errors don't really have
> anything to do with it.

Okay.  I'm going to apply this patch, but because the elfloader object
isn't even in the debugging server (because the modules are linked
directly into the huge XFree86-debug object), this isn't the real
problem you're seeing.

It may be necessary to attach gdb to the XFree86-debug server from a
remote terminal to locate the source of the problem.

Unless you can ulimit -c unlimited and get a good backtrace off the core
from XFree86-debug?

-- 
G. Branden Robinson                |    It's like I have a shotgun in my
Debian GNU/Linux                   |    mouth, I've got my finger on the
branden@debian.org                 |    trigger, and I like the taste of
http://people.debian.org/~branden/ |    the gunmetal. -- Robert Downey, Jr.

Attachment: signature.asc
Description: Digital signature


Reply to: