From f87914660f07f6915eaa7e31c195b77c71b95391 Mon Sep 17 00:00:00 2001 From: sewardj Date: Tue, 21 Aug 2001 15:22:09 +0000 Subject: [PATCH] [project @ 2001-08-21 15:22:09 by sewardj] Handle the R_SPARC_UA32 relocation type, as reported by Armin Groesslinger. /* According to the Sun documentation: R_SPARC_UA32 This relocation type resembles R_SPARC_32, except it refers to an unaligned word. That is, the word to be relocated must be treated as four separate bytes with arbitrary alignment, not as a word aligned according to the architecture requirements. (JRS: which means that freeloading on the R_SPARC_32 case is probably wrong, but hey ...) */ --- ghc/rts/Linker.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ghc/rts/Linker.c b/ghc/rts/Linker.c index f60899a..e4d2d07 100644 --- a/ghc/rts/Linker.c +++ b/ghc/rts/Linker.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Linker.c,v 1.58 2001/08/15 08:57:31 simonmar Exp $ + * $Id: Linker.c,v 1.59 2001/08/21 15:22:09 sewardj Exp $ * * (c) The GHC Team, 2000 * @@ -1825,6 +1825,17 @@ do_Elf32_Rela_relocations ( ObjectCode* oc, char* ehdrC, w1 |= w2; *pP = w1; break; + /* According to the Sun documentation: + R_SPARC_UA32 + This relocation type resembles R_SPARC_32, except it refers to an + unaligned word. That is, the word to be relocated must be treated + as four separate bytes with arbitrary alignment, not as a word + aligned according to the architecture requirements. + + (JRS: which means that freeloading on the R_SPARC_32 case + is probably wrong, but hey ...) + */ + case R_SPARC_UA32: case R_SPARC_32: w2 = (Elf32_Word)(S + A); *pP = w2; -- 1.7.10.4