mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-01 17:30:07 +00:00
58548b9d68
In the future, this will result in a compilation failure if the macros are unexpectedly undefined (due to header inclusion ordering or header inclusion missing altogether). Assembler sources are more difficult to convert. In many cases, they are hand-optimized for the mangling and no-mangling variants, which is why they are not converted. sysdeps/s390/s390-32/__longjmp.c and sysdeps/s390/s390-64/__longjmp.c are special: These are C sources, but most of the implementation is in assembler, so the PTR_DEMANGLE macro has to be undefined in some cases, to match the assembler style. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
60 lines
1.6 KiB
C
60 lines
1.6 KiB
C
/* Copyright (C) 2006-2022 Free Software Foundation, Inc.
|
|
|
|
This file is part of the GNU C Library.
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public License as
|
|
published by the Free Software Foundation; either version 2.1 of the
|
|
License, or (at your option) any later version.
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with the GNU C Library. If not, see
|
|
<https://www.gnu.org/licenses/>. */
|
|
|
|
#define JB_X19 0
|
|
#define JB_X20 1
|
|
#define JB_X21 2
|
|
#define JB_X22 3
|
|
#define JB_X23 4
|
|
#define JB_X24 5
|
|
#define JB_X25 6
|
|
#define JB_X26 7
|
|
#define JB_X27 8
|
|
#define JB_X28 9
|
|
#define JB_X29 10
|
|
#define JB_LR 11
|
|
#define JB_SP 13
|
|
|
|
#define JB_D8 14
|
|
#define JB_D9 15
|
|
#define JB_D10 16
|
|
#define JB_D11 17
|
|
#define JB_D12 18
|
|
#define JB_D13 19
|
|
#define JB_D14 20
|
|
#define JB_D15 21
|
|
|
|
#ifndef __ASSEMBLER__
|
|
#include <setjmp.h>
|
|
#include <stdint.h>
|
|
#include <sysdep.h>
|
|
#include <pointer_guard.h>
|
|
|
|
static inline uintptr_t __attribute__ ((unused))
|
|
_jmpbuf_sp (__jmp_buf jmpbuf)
|
|
{
|
|
uintptr_t sp = jmpbuf[JB_SP];
|
|
PTR_DEMANGLE (sp);
|
|
return sp;
|
|
}
|
|
#endif
|
|
|
|
/* Helper for generic ____longjmp_chk(). */
|
|
#define JB_FRAME_ADDRESS(buf) \
|
|
((void *) _jmpbuf_sp (buf))
|