Release Candidate #1 for version 14.50 now available

Started by Pelle, Yesterday at 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

Thanks Pelle!

Nice surprise  :)
👍👍👍

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