Skip to content

Ignore lambda numbers/hashes when diffing binaries #47

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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