[all-commits] [llvm/llvm-project] 9b4e8b: [libc] Fix longjmp's fake return in x86_64

Mikhail R. Gadelha via All-commits all-commits at lists.llvm.org
Mon Mar 27 15:42:54 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 9b4e8b7b0a6b368dcce474e82bdcd55a2f27bc1e
  Author: Mikhail R. Gadelha <mikhail at igalia.com>
  Date:   2023-03-27 (Mon, 27 Mar 2023)

  Changed paths:
    M libc/src/setjmp/x86_64/longjmp.cpp
    M libc/test/src/setjmp/setjmp_test.cpp

  Log Message:
  [libc] Fix longjmp's fake return in x86_64

This implements the fake return after a successful longjmp(), as
described in the linux man page:

Following  a  successful  longjmp(), execution continues as if setjmp()
had returned for a second time.  This  "fake"  return  can  be  distin-
guished from a true setjmp() call because the "fake" return returns the
value provided in val.  If the programmer mistakenly passes the value 0
in val, the "fake" return will instead return 1.

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D146981

More information about the All-commits mailing list