yonghong-song added a comment.

For question

>   Is there a use case to apply that attribute to inner types automatically ?

It is possible, but I feel make attribute per record is better. For example,

  struct s1 {
   int foo;
  }; 
  struct s2 {
   struct s1 *ptr;
  } __reloc__ *s2;

If we implicitly mark struct `s1` as __reloc__, later user may have
another code like

  struct s1 *p;
  p->foo

he may be surprised by relocation.
If this is user intention to have relocation for struct `s1`,
I think explicit attribute is better.

Another question would be during IR generation can we magically generate 
relocation for `ptr->foo` in `s2->ptr->foo`? Without marking the record, this 
will require pass context sensitive information along code generation, which 
could be error prone as when to clear such context sensitive information. I 
would prefer explicit marking.  If user uses vmlinux.h, all struct/unions in 
vmlinux.h could have this attribute. If user defines their own structures for 
later relocation, I expect this should not be a huge amount and some manual 
work by users should be okay.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69759/new/

https://reviews.llvm.org/D69759



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to