diff --git a/trunk/research/arm/jmp.cpp b/trunk/research/arm/jmp.cpp new file mode 100644 index 000000000..9438caa2c --- /dev/null +++ b/trunk/research/arm/jmp.cpp @@ -0,0 +1,48 @@ +/* + arm-linux-gnueabi-g++ -o jmp jmp.cpp -static + arm-linux-gnueabi-strip jmp +*/ +#include +#include +#include + +jmp_buf env_func1, env_func2; + +int sum = 0; + +void func1() { + int ret = setjmp(env_func1); + printf("setjmp func1 ret=%d\n", ret); + + if (sum <= 0) { + return; + } + + if (sum++ > 1000) { + return; + } + + // jmp to func2 + longjmp(env_func2, 3); +} + +void func2() { + int ret = setjmp(env_func2); + printf("setjmp func2 ret=%d\n", ret); + + if (sum <= 0) { + return; + } + + // jmp to func1 + longjmp(env_func1, 2); +} + +int main(int argc, char** argv) { + printf("hello, setjmp/longjmp!\n"); + func1(); + sum++; + func2(); + printf("jmp finished, sum=%d\n", sum); + return 0; +} diff --git a/trunk/research/arm/jmp_sp.cpp b/trunk/research/arm/jmp_sp.cpp new file mode 100644 index 000000000..9a0749c43 --- /dev/null +++ b/trunk/research/arm/jmp_sp.cpp @@ -0,0 +1,38 @@ +/* + arm-linux-gnueabi-g++ -g -o jmp_sp jmp_sp.cpp -static + arm-linux-gnueabi-strip jmp_sp +*/ +#include +#include +#include + +int main(int argc, char** argv) { +#if defined(__amd64__) || defined(__x86_64__) + printf("x86_64 sizeof(long int)=%d, sizeof(long)=%d, sizeof(int)=%d\n", (int)sizeof(long int), (int)sizeof(long), (int)sizeof(int)); +#else + printf("arm sizeof(long int)=%d, sizeof(long)=%d, sizeof(int)=%d\n", (int)sizeof(long int), (int)sizeof(long), (int)sizeof(int)); +#endif + + jmp_buf env; + + int ret = setjmp(env); + printf("setjmp func1 ret=%d\n", ret); + +#if defined(__amd64__) || defined(__x86_64__) + // typedef lint64_t __jmp_buf[8]; + printf("after setjmp: "); + for (int i = 0; i < 8; i++) { + printf("env[%d]=%#x, ", i, (int)env[0].__jmpbuf[i]); + } + printf("\n"); +#else + // typedef int32_t __jmp_buf[64] __attribute__((__aligned__ (8))); + printf("after setjmp: "); + for (int i = 0; i < 64; i++) { + printf("env[%d]=%#x, ", i, (int)env[0].__jmpbuf[i]); + } + printf("\n"); +#endif + + return 0; +} diff --git a/trunk/research/arm/test.cpp b/trunk/research/arm/test.cpp new file mode 100644 index 000000000..e0a0645a9 --- /dev/null +++ b/trunk/research/arm/test.cpp @@ -0,0 +1,10 @@ +/* + arm-linux-gnueabi-g++ -o test test.cpp -static + arm-linux-gnueabi-strip test +*/ +#include + +int main(int argc, char** argv) { + printf("hello, arm!\n"); + return 0; +} diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index 17693dd55..b7312227e 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // current release version #define VERSION_MAJOR "0" #define VERSION_MINOR "9" -#define VERSION_REVISION "15" +#define VERSION_REVISION "16" #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION // server info. #define RTMP_SIG_SRS_KEY "srs"