123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- From a35d5e823fdfe8a6e7e05ca8e3fb8bb5697335b1 Mon Sep 17 00:00:00 2001
- From: Max Filippov <jcmvbkbc@gmail.com>
- Date: Tue, 15 Apr 2014 19:12:46 +0400
- Subject: [PATCH] Fix alignment for the first section frag on xtensa
- Linking object files produced by partial linking with link-time
- relaxation enabled sometimes fails with the following error message:
- dangerous relocation: call8: misaligned call target: (.text.unlikely+0x63)
- This happens because no basic block with an XTENSA_PROP_ALIGN flag in the
- property table is generated for the first basic block, even if the
- .align directive is present.
- It was believed that the first frag alignment could be derived from the
- section alignment, but this was not implemented for the partial linking
- case: after partial linking first frag of a section may become not
- first, but no additional alignment frag is inserted before it.
- Basic block for such frag may be merged with previous basic block into
- extended basic block during relaxation pass losing its alignment
- restrictions.
- Fix this by always recording alignment for the first section frag.
- 2014-04-22 Max Filippov <jcmvbkbc@gmail.com>
- gas/
- * config/tc-xtensa.c (xtensa_handle_align): record alignment for the
- first section frag.
- ---
- Backported from: a35d5e823fdfe8a6e7e05ca8e3fb8bb5697335b1
- Changes to Changelog files and tests are dropped.
- gas/config/tc-xtensa.c | 1 -
- 1 file changed, 1 deletion(-)
- diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
- index ea23c96..58ace38 100644
- --- a/gas/config/tc-xtensa.c
- +++ b/gas/config/tc-xtensa.c
- @@ -5609,7 +5609,6 @@ xtensa_handle_align (fragS *fragP)
- && ! fragP->tc_frag_data.is_literal
- && (fragP->fr_type == rs_align
- || fragP->fr_type == rs_align_code)
- - && fragP->fr_address + fragP->fr_fix > 0
- && fragP->fr_offset > 0
- && now_seg != bss_section)
- {
- --
- 1.8.1.4
|