From bfb7b7f7f989ea4d229727e6f15da4a664d8d6b0 Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Sun, 26 Jun 2011 10:59:48 +0200 Subject: [PATCH] Warn when linking files that contain separate binary sections. --- src/cmp/cmpmain.lsp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/cmp/cmpmain.lsp b/src/cmp/cmpmain.lsp index 8bebe5478..b19c3a8d3 100755 --- a/src/cmp/cmpmain.lsp +++ b/src/cmp/cmpmain.lsp @@ -450,7 +450,7 @@ output = si_safe_eval(2, ecl_read_from_cstring(lisp_code), Cnil); (multiple-value-bind (map array) (si::get-cdata path) (push (copy-seq array) submodules-data) - (push (list (length array) init-fn) submodules) + (push (list (length array) init-fn path) submodules) (si::munmap map))))) (setf submodules-data (apply #'concatenate '(array base-char (*)) submodules-data)) @@ -462,6 +462,18 @@ output = si_safe_eval(2, ecl_read_from_cstring(lisp_code), Cnil); (setf init-name (compute-init-name output-name :kind target))) (unless main-name (setf main-name (compute-main-name output-name :kind target))) + (unless (eq target :fasl) + (let ((files-with-binary-data + (loop for (size name path) in submodules + when (plusp size) + collect path))) + (when files-with-binary-data + (error "In C:BUILDER, when building file~%~T~A~%~ +tried to link together files that contained split binary data.~%~ +Unfortunately this is currently not possible. To avoid this~%~ +recompile the files setting C::*COMPILE-IN-CONSTANTS* to T.~%~ +List of offending files:~{~%~T~S~}" + output-name files-with-binary-data)))) (ecase target (:program (format c-file +lisp-program-init+ init-name "" submodules "")