PR26419, ASAN: mn10300_elf_relax_section elf-m10300.c:3943
authorAlan Modra <amodra@gmail.com>
Tue, 25 Aug 2020 00:07:23 +0000 (09:37 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 25 Aug 2020 13:37:10 +0000 (23:07 +0930)
PR 26419
* elf-m10300.c (mn10300_elf_relax_section): Don't attempt access
before start of section.

bfd/ChangeLog
bfd/elf-m10300.c

index 0c638590fce949fd169593827b2dadaa627134cb..f1f0e322fe1a3b23235d1a6b57bc25a3cc45154a 100644 (file)
@@ -1,3 +1,9 @@
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+       PR 26419
+       * elf-m10300.c (mn10300_elf_relax_section): Don't attempt access
+       before start of section.
+
 2020-08-25  Alan Modra  <amodra@gmail.com>
 
        * elf-m10300.c (elf32_mn10300_hash_table): Test is_elf_hash_table
index ae8cac84e67bc8b124f1b23626df3a7c59effa7e..7c63ce4cd12f2898a06ed066fec6472e7b17ec6c 100644 (file)
@@ -3932,7 +3932,7 @@ mn10300_elf_relax_section (bfd *abfd,
          /* See if the value will fit in 24 bits.
             We allow any 16bit match here.  We prune those we can't
             handle below.  */
-         if ((long) value < 0x7fffff && (long) value > -0x800000)
+         if (value + 0x800000 < 0x1000000 && irel->r_offset >= 3)
            {
              unsigned char code;
 
@@ -4003,7 +4003,7 @@ mn10300_elf_relax_section (bfd *abfd,
          /* See if the value will fit in 16 bits.
             We allow any 16bit match here.  We prune those we can't
             handle below.  */
-         if ((long) value < 0x7fff && (long) value > -0x8000)
+         if (value + 0x8000 < 0x10000 && irel->r_offset >= 2)
            {
              unsigned char code;