public inbox for gdb-cvs@sourceware.org help / color / mirror / Atom feed
From: Hannes Domani <ssbssa@sourceware.org> To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Fix calling convention of thread entry point Date: Mon, 28 Nov 2022 19:44:50 +0000 (GMT) [thread overview] Message-ID: <20221128194450.DC8933858C62@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1d39fec4aeacc53f6eb696eaa846f8f07948fcf5 commit 1d39fec4aeacc53f6eb696eaa846f8f07948fcf5 Author: Hannes Domani <ssbssa@yahoo.de> Date: Mon Nov 28 19:22:38 2022 +0100 Fix calling convention of thread entry point For i686 the CreateThread entry point function needs the WINAPI (stdcall) calling convention: ../../gdb/windows-nat.c: In constructor 'windows_nat_target::windows_nat_target()': ../../gdb/windows-nat.c:450:56: error: invalid user-defined conversion from 'windows_nat_target::windows_nat_target()::<lambda(LPVOID)>' to 'LPTHREAD_START_ROUTINE' {aka 'long unsigned int (__attribute__((stdcall)) *)(void*)'} [-fpermissive] 450 | HANDLE bg_thread = CreateThread (nullptr, 64 * 1024, fn, this, 0, nullptr); | ^~ ../../gdb/windows-nat.c:444:13: note: candidate is: 'constexpr windows_nat_target::windows_nat_target()::<lambda(LPVOID)>::operator DWORD (*)(LPVOID)() const' (near match) 444 | auto fn = [] (LPVOID self) -> DWORD | ^ ../../gdb/windows-nat.c:444:13: note: no known conversion from 'DWORD (*)(LPVOID)' {aka 'long unsigned int (*)(void*)'} to 'LPTHREAD_START_ROUTINE' {aka 'long unsigned int (__attribute__((stdcall)) *)(void*)'} Since it's not possible to change the calling convention of a lambda, I've moved it to a separate function. Diff: --- gdb/windows-nat.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 5d506507b6d..f61f6c1cb35 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -344,6 +344,9 @@ private: BOOL windows_continue (DWORD continue_status, int id, int killed, bool last_call = false); + /* Helper function to start process_thread. */ + static DWORD WINAPI process_thread_starter (LPVOID self); + /* This function implements the background thread that starts inferiors and waits for events. */ void process_thread (); @@ -404,13 +407,8 @@ windows_nat_target::windows_nat_target () m_response_event (CreateEvent (nullptr, false, false, nullptr)), m_wait_event (make_serial_event ()) { - auto fn = [] (LPVOID self) -> DWORD - { - ((windows_nat_target *) self)->process_thread (); - return 0; - }; - - HANDLE bg_thread = CreateThread (nullptr, 64 * 1024, fn, this, 0, nullptr); + HANDLE bg_thread = CreateThread (nullptr, 64 * 1024, + process_thread_starter, this, 0, nullptr); CloseHandle (bg_thread); } @@ -453,6 +451,13 @@ wait_for_single (HANDLE handle, DWORD howlong) } } +DWORD WINAPI +windows_nat_target::process_thread_starter (LPVOID self) +{ + ((windows_nat_target *) self)->process_thread (); + return 0; +} + void windows_nat_target::process_thread () {
reply other threads:[~2022-11-28 19:44 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20221128194450.DC8933858C62@sourceware.org \ --to=ssbssa@sourceware.org \ --cc=gdb-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).