Code Monkey home page Code Monkey logo

Comments (3)

jim-wilson avatar jim-wilson commented on July 20, 2024

Which exact SysV ABIs are you referring to here? Give a URL please.

max_align_t greater than the stack alignment is problematic. Our stack alignment for ilp32{,f,d} and lp64{,f,d} is 16, and it is 4 for ilp32e. GCC reports 16 for _Alignof(max_align_t) for all of these ABIs, including ilp32e, but we already know that the ilp32e ABI is broken and are planning to fix it with a new EABI. Anyways, documenting it as 16 looks correct.

from riscv-elf-psabi-doc.

gnzlbg avatar gnzlbg commented on July 20, 2024

Which exact SysV ABIs are you referring to here?

The x86-64 psABI and the Intel386 psABI, I'll see if I can find a link.

GCC reports 16 for _Alignof(max_align_t) for all of these ABIs, including ilp32e,

Well, GCC has to do that for the Intel386 psABI. _Alignof(max_align_t) is defined as the largest alignment requirement of a "fundamental" type, and the Intel386 psABI supports the fundamental type long float which has an alignment requirement of 16. So AFAICT GCC hands are tied.

The only way to lower the value of _Alignof(max_align_t) for an ABI is, per definition, to lower the largest alignment requirement of the fundamental types in that ABI.

from riscv-elf-psabi-doc.

jim-wilson avatar jim-wilson commented on July 20, 2024

I would suggest
http://refspecs.linuxfoundation.org/elf/
which has multiple SVR4 ABIs including the i386 and x86_64 ones. I don't see a reference to max_align_t in the x86_64 one, but I need some time to look at this.

The i386 port does stack aligning when necessary, but the RISC-V port does not, which is why the ilp32e ABI is broken.

Anyways, this suggestion is uncontroversial. 16 is correct. Assuming we need to document this.

from riscv-elf-psabi-doc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.