Message ID | 20161207173802.23314-1-luc.vanoostenryck@gmail.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Thu, Dec 8, 2016 at 1:38 AM, Luc Van Oostenryck <luc.vanoostenryck@gmail.com> wrote: > The option -m64 to just set the size of longs & pointers to 64 bits. > > This patch makes this option much more effective by: > - adding define for LONG_MAX & SIZEOF_POINTER > - define __LP64__ I like this two change. > - let the dual option, -m32, do the same as -m64 but for 32 bit + max_int_alignment = 4; + bits_in_long = 32; This a feel a bit tricky is that, those value has its initial value in target.c. It is strange to overwrite it with the exact same value. It will have the effect change to the init value in target.c has no impact on the later part of the code. Maybe remove the init value in target.c and comment it is overwrite during the -m64 finalize if we do it this way. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/lib.c b/lib.c index d5b56b01..e5b0bb63 100644 --- a/lib.c +++ b/lib.c @@ -402,9 +402,21 @@ static void handle_arch_m64_finalize(void) pointer_alignment = 8; size_t_ctype = &ulong_ctype; ssize_t_ctype = &long_ctype; + add_pre_buffer("#weak_define __LONG_MAX__ 0x7fffffffffffffff\n"); + add_pre_buffer("#weak_define __SIZEOF_POINTER__ 8\n"); + add_pre_buffer("#weak_define __LP64__ 1\n"); #ifdef __x86_64__ add_pre_buffer("#weak_define __x86_64__ 1\n"); #endif + } else { + bits_in_long = 32; + max_int_alignment = 4; + bits_in_pointer = 32; + pointer_alignment = 4; + size_t_ctype = &ulong_ctype; + ssize_t_ctype = &long_ctype; + add_pre_buffer("#weak_define __LONG_MAX__ 0x7fffffff\n"); + add_pre_buffer("#weak_define __SIZEOF_POINTER__ 4\n"); } }