abi

What does the 'm' in a Python ABI tag mean?

﹥>﹥吖頭↗ 提交于 2019-12-08 22:07:22
问题 PEP 425 explains the compatibility tag format for built python distributions, but does not explain the ABI tag in full detail. The ABI tag can end with a combination of the letters 'd', 'm', and 'u'. As an example, it is explained within the PEP that the 'd' means an ABI with debugging, and this answer explains that the 'u' denotes an interpreter compiled with --enable-unicode=ucs4 , but I could not find the meaning of the 'm' anywhere. 回答1: Per PEP 3149, m indicates that the ABI in question

How to detect X32 on Windows?

喜欢而已 提交于 2019-12-08 03:51:15
问题 X32 allows one to write programs using 32-bit integers, longs and pointers that run on x86_64 processors. Using X32 has a number of benefits under certain use cases. (X32 is different than X86 or X64; see Difference between x86, x32, and x64 architectures for more details). It appears some Windows Enterprise Server supports X32, but I'm having trouble finding more information on it. That's based on some Intel PDFs, like Intel® Xeon® Processor E5-2400 Series-based Platforms for Intelligent

Is xmm8 register value preserved across calls?

心不动则不痛 提交于 2019-12-08 03:17:30
问题 My Windows program compiled using Visual Studio 2017 does the following: calls a routine that has a default argument with value 35.05. initializes the Java Virtual Machine through the C interface calls the routine again that has the default argument with value 35.05. In the first call, the default argument gets the correct 35.05. In the second call that value is garbage. I looked at the generated assembly and during the first call with the default argument 35.05 is copied to xmm8 from a

how to write cross-version/platform Linux kernel modules?

偶尔善良 提交于 2019-12-07 06:33:22
问题 I'm new to programming Linux kernel modules, and many getting started guides on the topic include little information about how to build a kernel module which will run on many versions and CPU platforms of Linux. Most of the guides I've seen simply state things like, "Linux doesn't ensure any ABI/API compatibility between versions." However, other OSes do provide these guarantees for major versions, and the guides are mostly targeting 2.7 (which is a bit old now). I was wondering if there is

Code sequences for TLS on ARM

旧街凉风 提交于 2019-12-07 04:38:04
问题 The ELF Handling For Thread-Local Storage document gives assembly sequences for the various models (local exec/initial exec/general dynamic) for various architectures. But not ARM -- is there anywhere I can see such code sequences for ARM? I'm working on a compiler and want to generate code that will operate properly with the platform linkers (both program and dynamic). For clarity, let's assume an ARMv7 CPU and a pretty new kernel and glibc (say 3.13+ / 2.19+), but I'd also be interested in

Undefined reference in clang when linking to a library compiled with GCC5

こ雲淡風輕ζ 提交于 2019-12-06 23:28:54
问题 I try to use the ubuntu 15.10 repository version of libmuparser (package libmuparser2v5). Compiling with gcc works fine, but not with clang. I dug deeper into this to come up with the following minimal (not) working example and a few questions. Consider a library with a simple class that takes a string and returns a string . testlib.h : #pragma once #include <string> struct Test { std::string str; void set(std::string s); std::string get(); }; testlib.cpp : #include "testlib.h" void Test::set

Difference between arm-none-eabi and arm-linux-gnueabi?

夙愿已清 提交于 2019-12-06 22:40:13
问题 What is the difference between arm-none-eabi and arm-linux-gnueabi? I know the difference in how to use them (one for bare metal software, the other one for software meant to be run on linux). But what is the technical background? I see there is a difference in the ABI which is, as far as I understood, something like an API but on binary level. It ensures interoperability of different applications. But I don't really understand in which way having or not having an operating system affects my

C ABI with LLVM

与世无争的帅哥 提交于 2019-12-06 19:47:47
问题 I've got a compiler written with LLVM and I'm looking to up my ABI compliance. For example, I've found it hard to actually find specification documents for C ABI on Windows x86 or Linux. And the ones I have found explain it in terms of RAX/EAX/etc, rather than IR terms that I can use. So far, I think I've figured that LLVM treats aggregates invisibly- that is, it considers their members as a distinct parameter each. So for example, on Windows x64, if I want to handle an aggregate like the

where is amd64 psABI? [closed]

不打扰是莪最后的温柔 提交于 2019-12-06 17:11:16
问题 Closed. This question is off-topic. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed 6 years ago . The AMD64 psABI used to be hosted at x86-64.org. I have a copy of pdf file and it says explicitly: The architecture specification is available on the web at http://www.x86-64.org/documentation. but http://www.x86-64.org is down for a long time already. Several months at least. Does anyone know where the latest

How to detect X32 on Windows?

眉间皱痕 提交于 2019-12-06 15:51:14
X32 allows one to write programs using 32-bit integers, longs and pointers that run on x86_64 processors. Using X32 has a number of benefits under certain use cases. (X32 is different than X86 or X64; see Difference between x86, x32, and x64 architectures for more details). It appears some Windows Enterprise Server supports X32, but I'm having trouble finding more information on it. That's based on some Intel PDFs, like Intel® Xeon® Processor E5-2400 Series-based Platforms for Intelligent Systems : Microsoft's documentation on Predefined Macros lists the usual suspect, like _M_X64 and _M_AMD64