[RFC] Remove START_INFERIOR_TRAPS_EXPECTED macro from nm header
Pedro Alves
pedro@codesourcery.com
Tue Mar 22 09:41:00 GMT 2011
Why's this any better? I claim that it's worse.
START_INFERIOR_TRAPS_EXPECTED isn't ever used by anything
outside of the native target backend implementation ---
it doesn't qualify in the set of macros that are evil for
a multi-arch gdb. Then, nothing in common code _should_
know about how many internal traps are expected
during startup_inferior, but you've just exposed that
detail with to_start_inferior_traps_expected.
--
Pedro Alves
On Tuesday 22 March 2011 00:07:55, Pierre Muller wrote:
> This patch achieves the subject by
> adding a new field to target_ops structure
> called to_start_inferior_traps_expected.
>
> The changes are otherwise quite straightforward,
> but once again, I have no way to even check that this
> compiles for the different native GDB that it affects...
>
> Comments welcome,
>
> Pierre Muller
>
> 2011-03-22 Pierre Muller <muller@ics.u-strasbg.fr>
>
> Replace START_INFERIOR_TRAPS_EXPECTED macro by a new filed in
> target_ops struct named to_start_inferior_traps_expected.
> * config/alpha/alpha-osf3.mh: Set MH_CFLAGS to be able
> to set to_start_inferior_traps_expected correctly.
> config/alpha/nm-osf3.h: Remove START_INFERIOR_TRAPS_EXCEPTED macro.
> * target.h (struct target_ops): Add to_start_inferior_traps_expected
> field.
> * target.c (update_current_target): Inherit field
> to_start_inferior_traps_expected for beneath and set default to 2.
> * alpha-nat.c (_initialize_alpha_nat): Set
> to_start_inferior_traps_expected to 3 if macro _STARTUP_INF_3_TRAPS.
> (darwin_ptrace_him): Use darwin_ops to_start_inferior_traps_expected
> field for startup_inferior parameter.
> * inf-ptrace.c (inf_ptrace_create_inferior): Adapt startup_inferior
> call using ops->toèstart_inferior_traps_expected.
> inf-ttrace.c (inf_ttrace_him): Ditto.
> * procfs.c (procfs_init_inferior): Ditto.
>
> diff --git a/gdb/alpha-nat.c b/gdb/alpha-nat.c
> index 1a55ea9..bb77035 100644
> --- a/gdb/alpha-nat.c
> +++ b/gdb/alpha-nat.c
> @@ -197,6 +197,16 @@ _initialize_alpha_nat (void)
> struct target_ops *t;
>
> t = procfs_target ();
> +
> + /* OSF-3 needs three traps. */
> +#ifdef _STARTUP_INF_3_TRAPS
> +/* Number of traps that happen between exec'ing the shell
> + to run an inferior, and when we finally get to
> + the inferior code. This is 2 on most implementations. */
> +/* was define START_INFERIOR_TRAPS_EXPECTED 3 */
> + t->to_start_inferior_traps_expected = 3;
> +#endif
> +
> add_target (t);
>
> deprecated_add_core_fns (&alpha_osf_core_fns);
> diff --git a/gdb/config/alpha/alpha-osf3.mh b/gdb/config/alpha/alpha-osf3.mh
> index 8dc6f80..1ef7195 100644
> --- a/gdb/config/alpha/alpha-osf3.mh
> +++ b/gdb/config/alpha/alpha-osf3.mh
> @@ -1,5 +1,6 @@
> # Host: Little-endian Alpha running OSF/1-3.x and higher using procfs
> NAT_FILE= nm-osf3.h
> +MH_CFLAGS=-D_STARTUP_INF_3_TRAPS
> NATDEPFILES= corelow.o alpha-nat.o fork-child.o \
> solib-osf.o solib.o procfs.o proc-api.o proc-events.o proc-flags.o \
> proc-why.o dec-thread.o
> diff --git a/gdb/config/alpha/nm-osf3.h b/gdb/config/alpha/nm-osf3.h
> index 626a497..56bf4d9 100644
> --- a/gdb/config/alpha/nm-osf3.h
> +++ b/gdb/config/alpha/nm-osf3.h
> @@ -16,11 +16,6 @@
> You should have received a copy of the GNU General Public License
> along with this program. If not, see <http://www.gnu.org/licenses/>.
> */
>
> -/* Number of traps that happen between exec'ing the shell
> - to run an inferior, and when we finally get to
> - the inferior code. This is 2 on most implementations. */
> -#define START_INFERIOR_TRAPS_EXPECTED 3
> -
> /* Don't trace faults under OSF/1, rely on the posting of the appropriate
> signal if fault tracing is disabled.
> Tracing T_IFAULT under Alpha OSF/1 causes a `floating point enable'
> diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
> index 7be85d5..74c8b5a 100644
> --- a/gdb/darwin-nat.c
> +++ b/gdb/darwin-nat.c
> @@ -1485,7 +1485,7 @@ darwin_ptrace_him (int pid)
>
> darwin_init_thread_list (inf);
>
> - startup_inferior (START_INFERIOR_TRAPS_EXPECTED);
> + startup_inferior (darwin_ops->to_start_inferior_traps_expected);
> }
>
> static void
> diff --git a/gdb/inf-ptrace.c b/gdb/inf-ptrace.c
> index b5e1744..0a3f776 100644
> --- a/gdb/inf-ptrace.c
> +++ b/gdb/inf-ptrace.c
> @@ -142,7 +142,7 @@ inf_ptrace_create_inferior (struct target_ops *ops,
> /* START_INFERIOR_TRAPS_EXPECTED is defined in inferior.h, and will
> be 1 or 2 depending on whether we're starting without or with a
> shell. */
> - startup_inferior (START_INFERIOR_TRAPS_EXPECTED);
> + startup_inferior (ops->to_start_inferior_traps_expected);
>
> /* On some targets, there must be some explicit actions taken after
> the inferior has been started up. */
> diff --git a/gdb/inf-ttrace.c b/gdb/inf-ttrace.c
> index ab075db..7b9ee2d 100644
> --- a/gdb/inf-ttrace.c
> +++ b/gdb/inf-ttrace.c
> @@ -630,7 +630,7 @@ inf_ttrace_him (struct target_ops *ops, int pid)
> /* START_INFERIOR_TRAPS_EXPECTED is defined in inferior.h, and will
> be 1 or 2 depending on whether we're starting without or with a
> shell. */
> - startup_inferior (START_INFERIOR_TRAPS_EXPECTED);
> + startup_inferior (ops->to_start_inferior_traps_expected);
>
> /* On some targets, there must be some explicit actions taken after
> the inferior has been started up. */
> diff --git a/gdb/procfs.c b/gdb/procfs.c
> index 5d7cb23..467af2c 100644
> --- a/gdb/procfs.c
> +++ b/gdb/procfs.c
> @@ -4710,7 +4710,7 @@ procfs_init_inferior (struct target_ops *ops, int pid)
>
> /* Typically two, one trap to exec the shell, one to exec the
> program being debugged. Defined by "inferior.h". */
> - startup_inferior (START_INFERIOR_TRAPS_EXPECTED);
> + startup_inferior (ops->to_start_inferior_traps_expected);
>
> #ifdef SYS_syssgi
> /* On mips-irix, we need to stop the inferior early enough during
> diff --git a/gdb/target.c b/gdb/target.c
> index 45259fd..3ab7248 100644
> --- a/gdb/target.c
> +++ b/gdb/target.c
> @@ -677,6 +677,7 @@ update_current_target (void)
> INHERIT (to_static_tracepoint_marker_at, t);
> INHERIT (to_static_tracepoint_markers_by_strid, t);
> INHERIT (to_traceframe_info, t);
> + INHERIT (to_start_inferior_traps_expected, t);
> INHERIT (to_magic, t);
> /* Do not inherit to_memory_map. */
> /* Do not inherit to_flash_erase. */
> @@ -886,6 +887,7 @@ update_current_target (void)
> de_fault (to_traceframe_info,
> (struct traceframe_info * (*) (void))
> tcomplain);
> + de_fault (to_start_inferior_traps_expected, 2);
> #undef de_fault
>
> /* Finally, position the target-stack beneath the squashed
> diff --git a/gdb/target.h b/gdb/target.h
> index 237d1aa..9842a0a 100644
> --- a/gdb/target.h
> +++ b/gdb/target.h
> @@ -743,6 +743,9 @@ struct target_ops
> re-fetching when necessary. */
> struct traceframe_info *(*to_traceframe_info) (void);
>
> + /* Number of traps expected at startup of target. */
> + int to_start_inferior_traps_expected;
> +
> int to_magic;
> /* Need sub-structure for target machine related rather than comm
> related?
> */
>
>
More information about the Gdb-patches
mailing list