From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 91050 invoked by alias); 6 Jan 2020 17:47:30 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 91042 invoked by uid 89); 6 Jan 2020 17:47:30 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=7, 6 X-HELO: sonic309-25.consmr.mail.ir2.yahoo.com Received: from sonic309-25.consmr.mail.ir2.yahoo.com (HELO sonic309-25.consmr.mail.ir2.yahoo.com) (77.238.179.83) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 06 Jan 2020 17:47:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1578332845; bh=a/21HZOJCUADYr9/6mVxko2O0HE1i18ycugNgN7rQ+M=; h=Date:From:To:Subject:References:From:Subject; b=Rynhx/EmXE9I3g5MstCO5F0MmfODYctRFFrWr/Ya4T+7x7iPRrayUbeIaAc5+qugQpxCvQVaArIXfl5VEJZ70P/czzwSlaPQ77llSoSlQcBwSCvxTqtBIi30j0YR0bZhxaDlTbMmQK8+53j8SIefZ+UO87mgFunZrRcK7xdLyMB+lgm3zkxW7Wh5yLo9t74uHI+bCuBcUTg5PovROzP6InzkYuW8W+nFNWxR5t1FhRFjIInltymiKZdchUZuo2l9Fqf0ZQXYXO3q9PCUmEzBPrDYZCznCk7myj4RfTmaBYDFqsyVoxKDm/9IAe6aqgMJWGbvFlu7L9S8XkMT2y4VRA== Received: from sonic.gate.mail.ne1.yahoo.com by sonic309.consmr.mail.ir2.yahoo.com with HTTP; Mon, 6 Jan 2020 17:47:25 +0000 Date: Mon, 06 Jan 2020 17:47:00 -0000 From: "Hannes Domani via gdb-patches" Reply-To: Hannes Domani To: Gdb-patches Message-ID: <271718487.11947642.1578332826544@mail.yahoo.com> Subject: Re: [RFAv3 2/6] Improve process exit status macros on MinGW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable References: <271718487.11947642.1578332826544.ref@mail.yahoo.com> X-IsSubscribed: yes X-SW-Source: 2020-01/txt/msg00122.txt.bz2 While locally fixing a merge-conflict I noticed the following: Am Freitag, 3. Januar 2020, 20:59:45 MEZ hat Pedro Alves Folgendes geschrieben: > Here's the updated patch.=C2=A0 I confirmed that it builds on MinGW-W64 > using my Fedora's cross cross compiler, but I didn't try to run > the resulting GDB (since I'm not on Windows). > diff --git a/gdb/windows-tdep.c b/gdb/windows-tdep.c > index ca9b81df298..58f8838b885 100644 > --- a/gdb/windows-tdep.c > +++ b/gdb/windows-tdep.c > @@ -35,6 +35,57 @@ > #include "solib-target.h" > #include "gdbcore.h" > > +/* Windows signal numbers differ between MinGW flavors and between > +=C2=A0 those and Cygwin.=C2=A0 The below enumeration was gleaned from the > +=C2=A0 respective headers; the ones marked with MinGW64/Cygwin are defin= ed > +=C2=A0 only by MinGW64 and Cygwin, not by mingw.org's MinGW.=C2=A0 FIXME= : We > +=C2=A0 should really have distinct MinGW vs Cygwin OSABIs, and two > +=C2=A0 separate enums, selected at runtime.=C2=A0 */ > + > +enum > +=C2=A0 { > +=C2=A0 WINDOWS_SIGHUP =3D 1,=C2=A0=C2=A0=C2=A0 /* MinGW64/Cygwin */ > +=C2=A0 WINDOWS_SIGINT =3D 2, > +=C2=A0 WINDOWS_SIGQUIT =3D 3,=C2=A0=C2=A0=C2=A0 /* MinGW64/Cygwin */ > +=C2=A0 WINDOWS_SIGILL =3D 4, > +=C2=A0 WINDOWS_SIGTRAP =3D 5,=C2=A0=C2=A0=C2=A0 /* MinGW64/Cygwin */ > +#ifdef __CYGWIN__ > +=C2=A0 WINDOWS_SGABRT =3D 6, > +#else > +=C2=A0 WINDOWS_SIGIOT =3D 6,=C2=A0=C2=A0=C2=A0 /* MinGW64 */ > +#endif > +=C2=A0 WINDOWS_SIGEMT =3D 7,=C2=A0=C2=A0=C2=A0 /* MinGW64/Cygwin */ > +=C2=A0 WINDOWS_SIGFPE =3D 8, > +=C2=A0 WINDOWS_SIGKILL =3D 9,=C2=A0=C2=A0=C2=A0 /* MinGW64/Cygwin */ > +=C2=A0 WINDOWS_SIGBUS =3D 10,=C2=A0=C2=A0=C2=A0 /* MinGW64/Cygwin */ > +=C2=A0 WINDOWS_SIGSEGV =3D 11, > +=C2=A0 WINDOWS_SIGSYS =3D 12,=C2=A0=C2=A0=C2=A0 /* MinGW64/Cygwin */ > +=C2=A0 WINDOWS_SIGPIPE =3D 13,/* MinGW64/Cygwin */ > +=C2=A0 WINDOWS_SIGALRM =3D 14,/* MinGW64/Cygwin */ > +=C2=A0 WINDOWS_SIGTERM =3D 15, > +#ifdef __CYGWIN__ > +=C2=A0 WINDOWS_SIGURG =3D 16, > +=C2=A0 WINDOWS_SIGSTOP =3D 17, > +=C2=A0 WINDOWS_SIGTSTP =3D 18, > +=C2=A0 WINDOWS_SIGCONT =3D 19, > +=C2=A0 WINDOWS_SIGCHLD =3D 20, > +=C2=A0 WINDOWS_SIGTTIN =3D 21, > +=C2=A0 WINDOWS_SIGTTOU =3D 22, > +=C2=A0 WINDOWS_SIGIO =3D 23, > +=C2=A0 WINDOWS_SIGXCPU =3D 24, > +=C2=A0 WINDOWS_SIGXFSZ =3D 25, > +=C2=A0 WINDOWS_SIGVTALRM =3D 26, > +=C2=A0 WINDOWS_SIGPROF =3D 27, > +=C2=A0 WINDOWS_SIGWINCH =3D 28, > +=C2=A0 WINDOWS_SIGLOST =3D 29, > +=C2=A0 WINDOWS_SIGUSR1 =3D 30, > +=C2=A0 WINDOWS_SIGUSR2 =3D 31 > +#else > +=C2=A0 WINDOWS_SIGBREAK =3D 21, > +=C2=A0 WINDOWS_SIGABRT =3D 22 > +#endif > +=C2=A0 }; For __CYGWIN__ it's WINDOWS_SGABRT, otherwise it's WINDOWS_SIGABRT. > + > struct cmd_list_element *info_w32_cmdlist; > > typedef struct thread_information_block_32 > @@ -461,6 +512,83 @@ init_w32_command_list (void) >=C2=A0=C2=A0=C2=A0=C2=A0 } > } > > +/* Implementation of `gdbarch_gdb_signal_to_target'.=C2=A0 */ > + > +static int > +windows_gdb_signal_to_target (struct gdbarch *gdbarch, enum gdb_signal s= ignal) > +{ > +=C2=A0 switch (signal) > +=C2=A0=C2=A0=C2=A0 { > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_0: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return 0; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_HUP: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGHUP; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_INT: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGINT; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_QUIT: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGQUIT; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_ILL: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGILL; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_TRAP: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGTRAP; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_ABRT: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGABRT; I don't think this compiles for cygwin. > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_EMT: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGEMT; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_FPE: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGFPE; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_KILL: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGKILL; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_BUS: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGBUS; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_SEGV: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGSEGV; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_SYS: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGSYS; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_PIPE: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGPIPE; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_ALRM: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGALRM; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_TERM: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGTERM; > +#ifdef __CYGWIN__ > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_URG: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGURG; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_STOP: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGSTOP; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_TSTP: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGTSTP; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_CONT: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGCONT; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_CHLD: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGCHLD; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_TTIN: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGTTIN; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_TTOU: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGTTOU; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_IO: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGIO; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_XCPU: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGXCPU; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_XFSZ: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGXFSZ; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_VTALRM: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGVTALRM; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_PROF: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGPROF; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_WINCH: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGWINCH; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_PWR: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGLOST; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_USR1: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGUSR1; > +=C2=A0=C2=A0=C2=A0 case GDB_SIGNAL_USR2: > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return WINDOWS_SIGUSR2; > +#endif=C2=A0=C2=A0=C2=A0 /* __CYGWIN__ */ > +=C2=A0=C2=A0=C2=A0 } > +=C2=A0 return -1; > +} > + > /* To be called from the various GDB_OSABI_CYGWIN handlers for the >=C2=A0=C2=A0=C2=A0=C2=A0 various Windows architectures and machine types.= =C2=A0 */ > > @@ -477,6 +605,8 @@ windows_init_abi (struct gdbarch_info info, struct gd= barch *gdbarch) >=C2=A0=C2=A0 set_gdbarch_iterate_over_objfiles_in_search_order >=C2=A0=C2=A0=C2=A0=C2=A0 (gdbarch, windows_iterate_over_objfiles_in_search= _order); > > +=C2=A0 set_gdbarch_gdb_signal_to_target (gdbarch, windows_gdb_signal_to_= target); > + >=C2=A0=C2=A0 set_solib_ops (gdbarch, &solib_target_so_ops); > } > > > base-commit: 44f81a76542dbeada2541a05de191ae0ac0fbc2c > -- > 2.14.5