Glibc рдХрдбреВрди ARMv7 рд╕рд╛рдареА memcpy рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ рдЧрдВрднреАрд░ рднреЗрджреНрдпрддрд╛

рд╕рд┐рд╕реНрдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрд╢реЛрдзрдХ рдЙрдШрдб рддрдкрд╢реАрд▓ рдЕрд╕реБрд░рдХреНрд╖рд╛ (рд╕реАрд╡реНрд╣реАрдИ- 2020-6096) 32-рдмрд┐рдЯ ARMv7 рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА Glibc-рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ memcpy() рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ. рдХреЙрдкреА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рдЪрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░рдЪреНрдпрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рдЪреБрдХреАрдЪреНрдпрд╛ рд╣рд╛рддрд╛рд│рдгреАрдореБрд│реЗ рд╕рдорд╕реНрдпрд╛ рдЙрджреНрднрд╡рддреЗ, рдЕрд╕реЗрдВрдмреНрд▓реА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдореБрд│реЗ рдЬреЗ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХреЗрд▓реЗрд▓реНрдпрд╛ 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХрд╛рдВрдордзреНрдпреЗ рдлреЗрд░рдлрд╛рд░ рдХрд░рддрд╛рдд. ARMv7 рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдЖрдХрд╛рд░рд╛рд╕рд╣ memcpy() рдХреЙрд▓ рдХреЗрд▓реНрдпрд╛рдиреЗ рдореВрд▓реНрдпрд╛рдВрдЪреА рдЪреБрдХреАрдЪреА рддреБрд▓рдирд╛ рд╣реЛрддреЗ рдЖрдгрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдмрдлрд░рдЪреНрдпрд╛ рд╕реАрдореЗрдмрд╛рд╣реЗрд░реАрд▓ рднрд╛рдЧрд╛рдд рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рддреЗ.

рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╢рд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЬреЗрдереЗ рдЖрдХреНрд░рдордгрдХрд░реНрддрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪреНрдпрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдпрд╛рдЪреА рдирд┐рд░реНрдорд┐рддреА рдЖрдпреЛрдЬрд┐рдд рдХрд░реВ рд╢рдХрддреЛ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдХреЙрдкреА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪрд╛ рдЖрдХрд╛рд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, 2 GB рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛рдирд╛ рддреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реЛрдИрд▓. рдбреЗрдЯрд╛, рдкрд░рдВрддреБ рд╣рд▓реНрд▓реНрдпрд╛рджрд░рдореНрдпрд╛рди, рдмрдлрд░ рдорд░реНрдпрд╛рджреЗрдЪреНрдпрд╛ рдкрд▓реАрдХрдбреЗ рдЬрд╛рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХрд┐рдорд╛рди 4GB рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ). memcpy() рдлрдВрдХреНрд╢рди рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреНрдпреЗ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рд╡рд░ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ ARMv7 рдкреНрд░реЛрд╕реЗрд╕рд░ рдСрдЯреЛрдореЛрдЯрд┐рд╡реНрд╣ рд╕рд┐рд╕реНрдЯрдо, рдореЛрдмрд╛рдЗрд▓, рдЗрдВрдбрд╕реНрдЯреНрд░рд┐рдпрд▓, рдХрдВрдЭреНрдпреБрдорд░, рдХрдореНрдпреБрдирд┐рдХреЗрд╢рдиреНрд╕ рдЖрдгрд┐ рдПрдореНрдмреЗрдбреЗрдб рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕рдордзреНрдпреЗ рд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗрдд, рдЬреЗ рдмреНрд▓реВрдЯреВрде, HD рд░реЗрдбрд┐рдУ/рдбреАрдПрдмреА, рдпреВрдПрд╕рдмреА, рдХреЕрди рдмрд╕, рд╡рд╛рдкрд░реВрди рд╣рд▓реНрд▓реЗ рд╣реЛрдК рд╢рдХрддрд╛рдд. рд╡рд╛рдп-рдлрд╛рдп рдлрд╛рдп рдЖрдгрд┐ рдЗрддрд░ рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдХрд╛рд░рд╛рдЪреНрдпрд╛ рдирд┐рд░реНрдмрдВрдзрд╛рдВрд╢рд┐рд╡рд╛рдп рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд╕реНрд╡реАрдХрд╛рд░рдгрд╛рд▒реНрдпрд╛ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рд╕реЗрд╡рд╛ рдЖрдгрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╡рд░ рд╣рд▓реНрд▓рд╛ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ).

