| #! /usr/bin/env bash |
| |
| # Before a shared module's DSO is produced, a static library is built for it |
| # and passed to this script. The script generates -Wl,-u options to force |
| # the inclusion of symbol from libqemuutil.a if the shared modules need them, |
| # This is necessary because the modules may use functions not needed by the |
| # executable itself, which would cause the function to not be linked in. |
| # Then the DSO loading would fail because of the missing symbol. |
| |
| if test $# -le 2; then |
| exit 0 |
| fi |
| |
| NM=$1 |
| staticlib=$2 |
| shift 2 |
| # Find symbols defined in static libraries and undefined in shared modules |
| comm -12 \ |
| <( $NM -P -g $staticlib | awk '$2!="U"{print "-Wl,-u," $1}' | sort -u) \ |
| <( $NM -P -g "$@" | awk '$2=="U"{print "-Wl,-u," $1}' | sort -u) |