* elfn32-mips.c (prev_reloc_section): New.
authorAlexandre Oliva <aoliva@redhat.com>
Wed, 8 Jan 2003 22:00:53 +0000 (22:00 +0000)
committerAlexandre Oliva <aoliva@redhat.com>
Wed, 8 Jan 2003 22:00:53 +0000 (22:00 +0000)
(GET_RELOC_ADDEND): Use it.  Parenthesize macro arguments.
(SET_RELOC_ADDEND): Parenthesize macro argument.

bfd/ChangeLog
bfd/elfn32-mips.c

index 81f78a0..a2260f4 100644 (file)
@@ -1,3 +1,9 @@
+2003-01-08  Alexandre Oliva  <aoliva@redhat.com>
+
+       * elfn32-mips.c (prev_reloc_section): New.
+       (GET_RELOC_ADDEND): Use it.  Parenthesize macro arguments.
+       (SET_RELOC_ADDEND): Parenthesize macro argument.
+
 2003-01-07  John David Anglin  <dave.anglin@nrc.gc.ca>
 
        * elf32-hppa.c (final_link_relocate): For all DP relative relocations,
index 144a9da..269c98c 100644 (file)
@@ -1,6 +1,6 @@
 /* MIPS-specific support for 32-bit ELF
-   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
-   Free Software Foundation, Inc.
+   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+   2003  Free Software Foundation, Inc.
 
    Most of the information added by Ian Lance Taylor, Cygnus Support,
    <ian@cygnus.com>.
@@ -96,6 +96,7 @@ static irix_compat_t elf_n32_mips_irix_compat
 extern const bfd_target bfd_elf32_nbigmips_vec;
 extern const bfd_target bfd_elf32_nlittlemips_vec;
 
+static asection *prev_reloc_section = NULL;
 static bfd_vma prev_reloc_address = -1;
 static bfd_vma prev_reloc_addend = 0;
 
@@ -1207,29 +1208,31 @@ static reloc_howto_type elf_mips_gnu_vtentry_howto =
 {                                                                      \
   /* If we're relocating, and this is an external symbol, we don't     \
      want to change anything.  */                                      \
-    if (obfd != (bfd *) NULL                                           \
-       && (sym->flags & BSF_SECTION_SYM) == 0                          \
-       && (! entry->howto->partial_inplace                             \
-           || entry->addend == 0))                                     \
+    if ((obfd) != (bfd *) NULL                                         \
+       && ((sym)->flags & BSF_SECTION_SYM) == 0                        \
+       && (! (entry)->howto->partial_inplace                           \
+           || (entry)->addend == 0))                                   \
       {                                                                        \
-        entry->address += sec->output_offset;                          \
+        (entry)->address += (sec)->output_offset;                      \
         return bfd_reloc_ok;                                           \
       }                                                                        \
                                                                        \
     /* The addend of combined relocs is remembered and left for                \
        subsequent relocs.  */                                          \
-    if (prev_reloc_address != reloc_entry->address)                    \
+    if (prev_reloc_address != (entry)->address                         \
+       || prev_reloc_section != (sec))                                 \
       {                                                                        \
-        prev_reloc_address = reloc_entry->address;                     \
-        prev_reloc_addend = reloc_entry->addend;                       \
+       prev_reloc_section = (sec);                                     \
+        prev_reloc_address = (entry)->address;                         \
+        prev_reloc_addend = (entry)->addend;                           \
       }                                                                        \
     else                                                               \
-      reloc_entry->addend = prev_reloc_addend;                         \
+      (entry)->addend = prev_reloc_addend;                             \
 }
 
 #define SET_RELOC_ADDEND(entry)                                                \
 {                                                                      \
-  prev_reloc_addend = entry->addend;                                   \
+  prev_reloc_addend = (entry)->addend;                                 \
 }
 
 static bfd_reloc_status_type