Add Cygwin support for app/lua/luac_cross make and spiffsimg
This commit is contained in:
parent
8dc6eb62df
commit
7956a47bb4
|
@ -1,47 +0,0 @@
|
|||
/**
|
||||
* define start/end address of ro data.
|
||||
* different compiler with different implementation.
|
||||
*/
|
||||
|
||||
#ifndef __COMPILER_H__
|
||||
#define __COMPILER_H__
|
||||
|
||||
#if defined(__CC_ARM) // armcc
|
||||
|
||||
//#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)
|
||||
|
||||
#else // other compilers
|
||||
|
||||
/* Firstly, modify rodata's start/end address. Then, comment the line below */
|
||||
#error "Please modify RODATA_START_ADDRESS and RODATA_END_ADDRESS below."
|
||||
|
||||
/* Perhaps you can use start/end address of flash */
|
||||
#define RODATA_START_ADDRESS ((char*)0x40200000)
|
||||
#define RODATA_END_ADDRESS ((char*)0x40280000)
|
||||
|
||||
#endif
|
||||
|
||||
#endif // __COMPILER_H__
|
||||
|
|
@ -125,17 +125,22 @@ void luaR_getcstr(char *dest, const TString *src, size_t maxsize) {
|
|||
}
|
||||
}
|
||||
|
||||
/* Return 1 if the given pointer is a rotable */
|
||||
#ifdef LUA_META_ROTABLES
|
||||
#ifdef LUA_CROSS_COMPILER
|
||||
extern char edata[];
|
||||
/* Set in RO check depending on platform */
|
||||
#if defined(LUA_CROSS_COMPILER) && defined(__CYGWIN__)
|
||||
extern char __end__[];
|
||||
#define IN_RO_AREA(p) ((p) < __end__)
|
||||
#elif defined(LUA_CROSS_COMPILER)
|
||||
extern char _edata[];
|
||||
#define IN_RO_AREA(p) ((p) < _edata)
|
||||
#else /* xtensa tool chain for ESP target */
|
||||
extern char _irom0_text_start[];
|
||||
extern char _irom0_text_end[];
|
||||
#define IN_RO_AREA(p) ((p) >= _irom0_text_start && (p) <= _irom0_text_end)
|
||||
#endif
|
||||
|
||||
/* Return 1 if the given pointer is a rotable */
|
||||
int luaR_isrotable(void *p) {
|
||||
return (char*)p <= edata;
|
||||
}
|
||||
#else
|
||||
#include "compiler.h"
|
||||
int luaR_isrotable(void *p) {
|
||||
return RODATA_START_ADDRESS <= (char*)p && (char*)p <= RODATA_END_ADDRESS;
|
||||
return IN_RO_AREA((char *)p);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -80,13 +80,16 @@ static TString *newlstr (lua_State *L, const char *str, size_t l,
|
|||
return ts;
|
||||
}
|
||||
|
||||
#include "compiler.h"
|
||||
static int lua_is_ptr_in_ro_area(const char *p) {
|
||||
#ifdef LUA_CROSS_COMPILER
|
||||
return 0;
|
||||
#else
|
||||
return p >= RODATA_START_ADDRESS && p <= RODATA_END_ADDRESS;
|
||||
#define IN_RO_AREA(p) (0)
|
||||
#else /* xtensa tool chain for ESP */
|
||||
extern char _irom0_text_start[];
|
||||
extern char _irom0_text_end[];
|
||||
#define IN_RO_AREA(p) ((p) >= _irom0_text_start && (p) <= _irom0_text_end)
|
||||
#endif
|
||||
|
||||
int lua_is_ptr_in_ro_area(const char *p) {
|
||||
return IN_RO_AREA(p);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue