* ld.h (ld_abort): Declare.
(abort): Define.
* ldmisc.c (ld_abort): Define.
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.
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
{
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);
+}