https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81331
--- Comment #9 from Jan Hubicka <hubicka at gcc dot gnu.org> --- OK, found it. The problem is in EH table entries like: .uleb128 .LEHB8-.LCOLDB1 .uleb128 .LEHE8-.LEHB8 .uleb128 .L16-.LCOLDB1 .uleb128 0x1 Now the third entry is landing pad. If L16 happens to be the first label of cold section then .L16-.LCOLDB1 == 0. In this case it is misinterpreted by the runtime as no landing pad and EH is not delivered. I suppose we can always arrange cold sections to not start by EH receiver... Honza