正在显示
7 个修改的文件
包含
63 行增加
和
48 行删除
| @@ -43,29 +43,6 @@ echo "" >> $SRS_AUTO_HEADERS_H | @@ -43,29 +43,6 @@ echo "" >> $SRS_AUTO_HEADERS_H | ||
| 43 | ##################################################################################### | 43 | ##################################################################################### |
| 44 | # generate auto headers file, depends on the finished of options.sh | 44 | # generate auto headers file, depends on the finished of options.sh |
| 45 | ##################################################################################### | 45 | ##################################################################################### |
| 46 | -if [ $SRS_ARM_UBUNTU12 = YES ]; then | ||
| 47 | - __SrsArmCC="arm-linux-gnueabi-gcc"; | ||
| 48 | - __SrsArmGCC="arm-linux-gnueabi-gcc"; | ||
| 49 | - __SrsArmCXX="arm-linux-gnueabi-g++"; | ||
| 50 | - __SrsArmAR="arm-linux-gnueabi-ar"; | ||
| 51 | - __SrsArmLD="arm-linux-gnueabi-ld"; | ||
| 52 | - __SrsArmRANDLIB="arm-linux-gnueabi-ranlib"; | ||
| 53 | -fi | ||
| 54 | -if [ $SRS_MIPS_UBUNTU12 = YES ]; then | ||
| 55 | - __SrsArmCC="mipsel-openwrt-linux-gcc"; | ||
| 56 | - __SrsArmGCC="mipsel-openwrt-linux-gcc"; | ||
| 57 | - __SrsArmCXX="mipsel-openwrt-linux-g++"; | ||
| 58 | - __SrsArmAR="mipsel-openwrt-linux-ar"; | ||
| 59 | - __SrsArmLD="mipsel-openwrt-linux-ld"; | ||
| 60 | - __SrsArmRANDLIB="mipsel-openwrt-linux-ranlib"; | ||
| 61 | -fi | ||
| 62 | -# the arm-ubuntu12 options for make for depends | ||
| 63 | -if [[ -z $SrsArmCC ]]; then SrsArmCC=$__SrsArmCC; fi | ||
| 64 | -if [[ -z $SrsArmGCC ]]; then SrsArmGCC=$__SrsArmGCC; fi | ||
| 65 | -if [[ -z $SrsArmCXX ]]; then SrsArmCXX=$__SrsArmCXX; fi | ||
| 66 | -if [[ -z $SrsArmAR ]]; then SrsArmAR=$__SrsArmAR; fi | ||
| 67 | -if [[ -z $SrsArmLD ]]; then SrsArmLD=$__SrsArmLD; fi | ||
| 68 | -if [[ -z $SrsArmRANDLIB ]]; then SrsArmRANDLIB=$__SrsArmRANDLIB; fi | ||
| 69 | # write to source file | 46 | # write to source file |
| 70 | if [ $SRS_CROSS_BUILD = YES ]; then | 47 | if [ $SRS_CROSS_BUILD = YES ]; then |
| 71 | echo "cc=$SrsArmCC gcc=$SrsArmGCC g++=$SrsArmCXX ar=$SrsArmAR ld=$SrsArmLD randlib=$SrsArmRANDLIB" | 48 | echo "cc=$SrsArmCC gcc=$SrsArmGCC g++=$SrsArmCXX ar=$SrsArmAR ld=$SrsArmLD randlib=$SrsArmRANDLIB" |
| @@ -38,7 +38,11 @@ function Ubuntu_prepare() | @@ -38,7 +38,11 @@ function Ubuntu_prepare() | ||
| 38 | else | 38 | else |
| 39 | uname -v|grep Ubuntu >/dev/null 2>&1 | 39 | uname -v|grep Ubuntu >/dev/null 2>&1 |
| 40 | ret=$?; if [[ 0 -ne $ret ]]; then | 40 | ret=$?; if [[ 0 -ne $ret ]]; then |
| 41 | - return 0; | 41 | + # for debian, we think it's ubuntu also. |
| 42 | + # for example, the wheezy/sid which is debian armv7 linux, can not identified by uname -v. | ||
| 43 | + if [[ ! -f /etc/debian_version ]]; then | ||
| 44 | + return 0; | ||
| 45 | + fi | ||
| 42 | fi | 46 | fi |
| 43 | fi | 47 | fi |
| 44 | 48 | ||
| @@ -378,7 +382,7 @@ fi | @@ -378,7 +382,7 @@ fi | ||
| 378 | ##################################################################################### | 382 | ##################################################################################### |
| 379 | if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then | 383 | if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then |
| 380 | # check the cross build flag file, if flag changed, need to rebuild the st. | 384 | # check the cross build flag file, if flag changed, need to rebuild the st. |
| 381 | - _ST_MAKE=linux-debug && _ST_EXTRA_CFLAGS="EXTRA_CFLAGS=-DMD_HAVE_EPOLL" | 385 | + _ST_MAKE=linux-debug && _ST_EXTRA_CFLAGS="-DMD_HAVE_EPOLL" |
| 382 | # for osx, use darwin for st, donot use epoll. | 386 | # for osx, use darwin for st, donot use epoll. |
| 383 | if [ $OS_IS_OSX = YES ]; then | 387 | if [ $OS_IS_OSX = YES ]; then |
| 384 | _ST_MAKE=darwin-debug && _ST_EXTRA_CFLAGS="EXTRA_CFLAGS=-DMD_HAVE_KQUEUE" | 388 | _ST_MAKE=darwin-debug && _ST_EXTRA_CFLAGS="EXTRA_CFLAGS=-DMD_HAVE_KQUEUE" |
| @@ -399,7 +403,7 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then | @@ -399,7 +403,7 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then | ||
| 399 | patch -p0 < ../../3rdparty/patches/1.st.arm.patch && | 403 | patch -p0 < ../../3rdparty/patches/1.st.arm.patch && |
| 400 | patch -p0 < ../../3rdparty/patches/3.st.osx.kqueue.patch && | 404 | patch -p0 < ../../3rdparty/patches/3.st.osx.kqueue.patch && |
| 401 | patch -p0 < ../../3rdparty/patches/4.st.disable.examples.patch && | 405 | patch -p0 < ../../3rdparty/patches/4.st.disable.examples.patch && |
| 402 | - make ${_ST_MAKE} CC=${SrsArmCC} AR=${SrsArmAR} LD=${SrsArmLD} RANDLIB=${SrsArmRANDLIB} ${_ST_EXTRA_CFLAGS} && | 406 | + make ${_ST_MAKE} CC=${SrsArmCC} AR=${SrsArmAR} LD=${SrsArmLD} RANDLIB=${SrsArmRANDLIB} EXTRA_CFLAGS="${_ST_EXTRA_CFLAGS}" && |
| 403 | cd .. && rm -rf st && ln -sf st-1.9/obj st && | 407 | cd .. && rm -rf st && ln -sf st-1.9/obj st && |
| 404 | cd .. && touch ${SRS_OBJS}/_flag.st.cross.build.tmp | 408 | cd .. && touch ${SRS_OBJS}/_flag.st.cross.build.tmp |
| 405 | ) | 409 | ) |
| @@ -416,7 +420,7 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then | @@ -416,7 +420,7 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then | ||
| 416 | patch -p0 < ../../3rdparty/patches/1.st.arm.patch && | 420 | patch -p0 < ../../3rdparty/patches/1.st.arm.patch && |
| 417 | patch -p0 < ../../3rdparty/patches/3.st.osx.kqueue.patch && | 421 | patch -p0 < ../../3rdparty/patches/3.st.osx.kqueue.patch && |
| 418 | patch -p0 < ../../3rdparty/patches/4.st.disable.examples.patch && | 422 | patch -p0 < ../../3rdparty/patches/4.st.disable.examples.patch && |
| 419 | - make ${_ST_MAKE} ${_ST_EXTRA_CFLAGS} && | 423 | + make ${_ST_MAKE} EXTRA_CFLAGS="${_ST_EXTRA_CFLAGS}" && |
| 420 | cd .. && rm -rf st && ln -sf st-1.9/obj st && | 424 | cd .. && rm -rf st && ln -sf st-1.9/obj st && |
| 421 | cd .. && rm -f ${SRS_OBJS}/_flag.st.cross.build.tmp | 425 | cd .. && rm -f ${SRS_OBJS}/_flag.st.cross.build.tmp |
| 422 | ) | 426 | ) |
trunk/auto/setup_variables.sh
0 → 100644
| 1 | +#!/bin/bash | ||
| 2 | + | ||
| 3 | +# when options parsed, setup some variables, then build the depends. | ||
| 4 | + | ||
| 5 | +# when arm specified, setup the cross build variables. | ||
| 6 | +if [ $SRS_ARM_UBUNTU12 = YES ]; then | ||
| 7 | + __SrsArmCC="arm-linux-gnueabi-gcc"; | ||
| 8 | + __SrsArmGCC="arm-linux-gnueabi-gcc"; | ||
| 9 | + __SrsArmCXX="arm-linux-gnueabi-g++"; | ||
| 10 | + __SrsArmAR="arm-linux-gnueabi-ar"; | ||
| 11 | + __SrsArmLD="arm-linux-gnueabi-ld"; | ||
| 12 | + __SrsArmRANDLIB="arm-linux-gnueabi-ranlib"; | ||
| 13 | +fi | ||
| 14 | + | ||
| 15 | +if [ $SRS_MIPS_UBUNTU12 = YES ]; then | ||
| 16 | + __SrsArmCC="mipsel-openwrt-linux-gcc"; | ||
| 17 | + __SrsArmGCC="mipsel-openwrt-linux-gcc"; | ||
| 18 | + __SrsArmCXX="mipsel-openwrt-linux-g++"; | ||
| 19 | + __SrsArmAR="mipsel-openwrt-linux-ar"; | ||
| 20 | + __SrsArmLD="mipsel-openwrt-linux-ld"; | ||
| 21 | + __SrsArmRANDLIB="mipsel-openwrt-linux-ranlib"; | ||
| 22 | +fi | ||
| 23 | + | ||
| 24 | +# the arm-ubuntu12 options for make for depends | ||
| 25 | +if [[ -z $SrsArmCC ]]; then SrsArmCC=$__SrsArmCC; fi | ||
| 26 | +if [[ -z $SrsArmGCC ]]; then SrsArmGCC=$__SrsArmGCC; fi | ||
| 27 | +if [[ -z $SrsArmCXX ]]; then SrsArmCXX=$__SrsArmCXX; fi | ||
| 28 | +if [[ -z $SrsArmAR ]]; then SrsArmAR=$__SrsArmAR; fi | ||
| 29 | +if [[ -z $SrsArmLD ]]; then SrsArmLD=$__SrsArmLD; fi | ||
| 30 | +if [[ -z $SrsArmRANDLIB ]]; then SrsArmRANDLIB=$__SrsArmRANDLIB; fi |
| @@ -23,6 +23,9 @@ BLACK="\\033[0m" | @@ -23,6 +23,9 @@ BLACK="\\033[0m" | ||
| 23 | # parse options, exit with error when parse options invalid. | 23 | # parse options, exit with error when parse options invalid. |
| 24 | . auto/options.sh | 24 | . auto/options.sh |
| 25 | 25 | ||
| 26 | +# setup variables when options parsed. | ||
| 27 | +. auto/setup_variables.sh | ||
| 28 | + | ||
| 26 | # clean the exists, when not export srs-librtmp. | 29 | # clean the exists, when not export srs-librtmp. |
| 27 | # do this only when the options is ok. | 30 | # do this only when the options is ok. |
| 28 | if [[ -f Makefile ]]; then | 31 | if [[ -f Makefile ]]; then |
| @@ -103,6 +103,7 @@ | @@ -103,6 +103,7 @@ | ||
| 103 | 3C689FA01AB6AAC800C9CEEE /* stk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9C1AB6AAC800C9CEEE /* stk.c */; }; | 103 | 3C689FA01AB6AAC800C9CEEE /* stk.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9C1AB6AAC800C9CEEE /* stk.c */; }; |
| 104 | 3C689FA11AB6AAC800C9CEEE /* sync.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9D1AB6AAC800C9CEEE /* sync.c */; }; | 104 | 3C689FA11AB6AAC800C9CEEE /* sync.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C689F9D1AB6AAC800C9CEEE /* sync.c */; }; |
| 105 | 3C82802C1BAFF8CC004A1794 /* srs_kafka_stack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C82802A1BAFF8CC004A1794 /* srs_kafka_stack.cpp */; }; | 105 | 3C82802C1BAFF8CC004A1794 /* srs_kafka_stack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C82802A1BAFF8CC004A1794 /* srs_kafka_stack.cpp */; }; |
| 106 | + 3CB25C2A1BB269FD00C97A63 /* jmp_sp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CB25C291BB269FD00C97A63 /* jmp_sp.cpp */; }; | ||
| 106 | 3CC52DD81ACE4023006FEB01 /* srs_utest_amf0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CC52DCA1ACE4023006FEB01 /* srs_utest_amf0.cpp */; }; | 107 | 3CC52DD81ACE4023006FEB01 /* srs_utest_amf0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CC52DCA1ACE4023006FEB01 /* srs_utest_amf0.cpp */; }; |
| 107 | 3CC52DD91ACE4023006FEB01 /* srs_utest_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CC52DCC1ACE4023006FEB01 /* srs_utest_config.cpp */; }; | 108 | 3CC52DD91ACE4023006FEB01 /* srs_utest_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CC52DCC1ACE4023006FEB01 /* srs_utest_config.cpp */; }; |
| 108 | 3CC52DDA1ACE4023006FEB01 /* srs_utest_core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CC52DCE1ACE4023006FEB01 /* srs_utest_core.cpp */; }; | 109 | 3CC52DDA1ACE4023006FEB01 /* srs_utest_core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CC52DCE1ACE4023006FEB01 /* srs_utest_core.cpp */; }; |
| @@ -372,6 +373,8 @@ | @@ -372,6 +373,8 @@ | ||
| 372 | 3C8280291BAFF896004A1794 /* transform.edge.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = transform.edge.conf; path = ../../../conf/transform.edge.conf; sourceTree = "<group>"; }; | 373 | 3C8280291BAFF896004A1794 /* transform.edge.conf */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = transform.edge.conf; path = ../../../conf/transform.edge.conf; sourceTree = "<group>"; }; |
| 373 | 3C82802A1BAFF8CC004A1794 /* srs_kafka_stack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kafka_stack.cpp; path = ../../../src/protocol/srs_kafka_stack.cpp; sourceTree = "<group>"; }; | 374 | 3C82802A1BAFF8CC004A1794 /* srs_kafka_stack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kafka_stack.cpp; path = ../../../src/protocol/srs_kafka_stack.cpp; sourceTree = "<group>"; }; |
| 374 | 3C82802B1BAFF8CC004A1794 /* srs_kafka_stack.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kafka_stack.hpp; path = ../../../src/protocol/srs_kafka_stack.hpp; sourceTree = "<group>"; }; | 375 | 3C82802B1BAFF8CC004A1794 /* srs_kafka_stack.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kafka_stack.hpp; path = ../../../src/protocol/srs_kafka_stack.hpp; sourceTree = "<group>"; }; |
| 376 | + 3CB25C281BB2596300C97A63 /* setup_variables.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = setup_variables.sh; path = ../../../auto/setup_variables.sh; sourceTree = "<group>"; }; | ||
| 377 | + 3CB25C291BB269FD00C97A63 /* jmp_sp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = jmp_sp.cpp; path = ../../../research/arm/jmp_sp.cpp; sourceTree = "<group>"; }; | ||
| 375 | 3CC52DCA1ACE4023006FEB01 /* srs_utest_amf0.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_utest_amf0.cpp; path = ../../src/utest/srs_utest_amf0.cpp; sourceTree = "<group>"; }; | 378 | 3CC52DCA1ACE4023006FEB01 /* srs_utest_amf0.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_utest_amf0.cpp; path = ../../src/utest/srs_utest_amf0.cpp; sourceTree = "<group>"; }; |
| 376 | 3CC52DCB1ACE4023006FEB01 /* srs_utest_amf0.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_utest_amf0.hpp; path = ../../src/utest/srs_utest_amf0.hpp; sourceTree = "<group>"; }; | 379 | 3CC52DCB1ACE4023006FEB01 /* srs_utest_amf0.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_utest_amf0.hpp; path = ../../src/utest/srs_utest_amf0.hpp; sourceTree = "<group>"; }; |
| 377 | 3CC52DCC1ACE4023006FEB01 /* srs_utest_config.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_utest_config.cpp; path = ../../src/utest/srs_utest_config.cpp; sourceTree = "<group>"; }; | 380 | 3CC52DCC1ACE4023006FEB01 /* srs_utest_config.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_utest_config.cpp; path = ../../src/utest/srs_utest_config.cpp; sourceTree = "<group>"; }; |
| @@ -661,6 +664,7 @@ | @@ -661,6 +664,7 @@ | ||
| 661 | 3C1232C31AAE827E00CE8F6C /* local_ip.sh */, | 664 | 3C1232C31AAE827E00CE8F6C /* local_ip.sh */, |
| 662 | 3C1232C41AAE827E00CE8F6C /* modules.sh */, | 665 | 3C1232C41AAE827E00CE8F6C /* modules.sh */, |
| 663 | 3C1232C51AAE827E00CE8F6C /* options.sh */, | 666 | 3C1232C51AAE827E00CE8F6C /* options.sh */, |
| 667 | + 3CB25C281BB2596300C97A63 /* setup_variables.sh */, | ||
| 664 | 3C1232C61AAE827E00CE8F6C /* summary.sh */, | 668 | 3C1232C61AAE827E00CE8F6C /* summary.sh */, |
| 665 | 3C1232C71AAE827E00CE8F6C /* utest.sh */, | 669 | 3C1232C71AAE827E00CE8F6C /* utest.sh */, |
| 666 | ); | 670 | ); |
| @@ -772,6 +776,7 @@ | @@ -772,6 +776,7 @@ | ||
| 772 | 3C663F001AB014B500286D8B /* research */ = { | 776 | 3C663F001AB014B500286D8B /* research */ = { |
| 773 | isa = PBXGroup; | 777 | isa = PBXGroup; |
| 774 | children = ( | 778 | children = ( |
| 779 | + 3CB25C291BB269FD00C97A63 /* jmp_sp.cpp */, | ||
| 775 | 3C663F021AB0155100286D8B /* srs_aac_raw_publish.c */, | 780 | 3C663F021AB0155100286D8B /* srs_aac_raw_publish.c */, |
| 776 | 3C663F031AB0155100286D8B /* srs_audio_raw_publish.c */, | 781 | 3C663F031AB0155100286D8B /* srs_audio_raw_publish.c */, |
| 777 | 3C663F041AB0155100286D8B /* srs_bandwidth_check.c */, | 782 | 3C663F041AB0155100286D8B /* srs_bandwidth_check.c */, |
| @@ -964,6 +969,8 @@ | @@ -964,6 +969,8 @@ | ||
| 964 | 3C1232241AAE814D00CE8F6C /* srs_kernel_error.cpp in Sources */, | 969 | 3C1232241AAE814D00CE8F6C /* srs_kernel_error.cpp in Sources */, |
| 965 | 3C036B561B2D0AC10078E2E0 /* srs_app_http_stream.cpp in Sources */, | 970 | 3C036B561B2D0AC10078E2E0 /* srs_app_http_stream.cpp in Sources */, |
| 966 | 3C068D6D1B10175500AA722C /* srs_protocol_stream.cpp in Sources */, | 971 | 3C068D6D1B10175500AA722C /* srs_protocol_stream.cpp in Sources */, |
| 972 | + 3CB25C2A1BB269FD00C97A63 /* jmp_sp.cpp in Sources */, | ||
| 973 | + 3C068D6D1B10175500AA722C /* srs_protocol_buffer.cpp in Sources */, | ||
| 967 | 3C1232441AAE81A400CE8F6C /* srs_rtmp_handshake.cpp in Sources */, | 974 | 3C1232441AAE81A400CE8F6C /* srs_rtmp_handshake.cpp in Sources */, |
| 968 | 3C1232291AAE814D00CE8F6C /* srs_kernel_buffer.cpp in Sources */, | 975 | 3C1232291AAE814D00CE8F6C /* srs_kernel_buffer.cpp in Sources */, |
| 969 | 3C663F181AB0155100286D8B /* srs_play.c in Sources */, | 976 | 3C663F181AB0155100286D8B /* srs_play.c in Sources */, |
| @@ -11,22 +11,7 @@ | @@ -11,22 +11,7 @@ | ||
| 11 | 11 | ||
| 12 | jmp_buf context; | 12 | jmp_buf context; |
| 13 | 13 | ||
| 14 | -void func1() | ||
| 15 | -{ | ||
| 16 | -#if defined(__amd64__) || defined(__x86_64__) | ||
| 17 | - register long int rsp0 asm("rsp"); | ||
| 18 | - | ||
| 19 | - int ret = setjmp(context); | ||
| 20 | - printf("setjmp func1 ret=%d, rsp=%#lx\n", ret, rsp0); | ||
| 21 | - // enter by longjmp | ||
| 22 | - if (ret != 0) { | ||
| 23 | - printf("call by longjmp.\n"); | ||
| 24 | - exit(0); | ||
| 25 | - } | ||
| 26 | -#endif | ||
| 27 | -} | ||
| 28 | - | ||
| 29 | -void func0() | 14 | +void do_longjmp() |
| 30 | { | 15 | { |
| 31 | /** | 16 | /** |
| 32 | the definition of jmp_buf: | 17 | the definition of jmp_buf: |
| @@ -78,8 +63,6 @@ void func0() | @@ -78,8 +63,6 @@ void func0() | ||
| 78 | printf("env[%d]=%#x, ", i, (int)context[0].__jmpbuf[i]); | 63 | printf("env[%d]=%#x, ", i, (int)context[0].__jmpbuf[i]); |
| 79 | } | 64 | } |
| 80 | printf("\n"); | 65 | printf("\n"); |
| 81 | - | ||
| 82 | - func1(); | ||
| 83 | #endif | 66 | #endif |
| 84 | 67 | ||
| 85 | #if defined(__arm__) | 68 | #if defined(__arm__) |
| @@ -105,7 +88,7 @@ void func0() | @@ -105,7 +88,7 @@ void func0() | ||
| 105 | */ | 88 | */ |
| 106 | /** | 89 | /** |
| 107 | For example, on raspberry-pi, armv6 cpu: | 90 | For example, on raspberry-pi, armv6 cpu: |
| 108 | - (gdb) x /64 context[0].__jmpbuf | 91 | + (gdb) x /64xb (char*)context[0].__jmpbuf |
| 109 | v1, 0: 0x00 0x00 0x00 0x00 | 92 | v1, 0: 0x00 0x00 0x00 0x00 |
| 110 | v2, 1: 0x00 0x00 0x00 0x00 | 93 | v2, 1: 0x00 0x00 0x00 0x00 |
| 111 | v3, 2: 0x2c 0x84 0x00 0x00 | 94 | v3, 2: 0x2c 0x84 0x00 0x00 |
| @@ -147,8 +130,7 @@ int main(int argc, char** argv) | @@ -147,8 +130,7 @@ int main(int argc, char** argv) | ||
| 147 | (int)__GLIBC__, (int)__GLIBC_MINOR__); | 130 | (int)__GLIBC__, (int)__GLIBC_MINOR__); |
| 148 | #endif | 131 | #endif |
| 149 | 132 | ||
| 150 | - func0(); | ||
| 151 | - longjmp(context, 1); | 133 | + do_longjmp(); |
| 152 | 134 | ||
| 153 | printf("terminated\n"); | 135 | printf("terminated\n"); |
| 154 | 136 |
| @@ -119,5 +119,17 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -119,5 +119,17 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 119 | className(const className&); \ | 119 | className(const className&); \ |
| 120 | className& operator= (const className&) | 120 | className& operator= (const className&) |
| 121 | 121 | ||
| 122 | +/** | ||
| 123 | + * important check for st(state-threads), | ||
| 124 | + * only support the following cpus: | ||
| 125 | + * 1. i386/amd64/x86_64 | ||
| 126 | + * 2. arm, glibc <= 2.15 | ||
| 127 | + */ | ||
| 128 | +#if !defined(__amd64__) && !defined(__x86_64__) && !defined(__i386__) && !defined(__arm__) | ||
| 129 | + #error "only support i386/amd64/x86_64/arm cpu" | ||
| 130 | +#endif | ||
| 131 | +#if defined(__arm__) && __GLIBC__ != 2 || __GLIBC_MINOR__ > 15 | ||
| 132 | + #error "for arm, only support glibc <= 2.15" | ||
| 122 | #endif | 133 | #endif |
| 123 | 134 | ||
| 135 | +#endif |
-
请 注册 或 登录 后发表评论