VirtualBox

source: vbox/trunk/src/bldprogs/checkUndefined.sh@ 25275

Last change on this file since 25275 was 20962, checked in by vboxsync, 15 years ago

checkUndefined.sh: for solaris too.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.3 KB
Line 
1#! /bin/sh
2
3# Copyright (C) 2006-2007 Sun Microsystems, Inc.
4#
5# This file is part of VirtualBox Open Source Edition (OSE), as
6# available from http://www.virtualbox.org. This file is free software;
7# you can redistribute it and/or modify it under the terms of the GNU
8# General Public License (GPL) as published by the Free Software
9# Foundation, in version 2 as it comes in the "COPYING" file of the
10# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
11# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
12#
13# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
14# Clara, CA 95054 USA or visit http://www.sun.com if you need
15# additional information or have any questions.
16#
17
18# Compare undefined symbols in a shared or static object against a new-line
19# separated list of grep patterns in a text file.
20#
21# Usage: /bin/sh <script name> <object> <allowed undefined symbols> [--static]
22#
23# Currently only works for native objects on Linux platforms
24
25echoerr()
26{
27 echo $* 1>&2
28}
29
30hostos=$1
31target=$2
32symbols=$3
33static=$4
34
35if test $# -lt 3 || test $# -gt 4 || test ! -r "$target" || test ! -r "$symbols"; then
36 if test ! -r "$target"; then
37 echoerr "$0: '$target' not readable"
38 elif test ! -r "$symbols"; then
39 echoerr "$0: '$symbols' not readable"
40 else
41 echoerr "$0: Wrong number of arguments"
42 fi
43 args_ok="no"
44fi
45
46if test $# -eq 4 && test "$static" != "--static"; then
47 args_ok="no"
48fi
49
50if test "$args_ok" = "no"; then
51 echoerr "Usage: $0 <object> <allowed undefined symbols> [--static]"
52 exit 1
53fi
54
55if test "$hostos" = "solaris"; then
56 objdumpbin=/usr/sfw/bin/gobjdump
57 grepbin=/usr/sfw/bin/ggrep
58elif test "$hostos" = "linux"; then
59 objdumpbin=`which objdump`
60 grepbin=`which grep`
61else
62 echoerr "$0: '$hostos' not a valid hostos string. supported 'linux' 'solaris'"
63 exit 1
64fi
65
66command="-T"
67if test "$static" = "--static"; then
68 command="-t"
69fi
70
71if test ! -x "$objdumpbin"; then
72 echoerr "$0: '$objdumpbin' not found or not executable."
73 exit 1
74fi
75
76undefined=`$objdumpbin $command $target | $grepbin '*UND*' | $grepbin -v -f $symbols | sed -e 's/^.*[ ]\(.*\)/\1/'`
77num_undef=`echo $undefined | wc -w`
78
79if test $num_undef -ne 0; then
80 echoerr "$0: following symbols not defined in $symbols:"
81 echoerr "$undefined"
82 exit 1
83fi
84# Return code
85exit 0
86
87
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use