From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6337 invoked by alias); 16 Aug 2004 21:47:09 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 6319 invoked by uid 48); 16 Aug 2004 21:47:08 -0000 Date: Mon, 16 Aug 2004 21:47:00 -0000 From: "dje at gcc dot gnu dot org" To: gcc-bugs@gcc.gnu.org Message-ID: <20040816214702.17053.dje@gcc.gnu.org> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug c++/17053] New: [3.5 Regression] Repo functionality partially broken on AIX X-Bugzilla-Reason: CC X-SW-Source: 2004-08/txt/msg01578.txt.bz2 List-Id: Mark Mitchell's patch to clean up linkage handling has damaged -frepo functionality on AIX and has caused a number of regressions in the testsuite: g++.old-deja/g++.pt/instantiate4.C g++.old-deja/g++.pt/instantiate6.C g++.old-deja/g++.pt/repo1.C g++.old-deja/g++.pt/repo2.C g++.old-deja/g++.pt/repo4.C The testcases now all result in a linker error. ./xgcc -B./ -c -frepo repo4.C ./xgcc -B./ -frepo repo4.o collect: recompiling repo4.C collect: relinking ld: 0711-317 ERROR: Undefined symbol: _GLOBAL__F_main After the linkage patch, the existence of frame info for some functions depends on whether the -frepo option is present. collect2.c does not re-scan the object file as part of relinking and uses the existing frame information from the first scan referencing frame info that no longer is present when relinking without -frepo option. I have tracked down the difference in frame info to the call to _ZN1SIiED1Ev. Depending on the presence of -frepo, the tree for that call gets marked TREE_NOTHROW, causing ecf_flags to have ECF_NOTHROW set, causing REG_EH_REGION reg_note to be attached to the RTL, causing the TREE_NOTHROW and all_throwers_are_sibcalls to be cleared for the function, causing output_call_frame_info() to determine that no unwinding will be needed and not emitting any frame info. For targets that do not use collect2, the change in frame info probably will go unnoticed. I do not know if the new -frepo-dependent behavior is intentional and/or a consequence of the lazy evaluation. I am not sure whether the NOTHROW property should be changing. collect2 possibly could be changed to rescan the files when relinking, but that may be papering over a problem if NOTHROW should be consistent. -- Summary: [3.5 Regression] Repo functionality partially broken on AIX Product: gcc Version: 3.5.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dje at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: powerpc-ibm-aix5.1.0.0 GCC host triplet: powerpc-ibm-aix5.1.0.0 GCC target triplet: powerpc-ibm-aix5.1.0.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17053