{"id":25525214,"url":"https://github.com/antonioberna/valkit","last_synced_at":"2026-04-22T05:31:16.257Z","repository":{"id":276048026,"uuid":"928041064","full_name":"AntonioBerna/valkit","owner":"AntonioBerna","description":"Valkit is a Docker tool that extends valgrind usage to macOS, supports multiple architectures (amd64 and arm64), and resolves glibc incompatibility issues between Manjaro and Arch Linux.","archived":false,"fork":false,"pushed_at":"2026-01-01T23:11:35.000Z","size":20,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-03T09:58:12.377Z","etag":null,"topics":["amd64","archlinux","arm64","docker","glibc","macos","manjaro","x86-64"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AntonioBerna.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-06T00:43:10.000Z","updated_at":"2026-01-01T23:11:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"d96e8efa-1b1f-4137-b30f-d8e656847c72","html_url":"https://github.com/AntonioBerna/valkit","commit_stats":null,"previous_names":["antonioberna/valkit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AntonioBerna/valkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioBerna%2Fvalkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioBerna%2Fvalkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioBerna%2Fvalkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioBerna%2Fvalkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AntonioBerna","download_url":"https://codeload.github.com/AntonioBerna/valkit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntonioBerna%2Fvalkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32122678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T00:31:26.853Z","status":"online","status_checked_at":"2026-04-22T02:00:05.693Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amd64","archlinux","arm64","docker","glibc","macos","manjaro","x86-64"],"created_at":"2025-02-19T20:18:21.826Z","updated_at":"2026-04-22T05:31:16.252Z","avatar_url":"https://github.com/AntonioBerna.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# valkit\n\n![GitHub License](https://img.shields.io/github/license/AntonioBerna/valkit)\n![Docker Image Size](https://img.shields.io/docker/image-size/antonioberna/valkit)\n![GitHub Created At](https://img.shields.io/github/created-at/antonioberna/valkit)\n\n## Why?\n\n1. Extend `valgrind` usage to macOS users.\n2. Support **amd64 (x86_64)** and **arm64** architectures.\n3. Resolve incompatibility issues between Manjaro and Arch Linux regarding `glibc`.\n\n## Overview\n\nWhen I started working on this project, I had to solve a simple incompatibility issue between Manjaro and Arch Linux regarding the `glibc` library. This was because while developing C code, I needed to use the `valgrind` tool on Manjaro.\n\nNow, I decided to extend the project to use this tool on operating systems not based strictly on the Linux kernel and with architectures other than the classic **x86_64**.\n\nSpecifically, I added support for the **arm64** architecture, meaning all users with $M_x$ MacBooks (with $x \\in \\{ 1, \\dots, 5, \\dots, n \\}$) can effectively use `valgrind` when writing C code.\n\n## Usage\n\n### Download\n\n#### Docker Hub\n\nYou need to download my docker image from the `Docker Hub` registry using the following command:\n\n```bash\ndocker pull antonioberna/valkit\n```\n\n#### Build from Source\n\nUse the following command to clone the repository:\n\n```bash\ngit clone https://github.com/AntonioBerna/valkit.git\n```\n\n### Uninstall\n\nIf you want to remove the image from your machine, you can use the following command:\n\n```bash\ndocker rmi antonioberna/valkit\n```\n\n## Basic Commands\n\nIn the `examples/` directory there are various examples to test Valgrind in a Docker environment.\n\nThe basic commands that can be used are the following:\n\n```bash\n# memcheck\ndocker run --rm -v $(pwd):/app antonioberna/valkit \\\nvalgrind --tool=memcheck --leak-check=full --track-origins=yes ./a.out\n\n# memcheck with Makefile\ndocker run --rm -v $(pwd):/app antonioberna/valkit \\\nbash -c \"make \u0026\u0026 valgrind --tool=memcheck --leak-check=full --track-origins=yes ./a.out\"\n\n# helgrind\ndocker run --rm -v $(pwd):/app antonioberna/valkit valgrind \\\n--tool=helgrind ./a.out\n\n# helgrind with Makefile\ndocker run --rm -v $(pwd):/app antonioberna/valkit \\\nbash -c \"make \u0026\u0026 valgrind --tool=helgrind ./a.out\"\n```\n\n## Bonus\n\n### Build multi-arch Docker image\n\nThe following command builds and pushes a **multi-architecture Docker image** for both **x86_64 (amd64)** and **arm64** platforms:\n\n```bash\ndocker buildx build --platform linux/amd64,linux/arm64 -t antonioberna/valkit --push .\n```\n\n### Initial Project Purpose\n\nLately I'm having problems with the Valgrind tool.\nIn particular because the version of `glibc` of Linux Manjaro is not the same as that of [Arch Linux](https://archlinux.org/packages/extra/x86_64/valgrind/), namely:\n\n```bash\n$ pacman -Q glibc\nglibc 2.40+r66+g7d4b6bcae91f-1\n```\n\n\u003e [!NOTE]\n\u003e The link above refers to `valgrind` package. See dependencies and click on `glibc` package to see the version.\n\nthe `valgrind` tool generates the following error:\n\n```\nvalgrind:  Fatal error at startup: a function redirection\nvalgrind:  which is mandatory for this platform-tool combination\nvalgrind:  cannot be set up.  Details of the redirection are:\nvalgrind:  \nvalgrind:  A must-be-redirected function\nvalgrind:  whose name matches the pattern:      strcmp\nvalgrind:  in an object with soname matching:   ld-linux-x86-64.so.2\nvalgrind:  was not found whilst processing\nvalgrind:  symbols from the object with soname: ld-linux-x86-64.so.2\nvalgrind:  \nvalgrind:  Possible fixes: (1, short term): install glibc's debuginfo\nvalgrind:  package on this machine.  (2, longer term): ask the packagers\nvalgrind:  for your Linux distribution to please in future ship a non-\nvalgrind:  stripped ld.so (or whatever the dynamic linker .so is called)\nvalgrind:  that exports the above-named function using the standard\nvalgrind:  calling conventions for this platform.  The package you need\nvalgrind:  to install for fix (1) is called\nvalgrind:  \nvalgrind:    On Debian, Ubuntu:                 libc6-dbg\nvalgrind:    On SuSE, openSuSE, Fedora, RHEL:   glibc-debuginfo\nvalgrind:  \nvalgrind:  Note that if you are debugging a 32 bit process on a\nvalgrind:  64 bit system, you will need a corresponding 32 bit debuginfo\nvalgrind:  package (e.g. libc6-dbg:i386).\nvalgrind:  \nvalgrind:  Cannot continue -- exiting now.  Sorry.\n```\n\nFor this reason I decided to create a Docker image that allows me to easily use the Valgrind tool, thus solving every problem.\n\n\u003e [!NOTE]\n\u003e I also opened an issue on [Manjaro forums](https://forum.manjaro.org/t/valgrind-missing-strcmp/173648) and the only alternative is to use a different operating system than Manjaro. So I said to myself: why not use Docker directly? And so it was.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantonioberna%2Fvalkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantonioberna%2Fvalkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantonioberna%2Fvalkit/lists"}