diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 7153436e738..6626164c37c 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -3562,7 +3562,7 @@ resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
 
           n_candidates =
             ada_lookup_symbol_list (ada_decoded_op_name (op),
-                                    (struct block *) NULL, VAR_DOMAIN,
+				    NULL, VAR_DOMAIN,
                                     &candidates);
 
           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
@@ -5416,7 +5416,8 @@ struct match_data
    other has been found.  */
 
 static int
-aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
+aux_add_nonlocal_symbols (const struct block *block, struct symbol *sym,
+			  void *data0)
 {
   struct match_data *data = (struct match_data *) data0;
   
@@ -13560,7 +13561,7 @@ ada_add_global_exceptions (compiled_regex *preg,
 
 	  for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
 	    {
-	      struct block *b = BLOCKVECTOR_BLOCK (bv, i);
+	      const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
 	      struct block_iterator iter;
 	      struct symbol *sym;
 
diff --git a/gdb/block.c b/gdb/block.c
index 3192b33e9e9..63c7d9f3955 100644
--- a/gdb/block.c
+++ b/gdb/block.c
@@ -131,16 +131,16 @@ block_inlined_p (const struct block *bl)
 /* A helper function that checks whether PC is in the blockvector BL.
    It returns the containing block if there is one, or else NULL.  */
 
-static struct block *
+static const struct block *
 find_block_in_blockvector (const struct blockvector *bl, CORE_ADDR pc)
 {
-  struct block *b;
+  const struct block *b;
   int bot, top, half;
 
   /* If we have an addrmap mapping code addresses to blocks, then use
      that.  */
   if (BLOCKVECTOR_MAP (bl))
-    return (struct block *) addrmap_find (BLOCKVECTOR_MAP (bl), pc);
+    return (const struct block *) addrmap_find (BLOCKVECTOR_MAP (bl), pc);
 
   /* Otherwise, use binary search to find the last block that starts
      before PC.
@@ -186,7 +186,7 @@ blockvector_for_pc_sect (CORE_ADDR pc, struct obj_section *section,
 			 struct compunit_symtab *cust)
 {
   const struct blockvector *bl;
-  struct block *b;
+  const struct block *b;
 
   if (cust == NULL)
     {
diff --git a/gdb/block.h b/gdb/block.h
index d32114b9f59..9291deb6131 100644
--- a/gdb/block.h
+++ b/gdb/block.h
@@ -107,7 +107,7 @@ struct block
      case of C) is the STATIC_BLOCK.  The superblock of the
      STATIC_BLOCK is the GLOBAL_BLOCK.  */
 
-  struct block *superblock;
+  const struct block *superblock;
 
   /* This is used to store the symbols in the block.  */
 
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index 508e9ef28dd..22768473a83 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -1391,13 +1391,13 @@ typebase
 			{ $$ = lookup_typename (parse_language (pstate),
 						parse_gdbarch (pstate),
 						"double",
-						(struct block *) NULL,
+						NULL,
 						0); }
 	|	LONG DOUBLE_KEYWORD
 			{ $$ = lookup_typename (parse_language (pstate),
 						parse_gdbarch (pstate),
 						"long double",
-						(struct block *) NULL,
+						NULL,
 						0); }
 	|	STRUCT name
 			{ $$ = lookup_struct (copy_name ($2),
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
index d5ddd3ece7a..c4306f1488f 100644
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -197,7 +197,6 @@ print_unpacked_pointer (struct type *type, struct type *elttype,
 	  struct value *vt_val;
 	  struct symbol *wsym = NULL;
 	  struct type *wtype;
-	  struct block *block = NULL;
 
 	  if (want_space)
 	    fputs_filtered (" ", stream);
@@ -206,7 +205,7 @@ print_unpacked_pointer (struct type *type, struct type *elttype,
 	    {
 	      const char *search_name
 		= MSYMBOL_SEARCH_NAME (msymbol.minsym);
-	      wsym = lookup_symbol_search_name (search_name, block,
+	      wsym = lookup_symbol_search_name (search_name, NULL,
 						VAR_DOMAIN).symbol;
 	    }
 
diff --git a/gdb/coffread.c b/gdb/coffread.c
index 8c8e0784789..4354741ab64 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -1496,7 +1496,7 @@ patch_type (struct type *type, struct type *real_type)
 static void
 patch_opaque_types (struct symtab *s)
 {
-  struct block *b;
+  const struct block *b;
   struct block_iterator iter;
   struct symbol *real_sym;
 
diff --git a/gdb/cp-support.c b/gdb/cp-support.c
index e3d6112f23e..b79dd5c086f 100644
--- a/gdb/cp-support.c
+++ b/gdb/cp-support.c
@@ -1422,7 +1422,7 @@ add_symbol_overload_list_qualified (const char *func_name,
 /* Lookup the rtti type for a class name.  */
 
 struct type *
-cp_lookup_rtti_type (const char *name, struct block *block)
+cp_lookup_rtti_type (const char *name, const struct block *block)
 {
   struct symbol * rtti_sym;
   struct type * rtti_type;
diff --git a/gdb/cp-support.h b/gdb/cp-support.h
index 3df4cb9e4b8..c2e63ea0de3 100644
--- a/gdb/cp-support.h
+++ b/gdb/cp-support.h
@@ -118,7 +118,7 @@ extern void add_symbol_overload_list_adl
    std::vector<symbol *> *overload_list);
 
 extern struct type *cp_lookup_rtti_type (const char *name,
-					 struct block *block);
+					 const struct block *block);
 
 /* Produce an unsigned hash value from SEARCH_NAME that is compatible
    with cp_symbol_name_matches.  Only the last component in
diff --git a/gdb/d-exp.y b/gdb/d-exp.y
index eab346c368a..a0f7b958c3f 100644
--- a/gdb/d-exp.y
+++ b/gdb/d-exp.y
@@ -97,7 +97,6 @@ static int type_aggregate_p (struct type *);
     struct symtoken ssym;
     int ival;
     int voidval;
-    struct block *bval;
     enum exp_opcode opcode;
     struct stoken_vector svec;
   }
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 7c07a10e8c0..658c86264bf 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -4082,7 +4082,7 @@ dw2_lookup_symbol (struct objfile *objfile, int block_index,
       struct symbol *sym, *with_opaque = NULL;
       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
-      struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
+      const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
 
       sym = block_find_symbol (block, name, domain,
 			       block_find_non_opaque_type_preferred,
@@ -4227,7 +4227,7 @@ static void
 dw2_map_matching_symbols (struct objfile *objfile,
 			  const char * name, domain_enum domain,
 			  int global,
-			  int (*callback) (struct block *,
+			  int (*callback) (const struct block *,
 					   struct symbol *, void *),
 			  void *data, symbol_name_match_type match,
 			  symbol_compare_ftype *ordered_compare)
@@ -6083,7 +6083,7 @@ dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
       struct symbol *sym, *with_opaque = NULL;
       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
-      struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
+      const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
 
       sym = block_find_symbol (block, name, domain,
 			       block_find_non_opaque_type_preferred,
diff --git a/gdb/eval.c b/gdb/eval.c
index 0c0cf7f6ac7..a431ce453dc 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -123,7 +123,7 @@ parse_and_eval (const char *exp)
 struct value *
 parse_to_comma_and_eval (const char **expp)
 {
-  expression_up expr = parse_exp_1 (expp, 0, (struct block *) 0, 1);
+  expression_up expr = parse_exp_1 (expp, 0, 0, 1);
 
   return evaluate_expression (expr.get ());
 }
diff --git a/gdb/f-exp.y b/gdb/f-exp.y
index 7e838b0a93a..f99c26d326e 100644
--- a/gdb/f-exp.y
+++ b/gdb/f-exp.y
@@ -105,7 +105,6 @@ static struct type *convert_to_kind_type (struct type *basetype, int kind);
     struct ttype tsym;
     struct symtoken ssym;
     int voidval;
-    struct block *bval;
     enum exp_opcode opcode;
     struct internalvar *ivar;
 
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index db470dafacc..7a584172c5e 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -1528,7 +1528,7 @@ lookup_unsigned_typename (const struct language_defn *language,
 
   strcpy (uns, "unsigned ");
   strcpy (uns + 9, name);
-  return lookup_typename (language, gdbarch, uns, (struct block *) NULL, 0);
+  return lookup_typename (language, gdbarch, uns, NULL, 0);
 }
 
 struct type *
@@ -1540,11 +1540,11 @@ lookup_signed_typename (const struct language_defn *language,
 
   strcpy (uns, "signed ");
   strcpy (uns + 7, name);
-  t = lookup_typename (language, gdbarch, uns, (struct block *) NULL, 1);
+  t = lookup_typename (language, gdbarch, uns, NULL, 1);
   /* If we don't find "signed FOO" just try again with plain "FOO".  */
   if (t != NULL)
     return t;
-  return lookup_typename (language, gdbarch, name, (struct block *) NULL, 0);
+  return lookup_typename (language, gdbarch, name, NULL, 0);
 }
 
 /* Lookup a structure type named "struct NAME",
diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c
index a5e1f20ff74..214cb824976 100644
--- a/gdb/inline-frame.c
+++ b/gdb/inline-frame.c
@@ -266,13 +266,14 @@ static int
 block_starting_point_at (CORE_ADDR pc, const struct block *block)
 {
   const struct blockvector *bv;
-  struct block *new_block;
+  const struct block *new_block;
 
   bv = blockvector_for_pc (pc, NULL);
   if (BLOCKVECTOR_MAP (bv) == NULL)
     return 0;
 
-  new_block = (struct block *) addrmap_find (BLOCKVECTOR_MAP (bv), pc - 1);
+  new_block = (const struct block *) addrmap_find (BLOCKVECTOR_MAP (bv),
+						   pc - 1);
   if (new_block == NULL)
     return 1;
 
diff --git a/gdb/linespec.c b/gdb/linespec.c
index e902b11c8e8..33fa9e1227a 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -1159,7 +1159,7 @@ iterate_over_all_matching_symtabs
 
 	    if (include_inline)
 	      {
-		struct block *block;
+		const struct block *block;
 		int i;
 
 		for (i = FIRST_LOCAL_BLOCK;
@@ -1209,7 +1209,7 @@ iterate_over_file_blocks
   (struct symtab *symtab, const lookup_name_info &name,
    domain_enum domain, gdb::function_view<symbol_found_callback_ftype> callback)
 {
-  struct block *block;
+  const struct block *block;
 
   for (block = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), STATIC_BLOCK);
        block != NULL;
diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
index 0e816977181..b11292a86bc 100644
--- a/gdb/p-valprint.c
+++ b/gdb/p-valprint.c
@@ -248,7 +248,6 @@ pascal_val_print (struct type *type,
 	      struct value *vt_val;
 	      struct symbol *wsym = NULL;
 	      struct type *wtype;
-	      struct block *block = NULL;
 
 	      if (want_space)
 		fputs_filtered (" ", stream);
@@ -257,7 +256,7 @@ pascal_val_print (struct type *type,
 		{
 		  const char *search_name
 		    = MSYMBOL_SEARCH_NAME (msymbol.minsym);
-		  wsym = lookup_symbol_search_name (search_name, block,
+		  wsym = lookup_symbol_search_name (search_name, NULL,
 						    VAR_DOMAIN).symbol;
 		}
 
diff --git a/gdb/parse.c b/gdb/parse.c
index 661574e544e..15ee3858632 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -650,8 +650,7 @@ write_dollar_variable (struct parser_state *ps, struct stoken str)
   /* On some systems, such as HP-UX and hppa-linux, certain system routines 
      have names beginning with $ or $$.  Check for those, first.  */
 
-  sym = lookup_symbol (copy_name (str), (struct block *) NULL,
-		       VAR_DOMAIN, NULL);
+  sym = lookup_symbol (copy_name (str), NULL, VAR_DOMAIN, NULL);
   if (sym.symbol)
     {
       write_exp_elt_opcode (ps, OP_VAR_VALUE);
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index 96b4fa0bf88..584a5e97fd8 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -498,7 +498,7 @@ psym_lookup_symbol (struct objfile *objfile,
 	     partial symtab is empty, we can assume it won't here
 	     because lookup_partial_symbol succeeded.  */
 	  const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
-	  struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
+	  const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
 
 	  sym = block_find_symbol (block, name, domain,
 				   block_find_non_opaque_type_preferred,
@@ -1165,8 +1165,8 @@ psymtab_to_fullname (struct partial_symtab *ps)
 
 static int
 map_block (const char *name, domain_enum domain, struct objfile *objfile,
-	   struct block *block,
-	   int (*callback) (struct block *, struct symbol *, void *),
+	   const struct block *block,
+	   int (*callback) (const struct block *, struct symbol *, void *),
 	   void *data, symbol_name_match_type match)
 {
   struct block_iterator iter;
@@ -1196,7 +1196,7 @@ static void
 psym_map_matching_symbols (struct objfile *objfile,
 			   const char *name, domain_enum domain,
 			   int global,
-			   int (*callback) (struct block *,
+			   int (*callback) (const struct block *,
 					    struct symbol *, void *),
 			   void *data,
 			   symbol_name_match_type match,
@@ -1212,7 +1212,7 @@ psym_map_matching_symbols (struct objfile *objfile,
 				   ordered_compare))
 	{
 	  struct compunit_symtab *cust = psymtab_to_symtab (objfile, ps);
-	  struct block *block;
+	  const struct block *block;
 
 	  if (cust == NULL)
 	    continue;
@@ -2095,7 +2095,7 @@ maintenance_check_psymtabs (const char *ignore, int from_tty)
   struct symbol *sym;
   struct compunit_symtab *cust = NULL;
   const struct blockvector *bv;
-  struct block *b;
+  const struct block *b;
   int length;
 
   for (objfile *objfile : current_program_space->objfiles ())
diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
index 7f416cb6d30..7b241bbed89 100644
--- a/gdb/python/py-framefilter.c
+++ b/gdb/python/py-framefilter.c
@@ -54,7 +54,7 @@ enum mi_print_types
 
 static enum ext_lang_bt_status
 extract_sym (PyObject *obj, gdb::unique_xmalloc_ptr<char> *name,
-	     struct symbol **sym, struct block **sym_block,
+	     struct symbol **sym, const struct block **sym_block,
 	     const struct language_defn **language)
 {
   gdbpy_ref<> result (PyObject_CallMethod (obj, "symbol", NULL));
@@ -449,7 +449,7 @@ enumerate_args (PyObject *iter,
       const struct language_defn *language;
       gdb::unique_xmalloc_ptr<char> sym_name;
       struct symbol *sym;
-      struct block *sym_block;
+      const struct block *sym_block;
       struct value *val;
       enum ext_lang_bt_status success = EXT_LANG_BT_ERROR;
 
@@ -567,7 +567,7 @@ enumerate_locals (PyObject *iter,
       struct value *val;
       enum ext_lang_bt_status success = EXT_LANG_BT_ERROR;
       struct symbol *sym;
-      struct block *sym_block;
+      const struct block *sym_block;
       int local_indent = 8 + (8 * indent);
       gdb::optional<ui_out_emit_tuple> tuple;
 
diff --git a/gdb/python/py-symtab.c b/gdb/python/py-symtab.c
index 0fef6e4747d..15af3001505 100644
--- a/gdb/python/py-symtab.c
+++ b/gdb/python/py-symtab.c
@@ -176,7 +176,7 @@ static PyObject *
 stpy_global_block (PyObject *self, PyObject *args)
 {
   struct symtab *symtab = NULL;
-  struct block *block = NULL;
+  const struct block *block = NULL;
   const struct blockvector *blockvector;
 
   STPY_REQUIRE_VALID (self, symtab);
@@ -192,7 +192,7 @@ static PyObject *
 stpy_static_block (PyObject *self, PyObject *args)
 {
   struct symtab *symtab = NULL;
-  struct block *block = NULL;
+  const struct block *block = NULL;
   const struct blockvector *blockvector;
 
   STPY_REQUIRE_VALID (self, symtab);
diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c
index a9bab946bdb..c3f5d4e6a78 100644
--- a/gdb/spu-tdep.c
+++ b/gdb/spu-tdep.c
@@ -1963,7 +1963,7 @@ spu_catch_start (struct objfile *objfile)
   if (cust != NULL)
     {
       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (cust);
-      struct block *block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
+      const struct block *block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
       struct symbol *sym;
       struct symtab_and_line sal;
 
diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c
index 9dc18807326..5b3ae926504 100644
--- a/gdb/symfile-debug.c
+++ b/gdb/symfile-debug.c
@@ -240,7 +240,7 @@ static void
 debug_qf_map_matching_symbols (struct objfile *objfile,
 			       const char *name, domain_enum domain,
 			       int global,
-			       int (*callback) (struct block *,
+			       int (*callback) (const struct block *,
 						struct symbol *, void *),
 			       void *data,
 			       symbol_name_match_type match,
diff --git a/gdb/symfile.h b/gdb/symfile.h
index 64d5a23f9b2..a873dfe9451 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -227,7 +227,7 @@ struct quick_symbol_functions
   void (*map_matching_symbols) (struct objfile *,
 				const char *name, domain_enum domain,
 				int global,
-				int (*callback) (struct block *,
+				int (*callback) (const struct block *,
 						 struct symbol *, void *),
 				void *data,
 				symbol_name_match_type match,
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index cb0b5a52e47..58f75bd5485 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -52,7 +52,7 @@ FILE *std_err;
 
 /* Prototypes for local functions */
 
-static int block_depth (struct block *);
+static int block_depth (const struct block *);
 
 static void print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
 			  int depth, ui_file *outfile);
@@ -278,7 +278,7 @@ dump_symtab_1 (struct symtab *symtab, struct ui_file *outfile)
   struct linetable *l;
   const struct blockvector *bv;
   struct symbol *sym;
-  struct block *b;
+  const struct block *b;
   int depth;
 
   fprintf_filtered (outfile, "\nSymtab for file %s\n",
@@ -954,7 +954,7 @@ maintenance_expand_symtabs (const char *args, int from_tty)
 /* Return the nexting depth of a block within other blocks in its symtab.  */
 
 static int
-block_depth (struct block *block)
+block_depth (const struct block *block)
 {
   int i = 0;
 
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 449bc4cd2b3..a99bd8e2d7f 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -2752,7 +2752,7 @@ basic_lookup_transparent_type_quick (struct objfile *objfile, int block_index,
 {
   struct compunit_symtab *cust;
   const struct blockvector *bv;
-  struct block *block;
+  const struct block *block;
   struct symbol *sym;
 
   if (!objfile->sf)
@@ -2922,7 +2922,7 @@ find_pc_sect_compunit_symtab (CORE_ADDR pc, struct obj_section *section)
     {
       for (compunit_symtab *cust : obj_file->compunits ())
 	{
-	  struct block *b;
+	  const struct block *b;
 	  const struct blockvector *bv;
 
 	  bv = COMPUNIT_BLOCKVECTOR (cust);
@@ -3026,7 +3026,7 @@ find_symbol_at_address (CORE_ADDR address)
 
 	  for (int i = GLOBAL_BLOCK; i <= STATIC_BLOCK; ++i)
 	    {
-	      struct block *b = BLOCKVECTOR_BLOCK (bv, i);
+	      const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
 	      struct block_iterator iter;
 	      struct symbol *sym;
 
@@ -4357,7 +4357,7 @@ search_symbols (const char *regexp, enum search_domain kind,
 		int nfiles, const char *files[])
 {
   const struct blockvector *bv;
-  struct block *b;
+  const struct block *b;
   int i = 0;
   struct block_iterator iter;
   struct symbol *sym;
