Recently came across this project and became an instant fan, so begin with many thanks to you!
Saw Windows CE was added over the past five years and decided to extend the support to older ARM-based devices. Wanted to discuss mainlining the changes required to successfully support them.
- Want to add Wl,-subsysver=2.11 for example.
- By default TCC fills PE's subsystem with 4.0. Windows Loader reads subsystem as ce_major and ce_minor versions. Out of the box without hex editing these values the tcc generated binary does not run on older devices.
- This is a simple < 15 LOC across a few files and seems minor enough that I expect others will agree about.
- Leaving out Wl,-subsysver= will default with the 4.0 selection of the original author, so not expected to break anyone's existing development environments.
- Also provides advantage to those who may wish to target newer CE versions than 4.0.
- Want to align the import and export function names in tccpe.c at runtime decision based upon linking a windows ce PE for ARM when version is < 4.0.
- The binary that tcc produces for older windows CE hangs the loader.
- After reshuffling things around in hex editor (can find the thread on the hpcfactor website) I was able to overcome the hang. The import table directory function name entries require 4byte alignment to be compatible with tcc's PE structure is the hypothesis
that I drew from the experimentation. The MSeVC can get away with 2byte alignments, but they have a different arrangement of sections, ordering, and so forth.
- Might consider a linker flag to control alignment independently providing the user more flexibility. Thoughts?
- For future discussion: tcc has self-hosted compiling and linking on a HP Jornada 820 to execute on itself. hpcfactor thread has the screenshot and more details.
- These changes are bigger and were made rapidly. I still need to refine and being very specifically unique from 1&2, immediately above, it deserves its own future thread and its own future commit.
- Want to hear early thoughts about likelihood of mainlining, so added to this discussion.
- Re-emphasize: the changes associated with #3 are intended to be kept separate from the changes for 1&2.
Please let me know any feedback about changing things or issuing a pull request.