/* *r3=desiredfinaladdressofkernel
*/
_GLOBAL(relocate)
mflr r0
bcl 20,31,$+4 0: mflr r12 /* r12 has runtime addr of label 0 */
mtlr r0 ld r11,(p_dyn - 0b)(r12)
add r11,r11,r12 /* r11 has runtime addr of .dynamic section */ ld r9,(p_rela - 0b)(r12)
add r9,r9,r12 /* r9 has runtime addr of .rela.dyn section */ ld r10,(p_st - 0b)(r12)
add r10,r10,r12 /* r10 has runtime addr of _stext */ ld r4,(p_sym - 0b)(r12)
add r4,r4,r12 /* r4 has runtime addr of .dynsym */
/* *ScanthedynamicsectionfortheRELA,RELASZandRELAENTentries.
*/
li r7,0
li r8,0
.Ltags: ld r6,0(r11) /* get tag */
cmpdi r6,0
beq .Lend_of_list /* end of list */
cmpdi r6,RELA
bne 2f ld r7,8(r11) /* get RELA pointer in r7 */
b 4f 2: cmpdi r6,RELASZ
bne 3f ld r8,8(r11) /* get RELASZ value in r8 */
b 4f 3: cmpdi r6,RELAENT
bne 4f ld r12,8(r11) /* get RELAENT value in r12 */ 4: addi r11,r11,16
b .Ltags
.Lend_of_list:
cmpdi r7,0/* check we have RELA, RELASZ, RELAENT */
cmpdi cr1,r8,0
beq .Lout
beq cr1,.Lout
cmpdi r12,0
beq .Lout
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.