diff options
author | Simon Wright <simon@pushface.org> | 2023-11-28 14:56:36 +0100 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-11-28 17:47:10 +0100 |
commit | 396db92d3aa7412dd7133563fecbc6237fa81c02 (patch) | |
tree | 22d905566e028621d15516b4290b4f5e72169b16 /gcc | |
parent | f45d5e30bd98ea1d8dc29841a06b2cfa5662deb5 (diff) | |
download | gcc-396db92d3aa7412dd7133563fecbc6237fa81c02.zip gcc-396db92d3aa7412dd7133563fecbc6237fa81c02.tar.gz gcc-396db92d3aa7412dd7133563fecbc6237fa81c02.tar.bz2 |
Fix PR ada/111909 On Darwin, determine filesystem case sensitivity at runtime
In gcc/ada/adaint.c(__gnat_get_file_names_case_sensitive), the current
assumption for __APPLE__ is that file names are case-insensitive
unless __arm__ or __arm64__ are defined, in which case file names are
declared case-sensitive.
The associated comment is
"By default, we suppose filesystems aren't case sensitive on
Windows and Darwin (but they are on arm-darwin)."
This means that on aarch64-apple-darwin, file names are treated as
case-sensitive, which is not the default case.
The true default position is that macOS file systems are
case-insensitive, iOS file systems are case-sensitive.
Apple provide a header file <TargetConditionals.h> which permits a
compile-time check for the compiler target (e.g. OSX vs IOS); if
TARGET_OS_IOS is defined as 1, this is a build for iOS.
2023-11-22 Simon Wright <simon@pushface.org>
gcc/ada/
PR ada/111909
* adaint.c
(__gnat_get_file_names_case_sensitive): Split out the __APPLE__
check and remove the checks for __arm__, __arm64__. For Apple,
file names are by default case-insensitive unless TARGET_OS_IOS is
set.
Signed-off-by: Simon Wright <simon@pushface.org>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/adaint.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index 4ab9565..9bb3054 100644 --- a/gcc/ada/adaint.c +++ b/gcc/ada/adaint.c @@ -85,6 +85,7 @@ #if defined (__APPLE__) #include <unistd.h> +#include <TargetConditionals.h> #endif #if defined (__hpux__) @@ -613,11 +614,18 @@ __gnat_get_file_names_case_sensitive (void) else { /* By default, we suppose filesystems aren't case sensitive on - Windows and Darwin (but they are on arm-darwin). */ -#if defined (WINNT) || defined (__DJGPP__) \ - || (defined (__APPLE__) && !(defined (__arm__) || defined (__arm64__))) + Windows or DOS. */ +#if defined (WINNT) || defined (__DJGPP__) file_names_case_sensitive_cache = 0; +#elif defined (__APPLE__) + /* By default, macOS volumes are case-insensitive, iOS + volumes are case-sensitive. */ +#if TARGET_OS_IOS + file_names_case_sensitive_cache = 1; #else + file_names_case_sensitive_cache = 0; +#endif +#else /* Neither Windows nor Apple. */ file_names_case_sensitive_cache = 1; #endif } |