Hello, Le 2012-07-16 00:09, John Reiser a écrit : > Functions MC_put_o_16_arm, MC_put_o_8_arm, MC_put_x_16_arm, MC_put_x_8_arm > in libmpeg2/motion_comp_arm_s.S have addresses in .text, which is bad > for shared libraries. Some environments demand that .text actually be > read-only all the time, yet MC_put_o_16_arm etc require that the addresses > be modified by the dynamic linking mechanism (dlopen, LoadLibrary, etc.) > Even in those environments which permit the dynamic linker to modify the > .text segment, the runtime cost of doing the relocation can be noticeable. > > The attached patch rewrites the linkage, discarding the tables of addresses > in favor of tables of offsets. All transfers are local within each individual > function, so there can be no interference by processing that occurs > after assembly, such as link-time re-ordering (even of individual functions.) > > -- John Reiser > > > libmpeg2.patch > > > Index: libmpeg2/motion_comp_arm_s.S > =================================================================== > --- libmpeg2/motion_comp_arm_s.S (revision 1205) > +++ libmpeg2/motion_comp_arm_s.S (working copy) > @@ -29,9 +29,13 @@ > pld [r1] > stmfd sp!, {r4-r11, lr} @ R14 is also called LR > and r4, r1, #3 > - adr r5, MC_put_o_16_arm_align_jt > - add r5, r5, r4, lsl #2 > - ldr pc, [r5] > + ldrb r4, [pc, r4] > + add pc, pc, r4, lsl #2
Is this instruction available on all ARM variants? I have to ask because I found some restrictions on: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/BABDCBAB.html Although here it should be the form "ADD Rd, Rn, #imm8m" which works everywhere. > + .byte (MC_put_o_16_arm_align0 - 0f)>>2 > + .byte (MC_put_o_16_arm_align1 - 0f)>>2 > + .byte (MC_put_o_16_arm_align2 - 0f)>>2 > + .byte (MC_put_o_16_arm_align3 - 0f)>>2 > +0: ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Libmpeg2-devel mailing list Libmpeg2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmpeg2-devel