86 lines
3.9 KiB
Diff
86 lines
3.9 KiB
Diff
From ad26e0926d1fa20bfdd9b5f63cec4db9837f880a Mon Sep 17 00:00:00 2001
|
|
From: Ruben Kerkhof <ruben@rubenkerkhof.com>
|
|
Date: Wed, 18 Mar 2020 15:40:39 +0100
|
|
Subject: [PATCH] lib: fix error on MacOS
|
|
|
|
Sections use a different syntax for Mach-O executables.
|
|
|
|
Fixes:
|
|
|
|
lib/bfd.c:35:1: error: argument to 'section' attribute is not valid for this target: mach-o section specifier requires a segment and section separated by a
|
|
comma
|
|
DEFINE_MTYPE_STATIC(LIB, BFD_INFO, "BFD info")
|
|
^
|
|
./lib/memory.h:140:2: note: expanded from macro 'DEFINE_MTYPE_STATIC'
|
|
DEFINE_MTYPE_ATTR(group, name, static, desc) \
|
|
^
|
|
./lib/memory.h:110:26: note: expanded from macro 'DEFINE_MTYPE_ATTR'
|
|
__attribute__((section(".data.mtypes"))) = { { \
|
|
^
|
|
1 error generated.
|
|
|
|
Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
|
|
Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
|
|
---
|
|
lib/memory.h | 43 +++++++++++++++++++++++++++----------------
|
|
1 file changed, 27 insertions(+), 16 deletions(-)
|
|
|
|
--- a/lib/compiler.h
|
|
+++ b/lib/compiler.h
|
|
@@ -447,6 +447,12 @@ _Static_assert(sizeof(_uint64_t) == 8 &&
|
|
#define unlikely(_x) !!(_x)
|
|
#endif
|
|
|
|
+#ifdef __MACH__
|
|
+#define _DATA_SECTION(name) __attribute__((section("__DATA," name)))
|
|
+#else
|
|
+#define _DATA_SECTION(name) __attribute__((section(".data." name)))
|
|
+#endif
|
|
+
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
--- a/lib/memory.h
|
|
+++ b/lib/memory.h
|
|
@@ -69,14 +69,12 @@ struct memgroup {
|
|
|
|
#define DECLARE_MGROUP(name) extern struct memgroup _mg_##name
|
|
#define _DEFINE_MGROUP(mname, desc, ...) \
|
|
- struct memgroup _mg_##mname \
|
|
- __attribute__((section(".data.mgroups"))) = { \
|
|
- .name = desc, \
|
|
- .types = NULL, \
|
|
- .next = NULL, \
|
|
- .insert = NULL, \
|
|
- .ref = NULL, \
|
|
- __VA_ARGS__ \
|
|
+ struct memgroup _mg_##mname _DATA_SECTION("mgroups") = { \
|
|
+ .name = desc, \
|
|
+ .types = NULL, \
|
|
+ .next = NULL, \
|
|
+ .insert = NULL, \
|
|
+ .ref = NULL, \
|
|
}; \
|
|
static void _mginit_##mname(void) __attribute__((_CONSTRUCTOR(1000))); \
|
|
static void _mginit_##mname(void) \
|
|
@@ -105,13 +103,12 @@ struct memgroup {
|
|
/* end */
|
|
|
|
#define DEFINE_MTYPE_ATTR(group, mname, attr, desc) \
|
|
- attr struct memtype MTYPE_##mname[1] \
|
|
- __attribute__((section(".data.mtypes"))) = { { \
|
|
- .name = desc, \
|
|
- .next = NULL, \
|
|
- .n_alloc = 0, \
|
|
- .size = 0, \
|
|
- .ref = NULL, \
|
|
+ attr struct memtype MTYPE_##mname[1] _DATA_SECTION("mtypes") = { { \
|
|
+ .name = desc, \
|
|
+ .next = NULL, \
|
|
+ .n_alloc = 0, \
|
|
+ .size = 0, \
|
|
+ .ref = NULL, \
|
|
} }; \
|
|
static void _mtinit_##mname(void) __attribute__((_CONSTRUCTOR(1001))); \
|
|
static void _mtinit_##mname(void) \
|