Setup for X64/X86:
https://www.pellesc.se/1450/setup.exe
Setup for ARM64:
https://www.pellesc.se/1450/setupa.exe
Changes:
https://www.pellesc.se/changes/changes_1410_1450.html
Most changes are of the kind "if not correct, none of the Pelles C tools would build or run", but to verify reported bugs are fixed let's do a Release Candidate...
Hi Pelle,
Thanks for the new release. Regarding the keyword ALIAS :
QuoteRevised POASM handling of ALIAS directive (IA32, AMD64, ARM64).
Could you give an example? I am trying to rebuild my example below :
https://forum.pellesc.de/index.php?topic=11168.0
This one does not seem to work with Poasm Version 14.50.0 :
printf PROTO C :DWORD,:VARARG
OutputText PROTO C :DWORD,:VARARG
ALIAS "OutputText"="printf"
Thanks Pelle!
Nice surprise :)
👍👍👍
John Z
Assembling and linking the code below with Poasm Version 14.50.0 :
.386
.model flat,stdcall
option casemap:none
ExitProcess PROTO :DWORD
printf PROTO C :DWORD,:VARARG
OutputText PROTO C :DWORD,:VARARG
ALIAS "OutputText"="printf"
includelib \PellesC\lib\Win\kernel32.lib
includelib msvcrt.lib
.data
string db 'Hello world!',0
.code
start:
invoke OutputText,ADDR string
invoke ExitProcess,0
END start
The executable is crashing.
An Ollydbg session is demonstrating the issue :
012D1000 > $ 68 00202D01 PUSH CalcLen.012D2000 ; ASCII "Hello world!"
012D1005 . E8 F6EFFFFF CALL CalcLen.012D0000
012D100A . 83C4 04 ADD ESP,4
012D100D . 6A 00 PUSH 0 ; /ExitCode = 0
012D100F . E8 00000000 CALL <JMP.&KERNEL32.ExitProcess> ; \ExitProcess
012D1014 $-FF25 5C202D01 JMP DWORD PTR DS:[<&KERNEL32.ExitProcess>; kernel32.ExitProcess
012D101A .-FF25 64202D01 JMP DWORD PTR DS:[<&msvcrt.printf>] ; msvcrt.printf
CALL CalcLen.012D0000 is not correct.
Quote from: Vortex on July 14, 2026, 03:56:05 PMRegarding the keyword ALIAS :
Could you give an example?
The ALIAS directive is not very useful. It was once added because MASM had it, but the implementation in POASM was always a bit backwards because of related support for other "weak external" symbols. Trying to clean this up now made POASM better, but of course then it fails in POLINK (now fixed).
The only time I ever used the ALIAS directive was when building older versions of oldnames*.lib, using a bunch of auto-generated assembly files, mapping open() to _open(), chdir() to _chedir(), and so on. This has since been replaced with a different and better approach.
Hi Pelle,
Thanks for the new release of Poasm fixing the issue.