[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[2071] * kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Add
From: |
David S. Miller |
Subject: |
[2071] * kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Add |
Date: |
Tue, 07 Apr 2009 23:48:29 +0000 |
Revision: 2071
http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2071
Author: davem
Date: 2009-04-07 23:48:28 +0000 (Tue, 07 Apr 2009)
Log Message:
-----------
* kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Add
support for R_SPARC_OLO10 relocations. Fix compile warning for
R_SPARC_WDISP30 case.
Modified Paths:
--------------
trunk/grub2/ChangeLog
trunk/grub2/kern/sparc64/dl.c
Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog 2009-04-07 00:48:57 UTC (rev 2070)
+++ trunk/grub2/ChangeLog 2009-04-07 23:48:28 UTC (rev 2071)
@@ -1,3 +1,9 @@
+2009-04-07 David S. Miller <address@hidden>
+
+ * kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Add
+ support for R_SPARC_OLO10 relocations. Fix compile warning for
+ R_SPARC_WDISP30 case.
+
2009-04-06 Pavel Roskin <address@hidden>
* include/grub/misc.h (ARRAY_SIZE): New macro.
Modified: trunk/grub2/kern/sparc64/dl.c
===================================================================
--- trunk/grub2/kern/sparc64/dl.c 2009-04-07 00:48:57 UTC (rev 2070)
+++ trunk/grub2/kern/sparc64/dl.c 2009-04-07 23:48:28 UTC (rev 2071)
@@ -95,7 +95,7 @@
+ entsize * ELF64_R_SYM (rel->r_info));
value = sym->st_value + rel->r_addend;
- switch (ELF64_R_TYPE (rel->r_info))
+ switch (ELF64_R_TYPE (rel->r_info) & 0xff)
{
case R_SPARC_32: /* 3 V-word32 */
if (value & 0xFFFFFFFF00000000)
@@ -105,8 +105,8 @@
break;
case R_SPARC_WDISP30: /* 7 V-disp30 */
if (((value - (Elf64_Addr) addr) & 0xFFFFFFFF00000000) &&
- ((value - (Elf64_Addr) addr) & 0xFFFFFFFF00000000
- != 0xFFFFFFFF00000000))
+ (((value - (Elf64_Addr) addr) & 0xFFFFFFFF00000000)
+ != 0xFFFFFFFF00000000))
return grub_error (GRUB_ERR_BAD_MODULE,
"Displacement out of 30 bits range");
*addr = (*addr & 0xC0000000) |
@@ -125,6 +125,12 @@
case R_SPARC_64: /* 32 V-xwords64 */
*(Elf64_Xword *) addr = value;
break;
+ case R_SPARC_OLO10:
+ *addr = (*addr & ~0x1fff)
+ | (((value & 0x3ff) +
+ (ELF64_R_TYPE (rel->r_info) >> 8))
+ & 0x1fff);
+ break;
default:
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
"This relocation (%d) is not implemented
yet",
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [2071] * kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Add,
David S. Miller <=