This is the mail archive of the 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]

[ARM] fix handling of "merge strings" sections


I propose the following patch to address an issue with code generated by ARM's RVCT 2.2 compiler (which was fixed by 3.0 SP1).

It occurs when the compiler generates data with pointers to strings.
You end up with something like (assembly file)
        DCD      ||.conststring$3||+0x1a4
        AREA ||.conststring||, DATA, READONLY, MERGE=1, STRINGS, ALIGN=0

        DCB      0x44,0x4d,0x41,0x00

As the ".conststring" section has the MERGE attribute, the addend attribute of the (.conststring$3 + 0x1a4) relocation should be patched, but such patching is currently only performed on symbols with STT_SECTION attribute (ie ".conststring + 0x1a4).

I propose:

2007-11-27  Christophe Lyon <>
	bfd/elf32-arm.c: Update addend for relocations to sections with
	MERGE and STRINGS attributes.

Index: bfd/elf32-arm.c
--- bfd/elf32-arm.c     (revision 220)
+++ bfd/elf32-arm.c     (working copy)
@@ -5660,7 +5660,12 @@ elf32_arm_relocate_section (bfd *
                            + sec->output_offset
                            + sym->st_value);
              if ((sec->flags & SEC_MERGE)
-                      && ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+                 && (
+                     (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+                     ||
+                     (sec->flags & SEC_STRINGS)
+                     )
+                 )
                  asection *msec;
                  bfd_vma addend, value;


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