This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Tue, Aug 4, 2015 at 11:43 AM, Sriraman Tallam <tmsriram@google.com> wrote: > On Tue, Jun 16, 2015 at 4:22 PM, Sriraman Tallam <tmsriram@google.com> wrote: >> On Tue, May 19, 2015 at 9:11 AM, Xinliang David Li <davidxl@google.com> wrote: >>>> >>>> Hm. But which options are unsafe? Also wouldn't it be better to simply >>>> _not_ have unsafe options produce comdats but always make local clones >>>> for them (thus emit the comdat with "unsafe" flags dropped)? >>> >>> Always localize comdat functions may lead to text size increase. It >>> does not work if the comdat function is a virtual function for >>> instance. >> >> Based on Richard's suggestion, I have a patch to localize comdat >> functions which seems like a very effective solution to this problem. >> The text size increase is limited to the extra comdat copies generated >> for the specialized modules (modules with unsafe options) which is >> usually only a few. Since -fweak does something similar for >> functions, I have called the new option -fweak-comdat-functions. >> This does not apply to virtual comdat functions as their addresses can >> always be leaked via the vtable. Using this flag with virtual >> functions generates a warning. >> >> To summarize, this is the intended usage of this option. Modules which >> use unsafe code options, like -m<isa> for multiversioning, to generate >> code that is meant to run only on a subset of CPUs can generate >> comdats with specialized instructions which when picked by the linker >> can get run unconditionally causing SIGILL on unsupported platforms. >> This flag hides these comdats to be local to these modules and not >> make them available publicly, with the caveat that it does not apply >> to virtual comdats. >> >> Could you please review? > > Ping. This patch uses Richard's suggestion to localize comdat > functions with option -fno-weak-comdat-functions. Comments? Ping. * c-family/c.opt (fweak-comdat-functions): New option. * cp/decl2.c (comdat_linkage): Implement new option. Warn when virtual comdat functions are seen. * doc/invoke.texi: Document new option. * testsuite/g++.dg/no-weak-comdat-functions-1.C: New test. > > * c-family/c.opt (fweak-comdat-functions): New option. > * cp/decl2.c (comdat_linkage): Implement new option. Warn when > virtual comdat functions are seen. > * doc/invoke.texi: Document new option. > * testsuite/g++.dg/no-weak-comdat-functions-1.C: New test. > > >> >> * c-family/c.opt (fweak-comdat-functions): New option. >> * cp/decl2.c (comdat_linkage): Implement new option. Warn when >> virtual comdat functions are seen. >> * doc/invoke.texi: Document new option. >> * testsuite/g++.dg/no-weak-comdat-functions-1.C: New test. >> >> >> Thanks >> Sri >> >> >>> >>> David >>> >>> >>>> >>>> Richard. >>>> >>>>> >>>>> Thanks >>>>> Sri
Attachment:
no_weak_comdat_functions.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |