There is genuinely no OS in some cases, like people who debug the software that 
runs in a keyboard or a mouse.  And to higher-level coprocessors in a modern 
phones; the SOCs on all these devices have a cluster of processors, and only 
some of them are running an identifiable operating system, like iOS or Android.

I'll be honest, it's not often that we'll be debugging an arm64-apple-none 
target and have to decide whether an arm64-apple-ios binary should be loaded or 
not.  But we need some way to express this kind of environment.


> On Dec 6, 2018, at 3:50 PM, Zachary Turner <ztur...@google.com> wrote:
> 
> Is there some reason we can’t define vendors, environments, arches, and oses 
> for all supported use cases? That way “there is no os” would not ever be a 
> thing.
> On Thu, Dec 6, 2018 at 3:37 PM Jason Molenda via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> I think the confusing thing is when "unspecified" means "there is no OS" or 
> "there is no vendor" versus "vendor/OS is unspecified".
> 
> Imagine debugging a firmware environment where we have a cpu arch, and we may 
> have a vendor, but we specifically do not have an OS.  Say armv7-apple-none 
> (I make up "none", I don't think that's valid).  If lldb is looking for a 
> binary and it finds one with armv7-apple-ios, it should reject that binary, 
> they are incompatible.
> 
> As opposed to a triple of "armv7-*-*" saying "I know this is an armv7 system 
> target, but I don't know anything about the vendor or the OS" in which case 
> an armv7-apple-ios binary is compatible.
> 
> My naive reading of "arm64-*-*" means vendor & OS are unspecified and should 
> match anything.
> 
> My naive reading of "arm64" is that it is the same as "arm64-*-*".
> 
> I don't know what a triple string looks like where we specify "none" for a 
> field.  Is it armv7-apple-- ?  I know Triple has Unknown enums, but "Unknown" 
> is ambiguous between "I don't know it yet" versus "It not any Vendor/OS".
> 
> Some of the confusion is the textual representation of the triples, some of 
> it is the llvm Triple class not having a way to express (afaik) "do not match 
> this field against anything" aka "none".
> 
> 
> 
> > On Dec 6, 2018, at 3:19 PM, Adrian Prantl via lldb-dev 
> > <lldb-dev@lists.llvm.org> wrote:
> > 
> > I was puzzled by the behavior of ArchSpec::IsExactMatch() and 
> > IsCompatibleMatch() yesterday, so I created a couple of unit tests to 
> > document the current behavior. Most of the tests make perfect sense, but a 
> > few edge cases really don't behave like I would have expected them to.
> > 
> >>  {
> >>    ArchSpec A("arm64-*-*");
> >>    ArchSpec B("arm64-apple-ios");
> >>    ASSERT_FALSE(A.IsExactMatch(B));
> >>    // FIXME: This looks unintuitive and we should investigate whether
> >>    // this is the desired behavior.
> >>    ASSERT_FALSE(A.IsCompatibleMatch(B));
> >>  }
> >>  {
> >>    ArchSpec A("x86_64-*-*");
> >>    ArchSpec B("x86_64-apple-ios-simulator");
> >>    ASSERT_FALSE(A.IsExactMatch(B));
> >>    // FIXME: See above, though the extra environment complicates things.
> >>    ASSERT_FALSE(A.IsCompatibleMatch(B));
> >>  }
> >>  {
> >>    ArchSpec A("x86_64");
> >>    ArchSpec B("x86_64-apple-macosx10.14");
> >>    // FIXME: The exact match also looks unintuitive.
> >>    ASSERT_TRUE(A.IsExactMatch(B));
> >>    ASSERT_TRUE(A.IsCompatibleMatch(B));
> >>  }
> >> 
> > 
> > Particularly, I believe that:
> > - ArchSpec("x86_64-*-*") and ArchSpec("x86_64") should behave the same.
> > - ArchSpec("x86_64").IsExactMatch("x86_64-apple-macosx10.14") should be 
> > false.
> > - ArchSpec("x86_64-*-*").IsCompatibleMath("x86_64-apple-macosx") should be 
> > true.
> > 
> > Does anyone disagree with any of these statements?
> > 
> > I fully understand that changing any of these behaviors will undoubtedly 
> > break one or the other edge case, but I think it would be important to 
> > build on a foundation that actually makes sense if we want to be able to 
> > reason about the architecture matching logic at all.
> > 
> > let me know what you think!
> > -- adrian
> > _______________________________________________
> > lldb-dev mailing list
> > lldb-dev@lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> 
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to