Compare commits
No commits in common. "rawhide" and "f18" have entirely different histories.
23 changed files with 1226 additions and 20705 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,2 +1 @@
|
||||||
/clisp-*.tar.?z
|
/clisp-2.49.tar.bz2
|
||||||
/clisp-*.tar.bz2
|
|
||||||
|
|
|
||||||
22
README.md
22
README.md
|
|
@ -1,22 +0,0 @@
|
||||||
# clisp
|
|
||||||
|
|
||||||
[ANSI Common Lisp](http://www.lispworks.com/documentation/HyperSpec/Front/) is
|
|
||||||
a high-level, general-purpose programming language.
|
|
||||||
[GNU CLISP](https://clisp.sourceforge.io/) is a Common Lisp implementation by
|
|
||||||
Bruno Haible of Karlsruhe University and Michael Stoll of Munich University,
|
|
||||||
both in Germany. It mostly supports the Lisp described in the ANSI Common
|
|
||||||
Lisp standard. It runs on most Unix workstations (GNU/Linux, FreeBSD, NetBSD,
|
|
||||||
OpenBSD, Solaris, Tru64, HP-UX, BeOS, NeXTstep, IRIX, AIX and others) and on
|
|
||||||
other systems (Windows NT/2000/XP, Windows 95/98/ME) and needs only 4 MiB of
|
|
||||||
RAM.
|
|
||||||
|
|
||||||
It is Free Software and may be distributed under the terms of GNU GPL, while
|
|
||||||
it is possible to distribute commercial proprietary applications compiled with
|
|
||||||
GNU CLISP.
|
|
||||||
|
|
||||||
The user interface comes in English, German, French, Spanish, Dutch, Russian
|
|
||||||
and Danish, and can be changed at run time. GNU CLISP includes an
|
|
||||||
interpreter, a compiler, a debugger, CLOS, MOP, a foreign language interface,
|
|
||||||
sockets, i18n, fast bignums and more. An X11 interface is available through
|
|
||||||
CLX, Garnet, CLUE/CLIO. GNU CLISP runs Maxima, ACL2 and many other Common
|
|
||||||
Lisp packages.
|
|
||||||
136
clhs.el
136
clhs.el
|
|
@ -1,136 +0,0 @@
|
||||||
;;; clhs.el --- Access the Common Lisp HyperSpec (CLHS) -*- lexical-binding: t -*-
|
|
||||||
;; Version: 2
|
|
||||||
;; Homepage: https://gitlab.com/sam-s/clhs
|
|
||||||
;; Maintainer: Sam Steingold <sds@gnu.org>
|
|
||||||
|
|
||||||
;;; This works with both
|
|
||||||
;;; * the "long file name" version released by Harlequin and available
|
|
||||||
;;; at the MIT web site as
|
|
||||||
;;; http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/
|
|
||||||
;;; * the "8.3 file name" version released later by Xanalys/LispWorks and
|
|
||||||
;;; available at http://www.lispworks.com/documentation/common-lisp.html
|
|
||||||
;;; This is accomplished by not hard-wiring the symbol->file table
|
|
||||||
;;; but reading the Data/<map> file instead.
|
|
||||||
|
|
||||||
;;; Copyright (C) 2002-2008, 2017, 2019, 2021 Sam Steingold <sds@gnu.org>
|
|
||||||
;;; Keywords: lisp, common lisp, emacs, ANSI CL, hyperspec
|
|
||||||
;;; released under the GNU GPL <https://www.gnu.org/copyleft/gpl.html>
|
|
||||||
;;; as a part of GNU CLISP <https://www.clisp.org>
|
|
||||||
|
|
||||||
;;; Usage:
|
|
||||||
|
|
||||||
;; (autoload 'clhs-doc "clhs" "Get doc on ANSI CL" t)
|
|
||||||
;; (define-key help-map "\C-l" 'clhs-doc)
|
|
||||||
;; (custom-set-variables
|
|
||||||
;; '(tags-apropos-additional-actions '(("Common Lisp" clhs-doc clhs-symbols))))
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; Kent Pitman and the Harlequin Group (later Xanalys) have made the
|
|
||||||
;; text of the "American National Standard for Information Technology --
|
|
||||||
;; Programming Language -- Common Lisp", ANSI X3.226-1994 available on
|
|
||||||
;; the WWW, in the form of the Common Lisp HyperSpec. This package
|
|
||||||
;; makes it convenient to peruse this documentation from within Emacs.
|
|
||||||
|
|
||||||
;; This is inspired by the Erik Naggum's version of 1997.
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'browse-url)
|
|
||||||
(require 'thingatpt)
|
|
||||||
(require 'url)
|
|
||||||
|
|
||||||
(defvar clhs-symbols nil)
|
|
||||||
|
|
||||||
(defcustom clhs-root "http://clhs.lisp.se/"
|
|
||||||
;; "http://www.lispworks.com/documentation/HyperSpec/"
|
|
||||||
;; "http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/html/hyperspec/HyperSpec/"
|
|
||||||
;; "http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/"
|
|
||||||
"*The root of the Common Lisp HyperSpec URL.
|
|
||||||
If you copy the HyperSpec to your local system, set this variable to
|
|
||||||
something like \"file:/usr/local/doc/HyperSpec/\"."
|
|
||||||
:group 'lisp
|
|
||||||
:set (lambda (s v)
|
|
||||||
(setq clhs-symbols nil)
|
|
||||||
(set-default s v))
|
|
||||||
:type 'string)
|
|
||||||
|
|
||||||
(defvar clhs-history nil
|
|
||||||
"History of symbols looked up in the Common Lisp HyperSpec so far.")
|
|
||||||
|
|
||||||
(defun clhs-table-buffer (&optional root)
|
|
||||||
"Create a buffer containing the CLHS symbol table.
|
|
||||||
Optional argument ROOT specifies the CLHS root location
|
|
||||||
and defaults to `clhs-root'."
|
|
||||||
(unless root (setq root clhs-root))
|
|
||||||
(if (string-match "^file:/" root)
|
|
||||||
(with-current-buffer (get-buffer-create " *clhs-tmp-buf*")
|
|
||||||
(insert-file-contents-literally
|
|
||||||
(let* ((d (concat (substring root 6) "/Data/"))
|
|
||||||
(f (concat d "Map_Sym.txt")))
|
|
||||||
(if (file-exists-p f) f
|
|
||||||
(setq f (concat d "Symbol-Table.text"))
|
|
||||||
(if (file-exists-p f) f
|
|
||||||
(error "No symbol table at %s" root))))
|
|
||||||
nil nil nil t)
|
|
||||||
(goto-char 0)
|
|
||||||
(current-buffer))
|
|
||||||
(let* ((d (concat root "/Data/"))
|
|
||||||
(f (concat d "Map_Sym.txt")))
|
|
||||||
(set-buffer (url-retrieve-synchronously f))
|
|
||||||
(goto-char 0)
|
|
||||||
(unless (looking-at "^HTTP/.*200 *OK$")
|
|
||||||
(kill-buffer (current-buffer))
|
|
||||||
(setq f (concat d "Symbol-Table.text"))
|
|
||||||
(set-buffer (url-retrieve-synchronously f))
|
|
||||||
(goto-char 0)
|
|
||||||
(unless (looking-at "^HTTP/.*200 *OK$")
|
|
||||||
(kill-buffer (current-buffer))
|
|
||||||
(error "No symbol table at %s" root)))
|
|
||||||
;; skip to the first symbol
|
|
||||||
(search-forward "\n\n")
|
|
||||||
(current-buffer))))
|
|
||||||
|
|
||||||
(defun clhs-read-symbols ()
|
|
||||||
"Read variable `clhs-symbols' from the current position in the current buffer."
|
|
||||||
(while (not (eobp))
|
|
||||||
(puthash (buffer-substring-no-properties ; symbol
|
|
||||||
(line-beginning-position) (line-end-position))
|
|
||||||
(progn (forward-line 1) ; file name
|
|
||||||
(buffer-substring-no-properties ; strip "../"
|
|
||||||
(+ 3 (line-beginning-position)) (line-end-position)))
|
|
||||||
clhs-symbols)
|
|
||||||
(forward-line 1)))
|
|
||||||
|
|
||||||
(defun clhs-symbols ()
|
|
||||||
"Get variable `clhs-symbols' from `clhs-root'."
|
|
||||||
(if (and clhs-symbols (not (= 0 (hash-table-count clhs-symbols))))
|
|
||||||
clhs-symbols
|
|
||||||
(with-current-buffer (clhs-table-buffer)
|
|
||||||
(unless clhs-symbols
|
|
||||||
(setq clhs-symbols (make-hash-table :test 'equal :size 1031)))
|
|
||||||
(clhs-read-symbols)
|
|
||||||
(kill-buffer (current-buffer))
|
|
||||||
clhs-symbols)))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun clhs-doc (symbol-name &optional kill)
|
|
||||||
"Browse the Common Lisp HyperSpec documentation for SYMBOL-NAME.
|
|
||||||
Finds the HyperSpec at `clhs-root'.
|
|
||||||
With prefix arg KILL, save the URL in the `kill-ring' instead."
|
|
||||||
(interactive (list (let ((sym (thing-at-point 'symbol t))
|
|
||||||
(completion-ignore-case t))
|
|
||||||
(completing-read
|
|
||||||
"Look-up symbol in the Common Lisp HyperSpec: "
|
|
||||||
(clhs-symbols) nil t sym 'clhs-history))
|
|
||||||
current-prefix-arg))
|
|
||||||
(unless (= ?/ (aref clhs-root (1- (length clhs-root))))
|
|
||||||
(setq clhs-root (concat clhs-root "/")))
|
|
||||||
(let ((url (concat clhs-root (gethash (upcase symbol-name) (clhs-symbols)))))
|
|
||||||
(if kill
|
|
||||||
(kill-new url)
|
|
||||||
(browse-url url))))
|
|
||||||
|
|
||||||
(provide 'clhs)
|
|
||||||
|
|
||||||
;;; clhs.el ends here
|
|
||||||
856
clisp-arm.patch
Normal file
856
clisp-arm.patch
Normal file
|
|
@ -0,0 +1,856 @@
|
||||||
|
--- src/ariarm.d.orig Fri May 04 01:04:01 2012 -0400
|
||||||
|
+++ src/ariarm.d Thu May 24 16:48:47 2012 -0600
|
||||||
|
@@ -86,7 +86,7 @@
|
||||||
|
|
||||||
|
#define C(x) x
|
||||||
|
#define EXPORT(x) .global x
|
||||||
|
-#define GLABEL(x) x:
|
||||||
|
+#define GLABEL(x) .type x STT_FUNC; x:
|
||||||
|
#define LABEL(x) x:
|
||||||
|
#define RRX rrx
|
||||||
|
#define END
|
||||||
|
@@ -187,7 +187,7 @@
|
||||||
|
LDR a3,[pc,#ptr_mulu32_high-.-8]
|
||||||
|
STR a2,[a3,#0]
|
||||||
|
#endif
|
||||||
|
- MOVS pc,lr
|
||||||
|
+ BX lr
|
||||||
|
|
||||||
|
/* extern uint16 divu_3216_1616_ (uint32 x, uint16 y);
|
||||||
|
entry
|
||||||
|
@@ -243,7 +243,7 @@
|
||||||
|
LDR a3,[pc,#ptr_divu_16_rest-.-8] /* save rest so can be picked up later */
|
||||||
|
STR a2,[a3,#0] /* the result is 16 bits */
|
||||||
|
#endif
|
||||||
|
- MOVS pc, lr
|
||||||
|
+ BX lr
|
||||||
|
|
||||||
|
/* extern uint32 divu_6432_3232_ (uint32 xhi, uint32 xlo, uint32 y); | -> Quotient q
|
||||||
|
extern uint32 divu_32_rest; | -> Rest r
|
||||||
|
@@ -278,7 +278,7 @@
|
||||||
|
LDR a4,[pc,#ptr_divu_32_rest-.-8]
|
||||||
|
STR a2,[a4,#0] /* divu_32_rest = remainder */
|
||||||
|
#endif
|
||||||
|
- LDMFD sp!, {v1,v2,v3,v4,v5,v6,pc}^
|
||||||
|
+ LDMFD sp!, {v1,v2,v3,v4,v5,v6,pc}
|
||||||
|
|
||||||
|
LABEL(divu_6432_3232_l1)
|
||||||
|
MOV v3, #0 /* s = 0 */
|
||||||
|
@@ -346,7 +346,7 @@
|
||||||
|
LDR a3,[pc,#ptr_divu_32_rest-.-8]
|
||||||
|
STR a2,[a3,#0] /* divu_32_rest = remainder */
|
||||||
|
#endif
|
||||||
|
- LDMFD sp!, {v1,v2,v3,v4,v5,v6,pc}^
|
||||||
|
+ LDMFD sp!, {v1,v2,v3,v4,v5,v6,pc}
|
||||||
|
|
||||||
|
/* extern uintD* copy_loop_up (uintD* sourceptr, uintD* destptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -370,7 +370,7 @@
|
||||||
|
LABEL(copy_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,a2 /* return addr of last word stored */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1,lr} /* save work regs */
|
||||||
|
LABEL(copy_loop_up_l2)
|
||||||
|
LDMIA a1!,{a3,v1,ip,lr} /* copy 4 words in one go */
|
||||||
|
@@ -380,7 +380,7 @@
|
||||||
|
STMGEIA a2!,{a3,v1,ip,lr} /* 4 more words */
|
||||||
|
BGT copy_loop_up_l2 /* and loop */
|
||||||
|
MOV a1,a2 /* return addr of last word stored */
|
||||||
|
- LDMFD sp!,{v1,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD* copy_loop_down (uintD* sourceptr, uintD* destptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -404,7 +404,7 @@
|
||||||
|
LABEL(copy_loop_down_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,a2 /* return addr of last word stored */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1,lr} /* save work regs */
|
||||||
|
LABEL(copy_loop_down_l2)
|
||||||
|
LDMDB a1!,{a3,v1,ip,lr} /* copy 4 words in one go */
|
||||||
|
@@ -414,7 +414,7 @@
|
||||||
|
STMGEDB a2!,{a3,v1,ip,lr} /* 4 more words */
|
||||||
|
BGT copy_loop_down_l2 /* and loop */
|
||||||
|
MOV a1,a2 /* return addr of last word stored */
|
||||||
|
- LDMFD sp!,{v1,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD* clear_loop_up (uintD* destptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -446,7 +446,7 @@
|
||||||
|
STRGT a3,[a1],#4
|
||||||
|
LABEL(fill_loop_up_l1)
|
||||||
|
BICS a4,a2,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1,lr} /* save work regs */
|
||||||
|
MOV v1,a3 /* copy filler to three other */
|
||||||
|
MOV ip,a3 /* registers */
|
||||||
|
@@ -456,7 +456,7 @@
|
||||||
|
SUBS a4,a4,#8 /* decrement counter by 8 */
|
||||||
|
STMGEIA a1!,{a3,v1,ip,lr} /* if count still positive then store 4 */
|
||||||
|
BGT fill_loop_up_l2 /* more and loop */
|
||||||
|
- LDMFD sp!,{v1,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
|
||||||
|
/* extern uintD* clear_loop_down (uintD* destptr, uintC count);
|
||||||
|
@@ -489,7 +489,7 @@
|
||||||
|
STRGT a3,[a1,#-4]!
|
||||||
|
LABEL(fill_loop_down_l1)
|
||||||
|
BICS a4,a2,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1,lr} /* save work regs */
|
||||||
|
MOV v1,a3 /* copy filler to three other */
|
||||||
|
MOV ip,a3 /* registers */
|
||||||
|
@@ -499,7 +499,7 @@
|
||||||
|
SUBS a4,a4,#8 /* decrement counter by 8 */
|
||||||
|
STMGEDB a1!,{a3,v1,ip,lr} /* if count still positive then store 4 */
|
||||||
|
BGT fill_loop_down_l2 /* more and loop */
|
||||||
|
- LDMFD sp!,{v1,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void or_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -529,7 +529,7 @@
|
||||||
|
STRGT ip,[a1],#4
|
||||||
|
LABEL(or_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v5,lr} /* save work regs */
|
||||||
|
LABEL(or_loop_up_l2)
|
||||||
|
LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */
|
||||||
|
@@ -541,7 +541,7 @@
|
||||||
|
STMIA a1!,{v3,v4,v5,lr} /* store 4 results */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT or_loop_up_l2 /* if count still positive then loop */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void xor_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -571,7 +571,7 @@
|
||||||
|
STRGT ip,[a1],#4
|
||||||
|
LABEL(xor_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v5,lr} /* save work regs */
|
||||||
|
LABEL(xor_loop_up_l2)
|
||||||
|
LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */
|
||||||
|
@@ -583,7 +583,7 @@
|
||||||
|
STMIA a1!,{v3,v4,v5,lr} /* store 4 results */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT xor_loop_up_l2 /* if count still positive then loop */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void and_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -613,7 +613,7 @@
|
||||||
|
STRGT ip,[a1],#4
|
||||||
|
LABEL(and_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v5,lr} /* save work regs */
|
||||||
|
LABEL(and_loop_up_l2)
|
||||||
|
LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */
|
||||||
|
@@ -625,7 +625,7 @@
|
||||||
|
STMIA a1!,{v3,v4,v5,lr} /* store 4 results */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT and_loop_up_l2 /* if count still positive then loop */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void eqv_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -659,7 +659,7 @@
|
||||||
|
STRGT ip,[a1],#4
|
||||||
|
LABEL(eqv_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v5,lr} /* save work regs */
|
||||||
|
LABEL(eqv_loop_up_l2)
|
||||||
|
LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */
|
||||||
|
@@ -675,7 +675,7 @@
|
||||||
|
STMIA a1!,{v3,v4,v5,lr} /* store 4 results */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT eqv_loop_up_l2 /* if count still positive then loop */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void nand_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -709,7 +709,7 @@
|
||||||
|
STRGT ip,[a1],#4
|
||||||
|
LABEL(nand_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v5,lr} /* save work regs */
|
||||||
|
LABEL(nand_loop_up_l2)
|
||||||
|
LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */
|
||||||
|
@@ -725,7 +725,7 @@
|
||||||
|
STMIA a1!,{v3,v4,v5,lr} /* store 4 results */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT nand_loop_up_l2 /* if count still positive then loop */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void nor_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -759,7 +759,7 @@
|
||||||
|
STRGT ip,[a1],#4
|
||||||
|
LABEL(nor_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v5,lr} /* save work regs */
|
||||||
|
LABEL(nor_loop_up_l2)
|
||||||
|
LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */
|
||||||
|
@@ -775,7 +775,7 @@
|
||||||
|
STMIA a1!,{v3,v4,v5,lr} /* store 4 results */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT nor_loop_up_l2 /* if count still positive then loop */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void andc2_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -805,7 +805,7 @@
|
||||||
|
STRGT ip,[a1],#4
|
||||||
|
LABEL(andc2_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v5,lr} /* save work regs */
|
||||||
|
LABEL(andc2_loop_up_l2)
|
||||||
|
LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */
|
||||||
|
@@ -817,7 +817,7 @@
|
||||||
|
STMIA a1!,{v3,v4,v5,lr} /* store 4 results */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT andc2_loop_up_l2 /* if count still positive then loop */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void orc2_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -851,7 +851,7 @@
|
||||||
|
STRGT ip,[a1],#4
|
||||||
|
LABEL(orc2_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v5,lr} /* save work regs */
|
||||||
|
LABEL(orc2_loop_up_l2)
|
||||||
|
LDMIA a2!,{a3,v1,v2,ip} /* load 4 words in one go */
|
||||||
|
@@ -867,7 +867,7 @@
|
||||||
|
STMIA a1!,{v3,v4,v5,lr} /* store 4 results */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT orc2_loop_up_l2 /* if count still positive then loop */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void not_loop_up (uintD* xptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -893,7 +893,7 @@
|
||||||
|
STRGT a3,[a1],#4
|
||||||
|
LABEL(not_loop_up_l1)
|
||||||
|
BICS a4,a2,#3 /* set counter to multiple of 4 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{lr} /* save work regs */
|
||||||
|
LABEL(not_loop_up_l2)
|
||||||
|
LDMIA a1,{a2,a3,ip,lr} /* load 4 words in one go,NO writeback */
|
||||||
|
@@ -904,7 +904,7 @@
|
||||||
|
STMIA a1!,{a2,a3,ip,lr} /* store 4 results */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT not_loop_up_l2 /* if count still positive then loop */
|
||||||
|
- LDMFD sp!,{pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void and_test_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -923,13 +923,13 @@
|
||||||
|
LDR ip,[a1],#4 /* to align the total to a multiple */
|
||||||
|
TST ip,a4 /* of 4 words */
|
||||||
|
MOVNE a1,#1 /* return true if AND_TEST ok */
|
||||||
|
- MOVNES pc,lr
|
||||||
|
+ BXNE lr
|
||||||
|
BCC and_test_loop_up_l1 /* better to branch than skip instrs. */
|
||||||
|
LDRGE a4,[a2],#4
|
||||||
|
LDRGE ip,[a1],#4
|
||||||
|
TSTGE ip,a4
|
||||||
|
MOVNE a1,#1
|
||||||
|
- MOVNES pc,lr
|
||||||
|
+ BXNE lr
|
||||||
|
ANDS a4,a3,#3
|
||||||
|
CMP a4,#2
|
||||||
|
BLE and_test_loop_up_l1 /* better to branch than skip instrs. */
|
||||||
|
@@ -937,11 +937,11 @@
|
||||||
|
LDRGT ip,[a1],#4
|
||||||
|
TSTGT ip,a4
|
||||||
|
MOVNE a1,#1
|
||||||
|
- MOVNES pc,lr
|
||||||
|
+ BXNE lr
|
||||||
|
LABEL(and_test_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,#0 /* return false */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v6,lr} /* save work regs */
|
||||||
|
MOV v6,a1 /* move xptr to v6 */
|
||||||
|
MOV a1,#1 /* set result to true */
|
||||||
|
@@ -952,11 +952,11 @@
|
||||||
|
TSTEQ v4,v1
|
||||||
|
TSTEQ v5,v2
|
||||||
|
TSTEQ lr,ip
|
||||||
|
- LDMNEFD sp!,{v1-v6,pc}^
|
||||||
|
+ LDMNEFD sp!,{v1-v6,pc}
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT and_test_loop_up_l2 /* if count still positive then loop */
|
||||||
|
MOV a1,#0
|
||||||
|
- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void test_loop_up (uintD* xptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -973,21 +973,21 @@
|
||||||
|
BEQ test_loop_up_l1 /* yup, so branch */
|
||||||
|
LDR a4,[ip],#4 /* TEST the first 1-3 words */
|
||||||
|
TEQ a4,#0 /* align the total to a multiple of 4 */
|
||||||
|
- MOVNES pc,lr /* return true if AND_TEST ok */
|
||||||
|
+ BXNE lr /* return true if AND_TEST ok */
|
||||||
|
CMP a3,#2
|
||||||
|
BLT test_loop_up_l1 /* need to branch 'cos PSR set */
|
||||||
|
LDRGE a4,[ip],#4 /* when checking against zero */
|
||||||
|
TEQGE a4,#0
|
||||||
|
- MOVNES pc,lr
|
||||||
|
+ BXNE lr
|
||||||
|
CMP a3,#2
|
||||||
|
BLE test_loop_up_l1 /* need to branch 'cos PSR set */
|
||||||
|
LDRGT a4,[ip],#4 /* when checking against zero */
|
||||||
|
TEQGT a4,#0
|
||||||
|
- MOVNES pc,lr
|
||||||
|
+ BXNE lr
|
||||||
|
LABEL(test_loop_up_l1)
|
||||||
|
BICS a4,a2,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,#0 /* return false */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1,lr} /* save work regs */
|
||||||
|
LABEL(test_loop_up_l2)
|
||||||
|
LDMIA ip!,{a2,a3,v1,lr} /* load 4 words in one go */
|
||||||
|
@@ -995,11 +995,11 @@
|
||||||
|
TEQEQ a3,#0
|
||||||
|
TEQEQ v1,#0
|
||||||
|
TEQEQ lr,#0
|
||||||
|
- LDMNEFD sp!,{v1,pc}^
|
||||||
|
+ LDMNEFD sp!,{v1,pc}
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT test_loop_up_l2 /* if count still positive then loop */
|
||||||
|
MOV a1,#0
|
||||||
|
- LDMFD sp!,{v1,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern void compare_loop_up (uintD* xptr, uintD* yptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -1021,7 +1021,7 @@
|
||||||
|
CMP ip,a4 /* of 4 words */
|
||||||
|
MVNLO a1,#0 /* x < y -> -1 */
|
||||||
|
MOVHI a1,#1 /* x > y -> +1 */
|
||||||
|
- MOVNES pc,lr /* and return result if not equal */
|
||||||
|
+ BXNE lr /* and return result if not equal */
|
||||||
|
ANDS a4,a3,#3
|
||||||
|
CMP a4,#2
|
||||||
|
BLT compare_loop_up_l1 /* need to branch 'cos PSR used */
|
||||||
|
@@ -1030,7 +1030,7 @@
|
||||||
|
CMP ip,a4
|
||||||
|
MVNLO a1,#0
|
||||||
|
MOVHI a1,#1
|
||||||
|
- MOVNES pc,lr
|
||||||
|
+ BXNE lr
|
||||||
|
ANDS a4,a3,#3
|
||||||
|
CMP a4,#2
|
||||||
|
BLE compare_loop_up_l1 /* need to branch 'cos PSR used */
|
||||||
|
@@ -1039,11 +1039,11 @@
|
||||||
|
CMP ip,a4
|
||||||
|
MVNLO a1,#0
|
||||||
|
MOVHI a1,#1
|
||||||
|
- MOVNES pc,lr
|
||||||
|
+ BXNE lr
|
||||||
|
LABEL(compare_loop_up_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,#0 /* xptr[] == yptr[] -> 0 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v6,lr} /* save work regs */
|
||||||
|
MOV v6,a1 /* move xptr to v6 */
|
||||||
|
MOV a1,#1 /* set result to +1 */
|
||||||
|
@@ -1055,11 +1055,11 @@
|
||||||
|
CMPEQ v5,v2
|
||||||
|
CMPEQ lr,ip
|
||||||
|
MVNLO a1,#0 /* x < y -> -1 (a1 already holds +1) */
|
||||||
|
- LDMNEFD sp!,{v1-v6,pc}^
|
||||||
|
+ LDMNEFD sp!,{v1-v6,pc}
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT compare_loop_up_l2 /* if count still positive then loop */
|
||||||
|
MOV a1,#0
|
||||||
|
- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD addto_loop_down (uintD* sourceptr, uintD* destptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -1111,11 +1111,11 @@
|
||||||
|
BICS a4,a4,#3 /* set counter to multiple of 4 */
|
||||||
|
BNE add_loop_down_l3 /* branch if more adds to do */
|
||||||
|
ADCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMEQFD sp!,{v6,pc}^ /* and return */
|
||||||
|
+ LDMEQFD sp!,{v6,pc} /* and return */
|
||||||
|
LABEL(add_loop_down_l1)
|
||||||
|
BICS a4,a4,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,#0 /* no adds, so C = 0 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
CMN a4,#0 /* clear carry bit */
|
||||||
|
STMFD sp!,{v6,lr}
|
||||||
|
LABEL(add_loop_down_l3)
|
||||||
|
@@ -1132,7 +1132,7 @@
|
||||||
|
TEQ a4,#0 /* are we done ? */
|
||||||
|
BNE add_loop_down_l2 /* if count non-zero then loop */
|
||||||
|
ADC a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD inc_loop_down (uintD* ptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -1150,11 +1150,11 @@
|
||||||
|
ADDS a4,a4,#1 /* align the total to a multiple of 2 */
|
||||||
|
STR a4,[a1]
|
||||||
|
MOVNE a1,#0 /* set result to 0 */
|
||||||
|
- MOVNES pc,lr /* return 0 if non-zero result */
|
||||||
|
+ BXNE lr /* return 0 if non-zero result */
|
||||||
|
LABEL(inc_loop_down_l1)
|
||||||
|
BICS a4,a2,#1 /* set counter to multiple of 2 */
|
||||||
|
MOVEQ a1,#1 /* return 1 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
MOV ip,a1 /* move ptr to ip */
|
||||||
|
MOV a1,#0 /* set result to 0 */
|
||||||
|
ANDS a3,a4,#3
|
||||||
|
@@ -1163,10 +1163,10 @@
|
||||||
|
ADDS a3,a3,#1 /* INC the two words */
|
||||||
|
ADDEQS a2,a2,#1 /* stopping when first word non-zero */
|
||||||
|
STMDB ip!,{a2,a3} /* store 2 results */
|
||||||
|
- MOVNES pc,lr /* return 0 if any result non-zero */
|
||||||
|
+ BXNE lr /* return 0 if any result non-zero */
|
||||||
|
SUBS a4,a4,#2 /* decrement counter by 2 */
|
||||||
|
MOVEQ a1,#1 /* if finished loop then */
|
||||||
|
- MOVEQS pc,lr /* return 1 */
|
||||||
|
+ BXEQ lr /* return 1 */
|
||||||
|
LABEL(inc_loop_down_l3) /* now a multiple of 4 words */
|
||||||
|
STMFD sp!,{v1,lr} /* save work regs */
|
||||||
|
LABEL(inc_loop_down_l2)
|
||||||
|
@@ -1176,11 +1176,11 @@
|
||||||
|
ADDEQS a3,a3,#1
|
||||||
|
ADDEQS a2,a2,#1
|
||||||
|
STMDB ip!,{a2,a3,v1,lr} /* store 4 results */
|
||||||
|
- LDMNEFD sp!,{v1,pc}^ /* return 0 if any result non-zero */
|
||||||
|
+ LDMNEFD sp!,{v1,pc} /* return 0 if any result non-zero */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT inc_loop_down_l2 /* if count still positive then loop */
|
||||||
|
MOV a1,#1
|
||||||
|
- LDMFD sp!,{v1,pc}^ /* restore work regs and return 1 */
|
||||||
|
+ LDMFD sp!,{v1,pc} /* restore work regs and return 1 */
|
||||||
|
|
||||||
|
/* extern uintD sub_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -1206,7 +1206,7 @@
|
||||||
|
LABEL(sub_loop_down_l4) /* drop through for better instr. timings */
|
||||||
|
BICS a4,a4,#3 /* set counter to multiple of 4 */
|
||||||
|
SBCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMEQFD sp!,{v6,pc}^ /* and return */
|
||||||
|
+ LDMEQFD sp!,{v6,pc} /* and return */
|
||||||
|
STMFD sp!,{v1-v5} /* save work regs */
|
||||||
|
B sub_loop_down_l2 /* branch if more subtracts to do */
|
||||||
|
LABEL(sub_loop_down_l0)
|
||||||
|
@@ -1224,7 +1224,7 @@
|
||||||
|
LABEL(sub_loop_down_l1)
|
||||||
|
BICS a4,a4,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,#0 /* no subtracts, so C = 0 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
CMP a4,#0 /* set carry bit, since a4 > 0 */
|
||||||
|
STMFD sp!,{v1-v6,lr} /* save work regs */
|
||||||
|
LABEL(sub_loop_down_l2)
|
||||||
|
@@ -1239,7 +1239,7 @@
|
||||||
|
TEQ a4,#0 /* are we done ? */
|
||||||
|
BNE sub_loop_down_l2 /* if count non-zero then loop */
|
||||||
|
SBC a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD subx_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count, uintD carry);
|
||||||
|
entry
|
||||||
|
@@ -1269,7 +1269,7 @@
|
||||||
|
LABEL(subx_loop_down_l4) /* drop through for better instr. timings */
|
||||||
|
BICS a4,a4,#3 /* set counter to multiple of 4 */
|
||||||
|
SBCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMEQFD sp!,{v6,pc}^ /* and return */
|
||||||
|
+ LDMEQFD sp!,{v6,pc} /* and return */
|
||||||
|
STMFD sp!,{v1-v5} /* save work regs */
|
||||||
|
B subx_loop_down_l2 /* branch if more subtracts to do */
|
||||||
|
LABEL(subx_loop_down_l0)
|
||||||
|
@@ -1287,7 +1287,7 @@
|
||||||
|
LABEL(subx_loop_down_l1)
|
||||||
|
BICS a4,a4,#3 /* set counter to multiple of 4 */
|
||||||
|
SBCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{v1-v6,lr} /* save work regs */
|
||||||
|
LABEL(subx_loop_down_l2)
|
||||||
|
LDMDB a2!,{v1,v2,v3,ip} /* load 4 words in one go */
|
||||||
|
@@ -1301,7 +1301,7 @@
|
||||||
|
TEQ a4,#0 /* are we done ? */
|
||||||
|
BNE subx_loop_down_l2 /* if count non-zero then loop */
|
||||||
|
SBC a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMFD sp!,{v1-v6,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v6,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD subfrom_loop_down (uintD* sourceptr, uintD* destptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -1326,7 +1326,7 @@
|
||||||
|
LABEL(subfrom_loop_down_l4) /* drop through for better instr. timings */
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
SBCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMEQFD sp!,{pc}^ /* and return */
|
||||||
|
+ LDMEQFD sp!,{pc} /* and return */
|
||||||
|
STMFD sp!,{v1-v5} /* save work regs */
|
||||||
|
B subfrom_loop_down_l2 /* branch if more subtracts to do */
|
||||||
|
LABEL(subfrom_loop_down_l0)
|
||||||
|
@@ -1344,7 +1344,7 @@
|
||||||
|
LABEL(subfrom_loop_down_l1)
|
||||||
|
BICS a4,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,#0 /* no subtracts, so C = 0 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
CMP a4,#0 /* set carry bit, since a4 > 0 */
|
||||||
|
STMFD sp!,{v1-v5,lr} /* save work regs */
|
||||||
|
LABEL(subfrom_loop_down_l2)
|
||||||
|
@@ -1359,7 +1359,7 @@
|
||||||
|
TEQ a4,#0 /* are we done ? */
|
||||||
|
BNE subfrom_loop_down_l2 /* if count non-zero then loop */
|
||||||
|
SBC a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v5,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD dec_loop_down (uintD* ptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -1377,11 +1377,11 @@
|
||||||
|
SUBS a4,a4,#1 /* align the total to a multiple of 2 */
|
||||||
|
STR a4,[a1]
|
||||||
|
MOVCS a1,#0 /* set result to 0 */
|
||||||
|
- MOVCSS pc,lr /* return 0 if non-zero result */
|
||||||
|
+ BXCS lr /* return 0 if non-zero result */
|
||||||
|
LABEL(dec_loop_down_l1)
|
||||||
|
BICS a4,a2,#1 /* set counter to multiple of 2 */
|
||||||
|
MVNEQ a1,#0 /* return -1 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
MOV ip,a1 /* move ptr to ip */
|
||||||
|
MOV a1,#0 /* set result to 0 */
|
||||||
|
ANDS a3,a4,#3
|
||||||
|
@@ -1390,10 +1390,10 @@
|
||||||
|
SUBS a3,a3,#1 /* DEC the two words */
|
||||||
|
SUBCCS a2,a2,#1 /* stopping when first word non-zero */
|
||||||
|
STMDB ip!,{a2,a3} /* store 2 results */
|
||||||
|
- MOVCSS pc,lr /* return 0 if any result non-zero */
|
||||||
|
+ BXCS lr /* return 0 if any result non-zero */
|
||||||
|
SUBS a4,a4,#2 /* decrement counter by 2 */
|
||||||
|
MVNEQ a1,#0 /* if finished loop then */
|
||||||
|
- MOVEQS pc,lr /* return -1 */
|
||||||
|
+ BXEQ lr /* return -1 */
|
||||||
|
LABEL(dec_loop_down_l3) /* now a multiple of 4 words */
|
||||||
|
STMFD sp!,{v1,lr} /* save work regs */
|
||||||
|
LABEL(dec_loop_down_l2)
|
||||||
|
@@ -1403,11 +1403,11 @@
|
||||||
|
SUBCCS a3,a3,#1
|
||||||
|
SUBCCS a2,a2,#1
|
||||||
|
STMDB ip!,{a2,a3,v1,lr} /* store 4 results */
|
||||||
|
- LDMCSFD sp!,{v1,pc}^ /* return 0 if any carry */
|
||||||
|
+ LDMCSFD sp!,{v1,pc} /* return 0 if any carry */
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT dec_loop_down_l2 /* if count still positive then loop */
|
||||||
|
MVN a1,#0
|
||||||
|
- LDMFD sp!,{v1,pc}^ /* restore work regs and return -1 */
|
||||||
|
+ LDMFD sp!,{v1,pc} /* restore work regs and return -1 */
|
||||||
|
|
||||||
|
/* extern void neg_loop_down (uintD* ptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -1421,7 +1421,7 @@
|
||||||
|
GLABEL(neg_loop_down)
|
||||||
|
CMPS a2,#0 /* count = 0 ? */
|
||||||
|
MOVEQ a1,#0 /* yup, so return 0 */
|
||||||
|
- MOVEQS pc,lr
|
||||||
|
+ BXEQ lr
|
||||||
|
LABEL(neg_loop_down_l1) /* skip all the zero words first */
|
||||||
|
LDR a3,[a1,#-4]! /* compare words against zero */
|
||||||
|
CMPS a3,#0 /* downwards in memory */
|
||||||
|
@@ -1429,13 +1429,13 @@
|
||||||
|
SUBS a2,a2,#1 /* reduce count of words */
|
||||||
|
BNE neg_loop_down_l1 /* more ?, so loop */
|
||||||
|
MOV a1,#0 /* return 0 */
|
||||||
|
- MOVS pc,lr
|
||||||
|
+ BX lr
|
||||||
|
LABEL(neg_loop_down_l2)
|
||||||
|
RSB a3,a3,#0 /* first non-zero word = -word */
|
||||||
|
STR a3,[a1]
|
||||||
|
SUBS a2,a2,#1
|
||||||
|
MVNEQ a1,#0 /* done ? -> return -1 */
|
||||||
|
- MOVEQS pc,lr
|
||||||
|
+ BXEQ lr
|
||||||
|
/* now NOT rest of the words */
|
||||||
|
ANDS a3,a2,#3 /* multiple of 4 words ? */
|
||||||
|
BEQ neg_loop_down_l3 /* yup, so branch */
|
||||||
|
@@ -1453,7 +1453,7 @@
|
||||||
|
LABEL(neg_loop_down_l3)
|
||||||
|
BICS a4,a2,#3 /* set counter to multiple of 4 */
|
||||||
|
MVNEQ a1,#0 /* set result to -1 */
|
||||||
|
- MOVEQS pc,lr /* if zero then we're done */
|
||||||
|
+ BXEQ lr /* if zero then we're done */
|
||||||
|
STMFD sp!,{lr} /* save work regs */
|
||||||
|
LABEL(neg_loop_down_l4)
|
||||||
|
LDMDB a1,{a2,a3,ip,lr} /* load 4 words in one go,NO writeback */
|
||||||
|
@@ -1465,7 +1465,7 @@
|
||||||
|
SUBS a4,a4,#4 /* decrement counter by 4 */
|
||||||
|
BGT neg_loop_down_l4 /* if count still positive then loop */
|
||||||
|
MVN a1,#0 /* set result to -1 */
|
||||||
|
- LDMFD sp!,{pc}^ /* restore work regs and return -1 */
|
||||||
|
+ LDMFD sp!,{pc} /* restore work regs and return -1 */
|
||||||
|
|
||||||
|
/* extern uintD shift1left_loop_down (uintD* ptr, uintC count);
|
||||||
|
entry
|
||||||
|
@@ -1485,7 +1485,7 @@
|
||||||
|
LABEL(shift1left_loop_down_l1)
|
||||||
|
BICS a4,a2,#1 /* set counter to multiple of 2 */
|
||||||
|
ADCEQ a1,a4,a4 /* if zero set result to C (a4 is 0) */
|
||||||
|
- MOVEQS pc,lr /* and return */
|
||||||
|
+ BXEQ lr /* and return */
|
||||||
|
ANDS a3,a4,#3 /* multiple of 4 words ? */
|
||||||
|
BEQ shift1left_loop_down_l3 /* yup, so branch */
|
||||||
|
LDMDB a1,{a2,a3} /* load 2 words in one go */
|
||||||
|
@@ -1494,7 +1494,7 @@
|
||||||
|
STMDB a1!,{a2,a3} /* store 2 results */
|
||||||
|
BICS a4,a4,#2 /* decrement counter by 2 */
|
||||||
|
ADCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- MOVEQS pc,lr /* and return */
|
||||||
|
+ BXEQ lr /* and return */
|
||||||
|
LABEL(shift1left_loop_down_l3) /* now a multiple of 4 words */
|
||||||
|
STMFD sp!,{lr} /* save work regs */
|
||||||
|
LABEL(shift1left_loop_down_l2)
|
||||||
|
@@ -1508,7 +1508,7 @@
|
||||||
|
TEQ a4,#0 /* are we done ? */
|
||||||
|
BNE shift1left_loop_down_l2 /* if count non-zero then loop */
|
||||||
|
ADC a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMFD sp!,{pc}^ /* restore work regs and return 1 */
|
||||||
|
+ LDMFD sp!,{pc} /* restore work regs and return 1 */
|
||||||
|
|
||||||
|
/* extern uintD shiftleft_loop_down (uintD* ptr, uintC count, uintC i, uintD carry);
|
||||||
|
entry
|
||||||
|
@@ -1542,7 +1542,7 @@
|
||||||
|
LABEL(shiftleft_loop_down_l1)
|
||||||
|
BICS ip,a2,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,a4 /* if zero then we're done */
|
||||||
|
- LDMEQFD sp!,{v6,pc}^ /* so return last shift out */
|
||||||
|
+ LDMEQFD sp!,{v6,pc} /* so return last shift out */
|
||||||
|
STMFD sp!,{v1-v3} /* save work regs */
|
||||||
|
LABEL(shiftleft_loop_down_l2)
|
||||||
|
LDMDB a1,{a2,v1,v2,v3} /* load 4 words in one go */
|
||||||
|
@@ -1558,7 +1558,7 @@
|
||||||
|
SUBS ip,ip,#4 /* decrement counter by 4 */
|
||||||
|
BGT shiftleft_loop_down_l2 /* if count still positive then loop */
|
||||||
|
MOV a1,a4 /* result = last shift out */
|
||||||
|
- LDMFD sp!,{v1-v3,v6,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v3,v6,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD shiftleftcopy_loop_down (uintD* sourceptr, uintD* destptr, uintC count, uintC i);
|
||||||
|
entry
|
||||||
|
@@ -1593,7 +1593,7 @@
|
||||||
|
LABEL(shiftleftcopy_loop_down_l1)
|
||||||
|
BICS ip,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,v5 /* if zero then we're done */
|
||||||
|
- LDMEQFD sp!,{v5,v6,pc}^ /* so return last shift out */
|
||||||
|
+ LDMEQFD sp!,{v5,v6,pc} /* so return last shift out */
|
||||||
|
STMFD sp!,{v1-v3} /* save work regs */
|
||||||
|
LABEL(shiftleftcopy_loop_down_l2)
|
||||||
|
LDMDB a1!,{a3,v1,v2,v3} /* load 4 words in one go */
|
||||||
|
@@ -1609,7 +1609,7 @@
|
||||||
|
SUBS ip,ip,#4 /* decrement counter by 4 */
|
||||||
|
BGT shiftleftcopy_loop_down_l2 /* if count still positive then loop */
|
||||||
|
MOV a1,v5 /* result = last shift out */
|
||||||
|
- LDMFD sp!,{v1-v3,v5,v6,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v3,v5,v6,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD shift1right_loop_up (uintD* ptr, uintC count, uintD carry);
|
||||||
|
entry
|
||||||
|
@@ -1630,7 +1630,7 @@
|
||||||
|
LABEL(shift1right_loop_up_l1)
|
||||||
|
BICS a4,a2,#1 /* set counter to multiple of 2 */
|
||||||
|
MOVEQ a1,a4,RRX /* if zero set result to C (a4 is 0) */
|
||||||
|
- MOVEQS pc,lr /* and return */
|
||||||
|
+ BXEQ lr /* and return */
|
||||||
|
ANDS a3,a4,#3 /* multiple of 4 words ? */
|
||||||
|
BEQ shift1right_loop_up_l3 /* yup, so branch */
|
||||||
|
LDMIA a1,{a2,a3} /* load 2 words in one go */
|
||||||
|
@@ -1639,7 +1639,7 @@
|
||||||
|
STMIA a1!,{a2,a3} /* store 2 results */
|
||||||
|
BICS a4,a4,#2 /* decrement counter by 2 */
|
||||||
|
ADCEQ a1,a4,a4 /* set result to Carry (a4 is 0) */
|
||||||
|
- MOVEQS pc,lr /* and return */
|
||||||
|
+ BXEQ lr /* and return */
|
||||||
|
LABEL(shift1right_loop_up_l3) /* now a multiple of 4 words */
|
||||||
|
STMFD sp!,{lr} /* save work regs */
|
||||||
|
LABEL(shift1right_loop_up_l2)
|
||||||
|
@@ -1653,7 +1653,7 @@
|
||||||
|
TEQ a4,#0 /* are we done ? */
|
||||||
|
BNE shift1right_loop_up_l2 /* if count non-zero then loop */
|
||||||
|
MOV a1,a4,RRX /* set result to Carry (a4 is 0) */
|
||||||
|
- LDMFD sp!,{pc}^ /* restore work regs and return 1 */
|
||||||
|
+ LDMFD sp!,{pc} /* restore work regs and return 1 */
|
||||||
|
|
||||||
|
/* extern uintD shiftright_loop_up (uintD* ptr, uintC count, uintC i);
|
||||||
|
entry
|
||||||
|
@@ -1688,7 +1688,7 @@
|
||||||
|
LABEL(shiftright_loop_up_l1)
|
||||||
|
BICS ip,a2,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,a4 /* if zero then we're done */
|
||||||
|
- LDMEQFD sp!,{v6,pc}^ /* so return last shift out */
|
||||||
|
+ LDMEQFD sp!,{v6,pc} /* so return last shift out */
|
||||||
|
STMFD sp!,{v1-v3} /* save work regs */
|
||||||
|
LABEL(shiftright_loop_up_l2)
|
||||||
|
LDMIA a1,{v1,v2,v3,lr} /* load 4 words in one go */
|
||||||
|
@@ -1704,7 +1704,7 @@
|
||||||
|
SUBS ip,ip,#4 /* decrement counter by 4 */
|
||||||
|
BGT shiftright_loop_up_l2 /* if count still positive then loop */
|
||||||
|
MOV a1,a4 /* result = last shift out */
|
||||||
|
- LDMFD sp!,{v1-v3,v6,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v3,v6,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
/* extern uintD shiftrightsigned_loop_up (uintD* ptr, uintC count, uintC i);
|
||||||
|
entry
|
||||||
|
@@ -1759,7 +1759,7 @@
|
||||||
|
LABEL(shiftrightcopy_loop_up_l1)
|
||||||
|
BICS ip,a3,#3 /* set counter to multiple of 4 */
|
||||||
|
MOVEQ a1,v5 /* if zero then we're done */
|
||||||
|
- LDMEQFD sp!,{v5,v6,pc}^ /* so return last shift out */
|
||||||
|
+ LDMEQFD sp!,{v5,v6,pc} /* so return last shift out */
|
||||||
|
STMFD sp!,{v1-v3} /* save work regs */
|
||||||
|
LABEL(shiftrightcopy_loop_up_l2)
|
||||||
|
LDMIA a1!,{v1,v2,v3,lr} /* load 4 words in one go */
|
||||||
|
@@ -1775,7 +1775,7 @@
|
||||||
|
SUBS ip,ip,#4 /* decrement counter by 4 */
|
||||||
|
BGT shiftrightcopy_loop_up_l2 /* if count still positive then loop */
|
||||||
|
MOV a1,v5 /* result = last shift out */
|
||||||
|
- LDMFD sp!,{v1-v3,v5,v6,pc}^ /* restore work regs and return */
|
||||||
|
+ LDMFD sp!,{v1-v3,v5,v6,pc} /* restore work regs and return */
|
||||||
|
|
||||||
|
#ifndef HAVE_umull
|
||||||
|
/* mulu32_64_vregs
|
||||||
|
@@ -1800,7 +1800,7 @@
|
||||||
|
ADDCS v2,v2,#0x10000 /* carry from above add */
|
||||||
|
ADDS v1,v4,ip,LSL #16 /* x is now bottom 32 bits of result */
|
||||||
|
ADC ip,v2,ip,LSR #16 /* hi is top 32 bits */
|
||||||
|
- MOVS pc,lr
|
||||||
|
+ BX lr
|
||||||
|
#endif /* HAVE_umull */
|
||||||
|
|
||||||
|
/* extern uintD mulusmall_loop_down (uintD digit, uintD* ptr, uintC len, uintD newdigit);
|
||||||
|
@@ -1816,7 +1816,7 @@
|
||||||
|
GLABEL(mulusmall_loop_down)
|
||||||
|
CMP a3,#0
|
||||||
|
MOVEQ a1,a4
|
||||||
|
- MOVEQS pc,lr
|
||||||
|
+ BXEQ lr
|
||||||
|
#ifdef HAVE_umull
|
||||||
|
STMFD sp!,{v1,lr}
|
||||||
|
LABEL(mulusmall_loop_down_l1)
|
||||||
|
@@ -1828,7 +1828,7 @@
|
||||||
|
SUBS a3,a3,#1 /* len-- */
|
||||||
|
BNE mulusmall_loop_down_l1 /* until len==0 */
|
||||||
|
MOV a1,a4 /* return carry */
|
||||||
|
- LDMFD sp!,{v1,pc}^
|
||||||
|
+ LDMFD sp!,{v1,pc}
|
||||||
|
#else
|
||||||
|
STMFD sp!,{v1-v2,lr}
|
||||||
|
LABEL(mulusmall_loop_down_l1)
|
||||||
|
@@ -1850,7 +1850,7 @@
|
||||||
|
SUBS a3,a3,#1 /* len-- */
|
||||||
|
BNE mulusmall_loop_down_l1 /* until len==0 */
|
||||||
|
MOV a1,a4 /* return carry */
|
||||||
|
- LDMFD sp!,{v1-v2,pc}^
|
||||||
|
+ LDMFD sp!,{v1-v2,pc}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* extern void mulu_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len);
|
||||||
|
@@ -1875,7 +1875,7 @@
|
||||||
|
SUBS a4,a4,#1 /* len-- */
|
||||||
|
BNE mulu_loop_down_l1 /* until len==0 */
|
||||||
|
STR v5,[a3,#-4]! /* *--destptr = carry */
|
||||||
|
- LDMFD sp!,{v1,v5,pc}^
|
||||||
|
+ LDMFD sp!,{v1,v5,pc}
|
||||||
|
#else
|
||||||
|
STMFD sp!,{v1-v5,lr}
|
||||||
|
MOV v5,#0
|
||||||
|
@@ -1888,7 +1888,7 @@
|
||||||
|
SUBS a4,a4,#1 /* len-- */
|
||||||
|
BNE mulu_loop_down_l1 /* until len==0 */
|
||||||
|
STR v5,[a3,#-4]! /* *--destptr = carry */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^
|
||||||
|
+ LDMFD sp!,{v1-v5,pc}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* extern void muluadd_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len);
|
||||||
|
@@ -1916,7 +1916,7 @@
|
||||||
|
SUBS a4,a4,#1 /* len-- */
|
||||||
|
BNE muluadd_loop_down_l1 /* until len==0 */
|
||||||
|
MOV a1,v5 /* return carry */
|
||||||
|
- LDMFD sp!,{v1,v5,pc}^
|
||||||
|
+ LDMFD sp!,{v1,v5,pc}
|
||||||
|
#else
|
||||||
|
STMFD sp!,{v1-v5,lr}
|
||||||
|
MOV v5,#0
|
||||||
|
@@ -1932,7 +1932,7 @@
|
||||||
|
SUBS a4,a4,#1 /* len-- */
|
||||||
|
BNE muluadd_loop_down_l1 /* until len==0 */
|
||||||
|
MOV a1,v5 /* return carry */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^
|
||||||
|
+ LDMFD sp!,{v1-v5,pc}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* extern void mulusub_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len);
|
||||||
|
@@ -1960,7 +1960,7 @@
|
||||||
|
SUBS a4,a4,#1 /* len-- */
|
||||||
|
BNE mulusub_loop_down_l1 /* until len==0 */
|
||||||
|
MOV a1,v5 /* return carry */
|
||||||
|
- LDMFD sp!,{v1,v5,pc}^
|
||||||
|
+ LDMFD sp!,{v1,v5,pc}
|
||||||
|
#else
|
||||||
|
STMFD sp!,{v1-v5,lr}
|
||||||
|
MOV v5,#0
|
||||||
|
@@ -1976,7 +1976,7 @@
|
||||||
|
SUBS a4,a4,#1 /* len-- */
|
||||||
|
BNE mulusub_loop_down_l1 /* until len==0 */
|
||||||
|
MOV a1,v5 /* return carry */
|
||||||
|
- LDMFD sp!,{v1-v5,pc}^
|
||||||
|
+ LDMFD sp!,{v1-v5,pc}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
--- src/encoding.d.orig 2024-12-28 00:47:59.000000000 -0700
|
|
||||||
+++ src/encoding.d 2025-02-04 20:28:22.743346018 -0700
|
|
||||||
@@ -2592,6 +2592,7 @@ local maygc object encoding_from_name (c
|
|
||||||
pushSTACK(STACK_0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ free(name);
|
|
||||||
#else
|
|
||||||
unused const_name; unused context;
|
|
||||||
pushSTACK(unbound); /* :charset */
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
--- src/spvw_fault.d.orig 2017-10-08 11:45:53.000000000 -0600
|
|
||||||
+++ src/spvw_fault.d 2018-02-18 12:41:32.934240135 -0700
|
|
||||||
@@ -289,7 +289,7 @@ modexp bool handle_fault_range (int prot
|
|
||||||
|
|
||||||
local void xmprotect (aint addr, uintM len, int prot) {
|
|
||||||
if (mprotect((void*)addr,len,prot) < 0) {
|
|
||||||
- fprintf(stderr,GETTEXTL("mprotect(0x%lx,%d,%d) failed."),addr,len,prot);
|
|
||||||
+ fprintf(stderr,GETTEXTL("mprotect(0x%lx,%lu,%d) failed."),addr,(unsigned long)len,prot);
|
|
||||||
errno_out(OS_errno);
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
--- src/spvw_language.d.orig 2017-05-25 09:49:04.000000000 -0600
|
|
||||||
+++ src/spvw_language.d 2018-02-18 12:41:32.934240135 -0700
|
|
||||||
@@ -172,7 +172,7 @@ global void init_language
|
|
||||||
{ /* Invalidate the gettext internal caches. */
|
|
||||||
char *td = textdomain(NULL);
|
|
||||||
if (NULL == td) {
|
|
||||||
- ANSIC_ERROR("textdomain",NULL);
|
|
||||||
+ ANSIC_ERROR("textdomain","");
|
|
||||||
}
|
|
||||||
if (NULL == textdomain(td)) {
|
|
||||||
ANSIC_ERROR("textdomain",td);
|
|
||||||
--- src/spvw_sigsegv.d.orig 2018-01-09 16:04:26.000000000 -0700
|
|
||||||
+++ src/spvw_sigsegv.d 2018-03-03 13:52:32.985798284 -0700
|
|
||||||
@@ -62,7 +62,7 @@ local void print_mem_stats (void) {
|
|
||||||
/* Put a breakpoint here if you want to catch CLISP just before it dies. */
|
|
||||||
global void sigsegv_handler_failed (void* address) {
|
|
||||||
fprint(stderr,"\n");
|
|
||||||
- fprintf(stderr,GETTEXTL("SIGSEGV cannot be cured. Fault address = 0x%lx."),
|
|
||||||
+ fprintf(stderr,GETTEXTL("SIGSEGV cannot be cured. Fault address = %p."),
|
|
||||||
address);
|
|
||||||
fprint(stderr,"\n");
|
|
||||||
print_mem_stats();
|
|
||||||
74
clisp-hostname.patch
Normal file
74
clisp-hostname.patch
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
--- src/socket.d.orig 2009-10-08 08:45:13.000000000 -0600
|
||||||
|
+++ src/socket.d 2012-01-12 11:22:24.701723636 -0700
|
||||||
|
@@ -57,8 +57,8 @@
|
||||||
|
/* ============ hostnames and IP addresses only (no sockets) ============
|
||||||
|
|
||||||
|
Fetches the machine's host name.
|
||||||
|
- get_hostname(host =);
|
||||||
|
- The name is allocated on the stack, with dynamic extent.
|
||||||
|
+ get_hostname(hostname);
|
||||||
|
+ where hostname is an array of MAXHOSTNAMELEN+1 characters.
|
||||||
|
< const char* host: The host name.
|
||||||
|
(Note: In some cases we could get away with less system calls by simply
|
||||||
|
setting
|
||||||
|
@@ -67,13 +67,12 @@
|
||||||
|
sds: never: you will always get localhost/127.0.0.1 - what's the point? */
|
||||||
|
#if defined(HAVE_GETHOSTNAME)
|
||||||
|
/* present on all supported unix systems and on woe32 */
|
||||||
|
- #define get_hostname(host_assignment) \
|
||||||
|
- do { var char hostname[MAXHOSTNAMELEN+1]; \
|
||||||
|
+ #define get_hostname(hostname) \
|
||||||
|
+ do { \
|
||||||
|
begin_system_call(); \
|
||||||
|
if ( gethostname(&hostname[0],MAXHOSTNAMELEN) <0) { SOCK_error(); } \
|
||||||
|
end_system_call(); \
|
||||||
|
hostname[MAXHOSTNAMELEN] = '\0'; \
|
||||||
|
- host_assignment &hostname[0]; \
|
||||||
|
} while(0)
|
||||||
|
#else
|
||||||
|
#error get_hostname is not defined
|
||||||
|
@@ -207,8 +206,8 @@ LISPFUNN(machine_instance,0)
|
||||||
|
(if (or (null address) (zerop (length address)))
|
||||||
|
hostname
|
||||||
|
(apply #'string-concat hostname " [" (inet-ntop address) "]"))) */
|
||||||
|
- var const char* host;
|
||||||
|
- get_hostname(host =);
|
||||||
|
+ var char host[MAXHOSTNAMELEN+1];
|
||||||
|
+ get_hostname(host);
|
||||||
|
result = asciz_to_string(host,O(misc_encoding)); /* hostname as result */
|
||||||
|
#ifdef HAVE_GETHOSTBYNAME
|
||||||
|
pushSTACK(result); /* hostname as 1st string */
|
||||||
|
@@ -389,8 +388,8 @@ local int resolve_host1 (const void* add
|
||||||
|
modexp struct hostent* resolve_host (object arg) {
|
||||||
|
var struct hostent* he;
|
||||||
|
if (eq(arg,S(Kdefault))) {
|
||||||
|
- var char* host;
|
||||||
|
- get_hostname(host =);
|
||||||
|
+ var char host[MAXHOSTNAMELEN+1];
|
||||||
|
+ get_hostname(host);
|
||||||
|
begin_system_call();
|
||||||
|
he = gethostbyname(host);
|
||||||
|
end_system_call();
|
||||||
|
@@ -724,8 +723,9 @@ global SOCKET connect_to_x_server (const
|
||||||
|
if (conntype == conn_tcp) {
|
||||||
|
var unsigned short port = X_TCP_PORT+display;
|
||||||
|
if (host[0] == '\0') {
|
||||||
|
- get_hostname(host =);
|
||||||
|
- fd = with_host_port(host,port,&connect_to_x_via_ip,NULL);
|
||||||
|
+ var char hostname[MAXHOSTNAMELEN+1];
|
||||||
|
+ get_hostname(hostname);
|
||||||
|
+ fd = with_host_port(hostname,port,&connect_to_x_via_ip,NULL);
|
||||||
|
} else {
|
||||||
|
fd = with_host_port(host,port,&connect_to_x_via_ip,NULL);
|
||||||
|
}
|
||||||
|
@@ -798,8 +798,8 @@ global host_data_t * socket_getlocalname
|
||||||
|
if (socket_getlocalname_aux(socket_handle,hd) == NULL)
|
||||||
|
return NULL;
|
||||||
|
if (resolve_p) { /* Fill in hd->truename. */
|
||||||
|
- var const char* host;
|
||||||
|
- get_hostname(host =); /* was: host = "localhost"; */
|
||||||
|
+ var char host[MAXHOSTNAMELEN+1];
|
||||||
|
+ get_hostname(host); /* was: host = "localhost"; */
|
||||||
|
ASSERT(strlen(host) <= MAXHOSTNAMELEN);
|
||||||
|
strcpy(hd->truename,host);
|
||||||
|
} else {
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
--- src/stream.d.orig 2024-12-28 00:47:59.000000000 -0700
|
|
||||||
+++ src/stream.d 2025-02-07 11:47:28.448086694 -0700
|
|
||||||
@@ -4239,6 +4239,9 @@ global uintL iconv_wcslen (object encodi
|
|
||||||
!= (size_t)(-1)) {
|
|
||||||
inptr += sizeof(chart); insize -= sizeof(chart);
|
|
||||||
} else {
|
|
||||||
+ var int saved_errno = errno;
|
|
||||||
+ iconv_close(cd);
|
|
||||||
+ errno = saved_errno;
|
|
||||||
if (errno != EILSEQ) {
|
|
||||||
ANSIC_error();
|
|
||||||
} else {
|
|
||||||
@@ -4247,6 +4250,7 @@ global uintL iconv_wcslen (object encodi
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
+ iconv_close(cd);
|
|
||||||
end_system_call();
|
|
||||||
error_unencodable(encoding,*(const chart*)inptr);
|
|
||||||
}
|
|
||||||
@@ -4317,6 +4321,9 @@ global void iconv_wcstombs (object encod
|
|
||||||
if (iconv(cd,&inptr1,&insize1,&outptr,&outsize) != (size_t)(-1)) {
|
|
||||||
inptr += sizeof(chart); insize -= sizeof(chart);
|
|
||||||
} else {
|
|
||||||
+ var int saved_errno = errno;
|
|
||||||
+ iconv_close(cd);
|
|
||||||
+ errno = saved_errno;
|
|
||||||
if (errno != EILSEQ) {
|
|
||||||
ANSIC_error();
|
|
||||||
} else {
|
|
||||||
@@ -4325,6 +4332,7 @@ global void iconv_wcstombs (object encod
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
+ iconv_close(cd);
|
|
||||||
end_system_call();
|
|
||||||
error_unencodable(encoding,*(const chart*)inptr);
|
|
||||||
}
|
|
||||||
63
clisp-libsvm.patch
Normal file
63
clisp-libsvm.patch
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
--- modules/libsvm/config.h.in.orig 2010-06-30 12:02:55.000000000 -0600
|
||||||
|
+++ modules/libsvm/config.h.in 2011-06-23 14:28:00.454999254 -0600
|
||||||
|
@@ -27,8 +27,8 @@
|
||||||
|
/* Define to 1 if you have the `svm_cross_validation' function. */
|
||||||
|
#undef HAVE_SVM_CROSS_VALIDATION
|
||||||
|
|
||||||
|
-/* Define to 1 if you have the `svm_destroy_model' function. */
|
||||||
|
-#undef HAVE_SVM_DESTROY_MODEL
|
||||||
|
+/* Define to 1 if you have the `svm_free_and_destroy_model' function. */
|
||||||
|
+#undef HAVE_SVM_FREE_AND_DESTROY_MODEL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `svm_destroy_param' function. */
|
||||||
|
#undef HAVE_SVM_DESTROY_PARAM
|
||||||
|
--- modules/libsvm/configure.in.orig 2010-06-30 12:02:55.000000000 -0600
|
||||||
|
+++ modules/libsvm/configure.in 2011-06-23 14:28:49.333999905 -0600
|
||||||
|
@@ -30,7 +30,7 @@
|
||||||
|
AC_CHECK_FUNCS(svm_check_parameter dnl
|
||||||
|
svm_check_probability_model dnl
|
||||||
|
svm_cross_validation dnl
|
||||||
|
-svm_destroy_model dnl
|
||||||
|
+svm_free_and_destroy_model dnl
|
||||||
|
svm_destroy_param dnl
|
||||||
|
svm_get_labels dnl
|
||||||
|
svm_get_nr_class dnl
|
||||||
|
--- modules/libsvm/configure.orig 2010-06-30 12:02:55.000000000 -0600
|
||||||
|
+++ modules/libsvm/configure 2011-06-23 14:28:27.827999766 -0600
|
||||||
|
@@ -4555,7 +4555,7 @@
|
||||||
|
if test "$ac_cv_search_svm_train" = "no"; then
|
||||||
|
as_fn_error "cannot find LibSVM library" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
-for ac_func in svm_check_parameter svm_check_probability_model svm_cross_validation svm_destroy_model svm_destroy_param svm_get_labels svm_get_nr_class svm_get_svm_type svm_get_svr_probability svm_load_model svm_predict svm_predict_probability svm_predict_values svm_save_model svm_train svm_set_print_string_function
|
||||||
|
+for ac_func in svm_check_parameter svm_check_probability_model svm_cross_validation svm_free_and_destroy_model svm_destroy_param svm_get_labels svm_get_nr_class svm_get_svm_type svm_get_svr_probability svm_load_model svm_predict svm_predict_probability svm_predict_values svm_save_model svm_train svm_set_print_string_function
|
||||||
|
do :
|
||||||
|
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||||
|
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
||||||
|
--- modules/libsvm/libsvm.lisp.orig 2010-06-30 11:56:36.000000000 -0600
|
||||||
|
+++ modules/libsvm/libsvm.lisp 2011-06-23 14:33:44.334999678 -0600
|
||||||
|
@@ -97,11 +97,11 @@
|
||||||
|
;;; foreign functions and small wrappers
|
||||||
|
;;;
|
||||||
|
|
||||||
|
-(ffi:def-call-out svm_destroy_model
|
||||||
|
- (:arguments (model model)) (:return-type nil))
|
||||||
|
+(ffi:def-call-out svm_free_and_destroy_model
|
||||||
|
+ (:arguments (model (c-pointer model))) (:return-type nil))
|
||||||
|
(defun destroy-model (model)
|
||||||
|
(when (validp model)
|
||||||
|
- (svm_destroy_model model)
|
||||||
|
+ (svm_free_and_destroy_model (ffi:with-c-var (modelp 'model model) (ffi:c-var-address modelp)))
|
||||||
|
(setf (validp model) nil)))
|
||||||
|
(cl:defun finalize-model (model)
|
||||||
|
(ext:finalize (set-foreign-pointer model :copy) #'destroy-model)
|
||||||
|
--- modules/libsvm/svm.xml.orig 2010-05-26 11:52:55.000000000 -0600
|
||||||
|
+++ modules/libsvm/svm.xml 2011-06-23 14:34:44.021999852 -0600
|
||||||
|
@@ -91,7 +91,7 @@
|
||||||
|
<varlistentry><term><code>(destroy-model &model-r;)</code></term>
|
||||||
|
<listitem><simpara>Release the memory taken by the <type>model</type>
|
||||||
|
object and invalidate the &foreign-variable-t; &model-r;.</simpara>
|
||||||
|
- <simpara>Calls <function>svm_destroy_model</function>.</simpara>
|
||||||
|
+ <simpara>Calls <function>svm_free_and_destroy_model</function>.</simpara>
|
||||||
|
<simpara>You do ¬-e; have to call this function yourself, it is
|
||||||
|
attached to the &model-r; by <function>train</function>
|
||||||
|
and <function>load-model</function> via &finalize;.</simpara>
|
||||||
20
clisp-linux.patch
Normal file
20
clisp-linux.patch
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
--- ./modules/bindings/glibc/linux.lisp.orig 2008-10-08 10:36:19.000000000 -0600
|
||||||
|
+++ ./modules/bindings/glibc/linux.lisp 2012-07-25 19:05:07.014592097 -0600
|
||||||
|
@@ -86,7 +86,7 @@
|
||||||
|
|
||||||
|
(def-c-type __key_t) ; int
|
||||||
|
|
||||||
|
-(c-lines "#include <bits/ipctypes.h>~%")
|
||||||
|
+(c-lines "#include <sys/ipc.h>~%")
|
||||||
|
(def-c-type __ipc_pid_t) ; ushort
|
||||||
|
|
||||||
|
; --------------------------- <sys/types.h> -----------------------------------
|
||||||
|
@@ -293,6 +293,8 @@
|
||||||
|
;; for robust mutexes
|
||||||
|
(def-c-const EOWNERDEAD (:documentation "Owner died")) ; 130
|
||||||
|
(def-c-const ENOTRECOVERABLE (:documentation "State not recoverable")) ; 131
|
||||||
|
+(def-c-const ERFKILL (:documentation "Operation not possible due to RF-kill")) ; 132
|
||||||
|
+(def-c-const EHWPOISON (:documentation "Memory page has hardware error")) ; 133
|
||||||
|
|
||||||
|
; -------------------------- <bits/errno.h> -----------------------------------
|
||||||
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
--- src/foreign.d.orig 2021-06-28 14:32:42.000000000 -0600
|
|
||||||
+++ src/foreign.d 2022-02-03 21:52:22.932176743 -0700
|
|
||||||
@@ -2417,7 +2417,7 @@ local void count_walk_post (object fvd,
|
|
||||||
{
|
|
||||||
unused(fvd); unused(obj); unused(walk);
|
|
||||||
}
|
|
||||||
-local maygc void convert_to_foreign_needs (object fvd, object obj,
|
|
||||||
+local maygc __attribute__((noinline)) void convert_to_foreign_needs (object fvd, object obj,
|
|
||||||
struct foreign_layout *sas)
|
|
||||||
{
|
|
||||||
struct walk_lisp walk
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
Fixes UBSAN errors such as:
|
|
||||||
|
|
||||||
../src/spvw_typealloc.d:146:450: runtime error: member access within misaligned address 0x17000000009c for type 'struct s8string_', which requires 8 byte alignment
|
|
||||||
0x17000000009c: note: pointer points here
|
|
||||||
53 45 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
||||||
^
|
|
||||||
|
|
||||||
--- src/lispbibl.d.orig 2025-02-07 19:25:44.207789666 -0700
|
|
||||||
+++ src/lispbibl.d 2025-02-10 11:38:31.029348227 -0700
|
|
||||||
@@ -6006,7 +6006,7 @@ typedef signed_int_with_n_bits(intVsize)
|
|
||||||
#if defined(I80386) || defined(POWERPC) || defined(ARM) || defined(S390)
|
|
||||||
#define varobject_alignment 4
|
|
||||||
#endif
|
|
||||||
-#if defined(SPARC) || defined(HPPA) || defined(MIPS) || defined(DECALPHA) || defined(IA64) || defined(AMD64) || defined(ARM64) || defined(RISCV64) || defined(LOONGARCH64)
|
|
||||||
+#if defined(SPARC) || defined(HPPA) || defined(MIPS) || defined(DECALPHA) || defined(IA64) || defined(AMD64) || defined(ARM64) || defined(RISCV64) || defined(LOONGARCH64) || defined(POWERPC64)
|
|
||||||
#define varobject_alignment 8
|
|
||||||
#endif
|
|
||||||
#if (!defined(TYPECODES) || defined(GENERATIONAL_GC)) && (varobject_alignment < 4)
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
--- tests/streams.tst.orig 2024-07-04 15:55:33.000000000 -0600
|
|
||||||
+++ tests/streams.tst 2024-07-08 14:50:23.547424881 -0600
|
|
||||||
@@ -1288,9 +1288,9 @@ T
|
|
||||||
(streamp (setq s (make-stream :error))) T
|
|
||||||
(or (not (search "#P" (prin1-to-string s))) (pathnamep (truename s))) T
|
|
||||||
(write-line "foo" s) "foo"
|
|
||||||
-(let ((*reopen-open-file* nil)) ; stdout can be a file, it will be detected!
|
|
||||||
- (with-open-file (copy s :direction :output) (streamp copy)))
|
|
||||||
-#.(if (member (ext:operating-system-type) '("AIX" "Haiku" "Minix" "Windows") :test #'equal) 'ERROR 'T)
|
|
||||||
+;;(let ((*reopen-open-file* nil)) ; stdout can be a file, it will be detected!
|
|
||||||
+;; (with-open-file (copy s :direction :output) (streamp copy)))
|
|
||||||
+;;#.(if (member (ext:operating-system-type) '("AIX" "Haiku" "Minix" "Windows") :test #'equal) 'ERROR 'T)
|
|
||||||
|
|
||||||
#+clisp
|
|
||||||
(progn
|
|
||||||
|
|
@ -1,75 +0,0 @@
|
||||||
--- modules/readline/readline.lisp.orig 2024-12-28 00:47:59.000000000 -0700
|
|
||||||
+++ modules/readline/readline.lisp 2025-02-10 15:17:06.296266455 -0700
|
|
||||||
@@ -126,7 +126,7 @@ name in ~/.inputrc. This is preferred wa
|
|
||||||
(:documentation "Get keymap with given name (e.g., emacs, vi)")
|
|
||||||
(:arguments (name c-string)) (:return-type keymap))
|
|
||||||
|
|
||||||
-(def-call-out get-keymap-name (:name "rl_get_keymap_by_name") ; untested
|
|
||||||
+(def-call-out get-keymap-name (:name "rl_get_keymap_name") ; untested
|
|
||||||
(:arguments (keymap keymap)) (:return-type c-string))
|
|
||||||
|
|
||||||
;;; Binding Keys
|
|
||||||
@@ -255,7 +255,7 @@ name in ~/.inputrc. This is preferred wa
|
|
||||||
;;; Redisplay
|
|
||||||
|
|
||||||
(def-call-out redisplay (:name "rl_redisplay")
|
|
||||||
- (:arguments) (:return-type int))
|
|
||||||
+ (:arguments) (:return-type nil))
|
|
||||||
|
|
||||||
(def-call-out forced-update-display (:name "rl_forced_update_display")
|
|
||||||
(:arguments) (:return-type int))
|
|
||||||
@@ -308,7 +308,7 @@ name in ~/.inputrc. This is preferred wa
|
|
||||||
|
|
||||||
(def-call-out copy-text (:name "rl_copy_text") ; untested
|
|
||||||
(:arguments (start int) (end int))
|
|
||||||
- (:return-type int))
|
|
||||||
+ (:return-type c-string :malloc-free))
|
|
||||||
|
|
||||||
(def-call-out kill-text (:name "rl_kill_text") ; untested
|
|
||||||
(:arguments (start int) (end int))
|
|
||||||
@@ -316,7 +316,7 @@ name in ~/.inputrc. This is preferred wa
|
|
||||||
|
|
||||||
(def-call-out push-macro-input (:name "rl_push_macro_input")
|
|
||||||
(:arguments (macro c-string))
|
|
||||||
- (:return-type int))
|
|
||||||
+ (:return-type nil))
|
|
||||||
|
|
||||||
;;; Character input
|
|
||||||
|
|
||||||
@@ -362,7 +362,7 @@ name in ~/.inputrc. This is preferred wa
|
|
||||||
|
|
||||||
(def-call-out extend-line-buffer (:name "rl_extend_line_buffer") ; untested
|
|
||||||
(:arguments (len int))
|
|
||||||
- (:return-type int))
|
|
||||||
+ (:return-type nil))
|
|
||||||
|
|
||||||
(def-call-out ding (:name "rl_ding")
|
|
||||||
(:arguments) (:return-type int))
|
|
||||||
@@ -404,7 +404,7 @@ name in ~/.inputrc. This is preferred wa
|
|
||||||
(:return-type int))
|
|
||||||
|
|
||||||
(def-call-out clear-history (:name "rl_clear_history") ; untested
|
|
||||||
- (:arguments) (:return-type int))
|
|
||||||
+ (:arguments) (:return-type nil))
|
|
||||||
|
|
||||||
(def-call-out get-termcap (:name "rl_get_termcap") ; untested
|
|
||||||
(:arguments (cap c-string))
|
|
||||||
@@ -647,10 +647,16 @@ and the completion character will be ins
|
|
||||||
(:documentation "reading multiple-key command"))
|
|
||||||
(def-c-const state-vicmdonce (:name "RL_STATE_VICMDONCE") ; 0x400000
|
|
||||||
(:documentation "entered vi command mode at least once"))
|
|
||||||
-(def-c-const state-redisplaying (:name "RL_STATE_REDISPLAYING") ; 0x800000
|
|
||||||
+(def-c-const state-charsearch (:name "RL_STATE_CHARSEARCH") ; 0x800000
|
|
||||||
+ (:documentation "vi mode char search"))
|
|
||||||
+(def-c-const state-redisplaying (:name "RL_STATE_REDISPLAYING") ; 0x1000000
|
|
||||||
(:documentation "updating terminal display"))
|
|
||||||
-(def-c-const state-done (:name "RL_STATE_DONE") ; 0x1000000
|
|
||||||
+(def-c-const state-done (:name "RL_STATE_DONE") ; 0x2000000
|
|
||||||
(:documentation "done; accepted line"))
|
|
||||||
+(def-c-const state-timeout (:name "RL_STATE_TIMEOUT") ; 0x4000000
|
|
||||||
+ (:documentation "done; timed out"))
|
|
||||||
+(def-c-const state-eof (:name "RL_STATE_EOF") ; 0x8000000
|
|
||||||
+ (:documentation "done; got eof on read"))
|
|
||||||
|
|
||||||
(def-c-const readerr ; (-2)
|
|
||||||
(:documentation " Input error; can be returned by (*rl_getc_function)
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
--- src/lispbibl.d.orig 2018-11-11 17:05:07.000000000 -0700
|
|
||||||
+++ src/lispbibl.d 2019-03-19 20:25:04.289654626 -0600
|
|
||||||
@@ -11884,7 +11884,7 @@ All other long words on the LISP-Stack a
|
|
||||||
#define FAST_SP
|
|
||||||
#endif
|
|
||||||
#elif defined(GNU) && defined(SP_register)
|
|
||||||
- register __volatile__ aint __SP __asm__(SP_register);
|
|
||||||
+ register aint __SP __asm__(SP_register);
|
|
||||||
#ifdef SPARC64
|
|
||||||
#define SP() (__SP+2048)
|
|
||||||
#else
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
Avoids this warning:
|
|
||||||
|
|
||||||
../src/unixaux.d: In function ‘install_signal_handler’:
|
|
||||||
../src/unixaux.d:734:3: warning: ‘siginterrupt’ is deprecated: Use sigaction with SA_RESTART instead [-Wdeprecated-declarations]
|
|
||||||
734 | siginterrupt(sig,0);
|
|
||||||
| ^~~~~~~~~~~~
|
|
||||||
|
|
||||||
--- src/unixaux.d.orig 2024-07-12 09:22:07.000000000 -0600
|
|
||||||
+++ src/unixaux.d 2024-08-26 15:42:17.202775988 -0600
|
|
||||||
@@ -703,7 +703,7 @@ global int wait2 (pid_t child) {
|
|
||||||
global signal_handler_t install_signal_handler (int sig,
|
|
||||||
signal_handler_t handler) {
|
|
||||||
var signal_handler_t old_handler;
|
|
||||||
- #if defined(USE_SIGACTION)
|
|
||||||
+ #if defined(HAVE_SIGACTION)
|
|
||||||
var struct sigaction old_sa;
|
|
||||||
var struct sigaction new_sa;
|
|
||||||
memset(&new_sa,0,sizeof(new_sa));
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
Fixes this UBSAN error:
|
|
||||||
|
|
||||||
../src/eval.d:5808:11: runtime error: variable length array bound evaluates to non-positive value 0
|
|
||||||
|
|
||||||
--- src/eval.d.orig 2024-12-28 00:47:59.000000000 -0700
|
|
||||||
+++ src/eval.d 2025-02-10 09:39:02.285198247 -0700
|
|
||||||
@@ -5805,7 +5805,7 @@ local /*maygc*/ Values interpret_bytecod
|
|
||||||
var uintL private_SP_length =
|
|
||||||
(uintL)(((Codevec)codeptr)->ccv_spdepth_1)
|
|
||||||
+ jmpbufsize * (uintL)(((Codevec)codeptr)->ccv_spdepth_jmpbufsize);
|
|
||||||
- var DYNAMIC_ARRAY(private_SP_space,SPint,private_SP_length);
|
|
||||||
+ var DYNAMIC_ARRAY(private_SP_space,SPint,private_SP_length+1);
|
|
||||||
var SPint* private_SP = &private_SP_space[private_SP_length];
|
|
||||||
#undef SP_
|
|
||||||
#undef _SP_
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
Fixes this UBSAN error:
|
|
||||||
|
|
||||||
runtime error: variable length array bound evaluates to non-positive value 0
|
|
||||||
|
|
||||||
--- src/io.d.orig 2024-12-28 00:47:59.000000000 -0700
|
|
||||||
+++ src/io.d 2025-02-10 09:50:29.262067759 -0700
|
|
||||||
@@ -8158,7 +8158,7 @@ local maygc void pr_array (const gcv_obj
|
|
||||||
LEVEL_CHECK;
|
|
||||||
{ /* determine rank and fetch dimensions and sub-product: */
|
|
||||||
var uintL r = (uintL)Iarray_rank(obj); /* rank */
|
|
||||||
- var DYNAMIC_ARRAY(dims_sizes,array_dim_size_t,r); /* dynamically allocated array */
|
|
||||||
+ var DYNAMIC_ARRAY(dims_sizes,array_dim_size_t,r?r:1); /* dynamically allocated array */
|
|
||||||
iarray_dims_sizes(obj,dims_sizes); /* fill */
|
|
||||||
var uintL depth = r; /* depth of recursion */
|
|
||||||
var pr_array_locals_t locals; /* local variables */
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
Fixes this USBAN error:
|
|
||||||
|
|
||||||
../src/sort.d:42:18: runtime error: applying non-zero offset 18446744073709551584 to null pointer
|
|
||||||
|
|
||||||
--- src/sort.d.orig 2024-12-28 00:47:59.000000000 -0700
|
|
||||||
+++ src/sort.d 2025-02-10 09:33:00.121016044 -0700
|
|
||||||
@@ -39,7 +39,7 @@
|
|
||||||
/* sort(v,n); sorts the array v[0]..v[n-1] in ascending order. */
|
|
||||||
local void SORT(SORTID,sort) (SORT_ELEMENT* v, uintL n)
|
|
||||||
{
|
|
||||||
- var SORT_ELEMENT* w = &v[-1];
|
|
||||||
+ var SORT_ELEMENT* w;
|
|
||||||
/* w[1]..w[n] point to the same elements as v[0]..v[n-1] .
|
|
||||||
We collect the numbers 1,...,n to a balanced binary subtree,
|
|
||||||
so that k has the children 2*k and 2*k+1.
|
|
||||||
@@ -70,6 +70,7 @@ local void SORT(SORTID,sort) (SORT_ELEME
|
|
||||||
}
|
|
||||||
if (n<=1) /* nothing to do? */
|
|
||||||
return;
|
|
||||||
+ w = &v[-1];
|
|
||||||
{ /* Because of 2*(floor(n/2)+1) > n,
|
|
||||||
w[floor(n/2)+1]..w[n] is already sorted. */
|
|
||||||
var uintL r;
|
|
||||||
857
clisp.spec
857
clisp.spec
|
|
@ -1,730 +1,295 @@
|
||||||
# Upstream has not made a new release since 2010
|
|
||||||
%global srcname clisp
|
|
||||||
%global commit f66220939ea7d36fd085384afa4a0ec44597d499
|
|
||||||
%global date 20250504
|
|
||||||
%global forgeurl https://gitlab.com/gnu-clisp/clisp
|
|
||||||
|
|
||||||
# There is a plus on the end for unreleased versions, not for released versions
|
|
||||||
%global instdir %{name}-%{version}+
|
|
||||||
|
|
||||||
# This package uses toplevel ASMs which are incompatible with LTO
|
|
||||||
%global _lto_cflags %{nil}
|
|
||||||
|
|
||||||
%bcond gtk2 %[!(0%{?rhel} > 9)]
|
|
||||||
|
|
||||||
Name: clisp
|
Name: clisp
|
||||||
Summary: ANSI Common Lisp implementation
|
Summary: ANSI Common Lisp implementation
|
||||||
Version: 2.49.95
|
Version: 2.49
|
||||||
|
Release: 8%{?dist}
|
||||||
|
|
||||||
%forgemeta
|
Group: Development/Languages
|
||||||
|
License: GPLv2
|
||||||
# The project as a whole is GPL-2.0-or-later. Exceptions:
|
|
||||||
# - Some documentation is dual-licensed as GPL-2.0-or-later OR GFDL-1.2-or-later
|
|
||||||
# - src/gllib is LGPL-2.1-or-later
|
|
||||||
# - src/socket.d and modules/clx/mit-clx/doc.lisp are HPND
|
|
||||||
# - src/xthread.d and modules/asdf/asdf.lisp are X11
|
|
||||||
License: GPL-2.0-or-later AND (GPL-2.0-or-later OR GFDL-1.2-or-later) AND LGPL-2.1-or-later AND HPND AND X11
|
|
||||||
Release: 5%{?dist}
|
|
||||||
URL: http://www.clisp.org/
|
URL: http://www.clisp.org/
|
||||||
VCS: git:%{forgeurl}.git
|
Source0: http://downloads.sourceforge.net/clisp/clisp-%{version}.tar.bz2
|
||||||
Source0: %{forgesource}
|
# Adapt to libsvm 3.1. Applied upstream.
|
||||||
# Upstream dropped this file from the distribution
|
Patch0: clisp-libsvm.patch
|
||||||
Source1: https://gitlab.com/sam-s/clhs/-/raw/master/clhs.el
|
# Fix an illegal C construct that allows GCC 4.7 to produce bad code. Applied
|
||||||
# Updated translations
|
# upstream.
|
||||||
Source2: http://translationproject.org/latest/clisp/sv.po
|
Patch1: clisp-hostname.patch
|
||||||
Source3: http://translationproject.org/latest/clisp/de.po
|
# Fix old ARM assembly that is invalid for newer platforms. Sent upstream.
|
||||||
# https://sourceforge.net/p/clisp/patches/32/
|
Patch2: clisp-arm.patch
|
||||||
Patch0: %{name}-format.patch
|
# Linux-specific fixes. Sent upstream 25 Jul 2012.
|
||||||
# The combination of register and volatile is nonsensical
|
Patch3: clisp-linux.patch
|
||||||
Patch1: %{name}-register-volatile.patch
|
BuildRequires: compat-readline5-devel
|
||||||
# A test that writes to /dev/pts/0 succeeds or fails apparently at random.
|
|
||||||
# I can only guess that /dev/pts/0 may or may not be what the test expects.
|
|
||||||
# Perhaps we are racing with something else that allocates a pty. Disable
|
|
||||||
# the test for now.
|
|
||||||
Patch2: %{name}-pts-access.patch
|
|
||||||
# Do not call the deprecated siginterrupt function
|
|
||||||
Patch3: %{name}-siginterrupt.patch
|
|
||||||
# Fix an iconv leak in stream.d
|
|
||||||
Patch4: %{name}-iconv-close.patch
|
|
||||||
# Fix a memory leak in encoding.d
|
|
||||||
# https://gitlab.com/gnu-clisp/clisp/-/merge_requests/11
|
|
||||||
Patch5: %{name}-encoding-leak.patch
|
|
||||||
# Fix undefined behavior in SORT
|
|
||||||
Patch6: %{name}-undefined-behavior-sort.patch
|
|
||||||
# Fix undefined behavior in interpret_bytecode_
|
|
||||||
Patch7: %{name}-undefined-behavior-eval.patch
|
|
||||||
# Fix undefined behavior in pr_array
|
|
||||||
Patch8: %{name}-undefined-behavior-io.patch
|
|
||||||
# Fix misaligned memory accesses on ppc64le
|
|
||||||
Patch9: %{name}-ppc64le-alignment.patch
|
|
||||||
# Fix some mismatched readline function declarations
|
|
||||||
# https://gitlab.com/gnu-clisp/clisp/-/merge_requests/13
|
|
||||||
Patch10: %{name}-readline.patch
|
|
||||||
|
|
||||||
# Work around a problem inlining a function on ppc64le
|
|
||||||
# See https://bugzilla.redhat.com/show_bug.cgi?id=2049371
|
|
||||||
Patch100: %{name}-no-inline.patch
|
|
||||||
|
|
||||||
BuildRequires: dbus-devel
|
BuildRequires: dbus-devel
|
||||||
BuildRequires: diffutils
|
|
||||||
BuildRequires: emacs
|
|
||||||
BuildRequires: fcgi-devel
|
BuildRequires: fcgi-devel
|
||||||
BuildRequires: ffcall-devel
|
BuildRequires: ffcall
|
||||||
BuildRequires: gcc
|
|
||||||
BuildRequires: gdbm-devel
|
BuildRequires: gdbm-devel
|
||||||
BuildRequires: gettext-devel
|
BuildRequires: gettext-devel
|
||||||
BuildRequires: ghostscript
|
BuildRequires: ghostscript
|
||||||
BuildRequires: glibc-langpack-en
|
|
||||||
BuildRequires: glibc-langpack-fr
|
|
||||||
BuildRequires: glibc-langpack-ja
|
|
||||||
BuildRequires: glibc-langpack-zh
|
|
||||||
BuildRequires: groff
|
BuildRequires: groff
|
||||||
%if %{with gtk2}
|
|
||||||
BuildRequires: gtk2-devel
|
BuildRequires: gtk2-devel
|
||||||
BuildRequires: libglade2-devel
|
BuildRequires: libICE-devel
|
||||||
%endif
|
BuildRequires: libSM-devel
|
||||||
|
BuildRequires: libX11-devel
|
||||||
BuildRequires: libXaw-devel
|
BuildRequires: libXaw-devel
|
||||||
|
BuildRequires: libXext-devel
|
||||||
BuildRequires: libXft-devel
|
BuildRequires: libXft-devel
|
||||||
BuildRequires: libdb-devel
|
BuildRequires: libXmu-devel
|
||||||
|
BuildRequires: libXrender-devel
|
||||||
|
BuildRequires: libXt-devel
|
||||||
|
BuildRequires: libdb4-devel
|
||||||
|
BuildRequires: libglade2-devel
|
||||||
BuildRequires: libsigsegv-devel
|
BuildRequires: libsigsegv-devel
|
||||||
BuildRequires: libsvm-devel
|
BuildRequires: libsvm-devel
|
||||||
BuildRequires: libunistring-devel
|
#BuildRequires: pari-devel
|
||||||
BuildRequires: libxcrypt-devel
|
BuildRequires: pcre-devel
|
||||||
BuildRequires: make
|
BuildRequires: postgresql-devel
|
||||||
BuildRequires: pari-devel
|
|
||||||
BuildRequires: pari-gp
|
|
||||||
BuildRequires: libpq-devel
|
|
||||||
BuildRequires: readline-devel
|
|
||||||
BuildRequires: vim-filesystem
|
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
|
|
||||||
Requires: emacs-filesystem
|
# See Red Hat bug #238954
|
||||||
Requires: vim-filesystem
|
ExcludeArch: ppc64
|
||||||
|
|
||||||
# clisp contains a copy of gnulib, which has been granted a bundling exception:
|
# clisp contains a copy of gnulib, which has been granted a bundling exception:
|
||||||
# https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries#Packages_granted_exceptions
|
# https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries#Packages_granted_exceptions
|
||||||
Provides: bundled(gnulib)
|
Provides: bundled(gnulib)
|
||||||
|
|
||||||
%description
|
%description
|
||||||
ANSI Common Lisp is a high-level, general-purpose programming language. GNU
|
ANSI Common Lisp is a high-level, general-purpose programming
|
||||||
CLISP is a Common Lisp implementation by Bruno Haible of Karlsruhe University
|
language. GNU CLISP is a Common Lisp implementation by Bruno Haible
|
||||||
and Michael Stoll of Munich University, both in Germany. It mostly supports
|
of Karlsruhe University and Michael Stoll of Munich University, both
|
||||||
the Lisp described in the ANSI Common Lisp standard. It runs on most Unix
|
in Germany. It mostly supports the Lisp described in the ANSI Common
|
||||||
workstations (GNU/Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Tru64, HP-UX,
|
Lisp standard. It runs on most Unix workstations (GNU/Linux, FreeBSD,
|
||||||
BeOS, NeXTstep, IRIX, AIX and others) and on other systems (Windows NT/2000/XP,
|
NetBSD, OpenBSD, Solaris, Tru64, HP-UX, BeOS, NeXTstep, IRIX, AIX and
|
||||||
Windows 95/98/ME) and needs only 4 MiB of RAM.
|
others) and on other systems (Windows NT/2000/XP, Windows 95/98/ME)
|
||||||
|
and needs only 4 MiB of RAM.
|
||||||
|
|
||||||
It is Free Software and may be distributed under the terms of GNU GPL, while
|
It is Free Software and may be distributed under the terms of GNU GPL,
|
||||||
it is possible to distribute commercial proprietary applications compiled with
|
while it is possible to distribute commercial proprietary applications
|
||||||
GNU CLISP.
|
compiled with GNU CLISP.
|
||||||
|
|
||||||
The user interface comes in English, German, French, Spanish, Dutch, Russian
|
The user interface comes in English, German, French, Spanish, Dutch,
|
||||||
and Danish, and can be changed at run time. GNU CLISP includes an
|
Russian and Danish, and can be changed at run time. GNU CLISP
|
||||||
interpreter, a compiler, a debugger, CLOS, MOP, a foreign language interface,
|
includes an interpreter, a compiler, a debugger, CLOS, MOP, a foreign
|
||||||
sockets, i18n, fast bignums and more. An X11 interface is available through
|
language interface, sockets, i18n, fast bignums and more. An X11
|
||||||
CLX, Garnet, CLUE/CLIO. GNU CLISP runs Maxima, ACL2 and many other Common
|
interface is available through CLX, Garnet, CLUE/CLIO. GNU CLISP runs
|
||||||
Lisp packages.
|
Maxima, ACL2 and many other Common Lisp packages.
|
||||||
|
|
||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Development files for CLISP
|
Summary: Development files for CLISP
|
||||||
|
Group: Development/Languages
|
||||||
Provides: %{name}-static = %{version}-%{release}
|
Provides: %{name}-static = %{version}-%{release}
|
||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
Requires: %{name}%{?_isa} = %{version}-%{release}, automake
|
||||||
Requires: libsigsegv-devel%{?_isa}
|
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
Files necessary for linking CLISP programs.
|
Files necessary for linking CLISP programs.
|
||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%forgesetup
|
%setup -q
|
||||||
%autopatch -M99 -p0
|
%patch0
|
||||||
%ifarch %{power64}
|
%patch1
|
||||||
%autopatch 100 -p0
|
%patch2
|
||||||
%endif
|
%patch3
|
||||||
|
|
||||||
%conf
|
# Convince CLisp to build against compat-readline5 instead of readline.
|
||||||
cp -p %{SOURCE1} emacs
|
# This is to avoid pulling the GPLv3 readline 6 into a GPLv2 CLisp binary.
|
||||||
cp -p %{SOURCE2} %{SOURCE3} src/po
|
# See Red Hat bug #511303.
|
||||||
|
mkdir -p readline/include
|
||||||
|
ln -s %{_includedir}/readline5/readline readline/include/readline
|
||||||
|
ln -s %{_libdir}/readline5 readline/%{_lib}
|
||||||
|
|
||||||
|
# Change URLs not affected by the --hyperspec argument to configure
|
||||||
|
sed -i.orig 's|lisp.org/HyperSpec/Body/chap-7.html|lispworks.com/documentation/HyperSpec/Body/07_.htm|' \
|
||||||
|
src/clos-package.lisp
|
||||||
|
touch -r src/clos-package.lisp.orig src/clos-package.lisp
|
||||||
|
rm -f src/clos-package.lisp.orig
|
||||||
|
for f in src/_README.*; do
|
||||||
|
sed -i.orig 's|lisp.org/HyperSpec/FrontMatter|lispworks.com/documentation/HyperSpec/Front|' $f
|
||||||
|
touch -r ${f}.orig $f
|
||||||
|
rm -f ${f}.orig
|
||||||
|
done
|
||||||
|
|
||||||
# We only link against libraries in system directories, so we need -L dir in
|
# We only link against libraries in system directories, so we need -L dir in
|
||||||
# place of -Wl,-rpath -Wl,dir
|
# place of -Wl,-rpath -Wl,dir
|
||||||
cp -p src/build-aux/config.rpath config.rpath.orig
|
cp -p src/build-aux/config.rpath config.rpath.orig
|
||||||
sed -i -e 's/${wl}-rpath ${wl}/-L/g' src/build-aux/config.rpath
|
sed -i -e 's/${wl}-rpath ${wl}/-L/g' src/build-aux/config.rpath
|
||||||
|
|
||||||
# Do not use -Werror, or we get build failures on every new gcc version
|
|
||||||
sed -i '/CFLAGS -Werror/d' modules/berkeley-db/configure
|
|
||||||
|
|
||||||
# Do not override our choice of optimization flags
|
|
||||||
sed -i "/CFLAGS/s/'-O'/''/;/Z_XCFLAGS/s/' -O'//" src/makemake.in
|
|
||||||
|
|
||||||
# When building modules, put -Wl,--as-needed before the libraries to link
|
|
||||||
sed -i "s/CC='\${CC}'/CC='\${CC} -Wl,--as-needed'/" src/makemake.in
|
|
||||||
|
|
||||||
# Enable firefox to be the default browser for displaying documentation
|
# Enable firefox to be the default browser for displaying documentation
|
||||||
sed -i 's/;; \((setq \*browser\* .*)\)/\1/' src/cfgunix.lisp
|
sed -i 's/;; \((setq \*browser\* .*)\)/\1/' src/cfgunix.lisp
|
||||||
|
|
||||||
# Unpack the CLX manual
|
|
||||||
tar -C modules/clx -xzf modules/clx/clx-manual.tar.gz
|
|
||||||
chmod -R go+r modules/clx/clx-manual
|
|
||||||
chmod a-x modules/clx/clx-manual/html/doc-index.cgi
|
|
||||||
|
|
||||||
# On some koji builders, something is already listening on port 9090, which
|
|
||||||
# causes a spurious test failure. Change to port 9096 for the test.
|
|
||||||
sed -i 's/9090/9096/g' tests/socket.tst
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# Do not need to specify base modules: i18n, readline, regexp, syscalls.
|
ulimit -s unlimited
|
||||||
# The dirkey module currently can only be built on Windows/Cygwin/MinGW.
|
|
||||||
# The editor module is not in good enough shape to use.
|
# Do not need to specify base modules: i18n, readline, regexp, syscalls
|
||||||
# The matlab, netica, and oracle modules require proprietary code to build.
|
# The dirkey module currently can only be built on Windows/Cygwin/MinGW
|
||||||
# The queens module is intended as an example only, not for actual use.
|
|
||||||
./configure --prefix=%{_prefix} \
|
./configure --prefix=%{_prefix} \
|
||||||
--libdir=%{_libdir} \
|
--libdir=%{_libdir} \
|
||||||
--mandir=%{_mandir} \
|
--mandir=%{_mandir} \
|
||||||
--infodir=%{_infodir} \
|
--docdir=%{_docdir}/clisp-%{version} \
|
||||||
--docdir=%{_pkgdocdir} \
|
|
||||||
--fsstnd=redhat \
|
--fsstnd=redhat \
|
||||||
--with-module=asdf \
|
--hyperspec=http://www.lispworks.com/documentation/HyperSpec/ \
|
||||||
--with-module=berkeley-db \
|
--with-module=berkeley-db \
|
||||||
--with-module=bindings/glibc \
|
--with-module=bindings/glibc \
|
||||||
--with-module=clx/new-clx \
|
--with-module=clx/new-clx \
|
||||||
--with-module=dbus \
|
--with-module=dbus \
|
||||||
--with-module=fastcgi \
|
--with-module=fastcgi \
|
||||||
--with-module=gdbm \
|
--with-module=gdbm \
|
||||||
%if %{with gtk2}
|
|
||||||
--with-module=gtk2 \
|
--with-module=gtk2 \
|
||||||
%endif
|
|
||||||
--with-module=libsvm \
|
--with-module=libsvm \
|
||||||
--with-module=pari \
|
--with-module=pcre \
|
||||||
--with-module=postgresql \
|
--with-module=postgresql \
|
||||||
--with-module=rawsock \
|
--with-module=rawsock \
|
||||||
|
--with-module=wildcard \
|
||||||
--with-module=zlib \
|
--with-module=zlib \
|
||||||
--with-libreadline-prefix=$PWD/readline \
|
--with-libreadline-prefix=`pwd`/readline \
|
||||||
--with-ffcall \
|
--cbc \
|
||||||
--config \
|
|
||||||
build \
|
build \
|
||||||
CPPFLAGS='-I/usr/include/libsvm' \
|
%ifarch ppc ppc64
|
||||||
CFLAGS='%{build_cflags} -Wa,--noexecstack' \
|
CFLAGS="${RPM_OPT_FLAGS} -DNO_GENERATIONAL_GC -DNO_MULTIMAP_FILE -DNO_SINGLEMAP -I/usr/include/readline5 -I/usr/include/libsvm -I/usr/include/libdb4 -Wa,--noexecstack -L%{_libdir}/readline5 -L%{_libdir}/libdb4" \
|
||||||
LDFLAGS='-Wl,--as-needed -Wl,-z,relro -Wl,-z,noexecstack'
|
%else
|
||||||
|
CFLAGS="${RPM_OPT_FLAGS} -I/usr/include/readline5 -I/usr/include/libsvm -I/usr/include/libdb4 -Wa,--noexecstack -L%{_libdir}/readline5 -L%{_libdir}/libdb4" \
|
||||||
cd build
|
%endif
|
||||||
# Workaround libtool reordering -Wl,--as-needed after all the libraries.
|
LDFLAGS="-L%{_libdir}/readline5 -L%{_libdir}/libdb4 -Wl,-z,noexecstack"
|
||||||
sed -i 's|CC="\(.*g..\)"|CC="\1 -Wl,--as-needed"|' libtool
|
|
||||||
make
|
|
||||||
cd -
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
make -C build DESTDIR=%{buildroot} install
|
make -C build DESTDIR=$RPM_BUILD_ROOT install
|
||||||
cp -a build/full %{buildroot}%{_libdir}/%{instdir}
|
rm -f $RPM_BUILD_ROOT%{_docdir}/clisp-%{version}/doc/clisp.{dvi,1,ps}
|
||||||
rm -f %{buildroot}%{_pkgdocdir}/doc/clisp.{dvi,1,ps}
|
cp -p doc/mop-spec.pdf $RPM_BUILD_ROOT%{_docdir}/clisp-%{version}/doc
|
||||||
rm -f %{buildroot}%{_pkgdocdir}/{COPYRIGHT,GNU-GPL}
|
cp -p doc/*.png $RPM_BUILD_ROOT%{_docdir}/clisp-%{version}/doc
|
||||||
cp -p doc/mop-spec.pdf %{buildroot}%{_pkgdocdir}/doc
|
cp -p doc/Why-CLISP* $RPM_BUILD_ROOT%{_docdir}/clisp-%{version}/doc
|
||||||
cp -p doc/*.png %{buildroot}%{_pkgdocdir}/doc
|
cp -p doc/regexp.html $RPM_BUILD_ROOT%{_docdir}/clisp-%{version}/doc
|
||||||
cp -p doc/Why-CLISP* %{buildroot}%{_pkgdocdir}/doc
|
find $RPM_BUILD_ROOT%{_libdir} -name '*.dvi' | xargs rm -f
|
||||||
cp -p doc/regexp.html %{buildroot}%{_pkgdocdir}/doc
|
|
||||||
find %{buildroot}%{_libdir} -name '*.dvi' -exec rm -f {} \+
|
|
||||||
%find_lang %{name}
|
%find_lang %{name}
|
||||||
%find_lang %{name}low
|
%find_lang %{name}low
|
||||||
cat %{name}low.lang >> %{name}.lang
|
cat %{name}low.lang >> %{name}.lang
|
||||||
|
|
||||||
# Compile the Emacs interface
|
# Put back the original config.rpath, and fix executable bits
|
||||||
pushd %{buildroot}%{_emacs_sitelispdir}
|
cp -p config.rpath.orig $RPM_BUILD_ROOT/%{_libdir}/clisp-%{version}/build-aux/config.rpath
|
||||||
%{_emacs_bytecompile} *.el
|
chmod a+x \
|
||||||
popd
|
$RPM_BUILD_ROOT/%{_libdir}/clisp-%{version}/build-aux/config.guess \
|
||||||
|
$RPM_BUILD_ROOT/%{_libdir}/clisp-%{version}/build-aux/config.sub \
|
||||||
# Put back the original config.rpath
|
$RPM_BUILD_ROOT/%{_libdir}/clisp-%{version}/build-aux/depcomp
|
||||||
cp -p config.rpath.orig %{buildroot}%{_libdir}/%{instdir}/build-aux/config.rpath
|
|
||||||
|
|
||||||
# Fix a missing executable bit
|
|
||||||
chmod a+x %{buildroot}%{_libdir}/%{instdir}/build-aux/depcomp
|
|
||||||
|
|
||||||
# Fix paths in the Makefiles
|
|
||||||
for mk in $(find %{buildroot}%{_libdir} -name Makefile); do
|
|
||||||
sed -e "s,$PWD/modules,%{_libdir}/%{instdir}," \
|
|
||||||
-e "s,$PWD/build/clisp,%{_bindir}/clisp," \
|
|
||||||
-e "s,$PWD/build/linkkit,%{_libdir}/%{instdir}/linkkit," \
|
|
||||||
-i $mk
|
|
||||||
done
|
|
||||||
for mk in %{buildroot}%{_libdir}/%{instdir}/{base,full}/makevars; do
|
|
||||||
sed -e "s, -I$PWD[^']*,," \
|
|
||||||
-e "s,%{_libdir}/lib\([[:alnum:]]*\)\.so,-l\1,g" \
|
|
||||||
-i $mk
|
|
||||||
done
|
|
||||||
|
|
||||||
# Install config.h, which is needed in some cases
|
|
||||||
for dir in %{buildroot}%{_libdir}/%{instdir}/*; do
|
|
||||||
cp -p build/$(basename $dir)/config.h $dir || :
|
|
||||||
done
|
|
||||||
cp -p build/config.h %{buildroot}%{_libdir}/%{instdir}
|
|
||||||
cp -p build/clx/new-clx/config.h \
|
|
||||||
%{buildroot}%{_libdir}/%{instdir}/clx/new-clx
|
|
||||||
|
|
||||||
# Fix broken symlinks in the full set
|
|
||||||
pushd %{buildroot}%{_libdir}/%{instdir}/full
|
|
||||||
for obj in calls gettext readline regexi; do
|
|
||||||
rm -f ${obj}.o
|
|
||||||
ln -s ../base/${obj}.o ${obj}.o
|
|
||||||
done
|
|
||||||
for obj in libgnu libnoreadline lisp; do
|
|
||||||
rm -f ${obj}.a
|
|
||||||
ln -s ../base/${obj}.a ${obj}.a
|
|
||||||
done
|
|
||||||
for obj in fastcgi fastcgi_wrappers; do
|
|
||||||
rm -f ${obj}.o
|
|
||||||
ln -s ../fastcgi/${obj}.o ${obj}.o
|
|
||||||
done
|
|
||||||
for obj in cpari pari; do
|
|
||||||
rm -f ${obj}.o
|
|
||||||
ln -s ../pari/${obj}.o ${obj}.o
|
|
||||||
done
|
|
||||||
rm -f bdb.o
|
|
||||||
ln -s ../berkeley-db/bdb.o bdb.o
|
|
||||||
rm -f clx.o
|
|
||||||
ln -s ../clx/new-clx/clx.o clx.o
|
|
||||||
rm -f dbus.o
|
|
||||||
ln -s ../dbus/dbus.o dbus.o
|
|
||||||
rm -f gdbm.o
|
|
||||||
ln -s ../gdbm/gdbm.o gdbm.o
|
|
||||||
%if %{with gtk2}
|
|
||||||
rm -f gtk.o
|
|
||||||
ln -s ../gtk2/gtk.o gtk.o
|
|
||||||
%endif
|
|
||||||
rm -f libsvm.o
|
|
||||||
ln -s ../libsvm/libsvm.o libsvm.o
|
|
||||||
rm -f linux.o
|
|
||||||
ln -s ../bindings/glibc/linux.o linux.o
|
|
||||||
rm -f postgresql.o
|
|
||||||
ln -s ../postgresql/postgresql.o postgresql.o
|
|
||||||
rm -f rawsock.o
|
|
||||||
ln -s ../rawsock/rawsock.o rawsock.o
|
|
||||||
rm -f zlib.o
|
|
||||||
ln -s ../zlib/zlib.o zlib.o
|
|
||||||
popd
|
|
||||||
|
|
||||||
# Help the debuginfo generator
|
|
||||||
ln -s ../../src/modules.c build/base/modules.c
|
|
||||||
ln -s ../../src/modules.c build/full/modules.c
|
|
||||||
|
|
||||||
%check
|
|
||||||
make -C build check
|
|
||||||
make -C build extracheck
|
|
||||||
make -C build base-mod-check
|
|
||||||
|
|
||||||
%files -f %{name}.lang
|
%files -f %{name}.lang
|
||||||
%license COPYRIGHT GNU-GPL
|
|
||||||
%{_bindir}/clisp
|
%{_bindir}/clisp
|
||||||
%{_mandir}/man1/clisp.1*
|
%{_mandir}/man1/clisp.1*
|
||||||
%{_pkgdocdir}/
|
%{_docdir}/clisp-%{version}
|
||||||
%dir %{_libdir}/%{instdir}/
|
%dir %{_libdir}/clisp-%{version}/
|
||||||
%dir %{_libdir}/%{instdir}/asdf/
|
%dir %{_libdir}/clisp-%{version}/base/
|
||||||
%{_libdir}/%{instdir}/asdf/asdf.fas
|
%{_libdir}/clisp-%{version}/base/lispinit.mem
|
||||||
%dir %{_libdir}/%{instdir}/base/
|
%{_libdir}/clisp-%{version}/base/lisp.run
|
||||||
%{_libdir}/%{instdir}/base/lispinit.mem
|
%dir %{_libdir}/clisp-%{version}/berkeley-db/
|
||||||
%{_libdir}/%{instdir}/base/lisp.run
|
%{_libdir}/clisp-%{version}/berkeley-db/*.fas
|
||||||
%dir %{_libdir}/%{instdir}/berkeley-db/
|
%dir %{_libdir}/clisp-%{version}/bindings/
|
||||||
%{_libdir}/%{instdir}/berkeley-db/*.fas
|
%dir %{_libdir}/clisp-%{version}/bindings/glibc/
|
||||||
%{_libdir}/%{instdir}/berkeley-db/preload.lisp
|
%{_libdir}/clisp-%{version}/bindings/glibc/*.fas
|
||||||
%dir %{_libdir}/%{instdir}/bindings/
|
%dir %{_libdir}/clisp-%{version}/clx/
|
||||||
%dir %{_libdir}/%{instdir}/bindings/glibc/
|
%dir %{_libdir}/clisp-%{version}/clx/new-clx/
|
||||||
%{_libdir}/%{instdir}/bindings/glibc/*.fas
|
%{_libdir}/clisp-%{version}/clx/new-clx/*.fas
|
||||||
%dir %{_libdir}/%{instdir}/clx/
|
%{_libdir}/clisp-%{version}/data/
|
||||||
%dir %{_libdir}/%{instdir}/clx/new-clx/
|
%dir %{_libdir}/clisp-%{version}/dbus/
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/*.fas
|
%{_libdir}/clisp-%{version}/dbus/*.fas
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/clx-preload.lisp
|
%{_libdir}/clisp-%{version}/dynmod/
|
||||||
%{_libdir}/%{instdir}/data/
|
%dir %{_libdir}/clisp-%{version}/fastcgi/
|
||||||
%dir %{_libdir}/%{instdir}/dbus/
|
%{_libdir}/clisp-%{version}/fastcgi/*.fas
|
||||||
%{_libdir}/%{instdir}/dbus/*.fas
|
%dir %{_libdir}/clisp-%{version}/gdbm/
|
||||||
%{_libdir}/%{instdir}/dynmod/
|
%{_libdir}/clisp-%{version}/gdbm/*.fas
|
||||||
%dir %{_libdir}/%{instdir}/fastcgi/
|
%dir %{_libdir}/clisp-%{version}/gtk2/
|
||||||
%{_libdir}/%{instdir}/fastcgi/*.fas
|
%{_libdir}/clisp-%{version}/gtk2/*.fas
|
||||||
%dir %{_libdir}/%{instdir}/full/
|
%dir %{_libdir}/clisp-%{version}/libsvm/
|
||||||
%{_libdir}/%{instdir}/full/lispinit.mem
|
%{_libdir}/clisp-%{version}/libsvm/*.fas
|
||||||
%{_libdir}/%{instdir}/full/lisp.run
|
#%%dir %%{_libdir}/clisp-%%{version}/pari/
|
||||||
%dir %{_libdir}/%{instdir}/gdbm/
|
#%%{_libdir}/clisp-%%{version}/pari/*.fas
|
||||||
%{_libdir}/%{instdir}/gdbm/*.fas
|
%dir %{_libdir}/clisp-%{version}/pcre/
|
||||||
%{_libdir}/%{instdir}/gdbm/preload.lisp
|
%{_libdir}/clisp-%{version}/pcre/*.fas
|
||||||
%if %{with gtk2}
|
%dir %{_libdir}/clisp-%{version}/postgresql/
|
||||||
%dir %{_libdir}/%{instdir}/gtk2/
|
%{_libdir}/clisp-%{version}/postgresql/*.fas
|
||||||
%{_libdir}/%{instdir}/gtk2/*.fas
|
%dir %{_libdir}/clisp-%{version}/rawsock/
|
||||||
%{_libdir}/%{instdir}/gtk2/preload.lisp
|
%{_libdir}/clisp-%{version}/rawsock/*.fas
|
||||||
%endif
|
%dir %{_libdir}/clisp-%{version}/wildcard/
|
||||||
%dir %{_libdir}/%{instdir}/libsvm/
|
%{_libdir}/clisp-%{version}/wildcard/*.fas
|
||||||
%{_libdir}/%{instdir}/libsvm/*.fas
|
%dir %{_libdir}/clisp-%{version}/zlib/
|
||||||
%{_libdir}/%{instdir}/libsvm/preload.lisp
|
%{_libdir}/clisp-%{version}/zlib/*.fas
|
||||||
%dir %{_libdir}/%{instdir}/pari/
|
%{_datadir}/emacs/site-lisp/*
|
||||||
%{_libdir}/%{instdir}/pari/*.fas
|
%{_datadir}/vim/vimfiles/after/syntax/*
|
||||||
%{_libdir}/%{instdir}/pari/preload.lisp
|
|
||||||
%dir %{_libdir}/%{instdir}/postgresql/
|
|
||||||
%{_libdir}/%{instdir}/postgresql/*.fas
|
|
||||||
%dir %{_libdir}/%{instdir}/rawsock/
|
|
||||||
%{_libdir}/%{instdir}/rawsock/*.fas
|
|
||||||
%{_libdir}/%{instdir}/rawsock/preload.lisp
|
|
||||||
%dir %{_libdir}/%{instdir}/zlib/
|
|
||||||
%{_libdir}/%{instdir}/zlib/*.fas
|
|
||||||
%{_emacs_sitelispdir}/*
|
|
||||||
%{vimfiles_root}/after/syntax/*
|
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%doc modules/clx/clx-manual
|
|
||||||
%{_bindir}/clisp-link
|
%{_bindir}/clisp-link
|
||||||
%{_mandir}/man1/clisp-link.1*
|
%{_mandir}/man1/clisp-link.1*
|
||||||
%{_libdir}/%{instdir}/asdf/Makefile
|
%{_libdir}/clisp-%{version}/base/*.a
|
||||||
%{_libdir}/%{instdir}/asdf/*.lisp
|
%{_libdir}/clisp-%{version}/base/*.o
|
||||||
%{_libdir}/%{instdir}/asdf/*.sh
|
%{_libdir}/clisp-%{version}/base/*.h
|
||||||
%{_libdir}/%{instdir}/base/*.a
|
%{_libdir}/clisp-%{version}/base/makevars
|
||||||
%{_libdir}/%{instdir}/base/*.h
|
%{_libdir}/clisp-%{version}/berkeley-db/Makefile
|
||||||
%{_libdir}/%{instdir}/base/*.o
|
%{_libdir}/clisp-%{version}/berkeley-db/*.lisp
|
||||||
%{_libdir}/%{instdir}/base/makevars
|
%{_libdir}/clisp-%{version}/berkeley-db/*.o
|
||||||
%{_libdir}/%{instdir}/berkeley-db/Makefile
|
%{_libdir}/clisp-%{version}/berkeley-db/*.sh
|
||||||
%{_libdir}/%{instdir}/berkeley-db/*.h
|
%{_libdir}/clisp-%{version}/bindings/glibc/Makefile
|
||||||
%{_libdir}/%{instdir}/berkeley-db/dbi.lisp
|
%{_libdir}/clisp-%{version}/bindings/glibc/*.lisp
|
||||||
%{_libdir}/%{instdir}/berkeley-db/*.o
|
%{_libdir}/clisp-%{version}/bindings/glibc/*.o
|
||||||
%{_libdir}/%{instdir}/berkeley-db/*.sh
|
%{_libdir}/clisp-%{version}/bindings/glibc/*.sh
|
||||||
%{_libdir}/%{instdir}/bindings/glibc/Makefile
|
%{_libdir}/clisp-%{version}/build-aux/
|
||||||
%{_libdir}/%{instdir}/bindings/glibc/*.lisp
|
%{_libdir}/clisp-%{version}/clx/new-clx/demos/
|
||||||
%{_libdir}/%{instdir}/bindings/glibc/*.o
|
%{_libdir}/clisp-%{version}/clx/new-clx/README
|
||||||
%{_libdir}/%{instdir}/bindings/glibc/*.sh
|
%{_libdir}/clisp-%{version}/clx/new-clx/Makefile
|
||||||
%{_libdir}/%{instdir}/build-aux/
|
%{_libdir}/clisp-%{version}/clx/new-clx/*.lisp
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/demos/
|
%{_libdir}/clisp-%{version}/clx/new-clx/*.o
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/README
|
%{_libdir}/clisp-%{version}/clx/new-clx/*.sh
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/Makefile
|
%{_libdir}/clisp-%{version}/dbus/Makefile
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/*.h
|
%{_libdir}/clisp-%{version}/dbus/*.lisp
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/clx.lisp
|
%{_libdir}/clisp-%{version}/dbus/*.o
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/image.lisp
|
%{_libdir}/clisp-%{version}/dbus/*.sh
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/resource.lisp
|
%{_libdir}/clisp-%{version}/fastcgi/README
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/*.o
|
%{_libdir}/clisp-%{version}/fastcgi/Makefile
|
||||||
%{_libdir}/%{instdir}/clx/new-clx/*.sh
|
%{_libdir}/clisp-%{version}/fastcgi/*.lisp
|
||||||
%{_libdir}/%{instdir}/config.h
|
%{_libdir}/clisp-%{version}/fastcgi/*.o
|
||||||
%{_libdir}/%{instdir}/dbus/Makefile
|
%{_libdir}/clisp-%{version}/fastcgi/*.sh
|
||||||
%{_libdir}/%{instdir}/dbus/*.h
|
%{_libdir}/clisp-%{version}/gdbm/Makefile
|
||||||
%{_libdir}/%{instdir}/dbus/*.lisp
|
%{_libdir}/clisp-%{version}/gdbm/*.lisp
|
||||||
%{_libdir}/%{instdir}/dbus/*.o
|
%{_libdir}/clisp-%{version}/gdbm/*.o
|
||||||
%{_libdir}/%{instdir}/dbus/*.sh
|
%{_libdir}/clisp-%{version}/gdbm/*.sh
|
||||||
%{_libdir}/%{instdir}/fastcgi/README
|
%{_libdir}/clisp-%{version}/gtk2/Makefile
|
||||||
%{_libdir}/%{instdir}/fastcgi/Makefile
|
%{_libdir}/clisp-%{version}/gtk2/*.cfg
|
||||||
%{_libdir}/%{instdir}/fastcgi/*.h
|
%{_libdir}/clisp-%{version}/gtk2/*.glade
|
||||||
%{_libdir}/%{instdir}/fastcgi/*.lisp
|
%{_libdir}/clisp-%{version}/gtk2/*.lisp
|
||||||
%{_libdir}/%{instdir}/fastcgi/*.o
|
%{_libdir}/clisp-%{version}/gtk2/*.o
|
||||||
%{_libdir}/%{instdir}/fastcgi/*.sh
|
%{_libdir}/clisp-%{version}/gtk2/*.sh
|
||||||
%{_libdir}/%{instdir}/full/*.a
|
%{_libdir}/clisp-%{version}/libsvm/Makefile
|
||||||
%{_libdir}/%{instdir}/full/*.h
|
%{_libdir}/clisp-%{version}/libsvm/*.lisp
|
||||||
%{_libdir}/%{instdir}/full/*.o
|
%{_libdir}/clisp-%{version}/libsvm/*.o
|
||||||
%{_libdir}/%{instdir}/full/makevars
|
%{_libdir}/clisp-%{version}/libsvm/*.sh
|
||||||
%{_libdir}/%{instdir}/gdbm/Makefile
|
%{_libdir}/clisp-%{version}/linkkit/
|
||||||
%{_libdir}/%{instdir}/gdbm/*.h
|
#%%{_libdir}/clisp-%%{version}/pari/README
|
||||||
%{_libdir}/%{instdir}/gdbm/gdbm.lisp
|
#%%{_libdir}/clisp-%%{version}/pari/Makefile
|
||||||
%{_libdir}/%{instdir}/gdbm/*.o
|
#%%{_libdir}/clisp-%%{version}/pari/*.lisp
|
||||||
%{_libdir}/%{instdir}/gdbm/*.sh
|
#%%{_libdir}/clisp-%%{version}/pari/*.o
|
||||||
%if %{with gtk2}
|
#%%{_libdir}/clisp-%%{version}/pari/*.sh
|
||||||
%{_libdir}/%{instdir}/gtk2/Makefile
|
%{_libdir}/clisp-%{version}/pcre/Makefile
|
||||||
%{_libdir}/%{instdir}/gtk2/*.cfg
|
%{_libdir}/clisp-%{version}/pcre/*.lisp
|
||||||
%{_libdir}/%{instdir}/gtk2/*.glade
|
%{_libdir}/clisp-%{version}/pcre/*.o
|
||||||
%{_libdir}/%{instdir}/gtk2/*.h
|
%{_libdir}/clisp-%{version}/pcre/*.sh
|
||||||
%{_libdir}/%{instdir}/gtk2/gtk.lisp
|
%{_libdir}/clisp-%{version}/postgresql/README
|
||||||
%{_libdir}/%{instdir}/gtk2/*.o
|
%{_libdir}/clisp-%{version}/postgresql/Makefile
|
||||||
%{_libdir}/%{instdir}/gtk2/*.sh
|
%{_libdir}/clisp-%{version}/postgresql/*.lisp
|
||||||
%endif
|
%{_libdir}/clisp-%{version}/postgresql/*.o
|
||||||
%{_libdir}/%{instdir}/libsvm/README
|
%{_libdir}/clisp-%{version}/postgresql/*.sh
|
||||||
%{_libdir}/%{instdir}/libsvm/Makefile
|
%{_libdir}/clisp-%{version}/rawsock/demos/
|
||||||
%{_libdir}/%{instdir}/libsvm/*.h
|
%{_libdir}/clisp-%{version}/rawsock/Makefile
|
||||||
%{_libdir}/%{instdir}/libsvm/libsvm.lisp
|
%{_libdir}/clisp-%{version}/rawsock/*.lisp
|
||||||
%{_libdir}/%{instdir}/libsvm/*.o
|
%{_libdir}/clisp-%{version}/rawsock/*.o
|
||||||
%{_libdir}/%{instdir}/libsvm/*.sh
|
%{_libdir}/clisp-%{version}/rawsock/*.sh
|
||||||
%{_libdir}/%{instdir}/linkkit/
|
%{_libdir}/clisp-%{version}/wildcard/README
|
||||||
%{_libdir}/%{instdir}/pari/README
|
%{_libdir}/clisp-%{version}/wildcard/Makefile
|
||||||
%{_libdir}/%{instdir}/pari/Makefile
|
%{_libdir}/clisp-%{version}/wildcard/*.a
|
||||||
%{_libdir}/%{instdir}/pari/*.h
|
%{_libdir}/clisp-%{version}/wildcard/*.lisp
|
||||||
%{_libdir}/%{instdir}/pari/desc2lisp.lisp
|
%{_libdir}/clisp-%{version}/wildcard/*.o
|
||||||
%{_libdir}/%{instdir}/pari/pari.lisp
|
%{_libdir}/clisp-%{version}/wildcard/*.sh
|
||||||
%{_libdir}/%{instdir}/pari/*.o
|
%{_libdir}/clisp-%{version}/zlib/Makefile
|
||||||
%{_libdir}/%{instdir}/pari/*.sh
|
%{_libdir}/clisp-%{version}/zlib/*.lisp
|
||||||
%{_libdir}/%{instdir}/postgresql/README
|
%{_libdir}/clisp-%{version}/zlib/*.o
|
||||||
%{_libdir}/%{instdir}/postgresql/Makefile
|
%{_libdir}/clisp-%{version}/zlib/*.sh
|
||||||
%{_libdir}/%{instdir}/postgresql/*.h
|
|
||||||
%{_libdir}/%{instdir}/postgresql/*.lisp
|
|
||||||
%{_libdir}/%{instdir}/postgresql/*.o
|
|
||||||
%{_libdir}/%{instdir}/postgresql/*.sh
|
|
||||||
%{_libdir}/%{instdir}/rawsock/demos/
|
|
||||||
%{_libdir}/%{instdir}/rawsock/Makefile
|
|
||||||
%{_libdir}/%{instdir}/rawsock/*.h
|
|
||||||
%{_libdir}/%{instdir}/rawsock/sock.lisp
|
|
||||||
%{_libdir}/%{instdir}/rawsock/*.o
|
|
||||||
%{_libdir}/%{instdir}/rawsock/*.sh
|
|
||||||
%{_libdir}/%{instdir}/zlib/Makefile
|
|
||||||
%{_libdir}/%{instdir}/zlib/*.h
|
|
||||||
%{_libdir}/%{instdir}/zlib/*.lisp
|
|
||||||
%{_libdir}/%{instdir}/zlib/*.o
|
|
||||||
%{_libdir}/%{instdir}/zlib/*.sh
|
|
||||||
%{_datadir}/aclocal/clisp.m4
|
%{_datadir}/aclocal/clisp.m4
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.95-5
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jun 02 2025 Jerry James <loganjerry@gmail.com> - 2.49.95-4
|
|
||||||
- Update to latest git snapshot
|
|
||||||
- Drop one upstreamed patch to fix undefined behavior
|
|
||||||
|
|
||||||
* Fri Feb 14 2025 Jerry James <loganjerry@gmail.com> - 2.49.95-3
|
|
||||||
- Add patches to fix more undefined behavior
|
|
||||||
- Fix misaligned memory accesses on ppc64le
|
|
||||||
- Fix mismatched readline function declarations
|
|
||||||
|
|
||||||
* Fri Feb 7 2025 Jerry James <loganjerry@gmail.com> - 2.49.95-3
|
|
||||||
- Add patch to fix undefined behavior (rhbz#2339979)
|
|
||||||
- Add two patches to fix memory leaks
|
|
||||||
- Do not force -O1
|
|
||||||
|
|
||||||
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.95-3
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jan 13 2025 Jerry James <loganjerry@gmail.com> - 2.49.95-2
|
|
||||||
- Update to latest git snapshot
|
|
||||||
- Move configuration steps to %%conf
|
|
||||||
|
|
||||||
* Mon Nov 25 2024 Jerry James <loganjerry@gmail.com> - 2.49.95-1
|
|
||||||
- Version 2.49.95
|
|
||||||
- Drop upstreamed patches: db, c99, bdb-mismatched-pointer, new-clx, pari
|
|
||||||
|
|
||||||
* Sat Oct 5 2024 Jerry James <loganjerry@gmail.com> - 2.49.93-40
|
|
||||||
- Rebuild for pari 2.17.0
|
|
||||||
|
|
||||||
* Tue Sep 3 2024 Jerry James <loganjerry@gmail.com> - 2.49.93-39
|
|
||||||
- Update to latest git snapshot
|
|
||||||
- Add patch to fix FTBFS in the new-clx code
|
|
||||||
- Add patch to avoid calling the deprecated siginterrupt function
|
|
||||||
- Add VCS field
|
|
||||||
- Setting LC_ALL is no longer necessary
|
|
||||||
|
|
||||||
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-38
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-37
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-36
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Dec 1 2023 Jerry James <loganjerry@gmail.com> - 2.49.93-35
|
|
||||||
- Fix a mismatched pointer type error with GCC 14
|
|
||||||
|
|
||||||
* Wed Aug 16 2023 Jerry James <loganjerry@gmail.com> - 2.49.93-34
|
|
||||||
- Build without pcre support (rhbz#2128278)
|
|
||||||
|
|
||||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-33
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
|
||||||
|
|
||||||
* Tue Jul 18 2023 Jerry James <loganjerry@gmail.com> - 2.49.93-32
|
|
||||||
- Update to fix message typos
|
|
||||||
|
|
||||||
* Mon May 08 2023 Florian Weimer <fweimer@redhat.com> - 2.49.93-31
|
|
||||||
- Port to C99
|
|
||||||
|
|
||||||
* Tue Apr 4 2023 Jerry James <loganjerry@gmail.com> - 2.49.93-30
|
|
||||||
- Update to allow non-simple strings in FORMAT and FORMATTER
|
|
||||||
- Drop upstreamed ensure-6x patch
|
|
||||||
- Disable gtk2 support for RHEL 10 (thanks to Yaakov Selkowitz)
|
|
||||||
|
|
||||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-30
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
|
||||||
|
|
||||||
* Tue Jan 10 2023 Jerry James <loganjerry@gmail.com> - 2.49.93-29
|
|
||||||
- Update to latest git snapshot for buffer overflow fix
|
|
||||||
- Drop upstreamed pari patch
|
|
||||||
|
|
||||||
* Mon Sep 19 2022 Jerry James <loganjerry@gmail.com> - 2.49.93-28
|
|
||||||
- Rebuild for pari 2.15.0
|
|
||||||
|
|
||||||
* Thu Aug 18 2022 Jerry James <loganjerry@gmail.com> - 2.49.93-27
|
|
||||||
- Rebuild for libsvm 3.3
|
|
||||||
|
|
||||||
* Mon Aug 15 2022 Jerry James <loganjerry@gmail.com> - 2.49.93-26
|
|
||||||
- Convert License tag to SPDX
|
|
||||||
|
|
||||||
* Wed Aug 10 2022 Jerry James <loganjerry@gmail.com> - 2.49.93-26
|
|
||||||
- Move preload.lisp files to the main package
|
|
||||||
|
|
||||||
* Mon Aug 8 2022 Jerry James <loganjerry@gmail.com> - 2.49.93-25
|
|
||||||
- Add -ensure-6x patch (rhbz#2115476)
|
|
||||||
|
|
||||||
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-24
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jul 18 2022 Jerry James <loganjerry@gmail.com> - 2.49.93-23
|
|
||||||
- Reduce the impact of the -no-inline patch
|
|
||||||
|
|
||||||
* Thu Feb 3 2022 Jerry James <loganjerry@gmail.com> - 2.49.93-23
|
|
||||||
- Add -no-inline patch to workaround bz 2049371 (ppc64le segfault)
|
|
||||||
|
|
||||||
* Fri Jan 28 2022 Jerry James <loganjerry@gmail.com> - 2.49.93-23
|
|
||||||
- Add -pts-access patch to fix FTBFS
|
|
||||||
|
|
||||||
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-23
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-22
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Jul 16 2021 Jerry James <loganjerry@gmail.com> - 2.49.93-21.20210628gitde01f0f
|
|
||||||
- Update to latest git snapshot for autoconf + glib updates
|
|
||||||
- Drop upstreamed -setkey patch
|
|
||||||
- Use forge macros
|
|
||||||
- Use default HyperSpec URLs
|
|
||||||
|
|
||||||
* Thu Jun 17 2021 Jerry James <loganjerry@gmail.com> - 2.49.93-20.d9cbf22git
|
|
||||||
- Rebuild for ffcall 2.4 and multithreaded pari
|
|
||||||
|
|
||||||
* Tue May 25 2021 Florian Weimer <fweimer@redhat.com> - 2.49.93-19.d9cbf22git
|
|
||||||
- Rebuild with new binutils to fix ppc64le corruption (#1960730)
|
|
||||||
|
|
||||||
* Tue Mar 23 2021 Jerry James <loganjerry@gmail.com> - 2.49.93-18.d9cbf22git
|
|
||||||
- Update to latest git snapshot for autoconf + glib updates
|
|
||||||
- Fix broken symlinks in the full set
|
|
||||||
|
|
||||||
* Mon Feb 08 2021 Pavel Raiskup <praiskup@redhat.com> - 2.49.93-17.a9aeb80git
|
|
||||||
- rebuild for libpq ABI fix rhbz#1908268
|
|
||||||
|
|
||||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-16.a9aeb80git
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Nov 9 2020 Jerry James <loganjerry@gmail.com> - 2.49.93-15.a9aeb80git
|
|
||||||
- Update to latest git snapshot for more HyperSpec fixes
|
|
||||||
|
|
||||||
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-14.c26de78git
|
|
||||||
- Second attempt - Rebuilt for
|
|
||||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jul 27 2020 Jeff Law <law@redhat.com> - 2.49.93-13.c26de78git
|
|
||||||
- Disable LTO
|
|
||||||
|
|
||||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-12.c26de78git
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
|
||||||
|
|
||||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-11.c26de78git
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
|
||||||
|
|
||||||
* Tue Dec 17 2019 Jerry James <loganjerry@gmail.com> - 2.49.93-10.c26de78git
|
|
||||||
- Update to latest git snapshot for HyperSpec fixes
|
|
||||||
|
|
||||||
* Mon Aug 26 2019 Jerry James <loganjerry@gmail.com> - 2.49.93-9.dd40369git
|
|
||||||
- Update to latest git snapshot for bug fixes
|
|
||||||
- Add latest German translation
|
|
||||||
|
|
||||||
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-8.df3b9f6git
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sat Mar 30 2019 Jerry James <loganjerry@gmail.com> - 2.49.93-7.df3b9f6git
|
|
||||||
- Update to latest git snapshot for bug fixes
|
|
||||||
- Add -register-volatile patch
|
|
||||||
- Build for s390x again now that bz 1689769 is fixed
|
|
||||||
|
|
||||||
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.49.93-6.90b3631git
|
|
||||||
- Rebuild for readline 8.0
|
|
||||||
|
|
||||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-5.90b3631git
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jan 14 2019 Björn Esser <besser82@fedoraproject.org> - 2.49.93-4.90b3631git
|
|
||||||
- Rebuilt for libcrypt.so.2 (#1666033)
|
|
||||||
|
|
||||||
* Fri Aug 10 2018 Jerry James <loganjerry@gmail.com> - 2.49.93-3.90b3631git
|
|
||||||
- Update to latest git snapshot for bug fixes
|
|
||||||
|
|
||||||
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.49.93-2.d1310adgit
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu Jun 21 2018 Jerry James <loganjerry@gmail.com> - 2.49.93-1.d1310adgit
|
|
||||||
- License change: GPLv2 to GPLv2+
|
|
||||||
- Build with readline 6 due to the new license
|
|
||||||
- Drop upstreamed -arm, -libsvm, -alias, and -linux patches
|
|
||||||
- Build for all architectures
|
|
||||||
- Bring back the pari module
|
|
||||||
|
|
||||||
* Mon Feb 26 2018 Tom Callaway <spot@fedoraproject.org> - 2.49.93-0.1.20180224hg
|
|
||||||
- update to latest in mercurial (lots of fixes)
|
|
||||||
- re-enable ppc64, aarch64
|
|
||||||
- disable s390x (builds, but does not run properly)
|
|
||||||
|
|
||||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.49-27.20170224hg
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sun Jan 21 2018 Björn Esser <besser82@fedoraproject.org> - 2.49-26.20170224hg
|
|
||||||
- Explicitly BR: ffcall-devel and configure --with-ffcall
|
|
||||||
|
|
||||||
* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 2.49-25.20170224hg
|
|
||||||
- Rebuilt for switch to libxcrypt
|
|
||||||
|
|
||||||
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.49-24.20170224hg
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.49-23.20170224hg
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Feb 24 2017 Jerry James <loganjerry@gmail.com> - 2.49-22.20170224hg
|
|
||||||
- Update to latest mercurial snapshot
|
|
||||||
- Drop upstreamed -32bit patch
|
|
||||||
- Add -volatile, -negshift, and -alias patches
|
|
||||||
|
|
||||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.49-22.20161113hg
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sat Jan 28 2017 Jerry James <loganjerry@gmail.com> - 2.49-21.20161113hg
|
|
||||||
- Update to latest mercurial snapshot
|
|
||||||
|
|
||||||
* Fri Nov 11 2016 Jerry James <loganjerry@gmail.com> - 2.49-20.20161111hg
|
|
||||||
- Update to latest mercurial snapshot (bz 1392563)
|
|
||||||
- Drop upstreamed -gcc5 patch
|
|
||||||
- Rebase all other patches
|
|
||||||
- Update config.guess and config.sub
|
|
||||||
|
|
||||||
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.49-19.20130208hg
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
|
||||||
|
|
||||||
* Tue Sep 29 2015 Jerry James <loganjerry@gmail.com> - 2.49-18.20130208hg
|
|
||||||
- Install the full link set
|
|
||||||
- Fix installed Makefile paths
|
|
||||||
- Fix clx manual permissions
|
|
||||||
|
|
||||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.49-17.20130208hg
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Apr 3 2015 Jerry James <loganjerry@gmail.com> - 2.49-16.20130208hg
|
|
||||||
- Fix modules that need access to symbols in libgnu.a
|
|
||||||
|
|
||||||
* Wed Feb 11 2015 Jerry James <loganjerry@gmail.com> - 2.49-15.20130208hg
|
|
||||||
- Add -gcc5 patch to fix 32-bit build with gcc 5.0
|
|
||||||
- Use license macro
|
|
||||||
|
|
||||||
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.49-14.20130208hg
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.49-13.20130208hg
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Aug 30 2013 Jerry James <loganjerry@gmail.com> - 2.49-11.20130208hg
|
|
||||||
- clisp does not support aarch64 (bz 925155)
|
|
||||||
- Adapt to versionless docdir (bz 992605 and 993701)
|
|
||||||
- More stack space needed to install
|
|
||||||
|
|
||||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.49-11.20130208hg
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Jul 17 2013 Petr Pisar <ppisar@redhat.com> - 2.49-10.20130208hg
|
|
||||||
- Perl 5.18 rebuild
|
|
||||||
|
|
||||||
* Mon Feb 18 2013 Jerry James <loganjerry@gmail.com> - 2.49-9.20130208hg
|
|
||||||
- Update to mercurial snapshot to fix FTBFS
|
|
||||||
- Drop upstreamed -hostname patch
|
|
||||||
- Build against libdb instead of libdb4
|
|
||||||
- Include the CLX manual in the -devel documentation
|
|
||||||
- Compile the Emacs Lisp interface
|
|
||||||
- Build the asdf module
|
|
||||||
|
|
||||||
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.49-9
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Jul 25 2012 Jerry James <loganjerry@gmail.com> - 2.49-8
|
* Wed Jul 25 2012 Jerry James <loganjerry@gmail.com> - 2.49-8
|
||||||
- Fix build for new libdb4-devel package.
|
- Fix build for new libdb4-devel package.
|
||||||
- Fix ARM assembly (bz 812928)
|
- Fix ARM assembly (bz 812928)
|
||||||
|
|
|
||||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
||||||
SHA512 (clisp-f66220939ea7d36fd085384afa4a0ec44597d499.tar.bz2) = 16d6ccba500d60fe36c20b5bd1d6c9403567996020cef406e42813a302a86d94dc0d5e36aae434b5b846d39ec37d6db2b50565a69d24291b973724bcc0874bd0
|
1962b99d5e530390ec3829236d168649 clisp-2.49.tar.bz2
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue