libtool-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU Libtool branch, master, updated. v2.2.6-169-g93f5529


From: Ralf Wildenhues
Subject: [SCM] GNU Libtool branch, master, updated. v2.2.6-169-g93f5529
Date: Wed, 09 Dec 2009 06:34:48 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Libtool".

The branch, master has been updated
       via  93f5529731b91f4821d2c59888a51b936b266a4e (commit)
      from  31eb92de4f110fa633c1c9ced1c1e91a2b0b5303 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 93f5529731b91f4821d2c59888a51b936b266a4e
Author: Ralf Wildenhues <address@hidden>
Date:   Wed Dec 9 07:28:59 2009 +0100

    Improve parsing of .la files in libltdl.
    
    * libltdl/ltdl.c (trim): Do not dump core upon missing quote in
    module .la file.
    * tests/lalib-syntax.at (syntax of .la files): New file, new
    test.
    * Makefile.am (TESTSUITE_AT): Add tests/lalib-syntax.at.
    Report by Bob Friesenhahn.
    
    Signed-off-by: Ralf Wildenhues <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                               |   10 +++
 Makefile.am                             |    1 +
 libltdl/ltdl.c                          |    2 +-
 tests/{lt_dlopen.at => lalib-syntax.at} |   96 +++++++++++++++++++------------
 4 files changed, 71 insertions(+), 38 deletions(-)
 copy tests/{lt_dlopen.at => lalib-syntax.at} (51%)

diff --git a/ChangeLog b/ChangeLog
index ca5e947..fd6ded0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-12-09  Ralf Wildenhues  <address@hidden>
+
+       Improve parsing of .la files in libltdl.
+       * libltdl/ltdl.c (trim): Do not dump core upon missing quote in
+       module .la file.
+       * tests/lalib-syntax.at (syntax of .la files): New file, new
+       test.
+       * Makefile.am (TESTSUITE_AT): Add tests/lalib-syntax.at.
+       Report by Bob Friesenhahn.
+
 2009-12-05  Ralf Wildenhues  <address@hidden>
 
        Sane fallback initialization of $ECHO from $as_echo.
diff --git a/Makefile.am b/Makefile.am
index e5d55eb..5c570b5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -484,6 +484,7 @@ TESTSUITE_AT        = tests/testsuite.at \
                  tests/lt_dlopen_a.at \
                  tests/lt_dlopenext.at \
                  tests/ltdl-api.at \
+                 tests/lalib-syntax.at \
                  tests/slist.at \
                  tests/need_lib_prefix.at \
                  tests/standalone.at \
diff --git a/libltdl/ltdl.c b/libltdl/ltdl.c
index e2accff..d180e30 100644
--- a/libltdl/ltdl.c
+++ b/libltdl/ltdl.c
@@ -994,7 +994,7 @@ trim (char **dest, const char *str)
 
   FREE (*dest);
 
-  if (!end)
+  if (!end || end == str)
     return 1;
 
   if (len > 3 && str[0] == '\'')
diff --git a/tests/lt_dlopen.at b/tests/lalib-syntax.at
similarity index 51%
copy from tests/lt_dlopen.at
copy to tests/lalib-syntax.at
index 0aae2f8..65d6b55 100644
--- a/tests/lt_dlopen.at
+++ b/tests/lalib-syntax.at
@@ -1,6 +1,7 @@
-# lt_dlopen.at -- test libltdl functionality                -*- Autotest -*-
+# lalib-syntax.at -- parsing .la files robustly  -*- Autotest -*-
 #
 #   Copyright (C) 2009 Free Software Foundation, Inc.
+#
 #   This file is part of GNU Libtool.
 #
 # GNU Libtool is free software; you can redistribute it and/or
@@ -20,16 +21,10 @@
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 ####
 
-AT_SETUP([lt_dlopen error messages])
+AT_SETUP([syntax of .la files])
+AT_KEYWORDS([libtool])
 AT_KEYWORDS([libltdl])
 
-# The bug is not fixed:
-AT_XFAIL_IF([:])
-
-# This test only works if the system allows undefined symbols.
-eval `$LIBTOOL --config | grep '^allow_undefined_flag='`
-AT_CHECK([test unsupported != "$allow_undefined_flag" || exit 77])
-
 AT_DATA([main.c],
 [[#include <ltdl.h>
 #include <stdio.h>
@@ -63,41 +58,68 @@ main (int argc, char* argv[])
 }
 ]])
 
-AT_DATA([good-plugin.c],
-[[int foo;
-int *i = &foo;
-]])
-
-AT_DATA([missing-symbol-plugin.c],
-[[/* On systems that allow undefined symbols, this will compile,
-     but the symbol "foo" won't be found at runtime */
-extern int foo;
-int *i = &foo;
+AT_DATA([module.c],
+[[int foo (void) { return 0; }
 ]])
 
 : ${LTDLINCL="-I$abs_top_srcdir/libltdl"}
 : ${LIBLTDL="$abs_builddir/../libltdl/libltdlc.la"}
-
-CPPFLAGS="$LTDLINCL $CPPFLAGS"
-inst=`pwd`/inst
-libdir=$inst/lib
+CPPFLAGS="$CPPFLAGS $LTDLINCL"
 
 AT_CHECK([$CC $CPPFLAGS $CFLAGS -c main.c], [], [ignore], [ignore])
-for file in good-plugin.c missing-symbol-plugin.c; do
-  AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c $file],
-          [], [ignore], [ignore])
-done
-AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o good-plugin.la -rpath 
$libdir ]dnl
-        [-module -avoid-version good-plugin.lo], [], [ignore], [ignore])
-AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o 
missing-symbol-plugin.la -rpath $libdir]dnl
-        [-module -avoid-version missing-symbol-plugin.lo], [], [ignore], 
[ignore])
-
-AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o main$EXEEXT 
main.$OBJEXT ]dnl
-        [-dlopen good-plugin.la -dlopen missing-symbol-plugin.la $LIBLTDL],
+AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c module.c],
         [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o module.la module.lo ]dnl
+        [-module -avoid-version -rpath /somewhere], [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o main main.$OBJEXT 
$LIBLTDL],
+        [], [ignore], [ignore])
+
 
-LT_AT_EXEC_CHECK([./main], [], [ignore], [ignore], [./good-plugin.la])
-LT_AT_EXEC_CHECK([./main], [1], [ignore], [stderr], 
[./missing-symbol-plugin.la])
-AT_CHECK([grep 'missing symbol' stderr], [], [ignore])
+# Several bogus test cases.
+
+AT_DATA([missing-closing-quote.la],
+[[# missing-closing-quote.la - a libtool library file
+# Generated by libtool
+dlname='module.so
+library_names='module.so module.so module.so'
+old_library='module.a'
+installed=no
+shouldnotlink=yes
+libdir='/somewhere'
+]])
+
+AT_DATA([wrong-quotes.la],
+[[# wrong-quotes.la - a libtool library file
+# Generated by libtool
+dlname="module.so"
+library_names='module.so module.so module.so'
+old_library='module.a'
+installed=no
+shouldnotlink=yes
+libdir='/somewhere'
+]])
+
+AT_DATA([no-dlname.la],
+[[# no-dlname.la - a libtool library file
+# Generated by libtool
+installed=no
+shouldnotlink=yes
+libdir='/somewhere'
+]])
+
+AT_DATA([nonexistent-dlname.la],
+[[# nonexistent-dlname.la - a libtool library file
+# Generated by libtool
+dlname='does-not-exist.so'
+installed=no
+shouldnotlink=yes
+libdir='/somewhere'
+]])
+
+for file in ./missing-closing-quote.la ./wrong-quotes.la \
+           ./no-dlname.la ./nonexistent-dlname.la; do
+  LT_AT_EXEC_CHECK([./main], [1], [stdout], [ignore], [$file])
+  AT_CHECK([grep 'plugin failed to open' stdout], [], [ignore])
+done
 
 AT_CLEANUP


hooks/post-receive
-- 
GNU Libtool




reply via email to

[Prev in Thread] Current Thread [Next in Thread]