Module Name:    src
Committed By:   joerg
Date:           Mon Jul 17 19:50:23 UTC 2017

Modified Files:
        src/external/gpl3/binutils/dist/bfd: elfxx-mips.c
        src/external/gpl3/binutils/dist/gas/config: tc-mips.h

Log Message:
Create references as absolute pointers internally for .cfi*.
Do not warn for anonymous relocations in read-only .eh_frame,
they will be turned into relative entries afterwards.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/external/gpl3/binutils/dist/bfd/elfxx-mips.c
cvs rdiff -u -r1.6 -r1.7 src/external/gpl3/binutils/dist/gas/config/tc-mips.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/binutils/dist/bfd/elfxx-mips.c
diff -u src/external/gpl3/binutils/dist/bfd/elfxx-mips.c:1.10 src/external/gpl3/binutils/dist/bfd/elfxx-mips.c:1.11
--- src/external/gpl3/binutils/dist/bfd/elfxx-mips.c:1.10	Wed Oct 26 18:42:52 2016
+++ src/external/gpl3/binutils/dist/bfd/elfxx-mips.c	Mon Jul 17 19:50:23 2017
@@ -8596,12 +8596,18 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		  /* In the N32 and 64-bit ABIs there may be multiple
 		     consecutive relocations for the same offset.  If we have
 		     a R_MIPS_GPREL32 followed by a R_MIPS_64 then that
-		     relocation is complete and needs no futher adjustment.  */
+		     relocation is complete and needs no futher adjustment.
+		     
+		     Silently ignore absolute relocations in the .eh_frame
+		     section, they will be dropped latter.
+		   */
 		  if ((rel == relocs
 		      || rel[-1].r_offset != rel->r_offset
 		      || r_type != R_MIPS_64
 		      || ELF_R_TYPE(abfd, rel[-1].r_info) != R_MIPS_GPREL32)
-		      && MIPS_ELF_READONLY_SECTION (sec))
+		      && MIPS_ELF_READONLY_SECTION (sec)
+		      && !((r_type == R_MIPS_32 || r_type == R_MIPS_64)
+		           && strcmp(sec->name, ".eh_frame") == 0))
 		    {
 		      /* We tell the dynamic linker that there are
 		         relocations against the text segment.  */

Index: src/external/gpl3/binutils/dist/gas/config/tc-mips.h
diff -u src/external/gpl3/binutils/dist/gas/config/tc-mips.h:1.6 src/external/gpl3/binutils/dist/gas/config/tc-mips.h:1.7
--- src/external/gpl3/binutils/dist/gas/config/tc-mips.h:1.6	Wed Oct 26 18:42:55 2016
+++ src/external/gpl3/binutils/dist/gas/config/tc-mips.h	Mon Jul 17 19:50:23 2017
@@ -178,7 +178,7 @@ extern int mips_dwarf2_addr_size (void);
 #define DWARF2_ADDR_SIZE(bfd) mips_dwarf2_addr_size ()
 #define DWARF2_FDE_RELOC_SIZE (compact_eh ? 4 : mips_dwarf2_addr_size ())
 #define DWARF2_FDE_RELOC_ENCODING(enc) \
-  (enc | (compact_eh ? DW_EH_PE_pcrel : 0))
+  (compact_eh ? (enc)|DW_EH_PE_pcrel : DW_EH_PE_absptr)
 
 #define TARGET_USE_CFIPOP 1
 

Reply via email to