mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This creates a nice stub for further sorts of lit based build system unit tests, such as for making sure that debug info is emitted in the correct places.
60 lines
1.8 KiB
Bash
Executable File
60 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This test makes sure that if lto is enabled:
|
|
#
|
|
# 1. We have lto object files for swift in our build tree. We swift and libswiftdemangle.
|
|
# 2. These lto output files all have line tables in the swift include directory,
|
|
# but do not have full debug info. To check for the latter case, we look for
|
|
# SmallVector a commonly used data type.
|
|
# 3. We use swift-demangle since it is a much smaller executable than all of
|
|
# swift.
|
|
|
|
set -e
|
|
set -u
|
|
|
|
# REQUIRES: lto
|
|
# REQUIRES: OS=macosx
|
|
# REQUIRES: tools-debuginfo
|
|
# RUN: rm -rf %t
|
|
# RUN: mkdir -p %t
|
|
# RUN: %s %swift_obj_root %t %llvm-dwarfdump
|
|
|
|
OBJECT_ROOT=$1
|
|
TEMP_DIR=$2
|
|
DWARFDUMP=$3
|
|
|
|
SWIFT_DEMANGLE_LTO_OBJECT_FILE=$(find ${OBJECT_ROOT} -path '*/swift-demangle/swift-demangle*-lto.o' | head -1)
|
|
|
|
# Check that we have a temporary lto file for swift.
|
|
if [[ -z "${SWIFT_DEMANGLE_LTO_OBJECT_FILE}" ]]; then
|
|
echo "Failed to find a temporary debug file for swift-demangle?!"
|
|
exit 1
|
|
else
|
|
echo "Found swift-demangle LTO object!"
|
|
fi
|
|
|
|
${DWARFDUMP} -debug-dump=line ${SWIFT_DEMANGLE_LTO_OBJECT_FILE} > ${TEMP_DIR}/line.info
|
|
|
|
# Make sure that we found a line table.
|
|
if [[ -z "$(sed -n "/include_directories.*=.*include\/swift/{p;q;}" ${TEMP_DIR}/line.info)" ]] ; then
|
|
echo "Failed to find line table information for swift-demangle?!"
|
|
exit 1
|
|
else
|
|
echo "Found line table information for swift-demangle in swift LTO object"
|
|
fi
|
|
|
|
${DWARFDUMP} -debug-dump=apple_types ${SWIFT_DEMANGLE_LTO_OBJECT_FILE} > ${TEMP_DIR}/types.info
|
|
|
|
# And that it does not have full debug info
|
|
if [[ -n "$(sed -n '/Name:.*SmallVector<..*>/{p;q;}' ${TEMP_DIR}/types.info)" ]] ; then
|
|
echo "Found full debug info in the swift-demangle lto object?!"
|
|
exit 1
|
|
else
|
|
echo "Did not find full debug info for swift-demangle lto object!"
|
|
fi
|
|
|
|
echo "The swift-demangle binary only has line table debug info!"
|
|
|
|
set +u
|
|
set +e
|