[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