This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [AArch64] PR18668, Generate long branch veneer if call to plt stub is out of range


Jiong Wang <jiong.wang@arm.com> writes:

> +Disassembly of section .plt:
> +
> +.* <foo@plt-0x20>:
> +.*:	a9bf7bf0 	stp	x16, x30, \[sp,#-16\]!
> +.*:	90040090 	adrp	x16, 8010000 <__foo_veneer\+.*>
> +.*:	f941f611 	ldr	x17, \[x16,#1000\]
> +.*:	910fa210 	add	x16, x16, #0x3e8
> +.*:	d61f0220 	br	x17
> +.*:	d503201f 	nop
> +.*:	d503201f 	nop
> +.*:	d503201f 	nop
> +
> +.* <foo@plt>:
> +.*:	90040090 	adrp	x16, 8010000 <__foo_veneer\+.*>
> +.*:	f941fa11 	ldr	x17, \[x16,#1008\]
> +.*:	910fc210 	add	x16, x16, #0x3f0
> +.*:	d61f0220 	br	x17
> +
> +Disassembly of section .text:
> +
> +.* <_start>:
> +	...
> +.*:	14000003 	b	80002c8 <__foo_veneer>
> +.*:	d65f03c0 	ret
> +.*:	14000007 	b	80002e0 <__foo_veneer\+.*>
> +
> +.* <__foo_veneer>:
> +.*:	90fc0010 	adrp	x16, 0 <foo@plt-0x2b0>
> +.*:	910ac210 	add	x16, x16, #0x2b0
> +.*:	d61f0200 	br	x16

The code like this will confuse GDB on setting up frames when GDB wants
to step into the function foo.  As a result, when we type command "step"
to step into function "foo", GDB stops inferior at somewhere in veneer
by mistake, which is confusing to users.

Once this patch (and other patches similar to this one) go in, we should
tweak GDB frame unwinder to handle them.  For avoid of doubt, I don't
mean to ask you to hack GDB, just for a record.

-- 
Yao (éå)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]