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

Reply via email to