This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH ARM] Fix armv8-m multilib build failure with stdint.h



On 16/05/18 10:22, Jérôme Lambourg wrote:
Hello Kyrill,

Thanks for the patch! To validate it your changes you can also look at the disassembly
of the cmse.c binary in the build tree. If the binary changes with your patch then that
would indicate some trouble.
Good idea. So I just did that and the assembly of both objects are identical
(before and after the patch).

There are places in arm_cmse.h that use intptr_t. You should replace those as well.
Look for the cmse_nsfptr_create and cmse_is_nsfptr macros...
Indeed, good catch. I did not see those as this part is not included in the armv8-m.

Below the updated patch and modified changelog.

Thanks this looks good with one nit below.

2018-05-16  Jerome Lambourg  <lambourg@adacore.com>
	gcc/
	* config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
	#include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.

	libgcc/
	* config/arm/cmse.c (cmse_check_address_range): Replace
	UINTPTR_MAX with __UINTPTR_MAX__ and uintptr_t with __UINTPTR_TYPE__.


@@ -51,7 +51,8 @@
/* Execute the right variant of the TT instructions. */
   pe = pb + size - 1;
-  const int singleCheck = (((uintptr_t) pb ^ (uintptr_t) pe) < 32);
+  const int singleCheck =
+    (((__UINTPTR_TYPE__) pb ^ (__UINTPTR_TYPE__) pe) < 32);

The "=" should go on the next line together with the initialisation.

Ok for trunk with that fixed.
Thanks,
Kyrill


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]