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. */