Subject: Missing ‘scm_sym_’ symbols in libguile-3.0.so

From: Ludovic Courtès <[email-masked]>
Date: Sat, 18 Jan 2020 23:20:27 +0100

Hello,

Libguile in 3.0.0 lacks all the C exports for variables created with
‘SCM_GLOBAL_SYMBOL’ in ‘expand.c’:

--8<---------------cut here---------------start------------->8---
$ objdump -T /gnu/store/b9xkl8vbxbyblzkwp7xzwwmharswkbgy-guile-2.2.6-1/lib/libguile-2.2.so |grep scm_sym_lambda
000000000012c298 g    DO .bss	0000000000000008  GUILE_2.0   scm_sym_lambda
$ objdump -T /gnu/store/7z0zzqbchcjmc1krwhy0jd5hsny5y77w-guile-next-3.0.0/lib/libguile-3.0.so |grep scm_sym_lambda
--8<---------------cut here---------------end--------------->8---

That’s because they accidentally ended up having the “hidden”
visibility, which is fixed by the patch below.

This will obviously augment the ABI.  Should we push?

Thanks,
Ludo’.

diff --git a/libguile/expand.c b/libguile/expand.c
index 11e43c2b9..6ba65ffa2 100644
--- a/libguile/expand.c
+++ b/libguile/expand.c
@@ -1,4 +1,4 @@
-/* Copyright 1995-2014,2016,2018-2019
+/* Copyright 1995-2014,2016,2018-2020
      Free Software Foundation, Inc.
 
    This file is part of Guile.
@@ -32,6 +32,7 @@
 #include "keywords.h"
 #include "list.h"
 #include "macros.h"
+#include "memoize.h"    /* for the SCM_API declarations of 'scm_sym_' */
 #include "modules.h"
 #include "pairs.h"
 #include "ports.h"