tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] (no subject)


From: Jonathan Watmough
Subject: [Tinycc-devel] (no subject)
Date: Sun, 8 Mar 2015 21:10:24 -0500

I figured I'd reply to my own questions:

1) When compiling resources, just sticking with windres 32 bit hacked to call tcc seems to generate working resources, that will link into both 32 and 64-bit code.

2) I traced my issues with not being able to call certain comdlg32 functions, to issues with structure packing. Commenting out the #pragma pack(push,1) in commdlg.h fixed it, and now I have working code in 32-bit and 64-bit. 32-bit seems to like 1-byte alignment, and 64-bit presumably defaults to 8-byte alignment.

Thanks so much everyone that's worked on this!

Best Wishes,
Jonathan







Hi,

I've been able to successfully use windres to compile, then tcc 0.9.26 to link resources into a 32-bit program.

However, I'm kinda stuck trying to get tcc to link to a 64-bit windres generated resource file.

1) Check for magic not yet supporting x86-64

In file tccpe.c, the pe_load_res is looking for 32-bit magic
//    if (hdr.filehdr.Machine != 0x014C
    if (hdr.filehdr.Machine != 0x8664
        || hdr.filehdr.NumberOfSections != 1
        || strcmp(hdr.sectionhdr.Name, ".rsrc") != 0) {
        printf("Machine: %lx", hdr.filehdr.Machine);
        goto quit;
    }

2) Resource files appear to be slightly different between win32 and x86-64

The reltype shows up as 3 in my compiled 64-bit resource but tcc is expecting 7.

lower in same function...

        printf("rsrc_reloc: %x %x %x\n", rel.offset, rel.size, rel.type);  // debugging
        if (rel.type != 7) /* DIR32NB */ {
            printf("ERROR: rel.type != 7 Got: %d\n",rel.type);      // prints a 3 for 64-bit resources
            goto quit;
        }

Has anyone pushed a bit further and managed to get tcc linking to 64-bit resources?

Best Wishes,
Jonathan

reply via email to

[Prev in Thread] Current Thread [Next in Thread]