{"id":15030596,"url":"https://github.com/rust-lang/thorin","last_synced_at":"2025-05-16T09:04:21.245Z","repository":{"id":44929752,"uuid":"429115636","full_name":"rust-lang/thorin","owner":"rust-lang","description":"DWARF packaging utility, written in Rust, supporting GNU extension and DWARF 5 package formats.","archived":false,"fork":false,"pushed_at":"2025-03-24T15:47:21.000Z","size":275,"stargazers_count":50,"open_issues_count":3,"forks_count":12,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-05-15T00:05:41.141Z","etag":null,"topics":["compiler-team","dwarf","dwarf-object","dwarf-package","dwp","elf","rust","split-debuginfo","split-dwarf"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rust-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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}},"created_at":"2021-11-17T16:14:40.000Z","updated_at":"2025-05-08T03:33:06.000Z","dependencies_parsed_at":"2024-09-28T20:40:54.358Z","dependency_job_id":"205fe54c-996c-4b63-a92d-784d272436a2","html_url":"https://github.com/rust-lang/thorin","commit_stats":{"total_commits":106,"total_committers":8,"mean_commits":13.25,"dds":0.2075471698113207,"last_synced_commit":"bb54997f02b9bec72c7510fdf8adccd478367db6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-lang%2Fthorin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-lang%2Fthorin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-lang%2Fthorin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-lang%2Fthorin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rust-lang","download_url":"https://codeload.github.com/rust-lang/thorin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254040,"owners_count":22039792,"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":["compiler-team","dwarf","dwarf-object","dwarf-package","dwp","elf","rust","split-debuginfo","split-dwarf"],"created_at":"2024-09-24T20:13:48.295Z","updated_at":"2025-05-16T09:04:21.213Z","avatar_url":"https://github.com/rust-lang.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `thorin`\n`thorin` is an DWARF packaging utility for creating DWARF packages (`*.dwp` files) out of input\nDWARF objects (`*.dwo` files; or `*.o` files with `.dwo` sections), supporting both the pre-standard\nGNU extension format for DWARF packages and the standardized format introduced in DWARF 5.\n\n`thorin` was written as part of the implementation of Split DWARF in `rustc`. A Rust implementation\nof a DWARF packaging utility is easier to integrate into the compiler and can support features like\nloading dwarf objects from archive files (or rustc's rlibs) which are helpful in supporting\ncross-crate Split DWARF packaging in `rustc`.\n\nSee the README documents of the [`thorin` crate](thorin/README.md) and the\n[`thorin-bin` crate](thorin-bin/README.md) for usage details of the library and binary interfaces\nrespectively.\n\n## Contributing to `thorin`\nIf you want help or mentorship, reach out to us in a GitHub issue, or ask `davidtwco` or in\n`#t-compiler` on the [Rust Zulip instance](https://rust-lang.zulipchat.com/).\n\n`thorin` should always build on stable `rustc`. To build `thorin`:\n\n```shell-session\n$ cargo build\n```\n\nTo run the tests, first install the relevant dependencies:\n\n```shell-session\n$ apt install --no-install-recommends --yes llvm-15 llvm-15-tools\n$ pip install lit\n```\n\nNext, run the `lit` testsuite (replacing `/path/to/llvm/bin` with the correct path to your LLVM\ninstallation, if required):\n\n```shell-session\n$ cargo build # in debug mode..\n$ lit -v --path \"$PWD/target/debug/:/path/to/llvm/bin/\" ./tests\n$ cargo build --release # ..or in release mode\n$ lit -v --path \"$PWD/target/release/:/path/to/llvm/bin/\" ./tests\n```\n\nWe use `rustfmt` to automatically format and style all of our code. To install and use `rustfmt`:\n\n```shell-session\n$ rustup component add rustfmt\n$ cargo fmt\n```\n\n### Filing an issue\nThink you've found a bug? File an issue! To help us understand and reproduce the\nissue, provide us with:\n\n* The (preferably minimal) test case\n* Steps to reproduce the issue using the test case\n* The expected result of following those steps\n* The actual result of following those steps\n\nDefinitely file an issue if you see an unexpected panic originating from within `thorin`!\n`thorin` should never panic unless it is explicitly documented to panic in the specific\ncircumstances provided.\n\n\u003cbr\u003e\n\n#### Name\n\u003csup\u003e\n\u003ccode\u003ethorin\u003c/code\u003e is named after \u003ci\u003eThorin Oakenshield\u003c/i\u003e from \u003ci\u003eThe Hobbit\u003c/i\u003e, as Thorin is\na dwarf who leads other dwarves. \u003ccode\u003ethorin\u003c/code\u003e uses the \u003ccode\u003egimli\u003c/code\u003e library\n(named after a dwarf from \u003ci\u003eLord of the Rings\u003c/i\u003e) to read \u003ci\u003eDWARF\u003c/i\u003e format debug information,\nthe name of which is a medieval fantasy complement to \u003ci\u003eELF\u003c/i\u003e, the file format for executables\nand object files.\n\u003c/sup\u003e\n\n\u003cbr\u003e\n\n\u003csub\u003e\nYou could also call this project \u003ccode\u003erust-dwp\u003c/code\u003e, if you'd prefer that.\n\u003c/sub\u003e\n\n\u003cbr\u003e\n\n#### Author and acknowledgements\n\u003csup\u003e\n\u003ccode\u003ethorin\u003c/code\u003e is authored by \u003ca href=\"https://davidtw.co\"\u003eDavid Wood\u003c/a\u003e of \u003ci\u003eHuawei\nTechnologies Research \u0026 Development (UK) Ltd\u003c/i\u003e. \u003ccode\u003ethorin\u003c/code\u003e is maintained by the\n\u003ca href=\"https://rust-lang.org/governance/teams/compiler\"\u003eRust Compiler Team\u003c/a\u003e.\n\u003c/sup\u003e\n\n\u003cbr\u003e\n\n\u003csub\u003e\nIn addition, thanks to the authors of \u003ccode\u003eobject\u003c/code\u003e and \u003ccode\u003egimli\u003c/code\u003e, on which this\nutility depends heavily; and to \u003ca href=\"https://github.com/philipc\"\u003ePhilip Craig\u003c/a\u003e for advice\nand reviews during initial implementation of \u003ccode\u003ethorin\u003c/code\u003e.\n\u003c/sub\u003e\n\n\u003cbr\u003e\n\n#### License\n\u003csup\u003e\nLicensed under either of \u003ca href=\"https://www.apache.org/licenses/LICENSE-2.0\"\u003eApache License,\nVersion 2.0\u003c/a\u003e or \u003ca href=\"https://opensource.org/licenses/MIT\"\u003eMIT license\u003c/a\u003e at your option.\n\u003c/sup\u003e\n\n\u003cbr\u003e\n\n\u003csub\u003e\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in\nthis crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without\nany additional terms or conditions.\n\u003c/sub\u003e\n\n\u003cbr\u003e\n\n#### Code of conduct\n\u003csup\u003e\nWhen contributing or interacting with this project, we ask abide the\n\u003ca href=\"https://www.rust-lang.org/en-US/conduct.html\"\u003eRust Code of Conduct\u003c/a\u003e and ask that you do\ntoo.\n\u003c/sup\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust-lang%2Fthorin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frust-lang%2Fthorin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust-lang%2Fthorin/lists"}