digitalmars.D.bugs - [Issue 10833] New: DMD puts mixin's source code in the binary
- d-bugmail puremagic.com (24/24) Aug 16 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10833
- d-bugmail puremagic.com (15/15) Aug 16 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10833
- d-bugmail puremagic.com (8/8) Aug 17 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10833
- d-bugmail puremagic.com (19/19) Aug 19 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10833
- d-bugmail puremagic.com (11/12) Aug 19 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10833
- d-bugmail puremagic.com (8/12) Aug 19 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10833
- d-bugmail puremagic.com (18/18) Aug 19 2013 http://d.puremagic.com/issues/show_bug.cgi?id=10833
http://d.puremagic.com/issues/show_bug.cgi?id=10833 Summary: DMD puts mixin's source code in the binary Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: critical Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: temtaime gmail.com import std.stdio; string foo()() { return `void main() { writefln("hello world"); }`; } mixin(foo); Compiled with -O -release Copy from IDA PRO strings window: .CRT$XIA:0043F100 00000029 C void main() { writefln(\"hello world\"); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 16 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10833 Andrej Mitrovic <andrej.mitrovich gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |andrej.mitrovich gmail.com 15:40:45 PDT --- W.r.t. -O and -release, if this feature is implemented I think it would be better if it was a separate switch (e.g. -security), rather than have to depend on security features based on what optimization some compiler implements. Sometimes you can't even compile with -release or -O (due to bugs), so you shouldn't be forced to lose security features because of optimization bugs. (+ maybe D could standardize on these security features). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 16 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10833 I think there is no need to have any switches. If D debugger requires mixin's source - then source in binary should to be only when -g flag specified. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 17 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10833 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|critical |enhancement The mixin source isn't put into the binary. What you're seeing is the executable code of the template that you instantiated. It's exactly as if you wrote: string foo() { return `void main() { writefln("hello world"); }`; } There's a possible optimisation: templates instantiated only in a compile-time context don't need to be put into the binary. Unfortunately the linker isn't smart enough to detect they are never used. This should be fixable, but it's not actually a bug. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 19 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10833 Vladimir Panteleev <thecybershadow gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |thecybershadow gmail.com 15:05:42 EEST ---This should be fixable, but it's not actually a bug.FWIW, it can be a serious issue for closed-source software products, where details about the source code must not be present in executables. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 19 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10833 06:45:42 PDT ---Yeah. This is why I propose a -security switch to add guarantees about what the compiler does, rather than rely on compiler optimizations. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------This should be fixable, but it's not actually a bug.FWIW, it can be a serious issue for closed-source software products, where details about the source code must not be present in executables.
Aug 19 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10833 hsteoh quickfur.ath.cx changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hsteoh quickfur.ath.cx IMO DMD should somehow keep track of which template instantiations actually require code to be emitted. If a template function only runs in CTFE but not at runtime, that code shouldn't even be emitted in the first place. Tho I understand that separate compilation may make this tricky. :) One possible approach is to emit all template instantiations in a separate static library that the linker can then selectively pull from. Linkers are designed to only pull parts of the library that are actually referenced, so this won't require massive compiler changes. Then we can both reduce template bloat and avoid security issues like this one. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 19 2013