Compare commits
72 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24dca17a22 | ||
|
|
f1acbe9371 | ||
|
|
2f58da3a26 | ||
|
|
28d75acd55 | ||
|
|
3f3e034be0 | ||
|
|
00ea9b0d97 | ||
|
|
7bf88cd6af | ||
|
|
ff5c8f0ebb | ||
|
|
885c36453f | ||
|
|
8e77a6688a | ||
|
|
debdecc984 | ||
|
|
3d02564e31 | ||
|
|
6afa4a56b7 | ||
|
|
0acf606978 | ||
|
|
dbb1df508f | ||
|
|
758dd9dc0d | ||
|
|
5c268b6f08 | ||
|
|
6816da647d | ||
|
|
0fb0f9b958 | ||
|
|
2cefbcd7f9 | ||
|
|
7ab9a4127e | ||
|
|
47b4c52ea8 | ||
|
|
d8d6fcacdb | ||
|
|
cfdd27206e | ||
|
|
5ed3b44cd5 | ||
|
|
bc7fe11f4c | ||
|
|
fee89f7955 | ||
|
|
4be1418d14 | ||
|
|
bf061dddcc | ||
|
|
7d5ddf7eb7 | ||
|
|
ac57db4226 | ||
|
|
1bfa025e15 | ||
|
|
8e4e9cd80c | ||
|
|
9ccff9cb0b | ||
|
|
8469c0bd9b | ||
|
|
0818325a5a | ||
|
|
1f88aa4a0e | ||
|
|
7cecc3c028 | ||
|
|
94e796d993 | ||
|
|
357878948a | ||
|
|
5224d940d5 | ||
|
|
9c5434c0ab | ||
|
|
5d3d4499e5 | ||
|
|
5731df002e | ||
|
|
cf0fa58cb2 | ||
|
|
bc6259f867 | ||
|
|
6163f752d5 | ||
|
|
26951c4fcb | ||
|
|
46374e59e3 | ||
|
|
e63db6f033 | ||
|
|
65cf1984f0 | ||
|
|
31fe7825e0 | ||
|
|
f325317a51 | ||
|
|
dfe2fbb538 | ||
|
|
19482ea111 | ||
|
|
07a6d9ec05 | ||
|
|
d6b71b20fa | ||
|
|
68a7e85515 |
||
|
|
a78c97a474 | ||
|
|
b6a58ab3cc | ||
|
|
055c69a6a6 | ||
|
|
c97190edda | ||
|
|
54affefff4 | ||
|
|
38141c9c4c | ||
|
|
6043f8d9a2 | ||
|
|
282d9a6152 | ||
|
|
77ac087822 |
||
|
|
a6fedd8319 | ||
|
|
ec8c60950f |
||
|
|
09c188d53b | ||
|
|
327926a5a5 | ||
|
|
b28e2f5095 |
26 changed files with 20551 additions and 1627 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -1,4 +1,2 @@
|
||||||
/clisp-2.49-20130208hg.tar.bz2
|
/clisp-*.tar.?z
|
||||||
/clisp-2.49-20161111hg.tar.xz
|
/clisp-*.tar.bz2
|
||||||
/clisp-2.49-20161113hg.tar.xz
|
|
||||||
/clisp-2.49-20170224hg.tar.xz
|
|
||||||
|
|
|
||||||
22
README.md
Normal file
22
README.md
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# 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
Normal file
136
clhs.el
Normal file
|
|
@ -0,0 +1,136 @@
|
||||||
|
;;; 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
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
--- src/record.d.orig 2017-02-24 10:42:57.482011489 -0700
|
|
||||||
+++ src/record.d 2017-02-24 10:52:21.862184109 -0700
|
|
||||||
@@ -1540,7 +1540,7 @@ global maygc object update_instance (obj
|
|
||||||
ptr->inst_class_version = obj;
|
|
||||||
clr_break_sem_1(); /* permit interrupts again */
|
|
||||||
}
|
|
||||||
- ASSERT(Record_flags(STACK_(2+4+2*kept_slots)) & instflags_forwarded_B);
|
|
||||||
+ ASSERT(record_flags(TheInstance(STACK_(2+4+2*kept_slots))) & instflags_forwarded_B);
|
|
||||||
dotimesL(kept_slots,kept_slots, {
|
|
||||||
var object new_slotinfo = popSTACK();
|
|
||||||
ASSERT(atomp(new_slotinfo));
|
|
||||||
856
clisp-arm.patch
856
clisp-arm.patch
|
|
@ -1,856 +0,0 @@
|
||||||
--- src/ariarm.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/ariarm.d 2017-02-24 10:41:46.898615218 -0700
|
|
||||||
@@ -86,7 +86,7 @@ pc .req r15
|
|
||||||
|
|
||||||
#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 @@ GLABEL(mulu32_)
|
|
||||||
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 @@ GLABEL(divu_3216_1616_)
|
|
||||||
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 @@ GLABEL(divu_6432_3232_)
|
|
||||||
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 @@ LABEL(divu_6432_3232_l1)
|
|
||||||
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 @@ GLABEL(copy_loop_up)
|
|
||||||
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 @@ LABEL(copy_loop_up_l2)
|
|
||||||
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 @@ GLABEL(copy_loop_down)
|
|
||||||
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 @@ LABEL(copy_loop_down_l2)
|
|
||||||
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 @@ GLABEL(fill_loop_up)
|
|
||||||
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 @@ LABEL(fill_loop_up_l2)
|
|
||||||
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 @@ GLABEL(fill_loop_down)
|
|
||||||
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 @@ LABEL(fill_loop_down_l2)
|
|
||||||
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 @@ GLABEL(or_loop_up)
|
|
||||||
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 @@ LABEL(or_loop_up_l2)
|
|
||||||
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 @@ GLABEL(xor_loop_up)
|
|
||||||
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 @@ LABEL(xor_loop_up_l2)
|
|
||||||
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 @@ GLABEL(and_loop_up)
|
|
||||||
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 @@ LABEL(and_loop_up_l2)
|
|
||||||
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 @@ GLABEL(eqv_loop_up)
|
|
||||||
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 @@ LABEL(eqv_loop_up_l2)
|
|
||||||
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 @@ GLABEL(nand_loop_up)
|
|
||||||
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 @@ LABEL(nand_loop_up_l2)
|
|
||||||
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 @@ GLABEL(nor_loop_up)
|
|
||||||
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 @@ LABEL(nor_loop_up_l2)
|
|
||||||
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 @@ GLABEL(andc2_loop_up)
|
|
||||||
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 @@ LABEL(andc2_loop_up_l2)
|
|
||||||
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 @@ GLABEL(orc2_loop_up)
|
|
||||||
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 @@ LABEL(orc2_loop_up_l2)
|
|
||||||
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 @@ GLABEL(not_loop_up)
|
|
||||||
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 @@ LABEL(not_loop_up_l2)
|
|
||||||
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 @@ GLABEL(and_test_loop_up)
|
|
||||||
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 @@ GLABEL(and_test_loop_up)
|
|
||||||
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 @@ LABEL(and_test_loop_up_l2)
|
|
||||||
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 @@ GLABEL(test_loop_up)
|
|
||||||
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 @@ LABEL(test_loop_up_l2)
|
|
||||||
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 @@ GLABEL(compare_loop_up)
|
|
||||||
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 @@ GLABEL(compare_loop_up)
|
|
||||||
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 @@ GLABEL(compare_loop_up)
|
|
||||||
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 @@ LABEL(compare_loop_up_l2)
|
|
||||||
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 @@ LABEL(add_loop_down_l0) /* at l
|
|
||||||
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 @@ LABEL(add_loop_down_l2)
|
|
||||||
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 @@ GLABEL(inc_loop_down)
|
|
||||||
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 @@ LABEL(inc_loop_down_l1)
|
|
||||||
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 @@ LABEL(inc_loop_down_l2)
|
|
||||||
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 @@ GLABEL(sub_loop_down)
|
|
||||||
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_l0)
|
|
||||||
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 @@ LABEL(sub_loop_down_l2)
|
|
||||||
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_lsub)
|
|
||||||
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_l0)
|
|
||||||
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 @@ LABEL(subx_loop_down_l2)
|
|
||||||
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 @@ GLABEL(subfrom_loop_down)
|
|
||||||
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_l0)
|
|
||||||
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 @@ LABEL(subfrom_loop_down_l2)
|
|
||||||
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 @@ GLABEL(dec_loop_down)
|
|
||||||
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 @@ LABEL(dec_loop_down_l1)
|
|
||||||
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 @@ LABEL(dec_loop_down_l2)
|
|
||||||
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 @@ LABEL(dec_loop_down_l2)
|
|
||||||
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 @@ LABEL(neg_loop_down_l1) /* skip
|
|
||||||
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_l2)
|
|
||||||
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 @@ LABEL(neg_loop_down_l4)
|
|
||||||
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 @@ GLABEL(shift1left_loop_down)
|
|
||||||
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 @@ LABEL(shift1left_loop_down_l1)
|
|
||||||
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 @@ LABEL(shift1left_loop_down_l2)
|
|
||||||
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 @@ GLABEL(shiftleft_loop_down)
|
|
||||||
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 @@ LABEL(shiftleft_loop_down_l2)
|
|
||||||
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 @@ GLABEL(shiftleftcopy_loop_down)
|
|
||||||
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 @@ LABEL(shiftleftcopy_loop_down_l2)
|
|
||||||
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 @@ GLABEL(shift1right_loop_up)
|
|
||||||
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 @@ LABEL(shift1right_loop_up_l1)
|
|
||||||
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 @@ LABEL(shift1right_loop_up_l2)
|
|
||||||
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_l0)
|
|
||||||
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 @@ LABEL(shiftright_loop_up_l2)
|
|
||||||
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_l0)
|
|
||||||
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 @@ LABEL(shiftrightcopy_loop_up_l2)
|
|
||||||
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 @@ LABEL(mulu32_64_vregs)
|
|
||||||
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 @@ LABEL(mulu32_64_vregs)
|
|
||||||
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 @@ LABEL(mulusmall_loop_down_l1)
|
|
||||||
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 @@ LABEL(mulusmall_loop_down_l1)
|
|
||||||
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 @@ LABEL(mulu_loop_down_l1)
|
|
||||||
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 @@ LABEL(mulu_loop_down_l1)
|
|
||||||
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 @@ LABEL(muluadd_loop_down_l1)
|
|
||||||
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 @@ LABEL(muluadd_loop_down_l1)
|
|
||||||
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 @@ LABEL(mulusub_loop_down_l1)
|
|
||||||
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 @@ LABEL(mulusub_loop_down_l1)
|
|
||||||
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,22 +0,0 @@
|
||||||
--- modules/berkeley-db/configure.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ modules/berkeley-db/configure 2017-02-24 10:42:31.636232558 -0700
|
|
||||||
@@ -5297,7 +5297,7 @@ if ${ac_cv_dbe_set_errcall_accept_dbe+:}
|
|
||||||
else
|
|
||||||
|
|
||||||
CFLAGS_save="$CFLAGS"
|
|
||||||
-CFLAGS="$CFLAGS -Werror"
|
|
||||||
+CFLAGS="$CFLAGS -Wno-uninitialized -Werror"
|
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
/* end confdefs.h. */
|
|
||||||
#include <db.h>
|
|
||||||
--- modules/berkeley-db/configure.in.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ modules/berkeley-db/configure.in 2017-02-24 10:42:31.636232558 -0700
|
|
||||||
@@ -48,7 +48,7 @@ dnl <http://www.sleepycat.com/docs/ref/u
|
|
||||||
AC_CACHE_CHECK([whether DB_ENV->set_errcall() accepts DBE],
|
|
||||||
ac_cv_dbe_set_errcall_accept_dbe,[
|
|
||||||
CFLAGS_save="$CFLAGS"
|
|
||||||
-CFLAGS="$CFLAGS -Werror"
|
|
||||||
+CFLAGS="$CFLAGS -Wno-uninitialized -Werror"
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <db.h>
|
|
||||||
void my_callback (const DB_ENV* dbe, const char *errpfx, const char *msg) {}],
|
|
||||||
[[DB_ENV dbe; dbe.set_errcall(&dbe,&my_callback);]])],
|
|
||||||
10
clisp-encoding-leak.patch
Normal file
10
clisp-encoding-leak.patch
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
--- 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,145 +1,33 @@
|
||||||
--- src/errunix.d.orig 2017-02-24 10:37:24.000000000 -0700
|
--- src/spvw_fault.d.orig 2017-10-08 11:45:53.000000000 -0600
|
||||||
+++ src/errunix.d 2017-02-24 10:41:33.217732236 -0700
|
+++ src/spvw_fault.d 2018-02-18 12:41:32.934240135 -0700
|
||||||
@@ -94,7 +94,7 @@ global _Noreturn void OS_error_arg (obje
|
@@ -289,7 +289,7 @@ modexp bool handle_fault_range (int prot
|
||||||
> FILE: Filename (with quotation marks) as constant ASCIZ-String
|
|
||||||
> LINE: line number */
|
local void xmprotect (aint addr, uintM len, int prot) {
|
||||||
global void errno_out_low (int errorcode, const char* file, uintL line) {
|
if (mprotect((void*)addr,len,prot) < 0) {
|
||||||
- fprintf(stderr,"\n[%s:%d] errno = %d", file, line, errorcode);
|
- fprintf(stderr,GETTEXTL("mprotect(0x%lx,%d,%d) failed."),addr,len,prot);
|
||||||
+ fprintf(stderr,"\n[%s:%" PRIul "] errno = %d", file, line, errorcode);
|
+ fprintf(stderr,GETTEXTL("mprotect(0x%lx,%lu,%d) failed."),addr,(unsigned long)len,prot);
|
||||||
var object code = ANSIC_error_code_converter(errorcode);
|
errno_out(OS_errno);
|
||||||
if (symbolp(code)) { /* known name? */
|
abort();
|
||||||
fputs(" (",stderr);
|
}
|
||||||
--- src/lispbibl.d.orig 2017-02-24 10:37:24.000000000 -0700
|
--- src/spvw_language.d.orig 2017-05-25 09:49:04.000000000 -0600
|
||||||
+++ src/lispbibl.d 2017-02-24 10:41:33.223732185 -0700
|
+++ src/spvw_language.d 2018-02-18 12:41:32.934240135 -0700
|
||||||
@@ -1013,7 +1013,7 @@
|
@@ -172,7 +172,7 @@ global void init_language
|
||||||
#endif
|
{ /* Invalidate the gettext internal caches. */
|
||||||
typedef unsigned char UBYTE;
|
char *td = textdomain(NULL);
|
||||||
#else
|
if (NULL == td) {
|
||||||
- #error No 8 bit integer type? -- Which Interger-type has 8 Bit?
|
- ANSIC_ERROR("textdomain",NULL);
|
||||||
+ #error No 8 bit integer type? -- Which Integer-type has 8 Bit?
|
+ ANSIC_ERROR("textdomain","");
|
||||||
#endif
|
}
|
||||||
#if (short_bitsize==16)
|
if (NULL == textdomain(td)) {
|
||||||
typedef short SWORD;
|
ANSIC_ERROR("textdomain",td);
|
||||||
@@ -1024,26 +1024,36 @@
|
--- src/spvw_sigsegv.d.orig 2018-01-09 16:04:26.000000000 -0700
|
||||||
#if (long_bitsize==32)
|
+++ src/spvw_sigsegv.d 2018-03-03 13:52:32.985798284 -0700
|
||||||
typedef long SLONG;
|
@@ -62,7 +62,7 @@ local void print_mem_stats (void) {
|
||||||
typedef unsigned long ULONG;
|
/* Put a breakpoint here if you want to catch CLISP just before it dies. */
|
||||||
+ #define PRIsl "ld"
|
global void sigsegv_handler_failed (void* address) {
|
||||||
+ #define PRIul "lu"
|
fprint(stderr,"\n");
|
||||||
#elif (int_bitsize==32)
|
- fprintf(stderr,GETTEXTL("SIGSEGV cannot be cured. Fault address = 0x%lx."),
|
||||||
typedef int SLONG;
|
+ fprintf(stderr,GETTEXTL("SIGSEGV cannot be cured. Fault address = %p."),
|
||||||
typedef unsigned int ULONG;
|
address);
|
||||||
+ #define PRIsl "d"
|
fprint(stderr,"\n");
|
||||||
+ #define PRIul "u"
|
print_mem_stats();
|
||||||
#else
|
|
||||||
#error No 32 bit integer type? -- Which Integer-type has 32 Bit?
|
|
||||||
#endif
|
|
||||||
#if (long_bitsize==64) && !defined(UNIX_CYGWIN32)
|
|
||||||
typedef long SLONGLONG;
|
|
||||||
typedef unsigned long ULONGLONG;
|
|
||||||
+ #define PRIsll "ld"
|
|
||||||
+ #define PRIull "lu"
|
|
||||||
#ifndef HAVE_LONG_LONG_INT
|
|
||||||
#define HAVE_LONG_LONG_INT
|
|
||||||
#endif
|
|
||||||
#elif defined(MICROSOFT)
|
|
||||||
typedef __int64 SLONGLONG;
|
|
||||||
typedef unsigned __int64 ULONGLONG;
|
|
||||||
+ #define PRIsll "I64d"
|
|
||||||
+ #define PRIull "I64u"
|
|
||||||
#define HAVE_LONG_LONG_INT
|
|
||||||
#elif defined(HAVE_LONG_LONG_INT)
|
|
||||||
#if defined(long_long_bitsize) && (long_long_bitsize==64)
|
|
||||||
typedef long long SLONGLONG;
|
|
||||||
typedef unsigned long long ULONGLONG;
|
|
||||||
+ #define PRIsll "lld"
|
|
||||||
+ #define PRIull "llu"
|
|
||||||
#else /* useless type */
|
|
||||||
#undef HAVE_LONG_LONG_INT
|
|
||||||
#endif
|
|
||||||
@@ -1685,10 +1695,14 @@ typedef unsigned_int_with_n_bits(intBWLs
|
|
||||||
#if (intCsize==intWsize)
|
|
||||||
#define dotimesC dotimesW
|
|
||||||
#define dotimespC dotimespW
|
|
||||||
+ #define PRIuintC "hu"
|
|
||||||
+ #define PRIsintC "hd"
|
|
||||||
#endif
|
|
||||||
#if (intCsize==intLsize)
|
|
||||||
#define dotimesC dotimesL
|
|
||||||
#define dotimespC dotimespL
|
|
||||||
+ #define PRIuintC PRIul
|
|
||||||
+ #define PRIsintC PRIsl
|
|
||||||
#endif
|
|
||||||
/* Use 'uintC' for counters, which are small most of the time. */
|
|
||||||
%% export_def(uintC);
|
|
||||||
--- src/spvw_debug.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/spvw_debug.d 2017-02-24 10:41:33.224732176 -0700
|
|
||||||
@@ -81,7 +81,7 @@ local void nobject_out1 (FILE* out, obje
|
|
||||||
fputc('"',out);
|
|
||||||
} else if (charp(obj)) {
|
|
||||||
object name = char_name(char_code(obj));
|
|
||||||
- fprintf(out,"[%c]",as_cint(char_code(obj)));
|
|
||||||
+ fprintf(out,"[%c]",(int)as_cint(char_code(obj)));
|
|
||||||
if (!nullp(name)) {
|
|
||||||
fputs("=#\\",out);
|
|
||||||
string_out(out,name);
|
|
||||||
@@ -120,8 +120,8 @@ local void nobject_out1 (FILE* out, obje
|
|
||||||
fputc(')',out);
|
|
||||||
} else if (arrayp(obj)) {
|
|
||||||
fprintf(out,"#<array %d",Array_type(obj));
|
|
||||||
- if (mdarrayp(obj)) fprintf(out," rank=%d",Iarray_rank(obj));
|
|
||||||
- else fprintf(out," len=%d",vector_length(obj));
|
|
||||||
+ if (mdarrayp(obj)) fprintf(out," rank=%" PRIul,Iarray_rank(obj));
|
|
||||||
+ else fprintf(out," len=%" PRIul,vector_length(obj));
|
|
||||||
fprintf(out," 0x%lx>",as_oint(obj));
|
|
||||||
} else if (functionp(obj)) {
|
|
||||||
fputs("#<",out);
|
|
||||||
@@ -182,7 +182,7 @@ local void nobject_out1 (FILE* out, obje
|
|
||||||
fputc(')',out);
|
|
||||||
} else if (hash_table_p(obj)) {
|
|
||||||
fputs("#(",out); XOUT(S(hash_table));
|
|
||||||
- fprintf(out," size=%u maxcount=%u mincount=%u\n",
|
|
||||||
+ fprintf(out," size=%" PRIul " maxcount=%" PRIul " mincount=%" PRIul "\n",
|
|
||||||
TheHashtable(obj)->ht_size,
|
|
||||||
(uintL)posfixnum_to_V(TheHashtable(obj)->ht_maxcount),
|
|
||||||
(uintL)posfixnum_to_V(TheHashtable(obj)->ht_mincount));
|
|
||||||
@@ -281,10 +281,10 @@ local void nobject_out1 (FILE* out, obje
|
|
||||||
case DRIVER_frame_info: fputs("DRIVER",out); break;
|
|
||||||
default: fputs("**UNKNOWN**",out);
|
|
||||||
}
|
|
||||||
- fprintf(out," %d>",STACK_item_count(uTheFramepointer(obj),
|
|
||||||
+ fprintf(out," %" PRIul ">",STACK_item_count(uTheFramepointer(obj),
|
|
||||||
(gcv_object_t*)STACK_start));
|
|
||||||
} else if (builtin_stream_p(obj)) {
|
|
||||||
- fprintf(out,"#<built-in-stream type=%d flags=%d len=%d xlen=%d slen=%ld",
|
|
||||||
+ fprintf(out,"#<built-in-stream type=%d flags=%d len=%" PRIul " xlen=%" PRIul " slen=%zd",
|
|
||||||
TheStream(obj)->strmtype,TheStream(obj)->strmflags,
|
|
||||||
Stream_length(obj),Stream_xlength(obj),strm_len);
|
|
||||||
switch (TheStream(obj)->strmtype) {
|
|
||||||
@@ -358,13 +358,13 @@ local int back_trace_depth (const struct
|
|
||||||
/* print a single struct backtrace_t object
|
|
||||||
the caller must do begin_system_call()/end_system_call() ! */
|
|
||||||
local void bt_out (FILE* out, const struct backtrace_t *bt, uintL bt_index) {
|
|
||||||
- fprintf(out,"[%d/0x%lx]%s ",bt_index,(uintP)bt,
|
|
||||||
+ fprintf(out,"[%" PRIul "/0x%lx]%s ",bt_index,(uintP)bt,
|
|
||||||
bt_beyond_stack_p(bt,STACK)?"<":">");
|
|
||||||
nobject_out(out,bt->bt_function);
|
|
||||||
if (bt->bt_num_arg >= 0)
|
|
||||||
fprintf(out," %d args",bt->bt_num_arg);
|
|
||||||
if (bt->bt_next)
|
|
||||||
- fprintf(out," delta: STACK=%ud; SP=%ld",
|
|
||||||
+ fprintf(out," delta: STACK=%" PRIul "; SP=%lu",
|
|
||||||
STACK_item_count(top_of_back_trace_frame(bt),
|
|
||||||
top_of_back_trace_frame(bt->bt_next)),
|
|
||||||
(((long)((char*)(bt->bt_next) - (char*)bt) ^ SPoffset) - SPoffset)
|
|
||||||
--- src/spvw_memfile.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/spvw_memfile.d 2017-02-24 10:41:33.225732167 -0700
|
|
||||||
@@ -1817,7 +1817,7 @@ local void loadmem_from_handle (Handle h
|
|
||||||
(uintL)posfixnum_to_V(header._dumptime.seconds));
|
|
||||||
#endif
|
|
||||||
char memdumptime[10+1];
|
|
||||||
- sprintf(memdumptime,"%u",header._dumptime);
|
|
||||||
+ sprintf(memdumptime,"%" PRIul,header._dumptime);
|
|
||||||
O(memory_image_timestamp) = ascii_to_string(memdumptime);
|
|
||||||
O(memory_image_host) = asciz_to_string(header._dumphost,
|
|
||||||
Symbol_value(S(utf_8)));
|
|
||||||
|
|
|
||||||
38
clisp-iconv-close.patch
Normal file
38
clisp-iconv-close.patch
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
--- 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);
|
||||||
|
}
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
--- modules/libsvm/libsvm.lisp.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ modules/libsvm/libsvm.lisp 2017-02-24 10:42:20.857324755 -0700
|
|
||||||
@@ -31,7 +31,7 @@
|
|
||||||
(c-lines "
|
|
||||||
#if !defined(HAVE_SVM_DESTROY_MODEL)
|
|
||||||
# if defined(HAVE_SVM_FREE_AND_DESTROY_MODEL)
|
|
||||||
-void svm_destroy_model (svm_model *model){ svm_free_and_destroy_model(&model); }
|
|
||||||
+void svm_destroy_model (struct svm_model *model){ svm_free_and_destroy_model(&model); }
|
|
||||||
# else
|
|
||||||
# error No svm_destroy_model and no svm_free_and_destroy_model!
|
|
||||||
# endif
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
--- modules/bindings/glibc/linux.lisp.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ modules/bindings/glibc/linux.lisp 2017-02-24 10:42:45.491114052 -0700
|
|
||||||
@@ -294,6 +294,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,121 +0,0 @@
|
||||||
--- src/aridecl.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/aridecl.d 2017-02-24 10:43:07.072929454 -0700
|
|
||||||
@@ -163,9 +163,9 @@
|
|
||||||
/* Creates a single float from sign (0 or -1), exponent and mantissa: */
|
|
||||||
#define make_FF(sign,exp,mant) \
|
|
||||||
type_data_object(FF_type | (bit(vorz_bit_t) & (sign)), \
|
|
||||||
- (ffloat)((sign) << (FF_exp_len+FF_mant_len) \
|
|
||||||
- | (((exp) & (bit(FF_exp_len)-1)) << FF_mant_len) \
|
|
||||||
- | ((mant) & (bit(FF_mant_len)-1))))
|
|
||||||
+ (ffloat)(((unsigned int)(sign)) << (FF_exp_len+FF_mant_len) \
|
|
||||||
+ | ((((unsigned int)exp) & (bit(FF_exp_len)-1)) << FF_mant_len) \
|
|
||||||
+ | (((unsigned int)mant) & (bit(FF_mant_len)-1))))
|
|
||||||
/* Single Float 0.0 : */
|
|
||||||
#define FF_0 make_FF(0,0,0)
|
|
||||||
/* Single Float 1.0 : */
|
|
||||||
--- src/lispbibl.d.orig 2017-02-24 10:42:57.481011497 -0700
|
|
||||||
+++ src/lispbibl.d 2017-02-24 10:43:07.078929402 -0700
|
|
||||||
@@ -1203,9 +1203,9 @@ typedef signed int signean;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
/* Minus bit number n (0<=n<32) */
|
|
||||||
-#define minus_bit(n) (-1L<<(n))
|
|
||||||
+#define minus_bit(n) ((long)(((unsigned long)-1L)<<(n)))
|
|
||||||
/* Minus bit number n (0<n<=32) mod 2^32 */
|
|
||||||
-#define minus_bitm(n) (-2L<<((n)-1))
|
|
||||||
+#define minus_bitm(n) ((long)(((unsigned long)-2L)<<((n)-1)))
|
|
||||||
%% export_def(bit(n));
|
|
||||||
%% #if notused
|
|
||||||
%% export_def(bitm(n));
|
|
||||||
@@ -3029,7 +3029,7 @@ typedef signed_int_with_n_bits(intVsize)
|
|
||||||
#define vbit(n) (LL(1)<<(n))
|
|
||||||
#define vbitm(n) (LL(2)<<((n)-1))
|
|
||||||
#define vbit_test(x,n) ((x) & vbit(n))
|
|
||||||
- #define minus_vbit(n) (-LL(1)<<(n))
|
|
||||||
+ #define minus_vbit(n) ((long long)(((unsigned long long)-LL(1))<<(n)))
|
|
||||||
#else
|
|
||||||
#define vbit bit
|
|
||||||
#define vbitm bitm
|
|
||||||
@@ -5363,7 +5363,7 @@ typedef unsigned_int_with_n_bits(char_in
|
|
||||||
> delta: a constant
|
|
||||||
< result: incremented fixnum */
|
|
||||||
#define fixnum_inc(obj,delta) \
|
|
||||||
- objectplus(obj, (soint)(delta) << oint_data_shift)
|
|
||||||
+ objectplus(obj, (oint)(delta) << oint_data_shift)
|
|
||||||
%% export_def(fixnum_inc(obj,delta));
|
|
||||||
|
|
||||||
/* posfixnum(x) is a fixnum with value x>=0. */
|
|
||||||
--- src/spvw_gcmark.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/spvw_gcmark.d 2017-02-24 10:43:07.078929402 -0700
|
|
||||||
@@ -43,7 +43,7 @@ local void gc_mark (object obj)
|
|
||||||
goto down; /* and descent */ \
|
|
||||||
}
|
|
||||||
#define up_varobject(first_offset) \
|
|
||||||
- { curr = objectplus(pred,-(soint)(first_offset)<<(oint_addr_shift-addr_shift)); /* becomes current object */ \
|
|
||||||
+ { curr = objectplus(pred,((oint)-(soint)(first_offset))<<(oint_addr_shift-addr_shift)); /* becomes current object */ \
|
|
||||||
pred = prepred; goto up; /* go further up */ \
|
|
||||||
}
|
|
||||||
#define down_nopointers(The) \
|
|
||||||
@@ -68,7 +68,7 @@ local void gc_mark (object obj)
|
|
||||||
goto down; /* and descent */ \
|
|
||||||
}
|
|
||||||
#define up_iarray() \
|
|
||||||
- { curr = objectplus(pred,-(soint)iarray_data_offset<<(oint_addr_shift-addr_shift)); /* array becomes current object */ \
|
|
||||||
+ { curr = objectplus(pred,((oint)-(soint)iarray_data_offset)<<(oint_addr_shift-addr_shift)); /* array becomes current object */ \
|
|
||||||
pred = prepred; goto up; /* go further up */ \
|
|
||||||
}
|
|
||||||
#define down_sistring() \
|
|
||||||
@@ -88,7 +88,7 @@ local void gc_mark (object obj)
|
|
||||||
goto down; /* and descent */ \
|
|
||||||
}
|
|
||||||
#define up_sistring() \
|
|
||||||
- { curr = objectplus(pred,-(soint)sistring_data_offset<<(oint_addr_shift-addr_shift)); /* array becomes current object */ \
|
|
||||||
+ { curr = objectplus(pred,((oint)-(soint)sistring_data_offset)<<(oint_addr_shift-addr_shift)); /* array becomes current object */ \
|
|
||||||
pred = prepred; goto up; /* go further up */ \
|
|
||||||
}
|
|
||||||
#define down_svector() \
|
|
||||||
@@ -114,7 +114,7 @@ local void gc_mark (object obj)
|
|
||||||
goto down; /* and descent */ \
|
|
||||||
}}
|
|
||||||
#define up_svector() \
|
|
||||||
- { curr = objectplus(pred,-(soint)offsetofa(svector_,data)<<(oint_addr_shift-addr_shift)); /* Svector becomes current object */ \
|
|
||||||
+ { curr = objectplus(pred,((oint)-(soint)offsetofa(svector_,data))<<(oint_addr_shift-addr_shift)); /* Svector becomes current object */ \
|
|
||||||
pred = prepred; goto up; /* go further up */ \
|
|
||||||
}
|
|
||||||
#define down_lrecord() \
|
|
||||||
@@ -140,7 +140,7 @@ local void gc_mark (object obj)
|
|
||||||
goto down; /* and descent */ \
|
|
||||||
}}
|
|
||||||
#define up_lrecord() \
|
|
||||||
- { curr = objectplus(pred,-(soint)offsetofa(record_,recdata)<<(oint_addr_shift-addr_shift)); /* Lrecord becomes current object */ \
|
|
||||||
+ { curr = objectplus(pred,((oint)-(soint)offsetofa(record_,recdata))<<(oint_addr_shift-addr_shift)); /* Lrecord becomes current object */ \
|
|
||||||
pred = prepred; goto up; /* go further up */ \
|
|
||||||
}
|
|
||||||
#define down_sxrecord() \
|
|
||||||
@@ -177,7 +177,7 @@ local void gc_mark (object obj)
|
|
||||||
#define down_cclosure()
|
|
||||||
#endif
|
|
||||||
#define up_sxrecord() \
|
|
||||||
- { curr = objectplus(pred,-(soint)offsetofa(record_,recdata)<<(oint_addr_shift-addr_shift)); /* record becomes current object */ \
|
|
||||||
+ { curr = objectplus(pred,((oint)-(soint)offsetofa(record_,recdata))<<(oint_addr_shift-addr_shift)); /* record becomes current object */ \
|
|
||||||
pred = prepred; goto up; /* go further up */ \
|
|
||||||
}
|
|
||||||
#ifdef STANDARD_HEAPCODES
|
|
||||||
@@ -348,7 +348,7 @@ local void gc_mark (object obj)
|
|
||||||
curr = currently marked object, store in *pred */
|
|
||||||
var object prepred = *(gcv_object_t*)ThePointer(pred); /* old predecessor */
|
|
||||||
*(gcv_object_t*)ThePointer(pred) = curr; /* write back component */
|
|
||||||
- pred = objectplus(pred,-(soint)(sizeof(gcv_object_t))<<(oint_addr_shift-addr_shift)); /* go to next component */
|
|
||||||
+ pred = objectplus(pred,((oint)-(soint)sizeof(gcv_object_t))<<(oint_addr_shift-addr_shift)); /* go to next component */
|
|
||||||
if (marked(ThePointer(pred))) { /* already marked? */
|
|
||||||
curr = /* next component, without mark */
|
|
||||||
without_mark_bit(*(gcv_object_t*)ThePointer(pred));
|
|
||||||
@@ -383,7 +383,7 @@ local void gc_mark (object obj)
|
|
||||||
case_subr: /* SUBR */
|
|
||||||
up_sxrecord();
|
|
||||||
case_sstring: /* simple-string */
|
|
||||||
- { var object pred_ = objectplus(pred,-(soint)sistring_data_offset<<(oint_addr_shift-addr_shift));
|
|
||||||
+ { var object pred_ = objectplus(pred,((oint)-(soint)sistring_data_offset)<<(oint_addr_shift-addr_shift));
|
|
||||||
if (sstring_reallocatedp(TheSstring(pred_)))
|
|
||||||
up_sistring();
|
|
||||||
}
|
|
||||||
11
clisp-no-inline.patch
Normal file
11
clisp-no-inline.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- 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
|
||||||
18
clisp-ppc64le-alignment.patch
Normal file
18
clisp-ppc64le-alignment.patch
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
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)
|
||||||
15
clisp-pts-access.patch
Normal file
15
clisp-pts-access.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
--- 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
|
||||||
75
clisp-readline.patch
Normal file
75
clisp-readline.patch
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
--- 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)
|
||||||
11
clisp-register-volatile.patch
Normal file
11
clisp-register-volatile.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- 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
|
||||||
18
clisp-siginterrupt.patch
Normal file
18
clisp-siginterrupt.patch
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
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));
|
||||||
15
clisp-undefined-behavior-eval.patch
Normal file
15
clisp-undefined-behavior-eval.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
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_
|
||||||
15
clisp-undefined-behavior-io.patch
Normal file
15
clisp-undefined-behavior-io.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
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 */
|
||||||
23
clisp-undefined-behavior-sort.patch
Normal file
23
clisp-undefined-behavior-sort.patch
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
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;
|
||||||
|
|
@ -1,193 +0,0 @@
|
||||||
--- src/control.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/control.d 2017-02-24 10:42:57.475011548 -0700
|
|
||||||
@@ -1591,7 +1591,7 @@ LISPFUN(maplap,seclass_default,2,0,rest,
|
|
||||||
|
|
||||||
LISPSPECFORM(tagbody, 0,0,body)
|
|
||||||
{ /* (TAGBODY {tag | statement}), CLTL p. 130 */
|
|
||||||
- var object body = popSTACK();
|
|
||||||
+ var volatile object body = popSTACK();
|
|
||||||
{ /* build GENV-frame: */
|
|
||||||
var gcv_object_t* top_of_frame = STACK; /* pointer to frame */
|
|
||||||
pushSTACK(aktenv.go_env);
|
|
||||||
--- src/eval.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/eval.d 2017-02-24 10:42:57.479011514 -0700
|
|
||||||
@@ -710,10 +710,10 @@ global void throw_to (object tag) {
|
|
||||||
global maygc void invoke_handlers (object cond) {
|
|
||||||
/* Also deactivates the handler being called, and all newer handlers.
|
|
||||||
the handler-ranges, which are screened off: */
|
|
||||||
- var stack_range_t* other_ranges = inactive_handlers;
|
|
||||||
+ var stack_range_t* volatile other_ranges = inactive_handlers;
|
|
||||||
var stack_range_t new_range;
|
|
||||||
/* Search for Handler-Frame, that handles a Type with (TYPEP cond type): */
|
|
||||||
- var gcv_object_t* FRAME = STACK;
|
|
||||||
+ var gcv_object_t* volatile FRAME = STACK;
|
|
||||||
while (1) {
|
|
||||||
/* search in Stack starting at FRAME for a suitable HANDLER-Frame: */
|
|
||||||
if (!(other_ranges == NULL) && (FRAME == other_ranges->low_limit)) {
|
|
||||||
@@ -726,7 +726,7 @@ global maygc void invoke_handlers (objec
|
|
||||||
if (framecode(FRAME_(0)) == HANDLER_frame_info) { /* Handler-Frame? */
|
|
||||||
/* loop over types of the vectors #(type1 label1 ... typem labelm): */
|
|
||||||
var uintL m2 = Svector_length(Car(FRAME_(frame_handlers))); /* 2*m */
|
|
||||||
- var uintL i = 0;
|
|
||||||
+ var volatile uintL i = 0;
|
|
||||||
do {
|
|
||||||
pushSTACK(cond); /* save cond */
|
|
||||||
pushSTACK(cond);
|
|
||||||
@@ -2398,7 +2398,7 @@ local maygc void trace_call (object fun,
|
|
||||||
/* But ':ALLOW-OTHER-KEYS NIL' hides a subsequent ':ALLOW-OTHER-KEYS T' \
|
|
||||||
(see CLHS 3.4.1.4.1.1). */ \
|
|
||||||
var bool allow_hidden = false; /* true if seen ':ALLOW-OTHER-KEYS NIL' */ \
|
|
||||||
- var uintC check_count=argcount; \
|
|
||||||
+ var volatile uintC check_count=argcount; \
|
|
||||||
while (check_count--) { \
|
|
||||||
var object kw = NEXT(argptr); /* next Argument */ \
|
|
||||||
var object val = NEXT(argptr); /* and value for it */ \
|
|
||||||
@@ -2441,7 +2441,7 @@ local maygc void trace_call (object fun,
|
|
||||||
> found_statement: what is to be done, if value found */
|
|
||||||
#define find_keyword_value(notfound_statement,found_statement) \
|
|
||||||
{ var gcv_object_t* argptr = rest_args_pointer; \
|
|
||||||
- var uintC find_count; \
|
|
||||||
+ var volatile uintC find_count; \
|
|
||||||
dotimesC(find_count,argcount, { \
|
|
||||||
if (eq(NEXT(argptr),keyword)) goto kw_found; /* right keyword? */ \
|
|
||||||
argptr skipSTACKop -1; /* NEXT */ \
|
|
||||||
@@ -2460,8 +2460,9 @@ local maygc void trace_call (object fun,
|
|
||||||
< mv_count/mv_space: values
|
|
||||||
< STACK: cleaned up, = args_pointer
|
|
||||||
can trigger GC */
|
|
||||||
-local maygc Values funcall_iclosure (object closure, gcv_object_t* args_pointer,
|
|
||||||
- uintC argcount)
|
|
||||||
+local maygc Values funcall_iclosure (volatile object closure,
|
|
||||||
+ gcv_object_t* args_pointer,
|
|
||||||
+ volatile uintC argcount)
|
|
||||||
{
|
|
||||||
/* 1st step: finish building of APPLY-frame: */
|
|
||||||
var sp_jmp_buf my_jmp_buf;
|
|
||||||
@@ -2649,7 +2650,7 @@ local maygc Values funcall_iclosure (obj
|
|
||||||
pushSTACK(NIL); /* start of list */
|
|
||||||
if (argcount>0) {
|
|
||||||
var gcv_object_t* ptr = args_pointer STACKop -(uintP)argcount;
|
|
||||||
- var uintC count;
|
|
||||||
+ var volatile uintC count;
|
|
||||||
dotimespC(count,argcount, {
|
|
||||||
var object new_cons = allocate_cons();
|
|
||||||
Car(new_cons) = BEFORE(ptr);
|
|
||||||
@@ -2664,7 +2665,7 @@ local maygc Values funcall_iclosure (obj
|
|
||||||
/* process &KEY-parameters: */
|
|
||||||
if (!numberp(TheIclosure(closure)->clos_keywords)) {
|
|
||||||
/* Keyword-parameters present */
|
|
||||||
- var gcv_object_t* rest_args_pointer = args_pointer;
|
|
||||||
+ var gcv_object_t* volatile rest_args_pointer = args_pointer;
|
|
||||||
/* argcount = number of remaining arguments */
|
|
||||||
/* halve argcount --> number of pairs Key.Value: */
|
|
||||||
if (argcount%2) { /* number was odd -> not paired: */
|
|
||||||
@@ -2936,7 +2937,7 @@ local Values eval_ffunction (object fun)
|
|
||||||
> form: form
|
|
||||||
< mv_count/mv_space: values
|
|
||||||
can trigger GC */
|
|
||||||
-modexp maygc Values eval (object form)
|
|
||||||
+modexp maygc Values eval (volatile object form)
|
|
||||||
{
|
|
||||||
start:
|
|
||||||
/* Test for Keyboard-Interrupt: */
|
|
||||||
@@ -2991,7 +2992,7 @@ modexp maygc Values eval (object form)
|
|
||||||
> form: Form
|
|
||||||
< mv_count/mv_space: values
|
|
||||||
can trigger GC */
|
|
||||||
-global maygc Values eval_no_hooks (object form) {
|
|
||||||
+global maygc Values eval_no_hooks (volatile object form) {
|
|
||||||
var sp_jmp_buf my_jmp_buf;
|
|
||||||
/* build EVAL-Frame: */
|
|
||||||
{
|
|
||||||
@@ -5734,7 +5735,8 @@ local maygc Values funcall_closure (obje
|
|
||||||
#define GOTO_ERROR(label) goto label
|
|
||||||
#define DEBUG_CHECK_BYTEPTR(b) do{}while(0)
|
|
||||||
#endif
|
|
||||||
-local /*maygc*/ Values interpret_bytecode_ (object closure_in, Sbvector codeptr,
|
|
||||||
+local /*maygc*/ Values interpret_bytecode_ (volatile object closure_in,
|
|
||||||
+ volatile Sbvector codeptr,
|
|
||||||
const uintB* byteptr_in)
|
|
||||||
{
|
|
||||||
GCTRIGGER_IF(true, {
|
|
||||||
@@ -5763,7 +5765,7 @@ local /*maygc*/ Values interpret_bytecod
|
|
||||||
#endif
|
|
||||||
TRACE_CALL(closure,'B','C');
|
|
||||||
/* situate closure in STACK, below the arguments: */
|
|
||||||
- var gcv_object_t* closureptr = (pushSTACK(closure), &STACK_0);
|
|
||||||
+ var gcv_object_t* volatile closureptr = (pushSTACK(closure), &STACK_0);
|
|
||||||
#ifndef FAST_SP
|
|
||||||
/* If there is no fast SP-Access, one has to introduce
|
|
||||||
an extra pointer: */
|
|
||||||
--- src/lispbibl.d.orig 2017-02-24 10:41:33.223732185 -0700
|
|
||||||
+++ src/lispbibl.d 2017-02-24 10:42:57.481011497 -0700
|
|
||||||
@@ -9103,7 +9103,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
|
|
||||||
--- src/record.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/record.d 2017-02-24 10:42:57.482011489 -0700
|
|
||||||
@@ -1406,7 +1406,7 @@ LISPFUNNR(punbound,0) { /* not Foldable
|
|
||||||
> obj: the same CLOS instance, not a forward pointer
|
|
||||||
< result: the same CLOS instance, not a forward pointer
|
|
||||||
can trigger GC */
|
|
||||||
-global maygc object update_instance (object user_obj, object obj) {
|
|
||||||
+global maygc object update_instance (object user_obj, volatile object obj) {
|
|
||||||
/* Note about the handling of multiple consecutive class redefinitions:
|
|
||||||
When there are multiple class redefinitions before an instance gets to
|
|
||||||
be updated, we call UPDATE-INSTANCE-FOR-REDEFINED-CLASS once for each
|
|
||||||
--- src/spvw.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/spvw.d 2017-02-24 10:42:57.482011489 -0700
|
|
||||||
@@ -3466,7 +3466,7 @@ local inline void main_actions (struct a
|
|
||||||
var gcv_object_t* top_of_frame = STACK; /* pointer over frame */
|
|
||||||
var sp_jmp_buf returner; /* return point */
|
|
||||||
var const char* const* fileptr = &p->argv_init_files[0];
|
|
||||||
- var uintL count = p->argv_init_filecount;
|
|
||||||
+ var volatile uintL count = p->argv_init_filecount;
|
|
||||||
finish_entry_frame(DRIVER,returner,,goto done_driver_init_files;);
|
|
||||||
do {
|
|
||||||
pushSTACK(asciz_to_string(*fileptr++,O(misc_encoding)));
|
|
||||||
@@ -3484,8 +3484,8 @@ local inline void main_actions (struct a
|
|
||||||
if (p->argv_compile_filecount > 0) {
|
|
||||||
var gcv_object_t* top_of_frame = STACK; /* pointer over frame */
|
|
||||||
var sp_jmp_buf returner; /* return point */
|
|
||||||
- var const argv_compile_file_t* fileptr = &p->argv_compile_files[0];
|
|
||||||
- var uintL count = p->argv_compile_filecount;
|
|
||||||
+ var const argv_compile_file_t* volatile fileptr = &p->argv_compile_files[0];
|
|
||||||
+ var volatile uintL count = p->argv_compile_filecount;
|
|
||||||
finish_entry_frame(DRIVER,returner,,goto done_driver_compile_files;);
|
|
||||||
do {
|
|
||||||
var uintC argcount = 1;
|
|
||||||
--- src/stream.d.orig 2017-02-24 10:37:24.000000000 -0700
|
|
||||||
+++ src/stream.d 2017-02-24 10:42:57.484011471 -0700
|
|
||||||
@@ -5839,7 +5839,7 @@ local maygc void clear_output_unbuffered
|
|
||||||
close_ochannel(stream, abort);
|
|
||||||
> stream : Channel-Stream
|
|
||||||
> abort: flag: non-0 => ignore errors */
|
|
||||||
-local maygc void close_ochannel (object stream, uintB abort) {
|
|
||||||
+local maygc void close_ochannel (volatile object stream, uintB abort) {
|
|
||||||
pushSTACK(stream);
|
|
||||||
MAYBE_IGNORE_ERRORS(abort,oconv_unshift_output_unbuffered(stream));
|
|
||||||
stream = STACK_0;
|
|
||||||
@@ -8325,7 +8325,7 @@ local void closed_buffered (object strea
|
|
||||||
> stream : File-Stream.
|
|
||||||
> abort: flag: non-0 => ignore errors
|
|
||||||
changed in stream: all Components except name and truename */
|
|
||||||
-local maygc void close_buffered (object stream, uintB abort) {
|
|
||||||
+local maygc void close_buffered (volatile object stream, uintB abort) {
|
|
||||||
/* Handle=NIL (Stream already closed) -> finished: */
|
|
||||||
if (nullp(BufferedStream_channel(stream)))
|
|
||||||
return;
|
|
||||||
@@ -9310,7 +9310,7 @@ local maygc char** lisp_completion (char
|
|
||||||
}
|
|
||||||
sstring_un_realloc(m);
|
|
||||||
var uintL charcount = Sstring_length(m);
|
|
||||||
- var const chart* ptr1;
|
|
||||||
+ var const chart* volatile ptr1;
|
|
||||||
unpack_sstring_alloca(m,charcount,0, ptr1=);
|
|
||||||
{ /* (CATCH 'SYS::CONVERSION-FAILURE ...) */
|
|
||||||
var gcv_object_t* top_of_frame = STACK;
|
|
||||||
744
clisp.spec
744
clisp.spec
|
|
@ -1,62 +1,103 @@
|
||||||
# Mercurial snapshot
|
# Upstream has not made a new release since 2010
|
||||||
%global hgver 20170224hg
|
%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
|
Version: 2.49.95
|
||||||
Release: 22.%{hgver}%{?dist}
|
|
||||||
|
|
||||||
License: GPLv2
|
%forgemeta
|
||||||
|
|
||||||
|
# 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/
|
||||||
# The source for this package was pulled from upstream's mercurial repository.
|
VCS: git:%{forgeurl}.git
|
||||||
# Use the following commands to generate the tarball:
|
Source0: %{forgesource}
|
||||||
# hg clone -u cf1453aed337 http://hg.code.sf.net/p/clisp/clisp clisp-2.49
|
# Upstream dropped this file from the distribution
|
||||||
# rm -fr clisp-2.49/.hg*
|
Source1: https://gitlab.com/sam-s/clhs/-/raw/master/clhs.el
|
||||||
# tar cvJf clisp-2.49-20170224hg.tar.xz clisp-2.49
|
# Updated translations
|
||||||
Source0: %{name}-%{version}-%{hgver}.tar.xz
|
Source2: http://translationproject.org/latest/clisp/sv.po
|
||||||
#Source0: http://downloads.sourceforge.net/clisp/%%{name}-%%{version}.tar.bz2
|
Source3: http://translationproject.org/latest/clisp/de.po
|
||||||
# http://sourceforge.net/tracker/?func=detail&aid=3529607&group_id=1355&atid=301355
|
# https://sourceforge.net/p/clisp/patches/32/
|
||||||
Patch0: %{name}-format.patch
|
Patch0: %{name}-format.patch
|
||||||
# http://sourceforge.net/tracker/?func=detail&aid=3529615&group_id=1355&atid=301355
|
# The combination of register and volatile is nonsensical
|
||||||
Patch1: %{name}-arm.patch
|
Patch1: %{name}-register-volatile.patch
|
||||||
# http://sourceforge.net/tracker/?func=detail&aid=3572511&group_id=1355&atid=301355
|
# A test that writes to /dev/pts/0 succeeds or fails apparently at random.
|
||||||
Patch2: %{name}-libsvm.patch
|
# I can only guess that /dev/pts/0 may or may not be what the test expects.
|
||||||
# http://sourceforge.net/tracker/?func=detail&aid=3572516&group_id=1355&atid=301355
|
# Perhaps we are racing with something else that allocates a pty. Disable
|
||||||
Patch3: %{name}-db.patch
|
# the test for now.
|
||||||
# Linux-specific fixes. Sent upstream 25 Jul 2012.
|
Patch2: %{name}-pts-access.patch
|
||||||
Patch4: %{name}-linux.patch
|
# Do not call the deprecated siginterrupt function
|
||||||
# Add missing volatile keywords.
|
Patch3: %{name}-siginterrupt.patch
|
||||||
Patch5: %{name}-volatile.patch
|
# Fix an iconv leak in stream.d
|
||||||
# Left shift of a signed value invokes undefined behabvior.
|
Patch4: %{name}-iconv-close.patch
|
||||||
Patch6: %{name}-negshift.patch
|
# Fix a memory leak in encoding.d
|
||||||
# Fix an aliasing issue, causes a build failure on ARM.
|
# https://gitlab.com/gnu-clisp/clisp/-/merge_requests/11
|
||||||
Patch7: %{name}-alias.patch
|
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: compat-readline5-devel
|
|
||||||
BuildRequires: dbus-devel
|
BuildRequires: dbus-devel
|
||||||
|
BuildRequires: diffutils
|
||||||
BuildRequires: emacs
|
BuildRequires: emacs
|
||||||
BuildRequires: fcgi-devel
|
BuildRequires: fcgi-devel
|
||||||
BuildRequires: ffcall
|
BuildRequires: ffcall-devel
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: gdbm-devel
|
BuildRequires: gdbm-devel
|
||||||
BuildRequires: gettext-devel
|
BuildRequires: gettext-devel
|
||||||
BuildRequires: ghostscript-core
|
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
|
||||||
|
%endif
|
||||||
BuildRequires: libXaw-devel
|
BuildRequires: libXaw-devel
|
||||||
BuildRequires: libXft-devel
|
BuildRequires: libXft-devel
|
||||||
BuildRequires: libdb-devel
|
BuildRequires: libdb-devel
|
||||||
BuildRequires: libglade2-devel
|
|
||||||
BuildRequires: libsigsegv-devel
|
BuildRequires: libsigsegv-devel
|
||||||
BuildRequires: libsvm-devel
|
BuildRequires: libsvm-devel
|
||||||
#BuildRequires: pari-devel
|
BuildRequires: libunistring-devel
|
||||||
BuildRequires: pcre-devel
|
BuildRequires: libxcrypt-devel
|
||||||
BuildRequires: postgresql-devel
|
BuildRequires: make
|
||||||
|
BuildRequires: pari-devel
|
||||||
|
BuildRequires: pari-gp
|
||||||
|
BuildRequires: libpq-devel
|
||||||
|
BuildRequires: readline-devel
|
||||||
|
BuildRequires: vim-filesystem
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
|
|
||||||
# See Red Hat bugs 238954 (ppc64) and 925155 (aarch64)
|
|
||||||
ExcludeArch: %{power64} aarch64
|
|
||||||
|
|
||||||
Requires: emacs-filesystem
|
Requires: emacs-filesystem
|
||||||
Requires: vim-filesystem
|
Requires: vim-filesystem
|
||||||
|
|
||||||
|
|
@ -65,25 +106,24 @@ Requires: vim-filesystem
|
||||||
Provides: bundled(gnulib)
|
Provides: bundled(gnulib)
|
||||||
|
|
||||||
%description
|
%description
|
||||||
ANSI Common Lisp is a high-level, general-purpose programming
|
ANSI Common Lisp is a high-level, general-purpose programming language. GNU
|
||||||
language. GNU CLISP is a Common Lisp implementation by Bruno Haible
|
CLISP is a Common Lisp implementation by Bruno Haible of Karlsruhe University
|
||||||
of Karlsruhe University and Michael Stoll of Munich University, both
|
and Michael Stoll of Munich University, both in Germany. It mostly supports
|
||||||
in Germany. It mostly supports the Lisp described in the ANSI Common
|
the Lisp described in the ANSI Common Lisp standard. It runs on most Unix
|
||||||
Lisp standard. It runs on most Unix workstations (GNU/Linux, FreeBSD,
|
workstations (GNU/Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Tru64, HP-UX,
|
||||||
NetBSD, OpenBSD, Solaris, Tru64, HP-UX, BeOS, NeXTstep, IRIX, AIX and
|
BeOS, NeXTstep, IRIX, AIX and others) and on other systems (Windows NT/2000/XP,
|
||||||
others) and on other systems (Windows NT/2000/XP, Windows 95/98/ME)
|
Windows 95/98/ME) and needs only 4 MiB of RAM.
|
||||||
and needs only 4 MiB of RAM.
|
|
||||||
|
|
||||||
It is Free Software and may be distributed under the terms of GNU GPL,
|
It is Free Software and may be distributed under the terms of GNU GPL, while
|
||||||
while it is possible to distribute commercial proprietary applications
|
it is possible to distribute commercial proprietary applications compiled with
|
||||||
compiled with GNU CLISP.
|
GNU CLISP.
|
||||||
|
|
||||||
The user interface comes in English, German, French, Spanish, Dutch,
|
The user interface comes in English, German, French, Spanish, Dutch, Russian
|
||||||
Russian and Danish, and can be changed at run time. GNU CLISP
|
and Danish, and can be changed at run time. GNU CLISP includes an
|
||||||
includes an interpreter, a compiler, a debugger, CLOS, MOP, a foreign
|
interpreter, a compiler, a debugger, CLOS, MOP, a foreign language interface,
|
||||||
language interface, sockets, i18n, fast bignums and more. An X11
|
sockets, i18n, fast bignums and more. An X11 interface is available through
|
||||||
interface is available through CLX, Garnet, CLUE/CLIO. GNU CLISP runs
|
CLX, Garnet, CLUE/CLIO. GNU CLISP runs Maxima, ACL2 and many other Common
|
||||||
Maxima, ACL2 and many other Common Lisp packages.
|
Lisp packages.
|
||||||
|
|
||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
|
|
@ -97,44 +137,29 @@ Files necessary for linking CLISP programs.
|
||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%forgesetup
|
||||||
%patch0
|
%autopatch -M99 -p0
|
||||||
%patch1
|
%ifarch %{power64}
|
||||||
%patch2
|
%autopatch 100 -p0
|
||||||
%patch3
|
%endif
|
||||||
%patch4
|
|
||||||
%patch5
|
|
||||||
%patch6
|
|
||||||
%patch7
|
|
||||||
|
|
||||||
# Convince CLisp to build against compat-readline5 instead of readline.
|
%conf
|
||||||
# This is to avoid pulling the GPLv3 readline 6 into a GPLv2 CLisp binary.
|
cp -p %{SOURCE1} emacs
|
||||||
# See Red Hat bug #511303.
|
cp -p %{SOURCE2} %{SOURCE3} src/po
|
||||||
mkdir -p readline/include
|
|
||||||
ln -s %{_includedir}/readline5/readline readline/include/readline
|
|
||||||
ln -s %{_libdir}/readline5 readline/%{_lib}
|
|
||||||
|
|
||||||
# Update config.guess and config.sub
|
|
||||||
cp -p /usr/lib/rpm/redhat/config.{guess,sub} src/build-aux
|
|
||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
# Fix modules that need access to symbols in libgnu.a
|
# Do not use -Werror, or we get build failures on every new gcc version
|
||||||
sed -i 's/\(${GLLIB_A}\) \(${LIBS}\)/-Wl,--whole-archive \1 -Wl,--no-whole-archive \2/' src/makemake.in
|
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
|
||||||
|
|
@ -144,14 +169,15 @@ tar -C modules/clx -xzf modules/clx/clx-manual.tar.gz
|
||||||
chmod -R go+r modules/clx/clx-manual
|
chmod -R go+r modules/clx/clx-manual
|
||||||
chmod a-x modules/clx/clx-manual/html/doc-index.cgi
|
chmod a-x modules/clx/clx-manual/html/doc-index.cgi
|
||||||
|
|
||||||
%build
|
# On some koji builders, something is already listening on port 9090, which
|
||||||
ulimit -s unlimited
|
# causes a spurious test failure. Change to port 9096 for the test.
|
||||||
|
sed -i 's/9090/9096/g' tests/socket.tst
|
||||||
|
|
||||||
|
%build
|
||||||
# Do not need to specify base modules: i18n, readline, regexp, syscalls.
|
# Do not need to specify base modules: i18n, readline, regexp, syscalls.
|
||||||
# The dirkey module currently can only be built on Windows/Cygwin/MinGW.
|
# The dirkey module currently can only be built on Windows/Cygwin/MinGW.
|
||||||
# The editor module is not in good enough shape to use.
|
# The editor module is not in good enough shape to use.
|
||||||
# The matlab, netica, and oracle modules require proprietary code to build.
|
# The matlab, netica, and oracle modules require proprietary code to build.
|
||||||
# The pari module only works with pari 2.3. Fedora currently has pari 2.7.
|
|
||||||
# The queens module is intended as an example only, not for actual use.
|
# The queens module is intended as an example only, not for actual use.
|
||||||
./configure --prefix=%{_prefix} \
|
./configure --prefix=%{_prefix} \
|
||||||
--libdir=%{_libdir} \
|
--libdir=%{_libdir} \
|
||||||
|
|
@ -159,7 +185,6 @@ ulimit -s unlimited
|
||||||
--infodir=%{_infodir} \
|
--infodir=%{_infodir} \
|
||||||
--docdir=%{_pkgdocdir} \
|
--docdir=%{_pkgdocdir} \
|
||||||
--fsstnd=redhat \
|
--fsstnd=redhat \
|
||||||
--hyperspec=http://www.lispworks.com/documentation/HyperSpec/ \
|
|
||||||
--with-module=asdf \
|
--with-module=asdf \
|
||||||
--with-module=berkeley-db \
|
--with-module=berkeley-db \
|
||||||
--with-module=bindings/glibc \
|
--with-module=bindings/glibc \
|
||||||
|
|
@ -167,80 +192,77 @@ ulimit -s unlimited
|
||||||
--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=pcre \
|
--with-module=pari \
|
||||||
--with-module=postgresql \
|
--with-module=postgresql \
|
||||||
--with-module=rawsock \
|
--with-module=rawsock \
|
||||||
--with-module=zlib \
|
--with-module=zlib \
|
||||||
--with-libreadline-prefix=$PWD/readline \
|
--with-libreadline-prefix=$PWD/readline \
|
||||||
--cbc \
|
--with-ffcall \
|
||||||
|
--config \
|
||||||
build \
|
build \
|
||||||
%ifarch ppc %{power64}
|
CPPFLAGS='-I/usr/include/libsvm' \
|
||||||
CPPFLAGS="-DNO_GENERATIONAL_GC -DNO_MULTIMAP_FILE -DNO_SINGLEMAP -I/usr/include/readline5 -I/usr/include/libsvm" \
|
CFLAGS='%{build_cflags} -Wa,--noexecstack' \
|
||||||
%else
|
LDFLAGS='-Wl,--as-needed -Wl,-z,relro -Wl,-z,noexecstack'
|
||||||
CPPFLAGS="-I/usr/include/readline5 -I/usr/include/libsvm" \
|
|
||||||
%endif
|
cd build
|
||||||
CFLAGS="%{optflags} -Wa,--noexecstack -L%{_libdir}/readline5" \
|
# Workaround libtool reordering -Wl,--as-needed after all the libraries.
|
||||||
LDFLAGS="-Wl,-z,relro -L%{_libdir}/readline5 -Wl,-z,noexecstack"
|
sed -i 's|CC="\(.*g..\)"|CC="\1 -Wl,--as-needed"|' libtool
|
||||||
|
make
|
||||||
|
cd -
|
||||||
|
|
||||||
%install
|
%install
|
||||||
ulimit -s unlimited
|
|
||||||
make -C build DESTDIR=%{buildroot} install
|
make -C build DESTDIR=%{buildroot} install
|
||||||
cp -a build/full %{buildroot}%{_libdir}/%{name}-%{version}+
|
cp -a build/full %{buildroot}%{_libdir}/%{instdir}
|
||||||
rm -f %{buildroot}%{_pkgdocdir}/doc/clisp.{dvi,1,ps}
|
rm -f %{buildroot}%{_pkgdocdir}/doc/clisp.{dvi,1,ps}
|
||||||
rm -f %{buildroot}%{_pkgdocdir}/{COPYRIGHT,GNU-GPL}
|
rm -f %{buildroot}%{_pkgdocdir}/{COPYRIGHT,GNU-GPL}
|
||||||
cp -p doc/mop-spec.pdf %{buildroot}%{_pkgdocdir}/doc
|
cp -p doc/mop-spec.pdf %{buildroot}%{_pkgdocdir}/doc
|
||||||
cp -p doc/*.png %{buildroot}%{_pkgdocdir}/doc
|
cp -p doc/*.png %{buildroot}%{_pkgdocdir}/doc
|
||||||
cp -p doc/Why-CLISP* %{buildroot}%{_pkgdocdir}/doc
|
cp -p doc/Why-CLISP* %{buildroot}%{_pkgdocdir}/doc
|
||||||
cp -p doc/regexp.html %{buildroot}%{_pkgdocdir}/doc
|
cp -p doc/regexp.html %{buildroot}%{_pkgdocdir}/doc
|
||||||
find %{buildroot}%{_libdir} -name '*.dvi' | xargs rm -f
|
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
|
# Compile the Emacs interface
|
||||||
pushd %{buildroot}%{_datadir}/emacs/site-lisp
|
pushd %{buildroot}%{_emacs_sitelispdir}
|
||||||
%{_emacs_bytecompile} *.el
|
%{_emacs_bytecompile} *.el
|
||||||
popd
|
popd
|
||||||
|
|
||||||
# Put back the original config.rpath, and fix executable bits
|
# Put back the original config.rpath
|
||||||
cp -p config.rpath.orig %{buildroot}/%{_libdir}/%{name}-%{version}+/build-aux/config.rpath
|
cp -p config.rpath.orig %{buildroot}%{_libdir}/%{instdir}/build-aux/config.rpath
|
||||||
chmod a+x \
|
|
||||||
%{buildroot}/%{_libdir}/%{name}-%{version}+/build-aux/config.guess \
|
# Fix a missing executable bit
|
||||||
%{buildroot}/%{_libdir}/%{name}-%{version}+/build-aux/config.sub \
|
chmod a+x %{buildroot}%{_libdir}/%{instdir}/build-aux/depcomp
|
||||||
%{buildroot}/%{_libdir}/%{name}-%{version}+/build-aux/depcomp \
|
|
||||||
%{buildroot}/%{_libdir}/%{name}-%{version}+/build-aux/install-sh \
|
|
||||||
|
|
||||||
# Fix paths in the Makefiles
|
# Fix paths in the Makefiles
|
||||||
for mk in $(find %{buildroot}%{_libdir} -name Makefile); do
|
for mk in $(find %{buildroot}%{_libdir} -name Makefile); do
|
||||||
sed -e "s,$PWD/modules,%{_libdir}/%{name}-%{version}+," \
|
sed -e "s,$PWD/modules,%{_libdir}/%{instdir}," \
|
||||||
-e "s,$PWD/build/clisp,%{_bindir}/clisp," \
|
-e "s,$PWD/build/clisp,%{_bindir}/clisp," \
|
||||||
-e "s,$PWD/build/linkkit,%{_libdir}/%{name}-%{version}+/linkkit," \
|
-e "s,$PWD/build/linkkit,%{_libdir}/%{instdir}/linkkit," \
|
||||||
-i $mk
|
-i $mk
|
||||||
done
|
done
|
||||||
for mk in %{buildroot}%{_libdir}/%{name}-%{version}+/{base,full}/makevars; do
|
for mk in %{buildroot}%{_libdir}/%{instdir}/{base,full}/makevars; do
|
||||||
sed -e "s, -I$PWD[^']*,," \
|
sed -e "s, -I$PWD[^']*,," \
|
||||||
-e "s,$PWD/readline.*readline/lib[[:digit:]]*,-L%{_libdir}/readline5 -lreadline," \
|
|
||||||
-e "s,%{_libdir}/lib\([[:alnum:]]*\)\.so,-l\1,g" \
|
-e "s,%{_libdir}/lib\([[:alnum:]]*\)\.so,-l\1,g" \
|
||||||
-i $mk
|
-i $mk
|
||||||
done
|
done
|
||||||
|
|
||||||
# Install config.h, which is needed in some cases
|
# Install config.h, which is needed in some cases
|
||||||
for dir in %{buildroot}%{_libdir}/%{name}-%{version}+/*; do
|
for dir in %{buildroot}%{_libdir}/%{instdir}/*; do
|
||||||
cp -p build/$(basename $dir)/config.h $dir || :
|
cp -p build/$(basename $dir)/config.h $dir || :
|
||||||
done
|
done
|
||||||
cp -p build/config.h %{buildroot}%{_libdir}/%{name}-%{version}+
|
cp -p build/config.h %{buildroot}%{_libdir}/%{instdir}
|
||||||
cp -p build/clx/new-clx/config.h \
|
cp -p build/clx/new-clx/config.h \
|
||||||
%{buildroot}%{_libdir}/%{name}-%{version}+/clx/new-clx
|
%{buildroot}%{_libdir}/%{instdir}/clx/new-clx
|
||||||
|
|
||||||
# Fix permissions
|
|
||||||
chmod 0755 %{buildroot}%{_bindir}/%{name}
|
|
||||||
chmod 0755 %{buildroot}%{_libdir}/%{name}-%{version}+/full/lisp.run
|
|
||||||
|
|
||||||
# Fix broken symlinks in the full set
|
# Fix broken symlinks in the full set
|
||||||
pushd %{buildroot}%{_libdir}/%{name}-%{version}+/full
|
pushd %{buildroot}%{_libdir}/%{instdir}/full
|
||||||
for obj in bogomips calls gettext readline regexi; do
|
for obj in calls gettext readline regexi; do
|
||||||
rm -f ${obj}.o
|
rm -f ${obj}.o
|
||||||
ln -s ../base/${obj}.o ${obj}.o
|
ln -s ../base/${obj}.o ${obj}.o
|
||||||
done
|
done
|
||||||
|
|
@ -252,18 +274,22 @@ for obj in fastcgi fastcgi_wrappers; do
|
||||||
rm -f ${obj}.o
|
rm -f ${obj}.o
|
||||||
ln -s ../fastcgi/${obj}.o ${obj}.o
|
ln -s ../fastcgi/${obj}.o ${obj}.o
|
||||||
done
|
done
|
||||||
|
for obj in cpari pari; do
|
||||||
|
rm -f ${obj}.o
|
||||||
|
ln -s ../pari/${obj}.o ${obj}.o
|
||||||
|
done
|
||||||
rm -f bdb.o
|
rm -f bdb.o
|
||||||
ln -s ../berkeley-db/bdb.o bdb.o
|
ln -s ../berkeley-db/bdb.o bdb.o
|
||||||
rm -f clx.o
|
rm -f clx.o
|
||||||
ln -s ../clx/new-clx/clx.o clx.o
|
ln -s ../clx/new-clx/clx.o clx.o
|
||||||
rm -f cpcre.o
|
|
||||||
ln -s ../pcre/cpcre.o cpcre.o
|
|
||||||
rm -f dbus.o
|
rm -f dbus.o
|
||||||
ln -s ../dbus/dbus.o dbus.o
|
ln -s ../dbus/dbus.o dbus.o
|
||||||
rm -f gdbm.o
|
rm -f gdbm.o
|
||||||
ln -s ../gdbm/gdbm.o gdbm.o
|
ln -s ../gdbm/gdbm.o gdbm.o
|
||||||
|
%if %{with gtk2}
|
||||||
rm -f gtk.o
|
rm -f gtk.o
|
||||||
ln -s ../gtk2/gtk.o gtk.o
|
ln -s ../gtk2/gtk.o gtk.o
|
||||||
|
%endif
|
||||||
rm -f libsvm.o
|
rm -f libsvm.o
|
||||||
ln -s ../libsvm/libsvm.o libsvm.o
|
ln -s ../libsvm/libsvm.o libsvm.o
|
||||||
rm -f linux.o
|
rm -f linux.o
|
||||||
|
|
@ -280,148 +306,362 @@ popd
|
||||||
ln -s ../../src/modules.c build/base/modules.c
|
ln -s ../../src/modules.c build/base/modules.c
|
||||||
ln -s ../../src/modules.c build/full/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
|
%license COPYRIGHT GNU-GPL
|
||||||
%{_bindir}/clisp
|
%{_bindir}/clisp
|
||||||
%{_mandir}/man1/clisp.1*
|
%{_mandir}/man1/clisp.1*
|
||||||
%{_pkgdocdir}/
|
%{_pkgdocdir}/
|
||||||
%dir %{_libdir}/%{name}-%{version}+/
|
%dir %{_libdir}/%{instdir}/
|
||||||
%dir %{_libdir}/%{name}-%{version}+/asdf/
|
%dir %{_libdir}/%{instdir}/asdf/
|
||||||
%{_libdir}/%{name}-%{version}+/asdf/asdf.fas
|
%{_libdir}/%{instdir}/asdf/asdf.fas
|
||||||
%dir %{_libdir}/%{name}-%{version}+/base/
|
%dir %{_libdir}/%{instdir}/base/
|
||||||
%{_libdir}/%{name}-%{version}+/base/lispinit.mem
|
%{_libdir}/%{instdir}/base/lispinit.mem
|
||||||
%{_libdir}/%{name}-%{version}+/base/lisp.run
|
%{_libdir}/%{instdir}/base/lisp.run
|
||||||
%dir %{_libdir}/%{name}-%{version}+/berkeley-db/
|
%dir %{_libdir}/%{instdir}/berkeley-db/
|
||||||
%{_libdir}/%{name}-%{version}+/berkeley-db/*.fas
|
%{_libdir}/%{instdir}/berkeley-db/*.fas
|
||||||
%dir %{_libdir}/%{name}-%{version}+/bindings/
|
%{_libdir}/%{instdir}/berkeley-db/preload.lisp
|
||||||
%dir %{_libdir}/%{name}-%{version}+/bindings/glibc/
|
%dir %{_libdir}/%{instdir}/bindings/
|
||||||
%{_libdir}/%{name}-%{version}+/bindings/glibc/*.fas
|
%dir %{_libdir}/%{instdir}/bindings/glibc/
|
||||||
%dir %{_libdir}/%{name}-%{version}+/clx/
|
%{_libdir}/%{instdir}/bindings/glibc/*.fas
|
||||||
%dir %{_libdir}/%{name}-%{version}+/clx/new-clx/
|
%dir %{_libdir}/%{instdir}/clx/
|
||||||
%{_libdir}/%{name}-%{version}+/clx/new-clx/*.fas
|
%dir %{_libdir}/%{instdir}/clx/new-clx/
|
||||||
%{_libdir}/%{name}-%{version}+/data/
|
%{_libdir}/%{instdir}/clx/new-clx/*.fas
|
||||||
%dir %{_libdir}/%{name}-%{version}+/dbus/
|
%{_libdir}/%{instdir}/clx/new-clx/clx-preload.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/dbus/*.fas
|
%{_libdir}/%{instdir}/data/
|
||||||
%{_libdir}/%{name}-%{version}+/dynmod/
|
%dir %{_libdir}/%{instdir}/dbus/
|
||||||
%dir %{_libdir}/%{name}-%{version}+/fastcgi/
|
%{_libdir}/%{instdir}/dbus/*.fas
|
||||||
%{_libdir}/%{name}-%{version}+/fastcgi/*.fas
|
%{_libdir}/%{instdir}/dynmod/
|
||||||
%dir %{_libdir}/%{name}-%{version}+/full/
|
%dir %{_libdir}/%{instdir}/fastcgi/
|
||||||
%{_libdir}/%{name}-%{version}+/full/lispinit.mem
|
%{_libdir}/%{instdir}/fastcgi/*.fas
|
||||||
%{_libdir}/%{name}-%{version}+/full/lisp.run
|
%dir %{_libdir}/%{instdir}/full/
|
||||||
%dir %{_libdir}/%{name}-%{version}+/gdbm/
|
%{_libdir}/%{instdir}/full/lispinit.mem
|
||||||
%{_libdir}/%{name}-%{version}+/gdbm/*.fas
|
%{_libdir}/%{instdir}/full/lisp.run
|
||||||
%dir %{_libdir}/%{name}-%{version}+/gtk2/
|
%dir %{_libdir}/%{instdir}/gdbm/
|
||||||
%{_libdir}/%{name}-%{version}+/gtk2/*.fas
|
%{_libdir}/%{instdir}/gdbm/*.fas
|
||||||
%dir %{_libdir}/%{name}-%{version}+/libsvm/
|
%{_libdir}/%{instdir}/gdbm/preload.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/libsvm/*.fas
|
%if %{with gtk2}
|
||||||
#%%dir %%{_libdir}/%%{name}-%%{version}/pari/
|
%dir %{_libdir}/%{instdir}/gtk2/
|
||||||
#%%{_libdir}/%%{name}-%%{version}/pari/*.fas
|
%{_libdir}/%{instdir}/gtk2/*.fas
|
||||||
%dir %{_libdir}/%{name}-%{version}+/pcre/
|
%{_libdir}/%{instdir}/gtk2/preload.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/pcre/*.fas
|
%endif
|
||||||
%dir %{_libdir}/%{name}-%{version}+/postgresql/
|
%dir %{_libdir}/%{instdir}/libsvm/
|
||||||
%{_libdir}/%{name}-%{version}+/postgresql/*.fas
|
%{_libdir}/%{instdir}/libsvm/*.fas
|
||||||
%dir %{_libdir}/%{name}-%{version}+/rawsock/
|
%{_libdir}/%{instdir}/libsvm/preload.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/rawsock/*.fas
|
%dir %{_libdir}/%{instdir}/pari/
|
||||||
%dir %{_libdir}/%{name}-%{version}+/zlib/
|
%{_libdir}/%{instdir}/pari/*.fas
|
||||||
%{_libdir}/%{name}-%{version}+/zlib/*.fas
|
%{_libdir}/%{instdir}/pari/preload.lisp
|
||||||
%{_datadir}/emacs/site-lisp/*
|
%dir %{_libdir}/%{instdir}/postgresql/
|
||||||
%{_datadir}/vim/vimfiles/after/syntax/*
|
%{_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
|
%doc modules/clx/clx-manual
|
||||||
%{_bindir}/clisp-link
|
%{_bindir}/clisp-link
|
||||||
%{_mandir}/man1/clisp-link.1*
|
%{_mandir}/man1/clisp-link.1*
|
||||||
%{_libdir}/%{name}-%{version}+/asdf/Makefile
|
%{_libdir}/%{instdir}/asdf/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/asdf/*.lisp
|
%{_libdir}/%{instdir}/asdf/*.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/asdf/*.sh
|
%{_libdir}/%{instdir}/asdf/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/base/*.a
|
%{_libdir}/%{instdir}/base/*.a
|
||||||
%{_libdir}/%{name}-%{version}+/base/*.h
|
%{_libdir}/%{instdir}/base/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/base/*.o
|
%{_libdir}/%{instdir}/base/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/base/makevars
|
%{_libdir}/%{instdir}/base/makevars
|
||||||
%{_libdir}/%{name}-%{version}+/berkeley-db/Makefile
|
%{_libdir}/%{instdir}/berkeley-db/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/berkeley-db/*.h
|
%{_libdir}/%{instdir}/berkeley-db/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/berkeley-db/*.lisp
|
%{_libdir}/%{instdir}/berkeley-db/dbi.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/berkeley-db/*.o
|
%{_libdir}/%{instdir}/berkeley-db/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/berkeley-db/*.sh
|
%{_libdir}/%{instdir}/berkeley-db/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/bindings/glibc/Makefile
|
%{_libdir}/%{instdir}/bindings/glibc/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/bindings/glibc/*.lisp
|
%{_libdir}/%{instdir}/bindings/glibc/*.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/bindings/glibc/*.o
|
%{_libdir}/%{instdir}/bindings/glibc/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/bindings/glibc/*.sh
|
%{_libdir}/%{instdir}/bindings/glibc/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/build-aux/
|
%{_libdir}/%{instdir}/build-aux/
|
||||||
%{_libdir}/%{name}-%{version}+/clx/new-clx/demos/
|
%{_libdir}/%{instdir}/clx/new-clx/demos/
|
||||||
%{_libdir}/%{name}-%{version}+/clx/new-clx/README
|
%{_libdir}/%{instdir}/clx/new-clx/README
|
||||||
%{_libdir}/%{name}-%{version}+/clx/new-clx/Makefile
|
%{_libdir}/%{instdir}/clx/new-clx/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/clx/new-clx/*.h
|
%{_libdir}/%{instdir}/clx/new-clx/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/clx/new-clx/*.lisp
|
%{_libdir}/%{instdir}/clx/new-clx/clx.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/clx/new-clx/*.o
|
%{_libdir}/%{instdir}/clx/new-clx/image.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/clx/new-clx/*.sh
|
%{_libdir}/%{instdir}/clx/new-clx/resource.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/config.h
|
%{_libdir}/%{instdir}/clx/new-clx/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/dbus/Makefile
|
%{_libdir}/%{instdir}/clx/new-clx/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/dbus/*.h
|
%{_libdir}/%{instdir}/config.h
|
||||||
%{_libdir}/%{name}-%{version}+/dbus/*.lisp
|
%{_libdir}/%{instdir}/dbus/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/dbus/*.o
|
%{_libdir}/%{instdir}/dbus/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/dbus/*.sh
|
%{_libdir}/%{instdir}/dbus/*.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/fastcgi/README
|
%{_libdir}/%{instdir}/dbus/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/fastcgi/Makefile
|
%{_libdir}/%{instdir}/dbus/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/fastcgi/*.h
|
%{_libdir}/%{instdir}/fastcgi/README
|
||||||
%{_libdir}/%{name}-%{version}+/fastcgi/*.lisp
|
%{_libdir}/%{instdir}/fastcgi/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/fastcgi/*.o
|
%{_libdir}/%{instdir}/fastcgi/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/fastcgi/*.sh
|
%{_libdir}/%{instdir}/fastcgi/*.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/full/*.a
|
%{_libdir}/%{instdir}/fastcgi/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/full/*.h
|
%{_libdir}/%{instdir}/fastcgi/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/full/*.o
|
%{_libdir}/%{instdir}/full/*.a
|
||||||
%{_libdir}/%{name}-%{version}+/full/makevars
|
%{_libdir}/%{instdir}/full/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/gdbm/Makefile
|
%{_libdir}/%{instdir}/full/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/gdbm/*.h
|
%{_libdir}/%{instdir}/full/makevars
|
||||||
%{_libdir}/%{name}-%{version}+/gdbm/*.lisp
|
%{_libdir}/%{instdir}/gdbm/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/gdbm/*.o
|
%{_libdir}/%{instdir}/gdbm/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/gdbm/*.sh
|
%{_libdir}/%{instdir}/gdbm/gdbm.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/gtk2/Makefile
|
%{_libdir}/%{instdir}/gdbm/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/gtk2/*.cfg
|
%{_libdir}/%{instdir}/gdbm/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/gtk2/*.glade
|
%if %{with gtk2}
|
||||||
%{_libdir}/%{name}-%{version}+/gtk2/*.h
|
%{_libdir}/%{instdir}/gtk2/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/gtk2/*.lisp
|
%{_libdir}/%{instdir}/gtk2/*.cfg
|
||||||
%{_libdir}/%{name}-%{version}+/gtk2/*.o
|
%{_libdir}/%{instdir}/gtk2/*.glade
|
||||||
%{_libdir}/%{name}-%{version}+/gtk2/*.sh
|
%{_libdir}/%{instdir}/gtk2/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/libsvm/README
|
%{_libdir}/%{instdir}/gtk2/gtk.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/libsvm/Makefile
|
%{_libdir}/%{instdir}/gtk2/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/libsvm/*.h
|
%{_libdir}/%{instdir}/gtk2/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/libsvm/*.lisp
|
%endif
|
||||||
%{_libdir}/%{name}-%{version}+/libsvm/*.o
|
%{_libdir}/%{instdir}/libsvm/README
|
||||||
%{_libdir}/%{name}-%{version}+/libsvm/*.sh
|
%{_libdir}/%{instdir}/libsvm/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/linkkit/
|
%{_libdir}/%{instdir}/libsvm/*.h
|
||||||
#%%{_libdir}/%%{name}-%%{version}/pari/README
|
%{_libdir}/%{instdir}/libsvm/libsvm.lisp
|
||||||
#%%{_libdir}/%%{name}-%%{version}/pari/Makefile
|
%{_libdir}/%{instdir}/libsvm/*.o
|
||||||
#%%{_libdir}/%%{name}-%%{version}/pari/*.h
|
%{_libdir}/%{instdir}/libsvm/*.sh
|
||||||
#%%{_libdir}/%%{name}-%%{version}/pari/*.lisp
|
%{_libdir}/%{instdir}/linkkit/
|
||||||
#%%{_libdir}/%%{name}-%%{version}/pari/*.o
|
%{_libdir}/%{instdir}/pari/README
|
||||||
#%%{_libdir}/%%{name}-%%{version}/pari/*.sh
|
%{_libdir}/%{instdir}/pari/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/pcre/Makefile
|
%{_libdir}/%{instdir}/pari/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/pcre/*.h
|
%{_libdir}/%{instdir}/pari/desc2lisp.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/pcre/*.lisp
|
%{_libdir}/%{instdir}/pari/pari.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/pcre/*.o
|
%{_libdir}/%{instdir}/pari/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/pcre/*.sh
|
%{_libdir}/%{instdir}/pari/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/postgresql/README
|
%{_libdir}/%{instdir}/postgresql/README
|
||||||
%{_libdir}/%{name}-%{version}+/postgresql/Makefile
|
%{_libdir}/%{instdir}/postgresql/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/postgresql/*.h
|
%{_libdir}/%{instdir}/postgresql/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/postgresql/*.lisp
|
%{_libdir}/%{instdir}/postgresql/*.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/postgresql/*.o
|
%{_libdir}/%{instdir}/postgresql/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/postgresql/*.sh
|
%{_libdir}/%{instdir}/postgresql/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/rawsock/demos/
|
%{_libdir}/%{instdir}/rawsock/demos/
|
||||||
%{_libdir}/%{name}-%{version}+/rawsock/Makefile
|
%{_libdir}/%{instdir}/rawsock/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/rawsock/*.h
|
%{_libdir}/%{instdir}/rawsock/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/rawsock/*.lisp
|
%{_libdir}/%{instdir}/rawsock/sock.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/rawsock/*.o
|
%{_libdir}/%{instdir}/rawsock/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/rawsock/*.sh
|
%{_libdir}/%{instdir}/rawsock/*.sh
|
||||||
%{_libdir}/%{name}-%{version}+/zlib/Makefile
|
%{_libdir}/%{instdir}/zlib/Makefile
|
||||||
%{_libdir}/%{name}-%{version}+/zlib/*.h
|
%{_libdir}/%{instdir}/zlib/*.h
|
||||||
%{_libdir}/%{name}-%{version}+/zlib/*.lisp
|
%{_libdir}/%{instdir}/zlib/*.lisp
|
||||||
%{_libdir}/%{name}-%{version}+/zlib/*.o
|
%{_libdir}/%{instdir}/zlib/*.o
|
||||||
%{_libdir}/%{name}-%{version}+/zlib/*.sh
|
%{_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
|
* Fri Feb 24 2017 Jerry James <loganjerry@gmail.com> - 2.49-22.20170224hg
|
||||||
- Update to latest mercurial snapshot
|
- Update to latest mercurial snapshot
|
||||||
- Drop upstreamed -32bit patch
|
- Drop upstreamed -32bit patch
|
||||||
|
|
|
||||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
||||||
SHA512 (clisp-2.49-20170224hg.tar.xz) = e5ebccc48254ce82e707d9bf1e4f8f6711502bb541aa9958e25e1ced5a2aae286071adefbe2969018402e29056d49887a3dc36df7542cffffa05f1bc84b59d07
|
SHA512 (clisp-f66220939ea7d36fd085384afa4a0ec44597d499.tar.bz2) = 16d6ccba500d60fe36c20b5bd1d6c9403567996020cef406e42813a302a86d94dc0d5e36aae434b5b846d39ec37d6db2b50565a69d24291b973724bcc0874bd0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue