Den 2010-09-30 23:29 skrev Ralf Wildenhues:
* Peter Rosin wrote on Thu, Sep 30, 2010 at 10:53:13PM CEST:
Den 2010-09-30 21:25 skrev Ralf Wildenhues:
* Peter Rosin wrote on Thu, Sep 30, 2010 at 09:06:16PM CEST:
Ok to push when I have tested with various MSVC versions?
I guess, but you should really add testsuite exposure.
I don't know any controlled way to create a pair of object
files that clash, should I just fake it and extract
global_symbol_pipe from the libtool script and feed it
example output that clashes, and check that the symbol
isn't hidden?
I guess. Hmm, from your first description I thought this
was easier to reproduce.
I'm perhaps not fluent enough in PE internals?
Anyway, is this test case good enough? Should I find a better
way to skip on non-dumpbin runs? How?
Cheers,
Peter
From 8189aca834f90ab5d439c58370fcceb699eb0bef Mon Sep 17 00:00:00 2001
From: Peter Rosin p...@lysator.liu.se
Date: Fri, 1 Oct 2010 13:32:32 +0200
Subject: [PATCH] msvc: handle symbols from different files independently.
* libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS)
dumpbin, lt_cv_sys_global_symbol_pipe: Make all sections
viable for symbol extraction again when the symbols from a new
file starts. Fixes tests/tagdemo-make.test for MSVC 10.
* tests/dumpbin-symbols.at: New test, making sure we don't
regress.
* Makefile.am (TESTSUITE_AT): Update.
Signed-off-by: Peter Rosin p...@lysator.liu.se
---
ChangeLog| 11 +
Makefile.am |3 +-
libltdl/m4/libtool.m4|1 +
tests/dumpbin-symbols.at | 106 ++
4 files changed, 120 insertions(+), 1 deletions(-)
create mode 100644 tests/dumpbin-symbols.at
diff --git a/ChangeLog b/ChangeLog
index a7aa489..a0ed532 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2010-09-30 Peter Rosin p...@lysator.liu.se
+
+ msvc: handle symbols from different files independently.
+ * libltdl/m4/libtool.m4 (_LT_CMD_GLOBAL_SYMBOLS)
+ dumpbin, lt_cv_sys_global_symbol_pipe: Make all sections
+ viable for symbol extraction again when the symbols from a new
+ file starts. Fixes tests/tagdemo-make.test for MSVC 10.
+ * tests/dumpbin-symbols.at: New test, making sure we don't
+ regress.
+ * Makefile.am (TESTSUITE_AT): Update.
+
2010-09-27 Peter Rosin p...@lysator.liu.se
tests: check if sys_lib_search_path_spec works on MSVC.
diff --git a/Makefile.am b/Makefile.am
index 6e29a29..c4aec10 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -504,7 +504,8 @@ TESTSUITE_AT= tests/testsuite.at \
tests/pic_flag.at \
tests/darwin.at \
tests/deplibs-mingw.at \
- tests/sysroot.at
+ tests/sysroot.at \
+ tests/dumpbin-symbols.at
EXTRA_DIST += $(srcdir)/$(TESTSUITE) $(TESTSUITE_AT)
$(srcdir)/tests/package.m4
diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4
index fd732d0..967dd38 100644
--- a/libltdl/m4/libtool.m4
+++ b/libltdl/m4/libtool.m4
@@ -3645,6 +3645,7 @@ for ac_symprfx in _; do
# which start with @ or ?.
lt_cv_sys_global_symbol_pipe=$AWK ['\
{last_section=section; section=\$ 3};\
+ /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};\
/Section length .*#relocs.*(pick any)/{hide[last_section]=1};\
\$ 0!~/External *\|/{next};\
/ 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};\
diff --git a/tests/dumpbin-symbols.at b/tests/dumpbin-symbols.at
new file mode 100644
index 000..048560a
--- /dev/null
+++ b/tests/dumpbin-symbols.at
@@ -0,0 +1,106 @@
+# dumpbin-symbols.at -- libtool dumpbin -symbols support-*- Autotest -*-
+
+# Copyright (C) 2010 Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+AT_BANNER([Symbol extraction])
+AT_SETUP([dumpbin -symbols section hiding])
+
+# I don't know of a stable way to create a pair of objects that
+# exhibits the potential problem, so this test fakes it by
+# testing with output from a case that do have the potential
+# problem.
+
+eval `$LIBTOOL --config | $EGREP '^(global_symbol_pipe)='`
+