Skip to content

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 esp8266#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

+7-3
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

+3-3
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)