This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Pre-Release binutils 2.17; [PATCH] Request for inserting bug-fix prior to releasing 2.17.


Hi,

the present CVS version has a problem with the avr target when dealing with 
immediate values for program memory related relocs. Presently, gas 
seg-faults. The attached patch fixes the most immediate issue and would be 
IMO worth being applied prior to shipping 2.17.

The bugfix is also readily included in the (long) patch I have posted some 
days ago for inclusion in mainline. This large patch, however should probably 
wait for 2.18 since it implements quite a number of possibly harmful changes 
that justify more testing.

I'd, thus, ask and suggest to apply this patch only at the 2.17 branch.

Bjoern.


2006-05-10  Bjoern Haase  <bjoern.m.haase@web.de>

        * gas/config/tc-avr.h
        TC_VALIDATE_FIX: handle case of immediate constant values.


--- tc-avr.h    5 May 2006 17:46:47 -0000       1.12
+++ tc-avr.h    15 May 2006 21:28:08 -0000
@@ -127,12 +127,13 @@
    However, there is no serious performance penilty when making the linker
    make the fixup work.  */
 #define TC_VALIDATE_FIX(FIXP,SEG,SKIP)                      \
-  if ( FIXP->fx_r_type == BFD_RELOC_AVR_7_PCREL             \
-    || FIXP->fx_r_type == BFD_RELOC_AVR_13_PCREL            \
-    || FIXP->fx_r_type == BFD_RELOC_AVR_LO8_LDI_PM          \
-    || FIXP->fx_r_type == BFD_RELOC_AVR_HI8_LDI_PM          \
-    || FIXP->fx_r_type == BFD_RELOC_AVR_HH8_LDI_PM          \
-    || FIXP->fx_r_type == BFD_RELOC_AVR_16_PM)              \
+  if ((FIXP->fx_r_type == BFD_RELOC_AVR_7_PCREL             \
+       || FIXP->fx_r_type == BFD_RELOC_AVR_13_PCREL         \
+       || FIXP->fx_r_type == BFD_RELOC_AVR_LO8_LDI_PM       \
+       || FIXP->fx_r_type == BFD_RELOC_AVR_HI8_LDI_PM       \
+       || FIXP->fx_r_type == BFD_RELOC_AVR_HH8_LDI_PM       \
+       || FIXP->fx_r_type == BFD_RELOC_AVR_16_PM)           \
+      && (FIXP->fx_addsy))                                  \
     {                                                       \
       goto SKIP;                                            \
     }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]