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

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



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.

-- 
	Falk



Reply to: