Skip to content
Snippets Groups Projects
Select Git revision
  • fd1232b214af43a973443aec6a2808f16ee5bf70
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

memcpy-assign.cocci

Blame
  • memcpy-assign.cocci 1.88 KiB
    //
    // Replace memcpy with struct assignment.
    //
    // Confidence: High
    // Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6.  GPLv2.
    // URL: http://coccinelle.lip6.fr/
    // Comments:
    // Options: --no-includes --include-headers
    
    virtual patch
    virtual report
    virtual context
    virtual org
    
    @r1 depends on !patch@
    identifier struct_name;
    struct struct_name to;
    struct struct_name from;
    struct struct_name *top;
    struct struct_name *fromp;
    position p;
    @@
    memcpy@p(\(&(to)\|top\), \(&(from)\|fromp\), \(sizeof(to)\|sizeof(from)\|sizeof(struct struct_name)\|sizeof(*top)\|sizeof(*fromp)\))
    
    @script:python depends on report@
    p << r1.p;
    @@
    coccilib.report.print_report(p[0],"Replace memcpy with struct assignment")
    
    @depends on context@
    position r1.p;
    @@
    *memcpy@p(...);
    
    @script:python depends on org@
    p << r1.p;
    @@
    cocci.print_main("Replace memcpy with struct assignment",p)
    
    @depends on patch@
    identifier struct_name;
    struct struct_name to;
    struct struct_name from;
    @@
    (
    -memcpy(&(to), &(from), sizeof(to));
    +to = from;
    |
    -memcpy(&(to), &(from), sizeof(from));
    +to = from;
    |
    -memcpy(&(to), &(from), sizeof(struct struct_name));
    +to = from;
    )
    
    @depends on patch@
    identifier struct_name;
    struct struct_name to;
    struct struct_name *from;
    @@
    (
    -memcpy(&(to), from, sizeof(to));
    +to = *from;
    |
    -memcpy(&(to), from, sizeof(*from));
    +to = *from;
    |
    -memcpy(&(to), from, sizeof(struct struct_name));
    +to = *from;
    )
    
    @depends on patch@
    identifier struct_name;
    struct struct_name *to;
    struct struct_name from;
    @@
    (
    -memcpy(to, &(from), sizeof(*to));
    + *to = from;
    |
    -memcpy(to, &(from), sizeof(from));
    + *to = from;
    |
    -memcpy(to, &(from), sizeof(struct struct_name));
    + *to = from;
    )
    
    @depends on patch@
    identifier struct_name;
    struct struct_name *to;
    struct struct_name *from;
    @@
    (
    -memcpy(to, from, sizeof(*to));
    + *to = *from;
    |
    -memcpy(to, from, sizeof(*from));
    + *to = *from;
    |
    -memcpy(to, from, sizeof(struct struct_name));
    + *to = *from;
    )