jjzjj

docker - 未为 ABI0 定义重定位目标 runtime.entersyscallblock

我正在尝试在GoLang下编译一个项目,但在构建时出现错误。事实上,错误是:vendor/github.com/google/netstack/tcpip/link/rawfile.blockingPoll:relocationtargetruntime.entersyscallblocknotdefinedforABI0(butisdefinedforABIInternal).我在goLang12下,在互联网上它说它有一些程序集的问题。所以我下载了goLang10.8并重试了这个过程,但不幸的是,错误仍然存​​在。有没有人知道如何解决这个问题?提前致谢。

windows - "ABI-volatile"寄存器被视为跨函数调用的非 volatile

在Windowsx64上,考虑到一些额外的见解,何时允许编译器将ABI标记为volatile的寄存器视为非volatile寄存器?我有一个反汇编函数,其中r11用于在函数调用后恢复另一个寄存器的值;当根据this,r11本身在函数调用中被认为是可变的。例如(来自反汇编函数):myLibrary!MyClass::currentMemberFunction+0x18:callmyLibrary!MyClass::calledMemberFunctioncmpdwordptr[rsp+68h],0movrdi,raxjemyLibrary!MyClass::currentMemberFun

c++ - 编译器之间的 qt dll 兼容性

Qt库声明了跨主要版本的二进制兼容性。但是不同编译器之间的兼容性呢?例如,我有一个应用程序和2个使用Qt(动态链接)的dll。但其中一个是用MSVC构建的,另一个是用MinGW构建的。因此它们链接到不同版本的Qt库(相同版本)。问题是:这些dll是否可以使用一个共享的Qtdll协同工作?如果不是,那么考虑到更改编译器不是一个选项,有哪些可行的解决方法?我查看了带有dependencywalker的Qtdll,我发现有几十个导出的函数具有编译器特定的名称重整。所以看起来不可能让它们一起工作。 最佳答案 C++没有标准的ABI。这意味着

Windows 64 ABI,如果我不调用 Windows API,是否正确注册?

正如我在另一个问题中向我建议的那样,我检查了WindowsABI,如果我自己不调用WindowsAPI,我对我能做什么和不能做什么感到有点困惑。我的场景是我正在编写.NET程序,并且需要在asm中针对特定处理器编写一小段代码,用于对数组执行大量多channel处理的时间关键代码部分。在https://msdn.microsoft.com/en-us/library/9z1stfyw.aspx处检查ABI中的注册信息时我对什么适用于我感到有点困惑1)不要从asm代码调用windowsAPI2)不要返回一个值,只接受一个参数。这是我的理解,我的理解是否正确?RAX:我可以在不保留它的情况下

windows - 64 位系统的整数大小差异(与我的旧 32 位 pc 系统混淆)

几个月前,我给自己买了一台配备CPUinteli7-2630qm和64位Windows的笔记本电脑。在这个系统下练习我的编程技能时,我遇到了一些整数大小方面的差异,这让我认为这可能是由于我的新64位系统。让我们看一段代码。C代码:#includeintmain(void){intnum=20;printf("%d%lld\n",num,num);return0;}问题:1.)我记得在得到这台新笔记本电脑之前,这意味着我仍在使用我的旧32位系统,当我运行这段代码时,程序将打印整数20由于%lld说明符,它旁边有一些随机数。2.)但是当我使用我的新笔记本电脑时,这种现象不再发生,它会正确地

windows - 如何在 Windows 上检测 X32?

X32允许使用32位整数、长整数和指针编写在x86_64处理器上运行的程序。在某些用例下,使用X32有很多好处。(X32不同于X86或X64;有关详细信息,请参阅Differencebetweenx86,x32,andx64architectures)。似乎某些WindowsEnterpriseServer支持X32,但我无法找到有关它的更多信息。这是基于一些英特尔PDF,例如Intel®Xeon®ProcessorE5-2400Series-basedPlatformsforIntelligentSystems:Microsoft关于PredefinedMacros的文档列出了常见的

Windows 和 ABI 兼容性

我有Windows2003服务器,可执行文件基于VC6。我需要检查可执行文件在Windows2008服务器(两台服务器均为32位)上的兼容性。我知道我需要检查这两个版本的ABI兼容性。如何确认操作系统的任意两个版本都具有ABI兼容性?或者Windows是否将ABI兼容性作为产品文档的一部分发布?除了ABI兼容性之外,是否还有其他需要注意的事项? 最佳答案 Windows维护不同版本之间的二进制ABI兼容性。这意味着不需要为不同的版本重新编译程序。但是,这不足以保证程序在您尚未测试的版本上正确运行。可能出现的问题的一些示例:您使用了已

c++ - MSVC 函数名修饰

这个问题在这里已经有了答案:Isthereturntypeofafunctionpartofthemangledname?(2个答案)关闭10个月前。在Linux中,GCC编译器不会将返回类型添加到函数的错位名称中,在主要版本更改的情况下不会导致ABI不兼容错误。因此,我通常根据主要版本在内联命名空间中使用abi_tag来强制执行这种行为。MSVC2017如何在Windows中处理函数名称?我需要在内联命名空间中添加类似于abi_tag的内容来复制此行为吗?

c++ - 升级到 g++ 4.7(支持 c++11): any ABI incompatibility?

在Windows上,当使用g++4.6(mingw)和-std=c++0x并链接第三方静态库(由供应商提供以用于mingw)时,应用程序运行良好。当我切换到g++4.7.2(mingw)以便我可以使用-std=c++11时,应用程序构建正常但在运行时崩溃。如果我注释掉对供应商提供的库的调用,那么它不会崩溃。我询问了图书馆供应商的客户支持,被告知不支持。我的问题是,在使用较新版本的g++编译器时“是否存在任何ABI不兼容问题”?它不向后兼容吗?较新版本的编译器不应该与现有和遗留的第3方静态库一起使用吗?请注意,这仅发生在Windows(mingw)平台上。在Linux上运行良好。我已经添

c++ - gcc5.2 abi 更改 -> 兼容性有保证吗?

我有以下情况(Ubuntu15.10和Debian测试)我有一个没有使用cxx11编译的库A和一个使用-std=c++11的库B。B包含并链接到A,A使用boost。如果我将B链接到A,A创建的应用程序会在动态加载期间崩溃。如果我编译不带cxx11的A或带cxx11的B,一切正常。我的问题:据我所知,ABI命名空间附加组件应该可以保证这类问题。我错了吗?我创建了一个示例项目来阐明问题:https://github.com/goldhoorn/sandbox/tree/gcc5.2-issue测试1失败,其他测试通过。GDB告诉我:ProgramreceivedsignalSIGSEGV