https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115167

--- Comment #3 from David Edelsohn <dje at gcc dot gnu.org> ---
On PPC64 Linux, gcc-rich-location.o now has undefined references to
range_label_for_type_mismatch:

$ nm -BCpg gcc-rich-location.o | grep range_label_for_type_mismatch
                 U vtable for range_label_for_type_mismatch
                 U range_label_for_type_mismatch::get_text(unsigned int) const

and c-objc-common.o provides definitions:

$ nm -BCpg c-objc-common.o | grep range_label_for_type_mismatch
0000000000001140 T range_label_for_type_mismatch::get_text(unsigned int) const
0000000000000000 V vtable for range_label_for_type_mismatch

AIX similarly has the undefined symbols:

$ /usr/bin/nm -BCpgl gcc-rich-location.o | grep range_label_for_type_mismatch 
         - U _ZTV29range_label_for_type_mismatch
         - U ._ZNK29range_label_for_type_mismatch8get_textEj

and the definition in c-objc-common.o:

$ /usr/bin/nm -BCpgl c-objc-common.o | grep range_label_for_type_mismatch 
      4592 T ._ZNK29range_label_for_type_mismatch8get_textEj
     13828 D _ZNK29range_label_for_type_mismatch8get_textEj
     14000 D _ZTV29range_label_for_type_mismatch


Linux seems to accept the undefined symbols in Fortran, but AIX semantics
requires a definition.

My instinct is that this is a "bug" for all systems, but Linux semantics
ignores or garbage collects the undefined symbol.

Reply via email to