aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSimon Wright <simon@pushface.org>2023-11-28 14:56:36 +0100
committerMarc Poulhiès <poulhies@adacore.com>2023-11-28 17:47:10 +0100
commit396db92d3aa7412dd7133563fecbc6237fa81c02 (patch)
tree22d905566e028621d15516b4290b4f5e72169b16 /gcc
parentf45d5e30bd98ea1d8dc29841a06b2cfa5662deb5 (diff)
downloadgcc-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.c14
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
}