Questions tagged [abi]

The (Application Binary Interface) specifies the low level interface between the programs, libraries and the operating system. E.g. which registers are used to pass function parameters.

The (Application Binary Interface) specifies the low level interface between the programs, libraries and the operating system. E.g. which registers are used to pass function parameters.

890 questions
32
votes
1 answer

Differences between arm "versions?" (ARMv7 only)

Basically I would like to know the difference between ARMv7l and ARMv7hl? I got a arm processor with armv7l and there are a lot of rpm's for armv7hl. I don't exactly know what I have to search for to get information about that. What is this "suffix"…
Korbi
  • 714
  • 1
  • 9
  • 18
32
votes
3 answers

GCC ABI compatibility

As far as I've understood, it is not possible to link libraries that use different versions of GCC's Application Binary Interface (ABI). Are there ABI changes to every version of GCC? Is it possible to link a library built with 4.3.1 if I use, say,…
Fredrik Ullner
  • 2,106
  • 2
  • 22
  • 28
31
votes
3 answers

What is the format of the x86_64 va_list structure?

Anyone have a reference for the representation of va_list in the x86_64 ABI (the one used on Linux)? I'm trying to debug some code where the stack or arguments seem corrupt and it would really help to understand what I'm supposed to be seeing...
R.. GitHub STOP HELPING ICE
  • 208,859
  • 35
  • 376
  • 711
30
votes
3 answers

Why does this function push RAX to the stack as the first operation?

In the assembly of the C++ source below. Why is RAX pushed to the stack? RAX, as I understand it from the ABI could contain anything from the calling function. But we save it here, and then later move the stack back by 8 bytes. So the RAX on the…
JCx
  • 2,689
  • 22
  • 32
30
votes
8 answers

What could C/C++ "lose" if they defined a standard ABI?

The title says everything. I am talking about C/C++ specifically, because both consider this as "implementation issue". I think, defining a standard interface can ease building a module system on top of it, and many other good things. What could…
Khaled Alshaya
  • 94,250
  • 39
  • 176
  • 234
29
votes
3 answers

Using Scala 2.12 with Spark 2.x

At the Spark 2.1 docs it's mentioned that Spark runs on Java 7+, Python 2.6+/3.4+ and R 3.1+. For the Scala API, Spark 2.1.0 uses Scala 2.11. You will need to use a compatible Scala version (2.11.x). at the Scala 2.12 release news it's also…
NetanelRabinowitz
  • 1,534
  • 2
  • 14
  • 26
29
votes
4 answers

How to get ABI (Application Binary Interface) in android

It may be a duplicated question, but i'm unable to find it. I wonder how we can get what's the ABI of a phone, using code. I know that there's different Interface that may dictated in gradle file. But the problem is how i can get exactly the ABI of…
Cuong Phan
  • 311
  • 1
  • 4
  • 8
28
votes
3 answers

If clang++ and g++ are ABI incompatible, what is used for shared libraries in binary?

clang++ and g++ are ABI incompatible, even for things as core as standard containers, according to, e.g., the clang++ website. Debian ships with C++ shared libraries, i.e. libboost, etc... that are compiled with ~something and user programs using…
Andrew Wagner
  • 22,677
  • 21
  • 86
  • 100
28
votes
5 answers

How do C compilers implement functions that return large structures?

The return value of a function is usually stored on the stack or in a register. But for a large structure, it has to be on the stack. How much copying has to happen in a real compiler for this code? Or is it optimized away? For example: struct Data…
Steve Hanov
  • 11,316
  • 16
  • 62
  • 69
27
votes
2 answers

How does this C program without libc work?

I came across a minimal HTTP server that is written without libc: https://github.com/Francesco149/nolibc-httpd I can see that basic string handling functions are defined, leading to the write syscall: #define fprint(fd, s) write(fd, s,…
qwr
  • 9,525
  • 5
  • 58
  • 102
27
votes
4 answers

Why can't kernel code use a Red Zone

It is highly recommended when creating a 64-bit kernel (for x86_64 platform), to instruct the compiler not to use the 128-byte Red Zone that the user-space ABI does. (For GCC the compiler flag is -mno-red-zone). The kernel would not be…
mmk
  • 585
  • 5
  • 13
27
votes
2 answers

Can you mix c++ compiled with different versions of the same compiler

For example could I mix a set of libraries that have been compiled in say GCC-4.6 with GCC-4.9. I'm aware different compilers "breeds" such as VS cannot be with MinGW but can different generations of the same compiler? Are issues likely to occur? If…
robby987
  • 827
  • 1
  • 9
  • 25
26
votes
4 answers

Creating Library with backward compatible ABI that uses Boost

I'm working on a certain C++ library (or more framework). I want to make it backward compatible with previous versions preserving not only API compatibility but also ABI (like the great job Qt does). I use lots of functionality of Boost and it seems…
Artyom
  • 31,019
  • 21
  • 127
  • 215
26
votes
1 answer

Difference between armeabi and armeabi-v7a

As far as I can tell from the docs, the difference between the two supported flavors of ARM architecture in Android NDK is only in the set of supported CPU instructions. Is that really so? Is there no difference in calling conventions, or system…
Seva Alekseyev
  • 59,826
  • 25
  • 160
  • 281
25
votes
3 answers

C++ Modules and the C++ ABI

I've been reading about the C++ modules proposal (latest draft) but I don't fully understand what problem(s) it aims to solve. Is its purpose to allow a module built by one compiler to be used by any other compiler (on the same OS/architecture, of…
HighCommander4
  • 50,428
  • 24
  • 122
  • 194
1 2
3
59 60