From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13979 invoked by alias); 2 Sep 2012 18:15:52 -0000 Received: (qmail 13963 invoked by uid 22791); 2 Sep 2012 18:15:48 -0000 X-SWARE-Spam-Status: No, hits=-5.0 required=5.0 tests=AWL,BAYES_50,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 02 Sep 2012 18:15:26 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q82IFPMn021011 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 2 Sep 2012 14:15:26 -0400 Received: from host2.jankratochvil.net (ovpn-116-25.ams2.redhat.com [10.36.116.25]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q82IFGXT009760 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sun, 2 Sep 2012 14:15:18 -0400 Date: Sun, 02 Sep 2012 18:15:00 -0000 From: Jan Kratochvil To: Siddhesh Poyarekar Cc: gdb-patches@sourceware.org Subject: Re: bitpos expansion patches summary Message-ID: <20120902181515.GA9913@host2.jankratochvil.net> References: <20120805005350.150e5b74@spoyarek> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120805005350.150e5b74@spoyarek> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-09/txt/msg00007.txt.bz2 Hi Siddhesh, another part, close to the end. http://people.redhat.com/jkratoch/bitpos3.patch - so far only FYI - annotations to the patch file. ^x lines are justifications of the change according to non-safe splint-bitpos2.locdiff.report record below. ^y only a few of them - review of changes listed below. yBAD means I do not agree with the change, explained below. It will need to be all annotated before a check-in. [part below was already sent off-list] We will need to re-run splint on top of FSF HEAD and then re-use the already processed '.locdiff.report' lines but still see the newly introduced splint warnings. I did not yet get to this point as I still process the "old" codebase 2636a39d8bf9b24dce328e4f906e8710b52d2105 but it will need to be done before check-in. For: * newly introduced splint warnings by the int->LONGEST&co. expansion * newly introduced FSF HEAD code since the last splint run I was thinking about some updating of file:lineno records in '.locdiff.report' file to their new location and then diffing the old+reviewed '.locdiff.report' against new file. But I have not tried it yet in practice. Thanks, Jan SAFE(Register type): (mips-tdep.c:876): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE(Likewise): (mips-tdep.c:908): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (mips-tdep.c:4318): FUNC(store_signed_integer): (CORE_ADDR to LONGEST) [make_compact_addr(addr)] SAFE: (mips-tdep.c:4400): FUNC(phex): (LONGEST to int) [len] SAFE: (mips-tdep.c:4414): VARINIT(odd_sized_struct): (boolean to int) [(len > regsize && len % regsize != 0)] SAFE: (mips-tdep.c:4422): VARINIT(partial_len): (LONGEST to int) [(len < regsize ? len : regsize)] SAFE: (mips-tdep.c:4444): ASSIGN: (LONGEST to int) [ longword_offset = regsize - len] SAFE: (mips-tdep.c:4447): CMP: (int to ULONGEST) [(arg_type)->length < regsize] SAFE: (mips-tdep.c:4448): ASSIGN: (LONGEST to int) [ longword_offset = regsize - len] SAFE(Structs dont reach here): (mips-tdep.c:4565): CMP: (ULONGEST to int) [offset < (type)->length] SAFE(Likewise): (mips-tdep.c:4569): CMP: (ULONGEST to int) [offset + xfer > (type)->length] SAFE(Likewise): (mips-tdep.c:4570): ASSIGN: (ULONGEST to int) [ xfer = (type)->length - offset] FIXED(Expand len): (mips-tdep.c:4701): VARINIT(len): (ULONGEST to int) [(arg_type)->length] - You have fixed line 4646 but I do not see line 4701 to be fixed. SAFE: (mips-tdep.c:4937): CMP: (int to ULONGEST) [(type)->length > 2 * MIPS64_REGSIZE] SAFE: (mips-tdep.c:4970): FUNC(mips_xfer_register): (ULONGEST to int) [(type)->length] SAFE: (mips-tdep.c:5020): FUNC(mips_xfer_register): (ULONGEST to int) [((((type)->main_type->flds_bnds.fields[field]).type))->length] SAFE(Length < 2*MIPS64_REGSIZE): (mips-tdep.c:5036): CMP: (ULONGEST to int) [offset < (type)->length] FIXED(expand offset): (mips-tdep.c:5040): CMP: (ULONGEST to int) [offset + xfer > (type)->length] - I do not see a need for this change, it is all limited by: TYPE_LENGTH (type) <= 2 * MIPS64_REGSIZE SAFE: (mips-tdep.c:5041): ASSIGN: (ULONGEST to int) [ xfer = (type)->length - offset] SAFE(non-struct type): (mips-tdep.c:5059): CMP: (ULONGEST to int) [offset < (type)->length] SAFE(Likewise): (mips-tdep.c:5063): CMP: (ULONGEST to int) [offset + xfer > (type)->length] SAFE: (mips-tdep.c:5064): ASSIGN: (ULONGEST to int) [ xfer = (type)->length - offset] SAFE(float type): (mips-tdep.c:5244): FUNC(phex): (LONGEST to int) [len] SAFE: (mips-tdep.c:5252): FUNC(phex): (LONGEST to int) [len] SAFE: (mips-tdep.c:5284): VARINIT(partial_len): (LONGEST to int) [(len < MIPS32_REGSIZE ? len : MIPS32_REGSIZE)] SAFE(Not a struct): (mips-tdep.c:5444): FUNC(mips_xfer_register): (ULONGEST to int) [(type)->length] SAFE(Likewise): (mips-tdep.c:5450): FUNC(mips_xfer_register): (ULONGEST to int) [(type)->length] SAFE(Likewise): (mips-tdep.c:5599): CMP: (ULONGEST to int) [offset < (type)->length] SAFE(Likewise): (mips-tdep.c:5603): CMP: (ULONGEST to int) [offset + xfer > (type)->length] SAFE(Likewise): (mips-tdep.c:5604): ASSIGN: (ULONGEST to int) [ xfer = (type)->length - offset] SAFE: (mips-tdep.c:5712): FUNC(store_signed_integer): (CORE_ADDR to LONGEST) [make_compact_addr(addr)] SAFE(Float type): (mips-tdep.c:5733): FUNC(phex): (LONGEST to int) [len] SAFE(Likewise): (mips-tdep.c:5737): FUNC(phex): (LONGEST to int) [len] SAFE: (mips-tdep.c:5758): VARINIT(partial_len): (LONGEST to int) [(len < MIPS64_REGSIZE ? len : MIPS64_REGSIZE)] SAFE: (mips-tdep.c:5779): ASSIGN: (LONGEST to int) [ longword_offset = MIPS64_REGSIZE - len] SAFE: (mips-tdep.c:5785): FUNC(paddress): (LONGEST to CORE_ADDR) [stack_offset] SAFE(Not a struct): (mips-tdep.c:5909): FUNC(mips_xfer_register): (ULONGEST to int) [(type)->length] SAFE(Likewise): (mips-tdep.c:5915): FUNC(mips_xfer_register): (ULONGEST to int) [(type)->length] SAFE(Likewise): (mips-tdep.c:5927): CMP: (ULONGEST to int) [offset < (type)->length] SAFE(Likewise): (mips-tdep.c:5931): CMP: (ULONGEST to int) [offset + xfer > (type)->length] SAFE(Likewise): (mips-tdep.c:5932): ASSIGN: (ULONGEST to int) [ xfer = (type)->length - offset] FIXED(Expand len): (mn10300-tdep.c:174): VARINIT(len): (ULONGEST to int) [(type)->length] FIXED(Likewise): (mn10300-tdep.c:203): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (mt-tdep.c:353): FUNC(read_memory): (ULONGEST to ssize_t) [(type)->length] SAFE: (mt-tdep.c:361): FUNC(write_memory): (ULONGEST to ssize_t) [(type)->length] SAFE: (mt-tdep.c:386): FUNC(memcpy): (ULONGEST to size_t) [(type)->length] SAFE(stack_dest should be CORE_ADDR, but safe for now): (mt-tdep.c:786): VARINIT(stack_dest): (CORE_ADDR to LONGEST) [sp] - There should be checked overflow of sp - length in general in these *_push_dummy_call functions but passing >2GB structs by value on stack is probably not worth fixing. But I do not see why you did not choose CORE_ADDR for stack_dest here. SAFE: (mt-tdep.c:827): ASSIGN: (LONGEST to int) [ split_param_len = typelen] SAFE: (mt-tdep.c:828): FUNC(memcpy): (LONGEST to size_t) [typelen] SAFE: (mt-tdep.c:838): FUNC(write_memory): (LONGEST to CORE_ADDR) [stack_dest] SAFE: (mt-tdep.c:838): FUNC(write_memory): (LONGEST to ssize_t) [typelen] SAFE: (mt-tdep.c:851): ASSIGN: (LONGEST to int) [ slacklen = (4 - (typelen % 4)) % 4] UNSAFE_ALLOCA: (mt-tdep.c:852): FUNC(C_alloca): (LONGEST to size_t) [typelen + slacklen] - Just drop alloca, two write_memory calls are enough. UNSAFE_ALLOCA: (mt-tdep.c:853): FUNC(memcpy): (LONGEST to size_t) [typelen] - Just drop alloca, two write_memory calls are enough. SAFE: (mt-tdep.c:857): FUNC(write_memory): (LONGEST to CORE_ADDR) [stack_dest] SAFE: (mt-tdep.c:857): FUNC(write_memory): (LONGEST to ssize_t) [typelen + slacklen] SAFE: (mt-tdep.c:865): FUNC(write_memory): (LONGEST to CORE_ADDR) [stack_dest] SAFE: (mt-tdep.c:882): RET: (LONGEST to CORE_ADDR) [stack_dest] FIXED(Expand i): (objc-lang.c:371): CMP: (ULONGEST to UINT) [i < length] FIXED(Expand rep1): (objc-lang.c:389): CMP: (ULONGEST to UINT) [rep1 < length] FIXED: (objc-lang.c:435): CMP: (ULONGEST to UINT) [i < length] SAFE: (opencl-lang.c:196): FUNC(memcpy): (LONGEST to size_t) [elsize] SAFE: (opencl-lang.c:236): FUNC(memcpy): (LONGEST to size_t) [elsize] FIXED(Expand startrest): (opencl-lang.c:253): VARINIT(startrest): (LONGEST to int) [offset % elsize] - 'elsize' line is longer than 80 columns. One should check the whole patch. (In these cases a new helper variable makes it easier to conform to the GNU indentation style.) FIXED(Expand endrest, comp_offset, comp_length): (opencl-lang.c:255): VARINIT(endrest): (LONGEST to int) [(offset + length) % elsize] FIXED: (opencl-lang.c:268): COND: (LONGEST to int) [] FIXED: (opencl-lang.c:307): VARINIT(startrest): (LONGEST to int) [offset % elsize] FIXED: (opencl-lang.c:309): VARINIT(endrest): (LONGEST to int) [(offset + length) % elsize] FIXED: (opencl-lang.c:322): COND: (LONGEST to int) [] SAFE: (opencl-lang.c:428): FUNC(memcpy): (ULONGEST to size_t) [(elm_type)->length] - I miss here FIX of: opencl-lang.c:450 int src_len; LONGEST lowb, highb; src_len = highb - lowb + 1; It will affect also at least create_value(). SAFE: (opencl-lang.c:581): FUNC(memset): (ULONGEST to size_t) [(eltype)->length] SAFE: (opencl-lang.c:681): FUNC(memset): (ULONGEST to size_t) [(eltype1)->length] - I miss here opencl-lang.c:895 where variable "i" should have been expanded. int i; LONGEST lowb1, highb1; for (i = 0; i < highb1 - lowb1 + 1; i++) SAFE: (opencl-lang.c:901): FUNC(memcpy): (ULONGEST to size_t) [(eltype2)->length] SAFE: (p-lang.c:233): ASSIGN: (ULONGEST to int) [ width = (type)->length] FIXED(Expand i): (p-lang.c:249): CMP: (ULONGEST to UINT) [i < length] FIXED(Expand rep1): (p-lang.c:271): CMP: (ULONGEST to UINT) [rep1 < length] FIXED: (p-lang.c:319): CMP: (ULONGEST to UINT) [i < length] WPREVERTED(Only ok_for_watchpoint needs LONGEST len): (ppc-linux-nat.c:2030): FUNC(calculate_dvc): (LONGEST to int) [len] SAFE: (ppc-linux-nat.c:2053): ASSIGN: (LONGEST to uint64_t) [ p->addr2 = (uint64_t)addr + len] SAFE: (ppc-linux-nat.c:2057): ASSIGN: (int to uint32_t) [ p->trigger_type = get_trigger_type(rw)] SAFE: (ppc-sysv-tdep.c:162): FUNC(align_up): (LONGEST to int) [len] - I would say at ppc-sysv-tdep.c:124 'len' it should be int->ssize_t instead of int->LONGEST as there is already value_contents making the checks somehow easier. SAFE: (ppc-sysv-tdep.c:164): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (ppc-sysv-tdep.c:193): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (ppc-sysv-tdep.c:215): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (ppc-sysv-tdep.c:250): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (ppc-sysv-tdep.c:304): FUNC(align_up): (LONGEST to int) [len] SAFE: (ppc-sysv-tdep.c:308): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (ppc-sysv-tdep.c:380): FUNC(align_up): (LONGEST to int) [len] SAFE: (ppc-sysv-tdep.c:382): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (ppc-sysv-tdep.c:395): FUNC(write_memory): (ULONGEST to ssize_t) [(eltype)->length] SAFE(Vectors may not be larger than int): (ppc-sysv-tdep.c:447): CMP: (LONGEST to int) [i < len / 16] - This is dependency on external producer (gcc). GDB should verify it, such as ENSURE_SIZET or a proper handling. External producer could incorrectly mark DW_AT_GNU_vector some large type and GDB would process it incorrectly. SAFE: (ppc-sysv-tdep.c:537): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (ppc-sysv-tdep.c:550): FUNC(memcpy): (LONGEST to size_t) [len] FIXED(Expand argspace): (ppc-sysv-tdep.c:574): ASSIGN: (LONGEST to int) [ argspace = argoffset] SAFE: (ppc-sysv-tdep.c:814): CMP: (int to ULONGEST) [(type)->length <= tdep->wordsize] REVERTED(vectors < 16 bytes): (ppc-sysv-tdep.c:852): VARINIT(regnum): (LONGEST to int) [tdep->ppc_fp0_regnum + 1 + i] - it still could REVERT ppc-sysv-tdep.c:844 and ppc-sysv-tdep.c:848. REVERTED: (ppc-sysv-tdep.c:871): VARINIT(regnum): (LONGEST to int) [tdep->ppc_gp0_regnum + 3 + i] SAFE(int sufficient for OpenCL vectors): (ppc-sysv-tdep.c:897): VARINIT(n_regs): (ULONGEST to int) [(type)->length / 16] - While true again it is dependency on external producer (gcc). SAFE: (ppc-sysv-tdep.c:984): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (ppc-sysv-tdep.c:1019): CMP: (int to ULONGEST) [(type)->length > tdep->wordsize] SAFE: (ppc-sysv-tdep.c:1022): FUNC(memcpy): (ULONGEST to size_t) [(type)->length] SAFE: (ppc-sysv-tdep.c:1031): FUNC(memcpy): (ULONGEST to size_t) [(type)->length] SAFE: (ppc-sysv-tdep.c:1034): CMP: (int to ULONGEST) [(type)->length > tdep->wordsize] SAFE: (ppc-sysv-tdep.c:1304): FUNC(write_memory): (ULONGEST to ssize_t) [(type)->length] SAFE: (ppc-sysv-tdep.c:1360): FUNC(write_memory): (ULONGEST to ssize_t) [(type)->length] SAFE(OpenCL Vector): (ppc-sysv-tdep.c:1375): VARINIT(nelt): (ULONGEST to int) [(type)->length / (eltype)->length] SAFE(OpenCL Vector): (ppc-sysv-tdep.c:1448): CMP: (ULONGEST to int) [i < (type)->length / 16] - While true again it is dependency on external producer (gcc). SAFE: (ppc-sysv-tdep.c:1487): FUNC(write_memory): (ULONGEST to ssize_t) [(type)->length] SAFE(OpenCL Vector): (ppc-sysv-tdep.c:1502): FUNC(write_memory): (ULONGEST to ssize_t) [(type)->length] FIXED(Expand byte): (ppc-sysv-tdep.c:1561): CMP: (ULONGEST to int) [byte < (type)->length] - OK although ssize_t would be enough here. FIXED(Expand len): (ppc-sysv-tdep.c:1567): VARINIT(len): (ULONGEST to int) [(type)->length - byte] - OK although ssize_t would be enough here. SAFE: (ppc-sysv-tdep.c:1597): FUNC(write_memory): (LONGEST to ssize_t) [len] - OK although ssize_t would be enough here. SAFE: (ppc-sysv-tdep.c:1599): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (ppc-sysv-tdep.c:1792): VARINIT(nelt): (ULONGEST to int) [(valtype)->length / (eltype)->length] SAFE: (ppc-sysv-tdep.c:1796): VARINIT(offset): (ULONGEST to int) [i * (eltype)->length] REVERTED(OpenCL vectors don't need LONGEST): (ppc-sysv-tdep.c:1851): VARINIT(regnum): (LONGEST to int) [tdep->ppc_vr0_regnum + 2 + i] SAFE: (ppc-sysv-tdep.c:1869): VARINIT(offset): (ULONGEST to int) [(register_size(gdbarch, tdep->ppc_gp0_regnum + 3) - (valtype)->length)] SAFE: (ppc-sysv-tdep.c:1873): FUNC(regcache_cooked_write_part): (ULONGEST to int) [(valtype)->length] SAFE: (ppc-sysv-tdep.c:1876): FUNC(regcache_cooked_read_part): (ULONGEST to int) [(valtype)->length] SAFE: (ppc-sysv-tdep.c:1900): CMP: (ULONGEST to int) [i < (valtype)->length / 8] SAFE: (printcmd.c:378): CMP: (size_t to ULONGEST) [len > sizeof(LONGEST)] SAFE: (printcmd.c:385): FUNC(print_octal_chars): (ULONGEST to UINT) [len] SAFE: (printcmd.c:389): FUNC(print_decimal_chars): (ULONGEST to UINT) [len] SAFE: (printcmd.c:392): FUNC(print_binary_chars): (ULONGEST to UINT) [len] SAFE: (printcmd.c:398): FUNC(print_char_chars): (ULONGEST to UINT) [len] SAFE: (printcmd.c:419): CMP: (size_t to ULONGEST) [len < sizeof(LONGEST)] SAFE: (printcmd.c:2117): VARINIT(wcwidth): (ULONGEST to int) [(wctype)->length] SAFE: (printcmd.c:2176): FUNC(convert_between_encodings): (ULONGEST to UINT) [(valtype)->length] SAFE: (printcmd.c:2177): FUNC(convert_between_encodings): (ULONGEST to int) [(valtype)->length] SAFE: (printcmd.c:2269): VARINIT(param_len): (ULONGEST to UINT) [(param_type)->length] - While it is technically right I would expand it here, at the point where it is computed it is still not clear the type is TYPE_CODE_DECFLOAT. SAFE: (p-valprint.c:212): FUNC(xmalloc): (LONGEST to size_t) [length_size] - Missing ENSURED_SIZET. Normally it cannot happen but broken compiler can produce arbitrarily long length-of-string field which this way could be incorrectly processed by GDB without an error. - extract_unsigned_integer may also need similar handling as size_t may be > int. SAFE: (p-valprint.c:213): FUNC(read_memory): (LONGEST to ssize_t) [length_size] SAFE: (p-valprint.c:323): ASSIGN: (ULONGEST to UINT) [ len = extract_unsigned_integer(valaddr + embedded_offset + length_pos, length_size, byte_order)] - Again, like above. ENSURED_SIZET: (p-valprint.c:804): FUNC(xmalloc): (ULONGEST to size_t) [(baseclass)->length] ENSURED_SIZET: (p-valprint.c:809): FUNC(target_read_memory): (ULONGEST to ssize_t) [(baseclass)->length] FIXED(Use PyLong_FromLongLong): (python/py-type.c:179): FUNC(PyLong_FromLong): (LONGEST to LONG) [((((type)->main_type->flds_bnds.fields[field]).loc.bitpos) + 0)] - This is not correct but it has been correctly checked in in the meantime. [PATCH 3/3] bitpos: Minor python changes for bitpos expansion http://sourceware.org/ml/gdb-patches/2012-08/msg00146.html FIXED(Likewise): (python/py-type.c:686): FUNC(PyLong_FromLong): (ULONGEST to LONG) [(type)->length] - Likewise. SAFE: (python/py-value.c:983): FUNC(decimal_is_zero): (ULONGEST to int) [(type)->length] SAFE: (regcache.c:128): ASSIGN: (ULONGEST to LONG) [ descr->sizeof_register[i] = (descr->register_type[i])->length] SAFE: (regcache.c:138): ASSIGN: (ULONGEST to LONG) [ descr->sizeof_register[i] = (descr->register_type[i])->length] SAFE: (remote.c:8051): FUNC(xsnprintf): (int to size_t) [endbuf - p] SAFE: (remote.c:8095): FUNC(xsnprintf): (int to size_t) [endbuf - p] WPREVERT(Only ok_for_watchpoint needs LONGEST): (remote-m32r-sdi.c:1434): ASSIGN: (LONGEST to UINT) [ ab_size[i] = len] WPREVERT(Likewise): (remote-mips.c:2458): FUNC(mips_common_breakpoint): (LONGEST to int) [len] WPREVERT(Likewise): (remote-mips.c:2467): FUNC(mips_common_breakpoint): (LONGEST to int) [len] SAFE: (rl78-tdep.c:1027): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (rs6000-aix-tdep.c:277): CMP: (LONGEST to int) [argbytes < len] SAFE: (rs6000-aix-tdep.c:280): FUNC(memset): (int to size_t) [reg_size] SAFE: (rs6000-aix-tdep.c:299): VARINIT(adj): (LONGEST to int) [gdbarch_byte_order(gdbarch) == BFD_ENDIAN_BIG ? reg_size - len : 0] SAFE: (rs6000-aix-tdep.c:304): FUNC(memcpy): (LONGEST to size_t) [len] SAFE: (rs6000-aix-tdep.c:366): FUNC(write_memory): (LONGEST to ssize_t) [len - argbytes] SAFE: (rs6000-aix-tdep.c:393): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (rs6000-aix-tdep.c:494): CMP: (int to ULONGEST) [(valtype)->length <= tdep->wordsize] SAFE(Not struct): (rx-tdep.c:640): ASSIGN: (ULONGEST to int) [ p_arg_size = (p_arg_type)->length] SAFE: (s390-tdep.c:2495): FUNC(is_power_of_two): (ULONGEST to UINT) [(type)->length] FIXED(Expand n): (s390-tdep.c:2516): VARINIT(length): (ULONGEST to UINT) [(type)->length] - I do not see 'n' anywhere, you have modified s390_function_arg_float (s390-tdep.c:2505) but s390_function_arg_integer (s390-tdep.c:2516) also should be / is not expanded. SAFE: (s390-tdep.c:2555): ASSIGN: (ULONGEST to int) [ alignment = (type)->length] SAFE: (s390-tdep.c:2675): FUNC(write_memory): (ULONGEST to ssize_t) [length] SAFE: (s390-tdep.c:2699): FUNC(regcache_cooked_write_part): (ULONGEST to int) [length] SAFE: (s390-tdep.c:2707): FUNC(write_memory): (ULONGEST to ssize_t) [length] SAFE: (s390-tdep.c:2710): CMP: (int to ULONGEST) [length <= word_size] SAFE: (s390-tdep.c:2728): CMP: (int to ULONGEST) [length == 2 * word_size] SAFE: (s390-tdep.c:2744): FUNC(write_memory): (ULONGEST to ssize_t) [length] SAFE: (s390-tdep.c:2840): FUNC(regcache_cooked_write_part): (LONGEST to int) [length] SAFE: (s390-tdep.c:2877): FUNC(regcache_cooked_read_part): (LONGEST to int) [length] SAFE: (s390-tdep.c:2883): FUNC(regcache_cooked_read_part): (LONGEST to int) [length] SAFE(Not struct): (score-tdep.c:465): CMP: (ULONGEST to int) [offset < (type)->length] SAFE: (score-tdep.c:470): CMP: (ULONGEST to int) [offset + xfer > (type)->length] SAFE: (score-tdep.c:471): ASSIGN: (ULONGEST to int) [ xfer = (type)->length - offset] SAFE: (score-tdep.c:592): VARINIT(partial_len): (LONGEST to int) [arglen < 4 ? arglen : 4] SAFE: (sh64-tdep.c:1116): FUNC(memcpy): (LONGEST to size_t) [len] SAFE: (sh64-tdep.c:1118): FUNC(memcpy): (LONGEST to size_t) [len] SAFE: (sh64-tdep.c:1269): ASSIGN: (LONGEST to int) [ offset = register_size(gdbarch, DEFAULT_RETURN_REGNUM) - len] SAFE: (sh64-tdep.c:1273): FUNC(memcpy): (LONGEST to size_t) [len] SAFE: (sh64-tdep.c:1298): CMP: (LONGEST to int) [i < len] SAFE: (sh64-tdep.c:1318): ASSIGN: (LONGEST to int) [ offset = register_size(gdbarch, return_register) - len] SAFE: (sh64-tdep.c:1320): FUNC(memcpy): (LONGEST to size_t) [len] FIXED(Expand len): (sh-tdep.c:808): VARINIT(len): (ULONGEST to int) [(type)->length] FIXED: (sh-tdep.c:828): CMP: (int to ULONGEST) [((((type)->main_type->flds_bnds.fields[0]).type))->length == len] FIXED(Expand len, sh_justify_value_in_reg arg): (sh-tdep.c:1097): ASSIGN: (ULONGEST to int) [ len = (type)->length] - Excessive ensure_type_fits_sizet in your patch at sh-tdep.c:1129 because there is sh_justify_value_in_reg above it. SAFE: (sh-tdep.c:1146): CMP: (int to ULONGEST) [(type)->length == 2 * reg_size] FIXED(Expand len, sh_justify_value_in_reg arg): (sh-tdep.c:1234): ASSIGN: (ULONGEST to int) [ len = (type)->length] - Excessive ensure_type_fits_sizet in your patch at sh-tdep.c:1258 because there is sh_justify_value_in_reg above it. SAFE: (sh-tdep.c:1321): CMP: (LONGEST to int) [i < len] SAFE(Float type): (sh-tdep.c:1335): VARINIT(len): (ULONGEST to int) [(type)->length] FIXED(Expand i): (sh-tdep.c:1371): CMP: (LONGEST to int) [i < len] SAFE(Floaty type): (sh-tdep.c:1383): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (solib-darwin.c:140): ASSIGN: (ULONGEST to int) [ len = 4 + 4 + 2 * ptr_type->length] SAFE: (solib-darwin.c:250): VARINIT(ptr_len): (ULONGEST to int) [(ptr_type)->length] SAFE: (solib-svr4.c:714): VARINIT(pbuf_size): (ULONGEST to int) [(ptr_type)->length] SAFE: (solib-svr4.c:893): VARINIT(l_name_size): (ULONGEST to int) [(ptr_type)->length] SAFE: (sparc64-tdep.c:67): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc64-tdep.c:74): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc64-tdep.c:94): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc64-tdep.c:114): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE(Used only for floating types): (sparc64-tdep.c:645): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc64-tdep.c:666): ASSIGN: (LONGEST to int) [ regnum = SPARC64_D0_REGNUM + element + bitpos / 64] SAFE: (sparc64-tdep.c:674): ASSIGN: (LONGEST to int) [ regnum = SPARC_F0_REGNUM + element * 2 + bitpos / 32] SAFE(Float type): (sparc64-tdep.c:721): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc64-tdep.c:728): ASSIGN: (LONGEST to int) [ regnum = SPARC64_Q0_REGNUM + bitpos / 128] SAFE: (sparc64-tdep.c:735): ASSIGN: (LONGEST to int) [ regnum = SPARC64_D0_REGNUM + bitpos / 64] SAFE: (sparc64-tdep.c:743): ASSIGN: (LONGEST to int) [ regnum = SPARC_F0_REGNUM + bitpos / 32] SAFE: (sparc64-tdep.c:816): FUNC(write_memory): (LONGEST to ssize_t) [len] FIXED(Expand len): (sparc64-tdep.c:887): VARINIT(len): (ULONGEST to int) [(type)->length] FIXED(Expand len): (sparc64-tdep.c:1024): VARINIT(len): (ULONGEST to int) [(type)->length] FIXED(Expand len): (sparc64-tdep.c:1074): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc-tdep.c:181): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc-tdep.c:214): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc-tdep.c:233): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc-tdep.c:486): FUNC(write_memory): (LONGEST to ssize_t) [len] SAFE: (sparc-tdep.c:524): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE(Not struct): (sparc-tdep.c:1254): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE(Not struct): (sparc-tdep.c:1308): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (sparc-tdep.c:1379): FUNC(read_memory): (ULONGEST to ssize_t) [(type)->length] SAFE: (spu-tdep.c:323): VARINIT(preferred_slot): (LONGEST to int) [len < 4 ? 4 - len : 0] FIXED(Expand len): (spu-tdep.c:1296): VARINIT(len): (ULONGEST to int) [(type)->length] - This is not needed, it has to fit in inferior registers. FIXED(Likewise): (spu-tdep.c:1321): VARINIT(len): (ULONGEST to int) [(type)->length] - Likewise. FIXED(Eliminate len and expand n_regs): (spu-tdep.c:1376): VARINIT(len): (ULONGEST to int) [(type)->length] FIXED(Expand len): (spu-tdep.c:1409): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (spu-tdep.c:1475): CMP: (int to ULONGEST) [(type)->length <= (SPU_ARGN_REGNUM - SPU_ARG1_REGNUM + 1) * 16] SAFE: (stabsread.c:785): ASSIGN: (ULONGEST to LONG) [ ((&objfile->objfile_obstack))->temp = (((dbl_type)->length))] SAFE: (stabsread.c:1069): CMP: (int to ULONGEST) [((sym)->type)->length < gdbarch_int_bit(gdbarch) / 8] SAFE: (stabsread.c:2961): CMP: (ULONGEST to UINT) [((fip->list->field).bitsize) == 8 * (field_type)->length] FIXED(Expand highest_offset, start, print_frame_nameless_args arg 2): (stack.c:548): ASSIGN: (LONGEST to LONG) [ highest_offset = current_offset] - current_offset/highest_offset could be split out, it is a different bug. But fine with merged it here. SAFE: (stap-probe.c:1215): FUNC(target_read_memory): (ULONGEST to ssize_t) [(type)->length] SAFE: (stap-probe.c:1233): FUNC(target_write_memory): (ULONGEST to ssize_t) [(type)->length] SAFE(Not struct): (tic6x-tdep.c:746): VARINIT(len): (ULONGEST to int) [(valtype)->length] SAFE(likewise): (tic6x-tdep.c:791): VARINIT(len): (ULONGEST to int) [(valtype)->length] SAFE(len <= 8): (tic6x-tdep.c:866): VARINIT(len): (ULONGEST to int) [(check_typedef(type))->length] FIXED(Expand len): (tic6x-tdep.c:974): VARINIT(len): (ULONGEST to int) [(arg_type)->length] - references_offset is incorrectly not expanded. SAFE: (tilegx-tdep.c:210): CMP: (int to ULONGEST) [(type)->length > (1 + TILEGX_R9_REGNUM - TILEGX_R0_REGNUM) * tilegx_reg_size] FIXED(Expand len, i): (tilegx-tdep.c:221): VARINIT(len): (ULONGEST to int) [(type)->length] - not needed, it is used only if !tilegx_use_struct_convention SAFE: (tilegx-tdep.c:241): FUNC(memcpy): (ULONGEST to size_t) [(type)->length] FIXED(Expand len, i): (tilegx-tdep.c:246): VARINIT(len): (ULONGEST to int) [(type)->length] - not needed, it is used only if !tilegx_use_struct_convention FIXED(Expand typelen): (tilegx-tdep.c:308): ASSIGN: (ULONGEST to int) [ typelen = (value_enclosing_type(args[i]))->length] - For example stacklen and alignlen are incorrectly not expanded. FIXED: (tilegx-tdep.c:334): ASSIGN: (ULONGEST to int) [ typelen = (value_enclosing_type(args[j]))->length] UNSAFE_ALLOCA: (tilegx-tdep.c:347): ASSIGN: (ULONGEST to int) [ typelen = (value_enclosing_type(args[j]))->length] - Please fix as an unrelated patch; it should be also ENSURED properly. FIXED(Expand memrange last arg): (tracepoint.c:1005): FUNC(add_memrange): (ULONGEST to ULONG) [len] SAFE: (tracepoint.c:1016): CMP: (int to ULONGEST) [len > register_size(gdbarch, reg)] FIXED: (tracepoint.c:1034): FUNC(add_memrange): (ULONGEST to ULONG) [len] SAFE: (tracepoint.c:1037): ASSIGN: (LONGEST to UINT) [ reg = (sym)->ginfo.value.ivalue] FIXED: (tracepoint.c:1046): FUNC(add_memrange): (ULONGEST to ULONG) [len] SAFE: (tracepoint.c:1049): ASSIGN: (LONG to UINT) [ reg = frame_regno] FIXED: (tracepoint.c:1058): FUNC(add_memrange): (ULONGEST to ULONG) [len] SAFE: (tracepoint.c:1485): FUNC(add_memrange): (CORE_ADDR to bfd_signed_vma) [addr] FIXED: (tracepoint.c:1485): FUNC(add_memrange): (ULONGEST to ULONG) [len] - Expansion of 'addr' is correct but unrelated. FIXED(Expand len): (v850-tdep.c:851): ASSIGN: (ULONGEST to int) [ len = (value_type(*args))->length] - Not needed to expand v850-tdep.c:893 due to !v850_use_struct_convention by its caller. - Not needed to expand v850-tdep.c:920 due to !v850_use_struct_convention by its caller. SAFE: (v850-tdep.c:929): CMP: (LONGEST to int) [i < len] SAFE(string/char types): (valarith.c:713): ASSIGN: (ULONGEST to int) [ inval2len = (type2)->length] SAFE: (valarith.c:757): ASSIGN: (ULONGEST to int) [ inval1len = (type1)->length] - TYPE_CODE_STRING can be also >2GB, it is in fact a sort of array. For example Fortran uses these. Also it needs alloca expansion. SAFE: (valarith.c:758): ASSIGN: (ULONGEST to int) [ inval2len = (type2)->length] - Likewise. SAFE: (valarith.c:895): ASSIGN: (ULONGEST to int) [ *len_x = (type1)->length] SAFE: (valarith.c:901): ASSIGN: (ULONGEST to int) [ *len_x = (type2)->length] SAFE: (valarith.c:914): ASSIGN: (ULONGEST to int) [ *len_y = (type2)->length] SAFE: (valarith.c:920): ASSIGN: (ULONGEST to int) [ *len_y = (type1)->length] SAFE: (valarith.c:973): ASSIGN: (ULONGEST to int) [ len_v = (result_type)->length] SAFE(Vector types): (valarith.c:1414): ASSIGN: (ULONGEST to int) [ elsize = (eltype1)->length] SAFE(likewise): (valarith.c:1417): CMP: (ULONGEST to int) [elsize != (eltype2)->length] SAFE: (valarith.c:1487): FUNC(decimal_is_zero): (ULONGEST to int) [(type1)->length] FIXED(Expand len, i): (valarith.c:1512): VARINIT(len): (LONGEST to int) [len1 < len2 ? len1 : len2] SAFE: (valarith.c:1628): FUNC(memcmp): (ULONGEST to size_t) [(type1)->length] SAFE: (valarith.c:1718): FUNC(memcpy): (ULONGEST to size_t) [(type)->length] SAFE: (valarith.c:1739): VARINIT(len): (ULONGEST to int) [(type)->length] SAFE: (valarith.c:1772): FUNC(memcpy): (ULONGEST to size_t) [(eltype)->length] SAFE: (valarith.c:1809): FUNC(memcpy): (ULONGEST to size_t) [(eltype)->length] SAFE: (valops.c:474): VARINIT(dec_len): (ULONGEST to int) [(type)->length] SAFE: (valops.c:480): FUNC(decimal_convert): (ULONGEST to int) [(type2)->length] SAFE: (valops.c:569): FUNC(memcpy): (ULONGEST to size_t) [(eltype)->length] SAFE: (valops.c:884): FUNC(decimal_from_string): (ULONGEST to int) [(type)->length] SAFE: (valops.c:910): FUNC(memcpy): (ULONGEST to size_t) [(eltype)->length] SAFE: (valops.c:1026): FUNC(read_value_memory): (LONGEST to size_t) [length] SAFE: (valops.c:1284): CMP: (int to ULONGEST) [(type)->length <= (int)sizeof(LONGEST)] SAFE: (valops.c:1293): FUNC(read_memory): (LONGEST to ssize_t) [changed_len] SAFE: (valops.c:1305): FUNC(write_memory_with_notification): (LONGEST to ssize_t) [changed_len] SAFE: (valops.c:1352): FUNC(get_frame_register_bytes): (LONGEST to CORE_ADDR) [offset] SAFE: (valops.c:1366): FUNC(put_frame_register_bytes): (LONGEST to CORE_ADDR) [offset] SAFE: (valops.c:1372): FUNC(put_frame_register_bytes): (LONGEST to CORE_ADDR) [value_offset(toval)] FIXED(Expanded put_frame_register_bytes arg 4): (valops.c:1373): FUNC(put_frame_register_bytes): (ULONGEST to int) [(type)->length] - I do not see any expansion and I do not see why. lval_register values can never be too large. SAFE: (valops.c:1457): FUNC(memcpy): (ULONGEST to size_t) [(type)->length] SAFE: (valops.c:1491): FUNC(read_value_memory): (ULONGEST to size_t) [(value_enclosing_type(val))->length] FIXED(Expand value_cstring arg 2, highbound to LONGEST): (valops.c:1849): VARINIT(highbound): (ULONGEST to int) [len / (char_type)->length] - value_cstring's parameter 'int->LONGEST len' should have been only ssize_t. It cannot be larger than 'char *ptr' memory. SAFE: (valops.c:1854): FUNC(memcpy): (int to size_t) [len] FIXED: (valops.c:1872): VARINIT(highbound): (ULONGEST to int) [len / (char_type)->length] - Likewise for the 'len' parameter. SAFE: (valops.c:1877): FUNC(memcpy): (int to size_t) [len] SAFE: (valops.c:1891): FUNC(memcpy): (ULONGEST to size_t) [(type)->length] - While TYPE_CODE_BITSTRING is not used in practice I do not see why it should not be expanded(=fixed). SAFE: (valops.c:2137): FUNC(target_read_memory): (ULONGEST to ssize_t) [(basetype)->length] FIXED(Expand boffset - update_search_result,search_struct_field,do_search_struct_field): (valops.c:2173): FUNC(update_search_result): (LONGEST to int) [boffset] ENSURED_SIZET: (valops.c:2291): FUNC(xmalloc): (ULONGEST to size_t) [(baseclass)->length] ENSURED_SIZET: (valops.c:2296): FUNC(target_read_memory): (ULONGEST to ssize_t) [(baseclass)->length] SAFE: (valops.c:3858): FUNC(memcpy): (ULONGEST to size_t) [(real_type)->length] SAFE: (valops.c:3860): FUNC(memcpy): (ULONGEST to size_t) [(real_type)->length] SAFE: (valops.c:3878): FUNC(memcpy): (ULONGEST to size_t) [(val_real_type)->length] SAFE: (valops.c:3881): FUNC(memcpy): (ULONGEST to size_t) [(val_real_type)->length]