From: Alastair Bridgewater Date: Fri, 30 Apr 2010 16:50:42 +0000 (+0000) Subject: 1.0.38.3: PPC linkage-table fix. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=8ac6ab97a44925953f4f7c29341d365da3be33ae;p=sbcl.git 1.0.38.3: PPC linkage-table fix. * arch_write_linkage_table_jmp() on PPC was overrunning the linkage table entry space by one useless (duplicated) instruction, which loses when updating the linkage-table if maphash returns entries in any order other than by ascending linkage-table entry address. --- diff --git a/NEWS b/NEWS index 7a8f727..e4aeeb0 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,9 @@ changes relative to sbcl-1.9.38: * bug fix: Backtrace from undefined function on x86 and x86-64 now show the calling frame. + * bug fix: linkage-table entries on PPC now no longer overflow their + space allocation (potentially causing crashes if they are written out + of order). changes in sbcl-1.0.38 relative to sbcl-1.0.37: * incompatible change: Thread names are now restricted to SIMPLE-STRINGs diff --git a/src/runtime/ppc-arch.c b/src/runtime/ppc-arch.c index 533293d..92516e5 100644 --- a/src/runtime/ppc-arch.c +++ b/src/runtime/ppc-arch.c @@ -564,9 +564,6 @@ arch_write_linkage_table_jmp(void* reloc_addr, void *target_addr) inst = (19 << 26) | (20 << 21) | (528 << 1); *inst_ptr++ = inst; - - *inst_ptr++ = inst; - os_flush_icache((os_vm_address_t) reloc_addr, (char*) inst_ptr - (char*) reloc_addr); } diff --git a/version.lisp-expr b/version.lisp-expr index 0459b9c..184f63e 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.38.2" +"1.0.38.3"