The project home is http://elfutils.org/

The current elfutils source code can be checked out with
git clone git://sourceware.org/git/elfutils.git

The developer mailinglist to send patches to is
elfutils-devel@sourceware.org.
https://sourceware.org/ml/elfutils-devel/

To subscribe send an email to elfutils-devel-subscribe@sourceware.org
Or use the form at https://sourceware.org/mailman/listinfo/elfutils-devel

Please supply patches using git format-patch or using git send-email.

Or look at https://forge.sourceware.org/elfutils/
If you create an account there please send email to elfutils-devel
to ask for a mentor who can make you an Collaborator so you can create
a merge request against the elfutils project there. This will run
various checks. And your mentor can help you create an email to sent
to the mailinglist.

Sign your work

To facilitate tracking of who did what, we've adopted a "sign-off"
procedure for patches based on the procedure used by the Linux kernel
project.

The sign-off is a simple line at the end of the explanation for the
patch, which certifies that you wrote it or otherwise have the right
to pass it on as a patch under an appropriate license. The rules are
pretty simple: if you can certify the below:

        Developer's Certificate of Origin

        By making a contribution to this project, I certify that:

	(a) The contribution was created in whole or in part by me,
	    and I have the right to submit the contribution under each
	    license indicated in, or otherwise designated as being
	    applicable to, the file.

        (b) The contribution was provided directly to me by some other
            person who certified (a), and I have not modified it.

        (c) I understand and agree that the project and the
            contribution are public and that a record of the
            contribution (including all personal information I submit
            with it, including my sign-off) is maintained indefinitely
            and may be redistributed.

then you just add a line saying

Signed-off-by: Random J Developer <random@developer.example.org>

using a known identity (sorry, no anonymous contributions.)
The name you use as your identity should not be an anonymous id
or false name that misrepresents who you are.

git commit --signoff will add such a Signed-off-by line at the end of
the commit log message for you.

The ideal patch contains a ChangeLog entry for the commit message and
a test case for the bug fixed or feature added.

The commit message is expected to start with a one line summary of
what the patch does, prefixed with the main subdir the patch applies
to. e.g libelf: Rewind the elf_frob function bar definitions.

Finally please include an ChangeLog entry explicitly listing the files
and what changed in each of them in the commit message. This will help
a reviewer understand which changes are expected (and which might be
accidential). Try to follow the GNU Change Log style:
https://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html
Note that elfutils previously maintained separate ChangeLog
files. These are no longer used. All changes should be documented in
the git commit message.

The testsuite (make check) is expected to have zero failing tests.
Do not knowingly add tests that FAIL. If there are architectures or
configurations where a tests is not supported make sure they are
skipped instead of failing. Adding "exit 77" in the test shell wrapper
indicates that a test was SKIPPED.

We do allow binaries in the testsuite for tests that only need to
read ELF or DWARF data and if generating the data in the testcase
itself is difficult or would be architecture specific.
The binaries should be bzip2 compressed. Add a note in the test
wrapper run-<testcase>.sh script how to regenerate the binary.

After sending your patch to the mailinglist one of the committers
to the project will review it, give feedback, and if perfect they
will commit it for you.

All patches sent to the mailing list are tracked at
https://patchwork.sourceware.org/project/elfutils/list/

To use this from the command line you can use git-pw
https://patchwork.readthedocs.io/projects/git-pw/en/latest/

For using it with git-pw use these .git/config settings:
  [pw]
    server = https://patchwork.sourceware.org/api/1.2/
    project = elfutils
    token = <hex-token>
    states = committed,accepted,superseded,deferred,rejected,under-review

If you would like to help maintain the pending patch list your
patchwork account can be added as maintainer for the elfutils project.

You can become a maintainer/committer yourself after you have provided
at least a handful of accepted patches and agree to the guidelines in
this document for creating, reviewing, accepting and committing patches.

To become a committer you need a sourceware account:
https://sourceware.org/cgi-bin/pdw/ps_form.cgi
Upload a SSH public key and have an existing maintainer sponsor you
for the elfutils group.

committers can push patches through:
ssh://<user>@sourceware.org/git/elfutils.git

The current webpages published at https://sourceware.org/elfutils/
can be checked out with:
git clone ssh://<user>@sourceware.org/git/elfutils-htdocs.git
Patches should also be posted to the mailinglist.

As a maintainer/committer you should still post patches as described
above. And ideally they are reviewed and approved as above. If no
other committer has reviewed or objected to your patch for a week
you may use your own judgement whether you ping your patch or push
it after "self-review". If you do, you should post a message to the
mailinglist that the patch has been pushed.

committers may also create git branches starting with <nickname>/...
patches on these branches are works in progress, so might not be perfect
yet, but should follow the above guidelines as much as possible and should
be aimed at integration into main. For merging a branch into main
the same process as above should be followed by posting the patches
to the list first.

Note that a branch starting with <nickname>/try... will be picked up
by the Sourceware buildbot and can be used to test your patches before
merging into the main branch:
https://builder.sourceware.org/buildbot/#/builders?tags=elfutils-try

committers/maintainers who repeatedly ignore the above guidelines,
are hostile or offensive towards other committers or contributors,
and don't correct their behavior after being asked by other committers
will be removed as maintainer/committer.  See the CONDUCT file for more
information regarding the elfutils code of conduct.

Policy on the Use of LLM-generated Content

The elfutils project does not currently accept contributions containing
output generated by Large Language Models (LLMs).  Use of LLMs to research,
analyze or debug a contribution is allowed as long as no LLM-generated
output is included in the contribution.

There are two exceptions where LLM output may be included in a contribution:

(1) The output consists solely of trivial changes such as spelling or
code formatting.

(2) The LLM assists in the research or transcription of a contribution but
does not generate any of the content. This includes accessibility-related
uses of LLMs involving speech-to-text, for example.

Contributors are not required to disclose the use of LLMs for these purposes.

This policy may be reviewed or updated when the copyright status and
Developer's Certificate of Origin (DCO) compatibility of LLM-generated
output is clarified.
