public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Matthias Klose <doko@ubuntu.com>
To: Jakub Jelinek <jakub@redhat.com>
Cc: Meador Inge <meadori@codesourcery.com>,
	 Richard Biener <richard.guenther@gmail.com>,
	gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] gcc-{ar,nm,ranlib}: Find binutils binaries relative to self
Date: Wed, 19 Jun 2013 20:58:00 -0000	[thread overview]
Message-ID: <51C21B86.1090402@ubuntu.com> (raw)
In-Reply-To: <20130619174656.GR2336@tucnak.redhat.com>

[-- Attachment #1: Type: text/plain, Size: 1230 bytes --]

Am 19.06.2013 19:46, schrieb Jakub Jelinek:
> On Wed, Jun 19, 2013 at 05:29:42PM +0200, Matthias Klose wrote:
>> well, I did fix this assumption last year in gcc.c, then lets fix it in other
>> places too, just adding a mode parameter to the public find_a_file function.
>> Testing the attached patch.
> 
> Ok, provided you:
> 1) write proper ChangeLog
> 2) adjust the gcc-ar.c change (because it won't apply cleanly now that
>    I've committed the other gcc-ar.c fix
> 3) 
>> --- file-find.h	(revision 200203)
>> +++ file-find.h	(working copy)
>> @@ -38,7 +38,7 @@
>>  };
>>  
>>  extern void find_file_set_debug (bool);
>> -extern char *find_a_file (struct path_prefix *, const char *);
>> +extern char *find_a_file (struct path_prefix *, const char *, int mode);
> 
> Remove " mode" above, none of the arguments have names, so adding it
> is both inconsistent and useless.
> 
> 4)
>>    if (ld_file_name == 0)
>> -    ld_file_name = find_a_file (&path, full_ld_suffixes[selected_linker]);
>> +    ld_file_name = find_a_file (&path, full_ld_suffixes[selected_linker], X_OK);
> 
> This line looks too long now.

addressed 1-3, the semicolon is in column 79. committed to the trunk and the 4.8
branch as attached.

  Matthias




