angr / angr-dev

Some helper scripts to set up an environment for angr development.
BSD 2-Clause "Simplified" License
114 stars 95 forks source link

Unable to build `archr` due to `incompatible pointer type` when installing by `/setup.sh -i -e angr` #192

Closed Kalvin2077 closed 1 month ago

Kalvin2077 commented 1 month ago

Description

Building wheels for collected packages: archr
  Building editable for archr (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building editable for archr (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [117 lines of output]
      <string>:12: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
      running editable_wheel
      running build
      Building Archr support libraries
      CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
        Compatibility with CMake < 3.5 will be removed from a future version of
        CMake.

        Update the VERSION argument <min> value or use a ...<max> suffix to tell
        CMake that the project does not need compatibility with older versions.

      -- The C compiler identification is GNU 14.2.1
      -- The CXX compiler identification is GNU 14.2.1
      -- Detecting C compiler ABI info
      -- Detecting C compiler ABI info - done
      -- Check for working C compiler: /usr/bin/cc - skipped
      -- Detecting C compile features
      -- Detecting C compile features - done
      -- Detecting CXX compiler ABI info
      -- Detecting CXX compiler ABI info - done
      -- Check for working CXX compiler: /usr/bin/c++ - skipped
      -- Detecting CXX compile features
      -- Detecting CXX compile features - done
      -- Configuring done (0.5s)
      -- Generating done (0.0s)
      -- Build files have been written to: /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/build
      [1/2] Building C object CMakeFiles/udp_to_tcp.dir/udp_to_tcp.c.o
      FAILED: CMakeFiles/udp_to_tcp.dir/udp_to_tcp.c.o
      /usr/bin/cc -Dudp_to_tcp_EXPORTS  -fPIC -MD -MT CMakeFiles/udp_to_tcp.dir/udp_to_tcp.c.o -MF CMakeFiles/udp_to_tcp.dir/udp_to_tcp.c.o.d -o CMakeFiles/udp_to_tcp.dir/udp_to_tcp.c.o -c /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c: In function ‘get_fd’:
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:79:44: warning: comparison between pointer and integer
         79 |         if (DEBUG && addr->sin_addr.s_addr != NULL)
            |                                            ^~
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:86:52: warning: comparison between pointer and integer
         86 |                 if (DEBUG && addr->sin_addr.s_addr != NULL)
            |                                                    ^~
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c: In function ‘recvfrom’:
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:137:39: error: passing argument 1 of ‘get_fd’ from incompatible pointer type [-Wincompatible-pointer-types]
        137 |         if (fds[sockfd] > 0 || get_fd(src_addr) > 0)
            |                                       ^~~~~~~~
            |                                       |
            |                                       struct sockaddr *
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:77:32: note: expected ‘struct sockaddr_in *’ but argument is of type ‘struct sockaddr *’
         77 | int get_fd(struct sockaddr_in *addr)
            |            ~~~~~~~~~~~~~~~~~~~~^~~~
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:163:16: error: passing argument 1 of ‘set_fd’ from incompatible pointer type [-Wincompatible-pointer-types]
        163 |         set_fd(src_addr, new_fd, sockfd);
            |                ^~~~~~~~
            |                |
            |                struct sockaddr *
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:97:33: note: expected ‘struct sockaddr_in *’ but argument is of type ‘struct sockaddr *’
         97 | void set_fd(struct sockaddr_in *addr, int fd, int udp_fd)
            |             ~~~~~~~~~~~~~~~~~~~~^~~~
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c: In function ‘sendto’:
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:188:34: error: passing argument 1 of ‘get_fd’ from incompatible pointer type [-Wincompatible-pointer-types]
        188 |                 send_fd = get_fd(dst_addr);
            |                                  ^~~~~~~~
            |                                  |
            |                                  const struct sockaddr *
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:77:32: note: expected ‘struct sockaddr_in *’ but argument is of type ‘const struct sockaddr *’
         77 | int get_fd(struct sockaddr_in *addr)
            |            ~~~~~~~~~~~~~~~~~~~~^~~~
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:199:27: warning: passing argument 1 of ‘log_bytes’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
        199 |                 log_bytes(buf, len);
            |                           ^~~
      /home/kv/code/angr-dev/archr/archr/implants/udp_tcp_convert/udp_to_tcp.c:63:22: note: expected ‘char *’ but argument is of type ‘const void *’
         63 | void log_bytes(char *buf, int len)
            |                ~~~~~~^~~
      ninja: build stopped: subcommand failed.
      Traceback (most recent call last):
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 273, in build_editable
          return hook(wheel_directory, config_settings, metadata_directory)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/build_meta.py", line 453, in build_editable
          return self._build_with_temp_dir(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/build_meta.py", line 397, in _build_with_temp_dir
          self.run_setup()
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/build_meta.py", line 313, in run_setup
          exec(code, locals())
        File "<string>", line 92, in <module>
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/__init__.py", line 108, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 184, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 200, in run_commands
          dist.run_commands()
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 970, in run_commands
          self.run_command(cmd)
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/dist.py", line 945, in run_command
          super().run_command(command)
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 989, in run_command
          cmd_obj.run()
        File "<string>", line 76, in run
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
          self.distribution.run_command(command)
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/dist.py", line 945, in run_command
          super().run_command(command)
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 989, in run_command
          cmd_obj.run()
        File "<string>", line 42, in run
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/_distutils/cmd.py", line 337, in execute
          util.execute(func, args, msg, dry_run=self.dry_run)
        File "/home/kv/.virtualenvs/angr/lib/python3.12/site-packages/setuptools/_distutils/util.py", line 331, in execute
          func(*args)
        File "<string>", line 29, in _build_support_libraries
        File "/usr/lib/python3.12/subprocess.py", line 571, in run
          raise CalledProcessError(retcode, process.args,
      subprocess.CalledProcessError: Command '['ninja']' returned non-zero exit status 1.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building editable for archr
Failed to build archr
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (archr)
[!!] 14:22:13 pip failure (--no-build-isolation -e archr).

Steps to reproduce the bug

./setup.sh -i -e angr

Environment

OS: Arch Linux x86_64 Python: 3.12.4 gcc: 14.2.1 20240802 make: GNU Make 4.4.1 cmake: 3.30.2 ninja: 1.12.1

Additional context

No response

rhelmot commented 1 month ago

Looks to be https://gcc.gnu.org/gcc-14/porting_to.html

Kalvin2077 commented 1 month ago

Looks to be https://gcc.gnu.org/gcc-14/porting_to.html

Solved.

Add a compile option in archr/archr/implants/udp_tcp_convert/CMakeLists.txt

add_compile_options(-Wno-error=incompatible-pointer-types)