aboutsummaryrefslogtreecommitdiff
path: root/gcc/collect2.c
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2005-01-09 22:01:48 +0000
committerDavid Edelsohn <edelsohn@gnu.org>2005-01-09 22:01:48 +0000
commit2dc9cf6c2fcc795bcda2104e6542a7a42c6b5ddc (patch)
tree277a654e1c4e433b49261f0f29c43cc4c0ecf829 /gcc/collect2.c
parent37b49be3bd225483c2c984a532d468594017c27a (diff)
PR target/18720
* collect2.c (main): Set aixrtl_flag for -brtl option. (resolve_lib_name): Search for .so file extension before .a if aixrtl_flag set. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@93119 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/collect2.c')
-rw-r--r--gcc/collect2.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/collect2.c b/gcc/collect2.c
index cc55cf4de00..999e670fc7c 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -185,6 +185,7 @@ static const char *demangle_flag;
#ifdef COLLECT_EXPORT_LIST
static int export_flag; /* true if -bE */
static int aix64_flag; /* true if -b64 */
+static int aixrtl_flag; /* true if -brtl */
#endif
int debug; /* true if -debug */
@@ -242,7 +243,6 @@ static struct path_prefix cmdline_lib_dirs; /* directories specified with -L */
static struct path_prefix libpath_lib_dirs; /* directories in LIBPATH */
static struct path_prefix *libpaths[3] = {&cmdline_lib_dirs,
&libpath_lib_dirs, NULL};
-static const char *const libexts[3] = {"a", "so", NULL}; /* possible library extensions */
#endif
static void handler (int);
@@ -1087,6 +1087,8 @@ main (int argc, char **argv)
export_flag = 1;
else if (arg[2] == '6' && arg[3] == '4')
aix64_flag = 1;
+ else if (arg[2] == 'r' && arg[3] == 't' && arg[4] == 'l')
+ aixrtl_flag = 1;
break;
#endif
@@ -2594,6 +2596,8 @@ resolve_lib_name (const char *name)
{
char *lib_buf;
int i, j, l = 0;
+ /* Library extensions for AIX dynamic linking. */
+ const char * const libexts[2] = {"a", "so"};
for (i = 0; libpaths[i]; i++)
if (libpaths[i]->max_len > l)
@@ -2612,14 +2616,15 @@ resolve_lib_name (const char *name)
const char *p = "";
if (list->prefix[strlen(list->prefix)-1] != '/')
p = "/";
- for (j = 0; libexts[j]; j++)
+ for (j = 0; j < 2; j++)
{
sprintf (lib_buf, "%s%slib%s.%s",
- list->prefix, p, name, libexts[j]);
-if (debug) fprintf (stderr, "searching for: %s\n", lib_buf);
+ list->prefix, p, name,
+ libexts[(j + aixrtl_flag) % 2]);
+ if (debug) fprintf (stderr, "searching for: %s\n", lib_buf);
if (file_exists (lib_buf))
{
-if (debug) fprintf (stderr, "found: %s\n", lib_buf);
+ if (debug) fprintf (stderr, "found: %s\n", lib_buf);
return (lib_buf);
}
}