03/18/17 00:51:05, Sven Barth via fpc-devel <fpc-devel@lists.freepascal.org>:

> Bo, the main sense of this is to detect when a new thread is started and more importantly terminated cause only with this we can free the threadvar area of the thread accordingly (if the thread is an external one, not one started using BeginThread or TThread).

Thanks, now i understand how its work. Plus as i understand on Linux (and other unixes) threadvar for external threads allocated on first access to them (and free via PThread ability to call destructor for key).

> Why *should* it be auto generated if one can use a table and let the RTL do the rest.
Is it not better make all that can be done in compile time? Its not more complex solution for compiler code, but as i see it, its more harmonious (Its depend not only INIFINAL, but all tables, than used in RTL to make work of compiler/linker. As example, FPC_THREADVARTABLES. Different modules, i mean DLL or SO, use different TLS keys for their threadvar regions. But why position of variable from begin of threadvar region must be generated in runtime? Isn`t it work for linker?). Possible this is depend on that "dynamic packages"?

> Also with the addition of dynamic packages this will move even more towards a table based approach.
Where i can read information about what is it and why we need it? What kind of problems is must solve? Because we already have dll/so, and as i know and see for now its enough. Possible my knowledge is not enough to see whole problem.

> But you can set the corresponding PE flag for ASLR using $SetPEOpts (or so). No recompilation needed in that case.
Can. But what if i dont want ASLR binary? Its totaly valid.

> Microsoft recommended that approach for Win64 so why should we do the work and implement it differently even if ASLR isn't enabled by default for FPC executables?
Recommendation in not a law (like it is with SEH in Win64). C compilers allow both type of programs, depend on what programmer need. Is it need many work to change it? As i see it, its just one check in compiler code for global varibles (if select PIC - use RIP-related, if not - use direct). It already done in linux. I think it was better to give compiler user more possibilities when its cost almoust nothing.

Regards,
Roman
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to