-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixes: lib/command_graph.c:16: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, CMD_TOKENS, "Command Tokens"); ^ ./lib/memory.h:139:2: note: expanded from macro 'DEFINE_MTYPE_STATIC' DEFINE_MTYPE_ATTR(group, name, static, desc) \ ^ ./lib/memory.h:109:26: note: expanded from macro 'DEFINE_MTYPE_ATTR' __attribute__((section(".data.mtypes"))) = { { \ [1] FRRouting/frr#6032 [2] FRRouting/frr#15890 Signed-off-by: Georgi Valkov <[email protected]>
- Loading branch information
Showing
2 changed files
with
86 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
From ad26e0926d1fa20bfdd9b5f63cec4db9837f880a Mon Sep 17 00:00:00 2001 | ||
From: Ruben Kerkhof <[email protected]> | ||
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 <[email protected]> | ||
Signed-off-by: Georgi Valkov <[email protected]> | ||
--- | ||
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) \ |