[-- Attachment #2: ff.diff --]
[-- Type: text/plain, Size: 6736 bytes --]

2013-06-19  Matthias Klose  <doko@ubuntu.com>

	PR driver/57651
	* file-find.h (find_a_file): Add a mode parameter.
	* file-find.c (find_a_file): Likewise.
	* gcc-ar.c (main): Call find_a_file with R_OK for the plugin,
	with X_OK for the executables.
	* collect2.c (main): Call find_a_file with X_OK.

Index: gcc-ar.c
===================================================================
--- gcc-ar.c	(revision 200217)
+++ gcc-ar.c	(working copy)
@@ -136,7 +136,7 @@
   setup_prefixes (av[0]);
 
   /* Find the GCC LTO plugin */
-  plugin = find_a_file (&target_path, LTOPLUGINSONAME);
+  plugin = find_a_file (&target_path, LTOPLUGINSONAME, R_OK);
   if (!plugin)
     {
       fprintf (stderr, "%s: Cannot find plugin '%s'\n", av[0], LTOPLUGINSONAME);
@@ -144,14 +144,14 @@
     }
 
   /* Find the wrapped binutils program.  */
-  exe_name = find_a_file (&target_path, PERSONALITY);
+  exe_name = find_a_file (&target_path, PERSONALITY, X_OK);
   if (!exe_name)
     {
       const char *real_exe_name = PERSONALITY;
 #ifdef CROSS_DIRECTORY_STRUCTURE
       real_exe_name = concat (target_machine, "-", PERSONALITY, NULL);
 #endif
-      exe_name = find_a_file (&path, real_exe_name);
+      exe_name = find_a_file (&path, real_exe_name, X_OK);
       if (!exe_name)
 	{
 	  fprintf (stderr, "%s: Cannot find binary '%s'\n", av[0],
Index: file-find.c
===================================================================
--- file-find.c	(revision 200217)
+++ file-find.c	(working copy)
@@ -31,7 +31,7 @@
 }
 
 char *
-find_a_file (struct path_prefix *pprefix, const char *name)
+find_a_file (struct path_prefix *pprefix, const char *name, int mode)
 {
   char *temp;
   struct prefix_list *pl;
@@ -50,7 +50,7 @@
 
   if (IS_ABSOLUTE_PATH (name))
     {
-      if (access (name, X_OK) == 0)
+      if (access (name, mode) == 0)
 	{
 	  strcpy (temp, name);
 
@@ -66,7 +66,7 @@
       strcpy (temp, name);
 	strcat (temp, HOST_EXECUTABLE_SUFFIX);
 
-	if (access (temp, X_OK) == 0)
+	if (access (temp, mode) == 0)
 	  return temp;
 #endif
 
@@ -83,7 +83,7 @@
 
 	if (stat (temp, &st) >= 0
 	    && ! S_ISDIR (st.st_mode)
-	    && access (temp, X_OK) == 0)
+	    && access (temp, mode) == 0)
 	  return temp;
 
 #ifdef HOST_EXECUTABLE_SUFFIX
@@ -93,7 +93,7 @@
 
 	if (stat (temp, &st) >= 0
 	    && ! S_ISDIR (st.st_mode)
-	    && access (temp, X_OK) == 0)
+	    && access (temp, mode) == 0)
 	  return temp;
 #endif
       }
Index: file-find.h
===================================================================
--- file-find.h	(revision 200217)
+++ file-find.h	(working copy)
@@ -38,7 +38,7 @@
 };
 
 extern void find_file_set_debug (bool);
-extern char *find_a_file (struct path_prefix *, const char *);
+extern char *find_a_file (struct path_prefix *, const char *, int);
 extern void add_prefix (struct path_prefix *, const char *);
 extern void prefix_from_env (const char *, struct path_prefix *);
 extern void prefix_from_string (const char *, struct path_prefix *);
Index: collect2.c
===================================================================
--- collect2.c	(revision 200217)
+++ collect2.c	(working copy)
@@ -1110,55 +1110,55 @@
   if (ld_file_name == 0)
 #endif
 #ifdef REAL_LD_FILE_NAME
-  ld_file_name = find_a_file (&path, REAL_LD_FILE_NAME);
+  ld_file_name = find_a_file (&path, REAL_LD_FILE_NAME, X_OK);
   if (ld_file_name == 0)
 #endif
   /* Search the (target-specific) compiler dirs for ld'.  */
-  ld_file_name = find_a_file (&cpath, real_ld_suffix);
+  ld_file_name = find_a_file (&cpath, real_ld_suffix, X_OK);
   /* Likewise for `collect-ld'.  */
   if (ld_file_name == 0)
     {
-      ld_file_name = find_a_file (&cpath, collect_ld_suffix);
+      ld_file_name = find_a_file (&cpath, collect_ld_suffix, X_OK);
       use_collect_ld = ld_file_name != 0;
     }
   /* Search the compiler directories for `ld'.  We have protection against
      recursive calls in find_a_file.  */
   if (ld_file_name == 0)
-    ld_file_name = find_a_file (&cpath, ld_suffixes[selected_linker]);
+    ld_file_name = find_a_file (&cpath, ld_suffixes[selected_linker], X_OK);
   /* Search the ordinary system bin directories
      for `ld' (if native linking) or `TARGET-ld' (if cross).  */
   if (ld_file_name == 0)
-    ld_file_name = find_a_file (&path, full_ld_suffixes[selected_linker]);
+    ld_file_name = find_a_file (&path, full_ld_suffixes[selected_linker], X_OK);
 
 #ifdef REAL_NM_FILE_NAME
-  nm_file_name = find_a_file (&path, REAL_NM_FILE_NAME);
+  nm_file_name = find_a_file (&path, REAL_NM_FILE_NAME, X_OK);
   if (nm_file_name == 0)
 #endif
-  nm_file_name = find_a_file (&cpath, gnm_suffix);
+  nm_file_name = find_a_file (&cpath, gnm_suffix, X_OK);
   if (nm_file_name == 0)
-    nm_file_name = find_a_file (&path, full_gnm_suffix);
+    nm_file_name = find_a_file (&path, full_gnm_suffix, X_OK);
   if (nm_file_name == 0)
-    nm_file_name = find_a_file (&cpath, nm_suffix);
+    nm_file_name = find_a_file (&cpath, nm_suffix, X_OK);
   if (nm_file_name == 0)
-    nm_file_name = find_a_file (&path, full_nm_suffix);
+    nm_file_name = find_a_file (&path, full_nm_suffix, X_OK);
 
 #ifdef LDD_SUFFIX
-  ldd_file_name = find_a_file (&cpath, ldd_suffix);
+  ldd_file_name = find_a_file (&cpath, ldd_suffix, X_OK);
   if (ldd_file_name == 0)
-    ldd_file_name = find_a_file (&path, full_ldd_suffix);
+    ldd_file_name = find_a_file (&path, full_ldd_suffix, X_OK);
 #endif
 
 #ifdef REAL_STRIP_FILE_NAME
-  strip_file_name = find_a_file (&path, REAL_STRIP_FILE_NAME);
+  strip_file_name = find_a_file (&path, REAL_STRIP_FILE_NAME, X_OK);
   if (strip_file_name == 0)
 #endif
-  strip_file_name = find_a_file (&cpath, gstrip_suffix);
+  strip_file_name = find_a_file (&cpath, gstrip_suffix, X_OK);
   if (strip_file_name == 0)
-    strip_file_name = find_a_file (&path, full_gstrip_suffix);
+    strip_file_name = find_a_file (&path, full_gstrip_suffix, X_OK);
   if (strip_file_name == 0)
-    strip_file_name = find_a_file (&cpath, strip_suffix);
+    strip_file_name = find_a_file (&cpath, strip_suffix, X_OK);
   if (strip_file_name == 0)
-    strip_file_name = find_a_file (&path, full_strip_suffix);
+    strip_file_name = find_a_file (&path, full_strip_suffix, X_OK);
 
   /* Determine the full path name of the C compiler to use.  */
   c_file_name = getenv ("COLLECT_GCC");
@@ -1171,12 +1171,12 @@
 #endif
     }
 
-  p = find_a_file (&cpath, c_file_name);
+  p = find_a_file (&cpath, c_file_name, X_OK);
 
   /* Here it should be safe to use the system search path since we should have
      already qualified the name of the compiler when it is needed.  */
   if (p == 0)
-    p = find_a_file (&path, c_file_name);
+    p = find_a_file (&path, c_file_name, X_OK);
 
   if (p)
     c_file_name = p;

  reply	other threads:[~2013-06-19 20:58 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-04 20:46 Meador Inge
2012-10-10  2:47 ` Meador Inge
2012-10-18 15:39   ` Meador Inge
2012-10-18 19:08     ` Bernhard Reutner-Fischer
2012-10-19 21:55       ` Meador Inge
2012-10-19 22:26     ` Meador Inge
2012-10-29 16:10     ` Meador Inge
2012-11-07 21:51       ` Meador Inge
2012-11-26 15:06         ` Richard Biener
2012-11-27 18:14           ` Meador Inge
2013-06-19 12:03             ` Matthias Klose
2013-06-19 12:10               ` Jakub Jelinek
2013-06-19 15:29                 ` Matthias Klose
2013-06-19 17:47                   ` Jakub Jelinek
2013-06-19 20:58                     ` Matthias Klose [this message]
2013-06-19 12:20               ` Matthias Klose

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51C21B86.1090402@ubuntu.com \
    --to=doko@ubuntu.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    --cc=meadori@codesourcery.com \
    --cc=richard.guenther@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).