1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00

Bump objcode version in a compatible way

* libguile/_scm.h (SCM_OBJCODE_MINIMUM_MINOR_VERSION): New definition,
  indicating the oldest objcode version that we support.
  (SCM_OBJCODE_MINOR_VERSION): Bump.
* libguile/loader.c (process_dynamic_segment): Support a range of
  versions.
* module/system/vm/assembler.scm (*bytecode-minor-version*): Bump.
This commit is contained in:
Andy Wingo 2017-04-18 21:37:36 +02:00
parent 7c71be0c7e
commit e0502f3c77
3 changed files with 7 additions and 8 deletions

View file

@ -248,7 +248,8 @@ void scm_ia64_longjmp (scm_i_jmp_buf *, int);
/* Major and minor versions must be single characters. */
#define SCM_OBJCODE_MAJOR_VERSION 3
#define SCM_OBJCODE_MINOR_VERSION 9
#define SCM_OBJCODE_MINIMUM_MINOR_VERSION 9
#define SCM_OBJCODE_MINOR_VERSION A
#define SCM_OBJCODE_MAJOR_VERSION_STRING \
SCM_CPP_STRINGIFY(SCM_OBJCODE_MAJOR_VERSION)
#define SCM_OBJCODE_MINOR_VERSION_STRING \

View file

@ -296,12 +296,10 @@ process_dynamic_segment (char *base, Elf_Phdr *dyn_phdr,
{
case 0x0202:
bytecode_kind = BYTECODE_KIND_GUILE_2_2;
/* As we get closer to 2.2, we will allow for backwards
compatibility and we can change this test to ">"
instead of "!=". However until then, to deal with VM
churn it's best to keep these things in
lock-step. */
if (minor != SCM_OBJCODE_MINOR_VERSION)
if (minor < SCM_OBJCODE_MINIMUM_MINOR_VERSION)
return "incompatible bytecode version";
/* FIXME for 3.0: Go back to integers. */
if (minor > SCM_OBJCODE_MINOR_VERSION_STRING[0])
return "incompatible bytecode version";
break;
default:

View file

@ -1807,7 +1807,7 @@ needed."
;; FIXME: Define these somewhere central, shared with C.
(define *bytecode-major-version* #x0202)
(define *bytecode-minor-version* 9)
(define *bytecode-minor-version* (char->integer #\A))
(define (link-dynamic-section asm text rw rw-init frame-maps)
"Link the dynamic section for an ELF image with bytecode @var{text},