Make sure DW_CFA_advance_loc4 is in the same frag
authorJinyang He <hejinyang@loongson.cn>
Thu, 10 Aug 2023 02:21:40 +0000 (10:21 +0800)
committerAlan Modra <amodra@gmail.com>
Fri, 8 Sep 2023 23:26:32 +0000 (08:56 +0930)
commit7ca61249cdc4003aa90e3f106ef00797827d4a4d
tree7dc7487c0269f66065c3743ca660fb1872e49759
parente9536c6dd51b6d989f6efbfa12bfdf5c2bc499a3
Make sure DW_CFA_advance_loc4 is in the same frag

Do the same as commit b9d8f5601bcf in another place generating
DW_CFA_advance_loc4.  The idea behind commit b9d8f5601bcf was that
when a DW_CFA_advance_loc4 of zero is seen in eh_frame_relax_frag and
eh_frame_convert_frag we want to remove the opcode entirely, not just
convert to a nop.  If the opcode was split over two frags then a size
adjustment would need to be done to the first frag, not just the
second as is correct for other cases with split frags.  This would
complicate the eh relaxation.  It's easier to ensure the frag is not
split.

* ehopt.c (check_eh_frame): Don't allow DW_CFA_advance_loc4
to be placed in a different frag to the rs_cfa.
gas/ehopt.c