* commit '3c6d1b887692ecc7198e5292d49e3635b68fa95c': Add .cfi_startproc/.cfi_endproc to ENTRY/END.
This commit is contained in:
commit
47580cc017
@ -38,7 +38,6 @@
|
|||||||
// Check that the two lengths together don't exceed the threshold, then
|
// Check that the two lengths together don't exceed the threshold, then
|
||||||
// do a memcpy of the data.
|
// do a memcpy of the data.
|
||||||
ENTRY(__strcat_chk)
|
ENTRY(__strcat_chk)
|
||||||
.cfi_startproc
|
|
||||||
pld [r0, #0]
|
pld [r0, #0]
|
||||||
push {r0, lr}
|
push {r0, lr}
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
@ -188,8 +187,6 @@ ENTRY(__strcat_chk)
|
|||||||
mov r2, r4
|
mov r2, r4
|
||||||
add r0, r0, r3
|
add r0, r0, r3
|
||||||
pop {r4, r5}
|
pop {r4, r5}
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__strcat_chk)
|
END(__strcat_chk)
|
||||||
|
|
||||||
#define MEMCPY_BASE __strcat_chk_memcpy_base
|
#define MEMCPY_BASE __strcat_chk_memcpy_base
|
||||||
@ -198,7 +195,6 @@ END(__strcat_chk)
|
|||||||
#include "memcpy_base.S"
|
#include "memcpy_base.S"
|
||||||
|
|
||||||
ENTRY_PRIVATE(__strcat_chk_failed)
|
ENTRY_PRIVATE(__strcat_chk_failed)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.save {r4, r5}
|
.save {r4, r5}
|
||||||
|
|
||||||
@ -218,8 +214,6 @@ error_code:
|
|||||||
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+4)
|
.word error_string-(1b+4)
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__strcat_chk_failed)
|
END(__strcat_chk_failed)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
// Get the length of the source string first, then do a memcpy of the data
|
// Get the length of the source string first, then do a memcpy of the data
|
||||||
// instead of a strcpy.
|
// instead of a strcpy.
|
||||||
ENTRY(__strcpy_chk)
|
ENTRY(__strcpy_chk)
|
||||||
.cfi_startproc
|
|
||||||
pld [r0, #0]
|
pld [r0, #0]
|
||||||
push {r0, lr}
|
push {r0, lr}
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
@ -155,8 +154,6 @@ ENTRY(__strcpy_chk)
|
|||||||
|
|
||||||
// Add 1 for copy length to get the string terminator.
|
// Add 1 for copy length to get the string terminator.
|
||||||
add r2, r3, #1
|
add r2, r3, #1
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__strcpy_chk)
|
END(__strcpy_chk)
|
||||||
|
|
||||||
#define MEMCPY_BASE __strcpy_chk_memcpy_base
|
#define MEMCPY_BASE __strcpy_chk_memcpy_base
|
||||||
@ -164,7 +161,6 @@ END(__strcpy_chk)
|
|||||||
#include "memcpy_base.S"
|
#include "memcpy_base.S"
|
||||||
|
|
||||||
ENTRY_PRIVATE(__strcpy_chk_failed)
|
ENTRY_PRIVATE(__strcpy_chk_failed)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
@ -179,8 +175,6 @@ error_code:
|
|||||||
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+4)
|
.word error_string-(1b+4)
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__strcpy_chk_failed)
|
END(__strcpy_chk_failed)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -63,24 +63,19 @@
|
|||||||
.fpu neon
|
.fpu neon
|
||||||
|
|
||||||
ENTRY(__memcpy_chk)
|
ENTRY(__memcpy_chk)
|
||||||
.cfi_startproc
|
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
bhi __memcpy_chk_fail
|
bhi __memcpy_chk_fail
|
||||||
|
|
||||||
// Fall through to memcpy...
|
// Fall through to memcpy...
|
||||||
.cfi_endproc
|
|
||||||
END(__memcpy_chk)
|
END(__memcpy_chk)
|
||||||
|
|
||||||
ENTRY(memcpy)
|
ENTRY(memcpy)
|
||||||
.cfi_startproc
|
|
||||||
pld [r1, #64]
|
pld [r1, #64]
|
||||||
push {r0, lr}
|
push {r0, lr}
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
.cfi_rel_offset lr, 4
|
.cfi_rel_offset lr, 4
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(memcpy)
|
END(memcpy)
|
||||||
|
|
||||||
#define MEMCPY_BASE __memcpy_base
|
#define MEMCPY_BASE __memcpy_base
|
||||||
@ -88,7 +83,6 @@ END(memcpy)
|
|||||||
#include "memcpy_base.S"
|
#include "memcpy_base.S"
|
||||||
|
|
||||||
ENTRY_PRIVATE(__memcpy_chk_fail)
|
ENTRY_PRIVATE(__memcpy_chk_fail)
|
||||||
.cfi_startproc
|
|
||||||
// Preserve lr for backtrace.
|
// Preserve lr for backtrace.
|
||||||
push {lr}
|
push {lr}
|
||||||
.save {lr}
|
.save {lr}
|
||||||
@ -104,7 +98,6 @@ error_code:
|
|||||||
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+8)
|
.word error_string-(1b+8)
|
||||||
.cfi_endproc
|
|
||||||
END(__memcpy_chk_fail)
|
END(__memcpy_chk_fail)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -54,7 +54,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ENTRY_PRIVATE(MEMCPY_BASE)
|
ENTRY_PRIVATE(MEMCPY_BASE)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
@ -170,12 +169,9 @@ ENTRY_PRIVATE(MEMCPY_BASE)
|
|||||||
eor r3, r0, r1
|
eor r3, r0, r1
|
||||||
ands r3, r3, #0x3
|
ands r3, r3, #0x3
|
||||||
bne .L_copy_unknown_alignment
|
bne .L_copy_unknown_alignment
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(MEMCPY_BASE)
|
END(MEMCPY_BASE)
|
||||||
|
|
||||||
ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
|
ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
@ -324,6 +320,4 @@ ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
|
|||||||
|
|
||||||
// Src is guaranteed to be at least word aligned by this point.
|
// Src is guaranteed to be at least word aligned by this point.
|
||||||
b .L_word_aligned
|
b .L_word_aligned
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(MEMCPY_BASE_ALIGNED)
|
END(MEMCPY_BASE_ALIGNED)
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
.syntax unified
|
.syntax unified
|
||||||
|
|
||||||
ENTRY(__memset_chk)
|
ENTRY(__memset_chk)
|
||||||
.cfi_startproc
|
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
bls .L_done
|
bls .L_done
|
||||||
|
|
||||||
@ -59,21 +58,16 @@ error_code:
|
|||||||
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+8)
|
.word error_string-(1b+8)
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__memset_chk)
|
END(__memset_chk)
|
||||||
|
|
||||||
ENTRY(bzero)
|
ENTRY(bzero)
|
||||||
.cfi_startproc
|
|
||||||
mov r2, r1
|
mov r2, r1
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
.L_done:
|
.L_done:
|
||||||
// Fall through to memset...
|
// Fall through to memset...
|
||||||
.cfi_endproc
|
|
||||||
END(bzero)
|
END(bzero)
|
||||||
|
|
||||||
ENTRY(memset)
|
ENTRY(memset)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0}
|
.save {r0}
|
||||||
stmfd sp!, {r0}
|
stmfd sp!, {r0}
|
||||||
.cfi_def_cfa_offset 4
|
.cfi_def_cfa_offset 4
|
||||||
@ -192,7 +186,6 @@ ENTRY(memset)
|
|||||||
strbcs r1, [r0], #1
|
strbcs r1, [r0], #1
|
||||||
ldmfd sp!, {r0}
|
ldmfd sp!, {r0}
|
||||||
bx lr
|
bx lr
|
||||||
.cfi_endproc
|
|
||||||
END(memset)
|
END(memset)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -159,7 +159,6 @@ ENTRY(strcmp)
|
|||||||
#endif /* not __ARMEB__ */
|
#endif /* not __ARMEB__ */
|
||||||
.endm /* setup_return */
|
.endm /* setup_return */
|
||||||
|
|
||||||
.cfi_startproc
|
|
||||||
pld [r0, #0]
|
pld [r0, #0]
|
||||||
pld [r1, #0]
|
pld [r1, #0]
|
||||||
|
|
||||||
@ -375,5 +374,4 @@ ENTRY(strcmp)
|
|||||||
it ls
|
it ls
|
||||||
sbcls r0, r0, r0
|
sbcls r0, r0, r0
|
||||||
bx lr
|
bx lr
|
||||||
.cfi_endproc
|
|
||||||
END(strcmp)
|
END(strcmp)
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
// Check that the two lengths together don't exceed the threshold, then
|
// Check that the two lengths together don't exceed the threshold, then
|
||||||
// do a memcpy of the data.
|
// do a memcpy of the data.
|
||||||
ENTRY(__strcat_chk)
|
ENTRY(__strcat_chk)
|
||||||
.cfi_startproc
|
|
||||||
pld [r0, #0]
|
pld [r0, #0]
|
||||||
push {r0, lr}
|
push {r0, lr}
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
@ -193,7 +192,6 @@ ENTRY(__strcat_chk)
|
|||||||
pop {r4, r5}
|
pop {r4, r5}
|
||||||
|
|
||||||
// Fall through into the memcpy_base function.
|
// Fall through into the memcpy_base function.
|
||||||
.cfi_endproc
|
|
||||||
END(__strcat_chk)
|
END(__strcat_chk)
|
||||||
|
|
||||||
#define MEMCPY_BASE __strcat_chk_memcpy_base
|
#define MEMCPY_BASE __strcat_chk_memcpy_base
|
||||||
@ -201,8 +199,6 @@ END(__strcat_chk)
|
|||||||
#include "memcpy_base.S"
|
#include "memcpy_base.S"
|
||||||
|
|
||||||
ENTRY_PRIVATE(__strcat_chk_fail)
|
ENTRY_PRIVATE(__strcat_chk_fail)
|
||||||
.cfi_startproc
|
|
||||||
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.save {r4, r5}
|
.save {r4, r5}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
@ -221,8 +217,6 @@ error_code:
|
|||||||
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+4)
|
.word error_string-(1b+4)
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__strcat_chk_fail)
|
END(__strcat_chk_fail)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
// Get the length of the source string first, then do a memcpy of the data
|
// Get the length of the source string first, then do a memcpy of the data
|
||||||
// instead of a strcpy.
|
// instead of a strcpy.
|
||||||
ENTRY(__strcpy_chk)
|
ENTRY(__strcpy_chk)
|
||||||
.cfi_startproc
|
|
||||||
pld [r0, #0]
|
pld [r0, #0]
|
||||||
push {r0, lr}
|
push {r0, lr}
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
@ -158,8 +157,6 @@ ENTRY(__strcpy_chk)
|
|||||||
// Add 1 for copy length to get the string terminator.
|
// Add 1 for copy length to get the string terminator.
|
||||||
add r2, r3, #1
|
add r2, r3, #1
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
|
|
||||||
// Fall through into the memcpy_base function.
|
// Fall through into the memcpy_base function.
|
||||||
END(__strcpy_chk)
|
END(__strcpy_chk)
|
||||||
|
|
||||||
@ -168,8 +165,6 @@ END(__strcpy_chk)
|
|||||||
#include "memcpy_base.S"
|
#include "memcpy_base.S"
|
||||||
|
|
||||||
ENTRY_PRIVATE(__strcpy_chk_fail)
|
ENTRY_PRIVATE(__strcpy_chk_fail)
|
||||||
.cfi_startproc
|
|
||||||
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
@ -185,8 +180,6 @@ error_code:
|
|||||||
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+4)
|
.word error_string-(1b+4)
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__strcpy_chk_fail)
|
END(__strcpy_chk_fail)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -41,17 +41,13 @@
|
|||||||
.thumb_func
|
.thumb_func
|
||||||
|
|
||||||
ENTRY(__memcpy_chk)
|
ENTRY(__memcpy_chk)
|
||||||
.cfi_startproc
|
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
bhi __memcpy_chk_fail
|
bhi __memcpy_chk_fail
|
||||||
|
|
||||||
// Fall through to memcpy...
|
// Fall through to memcpy...
|
||||||
.cfi_endproc
|
|
||||||
END(__memcpy_chk)
|
END(__memcpy_chk)
|
||||||
|
|
||||||
ENTRY(memcpy)
|
ENTRY(memcpy)
|
||||||
.cfi_startproc
|
|
||||||
|
|
||||||
pld [r1, #0]
|
pld [r1, #0]
|
||||||
stmfd sp!, {r0, lr}
|
stmfd sp!, {r0, lr}
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
@ -59,8 +55,6 @@ ENTRY(memcpy)
|
|||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
.cfi_rel_offset lr, 4
|
.cfi_rel_offset lr, 4
|
||||||
pld [r1, #64]
|
pld [r1, #64]
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(memcpy)
|
END(memcpy)
|
||||||
|
|
||||||
#define MEMCPY_BASE __memcpy_base
|
#define MEMCPY_BASE __memcpy_base
|
||||||
@ -68,7 +62,6 @@ END(memcpy)
|
|||||||
#include "memcpy_base.S"
|
#include "memcpy_base.S"
|
||||||
|
|
||||||
ENTRY_PRIVATE(__memcpy_chk_fail)
|
ENTRY_PRIVATE(__memcpy_chk_fail)
|
||||||
.cfi_startproc
|
|
||||||
// Preserve lr for backtrace.
|
// Preserve lr for backtrace.
|
||||||
push {lr}
|
push {lr}
|
||||||
.save {lr}
|
.save {lr}
|
||||||
@ -84,7 +77,6 @@ error_code:
|
|||||||
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+4)
|
.word error_string-(1b+4)
|
||||||
.cfi_endproc
|
|
||||||
END(__memcpy_chk_fail)
|
END(__memcpy_chk_fail)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ENTRY_PRIVATE(MEMCPY_BASE)
|
ENTRY_PRIVATE(MEMCPY_BASE)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
@ -137,13 +136,9 @@ ENTRY_PRIVATE(MEMCPY_BASE)
|
|||||||
|
|
||||||
ldmfd sp!, {r0, lr}
|
ldmfd sp!, {r0, lr}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(MEMCPY_BASE)
|
END(MEMCPY_BASE)
|
||||||
|
|
||||||
ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
|
ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
|
||||||
.cfi_startproc
|
|
||||||
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
@ -228,6 +223,4 @@ ENTRY_PRIVATE(MEMCPY_BASE_ALIGNED)
|
|||||||
6:
|
6:
|
||||||
ldmfd sp!, {r4-r8}
|
ldmfd sp!, {r4-r8}
|
||||||
ldmfd sp!, {r0, pc}
|
ldmfd sp!, {r0, pc}
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(MEMCPY_BASE_ALIGNED)
|
END(MEMCPY_BASE_ALIGNED)
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
.fpu neon
|
.fpu neon
|
||||||
|
|
||||||
ENTRY(__memset_chk)
|
ENTRY(__memset_chk)
|
||||||
.cfi_startproc
|
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
bls .L_done
|
bls .L_done
|
||||||
|
|
||||||
@ -57,25 +56,19 @@ error_code:
|
|||||||
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+8)
|
.word error_string-(1b+8)
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__memset_chk)
|
END(__memset_chk)
|
||||||
|
|
||||||
ENTRY(bzero)
|
ENTRY(bzero)
|
||||||
.cfi_startproc
|
|
||||||
mov r2, r1
|
mov r2, r1
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
|
|
||||||
.L_done:
|
.L_done:
|
||||||
// Fall through to memset...
|
// Fall through to memset...
|
||||||
.cfi_endproc
|
|
||||||
END(bzero)
|
END(bzero)
|
||||||
|
|
||||||
/* memset() returns its first argument. */
|
/* memset() returns its first argument. */
|
||||||
ENTRY(memset)
|
ENTRY(memset)
|
||||||
.cfi_startproc
|
// The neon memset only wins for less than 132.
|
||||||
|
|
||||||
# The neon memset only wins for less than 132.
|
|
||||||
cmp r2, #132
|
cmp r2, #132
|
||||||
bhi __memset_large_copy
|
bhi __memset_large_copy
|
||||||
|
|
||||||
@ -115,13 +108,9 @@ ENTRY(memset)
|
|||||||
strcsb r1, [r0], #1
|
strcsb r1, [r0], #1
|
||||||
ldmfd sp!, {r0}
|
ldmfd sp!, {r0}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(memset)
|
END(memset)
|
||||||
|
|
||||||
ENTRY_PRIVATE(__memset_large_copy)
|
ENTRY_PRIVATE(__memset_large_copy)
|
||||||
.cfi_startproc
|
|
||||||
|
|
||||||
/* compute the offset to align the destination
|
/* compute the offset to align the destination
|
||||||
* offset = (4-(src&3))&3 = -src & 3
|
* offset = (4-(src&3))&3 = -src & 3
|
||||||
*/
|
*/
|
||||||
@ -196,7 +185,6 @@ ENTRY_PRIVATE(__memset_large_copy)
|
|||||||
strcsb r1, [r0]
|
strcsb r1, [r0]
|
||||||
ldmfd sp!, {r0, r4-r7, lr}
|
ldmfd sp!, {r0, r4-r7, lr}
|
||||||
bx lr
|
bx lr
|
||||||
.cfi_endproc
|
|
||||||
END(__memset_large_copy)
|
END(__memset_large_copy)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -159,7 +159,6 @@ ENTRY(strcmp)
|
|||||||
#endif /* not __ARMEB__ */
|
#endif /* not __ARMEB__ */
|
||||||
.endm /* setup_return */
|
.endm /* setup_return */
|
||||||
|
|
||||||
.cfi_startproc
|
|
||||||
pld [r0, #0]
|
pld [r0, #0]
|
||||||
pld [r1, #0]
|
pld [r1, #0]
|
||||||
|
|
||||||
@ -547,5 +546,4 @@ ENTRY(strcmp)
|
|||||||
adds sp, sp, #16
|
adds sp, sp, #16
|
||||||
|
|
||||||
bx lr
|
bx lr
|
||||||
.cfi_endproc
|
|
||||||
END(strcmp)
|
END(strcmp)
|
||||||
|
@ -70,12 +70,12 @@
|
|||||||
#define _ASM_TYPE_FUNCTION #function
|
#define _ASM_TYPE_FUNCTION #function
|
||||||
#define _ASM_TYPE_OBJECT #object
|
#define _ASM_TYPE_OBJECT #object
|
||||||
#define _ENTRY(x) \
|
#define _ENTRY(x) \
|
||||||
.text; _ALIGN_TEXT; .globl x; .type x,_ASM_TYPE_FUNCTION; x: .fnstart
|
.text; _ALIGN_TEXT; .globl x; .type x,_ASM_TYPE_FUNCTION; x: .fnstart; .cfi_startproc;
|
||||||
|
|
||||||
#define _ASM_SIZE(x) .size x, .-x;
|
#define _ASM_SIZE(x) .size x, .-x;
|
||||||
|
|
||||||
#define _END(x) \
|
#define _END(x) \
|
||||||
.fnend; \
|
.fnend; .cfi_endproc; \
|
||||||
_ASM_SIZE(x)
|
_ASM_SIZE(x)
|
||||||
|
|
||||||
#ifdef GPROF
|
#ifdef GPROF
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
// Check that the two lengths together don't exceed the threshold, then
|
// Check that the two lengths together don't exceed the threshold, then
|
||||||
// do a memcpy of the data.
|
// do a memcpy of the data.
|
||||||
ENTRY(__strcat_chk)
|
ENTRY(__strcat_chk)
|
||||||
.cfi_startproc
|
|
||||||
pld [r0, #0]
|
pld [r0, #0]
|
||||||
push {r0, lr}
|
push {r0, lr}
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
@ -188,8 +187,6 @@ ENTRY(__strcat_chk)
|
|||||||
mov r2, r4
|
mov r2, r4
|
||||||
add r0, r0, r3
|
add r0, r0, r3
|
||||||
pop {r4, r5}
|
pop {r4, r5}
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__strcat_chk)
|
END(__strcat_chk)
|
||||||
|
|
||||||
#define MEMCPY_BASE __strcat_chk_memcpy_base
|
#define MEMCPY_BASE __strcat_chk_memcpy_base
|
||||||
@ -197,7 +194,6 @@ END(__strcat_chk)
|
|||||||
#include "memcpy_base.S"
|
#include "memcpy_base.S"
|
||||||
|
|
||||||
ENTRY_PRIVATE(__strcat_chk_failed)
|
ENTRY_PRIVATE(__strcat_chk_failed)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.save {r4, r5}
|
.save {r4, r5}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
@ -216,8 +212,6 @@ error_code:
|
|||||||
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_STRCAT_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+4)
|
.word error_string-(1b+4)
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__strcat_chk_failed)
|
END(__strcat_chk_failed)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
// Get the length of the source string first, then do a memcpy of the data
|
// Get the length of the source string first, then do a memcpy of the data
|
||||||
// instead of a strcpy.
|
// instead of a strcpy.
|
||||||
ENTRY(__strcpy_chk)
|
ENTRY(__strcpy_chk)
|
||||||
.cfi_startproc
|
|
||||||
pld [r0, #0]
|
pld [r0, #0]
|
||||||
push {r0, lr}
|
push {r0, lr}
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
@ -155,8 +154,6 @@ ENTRY(__strcpy_chk)
|
|||||||
|
|
||||||
// Add 1 for copy length to get the string terminator.
|
// Add 1 for copy length to get the string terminator.
|
||||||
add r2, r3, #1
|
add r2, r3, #1
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__strcpy_chk)
|
END(__strcpy_chk)
|
||||||
|
|
||||||
#define MEMCPY_BASE __strcpy_chk_memcpy_base
|
#define MEMCPY_BASE __strcpy_chk_memcpy_base
|
||||||
@ -164,7 +161,6 @@ END(__strcpy_chk)
|
|||||||
#include "memcpy_base.S"
|
#include "memcpy_base.S"
|
||||||
|
|
||||||
ENTRY_PRIVATE(__strcpy_chk_failed)
|
ENTRY_PRIVATE(__strcpy_chk_failed)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
@ -179,7 +175,6 @@ error_code:
|
|||||||
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_STRCPY_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+4)
|
.word error_string-(1b+4)
|
||||||
.cfi_endproc
|
|
||||||
END(__strcpy_chk_failed)
|
END(__strcpy_chk_failed)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -44,23 +44,19 @@
|
|||||||
.thumb_func
|
.thumb_func
|
||||||
|
|
||||||
ENTRY(__memcpy_chk)
|
ENTRY(__memcpy_chk)
|
||||||
.cfi_startproc
|
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
bhi __memcpy_chk_fail
|
bhi __memcpy_chk_fail
|
||||||
|
|
||||||
// Fall through to memcpy...
|
// Fall through to memcpy...
|
||||||
.cfi_endproc
|
|
||||||
END(__memcpy_chk)
|
END(__memcpy_chk)
|
||||||
|
|
||||||
ENTRY(memcpy)
|
ENTRY(memcpy)
|
||||||
.cfi_startproc
|
|
||||||
pld [r1, #64]
|
pld [r1, #64]
|
||||||
stmfd sp!, {r0, lr}
|
stmfd sp!, {r0, lr}
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
.cfi_rel_offset lr, 4
|
.cfi_rel_offset lr, 4
|
||||||
.cfi_endproc
|
|
||||||
END(memcpy)
|
END(memcpy)
|
||||||
|
|
||||||
#define MEMCPY_BASE __memcpy_base
|
#define MEMCPY_BASE __memcpy_base
|
||||||
@ -68,7 +64,6 @@ END(memcpy)
|
|||||||
#include "memcpy_base.S"
|
#include "memcpy_base.S"
|
||||||
|
|
||||||
ENTRY_PRIVATE(__memcpy_chk_fail)
|
ENTRY_PRIVATE(__memcpy_chk_fail)
|
||||||
.cfi_startproc
|
|
||||||
// Preserve lr for backtrace.
|
// Preserve lr for backtrace.
|
||||||
push {lr}
|
push {lr}
|
||||||
.save {lr}
|
.save {lr}
|
||||||
@ -84,7 +79,6 @@ error_code:
|
|||||||
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_MEMCPY_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+4)
|
.word error_string-(1b+4)
|
||||||
.cfi_endproc
|
|
||||||
END(__memcpy_chk_fail)
|
END(__memcpy_chk_fail)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -36,7 +36,6 @@
|
|||||||
// Assumes neon instructions and a cache line size of 32 bytes.
|
// Assumes neon instructions and a cache line size of 32 bytes.
|
||||||
|
|
||||||
ENTRY_PRIVATE(MEMCPY_BASE)
|
ENTRY_PRIVATE(MEMCPY_BASE)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0, lr}
|
.save {r0, lr}
|
||||||
.cfi_def_cfa_offset 8
|
.cfi_def_cfa_offset 8
|
||||||
.cfi_rel_offset r0, 0
|
.cfi_rel_offset r0, 0
|
||||||
@ -122,6 +121,4 @@ ENTRY_PRIVATE(MEMCPY_BASE)
|
|||||||
|
|
||||||
ldmfd sp!, {r0, lr}
|
ldmfd sp!, {r0, lr}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(MEMCPY_BASE)
|
END(MEMCPY_BASE)
|
||||||
|
@ -39,7 +39,6 @@
|
|||||||
.fpu neon
|
.fpu neon
|
||||||
|
|
||||||
ENTRY(__memset_chk)
|
ENTRY(__memset_chk)
|
||||||
.cfi_startproc
|
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
bls .L_done
|
bls .L_done
|
||||||
|
|
||||||
@ -58,23 +57,18 @@ error_code:
|
|||||||
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
|
.word BIONIC_EVENT_MEMSET_BUFFER_OVERFLOW
|
||||||
error_message:
|
error_message:
|
||||||
.word error_string-(1b+8)
|
.word error_string-(1b+8)
|
||||||
|
|
||||||
.cfi_endproc
|
|
||||||
END(__memset_chk)
|
END(__memset_chk)
|
||||||
|
|
||||||
ENTRY(bzero)
|
ENTRY(bzero)
|
||||||
.cfi_startproc
|
|
||||||
mov r2, r1
|
mov r2, r1
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
|
|
||||||
.L_done:
|
.L_done:
|
||||||
// Fall through to memset...
|
// Fall through to memset...
|
||||||
.cfi_endproc
|
|
||||||
END(bzero)
|
END(bzero)
|
||||||
|
|
||||||
/* memset() returns its first argument. */
|
/* memset() returns its first argument. */
|
||||||
ENTRY(memset)
|
ENTRY(memset)
|
||||||
.cfi_startproc
|
|
||||||
.save {r0}
|
.save {r0}
|
||||||
stmfd sp!, {r0}
|
stmfd sp!, {r0}
|
||||||
.cfi_def_cfa_offset 4
|
.cfi_def_cfa_offset 4
|
||||||
@ -111,7 +105,6 @@ ENTRY(memset)
|
|||||||
strcsb r1, [r0], #1
|
strcsb r1, [r0], #1
|
||||||
ldmfd sp!, {r0}
|
ldmfd sp!, {r0}
|
||||||
bx lr
|
bx lr
|
||||||
.cfi_endproc
|
|
||||||
END(memset)
|
END(memset)
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -159,7 +159,6 @@ ENTRY(strcmp)
|
|||||||
#endif /* not __ARMEB__ */
|
#endif /* not __ARMEB__ */
|
||||||
.endm /* setup_return */
|
.endm /* setup_return */
|
||||||
|
|
||||||
.cfi_startproc
|
|
||||||
pld [r0, #0]
|
pld [r0, #0]
|
||||||
pld [r1, #0]
|
pld [r1, #0]
|
||||||
|
|
||||||
@ -485,5 +484,4 @@ ENTRY(strcmp)
|
|||||||
.cfi_restore r7
|
.cfi_restore r7
|
||||||
|
|
||||||
bx lr
|
bx lr
|
||||||
.cfi_endproc
|
|
||||||
END(strcmp)
|
END(strcmp)
|
||||||
|
@ -94,7 +94,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define _ENTRY(x) \
|
#define _ENTRY(x) \
|
||||||
.text; _ALIGN_TEXT; .globl x; .type x,@function; x:
|
.text; _ALIGN_TEXT; .globl x; .type x,@function; x: .cfi_startproc;
|
||||||
#define _LABEL(x) \
|
#define _LABEL(x) \
|
||||||
.globl x; x:
|
.globl x; x:
|
||||||
|
|
||||||
@ -175,7 +175,7 @@
|
|||||||
#define NENTRY(y) _ENTRY(_C_LABEL(y))
|
#define NENTRY(y) _ENTRY(_C_LABEL(y))
|
||||||
#define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
|
#define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
|
||||||
#define LABEL(y) _LABEL(_C_LABEL(y))
|
#define LABEL(y) _LABEL(_C_LABEL(y))
|
||||||
#define END(y) .size y, . - y
|
#define END(y) .cfi_endproc; .size y, . - y
|
||||||
|
|
||||||
#define ASMSTR .asciz
|
#define ASMSTR .asciz
|
||||||
|
|
||||||
|
@ -38,14 +38,12 @@
|
|||||||
* ws@tools.de (Wolfgang Solfrank, TooLs GmbH) +49-228-985800
|
* ws@tools.de (Wolfgang Solfrank, TooLs GmbH) +49-228-985800
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef MEMCOPY
|
#if defined(MEMCOPY)
|
||||||
ENTRY(memcpy)
|
ENTRY(memcpy)
|
||||||
#else
|
#elif defined(MEMMOVE)
|
||||||
#ifdef MEMMOVE
|
|
||||||
ENTRY(memmove)
|
ENTRY(memmove)
|
||||||
#else
|
#else
|
||||||
ENTRY(bcopy)
|
ENTRY(bcopy)
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
pushl %esi
|
pushl %esi
|
||||||
pushl %edi
|
pushl %edi
|
||||||
@ -91,3 +89,10 @@ ENTRY(bcopy)
|
|||||||
popl %esi
|
popl %esi
|
||||||
cld
|
cld
|
||||||
ret
|
ret
|
||||||
|
#if defined(MEMCOPY)
|
||||||
|
END(memcpy)
|
||||||
|
#elif defined(MEMMOVE)
|
||||||
|
END(memmove)
|
||||||
|
#else
|
||||||
|
END(bcopy)
|
||||||
|
#endif
|
||||||
|
@ -70,3 +70,4 @@ ENTRY(__bionic_clone)
|
|||||||
hlt
|
hlt
|
||||||
2:
|
2:
|
||||||
ret
|
ret
|
||||||
|
END(__bionic_clone)
|
||||||
|
@ -63,6 +63,7 @@ ENTRY(_setjmp)
|
|||||||
|
|
||||||
xorl %eax,%eax
|
xorl %eax,%eax
|
||||||
ret
|
ret
|
||||||
|
END(_setjmp)
|
||||||
|
|
||||||
ENTRY(_longjmp)
|
ENTRY(_longjmp)
|
||||||
movq (_JB_RBX * 8)(%rdi),%rbx
|
movq (_JB_RBX * 8)(%rdi),%rbx
|
||||||
@ -80,3 +81,4 @@ ENTRY(_longjmp)
|
|||||||
incl %eax
|
incl %eax
|
||||||
1: movq %r11,0(%rsp)
|
1: movq %r11,0(%rsp)
|
||||||
ret
|
ret
|
||||||
|
END(_longjmp)
|
||||||
|
@ -42,7 +42,7 @@ ENTRY(__futex_wait)
|
|||||||
mov $__NR_futex, %eax
|
mov $__NR_futex, %eax
|
||||||
syscall
|
syscall
|
||||||
ret
|
ret
|
||||||
|
END(__futex_wait)
|
||||||
|
|
||||||
/* int __futex_wake(volatile void *ftx, int count) */
|
/* int __futex_wake(volatile void *ftx, int count) */
|
||||||
|
|
||||||
@ -52,12 +52,14 @@ ENTRY(__futex_wake)
|
|||||||
mov $__NR_futex, %eax
|
mov $__NR_futex, %eax
|
||||||
syscall
|
syscall
|
||||||
ret
|
ret
|
||||||
|
END(__futex_wake)
|
||||||
|
|
||||||
/* int __futex_syscall3(volatile void *ftx, int op, int count) */
|
/* int __futex_syscall3(volatile void *ftx, int op, int count) */
|
||||||
ENTRY(__futex_syscall3)
|
ENTRY(__futex_syscall3)
|
||||||
mov $__NR_futex, %eax
|
mov $__NR_futex, %eax
|
||||||
syscall
|
syscall
|
||||||
ret
|
ret
|
||||||
|
END(__futex_syscall3)
|
||||||
|
|
||||||
/* int __futex_syscall4(volatile void *ftx, int op, int val, const struct timespec *timeout) */
|
/* int __futex_syscall4(volatile void *ftx, int op, int val, const struct timespec *timeout) */
|
||||||
ENTRY(__futex_syscall4)
|
ENTRY(__futex_syscall4)
|
||||||
@ -65,3 +67,4 @@ ENTRY(__futex_syscall4)
|
|||||||
mov $__NR_futex, %eax
|
mov $__NR_futex, %eax
|
||||||
syscall
|
syscall
|
||||||
ret
|
ret
|
||||||
|
END(__futex_syscall4)
|
||||||
|
@ -73,6 +73,7 @@ ENTRY(setjmp)
|
|||||||
|
|
||||||
2: xorl %eax,%eax
|
2: xorl %eax,%eax
|
||||||
ret
|
ret
|
||||||
|
END(setjmp)
|
||||||
|
|
||||||
ENTRY(longjmp)
|
ENTRY(longjmp)
|
||||||
movq %rdi,%r12
|
movq %rdi,%r12
|
||||||
@ -101,3 +102,4 @@ ENTRY(longjmp)
|
|||||||
incl %eax
|
incl %eax
|
||||||
1: movq %r11,0(%rsp)
|
1: movq %r11,0(%rsp)
|
||||||
ret
|
ret
|
||||||
|
END(longjmp)
|
||||||
|
@ -77,6 +77,7 @@ ENTRY(sigsetjmp)
|
|||||||
|
|
||||||
2: xorl %eax,%eax
|
2: xorl %eax,%eax
|
||||||
ret
|
ret
|
||||||
|
END(sigsetjmp)
|
||||||
|
|
||||||
ENTRY(siglongjmp)
|
ENTRY(siglongjmp)
|
||||||
movq %rdi,%r12
|
movq %rdi,%r12
|
||||||
@ -105,3 +106,4 @@ ENTRY(siglongjmp)
|
|||||||
incl %eax
|
incl %eax
|
||||||
1: movq %r11,0(%rsp)
|
1: movq %r11,0(%rsp)
|
||||||
ret
|
ret
|
||||||
|
END(siglongjmp)
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define _ENTRY(x) \
|
#define _ENTRY(x) \
|
||||||
.text; _ALIGN_TEXT; .globl x; .type x,@function; x:
|
.text; _ALIGN_TEXT; .globl x; .type x,@function; x: .cfi_startproc;
|
||||||
#define _LABEL(x) \
|
#define _LABEL(x) \
|
||||||
.globl x; x:
|
.globl x; x:
|
||||||
|
|
||||||
@ -108,7 +108,7 @@
|
|||||||
#define ALTENTRY(x) NENTRY(x)
|
#define ALTENTRY(x) NENTRY(x)
|
||||||
#define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
|
#define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
|
||||||
#define LABEL(y) _LABEL(_C_LABEL(y))
|
#define LABEL(y) _LABEL(_C_LABEL(y))
|
||||||
#define END(y) .size y, . - y
|
#define END(y) .cfi_endproc; .size y, . - y
|
||||||
|
|
||||||
#define ASMSTR .asciz
|
#define ASMSTR .asciz
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user