longjmp

    2热度

    1回答

    我需要longjmp/setjmp在OS X的.kext文件中。不幸的是,我不认为XNU中有这些函数的官方支持。有没有什么根本的原因,为什么这不起作用,或者它现在只是没有实施? 任何想法,我可以得到这个工作? 如果有帮助,我想尝试让Lua在OS X内核中运行,但运行时似乎取决于longjmp/setjmp或C++异常,而这两者在XNU中都不可用。

    1热度

    2回答

    我承认,如果可能的话,这将是敞开的门坏了,很糟糕的代码。但在某些特定情况下... 所以现在的问题是,是否有c的setjmp/longjmp的任何等同? 我想在不使用线程的情况下实现一个类似python的生成器,只保存堆栈和上下文,然后再恢复。

    0热度

    1回答

    根据公开组基本规格和longjump docs: 它是未指定的longjmp()是否恢复信号掩模,叶信号掩码不变,或还原它在调用setjmp()时的值。 我认为我遇到了ARMv8 Mustang board的警告。我们通过捕获SIGILL来执行运行时功能检测。在测试CRC32扩展时,第一个SIGILL陷阱按预期执行。第二个SIGILL陷阱确实不是在测试AES扩展时按预期执行。以下是它在调试器下的样

    5热度

    1回答

    setjmp()应该将包括“返回地址”和“堆栈指针”的寄存器保存到“jmp_buf”中。当我用glibc编译(包括gcc和clang)并在x86_64下调试以下程序时,我无法理解“jmp_buf”中的内容以及“返回地址”和“堆栈指针”位于“jmp_buf”中。 #include <stdio.h> #include <setjmp.h> int main() { int i;

    2热度

    1回答

    我正准备在C++中为R编写一个扩展包,并想知道如何使用动态内存管理而没有内存泄漏的风险。我已阅读 http://cran.r-project.org/doc/manuals/R-exts.html#Memory-allocation http://cran.r-project.org/doc/manuals/R-exts.html#Garbage-Collection ,并立即得到了三个问题: 是

    2热度

    3回答

    我试图修复其他人编写的代码中的错误,并且我试图通过gdb来确定发生了什么。但是我碰到的其中一条线是对longjmp()的调用,并且在该行上点击“next”后,gdb将继续执行常规执行,而不是断开正在执行的下一个源代码行。如果我在longjmp()行上尝试“step”,会发生类似的情况。是否有任何gdb命令我可以用来打破longjmp()之后执行的下一个源代码行?

    1热度

    1回答

    我在使用Nick Gammon's Regexp library时出现此错误。下面的错误是: libraries/Regexp/Regexp.cpp.o:(.text._ZL5errorc+0x4): undefined reference to `longjmp' libraries/Regexp/Regexp.cpp.o: In function `error': /Users/jai

    4热度

    2回答

    我想测试2我的函数那种模拟setjmp和longjmp的作业 - 这是很难,因为我们是不允许使用内置函数或程序集asm()来实现longjmp和setjmp函数。 (是的,that's really the assignment。) 问题:我不断收到错误的返回值。因此,简而言之,当main()调用foo()和foo()调用bar()和bar()调用longjump()时,bar()不应该返回到fo

    2热度

    1回答

    在x86中,在设置PE位CR0后,我们执行远程JMP以确保CS/EIP已更改。当我看到在x86的程序员手册中的逻辑流程,与此对应远JMP指令(保护模式),我看到这样的事情: Set RPL field of CS register to CPL; 我想,以确保优先级为0。假设是DPL描述符中也是0,远端JMP中的选择器中的RPL也是0.描述符中的C位为0,所以它是非符合代码段的情况。该手册说C

    2热度

    1回答

    尝试在也构建为C++的C代码库上显示一些警告级别。我给了Visual Studio一个镜头(出于某种原因)。 尽管没有看到任何相关的析构函数,但仍发现有关setjmp交互的警告。所以我做了试验: #include <setjmp.h> struct X { int y; }; int main() { struct X x; jmp_buf buf; if