diff options
author | Doug Evans <dje@google.com> | 2012-02-02 20:19:17 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2012-02-02 20:19:17 +0000 |
commit | 2c02bd729076b940958bccf68f1cc0b1ecf8403b (patch) | |
tree | 013e985526bbe3be19b7e5c7f5d19234a7ab37c4 /gdb | |
parent | 4c9ed63c1f5f1c2921fb7b4761b92f838c7ded23 (diff) | |
download | gdb-2c02bd729076b940958bccf68f1cc0b1ecf8403b.zip gdb-2c02bd729076b940958bccf68f1cc0b1ecf8403b.tar.gz gdb-2c02bd729076b940958bccf68f1cc0b1ecf8403b.tar.bz2 |
* blockframe.c (find_pc_partial_function_gnu_ifunc): Change type of
"name" parameter to const char ** from char **. All callers updated.
(find_pc_partial_function): Ditto.
(cache_pc_function_name): Change type to const char * from char *.
* symtab.h ((find_pc_partial_function_gnu_ifunc): Update.
(find_pc_partial_function): Update.
* alpha-tdep.h (struct gdbarch_tdep, member pc_in_sigtramp): Change
type of "name" parameter to const char * from char *.
All uses updated.
* arch-utils.c (generic_in_solib_return_trampoline): Change
type of "name" parameter to const char * from char *.
* arch-utils.h (generic_in_solib_return_trampoline): Update.
* frv-linux-tdep.c (frv_linux_pc_in_sigtramp): Change
type of "name" parameter to const char * from char *.
* gdbarch.sh (in_solib_return_trampoline): Ditto.
* gdbarch.c: Regenerate.
* gdbarch.h: Regenerate.
* hppa-hpux-tdep.c (hppa_hpux_in_solib_return_trampoline): Update.
* rs6000-tdep.c (rs6000_in_solib_return_trampoline): Update.
* m32r-linux-tdep.c (m32r_linux_pc_in_sigtramp): Change
type of "name" parameter to const char * from char *.
* skip.c (skip_function_pc): Ditto.
* sparc-sol2-tdep.c (sparc_sol2_pc_in_sigtramp): Ditto.
* sparc-tdep.h (sparc_sol2_pc_in_sigtramp): Update.
* sparc64fbsd-tdep.c (sparc64fbsd_pc_in_sigtramp): Ditto.
* sparc64nbsd-tdep.c (sparc64nbsd_pc_in_sigtramp): Ditto.
* sparc64obsd-tdep.c (sparc64obsd_pc_in_sigtramp): Ditto.
* sparcnbsd-tdep.c (sparc32nbsd_pc_in_sigtramp): Ditto.
* sparcobsd-tdep.c (sparc32obsd_pc_in_sigtramp): Ditto.
* nbsd-tdep.c (nbsd_pc_in_sigtramp): Similary for "func_name".
* nbsd-tdep.h (nbsd_pc_in_sigtramp): Update.
Diffstat (limited to 'gdb')
60 files changed, 127 insertions, 89 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 62ef750..871278f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,37 @@ +2012-02-02 Doug Evans <dje@google.com> + + * blockframe.c (find_pc_partial_function_gnu_ifunc): Change type of + "name" parameter to const char ** from char **. All callers updated. + (find_pc_partial_function): Ditto. + (cache_pc_function_name): Change type to const char * from char *. + * symtab.h ((find_pc_partial_function_gnu_ifunc): Update. + (find_pc_partial_function): Update. + * alpha-tdep.h (struct gdbarch_tdep, member pc_in_sigtramp): Change + type of "name" parameter to const char * from char *. + All uses updated. + * arch-utils.c (generic_in_solib_return_trampoline): Change + type of "name" parameter to const char * from char *. + * arch-utils.h (generic_in_solib_return_trampoline): Update. + * frv-linux-tdep.c (frv_linux_pc_in_sigtramp): Change + type of "name" parameter to const char * from char *. + * gdbarch.sh (in_solib_return_trampoline): Ditto. + * gdbarch.c: Regenerate. + * gdbarch.h: Regenerate. + * hppa-hpux-tdep.c (hppa_hpux_in_solib_return_trampoline): Update. + * rs6000-tdep.c (rs6000_in_solib_return_trampoline): Update. + * m32r-linux-tdep.c (m32r_linux_pc_in_sigtramp): Change + type of "name" parameter to const char * from char *. + * skip.c (skip_function_pc): Ditto. + * sparc-sol2-tdep.c (sparc_sol2_pc_in_sigtramp): Ditto. + * sparc-tdep.h (sparc_sol2_pc_in_sigtramp): Update. + * sparc64fbsd-tdep.c (sparc64fbsd_pc_in_sigtramp): Ditto. + * sparc64nbsd-tdep.c (sparc64nbsd_pc_in_sigtramp): Ditto. + * sparc64obsd-tdep.c (sparc64obsd_pc_in_sigtramp): Ditto. + * sparcnbsd-tdep.c (sparc32nbsd_pc_in_sigtramp): Ditto. + * sparcobsd-tdep.c (sparc32obsd_pc_in_sigtramp): Ditto. + * nbsd-tdep.c (nbsd_pc_in_sigtramp): Similary for "func_name". + * nbsd-tdep.h (nbsd_pc_in_sigtramp): Update. + 2012-02-02 Pedro Alves <palves@redhat.com> * remote.c (remote_get_min_fast_tracepoint_insn_len): Return 0 if diff --git a/gdb/alpha-linux-tdep.c b/gdb/alpha-linux-tdep.c index 3fd9228..aaca985 100644 --- a/gdb/alpha-linux-tdep.c +++ b/gdb/alpha-linux-tdep.c @@ -92,7 +92,7 @@ alpha_linux_sigtramp_offset (struct gdbarch *gdbarch, CORE_ADDR pc) static int alpha_linux_pc_in_sigtramp (struct gdbarch *gdbarch, - CORE_ADDR pc, char *func_name) + CORE_ADDR pc, const char *func_name) { return alpha_linux_sigtramp_offset (gdbarch, pc) >= 0; } diff --git a/gdb/alpha-mdebug-tdep.c b/gdb/alpha-mdebug-tdep.c index d41f66a..4b46a3c 100644 --- a/gdb/alpha-mdebug-tdep.c +++ b/gdb/alpha-mdebug-tdep.c @@ -96,7 +96,7 @@ find_proc_desc (CORE_ADDR pc) struct block *b = block_for_pc (pc); struct mdebug_extra_func_info *proc_desc = NULL; struct symbol *sym = NULL; - char *sh_name = NULL; + const char *sh_name = NULL; if (b) { diff --git a/gdb/alpha-osf1-tdep.c b/gdb/alpha-osf1-tdep.c index bb88f59..f3bddaa 100644 --- a/gdb/alpha-osf1-tdep.c +++ b/gdb/alpha-osf1-tdep.c @@ -28,7 +28,7 @@ static int alpha_osf1_pc_in_sigtramp (struct gdbarch *gdbarch, - CORE_ADDR pc, char *func_name) + CORE_ADDR pc, const char *func_name) { return (func_name != NULL && strcmp ("__sigtramp", func_name) == 0); } diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c index cebc97a..80f5098 100644 --- a/gdb/alpha-tdep.c +++ b/gdb/alpha-tdep.c @@ -999,7 +999,7 @@ alpha_sigtramp_frame_sniffer (const struct frame_unwind *self, { struct gdbarch *gdbarch = get_frame_arch (this_frame); CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; /* NOTE: cagney/2004-04-30: Do not copy/clone this code. Instead look at tramp-frame.h and other simplier per-architecture diff --git a/gdb/alpha-tdep.h b/gdb/alpha-tdep.h index 5d2ac19..ab871b4 100644 --- a/gdb/alpha-tdep.h +++ b/gdb/alpha-tdep.h @@ -86,7 +86,8 @@ struct gdbarch_tdep /* NOTE: cagney/2004-04-30: Do not copy/clone this code. Instead look at tramp-frame.h and other simplier per-architecture sigtramp unwinders. */ - int (*pc_in_sigtramp) (struct gdbarch *gdbarch, CORE_ADDR pc, char *name); + int (*pc_in_sigtramp) (struct gdbarch *gdbarch, CORE_ADDR pc, + const char *name); /* If TYPE will be returned in memory, return true. */ int (*return_in_memory) (struct type *type); diff --git a/gdb/alphafbsd-tdep.c b/gdb/alphafbsd-tdep.c index a11040f..d2c1d94 100644 --- a/gdb/alphafbsd-tdep.c +++ b/gdb/alphafbsd-tdep.c @@ -65,7 +65,7 @@ CORE_ADDR alphafbsd_sigtramp_end = 0x11ffffe0; static int alphafbsd_pc_in_sigtramp (struct gdbarch *gdbarch, - CORE_ADDR pc, char *func_name) + CORE_ADDR pc, const char *func_name) { return (pc >= alphafbsd_sigtramp_start && pc < alphafbsd_sigtramp_end); } diff --git a/gdb/alphanbsd-tdep.c b/gdb/alphanbsd-tdep.c index 636cf77..bc17385 100644 --- a/gdb/alphanbsd-tdep.c +++ b/gdb/alphanbsd-tdep.c @@ -241,7 +241,7 @@ alphanbsd_sigtramp_offset (struct gdbarch *gdbarch, CORE_ADDR pc) static int alphanbsd_pc_in_sigtramp (struct gdbarch *gdbarch, - CORE_ADDR pc, char *func_name) + CORE_ADDR pc, const char *func_name) { return (nbsd_pc_in_sigtramp (pc, func_name) || alphanbsd_sigtramp_offset (gdbarch, pc) >= 0); diff --git a/gdb/alphaobsd-tdep.c b/gdb/alphaobsd-tdep.c index 79940a8..4ed6112 100644 --- a/gdb/alphaobsd-tdep.c +++ b/gdb/alphaobsd-tdep.c @@ -47,7 +47,7 @@ alphaobsd_sigtramp_offset (struct gdbarch *gdbarch, CORE_ADDR pc) static int alphaobsd_pc_in_sigtramp (struct gdbarch *gdbarch, - CORE_ADDR pc, char *name) + CORE_ADDR pc, const char *name) { CORE_ADDR start_pc = (pc & ~(alphaobsd_page_size - 1)); unsigned insn; diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c index ca9ade6..5032371 100644 --- a/gdb/amd64-linux-tdep.c +++ b/gdb/amd64-linux-tdep.c @@ -156,7 +156,7 @@ static int amd64_linux_sigtramp_p (struct frame_info *this_frame) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); diff --git a/gdb/amd64-sol2-tdep.c b/gdb/amd64-sol2-tdep.c index 6d2f57f..242c3e7 100644 --- a/gdb/amd64-sol2-tdep.c +++ b/gdb/amd64-sol2-tdep.c @@ -71,7 +71,7 @@ static int amd64_sol2_sigtramp_p (struct frame_info *this_frame) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); return (name && (strcmp ("sigacthandler", name) == 0 diff --git a/gdb/amd64nbsd-tdep.c b/gdb/amd64nbsd-tdep.c index 868e2f5..eacd46c 100644 --- a/gdb/amd64nbsd-tdep.c +++ b/gdb/amd64nbsd-tdep.c @@ -39,7 +39,7 @@ static int amd64nbsd_sigtramp_p (struct frame_info *this_frame) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); return nbsd_pc_in_sigtramp (pc, name); diff --git a/gdb/amd64obsd-tdep.c b/gdb/amd64obsd-tdep.c index 0829cb0..f2a8ed9 100644 --- a/gdb/amd64obsd-tdep.c +++ b/gdb/amd64obsd-tdep.c @@ -101,7 +101,7 @@ amd64obsd_sigtramp_p (struct frame_info *this_frame) }; size_t buflen = (sizeof sigreturn) + 1; gdb_byte *buf; - char *name; + const char *name; /* If the function has a valid symbol name, it isn't a trampoline. */ @@ -360,7 +360,7 @@ amd64obsd_trapframe_cache (struct frame_info *this_frame, void **this_cache) struct trad_frame_cache *cache; CORE_ADDR func, sp, addr; ULONGEST cs; - char *name; + const char *name; int i; if (*this_cache) @@ -425,7 +425,7 @@ amd64obsd_trapframe_sniffer (const struct frame_unwind *self, void **this_prologue_cache) { ULONGEST cs; - char *name; + const char *name; /* Check Current Privilege Level and bail out if we're not executing in kernel space. */ diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c index 916a3ef..e683a2d 100644 --- a/gdb/arch-utils.c +++ b/gdb/arch-utils.c @@ -120,7 +120,7 @@ generic_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc) int generic_in_solib_return_trampoline (struct gdbarch *gdbarch, - CORE_ADDR pc, char *name) + CORE_ADDR pc, const char *name) { return 0; } diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h index 45ddf64..7c398b3 100644 --- a/gdb/arch-utils.h +++ b/gdb/arch-utils.h @@ -99,7 +99,7 @@ extern CORE_ADDR generic_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc); extern int generic_in_solib_return_trampoline (struct gdbarch *gdbarch, - CORE_ADDR pc, char *name); + CORE_ADDR pc, const char *name); extern int generic_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR pc); diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 532abc2..b4da01d 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -9101,7 +9101,7 @@ arm_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc) CORE_ADDR arm_skip_stub (struct frame_info *frame, CORE_ADDR pc) { - char *name; + const char *name; int namelen; CORE_ADDR start_addr; diff --git a/gdb/blockframe.c b/gdb/blockframe.c index cb61cf3..ba755a1 100644 --- a/gdb/blockframe.c +++ b/gdb/blockframe.c @@ -159,7 +159,7 @@ find_pc_function (CORE_ADDR pc) static CORE_ADDR cache_pc_function_low = 0; static CORE_ADDR cache_pc_function_high = 0; -static char *cache_pc_function_name = 0; +static const char *cache_pc_function_name = 0; static struct obj_section *cache_pc_function_section = NULL; static int cache_pc_function_is_gnu_ifunc = 0; @@ -190,7 +190,7 @@ clear_pc_function_cache (void) /* Backward compatibility, no section argument. */ int -find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, char **name, +find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr, int *is_gnu_ifunc_p) { @@ -346,7 +346,7 @@ find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, char **name, is omitted here for backward API compatibility. */ int -find_pc_partial_function (CORE_ADDR pc, char **name, CORE_ADDR *address, +find_pc_partial_function (CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr) { return find_pc_partial_function_gnu_ifunc (pc, name, address, endaddr, NULL); diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 7d363b2..fc18d9c 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -5874,8 +5874,9 @@ set_breakpoint_location_function (struct bp_location *loc, int explicit_loc) || is_tracepoint (loc->owner)) { int is_gnu_ifunc; + const char *function_name; - find_pc_partial_function_gnu_ifunc (loc->address, &loc->function_name, + find_pc_partial_function_gnu_ifunc (loc->address, &function_name, NULL, NULL, &is_gnu_ifunc); if (is_gnu_ifunc && !explicit_loc) @@ -5883,7 +5884,7 @@ set_breakpoint_location_function (struct bp_location *loc, int explicit_loc) struct breakpoint *b = loc->owner; gdb_assert (loc->pspace == current_program_space); - if (gnu_ifunc_resolve_name (loc->function_name, + if (gnu_ifunc_resolve_name (function_name, &loc->requested_address)) { /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */ @@ -5900,8 +5901,8 @@ set_breakpoint_location_function (struct bp_location *loc, int explicit_loc) } } - if (loc->function_name) - loc->function_name = xstrdup (loc->function_name); + if (function_name) + loc->function_name = xstrdup (function_name); } } diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c index 5eeab41..983f017 100644 --- a/gdb/cli/cli-cmds.c +++ b/gdb/cli/cli-cmds.c @@ -1097,7 +1097,7 @@ disassemble_current_function (int flags) struct frame_info *frame; struct gdbarch *gdbarch; CORE_ADDR low, high, pc; - char *name; + const char *name; frame = get_selected_frame (_("No frame selected.")); gdbarch = get_frame_arch (frame); @@ -1135,7 +1135,7 @@ disassemble_command (char *arg, int from_tty) { struct gdbarch *gdbarch = get_current_arch (); CORE_ADDR low, high; - char *name; + const char *name; CORE_ADDR pc; int flags; diff --git a/gdb/elfread.c b/gdb/elfread.c index ddae099..d5114ee 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -920,7 +920,7 @@ elf_gnu_ifunc_resolve_name (const char *name, CORE_ADDR *addr_p) static CORE_ADDR elf_gnu_ifunc_resolve_addr (struct gdbarch *gdbarch, CORE_ADDR pc) { - char *name_at_pc; + const char *name_at_pc; CORE_ADDR start_at_pc, address; struct type *func_func_type = builtin_type (gdbarch)->builtin_func_func; struct value *function, *address_val; diff --git a/gdb/frv-linux-tdep.c b/gdb/frv-linux-tdep.c index 76acdcf..dd41883 100644 --- a/gdb/frv-linux-tdep.c +++ b/gdb/frv-linux-tdep.c @@ -42,7 +42,8 @@ enum { }; static int -frv_linux_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc, char *name) +frv_linux_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc, + const char *name) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); char buf[frv_instr_size]; @@ -323,7 +324,7 @@ frv_linux_sigtramp_frame_sniffer (const struct frame_unwind *self, { struct gdbarch *gdbarch = get_frame_arch (this_frame); CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (frv_linux_pc_in_sigtramp (gdbarch, pc, name)) diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index 1bd2341..64acceb 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -3008,7 +3008,7 @@ set_gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, } int -gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name) +gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, const char *name) { gdb_assert (gdbarch != NULL); gdb_assert (gdbarch->in_solib_return_trampoline != NULL); diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index 044281c..12fe2f0 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -631,8 +631,8 @@ extern void set_gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, gdbarch_sk /* Some systems also have trampoline code for returning from shared libs. */ -typedef int (gdbarch_in_solib_return_trampoline_ftype) (struct gdbarch *gdbarch, CORE_ADDR pc, char *name); -extern int gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name); +typedef int (gdbarch_in_solib_return_trampoline_ftype) (struct gdbarch *gdbarch, CORE_ADDR pc, const char *name); +extern int gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, const char *name); extern void set_gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline); /* A target might have problems with watchpoints as soon as the stack diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index 37281ba..ee15f29 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -600,7 +600,7 @@ f:CORE_ADDR:skip_trampoline_code:struct frame_info *frame, CORE_ADDR pc:frame, p # a step-resume breakpoint to get us past the dynamic linker. m:CORE_ADDR:skip_solib_resolver:CORE_ADDR pc:pc::generic_skip_solib_resolver::0 # Some systems also have trampoline code for returning from shared libs. -m:int:in_solib_return_trampoline:CORE_ADDR pc, char *name:pc, name::generic_in_solib_return_trampoline::0 +m:int:in_solib_return_trampoline:CORE_ADDR pc, const char *name:pc, name::generic_in_solib_return_trampoline::0 # A target might have problems with watchpoints as soon as the stack # frame of the current function has been destroyed. This mostly happens diff --git a/gdb/hppa-hpux-tdep.c b/gdb/hppa-hpux-tdep.c index f8336e0..89d9e6d 100644 --- a/gdb/hppa-hpux-tdep.c +++ b/gdb/hppa-hpux-tdep.c @@ -230,7 +230,7 @@ hppa64_hpux_in_solib_call_trampoline (struct gdbarch *gdbarch, static int hppa_hpux_in_solib_return_trampoline (struct gdbarch *gdbarch, - CORE_ADDR pc, char *name) + CORE_ADDR pc, const char *name) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); struct unwind_table_entry *u; @@ -981,7 +981,7 @@ hppa64_hpux_search_dummy_call_sequence (struct gdbarch *gdbarch, CORE_ADDR pc, ALL_OBJFILE_MSYMBOLS (obj, msym) { CORE_ADDR begin, end; - char *name; + const char *name; gdb_byte buf[2 * HPPA_INSN_SIZE]; int offset; diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c index eb114ef..61800b4 100644 --- a/gdb/i386-linux-tdep.c +++ b/gdb/i386-linux-tdep.c @@ -254,7 +254,7 @@ static int i386_linux_sigtramp_p (struct frame_info *this_frame) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); @@ -279,7 +279,7 @@ i386_linux_dwarf_signal_frame_p (struct gdbarch *gdbarch, struct frame_info *this_frame) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); diff --git a/gdb/i386-nto-tdep.c b/gdb/i386-nto-tdep.c index 7970083..4793db5 100644 --- a/gdb/i386-nto-tdep.c +++ b/gdb/i386-nto-tdep.c @@ -281,7 +281,7 @@ static int i386nto_sigtramp_p (struct frame_info *this_frame) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); return name && strcmp ("__signalstub", name) == 0; diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c index a9e395e..e0964de 100644 --- a/gdb/i386-sol2-tdep.c +++ b/gdb/i386-sol2-tdep.c @@ -55,7 +55,7 @@ static int i386_sol2_sigtramp_p (struct frame_info *this_frame) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); return (name && (strcmp ("sigacthandler", name) == 0 diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index f6a6f38..cde14e5 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -2036,7 +2036,7 @@ static int i386_in_stack_tramp_p (struct gdbarch *gdbarch, CORE_ADDR pc) { gdb_byte insn; - char *name; + const char *name; /* A stack trampoline is detected if no name is associated to the current pc and if it points inside a trampoline @@ -3294,7 +3294,7 @@ int i386_sigtramp_p (struct frame_info *this_frame) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); return (name && strcmp ("_sigtramp", name) == 0); @@ -3332,7 +3332,7 @@ static int i386_svr4_sigtramp_p (struct frame_info *this_frame) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; /* UnixWare uses _sigacthandler. The origin of the other symbols is currently unknown. */ diff --git a/gdb/i386obsd-tdep.c b/gdb/i386obsd-tdep.c index ea240f5..9005304 100644 --- a/gdb/i386obsd-tdep.c +++ b/gdb/i386obsd-tdep.c @@ -81,7 +81,7 @@ i386obsd_sigtramp_p (struct frame_info *this_frame) size_t buflen = sizeof sigreturn; const int *offset; gdb_byte *buf; - char *name; + const char *name; /* If the function has a valid symbol name, it isn't a trampoline. */ @@ -348,7 +348,7 @@ i386obsd_trapframe_cache (struct frame_info *this_frame, void **this_cache) struct trad_frame_cache *cache; CORE_ADDR func, sp, addr; ULONGEST cs; - char *name; + const char *name; int i; if (*this_cache) @@ -413,7 +413,7 @@ i386obsd_trapframe_sniffer (const struct frame_unwind *self, void **this_prologue_cache) { ULONGEST cs; - char *name; + const char *name; /* Check Current Privilege Level and bail out if we're not executing in kernel space. */ diff --git a/gdb/infcmd.c b/gdb/infcmd.c index cd8bf40..e9e3e32 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -1036,7 +1036,7 @@ step_once (int skip_subroutines, int single_inst, int count, int thread) tp->control.step_range_start = tp->control.step_range_end = 1; else if (tp->control.step_range_end == 0) { - char *name; + const char *name; if (find_pc_partial_function (pc, &name, &tp->control.step_range_start, diff --git a/gdb/infrun.c b/gdb/infrun.c index 85b6e47..d3dab9a 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2367,7 +2367,7 @@ struct execution_control_state int stop_func_filled_in; CORE_ADDR stop_func_start; CORE_ADDR stop_func_end; - char *stop_func_name; + const char *stop_func_name; int new_thread_event; int wait_some_more; }; diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c index 17bfd6a..0a006ca 100644 --- a/gdb/m32c-tdep.c +++ b/gdb/m32c-tdep.c @@ -1834,7 +1834,7 @@ m32c_analyze_prologue (struct gdbarch *arch, static CORE_ADDR m32c_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip) { - char *name; + const char *name; CORE_ADDR func_addr, func_end, sal_end; struct m32c_prologue p; @@ -2353,7 +2353,7 @@ m32c_skip_trampoline_code (struct frame_info *frame, CORE_ADDR stop_pc) someone loaded a new executable, and I'm not quite sure of the best way to do that. find_pc_partial_function does do some caching, so we'll see how this goes. */ - char *name; + const char *name; CORE_ADDR start, end; if (find_pc_partial_function (stop_pc, &name, &start, &end)) @@ -2586,7 +2586,7 @@ m32c_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset) { - char *name; + const char *name; CORE_ADDR func_addr, func_end, sal_end; struct m32c_prologue p; diff --git a/gdb/m32r-linux-tdep.c b/gdb/m32r-linux-tdep.c index de5ec4b..dce1a88 100644 --- a/gdb/m32r-linux-tdep.c +++ b/gdb/m32r-linux-tdep.c @@ -173,7 +173,7 @@ m32r_linux_rt_sigtramp_start (CORE_ADDR pc, struct frame_info *this_frame) } static int -m32r_linux_pc_in_sigtramp (CORE_ADDR pc, char *name, +m32r_linux_pc_in_sigtramp (CORE_ADDR pc, const char *name, struct frame_info *this_frame) { /* If we have NAME, we can optimize the search. The trampolines are @@ -293,7 +293,7 @@ m32r_linux_sigtramp_frame_sniffer (const struct frame_unwind *self, void **this_cache) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (m32r_linux_pc_in_sigtramp (pc, name, this_frame)) diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c index a8cfdb2..fea14bf 100644 --- a/gdb/mep-tdep.c +++ b/gdb/mep-tdep.c @@ -1911,7 +1911,7 @@ mep_analyze_prologue (struct gdbarch *gdbarch, static CORE_ADDR mep_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) { - char *name; + const char *name; CORE_ADDR func_addr, func_end; struct mep_prologue p; diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c index d9f54ac..ca6d129 100644 --- a/gdb/microblaze-tdep.c +++ b/gdb/microblaze-tdep.c @@ -228,7 +228,7 @@ microblaze_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR current_pc, struct microblaze_frame_cache *cache) { - char *name; + const char *name; CORE_ADDR func_addr, func_end, addr, stop, prologue_end_addr = 0; unsigned long insn; int rn, rd, ra, rb, imm; diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 63b449d..a670cd3 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -5313,7 +5313,7 @@ static CORE_ADDR mips_skip_mips16_trampoline_code (struct frame_info *frame, CORE_ADDR pc) { struct gdbarch *gdbarch = get_frame_arch (frame); - char *name; + const char *name; CORE_ADDR start_addr; /* Find the starting address and name of the function containing the PC. */ diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c index effeaabd..116a03e 100644 --- a/gdb/mn10300-tdep.c +++ b/gdb/mn10300-tdep.c @@ -1061,7 +1061,7 @@ mn10300_analyze_prologue (struct gdbarch *gdbarch, static CORE_ADDR mn10300_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) { - char *name; + const char *name; CORE_ADDR func_addr, func_end; struct mn10300_prologue p; diff --git a/gdb/moxie-tdep.c b/gdb/moxie-tdep.c index 7231486..d55e896 100644 --- a/gdb/moxie-tdep.c +++ b/gdb/moxie-tdep.c @@ -218,7 +218,7 @@ static CORE_ADDR moxie_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) { CORE_ADDR func_addr = 0, func_end = 0; - char *func_name; + const char *func_name; /* See if we can determine the end of the prologue via the symbol table. If so, then return either PC, or the PC after the prologue, whichever diff --git a/gdb/mt-tdep.c b/gdb/mt-tdep.c index 4a51a60..268be86 100644 --- a/gdb/mt-tdep.c +++ b/gdb/mt-tdep.c @@ -408,7 +408,7 @@ mt_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); CORE_ADDR func_addr = 0, func_end = 0; - char *func_name; + const char *func_name; unsigned long instr; if (find_pc_partial_function (pc, &func_name, &func_addr, &func_end)) diff --git a/gdb/nbsd-tdep.c b/gdb/nbsd-tdep.c index 4491f9c..b4e152d 100644 --- a/gdb/nbsd-tdep.c +++ b/gdb/nbsd-tdep.c @@ -40,7 +40,7 @@ nbsd_lp64_solib_svr4_fetch_link_map_offsets (void) } int -nbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) +nbsd_pc_in_sigtramp (CORE_ADDR pc, const char *func_name) { /* Check for libc-provided signal trampoline. All such trampolines have function names which begin with "__sigtramp". */ diff --git a/gdb/nbsd-tdep.h b/gdb/nbsd-tdep.h index 8c731f7..cd6ea3b 100644 --- a/gdb/nbsd-tdep.h +++ b/gdb/nbsd-tdep.h @@ -23,6 +23,6 @@ struct link_map_offsets *nbsd_ilp32_solib_svr4_fetch_link_map_offsets (void); struct link_map_offsets *nbsd_lp64_solib_svr4_fetch_link_map_offsets (void); -int nbsd_pc_in_sigtramp (CORE_ADDR, char *); +int nbsd_pc_in_sigtramp (CORE_ADDR, const char *); #endif /* NBSD_TDEP_H */ diff --git a/gdb/ppcobsd-tdep.c b/gdb/ppcobsd-tdep.c index 4704d7a..878571a 100644 --- a/gdb/ppcobsd-tdep.c +++ b/gdb/ppcobsd-tdep.c @@ -130,7 +130,7 @@ ppcobsd_sigtramp_frame_sniffer (const struct frame_unwind *self, CORE_ADDR pc = get_frame_pc (this_frame); CORE_ADDR start_pc = (pc & ~(ppcobsd_page_size - 1)); const int *offset; - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (name) diff --git a/gdb/remote-mips.c b/gdb/remote-mips.c index 01f780f..5e197df 100644 --- a/gdb/remote-mips.c +++ b/gdb/remote-mips.c @@ -1954,7 +1954,7 @@ mips_wait (struct target_ops *ops, is not a normal breakpoint. */ if (strcmp (target_shortname, "lsi") == 0) { - char *func_name; + const char *func_name; CORE_ADDR func_start; CORE_ADDR pc = regcache_read_pc (get_current_regcache ()); diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index ca488c3..a8ff777 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -2189,7 +2189,7 @@ rs6000_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr) static int rs6000_in_solib_return_trampoline (struct gdbarch *gdbarch, - CORE_ADDR pc, char *name) + CORE_ADDR pc, const char *name) { return name && !strncmp (name, "@FIX", 4); } diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c index 9bd73cd..35ae6f6 100644 --- a/gdb/rx-tdep.c +++ b/gdb/rx-tdep.c @@ -353,7 +353,7 @@ rx_analyze_prologue (CORE_ADDR start_pc, static CORE_ADDR rx_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) { - char *name; + const char *name; CORE_ADDR func_addr, func_end; struct rx_prologue p; @@ -67,7 +67,7 @@ static void skip_file_command (char *arg, int from_tty); static void skip_info (char *arg, int from_tty); static void add_skiplist_entry (struct skiplist_entry *e); -static void skip_function_pc (CORE_ADDR pc, char *name, +static void skip_function_pc (CORE_ADDR pc, const char *name, struct gdbarch *arch, int pending); @@ -133,7 +133,7 @@ static void skip_function_command (char *arg, int from_tty) { CORE_ADDR func_pc; - char *name = NULL; + const char *name = NULL; /* Default to the current function if no argument is given. */ if (arg == 0) @@ -397,7 +397,7 @@ skip_delete_command (char *arg, int from_tty) function name and add it to the list. */ static void -skip_function_pc (CORE_ADDR pc, char *name, struct gdbarch *arch, +skip_function_pc (CORE_ADDR pc, const char *name, struct gdbarch *arch, int pending) { struct skiplist_entry *e = XZALLOC (struct skiplist_entry); @@ -524,7 +524,7 @@ skip_re_set (void) CORE_ADDR pc = sal.pc; CORE_ADDR func_start = 0; struct gdbarch *arch = get_sal_arch (sal); - char *func_name; + const char *func_name; if (find_pc_partial_function (pc, &func_name, &func_start, 0)) { diff --git a/gdb/sparc-sol2-tdep.c b/gdb/sparc-sol2-tdep.c index 33361ce..aa3543f 100644 --- a/gdb/sparc-sol2-tdep.c +++ b/gdb/sparc-sol2-tdep.c @@ -66,7 +66,7 @@ const struct sparc_gregset sparc32_sol2_gregset = ignore this. */ int -sparc_sol2_pc_in_sigtramp (CORE_ADDR pc, char *name) +sparc_sol2_pc_in_sigtramp (CORE_ADDR pc, const char *name) { return (name && (strcmp (name, "sigacthandler") == 0 || strcmp (name, "ucbsigvechandler") == 0 @@ -152,7 +152,7 @@ sparc32_sol2_sigtramp_frame_sniffer (const struct frame_unwind *self, void **this_cache) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (sparc_sol2_pc_in_sigtramp (pc, name)) diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h index 3a91301..67c2a3e8f 100644 --- a/gdb/sparc-tdep.h +++ b/gdb/sparc-tdep.h @@ -215,7 +215,7 @@ extern void sparc32_collect_fpregset (const struct regcache *regcache, /* Register offsets for Solaris 2. */ extern const struct sparc_gregset sparc32_sol2_gregset; -extern int sparc_sol2_pc_in_sigtramp (CORE_ADDR pc, char *name); +extern int sparc_sol2_pc_in_sigtramp (CORE_ADDR pc, const char *name); extern char *sparc_sol2_static_transform_name (char *name); diff --git a/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c index 00c4d97..35431b0 100644 --- a/gdb/sparc64-sol2-tdep.c +++ b/gdb/sparc64-sol2-tdep.c @@ -130,7 +130,7 @@ sparc64_sol2_sigtramp_frame_sniffer (const struct frame_unwind *self, void **this_cache) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (sparc_sol2_pc_in_sigtramp (pc, name)) diff --git a/gdb/sparc64fbsd-tdep.c b/gdb/sparc64fbsd-tdep.c index a083553..f58e73b 100644 --- a/gdb/sparc64fbsd-tdep.c +++ b/gdb/sparc64fbsd-tdep.c @@ -84,7 +84,7 @@ sparc64fbsd_collect_fpregset (const struct regset *regset, /* Signal trampolines. */ static int -sparc64fbsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +sparc64fbsd_pc_in_sigtramp (CORE_ADDR pc, const char *name) { return (name && strcmp (name, "__sigtramp") == 0); } @@ -189,7 +189,7 @@ sparc64fbsd_sigtramp_frame_sniffer (const struct frame_unwind *self, void **this_cache) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (sparc64fbsd_pc_in_sigtramp (pc, name)) diff --git a/gdb/sparc64nbsd-tdep.c b/gdb/sparc64nbsd-tdep.c index e80bad8..273fb26 100644 --- a/gdb/sparc64nbsd-tdep.c +++ b/gdb/sparc64nbsd-tdep.c @@ -79,7 +79,7 @@ static const CORE_ADDR sparc64nbsd_sigtramp_start = 0xffffffffffffdee4ULL; static const CORE_ADDR sparc64nbsd_sigtramp_end = 0xffffffffffffe000ULL; static int -sparc64nbsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +sparc64nbsd_pc_in_sigtramp (CORE_ADDR pc, const char *name) { if (pc >= sparc64nbsd_sigtramp_start && pc < sparc64nbsd_sigtramp_end) return 1; @@ -214,7 +214,7 @@ sparc64nbsd_sigtramp_frame_sniffer (const struct frame_unwind *self, void **this_cache) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (sparc64nbsd_pc_in_sigtramp (pc, name)) diff --git a/gdb/sparc64obsd-tdep.c b/gdb/sparc64obsd-tdep.c index e5baa08..6148eab 100644 --- a/gdb/sparc64obsd-tdep.c +++ b/gdb/sparc64obsd-tdep.c @@ -93,7 +93,7 @@ static const int sparc64obsd_sigreturn_offset[] = { }; static int -sparc64obsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +sparc64obsd_pc_in_sigtramp (CORE_ADDR pc, const char *name) { CORE_ADDR start_pc = (pc & ~(sparc64obsd_page_size - 1)); unsigned long insn; @@ -182,7 +182,7 @@ sparc64obsd_sigtramp_frame_sniffer (const struct frame_unwind *self, void **this_cache) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (sparc64obsd_pc_in_sigtramp (pc, name)) @@ -259,7 +259,7 @@ sparc64obsd_trapframe_sniffer (const struct frame_unwind *self, { CORE_ADDR pc; ULONGEST pstate; - char *name; + const char *name; /* Check whether we are in privileged mode, and bail out if we're not. */ pstate = get_frame_register_unsigned (this_frame, SPARC64_PSTATE_REGNUM); diff --git a/gdb/sparcnbsd-tdep.c b/gdb/sparcnbsd-tdep.c index bb68453..9afbbcf 100644 --- a/gdb/sparcnbsd-tdep.c +++ b/gdb/sparcnbsd-tdep.c @@ -87,7 +87,7 @@ static const CORE_ADDR sparc32nbsd_sigtramp_start = 0xeffffef0; static const CORE_ADDR sparc32nbsd_sigtramp_end = 0xeffffff0; static int -sparc32nbsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +sparc32nbsd_pc_in_sigtramp (CORE_ADDR pc, const char *name) { if (pc >= sparc32nbsd_sigtramp_start && pc < sparc32nbsd_sigtramp_end) return 1; @@ -238,7 +238,7 @@ sparc32nbsd_sigcontext_frame_sniffer (const struct frame_unwind *self, void **this_cache) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (sparc32nbsd_pc_in_sigtramp (pc, name)) diff --git a/gdb/sparcobsd-tdep.c b/gdb/sparcobsd-tdep.c index 2380363..a8824cd 100644 --- a/gdb/sparcobsd-tdep.c +++ b/gdb/sparcobsd-tdep.c @@ -47,7 +47,7 @@ static const int sparc32obsd_page_size = 4096; static int -sparc32obsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +sparc32obsd_pc_in_sigtramp (CORE_ADDR pc, const char *name) { CORE_ADDR start_pc = (pc & ~(sparc32obsd_page_size - 1)); unsigned long insn; @@ -127,7 +127,7 @@ sparc32obsd_sigtramp_frame_sniffer (const struct frame_unwind *self, void **this_cache) { CORE_ADDR pc = get_frame_pc (this_frame); - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (sparc32obsd_pc_in_sigtramp (pc, name)) diff --git a/gdb/symtab.h b/gdb/symtab.h index d4cb337..994f9f2 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -952,14 +952,14 @@ extern struct symbol *find_pc_function (CORE_ADDR); extern struct symbol *find_pc_sect_function (CORE_ADDR, struct obj_section *); -extern int find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, char **name, +extern int find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr, int *is_gnu_ifunc_p); /* lookup function from address, return name, start addr and end addr. */ -extern int find_pc_partial_function (CORE_ADDR, char **, CORE_ADDR *, +extern int find_pc_partial_function (CORE_ADDR, const char **, CORE_ADDR *, CORE_ADDR *); extern void clear_pc_function_cache (void); diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c index 8722058..ef50a98 100644 --- a/gdb/tui/tui-stack.c +++ b/gdb/tui/tui-stack.c @@ -378,7 +378,8 @@ tui_show_frame_info (struct frame_info *fi) } else { - if (find_pc_partial_function (get_frame_pc (fi), (char **) NULL, + if (find_pc_partial_function (get_frame_pc (fi), + (const char **) NULL, &low, (CORE_ADDR) 0) == 0) { /* There is no symbol available for current PC. There is no diff --git a/gdb/vaxobsd-tdep.c b/gdb/vaxobsd-tdep.c index d5f4ba6..55515f3 100644 --- a/gdb/vaxobsd-tdep.c +++ b/gdb/vaxobsd-tdep.c @@ -65,7 +65,7 @@ vaxobsd_sigtramp_sniffer (const struct frame_unwind *self, CORE_ADDR start_pc = (pc & ~(vaxobsd_page_size - 1)); CORE_ADDR sigreturn_addr = start_pc + vaxobsd_sigreturn_offset; gdb_byte *buf; - char *name; + const char *name; find_pc_partial_function (pc, &name, NULL, NULL); if (name) diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 140be38..2f2215a 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -1118,7 +1118,7 @@ handle_exception (struct target_waitstatus *ourstatus) cygwin later in the process and will be sent as a cygwin-specific-signal. So, ignore SEGVs if they show up within the text segment of the DLL itself. */ - char *fn; + const char *fn; CORE_ADDR addr = (CORE_ADDR) (uintptr_t) current_event.u.Exception.ExceptionRecord.ExceptionAddress; diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c index 23ae60b..cfef755 100644 --- a/gdb/xstormy16-tdep.c +++ b/gdb/xstormy16-tdep.c @@ -413,7 +413,7 @@ static CORE_ADDR xstormy16_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) { CORE_ADDR func_addr = 0, func_end = 0; - char *func_name; + const char *func_name; if (find_pc_partial_function (pc, &func_name, &func_addr, &func_end)) { |