Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First time use not working #61

Open
hudi84 opened this issue Dec 8, 2022 · 2 comments
Open

First time use not working #61

hudi84 opened this issue Dec 8, 2022 · 2 comments

Comments

@hudi84
Copy link

hudi84 commented Dec 8, 2022

Hi all maybe someone can help me here. I tried to use puncover on a fresh debian 11 installation.
I installed puncover with

apt-get install pip
pip3 install puncover

When I try it with a simple little program, this is what I get (same result when setting --arm_tools_dir or --gcc_tools_base to the appropriate correct subdir (using xPacks arm-none-eabi for bare metal here):

dev@qemuarm:~/project_dir$ puncover --elf_file main.elf
DEPRECATED: argument --arm_tools_dir will be removed, use --gcc_tools_base instead.
parsing ELF at main.elf
Traceback (most recent call last):
File "/usr/local/bin/puncover", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.9/dist-packages/puncover/puncover.py", line 69, in main
builder.build_if_needed()
File "/usr/local/lib/python3.9/dist-packages/puncover/builders.py", line 32, in build_if_needed
self.build()
File "/usr/local/lib/python3.9/dist-packages/puncover/builders.py", line 22, in build
self.collector.parse_elf(self.get_elf_path())
File "/usr/local/lib/python3.9/dist-packages/puncover/collector.py", line 306, in parse_elf
self.parse_assembly_text("".join(self.gcc_tools.get_assembly_lines(elf_file)))
File "/usr/local/lib/python3.9/dist-packages/puncover/gcc_tools.py", line 28, in get_assembly_lines
return self.gcc_tool_lines('objdump', ['-dslw', os.path.basename(elf_file)], os.path.dirname(elf_file))
File "/usr/local/lib/python3.9/dist-packages/puncover/gcc_tools.py", line 24, in gcc_tool_lines
proc = subprocess.Popen([self.gcc_tool_path(name)] + args, stdout=subprocess.PIPE, cwd=cwd)
File "/usr/lib/python3.9/subprocess.py", line 951, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.9/subprocess.py", line 1823, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: ''

I am not a python expert. But searching around in the code a little makes me feel that the subprocess.Popen interface has changed and the "objcopy" executable parameter is not forwarded into this call??? I also have added some prints to gcc_tools.py and the subprocces call that is built up there can be executed on the command line without any problems...

Hope someone can help me with this

Didi

@noahp
Copy link
Collaborator

noahp commented Jan 5, 2023

Hello @hudi84 , thank you for reporting this issue!

You'll need to specify the tools prefix as described in the help:

❯ puncover --help                                      
usage: puncover [-h] [--arm_tools_dir ARM_TOOLS_DIR] [--gcc_tools_base GCC_TOOLS_BASE] --elf_file ELF_FILE [--src_root SRC_ROOT] [--build_dir BUILD_DIR] [--debug] [--port PORT] [--host HOST] [--no-open-browser]

Analyses C/C++ build output for code size, static variables, and stack usage.

options:
  -h, --help            show this help message and exit
  --arm_tools_dir ARM_TOOLS_DIR
                        DEPRECATED! location of your arm tools.
  --gcc_tools_base GCC_TOOLS_BASE
                        filename prefix for your gcc tools, e.g. ~/arm-cs-tools/bin/arm-none-eabi-

For example:

❯ puncover --elf_file test.elf --gcc_tools_base ~/Downloads/xpack-arm-none-eabi-gcc-11.2.1-1.2-linux-x64/bin/arm-none-eabi-

Notice the prefix includes arm-none-eabi-.

Let us know if that fixes the problem!

@Ecco
Copy link

Ecco commented Jan 13, 2023

Got hit by the same problem. A workaround was to pass an absolute path for the elf file. Like this:

puncover \
  --elf_file /path/to/my/test.elf \
  --gcc_tools_base ~/Downloads/xpack-arm-none-eabi-gcc-11.2.1-1.2-linux-x64/bin/arm-none-eabi-

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants