ObjFW  Check-in [4f3f90e5e7]

Overview
Comment:configure: Check whether blx is available on ARM
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 4f3f90e5e7d81bfb0fa840594651156fc0436f3be46b433f019b37226a6b5bfe
User & Date: js on 2024-05-11 18:02:46
Other Links: manifest | tags
Context
2024-05-11
22:18
README.md: Add instructions for Debian check-in: a11c477d19 user: js tags: trunk
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-09
10:21
Use unsigned long for bit sets check-in: 96f946d7ad user: js tags: trunk
Changes

Modified configure.ac from [dc329f0c7e] to [13c768c775].

813
814
815
816
817
818
819

















820
821
822
823
824
825
826
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}"







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







813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
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