diff -rup ../../gdb-public.2/gdb/Makefile.in ./Makefile.in --- ../../gdb-public.2/gdb/Makefile.in 2007-10-30 22:00:50.000000000 -0400 +++ ./Makefile.in 2007-10-30 22:23:37.000000000 -0400 @@ -2129,7 +2129,7 @@ hppa-tdep.o: hppa-tdep.c $(defs_h) $(bfd $(completer_h) $(osabi_h) $(gdb_assert_h) $(gdb_stdint_h) \ $(arch_utils_h) $(symtab_h) $(dis_asm_h) $(trad_frame_h) \ $(frame_unwind_h) $(frame_base_h) $(gdbcore_h) $(gdbcmd_h) \ - $(objfiles_h) $(hppa_tdep_h) $(gdbtypes_h) + $(objfiles_h) $(hppa_tdep_h) $(gdbtypes_h) $(language_h) hpux-thread.o: hpux-thread.c $(defs_h) $(gdbthread_h) $(target_h) \ $(inferior_h) $(regcache_h) $(gdb_stat_h) $(gdbcore_h) \ $(hppa_tdep_h) $(observer_h) @@ -2783,7 +2783,8 @@ symfile.o: symfile.c $(defs_h) $(bfdlink $(parser_defs_h) $(varobj_h) $(elf_bfd_h) symfile-mem.o: symfile-mem.c $(defs_h) $(symtab_h) $(gdbcore_h) \ $(objfiles_h) $(exceptions_h) $(gdbcmd_h) $(target_h) $(value_h) \ - $(symfile_h) $(observer_h) $(auxv_h) $(elf_common_h) + $(symfile_h) $(observer_h) $(auxv_h) $(elf_common_h) \ + $(language_h) symmisc.o: symmisc.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(bfd_h) \ $(symfile_h) $(objfiles_h) $(breakpoint_h) $(command_h) \ $(gdb_obstack_h) $(exceptions_h) $(language_h) $(bcache_h) \ @@ -2935,7 +2936,8 @@ cli-decode.o: $(srcdir)/cli/cli-decode.c $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-decode.c cli-dump.o: $(srcdir)/cli/cli-dump.c $(defs_h) $(gdb_string_h) \ $(cli_decode_h) $(cli_cmds_h) $(value_h) $(completer_h) \ - $(cli_dump_h) $(gdb_assert_h) $(target_h) $(readline_h) + $(cli_dump_h) $(gdb_assert_h) $(target_h) $(readline_h) \ + $(language_h) $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-dump.c cli-interp.o: $(srcdir)/cli/cli-interp.c $(defs_h) $(interps_h) $(wrapper_h) \ $(event_top_h) $(ui_out_h) $(cli_out_h) $(top_h) $(gdb_string_h) \ @@ -3117,7 +3119,8 @@ mi-cmd-break.o: $(srcdir)/mi/mi-cmd-brea $(mi_getopt_h) $(gdb_events_h) $(gdb_h) $(language_h) $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-break.c mi-cmd-disas.o: $(srcdir)/mi/mi-cmd-disas.c $(defs_h) $(target_h) $(value_h) \ - $(mi_cmds_h) $(mi_getopt_h) $(gdb_string_h) $(ui_out_h) $(disasm_h) + $(mi_cmds_h) $(mi_getopt_h) $(gdb_string_h) $(ui_out_h) $(disasm_h) \ + $(language_h) $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/mi/mi-cmd-disas.c mi-cmd-env.o: $(srcdir)/mi/mi-cmd-env.c $(defs_h) $(inferior_h) $(value_h) \ $(mi_out_h) $(mi_cmds_h) $(mi_getopt_h) $(symtab_h) $(target_h) \ diff -rup ../../gdb-public.2/gdb/ada-lang.c ./ada-lang.c --- ../../gdb-public.2/gdb/ada-lang.c 2007-10-30 22:00:50.000000000 -0400 +++ ./ada-lang.c 2007-10-30 22:23:37.000000000 -0400 @@ -9214,7 +9214,7 @@ ada_find_printable_frame (struct frame_i static CORE_ADDR ada_unhandled_exception_name_addr (void) { - return parse_and_eval_address ("e.full_name"); + return parse_and_eval_address ("e.full_name", language_def (language_ada)); } /* Same as ada_unhandled_exception_name_addr, except that this function @@ -9251,7 +9251,7 @@ ada_unhandled_exception_name_addr_from_r return 0; select_frame (fi); - return parse_and_eval_address ("id.full_name"); + return parse_and_eval_address ("id.full_name", language_def (language_ada)); } /* Assuming the inferior just triggered an Ada exception catchpoint @@ -9267,7 +9267,8 @@ ada_exception_name_addr_1 (enum exceptio switch (ex) { case ex_catch_exception: - return (parse_and_eval_address ("e.full_name")); + return (parse_and_eval_address ("e.full_name", + language_def (language_ada))); break; case ex_catch_exception_unhandled: diff -rup ../../gdb-public.2/gdb/bsd-kvm.c ./bsd-kvm.c --- ../../gdb-public.2/gdb/bsd-kvm.c 2007-10-30 22:00:50.000000000 -0400 +++ ./bsd-kvm.c 2007-10-30 22:23:37.000000000 -0400 @@ -261,7 +261,7 @@ bsd_kvm_proc_cmd (char *arg, int fromtty if (core_kd == NULL) error (_("No kernel memory image.")); - addr = parse_and_eval_address (arg); + addr = parse_and_eval_address (arg, current_language); #ifdef HAVE_STRUCT_LWP addr += offsetof (struct lwp, l_addr); #else @@ -289,7 +289,8 @@ bsd_kvm_pcb_cmd (char *arg, int fromtty) if (core_kd == NULL) error (_("No kernel memory image.")); - bsd_kvm_paddr = (struct pcb *)(u_long) parse_and_eval_address (arg); + bsd_kvm_paddr = (struct pcb *)(u_long) + parse_and_eval_address (arg, current_language); target_fetch_registers (get_current_regcache (), -1); diff -rup ../../gdb-public.2/gdb/cli/cli-cmds.c ./cli/cli-cmds.c --- ../../gdb-public.2/gdb/cli/cli-cmds.c 2007-10-30 22:00:51.000000000 -0400 +++ ./cli/cli-cmds.c 2007-10-30 22:23:37.000000000 -0400 @@ -928,7 +928,7 @@ disassemble_command (char *arg, int from else if (!(space_index = (char *) strchr (arg, ' '))) { /* One argument. */ - pc = parse_and_eval_address (arg); + pc = parse_and_eval_address (arg, current_language); if (find_pc_partial_function (pc, &name, &low, &high) == 0) error (_("No function contains specified address.")); #if defined(TUI) @@ -944,8 +944,8 @@ disassemble_command (char *arg, int from { /* Two arguments. */ *space_index = '\0'; - low = parse_and_eval_address (arg); - high = parse_and_eval_address (space_index + 1); + low = parse_and_eval_address (arg, current_language); + high = parse_and_eval_address (space_index + 1, current_language); } #if defined(TUI) diff -rup ../../gdb-public.2/gdb/cli/cli-dump.c ./cli/cli-dump.c --- ../../gdb-public.2/gdb/cli/cli-dump.c 2007-10-30 22:00:51.000000000 -0400 +++ ./cli/cli-dump.c 2007-10-30 22:23:37.000000000 -0400 @@ -30,6 +30,7 @@ #include #include "target.h" #include "readline/readline.h" +#include "language.h" #define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE))) @@ -249,8 +250,8 @@ dump_memory_to_file (char *cmd, char *mo error (_("Missing stop address.")); hi_exp = cmd; - lo = parse_and_eval_address (lo_exp); - hi = parse_and_eval_address (hi_exp); + lo = parse_and_eval_address (lo_exp, current_language); + hi = parse_and_eval_address (hi_exp, current_language); if (hi <= lo) error (_("Invalid memory address range (start >= end).")); count = hi - lo; diff -rup ../../gdb-public.2/gdb/eval.c ./eval.c --- ../../gdb-public.2/gdb/eval.c 2007-10-30 22:00:51.000000000 -0400 +++ ./eval.c 2007-10-30 22:23:37.000000000 -0400 @@ -80,9 +80,9 @@ evaluate_subexp (struct type *expect_typ and return the result as a number. */ CORE_ADDR -parse_and_eval_address (char *exp) +parse_and_eval_address (char *exp, const struct language_defn *language) { - struct expression *expr = parse_expression (exp, curr_language ()); + struct expression *expr = parse_expression (exp, language); CORE_ADDR addr; struct cleanup *old_chain = make_cleanup (free_current_contents, &expr); diff -rup ../../gdb-public.2/gdb/exec.c ./exec.c --- ../../gdb-public.2/gdb/exec.c 2007-10-30 22:00:51.000000000 -0400 +++ ./exec.c 2007-10-30 22:23:37.000000000 -0400 @@ -647,7 +647,7 @@ set_section_command (char *args, int fro seclen = args - secname; /* Parse out new virtual address */ - secaddr = parse_and_eval_address (args); + secaddr = parse_and_eval_address (args, current_language); for (p = exec_ops.to_sections; p < exec_ops.to_sections_end; p++) { diff -rup ../../gdb-public.2/gdb/gnu-nat.c ./gnu-nat.c --- ../../gdb-public.2/gdb/gnu-nat.c 2007-10-30 22:00:51.000000000 -0400 +++ ./gnu-nat.c 2007-10-30 22:23:37.000000000 -0400 @@ -2856,7 +2856,7 @@ set_task_exc_port_cmd (char *args, int f struct inf *inf = cur_inf (); if (!args) error (_("No argument to \"set task exception-port\" command.")); - steal_exc_port (inf->task, parse_and_eval_address (args)); + steal_exc_port (inf->task, parse_and_eval_address (args, current_language)); } static void @@ -3261,7 +3261,7 @@ set_thread_exc_port_cmd (char *args, int struct proc *thread = cur_thread (); if (!args) error (_("No argument to \"set thread exception-port\" command.")); - steal_exc_port (thread, parse_and_eval_address (args)); + steal_exc_port (thread, parse_and_eval_address (args, current_language)); } #if 0 diff -rup ../../gdb-public.2/gdb/go32-nat.c ./go32-nat.c --- ../../gdb-public.2/gdb/go32-nat.c 2007-10-30 22:00:51.000000000 -0400 +++ ./go32-nat.c 2007-10-30 22:23:37.000000000 -0400 @@ -1874,7 +1874,7 @@ go32_pte_for_address (char *arg, int fro arg++; if (*arg) - addr = parse_and_eval_address (arg); + addr = parse_and_eval_address (arg, current_language); } if (!addr) error_no_arg (_("linear address")); diff -rup ../../gdb-public.2/gdb/hppa-tdep.c ./hppa-tdep.c --- ../../gdb-public.2/gdb/hppa-tdep.c 2007-10-30 22:00:51.000000000 -0400 +++ ./hppa-tdep.c 2007-10-30 22:23:37.000000000 -0400 @@ -43,6 +43,7 @@ #include "gdbtypes.h" #include "objfiles.h" #include "hppa-tdep.h" +#include "language.h" static int hppa_debug = 0; @@ -2524,7 +2525,7 @@ unwind_command (char *exp, int from_tty) /* If we have an expression, evaluate it and use it as the address. */ if (exp != 0 && *exp != 0) - address = parse_and_eval_address (exp); + address = parse_and_eval_address (exp, current_language); else return; diff -rup ../../gdb-public.2/gdb/maint.c ./maint.c --- ../../gdb-public.2/gdb/maint.c 2007-10-30 22:00:51.000000000 -0400 +++ ./maint.c 2007-10-30 22:23:37.000000000 -0400 @@ -474,7 +474,7 @@ maintenance_translate_address (char *arg error (_("Unknown section %s."), arg); } - address = parse_and_eval_address (p); + address = parse_and_eval_address (p, current_language); if (sect) sym = lookup_minimal_symbol_by_pc_section (address, sect); diff -rup ../../gdb-public.2/gdb/memattr.c ./memattr.c --- ../../gdb-public.2/gdb/memattr.c 2007-10-30 22:00:51.000000000 -0400 +++ ./memattr.c 2007-10-30 22:23:37.000000000 -0400 @@ -344,12 +344,12 @@ mem_command (char *args, int from_tty) tok = strtok (args, " \t"); if (!tok) error (_("no lo address")); - lo = parse_and_eval_address (tok); + lo = parse_and_eval_address (tok, current_language); tok = strtok (NULL, " \t"); if (!tok) error (_("no hi address")); - hi = parse_and_eval_address (tok); + hi = parse_and_eval_address (tok, current_language); attrib = default_mem_attrib; while ((tok = strtok (NULL, " \t")) != NULL) Only in ./mi: .mi-cmd-disas.c.swp Only in ./mi: .mi-main.c.swp diff -rup ../../gdb-public.2/gdb/mi/mi-cmd-disas.c ./mi/mi-cmd-disas.c --- ../../gdb-public.2/gdb/mi/mi-cmd-disas.c 2007-10-30 22:00:52.000000000 -0400 +++ ./mi/mi-cmd-disas.c 2007-10-30 22:23:37.000000000 -0400 @@ -25,6 +25,7 @@ #include "gdb_string.h" #include "ui-out.h" #include "disasm.h" +#include "language.h" /* The arguments to be passed on the command line and parsed here are: @@ -108,11 +109,11 @@ mi_cmd_disassemble (char *command, char num_seen = 1; break; case START_OPT: - low = parse_and_eval_address (optarg); + low = parse_and_eval_address (optarg, current_language); start_seen = 1; break; case END_OPT: - high = parse_and_eval_address (optarg); + high = parse_and_eval_address (optarg, current_language); end_seen = 1; break; } diff -rup ../../gdb-public.2/gdb/mi/mi-main.c ./mi/mi-main.c --- ../../gdb-public.2/gdb/mi/mi-main.c 2007-10-30 22:00:52.000000000 -0400 +++ ./mi/mi-main.c 2007-10-30 22:23:37.000000000 -0400 @@ -630,7 +630,7 @@ mi_cmd_data_write_register_values (char LONGEST value; /* Get the value as a number. */ - value = parse_and_eval_address (argv[i + 1]); + value = parse_and_eval_address (argv[i + 1], current_language); /* Write it down. */ regcache_cooked_write_signed (get_current_regcache (), regnum, value); @@ -829,7 +829,7 @@ mi_cmd_data_read_memory (char *command, /* Extract all the arguments. */ /* Start address of the memory dump. */ - addr = parse_and_eval_address (argv[0]) + offset; + addr = parse_and_eval_address (argv[0], current_language) + offset; /* The format character to use when displaying a memory word. See the ``x'' command. */ word_format = argv[1][0]; @@ -1028,7 +1028,7 @@ mi_cmd_data_write_memory (char *command, /* Extract all the arguments. */ /* Start address of the memory dump. */ - addr = parse_and_eval_address (argv[0]); + addr = parse_and_eval_address (argv[0], current_language); /* The format character to use when displaying a memory word. See the ``x'' command. */ word_format = argv[1][0]; @@ -1039,7 +1039,7 @@ mi_cmd_data_write_memory (char *command, addr += (offset * word_size); /* Get the value as a number. */ - value = parse_and_eval_address (argv[3]); + value = parse_and_eval_address (argv[3], current_language); /* Get the value into an array. */ buffer = xmalloc (word_size); old_chain = make_cleanup (xfree, buffer); diff -rup ../../gdb-public.2/gdb/printcmd.c ./printcmd.c --- ../../gdb-public.2/gdb/printcmd.c 2007-10-30 22:00:52.000000000 -0400 +++ ./printcmd.c 2007-10-30 22:23:37.000000000 -0400 @@ -990,7 +990,7 @@ sym_info (char *arg, int from_tty) if (!arg) error_no_arg (_("address")); - addr = parse_and_eval_address (arg); + addr = parse_and_eval_address (arg, current_language); ALL_OBJSECTIONS (objfile, osect) { /* Only process each object file once, even if there's a separate diff -rup ../../gdb-public.2/gdb/symfile-mem.c ./symfile-mem.c --- ../../gdb-public.2/gdb/symfile-mem.c 2007-10-30 22:00:52.000000000 -0400 +++ ./symfile-mem.c 2007-10-30 22:23:37.000000000 -0400 @@ -54,6 +54,7 @@ #include "observer.h" #include "auxv.h" #include "elf/common.h" +#include "language.h" /* Read inferior memory at ADDR to find the header of a loaded object file @@ -126,7 +127,7 @@ add_symbol_file_from_memory_command (cha if (args == NULL) error (_("add-symbol-file-from-memory requires an expression argument")); - addr = parse_and_eval_address (args); + addr = parse_and_eval_address (args, current_language); /* We need some representative bfd to know the target we are looking at. */ if (symfile_objfile != NULL) diff -rup ../../gdb-public.2/gdb/symfile.c ./symfile.c --- ../../gdb-public.2/gdb/symfile.c 2007-10-30 22:00:52.000000000 -0400 +++ ./symfile.c 2007-10-30 22:23:37.000000000 -0400 @@ -2241,7 +2241,7 @@ add_symbol_file_command (char *args, int char *val = sect_opts[i].value; char *sec = sect_opts[i].name; - addr = parse_and_eval_address (val); + addr = parse_and_eval_address (val, current_language); /* Here we store the section offsets in the order they were entered on the command line. */ diff -rup ../../gdb-public.2/gdb/tracepoint.c ./tracepoint.c --- ../../gdb-public.2/gdb/tracepoint.c 2007-10-30 22:00:51.000000000 -0400 +++ ./tracepoint.c 2007-10-30 22:23:37.000000000 -0400 @@ -2108,7 +2108,7 @@ trace_find_pc_command (char *args, int f if (args == 0 || *args == 0) pc = read_pc (); /* default is current pc */ else - pc = parse_and_eval_address (args); + pc = parse_and_eval_address (args, current_language); sprintf_vma (tmp, pc); sprintf (target_buf, "QTFrame:pc:%s", tmp); @@ -2264,12 +2264,12 @@ trace_find_range_command (char *args, in *tmp++ = '\0'; /* terminate start address */ while (isspace ((int) *tmp)) tmp++; - start = parse_and_eval_address (args); - stop = parse_and_eval_address (tmp); + start = parse_and_eval_address (args, current_language); + stop = parse_and_eval_address (tmp, current_language); } else { /* no explicit end address? */ - start = parse_and_eval_address (args); + start = parse_and_eval_address (args, current_language); stop = start + 1; /* ??? */ } @@ -2303,12 +2303,12 @@ trace_find_outside_command (char *args, *tmp++ = '\0'; /* terminate start address */ while (isspace ((int) *tmp)) tmp++; - start = parse_and_eval_address (args); - stop = parse_and_eval_address (tmp); + start = parse_and_eval_address (args, current_language); + stop = parse_and_eval_address (tmp, current_language); } else { /* no explicit end address? */ - start = parse_and_eval_address (args); + start = parse_and_eval_address (args, current_language); stop = start + 1; /* ??? */ } diff -rup ../../gdb-public.2/gdb/value.h ./value.h --- ../../gdb-public.2/gdb/value.h 2007-10-30 22:00:52.000000000 -0400 +++ ./value.h 2007-10-30 22:23:37.000000000 -0400 @@ -420,7 +420,8 @@ extern struct value *parse_to_comma_and_ extern struct type *parse_and_eval_type (char *p, int length); -extern CORE_ADDR parse_and_eval_address (char *exp); +extern CORE_ADDR parse_and_eval_address + (char *exp, const struct language_defn *language); extern CORE_ADDR parse_and_eval_address_1 (char **expptr);