Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
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
Show 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) {
}
}
/* 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
;
}
#else
#include "compiler.h"
/* 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
RODATA_START_ADDRESS
<=
(
char
*
)
p
&&
(
char
*
)
p
<=
RODATA_END_ADDRESS
;
return
IN_RO_AREA
(
(
char
*
)
p
)
;
}
#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