Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Community » Coffee corner » Do we have support for Windows on ARM64?
Do we have support for Windows on ARM64? [message #61394] Thu, 09 January 2025 10:38 Go to next message
Tom1
Messages: 1309
Registered: March 2007
Ultimate Contributor
Hi,

I noticed that new Windows laptops have appeared on the market with ARM64 architecture processors (e.g. Qualcomm Snapdragon X Plus X1P-42-100). Is U++ ready for this?

Best regards,

Tom
Re: Do we have support for Windows on ARM64? [message #61424 is a reply to message #61394] Tue, 04 February 2025 08:35 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 14281
Registered: November 2005
Ultimate Member
Tom1 wrote on Thu, 09 January 2025 10:38
Hi,

I noticed that new Windows laptops have appeared on the market with ARM64 architecture processors (e.g. Qualcomm Snapdragon X Plus X1P-42-100). Is U++ ready for this?

Tom


No. But it will probably not be an issue. CLANG-MINGW seems to support these for a long time. And ARM is not a problem - we run on MacOS M1 and Rapsberry PI without issue. Also windows emulate x86.
Re: Do we have support for Windows on ARM64? [message #61426 is a reply to message #61424] Tue, 04 February 2025 12:09 Go to previous messageGo to next message
Tom1
Messages: 1309
Registered: March 2007
Ultimate Contributor
Thanks Mirek,

I guess this support will need to be sorted out within a couple of years, i.e. just before clients start to wonder why our apps do not install/run on their brand new Windows laptops.

Visual Studio 2022 (x64) can target ARM64 too, so could we be lucky enough to have it working by just adding a suitable BM?

Anyway, I do not have such a laptop, so I will not be able to test this yet.

Best regards,

Tom

EDIT: OK, they may run in emulation, but I mean natively...

[Updated on: Tue, 04 February 2025 12:10]

Report message to a moderator

Re: Do we have support for Windows on ARM64? [message #61427 is a reply to message #61426] Tue, 04 February 2025 12:44 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 14281
Registered: November 2005
Ultimate Member
Tom1 wrote on Tue, 04 February 2025 12:09
Thanks Mirek,

I guess this support will need to be sorted out within a couple of years, i.e. just before clients start to wonder why our apps do not install/run on their brand new Windows laptops.

Visual Studio 2022 (x64) can target ARM64 too, so could we be lucky enough to have it working by just adding a suitable BM?


Yes. CLANG Toolchain we use even supports it already...
Re: Do we have support for Windows on ARM64? [message #61873 is a reply to message #61427] Sun, 30 November 2025 16:18 Go to previous messageGo to next message
Tom1
Messages: 1309
Registered: March 2007
Ultimate Contributor
Hi,

I discovered a nice black friday deal and finally decided to order a laptop with snapdragon and Windows 11 ARM. Any suggestions on how to get Ultimate++ up and running natively on this platform? I guess I will get the laptop in just a few days...

Best regards,

Tom
Re: Do we have support for Windows on ARM64? [message #61874 is a reply to message #61873] Sun, 30 November 2025 20:18 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 14281
Registered: November 2005
Ultimate Member
Tom1 wrote on Sun, 30 November 2025 16:18
Hi,

I discovered a nice black friday deal and finally decided to order a laptop with snapdragon and Windows 11 ARM. Any suggestions on how to get Ultimate++ up and running natively on this platform? I guess I will get the laptop in just a few days...

Best regards,

Tom


From what I know, and I might be wrong, start with running U++ non-natively. Then fiddle with compiler/build methods.

https://github.com/mstorsjo/llvm-mingw

which we use supports ARM (but I tend to delete it from the archive for now).

IMO, over speaking should not be all that hard.

Keep us updated, this is interesting.

Mirek

[Updated on: Sun, 30 November 2025 20:19]

Report message to a moderator

Re: Do we have support for Windows on ARM64? [message #61884 is a reply to message #61874] Fri, 05 December 2025 10:53 Go to previous messageGo to next message
Tom1
Messages: 1309
Registered: March 2007
Ultimate Contributor
Hi Mirek,

OK, now I have the new laptop with Windows 11 ARM64 up and running. The nightly upp installed easily and runs in the Prism emulation (embedded in Windows 11 ARM by default) very well and does not feel sluggish at all.

The next step I took was downloading ARM64 version of the llvm tools from:

https://github.com/mstorsjo/llvm-mingw/releases/download/202 51202/llvm-mingw-20251202-ucrt-aarch64.zip

Then I extracted the contents and replaced the entire C:\upp\bin\clang -directory with the contents from this archive. I opened theide and the UWord from examples. As I tried to compile it, the compiler first complained about the 'Common option -mpopcnt' which is not supported by aarch64. So I removed that option.

I also changed the PATH executable directory: C:\upp\bin\clang\x86_64-w64-mingw32\bin path to point at C:\upp\bin\clang\aarch64-w64-mingw32\bin instead.

I made those changes to a new build method 'CLANGARM64' using 'CLANG' builder. I know this is not complete and probably needs more changes for at least the other paths, includes and libraries, depending on the program being built.

Next issue was found on Core\Debug.cpp around line 270. The 'qword esp = ep->ContextRecord->Rsp;' and 'dword esp = ep->ContextRecord->Esp;' do not exist here. I do not know how to really fix this, but as a quick and dirty workaround I decided to replace that code with just 'qword esp = 0;' and consequently the UWord compiled, linked and runs OK!

So, I guess all this is doable, but requires some tuning in TheIDE so that everything runs natively out of the box. Can you take a more professional look at this based on this description?

Best regards,

Tom
Re: Do we have support for Windows on ARM64? [message #61885 is a reply to message #61884] Fri, 05 December 2025 11:06 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 14281
Registered: November 2005
Ultimate Member
Tom1 wrote on Fri, 05 December 2025 10:53
Hi Mirek,

OK, now I have the new laptop with Windows 11 ARM64 up and running. The nightly upp installed easily and runs in the Prism emulation (embedded in Windows 11 ARM by default) very well and does not feel sluggish at all.

The next step I took was downloading ARM64 version of the llvm tools from:

https://github.com/mstorsjo/llvm-mingw/releases/download/202 51202/llvm-mingw-20251202-ucrt-aarch64.zip

Then I extracted the contents and replaced the entire C:\upp\bin\clang -directory with the contents from this archive. I opened theide and the UWord from examples. As I tried to compile it, the compiler first complained about the 'Common option -mpopcnt' which is not supported by aarch64. So I removed that option.

I also changed the PATH executable directory: C:\upp\bin\clang\x86_64-w64-mingw32\bin path to point at C:\upp\bin\clang\aarch64-w64-mingw32\bin instead.

I made those changes to a new build method 'CLANGARM64' using 'CLANG' builder. I know this is not complete and probably needs more changes for at least the other paths, includes and libraries, depending on the program being built.

Next issue was found on Core\Debug.cpp around line 270.


Slightly off topic, you do know about "Misc/Copy current position" ? Smile

Quote:

The 'qword esp = ep->ContextRecord->Rsp;' and 'dword esp = ep->ContextRecord->Esp;' do not exist here. I do not know how to really fix this, but as a quick and dirty workaround I decided to replace that code with just 'qword esp = 0;' and consequently the UWord compiled, linked and runs OK!


That whole thing can go away I guess, it is fossil...

Quote:

So, I guess all this is doable, but requires some tuning in TheIDE so that everything runs natively out of the box. Can you take a more professional look at this based on this description?


I guess there 2 hard problems ahead:

- libraries that we ship with (esp OpenSSL). that is even more sad as updating libraries takes awful amount of time, now there would be another architecture...
- debugging. That might possibly work (test please), but at minimum the dissassembler only supports x86.

Mirek
Re: Do we have support for Windows on ARM64? [message #61886 is a reply to message #61885] Fri, 05 December 2025 12:34 Go to previous messageGo to next message
Tom1
Messages: 1309
Registered: March 2007
Ultimate Contributor
Hi,

Quote:

Slightly off topic, you do know about "Misc/Copy current position" ? Smile

I have no idea what this is... should I??

Quote:

I guess there 2 hard problems ahead:

- libraries that we ship with (esp OpenSSL). that is even more sad as updating libraries takes awful amount of time, now there would be another architecture...
- debugging. That might possibly work (test please), but at minimum the dissassembler only supports x86.


- I agree, libraries cause a constantly increasing amount of work and adding another architecture is again a multiplier to this work.

- Debugging does not work here. Tried to run UWord in debugger and TheIDE reported: "Error! SetThreadContext failed. The thread context could not be updated because this has been restricted for the process. (1660)"

Best regards,

Tom
Re: Do we have support for Windows on ARM64? [message #61887 is a reply to message #61886] Fri, 05 December 2025 12:38 Go to previous messageGo to next message
Tom1
Messages: 1309
Registered: March 2007
Ultimate Contributor
Now tried to "Setup > Upgrade TheIDE" in order to get native TheIDE if that has any effect for debugging. However, I was unable to compile it:
Saving 
----- ide/Common ( GUI CLANG BLITZ WIN32 ) (1 / 40)
BLITZ: ComDlg.cpp Module.cpp Util.cpp
----- ide/Core ( GUI CLANG BLITZ WIN32 ) (2 / 40)
BLITZ: Ide.cpp Cache.cpp Core.cpp Util.cpp Builder.cpp PPinfo.cpp Assembly.cpp Package.cpp Workspace.cpp usc.cpp BinObj.cpp Signature.cpp Host
    .cpp Logger.cpp
----- ide/LayDes ( GUI CLANG BLITZ WIN32 ) (3 / 40)
BLITZ: sdiff.cpp laylib.cpp layusc.cpp property.cpp textprop.cpp fontprop.cpp propane.cpp item.cpp layout.cpp visgen.cpp laydes.cpp layfile.cp
    p laywin.cpp
----- ide/Builders ( GUI CLANG WIN32 ) (4 / 40)
Precompiling header: Builders.h
ide/Common: 3 file(s) built in (0:01.51), 505 msecs / file
ide/Core: 14 file(s) built in (0:02.48), 177 msecs / file
ide/LayDes: 13 file(s) built in (0:03.67), 282 msecs / file
CppBuilder.cpp
MakeFile.cpp
CCJ.cpp
GccBuilder.cpp
MscBuilder.cpp
JavaBuilder.cpp
ScriptBuilder.cpp
Cocoa.cpp
AndroidProject.cpp
AndroidApplicationMakeFile.cpp
AndroidMakeFile.cpp
AndroidModuleMakeFile.cpp
AndroidBuilder.cpp
AndroidBuilderCommands.cpp
AndroidBuilderUtils.cpp
AndroidModuleMakeFileBuilder.cpp
Blitz.cpp
Build.cpp
Install.cpp
BuilderUtils.cpp
ide/Builders: 21 file(s) built in (0:07.57), 360 msecs / file
Creating library...
C:/upp/bin/clang/bin/llvm-ar.exe: warning: creating C:/upp/out/uppsrc/ide/Builders/CLANGARM64.Gui\Builders.a
C:/upp/out/uppsrc/ide/Builders/CLANGARM64.Gui\Builders.a (1124408 B) created in (0:00.07)
----- ide/Debuggers ( GUI CLANG BLITZ WIN32 ) (5 / 40)
BLITZ: Terminal.cpp Disas.cpp GdbCmd.cpp GdbData.cpp Gdb.cpp GdbMem.cpp GdbUtils.cpp Debug.cpp Mem.cpp Sym.cpp Exp.cpp PrettyUpp.cpp PrettyStd
    .cpp Scripts.cpp Pretty.cpp Visualise.cpp Data.cpp Tree.cpp Stack.cpp Code.cpp
Cpu.cpp
Pdb.cpp
----- ide/Browser ( GUI CLANG BLITZ WIN32 ) (6 / 40)
BLITZ: Util.cpp TopicBase.cpp File.cpp Topic.cpp Template.cpp Link.cpp TopicWin.cpp Move.cpp CodeRef.cpp TopicI.cpp
----- CodeEditor ( GUI CLANG BLITZ WIN32 ) (7 / 40)
BLITZ: Register.cpp HighlightOut.cpp Syntax.cpp Style.cpp RegisterSyntax.cpp CSyntax.cpp CInit.cpp CHighlight.cpp CLogic.cpp DiffSyntax.cpp Ta
    gSyntax.cpp PythonSyntax.cpp LogSyntax.cpp EditorBar.cpp FindReplace.cpp Lang.cpp CodeEditor.cpp
----- CtrlLib ( GUI CLANG BLITZ WIN32 ) (8 / 40)
BLITZ: CtrlLibInit.cpp SmartText.cpp LabelBase.cpp DisplayPopup.cpp Button.cpp Switch.cpp VirtualButtons.cpp EditField.cpp Text.cpp LineEdit.c
    pp DocEdit.cpp ScrollBar.cpp HeaderCtrl.cpp ArrayCtrl.cpp MultiButton.cpp PopupTable.cpp PopUpList.cpp DropList.cpp DropChoice.cpp Static.
    cpp Splitter.cpp FrameSplitter.cpp SliderCtrl.cpp ColumnList.cpp Progress.cpp AKeys.cpp RichTextView.cpp Prompt.cpp Help.cpp DateTimeCtrl.
    cpp SuggestCtrl.cpp Bar.cpp ToolButton.cpp ToolBar.cpp ToolTip.cpp StatusBar.cpp TabCtrl.cpp TreeCtrl.cpp DropTree.cpp DlgColor.cpp ColorP
    opup.cpp ColorPusher.cpp FileList.cpp FileSel.cpp FileSelUtil.cpp PrinterJob.cpp Windows.cpp Win32.cpp Gtk.cpp TrayIconWin32.cpp TrayIconX
    11.cpp TrayIconGtk.cpp Update.cpp CtrlUtil.cpp BeginnerInfo.cpp LNGCtrl.cpp Ch.cpp ChGtk3.cpp ChCoco.cpp
MenuItem.cpp
MenuBar.cpp
ChWin32.cpp
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:1:26: error: no member named 'Rax' in '_CONTEXT'
    1 | CPU_REG(CV_AMD64_AL    , Rax, REG_L, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:2:26: error: no member named 'Rcx' in '_CONTEXT'
    2 | CPU_REG(CV_AMD64_CL    , Rcx, REG_L, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:3:26: error: no member named 'Rdx' in '_CONTEXT'
    3 | CPU_REG(CV_AMD64_DL    , Rdx, REG_L, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:4:26: error: no member named 'Rbx' in '_CONTEXT'
    4 | CPU_REG(CV_AMD64_BL    , Rbx, REG_L, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:5:26: error: no member named 'Rax' in '_CONTEXT'
    5 | CPU_REG(CV_AMD64_AH    , Rax, REG_H, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:6:26: error: no member named 'Rcx' in '_CONTEXT'
    6 | CPU_REG(CV_AMD64_CH    , Rcx, REG_H, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:7:26: error: no member named 'Rdx' in '_CONTEXT'
    7 | CPU_REG(CV_AMD64_DH    , Rdx, REG_H, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:8:26: error: no member named 'Rbx' in '_CONTEXT'
    8 | CPU_REG(CV_AMD64_BH    , Rbx, REG_H, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:9:26: error: no member named 'Rax' in '_CONTEXT'
    9 | CPU_REG(CV_AMD64_AX    , Rax, REG_X, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:10:26: error: no member named 'Rcx' in '_CONTEXT'
   10 | CPU_REG(CV_AMD64_CX    , Rcx, REG_X, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:11:26: error: no member named 'Rdx' in '_CONTEXT'
   11 | CPU_REG(CV_AMD64_DX    , Rdx, REG_X, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:12:26: error: no member named 'Rbx' in '_CONTEXT'
   12 | CPU_REG(CV_AMD64_BX    , Rbx, REG_X, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:14:26: error: no member named 'Rsp' in '_CONTEXT'
   14 | CPU_REG(CV_AMD64_SP    , Rsp, REG_X, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:15:26: error: no member named 'Rbp' in '_CONTEXT'
   15 | CPU_REG(CV_AMD64_BP    , Rbp, REG_X, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:16:26: error: no member named 'Rsi' in '_CONTEXT'
   16 | CPU_REG(CV_AMD64_SI    , Rsi, REG_X, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:17:26: error: no member named 'Rdi' in '_CONTEXT'
   17 | CPU_REG(CV_AMD64_DI    , Rdi, REG_X, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:18:26: error: no member named 'Rax' in '_CONTEXT'
   18 | CPU_REG(CV_AMD64_EAX   , Rax, REG_E, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:19:26: error: no member named 'Rcx' in '_CONTEXT'
   19 | CPU_REG(CV_AMD64_ECX   , Rcx, REG_E, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
In file included from C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:20:
C:\upp\upp.src\uppsrc\ide\Debuggers/amd64.cpu:20:26: error: no member named 'Rdx' in '_CONTEXT'
   20 | CPU_REG(CV_AMD64_EDX   , Rdx, REG_E, NULL, 0)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
C:\upp\upp.src\uppsrc\ide\Debuggers\Cpu.cpp:19:85: note: expanded from macro 'CPU_REG'
   19 | #define CPU_REG(sym, context_var, kind, name, flags) case sym: return ctx.context64.context_var;
      |                                                                       ~~~~~~~~~~~~~ ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
In file included from C:/upp/out/uppsrc/ide/Debuggers/CLANGARM64.Blitz.Gui\ide/Debuggers$blitz.cpp:46:
C:\upp\upp.src\uppsrc\ide\Debuggers\Debug.cpp:255:29: error: no member named 'Rsp' in '_CONTEXT'
  255 |         f.sp = win64 ? c.context64.Rsp : c.context32.Esp;
      |                        ~~~~~~~~~~~ ^
C:\upp\upp.src\uppsrc\ide\Debuggers\Debug.cpp:420:46: error: no member named 'Rip' in '_CONTEXT'
  420 |                                                    && bp_set.Find((win64 ? t.context64.Rip : t.context32.Eip) - 1) >= 0
      |                                                                            ~~~~~~~~~~~ ^
C:\upp\upp.src\uppsrc\ide\Debuggers\Debug.cpp:427:21: error: no member named 'Rip' in '_CONTEXT'
  427 |                                                                 t.context64.Rip--;
      |                                                                 ~~~~~~~~~~~ ^
C:\upp\upp.src\uppsrc\ide\Debuggers\Debug.cpp:528:21: error: no member named 'EFlags' in '_CONTEXT'
  528 |                 context.context64.EFlags |= 0x100;
      |                 ~~~~~~~~~~~~~~~~~ ^
C:\upp\upp.src\uppsrc\ide\Debuggers\Debug.cpp:539:21: error: no member named 'EFlags' in '_CONTEXT'
  539 |                 context.context64.EFlags &= ~0x100;
      |                 ~~~~~~~~~~~~~~~~~ ^
In file included from C:/upp/out/uppsrc/ide/Debuggers/CLANGARM64.Blitz.Gui\ide/Debuggers$blitz.cpp:162:
C:\upp\upp.src\uppsrc\ide\Debuggers\Stack.cpp:28:44: error: no member named 'Rip' in '_CONTEXT'
   28 |                 stackFrame.AddrPC.Offset = ctx.context64.Rip;
      |                                            ~~~~~~~~~~~~~ ^
C:\upp\upp.src\uppsrc\ide\Debuggers\Stack.cpp:29:47: error: no member named 'Rbp' in '_CONTEXT'
   29 |                 stackFrame.AddrFrame.Offset = ctx.context64.Rbp;
      |                                               ~~~~~~~~~~~~~ ^
C:\upp\upp.src\uppsrc\ide\Debuggers\Stack.cpp:30:47: error: no member named 'Rsp' in '_CONTEXT'
   30 |                 stackFrame.AddrStack.Offset = ctx.context64.Rsp;
      |                                               ~~~~~~~~~~~~~ ^
In file included from C:/upp/out/uppsrc/ide/Debuggers/CLANGARM64.Blitz.Gui\ide/Debuggers$blitz.cpp:169:
C:\upp\upp.src\uppsrc\ide\Debuggers\Code.cpp:52:28: error: no member named 'Rip' in '_CONTEXT'
   52 |                 return context.context64.Rip;
      |                        ~~~~~~~~~~~~~~~~~ ^
C:\upp\upp.src\uppsrc\ide\Debuggers\Code.cpp:259:21: error: no member named 'Rip' in '_CONTEXT'
  259 |                 context.context64.Rip = a;
      |                 ~~~~~~~~~~~~~~~~~ ^
10 errors generated.
ide/Debuggers: 22 file(s) built in (0:01.75), 79 msecs / file
ide/Browser: 10 file(s) built in (0:02.84), 284 msecs / file
CodeEditor: 17 file(s) built in (0:03.07), 181 msecs / file
CtrlLib: 62 file(s) built in (0:09.70), 156 msecs / file

There were errors. (0:17.51) (completed at 13:33)

Best regards,

Tom
Re: Do we have support for Windows on ARM64? [message #61888 is a reply to message #61887] Fri, 05 December 2025 13:18 Go to previous message
mirek is currently offline  mirek
Messages: 14281
Registered: November 2005
Ultimate Member
Yes, that is sort of expected...

Anyway, you can #ifdef debugger out, but you will still have a problem with openssl...

Here are my notes about how to compile openssl:

https://github.com/ultimatepp/ultimatepp/blob/master/uppbox/ Scripts/updateinfo.txt

I think it should basically work for ARM too. Maybe with some additional adjustments.
Previous Topic: "A Call to Rediscover the Spirit of C++"
Goto Forum:
  


Current Time: Sat Dec 06 12:38:18 CET 2025

Total time taken to generate the page: 0.05243 seconds