рдСрдЯреЛрдореЛрдмрд╛рдИрд▓ рд╡рд╛рдп-рдлрд╛рдп рдиреЗрдЯрд╡рд░реНрдХрджреНрд╡рд╛рд░реЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдСрдЯреЛрдореЛрдмрд╛рдИрд▓ рдорд╛рд╣рд┐рддреА рдкреНрд░рдгрд╛рд▓реАрдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ HTTP рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╣рд▓реНрд▓рд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдпрд░рдд рд╢реЛрд╖рдгрд╛рдЪреА рдирд┐рд░реНрдорд┐рддреА рд╣реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ. рдмрд╛рд╣реЗрд░реАрд▓ рд╣рд▓реНрд▓реЗрдЦреЛрд░ рдЦреВрдк рдореЛрдареА GET рд╡рд┐рдирдВрддреА рдкрд╛рдард╡реВрди рдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реАрд▓ memcpy рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪрд╛ рдлрд╛рдпрджрд╛ рдШреЗрдК рд╢рдХрддреЛ рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рд░реВрдЯ рдкреНрд░рд╡реЗрд╢ рдорд┐рд│рд╡реВ рд╢рдХрддреЛ.

Glibc рдХрдбреВрди ARMv7 рд╕рд╛рдареА memcpy рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдордзреНрдпреЗ рдЧрдВрднреАрд░ рднреЗрджреНрдпрддрд╛

32-рдмрд┐рдЯ x86 рд╕рд┐рд╕реНрдЯреАрдорд╡рд░, рд╕рдорд╕реНрдпрд╛ рджрд┐рд╕реВрди рдпреЗрдд рдирд╛рд╣реА, рдХрд╛рд░рдг рдпрд╛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА memcpy рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдХрд╛рд░ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд▓рд╛ рдЖрдХрд╛рд░_t (рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖реЗрдд) рдЪреНрдпрд╛ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдирд╕рд▓реЗрд▓реНрдпрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рдореВрд▓реНрдпрд╛рдЪреНрдпрд╛ рд░реВрдкрд╛рдд рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рд╕рдордЬрддреЗ. рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА ARMv7 рд╕рд╛рдареА рддреЗ size_t рдРрд╡рдЬреА рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдкреВрд░реНрдгрд╛рдВрдХ рдореНрд╣рдгреВрди рдорд╛рдирд▓реЗ рдЬрд╛рддреЗ). рдирд┐рд░рд╛рдХрд░рдг рд╕рдзреНрдпрд╛ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рдкреЕрдЪ, рдЬреЗ рдСрдЧрд╕реНрдЯ Glibc 2.32 рдЕрдкрдбреЗрдЯрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓.
рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдСрдкрд░реЗрдВрдбреНрд╕ (bge рдЖрдгрд┐ blt) рд╡рд░ рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд▒реНрдпрд╛ рдЕрд╕реЗрдВрдмреНрд▓реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдЕ-рд╕реНрд╡рд╛рдХреНрд╖рд░реАрдд рдкреНрд░рддрд┐рд░реВрдк (blo рдЖрдгрд┐ bhs) рд╕рд╣ рдкреБрдирд░реНрд╕реНрдерд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рд░рд╛рдХрд░рдг рдЙрдХрд│рддреЗ.

рдЕрджреНрдпрд╛рдкрд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реБрдЯрд▓реЗрд▓реА рдирд╛рд╣реА рдбреЗрдмрд┐рдпрди 9 рдЖрдгрд┐ 10 (рдбреЗрдмрд┐рдпрди 8 рдордзреНрдпреЗ рджреГрд╢реНрдпрдорд╛рди рдирд╛рд╣реА), Fedora, рдЙрдмрдВрдЯреВ, OpenEmbedded, Tizen (glibc рджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓реЗрд▓реЗ). рд░рд╣реЗрд▓ ╨╕ SUSE рд╕рдорд╕реНрдпрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдд рдирд╛рд╣реА рдХрд╛рд░рдг рддреЗ 32-рдмрд┐рдЯ ARMv7 рд╕рд┐рд╕реНрдЯрдорд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реАрдд. Android рд▓рд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдд рдирд╛рд╣реА рдХрд╛рд░рдг рддреЗ рд╕реНрд╡рддрдГрдЪреЗ libc (Bionic) рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╡рд╛рдкрд░рддреЗ. IN рдУрдкрди рдбрдмреНрд▓реВрдЖрд░рдЯреА рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рдмрд╣реБрддреЗрдХ рдмрд┐рд▓реНрдбреНрд╕ Musl рд╡рд╛рдкрд░рддрд╛рдд, рдкрд░рдВрддреБ glibc рджреЗрдЦреАрд▓ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