1.0.29.21: less strict os-provides-dladdr.c
authorNikodemus Siivola <nikodemus@random-state.net>
Sat, 20 Jun 2009 09:31:50 +0000 (09:31 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Sat, 20 Jun 2009 09:31:50 +0000 (09:31 +0000)
* Allows us to use dladdr on FC6, where previous test failed because
  we expected an exact match on the name for "printf", whereas the
  name we got is "_IO_printf".

  IIRC the reason for the name was that some marginal platform had a
  dladdr that always returned "unknown function" or something like
  that -- here's hoping that's not the case anymore, but if it is,
  testing that the return value is not a placeholder string like that
  is probably better.

NEWS
tools-for-build/os-provides-dladdr-test.c
version.lisp-expr

diff --git a/NEWS b/NEWS
index aec4085..960c984 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -28,6 +28,8 @@
     (reported by Elliot Slaughter, thanks to Stas Boukarev)
   * bug fix: bogus undefined variable warnings from fopcompiled references to
     global variables. (thanks to Lars Rune Nøstdal)
+  * bug fix: foreign function names should now appear in backtraces on
+    FC6 as well. (reported by Tomasz Skutnik and obias Rautenkranz)
 
 changes in sbcl-1.0.29 relative to 1.0.28:
   * IMPORTANT: bug database has moved from the BUGS file to Launchpad
index bc1a05c..d7795b4 100644 (file)
@@ -13,8 +13,7 @@ int main ()
    void * handle = dlopen((void*)0, RTLD_GLOBAL | RTLD_NOW);
    void * addr = dlsym(handle, "printf");
    Dl_info * info = (Dl_info*) malloc(sizeof(Dl_info));
-   dladdr(addr, info);
-   if (strcmp(info->dli_sname, "printf")) {
+   if (dladdr(addr, info) == 0) {
        return 1;
    } else {
        return 104;
index 94f28c1..ef1d43e 100644 (file)
@@ -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.29.20"
+"1.0.29.21"