<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">From 2d0522e76e4afeeb2e104e0a4332d94fa0d2fbf6 Mon Sep 17 00:00:00 2001
From: Max Filippov &lt;jcmvbkbc@gmail.com&gt;
Date: Sun, 17 May 2015 06:46:15 +0300
Subject: [PATCH] xtensa: fix gas segfault with --text-section-literals

When --text-section-literals is used and code in the .init or .fini
emits literal in the absence of .literal_position, xtensa_move_literals
segfaults.

Check that search_frag is non-NULL in the xtensa_move_literals and
report error otherwise.

2015-05-26  Max Filippov  &lt;jcmvbkbc@gmail.com&gt;
gas/
	* config/tc-xtensa.c (xtensa_move_literals): Check that
	search_frag is non-NULL. Report error if literal frag is not
	found.

Signed-off-by: Max Filippov &lt;jcmvbkbc@gmail.com&gt;
---
Backported from: 4de0562a4c69fef4952aa7e19d7bda359f02e8b4
Changes to ChangeLog are dropped.

 gas/config/tc-xtensa.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
index 31c0b6b..18307c1 100644
--- a/gas/config/tc-xtensa.c
+++ b/gas/config/tc-xtensa.c
@@ -10808,13 +10808,21 @@ xtensa_move_literals (void)
       frchain_to = NULL;
       frag_splice = &amp;(frchain_from-&gt;frch_root);
 
-      while (!search_frag-&gt;tc_frag_data.literal_frag)
+      while (search_frag &amp;&amp; !search_frag-&gt;tc_frag_data.literal_frag)
 	{
 	  gas_assert (search_frag-&gt;fr_fix == 0
 		  || search_frag-&gt;fr_type == rs_align);
 	  search_frag = search_frag-&gt;fr_next;
 	}
 
+      if (!search_frag)
+	{
+	  search_frag = frchain_from-&gt;frch_root;
+	  as_bad_where (search_frag-&gt;fr_file, search_frag-&gt;fr_line,
+			_("literal pool location required for text-section-literals; specify with .literal_position"));
+	  continue;
+	}
+
       gas_assert (search_frag-&gt;tc_frag_data.literal_frag-&gt;fr_subtype
 	      == RELAX_LITERAL_POOL_BEGIN);
       xtensa_switch_section_emit_state (&amp;state, segment-&gt;seg, 0);
-- 
1.8.1.4

</pre></body></html>