{"id":21202987,"url":"https://github.com/fcambus/gwcheck","last_synced_at":"2025-07-10T06:33:41.639Z","repository":{"id":141149721,"uuid":"424672101","full_name":"fcambus/gwcheck","owner":"fcambus","description":"Check .gnu.warning.* sections in ELF object files","archived":false,"fork":false,"pushed_at":"2023-11-23T16:47:04.000Z","size":31,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-11-23T18:42:04.147Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fcambus.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","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}},"created_at":"2021-11-04T16:54:18.000Z","updated_at":"2023-11-23T18:42:04.147Z","dependencies_parsed_at":"2023-11-22T18:38:10.202Z","dependency_job_id":"c064c02a-2f8f-49df-9f98-1e5ba95c5445","html_url":"https://github.com/fcambus/gwcheck","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcambus%2Fgwcheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcambus%2Fgwcheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcambus%2Fgwcheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fcambus%2Fgwcheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fcambus","download_url":"https://codeload.github.com/fcambus/gwcheck/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225623951,"owners_count":17498329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-20T20:19:57.342Z","updated_at":"2024-11-20T20:19:57.948Z","avatar_url":"https://github.com/fcambus.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gwcheck\n\n## Description\n\ngwcheck is a tool to check `.gnu.warning.*` sections in **ELF object\nfiles** and display their content.\n\nFor an introduction to .gnu.warning.* sections, please refer to this\n[article][1].\n\nSupport for emitting linker warnings when using a symbol for which a\n.gnu.warning.symbol section exists is implemented in GNU linkers (ld\nand gold), but currently not in LLVM's LLD linker.\n\nC libraries using this mechanism:\n\n- FreeBSD libc\n- NetBSD libc\n- OpenBSD libc\n- DragonFlyBSD libc\n- GNU C Library (glibc)\n- Newlib C library\n- diet libc\n- uClibc\n\n## Requirements\n\ngwcheck is written in Rust and uses the following crates:\n\n- [getopt][2] - A minimal, (essentially) POSIX-compliant option parser\n- [goblin][3] - An impish, cross-platform, ELF, Mach-o, and PE binary parsing and loading crate\n\n## Usage\n\n\tgwcheck [-hv] object\n\nThe options are as follows:\n\n\t-h\tDisplay usage.\n\t-v\tDisplay version.\n\n## Example\n\nHere is the output of running gwcheck on OpenBSD 7.4 libc:\n\n\t$ gwcheck libc.so.97.1\n\t.gnu.warning.random:\n\t\trandom() may return deterministic values, is that what you want?\n\t.gnu.warning.tempnam:\n\t\ttempnam() possibly used unsafely; consider using mkstemp()\n\t.gnu.warning.tmpnam:\n\t\ttmpnam() possibly used unsafely; consider using mkstemp()\n\t.gnu.warning.strcpy:\n\t\tstrcpy() is almost always misused, please use strlcpy()\n\t.gnu.warning.sprintf:\n\t\tsprintf() is often misused, please use snprintf()\n\t.gnu.warning.stpcpy:\n\t\tstpcpy() is dangerous; do not use it\n\t.gnu.warning.rand_r:\n\t\trand_r() is not random, it is deterministic.\n\t.gnu.warning.rand:\n\t\trand() may return deterministic values, is that what you want?\n\t.gnu.warning.vsprintf:\n\t\tvsprintf() is often misused, please use vsnprintf()\n\t.gnu.warning.mktemp:\n\t\tmktemp() possibly used unsafely; consider using mkstemp()\n\t.gnu.warning.getwd:\n\t\tgetwd() possibly used unsafely; consider using getcwd()\n\t.gnu.warning.syscall:\n\t\tsyscall() may go away, please rewrite code to use direct calls\n\t.gnu.warning.wcscat:\n\t\twcscat() is almost always misused, please use wcslcat()\n\t.gnu.warning.strcat:\n\t\tstrcat() is almost always misused, please use strlcat()\n\t.gnu.warning.wcscpy:\n\t\twcscpy() is almost always misused, please use wcslcpy()\n\nCheck the `examples` directory for gwcheck output on several other C\nlibraries.\n\n## License\n\ngwcheck is released under the BSD 2-Clause license. See `LICENSE` file for\ndetails.\n\n## Author\n\ngwcheck is developed by Frederic Cambus.\n\n- Site: https://www.cambus.net\n\n[1]: https://ninjalj.blogspot.com/2011/11/your-own-linker-warnings-using-gnu.html\n[2]: https://crates.io/crates/getopt\n[3]: https://crates.io/crates/goblin\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcambus%2Fgwcheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffcambus%2Fgwcheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcambus%2Fgwcheck/lists"}