[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 created this revision. diazhector98 added a reviewer: wallace. Herald added a project: LLDB. Herald added a subscriber: lldb-commits. . Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D74636 Files: lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { + "type": "boolean", + "description": "Inherit the VSCode Environment Variables", + "default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244748. diazhector98 added a comment. Add change Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { + "type": "boolean", + "description": "Inherit the VSCode Environment Variables", + "default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244749. diazhector98 added a comment. Adding the test files Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { + "type": "boolean", + "description": "Inherit the VSCode Environment Variables", + "default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,3 @@ +int main(int argc, char const *argv[]) { + +} Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,21 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots +def test_completions(self): +""" +Tests the environment variables +""" Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,3 @@ +int main(int argc, char const *argv[]) { + +} Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,21 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots +def test_completions(self): +""" +Tests the environment variables +""" ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244763. diazhector98 added a comment. Continued repair Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { + "type": "boolean", + "description": "Inherit the VSCode Environment Variables", + "default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +extern char **environ; + +int main(int argc, char const *argv[], char const *envp[]) { +char** env_var_pointer = environ; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer) { +printf("%s\n", env_variable); +} +return 0; +} \ No newline at end of file Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,33 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots +def test_environment_variable(self): +""" +Tests the environment variables +""" +program = self.getBuildArtifact("a.out") +path_env_variable = 'PATH='+os.environ['PATH'] +self.build_and_launch(program, inheritEnvironment=False) +self.continue_to_exit() +output = self.get_stdout().encode('utf-8') +lines = output.splitlines() +found = False +for line in lines: +if line.startswith('PATH='): +found = True +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") +self.assertTrue(found, 'PATH environment variable not found') + \ No newline at end of file Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +extern char **environ; + +int main(int argc, char const *argv[], char const *envp[]) { +char** env_var_pointer = environ; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer) { +printf("%s\n", env_variable); +} +return 0; +} \ No newline at end of file Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py =
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244767. diazhector98 added a comment. Continue repair Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +extern char **environ; + +int main(int argc, char const *argv[], char const *envp[]) { +char** env_var_pointer = environ; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer) { +printf("%s\n", env_variable); +} +return 0; +} \ No newline at end of file Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,33 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots +def test_environment_variable(self): +""" +Tests the environment variables +""" +program = self.getBuildArtifact("a.out") +path_env_variable = 'PATH='+os.environ['PATH'] +self.build_and_launch(program, inheritEnvironment=False) +self.continue_to_exit() +output = self.get_stdout().encode('utf-8') +lines = output.splitlines() +found = False +for line in lines: +if line.startswith('PATH='): +found = True +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") +self.assertTrue(found, 'PATH environment variable not found') + \ No newline at end of file Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -570,7 +570,7 @@ disableSTDIO=False, shellExpandArguments=False, trace=False, initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, sourcePath=None, - debuggerRoot=None, launchCommands=None): + debuggerRoot=None, launchCommands=None, inheritEnvironment=False): args_dict = { 'program': program } @@ -605,6 +605,8 @@ args_dict['debuggerRoot'] = debuggerRoot if launchCommands: args_dict['launchCommands'] = launchCommands +if inheritEnvironment: +args_dict['inheritEnvironment'] = inheritEnvironment command_dict = { 'command': 'launch', 'type': 'request', @@ -912,7 +914,8 @@ initCommands=options.initCmds, preRunCommands=options.preRunCmds, stopCommands=options.stopCmds, - exitCommands=options.exitCmds) + exitCommands=options.exitCmds + inheritEnvironment=options.inheritEnvironment) if response['success']: if options.sourceBreakpoints: Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py === --
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244769. diazhector98 added a comment. Continue repair Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +extern char **environ; + +int main(int argc, char const *argv[], char const *envp[]) { +char** env_var_pointer = environ; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer) { +printf("%s\n", env_variable); +} +return 0; +} Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,33 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots +def test_environment_variable(self): +""" +Tests the environment variables +""" +program = self.getBuildArtifact("a.out") +path_env_variable = 'PATH='+os.environ['PATH'] +self.build_and_launch(program, inheritEnvironment=False) +self.continue_to_exit() +output = self.get_stdout().encode('utf-8') +lines = output.splitlines() +found = False +for line in lines: +if line.startswith('PATH='): +found = True +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") +self.assertTrue(found, 'PATH environment variable not found') + Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -570,7 +570,7 @@ disableSTDIO=False, shellExpandArguments=False, trace=False, initCommands=None, preRunCommands=None, stopCommands=None, exitCommands=None, sourcePath=None, - debuggerRoot=None, launchCommands=None): + debuggerRoot=None, launchCommands=None, inheritEnvironment=False): args_dict = { 'program': program } @@ -605,6 +605,8 @@ args_dict['debuggerRoot'] = debuggerRoot if launchCommands: args_dict['launchCommands'] = launchCommands +if inheritEnvironment: +args_dict['inheritEnvironment'] = inheritEnvironment command_dict = { 'command': 'launch', 'type': 'request', @@ -912,7 +914,8 @@ initCommands=options.initCmds, preRunCommands=options.preRunCmds, stopCommands=options.stopCmds, - exitCommands=options.exitCmds) + exitCommands=options.exitCmds, + inheritEnvironment=options.inheritEnvironment) if response['success']: if options.sourceBreakpoints: Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvsc
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244770. diazhector98 added a comment. Continue repair Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp lldb/tools/lldb-vscode/lldb-vscode.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the VSCode Environment Variables", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,8 @@ #include "LLDBUtils.h" #include "VSCode.h" +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1327,6 +1329,8 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); + // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1369,6 +1373,14 @@ // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); + if (launchWithDebuggerEnvironment) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } if (!envs.empty()) g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +extern char **environ; + +int main(int argc, char const *argv[], char const *envp[]) { +char** env_var_pointer = environ; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer) { +printf("%s\n", env_variable); +} +return 0; +} Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,33 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots +def test_environment_variable(self): +""" +Tests the environment variables +""" +program = self.getBuildArtifact("a.out") +path_env_variable = 'PATH='+os.environ['PATH'] +self.build_and_launch(program, inheritEnvironment=False) +self.continue_to_exit() +output = self.get_stdout().encode('utf-8') +lines = output.splitlines() +found = False +for line in lines: +if line.startswith('PATH='): +found = True +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") +self.assertTrue(found, 'PATH environment variable not found') + Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -570,7 +570,7 @@ disableSTDIO=False, shellExpan
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244771. diazhector98 added a comment. Comment Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp lldb/tools/lldb-vscode/lldb-vscode.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the debugger environment when launching a process. Only works for binaries launched directly by LLDB.", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,8 @@ #include "LLDBUtils.h" #include "VSCode.h" +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1327,6 +1329,8 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); + // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1369,6 +1373,14 @@ // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); + if (launchWithDebuggerEnvironment) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } if (!envs.empty()) g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +extern char **environ; + +int main(int argc, char const *argv[], char const *envp[]) { +char** env_var_pointer = environ; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer) { +printf("%s\n", env_variable); +} +return 0; +} Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,33 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why tings aren't working on build bots +def test_environment_variable(self): +""" +Tests the environment variables +""" +program = self.getBuildArtifact("a.out") +path_env_variable = 'PATH='+os.environ['PATH'] +self.build_and_launch(program, inheritEnvironment=False) +self.continue_to_exit() +output = self.get_stdout().encode('utf-8') +lines = output.splitlines() +found = False +for line in lines: +if line.startswith('PATH='): +found = True +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") +self.assertTrue(found, 'PATH environment variable not found') + Index: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py === --- lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py @@ -570,7 +57
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244781. diazhector98 added a comment. Add Makefile Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py lldb/test/API/tools/lldb-vscode/environmentVariables/Makefile lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp lldb/tools/lldb-vscode/lldb-vscode.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the debugger environment when launching a process. Only works for binaries launched directly by LLDB.", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,8 @@ #include "LLDBUtils.h" #include "VSCode.h" +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1327,6 +1329,8 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); + // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1369,6 +1373,14 @@ // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); + if (launchWithDebuggerEnvironment) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } if (!envs.empty()) g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +extern char **environ; + +int main(int argc, char const *argv[], char const *envp[]) { +char** env_var_pointer = environ; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer) { +printf("%s\n", env_variable); +} +return 0; +} Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,52 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +mydir = TestBase.compute_mydir(__file__) + +def checkIfPathIsSame(self,lines, path_env_variable): +for line in lines: +print(line) +if line.startswith('PATH='): +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") +return + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why things aren't working on build bots +def test_environment_variable(self): +""" +Tests the environment variables +""" +program = self.getBuildArtifact("a.out") +path_env_variable = 'PATH='+os.environ['PATH'] +self.build_and_launch(program, inheritEnvironment=True) +self.continue_to_exit() +output = self.get_stdout().encode('utf-8') +lines = output.splitlines() +self.checkIfPathIsSame(lines, path_env_variable) + +@skipIfWindows +@skipIfDarwin +def test_environment_variable_priority(self): +""" +
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244782. diazhector98 added a comment. Removing print Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py lldb/test/API/tools/lldb-vscode/environmentVariables/Makefile lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp lldb/tools/lldb-vscode/lldb-vscode.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the debugger environment when launching a process. Only works for binaries launched directly by LLDB.", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,8 @@ #include "LLDBUtils.h" #include "VSCode.h" +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1327,6 +1329,8 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); + // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1369,6 +1373,14 @@ // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); + if (launchWithDebuggerEnvironment) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } if (!envs.empty()) g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +extern char **environ; + +int main(int argc, char const *argv[], char const *envp[]) { +char** env_var_pointer = environ; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer) { +printf("%s\n", env_variable); +} +return 0; +} Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,51 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +mydir = TestBase.compute_mydir(__file__) + +def checkIfPathIsSame(self,lines, path_env_variable): +for line in lines: +if line.startswith('PATH='): +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") +return + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why things aren't working on build bots +def test_environment_variable(self): +""" +Tests the environment variables +""" +program = self.getBuildArtifact("a.out") +path_env_variable = 'PATH='+os.environ['PATH'] +self.build_and_launch(program, inheritEnvironment=True) +self.continue_to_exit() +output = self.get_stdout().encode('utf-8') +lines = output.splitlines() +self.checkIfPathIsSame(lines, path_env_variable) + +@skipIfWindows +@skipIfDarwin +def test_environment_variable_priority(self): +""" +Tests the environm
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
diazhector98 updated this revision to Diff 244779. diazhector98 added a comment. Adding test for priority Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 Files: lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/vscode.py lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp lldb/tools/lldb-vscode/lldb-vscode.cpp lldb/tools/lldb-vscode/package.json Index: lldb/tools/lldb-vscode/package.json === --- lldb/tools/lldb-vscode/package.json +++ lldb/tools/lldb-vscode/package.json @@ -84,6 +84,11 @@ "description": "Additional environment variables.", "default": [] }, + "inheritEnvironment": { +"type": "boolean", +"description": "Inherit the debugger environment when launching a process. Only works for binaries launched directly by LLDB.", +"default": false + }, "stopOnEntry": { "type": "boolean", "description": "Automatically stop after launch.", Index: lldb/tools/lldb-vscode/lldb-vscode.cpp === --- lldb/tools/lldb-vscode/lldb-vscode.cpp +++ lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -49,6 +49,8 @@ #include "LLDBUtils.h" #include "VSCode.h" +extern char **environ; + #if defined(_WIN32) #ifndef PATH_MAX #define PATH_MAX MAX_PATH @@ -1327,6 +1329,8 @@ auto launchCommands = GetStrings(arguments, "launchCommands"); g_vsc.stop_at_entry = GetBoolean(arguments, "stopOnEntry", false); const auto debuggerRoot = GetString(arguments, "debuggerRoot"); + bool launchWithDebuggerEnvironment = GetBoolean(arguments, "inheritEnvironment", false); + // This is a hack for loading DWARF in .o files on Mac where the .o files // in the debug map of the main executable have relative paths which require @@ -1369,6 +1373,14 @@ // Pass any environment variables along that the user specified. auto envs = GetStrings(arguments, "env"); + if (launchWithDebuggerEnvironment) { +char** env_var_pointer = environ; +std::vector vscode_env_variables; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer){ + vscode_env_variables.push_back(env_variable); +} +envs.insert(std::end(envs), std::begin(vscode_env_variables), std::end(vscode_env_variables)); + } if (!envs.empty()) g_vsc.launch_info.SetEnvironmentEntries(MakeArgv(envs).data(), true); Index: lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/main.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +extern char **environ; + +int main(int argc, char const *argv[], char const *envp[]) { +char** env_var_pointer = environ; +for (char* env_variable = *env_var_pointer; env_variable; env_variable=*++env_var_pointer) { +printf("%s\n", env_variable); +} +return 0; +} Index: lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py === --- /dev/null +++ lldb/test/API/tools/lldb-vscode/environmentVariables/TestVSCode_environmentVariables.py @@ -0,0 +1,52 @@ +""" +Test lldb-vscode completions request +""" + + +import lldbvscode_testcase +import unittest2 +import vscode +from lldbsuite.test import lldbutil +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * + +class TestVSCode_variables(lldbvscode_testcase.VSCodeTestCaseBase): + +mydir = TestBase.compute_mydir(__file__) + +def checkIfPathIsSame(self,lines, path_env_variable): +for line in lines: +print(line) +if line.startswith('PATH='): +self.assertTrue(path_env_variable == line, "PATH environment variable not the same") +return + +@skipIfWindows +@skipIfDarwin # Skip this test for now until we can figure out why things aren't working on build bots +def test_environment_variable(self): +""" +Tests the environment variables +""" +program = self.getBuildArtifact("a.out") +path_env_variable = 'PATH='+os.environ['PATH'] +self.build_and_launch(program, inheritEnvironment=True) +self.continue_to_exit() +output = self.get_stdout().encode('utf-8') +lines = output.splitlines() +self.checkIfPathIsSame(lines, path_env_variable) + +@skipIfWindows +@skipIfDarwin +def test_environment_variable_priority(self): +""" +Tests the environment variables priority +
[Lldb-commits] [PATCH] D74636: [DO NOT REVIEW] Add inheritEnvironment option
JDevlieghere added a comment. Hey Héctor, this is generating a lot of traffic on the lldb-commits mailing list. Phabricator is not really designed to iterate quickly. It's not really a problem per se, but I figured I'd let you know. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74636/new/ https://reviews.llvm.org/D74636 ___ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits