BUG: SystemABI C_LONG and C_LONGLONG are the same
Ty Young
youngty1997 at gmail.com
Mon May 18 11:55:47 UTC 2020
On 5/18/20 6:09 AM, Maurizio Cimadamore wrote:
>
> On 18/05/2020 11:57, Ty Young wrote:
>> In order to drop attributes you need to know which attributes to drop
>> though, right? If someone is marking a layout with their own
>> attributes willy nilly this may be impossible unless they provide the
>> key strings. I also think it's a bit dangerous simply because they
>> could mark a layout with the attributes but have the values be
>> invalid. I can already see someone using a `long` layout that has an
>> attribute "class" that points to byte.class.
>>
>>
>> The only way I can think of solving this is by introducing
>> "ContableGroup". You could then have a method that strips a layout of
>> all attributes but those within the supplied group. Doing this also
>> has the added benefit that a signature could be added to validate who
>> the attributes belong to.
>
> I believe we are in overthinking territory. Why would you want to
> compare layouts _and_ discard only few attributes but not all?
Discarding *ALL* attributes would just get you back to
SystemABI.C_<TYPE>, no? You need a way to say "I want the layout as if
it had *THESE* attributes and *NOTHING* else". Otherwise comparing will
always fail.
> My suspicion is that you would simply want to check if some layout is
> e.g. the layout for a NativeLong - in which case (by far) the easiest
> way to do that is to add a layout attribute which says
> (carrier=NativeLong.class) and then just check for that (e.g. w/o
> doing a full blown layout comparison).
What if some other API already uses that attribute? Or if it's set to
something completely invalid?
Maybe it's just me, but I find attributes like "class" and/or "handle"
to be, while generic, at least safer... at least for everything but
long(and similar).
>
> Maurizio
>
More information about the panama-dev
mailing list