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.