Skip to content

Commit

Permalink
Reenable C4242 and C4244 warnings in libunwind (#100241)
Browse files Browse the repository at this point in the history
* Fix C4242 and C4244 warnings in libunwind

* Add libunwind PR link

---------

Co-authored-by: Filip Navara <filip.navara@gmail.com>
  • Loading branch information
AaronRobinsonMSFT and filipnavara authored Mar 29, 2024
1 parent 316fc16 commit 869dfb7
Show file tree
Hide file tree
Showing 34 changed files with 175 additions and 171 deletions.
1 change: 1 addition & 0 deletions src/native/external/libunwind-version.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ Apply https://github.com/libunwind/libunwind/pull/704
Revert https://github.com/libunwind/libunwind/pull/503 # issue: https://github.com/libunwind/libunwind/issues/702
Apply https://github.com/libunwind/libunwind/pull/714
Revert https://github.com/libunwind/libunwind/commit/ec03043244082b8f552881ba9fb790aa49c85468 and follow up changes in the same file # issue: https://github.com/libunwind/libunwind/issues/715
Apply https://github.com/libunwind/libunwind/pull/734
6 changes: 3 additions & 3 deletions src/native/external/libunwind/include/dwarf_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ dwarf_readw (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr,
ret = dwarf_readu64 (as, a, addr, &u64, arg);
if (ret < 0)
return ret;
*val = u64;
*val = (unw_word_t) u64;
return ret;

default:
Expand Down Expand Up @@ -398,7 +398,7 @@ dwarf_read_encoded_pointer_inlined (unw_addr_space_t as, unw_accessors_t *a,
case DW_EH_PE_udata8:
if ((ret = dwarf_readu64 (as, a, addr, &uval64, arg)) < 0)
return ret;
val = uval64;
val = (unw_word_t) uval64;
break;

case DW_EH_PE_sleb128:
Expand All @@ -421,7 +421,7 @@ dwarf_read_encoded_pointer_inlined (unw_addr_space_t as, unw_accessors_t *a,
case DW_EH_PE_sdata8:
if ((ret = dwarf_reads64 (as, a, addr, &sval64, arg)) < 0)
return ret;
val = sval64;
val = (unw_word_t) sval64;
break;

default:
Expand Down
7 changes: 5 additions & 2 deletions src/native/external/libunwind/include/libunwind_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ static inline void _unw_debug(int level, char const * const fname, char const *

if (level > 16) level = 16;
int bcount = snprintf (buf, buf_size, "%*c>%s: ", level, ' ', fname);
int res = write(STDERR_FILENO, buf, bcount);
ssize_t res = write(STDERR_FILENO, buf, bcount);

va_list ap;
va_start(ap, fmt);
Expand All @@ -350,7 +350,7 @@ static inline void _unw_debug(int level, char const * const fname, char const *
# define Dprintf( /* format */ ...)
#endif /* defined(UNW_DEBUG) */

static ALWAYS_INLINE int
static ALWAYS_INLINE ssize_t
print_error (const char *string)
{
return write (2, string, strlen (string));
Expand Down Expand Up @@ -419,6 +419,9 @@ static inline void invalidate_edi (struct elf_dyn_info *edi)
# define PT_ARM_EXIDX 0x70000001 /* ARM unwind segment */
#endif /* !PT_ARM_EXIDX */

#define DWARF_GET_MEM_LOC(l) DWARF_GET_LOC(l)
#define DWARF_GET_REG_LOC(l) ((unw_regnum_t) DWARF_GET_LOC(l))

#include "tdep/libunwind_i.h"

#ifndef TDEP_DWARF_SP
Expand Down
16 changes: 8 additions & 8 deletions src/native/external/libunwind/include/tdep-aarch64/libunwind_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,10 +197,10 @@ dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val)
return -UNW_EBADREG;

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
val, 0, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);
if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
0, c->as_arg)) < 0)
return ret;
Expand All @@ -220,10 +220,10 @@ dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
return -UNW_EBADREG;

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
&val, 1, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);
if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
1, c->as_arg)) < 0)
return ret;
Expand All @@ -245,10 +245,10 @@ dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), val,
0, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), val,
0, c->as_arg);
}

Expand All @@ -265,10 +265,10 @@ dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), &val,
1, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), &val,
1, c->as_arg);
}

Expand Down
2 changes: 1 addition & 1 deletion src/native/external/libunwind/include/tdep-arm/ex_tables.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ struct arm_exbuf_data
#define arm_exidx_apply_cmd UNW_OBJ(arm_exidx_apply_cmd)

int arm_exidx_extract (struct dwarf_cursor *c, uint8_t *buf);
int arm_exidx_decode (const uint8_t *buf, uint8_t len, struct dwarf_cursor *c);
int arm_exidx_decode (const uint8_t *buf, int len, struct dwarf_cursor *c);
int arm_exidx_apply_cmd (struct arm_exbuf_data *edata, struct dwarf_cursor *c);

