diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 72feab11d9d..c29ae157db9 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2018-12-06 Iain Sandoe + + * scripts/make_exports.pl (check names): Don’t try to export + construction vtable symbols. + 2018-12-06 Jonathan Wakely Iain Sandoe diff --git a/libstdc++-v3/scripts/make_exports.pl b/libstdc++-v3/scripts/make_exports.pl index 7c9e4e31d4f..93100e17ddf 100644 --- a/libstdc++-v3/scripts/make_exports.pl +++ b/libstdc++-v3/scripts/make_exports.pl @@ -103,6 +103,14 @@ NAME: while () { # Ignore undefined and local symbols. next if (/^([^ ]+) [Ua-z] /); + # GCC does not export construction vtables from shared libraries. + # However the symbols are marked hidden, for Darwin that makes them + # also external "private_extern", which means that they show up in + # this list. When ld64 encounters them it generates a warning that + # they cannot be exported, so trim them from the set now. + next if (/^construction vtable.*$/); + next if (/^__ZTC.*$/); + # $sym is the name of the symbol, $noeh_sym is the same thing with # any '.eh' suffix removed. die "unknown nm output $_" if (! /^([^ ]+) [A-Z] /);