1999-09-12 Donn Terry <donn@interix.com>
authorIan Lance Taylor <ian@airs.com>
Sun, 12 Sep 1999 16:59:49 +0000 (16:59 +0000)
committerIan Lance Taylor <ian@airs.com>
Sun, 12 Sep 1999 16:59:49 +0000 (16:59 +0000)
* ld.h (ld_abort): Declare.
(abort): Define.
* ldmisc.c (ld_abort): Define.

ld/ChangeLog
ld/ld.h
ld/ldmisc.c

index f827b6b0451178efa08dd4164fa4894b030100be..ee9edf618ae107ac169cf3cd343f1c112cc0b301 100644 (file)
@@ -1,5 +1,9 @@
 1999-09-12  Ian Lance Taylor  <ian@zembu.com>
 
+       * pe.em: Don't include "../bfd/libbfd.h".
+       (gld_${EMULATION_NAME}_after_open): Use xmalloc rather than
+       bfd_alloc.
+
        * pe-dll.h: New file.
        * pe-dll.c: Include "pe-dll.h".  Mark unused arguments as needed
        to avoid warnings.
 
 1999-09-12  Donn Terry  <donn@interix.com>
 
+       * ld.h (ld_abort): Declare.
+       (abort): Define.
+       * ldmisc.c (ld_abort): Define.
+
        * scripttempl/pe.sc: Use ${ENTRY} rather than _mainCRTStartup.
        Move .bss section after .rdata.  Move .reloc section after .rsrc.
 
diff --git a/ld/ld.h b/ld/ld.h
index bca7462dc4f189566a790741e786edd3a3fee439..91565a83b3212808543ff44c826569d4cee08a24 100644 (file)
--- a/ld/ld.h
+++ b/ld/ld.h
@@ -223,4 +223,15 @@ extern void add_cref PARAMS ((const char *, bfd *, asection *, bfd_vma));
 extern void output_cref PARAMS ((FILE *));
 extern void check_nocrossrefs PARAMS ((void));
 
+extern void ld_abort PARAMS ((const char *, int, const char *))
+     ATTRIBUTE_NORETURN;
+
+/* If gcc, we can give a function name, too.  */
+#if !defined (__GNUC__) || __GNUC_MINOR__ <= 5
+#define __PRETTY_FUNCTION__  ((char*) NULL)
+#endif
+
+#undef abort
+#define abort() ld_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
+
 #endif
index 8fab22825f7add6f3aa29f374bbf3a269a43685d..267dff14bf2d52e1e60eb76c65608a42dd3d8ade 100644 (file)
@@ -536,3 +536,22 @@ print_nl ()
 {
   fprintf (config.map_file, "\n");
 }
+
+/* A more or less friendly abort message.  In ld.h abort is defined to
+   call this function.  */
+
+void
+ld_abort (file, line, fn)
+     const char *file;
+     int line;
+     const char *fn;
+{
+  if (fn != NULL)
+    einfo (_("%P: internal error: aborting at %s line %d in %s\n"),
+          file, line, fn);
+  else
+    einfo (_("%P: internal error: aborting at %s line %d\n"),
+          file, line);
+  einfo (_("%P%F: please report this bug\n"));
+  xexit (1);
+}