2000-09-21 Kazu Hirata <kazu@hxi.com>
* ldmain.c: Fix formatting. * ldmisc.c: Likewise. * ldver.c: Likewise. * ldwrite.c: Likewise.
This commit is contained in:
parent
8c6b089eed
commit
6d5e62f8b5
5 changed files with 67 additions and 68 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2000-09-21 Kazu Hirata <kazu@hxi.com>
|
||||||
|
|
||||||
|
* ldmain.c: Fix formatting.
|
||||||
|
* ldmisc.c: Likewise.
|
||||||
|
* ldver.c: Likewise.
|
||||||
|
* ldwrite.c: Likewise.
|
||||||
|
|
||||||
2000-09-21 Alan Modra <alan@linuxcare.com.au>
|
2000-09-21 Alan Modra <alan@linuxcare.com.au>
|
||||||
|
|
||||||
* ldwrite.c (clone_section): Silence gcc warnings.
|
* ldwrite.c (clone_section): Silence gcc warnings.
|
||||||
|
|
39
ld/ldmain.c
39
ld/ldmain.c
|
@ -65,7 +65,7 @@ const char *output_filename = "a.out";
|
||||||
/* Name this program was invoked by. */
|
/* Name this program was invoked by. */
|
||||||
char *program_name;
|
char *program_name;
|
||||||
|
|
||||||
/* The file that we're creating */
|
/* The file that we're creating. */
|
||||||
bfd *output_bfd = 0;
|
bfd *output_bfd = 0;
|
||||||
|
|
||||||
/* Set by -G argument, for MIPS ECOFF target. */
|
/* Set by -G argument, for MIPS ECOFF target. */
|
||||||
|
@ -130,8 +130,7 @@ static boolean unattached_reloc PARAMS ((struct bfd_link_info *,
|
||||||
static boolean notice PARAMS ((struct bfd_link_info *, const char *,
|
static boolean notice PARAMS ((struct bfd_link_info *, const char *,
|
||||||
bfd *, asection *, bfd_vma));
|
bfd *, asection *, bfd_vma));
|
||||||
|
|
||||||
static struct bfd_link_callbacks link_callbacks =
|
static struct bfd_link_callbacks link_callbacks = {
|
||||||
{
|
|
||||||
add_archive_element,
|
add_archive_element,
|
||||||
multiple_definition,
|
multiple_definition,
|
||||||
multiple_common,
|
multiple_common,
|
||||||
|
@ -153,7 +152,7 @@ remove_output ()
|
||||||
if (output_filename)
|
if (output_filename)
|
||||||
{
|
{
|
||||||
if (output_bfd && output_bfd->iostream)
|
if (output_bfd && output_bfd->iostream)
|
||||||
fclose((FILE *)(output_bfd->iostream));
|
fclose ((FILE *) (output_bfd->iostream));
|
||||||
if (delete_output_file_on_failure)
|
if (delete_output_file_on_failure)
|
||||||
unlink (output_filename);
|
unlink (output_filename);
|
||||||
}
|
}
|
||||||
|
@ -328,7 +327,6 @@ main (argc, argv)
|
||||||
|
|
||||||
ldemul_after_parse ();
|
ldemul_after_parse ();
|
||||||
|
|
||||||
|
|
||||||
if (config.map_filename)
|
if (config.map_filename)
|
||||||
{
|
{
|
||||||
if (strcmp (config.map_filename, "-") == 0)
|
if (strcmp (config.map_filename, "-") == 0)
|
||||||
|
@ -347,16 +345,15 @@ main (argc, argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
lang_process ();
|
lang_process ();
|
||||||
|
|
||||||
/* Print error messages for any missing symbols, for any warning
|
/* Print error messages for any missing symbols, for any warning
|
||||||
symbols, and possibly multiple definitions */
|
symbols, and possibly multiple definitions. */
|
||||||
|
|
||||||
if (! link_info.relocateable)
|
if (! link_info.relocateable)
|
||||||
{
|
{
|
||||||
/* Look for a text section and switch the readonly attribute in it. */
|
/* Look for a text section and switch the readonly attribute in it. */
|
||||||
asection * found = bfd_get_section_by_name (output_bfd, ".text");
|
asection *found = bfd_get_section_by_name (output_bfd, ".text");
|
||||||
|
|
||||||
if (found != (asection *) NULL)
|
if (found != (asection *) NULL)
|
||||||
{
|
{
|
||||||
|
@ -403,8 +400,8 @@ main (argc, argv)
|
||||||
einfo (_("%F%B: final close failed: %E\n"), output_bfd);
|
einfo (_("%F%B: final close failed: %E\n"), output_bfd);
|
||||||
|
|
||||||
/* If the --force-exe-suffix is enabled, and we're making an
|
/* If the --force-exe-suffix is enabled, and we're making an
|
||||||
executable file and it doesn't end in .exe, copy it to one which does. */
|
executable file and it doesn't end in .exe, copy it to one
|
||||||
|
which does. */
|
||||||
if (! link_info.relocateable && command_line.force_exe_suffix)
|
if (! link_info.relocateable && command_line.force_exe_suffix)
|
||||||
{
|
{
|
||||||
int len = strlen (output_filename);
|
int len = strlen (output_filename);
|
||||||
|
@ -499,7 +496,7 @@ get_emulation (argc, argv)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
einfo(_("%P%F: missing argument to -m\n"));
|
einfo (_("%P%F: missing argument to -m\n"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (strcmp (argv[i], "-mips1") == 0
|
else if (strcmp (argv[i], "-mips1") == 0
|
||||||
|
@ -547,7 +544,7 @@ check_for_scripts_dir (dir)
|
||||||
|
|
||||||
dirlen = strlen (dir);
|
dirlen = strlen (dir);
|
||||||
/* sizeof counts the terminating NUL. */
|
/* sizeof counts the terminating NUL. */
|
||||||
buf = (char *) xmalloc (dirlen + sizeof("/ldscripts"));
|
buf = (char *) xmalloc (dirlen + sizeof ("/ldscripts"));
|
||||||
sprintf (buf, "%s/ldscripts", dir);
|
sprintf (buf, "%s/ldscripts", dir);
|
||||||
|
|
||||||
res = stat (buf, &s) == 0 && S_ISDIR (s.st_mode);
|
res = stat (buf, &s) == 0 && S_ISDIR (s.st_mode);
|
||||||
|
@ -572,7 +569,8 @@ set_scripts_dir ()
|
||||||
size_t dirlen;
|
size_t dirlen;
|
||||||
|
|
||||||
if (check_for_scripts_dir (SCRIPTDIR))
|
if (check_for_scripts_dir (SCRIPTDIR))
|
||||||
return; /* We've been installed normally. */
|
/* We've been installed normally. */
|
||||||
|
return;
|
||||||
|
|
||||||
/* Look for "ldscripts" in the dir where our binary is. */
|
/* Look for "ldscripts" in the dir where our binary is. */
|
||||||
end = strrchr (program_name, '/');
|
end = strrchr (program_name, '/');
|
||||||
|
@ -600,14 +598,16 @@ set_scripts_dir ()
|
||||||
dir[dirlen] = '\0';
|
dir[dirlen] = '\0';
|
||||||
|
|
||||||
if (check_for_scripts_dir (dir))
|
if (check_for_scripts_dir (dir))
|
||||||
return; /* Don't free dir. */
|
/* Don't free dir. */
|
||||||
|
return;
|
||||||
|
|
||||||
/* Look for "ldscripts" in <the dir where our binary is>/../lib. */
|
/* Look for "ldscripts" in <the dir where our binary is>/../lib. */
|
||||||
strcpy (dir + dirlen, "/../lib");
|
strcpy (dir + dirlen, "/../lib");
|
||||||
if (check_for_scripts_dir (dir))
|
if (check_for_scripts_dir (dir))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
free (dir); /* Well, we tried. */
|
/* Well, we tried. */
|
||||||
|
free (dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -719,7 +719,6 @@ add_keepsyms_file (filename)
|
||||||
/* This is called when BFD has decided to include an archive member in
|
/* This is called when BFD has decided to include an archive member in
|
||||||
a link. */
|
a link. */
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static boolean
|
static boolean
|
||||||
add_archive_element (info, abfd, name)
|
add_archive_element (info, abfd, name)
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
|
@ -834,7 +833,6 @@ add_archive_element (info, abfd, name)
|
||||||
/* This is called when BFD has discovered a symbol which is defined
|
/* This is called when BFD has discovered a symbol which is defined
|
||||||
multiple times. */
|
multiple times. */
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static boolean
|
static boolean
|
||||||
multiple_definition (info, name, obfd, osec, oval, nbfd, nsec, nval)
|
multiple_definition (info, name, obfd, osec, oval, nbfd, nsec, nval)
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
|
@ -878,7 +876,6 @@ multiple_definition (info, name, obfd, osec, oval, nbfd, nsec, nval)
|
||||||
or when two common symbols are found. We only do something if
|
or when two common symbols are found. We only do something if
|
||||||
-warn-common was used. */
|
-warn-common was used. */
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static boolean
|
static boolean
|
||||||
multiple_common (info, name, obfd, otype, osize, nbfd, ntype, nsize)
|
multiple_common (info, name, obfd, otype, osize, nbfd, ntype, nsize)
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
|
@ -945,7 +942,6 @@ multiple_common (info, name, obfd, otype, osize, nbfd, ntype, nsize)
|
||||||
entry in the linker hash table for the set. SECTION and VALUE
|
entry in the linker hash table for the set. SECTION and VALUE
|
||||||
represent a value which should be added to the set. */
|
represent a value which should be added to the set. */
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static boolean
|
static boolean
|
||||||
add_to_set (info, h, reloc, abfd, section, value)
|
add_to_set (info, h, reloc, abfd, section, value)
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
|
@ -1044,7 +1040,6 @@ struct warning_callback_info
|
||||||
|
|
||||||
/* This is called when there is a reference to a warning symbol. */
|
/* This is called when there is a reference to a warning symbol. */
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static boolean
|
static boolean
|
||||||
warning_callback (info, warning, symbol, abfd, section, address)
|
warning_callback (info, warning, symbol, abfd, section, address)
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
|
@ -1166,7 +1161,6 @@ warning_find_reloc (abfd, sec, iarg)
|
||||||
|
|
||||||
/* This is called when an undefined symbol is found. */
|
/* This is called when an undefined symbol is found. */
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static boolean
|
static boolean
|
||||||
undefined_symbol (info, name, abfd, section, address, fatal)
|
undefined_symbol (info, name, abfd, section, address, fatal)
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
|
@ -1247,7 +1241,6 @@ undefined_symbol (info, name, abfd, section, address, fatal)
|
||||||
|
|
||||||
/* This is called when a reloc overflows. */
|
/* This is called when a reloc overflows. */
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static boolean
|
static boolean
|
||||||
reloc_overflow (info, name, reloc_name, addend, abfd, section, address)
|
reloc_overflow (info, name, reloc_name, addend, abfd, section, address)
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
|
@ -1271,7 +1264,6 @@ reloc_overflow (info, name, reloc_name, addend, abfd, section, address)
|
||||||
|
|
||||||
/* This is called when a dangerous relocation is made. */
|
/* This is called when a dangerous relocation is made. */
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static boolean
|
static boolean
|
||||||
reloc_dangerous (info, message, abfd, section, address)
|
reloc_dangerous (info, message, abfd, section, address)
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
|
@ -1291,7 +1283,6 @@ reloc_dangerous (info, message, abfd, section, address)
|
||||||
/* This is called when a reloc is being generated attached to a symbol
|
/* This is called when a reloc is being generated attached to a symbol
|
||||||
that is not being output. */
|
that is not being output. */
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static boolean
|
static boolean
|
||||||
unattached_reloc (info, name, abfd, section, address)
|
unattached_reloc (info, name, abfd, section, address)
|
||||||
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
struct bfd_link_info *info ATTRIBUTE_UNUSED;
|
||||||
|
|
28
ld/ldmisc.c
28
ld/ldmisc.c
|
@ -76,10 +76,10 @@ demangle (string)
|
||||||
&& bfd_get_symbol_leading_char (output_bfd) == string[0])
|
&& bfd_get_symbol_leading_char (output_bfd) == string[0])
|
||||||
++string;
|
++string;
|
||||||
|
|
||||||
/* This is a hack for better error reporting on XCOFF, or the MS PE */
|
/* This is a hack for better error reporting on XCOFF, or the MS PE
|
||||||
/* format. Xcoff has a single '.', while the NT PE for PPC has '..'. */
|
format. Xcoff has a single '.', while the NT PE for PPC has
|
||||||
/* So we remove all of them. */
|
'..'. So we remove all of them. */
|
||||||
while(string[0] == '.')
|
while (string[0] == '.')
|
||||||
++string;
|
++string;
|
||||||
|
|
||||||
res = cplus_demangle (string, DMGL_ANSI | DMGL_PARAMS);
|
res = cplus_demangle (string, DMGL_ANSI | DMGL_PARAMS);
|
||||||
|
@ -104,11 +104,11 @@ vfinfo (fp, fmt, arg)
|
||||||
|
|
||||||
if (*fmt == '%')
|
if (*fmt == '%')
|
||||||
{
|
{
|
||||||
fmt ++;
|
fmt++;
|
||||||
switch (*fmt++)
|
switch (*fmt++)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
fprintf (fp,"%%%c", fmt[-1]);
|
fprintf (fp, "%%%c", fmt[-1]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '%':
|
case '%':
|
||||||
|
@ -202,12 +202,12 @@ vfinfo (fp, fmt, arg)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'F':
|
case 'F':
|
||||||
/* error is fatal */
|
/* Error is fatal. */
|
||||||
fatal = true;
|
fatal = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'P':
|
case 'P':
|
||||||
/* print program name */
|
/* Print program name. */
|
||||||
fprintf (fp, "%s", program_name);
|
fprintf (fp, "%s", program_name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -233,7 +233,7 @@ vfinfo (fp, fmt, arg)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'S':
|
case 'S':
|
||||||
/* print script file and linenumber */
|
/* Print script file and linenumber. */
|
||||||
if (parsing_defsym)
|
if (parsing_defsym)
|
||||||
fprintf (fp, "--defsym %s", lex_string);
|
fprintf (fp, "--defsym %s", lex_string);
|
||||||
else if (ldfile_input_filename != NULL)
|
else if (ldfile_input_filename != NULL)
|
||||||
|
@ -243,7 +243,7 @@ vfinfo (fp, fmt, arg)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'R':
|
case 'R':
|
||||||
/* Print all that's interesting about a relent */
|
/* Print all that's interesting about a relent. */
|
||||||
{
|
{
|
||||||
arelent *relent = va_arg (arg, arelent *);
|
arelent *relent = va_arg (arg, arelent *);
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ vfinfo (fp, fmt, arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fatal == true)
|
if (fatal == true)
|
||||||
xexit(1);
|
xexit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Format info message and print on stdout. */
|
/* Format info message and print on stdout. */
|
||||||
|
@ -468,9 +468,9 @@ char *
|
||||||
buystring (x)
|
buystring (x)
|
||||||
CONST char *CONST x;
|
CONST char *CONST x;
|
||||||
{
|
{
|
||||||
size_t l = strlen(x)+1;
|
size_t l = strlen (x) + 1;
|
||||||
char *r = xmalloc(l);
|
char *r = xmalloc (l);
|
||||||
memcpy(r, x,l);
|
memcpy (r, x, l);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -290,10 +290,8 @@ build_link_order (statement)
|
||||||
|
|
||||||
/* Call BFD to write out the linked file. */
|
/* Call BFD to write out the linked file. */
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/* Wander around the input sections, make sure that
|
/* Wander around the input sections, make sure that
|
||||||
we'll never try and create an output section with more relocs
|
we'll never try and create an output section with more relocs
|
||||||
than will fit.. Do this by always assuming the worst case, and
|
than will fit.. Do this by always assuming the worst case, and
|
||||||
|
@ -365,6 +363,7 @@ ds (s)
|
||||||
}
|
}
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
dump (s, a1, a2)
|
dump (s, a1, a2)
|
||||||
char *s;
|
char *s;
|
||||||
asection *a1;
|
asection *a1;
|
||||||
|
@ -520,7 +519,9 @@ split_sections (abfd, info)
|
||||||
}
|
}
|
||||||
sanity_check (abfd);
|
sanity_check (abfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
void
|
void
|
||||||
ldwrite ()
|
ldwrite ()
|
||||||
{
|
{
|
||||||
|
@ -541,6 +542,6 @@ ldwrite ()
|
||||||
if (bfd_get_error () != bfd_error_no_error)
|
if (bfd_get_error () != bfd_error_no_error)
|
||||||
einfo (_("%F%P: final link failed: %E\n"));
|
einfo (_("%F%P: final link failed: %E\n"));
|
||||||
else
|
else
|
||||||
xexit(1);
|
xexit (1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue