Vscode-cpptools: Add support for arm and arm64 intelliSenseModes

Created on 18 Sep 2019  Â·  18Comments  Â·  Source: microsoft/vscode-cpptools

This is semi-separate from the other issues tracking our extension running on ARM machines, i.e. this is for whenever the user's code is built to target arm.

intelliSenseModes would be gcc-arm, gcc-arm64, clang-arm, clang-arm64, windows-arm, windows-arm64 .

Originally reported at https://github.com/microsoft/vscode-cpptools/issues/4269 .

Feature Request Language Service Works in VS fixed (release pending)

Most helpful comment

It would be super helpful if there was some way to use intelliSenseModes for the raspberry pi 2,3,and 4.

All 18 comments

When use VS Code and the remote extension to edit on a Raspberry Pi (v3 in this case) I see the error:

Architecture arm is not supported.
Source: C/C++ (Extension)

This is the issue tracking this feature, correct?

Running on ARM is being tracked by https://github.com/microsoft/vscode-cpptools/issues/429 and https://github.com/microsoft/vscode-cpptools/issues/2506. This issue is related, but would repro even on a non-ARM machine that was targeting ARM.

@Thanks, Mr. @sean-mcmanus . I will make sure to watch these two other threads. Thanks!

It would be super helpful if there was some way to use intelliSenseModes for the raspberry pi 2,3,and 4.

Is this supposed to be detected automatically by querying compiler? I'm using arm-raspberrypi-linux-gnueabi-g++ and I get IntelliSense Mode: gcc-x64.

PS. I'm trying this on the insiders build.

Is this supposed to be detected automatically by querying compiler? I'm using arm-raspberrypi-linux-gnueabi-g++ and I get IntelliSense Mode: gcc-x64.

PS. I'm trying this on the insiders build.

What value did you set IntelliSenseMode property? Can you share your c_cpp_properties.json file? The IntelliSenseMode is not set automatically and must be set to architecture/compiler that best matches your compiler and target architecture. In this case, it should be set to gcc-arm.

@michelleangela I'm not setting IntelliSenseMode, I think sometimes it figures what compiler part to use (gcc or msvc), but it does not automatically detect architecture? Pretty much all I have in c_cpp_properties.json is "configurationProvider": "ms-vscode.cmake-tools" and I thought the idea was for everything to be set properly depending on CMake configuration?

This is not ideal, because when you use cmake-tools, you'll want to use different variants with possibly different compilers. So you would be switching between cmake-tools variants, and not between cpptools configs. Currently it seems you would have to switch between both, and it seems too error-prone.

Hopefully the above said make sense.

@sean-mcmanus Ah nice, this seems to be the thing.

If the IntelliSense configuration settings are coming from a configurationProvider, the provider may need to specify the correct IntelliSenseMode for a given compiler.

The task for ms-vscode.cmake-tools on adding support for ARM IntelliSenseMode as well as better selection of IntelliSenseMode for possible compilers is currently in progress. The issue is https://github.com/microsoft/vscode-cmake-tools/issues/1155.

@michelleangela Awesome! Thanks for the information.

This issue is fixed in 0.28.0.
0.28.0 release: https://github.com/microsoft/vscode-cpptools/releases/tag/0.28.0

I'm a little confused. Support ARM architecture is supposed to be added in 0.28.0 but I'm still getting "architecture arm is not supported". Running VSCode remotely on raspberry pi 4 hardware. So I'm not what is the status of the ARM support.

@sokzmalin

This feature is for adding IntelliSense modes to emulate ARM architecture and not for the extension to run on an actual ARM device. The issue to add support for the extension to run on ARM devices is being tracked by issues https://github.com/microsoft/vscode-cpptools/issues/429 and https://github.com/microsoft/vscode-cpptools/issues/2506.

@sokzmalin

This feature is for adding IntelliSense modes to emulate ARM architecture and not for the extension to run on an actual ARM device. The issue to add support for the extension to run on ARM devices is being tracked by issues #429 and #2506.

I am developing and app using Windows 10 for Raspberry pi3, using the remote-ssh connection.
I am facing: "Architecture arm is not supported."
Is the fix in this thread supposed to work for my setup? Using intelisense 28.2 version, installed on remote.

I am developing and app using Windows 10 for Raspberry pi3, using the remote-ssh connection.
I am facing: "Architecture arm is not supported."
Is the fix in this thread supposed to work for my setup? Using intelisense 28.2 version, installed on remote.

@jakcho , the issue tracking the support for the extension to run on ARM/ARM64 devices are at #429 and #2506. This issue #4271 was for IntelliSense modes only.

I am developing and app using Windows 10 for Raspberry pi3, using the remote-ssh connection.
I am facing: "Architecture arm is not supported."
Is the fix in this thread supposed to work for my setup? Using intelisense 28.2 version, installed on remote.

@jakcho , the issue tracking the support for the extension to run on ARM/ARM64 devices are at #429 and #2506. This issue #4271 was for IntelliSense modes only.

What is the difference? I face the same issue as @jakcho. To work remotely on the Raspberry PI with IntelliSense would awesome.

IntelliSense mode is just emulation, where the IntelliSense engine will evaluate data sizes and some preprocessor definitions in the source code based on the selected IntelliSense mode architecture. So the host machine that the extension is running on can be an x64-bit machine, but you can tell IntelliSense to evaluate the source code as if it's being compiled for a different architecture.

This is different from running the C/C++ extension on an ARM or ARM64 machine. For the extension to run on those machines, the extension needs to be build for those machine instruction set. Currently, the extension can run on x64 bit machines on Windows, Linux, and macOS platforms.

Was this page helpful?
0 / 5 - 0 ratings