summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2005-04-15 01:55:58 +0000
committerMike Stump <mrs@gcc.gnu.org>2005-04-15 01:55:58 +0000
commita68bdb0b8d55eada5a23b2dde0b77d4c6667d999 (patch)
tree65754a9c82efd86ffa2890be19a131dc4dd60fc9 /gcc
parent417ac4e6c704d8a7477e4c04dc7887314fd593d4 (diff)
downloadgcc-a68bdb0b8d55eada5a23b2dde0b77d4c6667d999.tar.gz
darwin-c.c (framework_construct_pathname): We must find all headers of a framework in the first instance of it found in...
* config/darwin-c.c (framework_construct_pathname): We must find all headers of a framework in the first instance of it found in the seach path. * gcc.dg/Foundation.framework/empty: New. * gcc.dg/framework-2.c: New. From-SVN: r98162
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/darwin-c.c26
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/Foundation.framework/empty1
-rw-r--r--gcc/testsuite/gcc.dg/framework-2.c4
5 files changed, 37 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index df595298021..6cd1f287de2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-04-14 Mike Stump <mrs@apple.com>
+
+ * config/darwin-c.c (framework_construct_pathname): We must
+ find all headers of a framework in the first instance of it
+ found in the seach path.
+
2005-04-14 Kazu Hirata <kazu@cs.umass.edu>
PR tree-optimization/21021
diff --git a/gcc/config/darwin-c.c b/gcc/config/darwin-c.c
index feb26f185d2..58366f75745 100644
--- a/gcc/config/darwin-c.c
+++ b/gcc/config/darwin-c.c
@@ -270,6 +270,26 @@ framework_construct_pathname (const char *fname, cpp_dir *dir)
strncpy (&frname[frname_len], ".framework/", strlen (".framework/"));
frname_len += strlen (".framework/");
+ if (fast_dir == 0)
+ {
+ frname[frname_len-1] = 0;
+ if (stat (frname, &st) == 0)
+ {
+ /* As soon as we find the first instance of the framework,
+ we stop and never use any later instance of that
+ framework. */
+ add_framework (fname, fname_len, dir);
+ }
+ else
+ {
+ /* If we can't find the parent directory, no point looking
+ further. */
+ free (frname);
+ return 0;
+ }
+ frname[frname_len-1] = '/';
+ }
+
/* Append framework_header_dirs and header file name */
for (i = 0; framework_header_dirs[i].dirName; i++)
{
@@ -280,11 +300,7 @@ framework_construct_pathname (const char *fname, cpp_dir *dir)
&fname[fname_len]);
if (stat (frname, &st) == 0)
- {
- if (fast_dir == 0)
- add_framework (fname, fname_len, dir);
- return frname;
- }
+ return frname;
}
free (frname);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index eed557ebda1..b480eeafd48 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-04-14 Mike Stump <mrs@apple.com>
+
+ * gcc.dg/Foundation.framework/empty: New.
+ * gcc.dg/framework-2.c: New.
+
2005-04-14 Kazu Hirata <kazu@cs.umass.edu>
PR tree-optimization/21021
diff --git a/gcc/testsuite/gcc.dg/Foundation.framework/empty b/gcc/testsuite/gcc.dg/Foundation.framework/empty
new file mode 100644
index 00000000000..41347913eb9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Foundation.framework/empty
@@ -0,0 +1 @@
+This directory is empty.
diff --git a/gcc/testsuite/gcc.dg/framework-2.c b/gcc/testsuite/gcc.dg/framework-2.c
new file mode 100644
index 00000000000..a39041df3ec
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/framework-2.c
@@ -0,0 +1,4 @@
+/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-options "-F$srcdir/gcc.dg" } */
+
+#include <Foundation/Foundation.h> /* { dg-error "error: Foundation/Foundation.h: No such file" } */