On 07.06.2024 15:03, Edward Gynt wrote:
I am having trouble reproducing your issue. My .exe files output the correct information. 
The "C file" code you mention doesn't mark main as a __thiscall, but your 
decompiled function lists sub_401000 as __thiscall. Why?
I don't own IDA so I can't reproduce with IDA.

Hi Ed,

honestly there are several issues with your patch.
- thiscall_nb_regs uninitialized :
     causes compiled code crash mostly
- load(get_reg(RC_ECX), vtop) :
     ECX may get overwritten when other params are loaded
- too much code and funny variables (int func_call2) anyway seen that
  FUNC_THISCALL is identical to FUNC_FASTCALLW except fastcall_nb_regs = 1;
  instead of = 2;

So you'd really better go along the route that's already proven to
work instead of trying to be smart ;)

-- gr

What I do notice is that using i386-win32-tcc.exe (compiled with gcc or tcc) I 
get identical output to before my commit.
With tcc.exe (compiled with gcc or tcc, which in turns was built with 
build-tcc.bat -x), I get the situation that ecx is stored in the stack and then 
moved into eax. Very strange.
So the x86_64 build is affected. Before I start digging into the code 
(misplaced #ifdef somewhere?) I want to verify the byte code with you to make 
sure we are talking about the same issue.
Can you post yours (objdump -D) ?

Compiled with version on branch mob after my commit:

00401000 <.text>:
   401000:       55                      push   %ebp
   401001:       89 e5                   mov    %esp,%ebp
   401003:       81 ec 04 00 00 00       sub    $0x4,%esp
   401009:       90                      nop
   40100a:       89 4d fc                mov    %ecx,-0x4(%ebp)
   40100d:       8b 45 fc                mov    -0x4(%ebp),%eax
   401010:       50                      push   %eax
   401011:       b8 00 20 40 00          mov    $0x402000,%eax
   401016:       50                      push   %eax
   401017:       e8 54 02 00 00          call   0x401270
   40101c:       83 c4 08                add    $0x8,%esp
   40101f:       b8 0b 20 40 00          mov    $0x40200b,%eax
   401024:       50                      push   %eax
   401025:       e8 4e 02 00 00          call   0x401278
   40102a:       83 c4 04                add    $0x4,%esp
   40102d:       b8 00 00 00 00          mov    $0x0,%eax
   401032:       c9                      leave
   401033:       c3                      ret

Compiled with version on branch mob before my commit:

00401000 <.text>:
   401000:       55                      push   %ebp
   401001:       89 e5                   mov    %esp,%ebp
   401003:       81 ec 00 00 00 00       sub    $0x0,%esp
   401009:       90                      nop
   40100a:       8b 45 08                mov    0x8(%ebp),%eax
   40100d:       50                      push   %eax
   40100e:       b8 00 20 40 00          mov    $0x402000,%eax
   401013:       50                      push   %eax
   401014:       e8 57 02 00 00          call   0x401270
   401019:       83 c4 08                add    $0x8,%esp
   40101c:       b8 0b 20 40 00          mov    $0x40200b,%eax
   401021:       50                      push   %eax
   401022:       e8 51 02 00 00          call   0x401278
   401027:       83 c4 04                add    $0x4,%esp
   40102a:       b8 00 00 00 00          mov    $0x0,%eax
   40102f:       c9                      leave
   401030:       c3                      ret



On Thu, Jun 6, 2024 at 5:30 PM HarukaMomono via Tinycc-devel <tinycc-devel@nongnu.org 
<mailto:tinycc-devel@nongnu.org>> wrote:

    commit:3b943bec5de423e234b5f92d9a8f110ad66a85a1
    author:Gynt <g...@users.noreply.github.com 
<mailto:g...@users.noreply.github.com>>
                Mon, 3 Jun 2024 19:52:34 +0800 (3 13:52 +0200)
    committer:Gynt <g...@users.noreply.github.com 
<mailto:g...@users.noreply.github.com>>
                     Mon, 3 Jun 2024 19:56:32 +0800 (3 13:56 +0200)
    tree:3c7fd4f944e9417b6bf2c95c21c9e8c9ee671b11
    parent:8cd21e91ccee3baf15ad2f8cba9cbc4b618695a0

    envs: windows 10; gcc version 14.1.0 (MinGW-W64 x86_64-ucrt-posix-seh, 
built by Brecht Sanders, r1)

    In this branch, I built it using gcc, the build command: build-tcc.bat -x

    C file:
    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, const char **argv, const char **envp) {
    printf("argc = %d\n", argc);
    system("pause");
    return 0;
    }

    Compile Commands:
    tcc.exe -std=c11 -m32 -o test.exe test.c

    result:
    argc = 9908136

    Decompile using IDA:
    int __thiscall sub_401000(void *this)
    {
       printf("arg num = %d\n", this);
       system("pause");
       return 0;
    }

    There are missing parameters.

    
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    百野悠
    antis...@qq.com

    
<https://wx.mail.qq.com/home/index?t=readmail_businesscard_midpage&nocheck=true&name=%E7%99%BE%E9%87%8E%E6%82%A0&icon=https%3A%2F%2Fthirdqq.qlogo.cn%2Fg%3Fb%3Dsdk%26k%3DOZI1461f3WfMVgfs9eVX5g%26s%3D100%26t%3D1556966029%3Frand%3D1647596762&mail=antisnow%40qq.com&code=>
    _______________________________________________
    Tinycc-devel mailing list
    Tinycc-devel@nongnu.org <mailto:Tinycc-devel@nongnu.org>
    https://lists.nongnu.org/mailman/listinfo/tinycc-devel



_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel



_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to