8000 Make unique sections for ICACHE_* variables · esp8266/Arduino@e9f587a · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e9f587a

Browse files
Make unique sections for ICACHE_* variables
Similar to PROGMEM changes, make the name of each ICACHE_* variable/fuction unique to avoid issues with section conflicts. Fixes #5115
1 parent bbaea5a commit e9f587a

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

tools/sdk/include/c_types.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,13 @@ typedef enum {
8484
#define SHMEM_ATTR
8585

8686
#ifdef ICACHE_FLASH
87-
#define ICACHE_FLASH_ATTR __attribute__((section(".irom0.text")))
88-
#define ICACHE_RAM_ATTR __attribute__((section(".iram.text")))
89-
#define ICACHE_RODATA_ATTR __attribute__((section(".irom.text")))
87+
// The following two macros cause a parameter to be enclosed in quotes
88+
// by the preopressor (i.e. for concatenating ints to strings)
89+
#define __ICACHE_STRINGIZE_NX(A) #A
90+
#define __ICACHE_STRINGIZE(A) __ICACHE_STRINGIZE_NX(A)
91+
#define ICACHE_FLASH_ATTR __attribute__((section( "\".irom0.text." __FILE__ "." __ICACHE_STRINGIZE(__LINE__) "." __ICACHE_STRINGIZE(__COUNTER__) "\"")))
92+
#define ICACHE_RAM_ATTR __attribute__((section( "\".iram.text." __FILE__ "." __ICACHE_STRINGIZE(__LINE__) "." __ICACHE_STRINGIZE(__COUNTER__) "\"")))
93+
#define ICACHE_RODATA_ATTR __attribute__((section( "\".irom.text." __FILE__ "." __ICACHE_STRINGIZE(__LINE__) "." __ICACHE_STRINGIZE(__COUNTER__) "\"")))
9094
#else
9195
#define ICACHE_FLASH_ATTR
9296
#define ICACHE_RAM_ATTR

tools/sdk/ld/eagle.app.v6.common.ld.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ SECTIONS
127127
*libwpa.a:(.literal.* .text.*)
128128
*libwpa2.a:(.literal.* .text.*)
129129
*libwps.a:(.literal.* .text.*)
130-
*(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text .irom.text.*)
130+
*(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom0.text.* .irom.text .irom.text.*)
131131
_irom0_text_end = ABSOLUTE(.);
132132
_flash_code_end = ABSOLUTE(.);
133133
} >irom0_0_seg :irom0_0_phdr
@@ -164,8 +164,8 @@ SECTIONS
164164
*(.init.literal)
165165
*(.init)
166166
*(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
167-
*.cpp.o(.iram.text)
168-
*.c.o(.iram.text)
167+
*.cpp.o(.iram.text .iram.text.*)
168+
*.c.o(.iram.text .iram.text.*)
169169
#ifdef VTABLES_IN_IRAM
170170
*(.rodata._ZTV*) /* C++ vtables */
171171
#endif

0 commit comments

Comments
 (0)
0