Message ID | 20250307201957.1919-1-daniel-email@gmx.net |
---|---|
State | New |
Headers |
Return-Path: <gdb-patches-bounces~patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A81653858D1E for <patchwork@sourceware.org>; Fri, 7 Mar 2025 20:20:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A81653858D1E Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=gmx.net header.i=daniel-email@gmx.net header.a=rsa-sha256 header.s=s31663417 header.b=IwhWiICx X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by sourceware.org (Postfix) with ESMTPS id 163993858D20 for <gdb-patches@sourceware.org>; Fri, 7 Mar 2025 20:20:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 163993858D20 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.net ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 163993858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741378818; cv=none; b=ILGvVBdWEYsGTDRmCQGrJdUMji2cbiBtYD6JkGYS7FIWY3CVXQG4mdZYN0DN+YhinFlnwTHbRVW25f5cZ/f4UUPsK9n0YD0ECaxR+szHMO+xXnf8C1+s10srJbD6EdkcWBVxOUJSWdpxDam/K7+f+dlM6PfKp11C+qN1Swb+t78= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741378818; c=relaxed/simple; bh=XutIy0EJNLsw+AK2qi64ETexxaNMDyQJhoev05d42j8=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=o+Laa06Nna3RKEyqaSbu6frhGavSpN+HJMtdBAnBSqEbhV0TvTUkeb3s9L3isNizeOfRuKXhTm5UdauOZnLgAMNAZ09x7m8kM2kxAd0+8wcebgxxwuwXGANqiqpN6gkXyH6EU3iUyT5NPaRc41SsJMIJQ6r3mxi45YUuDgtTrh0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 163993858D20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1741378816; x=1741983616; i=daniel-email@gmx.net; bh=8Zv8FNfmYdE5W/YymlwtDhI2ULoHKBts3B4fgd60Hgg=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id: MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=IwhWiICxX9zjhywNRZvCbBEaFNeGgKCYmiqMOje6tB7nzI/LPH0nDFdru0E64CzA 5XuC8BEbapnydDxEb0bNUYDbqDLWPpl1AWpJxpIFm/WE0VFXkE+t2js48foqNNEZb gfcIOMwTI4MtlVsOBTQWl02v8SMYefjF8BprdpSRgBecWwR4ZaEOq6vT3+hF+ecEy cGOuNk5MFePMllmK5GA4w0t1T5YFCAnjJbu0Vg3MQWl0jQHy8SMz3t8eG8swUdyYn aVbp/UCx/1J8/p1aJUnF+zyNfW7Zb/3+wYC0Gjcw8/MM74cPiN/5WUgE32W5rsCzI PIQvRRXSySwkfB/urw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from localhost.localdomain ([79.242.79.73]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MDQic-1u01qg214w-006D0a; Fri, 07 Mar 2025 21:20:16 +0100 From: Daniel Starke <daniel-email@gmx.net> To: gdb-patches@sourceware.org Cc: Daniel Starke <daniel-email@gmx.net> Subject: [PATCH 1/1] gdbsupport: fix environment variable name handling on Windows Date: Fri, 7 Mar 2025 21:19:57 +0100 Message-Id: <20250307201957.1919-1-daniel-email@gmx.net> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:adeQ2V4Ty4Qr0uLpgUPt0DonusSLUlvg3YWHupj4Zx4KWZ5pSky ZLopjM981meOoC0GlHzL7PEva/XHVutrC8BIfpPkexawOqUTlfmeiPG6SzMFZcBcDJCNnIG MKhRhuBnk28ELQNSsdWXzO1sBCXkmWw3ZAbnehy8kRuIaMyLasDENPGYdyK4WC/35BfVKcK AW51dKVGOOgzXyNecvzRw== UI-OutboundReport: notjunk:1;M01:P0:scPghA1f+GY=;60Px3He++OMMBEA/N0NTw/itrf6 Epma63q39yvyQ5jyjveg0qsYwPFWoMNgVOBkrz+NB3PvaNOodpsqBAxoccFjMA/cF2oStBTnE NaXtDpS6FccVAjEST5QEGZU7P9fRe2jh0tP2M7dlx5za6DuXaSPW9r7/XknTi4gd2ua1qnx3o pL5dpM9XVbRaZFmpAGBXyQ/8y4I1GzEa2XmTvQRVvSL9+Q6Ej9mwenVK3towCuoRf8hBIvijG yEu2aQCUKmYUAGZ1XoBi9jDeqaqZRnPLPIEygP0SAnnzv+8ZvuFxeZphDHh00yiKA8pDv1R7S dub73w8xjxqulIHpxKngKObFY0ck9fIlFGp3+SS2sNq2kOllz/BsAdwEDdtuCInWajvV+KMVB QKsKhQ/8mvGI+dTcmCz+F9HdrgFlJ0kUccRm6boXrQmaak20/V2s5CbNiU9Uhph2redMjD3xY 2vZ86zIstcxgoljWttdjR7fVQXGrYUJM4FtHWxB2qucYuxwr/DkOTIoDyLCMYWapV1dZVmuQi k3Vm6RJD2RR/p+R26anhxDiAqjhtQ/tqJjsUBMB1bdTewQCzAe7uftsK6qn2Nr+fbnrSgZktF dzhOxpit+zfa+ZofEya7D18n/6RYkL/1Fb3Djl+DCT6F/gtd66alBOKdrFUPRVnRfPoDTMq7r HmRx8Evsi6sgnMupxMi7GerVMLEyJnQ2IG3MF58ghx+TxpsjBh8Ksoj+EmVr6JvzyKTcdipfk QZ3EHEgLKF527xUacvCxQ5fjtmdk4VlUomey784HLZwD3725tH5kmEgVLdA5jSRqbqKcWVGT9 ETzaslWeokTJQmWotJ4qWPUZhMqgVtvkz8J6jeNEaRmqMTNK9jM6dbE7s+45H7mxIGIKu9LMK gK2cQRBzjodBI5TCpMkeARc4i4eq/bDf0PCM0xGZtMBYIuFCywuhe6NyTk7BE+cK0t4YM3NNb R8diL4LSntIYSSpbXerDvG04tnKY1IeP9lYctG04laBbNQCG8Xqe3WVCWBeP4JwJBRqAFHPuC DciNzKoROVaBhTVm882P3hKD4+VOTigrEzl3QEvD9H5x8zw4d811lApAvi3xADvI9Vs8u9PLL YuXkXbMDcjWT2MisicCVFWJiuyffHK5z+8Zq/wMadRimN07Xf6gdrspfyOivtV95AXgklmRZ8 TfCJX+V/oaAirzaWEEPCE++s2MlrbrIyKyP8oSYxFK3Zowvlz/NF6RQjPyOtFn2IUhhy98Y0G gpPG+X1B/A3EoPIk2wCaQEANXf6OodBBFjJQVidx99IJDMfoVM3itZT0G+EMYApoVtbhpivH8 yuHJnkrUirxbhS9ViCjbB63O2kZvlp1PF4Tdn3j1m5gYukXszob39JB1nm+jwGvVrRT/IgLao naUSqp2eYEeu2Qs/wzNEEbIdqstQtU2R5cvJZDwQR0xcn+52wat4DuinM0 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, URI_TRY_3LD autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list <gdb-patches.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/gdb-patches>, <mailto:gdb-patches-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/gdb-patches/> List-Post: <mailto:gdb-patches@sourceware.org> List-Help: <mailto:gdb-patches-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/gdb-patches>, <mailto:gdb-patches-request@sourceware.org?subject=subscribe> Errors-To: gdb-patches-bounces~patchwork=sourceware.org@sourceware.org |
Series |
[1/1] gdbsupport: fix environment variable name handling on Windows
|
|
Checks
Context | Check | Description |
---|---|---|
linaro-tcwg-bot/tcwg_gdb_build--master-arm | success | Build passed |
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 | success | Build passed |
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 | success | Test passed |
linaro-tcwg-bot/tcwg_gdb_check--master-arm | success | Test passed |
Commit Message
Daniel Starke
March 7, 2025, 8:19 p.m. UTC
The current implementation retrieves the environment variables as it and
compares them in case sensitive manner. Windows, however, does not handle
environment variables case sensitive in most parts. See links below. As a fact,
many Windows environments define "Path" instead of "PATH".
Make the environment variable name handling case in-sensitive for MinGW, which
aims to be Windows native.
Link: https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/getenv-wgetenv?view=msvc-170#remarks
Link: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-7.5#long-description
Signed-off-by: Daniel Starke <daniel-email@gmx.net>
---
gdbsupport/environ.cc | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
--
2.39.5
Comments
>>>>> "Daniel" == Daniel Starke <daniel-email@gmx.net> writes:
Daniel> The current implementation retrieves the environment variables as it and
Daniel> compares them in case sensitive manner. Windows, however, does not handle
Daniel> environment variables case sensitive in most parts. See links below. As a fact,
Daniel> many Windows environments define "Path" instead of "PATH".
Thanks for the patch.
Daniel> Make the environment variable name handling case in-sensitive
Daniel> for MinGW, which aims to be Windows native.
Makes sense but I wonder if there's a cross-debugging issue here. Like
should Linux host with Mingw target be case-insensitive?
Daniel> + if (strnicmp (string, var, var_len) == 0 && string[var_len] == '=')
gdb uses strncasecmp, not strnicmp
Tom
> Daniel> Make the environment variable name handling case in-sensitive > Daniel> for MinGW, which aims to be Windows native. > > Makes sense but I wonder if there's a cross-debugging issue here. Like > should Linux host with Mingw target be case-insensitive? No, I do not think that this makes sense. The environment variables control the host runtime behavior. Therefore, it should be host specific, not target specific. > Daniel> + if (strnicmp (string, var, var_len) == 0 && string[var_len] == '=') > > gdb uses strncasecmp, not strnicmp Should I submit a new patch using strncasecmp()? Best regards, Daniel
>>>>> "Daniel" == daniel-email <daniel-email@gmx.net> writes: >> Makes sense but I wonder if there's a cross-debugging issue here. Like >> should Linux host with Mingw target be case-insensitive? Daniel> No, I do not think that this makes sense. Daniel> The environment variables control the host runtime behavior. I don't think that's correct. "set env" is only used when creating an inferior, not when doing host-side things like "shell" -- in fact I sent patches in this area earlier this year. Daniel> Should I submit a new patch using strncasecmp()? Yes but we should perhaps resolve the other issue first. Tom
>>> Makes sense but I wonder if there's a cross-debugging issue here. Like >>> should Linux host with Mingw target be case-insensitive? > Daniel> No, I do not think that this makes sense. > Daniel> The environment variables control the host runtime behavior. > > I don't think that's correct. "set env" is only used when creating an > inferior, not when doing host-side things like "shell" -- in fact I sent > patches in this area earlier this year. Interesting. The same mechanism seems is used to resolve executable paths. The reason why I came across this was because "show" did not show me the correct content of "PATH" on Windows (see my last patch). So do we need to handle both cases differently? If that is the case I would need someone with deeper knowledge of the environment variable handling in GDB to step in for a patch. Best regards, Daniel
diff --git a/gdbsupport/environ.cc b/gdbsupport/environ.cc index 1b6ca61ee80..75036c10d49 100644 --- a/gdbsupport/environ.cc +++ b/gdbsupport/environ.cc @@ -81,9 +81,14 @@ gdb_environ::clear () static bool match_var_in_string (const char *string, const char *var, size_t var_len) { +#ifdef __MINGW32__ + /* Windows treats all environment variables case in-sensitive. */ + if (strnicmp (string, var, var_len) == 0 && string[var_len] == '=') + return true; +#else if (strncmp (string, var, var_len) == 0 && string[var_len] == '=') return true; - +#endif return false; }