From aecac68f2041b989d64f0137b37e788af06ddd2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Desbiens?= Date: Thu, 18 Jun 2026 16:48:47 -0400 Subject: [PATCH 1/8] Added missing Win32 VS 2019 CMake file The Win32 VS 2019 port has an include directory but no CMakeLists.txt, which prevents FileX from being consumed as a CMake dependency. Wire the header-only port into the build. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Assisted-by: Codex (gpt-5.6-sol) --- ports/win32/vs_2019/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 ports/win32/vs_2019/CMakeLists.txt diff --git a/ports/win32/vs_2019/CMakeLists.txt b/ports/win32/vs_2019/CMakeLists.txt new file mode 100644 index 0000000..6bc1b86 --- /dev/null +++ b/ports/win32/vs_2019/CMakeLists.txt @@ -0,0 +1,10 @@ +target_sources(${PROJECT_NAME} PRIVATE + # {{BEGIN_TARGET_SOURCES}} + + # {{END_TARGET_SOURCES}} +) + +target_include_directories(${PROJECT_NAME} + PUBLIC + ${CMAKE_CURRENT_LIST_DIR}/inc +) From 11570f94279e1d74e627435300dd33d2a9a4c959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Desbiens?= Date: Thu, 18 Jun 2026 16:54:37 -0400 Subject: [PATCH 2/8] Fixed corrupted Win32 FileX version string Removed a stray copyright line from the version initializer, corrected the copyright year, and aligned the Win32 version string with the target release. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Assisted-by: Codex (gpt-5.6-sol) --- ports/win32/vs_2019/inc/fx_port.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ports/win32/vs_2019/inc/fx_port.h b/ports/win32/vs_2019/inc/fx_port.h index 3fa5d2a..e8bbcce 100644 --- a/ports/win32/vs_2019/inc/fx_port.h +++ b/ports/win32/vs_2019/inc/fx_port.h @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (c) 2024 Microsoft Corporation - * Copyright (c) 2026-present Eclipse ThreadX contributors + * Copyright (c) 2026 Eclipse ThreadX contributors * * This program and the accompanying materials are made available under the * terms of the MIT License which is available at @@ -196,8 +196,7 @@ typedef unsigned long long ULONG64; #ifdef FX_SYSTEM_INIT CHAR _fx_version_id[] = - "Copyright (c) 2024 Microsoft Corporation. * FileX Win32/Version 6.5.1.202602 *"; - * Copyright (c) 2026-present Eclipse ThreadX contributors + "Copyright (c) 2024 Microsoft Corporation. * FileX Win32/Version 6.5.2.202603 *"; #else extern CHAR _fx_version_id[]; #endif From b6e52033d45fd4edd6e6ec07f19ee9354682fabe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Desbiens?= Date: Wed, 29 Jul 2026 16:58:59 -0400 Subject: [PATCH 3/8] Fixed FileX Win32 regression build and large-media crashes Regenerated the Win32 port header with regression hooks, aligned MSVC large-buffer declarations, enabled large-address-aware Win32 test executables, and corrected the default ThreadX path. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Assisted-by: Codex (gpt-5.6-sol) --- ports/win32/vs_2019/inc/fx_port.h | 195 ++++++++++++++++++++-- scripts/build_fx.ps1 | 2 +- test/cmake/CMakeLists.txt | 8 +- test/regression_test/fx_ram_driver_test.h | 13 ++ 4 files changed, 200 insertions(+), 18 deletions(-) diff --git a/ports/win32/vs_2019/inc/fx_port.h b/ports/win32/vs_2019/inc/fx_port.h index e8bbcce..d9ec568 100644 --- a/ports/win32/vs_2019/inc/fx_port.h +++ b/ports/win32/vs_2019/inc/fx_port.h @@ -1,12 +1,16 @@ /*************************************************************************** - * Copyright (c) 2024 Microsoft Corporation - * Copyright (c) 2026 Eclipse ThreadX contributors + * Copyright (C) 2026 Eclipse ThreadX contributors * * This program and the accompanying materials are made available under the * terms of the MIT License which is available at * https://opensource.org/licenses/MIT. * - * SPDX-License-Identifier: MIT + * AI Disclosure: This file was largely AI-generated by Copilot (Claude Opus 4.8). + * The AI-generated portions may be considered public domain (CC0-1.0) + * and not subject to the project's licence. The human contributor has + * reviewed and verified that the code is correct. + * + * SPDX-License-Identifier: MIT and CC0-1.0 **************************************************************************/ @@ -26,11 +30,11 @@ /* PORT SPECIFIC C INFORMATION RELEASE */ /* */ /* fx_port.h Win32/Visual */ -/* 6.3.0 */ +/* 6.5.1.202602 */ /* */ /* AUTHOR */ /* */ -/* William E. Lamie, Microsoft Corporation */ +/* Eclipse ThreadX contributors */ /* */ /* DESCRIPTION */ /* */ @@ -57,6 +61,8 @@ #include "fx_user.h" #endif +#include + /* Include the ThreadX api file. */ @@ -98,7 +104,8 @@ typedef unsigned long long ULONG64; /* Define basic alignment type used in block and byte pool operations. This data type must - be at least 32-bits in size and also be large enough to hold a pointer type. */ + be at least 32-bits in size and also be large enough to hold a pointer type. + On Win32 (ILP32) ULONG is 32 bits and holds a pointer, so ULONG is sufficient. */ #ifndef ALIGN_TYPE_DEFINED #define ALIGN_TYPE_DEFINED @@ -106,19 +113,173 @@ typedef unsigned long long ULONG64; #endif -#endif +#endif /* FX_STANDALONE_ENABLE */ + + +#ifdef FX_REGRESSION_TEST + +/* Define parameters for regression test suite. */ + +#define FX_MAX_SECTOR_CACHE 256 +#define FX_MAX_FAT_CACHE 64 +#define FX_FAT_MAP_SIZE 1 + + +/* Define variables and macros used to introduce errors for the regression test suite. */ + +extern ULONG _fx_ram_driver_io_error_request; +extern ULONG _fx_ram_driver_io_request_count; +extern ULONG _fx_file_open_max_file_size_request; +extern ULONG _fx_directory_entry_read_count; +extern ULONG _fx_directory_entry_read_error_request; +extern ULONG _fx_directory_entry_write_count; +extern ULONG _fx_directory_entry_write_error_request; +extern ULONG _fx_utility_fat_entry_write_count; +extern ULONG _fx_utility_fat_entry_write_error_request; +extern ULONG _fx_utility_fat_entry_read_count; +extern ULONG _fx_utility_fat_entry_read_error_request; +extern ULONG _fx_utility_logical_sector_flush_count; +extern ULONG _fx_utility_logical_sector_flush_error_request; +extern ULONG _fx_utility_logical_sector_write_count; +extern ULONG _fx_utility_logical_sector_write_error_request; +extern ULONG _fx_utility_logical_sector_read_count; +extern ULONG _fx_utility_logical_sector_read_error_request; +extern ULONG _fx_utility_logical_sector_read_1_count; +extern ULONG _fx_utility_logical_sector_read_1_error_request; + +#ifdef FX_ENABLE_FAULT_TOLERANT +struct FX_MEDIA_STRUCT; +extern VOID fault_tolerant_enable_callback(struct FX_MEDIA_STRUCT *media_ptr, + UCHAR *fault_tolerant_memory_buffer, + ULONG log_size); +extern VOID fault_tolerant_apply_log_callback(struct FX_MEDIA_STRUCT *media_ptr, + UCHAR *fault_tolerant_memory_buffer, + ULONG log_size); +#endif /* FX_ENABLE_FAULT_TOLERANT */ + + +#define FX_DIRECTORY_ENTRY_READ_EXTENSION _fx_directory_entry_read_count++; \ + if (_fx_directory_entry_read_error_request) \ + { \ + _fx_directory_entry_read_error_request--; \ + if (_fx_directory_entry_read_error_request == 0) \ + { \ + return(FX_IO_ERROR); \ + } \ + } + +#define FX_DIRECTORY_ENTRY_WRITE_EXTENSION _fx_directory_entry_write_count++; \ + if (_fx_directory_entry_write_error_request) \ + { \ + _fx_directory_entry_write_error_request--; \ + if (_fx_directory_entry_write_error_request == 0) \ + { \ + return(FX_IO_ERROR); \ + } \ + } + +#define FX_UTILITY_FAT_ENTRY_READ_EXTENSION _fx_utility_fat_entry_read_count++; \ + if (_fx_utility_fat_entry_read_error_request) \ + { \ + _fx_utility_fat_entry_read_error_request--; \ + if (_fx_utility_fat_entry_read_error_request == 0) \ + { \ + return(FX_IO_ERROR); \ + } \ + if (_fx_utility_fat_entry_read_error_request == 10000) \ + { \ + *entry_ptr = 1; \ + _fx_utility_fat_entry_read_error_request = 0; \ + return(FX_SUCCESS); \ + } \ + if (_fx_utility_fat_entry_read_error_request == 20000) \ + { \ + *entry_ptr = media_ptr -> fx_media_fat_reserved; \ + _fx_utility_fat_entry_read_error_request = 0; \ + return(FX_SUCCESS); \ + } \ + if (_fx_utility_fat_entry_read_error_request == 30000) \ + { \ + *entry_ptr = cluster; \ + _fx_utility_fat_entry_read_error_request = 0; \ + return(FX_SUCCESS); \ + } \ + if (_fx_utility_fat_entry_read_error_request == 40000) \ + { \ + media_ptr -> fx_media_total_clusters = 0; \ + _fx_utility_fat_entry_read_error_request = 0; \ + return(FX_SUCCESS); \ + } \ + } + +#define FX_UTILITY_FAT_ENTRY_WRITE_EXTENSION _fx_utility_fat_entry_write_count++; \ + if (_fx_utility_fat_entry_write_error_request) \ + { \ + _fx_utility_fat_entry_write_error_request--; \ + if (_fx_utility_fat_entry_write_error_request == 0) \ + { \ + return(FX_IO_ERROR); \ + } \ + } + +#define FX_UTILITY_LOGICAL_SECTOR_FLUSH_EXTENSION _fx_utility_logical_sector_flush_count++; \ + if (_fx_utility_logical_sector_flush_error_request) \ + { \ + _fx_utility_logical_sector_flush_error_request--; \ + if (_fx_utility_logical_sector_flush_error_request == 0) \ + { \ + return(FX_IO_ERROR); \ + } \ + } + +#define FX_UTILITY_LOGICAL_SECTOR_READ_EXTENSION _fx_utility_logical_sector_read_count++; \ + if (_fx_utility_logical_sector_read_error_request) \ + { \ + _fx_utility_logical_sector_read_error_request--; \ + if (_fx_utility_logical_sector_read_error_request == 0) \ + { \ + return(FX_IO_ERROR); \ + } \ + } + +#define FX_UTILITY_LOGICAL_SECTOR_READ_EXTENSION_1 _fx_utility_logical_sector_read_1_count++; \ + if (_fx_utility_logical_sector_read_1_error_request) \ + { \ + _fx_utility_logical_sector_read_1_error_request--; \ + if (_fx_utility_logical_sector_read_1_error_request == 0) \ + { \ + cache_entry = FX_NULL; \ + } \ + } + +#define FX_UTILITY_LOGICAL_SECTOR_WRITE_EXTENSION _fx_utility_logical_sector_write_count++; \ + if (_fx_utility_logical_sector_write_error_request) \ + { \ + _fx_utility_logical_sector_write_error_request--; \ + if (_fx_utility_logical_sector_write_error_request == 0) \ + { \ + return(FX_IO_ERROR); \ + } \ + } + +#define FX_FAULT_TOLERANT_ENABLE_EXTENSION fault_tolerant_enable_callback(media_ptr, media_ptr -> fx_media_fault_tolerant_memory_buffer, total_size); +#define FX_FAULT_TOLERANT_APPLY_LOGS_EXTENSION fault_tolerant_apply_log_callback(media_ptr, media_ptr -> fx_media_fault_tolerant_memory_buffer, size); + +#endif /* FX_REGRESSION_TEST */ + /* Define FileX internal protection macros. If FX_SINGLE_THREAD is defined, these protection macros are effectively disabled. However, for multi-thread uses, the macros are setup to utilize a ThreadX mutex for multiple thread access control into an open media. */ +/* Reduce the mutex error checking for testing purpose. */ + #if defined(FX_SINGLE_THREAD) || defined(FX_STANDALONE_ENABLE) #define FX_PROTECT #define FX_UNPROTECT #else -#define FX_PROTECT if (media_ptr -> fx_media_id != FX_MEDIA_ID) return(FX_MEDIA_NOT_OPEN); \ - else if (tx_mutex_get(&(media_ptr -> fx_media_protect), TX_WAIT_FOREVER) != TX_SUCCESS) return(FX_MEDIA_NOT_OPEN); +#define FX_PROTECT tx_mutex_get(&(media_ptr -> fx_media_protect), TX_WAIT_FOREVER); #define FX_UNPROTECT tx_mutex_put(&(media_ptr -> fx_media_protect)); #endif @@ -131,6 +292,9 @@ typedef unsigned long long ULONG64; #define FX_DISABLE_INTS old_interrupt_posture = tx_interrupt_control(TX_INT_DISABLE); #define FX_RESTORE_INTS tx_interrupt_control(old_interrupt_posture); #else +#ifndef FX_LEGACY_INTERRUPT_PROTECTION +#define FX_LEGACY_INTERRUPT_PROTECTION +#endif #define FX_INT_SAVE_AREA #define FX_DISABLE_INTS #define FX_RESTORE_INTS @@ -166,15 +330,15 @@ typedef unsigned long long ULONG64; #endif /* Define the update rate of the system timer. These values may also be defined at the command - line when compiling the fx_system_initialize.c module in the FileX library build. Alternatively, they can - be modified in this file or fx_user.h. Note: the update rate must be an even number of seconds greater - than or equal to 2, which is the minimal update rate for FAT time. */ + line when compiling the fx_system_initialize.c module in the FileX library build. Alternatively, + they can be modified in this file or fx_user.h. Note: the update rate must be an even number of + seconds greater than or equal to 2, which is the minimal update rate for FAT time. */ /* Define the number of seconds the timer parameters are updated in FileX. The default value is 10 seconds. This value can be overwritten externally. */ #ifndef FX_UPDATE_RATE_IN_SECONDS -#define FX_UPDATE_RATE_IN_SECONDS 10 +#define FX_UPDATE_RATE_IN_SECONDS 10 #endif @@ -196,10 +360,9 @@ typedef unsigned long long ULONG64; #ifdef FX_SYSTEM_INIT CHAR _fx_version_id[] = - "Copyright (c) 2024 Microsoft Corporation. * FileX Win32/Version 6.5.2.202603 *"; + "Copyright (c) 2026 Eclipse ThreadX contributors. * FileX Win32/Visual 6.5.1.202602 *"; #else extern CHAR _fx_version_id[]; #endif -#endif - +#endif /* FX_PORT_H */ diff --git a/scripts/build_fx.ps1 b/scripts/build_fx.ps1 index 5407157..6af6d5b 100644 --- a/scripts/build_fx.ps1 +++ b/scripts/build_fx.ps1 @@ -28,7 +28,7 @@ if (-not $BuildDir) { } if (-not $ThreadXDir) { - $ThreadXDir = Join-Path (Split-Path -Parent $repoRoot) 'threadx-fd-codex' + $ThreadXDir = Join-Path (Split-Path -Parent $repoRoot) 'threadx-fd' } $selectedConfigurations = Resolve-RegressionConfigurations -RequestedConfigurations $Configuration diff --git a/test/cmake/CMakeLists.txt b/test/cmake/CMakeLists.txt index d6ccd66..7d09aa2 100644 --- a/test/cmake/CMakeLists.txt +++ b/test/cmake/CMakeLists.txt @@ -51,7 +51,13 @@ set(standalone_no_cache_fault_tolerant_build ${no_cache_build} ${FX_FAULT_TOLERA if(MSVC) add_compile_options(/W3 /Zi) - add_link_options(/DEBUG /INCREMENTAL:NO) + # /LARGEADDRESSAWARE lets the 32-bit (win32) test executables use the full + # 4 GB user address space available to a 32-bit process on 64-bit Windows, + # instead of the default 2 GB. The large-media regression tests allocate + # ~1.7 GB of RAM-disk + data buffers (e.g. filex_file_allocate_test), which + # overflows the 2 GB limit and makes calloc return NULL -> crash. This flag + # is the default for x64, so it is a no-op for the win64 build. + add_link_options(/DEBUG /INCREMENTAL:NO /LARGEADDRESSAWARE) # Both cl.exe and gcc accept -DFOO; use it to keep the per-configuration # definitions consistent with the Linux path. add_compile_options(-DFX_REGRESSION_TEST ${${CMAKE_BUILD_TYPE}}) diff --git a/test/regression_test/fx_ram_driver_test.h b/test/regression_test/fx_ram_driver_test.h index df9e610..c071494 100644 --- a/test/regression_test/fx_ram_driver_test.h +++ b/test/regression_test/fx_ram_driver_test.h @@ -24,15 +24,28 @@ /* Define the memory buffer to format the media if enable fault tolerant feature.*/ +/* On MSVC these are heap-allocated (see fx_ram_driver_test.c) to avoid committing + huge BSS arrays and exceeding the 2 GB PE image limit, so declare them as + pointers there; other compilers keep them as BSS arrays. */ +#ifdef _MSC_VER +extern UCHAR *ram_disk_memory_large; +extern UCHAR *large_data_buffer; +#else extern UCHAR ram_disk_memory_large[900000000]; extern UCHAR large_data_buffer[900000000]; +#endif #define large_data_buffer_size 900000000 /* Define memory for tests to be run in standalone mode (without Azure RTOS: ThreadX) */ #ifdef FX_STANDALONE_ENABLE +#ifdef _MSC_VER +extern UCHAR *ram_disk_memory; +extern UCHAR *ram_disk_memory1; +#else extern UCHAR ram_disk_memory[300000000]; extern UCHAR ram_disk_memory1[30000000]; #endif +#endif /* Define a macro for test. */ /* We do not need error code anymore but still define return_value_if_fail for compatibility backward. */ From 36c1510f6c661ae83270b780981bcdcfc01dcb94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Desbiens?= Date: Tue, 11 Aug 2026 14:02:18 -0400 Subject: [PATCH 4/8] Fixed standalone regression buffer declarations Guarded fault-tolerant standalone buffers so non-fault-tolerant MSVC configurations do not declare zero-length arrays. Assisted-by: Codex (gpt-5.6-sol) --- test/regression_test/filex_directory_create_delete_test.c | 5 ++++- .../regression_test/filex_directory_duplicate_entries_test.c | 4 ++++ test/regression_test/filex_directory_rename_test.c | 4 ++++ test/regression_test/filex_file_create_delete_test.c | 4 ++++ test/regression_test/filex_file_rename_test.c | 4 ++++ 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/test/regression_test/filex_directory_create_delete_test.c b/test/regression_test/filex_directory_create_delete_test.c index d092469..6ff615c 100644 --- a/test/regression_test/filex_directory_create_delete_test.c +++ b/test/regression_test/filex_directory_create_delete_test.c @@ -9,6 +9,8 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ +// Some portions generated by Codex (gpt-5.6-sol). + /* This FileX test concentrates on the basic directory create/delete operations. */ #ifndef FX_STANDALONE_ENABLE @@ -111,8 +113,10 @@ static UCHAR *cache_buffer; static UCHAR *fault_tolerant_buffer; #else static UCHAR cache_buffer[CACHE_SIZE]; +#ifdef FX_ENABLE_FAULT_TOLERANT static UCHAR fault_tolerant_buffer[FAULT_TOLERANT_SIZE]; #endif +#endif extern ULONG _fx_ram_driver_copy_default_format; @@ -3064,4 +3068,3 @@ FX_DIR_ENTRY search_directory; test_control_return(0); } } - diff --git a/test/regression_test/filex_directory_duplicate_entries_test.c b/test/regression_test/filex_directory_duplicate_entries_test.c index 5266d66..1b42ee3 100644 --- a/test/regression_test/filex_directory_duplicate_entries_test.c +++ b/test/regression_test/filex_directory_duplicate_entries_test.c @@ -9,6 +9,8 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ +// Some portions generated by Codex (gpt-5.6-sol). + /* This FileX test concentrates on recovery operation when there are duplicate entries. */ #ifndef FX_STANDALONE_ENABLE @@ -49,8 +51,10 @@ static UCHAR *cache_buffer; static UCHAR *fault_tolerant_buffer; #else static UCHAR cache_buffer[CACHE_SIZE]; +#ifdef FX_ENABLE_FAULT_TOLERANT static UCHAR fault_tolerant_buffer[FAULT_TOLERANT_SIZE]; #endif +#endif extern ULONG _fx_ram_driver_copy_default_format; diff --git a/test/regression_test/filex_directory_rename_test.c b/test/regression_test/filex_directory_rename_test.c index 36fd181..a5c2b04 100644 --- a/test/regression_test/filex_directory_rename_test.c +++ b/test/regression_test/filex_directory_rename_test.c @@ -9,6 +9,8 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ +// Some portions generated by Codex (gpt-5.6-sol). + /* This FileX test concentrates on the directory rename operations. */ #ifndef FX_STANDALONE_ENABLE @@ -47,8 +49,10 @@ static UCHAR *cache_buffer; static UCHAR *fault_tolerant_buffer; #else static UCHAR cache_buffer[CACHE_SIZE]; +#ifdef FX_ENABLE_FAULT_TOLERANT static UCHAR fault_tolerant_buffer[FAULT_TOLERANT_SIZE]; #endif +#endif /* Define thread prototypes. */ diff --git a/test/regression_test/filex_file_create_delete_test.c b/test/regression_test/filex_file_create_delete_test.c index d296ba4..29480fe 100644 --- a/test/regression_test/filex_file_create_delete_test.c +++ b/test/regression_test/filex_file_create_delete_test.c @@ -9,6 +9,8 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ +// Some portions generated by Codex (gpt-5.6-sol). + /* This FileX test concentrates on the file create/delete operations. */ #ifndef FX_STANDALONE_ENABLE @@ -54,8 +56,10 @@ static UCHAR *cache_buffer; static UCHAR *fault_tolerant_buffer; #else static UCHAR cache_buffer[CACHE_SIZE]; +#ifdef FX_ENABLE_FAULT_TOLERANT static UCHAR fault_tolerant_buffer[FAULT_TOLERANT_SIZE]; #endif +#endif static UCHAR fat_buffer[128]; static UCHAR name_buffer[FX_MAX_LONG_NAME_LEN+1]; diff --git a/test/regression_test/filex_file_rename_test.c b/test/regression_test/filex_file_rename_test.c index c6c104e..d6fd7fc 100644 --- a/test/regression_test/filex_file_rename_test.c +++ b/test/regression_test/filex_file_rename_test.c @@ -9,6 +9,8 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ +// Some portions generated by Codex (gpt-5.6-sol). + /* This FileX test concentrates on the file rename operations. */ #ifndef FX_STANDALONE_ENABLE @@ -46,8 +48,10 @@ static UCHAR *cache_buffer; static UCHAR *fault_tolerant_buffer; #else static UCHAR cache_buffer[CACHE_SIZE]; +#ifdef FX_ENABLE_FAULT_TOLERANT static UCHAR fault_tolerant_buffer[FAULT_TOLERANT_SIZE]; #endif +#endif /* Define thread prototypes. */ From 9f89b590afca49f83ec6ad3225db06e8dfdcd8ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Desbiens?= Date: Wed, 2 Sep 2026 13:31:49 -0400 Subject: [PATCH 5/8] Added required Codex disclosures Assisted-by: Codex (gpt-5.6-sol) --- ports/win32/vs_2019/inc/fx_port.h | 1 + test/regression_test/fx_ram_driver_test.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/ports/win32/vs_2019/inc/fx_port.h b/ports/win32/vs_2019/inc/fx_port.h index d9ec568..86f4612 100644 --- a/ports/win32/vs_2019/inc/fx_port.h +++ b/ports/win32/vs_2019/inc/fx_port.h @@ -13,6 +13,7 @@ * SPDX-License-Identifier: MIT and CC0-1.0 **************************************************************************/ +// Some portions generated by Codex (gpt-5.6-sol). /**************************************************************************/ /**************************************************************************/ diff --git a/test/regression_test/fx_ram_driver_test.h b/test/regression_test/fx_ram_driver_test.h index c071494..a864c84 100644 --- a/test/regression_test/fx_ram_driver_test.h +++ b/test/regression_test/fx_ram_driver_test.h @@ -9,6 +9,8 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ +// Some portions generated by Codex (gpt-5.6-sol). + #ifndef _FX_RAM_DRIVER_TEST_H_ #define _FX_RAM_DRIVER_TEST_H_ From 7bb1cfe786c9add640693026f5b328fc5be37f31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Desbiens?= Date: Thu, 3 Sep 2026 08:25:24 -0400 Subject: [PATCH 6/8] Added required Codex disclosures to build files Assisted-by: Codex (gpt-5.6-sol) --- ports/win32/vs_2019/CMakeLists.txt | 2 ++ scripts/build_fx.ps1 | 2 ++ test/cmake/CMakeLists.txt | 2 ++ 3 files changed, 6 insertions(+) diff --git a/ports/win32/vs_2019/CMakeLists.txt b/ports/win32/vs_2019/CMakeLists.txt index 6bc1b86..41bbbb6 100644 --- a/ports/win32/vs_2019/CMakeLists.txt +++ b/ports/win32/vs_2019/CMakeLists.txt @@ -1,3 +1,5 @@ +# Some portions generated by Codex (gpt-5.6-sol). + target_sources(${PROJECT_NAME} PRIVATE # {{BEGIN_TARGET_SOURCES}} diff --git a/scripts/build_fx.ps1 b/scripts/build_fx.ps1 index 6af6d5b..9f566c7 100644 --- a/scripts/build_fx.ps1 +++ b/scripts/build_fx.ps1 @@ -1,3 +1,5 @@ +# Some portions generated by Codex (gpt-5.6-sol). + [CmdletBinding()] param( [ValidateSet('win64', 'win32')] diff --git a/test/cmake/CMakeLists.txt b/test/cmake/CMakeLists.txt index 7d09aa2..59dd71e 100644 --- a/test/cmake/CMakeLists.txt +++ b/test/cmake/CMakeLists.txt @@ -1,3 +1,5 @@ +# Some portions generated by Codex (gpt-5.6-sol). + cmake_minimum_required(VERSION 3.13 FATAL_ERROR) cmake_policy(SET CMP0054 NEW) cmake_policy(SET CMP0057 NEW) From 4cd41fd6fe51cd2465b0a31e7dd4168afd99ce27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Desbiens?= Date: Fri, 11 Sep 2026 18:53:29 -0400 Subject: [PATCH 7/8] Shortened MSVC FileX regression target paths Assisted-by: Codex (gpt-5.6-sol) --- test/cmake/regression/CMakeLists.txt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/test/cmake/regression/CMakeLists.txt b/test/cmake/regression/CMakeLists.txt index 613f601..1915fff 100644 --- a/test/cmake/regression/CMakeLists.txt +++ b/test/cmake/regression/CMakeLists.txt @@ -153,9 +153,21 @@ endif() foreach(test_case ${regression_test_cases}) get_filename_component(test_name ${test_case} NAME_WE) - add_executable(${test_name} ${test_case}) - target_link_libraries(${test_name} PRIVATE test_utility) - add_test(${CMAKE_BUILD_TYPE}::${test_name} ${test_name}) + if(MSVC) + # CMake repeats the target name in its object directory. Several descriptive + # FileX test names otherwise exceed the legacy path limit used by cl.exe in a + # normally nested Windows worktree. + string(MD5 test_target_hash ${test_name}) + string(SUBSTRING ${test_target_hash} 0 12 test_target_hash) + set(test_target fx_test_${test_target_hash}) + else() + set(test_target ${test_name}) + endif() + + add_executable(${test_target} ${test_case}) + target_link_libraries(${test_target} PRIVATE test_utility) + set_target_properties(${test_target} PROPERTIES OUTPUT_NAME ${test_name}) + add_test(NAME ${CMAKE_BUILD_TYPE}::${test_name} COMMAND ${test_target}) endforeach() # These two tests write or corrupt large amounts of data on a 900 MB RAM disk and are From 1b4f9fda1b66084942da519bfdfcd745f8fcc190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Desbiens?= Date: Tue, 15 Sep 2026 17:23:26 -0400 Subject: [PATCH 8/8] Used the fixed AI disclosure line in the Windows simulator sources The branch added the older per-edit disclosure, which names the product and the model version. That form accumulates: a second agent, or the same agent on a newer model, appends another line rather than recognising the one already there, and the spelling drifts with every release. All 10 lines become the fixed text, written with the comment character each file uses -- `//` in C sources and headers, `#` in CMakeLists and PowerShell: Portions of this file were generated with AI assistance. Attribution for the change itself stays on the commit, in the Assisted-by trailer. The AI Disclosure headers on the files this branch creates are unchanged, and keep naming their product and model: a file is created once, so that record cannot grow. Comment-only, one line replaced per file, no file left with zero or more than one. The new-file AI Disclosure headers are untouched. Assisted-by: Claude Code (Opus 5) --- ports/win32/vs_2019/CMakeLists.txt | 2 +- ports/win32/vs_2019/inc/fx_port.h | 2 +- scripts/build_fx.ps1 | 2 +- test/cmake/CMakeLists.txt | 2 +- test/regression_test/filex_directory_create_delete_test.c | 2 +- test/regression_test/filex_directory_duplicate_entries_test.c | 2 +- test/regression_test/filex_directory_rename_test.c | 2 +- test/regression_test/filex_file_create_delete_test.c | 2 +- test/regression_test/filex_file_rename_test.c | 2 +- test/regression_test/fx_ram_driver_test.h | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ports/win32/vs_2019/CMakeLists.txt b/ports/win32/vs_2019/CMakeLists.txt index 41bbbb6..d5b601d 100644 --- a/ports/win32/vs_2019/CMakeLists.txt +++ b/ports/win32/vs_2019/CMakeLists.txt @@ -1,4 +1,4 @@ -# Some portions generated by Codex (gpt-5.6-sol). +# Portions of this file were generated with AI assistance. target_sources(${PROJECT_NAME} PRIVATE # {{BEGIN_TARGET_SOURCES}} diff --git a/ports/win32/vs_2019/inc/fx_port.h b/ports/win32/vs_2019/inc/fx_port.h index 86f4612..d0288df 100644 --- a/ports/win32/vs_2019/inc/fx_port.h +++ b/ports/win32/vs_2019/inc/fx_port.h @@ -13,7 +13,7 @@ * SPDX-License-Identifier: MIT and CC0-1.0 **************************************************************************/ -// Some portions generated by Codex (gpt-5.6-sol). +// Portions of this file were generated with AI assistance. /**************************************************************************/ /**************************************************************************/ diff --git a/scripts/build_fx.ps1 b/scripts/build_fx.ps1 index 9f566c7..db002a2 100644 --- a/scripts/build_fx.ps1 +++ b/scripts/build_fx.ps1 @@ -1,4 +1,4 @@ -# Some portions generated by Codex (gpt-5.6-sol). +# Portions of this file were generated with AI assistance. [CmdletBinding()] param( diff --git a/test/cmake/CMakeLists.txt b/test/cmake/CMakeLists.txt index 59dd71e..b2168af 100644 --- a/test/cmake/CMakeLists.txt +++ b/test/cmake/CMakeLists.txt @@ -1,4 +1,4 @@ -# Some portions generated by Codex (gpt-5.6-sol). +# Portions of this file were generated with AI assistance. cmake_minimum_required(VERSION 3.13 FATAL_ERROR) cmake_policy(SET CMP0054 NEW) diff --git a/test/regression_test/filex_directory_create_delete_test.c b/test/regression_test/filex_directory_create_delete_test.c index 6ff615c..9ad4ca7 100644 --- a/test/regression_test/filex_directory_create_delete_test.c +++ b/test/regression_test/filex_directory_create_delete_test.c @@ -9,7 +9,7 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ -// Some portions generated by Codex (gpt-5.6-sol). +// Portions of this file were generated with AI assistance. /* This FileX test concentrates on the basic directory create/delete operations. */ diff --git a/test/regression_test/filex_directory_duplicate_entries_test.c b/test/regression_test/filex_directory_duplicate_entries_test.c index 1b42ee3..1ff2379 100644 --- a/test/regression_test/filex_directory_duplicate_entries_test.c +++ b/test/regression_test/filex_directory_duplicate_entries_test.c @@ -9,7 +9,7 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ -// Some portions generated by Codex (gpt-5.6-sol). +// Portions of this file were generated with AI assistance. /* This FileX test concentrates on recovery operation when there are duplicate entries. */ diff --git a/test/regression_test/filex_directory_rename_test.c b/test/regression_test/filex_directory_rename_test.c index a5c2b04..f76e8fb 100644 --- a/test/regression_test/filex_directory_rename_test.c +++ b/test/regression_test/filex_directory_rename_test.c @@ -9,7 +9,7 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ -// Some portions generated by Codex (gpt-5.6-sol). +// Portions of this file were generated with AI assistance. /* This FileX test concentrates on the directory rename operations. */ diff --git a/test/regression_test/filex_file_create_delete_test.c b/test/regression_test/filex_file_create_delete_test.c index 29480fe..43d01bb 100644 --- a/test/regression_test/filex_file_create_delete_test.c +++ b/test/regression_test/filex_file_create_delete_test.c @@ -9,7 +9,7 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ -// Some portions generated by Codex (gpt-5.6-sol). +// Portions of this file were generated with AI assistance. /* This FileX test concentrates on the file create/delete operations. */ diff --git a/test/regression_test/filex_file_rename_test.c b/test/regression_test/filex_file_rename_test.c index d6fd7fc..3ff5bbd 100644 --- a/test/regression_test/filex_file_rename_test.c +++ b/test/regression_test/filex_file_rename_test.c @@ -9,7 +9,7 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ -// Some portions generated by Codex (gpt-5.6-sol). +// Portions of this file were generated with AI assistance. /* This FileX test concentrates on the file rename operations. */ diff --git a/test/regression_test/fx_ram_driver_test.h b/test/regression_test/fx_ram_driver_test.h index a864c84..be264e3 100644 --- a/test/regression_test/fx_ram_driver_test.h +++ b/test/regression_test/fx_ram_driver_test.h @@ -9,7 +9,7 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ -// Some portions generated by Codex (gpt-5.6-sol). +// Portions of this file were generated with AI assistance. #ifndef _FX_RAM_DRIVER_TEST_H_ #define _FX_RAM_DRIVER_TEST_H_