[Bug c++/17053] New: [3.5 Regression] Repo functionality partially broken on AIX
dje at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Mon Aug 16 21:47:00 GMT 2004
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
More information about the Gcc-bugs
mailing list