Commit 79671aa5 authored by Johny Mattsson's avatar Johny Mattsson
Browse files

Teach Lua LTR about ESP32 drom0 location.

This fixes the rather unexpected Fatal Exception(9) crashes when executing
something as trivial as "=type(4)". Also ensured the #if/#else structure
will complain loudly next time we port to a new board.
parent b3e8eddf
/**
* define start/end address of ro data.
* different compiler with different implementation.
*/
#ifndef __COMPILER_H__
#define __COMPILER_H__
#if defined(__CC_ARM) // armcc
#if defined(__ESP8266__)
//#warning "Please check scatter file to ensure rodata is in ER_IROM1 region."
/* symbols reference to the scatter file */
extern char Image$$ER_IROM1$$Base;
extern char Image$$ER_IROM1$$Limit;
#define RODATA_START_ADDRESS (&Image$$ER_IROM1$$Base)
#define RODATA_END_ADDRESS (&Image$$ER_IROM1$$Limit)
#elif defined(__GNUC__) // gcc
//#warning "Please check linker script to ensure rodata is between _stext and _etext."
/* symbols defined in linker script */
// extern char _rodata_start;
// extern char _rodata_end;
extern char _irom0_text_start;
extern char _irom0_text_end;
// modify linker script to ensure rodata and rodata1 is between _rodata_start and _rodata_end.
// #define RODATA_START_ADDRESS (&_rodata_start)
// #define RODATA_END_ADDRESS (&_rodata_end)
#define RODATA_START_ADDRESS (&_irom0_text_start)
#define RODATA_END_ADDRESS (&_irom0_text_end)
#elif defined(__ESP32__)
extern char _drom0_text_start;
extern char _drom0_text_end;
#define RODATA_START_ADDRESS (&_drom0_text_start)
#define RODATA_END_ADDRESS (&_drom0_text_end)
#else // other compilers
/* Firstly, modify rodata's start/end address. Then, comment the line below */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment