------- Comment #11 from danglin at gcc dot gnu dot org 2007-02-03 01:54 ------- The patch mentioned in comment #3 was applied to the 4.1 branch and introduces a regression in 4.1.2 on hppa1.1-hp-hpux10.20.
As a result, it's no longer possible to use EH exception support on this target. This is the default. Unfortunately, I haven't had a chance to change config.gcc to disable use of EH exceptions or to document this problem. The change installed to fix PR rtl-optimization/29323 causes EH data to emitted for all functions which don't bind locally. This exposed a latent bug in the HP linker; it can't handle the relocations relating to COMDAT sections that have been nullified. On the one hand, this is likely to cause problems for weak (COMDAT) functions which can throw. On the other hand, there aren't any in libstdc++ and the problem didn't expose itself in building at least one large C++ application (lyx). Personally, I believe that the fix for PR 29323 was wrong and has bloated the EH data emitted by GCC. The EH data for a module are only relevant to the functions in the module itself. If a function in a module can't throw, then we don't need EH exception data for it. I think we need to decide how TREE_NOTHROW is to be used. If it's to be used to control the emission of EH data, then it should be set based on analysis of the module being compiled and not whether a function binds locally or not. -- danglin at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mark at codesourcery dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29487