-
Notifications
You must be signed in to change notification settings - Fork 29.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
deps: define missing operator delete functions #10173
Conversation
Section 3.2 of the C++ standard states that destructor definitions implicitly "use" operator delete functions. Therefore, these operator delete functions must be defined even if they are never called by user code explicitly. http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#261 gcc allows them to remain as empty definitions. However, not all compilers allow this. This pull request creates definitions which if ever called, result in an abort.
I guess whether we do this or not is @nodejs/lts’s call? |
I'm not a member of the LTS team, but this doesn't seem worth it for a branch that is EOL in a couple weeks. |
I agree with @cjihrig |
Also, is this really an issue and not just academic? |
This affects the z/OS port that uses xlc compiler. |
Okay, I think I see. It's because those classes explicitly declare delete operators but without defining them in any compilation units, correct? Don't you also need definitions for Isolate and SealHandleScope in that case? I should warn you that this pull request may be simply too late if you want it to show up in a release. v0.12 is so close to its end of life that it probably won't see another release again. |
I will cancel this PR since it is close to EOL. Will look at making these changes in node v6
|
If you plan on upstreaming these changes into V8 anyway, the V8 master branch might be the best way to start. Node is somewhat picky a) about the changes to deps/ that it accepts that could also be applied upstream first and b) about changes to LTS versions that would also apply on master (because there is a general rule that changes need to live 2 weeks in a Current release before going into LTS). |
I've opened #10356 with the extra changes. |
Checklist
Affected core subsystem(s)
v8
Description of change
Section 3.2 of the C++ standard states that destructor definitions
implicitly "use" operator delete functions. Therefore, these operator
delete functions must be defined even if they are never called by
user code explicitly.
http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#261
gcc allows them to remain as empty definitions. However, not all
compilers allow this.
This pull request creates definitions which if ever called, result
in an abort.