diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1f0c2ab4e..2cb396987 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - thing: [stable, beta, nightly, macos, macos-nightly, windows-msvc64, windows-msvc32, windows-gnu64, windows-gnu32] + thing: [stable, beta, nightly, macos, macos-nightly, windows-msvc64, windows-msvc32, windows-gnu64] include: - thing: stable os: ubuntu-latest @@ -42,9 +42,6 @@ jobs: - thing: windows-gnu64 os: windows-latest rust: stable-x86_64-gnu - - thing: windows-gnu32 - os: windows-latest - rust: stable-i686-gnu steps: - uses: actions/checkout@v1 with: @@ -85,7 +82,7 @@ jobs: if: contains(matrix.os, 'ubuntu') - run: RUSTFLAGS="-C link-arg=-Wl,--compress-debug-sections=zlib-gnu" cargo test --features gimli-symbolize if: contains(matrix.os, 'ubuntu') - - run: RUSTFLAGS="-Z run-dsymutil=no" cargo test --features gimli-symbolize + - run: cargo clean && RUSTFLAGS="-Z run-dsymutil=no" cargo test --features gimli-symbolize if: matrix.thing == 'macos-nightly' - run: cargo build --manifest-path crates/as-if-std/Cargo.toml diff --git a/src/symbolize/gimli.rs b/src/symbolize/gimli.rs index 2fb1fc6f3..e30a3aff2 100644 --- a/src/symbolize/gimli.rs +++ b/src/symbolize/gimli.rs @@ -617,15 +617,18 @@ pub unsafe fn resolve(what: ResolveWhat<'_>, cb: &mut dyn FnMut(&super::Symbol)) name: frame.function.map(|f| f.name.slice()), }); } - } else if let Some((object_cx, object_addr)) = cx.object.search_object_map(addr as u64) { - if let Ok(mut frames) = object_cx.dwarf.find_frames(object_addr) { - while let Ok(Some(frame)) = frames.next() { - any_frames = true; - call(Symbol::Frame { - addr: addr as *mut c_void, - location: frame.location, - name: frame.function.map(|f| f.name.slice()), - }); + } + if !any_frames { + if let Some((object_cx, object_addr)) = cx.object.search_object_map(addr as u64) { + if let Ok(mut frames) = object_cx.dwarf.find_frames(object_addr) { + while let Ok(Some(frame)) = frames.next() { + any_frames = true; + call(Symbol::Frame { + addr: addr as *mut c_void, + location: frame.location, + name: frame.function.map(|f| f.name.slice()), + }); + } } } }