Skip to content

Ignore lambda numbers/hashes when diffing binaries #47

@dmachaj

Description

@dmachaj

I am analyzing a binary that is moving from C++17 to C++20 mode to see why and where it changed size. This binary has a lot of lambdas in it. Unfortunately the MSVC naming pattern for lambdas changes based on the mode so the diff is almost impossible because every lambda is showing up as only-in-base or only-in-comparison. That leaves me unable to see the true diff.

The lambda names have a hash (cpp17) or incrementing number (cpp20) in the name. These can hopefully be ignored by the comparison while still giving accurate results.

Here is an anonymized example of what I'm observing (where HASH is a long pseudo-random string)

cpp17:

winrt::Contoso::implementation::MyClass::MyFunction::_l2::<lambda_HASH>::<lambda_HASH>::operator()()const

cpp20:

winrt::Contoso::implementation::MyClass::MyFunction::_l2::<lambda_1>::<lambda_1>::operator()()const

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions