Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
ae8c5963
Commit
ae8c5963
authored
Mar 24, 1998
by
Nick Clifton
Committed by
Nick Clifton
Mar 24, 1998
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support win32 style absolute paths.
Add more debugging. From-SVN: r18797
parent
ff29fd00
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
11 deletions
+75
-11
gcc/ChangeLog
+10
-0
gcc/collect2.c
+65
-11
No files found.
gcc/ChangeLog
View file @
ae8c5963
Tue Mar 24 10:44:11 1998 Nick Clifton <nickc@cygnus.com>
* collect2.c (find_a_file): Add debugging.
(find_a_file): Test for win32 style absolute paths if
DIR_SERPARATOR is defined.
(prefix_from_string): Add debugging.
(main): Test for debug command line switch at start of program
execution.
(main): Use GET_ENVIRONMENT rather than getenv().
1998-03-24 Mark Mitchell <mmitchell@usa.net>
* cplus-dem.c (optable): Add sizeof.
...
...
gcc/collect2.c
View file @
ae8c5963
...
...
@@ -784,6 +784,9 @@ find_a_file (pprefix, name)
struct
prefix_list
*
pl
;
int
len
=
pprefix
->
max_len
+
strlen
(
name
)
+
1
;
if
(
debug
)
fprintf
(
stderr
,
"Looking for '%s'
\n
"
,
name
);
#ifdef EXECUTABLE_SUFFIX
len
+=
strlen
(
EXECUTABLE_SUFFIX
);
#endif
...
...
@@ -792,35 +795,70 @@ find_a_file (pprefix, name)
/* Determine the filename to execute (special case for absolute paths). */
if
(
*
name
==
'/'
)
if
(
*
name
==
'/'
#ifdef DIR_SEPARATOR
DIR_SEPARATOR
==
'\\'
&&
name
[
1
]
==
':'
&&
(
name
[
2
]
==
DIR_SEPARATOR
||
name
[
2
]
==
'/'
)
#endif
)
{
if
(
access
(
name
,
X_OK
)
==
0
)
{
strcpy
(
temp
,
name
);
if
(
debug
)
fprintf
(
stderr
,
" - found: absolute path
\n
"
);
return
temp
;
}
if
(
debug
)
fprintf
(
stderr
,
" - failed to locate using absolute path
\n
"
);
}
else
for
(
pl
=
pprefix
->
plist
;
pl
;
pl
=
pl
->
next
)
{
strcpy
(
temp
,
pl
->
prefix
);
strcat
(
temp
,
name
);
if
(
debug
)
fprintf
(
stderr
,
" - try: %s
\n
"
,
temp
);
if
(
!
is_in_prefix_list
(
&
our_file_names
,
temp
,
1
)
/* This is a kludge, but there seems no way around it. */
&&
strcmp
(
temp
,
"./ld"
)
!=
0
&&
access
(
temp
,
X_OK
)
==
0
)
return
temp
;
{
if
(
debug
)
fprintf
(
stderr
,
" - found!
\n
"
);
return
temp
;
}
#ifdef EXECUTABLE_SUFFIX
/* Some systems have a suffix for executable files.
So try appending that. */
strcat
(
temp
,
EXECUTABLE_SUFFIX
);
if
(
debug
)
fprintf
(
stderr
,
" - try: %s
\n
"
,
temp
);
if
(
!
is_in_prefix_list
(
&
our_file_names
,
temp
,
1
)
&&
access
(
temp
,
X_OK
)
==
0
)
return
temp
;
#endif
{
if
(
debug
)
fprintf
(
stderr
,
" - found! (Uses executable suffix)
\n
"
);
return
temp
;
}
#endif
if
(
debug
&&
pl
->
next
==
NULL
)
fprintf
(
stderr
,
" - failed to locate using relative paths
\n
"
);
}
if
(
debug
&&
pprefix
->
plist
==
NULL
)
fprintf
(
stderr
,
" - failed: no entries in prefix list
\n
"
);
free
(
temp
);
return
0
;
}
...
...
@@ -882,6 +920,9 @@ prefix_from_string (p, pprefix)
char
*
startp
,
*
endp
;
char
*
nstore
=
(
char
*
)
xmalloc
(
strlen
(
p
)
+
3
);
if
(
debug
)
fprintf
(
stderr
,
"Convert string '%s' into prefixes, separator = '%c'
\n
"
,
p
,
PATH_SEPARATOR
);
startp
=
endp
=
p
;
while
(
1
)
{
...
...
@@ -900,6 +941,9 @@ prefix_from_string (p, pprefix)
else
nstore
[
endp
-
startp
]
=
0
;
if
(
debug
)
fprintf
(
stderr
,
" - add prefix: %s
\n
"
,
nstore
);
add_prefix
(
pprefix
,
nstore
);
if
(
*
endp
==
0
)
break
;
...
...
@@ -956,9 +1000,20 @@ main (argc, argv)
#ifdef DEBUG
debug
=
1
;
vflag
=
1
;
#endif
/* Parse command line early for instances of -debug. This allows
the debug flag to be set before functions like find_a_file()
are called. */
{
int
i
;
for
(
i
=
1
;
argv
[
i
]
!=
NULL
;
i
++
)
if
(
!
strcmp
(
argv
[
i
],
"-debug"
))
debug
=
1
;
vflag
=
debug
;
}
#ifndef DEFAULT_A_OUT_NAME
output_file
=
"a.out"
;
#else
...
...
@@ -986,8 +1041,8 @@ main (argc, argv)
and a new one is installed (rare, but we should handle it).
??? Hopefully references to COLLECT_NAME can be removed at some point. */
collect_name
=
getenv
(
"COLLECT_NAME"
);
collect_names
=
getenv
(
"COLLECT_NAMES"
);
GET_ENVIRONMENT
(
collect_name
,
"COLLECT_NAME"
);
GET_ENVIRONMENT
(
collect_names
,
"COLLECT_NAMES"
);
p
=
(
char
*
)
xmalloc
(
strlen
(
"COLLECT_NAMES="
)
+
(
collect_name
?
strlen
(
collect_name
)
+
1
:
0
)
...
...
@@ -1056,7 +1111,7 @@ main (argc, argv)
#ifdef CROSS_COMPILE
/* If we look for a program in the compiler directories, we just use
the short name, since these directories are already system-specific.
But it we look for a
took
in the system directories, we need to
But it we look for a
program
in the system directories, we need to
qualify the program name with the target machine. */
full_ld_suffix
...
...
@@ -1136,7 +1191,7 @@ main (argc, argv)
argv
[
0
]
=
ld_file_name
;
execvp
(
argv
[
0
],
argv
);
}
fatal
(
"cannot find `ld'
"
);
fatal
(
"cannot find `ld'
(%s)"
,
ld_file_name
);
}
#ifdef REAL_NM_FILE_NAME
...
...
@@ -1273,8 +1328,7 @@ main (argc, argv)
case
'd'
:
if
(
!
strcmp
(
arg
,
"-debug"
))
{
debug
=
1
;
vflag
=
1
;
/* Already parsed. */
ld1
--
;
ld2
--
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment