79 lines · plain
1# This test uses the local debuginfod cache to test the symbolizer integration2# with the debuginfod client.3RUN: rm -rf %t4RUN: mkdir %t5 6# Produce a stripped copy of the input binary addr.exe7RUN: llvm-objcopy --strip-debug %p/Inputs/addr.exe %t/addr.exe8 9# Symbolizing the stripped binary should fail.10RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer --print-address \11RUN: --obj=%t/addr.exe 0x40054d | FileCheck %s --check-prefix=NOTFOUND12NOTFOUND: 0x40054d13NOTFOUND-NEXT: main14NOTFOUND-NEXT: ??:0:015 16# Use llvm-objcopy to write the debuginfo of the addr.exe binary to an17# appropriately-named file in the llvm debuginfod cache. The filename is18# determined by the debuginfod client's caching scheme, so it is manually19# specified here as llvmcache-\d+20RUN: llvm-objcopy --keep-section=.debug_info %p/Inputs/addr.exe \21RUN: %t/llvmcache-116505046983421105022 23# The symbolizer should call the debuginfod client library, which finds the24# debuginfo placed in the cache, enabling symbolization of the address.25RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer \26RUN: --obj=%t/addr.exe 0x40054d --debuginfod | \27RUN: FileCheck %s --check-prefix=FOUND28FOUND: {{[/\]+}}tmp{{[/\]+}}x.c:14:029 30# This should also work if the build ID is provided via flag.31RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer \32RUN: --build-id=127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d | \33RUN: FileCheck %s --check-prefix=FOUND34 35# This should also work if the build ID is provided via stdin.36RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer \37RUN: "BUILDID:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d" | \38RUN: FileCheck %s --check-prefix=FOUND39 40# Passing BUILDID twice is a syntax error.41RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer \42RUN: "BUILDID:BUILDID:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d" 2>&1 | \43RUN: FileCheck %s --check-prefix=BUILDIDBUILDID44BUILDIDBUILDID: error: 'BUILDID:BUILDID:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d': duplicate input file specification prefix45 46# CODE should work preceding build ID.47RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer \48RUN: "CODE BUILDID:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d" | \49RUN: FileCheck %s --check-prefix=FOUND50 51# The symbolizer shouldn't call the debuginfod library by default with no URLs.52RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer --print-address \53RUN: --obj=%t/addr.exe 0x40054d | FileCheck %s --check-prefix=NOTFOUND54 55# The symbolizer shouldn't call the debuginfod library if explicitly disabled.56RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer \57RUN: --no-debuginfod \58RUN: "BUILDID:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d" | \59RUN: FileCheck %s --check-prefix=NOTHINGFOUND60NOTHINGFOUND: ??61NOTHINGFOUND-NEXT: ??:0:062 63# BUILDID shouldn't be parsed if --obj is given, just like regular filenames.64RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer \65RUN: --obj=%t/addr.exe \66RUN: "BUILDID:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d" 2>&1 | \67RUN: FileCheck %s --check-prefix=BUILDIDIGNORED68BUILDIDIGNORED: error: 'BUILDID:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d': input file has already been specified69 70# Providing both BUILDID and FILE is a syntax error.71RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer \72RUN: "BUILDID:FILE:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d" 2>&1 | \73RUN: FileCheck %s --check-prefix=BUILDIDFILE74BUILDIDFILE: error: 'BUILDID:FILE:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d': duplicate input file specification prefix75RUN: env DEBUGINFOD_CACHE_PATH=%t llvm-symbolizer \76RUN: "FILE:BUILDID:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d" 2>&1 | \77RUN: FileCheck %s --check-prefix=FILEBUILDID78FILEBUILDID: error: 'FILE:BUILDID:127da749021c1fc1a58cba734a1f542cbe2b7ce4 0x40054d': duplicate input file specification prefix79