aboutsummaryrefslogtreecommitdiff
path: root/ld/ldlang.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1993-12-11 22:46:15 +0000
committerIan Lance Taylor <ian@airs.com>1993-12-11 22:46:15 +0000
commit2c6635a46f894fc4e3c0ea6a9023f0ae43b3451f (patch)
tree1b0cb0f72eb03dbfc35cc3a90ad7a4e64218545f /ld/ldlang.c
parent2b5936ff87ad3044007ad8109db6d145b790b930 (diff)
downloadgdb-2c6635a46f894fc4e3c0ea6a9023f0ae43b3451f.zip
gdb-2c6635a46f894fc4e3c0ea6a9023f0ae43b3451f.tar.gz
gdb-2c6635a46f894fc4e3c0ea6a9023f0ae43b3451f.tar.bz2
* ldlang.c (lang_process): Ifdef out final call to
lang_size_sections again (reverting change of Nove 2), since it breaks the Sun4 linker.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r--ld/ldlang.c40
1 files changed, 24 insertions, 16 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 0fb4a18..a1e4293 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -87,6 +87,7 @@ boolean delete_output_file_on_failure = false;
/* IMPORTS */
extern char *default_target;
+extern CONST char *output_filename;
extern char *current_file;
extern bfd *output_bfd;
extern enum bfd_architecture ldfile_output_architecture;
@@ -785,7 +786,6 @@ open_output (name)
extern unsigned long ldfile_output_machine;
extern enum bfd_architecture ldfile_output_architecture;
- extern CONST char *output_filename;
bfd *output;
if (output_target == (char *) NULL)
@@ -796,7 +796,6 @@ open_output (name)
output_target = default_target;
}
output = bfd_openw (name, output_target);
- output_filename = name;
if (output == (bfd *) NULL)
{
@@ -2131,9 +2130,11 @@ lang_common ()
com->section);
newsec = bfd_get_section_by_name (symbfd,
name);
- /* BFD backend must provide this section. */
+ /* This section should have been created by
+ enter_file_symbols if it did not already
+ exist. */
if (newsec == (asection *) NULL)
- einfo ("%P%F: no output section %s", name);
+ einfo ("%P%F: no output section %s\n", name);
com->section = newsec;
}
@@ -2329,14 +2330,16 @@ ldlang_add_file (entry)
}
void
-lang_add_output (name)
+lang_add_output (name, from_script)
CONST char *name;
+ int from_script;
{
- lang_output_statement_type *new = new_stat (lang_output_statement,
- stat_ptr);
-
- new->name = name;
- had_output_filename = true;
+ /* Make -o on command line override OUTPUT in script. */
+ if (had_output_filename == false || !from_script)
+ {
+ output_filename = name;
+ had_output_filename = true;
+ }
}
@@ -2409,12 +2412,10 @@ lang_enter_output_section_statement (output_section_statement_name,
void
lang_final ()
{
- if (had_output_filename == false)
- {
- extern CONST char *output_filename;
+ lang_output_statement_type *new =
+ new_stat (lang_output_statement, stat_ptr);
- lang_add_output (output_filename);
- }
+ new->name = output_filename;
}
/* Reset the current counters in the regions */
@@ -2570,10 +2571,17 @@ lang_process ()
/* Final stuffs */
ldemul_finish ();
+
+#if 0
+ /* DO NOT REENABLE THIS CALL. IF THIS CALL IS MADE, THE SUN4 LINKER
+ CAN NOT BOOTSTRAP!! No, I don't know why, but don't change it
+ unless you fix it. */
/* Size up the sections. */
lang_size_sections (statement_list.head,
abs_output_section,
&(statement_list.head), 0, (bfd_vma) 0, false);
+#endif
+
lang_finish ();
}
@@ -2801,6 +2809,6 @@ lang_add_output_format (format, from_script)
CONST char *format;
int from_script;
{
- if (!from_script || output_target == NULL)
+ if (output_target == NULL || !from_script)
output_target = format;
}