aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog12
-rw-r--r--ld/ldemul.c52
2 files changed, 64 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index cb737c5..cd0bc2f 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,15 @@
+Mon Mar 6 14:03:50 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldemul.c (ldemul_list_emulations): New function.
+ * ldemul.h (ldemul_list_emulations): Declare.
+ * ldver.c (help): List supported targets and emulations.
+
+Fri Mar 3 15:40:36 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * scripttempl/elf.sc (.debug): Relocate to address 0.
+ (.debug_srcinfo, .debug_aranges, .debug_pubnames,
+ .debug_sfnames, .line): Likewise.
+
Fri Mar 3 17:07:14 1995 Ian Lance Taylor <ian@cygnus.com>
* emultempl/elf32.em (hold_rel): New static variable.
diff --git a/ld/ldemul.c b/ld/ldemul.c
index 0e950d8..6348afc 100644
--- a/ld/ldemul.c
+++ b/ld/ldemul.c
@@ -24,6 +24,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "ld.h"
#include "ldemul.h"
#include "ldmisc.h"
+#include "ldexp.h"
+#include "ldlang.h"
#include "ldfile.h"
#include "ldmain.h"
#include "ldemul-list.h"
@@ -56,6 +58,12 @@ ldemul_before_parse()
ld_emulation->before_parse();
}
+void
+ldemul_after_open ()
+{
+ ld_emulation->after_open ();
+}
+
void
ldemul_after_allocation()
{
@@ -97,6 +105,26 @@ ldemul_get_script(isfile)
return ld_emulation->get_script(isfile);
}
+boolean
+ldemul_open_dynamic_archive (arch, entry)
+ const char *arch;
+ lang_input_statement_type *entry;
+{
+ if (ld_emulation->open_dynamic_archive)
+ return (*ld_emulation->open_dynamic_archive) (arch, entry);
+ return false;
+}
+
+boolean
+ldemul_place_orphan (file, s)
+ lang_input_statement_type *file;
+ asection *s;
+{
+ if (ld_emulation->place_orphan)
+ return (*ld_emulation->place_orphan) (file, s);
+ return false;
+}
+
char *
ldemul_choose_target()
{
@@ -121,6 +149,11 @@ after_parse_default()
}
void
+after_open_default ()
+{
+}
+
+void
after_allocation_default()
{
@@ -140,6 +173,7 @@ set_output_arch_default()
ldfile_output_architecture, ldfile_output_machine);
}
+/*ARGSUSED*/
void
syslib_default(ignore)
char *ignore;
@@ -147,6 +181,7 @@ syslib_default(ignore)
info_msg ("%S SYSLIB ignored\n");
}
+/*ARGSUSED*/
void
hll_default(ignore)
char *ignore;
@@ -174,3 +209,20 @@ ldemul_choose_mode(target)
}
einfo("%P%F: unrecognised emulation mode: %s\n",target);
}
+
+void
+ldemul_list_emulations (f)
+ FILE *f;
+{
+ ld_emulation_xfer_type **eptr = ld_emulations;
+ boolean first = true;
+
+ for (; *eptr; eptr++)
+ {
+ if (first)
+ first = false;
+ else
+ fprintf (f, " ");
+ fprintf (f, "%s", (*eptr)->emulation_name);
+ }
+}