根因: 使用 32 位 gcc (i686) 构建 pcc,导致内部 PTR_SIZE=4, 生成 64 位目标时 TLS 目录按 32 位格式写入 (24字节而非40字节), 所有含 __thread 变量的程序加载即崩溃。 修复: 改用 64 位 gcc (x86_64-w64-mingw32) 完整重建 pcc.exe, PTR_SIZE 正确为 8,TLS 目录 40 字节。 验证: - _Thread_local / __thread 程序正常运行 - _Generic, _Alignas, _Atomic, 匿名结构体, _Static_assert 全部通过 - tests2 套件 102 测试通过 (其余为 CRLF/路径/stderr 框架差异) - 自编译正常
44 行
637 B
Modula-2
44 行
637 B
Modula-2
LIBRARY libpcc.dll
|
|
|
|
EXPORTS
|
|
_pcc_error
|
|
_pcc_error_noabort
|
|
_pcc_setjmp
|
|
_pcc_warning
|
|
pcc_add_file
|
|
pcc_add_include_path
|
|
pcc_add_library
|
|
pcc_add_library_path
|
|
pcc_add_symbol
|
|
pcc_add_sysinclude_path
|
|
pcc_basename
|
|
pcc_compile_string
|
|
pcc_define_symbol
|
|
pcc_delete
|
|
pcc_enter_state
|
|
pcc_exit_state
|
|
pcc_fclose
|
|
pcc_fileextension
|
|
pcc_fopen
|
|
pcc_free
|
|
pcc_get_dllexports
|
|
pcc_get_symbol
|
|
pcc_list_symbols
|
|
pcc_malloc
|
|
pcc_mallocz
|
|
pcc_new
|
|
pcc_output_file
|
|
pcc_parse_args
|
|
pcc_print_stats
|
|
pcc_realloc
|
|
pcc_relocate
|
|
pcc_run
|
|
pcc_set_backtrace_func
|
|
pcc_set_error_func
|
|
pcc_set_lib_path
|
|
pcc_set_options
|
|
pcc_set_output_type
|
|
pcc_set_realloc
|
|
pcc_strdup
|
|
pcc_undefine_symbol
|