try ... catch in an inline function produces .gcc_except_table.* in a COMDAT group with GCC or
newer Clang (since D83655). For --gc-sections, currently we scan .eh_frame
pieces and mark liveness of such a .gcc_except_table.* and then the associated
.text.* (if a member in a section group is retained, the others should be
retained as well).
Essentially all .text.* and .gcc_except_table.* compiled from inline
functions with try ... catch cannot be discarded by the imprecise --gc-sections.
Compared with the state before D83655, the output .gcc_except_table is smaller
(non-prevailing copies in COMDAT groups can now be discarded) but .text may be larger,
i.e. size regression.
This patch teaches the .eh_frame piece scanning code to not mark
.gcc_except_table in a section group, thus allow unused .text.* and
.gcc_except_table.* in a section group to be discarded.
Note, non-group .gcc_except_table can still not be discarded. That is the status quo.
That's an awful lot of ! in that if condition - perhaps that could be rewritten?