diff -u gas/config/tc-arm.c /home/src/wince/binutils-050201/gas/config/tc-arm.c
--- gas/config/tc-arm.c	2005-01-31 23:18:25.000000000 +0000
+++ /home/src/wince/binutils-050201/gas/config/tc-arm.c	2005-04-08 13:13:18.000000000 +0100
@@ -1106,7 +1106,10 @@
     }
 
   inst.reloc.exp.X_op         = O_symbol;
-  inst.reloc.exp.X_add_number = ((int) entry) * 4 - 8;
+  inst.reloc.exp.X_add_number = ((int) entry) * 4;
+#ifndef TE_WINCE
+  inst.reloc.exp.X_add_number -= 8; /* PC relative adjust.  */
+#endif
   inst.reloc.exp.X_add_symbol = pool->symbol;
 
   return SUCCESS;
@@ -2404,7 +2407,9 @@
 	return FAIL;
 
       inst.reloc.type = BFD_RELOC_ARM_CP_OFF_IMM;
+#ifndef TE_WINCE
       inst.reloc.exp.X_add_number -= 8;  /* PC rel adjust.  */
+#endif
       inst.reloc.pc_rel = 1;
       inst.instruction |= (REG_PC << 16);
       pre_inc = PRE_INDEX;
@@ -2540,7 +2545,9 @@
         return FAIL;
 
       inst.reloc.type = BFD_RELOC_ARM_CP_OFF_IMM_S2;
-      inst.reloc.exp.X_add_number -= 8;  /* PC rel adjust.  */
+#ifndef TE_WINCE
+      inst.reloc.exp.X_add_number -= 8; /* PC relative adjust.  */
+#endif
       inst.reloc.pc_rel = 1;
       inst.instruction |= (REG_PC << 16);
       pre_inc = PRE_INDEX;
@@ -3054,7 +3061,9 @@
 
       inst.instruction            |= HWOFFSET_IMM;	/* The I bit.  */
       inst.reloc.type              = BFD_RELOC_ARM_OFFSET_IMM8;
+#ifndef TE_WINCE
       inst.reloc.exp.X_add_number -= 8;  		/* PC rel adjust.  */
+#endif
       inst.reloc.pc_rel            = 1;
       inst.instruction            |= (REG_PC << 16);
 
diff -u gas/config/te-pe.h /home/src/wince/binutils-050201/gas/config/te-pe.h
--- gas/config/te-pe.h	2002-11-06 19:36:19.000000000 +0000
+++ /home/src/wince/binutils-050201/gas/config/te-pe.h	2005-02-06 22:25:45.000000000 +0000
@@ -1,3 +1,4 @@
+#define TE_WINCE
 #define TE_PE
 #define LEX_AT (LEX_BEGIN_NAME | LEX_NAME) /* Can have @'s inside labels.  */
 
