diff options
Diffstat (limited to 'utils/C++Tests/LLVM-Code-Symbols')
-rwxr-xr-x | utils/C++Tests/LLVM-Code-Symbols/check-symbols | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/utils/C++Tests/LLVM-Code-Symbols/check-symbols b/utils/C++Tests/LLVM-Code-Symbols/check-symbols index f8ff734c72..cd54eed4a0 100755 --- a/utils/C++Tests/LLVM-Code-Symbols/check-symbols +++ b/utils/C++Tests/LLVM-Code-Symbols/check-symbols @@ -5,8 +5,6 @@ import difflib def capture_2(args0, args1): import subprocess - print ' '.join(args0) - print ' '.join(args1) p0 = subprocess.Popen(args0, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE) p1 = subprocess.Popen(args1, stdin=p0.stdout, stdout=subprocess.PIPE, @@ -14,24 +12,38 @@ def capture_2(args0, args1): out,_ = p1.communicate() return out +def normalize_nm(data): + lines = data.split('\n') + lines.sort() + + # FIXME: Ignore common symbols for now. + lines = [ln for ln in lines + if not ln.startswith(' C')] + + return lines + def main(): import sys clang = sys.argv[1] flags = sys.argv[2:] - llvmgcc_nm = capture_2(["llvm-gcc"] + flags + ["-emit-llvm","-c","-o","-"], - ["llvm-nm", "-extern-only"]) - clang_nm = capture_2([clang] + flags + ["-emit-llvm","-c","-o","-"], - ["llvm-nm", "-extern-only"]) + # FIXME: Relax to include undefined symbols. + nm_args = ["llvm-nm", "-extern-only", "-defined-only"] + + llvmgcc_args = ["llvm-gcc"] + flags + ["-emit-llvm","-c","-o","-"] + clang_args = [clang] + flags + ["-emit-llvm","-c","-o","-"] + + llvmgcc_nm = capture_2(llvmgcc_args, nm_args) + clang_nm = capture_2(clang_args, nm_args) - llvmgcc_nm = llvmgcc_nm.split('\n') - clang_nm = clang_nm.split('\n') - llvmgcc_nm.sort() - clang_nm.sort() + llvmgcc_nm = normalize_nm(llvmgcc_nm) + clang_nm = normalize_nm(clang_nm) if llvmgcc_nm == clang_nm: sys.exit(0) + print ' '.join(llvmgcc_args), '|', ' '.join(nm_args) + print ' '.join(clang_args), '|', ' '.join(nm_args) for line in difflib.unified_diff(llvmgcc_nm, clang_nm, fromfile="llvm-gcc symbols", tofile="clang symbols"): |