Branden Robinson <[EMAIL PROTECTED]> 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] [EMAIL 
> PROTECTED]:~/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] [EMAIL 
> PROTECTED]:~/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 via email to