Page MenuHomeFreeBSD

arm: Restore the names of fields in fpreg structure
AbandonedPublic

Authored by kd on Mar 31 2023, 12:16 PM.
Tags
None
Referenced Files
Unknown Object (File)
Oct 5 2024, 12:54 PM
Unknown Object (File)
Oct 2 2024, 1:20 PM
Unknown Object (File)
Oct 2 2024, 1:22 AM
Unknown Object (File)
Sep 29 2024, 7:03 PM
Unknown Object (File)
Sep 8 2024, 2:20 PM
Unknown Object (File)
Sep 7 2024, 12:20 PM
Unknown Object (File)
Jul 25 2024, 5:12 AM
Unknown Object (File)
Jul 5 2024, 1:55 PM
Subscribers
None

Details

Summary

While adding the support for using VFP in the kernel the layout/names of fields of the fpreg structure was changed, which broke compilation of the libunwind port.
Work around that by restoring previous names of the fields.
Note that the layout still remains changed.
Before we'd only have 8 FP registers, and that's the amount libunwind expects.
In reality there are 32 of them, take that into account.

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

kd requested review of this revision.Mar 31 2023, 12:16 PM
kd created this revision.
kd added a reviewer: markmi_dsl-only.net.

Hmm, right.
So I guess that it's better to leave it as is.
We need to update our port though.

Port is still mismatched for armv7 as of:

# ~/fbsd-based-on-what-commit.sh -C /usr/ports/
3712f30953d5 (HEAD -> main, freebsd/main, freebsd/HEAD) devel/fnc: Update to 0.15
Author:     Ashish SHUKLA <ashish@FreeBSD.org>
Commit:     Ashish SHUKLA <ashish@FreeBSD.org>
CommitDate: 2023-04-29 20:35:45 +0000
branch: main
merge-base: 3712f30953d5dadb3fede83e2e780024fb883a65
merge-base: CommitDate: 2023-04-29 20:35:45 +0000
n617500 (--first-parent --count for merge-base)

Details:

--- ptrace/_UPT_access_fpreg.lo ---
ptrace/_UPT_access_fpreg.c:110:25: error: no member named 'fpr' in 'struct fpreg'
          memcpy(&fpreg.fpr[reg], val, sizeof(unw_fpreg_t));
                  ~~~~~ ^
ptrace/_UPT_access_fpreg.c:126:30: error: no member named 'fpr' in 'struct fpreg'
          memcpy(val, &fpreg.fpr[reg], sizeof(unw_fpreg_t));
                       ~~~~~ ^
2 errors generated.