David Zeuthen | 21e9526 | 2016-07-27 17:58:40 -0400 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | # |
| 4 | # Copyright (C) 2016 The Android Open Source Project |
| 5 | # |
David Zeuthen | c612e2e | 2016-09-16 16:44:08 -0400 | [diff] [blame] | 6 | # Permission is hereby granted, free of charge, to any person |
| 7 | # obtaining a copy of this software and associated documentation |
| 8 | # files (the "Software"), to deal in the Software without |
| 9 | # restriction, including without limitation the rights to use, copy, |
| 10 | # modify, merge, publish, distribute, sublicense, and/or sell copies |
| 11 | # of the Software, and to permit persons to whom the Software is |
| 12 | # furnished to do so, subject to the following conditions: |
David Zeuthen | 21e9526 | 2016-07-27 17:58:40 -0400 | [diff] [blame] | 13 | # |
David Zeuthen | c612e2e | 2016-09-16 16:44:08 -0400 | [diff] [blame] | 14 | # The above copyright notice and this permission notice shall be |
| 15 | # included in all copies or substantial portions of the Software. |
David Zeuthen | 21e9526 | 2016-07-27 17:58:40 -0400 | [diff] [blame] | 16 | # |
David Zeuthen | c612e2e | 2016-09-16 16:44:08 -0400 | [diff] [blame] | 17 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| 18 | # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| 19 | # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| 20 | # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
| 21 | # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
| 22 | # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| 23 | # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| 24 | # SOFTWARE. |
David Zeuthen | 21e9526 | 2016-07-27 17:58:40 -0400 | [diff] [blame] | 25 | # |
| 26 | |
| 27 | # This shell-script checks the symbols in libavb_host.a and fails |
| 28 | # if a reference not starting with avb_ is referenced. It's intended |
| 29 | # to catch mistakes where the standard C library is inadvertently |
| 30 | # used. |
| 31 | |
| 32 | set -e |
| 33 | |
| 34 | SYMBOLS_FILE=$(mktemp /tmp/libavb_host_symbols.XXXXXXXXXX) |
| 35 | |
| 36 | trap "rm -f '${SYMBOLS_FILE}'" EXIT |
| 37 | |
| 38 | readelf --symbols --wide "${ANDROID_HOST_OUT}/obj/STATIC_LIBRARIES/libavb_host_intermediates/libavb_host.a" | \ |
| 39 | awk '$7 == "UND" && $8 != "" {print $8}' | \ |
| 40 | grep -v ^avb_ | \ |
| 41 | sort -u > "${SYMBOLS_FILE}" |
| 42 | |
| 43 | # If this file is non-empty, it means that the library is using |
| 44 | # symbols not starting with "avb_". |
| 45 | if [ -s "${SYMBOLS_FILE}" ] ; then |
| 46 | echo "ERROR: $0: Unexpected symbols in libavb_host:" >&2 |
| 47 | cat "${SYMBOLS_FILE}" >&2 |
| 48 | exit 1 |
| 49 | fi |