[binutils-gdb] gas: allow frag address wrapping in absolute section

Alan Modra amodra@sourceware.org
Thu Mar 9 12:18:43 GMT 2023


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=2dc2dfa7d7a53aae58da4a51a77e9ad996cd2937

commit 2dc2dfa7d7a53aae58da4a51a77e9ad996cd2937
Author: Alan Modra <amodra@gmail.com>
Date:   Thu Mar 9 16:35:12 2023 +1030

    gas: allow frag address wrapping in absolute section
    
    This:
             .struct -1
            x:
             .fill 1
            y:
    results in an internal error in frag_new due to abs_section_offset
    wrapping from -1 to 0.  Frags in the absolute section don't do much so
    I think we can allow the address wrap.
    
            * frags.c (frag_new): Allow address wrap in absolute section.

Diff:
---
 gas/frags.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gas/frags.c b/gas/frags.c
index 2a2806da835..016d857ded6 100644
--- a/gas/frags.c
+++ b/gas/frags.c
@@ -166,7 +166,8 @@ frag_new (size_t old_frags_var_max_size
 
   /* Fix up old frag's fr_fix.  */
   frag_now->fr_fix = frag_now_fix_octets ();
-  gas_assert (frag_now->fr_fix >= old_frags_var_max_size);
+  gas_assert (frag_now->fr_fix >= old_frags_var_max_size
+	      || now_seg == absolute_section);
   frag_now->fr_fix -= old_frags_var_max_size;
   /* Make sure its type is valid.  */
   gas_assert (frag_now->fr_type != 0);


More information about the Binutils-cvs mailing list