[Bug 1941] New: Whither RTEMS_offsetof?

bugzilla-daemon at rtems.org bugzilla-daemon at rtems.org
Thu Oct 20 03:53:16 UTC 2011


https://www.rtems.org/bugzilla/show_bug.cgi?id=1941

           Summary: Whither RTEMS_offsetof?
           Product: RTEMS
           Version: HEAD
          Platform: All
        OS/Version: RTEMS
            Status: NEW
          Severity: normal
          Priority: P3
         Component: cpukit
        AssignedTo: joel.sherrill at oarcorp.com
        ReportedBy: ralf.corsepius at rtems.org


The RTEMS_offsetof macro in 
cpukit/score/include/rtems/system.h
is potentially producing bogus results.

The rationale is given in Linux's "man offsetof":

<cite>
 This  macro is useful because the sizes of the fields that compose a structure
can vary across implementations, and compilers may insert different numbers of
padding bytes between fields.  Consequently, an ele‐
       ment's offset is not necessarily given by the sum of the sizes of the
previous elements.

       A compiler error will result if member is not aligned to a byte boundary
(i.e., it is a bit field).
</cite>


rtems-gcc's > 4.6 toolchains implement "offsetof" as a define to
__builtin_offsetof in stddef.h. Older ones implement it as a macro which is
more or less identical to RTEMS_offsetof (And thus also subject to this
potential defect.).


IMO, RTEMS_offsetof should
* either be entirely removed (and use-cases be replaced by "offsetof") 
or 
* the macro's content changed to using "offsetof" instead of explicit and
potentially broken address arithmetics.

-- 
Configure bugmail: https://www.rtems.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the bugs mailing list