[2/2] devtools: check Windows export files

Message ID 20201016093806.20061-2-david.marchand@redhat.com (mailing list archive)
State Superseded, archived
Delegated to: David Marchand
Headers
Series [1/2] eal/windows: fix symbol export |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed

Commit Message

David Marchand Oct. 16, 2020, 9:38 a.m. UTC
  Updating export files (supposed to disappear at some point, but still
there) might be missed when removing symbols in the API / map files.
Add a check for this case.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 devtools/check-symbol-maps.sh | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)
  

Comments

David Marchand Oct. 16, 2020, 10:04 a.m. UTC | #1
On Fri, Oct 16, 2020 at 11:39 AM David Marchand
<david.marchand@redhat.com> wrote:
> +validate_windows_exports ()
> +{
> +    for map in $(find lib drivers -name '*.map') ; do
> +        def=${map/_version.map}_exports.def
> +        [ -e $def ] || continue

I should have inverted this logic and look for exports.def files.
I'll respin.
  

Patch

diff --git a/devtools/check-symbol-maps.sh b/devtools/check-symbol-maps.sh
index 7fdfaa11c4..4a77fde12b 100755
--- a/devtools/check-symbol-maps.sh
+++ b/devtools/check-symbol-maps.sh
@@ -7,6 +7,8 @@  cd $(dirname $0)/..
 # speed up by ignoring Unicode details
 export LC_ALL=C
 
+ret=0
+
 find_orphan_symbols ()
 {
     for map in $(find lib drivers -name '*.map') ; do
@@ -30,5 +32,25 @@  orphan_symbols=$(find_orphan_symbols)
 if [ -n "$orphan_symbols" ] ; then
     echo "Found only in symbol map file:"
     echo "$orphan_symbols" | sed 's,^,\t,'
-    exit 1
+    ret=1
+fi
+
+validate_windows_exports ()
+{
+    for map in $(find lib drivers -name '*.map') ; do
+        def=${map/_version.map}_exports.def
+        [ -e $def ] || continue
+        for sym in $(grep -v ^EXPORTS $def); do
+            grep -q $sym $map || echo $sym
+        done
+    done
+}
+
+unknown_windows_symbols=$(validate_windows_exports)
+if [ -n "$unknown_windows_symbols" ] ; then
+    echo "Found only in Windows export file:"
+    echo "$unknown_windows_symbols" | sed 's,^,\t,'
+    ret=1
 fi
+
+exit $ret