Release Candidate #1 for version 14.50 now available

Started by Pelle, July 14, 2026, 11:26:55 AM

Previous topic - Next topic

Pelle

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...
/Pelle

Vortex

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"
Code it... That's all...

John Z


Vortex

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.
Code it... That's all...

Pelle

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.

/Pelle

Vortex

Hi Pelle,

Thanks for the new release of Poasm fixing the issue.
Code it... That's all...