llvm.org GIT mirror llvm / d40bc4a
Validation fixes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42232 91177308-0d34-0410-b5e6-96231b3b80d8 Bill Wendling 13 years ago
1 changed file(s) with 7 addition(s) and 8 deletion(s). Raw diff Collapse all Expand all
7171

Exception handling for most programming languages is designed to recover from

7272 conditions that rarely occur during general use of an application. To that end,
7373 exception handling should not interfere with the main flow of an
74 application's algorithm by performing checkpointing tasks such as saving
74 application's algorithm by performing checkpointing tasks such as saving
7575 the current pc or register state.

7676
7777

The Itanium ABI Exception Handling Specification defines a methodology for

7878 providing outlying data in the form of exception tables without inlining
79 speculative exception handling code in the flow of an application's main
79 speculative exception handling code in the flow of an application's main
8080 algorithm. Thus, the specification is said to add "zero-cost" to the normal
8181 execution of an application.

8282
8383

A more complete description of the Itanium ABI exception handling runtime

8484 support of can be found at
8585 href="http://www.codesourcery.com/cxx-abi/abi-eh.html">Itanium C++ ABI:
86 Exception Handling. A description of the exception frame format can be
87 found at
88 href="http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-
86 Exception Handling. A description of the exception frame format can be found
87 at 8988 Core-generic/ehframechpt.html">Exception Frames, with details of the Dwarf
9089 specification at Dwarf 3
9190 Standard. A description for the C++ exception table formats can be found at
242241

Finally, the entry and exit of catch code is bracketed with calls to

243242 __cxa_begin_catch and __cxa_end_catch.
244243 __cxa_begin_catch takes a exception structure reference as an argument
245 and returns the value of the exception object. __cxa_end_catch
244 and returns the value of the exception object. __cxa_end_catch
246245 takes a exception structure reference as an argument. This function clears the
247246 exception from the exception space. Note: a rethrow from within the catch may
248247 replace this call with a __cxa_rethrow.

437436
438437
439438

An exception table contains information about what actions to take when an

440 exception is thrown in a particular part of a function's code. There is
439 exception is thrown in a particular part of a function's code. There is
441440 one exception table per function except leaf routines and functions that have
442441 only calls to non-throwing functions will not need an exception table.

443442
454453
455454
456455
457
  • Testing/Testing/Testing.li>>

  • 456
  • Testing/Testing/Testing.p>>

  • 458457
    459458
    460459