Skip to content
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

Strange CPU architecture handling/checking at build time #40576

Open
mscdex opened this issue Oct 23, 2021 · 1 comment
Open

Strange CPU architecture handling/checking at build time #40576

mscdex opened this issue Oct 23, 2021 · 1 comment
Labels
build Issues and PRs related to build files or the CI.

Comments

@mscdex
Copy link
Contributor

mscdex commented Oct 23, 2021

While attempting to track down the possible values for target_arch/process.arch I noticed that there is some strange stuff going on with regard to node's CPU architecture references at build time. Specifically:

  • tools/v8_gypfiles/v8.gyp references "mips64" for (v8_)target_arch, which is not a value permitted/used by configure.py anywhere.

  • tools/v8_gypfiles/v8.gyp appears to be missing support for "x32" (although tools/v8_gypfiles/toolchain.gypi seems to check for it), which is allowed by configure.py. At the very least the sources for the relevant builtins-*.cc file are missing for this platform.

  • tools/v8_gypfiles/v8.gyp does the same check twice in the same conditional. Not sure if the second check should be removed or if one of the values was supposed to be something like "riscv32".

    • If it's supposed to be "riscv32", then we should probably add this to configure.py and elsewhere.
  • configure.py can return "riscv32" from host_arch_cc() (whose return value gets set to target_arch when not cross compiling). This arch is not listed as a valid arch in configure.py (and further leads me to believe that one of the checks in the previous point should've been "riscv32").

  • host_arch_cc() in configure.py also seems to return 'ppc64' when checking for the __PPC__ define, which AFAICT is 32-bit and thus should be 'ppc' instead.

  • host_arch_cc() is missing support for checking for x32 ABI, which AFAICT should be doable by checking both __ILP32__ and __x86_64__.

  • process.arch docs seem to be outdated. Depending on if/how any of the above issues get resolved, at least the following values appear to be missing:

    • 'mips64'
    • 'mips64el'
    • 'riscv64'

    Also the following process.arch values should be removed from the documented list because they don't show up anywhere in the build system(?):

    • 's390'
@mscdex mscdex added the build Issues and PRs related to build files or the CI. label Oct 23, 2021
@richardlau
Copy link
Member

  • host_arch_cc() in configure.py also seems to return 'ppc64' when checking for the __PPC__ define, which AFAICT is 32-bit and thus should be 'ppc' instead.

I have a vague recollection that this was intentional as gcc on AIX would default to running in 32-bit mode (so no __PPC64__ defined).

bnoordhuis added a commit to bnoordhuis/io.js that referenced this issue Feb 9, 2022
I added support for x32 back in 2014 but it's been in a state of
disrepair ever since, not in the least because it was never a fully
supported architecture in upstream V8.

V8 dropped x32 support entirely in or around 2018 so the removal from
Node's build system is long overdue.

Refs: nodejs#40576
nodejs-github-bot pushed a commit that referenced this issue Feb 11, 2022
I added support for x32 back in 2014 but it's been in a state of
disrepair ever since, not in the least because it was never a fully
supported architecture in upstream V8.

V8 dropped x32 support entirely in or around 2018 so the removal from
Node's build system is long overdue.

Refs: #40576

PR-URL: #41905
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
bengl pushed a commit to bengl/node that referenced this issue Feb 21, 2022
I added support for x32 back in 2014 but it's been in a state of
disrepair ever since, not in the least because it was never a fully
supported architecture in upstream V8.

V8 dropped x32 support entirely in or around 2018 so the removal from
Node's build system is long overdue.

Refs: nodejs#40576

PR-URL: nodejs#41905
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
bengl pushed a commit to bengl/node that referenced this issue Feb 21, 2022
I added support for x32 back in 2014 but it's been in a state of
disrepair ever since, not in the least because it was never a fully
supported architecture in upstream V8.

V8 dropped x32 support entirely in or around 2018 so the removal from
Node's build system is long overdue.

Refs: nodejs#40576

PR-URL: nodejs#41905
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
danielleadams pushed a commit to danielleadams/node that referenced this issue Apr 21, 2022
I added support for x32 back in 2014 but it's been in a state of
disrepair ever since, not in the least because it was never a fully
supported architecture in upstream V8.

V8 dropped x32 support entirely in or around 2018 so the removal from
Node's build system is long overdue.

Refs: nodejs#40576

PR-URL: nodejs#41905
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
danielleadams pushed a commit that referenced this issue Apr 24, 2022
I added support for x32 back in 2014 but it's been in a state of
disrepair ever since, not in the least because it was never a fully
supported architecture in upstream V8.

V8 dropped x32 support entirely in or around 2018 so the removal from
Node's build system is long overdue.

Refs: #40576

PR-URL: #41905
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build Issues and PRs related to build files or the CI.
Projects
None yet
Development

No branches or pull requests

2 participants