Skip to content

Commit b961ec1

Browse files
Jens RemusAlexander Gordeev
authored andcommitted
s390/vdso: Add CFI for RA register to asm macro vdso_func
The return-address (RA) register r14 is specified as volatile in the s390x ELF ABI [1]. Nevertheless proper CFI directives must be provided for an unwinder to restore the return address, if the RA register value is changed from its value at function entry, as it is the case. [1]: s390x ELF ABI, https://github.com/IBM/s390x-abi/releases Fixes: 4bff8cb ("s390: convert to GENERIC_VDSO") Signed-off-by: Jens Remus <[email protected]> Acked-by: Heiko Carstens <[email protected]> Signed-off-by: Alexander Gordeev <[email protected]>
1 parent 5e1a99c commit b961ec1

File tree

2 files changed

+3
-0
lines changed

2 files changed

+3
-0
lines changed

arch/s390/include/asm/dwarf.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#define CFI_DEF_CFA_OFFSET .cfi_def_cfa_offset
1010
#define CFI_ADJUST_CFA_OFFSET .cfi_adjust_cfa_offset
1111
#define CFI_RESTORE .cfi_restore
12+
#define CFI_REL_OFFSET .cfi_rel_offset
1213

1314
#ifdef CONFIG_AS_CFI_VAL_OFFSET
1415
#define CFI_VAL_OFFSET .cfi_val_offset

arch/s390/kernel/vdso64/vdso_user_wrapper.S

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ __kernel_\func:
2424
CFI_DEF_CFA_OFFSET (STACK_FRAME_OVERHEAD + WRAPPER_FRAME_SIZE)
2525
CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD
2626
stg %r14,STACK_FRAME_OVERHEAD(%r15)
27+
CFI_REL_OFFSET 14, STACK_FRAME_OVERHEAD
2728
brasl %r14,__s390_vdso_\func
2829
lg %r14,STACK_FRAME_OVERHEAD(%r15)
30+
CFI_RESTORE 14
2931
aghi %r15,WRAPPER_FRAME_SIZE
3032
CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD
3133
CFI_RESTORE 15

0 commit comments

Comments
 (0)