Feature request for "friendship" of pointers in "C"

aotto aotto1968@t-online.de
Mon Feb 17 10:03:00 GMT 2020


Hi,

I discovered the gcc-plugin and I should be able to extend the existing 
gcc to
add a feature that "&aObj->obj" == aObj. This mean that I can suppress the
error message and just to an IMPLICIT Pointer-Cast from (struct A) to 
(struct base)

the gcc-plugin-docu is available at: 
http://gcc.gnu.org/onlinedocs/gccint/Plugins.html#Plugins

now I missing a good starting point, for example I don't know which 
callback I have to call.

→ is probably any help available ?



On 03.02.20 08:21, aotto wrote:
> Hi, the following scenario has a "definition hole" in the "C" language
>
> code example:
>
> -------------------------
> struct base {
>   ...
> };
>
> struct A {
>   struct base obj;
>   ...
> } aObj;
>
> struct B {
>   struct base obj;
>   ...
> } bObj;
>
> void method_base (struct base * hdl, ...);
>
> method_base(&aObj, ...)
> method_base(&bObj, ...)
> ------------------------
>
> - a POINTER to "A" is also a valid POINTER to "base"
>
> - a POINTER to "B" is also a valid POINTER to "base"
>
> - a POINTER to "base" is NOT a valid POINTER to "A" and "B"
>
> I require a solution for this problem WITHOUT forced pointer cast
> code and without "void* and type-check" inflation.
>
> The following solutions are acceptable:
>
> 1. "gcc" discover by its own that "base" is a "friend" of "A" and "B".
> 2. add a "frienddef" keyword like "typedef" using:
>      typedef struct base * baseP;
>      typedef struct A    * aP;
>      typedef struct P    * bP;
>      frienddef baseP aP;
>      frienddef baseP bP;
> 3. add a #PRAGMA to enable/disable this feature
> 4. add a "gcc" api to easy extend "GCC" without being FORCED
>    to "hack" the core.
>
> thanks for your help
>



More information about the Gcc-help mailing list