mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
[AArch64] Save and restore q0-q7 on entry to dynamic linker.
[BZ #15128] Ensure all argument passing registers are saved and restored on entry to dynamic linker.
This commit is contained in:
parent
5953eb3ad7
commit
9dbebe1a67
22
NEWS
22
NEWS
@ -12,17 +12,17 @@ Version 2.19
|
||||
156, 387, 431, 832, 926, 2801, 4772, 6786, 6787, 6807, 6810, 7003, 9954,
|
||||
10253, 10278, 11087, 11157, 11214, 12100, 12486, 13028, 13982, 13985,
|
||||
14029, 14032, 14120, 14143, 14155, 14547, 14699, 14752, 14876, 14910,
|
||||
15004, 15048, 15089, 15218, 15268, 15277, 15308, 15362, 15374, 15400,
|
||||
15425, 15427, 15483, 15522, 15531, 15532, 15593, 15601, 15608, 15609,
|
||||
15610, 15632, 15640, 15670, 15672, 15680, 15681, 15723, 15734, 15735,
|
||||
15736, 15748, 15749, 15754, 15760, 15763, 15764, 15797, 15799, 15825,
|
||||
15843, 15844, 15847, 15849, 15855, 15856, 15857, 15859, 15867, 15886,
|
||||
15887, 15890, 15892, 15893, 15895, 15897, 15901, 15905, 15909, 15915,
|
||||
15917, 15919, 15921, 15923, 15939, 15941, 15948, 15963, 15966, 15985,
|
||||
15988, 15997, 16032, 16034, 16036, 16037, 16038, 16041, 16055, 16071,
|
||||
16072, 16074, 16077, 16078, 16103, 16112, 16143, 16144, 16146, 16150,
|
||||
16151, 16153, 16167, 16172, 16195, 16214, 16245, 16271, 16274, 16283,
|
||||
16289, 16314, 16316, 16330, 16338.
|
||||
15004, 15048, 15089, 15128, 15218, 15268, 15277, 15308, 15362, 15374,
|
||||
15400, 15425, 15427, 15483, 15522, 15531, 15532, 15593, 15601, 15608,
|
||||
15609, 15610, 15632, 15640, 15670, 15672, 15680, 15681, 15723, 15734,
|
||||
15735, 15736, 15748, 15749, 15754, 15760, 15763, 15764, 15797, 15799,
|
||||
15825, 15843, 15844, 15847, 15849, 15855, 15856, 15857, 15859, 15867,
|
||||
15886, 15887, 15890, 15892, 15893, 15895, 15897, 15901, 15905, 15909,
|
||||
15915, 15917, 15919, 15921, 15923, 15939, 15941, 15948, 15963, 15966,
|
||||
15985, 15988, 15997, 16032, 16034, 16036, 16037, 16038, 16041, 16055,
|
||||
16071, 16072, 16074, 16077, 16078, 16103, 16112, 16143, 16144, 16146,
|
||||
16150, 16151, 16153, 16167, 16172, 16195, 16214, 16245, 16271, 16274,
|
||||
16283, 16289, 16314, 16316, 16330, 16338.
|
||||
|
||||
* The public headers no longer use __unused nor __block. This change is to
|
||||
support compiling programs that are derived from BSD sources and use
|
||||
|
@ -1,3 +1,9 @@
|
||||
2013-12-18 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
[BZ #15128]
|
||||
* sysdeps/aarch64/dl-trampoline.S (_dl_runtime_resolve): Save and
|
||||
restore q0-q7.
|
||||
|
||||
2013-12-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
|
||||
|
@ -41,7 +41,7 @@ _dl_runtime_resolve:
|
||||
cfi_rel_offset (lr, 8)
|
||||
|
||||
/* Save arguments. */
|
||||
stp x8, x9, [sp, #-80]!
|
||||
stp x8, x9, [sp, #-(80+8*16)]!
|
||||
cfi_adjust_cfa_offset (80)
|
||||
cfi_rel_offset (x8, 0)
|
||||
cfi_rel_offset (x9, 8)
|
||||
@ -62,11 +62,27 @@ _dl_runtime_resolve:
|
||||
cfi_rel_offset (x0, 64)
|
||||
cfi_rel_offset (x1, 72)
|
||||
|
||||
stp q0, q1, [sp, #(80+0*16)]
|
||||
cfi_rel_offset (q0, 80+0*16)
|
||||
cfi_rel_offset (q1, 80+1*16)
|
||||
|
||||
stp q2, q3, [sp, #(80+2*16)]
|
||||
cfi_rel_offset (q0, 80+2*16)
|
||||
cfi_rel_offset (q1, 80+3*16)
|
||||
|
||||
stp q4, q5, [sp, #(80+4*16)]
|
||||
cfi_rel_offset (q0, 80+4*16)
|
||||
cfi_rel_offset (q1, 80+5*16)
|
||||
|
||||
stp q6, q7, [sp, #(80+6*16)]
|
||||
cfi_rel_offset (q0, 80+6*16)
|
||||
cfi_rel_offset (q1, 80+7*16)
|
||||
|
||||
/* Get pointer to linker struct. */
|
||||
ldr x0, [ip0, #-8]
|
||||
|
||||
/* Prepare to call _dl_fixup(). */
|
||||
ldr x1, [sp, 80] /* Recover &PLTGOT[n] */
|
||||
ldr x1, [sp, 80+8*16] /* Recover &PLTGOT[n] */
|
||||
|
||||
sub x1, x1, ip0
|
||||
add x1, x1, x1, lsl #1
|
||||
@ -81,12 +97,16 @@ _dl_runtime_resolve:
|
||||
mov ip0, x0
|
||||
|
||||
/* Get arguments and return address back. */
|
||||
ldp q0, q1, [sp, #(80+0*16)]
|
||||
ldp q2, q3, [sp, #(80+2*16)]
|
||||
ldp q4, q5, [sp, #(80+4*16)]
|
||||
ldp q6, q7, [sp, #(80+6*16)]
|
||||
ldp x0, x1, [sp, #64]
|
||||
ldp x2, x3, [sp, #48]
|
||||
ldp x4, x5, [sp, #32]
|
||||
ldp x6, x7, [sp, #16]
|
||||
ldp x8, x9, [sp], #80
|
||||
cfi_adjust_cfa_offset (-80)
|
||||
ldp x8, x9, [sp], #(80+8*16)
|
||||
cfi_adjust_cfa_offset (-(80+8*16))
|
||||
|
||||
ldp ip1, lr, [sp], #16
|
||||
cfi_adjust_cfa_offset (-16)
|
||||
|
Loading…
Reference in New Issue
Block a user