1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-29 20:33:52 +00:00

libbacktrace: look for _pgmptr on Windows (c1c86fa2)

This commit is contained in:
Bartosz Taudul 2024-03-13 00:15:10 +01:00
parent 4e349dd283
commit 11bf33c32c
No known key found for this signature in database
GPG Key ID: B7FE2008B7575DF3

View File

@ -158,6 +158,16 @@ macho_get_executable_path (struct backtrace_state *state,
#endif /* !defined (HAVE_MACH_O_DYLD_H) */ #endif /* !defined (HAVE_MACH_O_DYLD_H) */
#if HAVE_DECL__PGMPTR
#define windows_executable_filename() _pgmptr
#else /* !HAVE_DECL__PGMPTR */
#define windows_executable_filename() NULL
#endif /* !HAVE_DECL__PGMPTR */
/* Initialize the fileline information from the executable. Returns 1 /* Initialize the fileline information from the executable. Returns 1
on success, 0 on failure. */ on success, 0 on failure. */
@ -195,7 +205,7 @@ fileline_initialize (struct backtrace_state *state,
descriptor = -1; descriptor = -1;
called_error_callback = 0; called_error_callback = 0;
for (pass = 0; pass < 8; ++pass) for (pass = 0; pass < 9; ++pass)
{ {
int does_not_exist; int does_not_exist;
@ -208,23 +218,28 @@ fileline_initialize (struct backtrace_state *state,
filename = getexecname (); filename = getexecname ();
break; break;
case 2: case 2:
filename = "/proc/self/exe"; /* Test this before /proc/self/exe, as the latter exists but points
to the wine binary (and thus doesn't work). */
filename = windows_executable_filename ();
break; break;
case 3: case 3:
filename = "/proc/curproc/file"; filename = "/proc/self/exe";
break; break;
case 4: case 4:
filename = "/proc/curproc/file";
break;
case 5:
snprintf (buf, sizeof (buf), "/proc/%ld/object/a.out", snprintf (buf, sizeof (buf), "/proc/%ld/object/a.out",
(long) getpid ()); (long) getpid ());
filename = buf; filename = buf;
break; break;
case 5: case 6:
filename = sysctl_exec_name1 (state, error_callback, data); filename = sysctl_exec_name1 (state, error_callback, data);
break; break;
case 6: case 7:
filename = sysctl_exec_name2 (state, error_callback, data); filename = sysctl_exec_name2 (state, error_callback, data);
break; break;
case 7: case 8:
filename = macho_get_executable_path (state, error_callback, data); filename = macho_get_executable_path (state, error_callback, data);
break; break;
default: default: