diff -rupN binutils.orig/src/gold/testsuite/arm/arm_r_abs8_local.s binutils.gold/src/gold/testsuite/arm/arm_r_abs8_local.s
--- binutils.orig/src/gold/testsuite/arm/arm_r_abs8_local.s	1969-12-31 16:00:00.000000000 -0800
+++ binutils.gold/src/gold/testsuite/arm/arm_r_abs8_local.s	2009-09-01 17:49:12.000000000 -0700
@@ -0,0 +1,25 @@
+@FILE: arm_r_abs8_local.s
+@TEST RELOCATION : R_ARM_ABS8
+
+	.cpu arm10tdmi
+
+	.section	.rodata 
+	.align	4
+___T0:
+	.ascii	"123\000"
+LLCT0:
+	.ascii	"Hello_ABS8\000"
+
+	.text
+	.align 0
+
+	.byte	'>'		@ Segment start visual marker
+GCS0:
+	.byte	LLCT0		@ ABS8 relocation (LOCAL)
+
+_start:
+	.global _start
+
+	ldrb	r3, GCS0	@ Load byte offset
+
+	.end
+ 
diff -rupN binutils.orig/src/gold/testsuite/reloc_abs_test.sh binutils.gold/src/gold/testsuite/reloc_abs_test.sh
--- binutils.orig/src/gold/testsuite/reloc_abs_test.sh	1969-12-31 16:00:00.000000000 -0800
+++ binutils.gold/src/gold/testsuite/reloc_abs_test.sh	2009-09-01 17:47:36.000000000 -0700
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+# reloc_abs_test.sh -- a test case for the ABS relocations.
+
+# Copyright 2009 Free Software Foundation, Inc.
+# Written by Viktor Kutuzov <vkutuzov@accesssoftek.com>.
+
+# This file is a part of gold.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+check_relocation_abs()
+{
+  # Arguments: 
+  #  $1 - Linked file name. The file with the same name and extention '.o'
+  #       will be looked for objects.
+  #  $2 - Symbol name. The relocation to test is referenced by this unique
+  #       symbol name.
+  #  $3 - Destination segment name the relocation to test is applied to.
+
+  # Retrieve original addend from the object file by using a value
+  # in the second column of the readelf symbol table dump.
+  # The readelf output dump looks like this:
+  # --------vvvvvvvv--------------------------------------------------------
+  # Symbol table '.symtab' contains 13 entries:
+  #    Num:    Value  Size Type    Bind   Vis      Ndx Name
+  #      7: 00000004     0 NOTYPE  LOCAL  DEFAULT    5 LLCT0
+
+  addend=`readelf -s $1.o | grep -w $2 | sed 's/^/:/;s/$/:/;s/[: ][: ]*/:/g' | cut -d: -f3`
+  if test -z "$addend"; then
+    echo "Did not find symbol $2 in $1.o"
+    exit 1
+  fi
+
+  # Retrieve the resolved static relocation from the linked file.
+  # We are looking for a value in the second column of the dump
+  # which looks like the one above.
+
+  linker_resolved=`readelf -s $1 | grep -w $2 | sed 's/^/:/;s/$/:/;s/[: ][: ]*/:/g' | cut -d: -f3`
+  if test -z "$linker_resolved"; then
+    echo "Did not find symbol $2 in $1"
+    exit 1
+  fi
+
+  # Retrieve the requested segment offset from the linked file.
+  # The value is in the  readelf output dump looks something like this:
+  # -------------------------------------vvvvvv-------------------------
+  # Section Headers:
+  #   [Nr] Name      Type       Addr     Off    Size   ES Flg Lk Inf Al
+  #   [ 2] .rodata   PROGBITS   00000080 000080 000010 00   A  0   0 16
+
+  segment_offset=`readelf -S $1 | grep -w $3 | sed 's/\]//;s/\[//;s/^/:/;s/$/:/;s/[: ][: ]*/:/g' | cut -d: -f6`
+  if test -z "$segment_offset"; then
+    echo "Did not find segment $3 in $1"
+    exit 1
+  fi
+
+  linker_result=$((0x$linker_resolved + 0))
+  valid_result=$((0x$addend + 0x$segment_offset))
+
+  # Note: Uncomment the following lines to get additional debug information
+  # printed out.
+  #echo "debug: retrieved addend: $addend"
+  #echo "debug: retrieved $3 segment offset: $segment_offset"
+  #echo "debug: retrieved linker_resolved: $linker_resolved"
+  #echo "debug: linker resolved relocation value: $linker_result"
+  #echo "debug: calculated relocation value: $valid_result"
+
+  if test "$linker_result" != "$valid_result"; then
+    echo "unexpected result for relocation value in $1:"
+    echo "   $valid_result"
+    echo ""
+    echo "Actual value below:"
+    echo "$linker_result"
+    exit 1
+  fi
+}
+
+# Unit tests:
+check_relocation_abs arm/arm_r_abs8_local "LLCT0" ".rodata"
+
+exit 0
+