#endif // ARM_EX_TABLES_H
12 changes: 6 additions & 6 deletions src/native/external/libunwind/include/tdep-arm/libunwind_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val)
return -UNW_EBADREG;

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
val, 0, c->as_arg);

addr = DWARF_GET_LOC (loc);
Expand All @@ -201,7 +201,7 @@ dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
return -UNW_EBADREG;

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
&val, 1, c->as_arg);

addr = DWARF_GET_LOC (loc);
Expand All @@ -226,10 +226,10 @@ dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), val,
0, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), val,
0, c->as_arg);
}

Expand All @@ -246,10 +246,10 @@ dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), &val,
1, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), &val,
1, c->as_arg);
}

Expand Down
16 changes: 8 additions & 8 deletions src/native/external/libunwind/include/tdep-hppa/libunwind_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,10 +146,10 @@ dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val)
return -UNW_EBADREG;

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
val, 0, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);
if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
0, c->as_arg)) < 0)
return ret;
Expand All @@ -169,10 +169,10 @@ dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
return -UNW_EBADREG;

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
&val, 1, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);
if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
1, c->as_arg)) < 0)
return ret;
Expand All @@ -194,10 +194,10 @@ dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), val,
0, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), val,
0, c->as_arg);
}

Expand All @@ -214,10 +214,10 @@ dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), &val,
1, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), &val,
1, c->as_arg);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,10 @@ dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), val,
0, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), val,
0, c->as_arg);
}

Expand Down
24 changes: 12 additions & 12 deletions src/native/external/libunwind/include/tdep-mips/libunwind_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -195,10 +195,10 @@ dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val)
return -UNW_EBADREG;

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
val, 0, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);
if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
0, c->as_arg)) < 0)
return ret;
Expand All @@ -218,10 +218,10 @@ dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
return -UNW_EBADREG;

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
&val, 1, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);
if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, (unw_word_t *) valp,
1, c->as_arg)) < 0)
return ret;
Expand All @@ -243,20 +243,20 @@ dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), val,
0, c->as_arg);
else if (c->as->abi == UNW_MIPS_ABI_O32)
return read_s32 (c, DWARF_GET_LOC (loc), val);
return read_s32 (c, DWARF_GET_MEM_LOC (loc), val);
else if (c->as->abi == UNW_MIPS_ABI_N32) {
if (tdep_big_endian(c->as))
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc) + 4, val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc) + 4, val,
0, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), val,
0, c->as_arg);
}
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), val,
0, c->as_arg);
}

Expand All @@ -273,12 +273,12 @@ dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), &val,
1, c->as_arg);
else if (c->as->abi == UNW_MIPS_ABI_O32)
return write_s32 (c, DWARF_GET_LOC (loc), &val);
return write_s32 (c, DWARF_GET_MEM_LOC (loc), &val);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), &val,
1, c->as_arg);
}

Expand Down
24 changes: 12 additions & 12 deletions src/native/external/libunwind/include/tdep-ppc32/libunwind_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,10 +130,10 @@ dwarf_getvr (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t * val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
val, 0, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);

if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, valp,
0, c->as_arg)) < 0)
Expand All @@ -156,10 +156,10 @@ dwarf_putvr (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
assert (!DWARF_IS_FP_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
&val, 1, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);
if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, valp,
1, c->as_arg)) < 0)
return ret;
Expand All @@ -180,10 +180,10 @@ dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t * val)
assert (!DWARF_IS_V_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
val, 0, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);
return (*c->as->acc.access_mem) (c->as, addr + 0, valp, 0, c->as_arg);

}
Expand All @@ -201,10 +201,10 @@ dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val)
assert (!DWARF_IS_V_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc),
return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_REG_LOC (loc),
&val, 1, c->as_arg);

addr = DWARF_GET_LOC (loc);
addr = DWARF_GET_MEM_LOC (loc);

return (*c->as->acc.access_mem) (c->as, addr + 0, valp, 1, c->as_arg);
}
Expand All @@ -223,10 +223,10 @@ dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t * val)
assert (!DWARF_IS_V_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), val,
0, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), val,
0, c->as_arg);
}

Expand All @@ -244,10 +244,10 @@ dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val)
assert (!DWARF_IS_V_LOC (loc));

if (DWARF_IS_REG_LOC (loc))
return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_reg) (c->as, DWARF_GET_REG_LOC (loc), &val,
1, c->as_arg);
else
return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val,
return (*c->as->acc.access_mem) (c->as, DWARF_GET_MEM_LOC (loc), &val,
1, c->as_arg);
}

Expand Down
Loading

0 comments on commit 869dfb7

Please sign in to comment.