[llvm-dev] Difference in EHType between ARM and AArch64

Grang, Mandeep Singh via llvm-dev llvm-dev at lists.llvm.org
Wed Apr 5 13:35:00 PDT 2017


Referring to your patch https://reviews.llvm.org/rL291172.

/  switch (MAI->getExceptionHandlingType()) {//
//  case ExceptionHandling::SjLj://
//  case ExceptionHandling::DwarfCFI://
//  case ExceptionHandling::ARM://
//*isCFIMoveForDebugging = true;*//
//*if (MAI->getExceptionHandlingType() != ExceptionHandling::DwarfCFI)*/*/
/**/      break;/*/
//    for (auto &F: M.getFunctionList()) {//
//      // If the module contains any function with unwind data,//
//      // .eh_frame has to be emitted.//
//      // Ignore functions that won't get emitted.//
//      if (!F.isDeclarationForLinker() && F.needsUnwindTableEntry()) {//
//*isCFIMoveForDebugging = false;*//
//        break;//
//      }//

The ExceptionHandlingType for AArch64 is ExceptionHandling::DwarfCFI 
whereas for ARM it is ExceptionHandling::ARM. As a result, the behavior 
of the .cfi_sections differs for ARM vs AArch64.

Due to this, my test which checks for .cfi_sections and .debug_frame 
passes for ARM but fails for AArch64.

Could you please clarify, why the behavior for handling .cfi_sections 
needs to be different between ARM and AArch64?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170405/141ac1ad/attachment.html>

More information about the llvm-dev mailing list