From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Fedora GDB patches <invalid@email.com>
Date: Fri, 27 Oct 2017 21:07:50 +0200
Subject: gdb-rhbz795424-bitpos-20of25.patch

;; Fix `GDB cannot access struct member whose offset is larger than 256MB'
;; (RH BZ 795424).
;;=push

http://sourceware.org/ml/gdb-patches/2012-09/msg00631.html

--MP_/yp5f+W_ED2JtUlSyBi8xujr
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi,

This is patch 1/4, which implements the bulk of the changes in type
length and bitpos/type offset. I have verified that there are no
regressions resulting from this patch by running the testsuite on
Fedora 16 x86_64.  Patch and changelog attached.

Regards,
Siddhesh

--MP_/yp5f+W_ED2JtUlSyBi8xujr
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename=ChangeLog-main

gdb/ChangeLog

2012-08-05  Siddhesh Poyarekar  <siddhesh@redhat.com>

	* ada-lang.c (fat_pntr_bounds_bitpos): Return LONGEST.
	(fat_pntr_data_bitpos): Likewise.
	(desc_bound_bitpos): Likewise.
	(constrained_packed_array_type): Expand ELT_BITS parameter to
	LONGEST.
	(move_bits): Expand parameters SRC_OFFSET and N to LONGEST.
	(cond_offset_host): Expand parameter OFFSET to LONGEST.
	(cond_offset_target): Likewise.
	(ada_type_of_array): Expand ARRAY_BITSIZE to LONGEST.
	(decode_constrained_packed_array_type): Expand BITS to LONGEST.
	(decode_constrained_packed_array): Expand BIT_POS to LONGEST.
	(ada_value_primitive_packed_val): Expand parameter OFFSET to
	LONGEST.  Expand TARG, NTARG and NEW_OFFSET to LONGEST.
	(ada_value_assign): Expand FROM_SIZE to LONGEST.
	(value_assign_to_component): Expand BITS to LONGEST.
	(ensure_lval): Expand LEN to LONGEST.
	(value_pointer): Expand LEN to ULONGEST.
	(value_tag_from_contents_and_address): Expand TAG_BYTE_OFFSET to
	LONGEST.
	(ada_value_primitive_field): Expand parameter OFFSET to LONGEST.
	Expand bit_pos to LONGEST.
	(find_struct_field): Expand parameters OFFSET and BYTE_OFFSET_P to
	LONGEST.  Expand BIT_POS and FLD_OFFSET to LONGEST.
	(ada_search_struct_field): Expand parameter OFFSET to LONGEST.
	Expand VAR_OFFSET to LONGEST.
	(ada_index_struct_field): Expand parameters INDEX and OFFSET to
	LONGEST.
	(ada_index_struct_field_1): Expand parameters INDEX_P and OFFSET
	to LONGEST.
	(ada_value_struct_elt): Expand BYTE_OFFSET to LONGEST.
	(align_value): Return ULONGEST.  Expand parameter OFF and
	ALIGNMENT to ULONGEST.
	(ada_template_to_fixed_record_type_1): Expand OFF, BIT_LEN and
	fld_bit_len to LONGEST.  Expand FIELD_OFFSET to LONGEST.  Use
	pulongest function to print TYPE_LENGTH.
	(to_fixed_array_type): Expand LEN to LONGEST.
	* ada-lang.h (ada_val_print): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	(ada_printstr): Expand parameter LENGTH to ULONGEST.
	(ada_value_primitive_packed_val): Expand parameter OFFSET to
	LONGEST.
	* ada-typeprint.c (ada_print_type): Use pulongest to print
	TYPE_LENGTH.
	* ada-valprint.c (val_print_packed_array_elements): Expand ELTLEN
	to ULONGEST.
	(char_at): Expand parameter I to LONGEST.
	(printstr): Expand parameter LENGTH, I, REP1, REPS to ULONGEST.
	Use pulongest to format print REPS.
	(ada_printstr): Expand parameter LENGTH to LONGEST.
	(ada_val_print): Expand parameter EMBEDDED_OFFSET to LONGEST.
	(ada_val_print_array): Expand ELTLEN, LEN to ULONGEST and TEMP_LEN
	to LONGEST.
	(ada_val_print_1): Expand parameter OFFSET to LONGEST.
	(print_variant_part): Expand parameters OFFSET and OUTER_OFFSET to
	LONGEST.
	(print_field_values): Likewise.  Expand BIT_POS to LONGEST.
	* annotate.c (annotate_array_section_begin): Expand parameter
	IDX to LONGEST.  Use plongest to format-print IDX.
	(annotate_elt_rep): Expand parameter REPCOUNT to ULONGEST.  Use
	plongest to format-print REPCOUNT.
	* annotate.h: Likewise.
	* arm-linux-nat.c (arm_linux_region_ok_for_hw_watchpoint):
	Expand parameter parameter LEN to LONGEST.
	* ax-gdb.c (gen_left_shift): Expand parameter DISTANCE to LONGEST.
	(gen_offset): Expand parameter OFFSET to LONGEST.
	(gen_bitfield_ref): Expand parameters START, END to LONGEST.
	Expand BOUND_START, BOUND_END, OFFSET to LONGEST.
	(gen_primitive_field): Expand parameter OFFSET to LONGEST.
	(gen_struct_ref_recursive): Likewise.
	* ax-general.c (ax_trace_quick): Expand parameter N to LONGEST.
	* ax.h (ax_trace_quick): Likewise.
	* breakpoint.c (breakpoint_address_match_range): Expand parameter
	LEN1 to LONGEST.
	(can_use_hardware_watchpoint): Expand LEN to LONGEST.
	* breakpoint.h (struct bp_target_info): Expand member LENGTH to
	LONGEST.
	(struct bp_location): Likewise.
	* c-lang.c (c_printstr): Expand parameter LENGTH to ULONGEST.
	(evaluate_subexp_c): Expand ELEMENT_SIZE, I to LONGEST.
	* c-lang.h (c_val_print): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	(c_printstr): Expand parameter LENGTH to ULONGEST.
	(cp_print_value_fields): Expand parameter OFFSET to LONGEST.
	(cp_print_value_fields_rtti): Likewise.
	* c-typeprint.c (c_type_print_varspec_suffix): Remove cast down to
	int and use plongest to print LONGEST.
	* c-valprint.c (c_val_print): Expand parameter EMBEDDED_OFFSET to
	LONGEST.  Expand OFFSET to LONGEST, ELTLEN to ULONGEST.
	(c_value_print): Expand TOP to LONGEST.
	* cp-abi.c (baseclass_offset): Return LONGEST.  Expand parameter
	EMBEDDED_OFFSET to LONGEST.  Expand RES to LONGEST.
	(value_virtual_fn_field): Expand parameter OFFSET to LONGEST.
	(value_rtti_type): Expand parameter TOP to point to LONGEST.
	* cp-abi.h (value_virtual_fn_field): Expand OFFSET to LONGEST.
	(value_rtti_type): Expand TOP to point to LONGEST.
	(baseclass_offset): Return LONGEST.  Expand parameter
	EMBEDDED_OFFSET to LONGEST.
	(struct cp_abi_ops): Expand parameter OFFSET for VIRTUAL_FN_FIELD
	to LONGEST.  Expand parameter TOP to point to LONGEST in
	VALUE_RTTI_TYPE.  Return LONGEST from BASECLASS_OFFSET and expand
	parameter EMBEDDED_OFFSET to LONGEST.
	* cp-valprint.c (cp_print_value_fields): Expand parameter OFFSET
	to LONGEST.  Expand I_OFFSET to LONGEST.
	(cp_print_value_fields_rtti): Expand parameter OFFSET to
	LONGEST.  Expand TOP to LONGEST.
	(cp_print_value): Expand parameter OFFSET to LONGEST.  Expand
	THISOFFSET, BOFFSET to LONGEST.
	* d-lang.h (d_val_print): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	* d-valprint.c (dynamic_array_type): Likewise.
	(d_val_print): Likewise.
	* doublest.c (floatformat_from_length): Expand parameter LEN to
	LONGEST.  Use plongest to format string for LONGEST.
	* dwarf2loc.c (copy_bitwise): Expand parameters DEST_OFFSET_BITS,
	BIT_COUNT to ULONGEST.  Rename parameter SOURCE_OFFSET_BITS to
	SOURCE_OFFSET and expand to ULONGEST.  New variable
	SOURCE_OFFSET_BITS.
	(read_pieced_value): Expand OFFSET, DEST_OFFSET_BITS,
	SOURCE_OFFSET_BITS, SOURCE_OFFSET to LONGEST.  Expand TYPE_LEN,
	THIS_SIZE, THIS_SIZE_BITS to ULONGEST.
	(write_pieced_value): Likewise.
	(check_pieced_value_bits): Expand parameters BIT_OFFSET and
	BIT_LENGTH to LONGEST.  Expand THIS_SIZE_BITS to ULONGEST.
	(check_pieced_value_validity): Expand parameters BIT_OFFSET and
	BIT_LENGTH to LONGEST.
	(check_pieced_synthetic_pointer): Likewise.
	(indirect_pieced_value): Expand BIT_LENGTH, BYTE_OFFSET and
	BIT_OFFSET to LONGEST.
	(dwarf2_evaluate_loc_desc_full): Expand N to ULONGEST.
	* dwarf2read.c (dwarf2_const_value_length_mismatch_complaint):
	Expand parameters ARG2 and ARG3 to LONGEST.  Use plongest to
	print ARG2 and ARG3.
	(dwarf2_add_field): Expand ANONYMOUS_SIZE, BIT_OFFSET to
	LONGEST.
	* eval.c (evaluate_struct_tuple): Expand BITPOS to LONGEST.
	(init_array_element): Expand ELEMENT_SIZE to LONGEST.
	(binop_promote): Expand PROMOTED_LEN1, PROMOTED_LEN2, RESULT_LEN
	to ULONGEST.
	(evaluate_subexp_standard): Expand MEM_OFFSET, TOP, ELEMENT_SIZE
	to LONGEST.
	* f-lang.c (f_printstr): Expand parameter LENGTH to ULONGEST.
	* f-lang.h (f_val_print): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	* f-valprint.c (f77_array_offset_tbl): Make LONGEST.
	(f77_create_arrayprint_offset_tbl): Expand ELTLEN to LONGEST.
	(f77_print_array_1): Expand parameter EMBEDDED_OFFSET to
	LONGEST.  Expand I to LONGEST.
	(f77_print_array): Expand parameter EMBEDDED_OFFSET to LONGEST.
	(f_val_print): Likewise.  Expand OFFSET to LONGEST.
	* findvar.c (default_value_from_register): Expand LEN to LONGEST.
	(read_frame_register_value): Expand OFFSET, REG_OFFSET, LEN,
	REG_LEN to LONGEST.
	* frame.c (get_frame_register_bytes): Expand parameter LEN to
	LONGEST.
	* frame.h (get_frame_register_bytes): Likewise.
	* gdbtypes.c (init_type): Expand parameter LENGTH to LONGEST.
	(is_unique_ancestor_worker): Expand parameters OFFSET,
	EMBEDDED_OFFSET to LONGEST.  Expand THIS_OFFSET to LONGEST.
	(is_unique_ancestor): Expand OFFSET to LONGEST.
	(recursive_dump_type): Use pulongest to format print TYPE_LENGTH.
	Use plongest to format print TYPE_FIELD_BITPOS.
	(arch_type): Expand parameter LENGTH to LONGEST.
	* gdbtypes.h (struct type.main_type.fld_bnds.fields): Expand
	member BITPOS to LONGEST.
	(struct type): Expand member LENGTH to ULONGEST.
	(init_type): Expand parameter LENGTH to LONGEST.
	(arch_type): Likewise.
	* gnu-v2-abi.c (gnuv2_virtual_fn_field): Expand parameter OFFSET
	to LONGEST.
	(gnuv2_value_rtti_type): Expand parameter TOP to point to LONGEST.
	(gnuv2_baseclass_offset): Return LONGEST.  Expand parameter
	EMBEDDED_OFFSET to LONGEST.  Expand FIELD_OFFSET, BOFFSET,
	FIELD_LENGTH to LONGEST.
	* gnu-v3-abi.c (build_gdb_vtable_type): Expand OFFSET to LONGEST.
	(vtable_address_point_offset): Return LONGEST.
	(gnuv3_rtti_type): Expand parameter TOP_P to point to LONGEST.
	(gnuv3_virtual_fn_field): Expand parameter OFFSET to LONGEST.
	(gnuv3_baseclass_offset): Return LONGEST.  Expand parameter
	EMBEDDED_OFSET to LONGEST.  Expand CUR_BASE_OFFSET, BASE_OFFSET to
	LONGEST.
	(gnuv3_find_method_in): Expand POS to LONGEST.
	* go-lang.h (go_val_print): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	* go-valprint.c (print_go_string): Likewise.
	(go_val_print): Likewise.
	* i386-nat.c (i386_handle_nonaligned_watchpoint): Expand
	parameter LEN to LONGEST.
	(i386_region_ok_for_watchpoint): Likewise.
	* inf-ttrace.c (inf_ttrace_region_ok_for_hw_watchpoint): Expand
	parameter LEN to LONGEST.
	* jv-lang.c (java_link_class_type): Expand BOFFSET to LONGEST.
	(java_printstr): Expand parameter LENGTH to ULONGEST.
	* jv-lang.h (java_val_print): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	* jv-valprint.c (java_print_value_fields): Expand parameter OFFSET
	to LONGEST.
	(java_val_print): Expand parameter EMBEDDED_OFFSET to LONGEST.
	* language.c (unk_lang_printstr): Expand parameter LENGTH to
	ULONGEST.
	(unk_lang_val_print): Expand parameter EMBEDDED_OFFSET to LONGEST.
	* language.h (language_defn): Expand parameter LENGTH of
	LA_PRINTSTR to ULONGEST.  Expand parameter EMBEDDED_OFFSET of
	LA_VAL_PRINT to LONGEST.
	* m2-lang.c (m2_printstr): Expand parameter LENGTH to ULONGEST.
	Expand I, REP1, REPS to ULONGEST.  Use pulongest to format print
	REPS.
	* m2-lang.h (m2_val_print): Expand parameter embedded_offset to
	LONGEST.
	* m2-typeprint.c (m2_array): New variable VAL.  Use pulongest to
	* format print VAL.
	(m2_enum): expand LASTVAL to LONGEST.
	* m2-valprint.c (m2_print_long_set): Expand parameter
	EMBEDDED_OFFSET to LONGEST.
	(m2_print_unbounded_array): Likewise.
	(m2_print_array_contents): Likewise.
	(m2_val_print): Expand parameter EMBEDDED_OFFSET to LONGEST.
	Expand I, LEN, TEMP_LEN to ULONGEST.
	* memrange.c (mem_ranges_overlap): Expand parameters LEN1, LEN2 to
	LONGEST.
	* memrange.h (struct mem_range): Expand member LENGTH to LONGEST.
	(mem_ranges_overlap): Expand parameters LEN1, LEN2 to LONGEST.
	* mips-linux-nat.c (mips_linux_region_ok_for_hw_watchpoint):
	Expand parameter LEN to LONGEST.
	* objc-lang.c (objc_printstr): Expand parameter LENGTH to
	ULONGEST.  Expand I, REP1, REPS to ULONGEST.  use pulongest to
	format print REPS.
	* opencl-lang.c (lookup_opencl_vector_type): Expand parameter
	EL_LENGTH to ULONGEST.  Expand LENGTH to ULONGEST.
	(lval_func_read): Expand OFFSET, N, I, J and ELSIZE to LONGEST.
	(lval_func_write): Likewise.
	(lval_func_check_validity): Expand parameter LENGTH to LONGEST.
	Expand ELSIZE, START, END, I, STARTREST, ENDREST, COMP_OFFSET,
	COMP_LENGTH to LONGEST.
	(lval_func_check_any_valid): Expand ELSIZE to LONGEST.
	(lval_func_check_synthetic_pointer): Expand parameters OFFSET and
	LENGTH to LONGEST.  Expand ELSIZE, START, END, I, STARTREST,
	ENDREST, COMP_LENGTH, COMP_OFFSET to LONGEST.
	* p-lang.c (is_pascal_string_type): Expand parameters LENGTH_POS,
	STRING_POS, LENGTH_SIZE to point to LONGEST.
	(pascal_printstr): Expand parameter LENGTH to ULONGEST.  Expand
	I, REP1, REPS to ULONGEST.  Use pulongest to format print REPS.
	* p-lang.h (pascal_val_print): Expand parameter EMBEDDED_OFFSET
	to LONGEST.
	(is_pascal_string_type): Expand parameters LENGTH_POS, STRING_POS,
	LENGTH_SIZE to point to LONGEST.
	(pascal_printstr): Expand parameter LENGTH to ULONGEST.
	(pascal_object_print_value_fields): Expand parameter OFFSET to
	LONGEST.
	* p-valprint.c (pascal_val_print): Expand parameter
	EMBEDDED_OFFSET to LONGEST.  Expand ELTLEN to ULONGEST.  Expand
	LENGTH_SIZE, LENGTH_POS, STRING_POS to LONGEST.
	(pascal_object_print_value_fields): Expand parameter OFFSET to
	LONGEST.
	(pascal_object_print_value): Likewise.  Expand BOFFSET,
	THISOFFSET to LONGEST.
	* ppc-linux-nat.c (ppc_linux_region_ok_for_hw_watchpoint):
	Expand parameter LEN to point to LONGEST.
	* printcmd.c (print_formatted): Expand LEN to LONGEST.
	(print_scalar_formatted): Likewise.
	* procfs.c (procfs_region_ok_for_hw_watchpoint): Expand
	parameter LEN to LONGEST.
	* python/py-prettyprint.c (apply_val_pretty_printer): Expand
	parameter EMBEDDED_OFFSET to LONGEST.
	* python/python.h (apply_val_pretty_printer): Likewise.
	* regcache.c (regcache_xfer_part): Expand parameter OFFSET to
	LONGEST.
	(regcache_raw_read_part): Likewise.
	(regcache_raw_write_part): Likewise.
	(regcache_cooked_read_part): Likewise.
	(regcache_cooked_write_part): Likewise.
	* regcache.h (regcache_raw_read_part): Likewise.
	(regcache_raw_write_part): Likewise.
	(regcache_cooked_read_part): Likewise.
	(regcache_cooked_write_part): Likewise.
	* remote.c (remote_region_ok_for_hw_watchpoint): Expand
	parameter LEN to LONGEST.
	* s390-nat.c (s390_region_ok_for_hw_watchpoint): Expand
	parameter LEN to LONGEST.
	* spu-multiarch.c (spu_region_ok_for_hw_watchpoint): Expand
	parameter len to LONGEST.
	* stack.c (print_frame_nameless_args): Expand parameter START to
	LONGEST.
	(print_frame_args): Expand HIGHEST_OFFSET, CURRENT_OFFSET,
	ARG_SIZE, START to LONGEST.
	* symmisc.c (print_symbol): Expand I to ULONGEST.  Use pulongest
	to format print TYPE_LENGTH.
	* target.c (default_region_ok_for_hw_watchpoint): Expand parameter
	LEN to LONGEST.
	(debug_to_region_ok_for_hw_watchpoint): Likewise.
	* target.h (struct target_ops): Expand parameter LEN to LONGEST
	for TO_REGION_OK_FOR_HW_WATCHPOINT.
	* tracepoint.c (add_memrange): Expand parameter LEN to LONGEST.
	Use plongest to format print LEN.
	(collect_symbol): Expand LEN to ULONGEST.  Use pulongest to
	format print LEN.
	(scope_info): Expand J to LONGEST.  Use pulongest to format
	print TYPE_LENGTH.
	* typeprint.c (whatis_exp): Expand TOP to LONGEST.
	* valarith.c (value_subscripted_rvalue): Expand parameters INDEX
	and LOWERBOUND to LONGEST.  Expand ELT_SIZE, ELT_OFFS to ULONGEST.
	(value_concat): expand INVAL1LEN and INVAL2LEN to ssize_t.
	(value_logical_not): Expand LEN to LONGEST.
	(value_strcmp): Expand LEN1, LEN2, I, LEN to LONGEST.
	* valops.c (value_allocate_space_in_inferior): Expand parameter
	LEN to LONGEST.
	(value_cast_structs): Expand TOP to LONGEST.
	(value_cast): Expand ELEMENT_LENGTH to ULONGEST.  Expand
	VAL_LENGTH to LONGEST.
	(dynamic_cast_check_1): Expand parameter EMBEDDED_OFFSET to
	LONGEST.  Expand OFFSET to LONGEST.
	(dynamic_cast_check_2): Likewise.
	(value_dynamic_cast): Expand TOP to LONGEST.
	(read_value_memory): Expand EMBEDDED_OFFSET to LONGEST.
	(value_assign): Expand CHANGED_LEN, OFFSET to LONGEST.
	(value_array): Expand TYPELENGTH to ULONGEST.
	(update_search_result): Expand parameters LAST_BOFFSET, BOFFSET
	to LONGEST.
	(do_search_struct_field): Expand parameter OFFSET, LAST_BOFFSET
	to LONGEST.  Expand NEW_OFFSET, BOFFSET to LONGEST.
	(search_struct_field): Expand parameter OFFSET to LONGEST.
	Expand BOFFSET to LONGEST.
	(search_struct_method): Expand parameter OFFSET to LONGEST.
	Expand BASE_OFFSET, THIS_OFFSET to LONGEST.
	(find_method_list): Expand parameters OFFSET, BOFFSET to
	LONGEST.  Expand BASE_OFFSET to LONGEST.
	(value_find_oload_method_list): Expand parameter BOFFSET to point
	to LONGEST.
	(find_overload_match): Expand BOFFSET to LONGEST.
	(value_struct_elt_for_reference): Expand parameter OFFSET to
	LONGEST.  Remove unneeded cast.  Expand BASE_OFFSET to LONGEST.
	(value_rtti_indirect_type): Expand parameter TOP to point to
	LONGEST.
	(value_full_object): Expand parameter XTOP to LONGEST.  Expand
	TOP to LONGEST.
	* valprint.c (valprint_check_validity): Expand parameter
	EMBEDDED_OFFSET to LONGEST.
	(generic_val_print): Likewise.
	(val_print): Likewise.
	(val_print_scalar_formatted): Likewise.
	(print_hex_chars): Expand parameter LEN to ULONGEST.
	(val_print_array_elements): Expand parameter EMBEDDED_OFFSET to
	LONGEST, I to ULONGEST.  Expand LEN, ELTLEN, REP1, REPS to
	ULONGEST.  Use pulongest to format print REPS.
	(generic_printstr): Expand parameter LENGTH to ULONGEST.
	* valprint.h (val_print_array_elements): Expand parameter
	EMBEDDED_OFFSET to LONGEST.
	(val_print_scalar_formatted): Likewise.
	(print_hex_chars): Expand parameter LEN to ULONGEST.
	(generic_val_print): Expand parameter EMBEDDED_OFFSET to LONGEST.
	(generic_printstr): Expand parameter LENGTH to ULONGEST.
	* value.c (struct range): Expand members OFFSET, LENGTH to
	LONGEST.
	(ranges_overlap): Expand parameters OFFSET1, OFFSET2, LEN1 AND
	LEN2 to LONGEST.
	(range_contain): Expand parameter OFFSET, LENGTH to LONGEST.
	(struct value): Expand members OFFSET, EMBEDDED_OFFSET,
	POINTED_TO_OFFSET to LONGEST.
	(value_bytes_available): Expand parameters OFFSET, LENGTH to
	LONGEST.
	(mark_value_bytes_unavailable): Likewise.
	(find_first_range_overlap): Likewise.
	(value_available_contents_eq): Expand parameters OFFSET1, OFFSET2
	and LENGTH to LONGEST.
	(value_offset): Return LONGEST.
	(set_value_offset): Expand parameter OFFSET to LONGEST.
	(value_contents_copy_raw): Expand parameters SRC_OFFSET,
	DST_OFFSET, LENGTH to ssize_t.
	(value_contents_copy): Likewise.
	(value_bits_valid): Expand parameters OFFSET, LENGTH to LONGEST.
	(value_bits_synthetic_pointer): Likewise.
	(value_embedded_offset): Return LONGEST.
	(set_value_embedded_offset): Expand parameter VAL to LONGEST.
	(value_pointed_to_offset): Return LONGEST.
	(set_value_pointed_to_offset): Expand parameter VAL to LONGEST.
	(set_internalvar_component): Expand parameter OFFSET to LONGEST.
	(value_primitive_field): Likewise.  Expand BITPOS, BOFFSET,
	CONTAINER_BITSIZE to LONGEST.
	(value_fn_field): Expand parameter OFFSET to LONGEST.
	(unpack_value_bits_as_long_1): Expand parameters EMBEDDED_OFFSET,
	BITPOS to LONGEST.  Expand READ_OFFSET to LONGEST.
	(unpack_value_bits_as_long): Expand parameter EMBEDED_OFFSET to
	LONGEST.
	(unpack_value_field_as_long_1): Likewise.  Expand BITPOS to
	LONGEST.
	(unpack_value_field_as_long): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	(value_field_bitfield): Likewise.
	(modify_field): Expand parameter BITPOS to LONGEST.  Expand
	BYTESIZE to LONGEST.
	* value.h (value_offset): Return LONGEST.
	(set_value_offset): Expand parameter OFFSET to LONGEST.
	(value_pointed_to_offset): Return LONGEST.
	(set_value_pointed_to_offset): Expand parameter VAL to LONGEST.
	(value_embedded_offset): Return LONGEST.
	(set_value_embedded_offset): Expand parameter VAL to LONGEST.
	(struct lval_funcs): Expand parameters OFFSET and LENGTH to
	LONGEST for CHECK_VALIDITY.  Likewise for CHECK_SYNTHETIC_POINTER.
	(valprint_check_validity): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	(value_bits_valid): Expand parameters OFFSET, LENGTH to LONGEST.
	(value_bits_synthetic_pointer): Likewise.
	(value_bytes_available): Likewise.
	(mark_value_bytes_unavailable): Likewise.
	(value_available_contents_eq): Fix comment.  Expand parameters
	OFFSET1, OFFSET2, LENGTH to LONGEST.
	(read_value_memory): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	(unpack_value_bits_as_long): Expand parameter EMBEDDED_OFFSET to
	LONGEST.
	(unpack_value_field_as_long): Likewise.
	(value_field_bitfield): Likewise.
	(value_contents_copy_raw): Expand parameters SRC_OFFSET,
	DST_OFFSET, LENGTH to LONGEST.
	(value_contents_copy): Likewise.
	(value_primitive_field): Expand parameter OFFSET to LONGEST.
	(value_rtti_indirect_type): Expand parameter TOP to point to
	LONGEST.
	(value_full_object): Expand parameter XTOP to LONGEST.
	(set_internalvar_component): Expand parameter OFFSET to LONGEST.
	(value_fn_field): Expand parameter OFFSET to LONGEST.
	(modify_field): Expand parameter BITPOS to LONGEST.
	(val_print): Expand parameter EMBEDDED_OFFSET to LONGEST.
	(value_allocate_space_in_inferior): Expand parameter LEN to
	LONGEST.

gdb/testsuite/ChangeLog:

2012-08-05  Siddhesh Poyarekar  <siddhesh@redhat.com>

	* gdb.base/longest-types.exp: Add test case to get offset of
	BUF2.

--MP_/yp5f+W_ED2JtUlSyBi8xujr
Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bitpos-main.patch

diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c
--- a/gdb/aarch64-linux-nat.c
+++ b/gdb/aarch64-linux-nat.c
@@ -808,7 +808,7 @@ aarch64_linux_nat_target::remove_watchpoint (CORE_ADDR addr, int len,
 /* Implement the "region_ok_for_hw_watchpoint" target_ops method.  */
 
 int
-aarch64_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
+aarch64_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
 {
   return aarch64_linux_region_ok_for_watchpoint (addr, len);
 }
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -78,7 +78,7 @@ static struct type *desc_bounds_type (struct type *);
 
 static struct value *desc_bounds (struct value *);
 
-static int fat_pntr_bounds_bitpos (struct type *);
+static LONGEST fat_pntr_bounds_bitpos (struct type *);
 
 static int fat_pntr_bounds_bitsize (struct type *);
 
@@ -86,13 +86,13 @@ static struct type *desc_data_target_type (struct type *);
 
 static struct value *desc_data (struct value *);
 
-static int fat_pntr_data_bitpos (struct type *);
+static LONGEST fat_pntr_data_bitpos (struct type *);
 
 static int fat_pntr_data_bitsize (struct type *);
 
 static struct value *desc_one_bound (struct value *, int, int);
 
-static int desc_bound_bitpos (struct type *, int, int);
+static LONGEST desc_bound_bitpos (struct type *, int, int);
 
 static int desc_bound_bitsize (struct type *, int, int);
 
@@ -175,7 +175,7 @@ static struct type *static_unwrap_type (struct type *type);
 
 static struct value *unwrap_value (struct value *);
 
-static struct type *constrained_packed_array_type (struct type *, long *);
+static struct type *constrained_packed_array_type (struct type *, LONGEST *);
 
 static struct type *decode_constrained_packed_array_type (struct type *);
 
@@ -190,7 +190,8 @@ static int ada_is_unconstrained_packed_array_type (struct type *);
 static struct value *value_subscript_packed (struct value *, int,
                                              struct value **);
 
-static void move_bits (gdb_byte *, int, const gdb_byte *, int, int, int);
+static void move_bits (gdb_byte *, int, const gdb_byte *, LONGEST, LONGEST,
+		       int);
 
 static struct value *coerce_unspec_val_to_type (struct value *,
                                                 struct type *);
@@ -216,14 +217,14 @@ static struct value *value_val_atr (struct type *, struct value *);
 static struct symbol *standard_lookup (const char *, const struct block *,
                                        domain_enum);
 
-static struct value *ada_search_struct_field (const char *, struct value *, int,
+static struct value *ada_search_struct_field (const char *, struct value *, LONGEST,
                                               struct type *);
 
-static struct value *ada_value_primitive_field (struct value *, int, int,
+static struct value *ada_value_primitive_field (struct value *, LONGEST, int,
                                                 struct type *);
 
-static int find_struct_field (const char *, struct type *, int,
-                              struct type **, int *, int *, int *, int *);
+static int find_struct_field (const char *, struct type *, LONGEST,
+                              struct type **, LONGEST *, int *, int *, int *);
 
 static int ada_resolve_function (struct block_symbol *, int,
                                  struct value **, int, const char *,
@@ -234,7 +235,7 @@ static int ada_is_direct_array_type (struct type *);
 static void ada_language_arch_info (struct gdbarch *,
 				    struct language_arch_info *);
 
-static struct value *ada_index_struct_field (int, struct value *, int,
+static struct value *ada_index_struct_field (LONGEST, struct value *, LONGEST,
 					     struct type *);
 
 static struct value *assign_aggregate (struct value *, struct value *, 
@@ -697,7 +698,7 @@ coerce_unspec_val_to_type (struct value *val, struct type *type)
 }
 
 static const gdb_byte *
-cond_offset_host (const gdb_byte *valaddr, long offset)
+cond_offset_host (const gdb_byte *valaddr, LONGEST offset)
 {
   if (valaddr == NULL)
     return NULL;
@@ -706,7 +707,7 @@ cond_offset_host (const gdb_byte *valaddr, long offset)
 }
 
 static CORE_ADDR
-cond_offset_target (CORE_ADDR address, long offset)
+cond_offset_target (CORE_ADDR address, LONGEST offset)
 {
   if (address == 0)
     return 0;
@@ -1743,7 +1744,7 @@ desc_bounds (struct value *arr)
 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
    position of the field containing the address of the bounds data.  */
 
-static int
+static LONGEST
 fat_pntr_bounds_bitpos (struct type *type)
 {
   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
@@ -1809,7 +1810,7 @@ desc_data (struct value *arr)
 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
    position of the field containing the address of the data.  */
 
-static int
+static LONGEST
 fat_pntr_data_bitpos (struct type *type)
 {
   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
@@ -1844,7 +1845,7 @@ desc_one_bound (struct value *bounds, int i, int which)
    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
    bound, if WHICH is 1.  The first bound is I=1.  */
 
-static int
+static LONGEST
 desc_bound_bitpos (struct type *type, int i, int which)
 {
   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
@@ -2034,7 +2035,7 @@ ada_type_of_array (struct value *arr, int bounds)
 	         zero, and does not need to be recomputed.  */
 	      if (lo < hi)
 		{
-		  int array_bitsize =
+		  LONGEST array_bitsize =
 		        (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
 
 		  TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
@@ -2194,7 +2195,7 @@ decode_packed_array_bitsize (struct type *type)
    the length is arbitrary.  */
 
 static struct type *
-constrained_packed_array_type (struct type *type, long *elt_bits)
+constrained_packed_array_type (struct type *type, LONGEST *elt_bits)
 {
   struct type *new_elt_type;
   struct type *new_type;
@@ -2248,7 +2249,7 @@ decode_constrained_packed_array_type (struct type *type)
   char *name;
   const char *tail;
   struct type *shadow_type;
-  long bits;
+  LONGEST bits;
 
   if (!raw_name)
     raw_name = ada_type_name (desc_base_type (type));
@@ -2319,7 +2320,8 @@ decode_constrained_packed_array (struct value *arr)
  	 array with no wrapper.  In order to interpret the value through
  	 the (left-justified) packed array type we just built, we must
  	 first left-justify it.  */
-      int bit_size, bit_pos;
+      int bit_size;
+      LONGEST bit_pos;
       ULONGEST mod;
 
       mod = ada_modulus (value_type (arr)) - 1;
@@ -2547,7 +2549,7 @@ ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
 
 struct value *
 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
-				long offset, int bit_offset, int bit_size,
+				LONGEST offset, int bit_offset, int bit_size,
                                 struct type *type)
 {
   struct value *v;
@@ -2617,7 +2619,7 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
 
   if (obj != NULL)
     {
-      long new_offset = offset;
+      LONGEST new_offset = offset;
 
       set_value_component_location (v, obj);
       set_value_bitpos (v, bit_offset + value_bitpos (obj));
@@ -2663,7 +2665,7 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
    not overlap.  */
 static void
 move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
-	   int src_offset, int n, int bits_big_endian_p)
+	   LONGEST src_offset, LONGEST n, int bits_big_endian_p)
 {
   unsigned int accum, mask;
   int accum_bits, chunk_size;
@@ -2753,7 +2755,7 @@ ada_value_assign (struct value *toval, struct value *fromval)
     {
       int len = (value_bitpos (toval)
 		 + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
-      int from_size;
+      LONGEST from_size;
       gdb_byte *buffer = (gdb_byte *) alloca (len);
       struct value *val;
       CORE_ADDR to_addr = value_address (toval);
@@ -2804,7 +2806,7 @@ value_assign_to_component (struct value *container, struct value *component,
     (LONGEST)  (value_address (component) - value_address (container));
   int bit_offset_in_container =
     value_bitpos (component) - value_bitpos (container);
-  int bits;
+  LONGEST bits;
 
   val = value_cast (value_type (component), val);
 
@@ -4462,7 +4464,7 @@ ensure_lval (struct value *val)
   if (VALUE_LVAL (val) == not_lval
       || VALUE_LVAL (val) == lval_internalvar)
     {
-      int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
+      LONGEST len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
       const CORE_ADDR addr =
         value_as_long (value_allocate_space_in_inferior (len));
 
@@ -4546,7 +4548,7 @@ static CORE_ADDR
 value_pointer (struct value *value, struct type *type)
 {
   struct gdbarch *gdbarch = get_type_arch (type);
-  unsigned len = TYPE_LENGTH (type);
+  ULONGEST len = TYPE_LENGTH (type);
   gdb_byte *buf = (gdb_byte *) alloca (len);
   CORE_ADDR addr;
 
@@ -6657,7 +6659,7 @@ value_tag_from_contents_and_address (struct type *type,
 				     const gdb_byte *valaddr,
                                      CORE_ADDR address)
 {
-  int tag_byte_offset;
+  LONGEST tag_byte_offset;
   struct type *tag_type;
 
   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
@@ -7150,7 +7152,7 @@ ada_in_variant (LONGEST val, struct type *type, int field_num)
    only in that it can handle packed values of arbitrary type.  */
 
 static struct value *
-ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
+ada_value_primitive_field (struct value *arg1, LONGEST offset, int fieldno,
                            struct type *arg_type)
 {
   struct type *type;
@@ -7162,7 +7164,7 @@ ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
 
   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
     {
-      int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
+      LONGEST bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
 
       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
@@ -7239,9 +7241,9 @@ ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
    Returns 1 if found, 0 otherwise.  */
 
 static int
-find_struct_field (const char *name, struct type *type, int offset,
+find_struct_field (const char *name, struct type *type, LONGEST offset,
                    struct type **field_type_p,
-                   int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
+		   LONGEST *byte_offset_p, int *bit_offset_p, int *bit_size_p,
 		   int *index_p)
 {
   int i;
@@ -7260,8 +7262,8 @@ find_struct_field (const char *name, struct type *type, int offset,
 
   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
     {
-      int bit_pos = TYPE_FIELD_BITPOS (type, i);
-      int fld_offset = offset + bit_pos / 8;
+      LONGEST bit_pos = TYPE_FIELD_BITPOS (type, i);
+      LONGEST fld_offset = offset + bit_pos / 8;
       const char *t_field_name = TYPE_FIELD_NAME (type, i);
 
       if (t_field_name == NULL)
@@ -7363,7 +7365,7 @@ num_visible_fields (struct type *type)
    long explanation in find_struct_field's function documentation.  */
 
 static struct value *
-ada_search_struct_field (const char *name, struct value *arg, int offset,
+ada_search_struct_field (const char *name, struct value *arg, LONGEST offset,
                          struct type *type)
 {
   int i;
@@ -7411,7 +7413,7 @@ ada_search_struct_field (const char *name, struct value *arg, int offset,
           int j;
           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
 									i));
-          int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
+	  LONGEST var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
 
           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
             {
@@ -7443,8 +7445,8 @@ ada_search_struct_field (const char *name, struct value *arg, int offset,
   return NULL;
 }
 
-static struct value *ada_index_struct_field_1 (int *, struct value *,
-					       int, struct type *);
+static struct value *ada_index_struct_field_1 (LONGEST *, struct value *,
+					       LONGEST, struct type *);
 
 
 /* Return field #INDEX in ARG, where the index is that returned by
@@ -7453,7 +7455,7 @@ static struct value *ada_index_struct_field_1 (int *, struct value *,
  * If found, return value, else return NULL.  */
 
 static struct value *
-ada_index_struct_field (int index, struct value *arg, int offset,
+ada_index_struct_field (LONGEST index, struct value *arg, LONGEST offset,
 			struct type *type)
 {
   return ada_index_struct_field_1 (&index, arg, offset, type);
@@ -7465,7 +7467,7 @@ ada_index_struct_field (int index, struct value *arg, int offset,
  * *INDEX_P.  */
 
 static struct value *
-ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
+ada_index_struct_field_1 (LONGEST *index_p, struct value *arg, LONGEST offset,
 			  struct type *type)
 {
   int i;
@@ -7555,7 +7557,8 @@ ada_value_struct_elt (struct value *arg, const char *name, int no_err)
     v = ada_search_struct_field (name, arg, 0, t);
   else
     {
-      int bit_offset, bit_size, byte_offset;
+      int bit_offset, bit_size;
+      LONGEST byte_offset;
       struct type *field_type;
       CORE_ADDR address;
 
@@ -7899,8 +7902,8 @@ ada_coerce_ref (struct value *val0)
 /* Return OFF rounded upward if necessary to a multiple of
    ALIGNMENT (a power of 2).  */
 
-static unsigned int
-align_value (unsigned int off, unsigned int alignment)
+static ULONGEST
+align_value (ULONGEST off, ULONGEST alignment)
 {
   return (off + alignment - 1) & ~(alignment - 1);
 }
@@ -8290,10 +8293,9 @@ ada_template_to_fixed_record_type_1 (struct type *type,
   struct value *mark = value_mark ();
   struct value *dval;
   struct type *rtype;
-  int nfields, bit_len;
+  int nfields;
   int variant_field;
-  long off;
-  int fld_bit_len;
+  LONGEST off, bit_len, fld_bit_len;
   int f;
 
   /* Compute the number of fields in this record type that are going
@@ -8370,7 +8372,7 @@ ada_template_to_fixed_record_type_1 (struct type *type,
 	     that follow this one.  */
 	  if (ada_is_aligner_type (field_type))
 	    {
-	      long field_offset = TYPE_FIELD_BITPOS (field_type, f);
+	      LONGEST field_offset = TYPE_FIELD_BITPOS (field_type, f);
 
 	      field_valaddr = cond_offset_host (field_valaddr, field_offset);
 	      field_address = cond_offset_target (field_address, field_offset);
@@ -8506,11 +8508,11 @@ ada_template_to_fixed_record_type_1 (struct type *type,
   if (TYPE_LENGTH (type) <= 0)
     {
       if (TYPE_NAME (rtype))
-	warning (_("Invalid type size for `%s' detected: %d."),
-		 TYPE_NAME (rtype), TYPE_LENGTH (type));
+	warning (_("Invalid type size for `%s' detected: %s."),
+		 TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
       else
-	warning (_("Invalid type size for <unnamed> detected: %d."),
-		 TYPE_LENGTH (type));
+	warning (_("Invalid type size for <unnamed> detected: %s."),
+		 pulongest (TYPE_LENGTH (type)));
     }
   else
     {
@@ -8974,7 +8976,8 @@ to_fixed_array_type (struct type *type0, struct value *dval,
 	 type was a regular (non-packed) array type.  As a result, the
 	 bitsize of the array elements needs to be set again, and the array
 	 length needs to be recomputed based on that bitsize.  */
-      int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
+      LONGEST len = (TYPE_LENGTH (result)
+		     / TYPE_LENGTH (TYPE_TARGET_TYPE (result)));
       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
 
       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -173,7 +173,7 @@ extern void ada_print_type (struct type *, const char *, struct ui_file *, int,
 extern void ada_print_typedef (struct type *type, struct symbol *new_symbol,
 			       struct ui_file *stream);
 
-extern void ada_val_print (struct type *, int, CORE_ADDR,
+extern void ada_val_print (struct type *, LONGEST, CORE_ADDR,
 			   struct ui_file *, int,
 			   struct value *,
 			   const struct value_print_options *);
@@ -188,7 +188,7 @@ extern void ada_emit_char (int, struct type *, struct ui_file *, int, int);
 extern void ada_printchar (int, struct type *, struct ui_file *);
 
 extern void ada_printstr (struct ui_file *, struct type *, const gdb_byte *,
-			  unsigned int, const char *, int,
+			  ULONGEST, const char *, int,
 			  const struct value_print_options *);
 
 struct value *ada_convert_actual (struct value *actual,
@@ -261,7 +261,7 @@ extern int ada_is_constrained_packed_array_type (struct type *);
 
 extern struct value *ada_value_primitive_packed_val (struct value *,
 						     const gdb_byte *,
-                                                     long, int, int,
+						     LONGEST, int, int,
                                                      struct type *);
 
 extern struct type *ada_coerce_to_simple_array_type (struct type *);
diff --git a/gdb/ada-typeprint.c b/gdb/ada-typeprint.c
--- a/gdb/ada-typeprint.c
+++ b/gdb/ada-typeprint.c
@@ -896,8 +896,8 @@ ada_print_type (struct type *type0, const char *varstring,
 	    const char *name = ada_type_name (type);
 
 	    if (!ada_is_range_type_name (name))
-	      fprintf_filtered (stream, _("<%d-byte integer>"),
-				TYPE_LENGTH (type));
+	      fprintf_filtered (stream, _("<%s-byte integer>"),
+				pulongest (TYPE_LENGTH (type)));
 	    else
 	      {
 		fprintf_filtered (stream, "range ");
@@ -918,7 +918,8 @@ ada_print_type (struct type *type0, const char *varstring,
 	  }
 	break;
       case TYPE_CODE_FLT:
-	fprintf_filtered (stream, _("<%d-byte float>"), TYPE_LENGTH (type));
+	fprintf_filtered (stream, _("<%s-byte float>"),
+			  pulongest (TYPE_LENGTH (type)));
 	break;
       case TYPE_CODE_ENUM:
 	if (show < 0)
diff --git a/gdb/ada-valprint.c b/gdb/ada-valprint.c
--- a/gdb/ada-valprint.c
+++ b/gdb/ada-valprint.c
@@ -34,11 +34,11 @@
 #include "target-float.h"
 
 static int print_field_values (struct type *, const gdb_byte *,
-			       int,
+			       LONGEST,
 			       struct ui_file *, int,
 			       struct value *,
 			       const struct value_print_options *,
-			       int, struct type *, int,
+			       int, struct type *, LONGEST,
 			       const struct language_defn *);
 
 
@@ -316,7 +316,7 @@ ada_emit_char (int c, struct type *type, struct ui_file *stream,
    of a character.  */
 
 static int
-char_at (const gdb_byte *string, int i, int type_len,
+char_at (const gdb_byte *string, LONGEST i, int type_len,
 	 enum bfd_endian byte_order)
 {
   if (type_len == 1)
@@ -476,11 +476,11 @@ ada_print_scalar (struct type *type, LONGEST val, struct ui_file *stream)
 
 static void
 printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
-	  unsigned int length, int force_ellipses, int type_len,
+	  ULONGEST length, int force_ellipses, int type_len,
 	  const struct value_print_options *options)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (elttype));
-  unsigned int i;
+  ULONGEST i;
   unsigned int things_printed = 0;
   int in_quotes = 0;
   int need_comma = 0;
@@ -495,9 +495,9 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
     {
       /* Position of the character we are examining
          to see whether it is repeated.  */
-      unsigned int rep1;
+      ULONGEST rep1;
       /* Number of repetitions we have detected so far.  */
-      unsigned int reps;
+      ULONGEST reps;
 
       QUIT;
 
@@ -528,7 +528,8 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
 	  ada_emit_char (char_at (string, i, type_len, byte_order),
 			 elttype, stream, '\'', type_len);
 	  fputs_filtered ("'", stream);
-	  fprintf_filtered (stream, _(" <repeats %u times>"), reps);
+	  fprintf_filtered (stream, _(" <repeats %s times>"),
+			    pulongest (reps));
 	  i = rep1 - 1;
 	  things_printed += options->repeat_count_threshold;
 	  need_comma = 1;
@@ -556,7 +557,7 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
 
 void
 ada_printstr (struct ui_file *stream, struct type *type,
-	      const gdb_byte *string, unsigned int length,
+	      const gdb_byte *string, ULONGEST length,
 	      const char *encoding, int force_ellipses,
 	      const struct value_print_options *options)
 {
@@ -566,12 +567,12 @@ ada_printstr (struct ui_file *stream, struct type *type,
 
 static int
 print_variant_part (struct type *type, int field_num,
-		    const gdb_byte *valaddr, int offset,
+		    const gdb_byte *valaddr, LONGEST offset,
 		    struct ui_file *stream, int recurse,
 		    struct value *val,
 		    const struct value_print_options *options,
 		    int comma_needed,
-		    struct type *outer_type, int outer_offset,
+		    struct type *outer_type, LONGEST outer_offset,
 		    const struct language_defn *language)
 {
   struct type *var_type = TYPE_FIELD_TYPE (type, field_num);
@@ -607,11 +608,11 @@ print_variant_part (struct type *type, int field_num,
 
 static int
 print_field_values (struct type *type, const gdb_byte *valaddr,
-		    int offset, struct ui_file *stream, int recurse,
+		    LONGEST offset, struct ui_file *stream, int recurse,
 		    struct value *val,
 		    const struct value_print_options *options,
 		    int comma_needed,
-		    struct type *outer_type, int outer_offset,
+		    struct type *outer_type, LONGEST outer_offset,
 		    const struct language_defn *language)
 {
   int i, len;
@@ -677,7 +678,7 @@ print_field_values (struct type *type, const gdb_byte *valaddr,
 	  else
 	    {
 	      struct value *v;
-	      int bit_pos = TYPE_FIELD_BITPOS (type, i);
+	      LONGEST bit_pos = TYPE_FIELD_BITPOS (type, i);
 	      int bit_size = TYPE_FIELD_BITSIZE (type, i);
 	      struct value_print_options opts;
 
@@ -722,8 +723,8 @@ ada_val_print_string (struct type *type, const gdb_byte *valaddr,
 {
   enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
   struct type *elttype = TYPE_TARGET_TYPE (type);
-  unsigned int eltlen;
-  unsigned int len;
+  ULONGEST eltlen;
+  ULONGEST len;
 
   /* We know that ELTTYPE cannot possibly be null, because we assume
      that we're called only when TYPE is a string-like type.
@@ -742,7 +743,7 @@ ada_val_print_string (struct type *type, const gdb_byte *valaddr,
      elements up to it.  */
   if (options->stop_print_at_null)
     {
-      int temp_len;
+      LONGEST temp_len;
 
       /* Look for a NULL char.  */
       for (temp_len = 0;
@@ -1115,7 +1116,7 @@ ada_val_print_ref (struct type *type, const gdb_byte *valaddr,
 
 static void
 ada_val_print_1 (struct type *type,
-		 int offset, CORE_ADDR address,
+		 LONGEST offset, CORE_ADDR address,
 		 struct ui_file *stream, int recurse,
 		 struct value *original_value,
 		 const struct value_print_options *options,
@@ -1199,7 +1200,7 @@ ada_val_print_1 (struct type *type,
 
 void
 ada_val_print (struct type *type,
-	       int embedded_offset, CORE_ADDR address,
+	       LONGEST embedded_offset, CORE_ADDR address,
 	       struct ui_file *stream, int recurse,
 	       struct value *val,
 	       const struct value_print_options *options)
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
@@ -727,7 +727,7 @@ amd64_return_value (struct gdbarch *gdbarch, struct value *function,
 		    gdb_byte *readbuf, const gdb_byte *writebuf)
 {
   enum amd64_reg_class theclass[2];
-  int len = TYPE_LENGTH (type);
+  LONGEST len = TYPE_LENGTH (type);
   static int integer_regnum[] = { AMD64_RAX_REGNUM, AMD64_RDX_REGNUM };
   static int sse_regnum[] = { AMD64_XMM0_REGNUM, AMD64_XMM1_REGNUM };
   int integer_reg = 0;
@@ -844,10 +844,10 @@ amd64_return_value (struct gdbarch *gdbarch, struct value *function,
       gdb_assert (regnum != -1);
 
       if (readbuf)
-	regcache->raw_read_part (regnum, offset, std::min (len, 8),
+	regcache->raw_read_part (regnum, offset, std::min (len, (LONGEST) 8),
 				 readbuf + i * 8);
       if (writebuf)
-	regcache->raw_write_part (regnum, offset, std::min (len, 8),
+	regcache->raw_write_part (regnum, offset, std::min (len, (LONGEST) 8),
 				  writebuf + i * 8);
     }
 
diff --git a/gdb/annotate.c b/gdb/annotate.c
--- a/gdb/annotate.c
+++ b/gdb/annotate.c
@@ -531,21 +531,21 @@ annotate_frame_end (void)
 }
 
 void
-annotate_array_section_begin (int idx, struct type *elttype)
+annotate_array_section_begin (LONGEST idx, struct type *elttype)
 {
   if (annotation_level == 2)
     {
-      printf_filtered (("\n\032\032array-section-begin %d "), idx);
+      printf_filtered (("\n\032\032array-section-begin %s "), plongest (idx));
       print_value_flags (elttype);
       printf_filtered (("\n"));
     }
 }
 
 void
-annotate_elt_rep (unsigned int repcount)
+annotate_elt_rep (ULONGEST repcount)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032elt-rep %u\n"), repcount);
+    printf_filtered (("\n\032\032elt-rep %s\n"), pulongest (repcount));
 }
 
 void
diff --git a/gdb/annotate.h b/gdb/annotate.h
--- a/gdb/annotate.h
+++ b/gdb/annotate.h
@@ -102,8 +102,8 @@ extern void annotate_frame_source_end (void);
 extern void annotate_frame_where (void);
 extern void annotate_frame_end (void);
 
-extern void annotate_array_section_begin (int, struct type *);
-extern void annotate_elt_rep (unsigned int);
+extern void annotate_array_section_begin (LONGEST, struct type *);
+extern void annotate_elt_rep (ULONGEST);
 extern void annotate_elt_rep_end (void);
 extern void annotate_elt (void);
 extern void annotate_array_section_end (void);
diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
--- a/gdb/arch-utils.c
+++ b/gdb/arch-utils.c
@@ -228,7 +228,7 @@ legacy_virtual_frame_pointer (struct gdbarch *gdbarch,
 
 const struct floatformat **
 default_floatformat_for_type (struct gdbarch *gdbarch,
-			      const char *name, int len)
+			      const char *name, LONGEST len)
 {
   const struct floatformat **format = NULL;
 
diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h
--- a/gdb/arch-utils.h
+++ b/gdb/arch-utils.h
@@ -131,7 +131,7 @@ extern gdbarch_virtual_frame_pointer_ftype legacy_virtual_frame_pointer;
 /* Default implementation of gdbarch_floatformat_for_type.  */
 extern const struct floatformat **
   default_floatformat_for_type (struct gdbarch *gdbarch,
-				const char *name, int len);
+				const char *name, LONGEST len);
 
 extern CORE_ADDR generic_skip_trampoline_code (struct frame_info *frame,
 					       CORE_ADDR pc);
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
@@ -1098,7 +1098,7 @@ arm_linux_nat_target::remove_hw_breakpoint (struct gdbarch *gdbarch,
 /* Are we able to use a hardware watchpoint for the LEN bytes starting at 
    ADDR?  */
 int
-arm_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
+arm_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
 {
   const struct arm_linux_hwbp_cap *cap = arm_linux_get_hwbp_cap ();
   CORE_ADDR max_wp_length, aligned_addr;
diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
--- a/gdb/ax-gdb.c
+++ b/gdb/ax-gdb.c
@@ -82,12 +82,12 @@ static void gen_traced_pop (struct agent_expr *, struct axs_value *);
 static void gen_sign_extend (struct agent_expr *, struct type *);
 static void gen_extend (struct agent_expr *, struct type *);
 static void gen_fetch (struct agent_expr *, struct type *);
-static void gen_left_shift (struct agent_expr *, int);
+static void gen_left_shift (struct agent_expr *, LONGEST);
 
 
 static void gen_frame_args_address (struct agent_expr *);
 static void gen_frame_locals_address (struct agent_expr *);
-static void gen_offset (struct agent_expr *ax, int offset);
+static void gen_offset (struct agent_expr *ax, LONGEST offset);
 static void gen_sym_offset (struct agent_expr *, struct symbol *);
 static void gen_var_ref (struct agent_expr *ax, struct axs_value *value,
 			 struct symbol *var);
@@ -132,13 +132,13 @@ static void gen_complement (struct agent_expr *ax, struct axs_value *value);
 static void gen_deref (struct axs_value *);
 static void gen_address_of (struct axs_value *);
 static void gen_bitfield_ref (struct agent_expr *ax, struct axs_value *value,
-			      struct type *type, int start, int end);
+			      struct type *type, LONGEST start, LONGEST end);
 static void gen_primitive_field (struct agent_expr *ax,
 				 struct axs_value *value,
-				 int offset, int fieldno, struct type *type);
+				 LONGEST offset, int fieldno, struct type *type);
 static int gen_struct_ref_recursive (struct agent_expr *ax,
 				     struct axs_value *value,
-				     const char *field, int offset,
+				     const char *field, LONGEST offset,
 				     struct type *type);
 static void gen_struct_ref (struct agent_expr *ax,
 			    struct axs_value *value,
@@ -529,7 +529,7 @@ gen_fetch (struct agent_expr *ax, struct type *type)
    right shift it by -DISTANCE bits if DISTANCE < 0.  This generates
    unsigned (logical) right shifts.  */
 static void
-gen_left_shift (struct agent_expr *ax, int distance)
+gen_left_shift (struct agent_expr *ax, LONGEST distance)
 {
   if (distance > 0)
     {
@@ -583,7 +583,7 @@ gen_frame_locals_address (struct agent_expr *ax)
    programming in ML, it would be clearer why these are the same
    thing.  */
 static void
-gen_offset (struct agent_expr *ax, int offset)
+gen_offset (struct agent_expr *ax, LONGEST offset)
 {
   /* It would suffice to simply push the offset and add it, but this
      makes it easier to read positive and negative offsets in the
@@ -1254,7 +1254,7 @@ gen_address_of (struct axs_value *value)
    structure.  */
 static void
 gen_bitfield_ref (struct agent_expr *ax, struct axs_value *value,
-		  struct type *type, int start, int end)
+		  struct type *type, LONGEST start, LONGEST  end)
 {
   /* Note that ops[i] fetches 8 << i bits.  */
   static enum agent_op ops[]
@@ -1289,13 +1289,13 @@ gen_bitfield_ref (struct agent_expr *ax, struct axs_value *value,
 
   /* The first and one-after-last bits in the field, but rounded down
      and up to byte boundaries.  */
-  int bound_start = (start / TARGET_CHAR_BIT) * TARGET_CHAR_BIT;
-  int bound_end = (((end + TARGET_CHAR_BIT - 1)
-		    / TARGET_CHAR_BIT)
-		   * TARGET_CHAR_BIT);
+  LONGEST bound_start = (start / TARGET_CHAR_BIT) * TARGET_CHAR_BIT;
+  LONGEST bound_end = (((end + TARGET_CHAR_BIT - 1)
+			/ TARGET_CHAR_BIT)
+		       * TARGET_CHAR_BIT);
 
   /* current bit offset within the structure */
-  int offset;
+  LONGEST offset;
 
   /* The index in ops of the opcode we're considering.  */
   int op;
@@ -1413,7 +1413,7 @@ gen_bitfield_ref (struct agent_expr *ax, struct axs_value *value,
 
 static void
 gen_primitive_field (struct agent_expr *ax, struct axs_value *value,
-		     int offset, int fieldno, struct type *type)
+		     LONGEST offset, int fieldno, struct type *type)
 {
   /* Is this a bitfield?  */
   if (TYPE_FIELD_PACKED (type, fieldno))
@@ -1437,7 +1437,7 @@ gen_primitive_field (struct agent_expr *ax, struct axs_value *value,
 
 static int
 gen_struct_ref_recursive (struct agent_expr *ax, struct axs_value *value,
-			  const char *field, int offset, struct type *type)
+			  const char *field, LONGEST offset, struct type *type)
 {
   int i, rslt;
   int nbases = TYPE_N_BASECLASSES (type);
diff --git a/gdb/ax-general.c b/gdb/ax-general.c
--- a/gdb/ax-general.c
+++ b/gdb/ax-general.c
@@ -177,7 +177,7 @@ ax_zero_ext (struct agent_expr *x, int n)
 
 /* Append a trace_quick instruction to EXPR, to record N bytes.  */
 void
-ax_trace_quick (struct agent_expr *x, int n)
+ax_trace_quick (struct agent_expr *x, LONGEST n)
 {
   /* N must fit in a byte.  */
   if (n < 0 || n > 255)
diff --git a/gdb/ax.h b/gdb/ax.h
--- a/gdb/ax.h
+++ b/gdb/ax.h
@@ -193,7 +193,7 @@ extern void ax_ext (struct agent_expr *EXPR, int N);
 extern void ax_zero_ext (struct agent_expr *EXPR, int N);
 
 /* Append a trace_quick instruction to EXPR, to record N bytes.  */
-extern void ax_trace_quick (struct agent_expr *EXPR, int N);
+extern void ax_trace_quick (struct agent_expr *EXPR, LONGEST N);
 
 /* Append a goto op to EXPR.  OP is the actual op (must be aop_goto or
    aop_if_goto).  We assume we don't know the target offset yet,
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -2059,9 +2059,9 @@ should_be_inserted (struct bp_location *bl)
 	{
 	  fprintf_unfiltered (gdb_stdlog,
 			      "infrun: stepping past non-steppable watchpoint. "
-			      "skipping watchpoint at %s:%d\n",
+			      "skipping watchpoint at %s:%s\n",
 			      paddress (bl->gdbarch, bl->address),
-			      bl->length);
+			      plongest (bl->length));
 	}
       return 0;
     }
@@ -6822,7 +6822,7 @@ breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
 static int
 breakpoint_address_match_range (const address_space *aspace1,
 				CORE_ADDR addr1,
-				int len1, const address_space *aspace2,
+				LONGEST len1, const address_space *aspace2,
 				CORE_ADDR addr2)
 {
   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
@@ -10905,7 +10905,7 @@ can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
 		      && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
 		{
 		  CORE_ADDR vaddr = value_address (v);
-		  int len;
+		  LONGEST len;
 		  int num_regs;
 
 		  len = (target_exact_watchpoints
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -252,7 +252,7 @@ struct bp_target_info
 
   /* If this is a ranged breakpoint, then this field contains the
      length of the range that will be watched for execution.  */
-  int length;
+  LONGEST length;
 
   /* If the breakpoint lives in memory and reading that memory would
      give back the breakpoint, instead of the original contents, then
@@ -429,7 +429,7 @@ public:
   /* For hardware watchpoints, the size of the memory region being
      watched.  For hardware ranged breakpoints, the size of the
      breakpoint range.  */
-  int length = 0;
+  LONGEST length = 0;
 
   /* Type of hardware watchpoint.  */
   target_hw_bp_type watchpoint_type {};
diff --git a/gdb/c-lang.c b/gdb/c-lang.c
--- a/gdb/c-lang.c
+++ b/gdb/c-lang.c
@@ -185,7 +185,7 @@ c_printchar (int c, struct type *type, struct ui_file *stream)
 
 void
 c_printstr (struct ui_file *stream, struct type *type, 
-	    const gdb_byte *string, unsigned int length, 
+	    const gdb_byte *string, ULONGEST length,
 	    const char *user_encoding, int force_ellipses,
 	    const struct value_print_options *options)
 {
@@ -664,7 +664,7 @@ evaluate_subexp_c (struct type *expect_type, struct expression *exp,
 	  }
 	else
 	  {
-	    int i;
+	    LONGEST i;
 
 	    /* Write the terminating character.  */
 	    for (i = 0; i < TYPE_LENGTH (type); ++i)
@@ -673,7 +673,7 @@ evaluate_subexp_c (struct type *expect_type, struct expression *exp,
 	    if (satisfy_expected)
 	      {
 		LONGEST low_bound, high_bound;
-		int element_size = TYPE_LENGTH (type);
+		LONGEST element_size = TYPE_LENGTH (type);
 
 		if (get_discrete_bounds (TYPE_INDEX_TYPE (expect_type),
 					 &low_bound, &high_bound) < 0)
diff --git a/gdb/c-lang.h b/gdb/c-lang.h
--- a/gdb/c-lang.h
+++ b/gdb/c-lang.h
@@ -82,7 +82,7 @@ extern void c_print_typedef (struct type *,
 			     struct ui_file *);
 
 extern void c_val_print (struct type *,
-			 int, CORE_ADDR,
+			 LONGEST, CORE_ADDR,
 			 struct ui_file *, int,
 			 struct value *,
 			 const struct value_print_options *);
@@ -102,7 +102,7 @@ extern void c_printchar (int, struct type *, struct ui_file *);
 extern void c_printstr (struct ui_file * stream,
 			struct type *elttype,
 			const gdb_byte *string,
-			unsigned int length,
+			ULONGEST length,
 			const char *user_encoding,
 			int force_ellipses,
 			const struct value_print_options *options);
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -247,7 +247,7 @@ c_val_print_array (struct type *type, const gdb_byte *valaddr,
   if (TYPE_LENGTH (type) > 0 && TYPE_LENGTH (unresolved_elttype) > 0)
     {
       LONGEST low_bound, high_bound;
-      int eltlen, len;
+      LONGEST eltlen, len;
       struct gdbarch *gdbarch = get_type_arch (type);
       enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
       unsigned int i = 0;	/* Number of characters printed.  */
@@ -321,8 +321,8 @@ c_val_print_array (struct type *type, const gdb_byte *valaddr,
 	  if (cp_is_vtbl_ptr_type (elttype))
 	    {
 	      i = 1;
-	      fprintf_filtered (stream, _("%d vtable entries"),
-				len - 1);
+	      fprintf_filtered (stream, _("%s vtable entries"),
+				plongest (len - 1));
 	    }
 	  else
 	    {
@@ -399,7 +399,7 @@ c_val_print_struct (struct type *type, const gdb_byte *valaddr,
 	 -fvtable_thunks.  (Otherwise, look under
 	 TYPE_CODE_PTR.)  */
       struct gdbarch *gdbarch = get_type_arch (type);
-      int offset = (embedded_offset
+      LONGEST offset = (embedded_offset
 		    + TYPE_FIELD_BITPOS (type,
 					 VTBL_FNADDR_OFFSET) / 8);
       struct type *field_type = TYPE_FIELD_TYPE (type, VTBL_FNADDR_OFFSET);
@@ -498,7 +498,7 @@ c_val_print_memberptr (struct type *type, const gdb_byte *valaddr,
 
 void
 c_val_print (struct type *type,
-	     int embedded_offset, CORE_ADDR address,
+	     LONGEST embedded_offset, CORE_ADDR address,
 	     struct ui_file *stream, int recurse,
 	     struct value *original_value,
 	     const struct value_print_options *options)
diff --git a/gdb/compile/compile-c-support.c b/gdb/compile/compile-c-support.c
--- a/gdb/compile/compile-c-support.c
+++ b/gdb/compile/compile-c-support.c
@@ -307,11 +307,11 @@ generate_register_struct (struct ui_file *stream, struct gdbarch *gdbarch,
 
 	      default:
 		fprintf_unfiltered (stream,
-				    "  unsigned char %s[%d]"
+				    "  unsigned char %s[%s]"
 				    " __attribute__((__aligned__("
 				    "__BIGGEST_ALIGNMENT__)))",
 				    regname.c_str (),
-				    TYPE_LENGTH (regtype));
+				    pulongest (TYPE_LENGTH (regtype)));
 	      }
 	    fputs_unfiltered (";\n", stream);
 	  }
diff --git a/gdb/cp-abi.c b/gdb/cp-abi.c
--- a/gdb/cp-abi.c
+++ b/gdb/cp-abi.c
@@ -64,12 +64,12 @@ is_operator_name (const char *name)
   return (*current_cp_abi.is_operator_name) (name);
 }
 
-int
+LONGEST
 baseclass_offset (struct type *type, int index, const gdb_byte *valaddr,
 		  LONGEST embedded_offset, CORE_ADDR address,
 		  const struct value *val)
 {
-  int res = 0;
+  LONGEST res = 0;
 
   gdb_assert (current_cp_abi.baseclass_offset != NULL);
 
@@ -96,7 +96,7 @@ baseclass_offset (struct type *type, int index, const gdb_byte *valaddr,
 struct value *
 value_virtual_fn_field (struct value **arg1p,
 			struct fn_field *f, int j,
-			struct type *type, int offset)
+			struct type *type, LONGEST offset)
 {
   if ((current_cp_abi.virtual_fn_field) == NULL)
     return NULL;
diff --git a/gdb/cp-abi.h b/gdb/cp-abi.h
--- a/gdb/cp-abi.h
+++ b/gdb/cp-abi.h
@@ -108,7 +108,7 @@ extern struct value *value_virtual_fn_field (struct value **valuep,
 					     struct fn_field *f,
 					     int j,
 					     struct type *type,
-					     int offset);
+					     LONGEST offset);
 
 
 /* Try to find the run-time type of VALUE, using C++ run-time type
@@ -144,11 +144,11 @@ extern struct type *value_rtti_type (struct value *value,
    contents of VAL.  The result is the offset of the baseclass value
    relative to (the address of)(ARG) + OFFSET.  */
 
-extern int baseclass_offset (struct type *type,
-			     int index, const gdb_byte *valaddr,
-			     LONGEST embedded_offset,
-			     CORE_ADDR address,
-			     const struct value *val);
+extern LONGEST baseclass_offset (struct type *type,
+				 int index, const gdb_byte *valaddr,
+				 LONGEST embedded_offset,
+				 CORE_ADDR address,
+				 const struct value *val);
 
 /* Describe the target of a pointer to method.  CONTENTS is the byte
    pattern representing the pointer to method.  TYPE is the pointer to
@@ -226,12 +226,12 @@ struct cp_abi_ops
   struct value *(*virtual_fn_field) (struct value **arg1p,
 				     struct fn_field * f,
 				     int j, struct type * type,
-				     int offset);
+				     LONGEST offset);
   struct type *(*rtti_type) (struct value *v, int *full,
 			     LONGEST *top, int *using_enc);
-  int (*baseclass_offset) (struct type *type, int index,
-			   const bfd_byte *valaddr, LONGEST embedded_offset,
-			   CORE_ADDR address, const struct value *val);
+  LONGEST (*baseclass_offset) (struct type *type, int index,
+			       const bfd_byte *valaddr, LONGEST embedded_offset,
+			       CORE_ADDR address, const struct value *val);
   void (*print_method_ptr) (const gdb_byte *contents,
 			    struct type *type,
 			    struct ui_file *stream);
diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c
--- a/gdb/cp-valprint.c
+++ b/gdb/cp-valprint.c
@@ -335,7 +335,7 @@ cp_print_value_fields (struct type *type, struct type *real_type,
 		}
 	      else if (i == vptr_fieldno && type == vptr_basetype)
 		{
-		  int i_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
+		  LONGEST i_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
 		  struct type *i_type = TYPE_FIELD_TYPE (type, i);
 
 		  if (valprint_check_validity (stream, i_type, i_offset, val))
diff --git a/gdb/d-lang.h b/gdb/d-lang.h
--- a/gdb/d-lang.h
+++ b/gdb/d-lang.h
@@ -79,7 +79,7 @@ extern struct block_symbol d_lookup_nested_symbol (struct type *, const char *,
 /* Defined in d-valprint.c  */
 
 extern void d_val_print (struct type *type,
-			 int embedded_offset, CORE_ADDR address,
+			 LONGEST embedded_offset, CORE_ADDR address,
 			 struct ui_file *stream, int recurse,
 			 struct value *val,
 			 const struct value_print_options *options);
diff --git a/gdb/d-valprint.c b/gdb/d-valprint.c
--- a/gdb/d-valprint.c
+++ b/gdb/d-valprint.c
@@ -73,7 +73,7 @@ dynamic_array_type (struct type *type,
 
 /* Implements the la_val_print routine for language D.  */
 void
-d_val_print (struct type *type, int embedded_offset,
+d_val_print (struct type *type, LONGEST embedded_offset,
              CORE_ADDR address, struct ui_file *stream, int recurse,
 	     struct value *val,
              const struct value_print_options *options)
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -1817,7 +1817,7 @@ rw_pieced_value (struct value *v, struct value *from)
   for (; i < c->pieces.size () && offset < max_offset; i++)
     {
       struct dwarf_expr_piece *p = &c->pieces[i];
-      size_t this_size_bits, this_size;
+      ULONGEST this_size_bits, this_size;
 
       this_size_bits = p->size - bits_to_skip;
       if (this_size_bits > max_offset - offset)
@@ -2064,7 +2064,7 @@ write_pieced_value (struct value *to, struct value *from)
 
 static int
 check_pieced_synthetic_pointer (const struct value *value, LONGEST bit_offset,
-				int bit_length)
+				LONGEST bit_length)
 {
   struct piece_closure *c
     = (struct piece_closure *) value_computed_closure (value);
@@ -2077,7 +2077,7 @@ check_pieced_synthetic_pointer (const struct value *value, LONGEST bit_offset,
   for (i = 0; i < c->pieces.size () && bit_length > 0; i++)
     {
       struct dwarf_expr_piece *p = &c->pieces[i];
-      size_t this_size_bits = p->size;
+      ULONGEST this_size_bits = p->size;
 
       if (bit_offset > 0)
 	{
@@ -2179,8 +2179,8 @@ indirect_pieced_value (struct value *value)
     = (struct piece_closure *) value_computed_closure (value);
   struct type *type;
   struct frame_info *frame;
-  int i, bit_length;
-  LONGEST bit_offset;
+  int i;
+  LONGEST bit_length, bit_offset;
   struct dwarf_expr_piece *piece = NULL;
   LONGEST byte_offset;
   enum bfd_endian byte_order;
@@ -2197,7 +2197,7 @@ indirect_pieced_value (struct value *value)
   for (i = 0; i < c->pieces.size () && bit_length > 0; i++)
     {
       struct dwarf_expr_piece *p = &c->pieces[i];
-      size_t this_size_bits = p->size;
+      ULONGEST this_size_bits = p->size;
 
       if (bit_offset > 0)
 	{
@@ -2486,9 +2486,9 @@ if (frame != NULL) select_frame (frame);
 	case DWARF_VALUE_STACK:
 	  {
 	    struct value *value = ctx.fetch (0);
-	    size_t n = TYPE_LENGTH (value_type (value));
-	    size_t len = TYPE_LENGTH (subobj_type);
-	    size_t max = TYPE_LENGTH (type);
+	    ULONGEST n = TYPE_LENGTH (value_type (value));
+	    ULONGEST len = TYPE_LENGTH (subobj_type);
+	    ULONGEST max = TYPE_LENGTH (type);
 	    struct gdbarch *objfile_gdbarch = get_objfile_arch (objfile);
 
 	    if (subobj_byte_offset + len > max)
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -2021,11 +2021,11 @@ dwarf2_complex_location_expr_complaint (void)
 }
 
 static void
-dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
-					      int arg3)
+dwarf2_const_value_length_mismatch_complaint (const char *arg1, LONGEST arg2,
+					      LONGEST arg3)
 {
-  complaint (_("const value length mismatch for '%s', got %d, expected %d"),
-	     arg1, arg2, arg3);
+  complaint (_("const value length mismatch for '%s', got %s, expected %s"),
+	     arg1, plongest (arg2), plongest (arg3));
 }
 
 static void
@@ -14953,8 +14953,8 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
 	         object, and then subtract off the number of bits of
 	         the field itself.  The result is the bit offset of
 	         the LSB of the field.  */
-	      int anonymous_size;
-	      int bit_offset = DW_UNSND (attr);
+	      LONGEST anonymous_size;
+	      LONGEST bit_offset = DW_UNSND (attr);
 
 	      attr = dwarf2_attr (die, DW_AT_byte_size, cu);
 	      if (attr)
diff --git a/gdb/eval.c b/gdb/eval.c
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -295,7 +295,8 @@ evaluate_struct_tuple (struct value *struct_val,
   while (--nargs >= 0)
     {
       struct value *val = NULL;
-      int bitpos, bitsize;
+      LONGEST bitpos;
+      int bitsize;
       bfd_byte *addr;
 
       fieldno++;
@@ -356,7 +357,7 @@ init_array_element (struct value *array, struct value *element,
 		    enum noside noside, LONGEST low_bound, LONGEST high_bound)
 {
   LONGEST index;
-  int element_size = TYPE_LENGTH (value_type (element));
+  LONGEST element_size = TYPE_LENGTH (value_type (element));
 
   if (exp->elts[*pos].opcode == BINOP_COMMA)
     {
@@ -800,11 +801,11 @@ binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
     /* FIXME: Also mixed integral/booleans, with result an integer.  */
     {
       const struct builtin_type *builtin = builtin_type (gdbarch);
-      unsigned int promoted_len1 = TYPE_LENGTH (type1);
-      unsigned int promoted_len2 = TYPE_LENGTH (type2);
+      ULONGEST promoted_len1 = TYPE_LENGTH (type1);
+      ULONGEST promoted_len2 = TYPE_LENGTH (type2);
       int is_unsigned1 = TYPE_UNSIGNED (type1);
       int is_unsigned2 = TYPE_UNSIGNED (type2);
-      unsigned int result_len;
+      ULONGEST result_len;
       int unsigned_operation;
 
       /* Determine type length and signedness after promotion for
@@ -1546,7 +1547,7 @@ evaluate_subexp_standard (struct type *expect_type,
   struct value **argvec;
   int code;
   int ix;
-  long mem_offset;
+  LONGEST mem_offset;
   struct type **arg_types;
 
   pc = (*pos)++;
@@ -1729,7 +1730,7 @@ evaluate_subexp_standard (struct type *expect_type,
 	  struct type *range_type = TYPE_INDEX_TYPE (type);
 	  struct type *element_type = TYPE_TARGET_TYPE (type);
 	  struct value *array = allocate_value (expect_type);
-	  int element_size = TYPE_LENGTH (check_typedef (element_type));
+	  LONGEST element_size = TYPE_LENGTH (check_typedef (element_type));
 	  LONGEST low_bound, high_bound, index;
 
 	  if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
diff --git a/gdb/f-lang.c b/gdb/f-lang.c
--- a/gdb/f-lang.c
+++ b/gdb/f-lang.c
@@ -101,7 +101,7 @@ f_printchar (int c, struct type *type, struct ui_file *stream)
 
 static void
 f_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string,
-	    unsigned int length, const char *encoding, int force_ellipses,
+	    ULONGEST length, const char *encoding, int force_ellipses,
 	    const struct value_print_options *options)
 {
   const char *type_encoding = f_get_encoding (type);
diff --git a/gdb/f-lang.h b/gdb/f-lang.h
--- a/gdb/f-lang.h
+++ b/gdb/f-lang.h
@@ -28,7 +28,7 @@ extern int f_parse (struct parser_state *);
 extern void f_print_type (struct type *, const char *, struct ui_file *, int,
 			  int, const struct type_print_options *);
 
-extern void f_val_print (struct type *, int, CORE_ADDR,
+extern void f_val_print (struct type *, LONGEST, CORE_ADDR,
 			 struct ui_file *, int,
 			 struct value *,
 			 const struct value_print_options *);
diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
--- a/gdb/f-valprint.c
+++ b/gdb/f-valprint.c
@@ -36,7 +36,7 @@
 
 static void f77_get_dynamic_length_of_aggregate (struct type *);
 
-int f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2];
+LONGEST f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2];
 
 /* Array which holds offsets to be applied to get a row's elements
    for a given array.  Array also holds the size of each subarray.  */
@@ -71,8 +71,8 @@ f77_get_upperbound (struct type *type)
 static void
 f77_get_dynamic_length_of_aggregate (struct type *type)
 {
-  int upper_bound = -1;
-  int lower_bound = 1;
+  LONGEST upper_bound = -1;
+  LONGEST lower_bound = 1;
 
   /* Recursively go all the way down into a possibly multi-dimensional
      F77 array and get the bounds.  For simple arrays, this is pretty
@@ -104,7 +104,7 @@ f77_get_dynamic_length_of_aggregate (struct type *type)
 static void
 f77_print_array_1 (int nss, int ndimensions, struct type *type,
 		   const gdb_byte *valaddr,
-		   int embedded_offset, CORE_ADDR address,
+		   LONGEST embedded_offset, CORE_ADDR address,
 		   struct ui_file *stream, int recurse,
 		   const struct value *val,
 		   const struct value_print_options *options,
@@ -113,7 +113,7 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type,
   struct type *range_type = TYPE_INDEX_TYPE (check_typedef (type));
   CORE_ADDR addr = address + embedded_offset;
   LONGEST lowerbound, upperbound;
-  int i;
+  LONGEST i;
 
   get_discrete_bounds (range_type, &lowerbound, &upperbound);
 
@@ -175,7 +175,7 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type,
 
 static void
 f77_print_array (struct type *type, const gdb_byte *valaddr,
-		 int embedded_offset,
+		 LONGEST embedded_offset,
 		 CORE_ADDR address, struct ui_file *stream,
 		 int recurse,
 		 const struct value *val,
@@ -214,7 +214,7 @@ static const struct generic_val_print_decorations f_decorations =
    function; they are identical.  */
 
 void
-f_val_print (struct type *type, int embedded_offset,
+f_val_print (struct type *type, LONGEST embedded_offset,
 	     CORE_ADDR address, struct ui_file *stream, int recurse,
 	     struct value *original_value,
 	     const struct value_print_options *options)
diff --git a/gdb/findvar.c b/gdb/findvar.c
--- a/gdb/findvar.c
+++ b/gdb/findvar.c
@@ -821,7 +821,7 @@ struct value *
 default_value_from_register (struct gdbarch *gdbarch, struct type *type,
                              int regnum, struct frame_id frame_id)
 {
-  int len = TYPE_LENGTH (type);
+  LONGEST len = TYPE_LENGTH (type);
   struct value *value = allocate_value (type);
   struct frame_info *frame;
 
@@ -865,7 +865,7 @@ read_frame_register_value (struct value *value, struct frame_info *frame)
   LONGEST offset = 0;
   LONGEST reg_offset = value_offset (value);
   int regnum = VALUE_REGNUM (value);
-  int len = type_length_units (check_typedef (value_type (value)));
+  LONGEST len = type_length_units (check_typedef (value_type (value)));
 
   gdb_assert (VALUE_LVAL (value) == lval_register);
 
@@ -880,7 +880,7 @@ read_frame_register_value (struct value *value, struct frame_info *frame)
   while (len > 0)
     {
       struct value *regval = get_frame_register_value (frame, regnum);
-      int reg_len = type_length_units (value_type (regval)) - reg_offset;
+      LONGEST reg_len = type_length_units (value_type (regval)) - reg_offset;
 
       /* If the register length is larger than the number of bytes
          remaining to copy, then only copy the appropriate bytes.  */
diff --git a/gdb/frame.c b/gdb/frame.c
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -1396,7 +1396,7 @@ deprecated_frame_register_read (struct frame_info *frame, int regnum,
 
 int
 get_frame_register_bytes (struct frame_info *frame, int regnum,
-			  CORE_ADDR offset, int len, gdb_byte *myaddr,
+			  CORE_ADDR offset, LONGEST len, gdb_byte *myaddr,
 			  int *optimizedp, int *unavailablep)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -1425,7 +1425,7 @@ get_frame_register_bytes (struct frame_info *frame, int regnum,
     }
   if (len > maxsize)
     error (_("Bad debug information detected: "
-	     "Attempt to read %d bytes from registers."), len);
+	     "Attempt to read %s bytes from registers."), plongest (len));
 
   /* Copy the data.  */
   while (len > 0)
diff --git a/gdb/frame.h b/gdb/frame.h
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -620,7 +620,7 @@ extern void put_frame_register (struct frame_info *frame, int regnum,
    contents are optimized out or unavailable, set *OPTIMIZEDP,
    *UNAVAILABLEP accordingly.  */
 extern int get_frame_register_bytes (struct frame_info *frame, int regnum,
-				     CORE_ADDR offset, int len,
+				     CORE_ADDR offset, LONGEST len,
 				     gdb_byte *myaddr,
 				     int *optimizedp, int *unavailablep);
 
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -1799,7 +1799,7 @@ set_gdbarch_wchar_signed (struct gdbarch *gdbarch,
 }
 
 const struct floatformat **
-gdbarch_floatformat_for_type (struct gdbarch *gdbarch, const char *name, int length)
+gdbarch_floatformat_for_type (struct gdbarch *gdbarch, const char *name, LONGEST length)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->floatformat_for_type != NULL);
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
@@ -195,8 +195,8 @@ extern void set_gdbarch_wchar_signed (struct gdbarch *gdbarch, int wchar_signed)
    NAME, if non-NULL, is the type name, which may be used to distinguish
    different target formats of the same length. */
 
-typedef const struct floatformat ** (gdbarch_floatformat_for_type_ftype) (struct gdbarch *gdbarch, const char *name, int length);
-extern const struct floatformat ** gdbarch_floatformat_for_type (struct gdbarch *gdbarch, const char *name, int length);
+typedef const struct floatformat ** (gdbarch_floatformat_for_type_ftype) (struct gdbarch *gdbarch, const char *name, LONGEST length);
+extern const struct floatformat ** gdbarch_floatformat_for_type (struct gdbarch *gdbarch, const char *name, LONGEST length);
 extern void set_gdbarch_floatformat_for_type (struct gdbarch *gdbarch, gdbarch_floatformat_for_type_ftype *floatformat_for_type);
 
 /* For most targets, a pointer on the target and its representation as an
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
@@ -385,7 +385,7 @@ v;int;wchar_signed;;;1;-1;1
 # Returns the floating-point format to be used for values of length LENGTH.
 # NAME, if non-NULL, is the type name, which may be used to distinguish
 # different target formats of the same length.
-m;const struct floatformat **;floatformat_for_type;const char *name, int length;name, length;0;default_floatformat_for_type;;0
+m;const struct floatformat **;floatformat_for_type;const char *name, LONGEST length;name, length;0;default_floatformat_for_type;;0
 
 # For most targets, a pointer on the target and its representation as an
 # address in GDB have the same size and "look the same".  For such a
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -2906,7 +2906,7 @@ floatformat_from_type (const struct type *type)
    least as long as OBJFILE.  */
 
 struct type *
-init_type (struct objfile *objfile, enum type_code code, int bit,
+init_type (struct objfile *objfile, enum type_code code, LONGEST bit,
 	   const char *name)
 {
   struct type *type;
@@ -3360,8 +3360,8 @@ is_public_ancestor (struct type *base, struct type *dclass)
 
 static int
 is_unique_ancestor_worker (struct type *base, struct type *dclass,
-			   int *offset,
-			   const gdb_byte *valaddr, int embedded_offset,
+			   LONGEST *offset,
+			   const gdb_byte *valaddr, LONGEST embedded_offset,
 			   CORE_ADDR address, struct value *val)
 {
   int i, count = 0;
@@ -3372,7 +3372,7 @@ is_unique_ancestor_worker (struct type *base, struct type *dclass,
   for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i)
     {
       struct type *iter;
-      int this_offset;
+      LONGEST this_offset;
 
       iter = check_typedef (TYPE_BASECLASS (dclass, i));
 
@@ -3413,7 +3413,7 @@ is_unique_ancestor_worker (struct type *base, struct type *dclass,
 int
 is_unique_ancestor (struct type *base, struct value *val)
 {
-  int offset = -1;
+  LONGEST offset = -1;
 
   return is_unique_ancestor_worker (base, value_type (val), &offset,
 				    value_contents_for_printing (val),
@@ -4642,7 +4642,7 @@ recursive_dump_type (struct type *type, int spaces)
       break;
     }
   puts_filtered ("\n");
-  printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
+  printfi_filtered (spaces, "length %s\n", pulongest (TYPE_LENGTH (type)));
   if (TYPE_OBJFILE_OWNED (type))
     {
       printfi_filtered (spaces, "objfile ");
@@ -5085,7 +5085,7 @@ copy_type (const struct type *type)
 
 struct type *
 arch_type (struct gdbarch *gdbarch,
-	   enum type_code code, int bit, const char *name)
+	   enum type_code code, LONGEST bit, const char *name)
 {
   struct type *type;
 
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -862,7 +862,7 @@ struct type
      type_length_units function should be used in order to get the length
      expressed in target addressable memory units.  */
 
-  unsigned int length;
+  ULONGEST length;
 
   /* * Core type, shared by a group of qualified types.  */
 
@@ -1783,7 +1783,7 @@ extern unsigned int type_length_units (struct type *type);
 
 /* * Helper function to construct objfile-owned types.  */
 
-extern struct type *init_type (struct objfile *, enum type_code, int,
+extern struct type *init_type (struct objfile *, enum type_code, LONGEST,
 			       const char *);
 extern struct type *init_integer_type (struct objfile *, int, int,
 				       const char *);
@@ -1800,7 +1800,7 @@ extern struct type *init_pointer_type (struct objfile *, int, const char *,
 				       struct type *);
 
 /* Helper functions to construct architecture-owned types.  */
-extern struct type *arch_type (struct gdbarch *, enum type_code, int,
+extern struct type *arch_type (struct gdbarch *, enum type_code, LONGEST,
 			       const char *);
 extern struct type *arch_integer_type (struct gdbarch *, int, int,
 				       const char *);
diff --git a/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c
--- a/gdb/gnu-v2-abi.c
+++ b/gdb/gnu-v2-abi.c
@@ -82,7 +82,7 @@ gnuv2_is_operator_name (const char *name)
    TYPE is the type in which F is located.  */
 static struct value *
 gnuv2_virtual_fn_field (struct value **arg1p, struct fn_field * f, int j,
-			struct type * type, int offset)
+			struct type *type, LONGEST offset)
 {
   struct value *arg1 = *arg1p;
   struct type *type1 = check_typedef (value_type (arg1));
@@ -338,7 +338,7 @@ vb_match (struct type *type, int index, struct type *basetype)
    target).  The result is the offset of the baseclass value relative
    to (the address of)(ARG) + OFFSET.  */
 
-static int
+static LONGEST
 gnuv2_baseclass_offset (struct type *type, int index,
 			const bfd_byte *valaddr, LONGEST embedded_offset,
 			CORE_ADDR address, const struct value *val)
@@ -358,8 +358,7 @@ gnuv2_baseclass_offset (struct type *type, int index,
 	  if (vb_match (type, i, basetype))
 	    {
 	      struct type *field_type;
-	      LONGEST field_offset;
-	      int field_length;
+	      LONGEST field_offset, field_length;
 	      CORE_ADDR addr;
 
 	      field_type = check_typedef (TYPE_FIELD_TYPE (type, i));
@@ -383,7 +382,7 @@ gnuv2_baseclass_offset (struct type *type, int index,
 	  /* Don't go through baseclass_offset, as that wraps
 	     exceptions, thus, inner exceptions would be wrapped more
 	     than once.  */
-	  int boffset =
+	  LONGEST boffset =
 	    gnuv2_baseclass_offset (type, i, valaddr,
 				    embedded_offset, address, val);
 
diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c
--- a/gdb/gnu-v3-abi.c
+++ b/gdb/gnu-v3-abi.c
@@ -109,7 +109,7 @@ build_gdb_vtable_type (struct gdbarch *arch)
 {
   struct type *t;
   struct field *field_list, *field;
-  int offset;
+  LONGEST offset;
 
   struct type *void_ptr_type
     = builtin_type (arch)->builtin_data_ptr;
@@ -185,7 +185,7 @@ vtable_ptrdiff_type (struct gdbarch *gdbarch)
 /* Return the offset from the start of the imaginary `struct
    gdb_gnu_v3_abi_vtable' object to the vtable's "address point"
    (i.e., where objects' virtual table pointers point).  */
-static int
+static LONGEST
 vtable_address_point_offset (struct gdbarch *gdbarch)
 {
   struct type *vtable_type
@@ -409,7 +409,7 @@ gnuv3_get_virtual_fn (struct gdbarch *gdbarch, struct value *container,
 static struct value *
 gnuv3_virtual_fn_field (struct value **value_p,
                         struct fn_field *f, int j,
-			struct type *vfn_base, int offset)
+			struct type *vfn_base, LONGEST offset)
 {
   struct type *values_type = check_typedef (value_type (*value_p));
   struct gdbarch *gdbarch;
@@ -439,7 +439,7 @@ gnuv3_virtual_fn_field (struct value **value_p,
 
    -1 is returned on error.  */
 
-static int
+static LONGEST
 gnuv3_baseclass_offset (struct type *type, int index,
 			const bfd_byte *valaddr, LONGEST embedded_offset,
 			CORE_ADDR address, const struct value *val)
@@ -448,7 +448,7 @@ gnuv3_baseclass_offset (struct type *type, int index,
   struct type *ptr_type;
   struct value *vtable;
   struct value *vbase_array;
-  long int cur_base_offset, base_offset;
+  LONGEST cur_base_offset, base_offset;
 
   /* Determine architecture.  */
   gdbarch = get_type_arch (type);
@@ -471,7 +471,7 @@ gnuv3_baseclass_offset (struct type *type, int index,
   cur_base_offset = cur_base_offset + vtable_address_point_offset (gdbarch);
   if ((- cur_base_offset) % TYPE_LENGTH (ptr_type) != 0)
     error (_("Misaligned vbase offset."));
-  cur_base_offset = cur_base_offset / ((int) TYPE_LENGTH (ptr_type));
+  cur_base_offset = cur_base_offset / ((LONGEST) TYPE_LENGTH (ptr_type));
 
   vtable = gnuv3_get_vtable (gdbarch, type, address + embedded_offset);
   gdb_assert (vtable != NULL);
@@ -515,7 +515,7 @@ gnuv3_find_method_in (struct type *domain, CORE_ADDR voffset,
      we're out of luck.  */
   for (i = 0; i < TYPE_N_BASECLASSES (domain); i++)
     {
-      int pos;
+      LONGEST pos;
       struct type *basetype;
 
       if (BASETYPE_VIA_VIRTUAL (domain, i))
diff --git a/gdb/go-lang.h b/gdb/go-lang.h
--- a/gdb/go-lang.h
+++ b/gdb/go-lang.h
@@ -83,7 +83,7 @@ extern void go_print_type (struct type *type, const char *varstring,
 /* Defined in go-valprint.c.  */
 
 extern void go_val_print (struct type *type,
-			  int embedded_offset, CORE_ADDR address,
+			  LONGEST embedded_offset, CORE_ADDR address,
 			  struct ui_file *stream, int recurse,
 			  struct value *val,
 			  const struct value_print_options *options);
diff --git a/gdb/go-valprint.c b/gdb/go-valprint.c
--- a/gdb/go-valprint.c
+++ b/gdb/go-valprint.c
@@ -86,7 +86,7 @@ print_go_string (struct type *type,
 /* Implements the la_val_print routine for language Go.  */
 
 void
-go_val_print (struct type *type, int embedded_offset,
+go_val_print (struct type *type, LONGEST embedded_offset,
 	      CORE_ADDR address, struct ui_file *stream, int recurse,
 	      struct value *val,
 	      const struct value_print_options *options)
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -8155,7 +8155,7 @@ i386_fast_tracepoint_valid_at (struct gdbarch *gdbarch, CORE_ADDR addr,
 
 const struct floatformat **
 i386_floatformat_for_type (struct gdbarch *gdbarch,
-			   const char *name, int len)
+			   const char *name, LONGEST len)
 {
   if (len == 128 && name)
     if (strcmp (name, "__float128") == 0
diff --git a/gdb/language.c b/gdb/language.c
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -766,7 +766,7 @@ unk_lang_printchar (int c, struct type *type, struct ui_file *stream)
 
 static void
 unk_lang_printstr (struct ui_file *stream, struct type *type,
-		   const gdb_byte *string, unsigned int length,
+		   const gdb_byte *string, ULONGEST length,
 		   const char *encoding, int force_ellipses,
 		   const struct value_print_options *options)
 {
@@ -785,7 +785,7 @@ unk_lang_print_type (struct type *type, const char *varstring,
 
 static void
 unk_lang_val_print (struct type *type,
-		    int embedded_offset, CORE_ADDR address,
+		    LONGEST embedded_offset, CORE_ADDR address,
 		    struct ui_file *stream, int recurse,
 		    struct value *val,
 		    const struct value_print_options *options)
diff --git a/gdb/language.h b/gdb/language.h
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -184,7 +184,7 @@ struct language_defn
 			  struct ui_file * stream);
 
     void (*la_printstr) (struct ui_file * stream, struct type *elttype,
-			 const gdb_byte *string, unsigned int length,
+			 const gdb_byte *string, ULONGEST length,
 			 const char *encoding, int force_ellipses,
 			 const struct value_print_options *);
 
@@ -222,7 +222,7 @@ struct language_defn
        printing.  */
 
     void (*la_val_print) (struct type *type,
-			  int embedded_offset, CORE_ADDR address,
+			  LONGEST embedded_offset, CORE_ADDR address,
 			  struct ui_file *stream, int recurse,
 			  struct value *val,
 			  const struct value_print_options *options);
diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c
--- a/gdb/m2-lang.c
+++ b/gdb/m2-lang.c
@@ -103,10 +103,10 @@ m2_printchar (int c, struct type *type, struct ui_file *stream)
 
 static void
 m2_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string,
-	     unsigned int length, const char *encoding, int force_ellipses,
+	     ULONGEST length, const char *encoding, int force_ellipses,
 	     const struct value_print_options *options)
 {
-  unsigned int i;
+  ULONGEST i;
   unsigned int things_printed = 0;
   int in_quotes = 0;
   int need_comma = 0;
@@ -121,9 +121,9 @@ m2_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string,
     {
       /* Position of the character we are examining
          to see whether it is repeated.  */
-      unsigned int rep1;
+      ULONGEST rep1;
       /* Number of repetitions we have detected so far.  */
-      unsigned int reps;
+      ULONGEST reps;
 
       QUIT;
 
@@ -149,7 +149,7 @@ m2_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string,
 	      in_quotes = 0;
 	    }
 	  m2_printchar (string[i], type, stream);
-	  fprintf_filtered (stream, " <repeats %u times>", reps);
+	  fprintf_filtered (stream, " <repeats %s times>", pulongest (reps));
 	  i = rep1 - 1;
 	  things_printed += options->repeat_count_threshold;
 	  need_comma = 1;
diff --git a/gdb/m2-lang.h b/gdb/m2-lang.h
--- a/gdb/m2-lang.h
+++ b/gdb/m2-lang.h
@@ -32,7 +32,7 @@ extern void m2_print_typedef (struct type *, struct symbol *,
 extern int m2_is_long_set (struct type *type);
 extern int m2_is_unbounded_array (struct type *type);
 
-extern void m2_val_print (struct type *, int, CORE_ADDR,
+extern void m2_val_print (struct type *, LONGEST, CORE_ADDR,
 			  struct ui_file *, int,
 			  struct value *,
 			  const struct value_print_options *);
diff --git a/gdb/m2-typeprint.c b/gdb/m2-typeprint.c
--- a/gdb/m2-typeprint.c
+++ b/gdb/m2-typeprint.c
@@ -234,9 +234,12 @@ static void m2_array (struct type *type, struct ui_file *stream,
 	  m2_print_bounds (TYPE_INDEX_TYPE (type), stream, show, -1, 1);
 	}
       else
-	fprintf_filtered (stream, "%d",
-			  (TYPE_LENGTH (type)
-			   / TYPE_LENGTH (TYPE_TARGET_TYPE (type))));
+        {
+	  ULONGEST val = (TYPE_LENGTH (type)
+			  / TYPE_LENGTH (TYPE_TARGET_TYPE (type)));
+
+	  fprintf_filtered (stream, "%s", pulongest (val));
+	}
     }
   fprintf_filtered (stream, "] OF ");
   m2_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level, flags);
diff --git a/gdb/m2-valprint.c b/gdb/m2-valprint.c
--- a/gdb/m2-valprint.c
+++ b/gdb/m2-valprint.c
@@ -35,7 +35,7 @@ static int print_unpacked_pointer (struct type *type,
 				   struct ui_file *stream);
 static void
 m2_print_array_contents (struct type *type, const gdb_byte *valaddr,
-			 int embedded_offset, CORE_ADDR address,
+			 LONGEST embedded_offset, CORE_ADDR address,
 			 struct ui_file *stream, int recurse,
 			 struct value *val,
 			 const struct value_print_options *options,
@@ -67,7 +67,7 @@ get_long_set_bounds (struct type *type, LONGEST *low, LONGEST *high)
 
 static void
 m2_print_long_set (struct type *type, const gdb_byte *valaddr,
-		   int embedded_offset, CORE_ADDR address,
+		   LONGEST embedded_offset, CORE_ADDR address,
 		   struct ui_file *stream)
 {
   int empty_set        = 1;
@@ -158,7 +158,7 @@ m2_print_long_set (struct type *type, const gdb_byte *valaddr,
 
 static void
 m2_print_unbounded_array (struct type *type, const gdb_byte *valaddr,
-			  int embedded_offset, CORE_ADDR address,
+			  LONGEST embedded_offset, CORE_ADDR address,
 			  struct ui_file *stream, int recurse,
 			  const struct value_print_options *options)
 {
@@ -260,7 +260,7 @@ print_variable_at_address (struct type *type,
 
 static void
 m2_print_array_contents (struct type *type, const gdb_byte *valaddr,
-			 int embedded_offset, CORE_ADDR address,
+			 LONGEST embedded_offset, CORE_ADDR address,
 			 struct ui_file *stream, int recurse,
 			 struct value *val,
 			 const struct value_print_options *options,
@@ -308,12 +308,12 @@ static const struct generic_val_print_decorations m2_decorations =
    function; they are identical.  */
 
 void
-m2_val_print (struct type *type, int embedded_offset,
+m2_val_print (struct type *type, LONGEST embedded_offset,
 	      CORE_ADDR address, struct ui_file *stream, int recurse,
 	      struct value *original_value,
 	      const struct value_print_options *options)
 {
-  unsigned len;
+  ULONGEST len;
   struct type *elttype;
   CORE_ADDR addr;
   const gdb_byte *valaddr = value_contents_for_printing (original_value);
@@ -339,7 +339,7 @@ m2_val_print (struct type *type, int embedded_offset,
 	         elements up to it.  */
 	      if (options->stop_print_at_null)
 		{
-		  unsigned int temp_len;
+		  ULONGEST temp_len;
 
 		  /* Look for a NULL char.  */
 		  for (temp_len = 0;
@@ -415,7 +415,7 @@ m2_val_print (struct type *type, int embedded_offset,
 	{
 	  struct type *range = elttype;
 	  LONGEST low_bound, high_bound;
-	  int i;
+	  LONGEST i;
 	  int need_comma = 0;
 
 	  fputs_filtered ("{", stream);
diff --git a/gdb/memrange.c b/gdb/memrange.c
--- a/gdb/memrange.c
+++ b/gdb/memrange.c
@@ -22,8 +22,8 @@
 #include <algorithm>
 
 int
-mem_ranges_overlap (CORE_ADDR start1, int len1,
-		    CORE_ADDR start2, int len2)
+mem_ranges_overlap (CORE_ADDR start1, LONGEST len1,
+		    CORE_ADDR start2, LONGEST len2)
 {
   ULONGEST h, l;
 
diff --git a/gdb/memrange.h b/gdb/memrange.h
--- a/gdb/memrange.h
+++ b/gdb/memrange.h
@@ -28,7 +28,7 @@ struct mem_range
 {
   mem_range () = default;
 
-  mem_range (CORE_ADDR start_, int length_)
+  mem_range (CORE_ADDR start_, LONGEST length_)
   : start (start_), length (length_)
   {}
 
@@ -47,14 +47,14 @@ struct mem_range
   CORE_ADDR start;
 
   /* Length of the range.  */
-  int length;
+  LONGEST length;
 };
 
 /* Returns true if the ranges defined by [start1, start1+len1) and
    [start2, start2+len2) overlap.  */
 
-extern int mem_ranges_overlap (CORE_ADDR start1, int len1,
-			       CORE_ADDR start2, int len2);
+extern int mem_ranges_overlap (CORE_ADDR start1, LONGEST len1,
+			       CORE_ADDR start2, LONGEST len2);
 
 /* Returns true if ADDR is in RANGE.  */
 
diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
--- a/gdb/mips-linux-nat.c
+++ b/gdb/mips-linux-nat.c
@@ -614,7 +614,7 @@ mips_linux_nat_target::stopped_data_address (CORE_ADDR *paddr)
    the specified region can be covered by the watch registers.  */
 
 int
-mips_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
+mips_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
 {
   struct pt_watch_regs dummy_regs;
   int i;
diff --git a/gdb/nat/x86-dregs.c b/gdb/nat/x86-dregs.c
--- a/gdb/nat/x86-dregs.c
+++ b/gdb/nat/x86-dregs.c
@@ -380,7 +380,7 @@ x86_remove_aligned_watchpoint (struct x86_debug_reg_state *state,
 
 static int
 x86_handle_nonaligned_watchpoint (struct x86_debug_reg_state *state,
-				  x86_wp_op_t what, CORE_ADDR addr, int len,
+				  x86_wp_op_t what, CORE_ADDR addr, LONGEST len,
 				  enum target_hw_bp_type type)
 {
   int retval = 0;
@@ -548,7 +548,7 @@ x86_dr_remove_watchpoint (struct x86_debug_reg_state *state,
 
 int
 x86_dr_region_ok_for_watchpoint (struct x86_debug_reg_state *state,
-				 CORE_ADDR addr, int len)
+				 CORE_ADDR addr, LONGEST len)
 {
   int nregs;
 
diff --git a/gdb/nat/x86-dregs.h b/gdb/nat/x86-dregs.h
--- a/gdb/nat/x86-dregs.h
+++ b/gdb/nat/x86-dregs.h
@@ -116,7 +116,7 @@ extern int x86_dr_remove_watchpoint (struct x86_debug_reg_state *state,
 /* Return non-zero if we can watch a memory region that starts at
    address ADDR and whose length is LEN bytes.  */
 extern int x86_dr_region_ok_for_watchpoint (struct x86_debug_reg_state *state,
-					    CORE_ADDR addr, int len);
+					    CORE_ADDR addr, LONGEST len);
 
 /* If the inferior has some break/watchpoint that triggered, set the
    address associated with that break/watchpoint and return true.
diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c
--- a/gdb/opencl-lang.c
+++ b/gdb/opencl-lang.c
@@ -76,11 +76,11 @@ builtin_opencl_type (struct gdbarch *gdbarch)
 
 static struct type *
 lookup_opencl_vector_type (struct gdbarch *gdbarch, enum type_code code,
-			   unsigned int el_length, unsigned int flag_unsigned,
+			   ULONGEST el_length, unsigned int flag_unsigned,
 			   int n)
 {
   int i;
-  unsigned int length;
+  ULONGEST length;
   struct type *type = NULL;
   struct type **types = builtin_opencl_type (gdbarch);
 
@@ -172,7 +172,7 @@ lval_func_read (struct value *v)
   struct type *eltype = TYPE_TARGET_TYPE (check_typedef (value_type (c->val)));
   LONGEST offset = value_offset (v);
   LONGEST elsize = TYPE_LENGTH (eltype);
-  int n, i, j = 0;
+  LONGEST n, i, j = 0;
   LONGEST lowb = 0;
   LONGEST highb = 0;
 
@@ -201,7 +201,7 @@ lval_func_write (struct value *v, struct value *fromval)
   struct type *eltype = TYPE_TARGET_TYPE (check_typedef (value_type (c->val)));
   LONGEST offset = value_offset (v);
   LONGEST elsize = TYPE_LENGTH (eltype);
-  int n, i, j = 0;
+  LONGEST n, i, j = 0;
   LONGEST lowb = 0;
   LONGEST highb = 0;
 
@@ -241,17 +241,17 @@ lval_func_write (struct value *v, struct value *fromval)
 
 static int
 lval_func_check_synthetic_pointer (const struct value *v,
-				   LONGEST offset, int length)
+				   LONGEST offset, LONGEST length)
 {
   struct lval_closure *c = (struct lval_closure *) value_computed_closure (v);
   /* Size of the target type in bits.  */
-  int elsize =
+  LONGEST elsize =
       TYPE_LENGTH (TYPE_TARGET_TYPE (check_typedef (value_type (c->val)))) * 8;
-  int startrest = offset % elsize;
-  int start = offset / elsize;
-  int endrest = (offset + length) % elsize;
-  int end = (offset + length) / elsize;
-  int i;
+  LONGEST startrest = offset % elsize;
+  LONGEST start = offset / elsize;
+  LONGEST endrest = (offset + length) % elsize;
+  LONGEST end = (offset + length) / elsize;
+  LONGEST i;
 
   if (endrest)
     end++;
@@ -261,8 +261,8 @@ lval_func_check_synthetic_pointer (const struct value *v,
 
   for (i = start; i < end; i++)
     {
-      int comp_offset = (i == start) ? startrest : 0;
-      int comp_length = (i == end) ? endrest : elsize;
+      LONGEST comp_offset = (i == start) ? startrest : 0;
+      LONGEST comp_length = (i == end) ? endrest : elsize;
 
       if (!value_bits_synthetic_pointer (c->val,
 					 c->indices[i] * elsize + comp_offset,
diff --git a/gdb/p-lang.c b/gdb/p-lang.c
--- a/gdb/p-lang.c
+++ b/gdb/p-lang.c
@@ -93,8 +93,8 @@ pascal_main_name (void)
    are not multiple of TARGET_CHAR_BIT then the results are wrong
    but this does not happen for Free Pascal nor for GPC.  */
 int
-is_pascal_string_type (struct type *type,int *length_pos,
-                       int *length_size, int *string_pos,
+is_pascal_string_type (struct type *type, LONGEST *length_pos,
+		       LONGEST *length_size, LONGEST *string_pos,
 		       struct type **char_type,
 		       const char **arrayname)
 {
@@ -214,12 +214,12 @@ pascal_printchar (int c, struct type *type, struct ui_file *stream)
 
 void
 pascal_printstr (struct ui_file *stream, struct type *type,
-		 const gdb_byte *string, unsigned int length,
+		 const gdb_byte *string, ULONGEST length,
 		 const char *encoding, int force_ellipses,
 		 const struct value_print_options *options)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
-  unsigned int i;
+  ULONGEST i;
   unsigned int things_printed = 0;
   int in_quotes = 0;
   int need_comma = 0;
@@ -247,9 +247,9 @@ pascal_printstr (struct ui_file *stream, struct type *type,
     {
       /* Position of the character we are examining
          to see whether it is repeated.  */
-      unsigned int rep1;
+      ULONGEST rep1;
       /* Number of repetitions we have detected so far.  */
-      unsigned int reps;
+      ULONGEST reps;
       unsigned long int current_char;
 
       QUIT;
@@ -281,7 +281,7 @@ pascal_printstr (struct ui_file *stream, struct type *type,
 	      in_quotes = 0;
 	    }
 	  pascal_printchar (current_char, type, stream);
-	  fprintf_filtered (stream, " <repeats %u times>", reps);
+	  fprintf_filtered (stream, " <repeats %s times>", pulongest (reps));
 	  i = rep1 - 1;
 	  things_printed += options->repeat_count_threshold;
 	  need_comma = 1;
diff --git a/gdb/p-lang.h b/gdb/p-lang.h
--- a/gdb/p-lang.h
+++ b/gdb/p-lang.h
@@ -34,7 +34,7 @@ extern void pascal_print_type (struct type *, const char *, struct ui_file *,
 extern void pascal_print_typedef (struct type *, struct symbol *,
 				  struct ui_file *);
 
-extern void pascal_val_print (struct type *, int,
+extern void pascal_val_print (struct type *, LONGEST,
 			      CORE_ADDR, struct ui_file *, int,
 			      struct value *,
 			      const struct value_print_options *);
@@ -48,13 +48,13 @@ extern void pascal_type_print_method_args (const char *, const char *,
 /* These are in p-lang.c: */
 
 extern int
-  is_pascal_string_type (struct type *, int *, int *, int *,
+  is_pascal_string_type (struct type *, LONGEST *, LONGEST *, LONGEST *,
 			 struct type **, const char **);
 
 extern void pascal_printchar (int, struct type *, struct ui_file *);
 
 extern void pascal_printstr (struct ui_file *, struct type *, const gdb_byte *,
-			     unsigned int, const char *, int,
+			     ULONGEST, const char *, int,
 			     const struct value_print_options *);
 
 extern struct type **const pascal_builtin_types[];
diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
--- a/gdb/p-valprint.c
+++ b/gdb/p-valprint.c
@@ -60,7 +60,7 @@ static const struct generic_val_print_decorations p_decorations =
 
 void
 pascal_val_print (struct type *type,
-		  int embedded_offset, CORE_ADDR address,
+		  LONGEST embedded_offset, CORE_ADDR address,
 		  struct ui_file *stream, int recurse,
 		  struct value *original_value,
 		  const struct value_print_options *options)
@@ -71,8 +71,8 @@ pascal_val_print (struct type *type,
   unsigned len;
   LONGEST low_bound, high_bound;
   struct type *elttype;
-  unsigned eltlen;
-  int length_pos, length_size, string_pos;
+  ULONGEST eltlen;
+  LONGEST length_pos, length_size, string_pos;
   struct type *char_type;
   CORE_ADDR addr;
   int want_space = 0;
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
--- a/gdb/ppc-linux-nat.c
+++ b/gdb/ppc-linux-nat.c
@@ -1308,7 +1308,7 @@ ppc_linux_nat_target::can_use_hw_breakpoint (enum bptype type, int cnt, int ot)
 }
 
 int
-ppc_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
+ppc_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
 {
   /* Handle sub-8-byte quantities.  */
   if (len <= 0)
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -1706,7 +1706,7 @@ ppc_init_linux_record_tdep (struct linux_record_tdep *record_tdep,
 
 const struct floatformat **
 ppc_floatformat_for_type (struct gdbarch *gdbarch,
-                          const char *name, int len)
+                          const char *name, LONGEST len)
 {
   if (len == 128 && name)
     {
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -275,7 +275,7 @@ print_formatted (struct value *val, int size,
 		 struct ui_file *stream)
 {
   struct type *type = check_typedef (value_type (val));
-  int len = TYPE_LENGTH (type);
+  LONGEST len = TYPE_LENGTH (type);
 
   if (VALUE_LVAL (val) == lval_memory)
     next_address = value_address (val) + len;
@@ -351,7 +351,7 @@ print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
 			int size, struct ui_file *stream)
 {
   struct gdbarch *gdbarch = get_type_arch (type);
-  unsigned int len = TYPE_LENGTH (type);
+  ULONGEST len = TYPE_LENGTH (type);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
 
   /* String printing should go through val_print_scalar_formatted.  */
diff --git a/gdb/procfs.c b/gdb/procfs.c
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -3358,7 +3358,7 @@ procfs_target::remove_watchpoint (CORE_ADDR addr, int len,
 }
 
 int
-procfs_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
+procfs_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
 {
   /* The man page for proc(4) on Solaris 2.6 and up says that the
      system can support "thousands" of hardware watchpoints, but gives
diff --git a/gdb/regcache.c b/gdb/regcache.c
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -795,7 +795,7 @@ regcache::cooked_write (int regnum, const gdb_byte *buf)
 /* See regcache.h.  */
 
 enum register_status
-readable_regcache::read_part (int regnum, int offset, int len,
+readable_regcache::read_part (int regnum, LONGEST offset, LONGEST len,
 			      gdb_byte *out, bool is_raw)
 {
   int reg_size = register_size (arch (), regnum);
@@ -862,7 +862,7 @@ reg_buffer::raw_collect_part (int regnum, int offset, int len,
 /* See regcache.h.  */
 
 enum register_status
-regcache::write_part (int regnum, int offset, int len,
+regcache::write_part (int regnum, LONGEST offset, LONGEST len,
 		      const gdb_byte *in, bool is_raw)
 {
   int reg_size = register_size (arch (), regnum);
@@ -933,7 +933,7 @@ reg_buffer::raw_supply_part (int regnum, int offset, int len,
 }
 
 enum register_status
-readable_regcache::raw_read_part (int regnum, int offset, int len,
+readable_regcache::raw_read_part (int regnum, int offset, LONGEST len,
 				  gdb_byte *buf)
 {
   assert_regnum (regnum);
@@ -943,7 +943,7 @@ readable_regcache::raw_read_part (int regnum, int offset, int len,
 /* See regcache.h.  */
 
 void
-regcache::raw_write_part (int regnum, int offset, int len,
+regcache::raw_write_part (int regnum, int offset, LONGEST len,
 			  const gdb_byte *buf)
 {
   assert_regnum (regnum);
@@ -953,7 +953,7 @@ regcache::raw_write_part (int regnum, int offset, int len,
 /* See regcache.h.  */
 
 enum register_status
-readable_regcache::cooked_read_part (int regnum, int offset, int len,
+readable_regcache::cooked_read_part (int regnum, LONGEST offset, LONGEST len,
 				     gdb_byte *buf)
 {
   gdb_assert (regnum >= 0 && regnum < m_descr->nr_cooked_registers);
@@ -963,7 +963,7 @@ readable_regcache::cooked_read_part (int regnum, int offset, int len,
 /* See regcache.h.  */
 
 void
-regcache::cooked_write_part (int regnum, int offset, int len,
+regcache::cooked_write_part (int regnum, LONGEST offset, LONGEST len,
 			     const gdb_byte *buf)
 {
   gdb_assert (regnum >= 0 && regnum < m_descr->nr_cooked_registers);
diff --git a/gdb/regcache.h b/gdb/regcache.h
--- a/gdb/regcache.h
+++ b/gdb/regcache.h
@@ -256,8 +256,8 @@ public:
   enum register_status raw_read (int regnum, T *val);
 
   /* Partial transfer of raw registers.  Return the status of the register.  */
-  enum register_status raw_read_part (int regnum, int offset, int len,
-				      gdb_byte *buf);
+  enum register_status raw_read_part (int regnum, int offset,
+				      LONGEST len, gdb_byte *buf);
 
   /* Make certain that the register REGNUM is up-to-date.  */
   virtual void raw_update (int regnum) = 0;
@@ -269,8 +269,8 @@ public:
   enum register_status cooked_read (int regnum, T *val);
 
   /* Partial transfer of a cooked register.  */
-  enum register_status cooked_read_part (int regnum, int offset, int len,
-					 gdb_byte *buf);
+  enum register_status cooked_read_part (int regnum, LONGEST offset,
+					 LONGEST len, gdb_byte *buf);
 
   /* Read register REGNUM from the regcache and return a new value.  This
      will call mark_value_bytes_unavailable as appropriate.  */
@@ -280,7 +280,7 @@ protected:
 
   /* Perform a partial register transfer using a read, modify, write
      operation.  Will fail if register is currently invalid.  */
-  enum register_status read_part (int regnum, int offset, int len,
+  enum register_status read_part (int regnum, LONGEST offset, LONGEST len,
 				  gdb_byte *out, bool is_raw);
 };
 
@@ -338,11 +338,12 @@ public:
 
   /* Partial transfer of raw registers.  Perform read, modify, write style
      operations.  */
-  void raw_write_part (int regnum, int offset, int len, const gdb_byte *buf);
+  void raw_write_part (int regnum, int offset, LONGEST len,
+		       const gdb_byte *buf);
 
   /* Partial transfer of a cooked register.  Perform read, modify, write style
      operations.  */
-  void cooked_write_part (int regnum, int offset, int len,
+  void cooked_write_part (int regnum, LONGEST offset, LONGEST len,
 			  const gdb_byte *buf);
 
   void supply_regset (const struct regset *regset,
@@ -393,7 +394,7 @@ private:
 
   /* Perform a partial register transfer using a read, modify, write
      operation.  */
-  enum register_status write_part (int regnum, int offset, int len,
+  enum register_status write_part (int regnum, LONGEST offset, LONGEST len,
 				   const gdb_byte *in, bool is_raw);
 
   /* The address space of this register cache (for registers where it
diff --git a/gdb/remote.c b/gdb/remote.c
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -462,7 +462,7 @@ public:
 
   int remove_hw_breakpoint (struct gdbarch *, struct bp_target_info *) override;
 
-  int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
+  int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST) override;
 
   int insert_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
 			 struct expression *) override;
@@ -10413,7 +10413,7 @@ int remote_hw_watchpoint_length_limit = -1;
 int remote_hw_breakpoint_limit = -1;
 
 int
-remote_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
+remote_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
 {
   if (remote_hw_watchpoint_length_limit == 0)
     return 0;
diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
--- a/gdb/rust-lang.c
+++ b/gdb/rust-lang.c
@@ -288,7 +288,7 @@ rust_printchar (int c, struct type *type, struct ui_file *stream)
 
 static void
 rust_printstr (struct ui_file *stream, struct type *type,
-	       const gdb_byte *string, unsigned int length,
+	       const gdb_byte *string, ULONGEST length,
 	       const char *user_encoding, int force_ellipses,
 	       const struct value_print_options *options)
 {
@@ -497,7 +497,7 @@ static const struct generic_val_print_decorations rust_decorations =
 /* la_val_print implementation for Rust.  */
 
 static void
-rust_val_print (struct type *type, int embedded_offset,
+rust_val_print (struct type *type, LONGEST embedded_offset,
 		CORE_ADDR address, struct ui_file *stream, int recurse,
 		struct value *val,
 		const struct value_print_options *options)
diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c
--- a/gdb/s390-linux-nat.c
+++ b/gdb/s390-linux-nat.c
@@ -952,7 +952,8 @@ s390_linux_nat_target::remove_hw_breakpoint (struct gdbarch *gdbarch,
 }
 
 int
-s390_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int cnt)
+s390_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr,
+						    LONGEST cnt)
 {
   return 1;
 }
diff --git a/gdb/spu-multiarch.c b/gdb/spu-multiarch.c
--- a/gdb/spu-multiarch.c
+++ b/gdb/spu-multiarch.c
@@ -66,7 +66,7 @@ struct spu_multiarch_target final : public target_ops
 		     const gdb_byte *pattern, ULONGEST pattern_len,
 		     CORE_ADDR *found_addrp) override;
 
-  int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
+  int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST) override;
 
   struct gdbarch *thread_architecture (ptid_t) override;
 };
@@ -163,7 +163,7 @@ spu_multiarch_target::thread_architecture (ptid_t ptid)
 /* Override the to_region_ok_for_hw_watchpoint routine.  */
 
 int
-spu_multiarch_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
+spu_multiarch_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
 {
   /* We cannot watch SPU local store.  */
   if (SPUADDR_SPU (addr) != -1)
diff --git a/gdb/stack.c b/gdb/stack.c
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -190,7 +190,7 @@ print_stack_frame (struct frame_info *frame, int print_level,
    argument (not just the first nameless argument).  */
 
 static void
-print_frame_nameless_args (struct frame_info *frame, long start, int num,
+print_frame_nameless_args (struct frame_info *frame, LONGEST start, int num,
 			   int first, struct ui_file *stream)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -540,7 +540,7 @@ print_frame_args (struct symbol *func, struct frame_info *frame,
   /* Offset of next stack argument beyond the one we have seen that is
      at the highest offset, or -1 if we haven't come to a stack
      argument yet.  */
-  long highest_offset = -1;
+  LONGEST highest_offset = -1;
   /* Number of ints of arguments that we have printed so far.  */
   int args_printed = 0;
   /* True if we should print arguments, false otherwise.  */
@@ -569,8 +569,8 @@ print_frame_args (struct symbol *func, struct frame_info *frame,
 	    case LOC_ARG:
 	    case LOC_REF_ARG:
 	      {
-		long current_offset = SYMBOL_VALUE (sym);
-		int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
+		LONGEST current_offset = SYMBOL_VALUE (sym);
+		LONGEST arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
 
 		/* Compute address of next argument by adding the size of
 		   this argument and rounding to an int boundary.  */
@@ -705,7 +705,7 @@ print_frame_args (struct symbol *func, struct frame_info *frame,
      enough about the stack to find them.  */
   if (num != -1)
     {
-      long start;
+      LONGEST start;
 
       if (highest_offset == -1)
 	start = gdbarch_frame_args_skip (get_frame_arch (frame));
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -586,11 +586,11 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
 
 	case LOC_CONST_BYTES:
 	  {
-	    unsigned i;
+	    ULONGEST i;
 	    struct type *type = check_typedef (SYMBOL_TYPE (symbol));
 
-	    fprintf_filtered (outfile, "const %u hex bytes:",
-			      TYPE_LENGTH (type));
+	    fprintf_filtered (outfile, "const %s hex bytes:",
+			      pulongest (TYPE_LENGTH (type)));
 	    for (i = 0; i < TYPE_LENGTH (type); i++)
 	      fprintf_filtered (outfile, " %02x",
 				(unsigned) SYMBOL_VALUE_BYTES (symbol)[i]);
diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c
--- a/gdb/target-delegates.c
+++ b/gdb/target-delegates.c
@@ -39,7 +39,7 @@ struct dummy_target : public target_ops
   bool have_continuable_watchpoint () override;
   bool stopped_data_address (CORE_ADDR *arg0) override;
   bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
-  int region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1) override;
+  int region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1) override;
   bool can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
   int masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1) override;
   int can_do_single_step () override;
@@ -207,7 +207,7 @@ struct debug_target : public target_ops
   bool have_continuable_watchpoint () override;
   bool stopped_data_address (CORE_ADDR *arg0) override;
   bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
-  int region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1) override;
+  int region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1) override;
   bool can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
   int masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1) override;
   int can_do_single_step () override;
@@ -1098,19 +1098,19 @@ debug_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int
 }
 
 int
-target_ops::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
+target_ops::region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1)
 {
   return this->beneath ()->region_ok_for_hw_watchpoint (arg0, arg1);
 }
 
 int
-dummy_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
+dummy_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1)
 {
   return default_region_ok_for_hw_watchpoint (this, arg0, arg1);
 }
 
 int
-debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
+debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1)
 {
   int result;
   fprintf_unfiltered (gdb_stdlog, "-> %s->region_ok_for_hw_watchpoint (...)\n", this->beneath ()->shortname ());
@@ -1118,7 +1118,7 @@ debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
   fprintf_unfiltered (gdb_stdlog, "<- %s->region_ok_for_hw_watchpoint (", this->beneath ()->shortname ());
   target_debug_print_CORE_ADDR (arg0);
   fputs_unfiltered (", ", gdb_stdlog);
-  target_debug_print_int (arg1);
+  target_debug_print_LONGEST (arg1);
   fputs_unfiltered (") = ", gdb_stdlog);
   target_debug_print_int (result);
   fputs_unfiltered ("\n", gdb_stdlog);
diff --git a/gdb/target.c b/gdb/target.c
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -59,7 +59,7 @@ static int default_watchpoint_addr_within_range (struct target_ops *,
 						 CORE_ADDR, CORE_ADDR, int);
 
 static int default_region_ok_for_hw_watchpoint (struct target_ops *,
-						CORE_ADDR, int);
+						CORE_ADDR, LONGEST);
 
 static void default_rcmd (struct target_ops *, const char *, struct ui_file *);
 
@@ -3181,7 +3181,7 @@ target_fileio_read_stralloc (struct inferior *inf, const char *filename)
 
 static int
 default_region_ok_for_hw_watchpoint (struct target_ops *self,
-				     CORE_ADDR addr, int len)
+				     CORE_ADDR addr, LONGEST len)
 {
   return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT);
 }
diff --git a/gdb/target.h b/gdb/target.h
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -562,7 +562,7 @@ struct target_ops
 
     /* Documentation of this routine is provided with the corresponding
        target_* macro.  */
-    virtual int region_ok_for_hw_watchpoint (CORE_ADDR, int)
+    virtual int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST)
       TARGET_DEFAULT_FUNC (default_region_ok_for_hw_watchpoint);
 
     virtual bool can_accel_watchpoint_condition (CORE_ADDR, int, int,
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -829,10 +829,10 @@ collection_list::add_register (unsigned int regno)
 void
 collection_list::add_memrange (struct gdbarch *gdbarch,
 			       int type, bfd_signed_vma base,
-			       unsigned long len)
+			       ULONGEST len)
 {
   if (info_verbose)
-    printf_filtered ("(%d,%s,%ld)\n", type, paddress (gdbarch, base), len);
+    printf_filtered ("(%d,%s,%s)\n", type, paddress (gdbarch, base), pulongest (len));
 
   /* type: memrange_absolute == memory, other n == basereg */
   /* base: addr if memory, offset if reg relative.  */
@@ -852,7 +852,7 @@ collection_list::collect_symbol (struct symbol *sym,
 				 CORE_ADDR scope,
 				 int trace_string)
 {
-  unsigned long len;
+  ULONGEST len;
   unsigned int reg;
   bfd_signed_vma offset;
   int treat_as_expr = 0;
@@ -873,8 +873,8 @@ collection_list::collect_symbol (struct symbol *sym,
       offset = SYMBOL_VALUE_ADDRESS (sym);
       if (info_verbose)
 	{
-	  printf_filtered ("LOC_STATIC %s: collect %ld bytes at %s.\n",
-			   SYMBOL_PRINT_NAME (sym), len,
+	  printf_filtered ("LOC_STATIC %s: collect %s bytes at %s.\n",
+			   SYMBOL_PRINT_NAME (sym), pulongest (len),
 			   paddress (gdbarch, offset));
 	}
       /* A struct may be a C++ class with static fields, go to general
@@ -906,9 +906,9 @@ collection_list::collect_symbol (struct symbol *sym,
       offset = frame_offset + SYMBOL_VALUE (sym);
       if (info_verbose)
 	{
-	  printf_filtered ("LOC_LOCAL %s: Collect %ld bytes at offset %s"
+	  printf_filtered ("LOC_LOCAL %s: Collect %s bytes at offset %s"
 			   " from frame ptr reg %d\n",
-			   SYMBOL_PRINT_NAME (sym), len,
+			   SYMBOL_PRINT_NAME (sym), pulongest (len),
 			   paddress (gdbarch, offset), reg);
 	}
       add_memrange (gdbarch, reg, offset, len);
@@ -918,9 +918,9 @@ collection_list::collect_symbol (struct symbol *sym,
       offset = 0;
       if (info_verbose)
 	{
-	  printf_filtered ("LOC_REGPARM_ADDR %s: Collect %ld bytes at offset %s"
+	  printf_filtered ("LOC_REGPARM_ADDR %s: Collect %s bytes at offset %s"
 			   " from reg %d\n",
-			   SYMBOL_PRINT_NAME (sym), len,
+			   SYMBOL_PRINT_NAME (sym), pulongest (len),
 			   paddress (gdbarch, offset), reg);
 	}
       add_memrange (gdbarch, reg, offset, len);
@@ -930,9 +930,9 @@ collection_list::collect_symbol (struct symbol *sym,
       offset = frame_offset + SYMBOL_VALUE (sym);
       if (info_verbose)
 	{
-	  printf_filtered ("LOC_LOCAL %s: Collect %ld bytes at offset %s"
+	  printf_filtered ("LOC_LOCAL %s: Collect %s bytes at offset %s"
 			   " from frame ptr reg %d\n",
-			   SYMBOL_PRINT_NAME (sym), len,
+			   SYMBOL_PRINT_NAME (sym), pulongest (len),
 			   paddress (gdbarch, offset), reg);
 	}
       add_memrange (gdbarch, reg, offset, len);
@@ -2447,7 +2447,8 @@ info_scope_command (const char *args_in, int from_tty)
   const char *symname;
   const char *save_args = args_in;
   struct block_iterator iter;
-  int j, count = 0;
+  int count = 0;
+  LONGEST j;
   struct gdbarch *gdbarch;
   int regno;
   const char *args = args_in;
@@ -2591,8 +2592,11 @@ info_scope_command (const char *args_in, int from_tty)
 		}
 	    }
 	  if (SYMBOL_TYPE (sym))
-	    printf_filtered (", length %d.\n",
-			     TYPE_LENGTH (check_typedef (SYMBOL_TYPE (sym))));
+	    {
+	      ULONGEST len = TYPE_LENGTH (check_typedef (SYMBOL_TYPE (sym)));
+
+	      printf_filtered (", length %s.\n", pulongest (len));
+	    }
 	}
       if (BLOCK_FUNCTION (block))
 	break;
diff --git a/gdb/tracepoint.h b/gdb/tracepoint.h
--- a/gdb/tracepoint.h
+++ b/gdb/tracepoint.h
@@ -265,7 +265,7 @@ public:
   void add_register (unsigned int regno);
   void add_memrange (struct gdbarch *gdbarch,
 		     int type, bfd_signed_vma base,
-		     unsigned long len);
+		     ULONGEST len);
   void collect_symbol (struct symbol *sym,
 		       struct gdbarch *gdbarch,
 		       long frame_regno, long frame_offset,
diff --git a/gdb/typeprint.c b/gdb/typeprint.c
--- a/gdb/typeprint.c
+++ b/gdb/typeprint.c
@@ -120,7 +120,8 @@ print_offset_data::update (struct type *type, unsigned int field_idx,
     {
       /* Since union fields don't have the concept of offsets, we just
 	 print their sizes.  */
-      fprintf_filtered (stream, "/*              %4u */", TYPE_LENGTH (ftype));
+      fprintf_filtered (stream, "/*              %4s */",
+			pulongest (TYPE_LENGTH (ftype)));
       return;
     }
 
@@ -183,8 +184,8 @@ print_offset_data::finish (struct type *type, int level,
 
   fputs_filtered ("\n", stream);
   print_spaces_filtered (level + 4 + print_offset_data::indentation, stream);
-  fprintf_filtered (stream, "/* total size (bytes): %4u */\n",
-		    TYPE_LENGTH (type));
+  fprintf_filtered (stream, "/* total size (bytes): %4s */\n",
+		    pulongest (TYPE_LENGTH (type)));
 }
 
 
diff --git a/gdb/valarith.c b/gdb/valarith.c
--- a/gdb/valarith.c
+++ b/gdb/valarith.c
@@ -182,7 +182,7 @@ value_subscript (struct value *array, LONGEST index)
    to doubles, but no longer does.  */
 
 struct value *
-value_subscripted_rvalue (struct value *array, LONGEST index, int lowerbound)
+value_subscripted_rvalue (struct value *array, LONGEST index, LONGEST lowerbound)
 {
   struct type *array_type = check_typedef (value_type (array));
   struct type *elt_type = check_typedef (TYPE_TARGET_TYPE (array_type));
@@ -659,7 +659,7 @@ value_concat (struct value *arg1, struct value *arg2)
   struct value *inval1;
   struct value *inval2;
   struct value *outval = NULL;
-  int inval1len, inval2len;
+  ssize_t inval1len, inval2len;
   int count, idx;
   char inchar;
   struct type *type1 = check_typedef (value_type (arg1));
@@ -1419,7 +1419,7 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
 int
 value_logical_not (struct value *arg1)
 {
-  int len;
+  LONGEST len;
   const gdb_byte *p;
   struct type *type1;
 
@@ -1447,11 +1447,11 @@ value_logical_not (struct value *arg1)
 static int
 value_strcmp (struct value *arg1, struct value *arg2)
 {
-  int len1 = TYPE_LENGTH (value_type (arg1));
-  int len2 = TYPE_LENGTH (value_type (arg2));
+  LONGEST len1 = TYPE_LENGTH (value_type (arg1));
+  LONGEST len2 = TYPE_LENGTH (value_type (arg2));
   const gdb_byte *s1 = value_contents (arg1);
   const gdb_byte *s2 = value_contents (arg2);
-  int i, len = len1 < len2 ? len1 : len2;
+  LONGEST i, len = len1 < len2 ? len1 : len2;
 
   for (i = 0; i < len; i++)
     {
diff --git a/gdb/valops.c b/gdb/valops.c
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -81,7 +81,7 @@ oload_classification classify_oload_match (struct badness_vector *,
 					   int, int);
 
 static struct value *value_struct_elt_for_reference (struct type *,
-						     int, struct type *,
+						     LONGEST, struct type *,
 						     const char *,
 						     struct type *,
 						     int, enum noside);
@@ -183,7 +183,7 @@ find_function_in_inferior (const char *name, struct objfile **objf_p)
    space.  */
 
 struct value *
-value_allocate_space_in_inferior (int len)
+value_allocate_space_in_inferior (LONGEST len)
 {
   struct objfile *objf;
   struct value *val = find_function_in_inferior ("malloc", &objf);
@@ -398,12 +398,12 @@ value_cast (struct type *type, struct value *arg2)
   if (code1 == TYPE_CODE_ARRAY)
     {
       struct type *element_type = TYPE_TARGET_TYPE (type);
-      unsigned element_length = TYPE_LENGTH (check_typedef (element_type));
+      ULONGEST element_length = TYPE_LENGTH (check_typedef (element_type));
 
       if (element_length > 0 && TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type))
 	{
 	  struct type *range_type = TYPE_INDEX_TYPE (type);
-	  int val_length = TYPE_LENGTH (type2);
+	  LONGEST val_length = TYPE_LENGTH (type2);
 	  LONGEST low_bound, high_bound, new_length;
 
 	  if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
@@ -1055,7 +1055,7 @@ value_assign (struct value *toval, struct value *fromval)
       {
 	const gdb_byte *dest_buffer;
 	CORE_ADDR changed_addr;
-	int changed_len;
+	LONGEST changed_len;
         gdb_byte buffer[sizeof (LONGEST)];
 
 	if (value_bitsize (toval))
@@ -3357,7 +3357,7 @@ compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
    the form "DOMAIN::NAME".  */
 
 static struct value *
-value_struct_elt_for_reference (struct type *domain, int offset,
+value_struct_elt_for_reference (struct type *domain, LONGEST offset,
 				struct type *curtype, const char *name,
 				struct type *intype, 
 				int want_address,
@@ -3391,7 +3391,7 @@ value_struct_elt_for_reference (struct type *domain, int offset,
 	  if (want_address)
 	    return value_from_longest
 	      (lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
-	       offset + (LONGEST) (TYPE_FIELD_BITPOS (t, i) >> 3));
+	       offset + (TYPE_FIELD_BITPOS (t, i) >> 3));
 	  else if (noside != EVAL_NORMAL)
 	    return allocate_value (TYPE_FIELD_TYPE (t, i));
 	  else
@@ -3564,7 +3564,7 @@ value_struct_elt_for_reference (struct type *domain, int offset,
   for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
     {
       struct value *v;
-      int base_offset;
+      LONGEST base_offset;
 
       if (BASETYPE_VIA_VIRTUAL (t, i))
 	base_offset = 0;
@@ -3713,7 +3713,7 @@ value_rtti_indirect_type (struct value *v, int *full,
 struct value *
 value_full_object (struct value *argp, 
 		   struct type *rtype, 
-		   int xfull, int xtop,
+		   int xfull, LONGEST xtop,
 		   int xusing_enc)
 {
   struct type *real_type;
diff --git a/gdb/valprint.c b/gdb/valprint.c
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
@@ -879,7 +879,7 @@ generic_val_print_complex (struct type *type,
 
 void
 generic_val_print (struct type *type,
-		   int embedded_offset, CORE_ADDR address,
+		   LONGEST embedded_offset, CORE_ADDR address,
 		   struct ui_file *stream, int recurse,
 		   struct value *original_value,
 		   const struct value_print_options *options,
@@ -1773,7 +1773,7 @@ print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
 
 void
 print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
-		 unsigned len, enum bfd_endian byte_order,
+		 ULONGEST len, enum bfd_endian byte_order,
 		 bool zero_pad)
 {
   const gdb_byte *p;
@@ -1926,17 +1926,17 @@ val_print_array_elements (struct type *type,
 			  int recurse,
 			  struct value *val,
 			  const struct value_print_options *options,
-			  unsigned int i)
+			  ULONGEST i)
 {
   unsigned int things_printed = 0;
-  unsigned len;
+  ULONGEST len;
   struct type *elttype, *index_type, *base_index_type;
-  unsigned eltlen;
+  ULONGEST eltlen;
   /* Position of the array element we are examining to see
      whether it is repeated.  */
-  unsigned int rep1;
+  ULONGEST rep1;
   /* Number of repetitions we have detected so far.  */
-  unsigned int reps;
+  ULONGEST reps;
   LONGEST low_bound, high_bound;
   LONGEST low_pos, high_pos;
 
@@ -2026,7 +2026,7 @@ val_print_array_elements (struct type *type,
 		     address, stream, recurse + 1, val, options,
 		     current_language);
 	  annotate_elt_rep (reps);
-	  fprintf_filtered (stream, " <repeats %u times>", reps);
+	  fprintf_filtered (stream, " <repeats %s times>", pulongest (reps));
 	  annotate_elt_rep_end ();
 
 	  i = rep1 - 1;
@@ -2669,7 +2669,7 @@ print_converted_chars_to_obstack (struct obstack *obstack,
 
 void
 generic_printstr (struct ui_file *stream, struct type *type, 
-		  const gdb_byte *string, unsigned int length, 
+		  const gdb_byte *string, ULONGEST length,
 		  const char *encoding, int force_ellipses,
 		  int quote_char, int c_style_terminator,
 		  const struct value_print_options *options)
diff --git a/gdb/valprint.h b/gdb/valprint.h
--- a/gdb/valprint.h
+++ b/gdb/valprint.h
@@ -119,7 +119,7 @@ extern void val_print_array_elements (struct type *, LONGEST,
 				      CORE_ADDR, struct ui_file *, int,
 				      struct value *,
 				      const struct value_print_options *,
-				      unsigned int);
+				      ULONGEST);
 
 extern void val_print_scalar_formatted (struct type *,
 					LONGEST,
@@ -138,7 +138,7 @@ extern void print_decimal_chars (struct ui_file *, const gdb_byte *,
 				 unsigned int, bool, enum bfd_endian);
 
 extern void print_hex_chars (struct ui_file *, const gdb_byte *,
-			     unsigned int, enum bfd_endian, bool);
+			     ULONGEST, enum bfd_endian, bool);
 
 extern void print_char_chars (struct ui_file *, struct type *,
 			      const gdb_byte *, unsigned int, enum bfd_endian);
@@ -192,7 +192,7 @@ struct generic_val_print_decorations
 
 
 extern void generic_val_print (struct type *type,
-			       int embedded_offset, CORE_ADDR address,
+			       LONGEST embedded_offset, CORE_ADDR address,
 			       struct ui_file *stream, int recurse,
 			       struct value *original_value,
 			       const struct value_print_options *options,
@@ -202,7 +202,7 @@ extern void generic_emit_char (int c, struct type *type, struct ui_file *stream,
 			       int quoter, const char *encoding);
 
 extern void generic_printstr (struct ui_file *stream, struct type *type, 
-			      const gdb_byte *string, unsigned int length, 
+			      const gdb_byte *string, ULONGEST length,
 			      const char *encoding, int force_ellipses,
 			      int quote_char, int c_style_terminator,
 			      const struct value_print_options *options);
diff --git a/gdb/value.c b/gdb/value.c
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -383,7 +383,8 @@ value_bytes_available (const struct value *value,
 }
 
 int
-value_bits_any_optimized_out (const struct value *value, int bit_offset, int bit_length)
+value_bits_any_optimized_out (const struct value *value, LONGEST bit_offset,
+			      LONGEST bit_length)
 {
   gdb_assert (!value->lazy);
 
@@ -831,8 +832,8 @@ find_first_range_overlap_and_match (struct ranges_and_idx *rp1,
    Return true if the available bits match.  */
 
 static bool
-value_contents_bits_eq (const struct value *val1, int offset1,
-			const struct value *val2, int offset2,
+value_contents_bits_eq (const struct value *val1, LONGEST offset1,
+			const struct value *val2, LONGEST offset2,
 			int length)
 {
   /* Each array element corresponds to a ranges source (unavailable,
@@ -1423,7 +1424,8 @@ value_optimized_out (struct value *value)
    the following LENGTH bytes.  */
 
 void
-mark_value_bytes_optimized_out (struct value *value, int offset, int length)
+mark_value_bytes_optimized_out (struct value *value, LONGEST offset,
+				LONGEST length)
 {
   mark_value_bits_optimized_out (value,
 				 offset * TARGET_CHAR_BIT,
diff --git a/gdb/value.h b/gdb/value.h
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -274,7 +274,7 @@ struct lval_funcs
   /* If non-NULL, this is used to determine whether the indicated bits
      of VALUE are a synthetic pointer.  */
   int (*check_synthetic_pointer) (const struct value *value,
-				  LONGEST offset, int length);
+				  LONGEST offset, LONGEST length);
 
   /* Return a duplicate of VALUE's closure, for use in a new value.
      This may simply return the same closure, if VALUE's is
@@ -405,7 +405,8 @@ extern int value_optimized_out (struct value *value);
    otherwise.  */
 
 extern int value_bits_any_optimized_out (const struct value *value,
-					 int bit_offset, int bit_length);
+					 LONGEST bit_offset,
+					 LONGEST bit_length);
 
 /* Like value_optimized_out, but return true iff the whole value is
    optimized out.  */
@@ -415,7 +416,7 @@ extern int value_entirely_optimized_out (struct value *value);
    LENGTH bytes as optimized out.  */
 
 extern void mark_value_bytes_optimized_out (struct value *value,
-					    int offset, int length);
+					    LONGEST offset, LONGEST length);
 
 /* Mark VALUE's content bits starting at OFFSET and extending for
    LENGTH bits as optimized out.  */
@@ -849,12 +850,11 @@ extern struct value *value_primitive_field (struct value *arg1, LONGEST offset,
 					    int fieldno,
 					    struct type *arg_type);
 
-
 extern struct type *value_rtti_indirect_type (struct value *, int *, LONGEST *,
 					      int *);
 
 extern struct value *value_full_object (struct value *, struct type *, int,
-					int, int);
+					LONGEST, int);
 
 extern struct value *value_cast_pointers (struct type *, struct value *, int);
 
@@ -1147,10 +1147,11 @@ extern struct value *value_literal_complex (struct value *, struct value *,
 extern struct value *find_function_in_inferior (const char *,
 						struct objfile **);
 
-extern struct value *value_allocate_space_in_inferior (int);
+extern struct value *value_allocate_space_in_inferior (LONGEST);
 
 extern struct value *value_subscripted_rvalue (struct value *array,
-					       LONGEST index, int lowerbound);
+					       LONGEST index,
+					       LONGEST lowerbound);
 
 /* User function handler.  */
 
diff --git a/gdb/x86-nat.c b/gdb/x86-nat.c
--- a/gdb/x86-nat.c
+++ b/gdb/x86-nat.c
@@ -173,7 +173,7 @@ x86_remove_watchpoint (CORE_ADDR addr, int len,
    address ADDR and whose length is LEN bytes.  */
 
 int
-x86_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
+x86_region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
 {
   struct x86_debug_reg_state *state
     = x86_debug_reg_state (inferior_ptid.pid ());
diff --git a/gdb/x86-nat.h b/gdb/x86-nat.h
--- a/gdb/x86-nat.h
+++ b/gdb/x86-nat.h
@@ -49,7 +49,7 @@ extern void x86_forget_process (pid_t pid);
    definitions.  */
 
 extern int x86_can_use_hw_breakpoint (enum bptype type, int cnt, int othertype);
-extern int x86_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len);
+extern int x86_region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len);
 extern int x86_stopped_by_watchpoint ();
 extern int x86_stopped_data_address (CORE_ADDR *addr_p);
 extern int x86_insert_watchpoint (CORE_ADDR addr, int len,
@@ -82,7 +82,7 @@ struct x86_nat_target : public BaseTarget
   int can_use_hw_breakpoint (enum bptype type, int cnt, int othertype) override
   { return x86_can_use_hw_breakpoint (type, cnt, othertype); }
 
-  int region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) override
+  int region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len) override
   { return x86_region_ok_for_hw_watchpoint (addr, len); }
 
   int insert_watchpoint (CORE_ADDR addr, int len,
