Re: [RFC PATCH v1 12/16] unwind_user/backchain: Introduce back chain user space unwinding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jul 10, 2025 at 06:35:18PM +0200, Jens Remus wrote:
> @@ -66,12 +73,20 @@ static int unwind_user_next(struct unwind_user_state *state)
>  		/* sframe expects the frame to be local storage */
>  		frame = &_frame;
>  		if (sframe_find(state->ip, frame, topmost)) {
> -			if (!IS_ENABLED(CONFIG_HAVE_UNWIND_USER_FP))
> -				goto done;
> -			frame = &fp_frame;
> +			if (IS_ENABLED(CONFIG_HAVE_UNWIND_USER_FP)) {
> +				frame = &fp_frame;
> +			} else if (IS_ENABLED(CONFIG_HAVE_UNWIND_USER_BACKCHAIN)) {
> +				if (unwind_user_backchain_next(state))
> +					goto done;
> +				goto done_backchain;
> +			}
>  		}
>  	} else if (fp_state(state)) {
>  		frame = &fp_frame;
> +	} else if (backchain_state(state)) {
> +		if (unwind_user_backchain_next(state))
> +			goto done;
> +		goto done_backchain;
>  	} else {
>  		goto done;
>  	}
> @@ -153,6 +168,7 @@ static int unwind_user_next(struct unwind_user_state *state)
>  
>  	arch_unwind_user_next(state);
>  
> +done_backchain:
>  	state->topmost = false;
>  	return 0;

This feels very grafted on, is there not some way to make it more
generic, i.e., to just work with CONFIG_HAVE_UNWIND_USER_FP?

Also, if distros aren't even compiling with -mbackchain, I wonder if we
can just not do this altogether :-)

-- 
Josh




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux