Optimize Exception Handling Data (Linux*)

This content is specific to C++; it does not apply to DPC++.

If a program requires support for exception handling, the compiler creates a special section containing DWARF directives that are used by the Linux* run-time to unwind and catch an exception.

This information is located in the .eh_frame section and may be shrunk using the compiler options listed below.

Options to specify:

Linux* : -fno-exceptions
  -fno-asynchronous-unwind-tables
Windows*: None

Advantages of this method:

  • These options may shrink the size of the object or binary file by up to 15%, though the amount of the reduction depends on the target platform.

  • These options control whether unwind information is precise at an instruction boundary or at a call boundary. For example, option -fno-asynchronous-unwind-tables can be used for programs that may only throw or catch exceptions.

Disadvantages of this method:

Both options may change the program's behavior:

  • Do not use option -fno-exceptions for programs that require standard C++ handling for objects of classes with destructors.

  • Do not use option -fno-asynchronous-unwind-tables for functions compiled with option -fexceptions that contain calls to other functions that might throw exceptions or for C++ functions that declare objects with destructors.

Please read the compiler option descriptions, which explain what the defaults and behavior are for each target platform.