ObjFW  Check-in [07913b4cb3]

Overview
Comment:configure: Check whether blx is available on ARM
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | 1.1
Files: files | file ages | folders
SHA3-256: 07913b4cb37f8a3283269c632e9801f1cc8e2dccd51e1189a9b22035009aaf2f
User & Date: js on 2024-05-11 18:03:12
Other Links: branch diff | manifest | tags
Context
2024-05-11
22:18
README.md: Add instructions for Debian check-in: 39acd16610 user: js tags: 1.1
18:03
configure: Check whether blx is available on ARM check-in: 07913b4cb3 user: js tags: 1.1
18:02
configure: Check whether blx is available on ARM check-in: 4f3f90e5e7 user: js tags: trunk
2024-05-05
09:43
Fix +[OFSystemInfo networkInterfaces] on NetBSD check-in: 6f0bb25b4e user: js tags: 1.1
Changes

Modified configure.ac from [2163d34dd5] to [e3671ad7e7].

836
837
838
839
840
841
842

















843
844
845
846
847
848
849
AC_MSG_RESULT($fp_endianess)
AS_IF([test x"$fp_endianess" = x"unknown"], [
	AC_MSG_ERROR(
		[Floating point implementation does not conform to IEEE 754!])])

case "$host_cpu" in
arm* | earm*)

















	AC_MSG_CHECKING(for VFP2 or above)
	AC_COMPILE_IFELSE([
		AC_LANG_PROGRAM([], [
			#if !defined(__arm64__) && !defined(__aarch64__) && \
			    !defined(__ARM64_ARCH_8__)
			__asm__ __volatile__ (
			    "vstmdb	sp!, {d0-d7}"







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
AC_MSG_RESULT($fp_endianess)
AS_IF([test x"$fp_endianess" = x"unknown"], [
	AC_MSG_ERROR(
		[Floating point implementation does not conform to IEEE 754!])])

case "$host_cpu" in
arm* | earm*)
	AC_MSG_CHECKING(for blx)
	AC_COMPILE_IFELSE([
		AC_LANG_PROGRAM([], [
			#if !defined(__arm64__) && !defined(__arch64__) && \
			    !defined(__ARM64_ARCH_8__)
			__asm__ __volatile__ (
				"blx	r12"
			);
			#endif
		])
	], [
		AC_DEFINE(HAVE_BLX, 1, [Whether we have blx])
		AC_MSG_RESULT(yes)
	], [
		AC_MSG_RESULT(no)
	])

	AC_MSG_CHECKING(for VFP2 or above)
	AC_COMPILE_IFELSE([
		AC_LANG_PROGRAM([], [
			#if !defined(__arm64__) && !defined(__aarch64__) && \
			    !defined(__ARM64_ARCH_8__)
			__asm__ __volatile__ (
			    "vstmdb	sp!, {d0-d7}"

Modified src/forwarding/forwarding-arm-elf.S from [6672c7d1bd] to [0367f22137].

51
52
53
54
55
56
57

58



59
60
61
62
63
64
65
	mov	r1, r4
	bl	objc_msg_lookup(PLT)

	mov	r12, r0
	ldr	r0, [sp, #0]
	mov	r1, r4
	ldr	r2, [sp, #4]

	blx	r12




	cmp	r0, #0
	beq	0f
	ldr	r1, [sp, #0]
	cmp	r0, r1
	beq	0f








>

>
>
>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
	mov	r1, r4
	bl	objc_msg_lookup(PLT)

	mov	r12, r0
	ldr	r0, [sp, #0]
	mov	r1, r4
	ldr	r2, [sp, #4]
#ifdef HAVE_BLX
	blx	r12
#else
	bl	r12
#endif

	cmp	r0, #0
	beq	0f
	ldr	r1, [sp, #0]
	cmp	r0, r1
	beq	0f

107
108
109
110
111
112
113

114



115
116
117
118
119
120
121
	mov	r1, r4
	bl	objc_msg_lookup(PLT)

	mov	r12, r0
	ldr	r0, [sp, #4]
	mov	r1, r4
	ldr	r2, [sp, #8]

	blx	r12




	cmp	r0, #0
	beq	0f
	ldr	r1, [sp, #4]
	cmp	r0, r1
	beq	0f








>

>
>
>







111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
	mov	r1, r4
	bl	objc_msg_lookup(PLT)

	mov	r12, r0
	ldr	r0, [sp, #4]
	mov	r1, r4
	ldr	r2, [sp, #8]
#ifdef HAVE_BLX
	blx	r12
#else
	bl	r12
#endif

	cmp	r0, #0
	beq	0f
	ldr	r1, [sp, #4]
	cmp	r0, r1
	beq	0f