<div dir="ltr">I'm trying to understand what the semantics of this function are.  When it refers to compatibility, how much compatibility is required?<div><br></div><div>To use a concrete example, consider the following architectures:</div>
<div><br></div><div><div>        eCore_x86_32_i386,</div><div>        eCore_x86_32_i486,</div><div>        eCore_x86_32_i486sx,</div><div>        eCore_x86_32_i686,</div></div><div><br></div><div>These all fall under the category of "x86 architectures".  So if someone were to call IsCompatibleMatch(arch1.core = eCore_x86_32_i386, arch2.core = eCore_x86_32_i686) would these cores be considered matching or non-matching?</div>
<div><br></div><div>The reason I ask is that when we load a PE / Coff executable, we can get from the PE file the x86_32 file part, but we can't get whether it was built specifically for a 386, 486, etc.  Currently we are just using the value eCore_x86_32_i386 since we don't know how to be more specific, but this fails to find an architecture match later on in the process.  One possible fix is to use kCore_x86_32_any, which would cause the match to succeed.  Another possible fix is to make the match function always use wildcard matching for this set of architectures.  But then later if someone needs a more specific definition of compatibility, this might not work.</div>
<div><br></div><div>Anyone have suggestions as to what is the correct fix?</div></div>