Author: compnerd Date: Fri Oct 20 11:47:35 2017 New Revision: 316224 URL: http://llvm.org/viewvc/llvm-project?rev=316224&view=rev Log: GNU: do not read the FDE count if omitted
If there is no binary search table computed, the FDECount encoding is DW_EH_PE_omit. Do not attempt to read the FDECount in such a situation as we will read an incorrect value. binutils only writes out the FDECount if the encoding is not DW_EH_PE_omit. Modified: libunwind/trunk/src/EHHeaderParser.hpp Modified: libunwind/trunk/src/EHHeaderParser.hpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/EHHeaderParser.hpp?rev=316224&r1=316223&r2=316224&view=diff ============================================================================== --- libunwind/trunk/src/EHHeaderParser.hpp (original) +++ libunwind/trunk/src/EHHeaderParser.hpp Fri Oct 20 11:47:35 2017 @@ -67,7 +67,9 @@ void EHHeaderParser<A>::decodeEHHdr(A &a ehHdrInfo.eh_frame_ptr = addressSpace.getEncodedP(p, ehHdrEnd, eh_frame_ptr_enc, ehHdrStart); ehHdrInfo.fde_count = - addressSpace.getEncodedP(p, ehHdrEnd, fde_count_enc, ehHdrStart); + fde_count_enc == DW_EH_PE_omit + ? 0 + : addressSpace.getEncodedP(p, ehHdrEnd, fde_count_enc, ehHdrStart); ehHdrInfo.table = p; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits