Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
7956a47b
Commit
7956a47b
authored
Jul 04, 2018
by
TerryE
Browse files
Add Cygwin support for app/lua/luac_cross make and spiffsimg
parent
8dc6eb62
Changes
3
Hide whitespace changes
Inline
Side-by-side
app/lua/compiler.h
deleted
100644 → 0
View file @
8dc6eb62
/**
* 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__
app/lua/lrotable.c
View file @
7956a47b
...
...
@@ -125,17 +125,22 @@ void luaR_getcstr(char *dest, const TString *src, size_t maxsize) {
}
}
#ifdef LUA_META_ROTABLES
/* 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 */
#ifdef LUA_META_ROTABLES
#ifdef LUA_CROSS_COMPILER
extern
char
edata
[];
int
luaR_isrotable
(
void
*
p
)
{
return
(
char
*
)
p
<=
edata
;
return
IN_RO_AREA
(
(
char
*
)
p
)
;
}
#else
#include "compiler.h"
int
luaR_isrotable
(
void
*
p
)
{
return
RODATA_START_ADDRESS
<=
(
char
*
)
p
&&
(
char
*
)
p
<=
RODATA_END_ADDRESS
;
}
#endif
#endif
app/lua/lstring.c
View file @
7956a47b
...
...
@@ -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
);
}
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment