https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40838

Harald van Dijk <harald at gigawatt dot nl> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |harald at gigawatt dot nl

--- Comment #90 from Harald van Dijk <harald at gigawatt dot nl> ---
Given how many years have passed I expect it's too late for anything to change,
but for completeness:

Assuming the stack is aligned breaks existing binaries compiled with old GCC
versions, and with GCC 8 this becomes far more visible. Minimal test case:
compile

  void exit(int);
  int main(void) { exit(0); }

with GCC 2.8, compile current glibc with GCC 8, and there will be a segfault in
glibc's __run_exit_handlers because GCC 2.8 never kept the stack
16-byte-aligned, but GCC 8 does now generate code which assumes it.

Yes, I've actually been running GCC 2.8-compiled binaries that have only now
become broken as a result of this. This is not hypothetical. For the moment,
I've rebuilt glibc with -mincoming-stack-boundary=2 to handle the problem well
enough for my current needs, but it's not a complete solution.

Reply via email to