Use __builtin_offsetof for non IDO builds (#1140)

* Add offsetof macro

* Change old uses of OFFSETOF with offsetof
This commit is contained in:
Anghelo Carvajal
2022-02-13 02:05:11 -03:00
committed by GitHub
parent ed0daabf98
commit 2191c8b0a0
5 changed files with 18 additions and 11 deletions
+3 -1
View File
@@ -1,6 +1,8 @@
#ifndef ICHAIN_H
#define ICHAIN_H
#include "libc/stddef.h"
typedef struct {
u32 cont: 1;
u32 type: 4;
@@ -36,7 +38,7 @@ typedef enum {
* * cont ----- ICHAIN_CONTINUE (or ICHAIN_STOP) to continue (or stop) parsing
*/
#define ICHAIN(type, member, value, cont) \
{ cont, type, OFFSETOF(Actor, member), value }
{ cont, type, offsetof(Actor, member), value }
#define ICHAIN_U8(member, val, cont) ICHAIN(ICHAINTYPE_U8, member, val, cont)
#define ICHAIN_S8(member, val, cont) ICHAIN(ICHAINTYPE_S8, member, val, cont)
+6
View File
@@ -7,4 +7,10 @@ typedef unsigned long size_t;
typedef unsigned int uintptr_t;
#ifdef __GNUC__
#define offsetof(structure, member) __builtin_offsetof (structure, member)
#else
#define offsetof(structure, member) ((size_t)&(((structure*)0)->member))
#endif
#endif
-2
View File
@@ -8,8 +8,6 @@
#define VIRTUAL_TO_PHYSICAL(addr) (u32)((u8*)(addr) - 0x80000000)
#define SEGMENTED_TO_VIRTUAL(addr) PHYSICAL_TO_VIRTUAL(gSegments[SEGMENT_NUMBER(addr)] + SEGMENT_OFFSET(addr))
#define OFFSETOF(structure, member) ((size_t)&(((structure*)0)->member))
#define SQ(x) ((x)*(x))
#define ABS(x) ((x) >= 0 ? (x) : -(x))
#define DECR(x) ((x) == 0 ? 0 : --(x))